[Home] [Help]
PACKAGE BODY: APPS.OKL_CREATE_KLE_PVT
Source
1 Package body okl_create_kle_pvt as
2 /* $Header: OKLRKLLB.pls 120.56.12010000.6 2009/01/15 20:49:24 smereddy ship $ */
3 -------------------------------------------------------------------------------------------------
4 -- GLOBAL MESSAGE CONSTANTS
5 -------------------------------------------------------------------------------------------------
6 G_FND_APP CONSTANT VARCHAR2(200) := OKL_API.G_FND_APP;
7 G_COL_NAME_TOKEN CONSTANT VARCHAR2(200) := OKL_API.G_COL_NAME_TOKEN;
8 G_AMT_TOKEN CONSTANT VARCHAR2(200) := 'AMOUNT';
9 G_REC_NAME_TOKEN CONSTANT VARCHAR2(200) := 'REC_INFO';
10 G_PARENT_TABLE_TOKEN CONSTANT VARCHAR2(200) := OKL_API.G_PARENT_TABLE_TOKEN;
11 G_CHILD_TABLE_TOKEN CONSTANT VARCHAR2(200) := OKL_API.G_CHILD_TABLE_TOKEN;
12 G_UNEXPECTED_ERROR CONSTANT VARCHAR2(200) := 'OKL_UNEXPECTED_ERROR';
13 G_SQLERRM_TOKEN CONSTANT VARCHAR2(200) := 'SQLerrm';
14 G_SQLCODE_TOKEN CONSTANT VARCHAR2(200) := 'SQLcode';
15 ------------------------------------------------------------------------------------
16 -- GLOBAL OKL MESSAGES
17 ------------------------------------------------------------------------------------
18 G_INVALID_YN CONSTANT VARCHAR2(200) := 'OKL_INVALID_YN';
19 G_INVALID_VALUE CONSTANT VARCHAR2(200) := 'OKL_LLA_NEGATIVE';
20 G_DECIMAL_VALUE CONSTANT VARCHAR2(200) := 'OKL_LLA_DECIMAL_VAL';
21 G_NO_PARENT_RECORD CONSTANT VARCHAR2(200) := 'OKL_NO_PARENT_RECORD';
22 G_REQUIRED_VALUE CONSTANT VARCHAR2(200) := 'OKL_REQUIRED_VALUE';
23 G_NO_MATCHING_RECORD CONSTANT VARCHAR2(200) := 'OKL_LLA_NO_MATCHING_RECORD';
24 G_CALC_AMOUNT CONSTANT VARCHAR2(200) := 'OKL_LLA_CALC_AMOUNT';
25 G_CREATION_FIN_LINE CONSTANT VARCHAR2(200) := 'OKL_LLA_CREATION_FIN_LINE';
26 G_UPDATING_FIN_LINE CONSTANT VARCHAR2(200) := 'OKL_LLA_UPDATING_FIN_LINE';
27 G_CREATION_MODEL_LINE CONSTANT VARCHAR2(200) := 'OKL_LLA_CREATION_MODEL_LINE';
28 G_UPDATING_MODEL_LINE CONSTANT VARCHAR2(200) := 'OKL_LLA_UPDATING_MODEL_LINE';
29 G_CREATION_MODEL_ITEM CONSTANT VARCHAR2(200) := 'OKL_LLA_CREATION_MODEL_ITEM';
30 G_UPDATING_MODEL_ITEM CONSTANT VARCHAR2(200) := 'OKL_LLA_UPDATING_MODEL_ITEM';
31 G_CREATION_FA_LINE CONSTANT VARCHAR2(200) := 'OKL_LLA_CREATION_FA_LINE';
32 G_UPDATING_FA_LINE CONSTANT VARCHAR2(200) := 'OKL_LLA_UPDATING_FA_LINE';
33 G_CREATION_FA_ITEM CONSTANT VARCHAR2(200) := 'OKL_LLA_CREATION_FA_ITEM';
34 G_UPDATING_FA_ITEM CONSTANT VARCHAR2(200) := 'OKL_LLA_UPDATING_FA_ITEM';
35 G_CREATION_ADDON_LINE CONSTANT VARCHAR2(200) := 'OKL_LLA_CREATION_ADDON_LINE';
36 G_UPDATING_ADDON_LINE CONSTANT VARCHAR2(200) := 'OKL_LLA_UPDATING_ADDON_LINE';
37 G_DELETING_ADDON_LINE CONSTANT VARCHAR2(200) := 'OKL_LLA_DELETING_ADDON_LINE';
38 G_CREATION_ADDON_ITEM CONSTANT VARCHAR2(200) := 'OKL_LLA_CREATION_ADDON_ITEM';
39 G_UPDATING_ADDON_ITEM CONSTANT VARCHAR2(200) := 'OKL_LLA_UPDATING_ADDON_ITEM';
40 G_CREATION_INSTS_LINE CONSTANT VARCHAR2(200) := 'OKL_LLA_CREATION_INSTS_LINE';
41 G_UPDATING_INSTS_LINE CONSTANT VARCHAR2(200) := 'OKL_LLA_UPDATING_INSTS_LINE';
42 G_DELETING_INSTS_LINE CONSTANT VARCHAR2(200) := 'OKL_LLA_DELETING_INSTS_LINE';
43 G_MIN_INST_LINE CONSTANT VARCHAR2(200) := 'OKL_LLA_MIN_INST_LINE';
44 G_CREATION_IB_LINE CONSTANT VARCHAR2(200) := 'OKL_LLA_CREATION_IB_LINE';
45 G_UPDATING_IB_LINE CONSTANT VARCHAR2(200) := 'OKL_LLA_UPDATING_IB_LINE';
46 G_DELETING_IB_LINE CONSTANT VARCHAR2(200) := 'OKL_LLA_DELETING_IB_LINE';
47 G_CREATION_IB_ITEM CONSTANT VARCHAR2(200) := 'OKL_LLA_CREATION_IB_ITEM';
48 G_UPDATING_IB_ITEM CONSTANT VARCHAR2(200) := 'OKL_LLA_UPDATING_IB_ITEM';
49 G_CREATION_PARTY_ROLE CONSTANT VARCHAR2(200) := 'OKL_LLA_CREATION_PARTY_ROLE';
50 G_UPDATING_PARTY_ROLE CONSTANT VARCHAR2(200) := 'OKL_LLA_UPDATING_PARTY_ROLE';
51 G_ASSET_NUMBER CONSTANT VARCHAR2(200) := 'OKL_LLA_ASSET_NUMBER';
52 G_DUPLICATE_SERIAL_NUM CONSTANT VARCHAR2(200) := 'OKL_LLA_SERIAL_NUM_DUP';
53 G_GEN_INST_NUM_IB CONSTANT VARCHAR2(200) := 'OKL_LLA_GEN_INST_NUM_IB';
54 G_GEN_ASSET_NUMBER CONSTANT VARCHAR2(200) := 'OKL_LLA_GEN_ASSET_NUMBER';
55 G_LINE_STYLE CONSTANT VARCHAR2(200) := 'OKL_LLA_LINE_STYLE';
56 G_CNT_REC CONSTANT VARCHAR2(200) := 'OKL_LLA_CNT_REC';
57 G_ITEM_RECORD CONSTANT VARCHAR2(200) := 'OKL_LLA_ITEM_RECORD';
58 G_LINE_RECORD CONSTANT VARCHAR2(200) := 'OKL_LLA_LINE_RECORD';
59 G_INSTALL_BASE_NUMBER CONSTANT VARCHAR2(200) := 'OKL_LLA_INSTALL_BASE_NUMBER';
60 G_FETCHING_INFO CONSTANT VARCHAR2(200) := 'OKL_LLA_FETCHING_INFO';
61 G_INVALID_CRITERIA CONSTANT VARCHAR2(200) := 'OKL_LLA_INVALID_CRITERIA';
62 G_SALVAGE_VALUE CONSTANT VARCHAR2(200) := 'OKL_LLA_SALVAGE_VALUE';
63 G_STATUS CONSTANT VARCHAR2(200) := 'OKL_LLA_STATUS';
64 G_CHR_ID CONSTANT VARCHAR2(200) := 'OKL_LLA_CHR_ID';
65 G_LSE_ID CONSTANT VARCHAR2(200) := 'OKL_LLA_LSE_ID';
66 G_KLE_ID CONSTANT VARCHAR2(200) := 'OKL_LLA_KLE_ID';
67 G_TRX_ID CONSTANT VARCHAR2(200) := 'OKL_LLA_TRX_ID';
68 G_ITI_ID CONSTANT VARCHAR2(200) := 'OKL_LLA_ITI_ID';
69 G_AMOUNT_ROUNDING CONSTANT VARCHAR2(200) := 'OKL_LA_ROUNDING_ERROR';
70 ------------------------------------------------------------------------------------
71 -- GLOBAL EXCEPTION
72 ------------------------------------------------------------------------------------
73 G_EXCEPTION_HALT_VALIDATION EXCEPTION;
74 G_EXCEPTION_STOP_VALIDATION EXCEPTION;
75 G_API_TYPE CONSTANT VARCHAR2(4) := '_PVT';
76 G_API_VERSION CONSTANT NUMBER := 1.0;
77 G_SCOPE CONSTANT VARCHAR2(4) := '_PVT';
78
79 -- GLOBAL VARIABLES
80 -----------------------------------------------------------------------------------
81 G_PKG_NAME CONSTANT VARCHAR2(200) := 'OKL_CREATE_ASSET_PVT';
82 G_APP_NAME CONSTANT VARCHAR2(3) := OKL_API.G_APP_NAME;
83 G_TRY_NAME OKL_TRX_TYPES_TL.NAME%TYPE := 'Internal Asset Creation';
84 G_LANGUAGE OKL_TRX_TYPES_TL.LANGUAGE%TYPE := 'US';
85 -- G_FA_TRY_NAME OKL_TRX_TYPES_V.NAME%TYPE := 'CREATE ASSET LINES';
86 -- G_IB_TRY_NAME OKL_TRX_TYPES_V.NAME%TYPE := 'CREATE_IB_LINES';
87 -- G_TRY_TYPE OKL_TRX_TYPES_V.TRY_TYPE%TYPE := 'TIE';
88 G_FORMULA_OEC OKL_FORMULAE_V.NAME%TYPE := 'LINE_OEC';
89 G_FORMULA_CAP OKL_FORMULAE_V.NAME%TYPE := 'LINE_CAP_AMNT';
90 G_FORMULA_RES OKL_FORMULAE_V.NAME%TYPE := 'LINE_RESIDUAL_VALUE';
91 G_ID2 CONSTANT VARCHAR2(200) := '#';
92 G_TLS_TYPE OKC_LINE_STYLES_V.LSE_TYPE%TYPE := 'TLS';
93 G_SLS_TYPE OKC_LINE_STYLES_V.LSE_TYPE%TYPE := 'SLS';
94 G_LEASE_SCS_CODE OKC_K_HEADERS_V.SCS_CODE%TYPE := 'LEASE';
95 G_LOAN_SCS_CODE OKC_K_HEADERS_V.SCS_CODE%TYPE := 'LOAN';
96 G_QUOTE_SCS_CODE OKC_K_HEADERS_V.SCS_CODE%TYPE := 'QUOTE';
97 ---------------------------------------------------------------------------------------------------------------
98 --Added by dpsingh for LE uptake
99 CURSOR contract_num_csr (p_ctr_id1 NUMBER) IS
100 SELECT contract_number
101 FROM OKC_K_HEADERS_B
102 WHERE id = p_ctr_id1;
103
104 FUNCTION is_duplicate_serial_number(p_serial_number OKL_TXL_ITM_INSTS.SERIAL_NUMBER%TYPE,
105 p_item_id OKL_TXL_ITM_INSTS.INVENTORY_ITEM_ID%TYPE)
106 RETURN VARCHAR2 IS
107 x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
108 ln_serial_number NUMBER := 0;
109 -- cursor to get sequence number for asset number
110 -- Bug 4698117
111
112
113 CURSOR c_check_dup_serial_num IS
114 SELECT 1 FROM OKL_TXL_ITM_INSTS
115 WHERE INVENTORY_ITEM_ID = p_item_id
116 AND SERIAL_NUMBER = p_serial_number
117 AND NOT EXISTS (
118 select 1 From okc_k_lines_b cleb
119 where cleb.id=OKL_TXL_ITM_INSTS.kle_id
120 and cleb.STS_CODE = 'ABANDONED'
121 );
122 --Bug# 4698117: End
123 BEGIN
124 OPEN c_check_dup_serial_num;
125 FETCH c_check_dup_serial_num INTO ln_serial_number;
126 IF (c_check_dup_serial_num%NOTFOUND) Then
127 x_return_status := OKL_API.G_RET_STS_SUCCESS;
128 END IF;
129 CLOSE c_check_dup_serial_num;
130 IF (ln_serial_number = 1) THEN
131 OKL_API.set_message(p_app_name => G_APP_NAME,
132 p_msg_name => G_DUPLICATE_SERIAL_NUM,
133 p_token1 => 'COL_NAME',
134 p_token1_value => p_serial_number);
135 RAISE G_EXCEPTION_HALT_VALIDATION;
136 END IF;
137 RETURN x_return_status;
138 EXCEPTION
139 WHEN G_EXCEPTION_HALT_VALIDATION then
140 IF c_check_dup_serial_num%ISOPEN THEN
141 CLOSE c_check_dup_serial_num;
142 END IF;
143 -- notify caller of an error
144 x_return_status := OKL_API.G_RET_STS_ERROR;
145 RETURN x_return_status;
146 WHEN OTHERS THEN
147 IF c_check_dup_serial_num%ISOPEN THEN
148 CLOSE c_check_dup_serial_num;
149 END IF;
150 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
151 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
152 p_msg_name => g_unexpected_error,
153 p_token1 => g_sqlcode_token,
154 p_token1_value => sqlcode,
155 p_token2 => g_sqlerrm_token,
156 p_token2_value => sqlerrm);
157 RETURN x_return_status;
158 END is_duplicate_serial_number;
159 ---------------------------------------------------------------------------------------------------------------
160 FUNCTION generate_instance_number_ib(x_instance_number_ib OUT NOCOPY OKL_TXL_ITM_INSTS_V.INSTANCE_NUMBER_IB%TYPE)
161 RETURN VARCHAR2 IS
162 x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
163 -- cursor to get sequence number for asset number
164 Cursor c_instance_no_ib IS
165 select TO_CHAR(OKL_IBN_SEQ.NEXTVAL)
166 FROM dual;
167 BEGIN
168 OPEN c_instance_no_ib;
169 FETCH c_instance_no_ib INTO x_instance_number_ib;
170 IF (c_instance_no_ib%NOTFOUND) Then
171 x_return_status := OKC_API.G_RET_STS_ERROR;
172 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
173 p_msg_name => g_unexpected_error,
174 p_token1 => g_sqlcode_token,
175 p_token1_value => sqlcode,
176 p_token2 => g_sqlerrm_token,
177 p_token2_value => sqlerrm);
178 END IF;
179 CLOSE c_instance_no_ib;
180 RETURN x_return_status;
181 EXCEPTION
182 WHEN OTHERS THEN
183 IF c_instance_no_ib%ISOPEN THEN
184 CLOSE c_instance_no_ib;
185 END IF;
186 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
187 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
188 p_msg_name => g_unexpected_error,
189 p_token1 => g_sqlcode_token,
190 p_token1_value => sqlcode,
191 p_token2 => g_sqlerrm_token,
192 p_token2_value => sqlerrm);
193 RETURN x_return_status;
194 END generate_instance_number_ib;
195 ---------------------------------------------------------------------------------------------------------------
196 FUNCTION generate_asset_number(x_asset_number OUT NOCOPY OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE)
197 RETURN VARCHAR2 IS
198 x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
199 ln_dummy1 NUMBER := 0;
200 ln_dummy2 NUMBER := 0;
201 ln_dummy3 NUMBER := 0;
202 lv_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE;
203 -- cursor to get sequence number for asset number
204 Cursor c_asset_no IS
205 select 'OKL'||OKL_FAN_SEQ.NEXTVAL
206 FROM dual;
207
208 -- cursor to get check the existence of asset number
209 CURSOR c_txl_asset_number(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE)
210 IS
211 SELECT 1
212 --FROM DUAL
213 --WHERE EXISTS (SELECT '1'
214 FROM OKL_TXL_ASSETS_B
215 WHERE asset_number = p_asset_number; --);
216
217 /*CURSOR c_okx_asset_lines_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
218 SELECT 1
219 --FROM DUAL
220 --WHERE EXISTS (SELECT '1'
221 FROM OKX_ASSET_LINES_V
222 WHERE asset_number = p_asset_number; --); */
223
224 CURSOR c_okx_asset_lines_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
225 SELECT 1
226 FROM fa_additions a
227 WHERE a.asset_number = p_asset_number
228 and exists
229 (
230 select 1 from okc_k_items b
231 where b.jtot_object1_code = 'OKX_ASSET'
232 and b.object1_id1 = to_char(a.asset_id)
233 );
234
235
236 CURSOR c_okx_assets_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
237 SELECT 1
238 --FROM DUAL
239 --WHERE EXISTS (SELECT '1'
240 FROM OKX_ASSETS_V
241 WHERE asset_number = p_asset_number; --);
242
243 BEGIN
244 OPEN c_asset_no;
245 FETCH c_asset_no INTO x_asset_number;
246 IF (c_asset_no%NOTFOUND) THEN
247 x_return_status := OKC_API.G_RET_STS_ERROR;
248 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
249 p_msg_name => g_unexpected_error,
250 p_token1 => g_sqlcode_token,
251 p_token1_value => sqlcode,
252 p_token2 => g_sqlerrm_token,
253 p_token2_value => sqlerrm);
254 END IF;
255 CLOSE c_asset_no;
256
257 LOOP
258 lv_asset_number := x_asset_number;
259
260 OPEN c_txl_asset_number(lv_asset_number);
261 FETCH c_txl_asset_number INTO ln_dummy1;
262 IF c_txl_asset_number%NOTFOUND THEN
263 ln_dummy1 := 0;
264 END IF;
265 CLOSE c_txl_asset_number;
266
267 OPEN c_okx_asset_lines_v(lv_asset_number);
268 FETCH c_okx_asset_lines_v INTO ln_dummy2;
269 IF c_okx_asset_lines_v%NOTFOUND THEN
270 ln_dummy2 := 0;
271 END IF;
272 CLOSE c_okx_asset_lines_v;
273
274 OPEN c_okx_assets_v(lv_asset_number);
275 FETCH c_okx_assets_v INTO ln_dummy3;
276 IF c_okx_assets_v%NOTFOUND THEN
277 ln_dummy3 := 0;
278 END IF;
279 CLOSE c_okx_assets_v;
280
281 IF ln_dummy1 = 1 OR
282 ln_dummy2 = 1 OR
283 ln_dummy3 = 1 THEN
284 OPEN c_asset_no;
285 FETCH c_asset_no INTO x_asset_number;
286 IF (c_asset_no%NOTFOUND) THEN
287 x_return_status := OKC_API.G_RET_STS_ERROR;
288 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
289 p_msg_name => g_unexpected_error,
290 p_token1 => g_sqlcode_token,
291 p_token1_value => sqlcode,
292 p_token2 => g_sqlerrm_token,
293 p_token2_value => sqlerrm);
294 END IF;
295 CLOSE c_asset_no;
296 ELSE
297 EXIT;
298 END IF;
299 END LOOP;
300
301 RETURN x_return_status;
302 EXCEPTION
303 WHEN OTHERS THEN
304 IF c_asset_no%ISOPEN THEN
305 CLOSE c_asset_no;
306 END IF;
307 IF c_txl_asset_number%ISOPEN THEN
308 CLOSE c_txl_asset_number;
309 END IF;
310 IF c_okx_asset_lines_v%ISOPEN THEN
311 CLOSE c_okx_asset_lines_v;
312 END IF;
313 IF c_okx_assets_v%ISOPEN THEN
314 CLOSE c_okx_assets_v;
315 END IF;
316 x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
317 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
318 p_msg_name => g_unexpected_error,
319 p_token1 => g_sqlcode_token,
320 p_token1_value => sqlcode,
321 p_token2 => g_sqlerrm_token,
322 p_token2_value => sqlerrm);
323 RETURN x_return_status;
324 END generate_asset_number;
325 ----------------------------------------------------------------------------------------------------------
326 FUNCTION get_sts_code(p_dnz_chr_id IN OKC_K_LINES_B.DNZ_CHR_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
327 p_cle_id IN OKC_K_LINES_B.CLE_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
328 x_sts_code OUT NOCOPY OKC_K_HEADERS_B.STS_CODE%TYPE)
329 RETURN VARCHAR2 IS
330 x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
331 CURSOR c_get_tls_sts_code(p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE) IS
332 SELECT chrv.sts_code
333 FROM OKC_K_HEADERS_V chrv
334 WHERE chrv.id = p_dnz_chr_id;
335
336 CURSOR c_get_sls_sts_code(p_cle_id OKC_K_LINES_B.CLE_ID%TYPE) IS
337 SELECT cle.sts_code
338 FROM OKC_K_LINES_V cle
339 WHERE cle.id = p_cle_id;
340 BEGIN
341 -- Both p_dnz_chr_id and p_cle_id are not to be given
342 IF (p_dnz_chr_id IS NOT NULL OR
343 p_dnz_chr_id <> OKL_API.G_MISS_NUM) AND
344 (p_cle_id IS NOT NULL OR
345 p_cle_id <> OKL_API.G_MISS_NUM) THEN
346 -- store SQL error message on message stack
347 -- Notify Error
348 OKL_API.set_message(p_app_name => G_APP_NAME,
349 p_msg_name => G_REQUIRED_VALUE,
350 p_token1 => G_COL_NAME_TOKEN,
351 p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID and CLE_ID');
352 RAISE G_EXCEPTION_STOP_VALIDATION;
353 END IF;
354 -- Getting the TOP Line STS CODE
355 IF (p_dnz_chr_id IS NOT NULL OR
356 p_dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
357 OPEN c_get_tls_sts_code(p_dnz_chr_id);
358 FETCH c_get_tls_sts_code INTO x_sts_code;
359 IF c_get_tls_sts_code%NOTFOUND THEN
360 -- store SQL error message on message stack
361 OKL_API.set_message(p_app_name => G_APP_NAME,
362 p_msg_name => G_NO_MATCHING_RECORD,
363 p_token1 => G_COL_NAME_TOKEN,
364 p_token1_value => 'OKC_K_HEADERS_V.STS_CODE');
365 RAISE G_EXCEPTION_HALT_VALIDATION;
366 END IF;
367 CLOSE c_get_tls_sts_code;
368 IF (x_sts_code IS NULL OR
369 x_sts_code = OKL_API.G_MISS_CHAR) THEN
370 OKL_API.set_message(p_app_name => G_APP_NAME,
371 p_msg_name => G_REQUIRED_VALUE,
372 p_token1 => G_COL_NAME_TOKEN,
373 p_token1_value => 'sts_code');
374 RAISE G_EXCEPTION_STOP_VALIDATION;
375 END IF;
376 END IF;
377 -- Getting the SUB Line STS CODE
378 IF (p_cle_id IS NOT NULL OR
379 p_cle_id <> OKL_API.G_MISS_NUM) THEN
380 OPEN c_get_sls_sts_code(p_cle_id);
381 FETCH c_get_sls_sts_code INTO x_sts_code;
382 IF c_get_sls_sts_code%NOTFOUND THEN
383 -- store SQL error message on message stack
384 OKL_API.set_message(p_app_name => G_APP_NAME,
385 p_msg_name => G_NO_MATCHING_RECORD,
386 p_token1 => G_COL_NAME_TOKEN,
387 p_token1_value => 'OKC_K_HEADERS_V.STS_CODE');
388 RAISE G_EXCEPTION_HALT_VALIDATION;
389 END IF;
390 CLOSE c_get_sls_sts_code;
391 IF (x_sts_code IS NULL OR
392 x_sts_code = OKL_API.G_MISS_CHAR) THEN
393 OKL_API.set_message(p_app_name => G_APP_NAME,
394 p_msg_name => G_REQUIRED_VALUE,
395 p_token1 => G_COL_NAME_TOKEN,
396 p_token1_value => 'sts_code');
397 RAISE G_EXCEPTION_STOP_VALIDATION;
398 END IF;
399 END IF;
400 RETURN x_return_status;
401 EXCEPTION
402 WHEN G_EXCEPTION_STOP_VALIDATION then
403 -- We are here since the field is required
404 x_return_status := OKL_API.G_RET_STS_ERROR;
405 WHEN G_EXCEPTION_HALT_VALIDATION then
406 -- We are here b'cause we have no parent record
407 -- If the cursor is open then it has to be closed
408 IF c_get_tls_sts_code%ISOPEN THEN
409 CLOSE c_get_tls_sts_code;
410 END IF;
411 -- if the cursor is open
412 IF c_get_sls_sts_code%ISOPEN THEN
413 CLOSE c_get_sls_sts_code;
414 END IF;
415 -- notify caller of an error
416 x_return_status := OKL_API.G_RET_STS_ERROR;
417 WHEN OTHERS THEN
418 -- store SQL error message on message stack for caller
419 OKL_API.set_message(G_APP_NAME,
420 G_UNEXPECTED_ERROR,
421 G_SQLCODE_TOKEN,
422 SQLCODE,
423 G_SQLERRM_TOKEN,
424 SQLERRM);
425 -- notify caller of an UNEXPECTED error
426 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
427 -- if the cursor is open
428 IF c_get_tls_sts_code%ISOPEN THEN
429 CLOSE c_get_tls_sts_code;
430 END IF;
431 -- if the cursor is open
432 IF c_get_sls_sts_code%ISOPEN THEN
433 CLOSE c_get_sls_sts_code;
434 END IF;
435 RETURN(x_return_status);
436 END get_sts_code;
437 ----------------------------------------------------------------------------------------------------------------
438 FUNCTION get_end_date(p_dnz_chr_id IN OKC_K_LINES_B.DNZ_CHR_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
439 p_cle_id IN OKC_K_LINES_B.CLE_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
440 x_end_date OUT NOCOPY OKC_K_HEADERS_B.END_DATE%TYPE)
441 RETURN VARCHAR2 IS
442 x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
443 CURSOR c_get_tls_end_date(p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE) IS
444 SELECT chrv.end_Date
445 FROM OKC_K_HEADERS_V chrv
446 WHERE chrv.id = p_dnz_chr_id;
447
448 CURSOR c_get_sls_end_date(p_cle_id OKC_K_LINES_B.CLE_ID%TYPE) IS
449 SELECT cle.end_date
450 FROM OKC_K_LINES_V cle
451 WHERE cle.id = p_cle_id;
452 BEGIN
453 -- Both p_dnz_chr_id and p_cle_id are not to be given
454 IF (p_dnz_chr_id IS NOT NULL OR
455 p_dnz_chr_id <> OKL_API.G_MISS_NUM) AND
456 (p_cle_id IS NOT NULL OR
457 p_cle_id <> OKL_API.G_MISS_NUM) THEN
458 -- store SQL error message on message stack
459 -- Notify Error
460 OKL_API.set_message(p_app_name => G_APP_NAME,
461 p_msg_name => G_REQUIRED_VALUE,
462 p_token1 => G_COL_NAME_TOKEN,
463 p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID and CLE_ID');
464 RAISE G_EXCEPTION_STOP_VALIDATION;
465 END IF;
466 -- Getting the TOP Line STS CODE
467 IF (p_dnz_chr_id IS NOT NULL OR
468 p_dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
469 OPEN c_get_tls_end_date(p_dnz_chr_id);
470 FETCH c_get_tls_end_date INTO x_end_date;
471 IF c_get_tls_end_date%NOTFOUND THEN
472 -- store SQL error message on message stack
473 OKL_API.set_message(p_app_name => G_APP_NAME,
474 p_msg_name => G_NO_MATCHING_RECORD,
475 p_token1 => G_COL_NAME_TOKEN,
476 p_token1_value => 'OKC_K_HEADERS_V.END_DATE');
477 RAISE G_EXCEPTION_HALT_VALIDATION;
478 END IF;
479 CLOSE c_get_tls_end_date;
480 END IF;
481 -- Getting the SUB Line STS CODE
482 IF (p_cle_id IS NOT NULL OR
483 p_cle_id <> OKL_API.G_MISS_NUM) THEN
484 OPEN c_get_sls_end_date(p_cle_id);
485 FETCH c_get_sls_end_date INTO x_end_date;
486 IF c_get_sls_end_date%NOTFOUND THEN
487 -- store SQL error message on message stack
488 OKL_API.set_message(p_app_name => G_APP_NAME,
489 p_msg_name => G_NO_MATCHING_RECORD,
490 p_token1 => G_COL_NAME_TOKEN,
491 p_token1_value => 'OKC_K_HEADERS_V.END_DATE');
492 RAISE G_EXCEPTION_HALT_VALIDATION;
493 END IF;
494 CLOSE c_get_sls_end_date;
495 END IF;
496 RETURN x_return_status;
497 EXCEPTION
498 WHEN G_EXCEPTION_STOP_VALIDATION then
499 -- We are here since the field is required
500 x_return_status := OKL_API.G_RET_STS_ERROR;
501 WHEN G_EXCEPTION_HALT_VALIDATION then
502 -- We are here b'cause we have no parent record
503 -- If the cursor is open then it has to be closed
504 IF c_get_tls_end_date%ISOPEN THEN
505 CLOSE c_get_tls_end_date;
506 END IF;
507 -- if the cursor is open
508 IF c_get_sls_end_date%ISOPEN THEN
509 CLOSE c_get_sls_end_date;
510 END IF;
511 -- notify caller of an error
512 x_return_status := OKL_API.G_RET_STS_ERROR;
513 WHEN OTHERS THEN
514 -- store SQL error message on message stack for caller
515 OKL_API.set_message(G_APP_NAME,
516 G_UNEXPECTED_ERROR,
517 G_SQLCODE_TOKEN,
518 SQLCODE,
519 G_SQLERRM_TOKEN,
520 SQLERRM);
521 -- notify caller of an UNEXPECTED error
522 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
523 -- if the cursor is open
524 IF c_get_tls_end_date%ISOPEN THEN
525 CLOSE c_get_tls_end_date;
526 END IF;
527 -- if the cursor is open
528 IF c_get_sls_end_date%ISOPEN THEN
529 CLOSE c_get_sls_end_date;
530 END IF;
531 RETURN(x_return_status);
532 END get_end_date;
533 ----------------------------------------------------------------------------------------------------------------
534 FUNCTION get_start_date(p_dnz_chr_id IN OKC_K_LINES_B.DNZ_CHR_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
535 p_cle_id IN OKC_K_LINES_B.CLE_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
536 x_start_date OUT NOCOPY OKC_K_HEADERS_B.START_DATE%TYPE)
537 RETURN VARCHAR2 IS
538 x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
539 lv_orig_sys_source_code OKC_K_HEADERS_B.ORIG_SYSTEM_SOURCE_CODE%TYPE;
540 ln_orig_system_id1 OKC_K_HEADERS_B.ORIG_SYSTEM_ID1%TYPE;
541 ld_start_date OKC_K_LINES_B.START_DATE%TYPE;
542 CURSOR c_get_tls_start_date(p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE) IS
543 SELECT chrv.start_Date,
544 chrv.orig_system_source_code,
545 chrv.orig_system_id1
546 FROM OKC_K_HEADERS_V chrv
547 WHERE chrv.id = p_dnz_chr_id;
548
549 CURSOR c_get_sls_start_date(p_cle_id OKC_K_LINES_B.CLE_ID%TYPE) IS
550 SELECT cle.start_date
551 FROM OKC_K_LINES_V cle
552 WHERE cle.id = p_cle_id;
553
554 CURSOR c_get_trx_date_trans_occ(p_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE) IS
555 SELECT date_transaction_occurred
556 FROM okl_trx_contracts
557 WHERE khr_id = p_chr_id
558 AND tcn_type = 'TRBK'
559 AND tsu_code = 'ENTERED'
560 --rkuttiya added for 12.1.1 Multi GAAP
561 AND representation_type = 'PRIMARY';
562 --
563 BEGIN
564 -- Both p_dnz_chr_id and p_cle_id are not to be given
565 IF (p_dnz_chr_id IS NOT NULL OR
566 p_dnz_chr_id <> OKL_API.G_MISS_NUM) AND
567 (p_cle_id IS NOT NULL OR
568 p_cle_id <> OKL_API.G_MISS_NUM) THEN
569 -- store SQL error message on message stack
570 -- Notify Error
571 OKL_API.set_message(p_app_name => G_APP_NAME,
572 p_msg_name => G_REQUIRED_VALUE,
573 p_token1 => G_COL_NAME_TOKEN,
574 p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID and CLE_ID');
575 RAISE G_EXCEPTION_STOP_VALIDATION;
576 END IF;
577 -- Getting the TOP Line STS CODE
578 IF (p_dnz_chr_id IS NOT NULL OR
579 p_dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
580 OPEN c_get_tls_start_date(p_dnz_chr_id);
581 FETCH c_get_tls_start_date INTO x_start_date,
582 lv_orig_sys_source_code,
583 ln_orig_system_id1;
584 IF c_get_tls_start_date%NOTFOUND THEN
585 -- store SQL error message on message stack
586 OKL_API.set_message(p_app_name => G_APP_NAME,
587 p_msg_name => G_NO_MATCHING_RECORD,
588 p_token1 => G_COL_NAME_TOKEN,
589 p_token1_value => 'OKC_K_HEADERS_V.START_DATE');
590 RAISE G_EXCEPTION_HALT_VALIDATION;
591 END IF;
592 CLOSE c_get_tls_start_date;
593 IF lv_orig_sys_source_code = 'OKL_REBOOK' THEN
594 OPEN c_get_trx_date_trans_occ(p_chr_id => ln_orig_system_id1);
595 FETCH c_get_trx_date_trans_occ INTO ld_start_date;
596 CLOSE c_get_trx_date_trans_occ;
597 x_start_date := nvl(ld_start_date,sysdate);
598 END IF;
599 END IF;
600 -- Getting the SUB Line STS CODE
601 IF (p_cle_id IS NOT NULL OR
602 p_cle_id <> OKL_API.G_MISS_NUM) THEN
603 OPEN c_get_sls_start_date(p_cle_id);
604 FETCH c_get_sls_start_date INTO x_start_date;
605 IF c_get_sls_start_date%NOTFOUND THEN
606 -- store SQL error message on message stack
607 OKL_API.set_message(p_app_name => G_APP_NAME,
608 p_msg_name => G_NO_MATCHING_RECORD,
609 p_token1 => G_COL_NAME_TOKEN,
610 p_token1_value => 'OKC_K_HEADERS_V.START_DATE');
611 RAISE G_EXCEPTION_HALT_VALIDATION;
612 END IF;
613 CLOSE c_get_sls_start_date;
614 END IF;
615 RETURN x_return_status;
616 EXCEPTION
617 WHEN G_EXCEPTION_STOP_VALIDATION then
618 -- We are here since the field is required
619 x_return_status := OKL_API.G_RET_STS_ERROR;
620 WHEN G_EXCEPTION_HALT_VALIDATION then
621 -- We are here b'cause we have no parent record
622 -- If the cursor is open then it has to be closed
623 IF c_get_tls_start_date%ISOPEN THEN
624 CLOSE c_get_tls_start_date;
625 END IF;
626 -- if the cursor is open
627 IF c_get_sls_start_date%ISOPEN THEN
628 CLOSE c_get_sls_start_date;
629 END IF;
630 -- notify caller of an error
631 x_return_status := OKL_API.G_RET_STS_ERROR;
632 WHEN OTHERS THEN
633 -- store SQL error message on message stack for caller
634 OKL_API.set_message(G_APP_NAME,
635 G_UNEXPECTED_ERROR,
636 G_SQLCODE_TOKEN,
637 SQLCODE,
638 G_SQLERRM_TOKEN,
639 SQLERRM);
640 -- notify caller of an UNEXPECTED error
641 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
642 -- if the cursor is open
643 IF c_get_tls_start_date%ISOPEN THEN
644 CLOSE c_get_tls_start_date;
645 END IF;
646 -- if the cursor is open
647 IF c_get_sls_start_date%ISOPEN THEN
648 CLOSE c_get_sls_start_date;
649 END IF;
650 RETURN(x_return_status);
651 END get_start_date;
652 ----------------------------------------------------------------------------------------------------------------
653 FUNCTION get_currency_code(p_dnz_chr_id IN OKC_K_LINES_B.DNZ_CHR_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
654 p_cle_id IN OKC_K_LINES_B.CLE_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
655 x_currency_code OUT NOCOPY OKC_K_HEADERS_B.CURRENCY_CODE%TYPE)
656 RETURN VARCHAR2 IS
657 x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
658 CURSOR c_get_tls_currency_code(p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE) IS
659 SELECT chrv.currency_code
660 FROM OKC_K_HEADERS_V chrv
661 WHERE chrv.id = p_dnz_chr_id;
662
663 CURSOR c_get_sls_currency_code(p_cle_id OKC_K_LINES_B.CLE_ID%TYPE) IS
664 SELECT cle.currency_code
665 FROM OKC_K_LINES_V cle
666 WHERE cle.id = p_cle_id;
667 BEGIN
668 -- Both p_dnz_chr_id and p_cle_id are not to be given
669 IF (p_dnz_chr_id IS NOT NULL OR
670 p_dnz_chr_id <> OKL_API.G_MISS_NUM) AND
671 (p_cle_id IS NOT NULL OR
672 p_cle_id <> OKL_API.G_MISS_NUM) THEN
673 -- store SQL error message on message stack
674 -- Notify Error
675 OKL_API.set_message(p_app_name => G_APP_NAME,
676 p_msg_name => G_REQUIRED_VALUE,
677 p_token1 => G_COL_NAME_TOKEN,
678 p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID and CLE_ID');
679 RAISE G_EXCEPTION_STOP_VALIDATION;
680 END IF;
681 -- Getting the TOP Line STS CODE
682 IF (p_dnz_chr_id IS NOT NULL OR
683 p_dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
684 OPEN c_get_tls_currency_code(p_dnz_chr_id);
685 FETCH c_get_tls_currency_code INTO x_currency_code;
686 IF c_get_tls_currency_code%NOTFOUND THEN
687 -- store SQL error message on message stack
688 OKL_API.set_message(p_app_name => G_APP_NAME,
689 p_msg_name => G_NO_MATCHING_RECORD,
690 p_token1 => G_COL_NAME_TOKEN,
691 p_token1_value => 'OKC_K_HEADERS_V.CURRENCY_CODE');
692 RAISE G_EXCEPTION_HALT_VALIDATION;
693 END IF;
694 CLOSE c_get_tls_currency_code;
695 END IF;
696 -- Getting the SUB Line STS CODE
697 IF (p_cle_id IS NOT NULL OR
698 p_cle_id <> OKL_API.G_MISS_NUM) THEN
699 OPEN c_get_sls_currency_code(p_cle_id);
700 FETCH c_get_sls_currency_code INTO x_currency_code;
701 IF c_get_sls_currency_code%NOTFOUND THEN
702 -- store SQL error message on message stack
703 OKL_API.set_message(p_app_name => G_APP_NAME,
704 p_msg_name => G_NO_MATCHING_RECORD,
705 p_token1 => G_COL_NAME_TOKEN,
706 p_token1_value => 'OKC_K_HEADERS_V.CURRENCY_CODE');
707 RAISE G_EXCEPTION_HALT_VALIDATION;
708 END IF;
709 CLOSE c_get_sls_currency_code;
710 END IF;
711 RETURN x_return_status;
712 EXCEPTION
713 WHEN G_EXCEPTION_STOP_VALIDATION then
714 -- We are here since the field is required
715 x_return_status := OKL_API.G_RET_STS_ERROR;
716 WHEN G_EXCEPTION_HALT_VALIDATION then
717 -- We are here b'cause we have no parent record
718 -- If the cursor is open then it has to be closed
719 IF c_get_tls_currency_code%ISOPEN THEN
720 CLOSE c_get_tls_currency_code;
721 END IF;
722 -- if the cursor is open
723 IF c_get_sls_currency_code%ISOPEN THEN
724 CLOSE c_get_sls_currency_code;
725 END IF;
726 -- notify caller of an error
727 x_return_status := OKL_API.G_RET_STS_ERROR;
728 WHEN OTHERS THEN
729 -- store SQL error message on message stack for caller
730 OKL_API.set_message(G_APP_NAME,
731 G_UNEXPECTED_ERROR,
732 G_SQLCODE_TOKEN,
733 SQLCODE,
734 G_SQLERRM_TOKEN,
735 SQLERRM);
736 -- notify caller of an UNEXPECTED error
737 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
738 -- if the cursor is open
739 IF c_get_tls_currency_code%ISOPEN THEN
740 CLOSE c_get_tls_currency_code;
741 END IF;
742 -- if the cursor is open
743 IF c_get_sls_currency_code%ISOPEN THEN
744 CLOSE c_get_sls_currency_code;
745 END IF;
746 RETURN(x_return_status);
747 END get_currency_code;
748 ----------------------------------------------------------------------------------------------------------------
749 -- Start of Commnets
750 -- Ramesh Seela
751 -- Function Name : default_contract_line_values
752 -- Description : Default the values of start_date, end_date, sts_code, and currency_code on the line
753 -- Business Rules :
754 -- Parameters :
755 -- Version :
756 -- End of Commnets
757
758 FUNCTION default_contract_line_values(p_dnz_chr_id IN OKC_K_LINES_B.DNZ_CHR_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
759 p_cle_id IN OKC_K_LINES_B.CLE_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
760 p_clev_rec IN OUT NOCOPY clev_rec_type)
761 RETURN VARCHAR2 IS
762 x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
763 lv_orig_sys_source_code OKC_K_HEADERS_B.ORIG_SYSTEM_SOURCE_CODE%TYPE;
764 ln_orig_system_id1 OKC_K_HEADERS_B.ORIG_SYSTEM_ID1%TYPE;
765 ld_start_date OKC_K_LINES_B.START_DATE%TYPE;
766 ld_end_date OKC_K_LINES_B.END_DATE%TYPE;
767 lv_currency_code OKC_K_HEADERS_B.CURRENCY_CODE%TYPE;
768 lv_sts_code OKC_K_HEADERS_B.STS_CODE%TYPE;
769
770 CURSOR c_get_contract_header_details(p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE) IS
771 SELECT chrv.sts_code,
772 chrv.end_date,
773 chrv.currency_code,
774 chrv.start_Date,
775 chrv.orig_system_source_code,
776 chrv.orig_system_id1
777 FROM OKC_K_HEADERS_V chrv
778 WHERE chrv.id = p_dnz_chr_id;
779
780 CURSOR c_get_contract_line_details(p_cle_id OKC_K_LINES_B.CLE_ID%TYPE) IS
781 SELECT cle.sts_code,
782 cle.end_date,
783 cle.currency_code,
784 cle.start_date
785 FROM OKC_K_LINES_V cle
786 WHERE cle.id = p_cle_id;
787
788 CURSOR c_get_trx_date_trans_occ(p_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE) IS
789 SELECT date_transaction_occurred
790 FROM okl_trx_contracts
791 WHERE khr_id = p_chr_id
792 AND tcn_type = 'TRBK'
793 AND tsu_code = 'ENTERED'
794 --rkuttiya added for 12.1.1 Multi GAAP
795 AND representation_type = 'PRIMARY';
796 --
797 BEGIN
798 -- Both p_dnz_chr_id and p_cle_id are not to be given
799 IF (p_dnz_chr_id IS NOT NULL OR
800 p_dnz_chr_id <> OKL_API.G_MISS_NUM) AND
801 (p_cle_id IS NOT NULL OR
802 p_cle_id <> OKL_API.G_MISS_NUM) THEN
803 -- store SQL error message on message stack
804 -- Notify Error
805 OKL_API.set_message(p_app_name => G_APP_NAME,
806 p_msg_name => G_REQUIRED_VALUE,
807 p_token1 => G_COL_NAME_TOKEN,
808 p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID and CLE_ID');
809 RAISE G_EXCEPTION_STOP_VALIDATION;
810 END IF;
811 -- Getting the TOP Line STS CODE
812 IF (p_dnz_chr_id IS NOT NULL OR
813 p_dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
814 OPEN c_get_contract_header_details(p_dnz_chr_id);
815 FETCH c_get_contract_header_details
816 INTO lv_sts_code,
817 ld_end_date,
818 lv_currency_code,
819 ld_start_date,
820 lv_orig_sys_source_code,
821 ln_orig_system_id1;
822 IF c_get_contract_header_details%NOTFOUND THEN
823 -- store SQL error message on message stack
824 OKL_API.set_message(p_app_name => G_APP_NAME,
825 p_msg_name => G_NO_MATCHING_RECORD,
826 p_token1 => G_COL_NAME_TOKEN,
827 p_token1_value => 'OKC_K_HEADERS_V.START_DATE');
828 RAISE G_EXCEPTION_HALT_VALIDATION;
829 END IF;
830 CLOSE c_get_contract_header_details;
831 IF lv_orig_sys_source_code = 'OKL_REBOOK' THEN
832 OPEN c_get_trx_date_trans_occ(p_chr_id => ln_orig_system_id1);
833 FETCH c_get_trx_date_trans_occ INTO ld_start_date;
834 CLOSE c_get_trx_date_trans_occ;
835 ld_start_date := nvl(ld_start_date,sysdate);
836 END IF;
837 END IF;
838 -- Getting the SUB Line STS CODE
839 IF (p_cle_id IS NOT NULL OR
840 p_cle_id <> OKL_API.G_MISS_NUM) THEN
841 OPEN c_get_contract_line_details(p_cle_id);
842 FETCH c_get_contract_line_details
843 INTO lv_sts_code,
844 ld_end_date,
845 lv_currency_code,
846 ld_start_date;
847 IF c_get_contract_line_details%NOTFOUND THEN
848 -- store SQL error message on message stack
849 OKL_API.set_message(p_app_name => G_APP_NAME,
850 p_msg_name => G_NO_MATCHING_RECORD,
851 p_token1 => G_COL_NAME_TOKEN,
852 p_token1_value => 'OKC_K_HEADERS_V.START_DATE');
853 RAISE G_EXCEPTION_HALT_VALIDATION;
854 END IF;
855 CLOSE c_get_contract_line_details;
856 END IF;
857 IF (p_clev_rec.sts_code IS NULL OR
858 p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
859 p_clev_rec.sts_code := lv_sts_code;
860 END IF;
861 IF (p_clev_rec.end_date IS NULL OR
862 p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
863 p_clev_rec.end_date := ld_end_date;
864 END IF;
865 IF (p_clev_rec.start_date IS NULL OR
866 p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
867 p_clev_rec.start_date := ld_start_date;
868 END IF;
869 IF (p_clev_rec.currency_code IS NULL OR
870 p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
871 p_clev_rec.currency_code := lv_currency_code;
872 END IF;
873 RETURN x_return_status;
874 EXCEPTION
875 WHEN G_EXCEPTION_STOP_VALIDATION then
876 -- We are here since the field is required
877 x_return_status := OKL_API.G_RET_STS_ERROR;
878 WHEN G_EXCEPTION_HALT_VALIDATION then
879 -- We are here b'cause we have no parent record
880 -- If the cursor is open then it has to be closed
881 IF c_get_contract_header_details%ISOPEN THEN
882 CLOSE c_get_contract_header_details;
883 END IF;
884 -- if the cursor is open
885 IF c_get_contract_line_details%ISOPEN THEN
886 CLOSE c_get_contract_line_details;
887 END IF;
888 -- notify caller of an error
889 x_return_status := OKL_API.G_RET_STS_ERROR;
890 WHEN OTHERS THEN
891 -- store SQL error message on message stack for caller
892 OKL_API.set_message(G_APP_NAME,
893 G_UNEXPECTED_ERROR,
894 G_SQLCODE_TOKEN,
895 SQLCODE,
896 G_SQLERRM_TOKEN,
897 SQLERRM);
898 -- notify caller of an UNEXPECTED error
899 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
900 -- if the cursor is open
901 IF c_get_contract_header_details%ISOPEN THEN
902 CLOSE c_get_contract_header_details;
903 END IF;
904 -- if the cursor is open
905 IF c_get_contract_line_details%ISOPEN THEN
906 CLOSE c_get_contract_line_details;
907 END IF;
908 RETURN(x_return_status);
909 END default_contract_line_values;
910 -------------------------------------------------------------------------------------------------
911 FUNCTION get_rec_txlv(p_txlv_id IN OKL_TXL_ASSETS_V.KLE_ID%TYPE,
912 x_txlv_rec OUT NOCOPY talv_rec_type)
913 RETURN VARCHAR2 IS
914 CURSOR okl_talv_pk_csr (p_kle_id IN NUMBER) IS
915 SELECT ID,
916 OBJECT_VERSION_NUMBER,
917 SFWT_FLAG,
918 TAS_ID,
919 ILO_ID,
920 ILO_ID_OLD,
921 IAY_ID,
922 IAY_ID_NEW,
923 KLE_ID,
924 DNZ_KHR_ID,
925 LINE_NUMBER,
926 ORG_ID,
927 TAL_TYPE,
928 ASSET_NUMBER,
929 DESCRIPTION,
930 FA_LOCATION_ID,
931 ORIGINAL_COST,
932 CURRENT_UNITS,
933 MANUFACTURER_NAME,
934 YEAR_MANUFACTURED,
935 SUPPLIER_ID,
936 USED_ASSET_YN,
937 TAG_NUMBER,
938 MODEL_NUMBER,
939 CORPORATE_BOOK,
940 DATE_PURCHASED,
941 DATE_DELIVERY,
942 IN_SERVICE_DATE,
943 LIFE_IN_MONTHS,
944 DEPRECIATION_ID,
945 DEPRECIATION_COST,
946 DEPRN_METHOD,
947 DEPRN_RATE,
948 SALVAGE_VALUE,
949 PERCENT_SALVAGE_VALUE,
950 --Bug# 2981308
951 ASSET_KEY_ID,
952 ATTRIBUTE_CATEGORY,
953 ATTRIBUTE1,
954 ATTRIBUTE2,
955 ATTRIBUTE3,
956 ATTRIBUTE4,
957 ATTRIBUTE5,
958 ATTRIBUTE6,
959 ATTRIBUTE7,
960 ATTRIBUTE8,
961 ATTRIBUTE9,
962 ATTRIBUTE10,
963 ATTRIBUTE11,
964 ATTRIBUTE12,
965 ATTRIBUTE13,
966 ATTRIBUTE14,
967 ATTRIBUTE15,
968 CREATED_BY,
969 CREATION_DATE,
970 LAST_UPDATED_BY,
971 LAST_UPDATE_DATE,
972 LAST_UPDATE_LOGIN,
973 DEPRECIATE_YN,
974 HOLD_PERIOD_DAYS,
975 OLD_SALVAGE_VALUE,
976 NEW_RESIDUAL_VALUE,
977 OLD_RESIDUAL_VALUE,
978 UNITS_RETIRED,
979 COST_RETIRED,
980 SALE_PROCEEDS,
981 REMOVAL_COST,
982 DNZ_ASSET_ID,
983 DATE_DUE,
984 REP_ASSET_ID,
985 LKE_ASSET_ID,
986 MATCH_AMOUNT,
987 SPLIT_INTO_SINGLES_FLAG,
988 SPLIT_INTO_UNITS,
989 CURRENCY_CODE,
990 CURRENCY_CONVERSION_TYPE,
991 CURRENCY_CONVERSION_RATE,
992 CURRENCY_CONVERSION_DATE
993 FROM Okl_Txl_Assets_V
994 WHERE okl_txl_assets_v.kle_id = p_kle_id;
995 l_okl_talv_pk okl_talv_pk_csr%ROWTYPE;
996 x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
997 BEGIN
998 OPEN okl_talv_pk_csr (p_txlv_id);
999 FETCH okl_talv_pk_csr INTO
1000 x_txlv_rec.ID,
1001 x_txlv_rec.OBJECT_VERSION_NUMBER,
1002 x_txlv_rec.SFWT_FLAG,
1003 x_txlv_rec.TAS_ID,
1004 x_txlv_rec.ILO_ID,
1005 x_txlv_rec.ILO_ID_OLD,
1006 x_txlv_rec.IAY_ID,
1007 x_txlv_rec.IAY_ID_NEW,
1008 x_txlv_rec.KLE_ID,
1009 x_txlv_rec.DNZ_KHR_ID,
1010 x_txlv_rec.LINE_NUMBER,
1011 x_txlv_rec.ORG_ID,
1012 x_txlv_rec.TAL_TYPE,
1013 x_txlv_rec.ASSET_NUMBER,
1014 x_txlv_rec.DESCRIPTION,
1015 x_txlv_rec.FA_LOCATION_ID,
1016 x_txlv_rec.ORIGINAL_COST,
1017 x_txlv_rec.CURRENT_UNITS,
1018 x_txlv_rec.MANUFACTURER_NAME,
1019 x_txlv_rec.YEAR_MANUFACTURED,
1020 x_txlv_rec.SUPPLIER_ID,
1021 x_txlv_rec.USED_ASSET_YN,
1022 x_txlv_rec.TAG_NUMBER,
1023 x_txlv_rec.MODEL_NUMBER,
1024 x_txlv_rec.CORPORATE_BOOK,
1025 x_txlv_rec.DATE_PURCHASED,
1026 x_txlv_rec.DATE_DELIVERY,
1027 x_txlv_rec.IN_SERVICE_DATE,
1028 x_txlv_rec.LIFE_IN_MONTHS,
1029 x_txlv_rec.DEPRECIATION_ID,
1030 x_txlv_rec.DEPRECIATION_COST,
1031 x_txlv_rec.DEPRN_METHOD,
1032 x_txlv_rec.DEPRN_RATE,
1033 x_txlv_rec.SALVAGE_VALUE,
1034 x_txlv_rec.PERCENT_SALVAGE_VALUE,
1035 --Bug# 2981308
1036 x_txlv_rec.ASSET_KEY_ID,
1037 x_txlv_rec.ATTRIBUTE_CATEGORY,
1038 x_txlv_rec.ATTRIBUTE1,
1039 x_txlv_rec.ATTRIBUTE2,
1040 x_txlv_rec.ATTRIBUTE3,
1041 x_txlv_rec.ATTRIBUTE4,
1042 x_txlv_rec.ATTRIBUTE5,
1043 x_txlv_rec.ATTRIBUTE6,
1044 x_txlv_rec.ATTRIBUTE7,
1045 x_txlv_rec.ATTRIBUTE8,
1046 x_txlv_rec.ATTRIBUTE9,
1047 x_txlv_rec.ATTRIBUTE10,
1048 x_txlv_rec.ATTRIBUTE11,
1049 x_txlv_rec.ATTRIBUTE12,
1050 x_txlv_rec.ATTRIBUTE13,
1051 x_txlv_rec.ATTRIBUTE14,
1052 x_txlv_rec.ATTRIBUTE15,
1053 x_txlv_rec.CREATED_BY,
1054 x_txlv_rec.CREATION_DATE,
1055 x_txlv_rec.LAST_UPDATED_BY,
1056 x_txlv_rec.LAST_UPDATE_DATE,
1057 x_txlv_rec.LAST_UPDATE_LOGIN,
1058 x_txlv_rec.DEPRECIATE_YN,
1059 x_txlv_rec.HOLD_PERIOD_DAYS,
1060 x_txlv_rec.OLD_SALVAGE_VALUE,
1061 x_txlv_rec.NEW_RESIDUAL_VALUE,
1062 x_txlv_rec.OLD_RESIDUAL_VALUE,
1063 x_txlv_rec.UNITS_RETIRED,
1064 x_txlv_rec.COST_RETIRED,
1065 x_txlv_rec.SALE_PROCEEDS,
1066 x_txlv_rec.REMOVAL_COST,
1067 x_txlv_rec.DNZ_ASSET_ID,
1068 x_txlv_rec.DATE_DUE,
1069 x_txlv_rec.REP_ASSET_ID,
1070 x_txlv_rec.LKE_ASSET_ID,
1071 x_txlv_rec.MATCH_AMOUNT,
1072 x_txlv_rec.SPLIT_INTO_SINGLES_FLAG,
1073 x_txlv_rec.SPLIT_INTO_UNITS,
1074 x_txlv_rec.CURRENCY_CODE,
1075 x_txlv_rec.CURRENCY_CONVERSION_TYPE,
1076 x_txlv_rec.CURRENCY_CONVERSION_RATE,
1077 x_txlv_rec.CURRENCY_CONVERSION_DATE;
1078 IF okl_talv_pk_csr%NOTFOUND THEN
1079 x_return_status := OKL_API.G_RET_STS_ERROR;
1080 END IF;
1081 CLOSE okl_talv_pk_csr;
1082 RETURN(x_return_status);
1083 EXCEPTION
1084 WHEN OTHERS THEN
1085 -- store SQL error message on message stack for caller
1086 OKL_API.set_message(G_APP_NAME,
1087 G_UNEXPECTED_ERROR,
1088 G_SQLCODE_TOKEN,
1089 SQLCODE,
1090 G_SQLERRM_TOKEN,
1091 SQLERRM);
1092 -- notify caller of an UNEXPECTED error
1093 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1094 -- if the cursor is open
1095 IF okl_talv_pk_csr%ISOPEN THEN
1096 CLOSE okl_talv_pk_csr;
1097 END IF;
1098 RETURN(x_return_status);
1099 END get_rec_txlv;
1100 ----------------------------------------------------------------------------
1101 -- Start of Commnets
1102 -- Badrinath Kuchibholta
1103 -- Function Name : get_txdv_rec
1104 -- Description : Get Transaction Detail Line Record
1105 -- Business Rules :
1106 -- Parameters :
1107 -- Version :
1108 -- End of Commnets
1109 FUNCTION get_txdv_tbl(p_tal_id IN NUMBER,
1110 p_asset_number IN OKL_TXL_ASSETS_B.ASSET_NUMBER%TYPE,
1111 p_original_cost IN OKL_TXL_ASSETS_B.ORIGINAL_COST%TYPE,
1112 x_to_update OUT NOCOPY VARCHAR2,
1113 x_txdv_tbl OUT NOCOPY txdv_tbl_type)
1114 RETURN VARCHAR2
1115 IS
1116 x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1117 i NUMBER := 0;
1118 lv_to_update VARCHAR2(3) := 'N';
1119 CURSOR c_okl_asdv_pk_csr (p_tal_id IN NUMBER) IS
1120 SELECT id,
1121 object_version_number,
1122 tal_id,
1123 target_kle_id,
1124 line_detail_number,
1125 asset_number,
1126 description,
1127 quantity,
1128 cost,
1129 tax_book,
1130 life_in_months_tax,
1131 deprn_method_tax,
1132 deprn_rate_tax,
1133 salvage_value,
1134 attribute_category,
1135 attribute1,
1136 attribute2,
1137 attribute3,
1138 attribute4,
1139 attribute5,
1140 attribute6,
1141 attribute7,
1142 attribute8,
1143 attribute9,
1144 attribute10,
1145 attribute11,
1146 attribute12,
1147 attribute13,
1148 attribute14,
1149 attribute15,
1150 created_by,
1151 creation_date,
1152 last_updated_by,
1153 last_update_date,
1154 last_update_login,
1155 split_percent,
1156 inventory_item_id
1157 FROM Okl_Txd_Assets_V txd
1158 WHERE txd.tal_id = p_tal_id;
1159 BEGIN
1160 FOR r_okl_asdv_pk_csr IN c_okl_asdv_pk_csr(p_tal_id) LOOP
1161 x_txdv_tbl(i).ID := r_okl_asdv_pk_csr.ID;
1162 x_txdv_tbl(i).OBJECT_VERSION_NUMBER := r_okl_asdv_pk_csr.OBJECT_VERSION_NUMBER;
1163 x_txdv_tbl(i).TAL_ID := r_okl_asdv_pk_csr.TAL_ID;
1164 x_txdv_tbl(i).TARGET_KLE_ID := r_okl_asdv_pk_csr.TARGET_KLE_ID;
1165 x_txdv_tbl(i).LINE_DETAIL_NUMBER := r_okl_asdv_pk_csr.LINE_DETAIL_NUMBER;
1166 x_txdv_tbl(i).DESCRIPTION := r_okl_asdv_pk_csr.DESCRIPTION;
1167 IF (p_asset_number <> r_okl_asdv_pk_csr.ASSET_NUMBER) OR
1168 (p_original_cost <> r_okl_asdv_pk_csr.COST) THEN
1169 x_txdv_tbl(i).COST := p_original_cost;
1170 x_txdv_tbl(i).ASSET_NUMBER := p_asset_number;
1171 lv_to_update := 'Y';
1172 ELSE
1173 x_txdv_tbl(i).COST := r_okl_asdv_pk_csr.COST;
1174 x_txdv_tbl(i).ASSET_NUMBER := r_okl_asdv_pk_csr.ASSET_NUMBER;
1175 lv_to_update := 'N';
1176 END IF;
1177 x_txdv_tbl(i).QUANTITY := r_okl_asdv_pk_csr.QUANTITY;
1178 x_txdv_tbl(i).TAX_BOOK := r_okl_asdv_pk_csr.TAX_BOOK;
1179 x_txdv_tbl(i).LIFE_IN_MONTHS_TAX := r_okl_asdv_pk_csr.LIFE_IN_MONTHS_TAX;
1180 x_txdv_tbl(i).DEPRN_METHOD_TAX := r_okl_asdv_pk_csr.DEPRN_METHOD_TAX;
1181 x_txdv_tbl(i).DEPRN_RATE_TAX := r_okl_asdv_pk_csr.DEPRN_RATE_TAX;
1182 x_txdv_tbl(i).SALVAGE_VALUE := r_okl_asdv_pk_csr.SALVAGE_VALUE;
1183 x_txdv_tbl(i).ATTRIBUTE_CATEGORY := r_okl_asdv_pk_csr.ATTRIBUTE_CATEGORY;
1184 x_txdv_tbl(i).ATTRIBUTE1 := r_okl_asdv_pk_csr.ATTRIBUTE1;
1185 x_txdv_tbl(i).ATTRIBUTE2 := r_okl_asdv_pk_csr.ATTRIBUTE2;
1186 x_txdv_tbl(i).ATTRIBUTE3 := r_okl_asdv_pk_csr.ATTRIBUTE3;
1187 x_txdv_tbl(i).ATTRIBUTE4 := r_okl_asdv_pk_csr.ATTRIBUTE4;
1188 x_txdv_tbl(i).ATTRIBUTE5 := r_okl_asdv_pk_csr.ATTRIBUTE5;
1189 x_txdv_tbl(i).ATTRIBUTE6 := r_okl_asdv_pk_csr.ATTRIBUTE6;
1190 x_txdv_tbl(i).ATTRIBUTE7 := r_okl_asdv_pk_csr.ATTRIBUTE7;
1191 x_txdv_tbl(i).ATTRIBUTE8 := r_okl_asdv_pk_csr.ATTRIBUTE8;
1192 x_txdv_tbl(i).ATTRIBUTE9 := r_okl_asdv_pk_csr.ATTRIBUTE9;
1193 x_txdv_tbl(i).ATTRIBUTE10 := r_okl_asdv_pk_csr.ATTRIBUTE10;
1194 x_txdv_tbl(i).ATTRIBUTE11 := r_okl_asdv_pk_csr.ATTRIBUTE11;
1195 x_txdv_tbl(i).ATTRIBUTE12 := r_okl_asdv_pk_csr.ATTRIBUTE12;
1196 x_txdv_tbl(i).ATTRIBUTE13 := r_okl_asdv_pk_csr.ATTRIBUTE13;
1197 x_txdv_tbl(i).ATTRIBUTE14 := r_okl_asdv_pk_csr.ATTRIBUTE14;
1198 x_txdv_tbl(i).ATTRIBUTE15 := r_okl_asdv_pk_csr.ATTRIBUTE15;
1199 x_txdv_tbl(i).CREATED_BY := r_okl_asdv_pk_csr.CREATED_BY;
1200 x_txdv_tbl(i).CREATION_DATE := r_okl_asdv_pk_csr.CREATION_DATE;
1201 x_txdv_tbl(i).LAST_UPDATED_BY := r_okl_asdv_pk_csr.LAST_UPDATED_BY;
1202 x_txdv_tbl(i).LAST_UPDATE_DATE := r_okl_asdv_pk_csr.LAST_UPDATE_DATE;
1203 x_txdv_tbl(i).LAST_UPDATE_LOGIN := r_okl_asdv_pk_csr.LAST_UPDATE_LOGIN;
1204 x_txdv_tbl(i).SPLIT_PERCENT := r_okl_asdv_pk_csr.split_percent;
1205 x_txdv_tbl(i).INVENTORY_ITEM_ID := r_okl_asdv_pk_csr.inventory_item_id;
1206 i := i + 1;
1207 -- IF c_okl_asdv_pk_csr%NOTFOUND THEN
1208 -- x_return_status := OKL_API.G_RET_STS_ERROR;
1209 -- EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
1210 -- END IF;
1211 END LOOP;
1212 x_to_update := lv_to_update;
1213 RETURN(x_return_status);
1214 EXCEPTION
1215 WHEN OTHERS THEN
1216 -- store SQL error message on message stack for caller
1217 OKL_API.set_message(
1218 G_APP_NAME,
1219 G_UNEXPECTED_ERROR,
1220 G_SQLCODE_TOKEN,
1221 SQLCODE,
1222 G_SQLERRM_TOKEN,
1223 SQLERRM);
1224 IF c_okl_asdv_pk_csr%ISOPEN THEN
1225 CLOSE c_okl_asdv_pk_csr;
1226 END IF;
1227 -- notify caller of an UNEXPECTED error
1228 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1229 return(x_return_status);
1230 END get_txdv_tbl;
1231 -----------------------------------------------------------------------------------------------
1232 FUNCTION get_rec_itiv(p_itiv_id IN OKL_TXL_ITM_INSTS_V.KLE_ID%TYPE,
1233 x_itiv_rec OUT NOCOPY itiv_rec_type)
1234 RETURN VARCHAR2 IS
1235
1236 CURSOR okl_itiv_pk_csr (p_kle_id IN NUMBER) IS
1237 SELECT ID,
1238 OBJECT_VERSION_NUMBER,
1239 TAS_ID,
1240 TAL_ID,
1241 KLE_ID,
1242 TAL_TYPE,
1243 LINE_NUMBER,
1244 INSTANCE_NUMBER_IB,
1245 OBJECT_ID1_NEW,
1246 OBJECT_ID2_NEW,
1247 JTOT_OBJECT_CODE_NEW,
1248 OBJECT_ID1_OLD,
1249 OBJECT_ID2_OLD,
1250 JTOT_OBJECT_CODE_OLD,
1251 INVENTORY_ORG_ID,
1252 SERIAL_NUMBER,
1253 MFG_SERIAL_NUMBER_YN,
1254 INVENTORY_ITEM_ID,
1255 INV_MASTER_ORG_ID,
1256 ATTRIBUTE_CATEGORY,
1257 ATTRIBUTE1,
1258 ATTRIBUTE2,
1259 ATTRIBUTE3,
1260 ATTRIBUTE4,
1261 ATTRIBUTE5,
1262 ATTRIBUTE6,
1263 ATTRIBUTE7,
1264 ATTRIBUTE8,
1265 ATTRIBUTE9,
1266 ATTRIBUTE10,
1267 ATTRIBUTE11,
1268 ATTRIBUTE12,
1269 ATTRIBUTE13,
1270 ATTRIBUTE14,
1271 ATTRIBUTE15,
1272 CREATED_BY,
1273 CREATION_DATE,
1274 LAST_UPDATED_BY,
1275 LAST_UPDATE_DATE,
1276 LAST_UPDATE_LOGIN
1277 FROM OKL_TXL_ITM_INSTS iti
1278 WHERE iti.kle_id = p_kle_id;
1279 l_okl_itiv_pk okl_itiv_pk_csr%ROWTYPE;
1280 x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1281 BEGIN
1282 OPEN okl_itiv_pk_csr (p_itiv_id);
1283 FETCH okl_itiv_pk_csr INTO
1284 x_itiv_rec.ID,
1285 x_itiv_rec.OBJECT_VERSION_NUMBER,
1286 x_itiv_rec.TAS_ID,
1287 x_itiv_rec.TAL_ID,
1288 x_itiv_rec.KLE_ID,
1289 x_itiv_rec.TAL_TYPE,
1290 x_itiv_rec.LINE_NUMBER,
1291 x_itiv_rec.INSTANCE_NUMBER_IB,
1292 x_itiv_rec.OBJECT_ID1_NEW,
1293 x_itiv_rec.OBJECT_ID2_NEW,
1294 x_itiv_rec.JTOT_OBJECT_CODE_NEW,
1295 x_itiv_rec.OBJECT_ID1_OLD,
1296 x_itiv_rec.OBJECT_ID2_OLD,
1297 x_itiv_rec.JTOT_OBJECT_CODE_OLD,
1298 x_itiv_rec.INVENTORY_ORG_ID,
1299 x_itiv_rec.SERIAL_NUMBER,
1300 x_itiv_rec.MFG_SERIAL_NUMBER_YN,
1301 x_itiv_rec.INVENTORY_ITEM_ID,
1302 x_itiv_rec.INV_MASTER_ORG_ID,
1303 x_itiv_rec.ATTRIBUTE_CATEGORY,
1304 x_itiv_rec.ATTRIBUTE1,
1305 x_itiv_rec.ATTRIBUTE2,
1306 x_itiv_rec.ATTRIBUTE3,
1307 x_itiv_rec.ATTRIBUTE4,
1308 x_itiv_rec.ATTRIBUTE5,
1309 x_itiv_rec.ATTRIBUTE6,
1310 x_itiv_rec.ATTRIBUTE7,
1311 x_itiv_rec.ATTRIBUTE8,
1312 x_itiv_rec.ATTRIBUTE9,
1313 x_itiv_rec.ATTRIBUTE10,
1314 x_itiv_rec.ATTRIBUTE11,
1315 x_itiv_rec.ATTRIBUTE12,
1316 x_itiv_rec.ATTRIBUTE13,
1317 x_itiv_rec.ATTRIBUTE14,
1318 x_itiv_rec.ATTRIBUTE15,
1319 x_itiv_rec.CREATED_BY,
1320 x_itiv_rec.CREATION_DATE,
1321 x_itiv_rec.LAST_UPDATED_BY,
1322 x_itiv_rec.LAST_UPDATE_DATE,
1323 x_itiv_rec.LAST_UPDATE_LOGIN;
1324 IF okl_itiv_pk_csr%NOTFOUND THEN
1325 x_return_status := OKL_API.G_RET_STS_ERROR;
1326 END IF;
1327 CLOSE okl_itiv_pk_csr;
1328 RETURN(x_return_status);
1329 EXCEPTION
1330 WHEN OTHERS THEN
1331 -- store SQL error message on message stack for caller
1332 OKL_API.set_message(G_APP_NAME,
1333 G_UNEXPECTED_ERROR,
1334 G_SQLCODE_TOKEN,
1335 SQLCODE,
1336 G_SQLERRM_TOKEN,
1337 SQLERRM);
1338 -- notify caller of an UNEXPECTED error
1339 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1340 -- if the cursor is open
1341 IF okl_itiv_pk_csr%ISOPEN THEN
1342 CLOSE okl_itiv_pk_csr;
1343 END IF;
1344 RETURN(x_return_status);
1345 END get_rec_itiv;
1346 -----------------------------------------------------------------------------------------------------
1347 FUNCTION get_rec_cplv(p_cplv_id IN OKC_K_PARTY_ROLES_B.ID%TYPE,
1348 x_cplv_rec OUT NOCOPY cplv_rec_type)
1349 RETURN VARCHAR2 IS
1350 CURSOR okc_cplv_pk_csr (p_cplv_id OKC_K_PARTY_ROLES_B.ID%TYPE) IS
1351 SELECT ID,
1352 OBJECT_VERSION_NUMBER,
1353 SFWT_FLAG,
1354 CPL_ID,
1355 CHR_ID,
1356 CLE_ID,
1357 RLE_CODE,
1358 DNZ_CHR_ID,
1359 OBJECT1_ID1,
1360 OBJECT1_ID2,
1361 JTOT_OBJECT1_CODE,
1362 COGNOMEN,
1363 CODE,
1364 FACILITY,
1365 MINORITY_GROUP_LOOKUP_CODE,
1366 SMALL_BUSINESS_FLAG,
1367 WOMEN_OWNED_FLAG,
1368 ALIAS,
1369 ATTRIBUTE_CATEGORY,
1370 ATTRIBUTE1,
1371 ATTRIBUTE2,
1372 ATTRIBUTE3,
1373 ATTRIBUTE4,
1374 ATTRIBUTE5,
1375 ATTRIBUTE6,
1376 ATTRIBUTE7,
1377 ATTRIBUTE8,
1378 ATTRIBUTE9,
1379 ATTRIBUTE10,
1380 ATTRIBUTE11,
1381 ATTRIBUTE12,
1382 ATTRIBUTE13,
1383 ATTRIBUTE14,
1384 ATTRIBUTE15,
1385 CREATED_BY,
1386 CREATION_DATE,
1387 LAST_UPDATED_BY,
1388 LAST_UPDATE_DATE,
1389 LAST_UPDATE_LOGIN
1390 FROM Okc_K_Party_Roles_V cpr
1391 WHERE cpr.id = p_cplv_id;
1392 l_okc_cplv_pk okc_cplv_pk_csr%ROWTYPE;
1393 x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1394 BEGIN
1395 OPEN okc_cplv_pk_csr (p_cplv_id);
1396 FETCH okc_cplv_pk_csr INTO
1397 x_cplv_rec.ID,
1398 x_cplv_rec.OBJECT_VERSION_NUMBER,
1399 x_cplv_rec.SFWT_FLAG,
1400 x_cplv_rec.CPL_ID,
1401 x_cplv_rec.CHR_ID,
1402 x_cplv_rec.CLE_ID,
1403 x_cplv_rec.RLE_CODE,
1404 x_cplv_rec.DNZ_CHR_ID,
1405 x_cplv_rec.OBJECT1_ID1,
1406 x_cplv_rec.OBJECT1_ID2,
1407 x_cplv_rec.JTOT_OBJECT1_CODE,
1408 x_cplv_rec.COGNOMEN,
1409 x_cplv_rec.CODE,
1410 x_cplv_rec.FACILITY,
1411 x_cplv_rec.MINORITY_GROUP_LOOKUP_CODE,
1412 x_cplv_rec.SMALL_BUSINESS_FLAG,
1413 x_cplv_rec.WOMEN_OWNED_FLAG,
1414 x_cplv_rec.ALIAS,
1415 x_cplv_rec.ATTRIBUTE_CATEGORY,
1416 x_cplv_rec.ATTRIBUTE1,
1417 x_cplv_rec.ATTRIBUTE2,
1418 x_cplv_rec.ATTRIBUTE3,
1419 x_cplv_rec.ATTRIBUTE4,
1420 x_cplv_rec.ATTRIBUTE5,
1421 x_cplv_rec.ATTRIBUTE6,
1422 x_cplv_rec.ATTRIBUTE7,
1423 x_cplv_rec.ATTRIBUTE8,
1424 x_cplv_rec.ATTRIBUTE9,
1425 x_cplv_rec.ATTRIBUTE10,
1426 x_cplv_rec.ATTRIBUTE11,
1427 x_cplv_rec.ATTRIBUTE12,
1428 x_cplv_rec.ATTRIBUTE13,
1429 x_cplv_rec.ATTRIBUTE14,
1430 x_cplv_rec.ATTRIBUTE15,
1431 x_cplv_rec.CREATED_BY,
1432 x_cplv_rec.CREATION_DATE,
1433 x_cplv_rec.LAST_UPDATED_BY,
1434 x_cplv_rec.LAST_UPDATE_DATE,
1435 x_cplv_rec.LAST_UPDATE_LOGIN;
1436 IF okc_cplv_pk_csr%NOTFOUND THEN
1437 x_return_status := OKL_API.G_RET_STS_ERROR;
1438 END IF;
1439 CLOSE okc_cplv_pk_csr;
1440 RETURN(x_return_status);
1441 EXCEPTION
1442 WHEN OTHERS THEN
1443 -- store SQL error message on message stack for caller
1444 OKL_API.set_message(G_APP_NAME,
1445 G_UNEXPECTED_ERROR,
1446 G_SQLCODE_TOKEN,
1447 SQLCODE,
1448 G_SQLERRM_TOKEN,
1449 SQLERRM);
1450 -- notify caller of an UNEXPECTED error
1451 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1452 -- if the cursor is open
1453 IF okc_cplv_pk_csr%ISOPEN THEN
1454 CLOSE okc_cplv_pk_csr;
1455 END IF;
1456 RETURN(x_return_status);
1457 END get_rec_cplv;
1458 --------------------------------------------------------------------------------------------------
1459 FUNCTION get_rec_ib_cimv(p_cle_id IN OKC_K_ITEMS_V.CLE_ID%TYPE,
1460 p_dnz_chr_id IN OKC_K_ITEMS_V.DNZ_CHR_ID%TYPE,
1461 x_cimv_rec OUT NOCOPY cimv_rec_type)
1462 RETURN VARCHAR2 IS
1463 CURSOR okc_cimv_pk_csr(p_cle_id OKC_K_ITEMS_V.CLE_ID%TYPE,
1464 p_dnz_chr_id OKC_K_ITEMS_V.DNZ_CHR_ID%TYPE) IS
1465 SELECT CIM.ID,
1466 CIM.OBJECT_VERSION_NUMBER,
1467 CIM.CLE_ID,
1468 CIM.CHR_ID,
1469 CIM.CLE_ID_FOR,
1470 CIM.DNZ_CHR_ID,
1471 CIM.OBJECT1_ID1,
1472 CIM.OBJECT1_ID2,
1473 CIM.JTOT_OBJECT1_CODE,
1474 CIM.UOM_CODE,
1475 CIM.EXCEPTION_YN,
1476 CIM.NUMBER_OF_ITEMS,
1477 CIM.UPG_ORIG_SYSTEM_REF,
1478 CIM.UPG_ORIG_SYSTEM_REF_ID,
1479 CIM.PRICED_ITEM_YN,
1480 CIM.CREATED_BY,
1481 CIM.CREATION_DATE,
1482 CIM.LAST_UPDATED_BY,
1483 CIM.LAST_UPDATE_DATE,
1484 CIM.LAST_UPDATE_LOGIN
1485 FROM okc_k_items_v cim,
1486 okc_k_lines_b cle,
1487 okc_line_styles_b lse,
1488 okc_k_lines_b cle1
1489 WHERE cim.dnz_chr_id = p_dnz_chr_id
1490 AND cim.cle_id = cle.id
1491 AND cle.lse_id = lse.id
1492 AND lse.lty_code = 'ITEM'
1493 AND cle.dnz_chr_id = p_dnz_chr_id --cim.dnz_chr_id
1494 AND cle.cle_id = cle1.cle_id
1495 AND cle1.id = p_cle_id
1496 AND cle1.dnz_chr_id = p_dnz_chr_id; --cim.dnz_chr_id
1497
1498 /*FROM okc_k_items_v cim
1499 WHERE cim.dnz_chr_id = p_dnz_chr_id
1500 AND cim.cle_id in (SELECT cle.id
1501 FROM okc_k_lines_v cle,
1502 okc_line_styles_v lse
1503 WHERE cle.lse_id = lse.id
1504 AND lse.lty_code = 'ITEM'
1505 AND cle.dnz_chr_id = cim.dnz_chr_id
1506 AND cle.cle_id in (SELECT cle1.cle_id
1507 FROM okc_k_lines_v cle1
1508 WHERE cle1.id = p_cle_id
1509 AND cle1.dnz_chr_id = cim.dnz_chr_id));*/
1510 l_okc_cimv_pk okc_cimv_pk_csr%ROWTYPE;
1511 x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1512 BEGIN
1513 OPEN okc_cimv_pk_csr(p_cle_id,
1514 p_dnz_chr_id);
1515 FETCH okc_cimv_pk_csr INTO
1516 x_cimv_rec.ID,
1517 x_cimv_rec.OBJECT_VERSION_NUMBER,
1518 x_cimv_rec.CLE_ID,
1519 x_cimv_rec.CHR_ID,
1520 x_cimv_rec.CLE_ID_FOR,
1521 x_cimv_rec.DNZ_CHR_ID,
1522 x_cimv_rec.OBJECT1_ID1,
1523 x_cimv_rec.OBJECT1_ID2,
1524 x_cimv_rec.JTOT_OBJECT1_CODE,
1525 x_cimv_rec.UOM_CODE,
1526 x_cimv_rec.EXCEPTION_YN,
1527 x_cimv_rec.NUMBER_OF_ITEMS,
1528 x_cimv_rec.UPG_ORIG_SYSTEM_REF,
1529 x_cimv_rec.UPG_ORIG_SYSTEM_REF_ID,
1530 x_cimv_rec.PRICED_ITEM_YN,
1531 x_cimv_rec.CREATED_BY,
1532 x_cimv_rec.CREATION_DATE,
1533 x_cimv_rec.LAST_UPDATED_BY,
1534 x_cimv_rec.LAST_UPDATE_DATE,
1535 x_cimv_rec.LAST_UPDATE_LOGIN;
1536 IF okc_cimv_pk_csr%NOTFOUND THEN
1537 x_return_status := OKL_API.G_RET_STS_ERROR;
1538 END IF;
1539 IF (okc_cimv_pk_csr%ROWCOUNT > 1) THEN
1540 x_return_status := OKL_API.G_RET_STS_ERROR;
1541 END IF;
1542 CLOSE okc_cimv_pk_csr;
1543 RETURN(x_return_status);
1544 EXCEPTION
1545 WHEN OTHERS THEN
1546 -- store SQL error message on message stack for caller
1547 OKL_API.set_message(G_APP_NAME,
1548 G_UNEXPECTED_ERROR,
1549 G_SQLCODE_TOKEN,
1550 SQLCODE,
1551 G_SQLERRM_TOKEN,
1552 SQLERRM);
1553 -- notify caller of an UNEXPECTED error
1554 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1555 -- if the cursor is open
1556 IF okc_cimv_pk_csr%ISOPEN THEN
1557 CLOSE okc_cimv_pk_csr;
1558 END IF;
1559 RETURN(x_return_status);
1560 END get_rec_ib_cimv;
1561 ----------------------------------------------------------------------------------------------------
1562 FUNCTION get_rec_cimv(p_cle_id IN OKC_K_ITEMS_V.CLE_ID%TYPE,
1563 p_dnz_chr_id IN OKC_K_ITEMS_V.DNZ_CHR_ID%TYPE,
1564 x_cimv_rec OUT NOCOPY cimv_rec_type)
1565 RETURN VARCHAR2 IS
1566 CURSOR okc_cimv_pk_csr(p_cle_id OKC_K_ITEMS_V.CLE_ID%TYPE,
1567 p_dnz_chr_id OKC_K_ITEMS_V.DNZ_CHR_ID%TYPE) IS
1568 SELECT CIM.ID,
1569 CIM.OBJECT_VERSION_NUMBER,
1570 CIM.CLE_ID,
1571 CIM.CHR_ID,
1572 CIM.CLE_ID_FOR,
1573 CIM.DNZ_CHR_ID,
1574 CIM.OBJECT1_ID1,
1575 CIM.OBJECT1_ID2,
1576 CIM.JTOT_OBJECT1_CODE,
1577 CIM.UOM_CODE,
1578 CIM.EXCEPTION_YN,
1579 CIM.NUMBER_OF_ITEMS,
1580 CIM.UPG_ORIG_SYSTEM_REF,
1581 CIM.UPG_ORIG_SYSTEM_REF_ID,
1582 CIM.PRICED_ITEM_YN,
1583 CIM.CREATED_BY,
1584 CIM.CREATION_DATE,
1585 CIM.LAST_UPDATED_BY,
1586 CIM.LAST_UPDATE_DATE,
1587 CIM.LAST_UPDATE_LOGIN
1588 FROM okc_k_items_v cim
1589 WHERE cim.dnz_chr_id = p_dnz_chr_id
1590 AND cim.cle_id = p_cle_id;
1591 l_okc_cimv_pk okc_cimv_pk_csr%ROWTYPE;
1592 x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1593 BEGIN
1594 OPEN okc_cimv_pk_csr(p_cle_id,
1595 p_dnz_chr_id);
1596 FETCH okc_cimv_pk_csr INTO
1597 x_cimv_rec.ID,
1598 x_cimv_rec.OBJECT_VERSION_NUMBER,
1599 x_cimv_rec.CLE_ID,
1600 x_cimv_rec.CHR_ID,
1601 x_cimv_rec.CLE_ID_FOR,
1602 x_cimv_rec.DNZ_CHR_ID,
1603 x_cimv_rec.OBJECT1_ID1,
1604 x_cimv_rec.OBJECT1_ID2,
1605 x_cimv_rec.JTOT_OBJECT1_CODE,
1606 x_cimv_rec.UOM_CODE,
1607 x_cimv_rec.EXCEPTION_YN,
1608 x_cimv_rec.NUMBER_OF_ITEMS,
1609 x_cimv_rec.UPG_ORIG_SYSTEM_REF,
1610 x_cimv_rec.UPG_ORIG_SYSTEM_REF_ID,
1611 x_cimv_rec.PRICED_ITEM_YN,
1612 x_cimv_rec.CREATED_BY,
1613 x_cimv_rec.CREATION_DATE,
1614 x_cimv_rec.LAST_UPDATED_BY,
1615 x_cimv_rec.LAST_UPDATE_DATE,
1616 x_cimv_rec.LAST_UPDATE_LOGIN;
1617 IF okc_cimv_pk_csr%NOTFOUND THEN
1618 x_return_status := OKL_API.G_RET_STS_ERROR;
1619 END IF;
1620 IF (okc_cimv_pk_csr%ROWCOUNT > 1) THEN
1621 x_return_status := OKL_API.G_RET_STS_ERROR;
1622 END IF;
1623 CLOSE okc_cimv_pk_csr;
1624 RETURN(x_return_status);
1625 EXCEPTION
1626 WHEN OTHERS THEN
1627 -- store SQL error message on message stack for caller
1628 OKL_API.set_message(G_APP_NAME,
1629 G_UNEXPECTED_ERROR,
1630 G_SQLCODE_TOKEN,
1631 SQLCODE,
1632 G_SQLERRM_TOKEN,
1633 SQLERRM);
1634 -- notify caller of an UNEXPECTED error
1635 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1636 -- if the cursor is open
1637 IF okc_cimv_pk_csr%ISOPEN THEN
1638 CLOSE okc_cimv_pk_csr;
1639 END IF;
1640 RETURN(x_return_status);
1641 END get_rec_cimv;
1642 -------------------------------------------------------------------------------------------------
1643 FUNCTION get_rec_update_cimv(p_cimv_id IN OKC_K_ITEMS_V.ID%TYPE,
1644 x_cimv_rec OUT NOCOPY cimv_rec_type)
1645 RETURN VARCHAR2 IS
1646 CURSOR okc_cimv_pk_csr(p_cimv_id OKC_K_ITEMS_V.ID%TYPE) IS
1647 SELECT ID,
1648 OBJECT_VERSION_NUMBER,
1649 CLE_ID,
1650 CHR_ID,
1651 CLE_ID_FOR,
1652 DNZ_CHR_ID,
1653 OBJECT1_ID1,
1654 OBJECT1_ID2,
1655 JTOT_OBJECT1_CODE,
1656 UOM_CODE,
1657 EXCEPTION_YN,
1658 NUMBER_OF_ITEMS,
1659 UPG_ORIG_SYSTEM_REF,
1660 UPG_ORIG_SYSTEM_REF_ID,
1661 PRICED_ITEM_YN,
1662 CREATED_BY,
1663 CREATION_DATE,
1664 LAST_UPDATED_BY,
1665 LAST_UPDATE_DATE,
1666 LAST_UPDATE_LOGIN
1667 FROM okc_k_items_V cim
1668 WHERE cim.id = p_cimv_id;
1669 l_okc_cimv_pk okc_cimv_pk_csr%ROWTYPE;
1670 x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1671 BEGIN
1672 OPEN okc_cimv_pk_csr(p_cimv_id);
1673 FETCH okc_cimv_pk_csr INTO
1674 x_cimv_rec.ID,
1675 x_cimv_rec.OBJECT_VERSION_NUMBER,
1676 x_cimv_rec.CLE_ID,
1677 x_cimv_rec.CHR_ID,
1678 x_cimv_rec.CLE_ID_FOR,
1679 x_cimv_rec.DNZ_CHR_ID,
1680 x_cimv_rec.OBJECT1_ID1,
1681 x_cimv_rec.OBJECT1_ID2,
1682 x_cimv_rec.JTOT_OBJECT1_CODE,
1683 x_cimv_rec.UOM_CODE,
1684 x_cimv_rec.EXCEPTION_YN,
1685 x_cimv_rec.NUMBER_OF_ITEMS,
1686 x_cimv_rec.UPG_ORIG_SYSTEM_REF,
1687 x_cimv_rec.UPG_ORIG_SYSTEM_REF_ID,
1688 x_cimv_rec.PRICED_ITEM_YN,
1689 x_cimv_rec.CREATED_BY,
1690 x_cimv_rec.CREATION_DATE,
1691 x_cimv_rec.LAST_UPDATED_BY,
1692 x_cimv_rec.LAST_UPDATE_DATE,
1693 x_cimv_rec.LAST_UPDATE_LOGIN;
1694 IF okc_cimv_pk_csr%NOTFOUND THEN
1695 x_return_status := OKL_API.G_RET_STS_ERROR;
1696 END IF;
1697 CLOSE okc_cimv_pk_csr;
1698 RETURN(x_return_status);
1699 EXCEPTION
1700 WHEN OTHERS THEN
1701 -- store SQL error message on message stack for caller
1702 OKL_API.set_message(G_APP_NAME,
1703 G_UNEXPECTED_ERROR,
1704 G_SQLCODE_TOKEN,
1705 SQLCODE,
1706 G_SQLERRM_TOKEN,
1707 SQLERRM);
1708 -- notify caller of an UNEXPECTED error
1709 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1710 -- if the cursor is open
1711 IF okc_cimv_pk_csr%ISOPEN THEN
1712 CLOSE okc_cimv_pk_csr;
1713 END IF;
1714 RETURN(x_return_status);
1715 END get_rec_update_cimv;
1716 ---------------------------------------------------------------------------------------------------------
1717 FUNCTION get_party_site_id(p_object_id1_new IN OKL_TXL_ITM_INSTS_V.OBJECT_ID1_NEW%TYPE,
1718 x_object_id1_new OUT NOCOPY OKL_TXL_ITM_INSTS_V.OBJECT_ID1_NEW%TYPE,
1719 x_object_id2_new OUT NOCOPY OKL_TXL_ITM_INSTS_V.OBJECT_ID2_NEW%TYPE)
1720 RETURN VARCHAR2 IS
1721 x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1722
1723 CURSOR c_get_id1_id2(p_id1 OKL_TXL_ITM_INSTS_V.OBJECT_ID1_NEW%TYPE) IS
1724 SELECT id1
1725 ,id2
1726 FROM OKX_PARTY_SITE_USES_V
1727 WHERE id1 = p_id1
1728 AND id2 = G_ID2
1729 AND site_use_type = 'INSTALL_AT';
1730
1731 BEGIN
1732 IF (p_object_id1_new IS NULL OR
1733 p_object_id1_new = OKL_API.G_MISS_NUM) THEN
1734 OKL_API.set_message(p_app_name => G_APP_NAME,
1735 p_msg_name => G_REQUIRED_VALUE,
1736 p_token1 => G_COL_NAME_TOKEN,
1737 p_token1_value => 'OKX_PARTY_SITE_USES_V.ID1');
1738 RAISE G_EXCEPTION_HALT_VALIDATION;
1739 END IF;
1740 OPEN c_get_id1_id2(p_object_id1_new);
1741 FETCH c_get_id1_id2 INTO x_object_id1_new,
1742 x_object_id2_new;
1743 IF c_get_id1_id2%NOTFOUND THEN
1744 OKL_API.set_message(p_app_name => G_APP_NAME,
1745 p_msg_name => G_NO_MATCHING_RECORD,
1746 p_token1 => G_COL_NAME_TOKEN,
1747 p_token1_value => 'OKX_PARTY_SITE_USES_V.ID1 and ID2');
1748 RAISE G_EXCEPTION_HALT_VALIDATION;
1749 END IF;
1750 CLOSE c_get_id1_id2;
1751 IF (x_object_id1_new IS NULL OR
1752 x_object_id1_new = OKL_API.G_MISS_CHAR) AND
1753 (x_object_id2_new IS NULL OR
1754 x_object_id2_new = OKL_API.G_MISS_CHAR) THEN
1755 OKL_API.set_message(p_app_name => G_APP_NAME,
1756 p_msg_name => G_NO_MATCHING_RECORD,
1757 p_token1 => G_COL_NAME_TOKEN,
1758 p_token1_value => 'OKX_PARTY_SITE_USES_V.ID1 and ID2');
1759 RAISE G_EXCEPTION_HALT_VALIDATION;
1760 ELSIF (x_object_id1_new IS NULL OR
1761 x_object_id1_new = OKL_API.G_MISS_CHAR) OR
1762 (x_object_id2_new IS NULL OR
1763 x_object_id2_new = OKL_API.G_MISS_CHAR) THEN
1764 OKL_API.set_message(p_app_name => G_APP_NAME,
1765 p_msg_name => G_NO_MATCHING_RECORD,
1766 p_token1 => G_COL_NAME_TOKEN,
1767 p_token1_value => 'OKX_PARTY_SITE_USES_V.ID1 and ID2');
1768 RAISE G_EXCEPTION_HALT_VALIDATION;
1769 END IF;
1770 RETURN x_return_status;
1771 EXCEPTION
1772 WHEN G_EXCEPTION_HALT_VALIDATION then
1773 -- If the cursor is open then it has to be closed
1774 x_return_status := OKL_API.G_RET_STS_ERROR;
1775 IF c_get_id1_id2%ISOPEN THEN
1776 CLOSE c_get_id1_id2;
1777 END IF;
1778 RETURN(x_return_status);
1779 WHEN OTHERS THEN
1780 -- store SQL error message on message stack for caller
1781 OKL_API.set_message(G_APP_NAME,
1782 G_UNEXPECTED_ERROR,
1783 G_SQLCODE_TOKEN,
1784 SQLCODE,
1785 G_SQLERRM_TOKEN,
1786 SQLERRM);
1787 -- notify caller of an UNEXPECTED error
1788 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1789 -- if the cursor is open
1790 IF c_get_id1_id2%ISOPEN THEN
1791 CLOSE c_get_id1_id2;
1792 END IF;
1793 RETURN(x_return_status);
1794 END get_party_site_id;
1795 ---------------------------------------------------------------------------------------------
1796 FUNCTION get_lse_id(p_lty_code IN OKC_LINE_STYLES_V.LTY_CODE%TYPE,
1797 x_lse_id OUT NOCOPY OKC_LINE_STYLES_V.ID%TYPE)
1798 RETURN VARCHAR2 IS
1799 x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1800
1801 CURSOR c_get_lse_id1(p_code OKC_LINE_STYLES_V.LTY_CODE%TYPE) IS
1802 SELECT lse.id
1803 FROM okc_subclass_top_line stl,
1804 okc_line_styles_b lse
1805 WHERE lse.lty_code = G_FIN_LINE_LTY_CODE
1806 AND lse.lse_parent_id is null
1807 AND lse.lse_type = G_TLS_TYPE
1808 AND lse.id = stl.lse_id
1809 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
1810
1811 CURSOR c_get_lse_id2(p_code OKC_LINE_STYLES_V.LTY_CODE%TYPE) IS
1812 SELECT lse1.id
1813 FROM okc_subclass_top_line stl,
1814 okc_line_styles_b lse2,
1815 okc_line_styles_b lse1
1816 WHERE lse1.lty_code = p_code
1817 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
1818 AND lse1.lse_parent_id = lse2.id
1819 AND lse2.id = stl.lse_id
1820 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
1821
1822 CURSOR c_get_lse_id3(p_code OKC_LINE_STYLES_V.LTY_CODE%TYPE,
1823 p_code2 OKC_LINE_STYLES_V.LTY_CODE%TYPE) IS
1824 SELECT lse1.id
1825 FROM okc_subclass_top_line stl,
1826 okc_line_styles_b lse3,
1827 okc_line_styles_b lse2,
1828 okc_line_styles_b lse1
1829 WHERE lse1.lty_code = p_code
1830 AND lse1.lse_parent_id = lse2.id
1831 AND lse2.lty_code = p_code2
1832 AND lse2.lse_parent_id = lse3.id
1833 AND lse3.lty_code = G_FIN_LINE_LTY_CODE
1834 AND lse3.id = stl.lse_id
1835 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
1836 BEGIN
1837 IF (p_lty_code IS NULL OR
1838 p_lty_code = OKL_API.G_MISS_CHAR) THEN
1839 OKL_API.set_message(p_app_name => G_APP_NAME,
1840 p_msg_name => G_REQUIRED_VALUE,
1841 p_token1 => G_COL_NAME_TOKEN,
1842 p_token1_value => 'OKC_LINE_STYLES_V.LSE_TYPE');
1843 x_return_status := OKL_API.G_RET_STS_ERROR;
1844 END IF;
1845 -- Top Line Line Style
1846 IF p_lty_code = G_FIN_LINE_LTY_CODE THEN
1847 OPEN c_get_lse_id1(p_lty_code);
1848 FETCH c_get_lse_id1 INTO x_lse_id;
1849 IF c_get_lse_id1%NOTFOUND THEN
1850 OKL_API.set_message(p_app_name => G_APP_NAME,
1851 p_msg_name => G_NO_MATCHING_RECORD,
1852 p_token1 => G_COL_NAME_TOKEN,
1853 p_token1_value => 'OKC_LINE_STYLES_V.ID');
1854 x_return_status := OKL_API.G_RET_STS_ERROR;
1855 END IF;
1856 CLOSE c_get_lse_id1;
1857 -- Model Line, Fixed Asset line and Instance line
1858 ELSIF p_lty_code IN (G_MODEL_LINE_LTY_CODE,G_FA_LINE_LTY_CODE,G_INST_LINE_LTY_CODE) THEN
1859 OPEN c_get_lse_id2(p_lty_code);
1860 FETCH c_get_lse_id2 INTO x_lse_id;
1861 IF c_get_lse_id2%NOTFOUND THEN
1862 OKL_API.set_message(p_app_name => G_APP_NAME,
1863 p_msg_name => G_NO_MATCHING_RECORD,
1864 p_token1 => G_COL_NAME_TOKEN,
1865 p_token1_value => 'OKC_LINE_STYLES_V.ID');
1866 x_return_status := OKL_API.G_RET_STS_ERROR;
1867 END IF;
1868 CLOSE c_get_lse_id2;
1869 -- Addon line and Install Base line
1870 ELSIF p_lty_code IN (G_IB_LINE_LTY_CODE,G_ADDON_LINE_LTY_CODE) THEN
1871 IF p_lty_code = G_IB_LINE_LTY_CODE THEN
1872 OPEN c_get_lse_id3(p_lty_code,
1873 G_INST_LINE_LTY_CODE);
1874 FETCH c_get_lse_id3 INTO x_lse_id;
1875 IF c_get_lse_id3%NOTFOUND THEN
1876 OKL_API.set_message(p_app_name => G_APP_NAME,
1877 p_msg_name => G_NO_MATCHING_RECORD,
1878 p_token1 => G_COL_NAME_TOKEN,
1879 p_token1_value => 'OKC_LINE_STYLES_V.ID');
1880 x_return_status := OKL_API.G_RET_STS_ERROR;
1881 END IF;
1882 CLOSE c_get_lse_id3;
1883 ELSIF p_lty_code = G_ADDON_LINE_LTY_CODE THEN
1884 OPEN c_get_lse_id3(p_lty_code,
1885 G_MODEL_LINE_LTY_CODE);
1886 FETCH c_get_lse_id3 INTO x_lse_id;
1887 IF c_get_lse_id3%NOTFOUND THEN
1888 OKL_API.set_message(p_app_name => G_APP_NAME,
1889 p_msg_name => G_NO_MATCHING_RECORD,
1890 p_token1 => G_COL_NAME_TOKEN,
1891 p_token1_value => 'OKC_LINE_STYLES_V.ID');
1892 x_return_status := OKL_API.G_RET_STS_ERROR;
1893 END IF;
1894 CLOSE c_get_lse_id3;
1895 END IF;
1896 ELSE
1897 x_return_status := OKL_API.G_RET_STS_ERROR;
1898 END IF;
1899 RETURN x_return_status;
1900 EXCEPTION
1901 WHEN OTHERS THEN
1902 -- store SQL error message on message stack for caller
1903 OKL_API.set_message(G_APP_NAME,
1904 G_UNEXPECTED_ERROR,
1905 G_SQLCODE_TOKEN,
1906 SQLCODE,
1907 G_SQLERRM_TOKEN,
1908 SQLERRM);
1909 -- notify caller of an UNEXPECTED error
1910 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1911 -- if the cursor is open
1912 IF c_get_lse_id1%ISOPEN THEN
1913 CLOSE c_get_lse_id1;
1914 END IF;
1915 IF c_get_lse_id2%ISOPEN THEN
1916 CLOSE c_get_lse_id2;
1917 END IF;
1918 IF c_get_lse_id3%ISOPEN THEN
1919 CLOSE c_get_lse_id3;
1920 END IF;
1921 RETURN(x_return_status);
1922 END get_lse_id;
1923 --------------------------------------------------------------------------------------------------
1924 FUNCTION get_try_id(p_try_name IN OKL_TRX_TYPES_V.NAME%TYPE,
1925 x_try_id OUT NOCOPY OKC_LINE_STYLES_V.ID%TYPE)
1926 RETURN VARCHAR2 IS
1927 x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1928 CURSOR c_get_try_id(p_try_name OKL_TRX_TYPES_V.NAME%TYPE) IS
1929 SELECT id
1930 FROM OKL_TRX_TYPES_tl
1931 WHERE upper(name) = upper(p_try_name)
1932 AND language = G_LANGUAGE;
1933 BEGIN
1934 IF (p_try_name = OKL_API.G_MISS_CHAR) OR
1935 (p_try_name IS NULL) THEN
1936 -- store SQL error message on message stack
1937 OKL_API.set_message(p_app_name => G_APP_NAME,
1938 p_msg_name => G_REQUIRED_VALUE,
1939 p_token1 => G_COL_NAME_TOKEN,
1940 p_token1_value => 'OKL_TRX_TYPES_V.NAME');
1941 -- halt validation as it is a required field
1942 RAISE G_EXCEPTION_STOP_VALIDATION;
1943 END IF;
1944 OPEN c_get_try_id(p_try_name);
1945 FETCH c_get_try_id INTO x_try_id;
1946 IF c_get_try_id%NOTFOUND THEN
1947 OKL_API.set_message(p_app_name => G_APP_NAME,
1948 p_msg_name => G_NO_MATCHING_RECORD,
1949 p_token1 => G_COL_NAME_TOKEN,
1950 p_token1_value => 'OKL_TRX_TYPES_V.ID');
1951 RAISE G_EXCEPTION_HALT_VALIDATION;
1952 END IF;
1953 CLOSE c_get_try_id;
1954 RETURN x_return_status;
1955 EXCEPTION
1956 WHEN G_EXCEPTION_STOP_VALIDATION then
1957 -- We are here since the field is required
1958 -- Notify Error
1959 x_return_status := OKL_API.G_RET_STS_ERROR;
1960 WHEN G_EXCEPTION_HALT_VALIDATION then
1961 -- We are here b'cause we have no parent record
1962 -- If the cursor is open then it has to be closed
1963 IF c_get_try_id%ISOPEN THEN
1964 CLOSE c_get_try_id;
1965 END IF;
1966 -- notify caller of an error
1967 x_return_status := OKL_API.G_RET_STS_ERROR;
1968 WHEN OTHERS THEN
1969 -- store SQL error message on message stack for caller
1970 OKL_API.set_message(G_APP_NAME,
1971 G_UNEXPECTED_ERROR,
1972 G_SQLCODE_TOKEN,
1973 SQLCODE,
1974 G_SQLERRM_TOKEN,
1975 SQLERRM);
1976 -- notify caller of an UNEXPECTED error
1977 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1978 -- if the cursor is open
1979 IF c_get_try_id%ISOPEN THEN
1980 CLOSE c_get_try_id;
1981 END IF;
1982 RETURN(x_return_status);
1983 END get_try_id;
1984 ------------------------------------------------------------------------------------------------------
1985 FUNCTION get_rec_clev(p_id IN OKC_K_LINES_V.ID%TYPE,
1986 x_clev_rec OUT NOCOPY clev_rec_type)
1987 RETURN VARCHAR2 IS
1988 CURSOR okc_clev_pk_csr (p_cle_id NUMBER) IS
1989 SELECT ID,
1990 OBJECT_VERSION_NUMBER,
1991 SFWT_FLAG,
1992 CHR_ID,
1993 CLE_ID,
1994 LSE_ID,
1995 LINE_NUMBER,
1996 STS_CODE,
1997 DISPLAY_SEQUENCE,
1998 TRN_CODE,
1999 DNZ_CHR_ID,
2000 COMMENTS,
2001 ITEM_DESCRIPTION,
2002 OKE_BOE_DESCRIPTION,
2003 COGNOMEN,
2004 HIDDEN_IND,
2005 PRICE_UNIT,
2006 PRICE_UNIT_PERCENT,
2007 PRICE_NEGOTIATED,
2008 PRICE_NEGOTIATED_RENEWED,
2009 PRICE_LEVEL_IND,
2010 INVOICE_LINE_LEVEL_IND,
2011 DPAS_RATING,
2012 BLOCK23TEXT,
2013 EXCEPTION_YN,
2014 TEMPLATE_USED,
2015 DATE_TERMINATED,
2016 NAME,
2017 START_DATE,
2018 END_DATE,
2019 DATE_RENEWED,
2020 UPG_ORIG_SYSTEM_REF,
2021 UPG_ORIG_SYSTEM_REF_ID,
2022 ORIG_SYSTEM_SOURCE_CODE,
2023 ORIG_SYSTEM_ID1,
2024 ORIG_SYSTEM_REFERENCE1,
2025 REQUEST_ID,
2026 PROGRAM_APPLICATION_ID,
2027 PROGRAM_ID,
2028 PROGRAM_UPDATE_DATE,
2029 PRICE_LIST_ID,
2030 PRICING_DATE,
2031 PRICE_LIST_LINE_ID,
2032 LINE_LIST_PRICE,
2033 ITEM_TO_PRICE_YN,
2034 PRICE_BASIS_YN,
2035 CONFIG_HEADER_ID,
2036 CONFIG_REVISION_NUMBER,
2037 CONFIG_COMPLETE_YN,
2038 CONFIG_VALID_YN,
2039 CONFIG_TOP_MODEL_LINE_ID,
2040 CONFIG_ITEM_TYPE,
2041 CONFIG_ITEM_ID ,
2042 ATTRIBUTE_CATEGORY,
2043 ATTRIBUTE1,
2044 ATTRIBUTE2,
2045 ATTRIBUTE3,
2046 ATTRIBUTE4,
2047 ATTRIBUTE5,
2048 ATTRIBUTE6,
2049 ATTRIBUTE7,
2050 ATTRIBUTE8,
2051 ATTRIBUTE9,
2052 ATTRIBUTE10,
2053 ATTRIBUTE11,
2054 ATTRIBUTE12,
2055 ATTRIBUTE13,
2056 ATTRIBUTE14,
2057 ATTRIBUTE15,
2058 CREATED_BY,
2059 CREATION_DATE,
2060 LAST_UPDATED_BY,
2061 LAST_UPDATE_DATE,
2062 PRICE_TYPE,
2063 CURRENCY_CODE,
2064 CURRENCY_CODE_RENEWED,
2065 LAST_UPDATE_LOGIN
2066 FROM Okc_K_Lines_V
2067 WHERE okc_k_lines_v.id = p_cle_id;
2068 l_okc_clev_pk okc_clev_pk_csr%ROWTYPE;
2069 x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
2070 BEGIN
2071 -- Get current database values
2072 OPEN okc_clev_pk_csr (p_id);
2073 FETCH okc_clev_pk_csr INTO
2074 x_clev_rec.ID,
2075 x_clev_rec.OBJECT_VERSION_NUMBER,
2076 x_clev_rec.SFWT_FLAG,
2077 x_clev_rec.CHR_ID,
2078 x_clev_rec.CLE_ID,
2079 x_clev_rec.LSE_ID,
2080 x_clev_rec.LINE_NUMBER,
2081 x_clev_rec.STS_CODE,
2082 x_clev_rec.DISPLAY_SEQUENCE,
2083 x_clev_rec.TRN_CODE,
2084 x_clev_rec.DNZ_CHR_ID,
2085 x_clev_rec.COMMENTS,
2086 x_clev_rec.ITEM_DESCRIPTION,
2087 x_clev_rec.OKE_BOE_DESCRIPTION,
2088 x_clev_rec.COGNOMEN,
2089 x_clev_rec.HIDDEN_IND,
2090 x_clev_rec.PRICE_UNIT,
2091 x_clev_rec.PRICE_UNIT_PERCENT,
2092 x_clev_rec.PRICE_NEGOTIATED,
2093 x_clev_rec.PRICE_NEGOTIATED_RENEWED,
2094 x_clev_rec.PRICE_LEVEL_IND,
2095 x_clev_rec.INVOICE_LINE_LEVEL_IND,
2096 x_clev_rec.DPAS_RATING,
2097 x_clev_rec.BLOCK23TEXT,
2098 x_clev_rec.EXCEPTION_YN,
2099 x_clev_rec.TEMPLATE_USED,
2100 x_clev_rec.DATE_TERMINATED,
2101 x_clev_rec.NAME,
2102 x_clev_rec.START_DATE,
2103 x_clev_rec.END_DATE,
2104 x_clev_rec.DATE_RENEWED,
2105 x_clev_rec.UPG_ORIG_SYSTEM_REF,
2106 x_clev_rec.UPG_ORIG_SYSTEM_REF_ID,
2107 x_clev_rec.ORIG_SYSTEM_SOURCE_CODE,
2108 x_clev_rec.ORIG_SYSTEM_ID1,
2109 x_clev_rec.ORIG_SYSTEM_REFERENCE1,
2110 x_clev_rec.request_id,
2111 x_clev_rec.program_application_id,
2112 x_clev_rec.program_id,
2113 x_clev_rec.program_update_date,
2114 x_clev_rec.price_list_id,
2115 x_clev_rec.pricing_date,
2116 x_clev_rec.price_list_line_id,
2117 x_clev_rec.line_list_price,
2118 x_clev_rec.item_to_price_yn,
2119 x_clev_rec.price_basis_yn,
2120 x_clev_rec.config_header_id,
2121 x_clev_rec.config_revision_number,
2122 x_clev_rec.config_complete_yn,
2123 x_clev_rec.config_valid_yn,
2124 x_clev_rec.config_top_model_line_id,
2125 x_clev_rec.config_item_type,
2126 x_clev_rec.CONFIG_ITEM_ID ,
2127 x_clev_rec.ATTRIBUTE_CATEGORY,
2128 x_clev_rec.ATTRIBUTE1,
2129 x_clev_rec.ATTRIBUTE2,
2130 x_clev_rec.ATTRIBUTE3,
2131 x_clev_rec.ATTRIBUTE4,
2132 x_clev_rec.ATTRIBUTE5,
2133 x_clev_rec.ATTRIBUTE6,
2134 x_clev_rec.ATTRIBUTE7,
2135 x_clev_rec.ATTRIBUTE8,
2136 x_clev_rec.ATTRIBUTE9,
2137 x_clev_rec.ATTRIBUTE10,
2138 x_clev_rec.ATTRIBUTE11,
2139 x_clev_rec.ATTRIBUTE12,
2140 x_clev_rec.ATTRIBUTE13,
2141 x_clev_rec.ATTRIBUTE14,
2142 x_clev_rec.ATTRIBUTE15,
2143 x_clev_rec.CREATED_BY,
2144 x_clev_rec.CREATION_DATE,
2145 x_clev_rec.LAST_UPDATED_BY,
2146 x_clev_rec.LAST_UPDATE_DATE,
2147 x_clev_rec.PRICE_TYPE,
2148 x_clev_rec.CURRENCY_CODE,
2149 x_clev_rec.CURRENCY_CODE_RENEWED,
2150 x_clev_rec.LAST_UPDATE_LOGIN;
2151 IF okc_clev_pk_csr%NOTFOUND THEN
2152 x_return_status := OKL_API.G_RET_STS_ERROR;
2153 END IF;
2154 CLOSE okc_clev_pk_csr;
2155 RETURN(x_return_status);
2156 EXCEPTION
2157 WHEN OTHERS THEN
2158 -- store SQL error message on message stack for caller
2159 OKL_API.set_message(G_APP_NAME,
2160 G_UNEXPECTED_ERROR,
2161 G_SQLCODE_TOKEN,
2162 SQLCODE,
2163 G_SQLERRM_TOKEN,
2164 SQLERRM);
2165 -- notify caller of an UNEXPECTED error
2166 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2167 -- if the cursor is open
2168 IF okc_clev_pk_csr%ISOPEN THEN
2169 CLOSE okc_clev_pk_csr;
2170 END IF;
2171 RETURN(x_return_status);
2172 END get_rec_clev;
2173 -----------------------------------------------------------------------------------------------
2174 FUNCTION get_rec_klev(p_id IN OKL_K_LINES_V.ID%TYPE,
2175 x_klev_rec OUT NOCOPY klev_rec_type)
2176 RETURN VARCHAR2 IS
2177 CURSOR okl_k_lines_v_pk_csr (p_kle_id OKL_K_LINES_V.ID%TYPE) IS
2178 SELECT ID,
2179 OBJECT_VERSION_NUMBER,
2180 KLE_ID,
2181 STY_ID,
2182 PRC_CODE,
2183 FCG_CODE,
2184 NTY_CODE,
2185 ESTIMATED_OEC,
2186 LAO_AMOUNT,
2187 TITLE_DATE,
2188 FEE_CHARGE,
2189 LRS_PERCENT,
2190 INITIAL_DIRECT_COST,
2191 PERCENT_STAKE,
2192 PERCENT,
2193 EVERGREEN_PERCENT,
2194 AMOUNT_STAKE,
2195 OCCUPANCY,
2196 COVERAGE,
2197 RESIDUAL_PERCENTAGE,
2198 DATE_LAST_INSPECTION,
2199 DATE_SOLD,
2200 LRV_AMOUNT,
2201 CAPITAL_REDUCTION,
2202 DATE_NEXT_INSPECTION_DUE,
2203 DATE_RESIDUAL_LAST_REVIEW,
2204 DATE_LAST_REAMORTISATION,
2205 VENDOR_ADVANCE_PAID,
2206 WEIGHTED_AVERAGE_LIFE,
2207 TRADEIN_AMOUNT,
2208 BOND_EQUIVALENT_YIELD,
2209 TERMINATION_PURCHASE_AMOUNT,
2210 REFINANCE_AMOUNT,
2211 YEAR_BUILT,
2212 DELIVERED_DATE,
2213 CREDIT_TENANT_YN,
2214 DATE_LAST_CLEANUP,
2215 YEAR_OF_MANUFACTURE,
2216 COVERAGE_RATIO,
2217 REMARKETED_AMOUNT,
2218 GROSS_SQUARE_FOOTAGE,
2219 PRESCRIBED_ASSET_YN,
2220 DATE_REMARKETED,
2221 NET_RENTABLE,
2222 REMARKET_MARGIN,
2223 DATE_LETTER_ACCEPTANCE,
2224 REPURCHASED_AMOUNT,
2225 DATE_COMMITMENT_EXPIRATION,
2226 DATE_REPURCHASED,
2227 DATE_APPRAISAL,
2228 RESIDUAL_VALUE,
2229 APPRAISAL_VALUE,
2230 SECURED_DEAL_YN,
2231 GAIN_LOSS,
2232 FLOOR_AMOUNT,
2233 RE_LEASE_YN,
2234 PREVIOUS_CONTRACT,
2235 TRACKED_RESIDUAL,
2236 DATE_TITLE_RECEIVED,
2237 AMOUNT,
2238 ATTRIBUTE_CATEGORY,
2239 ATTRIBUTE1,
2240 ATTRIBUTE2,
2241 ATTRIBUTE3,
2242 ATTRIBUTE4,
2243 ATTRIBUTE5,
2244 ATTRIBUTE6,
2245 ATTRIBUTE7,
2246 ATTRIBUTE8,
2247 ATTRIBUTE9,
2248 ATTRIBUTE10,
2249 ATTRIBUTE11,
2250 ATTRIBUTE12,
2251 ATTRIBUTE13,
2252 ATTRIBUTE14,
2253 ATTRIBUTE15,
2254 STY_ID_FOR,
2255 CLG_ID,
2256 CREATED_BY,
2257 CREATION_DATE,
2258 LAST_UPDATED_BY,
2259 LAST_UPDATE_DATE,
2260 LAST_UPDATE_LOGIN,
2261 DATE_FUNDING,
2262 DATE_FUNDING_REQUIRED,
2263 DATE_ACCEPTED,
2264 DATE_DELIVERY_EXPECTED,
2265 OEC,
2266 CAPITAL_AMOUNT,
2267 RESIDUAL_GRNTY_AMOUNT,
2268 RESIDUAL_CODE,
2269 RVI_PREMIUM,
2270 CREDIT_NATURE,
2271 CAPITALIZED_INTEREST,
2272 CAPITAL_REDUCTION_PERCENT,
2273 DATE_PAY_INVESTOR_START,
2274 PAY_INVESTOR_FREQUENCY,
2275 PAY_INVESTOR_EVENT,
2276 PAY_INVESTOR_REMITTANCE_DAYS,
2277 FEE_TYPE,
2278 SUBSIDY_ID,
2279 /* subsidy columns removed later, 09/26/2003
2280 SUBSIDIZED_OEC,
2281 SUBSIDIZED_CAP_AMOUNT,
2282 */
2283 PRE_TAX_YIELD,
2284 AFTER_TAX_YIELD,
2285 IMPLICIT_INTEREST_RATE,
2286 IMPLICIT_NON_IDC_INTEREST_RATE,
2287 PRE_TAX_IRR,
2288 AFTER_TAX_IRR,
2289 SUBSIDY_OVERRIDE_AMOUNT,
2290 SUB_PRE_TAX_YIELD,
2291 SUB_AFTER_TAX_YIELD,
2292 SUB_IMPL_INTEREST_RATE,
2293 SUB_IMPL_NON_IDC_INT_RATE,
2294 SUB_PRE_TAX_IRR,
2295 SUB_AFTER_TAX_IRR,
2296 --Bug# 2994971 :
2297 ITEM_INSURANCE_CATEGORY,
2298 --Bug# 3973640: 11.5.10 Schema changes
2299 QTE_ID,
2300 FUNDING_DATE,
2301 STREAM_TYPE_SUBCLASS
2302 -- ramurt Bug#4552772
2303 ,FEE_PURPOSE_CODE
2304 --Bug# 4631549
2305 ,EXPECTED_ASSET_COST
2306 --Bug# 5192636
2307 ,DOWN_PAYMENT_RECEIVER_CODE
2308 ,CAPITALIZE_DOWN_PAYMENT_YN
2309 --start NISINHA bug # 6490572
2310 ,MODEL_NUMBER
2311 ,MANUFACTURER_NAME
2312 --end NISINHA bug # 6490572
2313 FROM OKL_K_LINES_V
2314 WHERE OKL_K_LINES_V.id = p_kle_id;
2315 l_okl_k_lines_v_pk okl_k_lines_v_pk_csr%ROWTYPE;
2316 x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
2317 BEGIN
2318 -- Get current database values
2319 OPEN okl_k_lines_v_pk_csr (p_id);
2320 FETCH okl_k_lines_v_pk_csr INTO
2321 x_klev_rec.ID,
2322 x_klev_rec.OBJECT_VERSION_NUMBER,
2323 x_klev_rec.KLE_ID,
2324 x_klev_rec.STY_ID,
2325 x_klev_rec.PRC_CODE,
2326 x_klev_rec.FCG_CODE,
2327 x_klev_rec.NTY_CODE,
2328 x_klev_rec.ESTIMATED_OEC,
2329 x_klev_rec.LAO_AMOUNT,
2330 x_klev_rec.TITLE_DATE,
2331 x_klev_rec.FEE_CHARGE,
2332 x_klev_rec.LRS_PERCENT,
2333 x_klev_rec.INITIAL_DIRECT_COST,
2334 x_klev_rec.PERCENT_STAKE,
2335 x_klev_rec.PERCENT,
2336 x_klev_rec.EVERGREEN_PERCENT,
2337 x_klev_rec.AMOUNT_STAKE,
2338 x_klev_rec.OCCUPANCY,
2339 x_klev_rec.COVERAGE,
2340 x_klev_rec.RESIDUAL_PERCENTAGE,
2341 x_klev_rec.DATE_LAST_INSPECTION,
2342 x_klev_rec.DATE_SOLD,
2343 x_klev_rec.LRV_AMOUNT,
2344 x_klev_rec.CAPITAL_REDUCTION,
2345 x_klev_rec.DATE_NEXT_INSPECTION_DUE,
2346 x_klev_rec.DATE_RESIDUAL_LAST_REVIEW,
2347 x_klev_rec.DATE_LAST_REAMORTISATION,
2348 x_klev_rec.VENDOR_ADVANCE_PAID,
2349 x_klev_rec.WEIGHTED_AVERAGE_LIFE,
2350 x_klev_rec.TRADEIN_AMOUNT,
2351 x_klev_rec.BOND_EQUIVALENT_YIELD,
2352 x_klev_rec.TERMINATION_PURCHASE_AMOUNT,
2353 x_klev_rec.REFINANCE_AMOUNT,
2354 x_klev_rec.YEAR_BUILT,
2355 x_klev_rec.DELIVERED_DATE,
2356 x_klev_rec.CREDIT_TENANT_YN,
2357 x_klev_rec.DATE_LAST_CLEANUP,
2358 x_klev_rec.YEAR_OF_MANUFACTURE,
2359 x_klev_rec.COVERAGE_RATIO,
2360 x_klev_rec.REMARKETED_AMOUNT,
2361 x_klev_rec.GROSS_SQUARE_FOOTAGE,
2362 x_klev_rec.PRESCRIBED_ASSET_YN,
2363 x_klev_rec.DATE_REMARKETED,
2364 x_klev_rec.NET_RENTABLE,
2365 x_klev_rec.REMARKET_MARGIN,
2366 x_klev_rec.DATE_LETTER_ACCEPTANCE,
2367 x_klev_rec.REPURCHASED_AMOUNT,
2368 x_klev_rec.DATE_COMMITMENT_EXPIRATION,
2369 x_klev_rec.DATE_REPURCHASED,
2370 x_klev_rec.DATE_APPRAISAL,
2371 x_klev_rec.RESIDUAL_VALUE,
2372 x_klev_rec.APPRAISAL_VALUE,
2373 x_klev_rec.SECURED_DEAL_YN,
2374 x_klev_rec.GAIN_LOSS,
2375 x_klev_rec.FLOOR_AMOUNT,
2376 x_klev_rec.RE_LEASE_YN,
2377 x_klev_rec.PREVIOUS_CONTRACT,
2378 x_klev_rec.TRACKED_RESIDUAL,
2379 x_klev_rec.DATE_TITLE_RECEIVED,
2380 x_klev_rec.AMOUNT,
2381 x_klev_rec.ATTRIBUTE_CATEGORY,
2382 x_klev_rec.ATTRIBUTE1,
2383 x_klev_rec.ATTRIBUTE2,
2384 x_klev_rec.ATTRIBUTE3,
2385 x_klev_rec.ATTRIBUTE4,
2386 x_klev_rec.ATTRIBUTE5,
2387 x_klev_rec.ATTRIBUTE6,
2388 x_klev_rec.ATTRIBUTE7,
2389 x_klev_rec.ATTRIBUTE8,
2390 x_klev_rec.ATTRIBUTE9,
2391 x_klev_rec.ATTRIBUTE10,
2392 x_klev_rec.ATTRIBUTE11,
2393 x_klev_rec.ATTRIBUTE12,
2394 x_klev_rec.ATTRIBUTE13,
2395 x_klev_rec.ATTRIBUTE14,
2396 x_klev_rec.ATTRIBUTE15,
2397 x_klev_rec.STY_ID_FOR,
2398 x_klev_rec.CLG_ID,
2399 x_klev_rec.CREATED_BY,
2400 x_klev_rec.CREATION_DATE,
2401 x_klev_rec.LAST_UPDATED_BY,
2402 x_klev_rec.LAST_UPDATE_DATE,
2403 x_klev_rec.LAST_UPDATE_LOGIN,
2404 x_klev_rec.DATE_FUNDING,
2405 x_klev_rec.DATE_FUNDING_REQUIRED,
2406 x_klev_rec.DATE_ACCEPTED,
2407 x_klev_rec.DATE_DELIVERY_EXPECTED,
2408 x_klev_rec.OEC,
2409 x_klev_rec.CAPITAL_AMOUNT,
2410 x_klev_rec.RESIDUAL_GRNTY_AMOUNT,
2411 x_klev_rec.RESIDUAL_CODE,
2412 x_klev_rec.RVI_PREMIUM,
2413 x_klev_rec.CREDIT_NATURE,
2414 x_klev_rec.CAPITALIZED_INTEREST,
2415 x_klev_rec.CAPITAL_REDUCTION_PERCENT,
2416 x_klev_rec.DATE_PAY_INVESTOR_START,
2417 x_klev_rec.PAY_INVESTOR_FREQUENCY,
2418 x_klev_rec.PAY_INVESTOR_EVENT,
2419 x_klev_rec.PAY_INVESTOR_REMITTANCE_DAYS,
2420 x_klev_rec.FEE_TYPE,
2421 x_klev_rec.SUBSIDY_ID,
2422 /* subsidy colymns removed later, 09/26/2003
2423 x_klev_rec.SUBSIDIZED_OEC,
2424 x_klev_rec.SUBSIDIZED_CAP_AMOUNT,
2425 */
2426 x_klev_rec.PRE_TAX_YIELD,
2427 x_klev_rec.AFTER_TAX_YIELD,
2428 x_klev_rec.IMPLICIT_INTEREST_RATE,
2429 x_klev_rec.IMPLICIT_NON_IDC_INTEREST_RATE,
2430 x_klev_rec.PRE_TAX_IRR,
2431 x_klev_rec.AFTER_TAX_IRR,
2432 x_klev_rec.SUBSIDY_OVERRIDE_AMOUNT,
2433 x_klev_rec.SUB_PRE_TAX_YIELD,
2434 x_klev_rec.SUB_AFTER_TAX_YIELD,
2435 x_klev_rec.SUB_IMPL_INTEREST_RATE,
2436 x_klev_rec.SUB_IMPL_NON_IDC_INT_RATE,
2437 x_klev_rec.SUB_PRE_TAX_IRR,
2438 x_klev_rec.SUB_AFTER_TAX_IRR,
2439 --Bug# 2994971 :
2440 x_klev_rec.ITEM_INSURANCE_CATEGORY,
2441 --Bug# 3973640: 11.5.10 Schema changes
2442 x_klev_rec.QTE_ID,
2443 x_klev_rec.FUNDING_DATE,
2444 x_klev_rec.STREAM_TYPE_SUBCLASS
2445 --ramurt Bug#4552772
2446 ,x_klev_rec.FEE_PURPOSE_CODE
2447 --Bug# 4631549
2448 ,x_klev_rec.EXPECTED_ASSET_COST
2449 --Bug# 5192636
2450 ,x_klev_rec.DOWN_PAYMENT_RECEIVER_CODE
2451 ,x_klev_rec.CAPITALIZE_DOWN_PAYMENT_YN
2452 -- start NISINHA Bug# 6490572
2453 ,x_klev_rec.MODEL_NUMBER
2454 ,x_klev_rec.MANUFACTURER_NAME;
2455 --end NISINHA Bug # 6490572
2456
2457 IF okl_k_lines_v_pk_csr%NOTFOUND THEN
2458 x_return_status := OKL_API.G_RET_STS_ERROR;
2459 END IF;
2460 CLOSE okl_k_lines_v_pk_csr;
2461 RETURN(x_return_status);
2462 EXCEPTION
2463 WHEN OTHERS THEN
2464 -- store SQL error message on message stack for caller
2465 OKL_API.set_message(G_APP_NAME,
2466 G_UNEXPECTED_ERROR,
2467 G_SQLCODE_TOKEN,
2468 SQLCODE,
2469 G_SQLERRM_TOKEN,
2470 SQLERRM);
2471 -- notify caller of an UNEXPECTED error
2472 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2473 -- if the cursor is open
2474 IF okl_k_lines_v_pk_csr%ISOPEN THEN
2475 CLOSE okl_k_lines_v_pk_csr;
2476 END IF;
2477 RETURN(x_return_status);
2478 END get_rec_klev;
2479 -------------------------------------------------------------------------------------------------
2480 -- Start of Commnets
2481 -- Badrinath Kuchibholta
2482 -- Procedure Name : Validate_new_Ast_Num_update
2483 -- Description : Validate_new_Ast_Num_update
2484 -- Business Rules : Validate Asset_Number against OKL_TXL_ASSETS_B.ASSET_NUMBER
2485 -- ,as same should not exists in table
2486 -- Parameters : OUT Return Status, IN Rec Info
2487 -- Version : 1.0
2488 -- End of Commnets
2489 PROCEDURE validate_new_ast_num_update(x_return_status OUT NOCOPY VARCHAR2,
2490 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
2491 p_kle_Id IN OKL_TXL_ASSETS_V.KLE_ID%TYPE,
2492 p_dnz_chr_id IN OKC_K_HEADERS_B.ID%TYPE) IS
2493 ln_okl_txl_assets_v NUMBER := 0;
2494 ln_okx_assets_v NUMBER := 0;
2495 ln_okx_asset_lines_v NUMBER := 0;
2496 ln_okl_txd_assets_v NUMBER := 0;
2497 lv_source_code OKC_K_HEADERS_B.ORIG_SYSTEM_SOURCE_CODE%TYPE;
2498 lv_asset_source_code OKC_K_LINES_B.ORIG_SYSTEM_SOURCE_CODE%TYPE;
2499 lv_asset_number OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE;
2500 lv_release_asset OKC_RULES_V.RULE_INFORMATION1%TYPE := 'N';
2501 x_msg_count NUMBER;
2502 x_msg_data VARCHAR2(100);
2503
2504 CURSOR c_get_asset_number(p_kle_Id OKL_TXL_ASSETS_V.KLE_ID%TYPE)
2505 IS
2506 SELECT NAME
2507 FROM OKC_K_LINES_TL
2508 WHERE ID = (SELECT CLE_ID
2509 FROM OKC_K_LINES_B
2510 WHERE ID = p_kle_Id)
2511 AND language = USERENV('lang');
2512
2513 CURSOR c_txl_asset_number(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE,
2514 p_kle_Id OKL_TXL_ASSETS_V.KLE_ID%TYPE)
2515 IS
2516 SELECT 1
2517 --FROM DUAL
2518 --WHERE EXISTS (SELECT '1'
2519 FROM OKL_TXL_ASSETS_B
2520 WHERE asset_number = p_asset_number
2521 AND kle_id <> p_kle_id; --);
2522
2523 CURSOR c_okx_asset_lines_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2524 SELECT 1
2525 --FROM DUAL
2526 --WHERE EXISTS (SELECT '1'
2527 FROM OKX_ASSET_LINES_V
2528 WHERE asset_number = p_asset_number; --);
2529
2530 CURSOR c_okx_assets_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2531 SELECT 1
2532 --FROM DUAL
2533 --WHERE EXISTS (SELECT '1'
2534 FROM OKX_ASSETS_V
2535 WHERE asset_number = p_asset_number; --);
2536
2537 CURSOR c_txd_assets_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2538 SELECT 1
2539 --FROM DUAL
2540 --WHERE EXISTS (SELECT '1'
2541 FROM OKL_TRX_ASSETS TAS,
2542 OKL_TXL_ASSETS_V TXL,
2543 OKL_TXD_ASSETS_V TXD
2544 WHERE TXD.asset_number = p_asset_number
2545 AND TXD.TAL_ID = TXL.ID
2546 AND TXL.TAL_TYPE = 'ALI'
2547 AND TXL.TAS_ID = TAS.ID
2548 AND TAS.TSU_CODE = 'ENTERED'; --);
2549
2550 CURSOR c_source_code(p_kle_Id OKL_TXL_ASSETS_V.KLE_ID%TYPE) is
2551 SELECT nvl(chr.orig_system_source_code,'x')
2552 FROM okc_k_headers_b chr,
2553 okc_k_lines_b cle
2554 WHERE cle.id = p_kle_Id
2555 AND cle.dnz_chr_id = chr.id;
2556
2557 CURSOR c_check_release_asset(p_dnz_chr_id OKC_K_HEADERS_B.ID%TYPE) is
2558 SELECT RULE_INFORMATION1
2559 FROM OKC_RULES_V
2560 WHERE DNZ_CHR_ID = p_dnz_chr_id
2561 AND RULE_INFORMATION_CATEGORY = 'LARLES';
2562
2563 BEGIN
2564 -- initialize return status
2565 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2566 -- data is required
2567 IF (p_asset_number = OKL_API.G_MISS_CHAR) OR
2568 (p_asset_number IS NULL) THEN
2569 -- store SQL error message on message stack
2570 OKL_API.set_message(p_app_name => G_APP_NAME,
2571 p_msg_name => G_REQUIRED_VALUE,
2572 p_token1 => G_COL_NAME_TOKEN,
2573 p_token1_value => 'ASSET_NUMBER');
2574 -- halt validation as it is a required field
2575 RAISE G_EXCEPTION_STOP_VALIDATION;
2576 END IF;
2577
2578 -- Get the Release asset code from OKC_RULES_V
2579 OPEN c_check_release_asset(p_dnz_chr_id);
2580 FETCH c_check_release_asset into lv_release_asset;
2581 IF c_check_release_asset%NOTFOUND THEN
2582 lv_release_asset := 'N';
2583 /* x_return_status := OKL_API.G_RET_STS_ERROR;
2584 OKL_API.set_message(p_app_name => G_APP_NAME,
2585 p_msg_name => G_NO_MATCHING_RECORD,
2586 p_token1 => G_COL_NAME_TOKEN,
2587 p_token1_value => 'OKC_RULES_V.RULE_INFORMATION1');
2588 RAISE G_EXCEPTION_HALT_VALIDATION;*/
2589 END IF;
2590 CLOSE c_check_release_asset;
2591
2592 --
2593 -- Check whether asset residual value is securitized
2594 -- If so, do not allow release of the asset
2595 --
2596 IF (upper(lv_release_asset) = 'Y') THEN
2597 okl_transaction_pvt.check_contract_securitized(
2598 p_api_version => 1.0,
2599 p_init_msg_list => OKL_API.G_FALSE,
2600 x_return_status => x_return_status,
2601 x_msg_count => x_msg_count,
2602 x_msg_data => x_msg_data,
2603 p_chr_id => p_dnz_chr_id,
2604 p_cle_id => p_kle_id,
2605 p_stream_type_class => 'RESIDUAL',
2606 p_trx_date => SYSDATE
2607 );
2608
2609 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2610 OKL_API.set_message(p_app_name => G_APP_NAME,
2611 p_msg_name => 'OKL_LLA_ASSET_SECU_ERROR',
2612 p_token1 => 'ASSET_NUM',
2613 p_token1_value => p_asset_number
2614 );
2615
2616 x_return_status := OKL_API.G_RET_STS_ERROR;
2617 RETURN; -- no further processing
2618 END IF;
2619 END IF;
2620
2621 -- For released assets, we should not handle asset number validation.
2622 IF (upper(lv_release_asset) = 'N') THEN -- Start of release asset check
2623
2624 -- Get the asset number from the system
2625 OPEN c_get_asset_number(p_kle_id);
2626 FETCH c_get_asset_number into lv_asset_number;
2627 IF c_get_asset_number%NOTFOUND THEN
2628 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2629 END IF;
2630 CLOSE c_get_asset_number;
2631
2632 -- Check the asset number being changed
2633 IF (p_asset_number <> lv_asset_number) THEN -- Start of Asset number equality check
2634
2635 OPEN c_source_code(p_kle_id);
2636 FETCH c_source_code into lv_source_code;
2637 CLOSE c_source_code;
2638
2639 IF lv_source_code NOT IN ('OKL_REBOOK') THEN
2640 -- Enforce validation
2641 -- Validate if the Asset Number exists in OKL_TXL_ASSETS_B
2642 OPEN c_txl_asset_number(p_asset_number,
2643 p_kle_id);
2644 FETCH c_txl_asset_number into ln_okl_txl_assets_v;
2645 IF c_txl_asset_number%NOTFOUND THEN
2646 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2647 END IF;
2648 CLOSE c_txl_asset_number;
2649
2650 -- Validate if the Asset Number exists in OKX_ASSETS_V
2651 OPEN c_okx_assets_v(p_asset_number);
2652 FETCH c_okx_assets_v into ln_okx_assets_v;
2653 IF c_okx_assets_v%NOTFOUND THEN
2654 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2655 END IF;
2656 CLOSE c_okx_assets_v;
2657
2658 -- Validate if the Asset Number exists in OKX_ASSET_LINES_V
2659 OPEN c_okx_asset_lines_v(p_asset_number);
2660 FETCH c_okx_asset_lines_v into ln_okx_asset_lines_v;
2661 IF c_okx_asset_lines_v%NOTFOUND THEN
2662 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2663 END IF;
2664 CLOSE c_okx_asset_lines_v;
2665
2666 -- Validate if the Asset Number exists in OKL_TXD_ASSETS_V
2667 -- for Split Asset scenario.
2668 OPEN c_txd_assets_v(p_asset_number);
2669 FETCH c_txd_assets_v into ln_okl_txd_assets_v;
2670 IF c_txd_assets_v%NOTFOUND THEN
2671 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2672 END IF;
2673 CLOSE c_txd_assets_v;
2674
2675 ELSIF (lv_source_code = 'x' OR lv_source_code = OKL_API.G_MISS_CHAR)THEN
2676 -- Enforce validation
2677 -- Validate if the Asset Number exists in OKL_TXL_ASSETS_B
2678 OPEN c_txl_asset_number(p_asset_number,
2679 p_kle_id);
2680 FETCH c_txl_asset_number into ln_okl_txl_assets_v;
2681 IF c_txl_asset_number%NOTFOUND THEN
2682 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2683 END IF;
2684 CLOSE c_txl_asset_number;
2685
2686 -- Validate if the Asset Number exists in OKX_ASSETS_V
2687 OPEN c_okx_assets_v(p_asset_number);
2688 FETCH c_okx_assets_v into ln_okx_assets_v;
2689 IF c_okx_assets_v%NOTFOUND THEN
2690 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2691 END IF;
2692 CLOSE c_okx_assets_v;
2693
2694 -- Validate if the Asset Number exists in OKX_ASSET_LINES_V
2695 OPEN c_okx_asset_lines_v(p_asset_number);
2696 FETCH c_okx_asset_lines_v into ln_okx_asset_lines_v;
2697 IF c_okx_asset_lines_v%NOTFOUND THEN
2698 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2699 END IF;
2700 CLOSE c_okx_asset_lines_v;
2701
2702 -- Validate if the Asset Number exists in OKL_TXD_ASSETS_V
2703 -- for Split Asset scenario.
2704 OPEN c_txd_assets_v(p_asset_number);
2705 FETCH c_txd_assets_v into ln_okl_txd_assets_v;
2706 IF c_txd_assets_v%NOTFOUND THEN
2707 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2708 END IF;
2709 CLOSE c_txd_assets_v;
2710
2711 -- Since we have add this check only the cases if the asset number
2712 -- cannot be duplicate when created new fo re_book scenario
2713 ELSIF lv_source_code = 'OKL_REBOOK' THEN
2714 -- Validate if the Asset Number exists in OKL_TXL_ASSETS_V
2715 OPEN c_txl_asset_number(p_asset_number,
2716 p_kle_Id);
2717 FETCH c_txl_asset_number into ln_okl_txl_assets_v;
2718 IF c_txl_asset_number%NOTFOUND THEN
2719 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2720 END IF;
2721 CLOSE c_txl_asset_number;
2722
2723 -- Validate if the Asset Number exists in OKX_ASSETS_V
2724 OPEN c_okx_assets_v(p_asset_number);
2725 FETCH c_okx_assets_v into ln_okx_assets_v;
2726 IF c_okx_assets_v%NOTFOUND THEN
2727 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2728 END IF;
2729 CLOSE c_okx_assets_v;
2730
2731 -- Validate if the Asset Number exists in OKX_ASSET_LINES_V
2732 OPEN c_okx_asset_lines_v(p_asset_number);
2733 FETCH c_okx_asset_lines_v into ln_okx_asset_lines_v;
2734 IF c_okx_asset_lines_v%NOTFOUND THEN
2735 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2736 END IF;
2737 CLOSE c_okx_asset_lines_v;
2738
2739 -- Validate if the Asset Number exists in OKL_TXD_ASSETS_V
2740 -- for Split Asset scenario.
2741 OPEN c_txd_assets_v(p_asset_number);
2742 FETCH c_txd_assets_v into ln_okl_txd_assets_v;
2743 IF c_txd_assets_v%NOTFOUND THEN
2744 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2745 END IF;
2746 CLOSE c_txd_assets_v;
2747 END IF;
2748
2749 IF (ln_okl_txl_assets_v = 1) OR (ln_okx_assets_v = 1) OR
2750 (ln_okx_asset_lines_v = 1) OR (ln_okl_txd_assets_v = 1) THEN
2751 -- store SQL error message on message stack
2752 OKL_API.set_message(p_app_name => G_APP_NAME,
2753 p_msg_name => G_ASSET_NUMBER);
2754 RAISE G_EXCEPTION_HALT_VALIDATION;
2755 ELSIF (ln_okl_txl_assets_v = 1) AND (ln_okx_assets_v = 1) AND
2756 (ln_okx_asset_lines_v = 1) AND (ln_okl_txd_assets_v = 1) THEN
2757 -- store SQL error message on message stack
2758 OKL_API.set_message(p_app_name => G_APP_NAME,
2759 p_msg_name => G_ASSET_NUMBER);
2760 RAISE G_EXCEPTION_HALT_VALIDATION;
2761 END IF;
2762 END IF; -- End of Asset number equality check
2763 END IF; -- End of release asset check
2764 EXCEPTION
2765 WHEN G_EXCEPTION_STOP_VALIDATION then
2766 -- We are here since the field is required
2767 -- Notify Error
2768 -- We are here b'cause we have no parent record
2769 -- If the cursor is open then it has to be closed
2770 IF c_txl_asset_number%ISOPEN THEN
2771 CLOSE c_txl_asset_number;
2772 END IF;
2773 IF c_source_code%ISOPEN THEN
2774 CLOSE c_source_code;
2775 END IF;
2776 IF c_okx_assets_v%ISOPEN THEN
2777 CLOSE c_okx_assets_v;
2778 END IF;
2779 IF c_okx_asset_lines_v%ISOPEN THEN
2780 CLOSE c_okx_asset_lines_v;
2781 END IF;
2782 IF c_check_release_asset%ISOPEN THEN
2783 CLOSE c_check_release_asset;
2784 END IF;
2785
2786 x_return_status := OKL_API.G_RET_STS_ERROR;
2787 WHEN G_EXCEPTION_HALT_VALIDATION then
2788 -- We are here b'cause we have no parent record
2789 -- If the cursor is open then it has to be closed
2790 IF c_txl_asset_number%ISOPEN THEN
2791 CLOSE c_txl_asset_number;
2792 END IF;
2793 IF c_source_code%ISOPEN THEN
2794 CLOSE c_source_code;
2795 END IF;
2796 IF c_okx_assets_v%ISOPEN THEN
2797 CLOSE c_okx_assets_v;
2798 END IF;
2799 IF c_okx_asset_lines_v%ISOPEN THEN
2800 CLOSE c_okx_asset_lines_v;
2801 END IF;
2802 IF c_check_release_asset%ISOPEN THEN
2803 CLOSE c_check_release_asset;
2804 END IF;
2805
2806 -- notify caller of an error
2807 x_return_status := OKL_API.G_RET_STS_ERROR;
2808 WHEN OTHERS THEN
2809 -- store SQL error message on message stack
2810 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
2811 p_msg_name => G_UNEXPECTED_ERROR,
2812 p_token1 => G_SQLCODE_TOKEN,
2813 p_token1_value => SQLCODE,
2814 p_token2 => G_SQLERRM_TOKEN,
2815 p_token2_value => SQLERRM);
2816 -- If the cursor is open then it has to be closed
2817 IF c_txl_asset_number%ISOPEN THEN
2818 CLOSE c_txl_asset_number;
2819 END IF;
2820 IF c_source_code%ISOPEN THEN
2821 CLOSE c_source_code;
2822 END IF;
2823 IF c_okx_assets_v%ISOPEN THEN
2824 CLOSE c_okx_assets_v;
2825 END IF;
2826 IF c_okx_asset_lines_v%ISOPEN THEN
2827 CLOSE c_okx_asset_lines_v;
2828 END IF;
2829 IF c_check_release_asset%ISOPEN THEN
2830 CLOSE c_check_release_asset;
2831 END IF;
2832
2833 -- notify caller of an error as UNEXPETED error
2834 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2835 END validate_new_ast_num_update;
2836 -------------------------------------------------------------------------------------------------
2837 -- Start of Commnets
2838 -- Badrinath Kuchibholta
2839 -- Procedure Name : Validate_new_Asset_Number
2840 -- Description : Validation for new Asset Number
2841 -- Business Rules : Validate Asset_Number against OKL_TXL_ASSETS_B.ASSET_NUMBER
2842 -- ,as same should not exists in table
2843 -- Parameters : OUT Return Status, IN Rec Info
2844 -- Version : 1.0
2845 -- End of Commnets
2846 PROCEDURE validate_new_asset_number(x_return_status OUT NOCOPY VARCHAR2,
2847 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
2848 p_dnz_chr_id IN OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
2849 ln_okl_txl_assets_v NUMBER := 0;
2850 ln_okx_assets_v NUMBER := 0;
2851 ln_okx_asset_lines_v NUMBER := 0;
2852 ln_okl_txd_assets_v NUMBER := 0;
2853 lv_release_asset OKC_RULES_V.RULE_INFORMATION1%TYPE := 'N';
2854
2855 CURSOR c_txl_asset_number(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2856 SELECT 1
2857 --FROM DUAL
2858 --WHERE EXISTS (SELECT '1'
2859 FROM OKL_TXL_ASSETS_B
2860 WHERE asset_number = p_asset_number; --);
2861 /*CURSOR c_okx_asset_lines_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2862 SELECT 1
2863 --FROM DUAL
2864 --WHERE EXISTS (SELECT '1'
2865 FROM OKX_ASSET_LINES_V
2866 WHERE asset_number = p_asset_number; --); */
2867 CURSOR c_okx_asset_lines_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2868 SELECT 1
2869 FROM fa_additions a
2870 WHERE a.asset_number = p_asset_number
2871 and exists
2872 (
2873 select 1 from okc_k_items b
2874 where b.jtot_object1_code = 'OKX_ASSET'
2875 and b.object1_id1 = to_char(a.asset_id)
2876 );
2877
2878 CURSOR c_okx_assets_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2879 SELECT 1
2880 --FROM DUAL
2881 --WHERE EXISTS (SELECT '1'
2882 FROM OKX_ASSETS_V
2883 WHERE asset_number = p_asset_number; --);
2884
2885 CURSOR c_txd_assets_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2886 SELECT 1
2887 --FROM DUAL
2888 --WHERE EXISTS (SELECT '1'
2889 FROM OKL_TRX_ASSETS TAS,
2890 OKL_TXL_ASSETS_V TXL,
2891 OKL_TXD_ASSETS_V TXD
2892 WHERE TXD.asset_number = p_asset_number
2893 AND TXD.TAL_ID = TXL.ID
2894 AND TXL.TAL_TYPE = 'ALI'
2895 AND TXL.TAS_ID = TAS.ID
2896 AND TAS.TSU_CODE = 'ENTERED'; --);
2897
2898 CURSOR c_check_release_asset(p_dnz_chr_id IN OKC_K_LINES_V.DNZ_CHR_ID%TYPE) is
2899 SELECT RULE_INFORMATION1
2900 FROM OKC_RULES_V
2901 WHERE DNZ_CHR_ID = p_dnz_chr_id
2902 AND RULE_INFORMATION_CATEGORY = 'LARLES';
2903
2904 BEGIN
2905 -- initialize return status
2906 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2907 -- data is required
2908 IF (p_asset_number = OKL_API.G_MISS_CHAR) OR (p_asset_number IS NULL) THEN
2909 -- store SQL error message on message stack
2910 OKL_API.set_message(p_app_name => G_APP_NAME,
2911 p_msg_name => G_REQUIRED_VALUE,
2912 p_token1 => G_COL_NAME_TOKEN,
2913 p_token1_value => 'ASSET_NUMBER');
2914 -- halt validation as it is a required field
2915 RAISE G_EXCEPTION_STOP_VALIDATION;
2916 END IF;
2917
2918 IF (p_dnz_chr_id = OKL_API.G_MISS_NUM) OR (p_dnz_chr_id IS NULL) THEN
2919 -- store SQL error message on message stack
2920 OKL_API.set_message(p_app_name => G_APP_NAME,
2921 p_msg_name => G_REQUIRED_VALUE,
2922 p_token1 => G_COL_NAME_TOKEN,
2923 p_token1_value => 'DNZ_CHR_ID');
2924 -- halt validation as it is a required field
2925 RAISE G_EXCEPTION_STOP_VALIDATION;
2926 END IF;
2927
2928 -- Get the Release asset code from OKC_RULES_V
2929 OPEN c_check_release_asset(p_dnz_chr_id);
2930 FETCH c_check_release_asset into lv_release_asset;
2931 IF c_check_release_asset%NOTFOUND THEN
2932 lv_release_asset := 'N';
2933 /* x_return_status := OKL_API.G_RET_STS_ERROR;
2934 OKL_API.set_message(p_app_name => G_APP_NAME,
2935 p_msg_name => G_NO_MATCHING_RECORD,
2936 p_token1 => G_COL_NAME_TOKEN,
2937 p_token1_value => 'OKC_RULES_V.RULE_INFORMATION1');
2938 RAISE G_EXCEPTION_HALT_VALIDATION;*/
2939 END IF;
2940 CLOSE c_check_release_asset;
2941
2942 -- For released assets, we should not handle asset number validation.
2943 IF (upper(lv_release_asset) = 'N') THEN -- Start of release asset check
2944 -- Enforce validation
2945 -- Validate if the Asset Number exists in OKL_TXL_ASSETS_B
2946 OPEN c_txl_asset_number(p_asset_number);
2947 FETCH c_txl_asset_number into ln_okl_txl_assets_v;
2948 IF c_txl_asset_number%NOTFOUND THEN
2949 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2950 END IF;
2951 CLOSE c_txl_asset_number;
2952
2953 -- Validate if the Asset Number exists in OKX_ASSETS_V
2954 OPEN c_okx_assets_v(p_asset_number);
2955 FETCH c_okx_assets_v into ln_okx_assets_v;
2956 IF c_okx_assets_v%NOTFOUND THEN
2957 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2958 END IF;
2959 CLOSE c_okx_assets_v;
2960
2961 -- Validate if the Asset Number exists in OKX_ASSET_LINES_V
2962 OPEN c_okx_asset_lines_v(p_asset_number);
2963 FETCH c_okx_asset_lines_v into ln_okx_asset_lines_v;
2964 IF c_okx_asset_lines_v%NOTFOUND THEN
2965 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2966 END IF;
2967 CLOSE c_okx_asset_lines_v;
2968
2969 -- Validate if the Asset Number exists in OKL_TXD_ASSETS_V
2970 -- for Split Asset scenario.
2971 OPEN c_txd_assets_v(p_asset_number);
2972 FETCH c_txd_assets_v into ln_okl_txd_assets_v;
2973 IF c_txd_assets_v%NOTFOUND THEN
2974 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2975 END IF;
2976 CLOSE c_txd_assets_v;
2977
2978 IF (ln_okl_txl_assets_v = 1) OR (ln_okx_assets_v = 1) OR
2979 (ln_okx_asset_lines_v = 1) OR (ln_okl_txd_assets_v = 1) THEN
2980 -- store SQL error message on message stack
2981 OKL_API.set_message(p_app_name => G_APP_NAME,
2982 p_msg_name => G_ASSET_NUMBER);
2983 RAISE G_EXCEPTION_HALT_VALIDATION;
2984 ELSIF (ln_okl_txl_assets_v = 1) AND (ln_okx_assets_v = 1) AND
2985 (ln_okx_asset_lines_v = 1) AND (ln_okl_txd_assets_v = 1) THEN
2986 -- store SQL error message on message stack
2987 OKL_API.set_message(p_app_name => G_APP_NAME,
2988 p_msg_name => G_ASSET_NUMBER);
2989 RAISE G_EXCEPTION_HALT_VALIDATION;
2990 END IF;
2991 END IF;
2992 EXCEPTION
2993 WHEN G_EXCEPTION_STOP_VALIDATION then
2994 -- We are here since the field is required
2995 -- Notify Error
2996 x_return_status := OKL_API.G_RET_STS_ERROR;
2997 WHEN G_EXCEPTION_HALT_VALIDATION then
2998 -- We are here b'cause we have no parent record
2999 -- If the cursor is open then it has to be closed
3000 IF c_txl_asset_number%ISOPEN THEN
3001 CLOSE c_txl_asset_number;
3002 END IF;
3003 IF c_okx_assets_v%ISOPEN THEN
3004 CLOSE c_okx_assets_v;
3005 END IF;
3006 IF c_okx_asset_lines_v%ISOPEN THEN
3007 CLOSE c_okx_asset_lines_v;
3008 END IF;
3009 IF c_txd_assets_v%ISOPEN THEN
3010 CLOSE c_txd_assets_v;
3011 END IF;
3012 IF c_check_release_asset%ISOPEN THEN
3013 CLOSE c_check_release_asset;
3014 END IF;
3015
3016 -- notify caller of an error
3017 x_return_status := OKL_API.G_RET_STS_ERROR;
3018 WHEN OTHERS THEN
3019 -- store SQL error message on message stack
3020 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
3021 p_msg_name => G_UNEXPECTED_ERROR,
3022 p_token1 => G_SQLCODE_TOKEN,
3023 p_token1_value => SQLCODE,
3024 p_token2 => G_SQLERRM_TOKEN,
3025 p_token2_value => SQLERRM);
3026 -- If the cursor is open then it has to be closed
3027 IF c_txl_asset_number%ISOPEN THEN
3028 CLOSE c_txl_asset_number;
3029 END IF;
3030 IF c_okx_assets_v%ISOPEN THEN
3031 CLOSE c_okx_assets_v;
3032 END IF;
3033 IF c_okx_asset_lines_v%ISOPEN THEN
3034 CLOSE c_okx_asset_lines_v;
3035 END IF;
3036 IF c_txd_assets_v%ISOPEN THEN
3037 CLOSE c_txd_assets_v;
3038 END IF;
3039 IF c_check_release_asset%ISOPEN THEN
3040 CLOSE c_check_release_asset;
3041 END IF;
3042 -- notify caller of an error as UNEXPETED error
3043 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3044 END validate_new_asset_number;
3045 -------------------------------------------------------------------------------------------------
3046 -- Start of Commnets
3047 -- Badrinath Kuchibholta
3048 -- Procedure Name : Validate_asset_tax_book
3049 -- Description : Validation Asset tax Book
3050 -- Business Rules : Validate Asset_Number, tax_book and tal type should be unique
3051 -- Parameters : OUT Return Status, IN Rec Info
3052 -- Version : 1.0
3053 -- End of Commnets
3054 PROCEDURE Validate_asset_tax_book(x_return_status OUT NOCOPY VARCHAR2,
3055 p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE,
3056 p_tax_book OKL_TXD_ASSETS_B.TAX_BOOK%TYPE,
3057 p_tal_id OKL_TXL_ASSETS_B.ID%TYPE) IS
3058 ln_asset_lines_dtls NUMBER := 0;
3059 CURSOR c_asset_lines_dtls_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE,
3060 p_tax_book OKL_TXD_ASSETS_B.TAX_BOOK%TYPE,
3061 p_tal_id OKL_TXL_ASSETS_B.ID%TYPE) is
3062 SELECT 1
3063 --FROM DUAL
3064 --WHERE EXISTS (SELECT '1'
3065 FROM OKL_TXD_ASSETS_B txd,
3066 OKL_TXL_ASSETS_B txl
3067 WHERE txl.asset_number = p_asset_number
3068 AND txl.asset_number = txd.asset_number
3069 AND txl.tal_type IN ('CFA','CIB','CRB','CRL','CSP','CRV')
3070 AND txd.tal_id = txl.id
3071 AND txd.tal_id = p_tal_id
3072 AND txd.tax_book = p_tax_book; --);
3073 BEGIN
3074 -- initialize return status
3075 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3076 -- data is required
3077 IF (p_asset_number = OKL_API.G_MISS_CHAR OR
3078 p_asset_number IS NULL) OR
3079 (p_tal_id = OKL_API.G_MISS_NUM OR
3080 p_tal_id IS NULL) OR
3081 (p_tax_book = OKL_API.G_MISS_CHAR OR
3082 p_tax_book IS NULL) THEN
3083 -- store SQL error message on message stack
3084 OKL_API.set_message(p_app_name => G_APP_NAME,
3085 p_msg_name => G_REQUIRED_VALUE,
3086 p_token1 => G_COL_NAME_TOKEN,
3087 p_token1_value => 'ASSET_NUMBER ,TAX BOOK and TAL ID');
3088 -- halt validation as it is a required field
3089 RAISE G_EXCEPTION_STOP_VALIDATION;
3090 END IF;
3091 -- Enforce validation
3092 -- Validate if the Asset Number exists in OKX_ASSET_LINES_V
3093 OPEN c_asset_lines_dtls_v(p_asset_number => p_asset_number,
3094 p_tax_book => p_tax_book,
3095 p_tal_id => p_tal_id);
3096 FETCH c_asset_lines_dtls_v into ln_asset_lines_dtls;
3097 IF c_asset_lines_dtls_v%NOTFOUND THEN
3098 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3099 END IF;
3100 CLOSE c_asset_lines_dtls_v;
3101 IF (ln_asset_lines_dtls = 1) THEN
3102 -- store SQL error message on message stack
3103 OKL_API.set_message(p_app_name => G_APP_NAME,
3104 p_msg_name => G_ASSET_NUMBER);
3105 RAISE G_EXCEPTION_HALT_VALIDATION;
3106 END IF;
3107 EXCEPTION
3108 WHEN G_EXCEPTION_STOP_VALIDATION then
3109 -- We are here since the field is required
3110 -- Notify Error
3111 x_return_status := OKL_API.G_RET_STS_ERROR;
3112 WHEN G_EXCEPTION_HALT_VALIDATION then
3113 -- We are here b'cause we have no parent record
3114 -- If the cursor is open then it has to be closed
3115 IF c_asset_lines_dtls_v%ISOPEN THEN
3116 CLOSE c_asset_lines_dtls_v;
3117 END IF;
3118 -- notify caller of an error
3119 x_return_status := OKL_API.G_RET_STS_ERROR;
3120 WHEN OTHERS THEN
3121 -- store SQL error message on message stack
3122 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
3123 p_msg_name => G_UNEXPECTED_ERROR,
3124 p_token1 => G_SQLCODE_TOKEN,
3125 p_token1_value => SQLCODE,
3126 p_token2 => G_SQLERRM_TOKEN,
3127 p_token2_value => SQLERRM);
3128 -- If the cursor is open then it has to be closed
3129 IF c_asset_lines_dtls_v%ISOPEN THEN
3130 CLOSE c_asset_lines_dtls_v;
3131 END IF;
3132 -- notify caller of an error as UNEXPETED error
3133 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3134 END Validate_asset_tax_book;
3135 ----------------------------------------------------------------------------------------
3136 -- Start of Commnets
3137 -- Badrinath Kuchibholta
3138 -- Procedure Name : validate_instance_number_ib
3139 -- Description : validate_instance_number_ib
3140 -- Business Rules : Validate instance_number_ib against OKL_TXL_ITM_INSTS.INSTANCE_NUMBER_IB
3141 -- ,as same should not exists in table
3142 -- Parameters : OUT Return Status, IN Rec Info
3143 -- Version : 1.0
3144 -- End of Commnets
3145
3146 PROCEDURE validate_instance_number_ib(x_return_status OUT NOCOPY VARCHAR2,
3147 p_inst_num_ib IN OKL_TXL_ITM_INSTS.INSTANCE_NUMBER_IB%TYPE) IS
3148 ln_dummy number := 0;
3149 CURSOR c_inst_num_ib_validate(p_inst_ib OKL_TXL_ITM_INSTS.INSTANCE_NUMBER_IB%TYPE) is
3150 SELECT 1
3151 --FROM DUAL
3152 --WHERE EXISTS (SELECT '1'
3153 FROM OKL_TXL_ITM_INSTS
3154 WHERE instance_number_ib = p_inst_ib; --);
3155
3156 BEGIN
3157 -- initialize return status
3158 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3159 -- data is required
3160 IF (p_inst_num_ib = OKL_API.G_MISS_CHAR OR
3161 p_inst_num_ib IS NULL) THEN
3162 -- store SQL error message on message stack
3163 OKL_API.set_message(p_app_name => G_APP_NAME,
3164 p_msg_name => G_REQUIRED_VALUE,
3165 p_token1 => G_COL_NAME_TOKEN,
3166 p_token1_value => 'INSTANCE_NUMBER_IB');
3167 RAISE G_EXCEPTION_STOP_VALIDATION;
3168 END IF;
3169 -- Enforce validation
3170 OPEN c_inst_num_ib_validate(p_inst_num_ib);
3171 FETCH c_inst_num_ib_validate into ln_dummy;
3172 IF c_inst_num_ib_validate%NOTFOUND THEN
3173 -- Since no parent record existing in OKL_TXL_ITM_INSTS
3174 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3175 END IF;
3176 CLOSE c_inst_num_ib_validate;
3177 IF (ln_dummy = 1) THEN
3178 -- store SQL error message on message stack
3179 OKL_API.set_message(p_app_name => G_APP_NAME,
3180 p_msg_name => G_INSTALL_BASE_NUMBER);
3181 RAISE G_EXCEPTION_HALT_VALIDATION;
3182 END IF;
3183 EXCEPTION
3184 WHEN G_EXCEPTION_STOP_VALIDATION then
3185 -- We are here since the field is required
3186 -- Notify Error
3187 x_return_status := OKL_API.G_RET_STS_ERROR;
3188 WHEN G_EXCEPTION_HALT_VALIDATION then
3189 -- We are here b'cause we have no parent record
3190 -- store SQL error message on message stack
3191 -- If the cursor is open then it has to be closed
3192 IF c_inst_num_ib_validate%ISOPEN THEN
3193 CLOSE c_inst_num_ib_validate;
3194 END IF;
3195 -- notify caller of an error
3196 x_return_status := OKL_API.G_RET_STS_ERROR;
3197 WHEN OTHERS THEN
3198 -- store SQL error message on message stack
3199 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
3200 p_msg_name => G_UNEXPECTED_ERROR,
3201 p_token1 => G_SQLCODE_TOKEN,
3202 p_token1_value => SQLCODE,
3203 p_token2 => G_SQLERRM_TOKEN,
3204 p_token2_value => SQLERRM);
3205 -- If the cursor is open then it has to be closed
3206 IF c_inst_num_ib_validate%ISOPEN THEN
3207 CLOSE c_inst_num_ib_validate;
3208 END IF;
3209 -- notify caller of an error as UNEXPETED error
3210 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3211 END validate_instance_number_ib;
3212 ------------------------------------------------------------------------------------------------------------
3213 -- Start of Commnets
3214 -- Badrinath Kuchibholta
3215 -- Procedure Name : validate_lse_id
3216 -- Description : validation and get the lty_code
3217 -- with OKC_LINE_STYLES_V
3218 -- Business Rules :
3219 -- Parameters :
3220 -- Version : 1.0
3221 -- End of Commnets
3222 PROCEDURE validate_lse_id(p_clev_rec IN clev_rec_type,
3223 x_return_status OUT NOCOPY VARCHAR2,
3224 x_lty_code OUT NOCOPY OKC_LINE_STYLES_V.LTY_CODE%TYPE,
3225 x_lse_type OUT NOCOPY OKC_LINE_STYLES_V.LSE_TYPE%TYPE) IS
3226 CURSOR c_lse_id_validate(p_lse_id OKC_LINE_STYLES_V.ID%TYPE) IS
3227 SELECT lty_code,
3228 lse_type
3229 FROM OKC_LINE_STYLES_V
3230 WHERE id = p_lse_id;
3231 BEGIN
3232 -- initialize return status
3233 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3234 -- data is required
3235 IF (p_clev_rec.lse_id = OKL_API.G_MISS_NUM) OR
3236 (p_clev_rec.lse_id IS NULL) THEN
3237 -- store SQL error message on message stack
3238 OKL_API.set_message(p_app_name => G_APP_NAME,
3239 p_msg_name => G_REQUIRED_VALUE,
3240 p_token1 => G_COL_NAME_TOKEN,
3241 p_token1_value => 'OKC_K_LINES_V.LSE_ID');
3242 -- halt validation as it is a required field
3243 RAISE G_EXCEPTION_STOP_VALIDATION;
3244 END IF;
3245 -- Enforce Foreign Key
3246 OPEN c_lse_id_validate(p_clev_rec.lse_id);
3247 FETCH c_lse_id_validate into x_lty_code,
3248 x_lse_type;
3249 -- If there are no records then
3250 IF c_lse_id_validate%NOTFOUND THEN
3251 OKL_API.set_message(p_app_name => G_APP_NAME,
3252 p_msg_name => G_NO_MATCHING_RECORD,
3253 p_token1 => G_COL_NAME_TOKEN,
3254 p_token1_value => 'OKC_K_LINES_V.LSE_ID');
3255 -- halt validation as it has no parent record
3256 RAISE G_EXCEPTION_HALT_VALIDATION;
3257 END IF;
3258 CLOSE c_lse_id_validate;
3259 -- If we have null records coming up
3260 IF (x_lty_code = OKL_API.G_MISS_CHAR OR
3261 x_lty_code IS NULL) AND
3262 (x_lse_type = OKL_API.G_MISS_CHAR OR
3263 x_lse_type IS NULL) THEN
3264 OKL_API.set_message(p_app_name => G_APP_NAME,
3265 p_msg_name => G_NO_MATCHING_RECORD,
3266 p_token1 => G_COL_NAME_TOKEN,
3267 p_token1_value => 'OKC_K_LINES_V.LSE_ID');
3268 -- halt validation as it has no parent record
3269 RAISE G_EXCEPTION_HALT_VALIDATION;
3270 END IF;
3271 EXCEPTION
3272 WHEN G_EXCEPTION_STOP_VALIDATION then
3273 -- We are here since the field is required
3274 -- Notify Error
3275 x_return_status := OKL_API.G_RET_STS_ERROR;
3276 WHEN G_EXCEPTION_HALT_VALIDATION then
3277 -- If the cursor is open then it has to be closed
3278 IF c_lse_id_validate%ISOPEN THEN
3279 CLOSE c_lse_id_validate;
3280 END IF;
3281 x_return_status := OKL_API.G_RET_STS_ERROR;
3282 WHEN OTHERS THEN
3283 -- store SQL error message on message stack
3284 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
3285 p_msg_name => G_UNEXPECTED_ERROR,
3286 p_token1 => G_SQLCODE_TOKEN,
3287 p_token1_value => SQLCODE,
3288 p_token2 => G_SQLERRM_TOKEN,
3289 p_token2_value => SQLERRM);
3290 -- If the cursor is open then it has to be closed
3291 IF c_lse_id_validate%ISOPEN THEN
3292 CLOSE c_lse_id_validate;
3293 END IF;
3294 -- notify caller of an error as UNEXPETED error
3295 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3296 END validate_lse_id;
3297 ---------------------------------------------------------------------------------------------------
3298 -- Start of Commnets
3299 -- Badrinath Kuchibholta
3300 -- Procedure Name : validate_cle_lse_id
3301 -- Description : validation of the cle_id
3302 -- with OKC_k_LINES_V and Check if the line style is TLS
3303 -- Business Rules :
3304 -- Parameters :
3305 -- Version : 1.0
3306 -- End of Commnets
3307
3308 PROCEDURE validate_cle_lse_id(p_clev_rec IN clev_rec_type,
3309 p_lty_code IN OKC_LINE_STYLES_V.LTY_CODE%TYPE,
3310 x_lty_code OUT NOCOPY OKC_LINE_STYLES_V.LTY_CODE%TYPE,
3311 x_return_status OUT NOCOPY VARCHAR2) IS
3312 ln_cle_id OKC_K_LINES_V.ID%TYPE := 0;
3313 lv_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
3314 lv_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
3315
3316 CURSOR c_cle_id_validate(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE) IS
3317 SELECT lse.lty_code
3318 FROM OKC_K_LINES_V cle,
3319 OKC_LINE_STYLES_V lse
3320 WHERE cle.id = p_cle_id
3321 AND lse.id = cle.lse_id;
3322
3323 BEGIN
3324 -- initialize return status
3325 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3326 -- data is required
3327 IF (p_clev_rec.cle_id = OKL_API.G_MISS_NUM OR
3328 p_clev_rec.cle_id IS NULL) THEN
3329 OKL_API.set_message(p_app_name => G_APP_NAME,
3330 p_msg_name => G_REQUIRED_VALUE,
3331 p_token1 => G_COL_NAME_TOKEN,
3332 p_token1_value => 'OKC_K_LINES_V.CLE_ID');
3333 -- halt validation as it is a required field
3334 RAISE G_EXCEPTION_STOP_VALIDATION;
3335 END IF;
3336 -- check the valid id is there
3337 OPEN c_cle_id_validate(p_clev_rec.cle_id);
3338 IF c_cle_id_validate%NOTFOUND THEN
3339 OKL_API.set_message(p_app_name => G_APP_NAME,
3340 p_msg_name => G_NO_MATCHING_RECORD,
3341 p_token1 => G_COL_NAME_TOKEN,
3342 p_token1_value => 'OKC_K_LINES_V.CLE_ID');
3343 -- halt validation as it has no parent record
3344 RAISE G_EXCEPTION_HALT_VALIDATION;
3345 END IF;
3346 FETCH c_cle_id_validate into lv_lty_code;
3347 CLOSE c_cle_id_validate;
3348 --Business Rules
3349 IF p_lty_code = G_MODEL_LINE_LTY_CODE AND
3350 lv_lty_code = G_FIN_LINE_LTY_CODE THEN
3351 x_lty_code := lv_lty_code;
3352 ELSIF p_lty_code = G_ADDON_LINE_LTY_CODE AND
3353 lv_lty_code = G_MODEL_LINE_LTY_CODE THEN
3354 x_lty_code := lv_lty_code;
3355 ELSIF p_lty_code = G_FA_LINE_LTY_CODE AND
3356 lv_lty_code = G_FIN_LINE_LTY_CODE THEN
3357 x_lty_code := lv_lty_code;
3358 ELSIF p_lty_code = G_INST_LINE_LTY_CODE AND
3359 lv_lty_code = G_FIN_LINE_LTY_CODE THEN
3360 x_lty_code := lv_lty_code;
3361 ELSIF p_lty_code = G_IB_LINE_LTY_CODE AND
3362 lv_lty_code = G_INST_LINE_LTY_CODE THEN
3363 x_lty_code := lv_lty_code;
3364 ELSE
3365 OKL_API.set_message(p_app_name => G_APP_NAME,
3366 p_msg_name => G_LINE_STYLE);
3367 -- halt validation as it has invalid Value
3368 RAISE G_EXCEPTION_HALT_VALIDATION;
3369 END IF;
3370 EXCEPTION
3371 WHEN G_EXCEPTION_STOP_VALIDATION then
3372 -- We are here since the field is required
3373 -- store SQL error message on message stack
3374 -- Notify Error
3375 x_return_status := OKL_API.G_RET_STS_ERROR;
3376 WHEN G_EXCEPTION_HALT_VALIDATION then
3377 IF c_cle_id_validate%ISOPEN THEN
3378 -- halt validation as it has no parent record
3379 RAISE G_EXCEPTION_HALT_VALIDATION;
3380 END IF;
3381 x_return_status := OKL_API.G_RET_STS_ERROR;
3382 WHEN OTHERS THEN
3383 -- store SQL error message on message stack
3384 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
3385 p_msg_name => G_UNEXPECTED_ERROR,
3386 p_token1 => G_SQLCODE_TOKEN,
3387 p_token1_value => SQLCODE,
3388 p_token2 => G_SQLERRM_TOKEN,
3389 p_token2_value => SQLERRM);
3390 IF c_cle_id_validate%ISOPEN THEN
3391 -- halt validation as it has no parent record
3392 RAISE G_EXCEPTION_HALT_VALIDATION;
3393 END IF;
3394 -- notify caller of an error as UNEXPETED error
3395 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3396 END validate_cle_lse_id;
3397 ----------------------------------------------------------------------------------------------------
3398 -- Start of Commnets
3399 -- Badrinath Kuchibholta
3400 -- Procedure Name : validate_dnz_chr_id
3401 -- Description : validation with OKC_K_LINES_V
3402 -- Business Rules :
3403 -- Parameters :
3404 -- Version : 1.0
3405 -- End of Commnets
3406
3407 PROCEDURE validate_dnz_chr_id(p_clev_rec IN clev_rec_type,
3408 x_return_status OUT NOCOPY VARCHAR2) IS
3409 ln_dummy NUMBER := 0;
3410 CURSOR c_dnz_chr_id_validate(p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
3411 SELECT 1
3412 --FROM DUAL
3413 --WHERE EXISTS (SELECT 1
3414 FROM OKC_K_HEADERS_B chrv
3415 WHERE chrv.id = p_dnz_chr_id; --);
3416 BEGIN
3417 -- initialize return status
3418 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3419 -- data is required
3420 IF (p_clev_rec.dnz_chr_id = OKL_API.G_MISS_NUM) OR
3421 (p_clev_rec.dnz_chr_id IS NULL) THEN
3422 -- store SQL error message on message stack
3423 OKL_API.set_message(p_app_name => G_APP_NAME,
3424 p_msg_name => G_REQUIRED_VALUE,
3425 p_token1 => G_COL_NAME_TOKEN,
3426 p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID');
3427 -- halt validation as it is a required field
3428 RAISE G_EXCEPTION_STOP_VALIDATION;
3429 END IF;
3430 -- Enforce Foreign Key
3431 -- since we are creating a asset line
3432 -- we assume the cle_id will not null
3433 -- as the same is not top line and it will be sub line
3434 OPEN c_dnz_chr_id_validate(p_clev_rec.dnz_chr_id);
3435 IF c_dnz_chr_id_validate%NOTFOUND THEN
3436 OKL_API.set_message(p_app_name => G_APP_NAME,
3437 p_msg_name => G_NO_MATCHING_RECORD,
3438 p_token1 => G_COL_NAME_TOKEN,
3439 p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID');
3440 -- halt validation as it has no parent record
3441 RAISE G_EXCEPTION_HALT_VALIDATION;
3442 END IF;
3443 FETCH c_dnz_chr_id_validate into ln_dummy;
3444 CLOSE c_dnz_chr_id_validate;
3445 IF (ln_dummy = 0) THEN
3446 OKL_API.set_message(p_app_name => G_APP_NAME,
3447 p_msg_name => G_NO_MATCHING_RECORD,
3448 p_token1 => G_COL_NAME_TOKEN,
3449 p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID');
3450 -- halt validation as it has no parent record
3451 RAISE G_EXCEPTION_HALT_VALIDATION;
3452 END IF;
3453 EXCEPTION
3454 WHEN G_EXCEPTION_STOP_VALIDATION then
3455 -- We are here since the field is required
3456 -- Notify Error
3457 x_return_status := OKL_API.G_RET_STS_ERROR;
3458 WHEN G_EXCEPTION_HALT_VALIDATION then
3459 -- If the cursor is open then it has to be closed
3460 IF c_dnz_chr_id_validate%ISOPEN THEN
3461 CLOSE c_dnz_chr_id_validate;
3462 END IF;
3463 x_return_status := OKL_API.G_RET_STS_ERROR;
3464 WHEN OTHERS THEN
3465 -- store SQL error message on message stack
3466 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
3467 p_msg_name => G_UNEXPECTED_ERROR,
3468 p_token1 => G_SQLCODE_TOKEN,
3469 p_token1_value => SQLCODE,
3470 p_token2 => G_SQLERRM_TOKEN,
3471 p_token2_value => SQLERRM);
3472 -- If the cursor is open then it has to be closed
3473 IF c_dnz_chr_id_validate%ISOPEN THEN
3474 CLOSE c_dnz_chr_id_validate;
3475 END IF;
3476 -- notify caller of an error as UNEXPETED error
3477 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3478 END validate_dnz_chr_id;
3479 --------------------------------------------------------------------------------------------
3480 -- Start of Commnets
3481 -- Badrinath Kuchibholta
3482 -- Procedure Name : check_required_values
3483 -- Description : check_required_values
3484 -- Business Rules :
3485 -- Parameters :
3486 -- Version : 1.0
3487 -- End of Commnets
3488
3489 FUNCTION check_required_values(p_item1 IN OKC_K_ITEMS_V.OBJECT1_ID1%TYPE,
3490 p_item2 IN OKC_K_ITEMS_V.OBJECT1_ID2%TYPE,
3491 p_ast_no IN OKL_TXL_ASSETS_B.ASSET_NUMBER%TYPE,
3492 p_ast_desc IN OKL_TXL_ASSETS_TL.DESCRIPTION%TYPE,
3493 p_cost IN OKL_TXL_ASSETS_B.ORIGINAL_COST%TYPE,
3494 p_units IN OKC_K_ITEMS_V.NUMBER_OF_ITEMS%TYPE,
3495 p_ib_loc1 IN OKL_TXL_ITM_INSTS_V.OBJECT_ID1_NEW%TYPE,
3496 p_ib_loc2 IN OKL_TXL_ITM_INSTS_V.OBJECT_ID2_NEW%TYPE,
3497 p_fa_loc IN OKL_TXL_ASSETS_B.FA_LOCATION_ID%TYPE,
3498 p_refinance_amount IN OKL_K_LINES.REFINANCE_AMOUNT%TYPE,
3499 p_chr_id IN OKC_K_LINES_B.DNZ_CHR_ID%TYPE)
3500 RETURN VARCHAR2 IS
3501 x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
3502 ln_dummy NUMBER := 0;
3503 ln1_dummy NUMBER := 0;
3504 ln2_dummy NUMBER := 0;
3505 ln3_dummy NUMBER := p_units;
3506 lv_deal_type OKL_K_HEADERS_V.DEAL_TYPE%TYPE := null;
3507 lv_scs_code OKC_K_HEADERS_V.SCS_CODE%TYPE := null;
3508 --Bug# 4419339
3509 l_orig_system_source_code okc_k_headers_b.orig_system_source_code%TYPE;
3510 CURSOR get_deal_type(p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE)
3511 IS
3512 SELECT khr.deal_type,
3513 chr.scs_code,
3514 --Bug# 4419339
3515 chr.orig_system_source_code
3516 FROM OKL_K_HEADERS_V khr,
3517 OKC_K_HEADERS_B chr
3518 WHERE khr.id = p_dnz_chr_id
3519 AND chr.id = khr.id;
3520 BEGIN
3521 IF (p_chr_id <> OKL_API.G_MISS_NUM OR
3522 p_chr_id IS NOT NULL) THEN
3523 OPEN get_deal_type(p_dnz_chr_id => p_chr_id);
3524 FETCH get_deal_type into lv_deal_type,
3525 lv_scs_code,
3526 --Bug# 4419339
3527 l_orig_system_source_code;
3528 CLOSE get_deal_type;
3529 END IF;
3530 -- data is required
3531 IF (p_item1 = OKL_API.G_MISS_CHAR OR
3532 p_item1 IS NULL) THEN
3533 -- store SQL error message on message stack
3534 OKL_API.set_message(p_app_name => G_APP_NAME,
3535 p_msg_name => G_REQUIRED_VALUE,
3536 p_token1 => G_COL_NAME_TOKEN,
3537 p_token1_value => 'Item');
3538 -- halt validation as it is a required field
3539 RAISE G_EXCEPTION_STOP_VALIDATION;
3540 END IF;
3541 IF (p_item2 = OKL_API.G_MISS_CHAR OR
3542 p_item2 IS NULL) THEN
3543 -- store SQL error message on message stack
3544 OKL_API.set_message(p_app_name => G_APP_NAME,
3545 p_msg_name => G_REQUIRED_VALUE,
3546 p_token1 => G_COL_NAME_TOKEN,
3547 p_token1_value => 'Item');
3548 -- halt validation as it is a required field
3549 RAISE G_EXCEPTION_STOP_VALIDATION;
3550 END IF;
3551 IF (p_ast_no = OKL_API.G_MISS_CHAR OR
3552 p_ast_no IS NULL) THEN
3553 -- store SQL error message on message stack
3554 OKL_API.set_message(p_app_name => G_APP_NAME,
3555 p_msg_name => G_REQUIRED_VALUE,
3556 p_token1 => G_COL_NAME_TOKEN,
3557 p_token1_value => 'Asset Number');
3558 -- halt validation as it is a required field
3559 RAISE G_EXCEPTION_STOP_VALIDATION;
3560 END IF;
3561 IF (p_ast_desc = OKL_API.G_MISS_CHAR OR
3562 p_ast_desc IS NULL) THEN
3563 -- store SQL error message on message stack
3564 OKL_API.set_message(p_app_name => G_APP_NAME,
3565 p_msg_name => G_REQUIRED_VALUE,
3566 p_token1 => G_COL_NAME_TOKEN,
3567 p_token1_value => 'Description');
3568 -- halt validation as it is a required field
3569 RAISE G_EXCEPTION_STOP_VALIDATION;
3570 END IF;
3571 IF (p_cost = OKL_API.G_MISS_NUM OR
3572 p_cost IS NULL) THEN
3573 -- store SQL error message on message stack
3574 OKL_API.set_message(p_app_name => G_APP_NAME,
3575 p_msg_name => G_REQUIRED_VALUE,
3576 p_token1 => G_COL_NAME_TOKEN,
3577 p_token1_value => 'Unit Cost');
3578 -- halt validation as it is a required field
3579 RAISE G_EXCEPTION_STOP_VALIDATION;
3580 ELSE
3581 ln_dummy := sign(p_cost);
3582 IF ln_dummy = -1 THEN
3583 OKL_API.set_message(p_app_name => G_APP_NAME,
3584 p_msg_name => G_INVALID_VALUE,
3585 p_token1 => G_COL_NAME_TOKEN,
3586 p_token1_value => 'Unit Cost');
3587 -- halt validation as it is a required field
3588 RAISE G_EXCEPTION_STOP_VALIDATION;
3589 END IF;
3590 END IF;
3591 IF (ln3_dummy = OKL_API.G_MISS_NUM OR
3592 ln3_dummy IS NULL) THEN
3593 -- store SQL error message on message stack
3594 OKL_API.set_message(p_app_name => G_APP_NAME,
3595 p_msg_name => G_REQUIRED_VALUE,
3596 p_token1 => G_COL_NAME_TOKEN,
3597 p_token1_value => 'Units');
3598 -- halt validation as it is a required field
3599 RAISE G_EXCEPTION_STOP_VALIDATION;
3600 ELSE
3601 ln1_dummy := sign(p_units);
3602 IF ln1_dummy = -1 THEN
3603 OKL_API.set_message(p_app_name => G_APP_NAME,
3604 p_msg_name => G_INVALID_VALUE,
3605 p_token1 => G_COL_NAME_TOKEN,
3606 p_token1_value => 'Units');
3607 -- halt validation as it is a required field
3608 RAISE G_EXCEPTION_STOP_VALIDATION;
3609 END IF;
3610 ln2_dummy := instr(to_char(p_units),'.');
3611 IF ln2_dummy <> 0 THEN
3612 OKL_API.set_message(p_app_name => G_APP_NAME,
3613 p_msg_name => G_DECIMAL_VALUE,
3614 p_token1 => G_COL_NAME_TOKEN,
3615 p_token1_value => 'Units');
3616 -- halt validation as it is a required field
3617 RAISE G_EXCEPTION_STOP_VALIDATION;
3618 END IF;
3619 END IF;
3620 IF (p_ib_loc1 = OKL_API.G_MISS_CHAR OR
3621 p_ib_loc1 IS NULL) THEN
3622 -- store SQL error message on message stack
3623 OKL_API.set_message(p_app_name => G_APP_NAME,
3624 p_msg_name => G_REQUIRED_VALUE,
3625 p_token1 => G_COL_NAME_TOKEN,
3626 p_token1_value => 'Installed Site');
3627 -- halt validation as it is a required field
3628 RAISE G_EXCEPTION_STOP_VALIDATION;
3629 END IF;
3630 IF (p_ib_loc2 = OKL_API.G_MISS_CHAR OR
3631 p_ib_loc2 IS NULL) THEN
3632 -- store SQL error message on message stack
3633 OKL_API.set_message(p_app_name => G_APP_NAME,
3634 p_msg_name => G_REQUIRED_VALUE,
3635 p_token1 => G_COL_NAME_TOKEN,
3636 p_token1_value => 'Installed Site');
3637 -- halt validation as it is a required field
3638 RAISE G_EXCEPTION_STOP_VALIDATION;
3639 END IF;
3640 IF (p_fa_loc = OKL_API.G_MISS_NUM OR
3641 p_fa_loc IS NULL) AND lv_scs_code <> 'QUOTE' AND
3642 --Bug# 4419339
3643 nvl(l_orig_system_source_code,okl_api.g_miss_char) <> 'OKL_LEASE_APP' AND
3644 --Bug# 5098124 : Added condition for 'OKL_QUOTE'
3645 nvl(l_orig_system_source_code,okl_api.g_miss_char) <> 'OKL_QUOTE' THEN
3646 IF (lv_deal_type <> 'LOAN' AND (p_refinance_amount IS NULL OR
3647 p_refinance_amount = OKL_API.G_MISS_NUM)) THEN
3648 -- store SQL error message on message stack
3649 OKL_API.set_message(p_app_name => G_APP_NAME,
3650 p_msg_name => G_REQUIRED_VALUE,
3651 p_token1 => G_COL_NAME_TOKEN,
3652 p_token1_value => 'Fixed Asset Location');
3653 -- halt validation as it is a required field
3654 RAISE G_EXCEPTION_STOP_VALIDATION;
3655 END IF;
3656 END IF;
3657 RETURN(x_return_status);
3658 EXCEPTION
3659 WHEN G_EXCEPTION_STOP_VALIDATION then
3660 -- We are here since the field is required
3661 -- Notify Error
3662 x_return_status := OKL_API.G_RET_STS_ERROR;
3663 RETURN(x_return_status);
3664 WHEN OTHERS THEN
3665 OKL_API.set_message(p_app_name => G_APP_NAME,
3666 p_msg_name => 'Error Message from Required values');
3667 -- store SQL error message on message stack
3668 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
3669 p_msg_name => G_UNEXPECTED_ERROR,
3670 p_token1 => G_SQLCODE_TOKEN,
3671 p_token1_value => SQLCODE,
3672 p_token2 => G_SQLERRM_TOKEN,
3673 p_token2_value => SQLERRM);
3674 -- notify caller of an error as UNEXPETED error
3675 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3676 RETURN(x_return_status);
3677 END check_required_values;
3678 --------------------------------------------------------------------------------------------
3679 -- Start of Commnets
3680 -- Badrinath Kuchibholta
3681 -- Procedure Name : validate_kle_id
3682 -- Description : validation with OKL_TXL_ASSETS_V
3683 -- Business Rules :
3684 -- Parameters :
3685 -- Version : 1.0
3686 -- End of Commnets
3687
3688 PROCEDURE validate_kle_id(p_klev_rec IN klev_rec_type,
3689 x_record_exists OUT NOCOPY VARCHAR2,
3690 x_return_status OUT NOCOPY VARCHAR2) IS
3691 ln_dummy NUMBER := 0;
3692 CURSOR c_kle_id_validate(p_kle_id OKL_TXL_ASSETS_V.KLE_ID%TYPE) IS
3693 SELECT 1
3694 --FROM dual
3695 --WHERE EXISTS (SELECT '1'
3696 FROM OKL_TXL_ASSETS_V
3697 WHERE kle_id = p_kle_id; --);
3698 BEGIN
3699 -- initialize return status
3700 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3701 -- data is required
3702 IF (p_klev_rec.id = OKL_API.G_MISS_NUM) OR
3703 (p_klev_rec.id IS NULL) THEN
3704 -- store SQL error message on message stack
3705 OKL_API.set_message(p_app_name => G_APP_NAME,
3706 p_msg_name => G_REQUIRED_VALUE,
3707 p_token1 => G_COL_NAME_TOKEN,
3708 p_token1_value => 'OKL_TXL_ASSETS_V.KLE_ID');
3709 -- halt validation as it is a required field
3710 RAISE G_EXCEPTION_STOP_VALIDATION;
3711 END IF;
3712 -- Enforce Foreign Key
3713 OPEN c_kle_id_validate(p_klev_rec.id);
3714 FETCH c_kle_id_validate into ln_dummy;
3715 IF c_kle_id_validate%NOTFOUND THEN
3716 x_record_exists := null;
3717 END IF;
3718 CLOSE c_kle_id_validate;
3719 -- If there are no records then
3720 IF ln_dummy = 0 THEN
3721 x_record_exists := null;
3722 ELSE
3723 x_record_exists := 'X';
3724 END IF;
3725 EXCEPTION
3726 WHEN G_EXCEPTION_STOP_VALIDATION then
3727 -- We are here since the field is required
3728 -- Notify Error
3729 x_return_status := OKL_API.G_RET_STS_ERROR;
3730 WHEN OTHERS THEN
3731 -- store SQL error message on message stack
3732 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
3733 p_msg_name => G_UNEXPECTED_ERROR,
3734 p_token1 => G_SQLCODE_TOKEN,
3735 p_token1_value => SQLCODE,
3736 p_token2 => G_SQLERRM_TOKEN,
3737 p_token2_value => SQLERRM);
3738 -- If the cursor is open then it has to be closed
3739 IF c_kle_id_validate%ISOPEN THEN
3740 CLOSE c_kle_id_validate;
3741 END IF;
3742 -- notify caller of an error as UNEXPETED error
3743 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3744 END validate_kle_id;
3745 --------------------------------------------------------------------------------------------------
3746 -- Start of Commnets
3747 -- Badrinath Kuchibholta
3748 -- Procedure Name : validate_iti_kle_id
3749 -- Description : validation with OKL_TXL_ITM_INSTS_V
3750 -- Business Rules :
3751 -- Parameters :
3752 -- Version : 1.0
3753 -- End of Commnets
3754
3755 PROCEDURE validate_iti_kle_id(p_klev_rec IN klev_rec_type,
3756 x_record_exists OUT NOCOPY VARCHAR2,
3757 x_return_status OUT NOCOPY VARCHAR2) IS
3758 ln_dummy NUMBER := 0;
3759 CURSOR c_iti_kle_id_validate(p_kle_id OKL_TXL_ITM_INSTS_V.KLE_ID%TYPE) IS
3760 SELECT 1
3761 --FROM dual
3762 --WHERE EXISTS (SELECT '1'
3763 FROM OKL_TXL_ITM_INSTS_V
3764 WHERE kle_id = p_kle_id; --);
3765 BEGIN
3766 -- initialize return status
3767 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3768 -- data is required
3769 IF (p_klev_rec.id = OKL_API.G_MISS_NUM) OR
3770 (p_klev_rec.id IS NULL) THEN
3771 -- store SQL error message on message stack
3772 OKL_API.set_message(p_app_name => G_APP_NAME,
3773 p_msg_name => G_REQUIRED_VALUE,
3774 p_token1 => G_COL_NAME_TOKEN,
3775 p_token1_value => 'OKL_TXL_ITM_INSTS_V.KLE_ID');
3776 -- halt validation as it is a required field
3777 RAISE G_EXCEPTION_STOP_VALIDATION;
3778 END IF;
3779 -- Enforce Foreign Key
3780 OPEN c_iti_kle_id_validate(p_klev_rec.id);
3781 FETCH c_iti_kle_id_validate into ln_dummy;
3782 IF c_iti_kle_id_validate%NOTFOUND THEN
3783 x_record_exists := null;
3784 END IF;
3785 CLOSE c_iti_kle_id_validate;
3786 -- If there are no records then
3787 IF ln_dummy = 0 THEN
3788 x_record_exists := null;
3789 ELSE
3790 x_record_exists := 'X';
3791 END IF;
3792 EXCEPTION
3793 WHEN G_EXCEPTION_STOP_VALIDATION then
3794 -- We are here since the field is required
3795 -- Notify Error
3796 x_return_status := OKL_API.G_RET_STS_ERROR;
3797 WHEN OTHERS THEN
3798 -- store SQL error message on message stack
3799 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
3800 p_msg_name => G_UNEXPECTED_ERROR,
3801 p_token1 => G_SQLCODE_TOKEN,
3802 p_token1_value => SQLCODE,
3803 p_token2 => G_SQLERRM_TOKEN,
3804 p_token2_value => SQLERRM);
3805 -- If the cursor is open then it has to be closed
3806 IF c_iti_kle_id_validate%ISOPEN THEN
3807 CLOSE c_iti_kle_id_validate;
3808 END IF;
3809 -- notify caller of an error as UNEXPETED error
3810 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3811 END validate_iti_kle_id;
3812 ----------------------------------------------------------------------------------------------------
3813 -- Start of Commnets
3814 -- Badrinath Kuchibholta
3815 -- Procedure Name : validate_sts_code
3816 -- Description : validation with OKC_K_LINES_V
3817 -- Business Rules :
3818 -- Parameters :
3819 -- Version : 1.0
3820 -- End of Commnets
3821
3822 PROCEDURE validate_sts_code(p_clev_rec IN clev_rec_type,
3823 x_return_status OUT NOCOPY VARCHAR2) IS
3824
3825 lv_sts_code OKC_K_LINES_V.STS_CODE%TYPE;
3826 lv_lty_code OKC_LINE_STYLES_V.lty_CODE%TYPE;
3827
3828 CURSOR c_lty_code_validate(p_lse_id OKC_LINE_STYLES_B.ID%TYPE) IS
3829 SELECT lse.lty_code
3830 FROM OKC_LINE_STYLES_V lse
3831 WHERE lse.id = p_lse_id;
3832
3833 CURSOR c_sub_sub_line_sts_code(p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
3834 p_cle_id OKC_K_LINES_V.ID%TYPE,
3835 p_lty_code OKC_LINE_STYLES_V.lty_CODE%TYPE) IS
3836 SELECT cle.sts_code
3837 FROM OKC_K_LINES_V cle
3838 WHERE cle.id in (SELECT cle.cle_id
3839 FROM OKC_K_LINES_V cle
3840 WHERE id in (SELECT cle.cle_id
3841 FROM OKC_LINE_STYLES_V lse,
3842 OKC_K_LINES_V cle
3843 WHERE dnz_chr_id = p_dnz_chr_id
3844 AND cle.lse_id = lse.id
3845 AND cle.id = p_cle_id
3846 AND lse.lty_code = p_lty_code));
3847
3848 CURSOR c_sub_line_sts_code(p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
3849 p_cle_id OKC_K_LINES_V.ID%TYPE,
3850 p_lty_code OKC_LINE_STYLES_V.lty_CODE%TYPE) IS
3851 SELECT cle.sts_code
3852 FROM OKC_K_LINES_V cle
3853 WHERE id in (SELECT cle.cle_id
3854 FROM OKC_LINE_STYLES_V lse,
3855 OKC_K_LINES_V cle
3856 WHERE dnz_chr_id = p_dnz_chr_id
3857 AND cle.lse_id = lse.id
3858 AND cle.id = p_cle_id
3859 AND lse.lty_code = p_lty_code);
3860
3861 CURSOR c_top_line_sts_code(p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
3862 p_cle_id OKC_K_LINES_V.ID%TYPE,
3863 p_chr_id OKC_K_LINES_V.CHR_ID%TYPE) IS
3864 SELECT cle.sts_code
3865 FROM OKC_K_LINES_V cle
3866 WHERE cle.dnz_chr_id = p_dnz_chr_id
3867 AND cle.cle_id is null
3868 AND cle.id = p_cle_id
3869 AND cle.chr_id = p_chr_id;
3870 BEGIN
3871 -- initialize return status
3872 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3873 IF (p_clev_rec.sts_code = OKL_API.G_MISS_CHAR OR
3874 p_clev_rec.sts_code IS NULL) THEN
3875 -- store SQL error message on message stack
3876 OKL_API.set_message(p_app_name => G_APP_NAME,
3877 p_msg_name => G_REQUIRED_VALUE,
3878 p_token1 => G_COL_NAME_TOKEN,
3879 p_token1_value => 'OKC_K_LINES_V.STS_CODE');
3880 -- halt validation as it is a required field
3881 RAISE G_EXCEPTION_STOP_VALIDATION;
3882 END IF;
3883 -- First Get the Lty _code we are going to validate
3884 OPEN c_lty_code_validate(p_clev_rec.lse_id);
3885 IF c_lty_code_validate%NOTFOUND THEN
3886 OKL_API.set_message(p_app_name => G_APP_NAME,
3887 p_msg_name => G_NO_MATCHING_RECORD,
3888 p_token1 => G_COL_NAME_TOKEN,
3889 p_token1_value => 'OKC_LINE_STYLE_V.LTY_CODE');
3890 -- halt validation as it is a required field
3891 RAISE G_EXCEPTION_HALT_VALIDATION;
3892 END IF;
3893 FETCH c_lty_code_validate INTO lv_lty_code;
3894 CLOSE c_lty_code_validate;
3895 -- Depending on the lty code query the appropriate query
3896 IF lv_lty_code = G_ADDON_LINE_LTY_CODE OR
3897 lv_lty_code = G_IB_LINE_LTY_CODE THEN
3898 OPEN c_sub_sub_line_sts_code(p_clev_rec.dnz_chr_id,
3899 p_clev_rec.id,
3900 lv_lty_code);
3901 IF c_sub_sub_line_sts_code%NOTFOUND THEN
3902 OKL_API.set_message(p_app_name => G_APP_NAME,
3903 p_msg_name => G_NO_MATCHING_RECORD,
3904 p_token1 => G_COL_NAME_TOKEN,
3905 p_token1_value => 'OKC_K_LINES_V.STS_CODE');
3906 -- halt validation as it is a required field
3907 RAISE G_EXCEPTION_HALT_VALIDATION;
3908 END IF;
3909 FETCH c_sub_sub_line_sts_code INTO lv_sts_code;
3910 CLOSE c_sub_sub_line_sts_code;
3911 ELSIF lv_lty_code = G_MODEL_LINE_LTY_CODE OR
3912 lv_lty_code = G_FA_LINE_LTY_CODE OR
3913 lv_lty_code = G_INST_LINE_LTY_CODE THEN
3914 OPEN c_sub_line_sts_code(p_clev_rec.dnz_chr_id,
3915 p_clev_rec.id,
3916 lv_lty_code);
3917 IF c_sub_line_sts_code%NOTFOUND THEN
3918 OKL_API.set_message(p_app_name => G_APP_NAME,
3919 p_msg_name => G_NO_MATCHING_RECORD,
3920 p_token1 => G_COL_NAME_TOKEN,
3921 p_token1_value => 'OKC_K_LINES_V.STS_CODE');
3922 -- halt validation as it is a required field
3923 RAISE G_EXCEPTION_HALT_VALIDATION;
3924 END IF;
3925 FETCH c_sub_line_sts_code INTO lv_sts_code;
3926 CLOSE c_sub_line_sts_code;
3927 ELSIF lv_lty_code = G_FIN_LINE_LTY_CODE THEN
3928 OPEN c_top_line_sts_code(p_clev_rec.dnz_chr_id,
3929 p_clev_rec.id,
3930 p_clev_rec.chr_id);
3931 IF c_top_line_sts_code%NOTFOUND THEN
3932 OKL_API.set_message(p_app_name => G_APP_NAME,
3933 p_msg_name => G_NO_MATCHING_RECORD,
3934 p_token1 => G_COL_NAME_TOKEN,
3935 p_token1_value => 'OKC_K_LINES_V.STS_CODE');
3936 -- halt validation as it is a required field
3937 RAISE G_EXCEPTION_HALT_VALIDATION;
3938 END IF;
3939 FETCH c_top_line_sts_code INTO lv_sts_code;
3940 CLOSE c_top_line_sts_code;
3941 END IF;
3942 -- Check the Sts code is entered only
3943 IF lv_sts_code NOT IN ('ENTERED',
3944 'SIGNED',
3945 'ACTIVE',
3946 'HOLD',
3947 'NEW',
3948 'PENDING_APPROVAL',
3949 'APPROVED',
3950 'COMPLETE',
3951 'INCOMPLETE',
3952 'PASSED') THEN
3953 OKL_API.set_message(p_app_name => G_APP_NAME,
3954 p_msg_name => G_STATUS,
3955 p_token1 => 'STATUS',
3956 p_token1_value => lv_sts_code);
3957 -- halt validation as it is a required field
3958 RAISE G_EXCEPTION_HALT_VALIDATION;
3959 END IF;
3960 EXCEPTION
3961 WHEN G_EXCEPTION_STOP_VALIDATION then
3962 -- We are here since the field is required
3963 -- Notify Error
3964 x_return_status := OKL_API.G_RET_STS_ERROR;
3965 WHEN G_EXCEPTION_HALT_VALIDATION then
3966 -- If the cursor is open then it has to be closed
3967 IF c_lty_code_validate%ISOPEN THEN
3968 CLOSE c_lty_code_validate;
3969 END IF;
3970 -- If the cursor is open then it has to be closed
3971 IF c_sub_sub_line_sts_code%ISOPEN THEN
3972 CLOSE c_sub_sub_line_sts_code;
3973 END IF;
3974 -- If the cursor is open then it has to be closed
3975 IF c_sub_line_sts_code%ISOPEN THEN
3976 CLOSE c_sub_line_sts_code;
3977 END IF;
3978 -- If the cursor is open then it has to be closed
3979 IF c_top_line_sts_code%ISOPEN THEN
3980 CLOSE c_top_line_sts_code;
3981 END IF;
3982 x_return_status := OKL_API.G_RET_STS_ERROR;
3983 WHEN OTHERS THEN
3984 -- store SQL error message on message stack
3985 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
3986 p_msg_name => G_UNEXPECTED_ERROR,
3987 p_token1 => G_SQLCODE_TOKEN,
3988 p_token1_value => SQLCODE,
3989 p_token2 => G_SQLERRM_TOKEN,
3990 p_token2_value => SQLERRM);
3991 -- If the cursor is open then it has to be closed
3992 IF c_lty_code_validate%ISOPEN THEN
3993 CLOSE c_lty_code_validate;
3994 END IF;
3995 -- If the cursor is open then it has to be closed
3996 IF c_sub_sub_line_sts_code%ISOPEN THEN
3997 CLOSE c_sub_sub_line_sts_code;
3998 END IF;
3999 -- If the cursor is open then it has to be closed
4000 IF c_sub_line_sts_code%ISOPEN THEN
4001 CLOSE c_sub_line_sts_code;
4002 END IF;
4003 -- If the cursor is open then it has to be closed
4004 IF c_top_line_sts_code%ISOPEN THEN
4005 CLOSE c_top_line_sts_code;
4006 END IF;
4007 -- notify caller of an error as UNEXPETED error
4008 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
4009 END validate_sts_code;
4010 ----------------------------------------------------------------------------------------------------------
4011 PROCEDURE Create_asset_header(
4012 p_api_version IN NUMBER,
4013 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4014 x_return_status OUT NOCOPY VARCHAR2,
4015 x_msg_count OUT NOCOPY NUMBER,
4016 x_msg_data OUT NOCOPY VARCHAR2,
4017 p_trxv_rec IN trxv_rec_type,
4018 x_trxv_rec OUT NOCOPY trxv_rec_type) IS
4019 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_TRX_ASSET_HEADER';
4020 BEGIN
4021 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4022 -- Call start_activity to create savepoint, check compatibility
4023 -- and initialize message list
4024 x_return_status := OKL_API.START_ACTIVITY (
4025 l_api_name
4026 ,p_init_msg_list
4027 ,'_PVT'
4028 ,x_return_status);
4029 -- Check if activity started successfully
4030 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4031 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4032 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4033 RAISE OKL_API.G_EXCEPTION_ERROR;
4034 END IF;
4035 -- evaluate conditions, build outcomes for true conditions and
4036 -- put them on outcome queue
4037 OKL_TRX_ASSETS_PUB.create_trx_ass_h_def(
4038 p_api_version => p_api_version,
4039 p_init_msg_list => p_init_msg_list,
4040 x_return_status => x_return_status,
4041 x_msg_count => x_msg_count,
4042 x_msg_data => x_msg_data,
4043 p_thpv_rec => p_trxv_rec,
4044 x_thpv_rec => x_trxv_rec);
4045 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4046 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4047 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4048 RAISE OKL_API.G_EXCEPTION_ERROR;
4049 END IF;
4050 OKL_API.END_ACTIVITY (x_msg_count,
4051 x_msg_data );
4052 EXCEPTION
4053 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4054 OKL_API.set_message(p_app_name => G_APP_NAME,
4055 p_msg_name => G_TRX_ID);
4056 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4057 l_api_name,
4058 G_PKG_NAME,
4059 'OKL_API.G_RET_STS_ERROR',
4060 x_msg_count,
4061 x_msg_data,
4062 '_PVT');
4063 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4064 OKL_API.set_message(p_app_name => G_APP_NAME,
4065 p_msg_name => G_TRX_ID);
4066 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4067 l_api_name,
4068 G_PKG_NAME,
4069 'OKL_API.G_RET_STS_UNEXP_ERROR',
4070 x_msg_count,
4071 x_msg_data,
4072 '_PVT');
4073 WHEN OTHERS THEN
4074 OKL_API.set_message(p_app_name => G_APP_NAME,
4075 p_msg_name => G_TRX_ID);
4076 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4077 l_api_name,
4078 G_PKG_NAME,
4079 'OTHERS',
4080 x_msg_count,
4081 x_msg_data,
4082 '_PVT');
4083 END Create_asset_header;
4084 --------------------------------------------------------------------------------------------------
4085 -- Local Procedures for Update of Header record
4086 -- Incase where the error condition should be updated
4087 PROCEDURE Update_asset_header(
4088 p_api_version IN NUMBER,
4089 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4090 x_return_status OUT NOCOPY VARCHAR2,
4091 x_msg_count OUT NOCOPY NUMBER,
4092 x_msg_data OUT NOCOPY VARCHAR2,
4093 p_trxv_rec IN trxv_rec_type,
4094 x_trxv_rec OUT NOCOPY trxv_rec_type) IS
4095 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_TRX_ASSET_HEADER';
4096 BEGIN
4097 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4098 -- Call start_activity to create savepoint, check compatibility
4099 -- and initialize message list
4100 x_return_status := OKL_API.START_ACTIVITY (
4101 l_api_name
4102 ,p_init_msg_list
4103 ,'_PVT'
4104 ,x_return_status);
4105 -- Check if activity started successfully
4106 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4107 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4108 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4109 RAISE OKL_API.G_EXCEPTION_ERROR;
4110 END IF;
4111 -- evaluate conditions, build outcomes for true conditions and
4112 -- put them on outcome queue
4113 OKL_TRX_ASSETS_PUB.update_trx_ass_h_def(
4114 p_api_version => p_api_version,
4115 p_init_msg_list => p_init_msg_list,
4116 x_return_status => x_return_status,
4117 x_msg_count => x_msg_count,
4118 x_msg_data => x_msg_data,
4119 p_thpv_rec => p_trxv_rec,
4120 x_thpv_rec => x_trxv_rec);
4121 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4122 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4123 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4124 RAISE OKL_API.G_EXCEPTION_ERROR;
4125 END IF;
4126 OKL_API.END_ACTIVITY (x_msg_count,
4127 x_msg_data );
4128 EXCEPTION
4129 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4130 OKL_API.set_message(p_app_name => G_APP_NAME,
4131 p_msg_name => G_TRX_ID);
4132 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4133 l_api_name,
4134 G_PKG_NAME,
4135 'OKL_API.G_RET_STS_ERROR',
4136 x_msg_count,
4137 x_msg_data,
4138 '_PVT');
4139 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4140 OKL_API.set_message(p_app_name => G_APP_NAME,
4141 p_msg_name => G_TRX_ID);
4142 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4143 l_api_name,
4144 G_PKG_NAME,
4145 'OKL_API.G_RET_STS_UNEXP_ERROR',
4146 x_msg_count,
4147 x_msg_data,
4148 '_PVT');
4149 WHEN OTHERS THEN
4150 OKL_API.set_message(p_app_name => G_APP_NAME,
4151 p_msg_name => G_TRX_ID);
4152 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4153 l_api_name,
4154 G_PKG_NAME,
4155 'OTHERS',
4156 x_msg_count,
4157 x_msg_data,
4158 '_PVT');
4159 END Update_asset_header;
4160 ------------------------------------------------------------------------------------------------------
4161 PROCEDURE Create_asset_lines(
4162 p_api_version IN NUMBER,
4163 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4164 x_return_status OUT NOCOPY VARCHAR2,
4165 x_msg_count OUT NOCOPY NUMBER,
4166 x_msg_data OUT NOCOPY VARCHAR2,
4167 p_talv_rec IN talv_rec_type,
4168 x_trxv_rec OUT NOCOPY trxv_rec_type,
4169 x_talv_rec OUT NOCOPY talv_rec_type) IS
4170 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_TXL_ASSET_LINE';
4171 l_trxv_rec trxv_rec_type;
4172 l_talv_rec talv_rec_type;
4173
4174 --Added by dpsingh for LE uptake
4175 l_cntrct_number OKC_K_HEADERS_B.CONTRACT_NUMBER%TYPE;
4176 l_legal_entity_id NUMBER;
4177
4178 BEGIN
4179 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4180 -- Call start_activity to create savepoint, check compatibility
4181 -- and initialize message list
4182 x_return_status := OKL_API.START_ACTIVITY (
4183 l_api_name
4184 ,p_init_msg_list
4185 ,'_PVT'
4186 ,x_return_status);
4187 -- Check if activity started successfully
4188 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4189 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4190 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4191 RAISE OKL_API.G_EXCEPTION_ERROR;
4192 END IF;
4193 -- Create New Header record and new Line record
4194 -- Before creating Header record
4195 -- we should make sure atleast the required record is given
4196 l_trxv_rec.tas_type := 'CFA';
4197 x_return_status := get_try_id(p_try_name => G_TRY_NAME,
4198 x_try_id => l_trxv_rec.try_id);
4199 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4200 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4201 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4202 RAISE OKL_API.G_EXCEPTION_ERROR;
4203 END IF;
4204 l_trxv_rec.tsu_code := 'ENTERED';
4205 l_trxv_rec.date_trans_occurred := sysdate;
4206
4207 --Added by dpsingh for LE Uptake
4208
4209 l_legal_entity_id := OKL_LEGAL_ENTITY_UTIL.get_khr_le_id(p_talv_rec.dnz_khr_id) ;
4210 IF l_legal_entity_id IS NOT NULL THEN
4211 l_trxv_rec.legal_entity_id := l_legal_entity_id;
4212 ELSE
4213 -- get the contract number
4214 OPEN contract_num_csr(p_talv_rec.dnz_khr_id);
4215 FETCH contract_num_csr INTO l_cntrct_number;
4216 CLOSE contract_num_csr;
4217 Okl_Api.set_message(p_app_name => g_app_name,
4218 p_msg_name => 'OKL_LE_NOT_EXIST_CNTRCT',
4219 p_token1 => 'CONTRACT_NUMBER',
4220 p_token1_value => l_cntrct_number);
4221 RAISE OKL_API.G_EXCEPTION_ERROR;
4222 END IF;
4223 -- Now creating the new header record
4224 Create_asset_header(p_api_version => p_api_version,
4225 p_init_msg_list => p_init_msg_list,
4226 x_return_status => x_return_status,
4227 x_msg_count => x_msg_count,
4228 x_msg_data => x_msg_data,
4229 p_trxv_rec => l_trxv_rec,
4230 x_trxv_rec => x_trxv_rec);
4231 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4232 l_trxv_rec := x_trxv_rec;
4233 l_trxv_rec.tsu_code := 'ERROR';
4234 Update_asset_header(p_api_version => p_api_version,
4235 p_init_msg_list => p_init_msg_list,
4236 x_return_status => x_return_status,
4237 x_msg_count => x_msg_count,
4238 x_msg_data => x_msg_data,
4239 p_trxv_rec => l_trxv_rec,
4240 x_trxv_rec => x_trxv_rec);
4241 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4242 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4243 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4244 RAISE OKL_API.G_EXCEPTION_ERROR;
4245 END IF;
4246 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4247 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4248 l_trxv_rec := x_trxv_rec;
4249 l_trxv_rec.tsu_code := 'ERROR';
4250 Update_asset_header(p_api_version => p_api_version,
4251 p_init_msg_list => p_init_msg_list,
4252 x_return_status => x_return_status,
4253 x_msg_count => x_msg_count,
4254 x_msg_data => x_msg_data,
4255 p_trxv_rec => l_trxv_rec,
4256 x_trxv_rec => x_trxv_rec);
4257 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4258 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4259 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4260 RAISE OKL_API.G_EXCEPTION_ERROR;
4261 END IF;
4262 RAISE OKL_API.G_EXCEPTION_ERROR;
4263 END IF;
4264 -- Now we are creating the new line record
4265 l_talv_rec := p_talv_rec;
4266 l_talv_rec.tas_id := x_trxv_rec.id;
4267 IF (l_talv_rec.tal_type = OKL_API.G_MISS_CHAR OR
4268 l_talv_rec.tal_type IS NUll) THEN
4269 l_talv_rec.tal_type := 'CFA';
4270 END IF;
4271 IF (l_talv_rec.line_number = OKL_API.G_MISS_NUM OR
4272 l_talv_rec.line_number IS NUll) THEN
4273 l_talv_rec.line_number := 1;
4274 ELSE
4275 l_talv_rec.line_number := l_talv_rec.line_number + 1;
4276 END IF;
4277 IF (l_talv_rec.description = OKL_API.G_MISS_CHAR OR
4278 l_talv_rec.description IS NUll) THEN
4279 l_talv_rec.description := 'CREATION OF FIXED ASSETS' ;
4280 END IF;
4281 -- evaluate conditions, build outcomes for true conditions and
4282 -- put them on outcome queue
4283 OKL_TXL_ASSETS_PUB.create_txl_asset_def(
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_tlpv_rec => l_talv_rec,
4290 x_tlpv_rec => x_talv_rec);
4291 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4292 OKL_API.set_message(p_app_name => G_APP_NAME,
4293 p_msg_name => G_KLE_ID);
4294 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4295 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4296 OKL_API.set_message(p_app_name => G_APP_NAME,
4297 p_msg_name => G_KLE_ID);
4298 RAISE OKL_API.G_EXCEPTION_ERROR;
4299 END IF;
4300 OKL_API.END_ACTIVITY (x_msg_count,
4301 x_msg_data );
4302 EXCEPTION
4303 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4304 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4305 l_api_name,
4306 G_PKG_NAME,
4307 'OKL_API.G_RET_STS_ERROR',
4308 x_msg_count,
4309 x_msg_data,
4310 '_PVT');
4311 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4312 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4313 l_api_name,
4314 G_PKG_NAME,
4315 'OKL_API.G_RET_STS_UNEXP_ERROR',
4316 x_msg_count,
4317 x_msg_data,
4318 '_PVT');
4319 WHEN OTHERS THEN
4320 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4321 l_api_name,
4322 G_PKG_NAME,
4323 'OTHERS',
4324 x_msg_count,
4325 x_msg_data,
4326 '_PVT');
4327 END Create_asset_lines;
4328 -------------------------------------------------------------------------------------------------------------------
4329 -- Local Procedures for update of line record
4330 PROCEDURE Update_asset_lines(
4331 p_api_version IN NUMBER,
4332 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4333 x_return_status OUT NOCOPY VARCHAR2,
4334 x_msg_count OUT NOCOPY NUMBER,
4335 x_msg_data OUT NOCOPY VARCHAR2,
4336 p_talv_rec IN talv_rec_type,
4337 x_talv_rec OUT NOCOPY talv_rec_type) IS
4338 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_TXL_ASSET_LINE';
4339 BEGIN
4340 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4341 -- Call start_activity to create savepoint, check compatibility
4342 -- and initialize message list
4343 x_return_status := OKL_API.START_ACTIVITY (
4344 l_api_name
4345 ,p_init_msg_list
4346 ,'_PVT'
4347 ,x_return_status);
4348 -- Check if activity started successfully
4349 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4350 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4351 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4352 RAISE OKL_API.G_EXCEPTION_ERROR;
4353 END IF;
4354 -- evaluate conditions, build outcomes for true conditions and
4355 -- put them on outcome queue
4356 OKL_TXL_ASSETS_PUB.update_txl_asset_def(
4357 p_api_version => p_api_version,
4358 p_init_msg_list => p_init_msg_list,
4359 x_return_status => x_return_status,
4360 x_msg_count => x_msg_count,
4361 x_msg_data => x_msg_data,
4362 p_tlpv_rec => p_talv_rec,
4363 x_tlpv_rec => x_talv_rec);
4364 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4365 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4366 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4367 RAISE OKL_API.G_EXCEPTION_ERROR;
4368 END IF;
4369 OKL_API.END_ACTIVITY (x_msg_count,
4370 x_msg_data );
4371 EXCEPTION
4372 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4373 OKL_API.set_message(p_app_name => G_APP_NAME,
4374 p_msg_name => G_KLE_ID);
4375 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4376 l_api_name,
4377 G_PKG_NAME,
4378 'OKL_API.G_RET_STS_ERROR',
4379 x_msg_count,
4380 x_msg_data,
4381 '_PVT');
4382 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4383 OKL_API.set_message(p_app_name => G_APP_NAME,
4384 p_msg_name => G_KLE_ID);
4385 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4386 l_api_name,
4387 G_PKG_NAME,
4388 'OKL_API.G_RET_STS_UNEXP_ERROR',
4389 x_msg_count,
4390 x_msg_data,
4391 '_PVT');
4392 WHEN OTHERS THEN
4393 OKL_API.set_message(p_app_name => G_APP_NAME,
4394 p_msg_name => G_KLE_ID);
4395 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4396 l_api_name,
4397 G_PKG_NAME,
4398 'OTHERS',
4399 x_msg_count,
4400 x_msg_data,
4401 '_PVT');
4402 END Update_asset_lines;
4403
4404 -------------------------------------------------------------------------------------------------
4405 -- Start of Commnets
4406 -- Badrinath Kuchibholta
4407 -- Procedure Name : Create_asset_line_details
4408 -- Description : Creation of asset_line_details
4409 -- Business Rules :
4410 -- Parameters :
4411 -- Version :
4412 -- End of Commnets
4413 PROCEDURE Create_asset_line_details(
4414 p_api_version IN NUMBER,
4415 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4416 x_return_status OUT NOCOPY VARCHAR2,
4417 x_msg_count OUT NOCOPY NUMBER,
4418 x_msg_data OUT NOCOPY VARCHAR2,
4419 p_txdv_tbl IN txdv_tbl_type,
4420 x_txdv_tbl OUT NOCOPY txdv_tbl_type)
4421 IS
4422 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_TXD_ASSET_DTL';
4423 i NUMBER := 0;
4424 l_txdv_tbl txdv_tbl_type := p_txdv_tbl;
4425 BEGIN
4426 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4427 -- Call start_activity to create savepoint, check compatibility
4428 -- and initialize message list
4429 x_return_status := OKL_API.START_ACTIVITY (
4430 l_api_name
4431 ,p_init_msg_list
4432 ,'_PVT'
4433 ,x_return_status);
4434 -- Check if activity started successfully
4435 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4436 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4437 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4438 RAISE OKL_API.G_EXCEPTION_ERROR;
4439 END IF;
4440 IF (p_txdv_tbl.COUNT > 0) THEN
4441 i := p_txdv_tbl.FIRST;
4442 LOOP
4443 Validate_asset_tax_book(x_return_status => x_return_status,
4444 p_asset_number => l_txdv_tbl(i).asset_number,
4445 p_tax_book => l_txdv_tbl(i).tax_book,
4446 p_tal_id => l_txdv_tbl(i).tal_id);
4447 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4448 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
4449 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4450 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
4451 END IF;
4452 OKL_TXD_ASSETS_PUB.create_txd_asset_def(
4453 p_api_version => p_api_version,
4454 p_init_msg_list => p_init_msg_list,
4455 x_return_status => x_return_status,
4456 x_msg_count => x_msg_count,
4457 x_msg_data => x_msg_data,
4458 p_adpv_rec => p_txdv_tbl(i),
4459 x_adpv_rec => x_txdv_tbl(i));
4460 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4461 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
4462 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4463 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
4464 END IF;
4465 EXIT WHEN (i = p_txdv_tbl.LAST);
4466 i := p_txdv_tbl.NEXT(i);
4467 END LOOP;
4468 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4469 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4470 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4471 RAISE OKL_API.G_EXCEPTION_ERROR;
4472 END IF;
4473 END IF;
4474 OKL_API.END_ACTIVITY (x_msg_count,
4475 x_msg_data );
4476 EXCEPTION
4477 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4478 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4479 l_api_name,
4480 G_PKG_NAME,
4481 'OKL_API.G_RET_STS_ERROR',
4482 x_msg_count,
4483 x_msg_data,
4484 '_PVT');
4485 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4486 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4487 l_api_name,
4488 G_PKG_NAME,
4489 'OKL_API.G_RET_STS_UNEXP_ERROR',
4490 x_msg_count,
4491 x_msg_data,
4492 '_PVT');
4493 WHEN OTHERS THEN
4494 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4495 l_api_name,
4496 G_PKG_NAME,
4497 'OTHERS',
4498 x_msg_count,
4499 x_msg_data,
4500 '_PVT');
4501 END Create_asset_line_details;
4502
4503 -------------------------------------------------------------------------------------------------
4504 -- Start of Commnets
4505 -- Badrinath Kuchibholta
4506 -- Procedure Name : update_asset_line_details
4507 -- Description : Updating of asset_line_details
4508 -- Business Rules :
4509 -- Parameters :
4510 -- Version :
4511 -- End of Commnets
4512 PROCEDURE update_asset_line_details(
4513 p_api_version IN NUMBER,
4514 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4515 x_return_status OUT NOCOPY VARCHAR2,
4516 x_msg_count OUT NOCOPY NUMBER,
4517 x_msg_data OUT NOCOPY VARCHAR2,
4518 p_txdv_tbl IN txdv_tbl_type,
4519 x_txdv_tbl OUT NOCOPY txdv_tbl_type)
4520 IS
4521 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_TXD_ASSET_DTL';
4522 i NUMBER := 0;
4523 l_txdv_tbl txdv_tbl_type := p_txdv_tbl;
4524 BEGIN
4525 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4526 -- Call start_activity to create savepoint, check compatibility
4527 -- and initialize message list
4528 x_return_status := OKL_API.START_ACTIVITY (
4529 l_api_name
4530 ,p_init_msg_list
4531 ,'_PVT'
4532 ,x_return_status);
4533 -- Check if activity started successfully
4534 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4535 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4536 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4537 RAISE OKL_API.G_EXCEPTION_ERROR;
4538 END IF;
4539 IF (p_txdv_tbl.COUNT > 0) THEN
4540 i := p_txdv_tbl.FIRST;
4541 LOOP
4542 Validate_asset_tax_book(x_return_status => x_return_status,
4543 p_asset_number => l_txdv_tbl(i).asset_number,
4544 p_tax_book => l_txdv_tbl(i).tax_book,
4545 p_tal_id => l_txdv_tbl(i).tal_id);
4546 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4547 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
4548 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4549 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
4550 END IF;
4551 OKL_TXD_ASSETS_PUB.update_txd_asset_def(
4552 p_api_version => p_api_version,
4553 p_init_msg_list => p_init_msg_list,
4554 x_return_status => x_return_status,
4555 x_msg_count => x_msg_count,
4556 x_msg_data => x_msg_data,
4557 p_adpv_rec => p_txdv_tbl(i),
4558 x_adpv_rec => x_txdv_tbl(i));
4559 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4560 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
4561 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4562 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
4563 END IF;
4564 EXIT WHEN (i = p_txdv_tbl.LAST);
4565 i := p_txdv_tbl.NEXT(i);
4566 END LOOP;
4567 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4568 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4569 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4570 RAISE OKL_API.G_EXCEPTION_ERROR;
4571 END IF;
4572 END IF;
4573 OKL_API.END_ACTIVITY (x_msg_count,
4574 x_msg_data );
4575 EXCEPTION
4576 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4577 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4578 l_api_name,
4579 G_PKG_NAME,
4580 'OKL_API.G_RET_STS_ERROR',
4581 x_msg_count,
4582 x_msg_data,
4583 '_PVT');
4584 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4585 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4586 l_api_name,
4587 G_PKG_NAME,
4588 'OKL_API.G_RET_STS_UNEXP_ERROR',
4589 x_msg_count,
4590 x_msg_data,
4591 '_PVT');
4592 WHEN OTHERS THEN
4593 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4594 l_api_name,
4595 G_PKG_NAME,
4596 'OTHERS',
4597 x_msg_count,
4598 x_msg_data,
4599 '_PVT');
4600 END update_asset_line_details;
4601
4602 -------------------------------------------------------------------------------------------------
4603 -- Start of Commnets
4604 -- Badrinath Kuchibholta
4605 -- Procedure Name : update_asset_line_details
4606 -- Description : Updating of asset_line_details
4607 -- Business Rules : To keep the Asset Number unique all through
4608 -- Parameters :
4609 -- Version :
4610 -- End of Commnets
4611 PROCEDURE update_asset_line_details(
4612 p_api_version IN NUMBER,
4613 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4614 x_return_status OUT NOCOPY VARCHAR2,
4615 x_msg_count OUT NOCOPY NUMBER,
4616 x_msg_data OUT NOCOPY VARCHAR2,
4617 p_asset_number IN OKL_TXL_ASSETS_B.ASSET_NUMBER%TYPE,
4618 p_original_cost IN OKL_TXL_ASSETS_B.ORIGINAL_COST%TYPE,
4619 p_tal_id IN OKL_TXL_ASSETS_B.ID%TYPE)
4620 IS
4621 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_TXD_ASSET_DTL';
4622 i NUMBER := 0;
4623 l_txdv_tbl txdv_tbl_type;
4624 lx_txdv_tbl txdv_tbl_type;
4625 lv_to_update VARCHAR2(3);
4626 BEGIN
4627 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4628 -- Call start_activity to create savepoint, check compatibility
4629 -- and initialize message list
4630 x_return_status := OKL_API.START_ACTIVITY (
4631 l_api_name
4632 ,p_init_msg_list
4633 ,'_PVT'
4634 ,x_return_status);
4635 -- Check if activity started successfully
4636 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4637 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4638 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4639 RAISE OKL_API.G_EXCEPTION_ERROR;
4640 END IF;
4641 x_return_status := get_txdv_tbl(p_tal_id => p_tal_id,
4642 p_asset_number => p_asset_number,
4643 p_original_cost => p_original_cost,
4644 x_to_update => lv_to_update,
4645 x_txdv_tbl => l_txdv_tbl);
4646 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4647 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4648 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4649 RAISE OKL_API.G_EXCEPTION_ERROR;
4650 END IF;
4651 IF lv_to_update = 'Y' THEN
4652 OKL_TXD_ASSETS_PUB.update_txd_asset_def(
4653 p_api_version => p_api_version,
4654 p_init_msg_list => p_init_msg_list,
4655 x_return_status => x_return_status,
4656 x_msg_count => x_msg_count,
4657 x_msg_data => x_msg_data,
4658 p_adpv_tbl => l_txdv_tbl,
4659 x_adpv_tbl => lx_txdv_tbl);
4660 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4661 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4662 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4663 RAISE OKL_API.G_EXCEPTION_ERROR;
4664 END IF;
4665 END IF;
4666 OKL_API.END_ACTIVITY (x_msg_count,
4667 x_msg_data );
4668 EXCEPTION
4669 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4670 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4671 l_api_name,
4672 G_PKG_NAME,
4673 'OKL_API.G_RET_STS_ERROR',
4674 x_msg_count,
4675 x_msg_data,
4676 '_PVT');
4677 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4678 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4679 l_api_name,
4680 G_PKG_NAME,
4681 'OKL_API.G_RET_STS_UNEXP_ERROR',
4682 x_msg_count,
4683 x_msg_data,
4684 '_PVT');
4685 WHEN OTHERS THEN
4686 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4687 l_api_name,
4688 G_PKG_NAME,
4689 'OTHERS',
4690 x_msg_count,
4691 x_msg_data,
4692 '_PVT');
4693 END update_asset_line_details;
4694
4695 -- 5530990
4696 PROCEDURE Update_Asset_Cost(
4697 p_api_version IN NUMBER,
4698 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4699 x_return_status OUT NOCOPY VARCHAR2,
4700 x_msg_count OUT NOCOPY NUMBER,
4701 x_msg_data OUT NOCOPY VARCHAR2,
4702 p_cleb_fin_id IN NUMBER,
4703 p_chr_id IN NUMBER,
4704 p_oec IN NUMBER) IS
4705
4706 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_ASSET_COST';
4707
4708 CURSOR l_chk_rbk_csr(p_chr_id IN NUMBER) is
4709 SELECT '!'
4710 FROM okc_k_headers_b CHR,
4711 okl_trx_contracts ktrx
4712 WHERE ktrx.khr_id_new = chr.id
4713 AND ktrx.tsu_code = 'ENTERED'
4714 AND ktrx.rbr_code is NOT NULL
4715 AND ktrx.tcn_type = 'TRBK'
4716 --rkuttiya added for 12.1.1 Multi GAAP
4717 AND ktrx.representation_type = 'PRIMARY'
4718 --
4719 AND chr.id = p_chr_id
4720 AND chr.orig_system_source_code = 'OKL_REBOOK';
4721
4722 l_rbk_khr VARCHAR2(1) DEFAULT '?';
4723
4724 CURSOR l_talv_csr(p_cleb_fin_id IN NUMBER,
4725 p_chr_id IN NUMBER) IS
4726 SELECT tal.id,
4727 tal.asset_number
4728 FROM okl_txl_assets_b tal,
4729 okc_k_lines_b cleb_fa
4730 WHERE cleb_fa.cle_id = p_cleb_fin_id
4731 AND cleb_fa.dnz_chr_id = p_chr_id
4732 AND cleb_fa.lse_id = 42
4733 AND tal.kle_id = cleb_fa.id;
4734
4735 l_tal_id OKL_TXL_ASSETS_B.id%TYPE;
4736 l_asset_number OKL_TXL_ASSETS_B.asset_number%TYPE;
4737
4738 l_talv_rec talv_rec_type;
4739 x_talv_rec talv_rec_type;
4740
4741 BEGIN
4742 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4743 -- Call start_activity to create savepoint, check compatibility
4744 -- and initialize message list
4745 x_return_status := OKL_API.START_ACTIVITY (
4746 l_api_name
4747 ,p_init_msg_list
4748 ,'_PVT'
4749 ,x_return_status);
4750 -- Check if activity started successfully
4751 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4752 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4753 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4754 RAISE OKL_API.G_EXCEPTION_ERROR;
4755 END IF;
4756
4757 l_rbk_khr := '?';
4758 OPEN l_chk_rbk_csr (p_chr_id => p_chr_id);
4759 FETCH l_chk_rbk_csr INTO l_rbk_khr;
4760 CLOSE l_chk_rbk_csr;
4761
4762 IF l_rbk_khr = '!' Then
4763
4764 OKL_ACTIVATE_ASSET_PVT.recalculate_asset_cost
4765 (p_api_version => p_api_version,
4766 p_init_msg_list => p_init_msg_list,
4767 x_return_status => x_return_status,
4768 x_msg_count => x_msg_count,
4769 x_msg_data => x_msg_data,
4770 p_chr_id => p_chr_id,
4771 p_cle_id => p_cleb_fin_id
4772 );
4773
4774 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4775 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4776 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4777 RAISE OKL_API.G_EXCEPTION_ERROR;
4778 END IF;
4779
4780 ELSE
4781
4782 OPEN l_talv_csr(p_cleb_fin_id => p_cleb_fin_id,
4783 p_chr_id => p_chr_id);
4784 FETCH l_talv_csr INTO l_tal_id, l_asset_number;
4785 CLOSE l_talv_csr;
4786
4787 IF l_tal_id IS NOT NULL THEN
4788
4789 l_talv_rec.id := l_tal_id;
4790 l_talv_rec.original_cost := p_oec;
4791 l_talv_rec.depreciation_cost := p_oec;
4792
4793 update_asset_lines(p_api_version => p_api_version,
4794 p_init_msg_list => p_init_msg_list,
4795 x_return_status => x_return_status,
4796 x_msg_count => x_msg_count,
4797 x_msg_data => x_msg_data,
4798 p_talv_rec => l_talv_rec,
4799 x_talv_rec => x_talv_rec);
4800 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4801 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4802 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4803 RAISE OKL_API.G_EXCEPTION_ERROR;
4804 END IF;
4805
4806 update_asset_line_details(p_api_version => p_api_version,
4807 p_init_msg_list => p_init_msg_list,
4808 x_return_status => x_return_status,
4809 x_msg_count => x_msg_count,
4810 x_msg_data => x_msg_data,
4811 p_asset_number => l_asset_number,
4812 p_original_cost => l_talv_rec.original_cost,
4813 p_tal_id => l_talv_rec.id);
4814 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4815 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4816 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4817 RAISE OKL_API.G_EXCEPTION_ERROR;
4818 END IF;
4819
4820 END IF;
4821
4822 END IF;
4823
4824 OKL_API.END_ACTIVITY (x_msg_count,
4825 x_msg_data);
4826 EXCEPTION
4827 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4828 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4829 l_api_name,
4830 G_PKG_NAME,
4831 'OKL_API.G_RET_STS_ERROR',
4832 x_msg_count,
4833 x_msg_data,
4834 '_PVT');
4835 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4836 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4837 l_api_name,
4838 G_PKG_NAME,
4839 'OKL_API.G_RET_STS_UNEXP_ERROR',
4840 x_msg_count,
4841 x_msg_data,
4842 '_PVT');
4843 WHEN OTHERS THEN
4844 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4845 l_api_name,
4846 G_PKG_NAME,
4847 'OTHERS',
4848 x_msg_count,
4849 x_msg_data,
4850 '_PVT');
4851 END Update_Asset_Cost;
4852 --Bug# 5530990
4853
4854 --------------------------------------------------------------------------------------------------------------
4855 -- Local Procedures for creation of Txl Item Instance record
4856 PROCEDURE create_txl_itm_insts(
4857 p_api_version IN NUMBER,
4858 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4859 x_return_status OUT NOCOPY VARCHAR2,
4860 x_msg_count OUT NOCOPY NUMBER,
4861 x_msg_data OUT NOCOPY VARCHAR2,
4862 p_itiv_rec IN itiv_rec_type,
4863 x_trxv_rec OUT NOCOPY trxv_rec_type,
4864 x_itiv_rec OUT NOCOPY itiv_rec_type) IS
4865
4866 l_trxv_rec trxv_rec_type;
4867 l_itiv_rec itiv_rec_type;
4868 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_TXL_ITM_INSTS';
4869
4870 --Added by dpsingh for LE uptake
4871 CURSOR get_chr_id_csr(p_kle_id1 NUMBER) IS
4872 SELECT DNZ_CHR_ID
4873 FROM OKC_K_LINES_B
4874 WHERE ID = p_kle_id1;
4875
4876 l_chr_id NUMBER;
4877 l_cntrct_number OKC_K_HEADERS_B.CONTRACT_NUMBER%TYPE;
4878 l_legal_entity_id NUMBER;
4879
4880 BEGIN
4881 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4882 -- Call start_activity to create savepoint, check compatibility
4883 -- and initialize message list
4884 x_return_status := OKL_API.START_ACTIVITY (
4885 l_api_name
4886 ,p_init_msg_list
4887 ,'_PVT'
4888 ,x_return_status);
4889 -- Check if activity started successfully
4890 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4891 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4892 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4893 RAISE OKL_API.G_EXCEPTION_ERROR;
4894 END IF;
4895 -- Create New Header record and new Line record
4896 -- Before creating Header record
4897 -- we should make sure atleast the required record is given
4898 l_trxv_rec.tas_type := 'CFA';
4899 x_return_status := get_try_id(p_try_name => G_TRY_NAME,
4900 x_try_id => l_trxv_rec.try_id);
4901 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4902 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4903 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4904 RAISE OKL_API.G_EXCEPTION_ERROR;
4905 END IF;
4906 l_trxv_rec.tsu_code := 'ENTERED';
4907 l_trxv_rec.date_trans_occurred := sysdate;
4908
4909 --Added by dpsingh for LE Uptake
4910 OPEN get_chr_id_csr(p_itiv_rec.kle_id);
4911 FETCH get_chr_id_csr INTO l_chr_id;
4912 CLOSE get_chr_id_csr;
4913
4914 l_legal_entity_id := OKL_LEGAL_ENTITY_UTIL.get_khr_le_id( l_chr_id) ;
4915 IF l_legal_entity_id IS NOT NULL THEN
4916 l_trxv_rec.legal_entity_id := l_legal_entity_id;
4917 ELSE
4918 -- get the contract number
4919 OPEN contract_num_csr(l_chr_id);
4920 FETCH contract_num_csr INTO l_cntrct_number;
4921 CLOSE contract_num_csr;
4922 Okl_Api.set_message(p_app_name => g_app_name,
4923 p_msg_name => 'OKL_LE_NOT_EXIST_CNTRCT',
4924 p_token1 => 'CONTRACT_NUMBER',
4925 p_token1_value => l_cntrct_number);
4926 RAISE OKL_API.G_EXCEPTION_ERROR;
4927 END IF;
4928 -- Now creating the new header record
4929 Create_asset_header(p_api_version => p_api_version,
4930 p_init_msg_list => p_init_msg_list,
4931 x_return_status => x_return_status,
4932 x_msg_count => x_msg_count,
4933 x_msg_data => x_msg_data,
4934 p_trxv_rec => l_trxv_rec,
4935 x_trxv_rec => x_trxv_rec);
4936 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4937 l_trxv_rec := x_trxv_rec;
4938 l_trxv_rec.tsu_code := 'ERROR';
4939 Update_asset_header(p_api_version => p_api_version,
4940 p_init_msg_list => p_init_msg_list,
4941 x_return_status => x_return_status,
4942 x_msg_count => x_msg_count,
4943 x_msg_data => x_msg_data,
4944 p_trxv_rec => l_trxv_rec,
4945 x_trxv_rec => x_trxv_rec);
4946 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4947 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4948 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4949 RAISE OKL_API.G_EXCEPTION_ERROR;
4950 END IF;
4951 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4952 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4953 l_trxv_rec := x_trxv_rec;
4954 l_trxv_rec.tsu_code := 'ERROR';
4955 Update_asset_header(p_api_version => p_api_version,
4956 p_init_msg_list => p_init_msg_list,
4957 x_return_status => x_return_status,
4958 x_msg_count => x_msg_count,
4959 x_msg_data => x_msg_data,
4960 p_trxv_rec => l_trxv_rec,
4961 x_trxv_rec => x_trxv_rec);
4962 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4963 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4964 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4965 RAISE OKL_API.G_EXCEPTION_ERROR;
4966 END IF;
4967 RAISE OKL_API.G_EXCEPTION_ERROR;
4968 END IF;
4969 -- Now we are creating the new line record
4970 l_itiv_rec := p_itiv_rec;
4971 l_itiv_rec.tas_id := x_trxv_rec.id;
4972 IF (l_itiv_rec.tal_type = OKL_API.G_MISS_CHAR OR
4973 l_itiv_rec.tal_type IS NUll) THEN
4974 l_itiv_rec.tal_type := 'CFA';
4975 END IF;
4976 -- evaluate conditions, build outcomes for true conditions and
4977 -- put them on outcome queue
4978 OKL_TXL_ITM_INSTS_PUB.create_txl_itm_insts(
4979 p_api_version => p_api_version,
4980 p_init_msg_list => p_init_msg_list,
4981 x_return_status => x_return_status,
4982 x_msg_count => x_msg_count,
4983 x_msg_data => x_msg_data,
4984 p_iipv_rec => l_itiv_rec,
4985 x_iipv_rec => x_itiv_rec);
4986 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4987 OKL_API.set_message(p_app_name => G_APP_NAME,
4988 p_msg_name => G_ITI_ID);
4989 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4990 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4991 OKL_API.set_message(p_app_name => G_APP_NAME,
4992 p_msg_name => G_ITI_ID);
4993 RAISE OKL_API.G_EXCEPTION_ERROR;
4994 END IF;
4995 OKL_API.END_ACTIVITY (x_msg_count,
4996 x_msg_data );
4997 EXCEPTION
4998 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4999 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5000 l_api_name,
5001 G_PKG_NAME,
5002 'OKL_API.G_RET_STS_ERROR',
5003 x_msg_count,
5004 x_msg_data,
5005 '_PVT');
5006 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5007 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5008 l_api_name,
5009 G_PKG_NAME,
5010 'OKL_API.G_RET_STS_UNEXP_ERROR',
5011 x_msg_count,
5012 x_msg_data,
5013 '_PVT');
5014 WHEN OTHERS THEN
5015 OKL_API.set_message(p_app_name => G_APP_NAME,
5016 p_msg_name => G_ITI_ID);
5017 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5018 l_api_name,
5019 G_PKG_NAME,
5020 'OTHERS',
5021 x_msg_count,
5022 x_msg_data,
5023 '_PVT');
5024 END create_txl_itm_insts;
5025 --------------------------------------------------------------------------------------------------------------
5026 -- Local Procedures for update of Txl Item Instance record
5027 PROCEDURE update_txl_itm_insts(
5028 p_api_version IN NUMBER,
5029 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
5030 x_return_status OUT NOCOPY VARCHAR2,
5031 x_msg_count OUT NOCOPY NUMBER,
5032 x_msg_data OUT NOCOPY VARCHAR2,
5033 p_itiv_rec IN itiv_rec_type,
5034 x_itiv_rec OUT NOCOPY itiv_rec_type) IS
5035
5036 l_api_name CONSTANT VARCHAR2(30) := 'UPD_TXL_ITM_INSTS';
5037 BEGIN
5038 x_return_status := OKL_API.G_RET_STS_SUCCESS;
5039 -- Call start_activity to create savepoint, check compatibility
5040 -- and initialize message list
5041 x_return_status := OKL_API.START_ACTIVITY (
5042 l_api_name
5043 ,p_init_msg_list
5044 ,'_PVT'
5045 ,x_return_status);
5046 -- Check if activity started successfully
5047 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5048 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5049 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5050 RAISE OKL_API.G_EXCEPTION_ERROR;
5051 END IF;
5052 -- evaluate conditions, build outcomes for true conditions and
5053 -- put them on outcome queue
5054 OKL_TXL_ITM_INSTS_PUB.update_txl_itm_insts(p_api_version => p_api_version,
5055 p_init_msg_list => p_init_msg_list,
5056 x_return_status => x_return_status,
5057 x_msg_count => x_msg_count,
5058 x_msg_data => x_msg_data,
5059 p_iipv_rec => p_itiv_rec,
5060 x_iipv_rec => x_itiv_rec);
5061 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5062 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5063 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5064 RAISE OKL_API.G_EXCEPTION_ERROR;
5065 END IF;
5066 OKL_API.END_ACTIVITY (x_msg_count,
5067 x_msg_data );
5068 EXCEPTION
5069 WHEN OKL_API.G_EXCEPTION_ERROR THEN
5070 OKL_API.set_message(p_app_name => G_APP_NAME,
5071 p_msg_name => G_ITI_ID);
5072 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5073 l_api_name,
5074 G_PKG_NAME,
5075 'OKL_API.G_RET_STS_ERROR',
5076 x_msg_count,
5077 x_msg_data,
5078 '_PVT');
5079 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5080 OKL_API.set_message(p_app_name => G_APP_NAME,
5081 p_msg_name => G_ITI_ID);
5082 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5083 l_api_name,
5084 G_PKG_NAME,
5085 'OKL_API.G_RET_STS_UNEXP_ERROR',
5086 x_msg_count,
5087 x_msg_data,
5088 '_PVT');
5089 WHEN OTHERS THEN
5090 OKL_API.set_message(p_app_name => G_APP_NAME,
5091 p_msg_name => G_ITI_ID);
5092 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5093 l_api_name,
5094 G_PKG_NAME,
5095 'OTHERS',
5096 x_msg_count,
5097 x_msg_data,
5098 '_PVT');
5099 END update_txl_itm_insts;
5100 ---------------------------------------------------------------------------------------------
5101 PROCEDURE Create_financial_asset_line(
5102 p_api_version IN NUMBER,
5103 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
5104 x_return_status OUT NOCOPY VARCHAR2,
5105 x_msg_count OUT NOCOPY NUMBER,
5106 x_msg_data OUT NOCOPY VARCHAR2,
5107 p_clev_rec IN clev_rec_type,
5108 p_klev_rec IN klev_rec_type,
5109 x_clev_rec OUT NOCOPY clev_rec_type,
5110 x_klev_rec OUT NOCOPY klev_rec_type) IS
5111 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_FIN_AST_LINES';
5112 l_clev_rec clev_rec_type;
5113 BEGIN
5114 x_return_status := OKL_API.G_RET_STS_SUCCESS;
5115 -- Call start_activity to create savepoint, check compatibility
5116 -- and initialize message list
5117 x_return_status := OKL_API.START_ACTIVITY (
5118 l_api_name
5119 ,p_init_msg_list
5120 ,'_PVT'
5121 ,x_return_status);
5122 -- Check if activity started successfully
5123 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5124 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5125 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5126 RAISE OKL_API.G_EXCEPTION_ERROR;
5127 END IF;
5128 l_clev_rec := p_clev_rec;
5129 -- # 4334903 use new function default_contract_line_values
5130 /*
5131 IF (p_clev_rec.sts_code IS NULL OR
5132 p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
5133 x_return_status := get_sts_code(p_dnz_chr_id => p_clev_rec.dnz_chr_id,
5134 p_cle_id => null,
5135 x_sts_code => l_clev_rec.sts_code);
5136 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5137 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5138 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5139 RAISE OKL_API.G_EXCEPTION_ERROR;
5140 END IF;
5141 END IF;
5142 IF l_clev_rec.sts_code NOT IN ('ENTERED',
5143 'SIGNED',
5144 'ACTIVE',
5145 'HOLD',
5146 'NEW',
5147 'PENDING_APPROVAL',
5148 'APPROVED',
5149 'COMPLETE',
5150 'INCOMPLETE',
5151 'PASSED') THEN
5152 OKL_API.set_message(p_app_name => G_APP_NAME,
5153 p_msg_name => G_STATUS,
5154 p_token1 => 'STATUS',
5155 p_token1_value => l_clev_rec.sts_code);
5156 RAISE OKL_API.G_EXCEPTION_ERROR;
5157 END IF;
5158 IF (p_clev_rec.end_date IS NULL OR
5159 p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
5160 x_return_status := get_end_date(p_dnz_chr_id => p_clev_rec.dnz_chr_id,
5161 p_cle_id => null,
5162 x_end_date => l_clev_rec.end_date);
5163 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5164 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5165 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5166 RAISE OKL_API.G_EXCEPTION_ERROR;
5167 END IF;
5168 END IF;
5169 IF (p_clev_rec.start_date IS NULL OR
5170 p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
5171 x_return_status := get_start_date(p_dnz_chr_id => p_clev_rec.dnz_chr_id,
5172 p_cle_id => null,
5173 x_start_date => l_clev_rec.start_date);
5174 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5175 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5176 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5177 RAISE OKL_API.G_EXCEPTION_ERROR;
5178 END IF;
5179 END IF;
5180 IF (p_clev_rec.currency_code IS NULL OR
5181 p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
5182 x_return_status := get_currency_code(p_dnz_chr_id => p_clev_rec.dnz_chr_id,
5183 p_cle_id => null,
5184 x_currency_code => l_clev_rec.currency_code);
5185 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5186 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5187 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5188 RAISE OKL_API.G_EXCEPTION_ERROR;
5189 END IF;
5190 END IF;
5191 */
5192 IF ((p_clev_rec.sts_code IS NULL OR
5193 p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) OR
5194 (p_clev_rec.end_date IS NULL OR
5195 p_clev_rec.end_date = OKL_API.G_MISS_DATE) OR
5196 (p_clev_rec.start_date IS NULL OR
5197 p_clev_rec.start_date = OKL_API.G_MISS_DATE) OR
5198 (p_clev_rec.currency_code IS NULL OR
5199 p_clev_rec.currency_code = OKL_API.G_MISS_CHAR)
5200 ) THEN
5201 x_return_status := default_contract_line_values(p_dnz_chr_id => p_clev_rec.dnz_chr_id,
5202 p_cle_id => null,
5203 p_clev_rec => l_clev_rec);
5204 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5205 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5206 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5207 RAISE OKL_API.G_EXCEPTION_ERROR;
5208 END IF;
5209 END IF;
5210 IF l_clev_rec.sts_code NOT IN ('ENTERED',
5211 'SIGNED',
5212 'ACTIVE',
5213 'HOLD',
5214 'NEW',
5215 'PENDING_APPROVAL',
5216 'APPROVED',
5217 'COMPLETE',
5218 'INCOMPLETE',
5219 'PASSED') THEN
5220 OKL_API.set_message(p_app_name => G_APP_NAME,
5221 p_msg_name => G_STATUS,
5222 p_token1 => 'STATUS',
5223 p_token1_value => l_clev_rec.sts_code);
5224 RAISE OKL_API.G_EXCEPTION_ERROR;
5225 END IF;
5226
5227 OKL_CONTRACT_PUB.create_contract_line(p_api_version => p_api_version,
5228 p_init_msg_list => p_init_msg_list,
5229 x_return_status => x_return_status,
5230 x_msg_count => x_msg_count,
5231 x_msg_data => x_msg_data,
5232 p_clev_rec => l_clev_rec,
5233 p_klev_rec => p_klev_rec,
5234 x_clev_rec => x_clev_rec,
5235 x_klev_rec => x_klev_rec);
5236 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5237 OKL_API.set_message(p_app_name => G_APP_NAME,
5238 p_msg_name => G_CREATION_FIN_LINE);
5239 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5240 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5241 OKL_API.set_message(p_app_name => G_APP_NAME,
5242 p_msg_name => G_CREATION_FIN_LINE);
5243 RAISE OKL_API.G_EXCEPTION_ERROR;
5244 END IF;
5245 OKL_API.END_ACTIVITY (x_msg_count,
5246 x_msg_data );
5247 EXCEPTION
5248 WHEN OKL_API.G_EXCEPTION_ERROR THEN
5249 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5250 l_api_name,
5251 G_PKG_NAME,
5252 'OKL_API.G_RET_STS_ERROR',
5253 x_msg_count,
5254 x_msg_data,
5255 '_PVT');
5256 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5257 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5258 l_api_name,
5259 G_PKG_NAME,
5260 'OKL_API.G_RET_STS_UNEXP_ERROR',
5261 x_msg_count,
5262 x_msg_data,
5263 '_PVT');
5264 WHEN OTHERS THEN
5265 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5266 l_api_name,
5267 G_PKG_NAME,
5268 'OTHERS',
5269 x_msg_count,
5270 x_msg_data,
5271 '_PVT');
5272 END Create_financial_asset_line;
5273 ---------------------------------------------------------------------------------------------
5274 PROCEDURE update_financial_asset_line(
5275 p_api_version IN NUMBER,
5276 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
5277 x_return_status OUT NOCOPY VARCHAR2,
5278 x_msg_count OUT NOCOPY NUMBER,
5279 x_msg_data OUT NOCOPY VARCHAR2,
5280 p_clev_rec IN clev_rec_type,
5281 p_klev_rec IN klev_rec_type,
5282 x_clev_rec OUT NOCOPY clev_rec_type,
5283 x_klev_rec OUT NOCOPY klev_rec_type) IS
5284 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_FIN_AST_LINES';
5285 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
5286 BEGIN
5287 x_return_status := OKL_API.G_RET_STS_SUCCESS;
5288 -- Call start_activity to create savepoint, check compatibility
5289 -- and initialize message list
5290 x_return_status := OKL_API.START_ACTIVITY (
5291 l_api_name
5292 ,p_init_msg_list
5293 ,'_PVT'
5294 ,x_return_status);
5295 -- Check if activity started successfully
5296 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5297 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5298 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5299 RAISE OKL_API.G_EXCEPTION_ERROR;
5300 END IF;
5301 -- Calling the Process
5302 OKL_CONTRACT_PUB.update_contract_line(p_api_version => p_api_version,
5303 p_init_msg_list => p_init_msg_list,
5304 x_return_status => x_return_status,
5305 x_msg_count => x_msg_count,
5306 x_msg_data => x_msg_data,
5307 p_clev_rec => p_clev_rec,
5308 p_klev_rec => p_klev_rec,
5309 x_clev_rec => x_clev_rec,
5310 x_klev_rec => x_klev_rec);
5311 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5312 OKL_API.set_message(p_app_name => G_APP_NAME,
5313 p_msg_name => G_UPDATING_FIN_LINE);
5314 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5315 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5316 OKL_API.set_message(p_app_name => G_APP_NAME,
5317 p_msg_name => G_UPDATING_FIN_LINE);
5318 RAISE OKL_API.G_EXCEPTION_ERROR;
5319 END IF;
5320 OKL_API.END_ACTIVITY (x_msg_count,
5321 x_msg_data );
5322 EXCEPTION
5323 WHEN OKL_API.G_EXCEPTION_ERROR THEN
5324 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5325 l_api_name,
5326 G_PKG_NAME,
5327 'OKL_API.G_RET_STS_ERROR',
5328 x_msg_count,
5329 x_msg_data,
5330 '_PVT');
5331 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5332 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5333 l_api_name,
5334 G_PKG_NAME,
5335 'OKL_API.G_RET_STS_UNEXP_ERROR',
5336 x_msg_count,
5337 x_msg_data,
5338 '_PVT');
5339 WHEN OTHERS THEN
5340 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5341 l_api_name,
5342 G_PKG_NAME,
5343 'OTHERS',
5344 x_msg_count,
5345 x_msg_data,
5346 '_PVT');
5347 END update_financial_asset_line;
5348
5349 ---------------
5350 --Bug# 2994971
5351 ---------------
5352 PROCEDURE populate_insurance_category(p_api_version IN NUMBER,
5353 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
5354 x_return_status OUT NOCOPY VARCHAR2,
5355 x_msg_count OUT NOCOPY NUMBER,
5356 x_msg_data OUT NOCOPY VARCHAR2,
5357 p_cle_id IN NUMBER,
5358 p_inv_item_id IN NUMBER,
5359 p_inv_org_id IN NUMBER) IS
5360
5361 l_api_name CONSTANT VARCHAR2(30) := 'POPULATE_INS_CATEGORY';
5362
5363 --cursor to get asset category
5364 cursor l_msi_csr(p_inv_item_id in number,
5365 p_inv_org_id in number) is
5366 select msi.asset_category_id
5367 from mtl_system_items msi
5368 where msi.organization_id = p_inv_org_id
5369 and msi.inventory_item_id = p_inv_item_id;
5370
5371 l_asset_category_id mtl_system_items.asset_category_id%TYPE default NULL;
5372 l_clev_rec okl_okc_migration_pvt.clev_rec_type;
5373 l_klev_rec okl_contract_pub.klev_rec_type;
5374 lx_clev_rec okl_okc_migration_pvt.clev_rec_type;
5375 lx_klev_rec okl_contract_pub.klev_rec_type;
5376
5377
5378 BEGIN
5379
5380 x_return_status := OKL_API.G_RET_STS_SUCCESS;
5381 -- Call start_activity to create savepoint, check compatibility
5382 -- and initialize message list
5383 x_return_status := OKL_API.START_ACTIVITY (l_api_name
5384 ,p_init_msg_list
5385 ,'_PVT'
5386 ,x_return_status);
5387 -- Check if activity started successfully
5388 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5389 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5390 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5391 RAISE OKL_API.G_EXCEPTION_ERROR;
5392 END IF;
5393
5394 --fetch asset category
5395 l_asset_category_id := NULL;
5396 open l_msi_csr (p_inv_item_id => p_inv_item_id,
5397 p_inv_org_id => p_inv_org_id);
5398 fetch l_msi_csr into l_asset_category_id;
5399 if l_msi_csr%NOTFOUND then
5400 null;
5401 end if;
5402 close l_msi_csr;
5403
5404
5405 l_clev_rec.id := p_cle_id;
5406 l_klev_rec.id := p_cle_id;
5407 l_klev_rec.item_insurance_category := l_asset_category_id;
5408
5409 okl_contract_pub.update_contract_line(
5410 p_api_version => p_api_version,
5411 p_init_msg_list => p_init_msg_list,
5412 x_return_status => x_return_status,
5413 x_msg_count => x_msg_count,
5414 x_msg_data => x_msg_data,
5415 p_clev_rec => l_clev_rec,
5416 p_klev_rec => l_klev_rec,
5417 x_clev_rec => lx_clev_rec,
5418 x_klev_rec => lx_klev_rec
5419 );
5420
5421 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5422 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5423 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5424 RAISE OKL_API.G_EXCEPTION_ERROR;
5425 END IF;
5426
5427 OKL_API.END_ACTIVITY (x_msg_count,
5428 x_msg_data );
5429 EXCEPTION
5430 WHEN OKL_API.G_EXCEPTION_ERROR THEN
5431 if l_msi_csr%ISOPEN then
5432 close l_msi_csr;
5433 end if;
5434 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5435 l_api_name,
5436 G_PKG_NAME,
5437 'OKL_API.G_RET_STS_ERROR',
5438 x_msg_count,
5439 x_msg_data,
5440 '_PVT');
5441 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5442 if l_msi_csr%ISOPEN then
5443 close l_msi_csr;
5444 end if;
5445 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5446 l_api_name,
5447 G_PKG_NAME,
5448 'OKL_API.G_RET_STS_UNEXP_ERROR',
5449 x_msg_count,
5450 x_msg_data,
5451 '_PVT');
5452 WHEN OTHERS THEN
5453 if l_msi_csr%ISOPEN then
5454 close l_msi_csr;
5455 end if;
5456 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5457 l_api_name,
5458 G_PKG_NAME,
5459 'OTHERS',
5460 x_msg_count,
5461 x_msg_data,
5462 '_PVT');
5463 End POPULATE_INSURANCE_CATEGORY;
5464 -------------------
5465 --Bug# 2994971
5466 ------------------
5467
5468 ---22------------------------------------------------------------------------------------------
5469 PROCEDURE Create_model_line_item(p_api_version IN NUMBER,
5470 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
5471 x_return_status OUT NOCOPY VARCHAR2,
5472 x_msg_count OUT NOCOPY NUMBER,
5473 x_msg_data OUT NOCOPY VARCHAR2,
5474 -- 4414408 p_lty_code IN OKC_LINE_STYLES_V.LTY_CODE%TYPE,
5475 p_clev_rec IN clev_rec_type,
5476 p_klev_rec IN klev_rec_type,
5477 p_cimv_rec IN cimv_rec_type,
5478 x_clev_rec OUT NOCOPY clev_rec_type,
5479 x_klev_rec OUT NOCOPY klev_rec_type,
5480 x_cimv_rec OUT NOCOPY cimv_rec_type) IS
5481 l_clev_rec clev_rec_type;
5482 r_clev_rec clev_rec_type;
5483 l_talv_rec talv_rec_type;
5484 l_cimv_rec cimv_rec_type;
5485 -- l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
5486 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_MODEL_ITEM';
5487
5488 ------------------
5489 --Bug# 2994971
5490 -----------------
5491 l_inv_item_id number;
5492 l_inv_org_id number;
5493 l_asset_cle_id number;
5494
5495 BEGIN
5496 x_return_status := OKL_API.G_RET_STS_SUCCESS;
5497 -- Call start_activity to create savepoint, check compatibility
5498 -- and initialize message list
5499 x_return_status := OKL_API.START_ACTIVITY (l_api_name
5500 ,p_init_msg_list
5501 ,'_PVT'
5502 ,x_return_status);
5503 -- Check if activity started successfully
5504 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5505 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5506 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5507 RAISE OKL_API.G_EXCEPTION_ERROR;
5508 END IF;
5509 -- 4414408 redundant validation
5510 /*
5511 -- Check the cle_id that is of the top Fin Asset line
5512 validate_cle_lse_id(p_clev_rec => p_clev_rec,
5513 p_lty_code => p_lty_code,
5514 x_lty_code => l_lty_code,
5515 x_return_status => x_return_status);
5516 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5517 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5518 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5519 RAISE OKL_API.G_EXCEPTION_ERROR;
5520 END IF;
5521 */
5522 -- 4414408
5523 -- IF l_lty_code = G_FIN_LINE_LTY_CODE THEN
5524 r_clev_rec := p_clev_rec;
5525
5526 -- # 4334903 use new function default_contract_line_values
5527 /*
5528 IF (p_clev_rec.sts_code IS NULL OR
5529 p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
5530 x_return_status := get_sts_code(p_dnz_chr_id => null,
5531 p_cle_id => p_clev_rec.cle_id,
5532 x_sts_code => r_clev_rec.sts_code);
5533 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5534 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5535 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5536 RAISE OKL_API.G_EXCEPTION_ERROR;
5537 END IF;
5538 END IF;
5539 IF (p_clev_rec.end_date IS NULL OR
5540 p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
5541 x_return_status := get_end_date(p_dnz_chr_id => null,
5542 p_cle_id => p_clev_rec.cle_id,
5543 x_end_date => r_clev_rec.end_date);
5544 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5545 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5546 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5547 RAISE OKL_API.G_EXCEPTION_ERROR;
5548 END IF;
5549 END IF;
5550 IF (p_clev_rec.start_date IS NULL OR
5551 p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
5552 x_return_status := get_start_date(p_dnz_chr_id => null,
5553 p_cle_id => p_clev_rec.cle_id,
5554 x_start_date => r_clev_rec.start_date);
5555 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5556 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5557 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5558 RAISE OKL_API.G_EXCEPTION_ERROR;
5559 END IF;
5560 END IF;
5561 IF (p_clev_rec.currency_code IS NULL OR
5562 p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
5563 x_return_status := get_currency_code(p_dnz_chr_id => null,
5564 p_cle_id => p_clev_rec.cle_id,
5565 x_currency_code => r_clev_rec.currency_code);
5566 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5567 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5568 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5569 RAISE OKL_API.G_EXCEPTION_ERROR;
5570 END IF;
5571 END IF;
5572 */
5573
5574 IF ((p_clev_rec.sts_code IS NULL OR
5575 p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) OR
5576 (p_clev_rec.end_date IS NULL OR
5577 p_clev_rec.end_date = OKL_API.G_MISS_DATE) OR
5578 (p_clev_rec.start_date IS NULL OR
5579 p_clev_rec.start_date = OKL_API.G_MISS_DATE) OR
5580 (p_clev_rec.currency_code IS NULL OR
5581 p_clev_rec.currency_code = OKL_API.G_MISS_CHAR)
5582 ) THEN
5583 x_return_status := default_contract_line_values(p_dnz_chr_id => null,
5584 p_cle_id => r_clev_rec.cle_id,
5585 p_clev_rec => r_clev_rec);
5586 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5587 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5588 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5589 RAISE OKL_API.G_EXCEPTION_ERROR;
5590 END IF;
5591 END IF;
5592
5593 -- Now the all the records are there we can create Model Line
5594 OKL_CONTRACT_PUB.create_contract_line(p_api_version => p_api_version,
5595 p_init_msg_list => p_init_msg_list,
5596 x_return_status => x_return_status,
5597 x_msg_count => x_msg_count,
5598 x_msg_data => x_msg_data,
5599 p_clev_rec => r_clev_rec,
5600 p_klev_rec => p_klev_rec,
5601 x_clev_rec => x_clev_rec,
5602 x_klev_rec => x_klev_rec);
5603 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5604 OKL_API.set_message(p_app_name => G_APP_NAME,
5605 p_msg_name => G_CREATION_MODEL_LINE);
5606 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5607 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5608 OKL_API.set_message(p_app_name => G_APP_NAME,
5609 p_msg_name => G_CREATION_MODEL_LINE);
5610 RAISE OKL_API.G_EXCEPTION_ERROR;
5611 END IF;
5612 l_cimv_rec := p_cimv_rec;
5613 l_cimv_rec.cle_id := x_clev_rec.id;
5614 l_cimv_rec.dnz_chr_id := x_clev_rec.dnz_chr_id;
5615 l_cimv_rec.jtot_object1_code := 'OKX_SYSITEM';
5616 l_cimv_rec.exception_yn := 'N';
5617 -- Creation of Item Record for the above record information
5618 OKL_OKC_MIGRATION_PVT.create_contract_item(p_api_version => p_api_version,
5619 p_init_msg_list => p_init_msg_list,
5620 x_return_status => x_return_status,
5621 x_msg_count => x_msg_count,
5622 x_msg_data => x_msg_data,
5623 p_cimv_rec => l_cimv_rec,
5624 x_cimv_rec => x_cimv_rec);
5625 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5626 OKL_API.set_message(p_app_name => G_APP_NAME,
5627 p_msg_name => G_CREATION_MODEL_ITEM);
5628 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5629 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5630 OKL_API.set_message(p_app_name => G_APP_NAME,
5631 p_msg_name => G_CREATION_MODEL_ITEM);
5632 RAISE OKL_API.G_EXCEPTION_ERROR;
5633 END IF;
5634
5635 ---------------
5636 --Bug# 2994971
5637 ---------------
5638 If nvl(x_cimv_rec.object1_id1,okl_api.g_miss_char) <> OKL_API.G_MISS_CHAR and
5639 nvl(x_cimv_rec.object1_id2,okl_api.g_miss_char) <> OKL_API.G_MISS_CHAR then
5640
5641 --Bug# 3438811 :
5642 --l_inv_item_id := to_char(x_cimv_rec.object1_id1);
5643 --l_inv_org_id := to_char(x_cimv_rec.object1_id2);
5644 l_inv_item_id := to_number(x_cimv_rec.object1_id1);
5645 l_inv_org_id := to_number(x_cimv_rec.object1_id2);
5646 l_asset_cle_id := x_clev_rec.cle_id;
5647
5648 populate_insurance_category(p_api_version => p_api_version,
5649 p_init_msg_list => p_init_msg_list,
5650 x_return_status => x_return_status,
5651 x_msg_count => x_msg_count,
5652 x_msg_data => x_msg_data,
5653 p_cle_id => l_asset_cle_id,
5654 p_inv_item_id => l_inv_item_id,
5655 p_inv_org_id => l_inv_org_id);
5656 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5657 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5658 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5659 RAISE OKL_API.G_EXCEPTION_ERROR;
5660 END IF;
5661 End If;
5662 ---------------
5663 --Bug# 2994971
5664 ---------------
5665
5666 -- #4414408
5667 -- ELSE
5668 -- OKL_API.set_message(p_app_name => G_APP_NAME,
5669 -- p_msg_name => G_LINE_STYLE);
5670 -- RAISE OKL_API.G_EXCEPTION_ERROR;
5671 -- END IF;
5672 OKL_API.END_ACTIVITY (x_msg_count,
5673 x_msg_data );
5674 EXCEPTION
5675 WHEN OKL_API.G_EXCEPTION_ERROR THEN
5676 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5677 l_api_name,
5678 G_PKG_NAME,
5679 'OKL_API.G_RET_STS_ERROR',
5680 x_msg_count,
5681 x_msg_data,
5682 '_PVT');
5683 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5684 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5685 l_api_name,
5686 G_PKG_NAME,
5687 'OKL_API.G_RET_STS_UNEXP_ERROR',
5688 x_msg_count,
5689 x_msg_data,
5690 '_PVT');
5691 WHEN OTHERS THEN
5692 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5693 l_api_name,
5694 G_PKG_NAME,
5695 'OTHERS',
5696 x_msg_count,
5697 x_msg_data,
5698 '_PVT');
5699 END Create_model_line_item;
5700 ---------------------------------------------------------------------------------------------
5701 PROCEDURE update_model_line_item(p_api_version IN NUMBER,
5702 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
5703 x_return_status OUT NOCOPY VARCHAR2,
5704 x_msg_count OUT NOCOPY NUMBER,
5705 x_msg_data OUT NOCOPY VARCHAR2,
5706 p_lty_code IN OKC_LINE_STYLES_V.LTY_CODE%TYPE,
5707 p_clev_rec IN clev_rec_type,
5708 p_klev_rec IN klev_rec_type,
5709 p_cimv_rec IN cimv_rec_type,
5710 x_clev_rec OUT NOCOPY clev_rec_type,
5711 x_klev_rec OUT NOCOPY klev_rec_type,
5712 x_cimv_rec OUT NOCOPY cimv_rec_type) IS
5713
5714 l_clev_rec clev_rec_type;
5715 l_talv_rec talv_rec_type;
5716 l_cimv_rec cimv_rec_type;
5717 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
5718 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_MODEL_ITEM';
5719
5720 ------------------
5721 --Bug# 2994971
5722 -----------------
5723 l_inv_item_id number;
5724 l_inv_org_id number;
5725 l_asset_cle_id number;
5726
5727 BEGIN
5728 x_return_status := OKL_API.G_RET_STS_SUCCESS;
5729 -- Call start_activity to create savepoint, check compatibility
5730 -- and initialize message list
5731 x_return_status := OKL_API.START_ACTIVITY (l_api_name
5732 ,p_init_msg_list
5733 ,'_PVT'
5734 ,x_return_status);
5735 -- Check if activity started successfully
5736 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5737 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5738 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5739 RAISE OKL_API.G_EXCEPTION_ERROR;
5740 END IF;
5741 -- Check the cle_id that is of the top Fin Asset line
5742 validate_cle_lse_id(p_clev_rec => p_clev_rec,
5743 p_lty_code => p_lty_code,
5744 x_lty_code => l_lty_code,
5745 x_return_status => x_return_status);
5746 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5747 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5748 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5749 RAISE OKL_API.G_EXCEPTION_ERROR;
5750 END IF;
5751 IF l_lty_code = G_FIN_LINE_LTY_CODE THEN
5752 -- Now the all the records are there we can create Model Line
5753 OKL_CONTRACT_PUB.update_contract_line(p_api_version => p_api_version,
5754 p_init_msg_list => p_init_msg_list,
5755 x_return_status => x_return_status,
5756 x_msg_count => x_msg_count,
5757 x_msg_data => x_msg_data,
5758 p_clev_rec => p_clev_rec,
5759 p_klev_rec => p_klev_rec,
5760 x_clev_rec => x_clev_rec,
5761 x_klev_rec => x_klev_rec);
5762 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5763 OKL_API.set_message(p_app_name => G_APP_NAME,
5764 p_msg_name => G_UPDATING_MODEL_LINE);
5765 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5766 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5767 OKL_API.set_message(p_app_name => G_APP_NAME,
5768 p_msg_name => G_UPDATING_MODEL_LINE);
5769 RAISE OKL_API.G_EXCEPTION_ERROR;
5770 END IF;
5771 l_cimv_rec := p_cimv_rec;
5772 IF l_cimv_rec.cle_id <> x_clev_rec.id THEN
5773 OKL_API.set_message(p_app_name => G_APP_NAME,
5774 p_msg_name => G_ITEM_RECORD);
5775 RAISE OKL_API.G_EXCEPTION_ERROR;
5776 END IF;
5777 IF l_cimv_rec.dnz_chr_id <> x_clev_rec.dnz_chr_id THEN
5778 OKL_API.set_message(p_app_name => G_APP_NAME,
5779 p_msg_name => G_ITEM_RECORD);
5780 RAISE OKL_API.G_EXCEPTION_ERROR;
5781 END IF;
5782 -- Creation of Item Record for the above record information
5783 OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version => p_api_version,
5784 p_init_msg_list => p_init_msg_list,
5785 x_return_status => x_return_status,
5786 x_msg_count => x_msg_count,
5787 x_msg_data => x_msg_data,
5788 p_cimv_rec => l_cimv_rec,
5789 x_cimv_rec => x_cimv_rec);
5790 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5791 OKL_API.set_message(p_app_name => G_APP_NAME,
5792 p_msg_name => G_UPDATING_MODEL_ITEM);
5793 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5794 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5795 OKL_API.set_message(p_app_name => G_APP_NAME,
5796 p_msg_name => G_UPDATING_MODEL_ITEM);
5797 RAISE OKL_API.G_EXCEPTION_ERROR;
5798 END IF;
5799
5800 ---------------
5801 --Bug# 2994971
5802 ---------------
5803 If nvl(x_cimv_rec.object1_id1,okl_api.g_miss_char) <> OKL_API.G_MISS_CHAR and
5804 nvl(x_cimv_rec.object1_id2,okl_api.g_miss_char) <> OKL_API.G_MISS_CHAR then
5805
5806 --Bug# 3438811 :
5807 --l_inv_item_id := to_char(x_cimv_rec.object1_id1);
5808 --l_inv_org_id := to_char(x_cimv_rec.object1_id2);
5809 l_inv_item_id := to_number(x_cimv_rec.object1_id1);
5810 l_inv_org_id := to_number(x_cimv_rec.object1_id2);
5811 l_asset_cle_id := x_clev_rec.cle_id;
5812
5813 populate_insurance_category(p_api_version => p_api_version,
5814 p_init_msg_list => p_init_msg_list,
5815 x_return_status => x_return_status,
5816 x_msg_count => x_msg_count,
5817 x_msg_data => x_msg_data,
5818 p_cle_id => l_asset_cle_id,
5819 p_inv_item_id => l_inv_item_id,
5820 p_inv_org_id => l_inv_org_id);
5821 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5822 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5823 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5824 RAISE OKL_API.G_EXCEPTION_ERROR;
5825 END IF;
5826 End If;
5827 ---------------
5828 --Bug# 2994971
5829 ---------------
5830
5831
5832 ELSE
5833 OKL_API.set_message(p_app_name => G_APP_NAME,
5834 p_msg_name => G_LINE_STYLE);
5835 RAISE OKL_API.G_EXCEPTION_ERROR;
5836 END IF;
5837 OKL_API.END_ACTIVITY (x_msg_count,
5838 x_msg_data );
5839 EXCEPTION
5840 WHEN OKL_API.G_EXCEPTION_ERROR THEN
5841 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5842 l_api_name,
5843 G_PKG_NAME,
5844 'OKL_API.G_RET_STS_ERROR',
5845 x_msg_count,
5846 x_msg_data,
5847 '_PVT');
5848 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5849 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5850 l_api_name,
5851 G_PKG_NAME,
5852 'OKL_API.G_RET_STS_UNEXP_ERROR',
5853 x_msg_count,
5854 x_msg_data,
5855 '_PVT');
5856 WHEN OTHERS THEN
5857 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5858 l_api_name,
5859 G_PKG_NAME,
5860 'OTHERS',
5861 x_msg_count,
5862 x_msg_data,
5863 '_PVT');
5864 END update_model_line_item;
5865 --------------------------------------------------------------------------------------------------
5866 PROCEDURE create_fa_line_item(p_api_version IN NUMBER,
5867 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
5868 x_return_status OUT NOCOPY VARCHAR2,
5869 x_msg_count OUT NOCOPY NUMBER,
5870 x_msg_data OUT NOCOPY VARCHAR2,
5871 -- p_lty_code IN OKC_LINE_STYLES_V.LTY_CODE%TYPE,
5872 -- 4414408
5873 p_clev_rec IN clev_rec_type,
5874 p_klev_rec IN klev_rec_type,
5875 p_cimv_rec IN cimv_rec_type,
5876 p_talv_rec IN talv_rec_type,
5877 x_clev_rec OUT NOCOPY clev_rec_type,
5878 x_klev_rec OUT NOCOPY klev_rec_type,
5879 x_cimv_rec OUT NOCOPY cimv_rec_type,
5880 x_trxv_rec OUT NOCOPY trxv_rec_type,
5881 x_talv_rec OUT NOCOPY talv_rec_type) IS
5882 l_clev_rec clev_rec_type;
5883 r_clev_rec clev_rec_type;
5884 l_klev_rec klev_rec_type;
5885 l_cimv_rec cimv_rec_type;
5886 l_talv_rec talv_rec_type;
5887 l_trxv_rec trxv_rec_type;
5888 i NUMBER := 0;
5889
5890 -- l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
5891 lv_id1 OKC_K_ITEMS_V.OBJECT1_ID1%TYPE := OKL_API.G_MISS_CHAR;
5892 lv_id2 OKC_K_ITEMS_V.OBJECT1_ID2%TYPE := OKL_API.G_MISS_CHAR;
5893 ln_dummy NUMBER := 0;
5894 lv_dummy VARCHAR2(3);
5895 ln_tas_id OKL_TRX_ASSETS.ID%TYPE;
5896 ln_line_number OKL_TXL_ASSETS_V.LINE_NUMBER%TYPE;
5897 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_FA_LINE_ITEM';
5898 CURSOR c_asset_exist_chr(p_id1 OKX_ASSETS_V.ID1%TYPE,
5899 p_id2 OKX_ASSETS_V.ID2%TYPE,
5900 p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE)
5901 IS
5902 SELECT 1
5903 --FROM DUAL
5904 --WHERE EXISTS (SELECT '1'
5905 FROM OKX_ASSET_LINES_V
5906 WHERE id1 = p_id1
5907 AND id2 = p_id2
5908 AND dnz_chr_id <> p_dnz_chr_id
5909 AND line_status NOT IN ('EXPRIED','TERMINATED','ABANDONED'); --);
5910 BEGIN
5911 x_return_status := OKL_API.G_RET_STS_SUCCESS;
5912 -- Call start_activity to create savepoint, check compatibility
5913 -- and initialize message list
5914 x_return_status := OKL_API.START_ACTIVITY (l_api_name,
5915 p_init_msg_list,
5916 '_PVT',
5917 x_return_status);
5918 -- Check if activity started successfully
5919 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5920 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5921 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5922 RAISE OKL_API.G_EXCEPTION_ERROR;
5923 END IF;
5924 -- #4414408
5925 /*
5926 -- Check the cle_id that is of the top Fin Asset line
5927 validate_cle_lse_id(p_clev_rec => p_clev_rec,
5928 p_lty_code => p_lty_code,
5929 x_lty_code => l_lty_code,
5930 x_return_status => x_return_status);
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 */
5937 -- since Fixed Assets Line is a sub line of Fin Asset line we have to check weather
5938 -- which line are creating under which line
5939 -- IF l_lty_code = G_FIN_LINE_LTY_CODE THEN
5940
5941 r_clev_rec := p_clev_rec;
5942
5943 -- # 4414408 New function default_contract_line_values
5944 /*
5945 IF (p_clev_rec.sts_code IS NULL OR
5946 p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
5947 x_return_status := get_sts_code(p_dnz_chr_id => null,
5948 p_cle_id => p_clev_rec.cle_id,
5949 x_sts_code => r_clev_rec.sts_code);
5950 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5951 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5952 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5953 RAISE OKL_API.G_EXCEPTION_ERROR;
5954 END IF;
5955 END IF;
5956 IF (p_clev_rec.end_date IS NULL OR
5957 p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
5958 x_return_status := get_end_date(p_dnz_chr_id => null,
5959 p_cle_id => p_clev_rec.cle_id,
5960 x_end_date => r_clev_rec.end_date);
5961 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5962 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5963 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5964 RAISE OKL_API.G_EXCEPTION_ERROR;
5965 END IF;
5966 END IF;
5967 IF (p_clev_rec.start_date IS NULL OR
5968 p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
5969 x_return_status := get_start_date(p_dnz_chr_id => null,
5970 p_cle_id => p_clev_rec.cle_id,
5971 x_start_date => r_clev_rec.start_date);
5972 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5973 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5974 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5975 RAISE OKL_API.G_EXCEPTION_ERROR;
5976 END IF;
5977 END IF;
5978 IF (p_clev_rec.currency_code IS NULL OR
5979 p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
5980 x_return_status := get_currency_code(p_dnz_chr_id => null,
5981 p_cle_id => p_clev_rec.cle_id,
5982 x_currency_code => r_clev_rec.currency_code);
5983 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5984 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5985 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5986 RAISE OKL_API.G_EXCEPTION_ERROR;
5987 END IF;
5988 END IF;
5989 */
5990 IF ((p_clev_rec.sts_code IS NULL OR
5991 p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) OR
5992 (p_clev_rec.end_date IS NULL OR
5993 p_clev_rec.end_date = OKL_API.G_MISS_DATE) OR
5994 (p_clev_rec.start_date IS NULL OR
5995 p_clev_rec.start_date = OKL_API.G_MISS_DATE) OR
5996 (p_clev_rec.currency_code IS NULL OR
5997 p_clev_rec.currency_code = OKL_API.G_MISS_CHAR)
5998 ) THEN
5999 x_return_status := default_contract_line_values(p_dnz_chr_id => null,
6000 p_cle_id => r_clev_rec.cle_id,
6001 p_clev_rec => r_clev_rec);
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 END IF;
6008 -- Now the all the records are there we can create Fixed Asset Line
6009 OKL_CONTRACT_PUB.create_contract_line(p_api_version => p_api_version,
6010 p_init_msg_list => p_init_msg_list,
6011 x_return_status => x_return_status,
6012 x_msg_count => x_msg_count,
6013 x_msg_data => x_msg_data,
6014 p_clev_rec => r_clev_rec,
6015 p_klev_rec => p_klev_rec,
6016 x_clev_rec => x_clev_rec,
6017 x_klev_rec => x_klev_rec);
6018 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6019 OKL_API.set_message(p_app_name => G_APP_NAME,
6020 p_msg_name => G_CREATION_FA_LINE);
6021 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6022 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6023 OKL_API.set_message(p_app_name => G_APP_NAME,
6024 p_msg_name => G_CREATION_FA_LINE);
6025 RAISE OKL_API.G_EXCEPTION_ERROR;
6026 END IF;
6027 l_cimv_rec := p_cimv_rec;
6028 l_cimv_rec.cle_id := x_clev_rec.id;
6029 l_cimv_rec.dnz_chr_id := x_clev_rec.dnz_chr_id;
6030 lv_id1 := l_cimv_rec.object1_id1;
6031 lv_id2 := l_cimv_rec.object1_id2;
6032 l_cimv_rec.jtot_object1_code := 'OKX_ASSET';
6033 -- Now we should check weather the associated id1,id2 for a given asset number is null or not
6034 IF (lv_id1 IS NOT NULL OR
6035 lv_id1 <> OKL_API.G_MISS_CHAR) AND
6036 (lv_id2 IS NOT NULL OR
6037 lv_id2 <> OKL_API.G_MISS_CHAR) THEN
6038 -- Check to See the Fixed asset is not already in another contract
6039 OPEN c_asset_exist_chr(lv_id1,lv_id2,l_cimv_rec.dnz_chr_id);
6040 FETCH c_asset_exist_chr into ln_dummy;
6041 CLOSE c_asset_exist_chr;
6042 IF ln_dummy <> 1 THEN
6043 -- Creation of Item Record for the above record information
6044 OKL_OKC_MIGRATION_PVT.create_contract_item(p_api_version => p_api_version,
6045 p_init_msg_list => p_init_msg_list,
6046 x_return_status => x_return_status,
6047 x_msg_count => x_msg_count,
6048 x_msg_data => x_msg_data,
6049 p_cimv_rec => l_cimv_rec,
6050 x_cimv_rec => x_cimv_rec);
6051 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6052 OKL_API.set_message(p_app_name => G_APP_NAME,
6053 p_msg_name => G_CREATION_FA_ITEM);
6054 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6055 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6056 OKL_API.set_message(p_app_name => G_APP_NAME,
6057 p_msg_name => G_CREATION_FA_ITEM);
6058 RAISE OKL_API.G_EXCEPTION_ERROR;
6059 END IF;
6060 -- We need to do this as part of Asset Release since the p_new_yn flag is N
6061 -- So that the adjustment will be done while activation of the re-lease asseted contract.
6062 -- We need to know if the kle_id is already there or not
6063 -- ideally it should be null since it is a new record
6064 validate_kle_id(p_klev_rec => x_klev_rec,
6065 x_record_exists => lv_dummy,
6066 x_return_status => x_return_status);
6067 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6068 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6069 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6070 RAISE OKL_API.G_EXCEPTION_ERROR;
6071 END IF;
6072 IF (lv_dummy = OKL_API.G_MISS_CHAR OR
6073 lv_dummy IS NUll) THEN
6074 l_talv_rec := p_talv_rec;
6075 l_talv_rec.kle_id := x_clev_rec.id;
6076 l_talv_rec.dnz_khr_id := x_clev_rec.dnz_chr_id;
6077 l_talv_rec.line_number := 1 ;
6078 -- Create another kle_id record for the same header
6079 Create_asset_lines(p_api_version => p_api_version,
6080 p_init_msg_list => p_init_msg_list,
6081 x_return_status => x_return_status,
6082 x_msg_count => x_msg_count,
6083 x_msg_data => x_msg_data,
6084 p_talv_rec => l_talv_rec,
6085 x_trxv_rec => x_trxv_rec,
6086 x_talv_rec => x_talv_rec);
6087 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6088 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6089 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6090 RAISE OKL_API.G_EXCEPTION_ERROR;
6091 END IF;
6092 ELSE
6093 OKL_API.set_message(p_app_name => G_APP_NAME,
6094 p_msg_name => G_KLE_ID);
6095 RAISE OKL_API.G_EXCEPTION_ERROR;
6096 END IF;
6097 ELSE
6098 OKL_API.set_message(p_app_name => G_APP_NAME,
6099 p_msg_name => G_CREATION_FA_ITEM);
6100 RAISE OKL_API.G_EXCEPTION_ERROR;
6101 END IF;
6102 ELSE
6103 -- Since id1,id12 are null , hence NO Asset Number we are creating a new asset Number
6104 -- Creation of Item Record for the above record information
6105 OKL_OKC_MIGRATION_PVT.create_contract_item(p_api_version => p_api_version,
6106 p_init_msg_list => p_init_msg_list,
6107 x_return_status => x_return_status,
6108 x_msg_count => x_msg_count,
6109 x_msg_data => x_msg_data,
6110 p_cimv_rec => l_cimv_rec,
6111 x_cimv_rec => x_cimv_rec);
6112 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6113 OKL_API.set_message(p_app_name => G_APP_NAME,
6114 p_msg_name => G_CREATION_FA_ITEM);
6115 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6116 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6117 OKL_API.set_message(p_app_name => G_APP_NAME,
6118 p_msg_name => G_CREATION_FA_ITEM);
6119 RAISE OKL_API.G_EXCEPTION_ERROR;
6120 END IF;
6121 -- We need to know if the kle_id is already there or not
6122 -- ideally it should be null since it is a new record
6123 validate_kle_id(p_klev_rec => x_klev_rec,
6124 x_record_exists => lv_dummy,
6125 x_return_status => x_return_status);
6126 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6127 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6128 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6129 RAISE OKL_API.G_EXCEPTION_ERROR;
6130 END IF;
6131 IF (lv_dummy = OKL_API.G_MISS_CHAR OR
6132 lv_dummy IS NUll) THEN
6133 l_talv_rec := p_talv_rec;
6134 l_talv_rec.kle_id := x_clev_rec.id;
6135 l_talv_rec.dnz_khr_id := x_clev_rec.dnz_chr_id;
6136 l_talv_rec.line_number := 1 ;
6137 -- Create another kle_id record for the same header
6138 Create_asset_lines(p_api_version => p_api_version,
6139 p_init_msg_list => p_init_msg_list,
6140 x_return_status => x_return_status,
6141 x_msg_count => x_msg_count,
6142 x_msg_data => x_msg_data,
6143 p_talv_rec => l_talv_rec,
6144 x_trxv_rec => x_trxv_rec,
6145 x_talv_rec => x_talv_rec);
6146 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6147 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6148 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6149 RAISE OKL_API.G_EXCEPTION_ERROR;
6150 END IF;
6151 ELSE
6152 OKL_API.set_message(p_app_name => G_APP_NAME,
6153 p_msg_name => G_KLE_ID);
6154 RAISE OKL_API.G_EXCEPTION_ERROR;
6155 END IF;
6156 END IF;
6157 -- #4414408
6158 -- ELSE
6159 -- OKL_API.set_message(p_app_name => G_APP_NAME,
6160 -- p_msg_name => G_LINE_STYLE);
6161 -- RAISE OKL_API.G_EXCEPTION_ERROR;
6162 -- END IF;
6163 OKL_API.END_ACTIVITY (x_msg_count,
6164 x_msg_data );
6165 EXCEPTION
6166 WHEN OKL_API.G_EXCEPTION_ERROR THEN
6167 IF c_asset_exist_chr%ISOPEN THEN
6168 CLOSE c_asset_exist_chr;
6169 END IF;
6170 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6171 l_api_name,
6172 G_PKG_NAME,
6173 'OKL_API.G_RET_STS_ERROR',
6174 x_msg_count,
6175 x_msg_data,
6176 '_PVT');
6177 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6178 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6179 l_api_name,
6180 G_PKG_NAME,
6181 'OKL_API.G_RET_STS_UNEXP_ERROR',
6182 x_msg_count,
6183 x_msg_data,
6184 '_PVT');
6185 WHEN OTHERS THEN
6186 IF c_asset_exist_chr%ISOPEN THEN
6187 CLOSE c_asset_exist_chr;
6188 END IF;
6189 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6190 l_api_name,
6191 G_PKG_NAME,
6192 'OTHERS',
6193 x_msg_count,
6194 x_msg_data,
6195 '_PVT');
6196 END create_fa_line_item;
6197 -------------------------------------------------------------------------------------------------
6198 PROCEDURE update_fa_line_item(p_api_version IN NUMBER,
6199 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
6200 x_return_status OUT NOCOPY VARCHAR2,
6201 x_msg_count OUT NOCOPY NUMBER,
6202 x_msg_data OUT NOCOPY VARCHAR2,
6203 p_lty_code IN OKC_LINE_STYLES_V.LTY_CODE%TYPE,
6204 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
6205 p_clev_rec IN clev_rec_type,
6206 p_klev_rec IN klev_rec_type,
6207 p_cimv_rec IN cimv_rec_type,
6208 p_talv_rec IN talv_rec_type,
6209 x_clev_rec OUT NOCOPY clev_rec_type,
6210 x_klev_rec OUT NOCOPY klev_rec_type,
6211 x_cimv_rec OUT NOCOPY cimv_rec_type,
6212 x_talv_rec OUT NOCOPY talv_rec_type) IS
6213 l_clev_rec clev_rec_type;
6214 l_klev_rec klev_rec_type;
6215 l_cimv_rec cimv_rec_type;
6216 l_talv_rec talv_rec_type;
6217 l_trxv_rec trxv_rec_type;
6218 i NUMBER := 0;
6219 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
6220 ln_dummy NUMBER := 0;
6221 lv_dummy VARCHAR2(3);
6222 ln_tas_id OKL_TRX_ASSETS.ID%TYPE;
6223 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_FA_LINE_ITEM';
6224 BEGIN
6225 x_return_status := OKL_API.G_RET_STS_SUCCESS;
6226 -- Call start_activity to create savepoint, check compatibility
6227 -- and initialize message list
6228 x_return_status := OKL_API.START_ACTIVITY (
6229 l_api_name
6230 ,p_init_msg_list
6231 ,'_PVT'
6232 ,x_return_status);
6233 -- Check if activity started successfully
6234 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6235 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6236 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6237 RAISE OKL_API.G_EXCEPTION_ERROR;
6238 END IF;
6239 -- Check the cle_id that is of the top Fin Asset line
6240 validate_cle_lse_id(p_clev_rec => p_clev_rec,
6241 p_lty_code => p_lty_code,
6242 x_lty_code => l_lty_code,
6243 x_return_status => x_return_status);
6244 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6245 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6246 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6247 RAISE OKL_API.G_EXCEPTION_ERROR;
6248 END IF;
6249 -- since Fixed Assets Line is a sub line of Fin Asset line we have to check weather
6250 -- which line are creating under which line
6251 IF l_lty_code = G_FIN_LINE_LTY_CODE THEN
6252 OKL_CONTRACT_PUB.update_contract_line(p_api_version => p_api_version,
6253 p_init_msg_list => p_init_msg_list,
6254 x_return_status => x_return_status,
6255 x_msg_count => x_msg_count,
6256 x_msg_data => x_msg_data,
6257 p_clev_rec => p_clev_rec,
6258 p_klev_rec => p_klev_rec,
6259 x_clev_rec => x_clev_rec,
6260 x_klev_rec => x_klev_rec);
6261 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6262 OKL_API.set_message(p_app_name => G_APP_NAME,
6263 p_msg_name => G_UPDATING_FA_LINE);
6264 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6265 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6266 OKL_API.set_message(p_app_name => G_APP_NAME,
6267 p_msg_name => G_UPDATING_FA_LINE);
6268 RAISE OKL_API.G_EXCEPTION_ERROR;
6269 END IF;
6270 l_cimv_rec := p_cimv_rec;
6271 IF l_cimv_rec.cle_id <> x_clev_rec.id THEN
6272 OKL_API.set_message(p_app_name => G_APP_NAME,
6273 p_msg_name => G_ITEM_RECORD);
6274 RAISE OKL_API.G_EXCEPTION_ERROR;
6275 END IF;
6276 IF l_cimv_rec.dnz_chr_id <> x_clev_rec.dnz_chr_id THEN
6277 OKL_API.set_message(p_app_name => G_APP_NAME,
6278 p_msg_name => G_ITEM_RECORD);
6279 RAISE OKL_API.G_EXCEPTION_ERROR;
6280 END IF;
6281 -- Creation of Item Record for the above record information
6282 OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version => p_api_version,
6283 p_init_msg_list => p_init_msg_list,
6284 x_return_status => x_return_status,
6285 x_msg_count => x_msg_count,
6286 x_msg_data => x_msg_data,
6287 p_cimv_rec => l_cimv_rec,
6288 x_cimv_rec => x_cimv_rec);
6289 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6290 OKL_API.set_message(p_app_name => G_APP_NAME,
6291 p_msg_name => G_UPDATING_FA_ITEM);
6292 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6293 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6294 OKL_API.set_message(p_app_name => G_APP_NAME,
6295 p_msg_name => G_UPDATING_FA_ITEM);
6296 RAISE OKL_API.G_EXCEPTION_ERROR;
6297 END IF;
6298 -- x_clev_rec := l_clev_rec;
6299 -- We commented the same out because does not make sense
6300 -- because we are now populating the txl assets in both the cases
6301 -- i.e., when the OKC_K_ITEMS.OBJECT1_ID1 and OBJECT1_ID2 is null or not null
6302 -- IF (x_cimv_rec.object1_id1 IS NULL OR
6303 -- x_cimv_rec.object1_id1 = OKL_API.G_MISS_CHAR) AND
6304 -- (x_cimv_rec.object1_id2 IS NULL OR
6305 -- x_cimv_rec.object1_id2 = OKL_API.G_MISS_CHAR) THEN
6306 validate_kle_id(p_klev_rec => x_klev_rec,
6307 x_record_exists => lv_dummy,
6308 x_return_status => x_return_status);
6309 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6310 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6311 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6312 RAISE OKL_API.G_EXCEPTION_ERROR;
6313 END IF;
6314 IF (lv_dummy IS NOT NUll OR
6315 lv_dummy <> OKL_API.G_MISS_CHAR) THEN
6316 IF p_talv_rec.kle_id <> x_klev_rec.id THEN
6317 OKL_API.set_message(p_app_name => G_APP_NAME,
6318 p_msg_name => G_KLE_ID);
6319 RAISE OKL_API.G_EXCEPTION_ERROR;
6320 END IF;
6321 update_asset_lines(p_api_version => p_api_version,
6322 p_init_msg_list => p_init_msg_list,
6323 x_return_status => x_return_status,
6324 x_msg_count => x_msg_count,
6325 x_msg_data => x_msg_data,
6326 p_talv_rec => p_talv_rec,
6327 x_talv_rec => x_talv_rec);
6328 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6329 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6330 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6331 RAISE OKL_API.G_EXCEPTION_ERROR;
6332 END IF;
6333 ELSE
6334 OKL_API.set_message(p_app_name => G_APP_NAME,
6335 p_msg_name => G_KLE_ID);
6336 RAISE OKL_API.G_EXCEPTION_ERROR;
6337 END IF;
6338 -- END IF;
6339 ELSE
6340 OKL_API.set_message(p_app_name => G_APP_NAME,
6341 p_msg_name => G_LINE_STYLE);
6342 RAISE OKL_API.G_EXCEPTION_ERROR;
6343 END IF;
6344 -- x_clev_rec := l_clev_rec;
6345 OKL_API.END_ACTIVITY (x_msg_count,
6346 x_msg_data );
6347 EXCEPTION
6348 WHEN OKL_API.G_EXCEPTION_ERROR THEN
6349 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6350 l_api_name,
6351 G_PKG_NAME,
6352 'OKL_API.G_RET_STS_ERROR',
6353 x_msg_count,
6354 x_msg_data,
6355 '_PVT');
6356 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6357 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6358 l_api_name,
6359 G_PKG_NAME,
6360 'OKL_API.G_RET_STS_UNEXP_ERROR',
6361 x_msg_count,
6362 x_msg_data,
6363 '_PVT');
6364 WHEN OTHERS THEN
6365 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6366 l_api_name,
6367 G_PKG_NAME,
6368 'OTHERS',
6369 x_msg_count,
6370 x_msg_data,
6371 '_PVT');
6372 END update_fa_line_item;
6373 -------------------------------------------------------------------------------------------------
6374 PROCEDURE create_addon_line_item_rec(p_api_version IN NUMBER,
6375 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
6376 x_return_status OUT NOCOPY VARCHAR2,
6377 x_msg_count OUT NOCOPY NUMBER,
6378 x_msg_data OUT NOCOPY VARCHAR2,
6379 p_lty_code IN OKC_LINE_STYLES_V.LTY_CODE%TYPE,
6380 p_clev_rec IN clev_rec_type,
6381 p_klev_rec IN klev_rec_type,
6382 p_cimv_rec IN cimv_rec_type,
6383 x_clev_rec OUT NOCOPY clev_rec_type,
6384 x_klev_rec OUT NOCOPY klev_rec_type,
6385 x_cimv_rec OUT NOCOPY cimv_rec_type) IS
6386 l_clev_rec clev_rec_type;
6387 r_clev_rec clev_rec_type;
6388 l_cimv_rec cimv_rec_type;
6389 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
6390 i NUMBER := 0;
6391 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_AO_LNE_ITEM';
6392 ln_display_sequence OKC_K_LINES_V.DISPLAY_SEQUENCE%TYPE := 0;
6393 ln_num_of_items OKC_K_ITEMS.NUMBER_OF_ITEMS%TYPE := 0;
6394
6395 CURSOR get_dis_seq_qty(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
6396 P_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
6397 SELECT cle.display_sequence,
6398 cim.number_of_items
6399 FROM okc_line_styles_b lse2,
6400 okc_line_styles_b lse1,
6401 okc_k_items cim,
6402 okc_k_lines_b cle
6403 WHERE cle.id = p_cle_id
6404 AND cle.dnz_chr_id = p_dnz_chr_id
6405 AND cle.id = cim.cle_id
6406 AND cim.dnz_chr_id = cle.dnz_chr_id
6407 AND lse1.id = cle.lse_id
6408 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
6409 AND lse1.lse_parent_id = lse2.id
6410 AND lse2.lty_code = G_FIN_LINE_LTY_CODE;
6411 BEGIN
6412 x_return_status := OKL_API.G_RET_STS_SUCCESS;
6413 -- Call start_activity to create savepoint, check compatibility
6414 -- and initialize message list
6415 x_return_status := OKL_API.START_ACTIVITY (l_api_name
6416 ,p_init_msg_list
6417 ,'_PVT'
6418 ,x_return_status);
6419 -- Check if activity started successfully
6420 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6421 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6422 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6423 RAISE OKL_API.G_EXCEPTION_ERROR;
6424 END IF;
6425 -- Check the cle_id that is of the top Model line
6426 validate_cle_lse_id(p_clev_rec => p_clev_rec,
6427 p_lty_code => p_lty_code,
6428 x_lty_code => l_lty_code,
6429 x_return_status => x_return_status);
6430 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6431 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6432 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6433 RAISE OKL_API.G_EXCEPTION_ERROR;
6434 END IF;
6435 -- since Add on is a sub line of Model line we have to check weather
6436 -- which line are creating under which line
6437 IF l_lty_code = G_MODEL_LINE_LTY_CODE THEN
6438 r_clev_rec := p_clev_rec;
6439 IF (p_clev_rec.sts_code IS NULL OR
6440 p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
6441 x_return_status := get_sts_code(p_dnz_chr_id => null,
6442 p_cle_id => p_clev_rec.cle_id,
6443 x_sts_code => r_clev_rec.sts_code);
6444 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6445 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6446 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6447 RAISE OKL_API.G_EXCEPTION_ERROR;
6448 END IF;
6449 END IF;
6450 IF (p_clev_rec.end_date IS NULL OR
6451 p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
6452 x_return_status := get_end_date(p_dnz_chr_id => null,
6453 p_cle_id => p_clev_rec.cle_id,
6454 x_end_date => r_clev_rec.end_date);
6455 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6456 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6457 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6458 RAISE OKL_API.G_EXCEPTION_ERROR;
6459 END IF;
6460 END IF;
6461 IF (p_clev_rec.start_date IS NULL OR
6462 p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
6463 x_return_status := get_start_date(p_dnz_chr_id => null,
6464 p_cle_id => p_clev_rec.cle_id,
6465 x_start_date => r_clev_rec.start_date);
6466 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6467 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6468 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6469 RAISE OKL_API.G_EXCEPTION_ERROR;
6470 END IF;
6471 END IF;
6472 IF (p_clev_rec.currency_code IS NULL OR
6473 p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
6474 x_return_status := get_currency_code(p_dnz_chr_id => null,
6475 p_cle_id => p_clev_rec.cle_id,
6476 x_currency_code => r_clev_rec.currency_code);
6477 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6478 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6479 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6480 RAISE OKL_API.G_EXCEPTION_ERROR;
6481 END IF;
6482 END IF;
6483 OPEN get_dis_seq_qty(r_clev_rec.cle_id,
6484 r_clev_rec.dnz_chr_id);
6485 IF get_dis_seq_qty%NOTFOUND THEN
6486 OKL_API.set_message(p_app_name => G_APP_NAME,
6487 p_msg_name => G_LINE_RECORD);
6488 RAISE OKL_API.G_EXCEPTION_ERROR;
6489 END IF;
6490 FETCH get_dis_seq_qty INTO ln_display_sequence,
6491 ln_num_of_items;
6492 CLOSE get_dis_seq_qty;
6493 IF (p_clev_rec.display_sequence IS NULL OR
6494 p_clev_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
6495 r_clev_rec.display_sequence := ln_display_sequence + 1;
6496 END IF;
6497 -- Calling the Process
6498 OKL_CONTRACT_PUB.create_contract_line(p_api_version => p_api_version,
6499 p_init_msg_list => p_init_msg_list,
6500 x_return_status => x_return_status,
6501 x_msg_count => x_msg_count,
6502 x_msg_data => x_msg_data,
6503 p_clev_rec => r_clev_rec,
6504 p_klev_rec => p_klev_rec,
6505 x_clev_rec => x_clev_rec,
6506 x_klev_rec => x_klev_rec);
6507 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6508 OKL_API.set_message(p_app_name => G_APP_NAME,
6509 p_msg_name => G_CREATION_ADDON_LINE);
6510 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6511 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6512 OKL_API.set_message(p_app_name => G_APP_NAME,
6513 p_msg_name => G_CREATION_ADDON_LINE);
6514 RAISE OKL_API.G_EXCEPTION_ERROR;
6515 END IF;
6516 l_cimv_rec := p_cimv_rec;
6517 l_cimv_rec.cle_id := x_clev_rec.id;
6518 l_cimv_rec.dnz_chr_id := x_clev_rec.dnz_chr_id;
6519 l_cimv_rec.jtot_object1_code := 'OKX_SYSITEM';
6520 -- Check the number of items
6521 IF l_cimv_rec.number_of_items <> ln_num_of_items THEN
6522 OKL_API.set_message(p_app_name => G_APP_NAME,
6523 p_msg_name => G_ITEM_RECORD);
6524 RAISE OKL_API.G_EXCEPTION_ERROR;
6525 END IF;
6526 -- Creation of Item Record for the above record information
6527 OKL_OKC_MIGRATION_PVT.create_contract_item(p_api_version => p_api_version,
6528 p_init_msg_list => p_init_msg_list,
6529 x_return_status => x_return_status,
6530 x_msg_count => x_msg_count,
6531 x_msg_data => x_msg_data,
6532 p_cimv_rec => l_cimv_rec,
6533 x_cimv_rec => x_cimv_rec);
6534 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6535 OKL_API.set_message(p_app_name => G_APP_NAME,
6536 p_msg_name => G_CREATION_ADDON_ITEM);
6537 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6538 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6539 OKL_API.set_message(p_app_name => G_APP_NAME,
6540 p_msg_name => G_CREATION_ADDON_ITEM);
6541 RAISE OKL_API.G_EXCEPTION_ERROR;
6542 END IF;
6543 ELSE
6544 OKL_API.set_message(p_app_name => G_APP_NAME,
6545 p_msg_name => G_LINE_STYLE);
6546 RAISE OKL_API.G_EXCEPTION_ERROR;
6547 END IF;
6548 OKL_API.END_ACTIVITY (x_msg_count,
6549 x_msg_data );
6550 EXCEPTION
6551 WHEN OKL_API.G_EXCEPTION_ERROR THEN
6552 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6553 l_api_name,
6554 G_PKG_NAME,
6555 'OKL_API.G_RET_STS_ERROR',
6556 x_msg_count,
6557 x_msg_data,
6558 '_PVT');
6559 IF get_dis_seq_qty%ISOPEN THEN
6560 CLOSE get_dis_seq_qty;
6561 END IF;
6562 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6563 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6564 l_api_name,
6565 G_PKG_NAME,
6566 'OKL_API.G_RET_STS_UNEXP_ERROR',
6567 x_msg_count,
6568 x_msg_data,
6569 '_PVT');
6570 WHEN OTHERS THEN
6571 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6572 l_api_name,
6573 G_PKG_NAME,
6574 'OTHERS',
6575 x_msg_count,
6576 x_msg_data,
6577 '_PVT');
6578 IF get_dis_seq_qty%ISOPEN THEN
6579 CLOSE get_dis_seq_qty;
6580 END IF;
6581 END create_addon_line_item_rec;
6582 -----------------------------------------------------------------------------------------------------------
6583 PROCEDURE Update_addon_line_item_rec(p_api_version IN NUMBER,
6584 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
6585 x_return_status OUT NOCOPY VARCHAR2,
6586 x_msg_count OUT NOCOPY NUMBER,
6587 x_msg_data OUT NOCOPY VARCHAR2,
6588 p_lty_code IN OKC_LINE_STYLES_V.LTY_CODE%TYPE,
6589 p_clev_rec IN clev_rec_type,
6590 p_klev_rec IN klev_rec_type,
6591 p_cimv_rec IN cimv_rec_type,
6592 x_clev_rec OUT NOCOPY clev_rec_type,
6593 x_klev_rec OUT NOCOPY klev_rec_type,
6594 x_cimv_rec OUT NOCOPY cimv_rec_type) IS
6595 l_clev_rec clev_rec_type;
6596 l_klev_rec klev_rec_type;
6597 l_cimv_rec cimv_rec_type;
6598 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
6599 i NUMBER;
6600 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_AO_LNE_ITEM';
6601 ln_display_sequence OKC_K_LINES_V.DISPLAY_SEQUENCE%TYPE;
6602 ln_num_of_items OKC_K_ITEMS.NUMBER_OF_ITEMS%TYPE;
6603
6604 CURSOR get_dis_seq_qty(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
6605 P_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
6606 SELECT cle.display_sequence,
6607 cim.number_of_items
6608 FROM okc_line_styles_b lse2,
6609 okc_line_styles_b lse1,
6610 okc_k_items cim,
6611 okc_k_lines_b cle
6612 WHERE cle.id = p_cle_id
6613 AND cle.dnz_chr_id = p_dnz_chr_id
6614 AND cle.id = cim.cle_id
6615 AND cim.dnz_chr_id = cle.dnz_chr_id
6616 AND lse1.id = cle.lse_id
6617 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
6618 AND lse1.lse_parent_id = lse2.id
6619 AND lse2.lty_code = G_FIN_LINE_LTY_CODE;
6620
6621 BEGIN
6622 x_return_status := OKL_API.G_RET_STS_SUCCESS;
6623 -- Call start_activity to create savepoint, check compatibility
6624 -- and initialize message list
6625 x_return_status := OKL_API.START_ACTIVITY (l_api_name
6626 ,p_init_msg_list
6627 ,'_PVT'
6628 ,x_return_status);
6629 -- Check if activity started successfully
6630 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6631 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6632 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6633 RAISE OKL_API.G_EXCEPTION_ERROR;
6634 END IF;
6635 validate_cle_lse_id(p_clev_rec => p_clev_rec,
6636 p_lty_code => p_lty_code,
6637 x_lty_code => l_lty_code,
6638 x_return_status => x_return_status);
6639 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6640 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6641 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6642 RAISE OKL_API.G_EXCEPTION_ERROR;
6643 END IF;
6644 x_return_status := get_rec_klev(p_clev_rec.id,
6645 l_klev_rec);
6646 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6647 OKL_API.set_message(p_app_name => G_APP_NAME,
6648 p_msg_name => G_FETCHING_INFO,
6649 p_token1 => G_REC_NAME_TOKEN,
6650 p_token1_value => 'OKL_K_LINES_V Record');
6651 RAISE G_EXCEPTION_HALT_VALIDATION;
6652 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6653 OKL_API.set_message(p_app_name => G_APP_NAME,
6654 p_msg_name => G_FETCHING_INFO,
6655 p_token1 => G_REC_NAME_TOKEN,
6656 p_token1_value => 'OKL_K_LINES_V Record');
6657 RAISE G_EXCEPTION_HALT_VALIDATION;
6658 END IF;
6659 -- since Add on is a sub line of Model line we have to check weather
6660 -- which line are creating under which line
6661 IF l_lty_code = G_MODEL_LINE_LTY_CODE THEN
6662 -- Now the all the records are there we can create ADD on Line
6663 -- Calling the Process
6664 l_clev_rec := p_clev_rec;
6665 OPEN get_dis_seq_qty(l_clev_rec.cle_id,
6666 l_clev_rec.dnz_chr_id);
6667 IF get_dis_seq_qty%NOTFOUND THEN
6668 OKL_API.set_message(p_app_name => G_APP_NAME,
6669 p_msg_name => G_LINE_RECORD);
6670 RAISE OKL_API.G_EXCEPTION_ERROR;
6671 END IF;
6672 FETCH get_dis_seq_qty INTO ln_display_sequence,
6673 ln_num_of_items;
6674 CLOSE get_dis_seq_qty;
6675 IF (p_clev_rec.display_sequence IS NULL OR
6676 p_clev_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
6677 l_clev_rec.display_sequence := ln_display_sequence + 1;
6678 END IF;
6679 OKL_CONTRACT_PUB.update_contract_line(p_api_version => p_api_version,
6680 p_init_msg_list => p_init_msg_list,
6681 x_return_status => x_return_status,
6682 x_msg_count => x_msg_count,
6683 x_msg_data => x_msg_data,
6684 p_clev_rec => l_clev_rec,
6685 p_klev_rec => l_klev_rec,
6686 x_clev_rec => x_clev_rec,
6687 x_klev_rec => x_klev_rec);
6688 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6689 OKL_API.set_message(p_app_name => G_APP_NAME,
6690 p_msg_name => G_UPDATING_ADDON_LINE);
6691 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6692 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6693 OKL_API.set_message(p_app_name => G_APP_NAME,
6694 p_msg_name => G_UPDATING_ADDON_LINE);
6695 RAISE OKL_API.G_EXCEPTION_ERROR;
6696 END IF;
6697 l_cimv_rec := p_cimv_rec;
6698 x_return_status := get_rec_cimv(x_clev_rec.id,
6699 x_clev_rec.dnz_chr_id,
6700 l_cimv_rec);
6701 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6702 OKL_API.set_message(p_app_name => G_APP_NAME,
6703 p_msg_name => G_FETCHING_INFO,
6704 p_token1 => G_REC_NAME_TOKEN,
6705 p_token1_value => 'OKC_K_ITEMS_V Record');
6706 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6707 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6708 OKL_API.set_message(p_app_name => G_APP_NAME,
6709 p_msg_name => G_FETCHING_INFO,
6710 p_token1 => G_REC_NAME_TOKEN,
6711 p_token1_value => 'OKC_K_ITEMS_V Record');
6712 RAISE OKL_API.G_EXCEPTION_ERROR;
6713 END IF;
6714 IF l_cimv_rec.cle_id <> x_clev_rec.id THEN
6715 OKL_API.set_message(p_app_name => G_APP_NAME,
6716 p_msg_name => G_ITEM_RECORD);
6717 RAISE OKL_API.G_EXCEPTION_ERROR;
6718 END IF;
6719 IF l_cimv_rec.dnz_chr_id <> x_clev_rec.dnz_chr_id THEN
6720 OKL_API.set_message(p_app_name => G_APP_NAME,
6721 p_msg_name => G_ITEM_RECORD);
6722 RAISE OKL_API.G_EXCEPTION_ERROR;
6723 END IF;
6724 -- We have the below has to been given from the screen
6725 l_cimv_rec.object1_id1 := p_cimv_rec.object1_id1;
6726 l_cimv_rec.object1_id2 := p_cimv_rec.object1_id2;
6727 l_cimv_rec.number_of_items := p_cimv_rec.number_of_items;
6728 -- Check the number of items
6729 IF l_cimv_rec.number_of_items <> ln_num_of_items THEN
6730 OKL_API.set_message(p_app_name => G_APP_NAME,
6731 p_msg_name => G_ITEM_RECORD);
6732 RAISE OKL_API.G_EXCEPTION_ERROR;
6733 END IF;
6734 -- Creation of Item Record for the above record information
6735 OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version => p_api_version,
6736 p_init_msg_list => p_init_msg_list,
6737 x_return_status => x_return_status,
6738 x_msg_count => x_msg_count,
6739 x_msg_data => x_msg_data,
6740 p_cimv_rec => l_cimv_rec,
6741 x_cimv_rec => x_cimv_rec);
6742 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6743 OKL_API.set_message(p_app_name => G_APP_NAME,
6744 p_msg_name => G_UPDATING_ADDON_ITEM);
6745 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6746 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6747 OKL_API.set_message(p_app_name => G_APP_NAME,
6748 p_msg_name => G_UPDATING_ADDON_ITEM);
6749 RAISE OKL_API.G_EXCEPTION_ERROR;
6750 END IF;
6751 ELSE
6752 OKL_API.set_message(p_app_name => G_APP_NAME,
6753 p_msg_name => G_LINE_STYLE);
6754 RAISE OKL_API.G_EXCEPTION_ERROR;
6755 END IF;
6756 OKL_API.END_ACTIVITY (x_msg_count,
6757 x_msg_data );
6758 EXCEPTION
6759 WHEN OKL_API.G_EXCEPTION_ERROR THEN
6760 IF get_dis_seq_qty%ISOPEN THEN
6761 CLOSE get_dis_seq_qty;
6762 END IF;
6763 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6764 l_api_name,
6765 G_PKG_NAME,
6766 'OKL_API.G_RET_STS_ERROR',
6767 x_msg_count,
6768 x_msg_data,
6769 '_PVT');
6770 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6771 IF get_dis_seq_qty%ISOPEN THEN
6772 CLOSE get_dis_seq_qty;
6773 END IF;
6774 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6775 l_api_name,
6776 G_PKG_NAME,
6777 'OKL_API.G_RET_STS_UNEXP_ERROR',
6778 x_msg_count,
6779 x_msg_data,
6780 '_PVT');
6781 WHEN OTHERS THEN
6782 IF get_dis_seq_qty%ISOPEN THEN
6783 CLOSE get_dis_seq_qty;
6784 END IF;
6785 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6786 l_api_name,
6787 G_PKG_NAME,
6788 'OTHERS',
6789 x_msg_count,
6790 x_msg_data,
6791 '_PVT');
6792 END Update_addon_line_item_rec;
6793 -------------------------------------------------------------------------------------------------------
6794 Procedure create_addon_line_rec(
6795 p_api_version IN NUMBER,
6796 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
6797 x_return_status OUT NOCOPY VARCHAR2,
6798 x_msg_count OUT NOCOPY NUMBER,
6799 x_msg_data OUT NOCOPY VARCHAR2,
6800 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
6801 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
6802 p_clev_rec IN clev_rec_type,
6803 p_klev_rec IN klev_rec_type,
6804 p_cimv_rec IN cimv_rec_type,
6805 x_clev_rec OUT NOCOPY clev_rec_type,
6806 x_klev_rec OUT NOCOPY klev_rec_type,
6807 x_cimv_rec OUT NOCOPY cimv_rec_type) IS
6808 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_AO_LNE_REC';
6809 l_clev_rec clev_rec_type;
6810 -- Variables for validation of line style
6811 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
6812 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
6813 ln_fa_id OKC_K_LINES_V.ID%TYPE;
6814
6815 CURSOR get_fa_id(p_top_line OKC_K_LINES_V.ID%TYPE,
6816 p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE)
6817 IS
6818 SELECT cle.id
6819 FROM okc_subclass_top_line stl,
6820 okc_line_styles_b lse2,
6821 okc_line_styles_b lse1,
6822 okc_k_lines_b cle
6823 WHERE cle.dnz_chr_id = p_dnz_chr_id
6824 AND cle.lse_id = lse1.id
6825 AND lse1.lty_code = G_FA_LINE_LTY_CODE
6826 AND lse1.lse_parent_id = lse2.id
6827 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
6828 AND lse2.id = stl.lse_id
6829 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE)
6830 AND cle.cle_id in (SELECT distinct to_char(cle.cle_id)
6831 FROM okc_subclass_top_line stl,
6832 okc_line_styles_b lse2,
6833 okc_line_styles_b lse1,
6834 okc_k_lines_b cle
6835 WHERE cle.id = p_top_line
6836 AND cle.dnz_chr_id = p_dnz_chr_id
6837 AND cle.lse_id = lse1.id
6838 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
6839 AND lse1.lse_parent_id = lse2.id
6840 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
6841 AND lse2.id = stl.lse_id
6842 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE));
6843 BEGIN
6844 x_return_status := OKL_API.G_RET_STS_SUCCESS;
6845 -- Call start_activity to create savepoint, check compatibility
6846 -- and initialize message list
6847 x_return_status := OKL_API.START_ACTIVITY (
6848 l_api_name
6849 ,p_init_msg_list
6850 ,'_PVT'
6851 ,x_return_status);
6852 -- Check if activity started successfully
6853 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6854 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6855 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6856 RAISE OKL_API.G_EXCEPTION_ERROR;
6857 END IF;
6858 -- To Check We Got the Valid info
6859 IF UPPER(p_new_yn) NOT IN ('Y','N') OR
6860 (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
6861 UPPER(p_new_yn) IS NULL) THEN
6862 OKL_API.set_message(p_app_name => G_APP_NAME,
6863 p_msg_name => G_INVALID_YN,
6864 p_token1 => G_COL_NAME_TOKEN,
6865 p_token1_value => 'p_new_yn');
6866 -- Halt Validation
6867 RAISE OKL_API.G_EXCEPTION_ERROR;
6868 END IF;
6869 -- Validate to see if the asset_number given is not null
6870 -- and also Validate asset_number does not exists
6871 -- in OKL_TXL_ASSETS_V
6872 OPEN get_fa_id(p_top_line => p_clev_rec.cle_id,
6873 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
6874 IF get_fa_id%NOTFOUND THEN
6875 OKL_API.set_message(p_app_name => G_APP_NAME,
6876 p_msg_name => G_LINE_RECORD);
6877 RAISE OKL_API.G_EXCEPTION_ERROR;
6878 END IF;
6879 FETCH get_fa_id INTO ln_fa_id;
6880 CLOSE get_fa_id;
6881
6882 IF UPPER(p_new_yn) = 'Y' THEN
6883 validate_new_ast_num_update(x_return_status => x_return_status,
6884 p_asset_number => p_asset_number,
6885 p_kle_id => ln_fa_id,
6886 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
6887 -- Check if activity started successfully
6888 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6889 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6890 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6891 RAISE OKL_API.G_EXCEPTION_ERROR;
6892 END IF;
6893 END IF;
6894 -- Validate Line Style id and get the line type code
6895 -- and line style type for further processing
6896 validate_lse_id(p_clev_rec => p_clev_rec,
6897 x_return_status => x_return_status,
6898 x_lty_code => l_lty_code,
6899 x_lse_type => l_lse_type);
6900 -- Check if activity started successfully
6901 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6902 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6903 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6904 RAISE OKL_API.G_EXCEPTION_ERROR;
6905 END IF;
6906 -- Validate the Dnz_Chr_id
6907 validate_dnz_chr_id(p_clev_rec => p_clev_rec,
6908 x_return_status => x_return_status);
6909 -- Check if activity started successfully
6910 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6911 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6912 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6913 RAISE OKL_API.G_EXCEPTION_ERROR;
6914 END IF;
6915 -- Now we are creating Add on Line
6916 -- Here we have have Dnz_Chr_id ,lse_id and cle_id
6917 -- The Record Should have the cle_id
6918 -- if the given line style is Add on Line
6919 -- Since there could be mutilple records we have to accept
6920 l_clev_rec := p_clev_rec;
6921 IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
6922 l_clev_rec.chr_id IS NULL) AND
6923 (l_clev_rec.dnz_chr_id IS NOT NULL OR
6924 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
6925 (l_clev_rec.cle_id IS NOT NULL OR
6926 l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
6927 l_lty_code = G_ADDON_LINE_LTY_CODE AND
6928 l_lse_type = G_SLS_TYPE THEN
6929 create_addon_line_item_rec(p_api_version => p_api_version,
6930 p_init_msg_list => p_init_msg_list,
6931 x_return_status => x_return_status,
6932 x_msg_count => x_msg_count,
6933 x_msg_data => x_msg_data,
6934 p_lty_code => l_lty_code,
6935 p_clev_rec => p_clev_rec,
6936 p_klev_rec => p_klev_rec,
6937 p_cimv_rec => p_cimv_rec,
6938 x_clev_rec => x_clev_rec,
6939 x_klev_rec => x_klev_rec,
6940 x_cimv_rec => x_cimv_rec);
6941 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6942 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6943 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6944 RAISE OKL_API.G_EXCEPTION_ERROR;
6945 END IF;
6946 ELSE
6947 OKL_API.set_message(p_app_name => G_APP_NAME,
6948 p_msg_name => G_INVALID_CRITERIA,
6949 p_token1 => G_COL_NAME_TOKEN,
6950 p_token1_value => 'Add on line');
6951 x_return_status := OKL_API.G_RET_STS_ERROR;
6952 RAISE OKL_API.G_EXCEPTION_ERROR;
6953 END IF;
6954 OKL_API.END_ACTIVITY (x_msg_count,
6955 x_msg_data );
6956 EXCEPTION
6957 WHEN OKL_API.G_EXCEPTION_ERROR THEN
6958 IF get_fa_id%ISOPEN THEN
6959 CLOSE get_fa_id;
6960 END IF;
6961 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6962 l_api_name,
6963 G_PKG_NAME,
6964 'OKL_API.G_RET_STS_ERROR',
6965 x_msg_count,
6966 x_msg_data,
6967 '_PVT');
6968 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6969 IF get_fa_id%ISOPEN THEN
6970 CLOSE get_fa_id;
6971 END IF;
6972 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6973 l_api_name,
6974 G_PKG_NAME,
6975 'OKL_API.G_RET_STS_UNEXP_ERROR',
6976 x_msg_count,
6977 x_msg_data,
6978 '_PVT');
6979 WHEN OTHERS THEN
6980 IF get_fa_id%ISOPEN THEN
6981 CLOSE get_fa_id;
6982 END IF;
6983 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6984 l_api_name,
6985 G_PKG_NAME,
6986 'OTHERS',
6987 x_msg_count,
6988 x_msg_data,
6989 '_PVT');
6990 END create_addon_line_rec;
6991 -------------------------------------------------------------------------------------------------------
6992 Procedure Update_addon_line_rec(
6993 p_api_version IN NUMBER,
6994 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
6995 x_return_status OUT NOCOPY VARCHAR2,
6996 x_msg_count OUT NOCOPY NUMBER,
6997 x_msg_data OUT NOCOPY VARCHAR2,
6998 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
6999 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
7000 p_clev_rec IN clev_rec_type,
7001 p_klev_rec IN klev_rec_type,
7002 p_cimv_rec IN cimv_rec_type,
7003 x_clev_rec OUT NOCOPY clev_rec_type,
7004 x_klev_rec OUT NOCOPY klev_rec_type,
7005 x_cimv_rec OUT NOCOPY cimv_rec_type) IS
7006 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_AO_LNE_REC';
7007 l_clev_rec clev_rec_type;
7008 -- Variables for validation of line style
7009 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
7010 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
7011 ln_fa_id OKC_K_LINES_V.ID%TYPE;
7012
7013 CURSOR get_fa_id(p_top_line OKC_K_LINES_V.ID%TYPE,
7014 p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE)
7015 IS
7016 SELECT cle.id
7017 FROM okc_subclass_top_line stl,
7018 okc_line_styles_b lse2,
7019 okc_line_styles_b lse1,
7020 okc_k_lines_b cle
7021 WHERE cle.dnz_chr_id = p_dnz_chr_id
7022 AND cle.lse_id = lse1.id
7023 AND lse1.lty_code = G_FA_LINE_LTY_CODE
7024 AND lse1.lse_parent_id = lse2.id
7025 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
7026 AND lse2.id = stl.lse_id
7027 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE)
7028 AND cle.cle_id in (SELECT distinct to_char(cle.cle_id)
7029 FROM okc_subclass_top_line stl,
7030 okc_line_styles_b lse2,
7031 okc_line_styles_b lse1,
7032 okc_k_lines_b cle
7033 WHERE cle.id = p_top_line
7034 AND cle.dnz_chr_id = p_dnz_chr_id
7035 AND cle.lse_id = lse1.id
7036 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
7037 AND lse1.lse_parent_id = lse2.id
7038 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
7039 AND lse2.id = stl.lse_id
7040 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE));
7041 BEGIN
7042 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7043 -- Call start_activity to create savepoint, check compatibility
7044 -- and initialize message list
7045 x_return_status := OKL_API.START_ACTIVITY (
7046 l_api_name
7047 ,p_init_msg_list
7048 ,'_PVT'
7049 ,x_return_status);
7050 -- Check if activity started successfully
7051 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7052 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7053 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7054 RAISE OKL_API.G_EXCEPTION_ERROR;
7055 END IF;
7056 l_clev_rec := p_clev_rec;
7057 x_return_status := get_sts_code(p_dnz_chr_id => null,
7058 p_cle_id => l_clev_rec.cle_id,
7059 x_sts_code => l_clev_rec.sts_code);
7060 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7061 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7062 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7063 RAISE OKL_API.G_EXCEPTION_ERROR;
7064 END IF;
7065 validate_sts_code(p_clev_rec => l_clev_rec,
7066 x_return_status => x_return_status);
7067 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7068 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7069 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7070 RAISE OKL_API.G_EXCEPTION_ERROR;
7071 END IF;
7072 OPEN get_fa_id(p_top_line => l_clev_rec.cle_id,
7073 p_dnz_chr_id => l_clev_rec.dnz_chr_id);
7074 IF get_fa_id%NOTFOUND THEN
7075 OKL_API.set_message(p_app_name => G_APP_NAME,
7076 p_msg_name => G_LINE_RECORD);
7077 RAISE OKL_API.G_EXCEPTION_ERROR;
7078 END IF;
7079 FETCH get_fa_id INTO ln_fa_id;
7080 CLOSE get_fa_id;
7081 -- To Check We Got the Valid info
7082 IF UPPER(p_new_yn) NOT IN ('Y','N') OR
7083 (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
7084 UPPER(p_new_yn) IS NULL) THEN
7085 OKL_API.set_message(p_app_name => G_APP_NAME,
7086 p_msg_name => G_INVALID_YN,
7087 p_token1 => G_COL_NAME_TOKEN,
7088 p_token1_value => 'p_new_yn');
7089 -- Halt Validation
7090 RAISE OKL_API.G_EXCEPTION_ERROR;
7091 END IF;
7092 -- Validate to see if the asset_number given is not null
7093 -- and also Validate asset_number does not exists
7094 -- in OKL_TXL_ASSETS_V
7095 IF UPPER(p_new_yn) = 'Y' THEN
7096 validate_new_ast_num_update(x_return_status => x_return_status,
7097 p_asset_number => p_asset_number,
7098 p_kle_id => ln_fa_id,
7099 p_dnz_chr_id => l_clev_rec.dnz_chr_id);
7100 -- Check if activity started successfully
7101 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7102 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7103 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7104 RAISE OKL_API.G_EXCEPTION_ERROR;
7105 END IF;
7106 END IF;
7107 x_return_status := get_lse_id(p_lty_code => G_ADDON_LINE_LTY_CODE,
7108 x_lse_id => l_clev_rec.lse_id);
7109 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7110 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7111 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7112 RAISE OKL_API.G_EXCEPTION_ERROR;
7113 END IF;
7114 -- Validate Line Style id and get the line type code
7115 -- and line style type for further processing
7116 validate_lse_id(p_clev_rec => l_clev_rec,
7117 x_return_status => x_return_status,
7118 x_lty_code => l_lty_code,
7119 x_lse_type => l_lse_type);
7120 -- Check if activity started successfully
7121 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7122 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7123 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7124 RAISE OKL_API.G_EXCEPTION_ERROR;
7125 END IF;
7126 -- Validate the Dnz_Chr_id
7127 validate_dnz_chr_id(p_clev_rec => l_clev_rec,
7128 x_return_status => x_return_status);
7129 -- Check if activity started successfully
7130 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7131 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7132 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7133 RAISE OKL_API.G_EXCEPTION_ERROR;
7134 END IF;
7135 -- Now we are updating Add on Line
7136 -- Here we have have Dnz_Chr_id ,lse_id and cle_id
7137 -- The Record Should have the cle_id
7138 -- if the given line style is Add on Line
7139 -- Since there could be mutilple records we have to accept
7140 IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
7141 l_clev_rec.chr_id IS NULL) AND
7142 (l_clev_rec.dnz_chr_id IS NOT NULL OR
7143 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
7144 (l_clev_rec.cle_id IS NOT NULL OR
7145 l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
7146 l_lty_code = G_ADDON_LINE_LTY_CODE AND
7147 l_lse_type = G_SLS_TYPE THEN
7148 update_addon_line_item_rec(p_api_version => p_api_version,
7149 p_init_msg_list => p_init_msg_list,
7150 x_return_status => x_return_status,
7151 x_msg_count => x_msg_count,
7152 x_msg_data => x_msg_data,
7153 p_lty_code => l_lty_code,
7154 p_clev_rec => l_clev_rec,
7155 p_klev_rec => p_klev_rec,
7156 p_cimv_rec => p_cimv_rec,
7157 x_clev_rec => x_clev_rec,
7158 x_klev_rec => x_klev_rec,
7159 x_cimv_rec => x_cimv_rec);
7160 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7161 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7162 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7163 RAISE OKL_API.G_EXCEPTION_ERROR;
7164 END IF;
7165 ELSE
7166 OKL_API.set_message(p_app_name => G_APP_NAME,
7167 p_msg_name => G_INVALID_CRITERIA,
7168 p_token1 => G_COL_NAME_TOKEN,
7169 p_token1_value => 'Add on line');
7170 x_return_status := OKL_API.G_RET_STS_ERROR;
7171 RAISE OKL_API.G_EXCEPTION_ERROR;
7172 END IF;
7173 OKL_API.END_ACTIVITY (x_msg_count,
7174 x_msg_data );
7175 EXCEPTION
7176 WHEN OKL_API.G_EXCEPTION_ERROR THEN
7177 IF get_fa_id%ISOPEN THEN
7178 CLOSE get_fa_id;
7179 END IF;
7180 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7181 l_api_name,
7182 G_PKG_NAME,
7183 'OKL_API.G_RET_STS_ERROR',
7184 x_msg_count,
7185 x_msg_data,
7186 '_PVT');
7187 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7188 IF get_fa_id%ISOPEN THEN
7189 CLOSE get_fa_id;
7190 END IF;
7191 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7192 l_api_name,
7193 G_PKG_NAME,
7194 'OKL_API.G_RET_STS_UNEXP_ERROR',
7195 x_msg_count,
7196 x_msg_data,
7197 '_PVT');
7198 WHEN OTHERS THEN
7199 IF get_fa_id%ISOPEN THEN
7200 CLOSE get_fa_id;
7201 END IF;
7202 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7203 l_api_name,
7204 G_PKG_NAME,
7205 'OTHERS',
7206 x_msg_count,
7207 x_msg_data,
7208 '_PVT');
7209 END Update_addon_line_rec;
7210 -------------------------------------------------------------------------------------------------------
7211 PROCEDURE delete_addon_line_rec(
7212 p_api_version IN NUMBER,
7213 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
7214 x_return_status OUT NOCOPY VARCHAR2,
7215 x_msg_count OUT NOCOPY NUMBER,
7216 x_msg_data OUT NOCOPY VARCHAR2,
7217 p_clev_rec IN clev_rec_type,
7218 p_klev_rec IN klev_rec_type,
7219 x_clev_rec OUT NOCOPY clev_rec_type) IS
7220 l_api_name CONSTANT VARCHAR2(30) := 'DEL_ADDON_REC';
7221 l_delete_clev_rec clev_rec_type;
7222 l_delete_klev_rec klev_rec_type;
7223 -- Variables for validation of line style
7224 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
7225 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
7226 BEGIN
7227 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7228 -- Call start_activity to create savepoint, check compatibility
7229 -- and initialize message list
7230 x_return_status := OKL_API.START_ACTIVITY (
7231 l_api_name
7232 ,p_init_msg_list
7233 ,'_PVT'
7234 ,x_return_status);
7235 -- Check if activity started successfully
7236 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7237 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7238 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7239 RAISE OKL_API.G_EXCEPTION_ERROR;
7240 END IF;
7241 OKL_API.init_msg_list(p_init_msg_list);
7242 l_delete_clev_rec := p_clev_rec;
7243 -- To Get the cle top Line Record
7244 x_return_status := get_rec_clev(p_clev_rec.id,
7245 l_delete_clev_rec);
7246 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7247 OKL_API.set_message(p_app_name => G_APP_NAME,
7248 p_msg_name => G_FETCHING_INFO,
7249 p_token1 => G_REC_NAME_TOKEN,
7250 p_token1_value => 'OKC_K_LINES_V Record');
7251 RAISE G_EXCEPTION_HALT_VALIDATION;
7252 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7253 OKL_API.set_message(p_app_name => G_APP_NAME,
7254 p_msg_name => G_FETCHING_INFO,
7255 p_token1 => G_REC_NAME_TOKEN,
7256 p_token1_value => 'OKC_K_LINES_V Record');
7257 RAISE G_EXCEPTION_HALT_VALIDATION;
7258 END IF;
7259 -- To Get the kle top Line Record
7260 x_return_status := get_rec_klev(p_clev_rec.id,
7261 l_delete_klev_rec);
7262 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7263 OKL_API.set_message(p_app_name => G_APP_NAME,
7264 p_msg_name => G_FETCHING_INFO,
7265 p_token1 => G_REC_NAME_TOKEN,
7266 p_token1_value => 'OKL_K_LINES_V Record');
7267 RAISE G_EXCEPTION_HALT_VALIDATION;
7268 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7269 OKL_API.set_message(p_app_name => G_APP_NAME,
7270 p_msg_name => G_FETCHING_INFO,
7271 p_token1 => G_REC_NAME_TOKEN,
7272 p_token1_value => 'OKL_K_LINES_V Record');
7273 RAISE G_EXCEPTION_HALT_VALIDATION;
7274 END IF;
7275 IF l_delete_klev_rec.id <> l_delete_clev_rec.id THEN
7276 OKL_API.set_message(p_app_name => G_APP_NAME,
7277 p_msg_name => G_LINE_RECORD);
7278 RAISE G_EXCEPTION_HALT_VALIDATION;
7279 END IF;
7280 validate_sts_code(p_clev_rec => l_delete_clev_rec,
7281 x_return_status => x_return_status);
7282 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7283 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7284 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7285 RAISE OKL_API.G_EXCEPTION_ERROR;
7286 END IF;
7287 -- Validate Line Style id and get the line type code
7288 -- and line style type for further processing
7289 validate_lse_id(p_clev_rec => l_delete_clev_rec,
7290 x_return_status => x_return_status,
7291 x_lty_code => l_lty_code,
7292 x_lse_type => l_lse_type);
7293 -- Check if activity started successfully
7294 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7295 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7296 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7297 RAISE OKL_API.G_EXCEPTION_ERROR;
7298 END IF;
7299 -- Validate the Dnz_Chr_id
7300 validate_dnz_chr_id(p_clev_rec => l_delete_clev_rec,
7301 x_return_status => x_return_status);
7302 -- Check if activity started successfully
7303 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7304 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7305 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7306 RAISE OKL_API.G_EXCEPTION_ERROR;
7307 END IF;
7308 -- Now we are deleting Add on Line
7309 -- Here we have have Dnz_Chr_id ,lse_id and cle_id
7310 -- The Record Should have the cle_id
7311 -- if the given line style is Add on Line
7312 -- Since there could be mutilple records we have to accept
7313 IF (l_delete_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
7314 l_delete_clev_rec.chr_id IS NULL) AND
7315 (l_delete_clev_rec.dnz_chr_id IS NOT NULL OR
7316 l_delete_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
7317 (l_delete_clev_rec.cle_id IS NOT NULL OR
7318 l_delete_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
7319 l_lty_code = G_ADDON_LINE_LTY_CODE AND
7320 l_lse_type = G_SLS_TYPE THEN
7321 OKL_CONTRACT_PUB.delete_contract_line(
7322 p_api_version => p_api_version,
7323 p_init_msg_list => p_init_msg_list,
7324 x_return_status => x_return_status,
7325 x_msg_count => x_msg_count,
7326 x_msg_data => x_msg_data,
7327 p_line_id => l_delete_clev_rec.id);
7328 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7329 OKL_API.set_message(p_app_name => G_APP_NAME,
7330 p_msg_name => G_DELETING_ADDON_LINE);
7331 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7332 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7333 OKL_API.set_message(p_app_name => G_APP_NAME,
7334 p_msg_name => G_DELETING_ADDON_LINE);
7335 RAISE OKL_API.G_EXCEPTION_ERROR;
7336 END IF;
7337 ELSE
7338 OKL_API.set_message(p_app_name => G_APP_NAME,
7339 p_msg_name => G_INVALID_CRITERIA,
7340 p_token1 => G_COL_NAME_TOKEN,
7341 p_token1_value => 'Add on line');
7342 x_return_status := OKL_API.G_RET_STS_ERROR;
7343 RAISE OKL_API.G_EXCEPTION_ERROR;
7344 END IF;
7345 -- We need to the below since we need to calculate the OEC again
7346 x_clev_rec := l_delete_clev_rec;
7347 OKL_API.END_ACTIVITY (x_msg_count,
7348 x_msg_data );
7349 EXCEPTION
7350 WHEN OKL_API.G_EXCEPTION_ERROR THEN
7351 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7352 l_api_name,
7353 G_PKG_NAME,
7354 'OKL_API.G_RET_STS_ERROR',
7355 x_msg_count,
7356 x_msg_data,
7357 '_PVT');
7358 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7359 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7360 l_api_name,
7361 G_PKG_NAME,
7362 'OKL_API.G_RET_STS_UNEXP_ERROR',
7363 x_msg_count,
7364 x_msg_data,
7365 '_PVT');
7366 WHEN OTHERS THEN
7367 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7368 l_api_name,
7369 G_PKG_NAME,
7370 'OTHERS',
7371 x_msg_count,
7372 x_msg_data,
7373 '_PVT');
7374 END delete_addon_line_rec;
7375 -------------------------------------------------------------------------------------------------
7376 PROCEDURE Create_inst_line(p_api_version IN NUMBER,
7377 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
7378 x_return_status OUT NOCOPY VARCHAR2,
7379 x_msg_count OUT NOCOPY NUMBER,
7380 x_msg_data OUT NOCOPY VARCHAR2,
7381 -- #4414408 p_lty_code IN OKC_LINE_STYLES_V.LTY_CODE%TYPE,
7382 p_clev_rec IN clev_rec_type,
7383 p_klev_rec IN klev_rec_type,
7384 x_clev_rec OUT NOCOPY clev_rec_type,
7385 x_klev_rec OUT NOCOPY klev_rec_type) IS
7386 l_clev_rec clev_rec_type;
7387 r_clev_rec clev_rec_type;
7388 -- l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
7389
7390 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_INSTS_LINE';
7391 BEGIN
7392
7393 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7394 -- Call start_activity to create savepoint, check compatibility
7395 -- and initialize message list
7396 x_return_status := OKL_API.START_ACTIVITY (l_api_name
7397 ,p_init_msg_list
7398 ,'_PVT'
7399 ,x_return_status);
7400 -- Check if activity started successfully
7401 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7402 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7403 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7404 RAISE OKL_API.G_EXCEPTION_ERROR;
7405 END IF;
7406 -- 4414408 redundant validation
7407 /*
7408 -- Check the cle_id that is of the top Fin Asset line
7409 validate_cle_lse_id(p_clev_rec => p_clev_rec,
7410 p_lty_code => p_lty_code,
7411 x_lty_code => l_lty_code,
7412 x_return_status => x_return_status);
7413 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7414 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7415 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7416 RAISE OKL_API.G_EXCEPTION_ERROR;
7417 END IF;
7418 */
7419 -- since Fixed Assets Line is a sub line of Fin Asset line we have to check weather
7420 -- which line are creating under which line
7421 -- IF l_lty_code = G_FIN_LINE_LTY_CODE THEN
7422
7423 r_clev_rec := p_clev_rec;
7424
7425 -- # 4414408 use new function default_contract_line_values
7426 /*
7427 IF (p_clev_rec.sts_code IS NULL OR
7428 p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
7429 x_return_status := get_sts_code(p_dnz_chr_id => null,
7430 p_cle_id => p_clev_rec.cle_id,
7431 x_sts_code => r_clev_rec.sts_code);
7432 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7433 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7434 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7435 RAISE OKL_API.G_EXCEPTION_ERROR;
7436 END IF;
7437 END IF;
7438 IF (p_clev_rec.end_date IS NULL OR
7439 p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
7440 x_return_status := get_end_date(p_dnz_chr_id => null,
7441 p_cle_id => p_clev_rec.cle_id,
7442 x_end_date => r_clev_rec.end_date);
7443 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7444 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7445 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7446 RAISE OKL_API.G_EXCEPTION_ERROR;
7447 END IF;
7448 END IF;
7449 IF (p_clev_rec.start_date IS NULL OR
7450 p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
7451 x_return_status := get_start_date(p_dnz_chr_id => null,
7452 p_cle_id => p_clev_rec.cle_id,
7453 x_start_date => r_clev_rec.start_date);
7454 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7455 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7456 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7457 RAISE OKL_API.G_EXCEPTION_ERROR;
7458 END IF;
7459 END IF;
7460 IF (p_clev_rec.currency_code IS NULL OR
7461 p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
7462 x_return_status := get_currency_code(p_dnz_chr_id => null,
7463 p_cle_id => p_clev_rec.cle_id,
7464 x_currency_code => r_clev_rec.currency_code);
7465 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7466 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7467 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7468 RAISE OKL_API.G_EXCEPTION_ERROR;
7469 END IF;
7470 END IF;
7471 */
7472 IF ((p_clev_rec.sts_code IS NULL OR
7473 p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) OR
7474 (p_clev_rec.end_date IS NULL OR
7475 p_clev_rec.end_date = OKL_API.G_MISS_DATE) OR
7476 (p_clev_rec.start_date IS NULL OR
7477 p_clev_rec.start_date = OKL_API.G_MISS_DATE) OR
7478 (p_clev_rec.currency_code IS NULL OR
7479 p_clev_rec.currency_code = OKL_API.G_MISS_CHAR)
7480 ) THEN
7481 x_return_status := default_contract_line_values(p_dnz_chr_id => null,
7482 p_cle_id => r_clev_rec.cle_id,
7483 p_clev_rec => r_clev_rec);
7484 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7485 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7486 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7487 RAISE OKL_API.G_EXCEPTION_ERROR;
7488 END IF;
7489 END IF;
7490
7491 -- Now the all the records are there we can create Instance Line
7492 OKL_CONTRACT_PUB.create_contract_line(p_api_version => p_api_version,
7493 p_init_msg_list => p_init_msg_list,
7494 x_return_status => x_return_status,
7495 x_msg_count => x_msg_count,
7496 x_msg_data => x_msg_data,
7497 p_clev_rec => r_clev_rec,
7498 p_klev_rec => p_klev_rec,
7499 x_clev_rec => x_clev_rec,
7500 x_klev_rec => x_klev_rec);
7501 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7502 OKL_API.set_message(p_app_name => G_APP_NAME,
7503 p_msg_name => G_CREATION_INSTS_LINE);
7504 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7505 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7506 OKL_API.set_message(p_app_name => G_APP_NAME,
7507 p_msg_name => G_CREATION_INSTS_LINE);
7508 RAISE OKL_API.G_EXCEPTION_ERROR;
7509 END IF;
7510 -- #4414408
7511 -- ELSE
7512 -- OKL_API.set_message(p_app_name => G_APP_NAME,
7513 -- p_msg_name => G_LINE_STYLE);
7514 -- RAISE OKL_API.G_EXCEPTION_ERROR;
7515 -- END IF;
7516 OKL_API.END_ACTIVITY (x_msg_count,
7517 x_msg_data );
7518 EXCEPTION
7519 WHEN OKL_API.G_EXCEPTION_ERROR THEN
7520 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7521 l_api_name,
7522 G_PKG_NAME,
7523 'OKL_API.G_RET_STS_ERROR',
7524 x_msg_count,
7525 x_msg_data,
7526 '_PVT');
7527 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7528 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7529 l_api_name,
7530 G_PKG_NAME,
7531 'OKL_API.G_RET_STS_UNEXP_ERROR',
7532 x_msg_count,
7533 x_msg_data,
7534 '_PVT');
7535 WHEN OTHERS THEN
7536 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7537 l_api_name,
7538 G_PKG_NAME,
7539 'OTHERS',
7540 x_msg_count,
7541 x_msg_data,
7542 '_PVT');
7543 END Create_inst_line;
7544 -------------------------------------------------------------------------------------------------
7545 PROCEDURE update_inst_line(p_api_version IN NUMBER,
7546 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
7547 x_return_status OUT NOCOPY VARCHAR2,
7548 x_msg_count OUT NOCOPY NUMBER,
7549 x_msg_data OUT NOCOPY VARCHAR2,
7550 p_lty_code IN OKC_LINE_STYLES_V.LTY_CODE%TYPE,
7551 p_clev_rec IN clev_rec_type,
7552 p_klev_rec IN klev_rec_type,
7553 x_clev_rec OUT NOCOPY clev_rec_type,
7554 x_klev_rec OUT NOCOPY klev_rec_type) IS
7555
7556 l_clev_rec clev_rec_type;
7557 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
7558
7559 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_INSTS_LINE';
7560 BEGIN
7561 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7562 -- Call start_activity to create savepoint, check compatibility
7563 -- and initialize message list
7564 x_return_status := OKL_API.START_ACTIVITY (l_api_name
7565 ,p_init_msg_list
7566 ,'_PVT'
7567 ,x_return_status);
7568 -- Check if activity started successfully
7569 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7570 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7571 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7572 RAISE OKL_API.G_EXCEPTION_ERROR;
7573 END IF;
7574 -- Check the cle_id that is of the top Fin Asset line
7575 validate_cle_lse_id(p_clev_rec => p_clev_rec,
7576 p_lty_code => p_lty_code,
7577 x_lty_code => l_lty_code,
7578 x_return_status => x_return_status);
7579 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7580 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7581 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7582 RAISE OKL_API.G_EXCEPTION_ERROR;
7583 END IF;
7584 -- since Fixed Assets Line is a sub line of Fin Asset line we have to check weather
7585 -- which line are creating under which line
7586 IF l_lty_code = G_FIN_LINE_LTY_CODE THEN
7587 -- Now the all the records are there we can create Instance Line
7588 OKL_CONTRACT_PUB.update_contract_line(p_api_version => p_api_version,
7589 p_init_msg_list => p_init_msg_list,
7590 x_return_status => x_return_status,
7591 x_msg_count => x_msg_count,
7592 x_msg_data => x_msg_data,
7593 p_clev_rec => p_clev_rec,
7594 p_klev_rec => p_klev_rec,
7595 x_clev_rec => x_clev_rec,
7596 x_klev_rec => x_klev_rec);
7597 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7598 OKL_API.set_message(p_app_name => G_APP_NAME,
7599 p_msg_name => G_UPDATING_INSTS_LINE);
7600 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7601 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7602 OKL_API.set_message(p_app_name => G_APP_NAME,
7603 p_msg_name => G_UPDATING_INSTS_LINE);
7604 RAISE OKL_API.G_EXCEPTION_ERROR;
7605 END IF;
7606 ELSE
7607 OKL_API.set_message(p_app_name => G_APP_NAME,
7608 p_msg_name => G_LINE_STYLE);
7609 RAISE OKL_API.G_EXCEPTION_ERROR;
7610 END IF;
7611 OKL_API.END_ACTIVITY (x_msg_count,
7612 x_msg_data );
7613 EXCEPTION
7614 WHEN OKL_API.G_EXCEPTION_ERROR THEN
7615 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7616 l_api_name,
7617 G_PKG_NAME,
7618 'OKL_API.G_RET_STS_ERROR',
7619 x_msg_count,
7620 x_msg_data,
7621 '_PVT');
7622 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7623 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7624 l_api_name,
7625 G_PKG_NAME,
7626 'OKL_API.G_RET_STS_UNEXP_ERROR',
7627 x_msg_count,
7628 x_msg_data,
7629 '_PVT');
7630 WHEN OTHERS THEN
7631 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7632 l_api_name,
7633 G_PKG_NAME,
7634 'OTHERS',
7635 x_msg_count,
7636 x_msg_data,
7637 '_PVT');
7638 END update_inst_line;
7639 -------------------------------------------------------------------------------------------------
7640 PROCEDURE Create_installed_base_line(p_api_version IN NUMBER,
7641 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
7642 x_return_status OUT NOCOPY VARCHAR2,
7643 x_msg_count OUT NOCOPY NUMBER,
7644 x_msg_data OUT NOCOPY VARCHAR2,
7645 -- 4414408 p_lty_code IN OKC_LINE_STYLES_V.LTY_CODE%TYPE,
7646 p_clev_rec IN clev_rec_type,
7647 p_klev_rec IN klev_rec_type,
7648 p_cimv_rec IN cimv_rec_type,
7649 p_itiv_rec IN itiv_rec_type,
7650 x_clev_rec OUT NOCOPY clev_rec_type,
7651 x_klev_rec OUT NOCOPY klev_rec_type,
7652 x_cimv_rec OUT NOCOPY cimv_rec_type,
7653 x_trxv_rec OUT NOCOPY trxv_rec_type,
7654 x_itiv_rec OUT NOCOPY itiv_rec_type) IS
7655 l_clev_rec clev_rec_type;
7656 r_clev_rec clev_rec_type;
7657 l_cimv_rec cimv_rec_type;
7658 r_cimv_rec cimv_rec_type;
7659 lv_dummy VARCHAR2(3) := OKL_API.G_MISS_CHAR ;
7660 -- l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
7661 l_itiv_rec itiv_rec_type;
7662 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_IB_LINE';
7663 BEGIN
7664 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7665 -- Call start_activity to create savepoint, check compatibility
7666 -- and initialize message list
7667 x_return_status := OKL_API.START_ACTIVITY (
7668 l_api_name
7669 ,p_init_msg_list
7670 ,'_PVT'
7671 ,x_return_status);
7672 -- Check if activity started successfully
7673 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7674 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7675 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7676 RAISE OKL_API.G_EXCEPTION_ERROR;
7677 END IF;
7678 -- 4414408 redundant validation
7679 /*
7680 -- Check the cle_id that is of the top Fin Asset line
7681 validate_cle_lse_id(p_clev_rec => p_clev_rec,
7682 p_lty_code => p_lty_code,
7683 x_lty_code => l_lty_code,
7684 x_return_status => x_return_status);
7685 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7686 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7687 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7688 RAISE OKL_API.G_EXCEPTION_ERROR;
7689 END IF;
7690 */
7691 -- since IB Line is a sub line of instance line we have to check weather
7692 -- which line are creating under which line
7693 -- IF l_lty_code = G_INST_LINE_LTY_CODE THEN
7694
7695 r_clev_rec := p_clev_rec;
7696
7697 -- # 4414408 use new function default_contract_line_values
7698 /*
7699 IF (p_clev_rec.sts_code IS NULL OR
7700 p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
7701 x_return_status := get_sts_code(p_dnz_chr_id => null,
7702 p_cle_id => p_clev_rec.cle_id,
7703 x_sts_code => r_clev_rec.sts_code);
7704 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7705 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7706 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7707 RAISE OKL_API.G_EXCEPTION_ERROR;
7708 END IF;
7709 END IF;
7710 IF (p_clev_rec.end_date IS NULL OR
7711 p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
7712 x_return_status := get_end_date(p_dnz_chr_id => null,
7713 p_cle_id => p_clev_rec.cle_id,
7714 x_end_date => r_clev_rec.end_date);
7715 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7716 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7717 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7718 RAISE OKL_API.G_EXCEPTION_ERROR;
7719 END IF;
7720 END IF;
7721 IF (p_clev_rec.start_date IS NULL OR
7722 p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
7723 x_return_status := get_start_date(p_dnz_chr_id => null,
7724 p_cle_id => p_clev_rec.cle_id,
7725 x_start_date => r_clev_rec.start_date);
7726 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7727 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7728 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7729 RAISE OKL_API.G_EXCEPTION_ERROR;
7730 END IF;
7731 END IF;
7732 IF (p_clev_rec.currency_code IS NULL OR
7733 p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
7734 x_return_status := get_currency_code(p_dnz_chr_id => null,
7735 p_cle_id => p_clev_rec.cle_id,
7736 x_currency_code => r_clev_rec.currency_code);
7737 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7738 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7739 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7740 RAISE OKL_API.G_EXCEPTION_ERROR;
7741 END IF;
7742 END IF;
7743 */
7744
7745 IF ((p_clev_rec.sts_code IS NULL OR
7746 p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) OR
7747 (p_clev_rec.end_date IS NULL OR
7748 p_clev_rec.end_date = OKL_API.G_MISS_DATE) OR
7749 (p_clev_rec.start_date IS NULL OR
7750 p_clev_rec.start_date = OKL_API.G_MISS_DATE) OR
7751 (p_clev_rec.currency_code IS NULL OR
7752 p_clev_rec.currency_code = OKL_API.G_MISS_CHAR)
7753 ) THEN
7754 x_return_status := default_contract_line_values(p_dnz_chr_id => null,
7755 p_cle_id => r_clev_rec.cle_id,
7756 p_clev_rec => r_clev_rec);
7757 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7758 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7759 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7760 RAISE OKL_API.G_EXCEPTION_ERROR;
7761 END IF;
7762 END IF;
7763 -- Now the all the records are there we can create Instance Line
7764 OKL_CONTRACT_PUB.create_contract_line(p_api_version => p_api_version,
7765 p_init_msg_list => p_init_msg_list,
7766 x_return_status => x_return_status,
7767 x_msg_count => x_msg_count,
7768 x_msg_data => x_msg_data,
7769 p_clev_rec => r_clev_rec,
7770 p_klev_rec => p_klev_rec,
7771 x_clev_rec => x_clev_rec,
7772 x_klev_rec => x_klev_rec);
7773 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7774 OKL_API.set_message(p_app_name => G_APP_NAME,
7775 p_msg_name => G_CREATION_IB_LINE);
7776 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7777 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7778 OKL_API.set_message(p_app_name => G_APP_NAME,
7779 p_msg_name => G_CREATION_IB_LINE);
7780 RAISE OKL_API.G_EXCEPTION_ERROR;
7781 END IF;
7782 l_cimv_rec := p_cimv_rec;
7783 l_cimv_rec.cle_id := x_clev_rec.id;
7784 l_cimv_rec.dnz_chr_id := x_clev_rec.dnz_chr_id;
7785 l_cimv_rec.JTOT_OBJECT1_CODE := 'OKX_IB_ITEM';
7786 l_cimv_rec.exception_yn := 'N';
7787 IF (l_cimv_rec.object1_id1 IS NULL OR
7788 l_cimv_rec.object1_id1 = OKL_API.G_MISS_CHAR) AND
7789 (l_cimv_rec.object1_id2 IS NULL OR
7790 l_cimv_rec.object1_id2 = OKL_API.G_MISS_CHAR) THEN
7791 -- We have create the item rec,tal rec,trx rec and also create the iti rec
7792 -- Creation of Item Record for the above record information
7793 OKL_OKC_MIGRATION_PVT.create_contract_item(p_api_version => p_api_version,
7794 p_init_msg_list => p_init_msg_list,
7795 x_return_status => x_return_status,
7796 x_msg_count => x_msg_count,
7797 x_msg_data => x_msg_data,
7798 p_cimv_rec => l_cimv_rec,
7799 x_cimv_rec => x_cimv_rec);
7800 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7801 OKL_API.set_message(p_app_name => G_APP_NAME,
7802 p_msg_name => G_CREATION_IB_ITEM);
7803 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7804 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7805 OKL_API.set_message(p_app_name => G_APP_NAME,
7806 p_msg_name => G_CREATION_IB_ITEM);
7807 RAISE OKL_API.G_EXCEPTION_ERROR;
7808 END IF;
7809 -- Rest of the record Creation will Follow
7810 -- We need to know if the kle_id is already there or not
7811 -- ideally it should be null since it is a new record
7812 IF (x_klev_rec.id IS NOT NULL OR
7813 x_klev_rec.id <> OKL_API.G_MISS_NUM) THEN
7814 lv_dummy := null;
7815 END IF;
7816 IF (lv_dummy = OKL_API.G_MISS_CHAR OR
7817 lv_dummy IS NUll) THEN
7818 l_itiv_rec := p_itiv_rec;
7819 -- To the Item Info from model Line
7820 x_return_status := get_rec_ib_cimv(p_cle_id => x_clev_rec.cle_id,
7821 p_dnz_chr_id => x_cimv_rec.dnz_chr_id,
7822 x_cimv_rec => r_cimv_rec);
7823 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7824 OKL_API.set_message(p_app_name => G_APP_NAME,
7825 p_msg_name => G_FETCHING_INFO,
7826 p_token1 => G_REC_NAME_TOKEN,
7827 p_token1_value => 'OKC_K_ITEMS_V Record');
7828 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7829 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7830 OKL_API.set_message(p_app_name => G_APP_NAME,
7831 p_msg_name => G_FETCHING_INFO,
7832 p_token1 => G_REC_NAME_TOKEN,
7833 p_token1_value => 'OKC_K_ITEMS_V Record');
7834 RAISE OKL_API.G_EXCEPTION_ERROR;
7835 END IF;
7836 -- Creating iti record
7837 l_itiv_rec.inventory_item_id := to_number(r_cimv_rec.object1_id1);
7838 l_itiv_rec.inventory_org_id := to_number(r_cimv_rec.object1_id2);
7839 IF (l_itiv_rec.line_number IS NULL OR
7840 l_itiv_rec.line_number = OKL_API.G_MISS_NUM) THEN
7841 l_itiv_rec.line_number := 1;
7842 END IF;
7843 l_itiv_rec.kle_id := x_klev_rec.id;
7844 l_itiv_rec.jtot_object_code_new := 'OKX_PARTSITE';
7845 -- Create another iti_id record for the tas_id of the header
7846 create_txl_itm_insts(p_api_version => p_api_version,
7847 p_init_msg_list => p_init_msg_list,
7848 x_return_status => x_return_status,
7849 x_msg_count => x_msg_count,
7850 x_msg_data => x_msg_data,
7851 p_itiv_rec => l_itiv_rec,
7852 x_trxv_rec => x_trxv_rec,
7853 x_itiv_rec => x_itiv_rec);
7854 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7855 OKL_API.set_message(p_app_name => G_APP_NAME,
7856 p_msg_name => G_ITI_ID);
7857 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7858 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7859 OKL_API.set_message(p_app_name => G_APP_NAME,
7860 p_msg_name => G_ITI_ID);
7861 RAISE OKL_API.G_EXCEPTION_ERROR;
7862 END IF;
7863 ELSE
7864 OKL_API.set_message(p_app_name => G_APP_NAME,
7865 p_msg_name => G_ITI_ID);
7866 RAISE OKL_API.G_EXCEPTION_ERROR;
7867 END IF;
7868 ELSIF (l_cimv_rec.object1_id1 IS NOT NULL OR
7869 l_cimv_rec.object1_id1 <> OKL_API.G_MISS_CHAR) AND
7870 (l_cimv_rec.object1_id2 IS NOT NULL OR
7871 l_cimv_rec.object1_id2 <> OKL_API.G_MISS_CHAR)THEN
7872 -- Creation of Item Record for the above record information
7873 OKL_OKC_MIGRATION_PVT.create_contract_item(p_api_version => p_api_version,
7874 p_init_msg_list => p_init_msg_list,
7875 x_return_status => x_return_status,
7876 x_msg_count => x_msg_count,
7877 x_msg_data => x_msg_data,
7878 p_cimv_rec => l_cimv_rec,
7879 x_cimv_rec => x_cimv_rec);
7880 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7881 OKL_API.set_message(p_app_name => G_APP_NAME,
7882 p_msg_name => G_CREATION_IB_ITEM);
7883 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7884 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7885 OKL_API.set_message(p_app_name => G_APP_NAME,
7886 p_msg_name => G_CREATION_IB_ITEM);
7887 RAISE OKL_API.G_EXCEPTION_ERROR;
7888 END IF;
7889 -- Rest of the record Creation will Follow
7890 -- We need to know if the kle_id is already there or not
7891 -- ideally it should be null since it is a new record
7892 IF (x_klev_rec.id IS NOT NULL OR
7893 x_klev_rec.id <> OKL_API.G_MISS_NUM) THEN
7894 lv_dummy := null;
7895 END IF;
7896 IF (lv_dummy = OKL_API.G_MISS_CHAR OR
7897 lv_dummy IS NUll) THEN
7898 l_itiv_rec := p_itiv_rec;
7899 -- To the Item Info from model Line
7900 x_return_status := get_rec_ib_cimv(p_cle_id => x_clev_rec.cle_id,
7901 p_dnz_chr_id => x_cimv_rec.dnz_chr_id,
7902 x_cimv_rec => r_cimv_rec);
7903 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7904 OKL_API.set_message(p_app_name => G_APP_NAME,
7905 p_msg_name => G_FETCHING_INFO,
7906 p_token1 => G_REC_NAME_TOKEN,
7907 p_token1_value => 'OKC_K_ITEMS_V Record');
7908 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7909 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7910 OKL_API.set_message(p_app_name => G_APP_NAME,
7911 p_msg_name => G_FETCHING_INFO,
7912 p_token1 => G_REC_NAME_TOKEN,
7913 p_token1_value => 'OKC_K_ITEMS_V Record');
7914 RAISE OKL_API.G_EXCEPTION_ERROR;
7915 END IF;
7916 -- Creating iti record
7917 l_itiv_rec.inventory_item_id := to_number(r_cimv_rec.object1_id1);
7918 l_itiv_rec.inventory_org_id := to_number(r_cimv_rec.object1_id2);
7919 IF (l_itiv_rec.line_number IS NULL OR
7920 l_itiv_rec.line_number = OKL_API.G_MISS_NUM) THEN
7921 l_itiv_rec.line_number := 1;
7922 END IF;
7923 l_itiv_rec.kle_id := x_klev_rec.id;
7924 l_itiv_rec.jtot_object_code_new := 'OKX_PARTSITE';
7925 -- Create another iti_id record for the tas_id of the header
7926 create_txl_itm_insts(p_api_version => p_api_version,
7927 p_init_msg_list => p_init_msg_list,
7928 x_return_status => x_return_status,
7929 x_msg_count => x_msg_count,
7930 x_msg_data => x_msg_data,
7931 p_itiv_rec => l_itiv_rec,
7932 x_trxv_rec => x_trxv_rec,
7933 x_itiv_rec => x_itiv_rec);
7934 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7935 OKL_API.set_message(p_app_name => G_APP_NAME,
7936 p_msg_name => G_ITI_ID);
7937 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7938 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7939 OKL_API.set_message(p_app_name => G_APP_NAME,
7940 p_msg_name => G_ITI_ID);
7941 RAISE OKL_API.G_EXCEPTION_ERROR;
7942 END IF;
7943 ELSE
7944 OKL_API.set_message(p_app_name => G_APP_NAME,
7945 p_msg_name => G_ITI_ID);
7946 RAISE OKL_API.G_EXCEPTION_ERROR;
7947 END IF;
7948 ELSE
7949 OKL_API.set_message(p_app_name => G_APP_NAME,
7950 p_msg_name => G_ITEM_RECORD);
7951 x_return_status := OKL_API.G_RET_STS_ERROR;
7952 RAISE OKL_API.G_EXCEPTION_ERROR;
7953 END IF;
7954 -- #4414408
7955 -- ELSE
7956 -- OKL_API.set_message(p_app_name => G_APP_NAME,
7957 -- p_msg_name => G_LINE_STYLE);
7958 -- x_return_status := OKL_API.G_RET_STS_ERROR;
7959 -- RAISE OKL_API.G_EXCEPTION_ERROR;
7960 -- END IF;
7961 OKL_API.END_ACTIVITY (x_msg_count,
7962 x_msg_data );
7963 EXCEPTION
7964 WHEN OKL_API.G_EXCEPTION_ERROR THEN
7965 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7966 l_api_name,
7967 G_PKG_NAME,
7968 'OKL_API.G_RET_STS_ERROR',
7969 x_msg_count,
7970 x_msg_data,
7971 '_PVT');
7972 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7973 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7974 l_api_name,
7975 G_PKG_NAME,
7976 'OKL_API.G_RET_STS_UNEXP_ERROR',
7977 x_msg_count,
7978 x_msg_data,
7979 '_PVT');
7980 WHEN OTHERS THEN
7981 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7982 l_api_name,
7983 G_PKG_NAME,
7984 'OTHERS',
7985 x_msg_count,
7986 x_msg_data,
7987 '_PVT');
7988 END Create_installed_base_line;
7989 ---34----------------------------------------------------------------------------------------------
7990 PROCEDURE update_installed_base_line(p_api_version IN NUMBER,
7991 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
7992 x_return_status OUT NOCOPY VARCHAR2,
7993 x_msg_count OUT NOCOPY NUMBER,
7994 x_msg_data OUT NOCOPY VARCHAR2,
7995 p_lty_code IN OKC_LINE_STYLES_V.LTY_CODE%TYPE,
7996 p_clev_rec IN clev_rec_type,
7997 p_klev_rec IN klev_rec_type,
7998 p_cimv_rec IN cimv_rec_type,
7999 p_itiv_rec IN itiv_rec_type,
8000 x_clev_rec OUT NOCOPY clev_rec_type,
8001 x_klev_rec OUT NOCOPY klev_rec_type,
8002 x_cimv_rec OUT NOCOPY cimv_rec_type,
8003 x_itiv_rec OUT NOCOPY itiv_rec_type) IS
8004
8005 l_clev_rec clev_rec_type;
8006 l_cimv_rec cimv_rec_type;
8007 l_itiv_rec itiv_rec_type;
8008 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
8009 ln_tas_id OKL_TRX_ASSETS.ID%TYPE;
8010 lv_dummy VARCHAR2(3) := OKL_API.G_MISS_CHAR ;
8011 i NUMBER := 0;
8012 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_IB_LINE';
8013 BEGIN
8014 x_return_status := OKL_API.G_RET_STS_SUCCESS;
8015 -- Call start_activity to create savepoint, check compatibility
8016 -- and initialize message list
8017 x_return_status := OKL_API.START_ACTIVITY (
8018 l_api_name
8019 ,p_init_msg_list
8020 ,'_PVT'
8021 ,x_return_status);
8022 -- Check if activity started successfully
8023 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8024 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8025 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8026 RAISE OKL_API.G_EXCEPTION_ERROR;
8027 END IF;
8028 -- Check the cle_id that is of the top Fin Asset line
8029 validate_cle_lse_id(p_clev_rec => p_clev_rec,
8030 p_lty_code => p_lty_code,
8031 x_lty_code => l_lty_code,
8032 x_return_status => x_return_status);
8033 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8034 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8035 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8036 RAISE OKL_API.G_EXCEPTION_ERROR;
8037 END IF;
8038 -- since IB Line is a sub line of instance line we have to check weather
8039 -- which line are creating under which line
8040 IF l_lty_code = G_INST_LINE_LTY_CODE THEN
8041 -- Now the all the records are there we can create Instance Line
8042 OKL_CONTRACT_PUB.update_contract_line(p_api_version => p_api_version,
8043 p_init_msg_list => p_init_msg_list,
8044 x_return_status => x_return_status,
8045 x_msg_count => x_msg_count,
8046 x_msg_data => x_msg_data,
8047 p_clev_rec => p_clev_rec,
8048 p_klev_rec => p_klev_rec,
8049 x_clev_rec => x_clev_rec,
8050 x_klev_rec => x_klev_rec);
8051 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8052 OKL_API.set_message(p_app_name => G_APP_NAME,
8053 p_msg_name => G_UPDATING_IB_LINE);
8054 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8055 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8056 OKL_API.set_message(p_app_name => G_APP_NAME,
8057 p_msg_name => G_UPDATING_IB_LINE);
8058 RAISE OKL_API.G_EXCEPTION_ERROR;
8059 END IF;
8060 l_cimv_rec := p_cimv_rec;
8061 IF l_cimv_rec.cle_id <> x_clev_rec.id THEN
8062 OKL_API.set_message(p_app_name => G_APP_NAME,
8063 p_msg_name => G_ITEM_RECORD);
8064 RAISE OKL_API.G_EXCEPTION_ERROR;
8065 END IF;
8066 IF l_cimv_rec.dnz_chr_id <> x_clev_rec.dnz_chr_id THEN
8067 OKL_API.set_message(p_app_name => G_APP_NAME,
8068 p_msg_name => G_ITEM_RECORD);
8069 RAISE OKL_API.G_EXCEPTION_ERROR;
8070 END IF;
8071 IF (l_cimv_rec.object1_id1 IS NULL OR
8072 l_cimv_rec.object1_id1 = OKL_API.G_MISS_CHAR) AND
8073 (l_cimv_rec.object1_id2 IS NULL OR
8074 l_cimv_rec.object1_id2 = OKL_API.G_MISS_CHAR) THEN
8075 -- We have create the item rec,tal rec,trx rec and also create the iti rec
8076 -- Creation of Item Record for the above record information
8077 OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version => p_api_version,
8078 p_init_msg_list => p_init_msg_list,
8079 x_return_status => x_return_status,
8080 x_msg_count => x_msg_count,
8081 x_msg_data => x_msg_data,
8082 p_cimv_rec => l_cimv_rec,
8083 x_cimv_rec => x_cimv_rec);
8084 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8085 OKL_API.set_message(p_app_name => G_APP_NAME,
8086 p_msg_name => G_UPDATING_IB_ITEM);
8087 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8088 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8089 OKL_API.set_message(p_app_name => G_APP_NAME,
8090 p_msg_name => G_UPDATING_IB_ITEM);
8091 RAISE OKL_API.G_EXCEPTION_ERROR;
8092 END IF;
8093 validate_iti_kle_id(p_klev_rec => x_klev_rec,
8094 x_record_exists => lv_dummy,
8095 x_return_status => x_return_status);
8096 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8097 OKL_API.set_message(p_app_name => G_APP_NAME,
8098 p_msg_name => G_ITI_ID);
8099 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8100 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8101 OKL_API.set_message(p_app_name => G_APP_NAME,
8102 p_msg_name => G_ITI_ID);
8103 RAISE OKL_API.G_EXCEPTION_ERROR;
8104 END IF;
8105 IF (lv_dummy IS NOT NUll OR
8106 lv_dummy <> OKL_API.G_MISS_CHAR) THEN
8107 IF p_itiv_rec.kle_id <> x_klev_rec.id THEN
8108 OKL_API.set_message(p_app_name => G_APP_NAME,
8109 p_msg_name => G_ITI_ID);
8110 RAISE OKL_API.G_EXCEPTION_ERROR;
8111 END IF;
8112 update_txl_itm_insts(p_api_version => p_api_version,
8113 p_init_msg_list => p_init_msg_list,
8114 x_return_status => x_return_status,
8115 x_msg_count => x_msg_count,
8116 x_msg_data => x_msg_data,
8117 p_itiv_rec => p_itiv_rec,
8118 x_itiv_rec => x_itiv_rec);
8119 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8120 OKL_API.set_message(p_app_name => G_APP_NAME,
8121 p_msg_name => G_ITI_ID);
8122 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8123 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8124 OKL_API.set_message(p_app_name => G_APP_NAME,
8125 p_msg_name => G_ITI_ID);
8126 RAISE OKL_API.G_EXCEPTION_ERROR;
8127 END IF;
8128 ELSE
8129 OKL_API.set_message(p_app_name => G_APP_NAME,
8130 p_msg_name => G_ITI_ID);
8131 RAISE OKL_API.G_EXCEPTION_ERROR;
8132 END IF;
8133 ELSIF (l_cimv_rec.object1_id1 IS NOT NULL OR
8134 l_cimv_rec.object1_id1 <> OKL_API.G_MISS_CHAR) AND
8135 (l_cimv_rec.object1_id2 IS NOT NULL OR
8136 l_cimv_rec.object1_id2 <> OKL_API.G_MISS_CHAR) THEN
8137 -- Creation of Item Record for the above record information
8138 OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version => p_api_version,
8139 p_init_msg_list => p_init_msg_list,
8140 x_return_status => x_return_status,
8141 x_msg_count => x_msg_count,
8142 x_msg_data => x_msg_data,
8143 p_cimv_rec => l_cimv_rec,
8144 x_cimv_rec => x_cimv_rec);
8145 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8146 OKL_API.set_message(p_app_name => G_APP_NAME,
8147 p_msg_name => G_UPDATING_IB_ITEM);
8148 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8149 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8150 OKL_API.set_message(p_app_name => G_APP_NAME,
8151 p_msg_name => G_UPDATING_IB_ITEM);
8152 RAISE OKL_API.G_EXCEPTION_ERROR;
8153 END IF;
8154 ELSE
8155 OKL_API.set_message(p_app_name => G_APP_NAME,
8156 p_msg_name => G_UPDATING_IB_ITEM);
8157 RAISE OKL_API.G_EXCEPTION_ERROR;
8158 END IF;
8159 ELSE
8160 OKL_API.set_message(p_app_name => G_APP_NAME,
8161 p_msg_name => G_LINE_STYLE);
8162 RAISE OKL_API.G_EXCEPTION_ERROR;
8163 END IF;
8164 OKL_API.END_ACTIVITY (x_msg_count,
8165 x_msg_data );
8166 EXCEPTION
8167 WHEN OKL_API.G_EXCEPTION_ERROR THEN
8168 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8169 l_api_name,
8170 G_PKG_NAME,
8171 'OKL_API.G_RET_STS_ERROR',
8172 x_msg_count,
8173 x_msg_data,
8174 '_PVT');
8175 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8176 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8177 l_api_name,
8178 G_PKG_NAME,
8179 'OKL_API.G_RET_STS_UNEXP_ERROR',
8180 x_msg_count,
8181 x_msg_data,
8182 '_PVT');
8183 WHEN OTHERS THEN
8184 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8185 l_api_name,
8186 G_PKG_NAME,
8187 'OTHERS',
8188 x_msg_count,
8189 x_msg_data,
8190 '_PVT');
8191 END update_installed_base_line;
8192 -------------------------------------------------------------------------------------------------------
8193 ---------------------------- Main Process for Creation of Financial Asset -------------------------------
8194 -------------------------------------------------------------------------------------------------------
8195 PROCEDURE create_fin_line(
8196 p_api_version IN NUMBER,
8197 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
8198 x_return_status OUT NOCOPY VARCHAR2,
8199 x_msg_count OUT NOCOPY NUMBER,
8200 x_msg_data OUT NOCOPY VARCHAR2,
8201 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
8202 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
8203 p_clev_rec IN clev_rec_type,
8204 p_klev_rec IN klev_rec_type,
8205 x_clev_rec OUT NOCOPY clev_rec_type,
8206 x_klev_rec OUT NOCOPY klev_rec_type) IS
8207 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_FIN_AST_LINES';
8208 l_clev_rec clev_rec_type;
8209 -- Variables for validation of line style
8210 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
8211 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
8212 BEGIN
8213 x_return_status := OKL_API.G_RET_STS_SUCCESS;
8214 -- Call start_activity to create savepoint, check compatibility
8215 -- and initialize message list
8216 x_return_status := OKL_API.START_ACTIVITY (
8217 l_api_name
8218 ,p_init_msg_list
8219 ,'_PVT'
8220 ,x_return_status);
8221 -- Check if activity started successfully
8222 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8223 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8224 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8225 RAISE OKL_API.G_EXCEPTION_ERROR;
8226 END IF;
8227
8228 -- 4414408 The validation is now performed in create_all_line procedure
8229 /*
8230 -- To Check We Got the Valid info
8231 IF UPPER(p_new_yn) NOT IN ('Y','N') OR
8232 (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
8233 UPPER(p_new_yn) IS NULL) THEN
8234 OKL_API.set_message(p_app_name => G_APP_NAME,
8235 p_msg_name => G_INVALID_YN,
8236 p_token1 => G_COL_NAME_TOKEN,
8237 p_token1_value => 'p_new_yn');
8238 -- Halt Validation
8239 RAISE OKL_API.G_EXCEPTION_ERROR;
8240 END IF;
8241 -- Validate to see if the asset_number given is not null
8242 -- and also Validate asset_number does not exists
8243 -- in OKL_TXL_ASSETS_V
8244 IF UPPER(p_new_yn) = 'Y' THEN
8245 validate_new_asset_number(x_return_status => x_return_status,
8246 p_asset_number => p_asset_number,
8247 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
8248 -- Check if activity started successfully
8249 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8250 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8251 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8252 RAISE OKL_API.G_EXCEPTION_ERROR;
8253 END IF;
8254 ELSE
8255 validate_new_asset_number(x_return_status => x_return_status,
8256 p_asset_number => p_asset_number,
8257 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
8258 -- Check if activity ended successfully
8259 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8260 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8261 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8262 RAISE OKL_API.G_EXCEPTION_ERROR;
8263 END IF;
8264 END IF;
8265 */
8266 -- 4414408 The validations in Validate_lse_id and Validate_dnz_chr_id are redundant
8267 /*
8268 -- Validate Line Style id and get the line type code
8269 -- and line style type for further processing
8270 validate_lse_id(p_clev_rec => p_clev_rec,
8271 x_return_status => x_return_status,
8272 x_lty_code => l_lty_code,
8273 x_lse_type => l_lse_type);
8274 -- Check if activity started successfully
8275 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8276 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8277 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8278 RAISE OKL_API.G_EXCEPTION_ERROR;
8279 END IF;
8280 -- Validate the Dnz_Chr_id
8281 validate_dnz_chr_id(p_clev_rec => p_clev_rec,
8282 x_return_status => x_return_status);
8283 -- Check if activity started successfully
8284 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8285 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8286 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8287 RAISE OKL_API.G_EXCEPTION_ERROR;
8288 END IF;
8289 */
8290 -- creating of finanical Asset Lines which is the top Line
8291 -- While createing the cle_id will be null, chr_id will be not null
8292 -- and also the dnz_chr_id will be not null.Lse_id given will also helps
8293 -- to decide that this line is finanical Asset Line
8294 l_clev_rec := p_clev_rec;
8295 IF (l_clev_rec.cle_id = OKL_API.G_MISS_NUM OR
8296 l_clev_rec.cle_id IS NULL) AND
8297 (l_clev_rec.dnz_chr_id IS NOT NULL OR
8298 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
8299 (l_clev_rec.chr_id IS NOT NULL OR
8300 l_clev_rec.chr_id <> OKL_API.G_MISS_NUM) AND
8301 -- #4414408
8302 -- l_lty_code = G_FIN_LINE_LTY_CODE AND
8303 -- l_lse_type = G_TLS_TYPE THEN
8304 l_clev_rec.lse_id = G_FIN_LINE_LTY_ID THEN
8305 -- We need to do this because we wanted the asset number be unique
8306 -- both in the transaction level and the line levels
8307 l_clev_rec.name := p_asset_number;
8308 -- Entering the Asset Description
8309 create_financial_asset_line(p_api_version => p_api_version,
8310 p_init_msg_list => p_init_msg_list,
8311 x_return_status => x_return_status,
8312 x_msg_count => x_msg_count,
8313 x_msg_data => x_msg_data,
8314 p_clev_rec => l_clev_rec,
8315 p_klev_rec => p_klev_rec,
8316 x_clev_rec => x_clev_rec,
8317 x_klev_rec => x_klev_rec);
8318 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8319 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8320 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8321 RAISE OKL_API.G_EXCEPTION_ERROR;
8322 END IF;
8323 ELSE
8324 OKL_API.set_message(p_app_name => G_APP_NAME,
8325 p_msg_name => G_INVALID_CRITERIA,
8326 p_token1 => G_COL_NAME_TOKEN,
8327 p_token1_value => 'Financial Asset line');
8328 x_return_status := OKL_API.G_RET_STS_ERROR;
8329 RAISE OKL_API.G_EXCEPTION_ERROR;
8330 END IF;
8331 OKL_API.END_ACTIVITY (x_msg_count,
8332 x_msg_data );
8333 EXCEPTION
8334 WHEN OKL_API.G_EXCEPTION_ERROR THEN
8335 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8336 l_api_name,
8337 G_PKG_NAME,
8338 'OKL_API.G_RET_STS_ERROR',
8339 x_msg_count,
8340 x_msg_data,
8341 '_PVT');
8342 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8343 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8344 l_api_name,
8345 G_PKG_NAME,
8346 'OKL_API.G_RET_STS_UNEXP_ERROR',
8347 x_msg_count,
8348 x_msg_data,
8349 '_PVT');
8350 WHEN OTHERS THEN
8351 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8352 l_api_name,
8353 G_PKG_NAME,
8354 'OTHERS',
8355 x_msg_count,
8356 x_msg_data,
8357 '_PVT');
8358 END create_fin_line;
8359 -------------------------------------------------------------------------------------------------------
8360 ---------------------------- Main Process for update of Financial Asset -------------------------------
8361 -------------------------------------------------------------------------------------------------------
8362 PROCEDURE Update_fin_line(
8363 p_api_version IN NUMBER,
8364 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
8365 x_return_status OUT NOCOPY VARCHAR2,
8366 x_msg_count OUT NOCOPY NUMBER,
8367 x_msg_data OUT NOCOPY VARCHAR2,
8368 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
8369 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
8370 p_clev_rec IN clev_rec_type,
8371 p_klev_rec IN klev_rec_type,
8372 x_clev_rec OUT NOCOPY clev_rec_type,
8373 x_klev_rec OUT NOCOPY klev_rec_type,
8374 p_validate_fin_line IN VARCHAR2 DEFAULT OKL_API.G_TRUE) IS
8375 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_FIN_AST_LINES';
8376 l_clev_rec clev_rec_type := p_clev_rec;
8377 l_klev_rec klev_rec_type := p_klev_rec;
8378 -- Variables for validation of line style
8379 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
8380 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
8381 ln_fa_id OKC_K_LINES_V.ID%TYPE;
8382
8383 -- Temp variables for capital reduction and tradein amount
8384 tradein_amount OKL_K_LINES.TRADEIN_AMOUNT%TYPE;
8385 capital_reduction OKL_K_LINES.CAPITAL_REDUCTION%TYPE;
8386
8387 CURSOR get_fa_id(p_top_line OKC_K_LINES_V.ID%TYPE,
8388 p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE)
8389 IS
8390 -- #4414408
8391 SELECT cle.id
8392 -- FROM okc_subclass_top_line stl,
8393 -- okc_line_styles_b lse2,
8394 -- okc_line_styles_b lse1,
8395 FROM okc_k_lines_b cle
8396 WHERE cle.cle_id = p_top_line
8397 AND cle.dnz_chr_id = p_dnz_chr_id
8398 -- AND lse1.id = cle.lse_id
8399 -- AND lse1.lty_code = G_FA_LINE_LTY_CODE
8400 -- AND lse1.lse_parent_id = lse2.id
8401 -- AND lse2.lty_code = G_FIN_LINE_LTY_CODE
8402 -- AND lse2.id = stl.lse_id
8403 -- AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
8404 AND cle.lse_id = G_FA_LINE_LTY_ID;
8405
8406 BEGIN
8407 x_return_status := OKL_API.G_RET_STS_SUCCESS;
8408 -- Call start_activity to create savepoint, check compatibility
8409 -- and initialize message list
8410 x_return_status := OKL_API.START_ACTIVITY (
8411 l_api_name
8412 ,p_init_msg_list
8413 ,'_PVT'
8414 ,x_return_status);
8415 -- Check if activity started successfully
8416 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8417 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8418 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8419 RAISE OKL_API.G_EXCEPTION_ERROR;
8420 END IF;
8421 IF (p_validate_fin_line = OKL_API.G_TRUE) THEN
8422 validate_sts_code(p_clev_rec => l_clev_rec,
8423 x_return_status => x_return_status);
8424 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8425 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8426 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8427 RAISE OKL_API.G_EXCEPTION_ERROR;
8428 END IF;
8429 OPEN get_fa_id(p_top_line => l_clev_rec.id,
8430 p_dnz_chr_id => l_clev_rec.dnz_chr_id);
8431 FETCH get_fa_id INTO ln_fa_id;
8432 -- 4414408
8433 IF get_fa_id%NOTFOUND THEN
8434 OKL_API.set_message(p_app_name => G_APP_NAME,
8435 p_msg_name => G_LINE_RECORD);
8436 RAISE OKL_API.G_EXCEPTION_ERROR;
8437 END IF;
8438 CLOSE get_fa_id;
8439 -- To Check We Got the Valid info
8440 IF UPPER(p_new_yn) NOT IN ('Y','N') OR
8441 (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
8442 UPPER(p_new_yn) IS NULL) THEN
8443 OKL_API.set_message(p_app_name => G_APP_NAME,
8444 p_msg_name => G_INVALID_YN,
8445 p_token1 => G_COL_NAME_TOKEN,
8446 p_token1_value => 'p_new_yn');
8447 -- Halt Validation
8448 RAISE OKL_API.G_EXCEPTION_ERROR;
8449 END IF;
8450 -- Validate to see if the asset_number given is not null
8451 -- and also Validate asset_number does not exists
8452 -- in OKL_TXL_ASSETS_V
8453 IF UPPER(p_new_yn) = 'Y' THEN
8454 validate_new_ast_num_update(x_return_status => x_return_status,
8455 p_asset_number => p_asset_number,
8456 p_kle_id => ln_fa_id,
8457 p_dnz_chr_id => l_clev_rec.dnz_chr_id);
8458 -- Check if activity started successfully
8459 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8460 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8461 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8462 RAISE OKL_API.G_EXCEPTION_ERROR;
8463 END IF;
8464 ELSIF UPPER(p_new_yn) = 'N' THEN
8465 validate_new_ast_num_update(x_return_status => x_return_status,
8466 p_asset_number => p_asset_number,
8467 p_kle_id => ln_fa_id,
8468 p_dnz_chr_id => l_clev_rec.dnz_chr_id);
8469 -- Check if activity started successfully
8470 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8471 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8472 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8473 RAISE OKL_API.G_EXCEPTION_ERROR;
8474 END IF;
8475 END IF;
8476 -- Validate Line Style id and get the line type code
8477 -- and line style type for further processing
8478 validate_lse_id(p_clev_rec => l_clev_rec,
8479 x_return_status => x_return_status,
8480 x_lty_code => l_lty_code,
8481 x_lse_type => l_lse_type);
8482 -- Check if activity started successfully
8483 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8484 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8485 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8486 RAISE OKL_API.G_EXCEPTION_ERROR;
8487 END IF;
8488 -- Validate the Dnz_Chr_id
8489 validate_dnz_chr_id(p_clev_rec => l_clev_rec,
8490 x_return_status => x_return_status);
8491 -- Check if activity started successfully
8492 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8493 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8494 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8495 RAISE OKL_API.G_EXCEPTION_ERROR;
8496 END IF;
8497 END IF;
8498 -- Modified by rravikir
8499 -- Call to Accounting Util package to address Multi Currency requirement
8500 -- Start
8501 /*
8502 -- nnirnaka 12/24/02 commented this out as this already happens in
8503 -- contract line update
8504
8505 IF (l_klev_rec.capital_reduction <> OKL_API.G_MISS_NUM AND
8506 l_klev_rec.capital_reduction IS NOT NULL) THEN
8507 capital_reduction := l_klev_rec.capital_reduction;
8508 l_klev_rec.capital_reduction :=
8509 OKL_ACCOUNTING_UTIL.CROSS_CURRENCY_ROUND_AMOUNT(l_klev_rec.capital_reduction,
8510 l_clev_rec.currency_code);
8511
8512 IF (capital_reduction <> 0 AND l_klev_rec.capital_reduction = 0) THEN
8513 OKL_API.set_message(p_app_name => G_APP_NAME,
8514 p_msg_name => G_AMOUNT_ROUNDING,
8515 p_token1 => 'AMT',
8516 p_token1_value => to_char(capital_reduction));
8517 RAISE G_EXCEPTION_HALT_VALIDATION;
8518 END IF;
8519 END IF;
8520
8521 IF (l_klev_rec.tradein_amount <> OKL_API.G_MISS_NUM AND
8522 l_klev_rec.tradein_amount IS NOT NULL) THEN
8523 tradein_amount := l_klev_rec.tradein_amount;
8524 l_klev_rec.tradein_amount :=
8525 OKL_ACCOUNTING_UTIL.CROSS_CURRENCY_ROUND_AMOUNT(l_klev_rec.tradein_amount,
8526 l_clev_rec.currency_code);
8527
8528 IF (tradein_amount <> 0 AND l_klev_rec.tradein_amount = 0) THEN
8529 OKL_API.set_message(p_app_name => G_APP_NAME,
8530 p_msg_name => G_AMOUNT_ROUNDING,
8531 p_token1 => 'AMT',
8532 p_token1_value => to_char(tradein_amount));
8533 RAISE G_EXCEPTION_HALT_VALIDATION;
8534 END IF;
8535 END IF;
8536
8537 -- End Modification for Multi Currency
8538 */
8539
8540 -- Updating of finanical Asset Lines which is the top Line
8541 -- While Updating the cle_id will be null, chr_id will be not null
8542 -- and also the dnz_chr_id will be not null.Lse_id given will also helps
8543 -- to decide that this line is finanical Asset Line
8544 IF (l_clev_rec.cle_id = OKL_API.G_MISS_NUM OR
8545 l_clev_rec.cle_id IS NULL) AND
8546 (l_clev_rec.dnz_chr_id IS NOT NULL OR
8547 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
8548 (l_clev_rec.chr_id IS NOT NULL OR
8549 l_clev_rec.chr_id <> OKL_API.G_MISS_NUM) AND
8550 -- l_lty_code = G_FIN_LINE_LTY_CODE AND
8551 -- l_lse_type = G_TLS_TYPE THEN
8552 l_clev_rec.lse_id = G_FIN_LINE_LTY_ID THEN
8553
8554 -- Calling the Process
8555 update_financial_asset_line(p_api_version => p_api_version,
8556 p_init_msg_list => p_init_msg_list,
8557 x_return_status => x_return_status,
8558 x_msg_count => x_msg_count,
8559 x_msg_data => x_msg_data,
8560 p_clev_rec => l_clev_rec,
8561 p_klev_rec => l_klev_rec,
8562 x_clev_rec => x_clev_rec,
8563 x_klev_rec => x_klev_rec);
8564 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8565 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8566 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8567 RAISE OKL_API.G_EXCEPTION_ERROR;
8568 END IF;
8569 ELSE
8570 OKL_API.set_message(p_app_name => G_APP_NAME,
8571 p_msg_name => G_INVALID_CRITERIA,
8572 p_token1 => 'LINE_STYLE',
8573 p_token1_value => 'Financial Asset line');
8574 x_return_status := OKL_API.G_RET_STS_ERROR;
8575 RAISE OKL_API.G_EXCEPTION_ERROR;
8576 END IF;
8577 OKL_API.END_ACTIVITY (x_msg_count,
8578 x_msg_data );
8579 EXCEPTION
8580 WHEN OKL_API.G_EXCEPTION_ERROR THEN
8581 IF get_fa_id%ISOPEN THEN
8582 CLOSE get_fa_id;
8583 END IF;
8584 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8585 l_api_name,
8586 G_PKG_NAME,
8587 'OKL_API.G_RET_STS_ERROR',
8588 x_msg_count,
8589 x_msg_data,
8590 '_PVT');
8591 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8592 IF get_fa_id%ISOPEN THEN
8593 CLOSE get_fa_id;
8594 END IF;
8595 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8596 l_api_name,
8597 G_PKG_NAME,
8598 'OKL_API.G_RET_STS_UNEXP_ERROR',
8599 x_msg_count,
8600 x_msg_data,
8601 '_PVT');
8602 WHEN OTHERS THEN
8603 IF get_fa_id%ISOPEN THEN
8604 CLOSE get_fa_id;
8605 END IF;
8606 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8607 l_api_name,
8608 G_PKG_NAME,
8609 'OTHERS',
8610 x_msg_count,
8611 x_msg_data,
8612 '_PVT');
8613 END Update_fin_line;
8614 -------------------------------------------------------------------------------------------------------
8615 ----------------- Main Process for update of Financial Asset for Capital Cost -------------------------
8616 -------------------------------------------------------------------------------------------------------
8617 PROCEDURE Update_fin_cap_cost(
8618 p_api_version IN NUMBER,
8619 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
8620 x_return_status OUT NOCOPY VARCHAR2,
8621 x_msg_count OUT NOCOPY NUMBER,
8622 x_msg_data OUT NOCOPY VARCHAR2,
8623 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
8624 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
8625 p_clev_rec IN clev_rec_type,
8626 p_klev_rec IN klev_rec_type,
8627 x_clev_rec OUT NOCOPY clev_rec_type,
8628 x_klev_rec OUT NOCOPY klev_rec_type) IS
8629 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_FIN_CAP_COST';
8630 l_clev_rec clev_rec_type := p_clev_rec;
8631 l_klev_rec klev_rec_type := p_klev_rec;
8632 lx_clev_rec clev_rec_type;
8633 lx_klev_rec klev_rec_type;
8634 CURSOR c_get_lse_id_sts(p_top_line_id OKC_K_LINES_V.ID%TYPE) IS
8635 SELECT lse.id,
8636 cle.sts_code
8637 FROM okc_subclass_top_line stl,
8638 okc_line_styles_b lse,
8639 okc_k_lines_v cle
8640 WHERE cle.id = p_top_line_id
8641 AND cle.lse_id = lse.id
8642 AND lse.lty_code = G_FIN_LINE_LTY_CODE
8643 AND lse.lse_parent_id is null
8644 AND lse.lse_type = G_TLS_TYPE
8645 AND lse.id = stl.lse_id
8646 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
8647
8648 BEGIN
8649 x_return_status := OKL_API.G_RET_STS_SUCCESS;
8650 -- Call start_activity to create savepoint, check compatibility
8651 -- and initialize message list
8652 x_return_status := OKL_API.START_ACTIVITY (
8653 l_api_name
8654 ,p_init_msg_list
8655 ,'_PVT'
8656 ,x_return_status);
8657 -- Check if activity started successfully
8658 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8659 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8660 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8661 RAISE OKL_API.G_EXCEPTION_ERROR;
8662 END IF;
8663 OPEN c_get_lse_id_sts(p_top_line_id => l_clev_rec.id);
8664 FETCH c_get_lse_id_sts INTO l_clev_rec.lse_id,
8665 l_clev_rec.sts_code;
8666 -- 4414408
8667 IF c_get_lse_id_sts%NOTFOUND THEN
8668 OKL_API.set_message(p_app_name => G_APP_NAME,
8669 p_msg_name => G_LINE_RECORD);
8670 RAISE OKL_API.G_EXCEPTION_ERROR;
8671 END IF;
8672 CLOSE c_get_lse_id_sts;
8673 -- Here we update the capital Amount for the Top line of klev_rec
8674 --Bug# 3877032 :
8675 --IF (l_klev_rec.capital_reduction_percent IS NULL OR
8676 --l_klev_rec.capital_reduction_percent = OKL_API.G_MISS_NUM ) AND
8677 --(l_klev_rec.capital_reduction IS NULL OR
8678 --l_klev_rec.capital_reduction = OKL_API.G_MISS_NUM ) AND
8679 --(l_klev_rec.tradein_amount IS NULL OR
8680 --l_klev_rec.tradein_amount = OKL_API.G_MISS_NUM ) THEN
8681
8682 IF l_klev_rec.capital_reduction_percent = OKL_API.G_MISS_NUM AND
8683 l_klev_rec.capital_reduction = OKL_API.G_MISS_NUM AND
8684 l_klev_rec.tradein_amount = OKL_API.G_MISS_NUM THEN
8685 -- Updating of finanical Asset Lines with all the values
8686 Update_fin_line(p_api_version => p_api_version,
8687 p_init_msg_list => p_init_msg_list,
8688 x_return_status => x_return_status,
8689 x_msg_count => x_msg_count,
8690 x_msg_data => x_msg_data,
8691 P_new_yn => P_new_yn,
8692 p_asset_number => p_asset_number,
8693 p_clev_rec => l_clev_rec,
8694 p_klev_rec => l_klev_rec,
8695 x_clev_rec => x_clev_rec,
8696 x_klev_rec => x_klev_rec,
8697 p_validate_fin_line => OKL_API.G_TRUE); -- 4414408
8698 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8699 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8700 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8701 RAISE OKL_API.G_EXCEPTION_ERROR;
8702 END IF;
8703 ELSE
8704 -- Here we update the capital Amount for the Top line of klev_rec
8705 -- But further we first have to update the top line with values
8706 -- and then call the formula enigne which will calculat the capital amount
8707 -- and update the top line again, we have to take this route because we
8708 -- will have to depend on Formula engine which in turn will calculate
8709 -- by querying the data.
8710 Update_fin_line(p_api_version => p_api_version,
8711 p_init_msg_list => p_init_msg_list,
8712 x_return_status => x_return_status,
8713 x_msg_count => x_msg_count,
8714 x_msg_data => x_msg_data,
8715 P_new_yn => P_new_yn,
8716 p_asset_number => p_asset_number,
8717 p_clev_rec => l_clev_rec,
8718 p_klev_rec => l_klev_rec,
8719 x_clev_rec => x_clev_rec,
8720 x_klev_rec => x_klev_rec,
8721 p_validate_fin_line => OKL_API.G_TRUE);
8722 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8723 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8724 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8725 RAISE OKL_API.G_EXCEPTION_ERROR;
8726 END IF;
8727 OKL_EXECUTE_FORMULA_PUB.execute(p_api_version => p_api_version,
8728 p_init_msg_list => p_init_msg_list,
8729 x_return_status => x_return_status,
8730 x_msg_count => x_msg_count,
8731 x_msg_data => x_msg_data,
8732 p_formula_name => G_FORMULA_CAP,
8733 p_contract_id => x_clev_rec.dnz_chr_id,
8734 p_line_id => x_clev_rec.id,
8735 x_value => x_klev_rec.capital_amount);
8736 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8737 OKL_API.set_message(p_app_name => G_APP_NAME,
8738 p_msg_name => G_CALC_AMOUNT,
8739 p_token1 => G_AMT_TOKEN,
8740 p_token1_value => 'Capital Amount');
8741 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8742 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8743 OKL_API.set_message(p_app_name => G_APP_NAME,
8744 p_msg_name => G_CALC_AMOUNT,
8745 p_token1 => G_AMT_TOKEN,
8746 p_token1_value => 'Capital Amount');
8747 RAISE OKL_API.G_EXCEPTION_ERROR;
8748 END IF;
8749 -- Updating of finanical Asset Lines with all the values
8750 Update_fin_line(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_new_yn => P_new_yn,
8756 p_asset_number => p_asset_number,
8757 p_clev_rec => x_clev_rec,
8758 p_klev_rec => x_klev_rec,
8759 x_clev_rec => lx_clev_rec,
8760 x_klev_rec => lx_klev_rec,
8761 p_validate_fin_line => OKL_API.G_TRUE);
8762 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8763 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8764 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8765 RAISE OKL_API.G_EXCEPTION_ERROR;
8766 END IF;
8767 x_clev_rec := lx_clev_rec;
8768 x_klev_rec := lx_klev_rec;
8769 END IF;
8770 -- We need to change the status of the header whenever there is updating happening
8771 -- after the contract status is approved
8772 IF (x_clev_rec.dnz_chr_id is NOT NULL) AND
8773 (x_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
8774 --cascade edit status on to lines
8775 okl_contract_status_pub.cascade_lease_status_edit
8776 (p_api_version => p_api_version,
8777 p_init_msg_list => p_init_msg_list,
8778 x_return_status => x_return_status,
8779 x_msg_count => x_msg_count,
8780 x_msg_data => x_msg_data,
8781 p_chr_id => x_clev_rec.dnz_chr_id);
8782 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8783 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8784 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8785 RAISE OKL_API.G_EXCEPTION_ERROR;
8786 END IF;
8787 END IF;
8788 EXCEPTION
8789 WHEN OKL_API.G_EXCEPTION_ERROR THEN
8790 IF c_get_lse_id_sts%ISOPEN THEN
8791 CLOSE c_get_lse_id_sts;
8792 END IF;
8793 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8794 l_api_name,
8795 G_PKG_NAME,
8796 'OKL_API.G_RET_STS_ERROR',
8797 x_msg_count,
8798 x_msg_data,
8799 '_PVT');
8800 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8801 IF c_get_lse_id_sts%ISOPEN THEN
8802 CLOSE c_get_lse_id_sts;
8803 END IF;
8804 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8805 l_api_name,
8806 G_PKG_NAME,
8807 'OKL_API.G_RET_STS_UNEXP_ERROR',
8808 x_msg_count,
8809 x_msg_data,
8810 '_PVT');
8811 WHEN OTHERS THEN
8812 IF c_get_lse_id_sts%ISOPEN THEN
8813 CLOSE c_get_lse_id_sts;
8814 END IF;
8815 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8816 l_api_name,
8817 G_PKG_NAME,
8818 'OTHERS',
8819 x_msg_count,
8820 x_msg_data,
8821 '_PVT');
8822 END Update_fin_cap_cost;
8823 -----------------------------------------------------------------------------------
8824 -- Start of Commnets
8825 -- Badrinath Kuchibholta
8826 -- Procedure Name : oec_calc_upd_fin_rec
8827 -- Description : oec_calc_upd_fin_rec
8828 -- Business Rules :
8829 -- Parameters :
8830 -- Version : 1.0
8831 -- End of Commnets
8832
8833 PROCEDURE oec_calc_upd_fin_rec(
8834 p_api_version IN NUMBER,
8835 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
8836 x_return_status OUT NOCOPY VARCHAR2,
8837 x_msg_count OUT NOCOPY NUMBER,
8838 x_msg_data OUT NOCOPY VARCHAR2,
8839 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
8840 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
8841 p_top_line_id IN OKC_K_LINES_V.ID%TYPE,
8842 p_dnz_chr_id IN OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
8843 x_fin_clev_rec OUT NOCOPY clev_rec_type,
8844 x_fin_klev_rec OUT NOCOPY klev_rec_type,
8845 x_oec OUT NOCOPY OKL_K_LINES_V.OEC%TYPE,
8846 p_validate_fin_line IN VARCHAR2 DEFAULT OKL_API.G_TRUE) IS
8847
8848 ln_oec OKL_K_LINES_V.OEC%TYPE := 0;
8849 -- ln_top_line_id OKC_K_LINES_V.CLE_ID%TYPE := 0;
8850 l_update_clev_rec clev_rec_type;
8851 l_update_klev_rec klev_rec_type;
8852
8853 -- #4414408 Top line ID is now passed to the API
8854 /*
8855 -- To Find out the Top line ID
8856 CURSOR c_model_top_line(p_model_line_id OKC_K_LINES_V.ID%TYPE,
8857 p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
8858 SELECT cle.cle_id
8859 FROM okc_subclass_top_line stl,
8860 okc_line_styles_b lse2,
8861 okc_line_styles_b lse1,
8862 okc_k_items_v cim,
8863 okc_k_lines_v cle
8864 WHERE cle.id = p_model_line_id
8865 AND cle.dnz_chr_id = p_dnz_chr_id
8866 AND cle.id = cim.cle_id
8867 AND cle.dnz_chr_id = cim.dnz_chr_id
8868 AND cle.lse_id = lse1.id
8869 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
8870 AND lse1.lse_parent_id = lse2.id
8871 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
8872 AND lse2.id = stl.lse_id
8873 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE,G_QUOTE_SCS_CODE);
8874 */
8875 BEGIN
8876 -- initialize return status
8877 x_return_status := OKL_API.G_RET_STS_SUCCESS;
8878 /*
8879 OPEN c_model_top_line(p_model_line_id => p_model_line_id,
8880 p_dnz_chr_id => p_dnz_chr_id);
8881 FETCH c_model_top_line INTO ln_top_line_id;
8882 -- #4414408 Moved the IF statement below fetch statement
8883 IF c_model_top_line%NOTFOUND THEN
8884 OKL_API.set_message(p_app_name => G_APP_NAME,
8885 p_msg_name => G_NO_MATCHING_RECORD,
8886 p_token1 => G_COL_NAME_TOKEN,
8887 p_token1_value => 'cle_id');
8888 RAISE G_EXCEPTION_HALT_VALIDATION;
8889 END IF;
8890 -- #4414408 This condition will never be met
8891 -- IF (c_model_top_line%ROWCOUNT > 1) THEN
8892 -- OKL_API.set_message(p_app_name => G_APP_NAME,
8893 -- p_msg_name => 'More than one',
8894 -- p_token1 => 'Model line',
8895 -- p_token1_value => 'cle_id');
8896 -- RAISE G_EXCEPTION_HALT_VALIDATION;
8897 -- END IF;
8898
8899 CLOSE c_model_top_line;
8900 */
8901 -- to get the OEC
8902 /*
8903 x_oec := OKL_SEEDED_FUNCTIONS_PVT.LINE_OEC(p_dnz_chr_id => p_dnz_chr_id,
8904 p_cle_id => ln_top_line_id);
8905 */
8906 OKL_EXECUTE_FORMULA_PUB.execute(p_api_version => p_api_version,
8907 p_init_msg_list => p_init_msg_list,
8908 x_return_status => x_return_status,
8909 x_msg_count => x_msg_count,
8910 x_msg_data => x_msg_data,
8911 p_formula_name => G_FORMULA_OEC,
8912 p_contract_id => p_dnz_chr_id,
8913 p_line_id => p_top_line_id,
8914 x_value => x_oec);
8915
8916 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8917 OKL_API.set_message(p_app_name => G_APP_NAME,
8918 p_msg_name => G_CALC_AMOUNT,
8919 p_token1 => G_AMT_TOKEN,
8920 p_token1_value => 'OEC');
8921 RAISE G_EXCEPTION_HALT_VALIDATION;
8922 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8923 OKL_API.set_message(p_app_name => G_APP_NAME,
8924 p_msg_name => G_CALC_AMOUNT,
8925 p_token1 => G_AMT_TOKEN,
8926 p_token1_value => 'OEC');
8927 RAISE G_EXCEPTION_HALT_VALIDATION;
8928 END IF;
8929 -- To Get the cle top Line Record
8930 x_return_status := get_rec_clev(p_top_line_id, -- 4414408
8931 l_update_clev_rec);
8932 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8933 OKL_API.set_message(p_app_name => G_APP_NAME,
8934 p_msg_name => G_FETCHING_INFO,
8935 p_token1 => G_REC_NAME_TOKEN,
8936 p_token1_value => 'OKC_K_LINES_V Record');
8937 RAISE G_EXCEPTION_HALT_VALIDATION;
8938 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8939 OKL_API.set_message(p_app_name => G_APP_NAME,
8940 p_msg_name => G_FETCHING_INFO,
8941 p_token1 => G_REC_NAME_TOKEN,
8942 p_token1_value => 'OKC_K_LINES_V Record');
8943 RAISE G_EXCEPTION_HALT_VALIDATION;
8944 END IF;
8945 -- To Get the kle top Line Record
8946 x_return_status := get_rec_klev(p_top_line_id, -- 4414408
8947 l_update_klev_rec);
8948 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8949 OKL_API.set_message(p_app_name => G_APP_NAME,
8950 p_msg_name => G_FETCHING_INFO,
8951 p_token1 => G_REC_NAME_TOKEN,
8952 p_token1_value => 'OKL_K_LINES_V Record');
8953 RAISE G_EXCEPTION_HALT_VALIDATION;
8954 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8955 OKL_API.set_message(p_app_name => G_APP_NAME,
8956 p_msg_name => G_FETCHING_INFO,
8957 p_token1 => G_REC_NAME_TOKEN,
8958 p_token1_value => 'OKL_K_LINES_V Record');
8959 RAISE G_EXCEPTION_HALT_VALIDATION;
8960 END IF;
8961 IF l_update_klev_rec.id <> l_update_clev_rec.id THEN
8962 OKL_API.set_message(p_app_name => G_APP_NAME,
8963 p_msg_name => G_LINE_RECORD);
8964 RAISE G_EXCEPTION_HALT_VALIDATION;
8965 END IF;
8966 l_update_klev_rec.oec := x_oec;
8967
8968 -- Modified by rravikir
8969 -- Call to Accounting Util package to address Multi Currency requirement
8970 -- Start
8971 l_update_klev_rec.oec :=
8972 OKL_ACCOUNTING_UTIL.CROSS_CURRENCY_ROUND_AMOUNT(l_update_klev_rec.oec,
8973 l_update_clev_rec.currency_code);
8974
8975 IF (x_oec <> 0 AND l_update_klev_rec.oec = 0) THEN
8976 OKL_API.set_message(p_app_name => G_APP_NAME,
8977 p_msg_name => G_AMOUNT_ROUNDING,
8978 p_token1 => 'AMT',
8979 p_token1_value => to_char(x_oec));
8980 RAISE G_EXCEPTION_HALT_VALIDATION;
8981 END IF;
8982
8983 -- End Modification for Multi Currency
8984
8985 Update_fin_line(p_api_version => p_api_version,
8986 p_init_msg_list => p_init_msg_list,
8987 x_return_status => x_return_status,
8988 x_msg_count => x_msg_count,
8989 x_msg_data => x_msg_data,
8990 P_new_yn => P_new_yn,
8991 p_asset_number => p_asset_number,
8992 p_clev_rec => l_update_clev_rec,
8993 p_klev_rec => l_update_klev_rec,
8994 x_clev_rec => x_fin_clev_rec,
8995 x_klev_rec => x_fin_klev_rec,
8996 p_validate_fin_line => p_validate_fin_line); -- 4414408
8997 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8998 RAISE G_EXCEPTION_HALT_VALIDATION;
8999 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9000 RAISE G_EXCEPTION_HALT_VALIDATION;
9001 END IF;
9002 EXCEPTION
9003 WHEN G_EXCEPTION_STOP_VALIDATION then
9004 -- Notify Error
9005 x_return_status := OKL_API.G_RET_STS_ERROR;
9006 WHEN G_EXCEPTION_HALT_VALIDATION then
9007 -- If the cursor is open then it has to be closed
9008 -- 4414408
9009 -- IF c_model_top_line%ISOPEN THEN
9010 -- CLOSE c_model_top_line;
9011 -- END IF;
9012 -- notify caller of an error
9013 x_return_status := OKL_API.G_RET_STS_ERROR;
9014 WHEN OTHERS THEN
9015 -- store SQL error message on message stack
9016 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
9017 p_msg_name => G_UNEXPECTED_ERROR,
9018 p_token1 => G_SQLCODE_TOKEN,
9019 p_token1_value => SQLCODE,
9020 p_token2 => G_SQLERRM_TOKEN,
9021 p_token2_value => SQLERRM);
9022 -- If the cursor is open then it has to be closed
9023 -- 4414408
9024 -- IF c_model_top_line%ISOPEN THEN
9025 -- CLOSE c_model_top_line;
9026 -- END IF;
9027 -- notify caller of an error as UNEXPETED error
9028 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
9029 END oec_calc_upd_fin_rec;
9030 -----------------------------------------------------------------------------------
9031 -- Start of Commnets
9032 -- Badrinath Kuchibholta
9033 -- Procedure Name : cap_amt_calc_upd_fin_rec
9034 -- Description : cap_amt_calc_upd_fin_rec
9035 -- Business Rules :
9036 -- Parameters :
9037 -- Version : 1.0
9038 -- End of Commnets
9039
9040 PROCEDURE cap_amt_calc_upd_fin_rec(
9041 p_api_version IN NUMBER,
9042 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
9043 x_return_status OUT NOCOPY VARCHAR2,
9044 x_msg_count OUT NOCOPY NUMBER,
9045 x_msg_data OUT NOCOPY VARCHAR2,
9046 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
9047 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
9048 p_top_line_id IN OKC_K_LINES_V.ID%TYPE, -- 4414408
9049 p_dnz_chr_id IN OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
9050 x_fin_clev_rec OUT NOCOPY clev_rec_type,
9051 x_fin_klev_rec OUT NOCOPY klev_rec_type,
9052 x_cap_amt OUT NOCOPY OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE,
9053 p_validate_fin_line IN VARCHAR2 DEFAULT OKL_API.G_TRUE) IS
9054
9055 ln_cap_amt OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
9056 -- ln_top_line_id OKC_K_LINES_V.CLE_ID%TYPE := 0;
9057 l_update_clev_rec clev_rec_type;
9058 l_update_klev_rec klev_rec_type;
9059 -- #4414408 Top line ID is a parameter passed to the API
9060 /*
9061 -- To Find out the Top line ID
9062 CURSOR c_model_top_line(p_model_line_id OKC_K_LINES_V.ID%TYPE,
9063 p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
9064 SELECT cle.cle_id
9065 FROM okc_subclass_top_line stl,
9066 okc_line_styles_b lse2,
9067 okc_line_styles_b lse1,
9068 okc_k_items_v cim,
9069 okc_k_lines_v cle
9070 WHERE cle.id = p_model_line_id
9071 AND cle.dnz_chr_id = p_dnz_chr_id
9072 AND cle.id = cim.cle_id
9073 AND cle.dnz_chr_id = cim.dnz_chr_id
9074 AND cle.lse_id = lse1.id
9075 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
9076 AND lse1.lse_parent_id = lse2.id
9077 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
9078 AND lse2.id = stl.lse_id
9079 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
9080 */
9081
9082 BEGIN
9083 -- initialize return status
9084 x_return_status := OKL_API.G_RET_STS_SUCCESS;
9085 /*
9086 OPEN c_model_top_line(p_model_line_id => p_model_line_id,
9087 p_dnz_chr_id => p_dnz_chr_id);
9088 FETCH c_model_top_line INTO ln_top_line_id;
9089 -- #4414408 Moved the IF statement below fetch statement
9090 IF c_model_top_line%NOTFOUND THEN
9091 OKL_API.set_message(p_app_name => G_APP_NAME,
9092 p_msg_name => G_NO_MATCHING_RECORD,
9093 p_token1 => G_COL_NAME_TOKEN,
9094 p_token1_value => 'cle_id');
9095 RAISE G_EXCEPTION_HALT_VALIDATION;
9096 END IF;
9097 -- #4414408 This condition will never be met
9098 -- IF (c_model_top_line%ROWCOUNT > 1) THEN
9099 -- OKL_API.set_message(p_app_name => G_APP_NAME,
9100 -- p_msg_name => 'More than one',
9101 -- p_token1 => 'Model line',
9102 -- p_token1_value => 'cle_id');
9103 -- RAISE G_EXCEPTION_HALT_VALIDATION;
9104 -- END IF;
9105 CLOSE c_model_top_line;
9106 */
9107 -- to get the Capital Amount
9108 /*
9109 x_cap_amt := OKL_FORMULA_FUNCTION_PVT.line_capitalamount(p_chr_id => p_dnz_chr_id,
9110 p_line_id => ln_top_line_id);
9111 */
9112 OKL_EXECUTE_FORMULA_PUB.execute(p_api_version => p_api_version,
9113 p_init_msg_list => p_init_msg_list,
9114 x_return_status => x_return_status,
9115 x_msg_count => x_msg_count,
9116 x_msg_data => x_msg_data,
9117 p_formula_name => G_FORMULA_CAP,
9118 p_contract_id => p_dnz_chr_id,
9119 p_line_id => p_top_line_id, -- 4414408
9120 x_value => x_cap_amt);
9121
9122 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9123 OKL_API.set_message(p_app_name => G_APP_NAME,
9124 p_msg_name => G_CALC_AMOUNT,
9125 p_token1 => G_AMT_TOKEN,
9126 p_token1_value => 'Capital Amount');
9127 RAISE G_EXCEPTION_HALT_VALIDATION;
9128 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9129 OKL_API.set_message(p_app_name => G_APP_NAME,
9130 p_msg_name => G_CALC_AMOUNT,
9131 p_token1 => G_AMT_TOKEN,
9132 p_token1_value => 'Capital Amount');
9133 RAISE G_EXCEPTION_HALT_VALIDATION;
9134 END IF;
9135
9136 -- To Get the cle top Line Record
9137 x_return_status := get_rec_clev(p_top_line_id, -- 4414408
9138 l_update_clev_rec);
9139 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9140 OKL_API.set_message(p_app_name => G_APP_NAME,
9141 p_msg_name => G_FETCHING_INFO,
9142 p_token1 => G_REC_NAME_TOKEN,
9143 p_token1_value => 'OKC_K_LINES_V Record');
9144 RAISE G_EXCEPTION_HALT_VALIDATION;
9145 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9146 OKL_API.set_message(p_app_name => G_APP_NAME,
9147 p_msg_name => G_FETCHING_INFO,
9148 p_token1 => G_REC_NAME_TOKEN,
9149 p_token1_value => 'OKC_K_LINES_V Record');
9150 RAISE G_EXCEPTION_HALT_VALIDATION;
9151 END IF;
9152 -- To Get the kle top Line Record
9153 x_return_status := get_rec_klev(p_top_line_id, -- 4414408
9154 l_update_klev_rec);
9155 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9156 OKL_API.set_message(p_app_name => G_APP_NAME,
9157 p_msg_name => G_FETCHING_INFO,
9158 p_token1 => G_REC_NAME_TOKEN,
9159 p_token1_value => 'OKL_K_LINES_V Record');
9160 RAISE G_EXCEPTION_HALT_VALIDATION;
9161 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9162 OKL_API.set_message(p_app_name => G_APP_NAME,
9163 p_msg_name => G_FETCHING_INFO,
9164 p_token1 => G_REC_NAME_TOKEN,
9165 p_token1_value => 'OKL_K_LINES_V Record');
9166 RAISE G_EXCEPTION_HALT_VALIDATION;
9167 END IF;
9168 IF l_update_klev_rec.id <> l_update_clev_rec.id THEN
9169 OKL_API.set_message(p_app_name => G_APP_NAME,
9170 p_msg_name => G_LINE_RECORD);
9171 RAISE G_EXCEPTION_HALT_VALIDATION;
9172 END IF;
9173 l_update_klev_rec.capital_amount := x_cap_amt;
9174
9175 -- Modified by rravikir
9176 -- Call to Accounting Util package to address Multi Currency requirement
9177 -- Start
9178 l_update_klev_rec.capital_amount :=
9179 OKL_ACCOUNTING_UTIL.CROSS_CURRENCY_ROUND_AMOUNT(l_update_klev_rec.capital_amount,
9180 l_update_clev_rec.currency_code);
9181
9182 IF (x_cap_amt <> 0 AND l_update_klev_rec.capital_amount = 0) THEN
9183 OKL_API.set_message(p_app_name => G_APP_NAME,
9184 p_msg_name => G_AMOUNT_ROUNDING,
9185 p_token1 => 'AMT',
9186 p_token1_value => to_char(x_cap_amt));
9187 RAISE G_EXCEPTION_HALT_VALIDATION;
9188 END IF;
9189
9190 -- End Modification for Multi Currency
9191
9192 Update_fin_line(p_api_version => p_api_version,
9193 p_init_msg_list => p_init_msg_list,
9194 x_return_status => x_return_status,
9195 x_msg_count => x_msg_count,
9196 x_msg_data => x_msg_data,
9197 P_new_yn => P_new_yn,
9198 p_asset_number => p_asset_number,
9199 p_clev_rec => l_update_clev_rec,
9200 p_klev_rec => l_update_klev_rec,
9201 x_clev_rec => x_fin_clev_rec,
9202 x_klev_rec => x_fin_klev_rec,
9203 p_validate_fin_line => p_validate_fin_line); -- 4414408
9204 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9205 RAISE G_EXCEPTION_HALT_VALIDATION;
9206 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9207 RAISE G_EXCEPTION_HALT_VALIDATION;
9208 END IF;
9209 EXCEPTION
9210 WHEN G_EXCEPTION_STOP_VALIDATION then
9211 -- Notify Error
9212 x_return_status := OKL_API.G_RET_STS_ERROR;
9213 WHEN G_EXCEPTION_HALT_VALIDATION then
9214 -- If the cursor is open then it has to be closed
9215 -- IF c_model_top_line%ISOPEN THEN
9216 -- CLOSE c_model_top_line;
9217 -- END IF;
9218 -- notify caller of an error
9219 x_return_status := OKL_API.G_RET_STS_ERROR;
9220 WHEN OTHERS THEN
9221 -- store SQL error message on message stack
9222 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
9223 p_msg_name => G_UNEXPECTED_ERROR,
9224 p_token1 => G_SQLCODE_TOKEN,
9225 p_token1_value => SQLCODE,
9226 p_token2 => G_SQLERRM_TOKEN,
9227 p_token2_value => SQLERRM);
9228 -- If the cursor is open then it has to be closed
9229 -- IF c_model_top_line%ISOPEN THEN
9230 -- CLOSE c_model_top_line;
9231 -- END IF;
9232 -- notify caller of an error as UNEXPETED error
9233 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
9234 END cap_amt_calc_upd_fin_rec;
9235 -----------------------------------------------------------------------------------
9236 -- Start of Commnets
9237 -- Badrinath Kuchibholta
9238 -- Procedure Name : res_value_calc_upd_fin_rec
9239 -- Description : res_value_calc_upd_fin_rec
9240 -- Business Rules :
9241 -- Parameters :
9242 -- Version : 1.0
9243 -- End of Commnets
9244
9245 PROCEDURE res_value_calc_upd_fin_rec(
9246 p_api_version IN NUMBER,
9247 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
9248 x_return_status OUT NOCOPY VARCHAR2,
9249 x_msg_count OUT NOCOPY NUMBER,
9250 x_msg_data OUT NOCOPY VARCHAR2,
9251 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
9252 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
9253 p_top_line_id IN OKC_K_LINES_V.ID%TYPE, -- 4414408
9254 p_dnz_chr_id IN OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
9255 x_fin_clev_rec OUT NOCOPY clev_rec_type,
9256 x_fin_klev_rec OUT NOCOPY klev_rec_type,
9257 x_res_value OUT NOCOPY OKL_K_LINES_V.RESIDUAL_VALUE%TYPE,
9258 p_validate_fin_line IN VARCHAR2 DEFAULT OKL_API.G_TRUE) IS
9259
9260 ln_res_value OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
9261 -- ln_top_line_id OKC_K_LINES_V.CLE_ID%TYPE := 0;
9262 l_update_clev_rec clev_rec_type;
9263 l_update_klev_rec klev_rec_type;
9264 -- 4414408
9265 /*
9266 -- To Find out the Top line ID
9267 CURSOR c_model_top_line(p_model_line_id OKC_K_LINES_V.ID%TYPE,
9268 p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
9269 SELECT cle.cle_id
9270 FROM okc_subclass_top_line stl,
9271 okc_line_styles_b lse2,
9272 okc_line_styles_b lse1,
9273 okc_k_items_v cim,
9274 okc_k_lines_v cle
9275 WHERE cle.id = p_model_line_id
9276 AND cle.dnz_chr_id = p_dnz_chr_id
9277 AND cle.id = cim.cle_id
9278 AND cle.dnz_chr_id = cim.dnz_chr_id
9279 AND cle.lse_id = lse1.id
9280 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
9281 AND lse1.lse_parent_id = lse2.id
9282 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
9283 AND lse2.id = stl.lse_id
9284 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
9285 */
9286 BEGIN
9287 -- initialize return status
9288 x_return_status := OKL_API.G_RET_STS_SUCCESS;
9289 /*
9290 OPEN c_model_top_line(p_model_line_id => p_model_line_id,
9291 p_dnz_chr_id => p_dnz_chr_id);
9292 FETCH c_model_top_line INTO ln_top_line_id;
9293 -- #4414408 Moved the IF statement below fetch statement
9294 IF c_model_top_line%NOTFOUND THEN
9295 OKL_API.set_message(p_app_name => G_APP_NAME,
9296 p_msg_name => G_NO_MATCHING_RECORD,
9297 p_token1 => G_COL_NAME_TOKEN,
9298 p_token1_value => 'cle_id');
9299 RAISE G_EXCEPTION_HALT_VALIDATION;
9300 END IF;
9301 -- #4414408 This condition will never be met
9302 -- IF (c_model_top_line%ROWCOUNT > 1) THEN
9303 -- OKL_API.set_message(p_app_name => G_APP_NAME,
9304 -- p_msg_name => 'More than one',
9305 -- p_token1 => 'Model line',
9306 -- p_token1_value => 'cle_id');
9307 -- RAISE G_EXCEPTION_HALT_VALIDATION;
9308 -- END IF;
9309 CLOSE c_model_top_line;
9310 */
9311 -- to get the Residual value
9312 /*
9313 x_res_value := OKL_SEEDED_FUNCTIONS_PVT.line_residualvalue(p_chr_id => p_dnz_chr_id,
9314 p_line_id => ln_top_line_id);
9315 */
9316
9317 OKL_EXECUTE_FORMULA_PUB.execute(p_api_version => p_api_version,
9318 p_init_msg_list => p_init_msg_list,
9319 x_return_status => x_return_status,
9320 x_msg_count => x_msg_count,
9321 x_msg_data => x_msg_data,
9322 p_formula_name => G_FORMULA_RES,
9323 p_contract_id => p_dnz_chr_id,
9324 p_line_id => p_top_line_id, -- 4414408
9325 x_value => x_res_value);
9326 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9327 OKL_API.set_message(p_app_name => G_APP_NAME,
9328 p_msg_name => G_CALC_AMOUNT,
9329 p_token1 => G_AMT_TOKEN,
9330 p_token1_value => 'Residual Value');
9331 RAISE G_EXCEPTION_HALT_VALIDATION;
9332 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9333 OKL_API.set_message(p_app_name => G_APP_NAME,
9334 p_msg_name => G_CALC_AMOUNT,
9335 p_token1 => G_AMT_TOKEN,
9336 p_token1_value => 'Residual Value');
9337 RAISE G_EXCEPTION_HALT_VALIDATION;
9338 END IF;
9339 -- To Get the cle top Line Record
9340 x_return_status := get_rec_clev(p_top_line_id, -- 4414408
9341 l_update_clev_rec);
9342 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9343 OKL_API.set_message(p_app_name => G_APP_NAME,
9344 p_msg_name => G_FETCHING_INFO,
9345 p_token1 => G_REC_NAME_TOKEN,
9346 p_token1_value => 'OKC_K_LINES_V Record');
9347 RAISE G_EXCEPTION_HALT_VALIDATION;
9348 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9349 OKL_API.set_message(p_app_name => G_APP_NAME,
9350 p_msg_name => G_FETCHING_INFO,
9351 p_token1 => G_REC_NAME_TOKEN,
9352 p_token1_value => 'OKC_K_LINES_V Record');
9353 RAISE G_EXCEPTION_HALT_VALIDATION;
9354 END IF;
9355 -- To Get the kle top Line Record
9356 x_return_status := get_rec_klev(p_top_line_id, -- 4414408
9357 l_update_klev_rec);
9358 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9359 OKL_API.set_message(p_app_name => G_APP_NAME,
9360 p_msg_name => G_FETCHING_INFO,
9361 p_token1 => G_REC_NAME_TOKEN,
9362 p_token1_value => 'OKL_K_LINES_V Record');
9363 RAISE G_EXCEPTION_HALT_VALIDATION;
9364 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9365 OKL_API.set_message(p_app_name => G_APP_NAME,
9366 p_msg_name => G_FETCHING_INFO,
9367 p_token1 => G_REC_NAME_TOKEN,
9368 p_token1_value => 'OKL_K_LINES_V Record');
9369 RAISE G_EXCEPTION_HALT_VALIDATION;
9370 END IF;
9371 IF l_update_klev_rec.id <> l_update_clev_rec.id THEN
9372 OKL_API.set_message(p_app_name => G_APP_NAME,
9373 p_msg_name => G_LINE_RECORD);
9374 RAISE G_EXCEPTION_HALT_VALIDATION;
9375 END IF;
9376 -- commented for multi currency requirement. No need to round the value, as
9377 -- it is taken care in the call to accounting util package called below.
9378 -- l_update_klev_rec.residual_value := round(x_res_value,2);
9379 l_update_klev_rec.residual_value := x_res_value;
9380
9381 -- Modified by rravikir
9382 -- Call to Accounting Util package to address Multi Currency requirement
9383 -- Start
9384 l_update_klev_rec.residual_value :=
9385 OKL_ACCOUNTING_UTIL.CROSS_CURRENCY_ROUND_AMOUNT(l_update_klev_rec.residual_value,
9386 l_update_clev_rec.currency_code);
9387
9388 IF (x_res_value <> 0 AND l_update_klev_rec.residual_value = 0) THEN
9389 OKL_API.set_message(p_app_name => G_APP_NAME,
9390 p_msg_name => G_AMOUNT_ROUNDING,
9391 p_token1 => 'AMT',
9392 p_token1_value => to_char(x_res_value));
9393 RAISE G_EXCEPTION_HALT_VALIDATION;
9394 END IF;
9395
9396 -- End Modification for Multi Currency
9397
9398 Update_fin_line(p_api_version => p_api_version,
9399 p_init_msg_list => p_init_msg_list,
9400 x_return_status => x_return_status,
9401 x_msg_count => x_msg_count,
9402 x_msg_data => x_msg_data,
9403 P_new_yn => P_new_yn,
9404 p_asset_number => p_asset_number,
9405 p_clev_rec => l_update_clev_rec,
9406 p_klev_rec => l_update_klev_rec,
9407 x_clev_rec => x_fin_clev_rec,
9408 x_klev_rec => x_fin_klev_rec,
9409 p_validate_fin_line => p_validate_fin_line); -- 4414408
9410 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9411 RAISE G_EXCEPTION_HALT_VALIDATION;
9412 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9413 RAISE G_EXCEPTION_HALT_VALIDATION;
9414 END IF;
9415 EXCEPTION
9416 WHEN G_EXCEPTION_STOP_VALIDATION then
9417 -- Notify Error
9418 x_return_status := OKL_API.G_RET_STS_ERROR;
9419 WHEN G_EXCEPTION_HALT_VALIDATION then
9420 -- If the cursor is open then it has to be closed
9421 -- IF c_model_top_line%ISOPEN THEN
9422 -- CLOSE c_model_top_line;
9423 -- END IF;
9424 -- notify caller of an error
9425 x_return_status := OKL_API.G_RET_STS_ERROR;
9426 WHEN OTHERS THEN
9427 -- store SQL error message on message stack
9428 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
9429 p_msg_name => G_UNEXPECTED_ERROR,
9430 p_token1 => G_SQLCODE_TOKEN,
9431 p_token1_value => SQLCODE,
9432 p_token2 => G_SQLERRM_TOKEN,
9433 p_token2_value => SQLERRM);
9434 -- If the cursor is open then it has to be closed
9435 -- IF c_model_top_line%ISOPEN THEN
9436 -- CLOSE c_model_top_line;
9437 -- END IF;
9438 -- notify caller of an error as UNEXPETED error
9439 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
9440 END res_value_calc_upd_fin_rec;
9441
9442 -----------------------------------------------------------------------------------
9443 -- Start of Commnets
9444 -- Badrinath Kuchibholta
9445 -- Procedure Name : res_value_calc_upd_fin_rec
9446 -- Description : res_value_calc_upd_fin_rec
9447 -- Business Rules :
9448 -- Parameters :
9449 -- Version : 1.0
9450 -- End of Commnets
9451
9452 PROCEDURE get_res_per_upd_fin_rec(
9453 p_api_version IN NUMBER,
9454 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
9455 x_return_status OUT NOCOPY VARCHAR2,
9456 x_msg_count OUT NOCOPY NUMBER,
9457 x_msg_data OUT NOCOPY VARCHAR2,
9458 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
9459 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
9460 p_res_value IN OKL_K_LINES_V.RESIDUAL_VALUE%TYPE,
9461 p_oec IN OKL_K_LINES_V.OEC%TYPE,
9462 p_top_line_id IN OKC_K_LINES_V.ID%TYPE,
9463 p_dnz_chr_id IN OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
9464 x_fin_clev_rec OUT NOCOPY clev_rec_type,
9465 x_fin_klev_rec OUT NOCOPY klev_rec_type,
9466 p_validate_fin_line IN VARCHAR2 DEFAULT OKL_API.G_TRUE) IS
9467
9468 ln_res_per OKL_K_LINES_V.RESIDUAL_PERCENTAGE%TYPE := 0;
9469 ln_top_line_id OKC_K_LINES_V.CLE_ID%TYPE := 0;
9470 l_update_clev_rec clev_rec_type;
9471 l_update_klev_rec klev_rec_type;
9472
9473 BEGIN
9474 -- initialize return status
9475 x_return_status := OKL_API.G_RET_STS_SUCCESS;
9476
9477 IF (p_dnz_chr_id IS NULL OR
9478 p_dnz_chr_id = OKL_API.G_MISS_NUM) OR
9479 (p_top_line_id IS NULL OR
9480 p_top_line_id = OKL_API.G_MISS_NUM) THEN
9481 OKL_API.set_message(p_app_name => G_APP_NAME,
9482 p_msg_name => G_REQUIRED_VALUE,
9483 p_token1 => G_COL_NAME_TOKEN,
9484 p_token1_value => 'Chr_id,top_line');
9485 RAISE G_EXCEPTION_STOP_VALIDATION;
9486 END IF;
9487 -- gboomina bug 6139003 - Start
9488 -- Modified this condition to calculate residual percent
9489 -- only for valid values
9490 IF (p_oec IS NOT NULL AND
9491 p_oec <> OKL_API.G_MISS_NUM) AND
9492 (p_res_value IS NOT NULL AND
9493 p_res_value <> OKL_API.G_MISS_NUM) THEN
9494 -- gboomina bug 6139003 - End
9495 --Bug# 4631549
9496 If p_oec = 0 then
9497 ln_res_per := 0;
9498 else
9499 ln_res_per := ROUND(p_res_value * 100/p_oec,2);
9500 end if;
9501 END IF;
9502 -- To Get the cle top Line Record
9503 x_return_status := get_rec_clev(p_top_line_id,
9504 l_update_clev_rec);
9505 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9506 OKL_API.set_message(p_app_name => G_APP_NAME,
9507 p_msg_name => G_FETCHING_INFO,
9508 p_token1 => G_REC_NAME_TOKEN,
9509 p_token1_value => 'OKC_K_LINES_V Record');
9510 RAISE G_EXCEPTION_HALT_VALIDATION;
9511 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9512 OKL_API.set_message(p_app_name => G_APP_NAME,
9513 p_msg_name => G_FETCHING_INFO,
9514 p_token1 => G_REC_NAME_TOKEN,
9515 p_token1_value => 'OKC_K_LINES_V Record');
9516 RAISE G_EXCEPTION_HALT_VALIDATION;
9517 END IF;
9518 -- To Get the kle top Line Record
9519 x_return_status := get_rec_klev(p_top_line_id,
9520 l_update_klev_rec);
9521 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9522 OKL_API.set_message(p_app_name => G_APP_NAME,
9523 p_msg_name => G_FETCHING_INFO,
9524 p_token1 => G_REC_NAME_TOKEN,
9525 p_token1_value => 'OKL_K_LINES_V Record');
9526 RAISE G_EXCEPTION_HALT_VALIDATION;
9527 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9528 OKL_API.set_message(p_app_name => G_APP_NAME,
9529 p_msg_name => G_FETCHING_INFO,
9530 p_token1 => G_REC_NAME_TOKEN,
9531 p_token1_value => 'OKL_K_LINES_V Record');
9532 RAISE G_EXCEPTION_HALT_VALIDATION;
9533 END IF;
9534 IF l_update_klev_rec.id <> l_update_clev_rec.id THEN
9535 OKL_API.set_message(p_app_name => G_APP_NAME,
9536 p_msg_name => G_LINE_RECORD);
9537 RAISE G_EXCEPTION_HALT_VALIDATION;
9538 END IF;
9539 l_update_klev_rec.residual_percentage := ln_res_per;
9540 Update_fin_line(p_api_version => p_api_version,
9541 p_init_msg_list => p_init_msg_list,
9542 x_return_status => x_return_status,
9543 x_msg_count => x_msg_count,
9544 x_msg_data => x_msg_data,
9545 P_new_yn => P_new_yn,
9546 p_asset_number => p_asset_number,
9547 p_clev_rec => l_update_clev_rec,
9548 p_klev_rec => l_update_klev_rec,
9549 x_clev_rec => x_fin_clev_rec,
9550 x_klev_rec => x_fin_klev_rec,
9551 p_validate_fin_line => p_validate_fin_line); -- 4414408
9552 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9553 RAISE G_EXCEPTION_HALT_VALIDATION;
9554 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9555 RAISE G_EXCEPTION_HALT_VALIDATION;
9556 END IF;
9557 EXCEPTION
9558 WHEN G_EXCEPTION_STOP_VALIDATION then
9559 -- Notify Error
9560 x_return_status := OKL_API.G_RET_STS_ERROR;
9561 WHEN G_EXCEPTION_HALT_VALIDATION then
9562 -- notify caller of an error
9563 x_return_status := OKL_API.G_RET_STS_ERROR;
9564 WHEN OTHERS THEN
9565 -- store SQL error message on message stack
9566 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
9567 p_msg_name => G_UNEXPECTED_ERROR,
9568 p_token1 => G_SQLCODE_TOKEN,
9569 p_token1_value => SQLCODE,
9570 p_token2 => G_SQLERRM_TOKEN,
9571 p_token2_value => SQLERRM);
9572 -- notify caller of an error as UNEXPETED error
9573 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
9574 END get_res_per_upd_fin_rec;
9575 -------------------------------------------------------------------------------------------------------
9576 ----------------------------- Main Process for Creation of model Line -----------------------------------
9577 -------------------------------------------------------------------------------------------------------
9578 PROCEDURE create_model_line(
9579 p_api_version IN NUMBER,
9580 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
9581 x_return_status OUT NOCOPY VARCHAR2,
9582 x_msg_count OUT NOCOPY NUMBER,
9583 x_msg_data OUT NOCOPY VARCHAR2,
9584 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
9585 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
9586 p_clev_rec IN clev_rec_type,
9587 p_klev_rec IN klev_rec_type,
9588 p_cimv_rec IN cimv_rec_type,
9589 x_clev_rec OUT NOCOPY clev_rec_type,
9590 x_klev_rec OUT NOCOPY klev_rec_type,
9591 x_cimv_rec OUT NOCOPY cimv_rec_type) IS
9592 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_MODEL_LINES';
9593 l_clev_rec clev_rec_type;
9594 -- Variables for validation of line style
9595 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
9596 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
9597 l_update_clev_rec clev_rec_type;
9598 l_update_klev_rec klev_rec_type;
9599 ln_lse_id OKC_LINE_STYLES_V.ID%TYPE := OKL_API.G_MISS_NUM;
9600 l_qty OKC_K_ITEMS_V.NUMBER_OF_ITEMS%TYPE := 0;
9601
9602 BEGIN
9603 x_return_status := OKL_API.G_RET_STS_SUCCESS;
9604 -- Call start_activity to create savepoint, check compatibility
9605 -- and initialize message list
9606 x_return_status := OKL_API.START_ACTIVITY (
9607 l_api_name
9608 ,p_init_msg_list
9609 ,'_PVT'
9610 ,x_return_status);
9611 -- Check if activity started successfully
9612 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9613 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9614 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9615 RAISE OKL_API.G_EXCEPTION_ERROR;
9616 END IF;
9617 -- 4414408 The validation is now performed in create_all_line procedure
9618 /*
9619 -- To Check We Got the Valid info
9620 IF UPPER(p_new_yn) NOT IN ('Y','N') OR
9621 (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
9622 UPPER(p_new_yn) IS NULL) THEN
9623 OKL_API.set_message(p_app_name => G_APP_NAME,
9624 p_msg_name => G_INVALID_YN,
9625 p_token1 => G_COL_NAME_TOKEN,
9626 p_token1_value => 'p_new_yn');
9627 -- Halt Validation
9628 RAISE OKL_API.G_EXCEPTION_ERROR;
9629 END IF;
9630 -- Validate to see if the asset_number given is not null
9631 -- and also Validate asset_number does not exists
9632 -- in OKL_TXL_ASSETS_V
9633 IF UPPER(p_new_yn) = 'Y' THEN
9634 validate_new_asset_number(x_return_status => x_return_status,
9635 p_asset_number => p_asset_number,
9636 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
9637 -- Check if activity started successfully
9638 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9639 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9640 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9641 RAISE OKL_API.G_EXCEPTION_ERROR;
9642 END IF;
9643 ELSE
9644 validate_new_asset_number(x_return_status => x_return_status,
9645 p_asset_number => p_asset_number,
9646 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
9647 -- Check if activity ended successfully
9648 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9649 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9650 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9651 RAISE OKL_API.G_EXCEPTION_ERROR;
9652 END IF;
9653 END IF;
9654 */
9655 -- 4414408 The validations in Validate_lse_id and Validate_dnz_chr_id are redundant
9656 /*
9657 -- Validate Line Style id and get the line type code
9658 -- and line style type for further processing
9659 validate_lse_id(p_clev_rec => p_clev_rec,
9660 x_return_status => x_return_status,
9661 x_lty_code => l_lty_code,
9662 x_lse_type => l_lse_type);
9663 -- Check if activity started successfully
9664 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9665 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9666 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9667 RAISE OKL_API.G_EXCEPTION_ERROR;
9668 END IF;
9669 -- Validate the Dnz_Chr_id
9670 validate_dnz_chr_id(p_clev_rec => p_clev_rec,
9671 x_return_status => x_return_status);
9672 -- Check if activity started successfully
9673 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9674 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9675 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9676 RAISE OKL_API.G_EXCEPTION_ERROR;
9677 END IF;
9678 */
9679 -- We have to Populate the Model Line Record
9680 l_clev_rec := p_clev_rec;
9681 -- Now we are Creating Model Line
9682 -- Here we have have Dnz_Chr_id ,lse_id and cle_id
9683 -- The Record Should have the cle_id
9684 -- if the given line style is Model Line
9685 IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
9686 l_clev_rec.chr_id IS NULL) AND
9687 (l_clev_rec.dnz_chr_id IS NOT NULL OR
9688 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
9689 (l_clev_rec.cle_id IS NOT NULL OR
9690 l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
9691 -- #414408
9692 -- l_lty_code = G_MODEL_LINE_LTY_CODE AND
9693 -- l_lse_type = G_SLS_TYPE THEN
9694 l_clev_rec.lse_id = G_MODEL_LINE_LTY_ID THEN
9695 create_model_line_item(p_api_version => p_api_version,
9696 p_init_msg_list => p_init_msg_list,
9697 x_return_status => x_return_status,
9698 x_msg_count => x_msg_count,
9699 x_msg_data => x_msg_data,
9700 -- p_lty_code => l_lty_code,
9701 -- #4414408 redundant parameter
9702 p_clev_rec => l_clev_rec,
9703 p_klev_rec => p_klev_rec,
9704 p_cimv_rec => p_cimv_rec,
9705 x_clev_rec => x_clev_rec,
9706 x_klev_rec => x_klev_rec,
9707 x_cimv_rec => x_cimv_rec);
9708 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9709 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9710 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9711 RAISE OKL_API.G_EXCEPTION_ERROR;
9712 END IF;
9713 ELSE
9714 OKL_API.set_message(p_app_name => G_APP_NAME,
9715 p_msg_name => G_INVALID_CRITERIA,
9716 p_token1 => G_COL_NAME_TOKEN,
9717 p_token1_value => 'Model Asset line');
9718 x_return_status := OKL_API.G_RET_STS_ERROR;
9719 RAISE OKL_API.G_EXCEPTION_ERROR;
9720 END IF;
9721 OKL_API.END_ACTIVITY (x_msg_count,
9722 x_msg_data );
9723 EXCEPTION
9724 WHEN OKL_API.G_EXCEPTION_ERROR THEN
9725 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9726 l_api_name,
9727 G_PKG_NAME,
9728 'OKL_API.G_RET_STS_ERROR',
9729 x_msg_count,
9730 x_msg_data,
9731 '_PVT');
9732 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
9733 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
9734 l_api_name,
9735 G_PKG_NAME,
9736 'OKL_API.G_RET_STS_UNEXP_ERROR',
9737 x_msg_count,
9738 x_msg_data,
9739 '_PVT');
9740 WHEN OTHERS THEN
9741 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
9742 l_api_name,
9743 G_PKG_NAME,
9744 'OTHERS',
9745 x_msg_count,
9746 x_msg_data,
9747 '_PVT');
9748 END create_model_line;
9749 -------------------------------------------------------------------------------------------------------
9750 ----------------------------- Main Process for update of model Line -----------------------------------
9751 -------------------------------------------------------------------------------------------------------
9752 PROCEDURE Update_model_line(
9753 p_api_version IN NUMBER,
9754 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
9755 x_return_status OUT NOCOPY VARCHAR2,
9756 x_msg_count OUT NOCOPY NUMBER,
9757 x_msg_data OUT NOCOPY VARCHAR2,
9758 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
9759 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
9760 p_clev_rec IN clev_rec_type,
9761 p_klev_rec IN klev_rec_type,
9762 p_cimv_rec IN cimv_rec_type,
9763 x_clev_rec OUT NOCOPY clev_rec_type,
9764 x_klev_rec OUT NOCOPY klev_rec_type,
9765 x_cimv_rec OUT NOCOPY cimv_rec_type) IS
9766 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_MODEL_LINES';
9767 l_clev_rec clev_rec_type;
9768 -- Variables for validation of line style
9769 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
9770 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
9771 ln_fa_id OKC_K_LINES_V.ID%TYPE;
9772
9773 CURSOR get_fa_id(p_top_line OKC_K_LINES_V.ID%TYPE,
9774 p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE)
9775 IS
9776 SELECT cle.id
9777 FROM okc_subclass_top_line stl,
9778 okc_line_styles_b lse2,
9779 okc_line_styles_b lse1,
9780 okc_k_lines_v cle
9781 WHERE cle.cle_id = p_top_line
9782 AND cle.dnz_chr_id = p_dnz_chr_id
9783 AND lse1.id = cle.lse_id
9784 AND lse1.lty_code = G_FA_LINE_LTY_CODE
9785 AND lse1.lse_parent_id = lse2.id
9786 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
9787 AND lse2.id = stl.lse_id
9788 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
9789
9790 BEGIN
9791 x_return_status := OKL_API.G_RET_STS_SUCCESS;
9792 -- Call start_activity to create savepoint, check compatibility
9793 -- and initialize message list
9794 x_return_status := OKL_API.START_ACTIVITY (
9795 l_api_name
9796 ,p_init_msg_list
9797 ,'_PVT'
9798 ,x_return_status);
9799 -- Check if activity started successfully
9800 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9801 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9802 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9803 RAISE OKL_API.G_EXCEPTION_ERROR;
9804 END IF;
9805 validate_sts_code(p_clev_rec => p_clev_rec,
9806 x_return_status => x_return_status);
9807 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9808 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9809 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9810 RAISE OKL_API.G_EXCEPTION_ERROR;
9811 END IF;
9812 -- To get the fixed asset line asset to see
9813 -- the asset number does not duplicate
9814 OPEN get_fa_id(p_top_line => p_clev_rec.cle_id,
9815 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
9816 IF get_fa_id%NOTFOUND THEN
9817 OKL_API.set_message(p_app_name => G_APP_NAME,
9818 p_msg_name => G_LINE_RECORD);
9819 RAISE OKL_API.G_EXCEPTION_ERROR;
9820 END IF;
9821 FETCH get_fa_id INTO ln_fa_id;
9822 CLOSE get_fa_id;
9823
9824 -- To Check We Got the Valid info
9825 IF UPPER(p_new_yn) NOT IN ('Y','N') OR
9826 (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
9827 UPPER(p_new_yn) IS NULL) THEN
9828 OKL_API.set_message(p_app_name => G_APP_NAME,
9829 p_msg_name => G_INVALID_YN,
9830 p_token1 => G_COL_NAME_TOKEN,
9831 p_token1_value => 'p_new_yn');
9832 -- Halt Validation
9833 RAISE OKL_API.G_EXCEPTION_ERROR;
9834 END IF;
9835 -- Validate to see if the asset_number given is not null
9836 -- and also Validate asset_number does not exists
9837 -- in OKL_TXL_ASSETS_V
9838 IF UPPER(p_new_yn) = 'Y' THEN
9839 validate_new_ast_num_update(x_return_status => x_return_status,
9840 p_asset_number => p_asset_number,
9841 p_kle_id => ln_fa_id,
9842 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
9843 -- Check if activity started successfully
9844 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9845 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9846 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9847 RAISE OKL_API.G_EXCEPTION_ERROR;
9848 END IF;
9849 ELSIF UPPER(p_new_yn) = 'N' THEN
9850 validate_new_ast_num_update(x_return_status => x_return_status,
9851 p_asset_number => p_asset_number,
9852 p_kle_id => ln_fa_id,
9853 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
9854 -- Check if activity started successfully
9855 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9856 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9857 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9858 RAISE OKL_API.G_EXCEPTION_ERROR;
9859 END IF;
9860 END IF;
9861 -- Validate Line Style id and get the line type code
9862 -- and line style type for further processing
9863 validate_lse_id(p_clev_rec => p_clev_rec,
9864 x_return_status => x_return_status,
9865 x_lty_code => l_lty_code,
9866 x_lse_type => l_lse_type);
9867 -- Check if activity started successfully
9868 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9869 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9870 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9871 RAISE OKL_API.G_EXCEPTION_ERROR;
9872 END IF;
9873 -- Validate the Dnz_Chr_id
9874 validate_dnz_chr_id(p_clev_rec => p_clev_rec,
9875 x_return_status => x_return_status);
9876 -- Check if activity started successfully
9877 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9878 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9879 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9880 RAISE OKL_API.G_EXCEPTION_ERROR;
9881 END IF;
9882 -- We have to Populate the Model Line Record
9883 l_clev_rec := p_clev_rec;
9884 -- Now we are updating Model Line
9885 -- Here we have have Dnz_Chr_id ,lse_id and cle_id
9886 -- The Record Should have the cle_id
9887 -- if the given line style is Model Line
9888 IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
9889 l_clev_rec.chr_id IS NULL) AND
9890 (l_clev_rec.dnz_chr_id IS NOT NULL OR
9891 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
9892 (l_clev_rec.cle_id IS NOT NULL OR
9893 l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
9894 l_lty_code = G_MODEL_LINE_LTY_CODE AND
9895 l_lse_type = G_SLS_TYPE THEN
9896 update_model_line_item(p_api_version => p_api_version,
9897 p_init_msg_list => p_init_msg_list,
9898 x_return_status => x_return_status,
9899 x_msg_count => x_msg_count,
9900 x_msg_data => x_msg_data,
9901 p_lty_code => l_lty_code,
9902 p_clev_rec => l_clev_rec,
9903 p_klev_rec => p_klev_rec,
9904 p_cimv_rec => p_cimv_rec,
9905 x_clev_rec => x_clev_rec,
9906 x_klev_rec => x_klev_rec,
9907 x_cimv_rec => x_cimv_rec);
9908 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9909 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9910 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9911 RAISE OKL_API.G_EXCEPTION_ERROR;
9912 END IF;
9913 ELSE
9914 OKL_API.set_message(p_app_name => G_APP_NAME,
9915 p_msg_name => G_INVALID_CRITERIA,
9916 p_token1 => G_COL_NAME_TOKEN,
9917 p_token1_value => 'Model Asset line');
9918 x_return_status := OKL_API.G_RET_STS_ERROR;
9919 RAISE OKL_API.G_EXCEPTION_ERROR;
9920 END IF;
9921 OKL_API.END_ACTIVITY (x_msg_count,
9922 x_msg_data );
9923 EXCEPTION
9924 WHEN OKL_API.G_EXCEPTION_ERROR THEN
9925 IF get_fa_id%ISOPEN THEN
9926 CLOSE get_fa_id;
9927 END IF;
9928 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9929 l_api_name,
9930 G_PKG_NAME,
9931 'OKL_API.G_RET_STS_ERROR',
9932 x_msg_count,
9933 x_msg_data,
9934 '_PVT');
9935 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
9936 IF get_fa_id%ISOPEN THEN
9937 CLOSE get_fa_id;
9938 END IF;
9939 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
9940 l_api_name,
9941 G_PKG_NAME,
9942 'OKL_API.G_RET_STS_UNEXP_ERROR',
9943 x_msg_count,
9944 x_msg_data,
9945 '_PVT');
9946 WHEN OTHERS THEN
9947 IF get_fa_id%ISOPEN THEN
9948 CLOSE get_fa_id;
9949 END IF;
9950 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
9951 l_api_name,
9952 G_PKG_NAME,
9953 'OTHERS',
9954 x_msg_count,
9955 x_msg_data,
9956 '_PVT');
9957 END Update_model_line;
9958 -----------------------------------------------------------------------------------------------
9959 ----------------- Main Process for Fixed Asset Line Creation-----------------------------------
9960 -----------------------------------------------------------------------------------------------
9961 PROCEDURE Create_fixed_asset_line(
9962 p_api_version IN NUMBER,
9963 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
9964 x_return_status OUT NOCOPY VARCHAR2,
9965 x_msg_count OUT NOCOPY NUMBER,
9966 x_msg_data OUT NOCOPY VARCHAR2,
9967 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
9968 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
9969 p_clev_rec IN clev_rec_type,
9970 p_klev_rec IN klev_rec_type,
9971 p_cimv_rec IN cimv_rec_type,
9972 p_talv_rec IN talv_rec_type,
9973 x_clev_rec OUT NOCOPY clev_rec_type,
9974 x_klev_rec OUT NOCOPY klev_rec_type,
9975 x_cimv_rec OUT NOCOPY cimv_rec_type,
9976 x_trxv_rec OUT NOCOPY trxv_rec_type,
9977 x_talv_rec OUT NOCOPY talv_rec_type) IS
9978
9979 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_FXD_AST_LINES';
9980 l_clev_rec clev_rec_type;
9981 -- Variables for validation of line style
9982 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
9983 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
9984 BEGIN
9985 x_return_status := OKL_API.G_RET_STS_SUCCESS;
9986 -- Call start_activity to create savepoint, check compatibility
9987 -- and initialize message list
9988 x_return_status := OKL_API.START_ACTIVITY (
9989 l_api_name
9990 ,p_init_msg_list
9991 ,'_PVT'
9992 ,x_return_status);
9993 -- Check if activity started successfully
9994 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9995 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9996 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9997 RAISE OKL_API.G_EXCEPTION_ERROR;
9998 END IF;
9999 -- 4414408 The validation is now performed in create_all_line procedure
10000 /*
10001 -- To Check We Got the Valid info
10002 IF UPPER(p_new_yn) NOT IN ('Y','N') OR
10003 (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
10004 UPPER(p_new_yn) IS NULL) THEN
10005 OKL_API.set_message(p_app_name => G_APP_NAME,
10006 p_msg_name => G_INVALID_YN,
10007 p_token1 => G_COL_NAME_TOKEN,
10008 p_token1_value => 'p_new_yn');
10009 -- Halt Validation
10010 RAISE OKL_API.G_EXCEPTION_ERROR;
10011 END IF;
10012 -- Validate to see if the asset_number given is not null
10013 -- and also Validate asset_number does not exists
10014 -- in OKL_TXL_ASSETS_V
10015 IF UPPER(p_new_yn) = 'Y' THEN
10016 validate_new_asset_number(x_return_status => x_return_status,
10017 p_asset_number => p_asset_number,
10018 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
10019 -- Check if activity started successfully
10020 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10021 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10022 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10023 RAISE OKL_API.G_EXCEPTION_ERROR;
10024 END IF;
10025 ELSE
10026 validate_new_asset_number(x_return_status => x_return_status,
10027 p_asset_number => p_asset_number,
10028 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
10029 -- Check if activity ended successfully
10030 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10031 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10032 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10033 RAISE OKL_API.G_EXCEPTION_ERROR;
10034 END IF;
10035 END IF;
10036 */
10037 -- 4414408 The validations in Validate_lse_id and Validate_dnz_chr_id are redundant
10038 /*
10039 -- Validate Line Style id and get the line type code
10040 -- and line style type for further processing
10041 validate_lse_id(p_clev_rec => p_clev_rec,
10042 x_return_status => x_return_status,
10043 x_lty_code => l_lty_code,
10044 x_lse_type => l_lse_type);
10045 -- Check if activity started successfully
10046 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10047 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10048 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10049 RAISE OKL_API.G_EXCEPTION_ERROR;
10050 END IF;
10051 -- Validate the Dnz_Chr_id
10052 validate_dnz_chr_id(p_clev_rec => p_clev_rec,
10053 x_return_status => x_return_status);
10054 -- Check if activity started successfully
10055 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10056 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10057 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10058 RAISE OKL_API.G_EXCEPTION_ERROR;
10059 END IF;
10060 */
10061 -- Now we are going to create the Fixed Assets Line
10062 -- Here we have have Dnz_Chr_id ,lse_id and cle_id
10063 -- The Record Should have the cle_id
10064 -- if the given line style is Fixed Assets Line
10065 l_clev_rec := p_clev_rec;
10066 IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
10067 l_clev_rec.chr_id IS NULL) AND
10068 (l_clev_rec.dnz_chr_id IS NOT NULL OR
10069 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
10070 (l_clev_rec.cle_id IS NOT NULL OR
10071 l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
10072 -- #4414408
10073 -- l_lty_code = G_FA_LINE_LTY_CODE AND
10074 -- l_lse_type = G_SLS_TYPE THEN
10075 l_clev_rec.lse_id = G_FA_LINE_LTY_ID THEN
10076 create_fa_line_item(p_api_version => p_api_version,
10077 p_init_msg_list => p_init_msg_list,
10078 x_return_status => x_return_status,
10079 x_msg_count => x_msg_count,
10080 x_msg_data => x_msg_data,
10081 -- p_lty_code => l_lty_code,
10082 p_clev_rec => p_clev_rec,
10083 p_klev_rec => p_klev_rec,
10084 p_cimv_rec => p_cimv_rec,
10085 p_talv_rec => p_talv_rec,
10086 x_clev_rec => x_clev_rec,
10087 x_klev_rec => x_klev_rec,
10088 x_cimv_rec => x_cimv_rec,
10089 x_trxv_rec => x_trxv_rec,
10090 x_talv_rec => x_talv_rec);
10091 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10092 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10093 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10094 RAISE OKL_API.G_EXCEPTION_ERROR;
10095 END IF;
10096 ELSE
10097 OKL_API.set_message(p_app_name => G_APP_NAME,
10098 p_msg_name => G_INVALID_CRITERIA,
10099 p_token1 => G_COL_NAME_TOKEN,
10100 p_token1_value => 'Fixed Asset line');
10101 x_return_status := OKL_API.G_RET_STS_ERROR;
10102 RAISE OKL_API.G_EXCEPTION_ERROR;
10103 END IF;
10104 OKL_API.END_ACTIVITY (x_msg_count,
10105 x_msg_data );
10106 EXCEPTION
10107 WHEN OKL_API.G_EXCEPTION_ERROR THEN
10108 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10109 l_api_name,
10110 G_PKG_NAME,
10111 'OKL_API.G_RET_STS_ERROR',
10112 x_msg_count,
10113 x_msg_data,
10114 '_PVT');
10115 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10116 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10117 l_api_name,
10118 G_PKG_NAME,
10119 'OKL_API.G_RET_STS_UNEXP_ERROR',
10120 x_msg_count,
10121 x_msg_data,
10122 '_PVT');
10123 WHEN OTHERS THEN
10124 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10125 l_api_name,
10126 G_PKG_NAME,
10127 'OTHERS',
10128 x_msg_count,
10129 x_msg_data,
10130 '_PVT');
10131 END Create_fixed_asset_line;
10132 -------------------------------------------------------------------------------------------------------
10133 ----------------------------- Main Process for update of fixed asset Line -----------------------------
10134 -------------------------------------------------------------------------------------------------------
10135 PROCEDURE Update_fixed_asset_line(
10136 p_api_version IN NUMBER,
10137 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
10138 x_return_status OUT NOCOPY VARCHAR2,
10139 x_msg_count OUT NOCOPY NUMBER,
10140 x_msg_data OUT NOCOPY VARCHAR2,
10141 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
10142 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
10143 p_clev_rec IN clev_rec_type,
10144 p_klev_rec IN klev_rec_type,
10145 p_cimv_rec IN cimv_rec_type,
10146 p_talv_rec IN talv_rec_type,
10147 x_clev_rec OUT NOCOPY clev_rec_type,
10148 x_klev_rec OUT NOCOPY klev_rec_type,
10149 x_cimv_rec OUT NOCOPY cimv_rec_type,
10150 x_talv_rec OUT NOCOPY talv_rec_type) IS
10151 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_FXD_AST_LINES';
10152 l_clev_rec clev_rec_type;
10153 -- Variables for validation of line style
10154 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
10155 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
10156 BEGIN
10157 x_return_status := OKL_API.G_RET_STS_SUCCESS;
10158 -- Call start_activity to create savepoint, check compatibility
10159 -- and initialize message list
10160 x_return_status := OKL_API.START_ACTIVITY (
10161 l_api_name
10162 ,p_init_msg_list
10163 ,'_PVT'
10164 ,x_return_status);
10165 -- Check if activity started successfully
10166 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10167 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10168 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10169 RAISE OKL_API.G_EXCEPTION_ERROR;
10170 END IF;
10171 validate_sts_code(p_clev_rec => p_clev_rec,
10172 x_return_status => x_return_status);
10173 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10174 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10175 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10176 RAISE OKL_API.G_EXCEPTION_ERROR;
10177 END IF;
10178 -- To Check We Got the Valid info
10179 IF UPPER(p_new_yn) NOT IN ('Y','N') OR
10180 (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
10181 UPPER(p_new_yn) IS NULL) THEN
10182 OKL_API.set_message(p_app_name => G_APP_NAME,
10183 p_msg_name => G_INVALID_YN,
10184 p_token1 => G_COL_NAME_TOKEN,
10185 p_token1_value => 'p_new_yn');
10186 -- Halt Validation
10187 RAISE OKL_API.G_EXCEPTION_ERROR;
10188 END IF;
10189 -- Validate to see if the asset_number given is not null
10190 -- and also Validate asset_number does not exists
10191 -- in OKL_TXL_ASSETS_V
10192 IF UPPER(p_new_yn) = 'Y' THEN
10193 validate_new_ast_num_update(x_return_status => x_return_status,
10194 p_asset_number => p_asset_number,
10195 p_kle_id => p_talv_rec.kle_id,
10196 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
10197 -- Check if activity started successfully
10198 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10199 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10200 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10201 RAISE OKL_API.G_EXCEPTION_ERROR;
10202 END IF;
10203 ELSIF UPPER(p_new_yn) = 'N' THEN
10204 validate_new_ast_num_update(x_return_status => x_return_status,
10205 p_asset_number => p_asset_number,
10206 p_kle_id => p_talv_rec.kle_id,
10207 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
10208 -- Check if activity started successfully
10209 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10210 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10211 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10212 RAISE OKL_API.G_EXCEPTION_ERROR;
10213 END IF;
10214 END IF;
10215 -- Validate Line Style id and get the line type code
10216 -- and line style type for further processing
10217 validate_lse_id(p_clev_rec => p_clev_rec,
10218 x_return_status => x_return_status,
10219 x_lty_code => l_lty_code,
10220 x_lse_type => l_lse_type);
10221 -- Check if activity started successfully
10222 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10223 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10224 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10225 RAISE OKL_API.G_EXCEPTION_ERROR;
10226 END IF;
10227 -- Validate the Dnz_Chr_id
10228 validate_dnz_chr_id(p_clev_rec => p_clev_rec,
10229 x_return_status => x_return_status);
10230 -- Check if activity started successfully
10231 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10232 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10233 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10234 RAISE OKL_API.G_EXCEPTION_ERROR;
10235 END IF;
10236 -- We have to Populate the Model Line Record
10237 l_clev_rec := p_clev_rec;
10238 -- Now we are updating Fixed Asset Line
10239 -- Here we have have Dnz_Chr_id ,lse_id and cle_id
10240 -- The Record Should have the cle_id
10241 -- if the given line style is Fixed Asset Line
10242 IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
10243 l_clev_rec.chr_id IS NULL) AND
10244 (l_clev_rec.dnz_chr_id IS NOT NULL OR
10245 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
10246 (l_clev_rec.cle_id IS NOT NULL OR
10247 l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
10248 l_lty_code = G_FA_LINE_LTY_CODE AND
10249 l_lse_type = G_SLS_TYPE THEN
10250 update_fa_line_item(p_api_version => p_api_version,
10251 p_init_msg_list => p_init_msg_list,
10252 x_return_status => x_return_status,
10253 x_msg_count => x_msg_count,
10254 x_msg_data => x_msg_data,
10255 p_lty_code => l_lty_code,
10256 P_new_yn => p_new_yn,
10257 p_clev_rec => l_clev_rec,
10258 p_klev_rec => p_klev_rec,
10259 p_cimv_rec => p_cimv_rec,
10260 p_talv_rec => p_talv_rec,
10261 x_clev_rec => x_clev_rec,
10262 x_klev_rec => x_klev_rec,
10263 x_cimv_rec => x_cimv_rec,
10264 x_talv_rec => x_talv_rec);
10265 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10266 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10267 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10268 RAISE OKL_API.G_EXCEPTION_ERROR;
10269 END IF;
10270 ELSE
10271 OKL_API.set_message(p_app_name => G_APP_NAME,
10272 p_msg_name => G_INVALID_CRITERIA,
10273 p_token1 => G_COL_NAME_TOKEN,
10274 p_token1_value => 'Fixed Asset line');
10275 x_return_status := OKL_API.G_RET_STS_ERROR;
10276 RAISE OKL_API.G_EXCEPTION_ERROR;
10277 END IF;
10278 OKL_API.END_ACTIVITY (x_msg_count,
10279 x_msg_data );
10280 EXCEPTION
10281 WHEN OKL_API.G_EXCEPTION_ERROR THEN
10282 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10283 l_api_name,
10284 G_PKG_NAME,
10285 'OKL_API.G_RET_STS_ERROR',
10286 x_msg_count,
10287 x_msg_data,
10288 '_PVT');
10289 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10290 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10291 l_api_name,
10292 G_PKG_NAME,
10293 'OKL_API.G_RET_STS_UNEXP_ERROR',
10294 x_msg_count,
10295 x_msg_data,
10296 '_PVT');
10297 WHEN OTHERS THEN
10298 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10299 l_api_name,
10300 G_PKG_NAME,
10301 'OTHERS',
10302 x_msg_count,
10303 x_msg_data,
10304 '_PVT');
10305 END Update_fixed_asset_line;
10306 -------------------------------------------------------------------------------------------------------
10307 ---------------------------- Main Process for Creation of Add on Line ---------------------------------
10308 -------------------------------------------------------------------------------------------------------
10309 PROCEDURE create_add_on_line(p_api_version IN NUMBER,
10310 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
10311 x_return_status OUT NOCOPY VARCHAR2,
10312 x_msg_count OUT NOCOPY NUMBER,
10313 x_msg_data OUT NOCOPY VARCHAR2,
10314 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
10315 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
10316 p_clev_tbl IN clev_tbl_type,
10317 p_klev_tbl IN klev_tbl_type,
10318 p_cimv_tbl IN cimv_tbl_type,
10319 x_clev_tbl OUT NOCOPY clev_tbl_type,
10320 x_klev_tbl OUT NOCOPY klev_tbl_type,
10321 x_fin_clev_rec OUT NOCOPY clev_rec_type,
10322 x_fin_klev_rec OUT NOCOPY klev_rec_type,
10323 x_cimv_tbl OUT NOCOPY cimv_tbl_type) IS
10324 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_ADD_LINE';
10325 i NUMBER := 0;
10326 j NUMBER := 0;
10327 k NUMBER := 0;
10328 l_klev_rec klev_rec_type;
10329 l_clev_tbl clev_tbl_type;
10330 x_klev_rec klev_rec_type;
10331 ln_oec OKL_K_LINES_V.OEC%TYPE := 0;
10332 ln_add_cle_id OKC_K_LINES_V.CLE_ID%TYPE := 0;
10333 ln_add_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE := 0;
10334 ln_top_line_id OKC_K_LINES_V.CLE_ID%TYPE := 0;
10335 ln_klev_fin_oec OKL_K_LINES_V.OEC%TYPE := 0;
10336 ln_klev_fin_res OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
10337 ln_klev_fin_cap OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
10338
10339 -- To Find out the Top line ID
10340 CURSOR c_model_top_line(p_model_line_id OKC_K_LINES_V.ID%TYPE,
10341 p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
10342 -- #4414408
10343 SELECT cle.cle_id
10344 FROM okc_k_lines_b cle
10345 WHERE cle.id = p_model_line_id
10346 AND cle.dnz_chr_id = p_dnz_chr_id
10347 AND cle.lse_id = G_MODEL_LINE_LTY_ID;
10348
10349 BEGIN
10350 x_return_status := OKL_API.G_RET_STS_SUCCESS;
10351 -- Call start_activity to create savepoint, check compatibility
10352 -- and initialize message list
10353 x_return_status := OKL_API.START_ACTIVITY (
10354 l_api_name
10355 ,p_init_msg_list
10356 ,'_PVT'
10357 ,x_return_status);
10358 -- Check if activity started successfully
10359 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10360 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10361 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10362 RAISE OKL_API.G_EXCEPTION_ERROR;
10363 END IF;
10364 OKL_API.init_msg_list(p_init_msg_list);
10365 -- Make sure PL/SQL table has records in it before passing
10366 IF (p_clev_tbl.COUNT > 0) AND
10367 (p_cimv_tbl.COUNT > 0)THEN
10368 i := p_clev_tbl.FIRST;
10369 k := p_cimv_tbl.FIRST;
10370 IF (p_klev_tbl.COUNT = 0) THEN
10371 -- Since p_klev_tbl is not Mandtory we could get and give blank record
10372 l_clev_tbl := p_clev_tbl;
10373 LOOP
10374 x_return_status := get_lse_id(p_lty_code => G_ADDON_LINE_LTY_CODE,
10375 x_lse_id => l_clev_tbl(i).lse_id);
10376 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10377 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
10378 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10379 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
10380 END IF;
10381 create_addon_line_rec(p_api_version => p_api_version,
10382 p_init_msg_list => p_init_msg_list,
10383 x_return_status => x_return_status,
10384 x_msg_count => x_msg_count,
10385 x_msg_data => x_msg_data,
10386 P_new_yn => P_new_yn,
10387 p_asset_number => p_asset_number,
10388 p_clev_rec => l_clev_tbl(i),
10389 p_klev_rec => l_klev_rec,
10390 p_cimv_rec => p_cimv_tbl(k),
10391 x_clev_rec => x_clev_tbl(i),
10392 x_klev_rec => x_klev_rec,
10393 x_cimv_rec => x_cimv_tbl(k));
10394 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10395 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
10396 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10397 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
10398 END IF;
10399 ln_add_cle_id := x_clev_tbl(i).cle_id;
10400 ln_add_dnz_chr_id := x_clev_tbl(i).dnz_chr_id;
10401 -- Assume that there will be one to one for item and add on line
10402 EXIT WHEN (i = p_clev_tbl.LAST);
10403 i := l_clev_tbl.NEXT(i);
10404 k := p_cimv_tbl.NEXT(k);
10405 x_klev_tbl(i) := x_klev_rec;
10406 END LOOP;
10407 ELSE
10408 IF (p_clev_tbl.COUNT <> p_klev_tbl.COUNT) OR
10409 (p_clev_tbl.COUNT <> p_cimv_tbl.COUNT) OR
10410 (p_klev_tbl.COUNT <> p_cimv_tbl.COUNT) THEN
10411 OKL_API.set_message(p_app_name => G_APP_NAME,
10412 p_msg_name => G_CNT_REC);
10413 RAISE OKL_API.G_EXCEPTION_ERROR;
10414 END IF;
10415 j := p_klev_tbl.FIRST;
10416 l_clev_tbl := p_clev_tbl;
10417 LOOP
10418 x_return_status := get_lse_id(p_lty_code => G_ADDON_LINE_LTY_CODE,
10419 x_lse_id => l_clev_tbl(i).lse_id);
10420 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10421 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
10422 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10423 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
10424 END IF;
10425 create_addon_line_rec(p_api_version => p_api_version,
10426 p_init_msg_list => p_init_msg_list,
10427 x_return_status => x_return_status,
10428 x_msg_count => x_msg_count,
10429 x_msg_data => x_msg_data,
10430 P_new_yn => P_new_yn,
10431 p_asset_number => p_asset_number,
10432 p_clev_rec => l_clev_tbl(i),
10433 p_klev_rec => p_klev_tbl(j),
10434 p_cimv_rec => p_cimv_tbl(k),
10435 x_clev_rec => x_clev_tbl(i),
10436 x_klev_rec => x_klev_tbl(j),
10437 x_cimv_rec => x_cimv_tbl(k));
10438 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10439 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
10440 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10441 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
10442 END IF;
10443 ln_add_cle_id := x_clev_tbl(i).cle_id;
10444 ln_add_dnz_chr_id := x_clev_tbl(i).dnz_chr_id;
10445 -- Assume that there will be one to one for item and add on line
10446 EXIT WHEN (i = p_clev_tbl.LAST);
10447 i := l_clev_tbl.NEXT(i);
10448 j := p_klev_tbl.NEXT(j);
10449 k := p_cimv_tbl.NEXT(K);
10450 END LOOP;
10451 END IF;
10452 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10453 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10454 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10455 RAISE OKL_API.G_EXCEPTION_ERROR;
10456 END IF;
10457
10458 OPEN c_model_top_line(p_model_line_id => ln_add_cle_id,
10459 p_dnz_chr_id => ln_add_dnz_chr_id);
10460 FETCH c_model_top_line INTO ln_top_line_id;
10461
10462 IF c_model_top_line%NOTFOUND THEN
10463 OKL_API.set_message(p_app_name => G_APP_NAME,
10464 p_msg_name => G_NO_MATCHING_RECORD,
10465 p_token1 => G_COL_NAME_TOKEN,
10466 p_token1_value => 'cle_id');
10467 RAISE G_EXCEPTION_HALT_VALIDATION;
10468 END IF;
10469
10470 CLOSE c_model_top_line;
10471
10472 -- Calculate the OEC to Populate the OKL_K_LINES_V.OEC
10473 oec_calc_upd_fin_rec(p_api_version => p_api_version,
10474 p_init_msg_list => p_init_msg_list,
10475 x_return_status => x_return_status,
10476 x_msg_count => x_msg_count,
10477 x_msg_data => x_msg_data,
10478 P_new_yn => P_new_yn,
10479 p_asset_number => p_asset_number,
10480 -- 4414408
10481 p_top_line_id => ln_top_line_id,
10482 p_dnz_chr_id => ln_add_dnz_chr_id,
10483 x_fin_clev_rec => x_fin_clev_rec,
10484 x_fin_klev_rec => x_fin_klev_rec,
10485 x_oec => ln_klev_fin_oec,
10486 p_validate_fin_line => OKL_API.G_TRUE);
10487 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10488 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10489 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10490 RAISE OKL_API.G_EXCEPTION_ERROR;
10491 END IF;
10492 -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
10493 cap_amt_calc_upd_fin_rec(p_api_version => p_api_version,
10494 p_init_msg_list => p_init_msg_list,
10495 x_return_status => x_return_status,
10496 x_msg_count => x_msg_count,
10497 x_msg_data => x_msg_data,
10498 P_new_yn => P_new_yn,
10499 p_asset_number => p_asset_number,
10500 -- 4414408
10501 p_top_line_id => ln_top_line_id,
10502 p_dnz_chr_id => ln_add_dnz_chr_id,
10503 x_fin_clev_rec => x_fin_clev_rec,
10504 x_fin_klev_rec => x_fin_klev_rec,
10505 x_cap_amt => ln_klev_fin_cap,
10506 p_validate_fin_line => OKL_API.G_TRUE);
10507 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10508 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10509 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10510 RAISE OKL_API.G_EXCEPTION_ERROR;
10511 END IF;
10512 -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
10513 res_value_calc_upd_fin_rec(p_api_version => p_api_version,
10514 p_init_msg_list => p_init_msg_list,
10515 x_return_status => x_return_status,
10516 x_msg_count => x_msg_count,
10517 x_msg_data => x_msg_data,
10518 P_new_yn => P_new_yn,
10519 p_asset_number => p_asset_number,
10520 -- 4414408
10521 p_top_line_id => ln_top_line_id,
10522 p_dnz_chr_id => ln_add_dnz_chr_id,
10523 x_fin_clev_rec => x_fin_clev_rec,
10524 x_fin_klev_rec => x_fin_klev_rec,
10525 x_res_value => ln_klev_fin_res,
10526 p_validate_fin_line => OKL_API.G_TRUE);
10527 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10528 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10529 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10530 RAISE OKL_API.G_EXCEPTION_ERROR;
10531 END IF;
10532
10533 --Bug# 5530990
10534 -- Update Original Cost and Depreciation Cost in
10535 -- OKL_TXL_ASSETS_B and OKL_TXD_ASSETS_B when
10536 -- Add on line is added
10537 update_asset_cost(p_api_version => p_api_version,
10538 p_init_msg_list => p_init_msg_list,
10539 x_return_status => x_return_status,
10540 x_msg_count => x_msg_count,
10541 x_msg_data => x_msg_data,
10542 p_cleb_fin_id => ln_top_line_id,
10543 p_chr_id => ln_add_dnz_chr_id,
10544 p_oec => ln_klev_fin_oec);
10545 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10546 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10547 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10548 RAISE OKL_API.G_EXCEPTION_ERROR;
10549 END IF;
10550
10551 ELSE
10552 OKL_API.set_message(p_app_name => G_APP_NAME,
10553 p_msg_name => G_CNT_REC);
10554 x_return_status := OKL_API.G_RET_STS_ERROR;
10555 RAISE OKL_API.G_EXCEPTION_ERROR;
10556 END IF;
10557 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10558 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10559 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10560 RAISE OKL_API.G_EXCEPTION_ERROR;
10561 END IF;
10562 OKL_API.END_ACTIVITY (x_msg_count,
10563 x_msg_data );
10564 EXCEPTION
10565 WHEN OKL_API.G_EXCEPTION_ERROR THEN
10566 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10567 l_api_name,
10568 G_PKG_NAME,
10569 'OKL_API.G_RET_STS_ERROR',
10570 x_msg_count,
10571 x_msg_data,
10572 '_PVT');
10573 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10574 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10575 l_api_name,
10576 G_PKG_NAME,
10577 'OKL_API.G_RET_STS_UNEXP_ERROR',
10578 x_msg_count,
10579 x_msg_data,
10580 '_PVT');
10581 WHEN OTHERS THEN
10582 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10583 l_api_name,
10584 G_PKG_NAME,
10585 'OTHERS',
10586 x_msg_count,
10587 x_msg_data,
10588 '_PVT');
10589 END create_add_on_line;
10590 -------------------------------------------------------------------------------------------------------
10591 ---------------------------- Main Process for Update of Add on Line ---------------------------------
10592 -------------------------------------------------------------------------------------------------------
10593 PROCEDURE update_add_on_line(
10594 p_api_version IN NUMBER,
10595 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
10596 x_return_status OUT NOCOPY VARCHAR2,
10597 x_msg_count OUT NOCOPY NUMBER,
10598 x_msg_data OUT NOCOPY VARCHAR2,
10599 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
10600 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
10601 p_clev_tbl IN clev_tbl_type,
10602 p_klev_tbl IN klev_tbl_type,
10603 p_cimv_tbl IN cimv_tbl_type,
10604 x_clev_tbl OUT NOCOPY clev_tbl_type,
10605 x_klev_tbl OUT NOCOPY klev_tbl_type,
10606 x_cimv_tbl OUT NOCOPY cimv_tbl_type,
10607 x_fin_clev_rec OUT NOCOPY clev_rec_type,
10608 x_fin_klev_rec OUT NOCOPY klev_rec_type) IS
10609
10610 i NUMBER := 0;
10611 j NUMBER := 0;
10612 k NUMBER := 0;
10613 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_ADD_LINE';
10614 l_klev_rec klev_rec_type;
10615 l_clev_tbl clev_tbl_type;
10616 x_klev_rec klev_rec_type;
10617 ln_add_cle_id OKC_K_LINES_V.CLE_ID%TYPE := 0;
10618 ln_add_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE := 0;
10619 ln_top_line_id OKC_K_LINES_V.CLE_ID%TYPE := 0;
10620 ln_klev_fin_oec OKL_K_LINES_V.OEC%TYPE := 0;
10621 ln_klev_fin_res OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
10622 ln_klev_fin_cap OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
10623
10624 -- To Find out the Top line ID
10625 CURSOR c_model_top_line(p_model_line_id OKC_K_LINES_V.ID%TYPE,
10626 p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
10627 -- #4414408
10628 SELECT cle.cle_id
10629 FROM okc_k_lines_b cle
10630 WHERE cle.id = p_model_line_id
10631 AND cle.dnz_chr_id = p_dnz_chr_id
10632 AND cle.lse_id = G_MODEL_LINE_LTY_ID;
10633
10634 BEGIN
10635 x_return_status := OKL_API.G_RET_STS_SUCCESS;
10636 -- Call start_activity to create savepoint, check compatibility
10637 -- and initialize message list
10638 x_return_status := OKL_API.START_ACTIVITY (
10639 l_api_name
10640 ,p_init_msg_list
10641 ,'_PVT'
10642 ,x_return_status);
10643 -- Check if activity started successfully
10644 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10645 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10646 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10647 RAISE OKL_API.G_EXCEPTION_ERROR;
10648 END IF;
10649 OKL_API.init_msg_list(p_init_msg_list);
10650 -- Make sure PL/SQL table has records in it before passing
10651 IF (p_clev_tbl.COUNT > 0) AND
10652 (p_klev_tbl.COUNT > 0) AND
10653 (p_cimv_tbl.COUNT > 0)THEN
10654 IF (p_clev_tbl.COUNT <> p_klev_tbl.COUNT) OR
10655 (p_clev_tbl.COUNT <> p_cimv_tbl.COUNT) OR
10656 (p_klev_tbl.COUNT <> p_cimv_tbl.COUNT) THEN
10657 OKL_API.set_message(p_app_name => G_APP_NAME,
10658 p_msg_name => G_CNT_REC);
10659 RAISE OKL_API.G_EXCEPTION_ERROR;
10660 END IF;
10661 i := p_clev_tbl.FIRST;
10662 j := p_klev_tbl.FIRST;
10663 k := p_cimv_tbl.FIRST;
10664 l_clev_tbl := p_clev_tbl;
10665 LOOP
10666 update_addon_line_rec(p_api_version => p_api_version,
10667 p_init_msg_list => p_init_msg_list,
10668 x_return_status => x_return_status,
10669 x_msg_count => x_msg_count,
10670 x_msg_data => x_msg_data,
10671 P_new_yn => P_new_yn,
10672 p_asset_number => p_asset_number,
10673 p_clev_rec => l_clev_tbl(i),
10674 p_klev_rec => p_klev_tbl(j),
10675 p_cimv_rec => p_cimv_tbl(k),
10676 x_clev_rec => x_clev_tbl(i),
10677 x_klev_rec => x_klev_tbl(j),
10678 x_cimv_rec => x_cimv_tbl(k));
10679 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10680 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
10681 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10682 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
10683 RAISE OKL_API.G_EXCEPTION_ERROR;
10684 END IF;
10685 ln_add_cle_id := x_clev_tbl(i).cle_id;
10686 ln_add_dnz_chr_id := x_clev_tbl(i).dnz_chr_id;
10687 -- Assume that there will be one to one for item and add on line
10688 EXIT WHEN (i = p_clev_tbl.LAST);
10689 i := p_clev_tbl.NEXT(i);
10690 j := p_klev_tbl.NEXT(j);
10691 k := p_clev_tbl.NEXT(k);
10692 END LOOP;
10693 ELSE
10694 OKL_API.set_message(p_app_name => G_APP_NAME,
10695 p_msg_name => G_CNT_REC);
10696 x_return_status := OKL_API.G_RET_STS_ERROR;
10697 RAISE OKL_API.G_EXCEPTION_ERROR;
10698 END IF;
10699 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10700 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10701 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10702 RAISE OKL_API.G_EXCEPTION_ERROR;
10703 END IF;
10704
10705 OPEN c_model_top_line(p_model_line_id => ln_add_cle_id,
10706 p_dnz_chr_id => ln_add_dnz_chr_id);
10707 FETCH c_model_top_line INTO ln_top_line_id;
10708
10709 IF c_model_top_line%NOTFOUND THEN
10710 OKL_API.set_message(p_app_name => G_APP_NAME,
10711 p_msg_name => G_NO_MATCHING_RECORD,
10712 p_token1 => G_COL_NAME_TOKEN,
10713 p_token1_value => 'cle_id');
10714 RAISE G_EXCEPTION_HALT_VALIDATION;
10715 END IF;
10716
10717 CLOSE c_model_top_line;
10718
10719 -- Calculate the OEC to Populate the OKL_K_LINES_V.OEC
10720 oec_calc_upd_fin_rec(p_api_version => p_api_version,
10721 p_init_msg_list => p_init_msg_list,
10722 x_return_status => x_return_status,
10723 x_msg_count => x_msg_count,
10724 x_msg_data => x_msg_data,
10725 P_new_yn => P_new_yn,
10726 p_asset_number => p_asset_number,
10727 -- 4414408
10728 p_top_line_id => ln_top_line_id,
10729 p_dnz_chr_id => ln_add_dnz_chr_id,
10730 x_fin_clev_rec => x_fin_clev_rec,
10731 x_fin_klev_rec => x_fin_klev_rec,
10732 x_oec => ln_klev_fin_oec,
10733 p_validate_fin_line => OKL_API.G_TRUE);
10734 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10735 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10736 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10737 RAISE OKL_API.G_EXCEPTION_ERROR;
10738 END IF;
10739 -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
10740 cap_amt_calc_upd_fin_rec(p_api_version => p_api_version,
10741 p_init_msg_list => p_init_msg_list,
10742 x_return_status => x_return_status,
10743 x_msg_count => x_msg_count,
10744 x_msg_data => x_msg_data,
10745 P_new_yn => P_new_yn,
10746 p_asset_number => p_asset_number,
10747 -- 4414408
10748 p_top_line_id => ln_top_line_id,
10749 p_dnz_chr_id => ln_add_dnz_chr_id,
10750 x_fin_clev_rec => x_fin_clev_rec,
10751 x_fin_klev_rec => x_fin_klev_rec,
10752 x_cap_amt => ln_klev_fin_cap,
10753 p_validate_fin_line => OKL_API.G_TRUE);
10754 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10755 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10756 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10757 RAISE OKL_API.G_EXCEPTION_ERROR;
10758 END IF;
10759 -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
10760 res_value_calc_upd_fin_rec(p_api_version => p_api_version,
10761 p_init_msg_list => p_init_msg_list,
10762 x_return_status => x_return_status,
10763 x_msg_count => x_msg_count,
10764 x_msg_data => x_msg_data,
10765 P_new_yn => P_new_yn,
10766 p_asset_number => p_asset_number,
10767 -- 4414408
10768 p_top_line_id => ln_top_line_id,
10769 p_dnz_chr_id => ln_add_dnz_chr_id,
10770 x_fin_clev_rec => x_fin_clev_rec,
10771 x_fin_klev_rec => x_fin_klev_rec,
10772 x_res_value => ln_klev_fin_res,
10773 p_validate_fin_line => OKL_API.G_TRUE);
10774 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10775 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10776 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10777 RAISE OKL_API.G_EXCEPTION_ERROR;
10778 END IF;
10779
10780 --Bug# 5530990
10781 -- Update Original Cost and Depreciation Cost in
10782 -- OKL_TXL_ASSETS_B and OKL_TXD_ASSETS_B when
10783 -- Add on line is updated
10784 update_asset_cost(p_api_version => p_api_version,
10785 p_init_msg_list => p_init_msg_list,
10786 x_return_status => x_return_status,
10787 x_msg_count => x_msg_count,
10788 x_msg_data => x_msg_data,
10789 p_cleb_fin_id => ln_top_line_id,
10790 p_chr_id => ln_add_dnz_chr_id,
10791 p_oec => ln_klev_fin_oec);
10792 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10793 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10794 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10795 RAISE OKL_API.G_EXCEPTION_ERROR;
10796 END IF;
10797
10798 -- We need to change the status of the header whenever there is updating happening
10799 -- after the contract status is approved
10800 IF (x_fin_clev_rec.dnz_chr_id is NOT NULL) AND
10801 (x_fin_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
10802 --cascade edit status on to lines
10803 okl_contract_status_pub.cascade_lease_status_edit
10804 (p_api_version => p_api_version,
10805 p_init_msg_list => p_init_msg_list,
10806 x_return_status => x_return_status,
10807 x_msg_count => x_msg_count,
10808 x_msg_data => x_msg_data,
10809 p_chr_id => x_fin_clev_rec.dnz_chr_id);
10810 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10811 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10812 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10813 RAISE OKL_API.G_EXCEPTION_ERROR;
10814 END IF;
10815 END IF;
10816 OKL_API.END_ACTIVITY (x_msg_count,
10817 x_msg_data );
10818 EXCEPTION
10819 WHEN OKL_API.G_EXCEPTION_ERROR THEN
10820 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10821 l_api_name,
10822 G_PKG_NAME,
10823 'OKL_API.G_RET_STS_ERROR',
10824 x_msg_count,
10825 x_msg_data,
10826 '_PVT');
10827 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10828 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10829 l_api_name,
10830 G_PKG_NAME,
10831 'OKL_API.G_RET_STS_UNEXP_ERROR',
10832 x_msg_count,
10833 x_msg_data,
10834 '_PVT');
10835 WHEN OTHERS THEN
10836 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10837 l_api_name,
10838 G_PKG_NAME,
10839 'OTHERS',
10840 x_msg_count,
10841 x_msg_data,
10842 '_PVT');
10843 END update_add_on_line;
10844 -------------------------------------------------------------------------------------------------------
10845 ---------------------------- Main Process for Delete of Add on Line -----------------------------------
10846 -------------------------------------------------------------------------------------------------------
10847 PROCEDURE delete_add_on_line(
10848 p_api_version IN NUMBER,
10849 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
10850 x_return_status OUT NOCOPY VARCHAR2,
10851 x_msg_count OUT NOCOPY NUMBER,
10852 x_msg_data OUT NOCOPY VARCHAR2,
10853 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
10854 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
10855 p_clev_tbl IN clev_tbl_type,
10856 p_klev_tbl IN klev_tbl_type,
10857 x_fin_clev_rec OUT NOCOPY clev_rec_type,
10858 x_fin_klev_rec OUT NOCOPY klev_rec_type) IS
10859
10860 i NUMBER := 0;
10861 j NUMBER := 0;
10862 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_ADDON_LN';
10863 ln_add_cle_id OKC_K_LINES_V.CLE_ID%TYPE := 0;
10864 ln_add_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE := 0;
10865 ln_top_line_id OKC_K_LINES_V.CLE_ID%TYPE := 0;
10866 l_clev_tbl clev_tbl_type;
10867 ln_klev_fin_oec OKL_K_LINES_V.OEC%TYPE := 0;
10868 ln_klev_fin_res OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
10869 ln_klev_fin_cap OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
10870
10871 -- To Find out the Top line ID
10872 CURSOR c_model_top_line(p_model_line_id OKC_K_LINES_V.ID%TYPE,
10873 p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
10874 -- #4414408
10875 SELECT cle.cle_id
10876 FROM okc_k_lines_b cle
10877 WHERE cle.id = p_model_line_id
10878 AND cle.dnz_chr_id = p_dnz_chr_id
10879 AND cle.lse_id = G_MODEL_LINE_LTY_ID;
10880
10881 BEGIN
10882 x_return_status := OKL_API.G_RET_STS_SUCCESS;
10883 -- Call start_activity to create savepoint, check compatibility
10884 -- and initialize message list
10885 x_return_status := OKL_API.START_ACTIVITY (
10886 l_api_name
10887 ,p_init_msg_list
10888 ,'_PVT'
10889 ,x_return_status);
10890 -- Check if activity started successfully
10891 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10892 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10893 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10894 RAISE OKL_API.G_EXCEPTION_ERROR;
10895 END IF;
10896 OKL_API.init_msg_list(p_init_msg_list);
10897 -- Make sure PL/SQL table has records in it before passing
10898 IF (p_clev_tbl.COUNT > 0) AND
10899 (p_klev_tbl.COUNT > 0) THEN
10900 IF (p_clev_tbl.COUNT <> p_klev_tbl.COUNT) THEN
10901 OKL_API.set_message(p_app_name => G_APP_NAME,
10902 p_msg_name => G_CNT_REC);
10903 RAISE OKL_API.G_EXCEPTION_ERROR;
10904 END IF;
10905 i := p_clev_tbl.FIRST;
10906 j := p_klev_tbl.FIRST;
10907 LOOP
10908 delete_addon_line_rec(p_api_version => p_api_version,
10909 p_init_msg_list => p_init_msg_list,
10910 x_return_status => x_return_status,
10911 x_msg_count => x_msg_count,
10912 x_msg_data => x_msg_data,
10913 p_clev_rec => p_clev_tbl(i),
10914 p_klev_rec => p_klev_tbl(j),
10915 x_clev_rec => l_clev_tbl(i));
10916 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10917 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
10918 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10919 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
10920 END IF;
10921 ln_add_cle_id := l_clev_tbl(i).cle_id;
10922 ln_add_dnz_chr_id := l_clev_tbl(i).dnz_chr_id;
10923 -- Assume that there will be one to one for item and add on line
10924 EXIT WHEN (i = p_clev_tbl.LAST);
10925 i := p_clev_tbl.NEXT(i);
10926 j := p_klev_tbl.NEXT(j);
10927 END LOOP;
10928 ELSE
10929 OKL_API.set_message(p_app_name => G_APP_NAME,
10930 p_msg_name => G_CNT_REC);
10931 x_return_status := OKL_API.G_RET_STS_ERROR;
10932 RAISE OKL_API.G_EXCEPTION_ERROR;
10933 END IF;
10934 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10935 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10936 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10937 RAISE OKL_API.G_EXCEPTION_ERROR;
10938 END IF;
10939
10940 OPEN c_model_top_line(p_model_line_id => ln_add_cle_id,
10941 p_dnz_chr_id => ln_add_dnz_chr_id);
10942 FETCH c_model_top_line INTO ln_top_line_id;
10943
10944 IF c_model_top_line%NOTFOUND THEN
10945 OKL_API.set_message(p_app_name => G_APP_NAME,
10946 p_msg_name => G_NO_MATCHING_RECORD,
10947 p_token1 => G_COL_NAME_TOKEN,
10948 p_token1_value => 'cle_id');
10949 RAISE G_EXCEPTION_HALT_VALIDATION;
10950 END IF;
10951
10952 CLOSE c_model_top_line;
10953
10954 -- Calculate the OEC to Populate the OKL_K_LINES_V.OEC
10955 oec_calc_upd_fin_rec(p_api_version => p_api_version,
10956 p_init_msg_list => p_init_msg_list,
10957 x_return_status => x_return_status,
10958 x_msg_count => x_msg_count,
10959 x_msg_data => x_msg_data,
10960 P_new_yn => P_new_yn,
10961 p_asset_number => p_asset_number,
10962 -- 4414408
10963 p_top_line_id => ln_top_line_id,
10964 p_dnz_chr_id => ln_add_dnz_chr_id,
10965 x_fin_clev_rec => x_fin_clev_rec,
10966 x_fin_klev_rec => x_fin_klev_rec,
10967 x_oec => ln_klev_fin_oec,
10968 p_validate_fin_line => OKL_API.G_TRUE);
10969 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10970 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10971 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10972 RAISE OKL_API.G_EXCEPTION_ERROR;
10973 END IF;
10974 -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
10975 cap_amt_calc_upd_fin_rec(p_api_version => p_api_version,
10976 p_init_msg_list => p_init_msg_list,
10977 x_return_status => x_return_status,
10978 x_msg_count => x_msg_count,
10979 x_msg_data => x_msg_data,
10980 P_new_yn => P_new_yn,
10981 p_asset_number => p_asset_number,
10982 -- 4414408
10983 p_top_line_id => ln_top_line_id,
10984 p_dnz_chr_id => ln_add_dnz_chr_id,
10985 x_fin_clev_rec => x_fin_clev_rec,
10986 x_fin_klev_rec => x_fin_klev_rec,
10987 x_cap_amt => ln_klev_fin_cap,
10988 p_validate_fin_line => OKL_API.G_TRUE);
10989 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10990 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10991 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10992 RAISE OKL_API.G_EXCEPTION_ERROR;
10993 END IF;
10994 -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
10995 res_value_calc_upd_fin_rec(p_api_version => p_api_version,
10996 p_init_msg_list => p_init_msg_list,
10997 x_return_status => x_return_status,
10998 x_msg_count => x_msg_count,
10999 x_msg_data => x_msg_data,
11000 P_new_yn => P_new_yn,
11001 p_asset_number => p_asset_number,
11002 -- 4414408
11003 p_top_line_id => ln_top_line_id,
11004 p_dnz_chr_id => ln_add_dnz_chr_id,
11005 x_fin_clev_rec => x_fin_clev_rec,
11006 x_fin_klev_rec => x_fin_klev_rec,
11007 x_res_value => ln_klev_fin_res,
11008 p_validate_fin_line => OKL_API.G_TRUE);
11009 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11010 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11011 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11012 RAISE OKL_API.G_EXCEPTION_ERROR;
11013 END IF;
11014
11015 --Bug# 5530990
11016 -- Update Original Cost and Depreciation Cost in
11017 -- OKL_TXL_ASSETS_B and OKL_TXD_ASSETS_B when
11018 -- Add on line is deleted
11019 update_asset_cost(p_api_version => p_api_version,
11020 p_init_msg_list => p_init_msg_list,
11021 x_return_status => x_return_status,
11022 x_msg_count => x_msg_count,
11023 x_msg_data => x_msg_data,
11024 p_cleb_fin_id => ln_top_line_id,
11025 p_chr_id => ln_add_dnz_chr_id,
11026 p_oec => ln_klev_fin_oec);
11027 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11028 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11029 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11030 RAISE OKL_API.G_EXCEPTION_ERROR;
11031 END IF;
11032
11033 -- We need to change the status of the header whenever there is updating happening
11034 -- after the contract status is approved
11035 IF (x_fin_clev_rec.dnz_chr_id is NOT NULL) AND
11036 (x_fin_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
11037 --cascade edit status on to lines
11038 okl_contract_status_pub.cascade_lease_status_edit
11039 (p_api_version => p_api_version,
11040 p_init_msg_list => p_init_msg_list,
11041 x_return_status => x_return_status,
11042 x_msg_count => x_msg_count,
11043 x_msg_data => x_msg_data,
11044 p_chr_id => x_fin_clev_rec.dnz_chr_id);
11045 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11046 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11047 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11048 RAISE OKL_API.G_EXCEPTION_ERROR;
11049 END IF;
11050 END IF;
11051 OKL_API.END_ACTIVITY (x_msg_count,
11052 x_msg_data );
11053 EXCEPTION
11054 WHEN OKL_API.G_EXCEPTION_ERROR THEN
11055 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11056 l_api_name,
11057 G_PKG_NAME,
11058 'OKL_API.G_RET_STS_ERROR',
11059 x_msg_count,
11060 x_msg_data,
11061 '_PVT');
11062 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11063 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11064 l_api_name,
11065 G_PKG_NAME,
11066 'OKL_API.G_RET_STS_UNEXP_ERROR',
11067 x_msg_count,
11068 x_msg_data,
11069 '_PVT');
11070 WHEN OTHERS THEN
11071 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11072 l_api_name,
11073 G_PKG_NAME,
11074 'OTHERS',
11075 x_msg_count,
11076 x_msg_data,
11077 '_PVT');
11078 END delete_add_on_line;
11079 -----------------------------------------------------------------------------------------------
11080 ------------------ Main Process for Instance Line Creation-------------------------------------
11081 -----------------------------------------------------------------------------------------------
11082 PROCEDURE Create_instance_line(
11083 p_api_version IN NUMBER,
11084 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
11085 x_return_status OUT NOCOPY VARCHAR2,
11086 x_msg_count OUT NOCOPY NUMBER,
11087 x_msg_data OUT NOCOPY VARCHAR2,
11088 p_clev_rec IN clev_rec_type,
11089 p_klev_rec IN klev_rec_type,
11090 p_itiv_rec IN itiv_rec_type,
11091 x_clev_rec OUT NOCOPY clev_rec_type,
11092 x_klev_rec OUT NOCOPY klev_rec_type,
11093 x_itiv_rec OUT NOCOPY itiv_rec_type) IS
11094
11095 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_INSTANCE_LINES';
11096 l_clev_rec clev_rec_type;
11097 ln_lse_id OKC_LINE_STYLES_V.ID%TYPE := OKL_API.G_MISS_NUM;
11098 -- Variables for validation of line style
11099 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
11100 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
11101 BEGIN
11102 x_return_status := OKL_API.G_RET_STS_SUCCESS;
11103 -- Call start_activity to create savepoint, check compatibility
11104 -- and initialize message list
11105 x_return_status := OKL_API.START_ACTIVITY (
11106 l_api_name
11107 ,p_init_msg_list
11108 ,'_PVT'
11109 ,x_return_status);
11110 -- Check if activity started successfully
11111 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11112 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11113 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11114 RAISE OKL_API.G_EXCEPTION_ERROR;
11115 END IF;
11116 -- 4414408 The validations in Validate_lse_id and Validate_dnz_chr_id are redundant
11117 /*
11118 -- Validate Line Style id and get the line type code
11119 -- and line style type for further processing
11120 validate_lse_id(p_clev_rec => p_clev_rec,
11121 x_return_status => x_return_status,
11122 x_lty_code => l_lty_code,
11123 x_lse_type => l_lse_type);
11124 -- Check if activity started successfully
11125 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11126 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11127 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11128 RAISE OKL_API.G_EXCEPTION_ERROR;
11129 END IF;
11130 -- Validate the Dnz_Chr_id
11131 validate_dnz_chr_id(p_clev_rec => p_clev_rec,
11132 x_return_status => x_return_status);
11133 -- Check if activity started successfully
11134 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11135 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11136 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11137 RAISE OKL_API.G_EXCEPTION_ERROR;
11138 END IF;
11139 */
11140 -- Now we are going to create the instance Line
11141 -- Here we have have Dnz_Chr_id ,lse_id and cle_id
11142 -- The Record Should have the cle_id
11143 -- if the given line style is instance Line
11144 l_clev_rec := p_clev_rec;
11145 IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
11146 l_clev_rec.chr_id IS NULL) AND
11147 (l_clev_rec.dnz_chr_id IS NOT NULL OR
11148 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
11149 (l_clev_rec.cle_id IS NOT NULL OR
11150 l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
11151 -- #4414408
11152 -- l_lty_code = G_INST_LINE_LTY_CODE AND
11153 -- l_lse_type = G_SLS_TYPE THEN
11154 l_clev_rec.lse_id = G_INST_LINE_LTY_ID THEN
11155 validate_instance_number_ib(x_return_status => x_return_status,
11156 p_inst_num_ib => p_itiv_rec.instance_number_ib);
11157 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11158 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11159 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11160 RAISE OKL_API.G_EXCEPTION_ERROR;
11161 END IF;
11162 Create_inst_line(p_api_version => p_api_version,
11163 p_init_msg_list => p_init_msg_list,
11164 x_return_status => x_return_status,
11165 x_msg_count => x_msg_count,
11166 x_msg_data => x_msg_data,
11167 -- 4414408 p_lty_code => l_lty_code,
11168 p_clev_rec => l_clev_rec,
11169 p_klev_rec => p_klev_rec,
11170 x_clev_rec => x_clev_rec,
11171 x_klev_rec => x_klev_rec);
11172 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11173 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11174 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11175 RAISE OKL_API.G_EXCEPTION_ERROR;
11176 END IF;
11177 ELSE
11178 OKL_API.set_message(p_app_name => G_APP_NAME,
11179 p_msg_name => G_INVALID_CRITERIA,
11180 p_token1 => G_COL_NAME_TOKEN,
11181 p_token1_value => 'Instance Asset line');
11182 x_return_status := OKL_API.G_RET_STS_ERROR;
11183 RAISE OKL_API.G_EXCEPTION_ERROR;
11184 END IF;
11185 OKL_API.END_ACTIVITY (x_msg_count,
11186 x_msg_data );
11187 EXCEPTION
11188 WHEN OKL_API.G_EXCEPTION_ERROR THEN
11189 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11190 l_api_name,
11191 G_PKG_NAME,
11192 'OKL_API.G_RET_STS_ERROR',
11193 x_msg_count,
11194 x_msg_data,
11195 '_PVT');
11196 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11197 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11198 l_api_name,
11199 G_PKG_NAME,
11200 'OKL_API.G_RET_STS_UNEXP_ERROR',
11201 x_msg_count,
11202 x_msg_data,
11203 '_PVT');
11204 WHEN OTHERS THEN
11205 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11206 l_api_name,
11207 G_PKG_NAME,
11208 'OTHERS',
11209 x_msg_count,
11210 x_msg_data,
11211 '_PVT');
11212 END Create_instance_line;
11213 -----------------------------------------------------------------------------------------------
11214 ------------------ Main Process for Updating Instance Line ------------------------------------
11215 -----------------------------------------------------------------------------------------------
11216 PROCEDURE Update_instance_line(
11217 p_api_version IN NUMBER,
11218 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
11219 x_return_status OUT NOCOPY VARCHAR2,
11220 x_msg_count OUT NOCOPY NUMBER,
11221 x_msg_data OUT NOCOPY VARCHAR2,
11222 p_clev_rec IN clev_rec_type,
11223 p_klev_rec IN klev_rec_type,
11224 p_itiv_rec IN itiv_rec_type,
11225 x_clev_rec OUT NOCOPY clev_rec_type,
11226 x_klev_rec OUT NOCOPY klev_rec_type,
11227 x_itiv_rec OUT NOCOPY itiv_rec_type) IS
11228
11229 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_INSTANCE_LINES';
11230 l_clev_rec clev_rec_type;
11231 -- Variables for validation of line style
11232 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
11233 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
11234 BEGIN
11235 x_return_status := OKL_API.G_RET_STS_SUCCESS;
11236 -- Call start_activity to create savepoint, check compatibility
11237 -- and initialize message list
11238 x_return_status := OKL_API.START_ACTIVITY (
11239 l_api_name
11240 ,p_init_msg_list
11241 ,'_PVT'
11242 ,x_return_status);
11243 -- Check if activity started successfully
11244 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11245 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11246 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11247 RAISE OKL_API.G_EXCEPTION_ERROR;
11248 END IF;
11249 validate_sts_code(p_clev_rec => p_clev_rec,
11250 x_return_status => x_return_status);
11251 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11252 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11253 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11254 RAISE OKL_API.G_EXCEPTION_ERROR;
11255 END IF;
11256 -- Validate Line Style id and get the line type code
11257 -- and line style type for further processing
11258 validate_lse_id(p_clev_rec => p_clev_rec,
11259 x_return_status => x_return_status,
11260 x_lty_code => l_lty_code,
11261 x_lse_type => l_lse_type);
11262 -- Check if activity started successfully
11263 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11264 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11265 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11266 RAISE OKL_API.G_EXCEPTION_ERROR;
11267 END IF;
11268 -- Validate the Dnz_Chr_id
11269 validate_dnz_chr_id(p_clev_rec => p_clev_rec,
11270 x_return_status => x_return_status);
11271 -- Check if activity started successfully
11272 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11273 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11274 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11275 RAISE OKL_API.G_EXCEPTION_ERROR;
11276 END IF;
11277 -- Now we are going to create the instance Line
11278 -- Here we have have Dnz_Chr_id ,lse_id and cle_id
11279 -- The Record Should have the cle_id
11280 -- if the given line style is instance Line
11281 l_clev_rec := p_clev_rec;
11282 IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
11283 l_clev_rec.chr_id IS NULL) AND
11284 (l_clev_rec.dnz_chr_id IS NOT NULL OR
11285 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
11286 (l_clev_rec.cle_id IS NOT NULL OR
11287 l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
11288 l_lty_code = G_INST_LINE_LTY_CODE AND
11289 l_lse_type = G_SLS_TYPE THEN
11290 IF (p_itiv_rec.instance_number_ib IS NOT NULL OR
11291 p_itiv_rec.instance_number_ib <> OKL_API.G_MISS_CHAR) THEN
11292 update_inst_line(p_api_version => p_api_version,
11293 p_init_msg_list => p_init_msg_list,
11294 x_return_status => x_return_status,
11295 x_msg_count => x_msg_count,
11296 x_msg_data => x_msg_data,
11297 p_lty_code => l_lty_code,
11298 p_clev_rec => p_clev_rec,
11299 p_klev_rec => p_klev_rec,
11300 x_clev_rec => x_clev_rec,
11301 x_klev_rec => x_klev_rec);
11302 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11303 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11304 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11305 RAISE OKL_API.G_EXCEPTION_ERROR;
11306 END IF;
11307 ELSE
11308 OKL_API.set_message(p_app_name => G_APP_NAME,
11309 p_msg_name => G_INVALID_CRITERIA,
11310 p_token1 => G_COL_NAME_TOKEN,
11311 p_token1_value => 'Instance Asset line');
11312 x_return_status := OKL_API.G_RET_STS_ERROR;
11313 RAISE OKL_API.G_EXCEPTION_ERROR;
11314 END IF;
11315 ELSE
11316 OKL_API.set_message(p_app_name => G_APP_NAME,
11317 p_msg_name => G_INVALID_CRITERIA,
11318 p_token1 => G_COL_NAME_TOKEN,
11319 p_token1_value => 'Instance Asset line');
11320 x_return_status := OKL_API.G_RET_STS_ERROR;
11321 RAISE OKL_API.G_EXCEPTION_ERROR;
11322 END IF;
11323 OKL_API.END_ACTIVITY (x_msg_count,
11324 x_msg_data );
11325 EXCEPTION
11326 WHEN OKL_API.G_EXCEPTION_ERROR THEN
11327 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11328 l_api_name,
11329 G_PKG_NAME,
11330 'OKL_API.G_RET_STS_ERROR',
11331 x_msg_count,
11332 x_msg_data,
11333 '_PVT');
11334 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11335 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11336 l_api_name,
11337 G_PKG_NAME,
11338 'OKL_API.G_RET_STS_UNEXP_ERROR',
11339 x_msg_count,
11340 x_msg_data,
11341 '_PVT');
11342 WHEN OTHERS THEN
11343 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11344 l_api_name,
11345 G_PKG_NAME,
11346 'OTHERS',
11347 x_msg_count,
11348 x_msg_data,
11349 '_PVT');
11350 END Update_instance_line;
11351 -----------------------------------------------------------------------------------------------
11352 ------------------ Main Process for Install Base Line Creation---------------------------------
11353 -----------------------------------------------------------------------------------------------
11354 PROCEDURE Create_instance_ib_line(
11355 p_api_version IN NUMBER,
11356 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
11357 x_return_status OUT NOCOPY VARCHAR2,
11358 x_msg_count OUT NOCOPY NUMBER,
11359 x_msg_data OUT NOCOPY VARCHAR2,
11360 p_clev_rec IN clev_rec_type,
11361 p_klev_rec IN klev_rec_type,
11362 p_cimv_rec IN cimv_rec_type,
11363 p_itiv_rec IN itiv_rec_type,
11364 x_clev_rec OUT NOCOPY clev_rec_type,
11365 x_klev_rec OUT NOCOPY klev_rec_type,
11366 x_cimv_rec OUT NOCOPY cimv_rec_type,
11367 x_trxv_rec OUT NOCOPY trxv_rec_type,
11368 x_itiv_rec OUT NOCOPY itiv_rec_type) IS
11369
11370 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_INSTANCE_IB_LINES';
11371 l_clev_rec clev_rec_type;
11372 l_cimv_rec cimv_rec_type;
11373 ln_lse_id OKC_LINE_STYLES_V.ID%TYPE := OKL_API.G_MISS_NUM;
11374 -- Variables for validation of line style
11375 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
11376 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
11377 BEGIN
11378 x_return_status := OKL_API.G_RET_STS_SUCCESS;
11379 -- Call start_activity to create savepoint, check compatibility
11380 -- and initialize message list
11381 x_return_status := OKL_API.START_ACTIVITY (
11382 l_api_name
11383 ,p_init_msg_list
11384 ,'_PVT'
11385 ,x_return_status);
11386 -- Check if activity started successfully
11387 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11388 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11389 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11390 RAISE OKL_API.G_EXCEPTION_ERROR;
11391 END IF;
11392 -- 4414408 The validations in Validate_lse_id and Validate_dnz_chr_id are redundant
11393 /*
11394 -- Validate Line Style id and get the line type code
11395 -- and line style type for further processing
11396 validate_lse_id(p_clev_rec => p_clev_rec,
11397 x_return_status => x_return_status,
11398 x_lty_code => l_lty_code,
11399 x_lse_type => l_lse_type);
11400 -- Check if activity started successfully
11401 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11402 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11403 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11404 RAISE OKL_API.G_EXCEPTION_ERROR;
11405 END IF;
11406 -- Validate the Dnz_Chr_id
11407 validate_dnz_chr_id(p_clev_rec => p_clev_rec,
11408 x_return_status => x_return_status);
11409 -- Check if activity started successfully
11410 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11411 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11412 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11413 RAISE OKL_API.G_EXCEPTION_ERROR;
11414 END IF;
11415 */
11416 -- Now we are going to create the instance Line
11417 -- Here we have have Dnz_Chr_id ,lse_id and cle_id
11418 -- The Record Should have the cle_id
11419 -- if the given line style is instance Line
11420 l_clev_rec := p_clev_rec;
11421 IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
11422 l_clev_rec.chr_id IS NULL) AND
11423 (l_clev_rec.dnz_chr_id IS NOT NULL OR
11424 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
11425 (l_clev_rec.cle_id IS NOT NULL OR
11426 l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
11427 -- 4414408
11428 -- l_lty_code = G_IB_LINE_LTY_CODE AND
11429 -- l_lse_type = G_SLS_TYPE THEN
11430 l_clev_rec.lse_id = G_IB_LINE_LTY_ID THEN
11431 validate_instance_number_ib(x_return_status => x_return_status,
11432 p_inst_num_ib => p_itiv_rec.instance_number_ib);
11433 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11434 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11435 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11436 RAISE OKL_API.G_EXCEPTION_ERROR;
11437 END IF;
11438 Create_installed_base_line(p_api_version => p_api_version,
11439 p_init_msg_list => p_init_msg_list,
11440 x_return_status => x_return_status,
11441 x_msg_count => x_msg_count,
11442 x_msg_data => x_msg_data,
11443 -- 4414408 p_lty_code => l_lty_code,
11444 p_clev_rec => l_clev_rec,
11445 p_klev_rec => p_klev_rec,
11446 p_cimv_rec => p_cimv_rec,
11447 p_itiv_rec => p_itiv_rec,
11448 x_clev_rec => x_clev_rec,
11449 x_klev_rec => x_klev_rec,
11450 x_cimv_rec => x_cimv_rec,
11451 x_trxv_rec => x_trxv_rec,
11452 x_itiv_rec => x_itiv_rec);
11453 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11454 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11455 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11456 RAISE OKL_API.G_EXCEPTION_ERROR;
11457 END IF;
11458 ELSE
11459 OKL_API.set_message(p_app_name => G_APP_NAME,
11460 p_msg_name => G_INVALID_CRITERIA,
11461 p_token1 => G_COL_NAME_TOKEN,
11462 p_token1_value => 'Install Base Asset line');
11463 x_return_status := OKL_API.G_RET_STS_ERROR;
11464 RAISE OKL_API.G_EXCEPTION_ERROR;
11465 END IF;
11466 OKL_API.END_ACTIVITY (x_msg_count,
11467 x_msg_data );
11468 EXCEPTION
11469 WHEN OKL_API.G_EXCEPTION_ERROR THEN
11470 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11471 l_api_name,
11472 G_PKG_NAME,
11473 'OKL_API.G_RET_STS_ERROR',
11474 x_msg_count,
11475 x_msg_data,
11476 '_PVT');
11477 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11478 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11479 l_api_name,
11480 G_PKG_NAME,
11481 'OKL_API.G_RET_STS_UNEXP_ERROR',
11482 x_msg_count,
11483 x_msg_data,
11484 '_PVT');
11485 WHEN OTHERS THEN
11486 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11487 l_api_name,
11488 G_PKG_NAME,
11489 'OTHERS',
11490 x_msg_count,
11491 x_msg_data,
11492 '_PVT');
11493 END Create_instance_ib_line;
11494 -----------------------------------------------------------------------------------------------
11495 ------------------ Main Process for Updating Instance IB Line ---------------------------------
11496 -----------------------------------------------------------------------------------------------
11497 PROCEDURE Update_instance_ib_line(
11498 p_api_version IN NUMBER,
11499 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
11500 x_return_status OUT NOCOPY VARCHAR2,
11501 x_msg_count OUT NOCOPY NUMBER,
11502 x_msg_data OUT NOCOPY VARCHAR2,
11503 p_clev_rec IN clev_rec_type,
11504 p_klev_rec IN klev_rec_type,
11505 p_cimv_rec IN cimv_rec_type,
11506 p_itiv_rec IN itiv_rec_type,
11507 x_clev_rec OUT NOCOPY clev_rec_type,
11508 x_klev_rec OUT NOCOPY klev_rec_type,
11509 x_cimv_rec OUT NOCOPY cimv_rec_type,
11510 x_itiv_rec OUT NOCOPY itiv_rec_type) IS
11511
11512 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_INSTANCE_IB_LINES';
11513 l_clev_rec clev_rec_type;
11514 l_cimv_rec cimv_rec_type;
11515 lv_dummy VARCHAR2(3);
11516 lv_ib_id1 OKX_INSTALL_ITEMS_V.ID1%TYPE;
11517 lv_ib_id2 OKX_INSTALL_ITEMS_V.ID2%TYPE;
11518 -- Variables for validation of line style
11519 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
11520 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
11521 l_talv_rec talv_rec_type;
11522 l_trxv_rec trxv_rec_type;
11523 l_itiv_rec itiv_rec_type;
11524 ln_tas_id OKL_TRX_ASSETS.ID%TYPE;
11525 ln_line_number OKL_TXL_ASSETS_V.LINE_NUMBER%TYPE;
11526 BEGIN
11527 x_return_status := OKL_API.G_RET_STS_SUCCESS;
11528 -- Call start_activity to create savepoint, check compatibility
11529 -- and initialize message list
11530 x_return_status := OKL_API.START_ACTIVITY (
11531 l_api_name
11532 ,p_init_msg_list
11533 ,'_PVT'
11534 ,x_return_status);
11535 -- Check if activity started successfully
11536 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11537 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11538 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11539 RAISE OKL_API.G_EXCEPTION_ERROR;
11540 END IF;
11541 validate_sts_code(p_clev_rec => p_clev_rec,
11542 x_return_status => x_return_status);
11543 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11544 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11545 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11546 RAISE OKL_API.G_EXCEPTION_ERROR;
11547 END IF;
11548 -- Validate Line Style id and get the line type code
11549 -- and line style type for further processing
11550 validate_lse_id(p_clev_rec => p_clev_rec,
11551 x_return_status => x_return_status,
11552 x_lty_code => l_lty_code,
11553 x_lse_type => l_lse_type);
11554 -- Check if activity started successfully
11555 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11556 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11557 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11558 RAISE OKL_API.G_EXCEPTION_ERROR;
11559 END IF;
11560 -- Validate the Dnz_Chr_id
11561 validate_dnz_chr_id(p_clev_rec => p_clev_rec,
11562 x_return_status => x_return_status);
11563 -- Check if activity started successfully
11564 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11565 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11566 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11567 RAISE OKL_API.G_EXCEPTION_ERROR;
11568 END IF;
11569 -- Now we are going to create the installed_base_Line
11570 -- Here we have have Dnz_Chr_id ,lse_id and cle_id
11571 -- The Record Should have the cle_id
11572 -- if the given line style is instance base Line
11573 l_clev_rec := p_clev_rec;
11574 IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
11575 l_clev_rec.chr_id IS NULL) AND
11576 (l_clev_rec.dnz_chr_id IS NOT NULL OR
11577 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
11578 (l_clev_rec.cle_id IS NOT NULL OR
11579 l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
11580 l_lty_code = G_IB_LINE_LTY_CODE AND
11581 l_lse_type = G_SLS_TYPE THEN
11582 IF (p_itiv_rec.instance_number_ib IS NOT NULL OR
11583 p_itiv_rec.instance_number_ib <> OKL_API.G_MISS_CHAR) THEN
11584 l_cimv_rec := p_cimv_rec;
11585 update_installed_base_line(p_api_version => p_api_version,
11586 p_init_msg_list => p_init_msg_list,
11587 x_return_status => x_return_status,
11588 x_msg_count => x_msg_count,
11589 x_msg_data => x_msg_data,
11590 p_lty_code => l_lty_code,
11591 p_clev_rec => p_clev_rec,
11592 p_klev_rec => p_klev_rec,
11593 p_cimv_rec => p_cimv_rec,
11594 p_itiv_rec => p_itiv_rec,
11595 x_clev_rec => x_clev_rec,
11596 x_klev_rec => x_klev_rec,
11597 x_cimv_rec => x_cimv_rec,
11598 x_itiv_rec => x_itiv_rec);
11599 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11600 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11601 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11602 RAISE OKL_API.G_EXCEPTION_ERROR;
11603 END IF;
11604 ELSE
11605 OKL_API.set_message(p_app_name => G_APP_NAME,
11606 p_msg_name => G_INVALID_CRITERIA,
11607 p_token1 => G_COL_NAME_TOKEN,
11608 p_token1_value => 'Install Base Asset line');
11609 x_return_status := OKL_API.G_RET_STS_ERROR;
11610 RAISE OKL_API.G_EXCEPTION_ERROR;
11611 END IF;
11612 ELSE
11613 OKL_API.set_message(p_app_name => G_APP_NAME,
11614 p_msg_name => G_INVALID_CRITERIA,
11615 p_token1 => G_COL_NAME_TOKEN,
11616 p_token1_value => 'Instance Asset line');
11617 x_return_status := OKL_API.G_RET_STS_ERROR;
11618 RAISE OKL_API.G_EXCEPTION_ERROR;
11619 END IF;
11620 OKL_API.END_ACTIVITY (x_msg_count,
11621 x_msg_data );
11622 EXCEPTION
11623 WHEN OKL_API.G_EXCEPTION_ERROR THEN
11624 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11625 l_api_name,
11626 G_PKG_NAME,
11627 'OKL_API.G_RET_STS_ERROR',
11628 x_msg_count,
11629 x_msg_data,
11630 '_PVT');
11631 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11632 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11633 l_api_name,
11634 G_PKG_NAME,
11635 'OKL_API.G_RET_STS_UNEXP_ERROR',
11636 x_msg_count,
11637 x_msg_data,
11638 '_PVT');
11639 WHEN OTHERS THEN
11640 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11641 l_api_name,
11642 G_PKG_NAME,
11643 'OTHERS',
11644 x_msg_count,
11645 x_msg_data,
11646 '_PVT');
11647 END Update_instance_ib_line;
11648 -----------------------------------------------------------------------------------------------
11649 ------------------------ Main Process for Create Party Roles-----------------------------------
11650 -----------------------------------------------------------------------------------------------
11651 PROCEDURE Create_party_roles_rec(
11652 p_api_version IN NUMBER,
11653 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
11654 x_return_status OUT NOCOPY VARCHAR2,
11655 x_msg_count OUT NOCOPY NUMBER,
11656 x_msg_data OUT NOCOPY VARCHAR2,
11657 p_cplv_rec IN cplv_rec_type,
11658 x_cplv_rec OUT NOCOPY cplv_rec_type) IS
11659
11660 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_PTY_RLE_LINES';
11661 l_clev_rec clev_rec_type;
11662 l_cplv_rec cplv_rec_type;
11663 l_klev_rec klev_rec_type;
11664 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
11665 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
11666
11667 --Bug# 4558486
11668 l_kplv_rec OKL_K_PARTY_ROLES_PVT.kplv_rec_type;
11669 x_kplv_rec OKL_K_PARTY_ROLES_PVT.kplv_rec_type;
11670 BEGIN
11671 x_return_status := OKL_API.G_RET_STS_SUCCESS;
11672 -- Call start_activity to create savepoint, check compatibility
11673 -- and initialize message list
11674 x_return_status := OKL_API.START_ACTIVITY (
11675 l_api_name
11676 ,p_init_msg_list
11677 ,'_PVT'
11678 ,x_return_status);
11679 -- Check if activity started successfully
11680 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11681 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11682 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11683 RAISE OKL_API.G_EXCEPTION_ERROR;
11684 END IF;
11685 x_return_status := get_rec_clev(p_id => p_cplv_rec.cle_id,
11686 x_clev_rec => l_clev_rec);
11687 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11688 OKL_API.set_message(p_app_name => G_APP_NAME,
11689 p_msg_name => G_FETCHING_INFO,
11690 p_token1 => G_REC_NAME_TOKEN,
11691 p_token1_value => 'OKC_K_LINES_V Record');
11692 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11693 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11694 OKL_API.set_message(p_app_name => G_APP_NAME,
11695 p_msg_name => G_FETCHING_INFO,
11696 p_token1 => G_REC_NAME_TOKEN,
11697 p_token1_value => 'OKC_K_LINES_V Record');
11698 RAISE OKL_API.G_EXCEPTION_ERROR;
11699 END IF;
11700 x_return_status := get_rec_klev(p_id => p_cplv_rec.cle_id,
11701 x_klev_rec => l_klev_rec);
11702 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11703 OKL_API.set_message(p_app_name => G_APP_NAME,
11704 p_msg_name => G_FETCHING_INFO,
11705 p_token1 => G_REC_NAME_TOKEN,
11706 p_token1_value => 'OKL_K_LINES_V Record');
11707 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11708 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11709 OKL_API.set_message(p_app_name => G_APP_NAME,
11710 p_msg_name => G_FETCHING_INFO,
11711 p_token1 => G_REC_NAME_TOKEN,
11712 p_token1_value => 'OKL_K_LINES_V Record');
11713 RAISE OKL_API.G_EXCEPTION_ERROR;
11714 END IF;
11715 IF l_clev_rec.id <> l_klev_rec.id THEN
11716 OKL_API.set_message(p_app_name => G_APP_NAME,
11717 p_msg_name => G_LINE_RECORD);
11718 x_return_status := OKL_API.G_RET_STS_ERROR;
11719 RAISE OKL_API.G_EXCEPTION_ERROR;
11720 END IF;
11721 -- Validate Line Style id and get the line type code
11722 -- and line style type for further processing
11723 validate_lse_id(p_clev_rec => l_clev_rec,
11724 x_return_status => x_return_status,
11725 x_lty_code => l_lty_code,
11726 x_lse_type => l_lse_type);
11727 -- Check if activity started successfully
11728 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11729 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11730 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11731 RAISE OKL_API.G_EXCEPTION_ERROR;
11732 END IF;
11733 -- Validate the Dnz_Chr_id
11734 validate_dnz_chr_id(p_clev_rec => l_clev_rec,
11735 x_return_status => x_return_status);
11736 -- Check if activity started successfully
11737 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11738 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11739 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11740 RAISE OKL_API.G_EXCEPTION_ERROR;
11741 END IF;
11742 -- We can create a party item info only if the line is Model Line
11743 IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
11744 l_clev_rec.chr_id IS NULL) AND
11745 (l_clev_rec.dnz_chr_id IS NOT NULL OR
11746 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
11747 (l_clev_rec.cle_id IS NOT NULL OR
11748 l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
11749 (l_lty_code = G_MODEL_LINE_LTY_CODE OR
11750 l_lty_code = G_ADDON_LINE_LTY_CODE) AND
11751 l_lse_type = G_SLS_TYPE THEN
11752 x_return_status := get_rec_cplv(p_cplv_id => p_cplv_rec.id,
11753 x_cplv_rec => l_cplv_rec);
11754 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11755 OKL_API.set_message(p_app_name => G_APP_NAME,
11756 p_msg_name => G_FETCHING_INFO,
11757 p_token1 => G_REC_NAME_TOKEN,
11758 p_token1_value => 'OKC_K_PARTY_ROLES_V Record');
11759 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11760 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11761 OKL_API.set_message(p_app_name => G_APP_NAME,
11762 p_msg_name => G_FETCHING_INFO,
11763 p_token1 => G_REC_NAME_TOKEN,
11764 p_token1_value => 'OKC_K_PARTY_ROLES_V Record');
11765 RAISE OKL_API.G_EXCEPTION_ERROR;
11766 END IF;
11767
11768 IF (p_cplv_rec.cle_id IS NOT NULL OR
11769 p_cplv_rec.cle_id <> OKL_API.G_MISS_NUM) THEN
11770 l_cplv_rec.cle_id := p_cplv_rec.cle_id;
11771 ELSE
11772 OKL_API.set_message(p_app_name => G_APP_NAME,
11773 p_msg_name => G_REQUIRED_VALUE,
11774 p_token1 => G_COL_NAME_TOKEN,
11775 p_token1_value => 'cle_id in creation party roles');
11776 RAISE OKL_API.G_EXCEPTION_ERROR;
11777 END IF;
11778 l_cplv_rec.chr_id := null;
11779 -- Creation of Party Item Record for the above record information
11780 --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
11781 -- to create records in tables
11782 -- okc_k_party_roles_b and okl_k_party_roles
11783 /*
11784 OKL_OKC_MIGRATION_PVT.create_k_party_role(p_api_version => p_api_version,
11785 p_init_msg_list => p_init_msg_list,
11786 x_return_status => x_return_status,
11787 x_msg_count => x_msg_count,
11788 x_msg_data => x_msg_data,
11789 p_cplv_rec => l_cplv_rec,
11790 x_cplv_rec => x_cplv_rec);
11791 */
11792
11793 OKL_K_PARTY_ROLES_PVT.create_k_party_role
11794 (p_api_version => p_api_version,
11795 p_init_msg_list => p_init_msg_list,
11796 x_return_status => x_return_status,
11797 x_msg_count => x_msg_count,
11798 x_msg_data => x_msg_data,
11799 p_cplv_rec => l_cplv_rec,
11800 x_cplv_rec => x_cplv_rec,
11801 p_kplv_rec => l_kplv_rec,
11802 x_kplv_rec => x_kplv_rec);
11803
11804 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11805 OKL_API.set_message(p_app_name => G_APP_NAME,
11806 p_msg_name => G_CREATION_PARTY_ROLE);
11807 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11808 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11809 OKL_API.set_message(p_app_name => G_APP_NAME,
11810 p_msg_name => G_CREATION_PARTY_ROLE);
11811 RAISE OKL_API.G_EXCEPTION_ERROR;
11812 END IF;
11813 ELSE
11814 OKL_API.set_message(p_app_name => G_APP_NAME,
11815 p_msg_name => G_INVALID_CRITERIA,
11816 p_token1 => 'LINE_STYLE',
11817 p_token1_value => 'Model/Addon Line for Party Roles');
11818 x_return_status := OKL_API.G_RET_STS_ERROR;
11819 RAISE OKL_API.G_EXCEPTION_ERROR;
11820 END IF;
11821 OKL_API.END_ACTIVITY (x_msg_count,
11822 x_msg_data );
11823 EXCEPTION
11824 WHEN OKL_API.G_EXCEPTION_ERROR THEN
11825 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11826 l_api_name,
11827 G_PKG_NAME,
11828 'OKL_API.G_RET_STS_ERROR',
11829 x_msg_count,
11830 x_msg_data,
11831 '_PVT');
11832 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11833 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11834 l_api_name,
11835 G_PKG_NAME,
11836 'OKL_API.G_RET_STS_UNEXP_ERROR',
11837 x_msg_count,
11838 x_msg_data,
11839 '_PVT');
11840 WHEN OTHERS THEN
11841 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11842 l_api_name,
11843 G_PKG_NAME,
11844 'OTHERS',
11845 x_msg_count,
11846 x_msg_data,
11847 '_PVT');
11848 END Create_party_roles_rec;
11849 -----------------------------------------------------------------------------------------------
11850 ------------------------ Main Process for Update Party Roles-----------------------------------
11851 -----------------------------------------------------------------------------------------------
11852 PROCEDURE Update_party_roles_rec(
11853 p_api_version IN NUMBER,
11854 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
11855 x_return_status OUT NOCOPY VARCHAR2,
11856 x_msg_count OUT NOCOPY NUMBER,
11857 x_msg_data OUT NOCOPY VARCHAR2,
11858 p_cplv_rec IN cplv_rec_type,
11859 x_cplv_rec OUT NOCOPY cplv_rec_type) IS
11860
11861 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_PTY_RLE_LINES';
11862 l_clev_rec clev_rec_type;
11863 l_cplv_rec cplv_rec_type;
11864 l_klev_rec klev_rec_type;
11865 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
11866 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
11867
11868 --Bug# 4558486
11869 l_kplv_rec OKL_K_PARTY_ROLES_PVT.kplv_rec_type;
11870 x_kplv_rec OKL_K_PARTY_ROLES_PVT.kplv_rec_type;
11871 BEGIN
11872 x_return_status := OKL_API.G_RET_STS_SUCCESS;
11873 -- Call start_activity to create savepoint, check compatibility
11874 -- and initialize message list
11875 x_return_status := OKL_API.START_ACTIVITY (
11876 l_api_name
11877 ,p_init_msg_list
11878 ,'_PVT'
11879 ,x_return_status);
11880 -- Check if activity started successfully
11881 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11882 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11883 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11884 RAISE OKL_API.G_EXCEPTION_ERROR;
11885 END IF;
11886 x_return_status := get_rec_cplv(p_cplv_id => p_cplv_rec.id,
11887 x_cplv_rec => l_cplv_rec);
11888 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11889 OKL_API.set_message(p_app_name => G_APP_NAME,
11890 p_msg_name => G_FETCHING_INFO,
11891 p_token1 => G_REC_NAME_TOKEN,
11892 p_token1_value => 'OKC_K_PARTY_ROLES_V Record');
11893 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11894 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11895 OKL_API.set_message(p_app_name => G_APP_NAME,
11896 p_msg_name => G_FETCHING_INFO,
11897 p_token1 => G_REC_NAME_TOKEN,
11898 p_token1_value => 'OKC_K_PARTY_ROLES_V Record');
11899 RAISE OKL_API.G_EXCEPTION_ERROR;
11900 END IF;
11901 x_return_status := get_rec_clev(p_id => l_cplv_rec.cle_id,
11902 x_clev_rec => l_clev_rec);
11903 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11904 OKL_API.set_message(p_app_name => G_APP_NAME,
11905 p_msg_name => G_FETCHING_INFO,
11906 p_token1 => G_REC_NAME_TOKEN,
11907 p_token1_value => 'OKC_K_ITEMS_V Record');
11908 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11909 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11910 OKL_API.set_message(p_app_name => G_APP_NAME,
11911 p_msg_name => G_FETCHING_INFO,
11912 p_token1 => G_REC_NAME_TOKEN,
11913 p_token1_value => 'OKC_K_ITEMS_V Record');
11914 RAISE OKL_API.G_EXCEPTION_ERROR;
11915 END IF;
11916 x_return_status := get_rec_klev(p_id => l_cplv_rec.cle_id,
11917 x_klev_rec => l_klev_rec);
11918 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11919 OKL_API.set_message(p_app_name => G_APP_NAME,
11920 p_msg_name => G_FETCHING_INFO,
11921 p_token1 => G_REC_NAME_TOKEN,
11922 p_token1_value => 'OKL_K_ITEMS_V Record');
11923 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11924 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11925 OKL_API.set_message(p_app_name => G_APP_NAME,
11926 p_msg_name => G_FETCHING_INFO,
11927 p_token1 => G_REC_NAME_TOKEN,
11928 p_token1_value => 'OKL_K_ITEMS_V Record');
11929 RAISE OKL_API.G_EXCEPTION_ERROR;
11930 END IF;
11931 IF l_clev_rec.id <> l_klev_rec.id THEN
11932 OKL_API.set_message(p_app_name => G_APP_NAME,
11933 p_msg_name => G_LINE_RECORD);
11934 x_return_status := OKL_API.G_RET_STS_ERROR;
11935 RAISE OKL_API.G_EXCEPTION_ERROR;
11936 END IF;
11937 -- Validate Line Style id and get the line type code
11938 -- and line style type for further processing
11939 validate_lse_id(p_clev_rec => l_clev_rec,
11940 x_return_status => x_return_status,
11941 x_lty_code => l_lty_code,
11942 x_lse_type => l_lse_type);
11943 -- Check if activity started successfully
11944 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11945 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11946 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11947 RAISE OKL_API.G_EXCEPTION_ERROR;
11948 END IF;
11949 -- Validate the Dnz_Chr_id
11950 validate_dnz_chr_id(p_clev_rec => l_clev_rec,
11951 x_return_status => x_return_status);
11952 -- Check if activity started successfully
11953 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11954 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11955 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11956 RAISE OKL_API.G_EXCEPTION_ERROR;
11957 END IF;
11958 -- We can create a party item info only if the line is Model Line
11959 IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
11960 l_clev_rec.chr_id IS NULL) AND
11961 (l_clev_rec.dnz_chr_id IS NOT NULL OR
11962 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
11963 (l_clev_rec.cle_id IS NOT NULL OR
11964 l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
11965 (l_lty_code = G_MODEL_LINE_LTY_CODE OR
11966 l_lty_code = G_ADDON_LINE_LTY_CODE) AND
11967 l_lse_type = G_SLS_TYPE THEN
11968 l_cplv_rec.object1_id1 := p_cplv_rec.object1_id1;
11969 l_cplv_rec.object1_id2 := p_cplv_rec.object1_id2;
11970 -- Creation of Party Item Record for the above record information
11971 --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
11972 -- to update records in tables
11973 -- okc_k_party_roles_b and okl_k_party_roles
11974 /*
11975 OKL_OKC_MIGRATION_PVT.update_k_party_role(p_api_version => p_api_version,
11976 p_init_msg_list => p_init_msg_list,
11977 x_return_status => x_return_status,
11978 x_msg_count => x_msg_count,
11979 x_msg_data => x_msg_data,
11980 p_cplv_rec => l_cplv_rec,
11981 x_cplv_rec => x_cplv_rec);
11982 */
11983 l_kplv_rec.id := l_cplv_rec.id;
11984 OKL_K_PARTY_ROLES_PVT.update_k_party_role
11985 (p_api_version => p_api_version,
11986 p_init_msg_list => p_init_msg_list,
11987 x_return_status => x_return_status,
11988 x_msg_count => x_msg_count,
11989 x_msg_data => x_msg_data,
11990 p_cplv_rec => l_cplv_rec,
11991 x_cplv_rec => x_cplv_rec,
11992 p_kplv_rec => l_kplv_rec,
11993 x_kplv_rec => x_kplv_rec);
11994
11995 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11996 OKL_API.set_message(p_app_name => G_APP_NAME,
11997 p_msg_name => G_UPDATING_PARTY_ROLE);
11998 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11999 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12000 OKL_API.set_message(p_app_name => G_APP_NAME,
12001 p_msg_name => G_UPDATING_PARTY_ROLE);
12002 RAISE OKL_API.G_EXCEPTION_ERROR;
12003 END IF;
12004 ELSE
12005 OKL_API.set_message(p_app_name => G_APP_NAME,
12006 p_msg_name => G_INVALID_CRITERIA,
12007 p_token1 => G_COL_NAME_TOKEN,
12008 p_token1_value => 'Model/Addon Line for Party Roles');
12009 x_return_status := OKL_API.G_RET_STS_ERROR;
12010 RAISE OKL_API.G_EXCEPTION_ERROR;
12011 END IF;
12012 -- We need to change the status of the header whenever there is updating happening
12013 -- after the contract status is approved
12014 IF (x_cplv_rec.dnz_chr_id is NOT NULL) AND
12015 (x_cplv_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
12016 --cascade edit status on to lines
12017 okl_contract_status_pub.cascade_lease_status_edit
12018 (p_api_version => p_api_version,
12019 p_init_msg_list => p_init_msg_list,
12020 x_return_status => x_return_status,
12021 x_msg_count => x_msg_count,
12022 x_msg_data => x_msg_data,
12023 p_chr_id => x_cplv_rec.dnz_chr_id);
12024 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12025 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12026 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12027 RAISE OKL_API.G_EXCEPTION_ERROR;
12028 END IF;
12029 END IF;
12030 OKL_API.END_ACTIVITY (x_msg_count,
12031 x_msg_data );
12032 EXCEPTION
12033 WHEN OKL_API.G_EXCEPTION_ERROR THEN
12034 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
12035 l_api_name,
12036 G_PKG_NAME,
12037 'OKL_API.G_RET_STS_ERROR',
12038 x_msg_count,
12039 x_msg_data,
12040 '_PVT');
12041 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
12042 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
12043 l_api_name,
12044 G_PKG_NAME,
12045 'OKL_API.G_RET_STS_UNEXP_ERROR',
12046 x_msg_count,
12047 x_msg_data,
12048 '_PVT');
12049 WHEN OTHERS THEN
12050 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
12051 l_api_name,
12052 G_PKG_NAME,
12053 'OTHERS',
12054 x_msg_count,
12055 x_msg_data,
12056 '_PVT');
12057 END update_party_roles_rec;
12058
12059 --Bug# 3631094
12060 --------------------------------------------------------------------------------
12061 --Start of comments
12062 --Procedure Name : check_off_lease_trx (local)
12063 --Description : procedure checks if off lease transaction
12064 -- is under-way for this asset
12065 --History : 21-May-2004 avsingh Created
12066 --Notes : local procedure (this could change and get more complex
12067 -- in future that is why a separate local proc)
12068 -- IN Parameters-
12069 -- p_asset_id - asset id
12070 -- OUT Parameters -
12071 -- x_pending_trx_yn - 'Y' - pending off_lease trx
12072 -- 'N' - no pending off_lease trx
12073 --End of comments
12074 --------------------------------------------------------------------------------
12075
12076 Procedure check_off_lease_trx
12077 (p_api_version IN NUMBER,
12078 p_init_msg_list IN VARCHAR2,
12079 x_return_status OUT NOCOPY VARCHAR2,
12080 x_msg_count OUT NOCOPY NUMBER,
12081 x_msg_data OUT NOCOPY VARCHAR2,
12082 p_asset_id IN NUMBER,
12083 x_pending_trx_yn OUT NOCOPY VARCHAR2) is
12084
12085 l_return_status VARCHAR2(1) DEFAULT Okl_Api.G_RET_STS_SUCCESS;
12086 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_OFF_LEASE_TRX';
12087 l_api_version CONSTANT NUMBER := 1.0;
12088
12089 --cursor to find whether unprocessed off lease transaction exists
12090 cursor l_off_lease_csr (p_asset_id in number) is
12091 select 'Y'
12092 from fa_additions fa
12093 where fa.asset_id = p_asset_id
12094 and exists
12095 (select '1'
12096 from okl_trx_assets h,
12097 okl_txl_assets_b l
12098 where h.id = l.tas_id
12099 and h.TAS_TYPE in ('AMT','AUD','AUS')
12100 and l.asset_number = fa.asset_number
12101 and h.tsu_code = 'ENTERED');
12102
12103
12104 l_off_lease_trx_exists varchar2(1);
12105
12106 Begin
12107 x_return_status := OKL_API.G_RET_STS_SUCCESS;
12108 -- Call start_activity to create savepoint, check compatibility
12109 -- and initialize message list
12110 x_return_status := Okl_Api.START_ACTIVITY(
12111 p_api_name => l_api_name,
12112 p_pkg_name => g_pkg_name,
12113 p_init_msg_list => p_init_msg_list,
12114 l_api_version => l_api_version,
12115 p_api_version => p_api_version,
12116 p_api_type => '_PVT',
12117 x_return_status => x_return_status);
12118 -- Check if activity started successfully
12119 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
12120 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
12121 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
12122 RAISE Okc_Api.G_EXCEPTION_ERROR;
12123 END IF;
12124
12125 --check with cursor
12126 l_off_lease_trx_exists := 'N';
12127 open l_off_lease_csr (p_asset_id => p_asset_id);
12128 fetch l_off_lease_csr into l_off_lease_trx_exists;
12129 if l_off_lease_csr%NOTFOUND then
12130 null;
12131 end if;
12132 close l_off_lease_csr;
12133
12134 x_pending_trx_yn := l_off_lease_trx_exists;
12135 EXCEPTION
12136 WHEN OKL_API.G_EXCEPTION_ERROR THEN
12137 if l_off_lease_csr%ISOPEN then
12138 close l_off_lease_csr;
12139 end if;
12140 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
12141 l_api_name,
12142 G_PKG_NAME,
12143 'OKL_API.G_RET_STS_ERROR',
12144 x_msg_count,
12145 x_msg_data,
12146 '_PVT');
12147 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
12148 if l_off_lease_csr%ISOPEN then
12149 close l_off_lease_csr;
12150 end if;
12151 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
12152 l_api_name,
12153 G_PKG_NAME,
12154 'OKL_API.G_RET_STS_UNEXP_ERROR',
12155 x_msg_count,
12156 x_msg_data,
12157 '_PVT');
12158 WHEN OTHERS THEN
12159 if l_off_lease_csr%ISOPEN then
12160 close l_off_lease_csr;
12161 end if;
12162 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
12163 l_api_name,
12164 G_PKG_NAME,
12165 'OTHERS',
12166 x_msg_count,
12167 x_msg_data,
12168 '_PVT');
12169 END check_off_lease_trx;
12170
12171 --------------------------------------------------------------------------------
12172 --Start of comments
12173 --Procedure Name : Get_Pdt_Params (local)
12174 --Description : Multi-GAAP - Calls product api to fetch
12175 -- product specific parameters
12176 --History : 21-May-2004 ashish.singh Created
12177 --Notes : local procedure
12178 -- IN Parameters-
12179 -- p_chr_id - contract id
12180 -- OUT Parameters -
12181 -- x_rep_pdt_id - Reporting product id
12182 -- x_tax_owner - tax owner
12183 -- x_deal_type - local product deal type
12184 -- x_rep_deal_type - Reporting product deal type
12185 --End of comments
12186 --------------------------------------------------------------------------------
12187 Procedure Get_Pdt_Params (p_api_version IN NUMBER,
12188 p_init_msg_list IN VARCHAR2,
12189 x_return_status OUT NOCOPY VARCHAR2,
12190 x_msg_count OUT NOCOPY NUMBER,
12191 x_msg_data OUT NOCOPY VARCHAR2,
12192 p_chr_id IN NUMBER,
12193 x_rep_pdt_id OUT NOCOPY NUMBER,
12194 x_tax_owner OUT NOCOPY VARCHAR2,
12195 x_deal_type OUT NOCOPY VARCHAR2,
12196 x_rep_deal_type OUT NOCOPY VARCHAR2) is
12197
12198 l_pdtv_rec okl_setupproducts_pub.pdtv_rec_type;
12199 l_pdt_parameter_rec okl_setupproducts_pub.pdt_parameters_rec_type;
12200 l_rep_pdt_parameter_rec okl_setupproducts_pub.pdt_parameters_rec_type;
12201 l_pdt_date DATE;
12202 l_no_data_found BOOLEAN;
12203 l_error_condition Exception;
12204 l_return_status VARCHAR2(1) default OKL_API.G_RET_STS_SUCCESS;
12205
12206 --cursor to get pdt_id and k_start date
12207 cursor l_chr_csr (p_chr_id in number) is
12208 SELECT chrb.start_date,
12209 khr.pdt_id
12210 FROM OKC_K_HEADERS_B chrb,
12211 OKL_K_HEADERS khr
12212 WHERE khr.id = chrb.id
12213 AND chrb.id = p_chr_id;
12214
12215 l_chr_rec l_chr_csr%ROWTYPE;
12216
12217 Begin
12218
12219 --get pdt id and date from k header
12220 open l_chr_csr(p_chr_id => p_chr_id);
12221 Fetch l_chr_csr into l_chr_rec;
12222 If l_chr_csr%NOTFOUND then
12223 Null;
12224 End If;
12225 close l_chr_csr;
12226
12227 l_pdtv_rec.id := l_chr_rec.pdt_id;
12228 l_pdt_date := l_chr_rec.start_date;
12229 l_no_data_found := TRUE;
12230 x_return_status := OKL_API.G_RET_STS_SUCCESS;
12231
12232 okl_setupproducts_pub.Getpdt_parameters(p_api_version => p_api_version,
12233 p_init_msg_list => p_init_msg_list,
12234 x_return_status => l_return_status,
12235 x_no_data_found => l_no_data_found,
12236 x_msg_count => x_msg_count,
12237 x_msg_data => x_msg_data,
12238 p_pdtv_rec => l_pdtv_rec,
12239 p_product_date => l_pdt_date,
12240 p_pdt_parameter_rec => l_pdt_parameter_rec);
12241
12242 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS Then
12243 x_rep_pdt_id := Null;
12244 x_tax_owner := Null;
12245 Else
12246 x_rep_pdt_id := l_pdt_parameter_rec.reporting_pdt_id;
12247 x_tax_owner := l_pdt_parameter_rec.tax_owner;
12248 x_deal_type := l_pdt_parameter_rec.deal_type;
12249 --get reporting product param values
12250 l_no_data_found := TRUE;
12251 l_pdtv_rec.id := x_rep_pdt_id;
12252 okl_setupproducts_pub.Getpdt_parameters(p_api_version => p_api_version,
12253 p_init_msg_list => p_init_msg_list,
12254 x_return_status => l_return_status,
12255 x_no_data_found => l_no_data_found,
12256 x_msg_count => x_msg_count,
12257 x_msg_data => x_msg_data,
12258 p_pdtv_rec => l_pdtv_rec,
12259 p_product_date => l_pdt_date,
12260 p_pdt_parameter_rec => l_rep_pdt_parameter_rec);
12261
12262 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS Then
12263 x_rep_deal_type := NULL;
12264 Else
12265 x_rep_deal_type := l_rep_pdt_parameter_rec.deal_type;
12266 End If;
12267 End If;
12268
12269 Exception
12270 When l_error_condition Then
12271 If l_chr_csr%ISOPEN then
12272 close l_chr_csr;
12273 End If;
12274 When Others Then
12275 If l_chr_csr%ISOPEN then
12276 close l_chr_csr;
12277 End If;
12278 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
12279 End Get_Pdt_Params;
12280 --Bug# 3631094
12281
12282 --Bug# 3950089: start
12283 ------------------------------------------------------------------------------
12284 --Start of comments
12285 --
12286 --Procedure Name : get_nbv
12287 --Purpose : Get Net Book Value- used internally
12288 --Modification History :
12289 --27-Jan-2005 rpillay Created
12290 ------------------------------------------------------------------------------
12291 PROCEDURE get_nbv(p_api_version IN NUMBER,
12292 p_init_msg_list IN VARCHAR2,
12293 x_return_status OUT NOCOPY VARCHAR2,
12294 x_msg_count OUT NOCOPY NUMBER,
12295 x_msg_data OUT NOCOPY VARCHAR2,
12296 p_asset_id IN NUMBER,
12297 p_book_type_code IN VARCHAR2,
12298 p_chr_id IN NUMBER,
12299 p_release_date IN DATE,
12300 x_nbv OUT NOCOPY Number) IS
12301
12302 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
12303 l_api_name CONSTANT VARCHAR2(30) := 'GET_NBV';
12304 l_api_version CONSTANT NUMBER := 1.0;
12305
12306 l_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type;
12307 l_asset_fin_rec FA_API_TYPES.asset_fin_rec_type;
12308 l_asset_deprn_rec FA_API_TYPES.asset_deprn_rec_type;
12309
12310 l_nbv NUMBER;
12311 l_converted_amount NUMBER;
12312 l_contract_currency OKL_K_HEADERS_FULL_V.currency_code%TYPE;
12313 l_currency_conversion_type OKL_K_HEADERS_FULL_V.currency_conversion_type%TYPE;
12314 l_currency_conversion_rate OKL_K_HEADERS_FULL_V.currency_conversion_rate%TYPE;
12315 l_currency_conversion_date OKL_K_HEADERS_FULL_V.currency_conversion_date%TYPE;
12316
12317 BEGIN
12318 --call start activity to set savepoint
12319 l_return_status := OKL_API.START_ACTIVITY( substr(l_api_name,1,26),
12320 p_init_msg_list,
12321 '_PVT',
12322 x_return_status);
12323 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12324 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12325 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
12326 RAISE OKL_API.G_EXCEPTION_ERROR;
12327 END IF;
12328
12329 l_asset_hdr_rec.asset_id := p_asset_id;
12330 l_asset_hdr_rec.book_type_code := p_book_type_code;
12331
12332 if NOT fa_cache_pkg.fazcbc(x_book => l_asset_hdr_rec.book_type_code) then
12333 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
12334 p_msg_name => 'OKL_LLA_FA_CACHE_ERROR'
12335 );
12336 Raise OKL_API.G_EXCEPTION_ERROR;
12337 end if;
12338
12339 -- To fetch Asset Current Cost
12340 if not FA_UTIL_PVT.get_asset_fin_rec
12341 (p_asset_hdr_rec => l_asset_hdr_rec,
12342 px_asset_fin_rec => l_asset_fin_rec,
12343 p_transaction_header_id => NULL,
12344 p_mrc_sob_type_code => 'P'
12345 ) then
12346
12347 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
12348 p_msg_name => 'OKL_LLA_FA_ASSET_FIN_REC_ERROR'
12349 );
12350 Raise OKL_API.G_EXCEPTION_ERROR;
12351 end if;
12352
12353 -- To fetch Depreciation Reserve
12354 if not FA_UTIL_PVT.get_asset_deprn_rec
12355 (p_asset_hdr_rec => l_asset_hdr_rec ,
12356 px_asset_deprn_rec => l_asset_deprn_rec,
12357 p_period_counter => NULL,
12358 p_mrc_sob_type_code => 'P'
12359 ) then
12360 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
12361 p_msg_name => 'OKL_LLA_FA_DEPRN_REC_ERROR'
12362 );
12363 Raise OKL_API.G_EXCEPTION_ERROR;
12364 end if;
12365
12366 l_nbv := l_asset_fin_rec.cost - l_asset_deprn_rec.deprn_reserve;
12367
12368 l_converted_amount := 0;
12369 OKL_ACCOUNTING_UTIL.CONVERT_TO_CONTRACT_CURRENCY(
12370 p_khr_id => p_chr_id,
12371 p_from_currency => NULL,
12372 p_transaction_date => p_release_date,
12373 p_amount => l_nbv,
12374 x_return_status => x_return_status,
12375 x_contract_currency => l_contract_currency,
12376 x_currency_conversion_type => l_currency_conversion_type,
12377 x_currency_conversion_rate => l_currency_conversion_rate,
12378 x_currency_conversion_date => l_currency_conversion_date,
12379 x_converted_amount => l_converted_amount);
12380
12381 IF(x_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
12382 Okl_Api.Set_Message(p_app_name => Okl_Api.G_APP_NAME,
12383 p_msg_name => 'OKL_CONV_TO_FUNC_CURRENCY_FAIL');
12384 RAISE Okl_Api.G_EXCEPTION_ERROR;
12385 END IF;
12386
12387 x_nbv := l_converted_amount;
12388
12389 --Call end Activity
12390 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
12391 EXCEPTION
12392 WHEN OKL_API.G_EXCEPTION_ERROR Then
12393 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
12394 (
12395 l_api_name,
12396 G_PKG_NAME,
12397 'OKL_API.G_RET_STS_ERROR',
12398 x_msg_count,
12399 x_msg_data,
12400 '_PVT'
12401 );
12402 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
12403 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
12404 (
12405 l_api_name,
12406 G_PKG_NAME,
12407 'OKL_API.G_RET_STS_UNEXP_ERROR',
12408 x_msg_count,
12409 x_msg_data,
12410 '_PVT'
12411 );
12412 WHEN OTHERS THEN
12413 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
12414 (
12415 l_api_name,
12416 G_PKG_NAME,
12417 'OTHERS',
12418 x_msg_count,
12419 x_msg_data,
12420 '_PVT'
12421 );
12422 END get_nbv;
12423 --Bug# 3950089: end
12424
12425 -------------------------------------------
12426 --Bug# 3533936 : Process for release Assets
12427 -------------------------------------------
12428 PROCEDURE Create_release_asset_line
12429 (p_api_version IN NUMBER,
12430 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
12431 x_return_status OUT NOCOPY VARCHAR2,
12432 x_msg_count OUT NOCOPY NUMBER,
12433 x_msg_data OUT NOCOPY VARCHAR2,
12434 p_asset_id IN VARCHAR2,
12435 p_chr_id IN NUMBER,
12436 x_cle_id OUT NOCOPY NUMBER) IS
12437
12438
12439 l_return_status VARCHAR2(1) DEFAULT Okl_Api.G_RET_STS_SUCCESS;
12440 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_RELEASE_ASSET';
12441 l_api_version CONSTANT NUMBER := 1.0;
12442
12443 --cursor to fetch original financial asset line id
12444 CURSOR l_orig_ast_csr(p_asset_id varchar2) IS
12445 SELECT cle_orig.cle_id finasst_id,
12446 asr.id asset_return_id,
12447 cle_orig.dnz_chr_id dnz_chr_id,
12448 --Bug# 4869443
12449 --trunc(cle_orig.date_terminated) date_terminated
12450 trunc(decode(sign(cle_orig.end_date - cle_orig.date_terminated),-1,cle_orig.end_date,cle_orig.date_terminated)) date_terminated,
12451 --Bug# 6328924
12452 asr.legal_entity_id
12453 FROM OKL_ASSET_RETURNS_B asr,
12454 OKC_K_LINES_B cle_orig,
12455 OKC_LINE_STYLES_B lse_orig,
12456 OKC_K_ITEMS cim_orig
12457 WHERE asr.kle_id = cle_orig.cle_id
12458 AND asr.ars_code = 'RE_LEASE'
12459 AND cim_orig.object1_id1 = p_asset_id
12460 AND cim_orig.object1_id2 = '#'
12461 AND cim_orig.jtot_object1_code = 'OKX_ASSET'
12462 AND cle_orig.id = cim_orig.cle_id
12463 AND cle_orig.dnz_chr_id = cim_orig.dnz_chr_id
12464 AND cle_orig.lse_id = lse_orig.id
12465 AND lse_orig.lty_code = 'FIXED_ASSET';
12466
12467 l_orig_ast_rec l_orig_ast_csr%ROWTYPE;
12468 l_new_finasst_id NUMBER;
12469
12470 --cursor to fetch all the lines
12471 CURSOR l_lines_csr(p_from_cle_id in number) IS
12472 SELECT level,
12473 id,
12474 chr_id,
12475 cle_id,
12476 dnz_chr_id,
12477 orig_system_id1
12478 FROM okc_k_lines_b
12479 CONNECT BY PRIOR id = cle_id
12480 START WITH id = p_from_cle_id;
12481
12482 l_lines_rec l_lines_csr%ROWTYPE;
12483
12484 --cursor to fetch rules linked to lines
12485 CURSOR l_rgp_csr(p_cle_id in number,
12486 p_chr_id in number) IS
12487 SELECT rgpb.id
12488 FROM OKC_RULE_GROUPS_B rgpb
12489 WHERE rgpb.cle_id = p_cle_id
12490 AND rgpb.dnz_chr_id = p_chr_id;
12491
12492
12493 l_rgp_id OKC_RULE_GROUPS_B.ID%TYPE;
12494 l_rgpv_rec okl_okc_migration_pvt.rgpv_rec_type;
12495
12496
12497 --cursor to get cost and salvage value for corporate book
12498 CURSOR l_corpbook_csr (p_cle_id in number,
12499 p_chr_id in number) IS
12500 select txlb.depreciation_cost,
12501 txlb.current_units,
12502 txlb.salvage_value,
12503 txlb.percent_salvage_value,
12504 --Bug : 3569441
12505 txlb.id,
12506 txlb.corporate_book,
12507 --Bug# 3631094
12508 txlb.in_service_date,
12509 txlb.deprn_method,
12510 txlb.life_in_months,
12511 txlb.deprn_rate,
12512 txlb.depreciation_id,
12513 txlb.asset_number
12514 from okl_txl_assets_b txlb,
12515 okc_k_lines_b fa_cleb,
12516 okc_line_styles_b fa_lseb
12517 where txlb.kle_id = fa_cleb.id
12518 and txlb.tal_type = 'CRL'
12519 and fa_cleb.cle_id = p_cle_id
12520 and fa_cleb.dnz_chr_id = p_chr_id
12521 and fa_cleb.lse_id = fa_lseb.id
12522 and fa_lseb.lty_code = 'FIXED_ASSET';
12523
12524 l_corpbook_rec l_corpbook_csr%ROWTYPE;
12525
12526 --cursor to get model line details
12527 CURSOR l_modelline_csr(p_cle_id in number,
12528 p_chr_id in number) IS
12529 select model_cleb.id model_cle_id,
12530 model_cim.id model_cim_id
12531 from okc_k_items model_cim,
12532 okc_k_lines_b model_cleb,
12533 okc_line_styles_b model_lseb
12534 where model_cim.cle_id = model_cleb.id
12535 and model_cim.dnz_chr_id = model_cleb.dnz_chr_id
12536 and model_cleb.cle_id = p_cle_id
12537 and model_cleb.dnz_chr_id = p_chr_id
12538 and model_cleb.lse_id = model_lseb.id
12539 and model_lseb.lty_code = 'ITEM';
12540
12541 l_modelline_rec l_modelline_csr%ROWTYPE;
12542
12543 l_clev_rec clev_rec_type;
12544 l_klev_rec klev_rec_type;
12545 lx_clev_rec clev_rec_type;
12546 lx_klev_rec klev_rec_type;
12547 l_cimv_rec cimv_rec_type;
12548 lx_cimv_rec cimv_rec_type;
12549
12550 l_dt_clev_rec clev_rec_type;
12551 l_dt_klev_rec klev_rec_type;
12552 lx_dt_clev_rec clev_rec_type;
12553 lx_dt_klev_rec klev_rec_type;
12554
12555
12556 --cursor to get any existing addons for deletion
12557 CURSOR l_addonline_csr (p_cle_id in number,
12558 p_chr_id in number) IS
12559
12560 select addon_cleb.id addon_cle_id
12561 from okc_k_lines_b addon_cleb,
12562 okc_line_styles_b addon_lseb,
12563 okc_k_lines_b model_cleb,
12564 okc_line_styles_b model_lseb
12565 where addon_cleb.cle_id = model_cleb.id
12566 and addon_cleb.dnz_chr_id = model_cleb.dnz_chr_id
12567 and addon_cleb.lse_id = addon_lseb.id
12568 and addon_lseb.lty_code = 'ADD_ITEM'
12569 and model_cleb.cle_id = p_cle_id
12570 and model_cleb.dnz_chr_id = p_chr_id
12571 and model_cleb.lse_id = model_lseb.id
12572 and model_lseb.lty_code = 'ITEM';
12573
12574 l_addonline_id OKC_K_LINES_B.ID%TYPE;
12575
12576 --cursor to get any existing subsidies for deletion
12577 CURSOR l_subsidyline_csr (p_cle_id in number,
12578 p_chr_id in number) IS
12579 select subsidy_cleb.id subsidy_cle_id
12580 from okc_k_lines_b subsidy_cleb,
12581 okc_line_styles_b subsidy_lseb
12582 where subsidy_cleb.cle_id = p_cle_id
12583 and subsidy_cleb.dnz_chr_id = p_chr_id
12584 and subsidy_cleb.lse_id = subsidy_lseb.id
12585 and subsidy_lseb.lty_code = 'SUBSIDY';
12586
12587 l_subsidyline_id OKC_K_LINES_B.ID%TYPE;
12588
12589
12590 --cursor to get party roles attached to copied line
12591 CURSOR l_cpl_csr (p_cle_id in number,
12592 p_chr_id in number) IS
12593 select cplb.id
12594 from okc_k_party_roles_b cplb
12595 where cle_id = p_cle_id
12596 and dnz_chr_id = p_chr_id;
12597
12598 l_cpl_id OKC_K_PARTY_ROLES_B.ID%TYPE;
12599 l_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
12600
12601
12602 --cursor to get supplier invoice details
12603 CURSOR l_sid_csr (p_cle_id in NUMBER) IS
12604 select sid.id
12605 from okl_supp_invoice_dtls sid
12606 where cle_id = p_cle_id;
12607
12608 l_sid_id OKL_SUPP_INVOICE_DTLS.ID%TYPE;
12609 l_sidv_rec OKL_SUPP_INVOICE_DTLS_PUB.sidv_rec_type;
12610
12611 --cursor to get item sources for fa and ib lines
12612 CURSOR l_orig_cim_csr(p_orig_cle_id in number) IS
12613 SELECT object1_id1,
12614 object1_id2
12615 from okc_k_items
12616 WHERE cle_id = p_orig_cle_id;
12617
12618 l_orig_cim_rec l_orig_cim_csr%ROWTYPE;
12619
12620 --cursor to get corresponding cim record fro fa and ib lines
12621 CURSOR l_cim_csr (p_cle_id in number, p_chr_id in number) IS
12622 SELECT id
12623 from okc_k_items
12624 WHERE cle_id = p_cle_id
12625 And dnz_chr_id = p_chr_id;
12626
12627 l_cim_id OKC_K_ITEMS.ID%TYPE;
12628 l_upd_cimv_rec OKL_OKC_MIGRATION_PVT.cimv_rec_type;
12629 lx_upd_cimv_rec OKL_OKC_MIGRATION_PVT.cimv_rec_type;
12630
12631
12632 --Cursor to get hdr date
12633 CURSOR l_hdr_csr (p_chr_id IN NUMBER) is
12634 SELECT chrb.start_date,
12635 chrb.end_date,
12636 chrb.sts_code,
12637 --Bug# 4869443
12638 chrb.orig_system_source_code,
12639 --Bug# 6328924
12640 khr.legal_entity_id
12641 FROM okc_k_headers_b chrb,
12642 okl_k_headers khr
12643 WHERE chrb.id = p_chr_id
12644 AND khr.id = chrb.id;
12645
12646 l_hdr_rec l_hdr_csr%ROWTYPE;
12647
12648 --Bug : 3569441
12649 --cursor to get all the tax books
12650 CURSOR l_taxbook_csr(p_tal_id in number) is
12651 select txdb.tax_book,
12652 txdb.id
12653 from okl_txd_assets_b txdb
12654 where txdb.tal_id = p_tal_id;
12655
12656 l_taxbook_rec l_taxbook_csr%ROWTYPE;
12657
12658 --Bug# 3950089: Fetch NBV using FA apis
12659 /*
12660 --cursor to get nbv for each book
12661 CURSOR l_nbv_csr (p_book_type_code varchar2,
12662 p_asset_id number) IS
12663 Select (fb.cost - fds.deprn_reserve) nbv
12664 from fa_books fb,
12665 fa_deprn_periods fdp,
12666 fa_deprn_summary fds
12667 where fb.book_type_code = p_book_type_code
12668 and fb.asset_id = p_asset_id
12669 and fb.transaction_header_id_out is null
12670 and fdp.book_type_code = fb.book_type_code
12671 and fdp.period_close_date is null
12672 and fds.book_type_code = fb.book_type_code
12673 and fds.asset_id = fb.asset_id
12674 and fds.period_counter = (fdp.period_counter - 1);
12675 */
12676
12677 l_nbv NUMBER;
12678
12679 l_talv_rec talv_rec_type;
12680 lx_talv_rec talv_rec_type;
12681 l_txdv_rec txdv_rec_type;
12682 lx_txdv_rec txdv_rec_type;
12683 --END BUG# : 3569441
12684
12685 --Bug# 3631094 : cursor to get category book defaults
12686 Cursor l_defaults_csr (p_book in varchar2,
12687 p_cat in number,
12688 p_date in date) is
12689 select fcb.LIFE_IN_MONTHS,
12690 fcb.DEPRN_METHOD,
12691 fcb.ADJUSTED_RATE,
12692 fcb.BASIC_RATE
12693 from FA_CATEGORY_BOOK_DEFAULTS fcb
12694 where fcb.book_type_code = p_book
12695 and fcb.category_id = p_cat
12696 and p_date between fcb.start_dpis and nvl(fcb.end_dpis,p_date);
12697
12698 l_defaults_rec l_defaults_csr%ROWTYPE;
12699
12700 Cursor town_rul_csr (pchrid number) is
12701 Select rule_information1 tax_owner,
12702 id
12703 From okc_rules_b rul
12704 where rul.dnz_chr_id = pchrid
12705 and rul.rule_information_category = 'LATOWN'
12706 and nvl(rul.STD_TEMPLATE_YN,'N') = 'N';
12707
12708 l_town_rul okc_rules_b.rule_information1%TYPE;
12709 l_town_rul_id okc_rules_b.id%TYPE;
12710
12711 l_rep_asset_book okl_txl_assets_b.corporate_book%TYPE;
12712 l_rep_asset_book_done varchar2(1);
12713 l_rep_pdt_id number;
12714 l_tax_owner varchar2(30);
12715 l_rep_deal_type okl_k_headers.deal_type%TYPE;
12716 l_multi_gaap_yn varchar2(1);
12717 l_adjust_asset_to_zero varchar2(1);
12718 l_deal_type okl_k_headers.deal_type%TYPE;
12719
12720 l_mg_txdv_rec txdv_rec_type;
12721 lx_mg_txdv_rec txdv_rec_type;
12722 l_corp_nbv number;
12723 l_pending_trx_yn varchar2(1);
12724
12725 --cursor to get asset number
12726 cursor l_Asset_no_csr(p_asset_id in number) is
12727 select asset_number
12728 from fa_additions
12729 where asset_id = p_asset_id;
12730
12731 l_asset_number fa_additions.asset_number%TYPE;
12732 l_mg_txd_id okl_txd_assets_b.id%TYPE;
12733 --Bug# 3631094
12734
12735 --Bug# 3783518 :
12736 CURSOR l_chk_rbk_csr (p_chr_id in NUMBER) is
12737 select 'Y'
12738 from okc_k_headers_b chrb
12739 where nvl(chrb.orig_system_source_code,'XXXX') = 'OKL_REBOOK'
12740 and chrb.id = p_chr_id;
12741
12742 l_rbk_yn varchar2(1);
12743 --Bug# 3783518 :
12744
12745 --Bug# 4558486
12746 l_kplv_rec OKL_K_PARTY_ROLES_PVT.kplv_rec_type;
12747
12748 --Bug# 4869443
12749 l_icx_date_format varchar2(240);
12750 l_termination_date varchar2(240);
12751 l_k_start_date varchar2(240);
12752 --Bug# 4869443
12753 BEGIN
12754 x_return_status := Okl_Api.G_RET_STS_SUCCESS;
12755 -- Call start_activity to create savepoint, check compatibility
12756 -- and initialize message list
12757 x_return_status := Okl_Api.START_ACTIVITY(
12758 p_api_name => l_api_name,
12759 p_pkg_name => g_pkg_name,
12760 p_init_msg_list => p_init_msg_list,
12761 l_api_version => l_api_version,
12762 p_api_version => p_api_version,
12763 p_api_type => '_PVT',
12764 x_return_status => x_return_status);
12765 -- Check if activity started successfully
12766 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
12767 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
12768 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
12769 RAISE Okc_Api.G_EXCEPTION_ERROR;
12770 END IF;
12771
12772 --------------------------------
12773 --Bug# 3783518 : Check if it is a rebook. New asset should not be added on rebook of a rlease asset contract
12774 --------------------------------
12775 l_rbk_yn := 'N';
12776 open l_chk_rbk_csr(p_chr_id => p_chr_id);
12777 fetch l_chk_rbk_csr into l_rbk_yn;
12778 if l_chk_rbk_csr%NOTFOUND then
12779 null;
12780 end if;
12781 close l_chk_rbk_csr;
12782
12783 If l_rbk_yn = 'Y' then
12784 OKL_API.set_message(
12785 p_app_name => G_APP_NAME,
12786 p_msg_name => 'OKL_REL_ASSET_RBK_NEW_AST_ADD');
12787 x_return_status := OKC_API.G_RET_STS_ERROR;
12788 RAISE OKL_API.G_EXCEPTION_ERROR;
12789
12790 End If;
12791 ------------------
12792 --end Bug# 3783518
12793 ------------------
12794 --------------------------------
12795 --0. Check if off-lease processing is not going on
12796 -------------------------------
12797
12798 ---------------------
12799 --bug# 4869443
12800 ---------------------
12801 open l_hdr_csr (p_chr_id => p_chr_id);
12802 Fetch l_hdr_csr into l_hdr_rec;
12803 close l_hdr_csr;
12804
12805 l_pending_trx_yn := 'N';
12806 check_off_lease_trx
12807 (p_api_version => p_api_version,
12808 p_init_msg_list => p_init_msg_list,
12809 x_return_status => x_return_status,
12810 x_msg_count => x_msg_count,
12811 x_msg_data => x_msg_data,
12812 p_asset_id => p_asset_id,
12813 x_pending_trx_yn => l_pending_trx_yn);
12814 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
12815 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
12816 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
12817 RAISE Okc_Api.G_EXCEPTION_ERROR;
12818 END IF;
12819
12820 If l_pending_trx_yn = 'Y' then
12821
12822 open l_asset_no_csr(p_asset_id => p_asset_id);
12823 fetch l_asset_no_csr into l_asset_number;
12824 if l_asset_no_csr%NOTFOUND then
12825 null;
12826 end if;
12827 close l_asset_no_csr;
12828
12829 OKL_API.set_message(
12830 p_app_name => G_APP_NAME,
12831 p_msg_name => 'OKL_LA_OFF_LEASE_TRX',
12832 p_token1 => 'ASSET_NUMBER',
12833 p_token1_value => l_asset_number);
12834 x_return_status := OKC_API.G_RET_STS_ERROR;
12835 RAISE OKL_API.G_EXCEPTION_ERROR;
12836
12837 End If;
12838
12839
12840 ------------------------
12841 --1. get the original asset id
12842 ------------------------
12843 Open l_orig_ast_csr (p_asset_id => p_asset_id);
12844 Fetch l_orig_ast_csr into l_orig_ast_rec;
12845 If l_orig_ast_csr%NOTFOUND then
12846 --raise error: Unable to fetch data for asset to release
12847 --from the old contract
12848 OKL_API.set_message(p_app_name => G_APP_NAME,
12849 p_msg_name => 'OKL_LA_RELEASE_AST_DTLS');
12850 RAISE Okl_Api.G_EXCEPTION_ERROR; -- rmunjulu bug 6805958
12851 End If;
12852 Close l_orig_ast_csr;
12853
12854
12855 --Bug# 4869443
12856 If nvl(l_hdr_rec.orig_system_source_code,OKL_API.G_MISS_CHAR) <> 'OKL_RELEASE' then --is a release asset case
12857 If (l_hdr_rec.start_date <= l_orig_ast_rec.date_terminated) then
12858 -- Raise Error: start date of the contract should not be less than or equal to termination
12859 -- date of the asset.
12860 l_icx_date_format := nvl(fnd_profile.value('ICX_DATE_FORMAT_MASK'),'DD-MON-RRRR');
12861
12862 l_termination_date := to_char(l_orig_ast_rec.date_terminated,l_icx_date_format);
12863 l_k_start_date := to_char(l_hdr_rec.start_date,l_icx_date_format);
12864
12865 open l_asset_no_csr(p_asset_id => p_asset_id);
12866 fetch l_asset_no_csr into l_asset_number;
12867 if l_asset_no_csr%NOTFOUND then
12868 null;
12869 end if;
12870 close l_asset_no_csr;
12871
12872 OKL_API.set_message(p_app_name => G_APP_NAME,
12873 p_msg_name => 'OKL_LA_RELEASE_AST_TRMN_DATE',
12874 p_token1 => 'TERMINATION_DATE',
12875 p_token1_value => l_termination_date,
12876 p_token2 => 'ASSET_NUMBER',
12877 p_token2_value => l_asset_number,
12878 p_token3 => 'CONTRACT_START_DATE',
12879 p_token3_value => l_k_start_date);
12880 RAISE Okl_Api.G_EXCEPTION_ERROR; -- rmunjulu bug 6805958 changed to OKL_API from OKC_API
12881 End If;
12882
12883 --Bug# 6328924
12884 If (l_hdr_rec.legal_entity_id <> l_orig_ast_rec.legal_entity_id) then
12885 -- Raise Error: The legal entity associated with Asset must be the same as
12886 -- the legal entity associated with the contract
12887
12888 open l_asset_no_csr(p_asset_id => p_asset_id);
12889 fetch l_asset_no_csr into l_asset_number;
12890 if l_asset_no_csr%NOTFOUND then
12891 null;
12892 end if;
12893 close l_asset_no_csr;
12894
12895 OKL_API.set_message(p_app_name => G_APP_NAME,
12896 p_msg_name => 'OKL_LA_RELEASE_ASSET_LGL_ENTY',
12897 p_token1 => 'ASSET_NUMBER',
12898 p_token1_value => l_asset_number);
12899 RAISE Okl_Api.G_EXCEPTION_ERROR;
12900 End If;
12901
12902 End If;
12903 --Bug# 4869443
12904
12905 --------------------------
12906 --2. copy asset line
12907 -------------------------
12908 OKL_COPY_ASSET_PUB.copy_asset_lines
12909 (p_api_version => p_api_version,
12910 p_init_msg_list => p_init_msg_list,
12911 x_return_status => x_return_status,
12912 x_msg_count => x_msg_count,
12913 x_msg_data => x_msg_data,
12914 p_from_cle_id => l_orig_ast_rec.finasst_id,
12915 p_to_cle_id => OKL_API.G_MISS_NUM ,
12916 p_to_chr_id => p_chr_id,
12917 p_to_template_yn => 'N',
12918 p_copy_reference => 'COPY',
12919 p_copy_line_party_yn => 'N',
12920 p_renew_ref_yn => 'N',
12921 p_trans_type => 'CRL',
12922 x_cle_id => l_new_finasst_id);
12923 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12924 RAISE OKL_API.G_EXCEPTION_ERROR;
12925 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12926 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12927 END IF;
12928
12929 ---------------------------
12930 --3. delete addon lines
12931 --------------------------
12932 Open l_addonline_csr(p_cle_id => l_new_finasst_id,
12933 p_chr_id => p_chr_id);
12934 Loop
12935 Fetch l_addonline_csr into l_addonline_id;
12936 Exit when l_addonline_csr%NOTFOUND;
12937 OKL_CONTRACT_PUB.delete_contract_line
12938 (p_api_version => p_api_version,
12939 p_init_msg_list => p_init_msg_list,
12940 x_return_status => x_return_status,
12941 x_msg_count => x_msg_count,
12942 x_msg_data => x_msg_data,
12943 p_line_id => l_addonline_id);
12944
12945 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12946 RAISE OKL_API.G_EXCEPTION_ERROR;
12947 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12948 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12949 END IF;
12950 End Loop;
12951 Close l_addonline_csr;
12952
12953 -----------------------------
12954 --4.delete subsidy lines
12955 ----------------------------
12956 Open l_subsidyline_csr (p_cle_id => l_new_finasst_id,
12957 p_chr_id => p_chr_id);
12958 Loop
12959 Fetch l_subsidyline_csr into l_subsidyline_id;
12960 Exit when l_subsidyline_csr%NOTFOUND;
12961 OKL_CONTRACT_PUB.delete_contract_line
12962 (p_api_version => p_api_version,
12963 p_init_msg_list => p_init_msg_list,
12964 x_return_status => x_return_status,
12965 x_msg_count => x_msg_count,
12966 x_msg_data => x_msg_data,
12967 p_line_id => l_subsidyline_id);
12968
12969 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12970 RAISE OKL_API.G_EXCEPTION_ERROR;
12971 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12972 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12973 END IF;
12974 End Loop;
12975 Close l_subsidyline_csr;
12976
12977
12978 ---------------------------------------------------
12979 --5. Delete the rules associated with original line
12980 -- Update contract header dates on to lines
12981 -- Plug in asset and ib ids
12982 -- Delete Parties
12983 -- Delete supplier invoice details
12984 --------------------------------------------------
12985 ---
12986 --Bug# 4869443 : cursor open moved up
12987 --
12988 --open l_hdr_csr (p_chr_id => p_chr_id);
12989 --Fetch l_hdr_csr into l_hdr_rec;
12990 --close l_hdr_csr;
12991
12992 open l_lines_csr(p_from_cle_id => l_new_finasst_id);
12993 Loop
12994 Fetch l_lines_csr into l_lines_rec;
12995 Exit when l_lines_csr%NOTFOUND;
12996
12997 --update line start and end dates
12998 l_dt_clev_rec.id := l_lines_rec.id;
12999 l_dt_klev_rec.id := l_lines_rec.id;
13000 l_dt_clev_rec.start_date := l_hdr_rec.start_date;
13001 l_dt_clev_rec.end_date := l_hdr_rec.end_date;
13002 l_dt_clev_rec.sts_code := l_hdr_rec.sts_code;
13003
13004 okl_contract_pub.update_contract_line
13005 (p_api_version => p_api_version,
13006 p_init_msg_list => p_init_msg_list,
13007 x_return_status => x_return_status,
13008 x_msg_count => x_msg_count,
13009 x_msg_data => x_msg_data,
13010 p_clev_rec => l_dt_clev_rec,
13011 p_klev_rec => l_dt_klev_rec,
13012 x_clev_rec => lx_dt_clev_rec,
13013 x_klev_rec => lx_dt_klev_rec);
13014
13015 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13016 RAISE OKL_API.G_EXCEPTION_ERROR;
13017 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13018 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13019 END IF;
13020
13021
13022 --plug in asset and ib ids
13023 Open l_orig_cim_csr(p_orig_cle_id => l_lines_rec.orig_system_id1);
13024 Fetch l_orig_cim_csr into l_orig_cim_rec;
13025 If l_orig_cim_csr%NOTFOUND then
13026 Null;
13027 Else
13028 Open l_cim_csr(p_cle_id => l_lines_rec.id, p_chr_id => p_chr_id);
13029 Fetch l_cim_csr into l_cim_id;
13030 If l_cim_csr%NOTFOUND then
13031 NULL;
13032 Else
13033
13034 l_upd_cimv_rec.id := l_cim_id;
13035 l_upd_cimv_rec.object1_id1 := l_orig_cim_rec.object1_id1;
13036 l_upd_cimv_rec.object1_id2 := l_orig_cim_rec.object1_id2;
13037
13038 OKL_OKC_MIGRATION_PVT.update_contract_item
13039 (p_api_version => p_api_version,
13040 p_init_msg_list => p_init_msg_list,
13041 x_return_status => x_return_status,
13042 x_msg_count => x_msg_count,
13043 x_msg_data => x_msg_data,
13044 p_cimv_rec => l_upd_cimv_rec,
13045 x_cimv_rec => lx_upd_cimv_rec);
13046
13047 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13048 RAISE OKL_API.G_EXCEPTION_ERROR;
13049 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13050 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13051 END IF;
13052 End If;
13053 Close l_cim_csr;
13054 End If;
13055 Close l_orig_cim_csr;
13056
13057 --Get rule groups associated with each line
13058 Open l_rgp_csr(p_cle_id => l_lines_rec.id, p_chr_id => p_chr_id);
13059 Loop
13060 Fetch l_rgp_csr into l_rgp_id;
13061 Exit when l_rgp_csr%NOTFOUND;
13062 --delete the rule group instance
13063 l_rgpv_rec.id := l_rgp_id;
13064 OKL_RULE_PUB.delete_rule_group
13065 (p_api_version => p_api_version,
13066 p_init_msg_list => p_init_msg_list,
13067 x_return_status => x_return_status,
13068 x_msg_count => x_msg_count,
13069 x_msg_data => x_msg_data,
13070 p_rgpv_rec => l_rgpv_rec );
13071
13072 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13073 RAISE OKL_API.G_EXCEPTION_ERROR;
13074 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13075 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13076 END IF;
13077 End Loop;
13078 Close l_rgp_csr;
13079
13080 --get supplier invoice details linked with each line
13081 Open l_sid_csr (p_cle_id => l_lines_rec.id);
13082 Loop
13083 Fetch l_sid_csr into l_sid_id;
13084 Exit when l_sid_csr%NOTFOUND;
13085 --delete sidv rec
13086 l_sidv_rec.id := l_sid_id;
13087 OKL_SUPP_INVOICE_DTLS_PUB.delete_sup_inv_dtls
13088 (p_api_version => p_api_version,
13089 p_init_msg_list => p_init_msg_list,
13090 x_return_status => x_return_status,
13091 x_msg_count => x_msg_count,
13092 x_msg_data => x_msg_data,
13093 p_sidv_rec => l_sidv_rec );
13094
13095 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13096 RAISE OKL_API.G_EXCEPTION_ERROR;
13097 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13098 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13099 END IF;
13100 End Loop;
13101 Close l_sid_csr;
13102
13103 --get party roles linked with each line
13104 Open l_cpl_csr (p_cle_id => l_lines_rec.id, p_chr_id => p_chr_id);
13105 Loop
13106 Fetch l_cpl_csr into l_cpl_id;
13107 Exit when l_cpl_csr%NOTFOUND;
13108 --delete cplv rec
13109 l_cplv_rec.id := l_cpl_id;
13110 --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
13111 -- to delete records in tables
13112 -- okc_k_party_roles_b and okl_k_party_roles
13113 /*
13114 OKL_OKC_MIGRATION_PVT.delete_k_party_role
13115 ( p_api_version => p_api_version,
13116 p_init_msg_list => p_init_msg_list,
13117 x_return_status => x_return_status,
13118 x_msg_count => x_msg_count,
13119 x_msg_data => x_msg_data,
13120 p_cplv_rec => l_cplv_rec );
13121 */
13122 l_kplv_rec.id := l_cplv_rec.id;
13123 OKL_K_PARTY_ROLES_PVT.delete_k_party_role
13124 ( p_api_version => p_api_version,
13125 p_init_msg_list => p_init_msg_list,
13126 x_return_status => x_return_status,
13127 x_msg_count => x_msg_count,
13128 x_msg_data => x_msg_data,
13129 p_cplv_rec => l_cplv_rec,
13130 p_kplv_rec => l_kplv_rec);
13131
13132 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13133 RAISE OKL_API.G_EXCEPTION_ERROR;
13134 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13135 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13136 END IF;
13137 End Loop;
13138 Close l_cpl_csr;
13139 End Loop;
13140 close l_lines_csr;
13141
13142 -------------------------------------------------------
13143 --6. Update the costs and salvage value from FA
13144 ------------------------------------------------------
13145 Open l_corpbook_csr(p_cle_id => l_new_finasst_id,
13146 p_chr_id => p_chr_id);
13147 Fetch l_corpbook_csr into l_corpbook_rec;
13148 If l_corpbook_csr%NOTFOUND then
13149 --error
13150 NULL;
13151 End If;
13152 Close l_corpbook_csr;
13153
13154 --Bug# 3950089: Fetch NBV using FA apis
13155 /*
13156 --BUG# : 3569441
13157 l_nbv := Null;
13158 Open l_nbv_csr(p_book_type_code => l_corpbook_rec.corporate_book,
13159 p_asset_id => p_asset_id);
13160 Fetch l_nbv_csr into l_nbv;
13161 If l_nbv_csr%NOTFOUND then
13162 null;
13163 End If;
13164 Close l_nbv_csr;
13165 */
13166
13167 l_nbv := Null;
13168 get_nbv(p_api_version => p_api_version,
13169 p_init_msg_list => p_init_msg_list,
13170 x_return_status => x_return_status,
13171 x_msg_count => x_msg_count,
13172 x_msg_data => x_msg_data,
13173 p_asset_id => p_asset_id,
13174 p_book_type_code => l_corpbook_rec.corporate_book,
13175 p_chr_id => p_chr_id,
13176 p_release_date => l_hdr_rec.start_date,
13177 x_nbv => l_nbv);
13178
13179 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13180 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13181 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13182 RAISE OKL_API.G_EXCEPTION_ERROR;
13183 END IF;
13184
13185 IF l_nbv is not NULL then
13186 --update okl_txl_Assets
13187 l_talv_rec.id := l_corpbook_rec.id;
13188 l_talv_rec.DEPRECIATION_COST := l_nbv;
13189 l_talv_rec.ORIGINAL_COST := l_nbv;
13190 l_corp_nbv := l_nbv;
13191
13192 Update_asset_lines(
13193 p_api_version => p_api_version,
13194 p_init_msg_list => p_init_msg_list,
13195 x_return_status => x_return_status,
13196 x_msg_count => x_msg_count,
13197 x_msg_data => x_msg_data,
13198 p_talv_rec => l_talv_rec,
13199 x_talv_rec => lx_talv_rec);
13200
13201 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13202 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13203 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13204 RAISE Okc_Api.G_EXCEPTION_ERROR;
13205 END IF;
13206 END IF;
13207 --BUG# :END 3569441
13208
13209 Open l_modelline_csr (p_cle_id => l_new_finasst_id,
13210 p_chr_id => p_chr_id);
13211 Fetch l_modelline_csr into l_modelline_rec;
13212 If l_modelline_csr%NOTFOUND then
13213 --error
13214 NULL;
13215 End If;
13216 Close l_modelline_csr;
13217
13218 l_clev_rec.id := l_modelline_rec.model_cle_id;
13219 l_klev_rec.id := l_modelline_rec.model_cle_id;
13220 --BUG# : 3569441
13221 If l_nbv is NULL then
13222 l_clev_rec.price_unit := (l_corpbook_rec.depreciation_cost/l_corpbook_rec.current_units);
13223 ElsIf l_nbv is NOT NULL then
13224 l_clev_rec.price_unit := (l_nbv/l_corpbook_rec.current_units);
13225 End If;
13226 --BUG# End : 3569441
13227 l_cimv_rec.id := l_modelline_rec.model_cim_id;
13228 l_cimv_rec.number_of_items := l_corpbook_rec.current_units;
13229
13230 okl_contract_pub.update_contract_line
13231 (p_api_version => p_api_version,
13232 p_init_msg_list => p_init_msg_list,
13233 x_return_status => x_return_status,
13234 x_msg_count => x_msg_count,
13235 x_msg_data => x_msg_data,
13236 p_clev_rec => l_clev_rec,
13237 p_klev_rec => l_klev_rec,
13238 x_clev_rec => lx_clev_rec,
13239 x_klev_rec => lx_klev_rec);
13240 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13241 RAISE OKL_API.G_EXCEPTION_ERROR;
13242 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13243 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13244 END IF;
13245
13246 okl_okc_migration_pvt.update_contract_item
13247 (p_api_version => p_api_version,
13248 p_init_msg_list => p_init_msg_list,
13249 x_return_status => x_return_status,
13250 x_msg_count => x_msg_count,
13251 x_msg_data => x_msg_data,
13252 p_cimv_rec => l_cimv_rec,
13253 x_cimv_rec => lx_cimv_rec);
13254 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13255 RAISE OKL_API.G_EXCEPTION_ERROR;
13256 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13257 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13258 END IF;
13259
13260 --update financial asset line for OEC and residual value
13261 l_clev_rec.id := l_new_finasst_id;
13262 l_klev_rec.id := l_new_finasst_id;
13263 l_clev_rec.price_unit := OKL_API.G_MISS_NUM;
13264 l_klev_rec.residual_percentage := l_corpbook_rec.percent_salvage_value;
13265 l_klev_rec.residual_value := l_corpbook_rec.salvage_value;
13266 --BUG : 3569441
13267 l_klev_rec.oec := l_nbv;
13268 --l_klev_rec.oec := l_corpbook_rec.depreciation_cost;
13269
13270 okl_contract_pub.update_contract_line
13271 (p_api_version => p_api_version,
13272 p_init_msg_list => p_init_msg_list,
13273 x_return_status => x_return_status,
13274 x_msg_count => x_msg_count,
13275 x_msg_data => x_msg_data,
13276 p_clev_rec => l_clev_rec,
13277 p_klev_rec => l_klev_rec,
13278 x_clev_rec => lx_clev_rec,
13279 x_klev_rec => lx_klev_rec);
13280 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13281 RAISE OKL_API.G_EXCEPTION_ERROR;
13282 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13283 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13284 END IF;
13285
13286 --Bug# 3631094 : Creation of reporting tax book
13287 l_rep_asset_book := OKL_SYSTEM_PARAMS_ALL_PUB.get_system_param_value(OKL_SYSTEM_PARAMS_ALL_PUB.G_RPT_PROD_BOOK_TYPE_CODE);
13288 l_rep_Asset_book_done := 'N';
13289 --BUG# : 3569441
13290 OPEN l_taxbook_csr(p_tal_id => l_corpbook_rec.id);
13291 Loop
13292 Fetch l_taxbook_csr into l_taxbook_rec;
13293 Exit when l_taxbook_csr%NOTFOUND;
13294 If l_taxbook_rec.tax_book = nvl(l_rep_Asset_book,OKL_API.G_MISS_CHAR) then
13295 l_rep_Asset_book_done := 'Y';
13296 l_mg_txd_id := l_taxbook_rec.id;
13297 End If;
13298 --Bug# 3950089: Fetch NBV using FA apis
13299 /*
13300 l_nbv := NULL;
13301 Open l_nbv_csr(p_book_type_code => l_taxbook_rec.tax_book,
13302 p_asset_id => p_asset_id);
13303 Fetch l_nbv_csr into l_nbv;
13304 If l_nbv_csr%NOTFOUND then
13305 NULL;
13306 End If;
13307 Close l_nbv_csr;
13308 */
13309
13310 l_nbv := Null;
13311 get_nbv(p_api_version => p_api_version,
13312 p_init_msg_list => p_init_msg_list,
13313 x_return_status => x_return_status,
13314 x_msg_count => x_msg_count,
13315 x_msg_data => x_msg_data,
13316 p_asset_id => p_asset_id,
13317 p_book_type_code => l_taxbook_rec.tax_book,
13318 p_chr_id => p_chr_id,
13319 p_release_date => l_hdr_rec.start_date,
13320 x_nbv => l_nbv);
13321
13322 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13323 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13324 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13325 RAISE OKL_API.G_EXCEPTION_ERROR;
13326 END IF;
13327
13328 If l_nbv is NOT NULL then
13329 --update okl_txd_Assets_b
13330 l_txdv_rec.id := l_taxbook_rec.id;
13331 l_txdv_rec.cost := l_nbv;
13332 OKL_TXD_ASSETS_PUB.UPDATE_TXD_ASSET_DEF
13333 (
13334 p_api_version => p_api_version,
13335 p_init_msg_list => p_init_msg_list,
13336 x_return_status => x_return_status,
13337 x_msg_count => x_msg_count,
13338 x_msg_data => x_msg_data,
13339 p_adpv_rec => l_txdv_rec,
13340 x_adpv_rec => lx_txdv_rec);
13341
13342 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13343 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13344 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13345 RAISE Okc_Api.G_EXCEPTION_ERROR;
13346 END IF;
13347 END IF;
13348 End Loop;
13349 Close l_taxbook_csr;
13350 --BUG# : END 3569441
13351
13352 --Bug# 3631094 :
13353 Get_Pdt_Params (p_api_version => p_api_version,
13354 p_init_msg_list => p_init_msg_list,
13355 x_return_status => x_return_status,
13356 x_msg_count => x_msg_count,
13357 x_msg_data => x_msg_data,
13358 p_chr_id => p_chr_id,
13359 x_rep_pdt_id => l_rep_pdt_id,
13360 x_tax_owner => l_tax_owner,
13361 x_deal_type => l_deal_type,
13362 x_rep_deal_type => l_rep_deal_type);
13363
13364 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13365 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13366 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13367 RAISE OKL_API.G_EXCEPTION_ERROR;
13368 END IF;
13369
13370 If l_tax_owner is null then
13371 Open town_rul_csr(pchrid => p_chr_id);
13372 Fetch town_rul_csr into l_town_rul,
13373 l_town_rul_id;
13374 If town_rul_csr%NOTFOUND Then
13375 OKC_API.set_message(
13376 p_app_name => G_APP_NAME,
13377 p_msg_name => G_REQUIRED_VALUE,
13378 p_token1 => G_COL_NAME_TOKEN,
13379 p_token1_value => 'Tax Owner');
13380 x_return_status := OKC_API.G_RET_STS_ERROR;
13381 RAISE OKL_API.G_EXCEPTION_ERROR;
13382 Else
13383 l_tax_owner := rtrim(ltrim(l_town_rul,' '),' ');
13384 End If;
13385 Close town_rul_csr;
13386 End If;
13387
13388 l_Multi_GAAP_YN := 'N';
13389 l_adjust_asset_to_zero := 'N';
13390 --checks wheter Multi-GAAP processing needs tobe done
13391 If l_rep_pdt_id is not NULL Then
13392 --Bug 7708944. SGIYER 01/15/2009.
13393 -- Implemented MG changes based on PM recommendation.
13394 l_Multi_GAAP_YN := 'Y';
13395 /*
13396 If l_deal_type = 'LEASEOP' and
13397 nvl(l_rep_deal_type,'X') = 'LEASEOP' and
13398 nvl(l_tax_owner,'X') = 'LESSOR' Then
13399 l_Multi_GAAP_YN := 'Y';
13400 End If;
13401
13402 If l_deal_type in ('LEASEDF','LEASEST') and
13403 nvl(l_rep_deal_type,'X') = 'LEASEOP' and
13404 nvl(l_tax_owner,'X') = 'LESSOR' Then
13405 l_Multi_GAAP_YN := 'Y';
13406 End If;
13407
13408 If l_deal_type in ('LEASEDF','LEASEST') and
13409 nvl(l_rep_deal_type,'X') = 'LEASEOP' and
13410 nvl(l_tax_owner,'X') = 'LESSEE' Then
13411 l_Multi_GAAP_YN := 'Y';
13412 End If;
13413
13414 If l_deal_type = 'LOAN' and
13415 nvl(l_rep_deal_type,'X') = 'LEASEOP' and
13416 nvl(l_tax_owner,'X') = 'LESSEE' Then
13417 l_Multi_GAAP_YN := 'Y';
13418 End If;
13419 */
13420 -- If the reporting product is DF/ST lease, the asset should
13421 -- be created and written to zero in the reporting book.
13422
13423 --Bug 7708944. SGIYER 01/15/2009.
13424 -- Implemented MG changes based on PM recommendation.
13425 If l_deal_type = 'LEASEOP' and
13426 nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
13427 nvl(l_tax_owner,'X') = 'LESSOR' Then
13428 --l_Multi_GAAP_YN := 'Y';
13429 l_adjust_asset_to_zero := 'Y';
13430 End If;
13431
13432 If l_deal_type in ('LEASEDF','LEASEST') and
13433 nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
13434 nvl(l_tax_owner,'X') = 'LESSOR' Then
13435 --l_Multi_GAAP_YN := 'Y';
13436 l_adjust_asset_to_zero := 'Y';
13437 End If;
13438
13439 If l_deal_type in ('LEASEDF','LEASEST') and
13440 nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
13441 nvl(l_tax_owner,'X') = 'LESSEE' Then
13442 --l_Multi_GAAP_YN := 'Y';
13443 l_adjust_asset_to_zero := 'Y';
13444 End If;
13445 End If;
13446
13447 --Bug 7708944. SGIYER 01/15/2009.
13448 -- Implemented MG changes based on PM recommendation.
13449 If l_Multi_GAAP_YN = 'Y' and nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST','LEASEOP') then
13450 If nvl(l_rep_Asset_book_done,OKL_API.G_MISS_CHAR) = 'N' then
13451 l_mg_txdv_rec.tal_id := l_corpbook_rec.id;
13452 l_mg_txdv_rec.asset_number := l_corpbook_rec.asset_number;
13453 l_mg_txdv_rec.tax_book := l_rep_Asset_book;
13454 --If nvl(l_adjust_asset_to_zero,OKL_API.G_MISS_CHAR) = 'Y' then
13455 --l_mg_txdv_rec.cost := 0;
13456 --ElsIf nvl(l_adjust_asset_to_zero,OKL_API.G_MISS_CHAR) = 'N' then
13457 l_mg_txdv_rec.cost := l_corp_nbv;
13458 --End If;
13459 --get defaults from category books
13460 open l_defaults_csr (p_book => l_rep_asset_book,
13461 p_cat => l_corpbook_rec.depreciation_id,
13462 p_date => l_corpbook_rec.in_service_date);
13463 Fetch l_defaults_csr into l_defaults_rec;
13464
13465 -- Bug# 5028512 - Modified - Start
13466 If l_defaults_csr%NOTFOUND then
13467 l_mg_txdv_rec.deprn_method_tax := l_corpbook_rec.deprn_method;
13468 l_mg_txdv_rec.life_in_months_tax := l_corpbook_rec.life_in_months;
13469 -- Depreciation Rates no longer needs to be adjusted by 100
13470 --l_mg_txdv_rec.deprn_rate_tax := (l_corpbook_rec.deprn_rate * 100);
13471 l_mg_txdv_rec.deprn_rate_tax := l_corpbook_rec.deprn_rate;
13472 Else
13473 l_mg_txdv_rec.deprn_method_tax := l_defaults_rec.deprn_method;
13474 l_mg_txdv_rec.life_in_months_tax := l_defaults_rec.life_in_months;
13475 -- Depreciation Rates no longer needs to be adjusted by 100
13476 -- l_mg_txdv_rec.deprn_rate_tax := (l_defaults_rec.adjusted_rate * 100);
13477 l_mg_txdv_rec.deprn_rate_tax := l_defaults_rec.adjusted_rate;
13478 End If;
13479 -- Bug# 5028512 - Modified - End
13480
13481 --Create transaction for Multi-Gaap Book
13482 OKL_TXD_ASSETS_PUB.CREATE_TXD_ASSET_DEF
13483 (
13484 p_api_version => p_api_version,
13485 p_init_msg_list => p_init_msg_list,
13486 x_return_status => x_return_status,
13487 x_msg_count => x_msg_count,
13488 x_msg_data => x_msg_data,
13489 p_adpv_rec => l_mg_txdv_rec,
13490 x_adpv_rec => lx_mg_txdv_rec);
13491
13492 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13493 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13494 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13495 RAISE Okc_Api.G_EXCEPTION_ERROR;
13496 END IF;
13497 End If; -- if multi gaap asset book is not doen
13498 End If; --If l_mutigaap_yn
13499 x_cle_id:= l_new_finasst_id;
13500
13501 OKL_API.END_ACTIVITY (x_msg_count,
13502 x_msg_data );
13503 EXCEPTION
13504 WHEN OKL_API.G_EXCEPTION_ERROR THEN
13505 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
13506 l_api_name,
13507 G_PKG_NAME,
13508 'OKL_API.G_RET_STS_ERROR',
13509 x_msg_count,
13510 x_msg_data,
13511 '_PVT');
13512 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
13513 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
13514 l_api_name,
13515 G_PKG_NAME,
13516 'OKL_API.G_RET_STS_UNEXP_ERROR',
13517 x_msg_count,
13518 x_msg_data,
13519 '_PVT');
13520 WHEN OTHERS THEN
13521 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
13522 l_api_name,
13523 G_PKG_NAME,
13524 'OTHERS',
13525 x_msg_count,
13526 x_msg_data,
13527 '_PVT');
13528 END Create_Release_asset_Line;
13529
13530 --Bug# 3533936:
13531 ----------------------------------------------------------
13532 --copy and sync line components from updated line with new
13533 --released asset id to new line
13534 --called from release asset line
13535 ---------------------------------------------------------
13536 PROCEDURE copy_updated_asset_components
13537 (p_api_version IN NUMBER,
13538 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
13539 x_return_status OUT NOCOPY VARCHAR2,
13540 x_msg_count OUT NOCOPY NUMBER,
13541 x_msg_data OUT NOCOPY VARCHAR2,
13542 p_cle_id IN NUMBER,
13543 p_orig_cle_id IN NUMBER,
13544 p_chr_id IN NUMBER) IS
13545
13546 l_return_status VARCHAR2(1) DEFAULT Okl_Api.G_RET_STS_SUCCESS;
13547 l_api_name CONSTANT VARCHAR2(30) := 'COPY_UPDATED_ASSET';
13548 l_api_version CONSTANT NUMBER := 1.0;
13549
13550 --cursor to get rule groups attached to old line
13551 CURSOR l_rgp_csr(p_orig_cle_id in number,
13552 p_chr_id in number) is
13553 SELECT rgpb.id
13554 FROM okc_rule_groups_b rgpb
13555 WHERE rgpb.cle_id = p_cle_id
13556 AND rgpb.dnz_chr_id = p_chr_id;
13557
13558 l_rgp_id OKC_RULE_GROUPS_B.ID%TYPE;
13559 lx_rgp_id OKC_RULE_GROUPS_B.ID%TYPE;
13560
13561 --cursor to get party roles attached to old line
13562 CURSOR l_cpl_csr (p_orig_cle_id in number,
13563 p_chr_id in number) is
13564 SELECT cplb.id,
13565 cplb.rle_code
13566 FROM okc_k_party_roles_b cplb
13567 WHERE cplb.cle_id = p_orig_cle_id
13568 AND cplb.dnz_chr_id = p_chr_id;
13569
13570 l_cpl_rec l_cpl_csr%ROWTYPE;
13571 lx_cpl_id OKC_K_PARTY_ROLES_B.ID%TYPE;
13572
13573 --cursor to get any covered asset lines where old line was referenced
13574 CURSOR l_lnk_ast_csr (p_orig_cle_id in NUMBER,
13575 p_chr_id in NUMBER) is
13576 SELECT cim.id
13577 FROM okc_k_items cim,
13578 okc_k_lines_b cleb,
13579 okc_line_styles_b lseb
13580 WHERE cim.object1_id1 = to_char(p_orig_cle_id)
13581 AND cim.object1_id2 = '#'
13582 AND cim.jtot_object1_code = 'OKX_COVASST'
13583 AND cim.cle_id = cleb.id
13584 AND cim.dnz_chr_id = cleb.dnz_chr_id
13585 AND cleb.dnz_chr_id = p_chr_id
13586 AND cleb.chr_id is NULL
13587 AND cleb.lse_id = lseb.id
13588 AND lseb.lty_code in ('LINK_SERV_ASSET','LINK_FEE_ASSET','LINK_USAGE_ASSET');
13589
13590 l_cim_id OKC_K_ITEMS.ID%TYPE;
13591 l_cimv_rec OKL_OKC_MIGRATION_PVT.cimv_rec_type;
13592 lx_cimv_rec OKL_OKC_MIGRATION_PVT.cimv_rec_type;
13593
13594 --cursor to get information about SLH/SLL to sync back
13595 CURSOR l_slh_csr(p_cle_id in number,
13596 p_orig_cle_id in number,
13597 p_chr_id in number) IS
13598 SELECT
13599
13600 RULSLH.ID,
13601 RULSLL.ID
13602 FROM OKC_RULES_B RULSLL_OLD,
13603 OKC_RULES_B RULSLH_OLD,
13604 OKC_RULE_GROUPS_B RGPB_OLD,
13605 OKC_RULES_B RULSLL,
13606 OKC_RULES_B RULSLH,
13607 OKC_RULE_GROUPS_B RGPB
13608 WHERE TO_CHAR(RULSLH_OLD.ID) = NVL(RULSLL.OBJECT2_ID1,-99) --the new sll has old slh's id
13609 AND RULSLH_OLD.OBJECT1_ID1 = RULSLH.OBJECT1_ID1 --stream type ids are same for old and new slh
13610 AND RULSLL_OLD.RULE_INFORMATION_CATEGORY = 'LASLL'
13611 AND RULSLL_OLD.DNZ_CHR_ID = RGPB_OLD.DNZ_CHR_ID
13612 AND RULSLL_OLD.RGP_ID = RGPB_OLD.ID
13613 AND RULSLH_OLD.RULE_INFORMATION_CATEGORY = 'LASLH'
13614 AND RULSLH_OLD.DNZ_CHR_ID = RGPB_OLD.DNZ_CHR_ID
13615 AND RULSLH_OLD.RGP_ID = RGPB_OLD.ID
13616 AND TO_CHAR(RULSLH_OLD.ID) = RULSLL_OLD.OBJECT2_ID1
13617 AND RGPB_OLD.RGD_CODE = 'LALEVL'
13618 AND RGPB_OLD.CHR_ID IS NULL
13619 AND RGPB_OLD.DNZ_CHR_ID = p_chr_id
13620 AND RGPB_OLD.CLE_ID = p_orig_cle_id
13621 --
13622 AND RULSLL.RULE_INFORMATION_CATEGORY = 'LASLL'
13623 AND RULSLL.DNZ_CHR_ID = RGPB.DNZ_CHR_ID
13624 AND RULSLL.RGP_ID = RGPB.ID
13625 AND RULSLH.RULE_INFORMATION_CATEGORY = 'LASLH'
13626 AND RULSLH.DNZ_CHR_ID = RGPB.DNZ_CHR_ID
13627 AND RULSLH.RGP_ID = RGPB.ID
13628 AND TO_CHAR(RULSLH.ID) <> NVL(RULSLL.OBJECT2_ID1,-99)
13629 AND RGPB.RGD_CODE = 'LALEVL'
13630 AND RGPB.CHR_ID IS NULL
13631 AND RGPB.DNZ_CHR_ID = p_chr_id
13632 AND RGPB.CLE_ID = p_cle_id;
13633
13634 l_slh_id OKC_RULES_B.ID%TYPE;
13635 l_sll_id OKC_RULES_B.ID%TYPE;
13636
13637 l_rulv_rec OKL_RULE_PUB.rulv_rec_type;
13638 lx_rulv_rec OKL_RULE_PUB.rulv_rec_type;
13639
13640 --Fetch any new subsidy associated to old line
13641 Cursor l_subsidy_csr (p_orig_cle_id in number,
13642 p_chr_id in number) IS
13643 Select sub_kle.subsidy_id subsidy_id,
13644 sub_cleb.id subsidy_cle_id,
13645 subb.name name,
13646 subt.description description,
13647 sub_kle.amount amount,
13648 sub_kle.subsidy_override_amount subsidy_override_amount,
13649 sub_cleb.dnz_chr_id dnz_chr_id,
13650 sub_cleb.cle_id asset_cle_id,
13651 sub_cplb.id cpl_id,
13652 pov.vendor_id vendor_id,
13653 pov.vendor_name vendor_name
13654 from
13655 okl_subsidies_b subb,
13656 okl_subsidies_tl subt,
13657 po_vendors pov,
13658 okc_k_party_roles_b sub_cplb,
13659 okl_k_lines sub_kle,
13660 okc_k_lines_b sub_cleb,
13661 okc_line_styles_b sub_lseb
13662 where subt.id = subb.id
13663 and subt.language = userenv('LANG')
13664 and subb.id = sub_kle.subsidy_id
13665 and pov.vendor_id = to_number(sub_cplb.object1_id1)
13666 and sub_cplb.object1_id2 = '#'
13667 and sub_cplb.jtot_object1_code = 'OKX_VENDOR'
13668 and sub_cplb.rle_code = 'OKL_VENDOR'
13669 and sub_cplb.cle_id = sub_cleb.id
13670 and sub_cplb.dnz_chr_id = sub_cleb.dnz_chr_id
13671 and sub_kle.id = sub_cleb.id
13672 and sub_cleb.cle_id = p_orig_cle_id
13673 and sub_cleb.dnz_chr_id = p_chr_id
13674 and sub_cleb.sts_code <> 'ABANDONED'
13675 and sub_cleb.lse_id = sub_lseb.id
13676 and sub_lseb.lty_code = 'SUBSIDY';
13677
13678 l_subsidy_rec l_subsidy_csr%ROWTYPE;
13679
13680 l_asb_rec okl_asset_subsidy_pvt.asb_rec_type;
13681 lx_asb_rec okl_asset_subsidy_pvt.asb_rec_type;
13682
13683 --Fetch refund details records against the old subsidy line
13684 Cursor l_subrfnd_csr (p_cpl_id in number) is
13685 Select ppyd.id
13686 from okl_party_payment_dtls ppyd
13687 where ppyd.cpl_id = p_cpl_id;
13688
13689 l_ppyd_id OKL_PARTY_PAYMENT_DTLS.ID%TYPE;
13690
13691 l_srfvv_rec OKL_SUBSIDY_RFND_DTLS_PVT.srfvv_rec_type;
13692 lx_srfvv_rec OKL_SUBSIDY_RFND_DTLS_PVT.srfvv_rec_type;
13693
13694 Begin
13695 x_return_status := Okl_Api.G_RET_STS_SUCCESS;
13696 -- Call start_activity to create savepoint, check compatibility
13697 -- and initialize message list
13698 x_return_status := Okl_Api.START_ACTIVITY(
13699 p_api_name => l_api_name,
13700 p_pkg_name => g_pkg_name,
13701 p_init_msg_list => p_init_msg_list,
13702 l_api_version => l_api_version,
13703 p_api_version => p_api_version,
13704 p_api_type => '_PVT',
13705 x_return_status => x_return_status);
13706 -- Check if activity started successfully
13707 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13708 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13709 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13710 RAISE Okc_Api.G_EXCEPTION_ERROR;
13711 END IF;
13712
13713 --1. Copy rules from old line to new line
13714 open l_rgp_csr(p_orig_cle_id => p_orig_cle_id,
13715 p_chr_id => p_chr_id);
13716 Loop
13717 Fetch l_rgp_csr into l_rgp_id;
13718 Exit when l_rgp_csr%NOTFOUND;
13719 okl_copy_contract_pub.Copy_Rules
13720 (p_api_version => p_api_version,
13721 p_init_msg_list => p_init_msg_list,
13722 x_return_status => x_return_status,
13723 x_msg_count => x_msg_count,
13724 x_msg_data => x_msg_data,
13725 p_rgp_id => l_rgp_id,
13726 p_cle_id => p_cle_id,
13727 p_to_template_yn => 'N',
13728 x_rgp_id => lx_rgp_id);
13729 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13730 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13731 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13732 RAISE Okc_Api.G_EXCEPTION_ERROR;
13733 END IF;
13734 End Loop;
13735 close l_rgp_csr;
13736
13737 --2. Copy party roles from old line to new line
13738 open l_cpl_csr(p_orig_cle_id => p_orig_cle_id,
13739 p_chr_id => p_chr_id);
13740 Loop
13741 Fetch l_cpl_csr into l_cpl_rec;
13742 Exit when l_cpl_csr%NOTFOUND;
13743 okl_copy_contract_pub.copy_party_roles
13744 (p_api_version => p_api_version,
13745 p_init_msg_list => p_init_msg_list,
13746 x_return_status => x_return_status,
13747 x_msg_count => x_msg_count,
13748 x_msg_data => x_msg_data,
13749 p_cpl_id => l_cpl_rec.id,
13750 p_cle_id => p_cle_id,
13751 p_rle_code => l_cpl_rec.rle_code,
13752 x_cpl_id => lx_cpl_id);
13753 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13754 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13755 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13756 RAISE Okc_Api.G_EXCEPTION_ERROR;
13757 END IF;
13758 End Loop;
13759 close l_cpl_csr;
13760
13761 --3. Relink covered asset lines
13762 Open l_lnk_ast_csr (p_orig_cle_id => p_orig_cle_id,
13763 p_chr_id => p_chr_id);
13764 Loop
13765 Fetch l_lnk_ast_csr into l_cim_id;
13766 Exit when l_lnk_ast_csr%NOTFOUND;
13767 l_cimv_rec.id := l_cim_id;
13768 l_cimv_rec.object1_id1 := to_char(p_cle_id);
13769 OKL_OKC_MIGRATION_PVT.update_contract_item
13770 (p_api_version => p_api_version,
13771 p_init_msg_list => p_init_msg_list,
13772 x_return_status => x_return_status,
13773 x_msg_count => x_msg_count,
13774 x_msg_data => x_msg_data,
13775 p_cimv_rec => l_cimv_rec,
13776 x_cimv_rec => lx_cimv_rec);
13777 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13778 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13779 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13780 RAISE Okc_Api.G_EXCEPTION_ERROR;
13781 END IF;
13782 End Loop;
13783 Close l_lnk_ast_csr;
13784
13785 --4. Relink SLH-SLL
13786 Open l_slh_csr (p_cle_id => p_cle_id,
13787 p_orig_cle_id => p_orig_cle_id,
13788 p_chr_id => p_chr_id
13789 );
13790 Loop
13791 Fetch l_slh_csr into l_slh_id, l_sll_id;
13792 Exit when l_slh_csr%NOTFOUND;
13793 l_rulv_rec.id := l_sll_id;
13794 l_rulv_rec.object2_id1 := to_char(l_slh_id);
13795 OKL_RULE_PUB.update_rule
13796 (p_api_version => p_api_version,
13797 p_init_msg_list => p_init_msg_list,
13798 x_return_status => x_return_status,
13799 x_msg_count => x_msg_count,
13800 x_msg_data => x_msg_data,
13801 p_rulv_rec => l_rulv_rec,
13802 x_rulv_rec => lx_rulv_rec);
13803 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13804 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13805 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13806 RAISE Okc_Api.G_EXCEPTION_ERROR;
13807 END IF;
13808 End Loop;
13809 Close l_slh_csr;
13810
13811 --5. Sync back any new subsidy that has been added
13812 Open l_subsidy_csr(p_orig_cle_id => p_orig_cle_id,
13813 p_chr_id => p_chr_id);
13814 Loop
13815 Fetch l_subsidy_csr into l_subsidy_rec;
13816 Exit when l_subsidy_csr%NOTFOUND;
13817 l_asb_rec.subsidy_id := l_subsidy_rec.subsidy_id;
13818 l_asb_rec.name := l_subsidy_rec.name;
13819 l_asb_rec.description := l_subsidy_rec.description;
13820 l_asb_rec.amount := l_subsidy_rec.amount;
13821 l_asb_rec.subsidy_override_amount := l_subsidy_rec.subsidy_override_amount;
13822 l_asb_rec.dnz_chr_id := l_subsidy_rec.dnz_chr_id;
13823 l_asb_rec.asset_cle_id := p_cle_id;
13824 l_asb_rec.vendor_id := l_subsidy_rec.vendor_id;
13825 l_asb_rec.vendor_name := l_asb_rec.vendor_name;
13826
13827 OKL_ASSET_SUBSIDY_PVT.create_asset_subsidy
13828 (p_api_version => p_api_version,
13829 p_init_msg_list => p_init_msg_list,
13830 x_return_status => x_return_status,
13831 x_msg_count => x_msg_count,
13832 x_msg_data => x_msg_data,
13833 p_asb_rec => l_asb_rec,
13834 x_asb_rec => lx_asb_rec);
13835 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13836 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13837 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13838 RAISE Okc_Api.G_EXCEPTION_ERROR;
13839 END IF;
13840
13841 --update link to party payment details
13842 Open l_subrfnd_csr(p_cpl_id => l_subsidy_rec.cpl_id);
13843 Fetch l_subrfnd_csr into l_ppyd_id;
13844 If l_subrfnd_csr%NOTFOUND then
13845 NULL;
13846 Else
13847 l_srfvv_rec.id := l_ppyd_id;
13848 l_srfvv_rec.cpl_id := lx_asb_rec.cpl_id;
13849 OKL_SUBSIDY_RFND_DTLS_PVT.update_refund_dtls
13850 (p_api_version => p_api_version,
13851 p_init_msg_list => p_init_msg_list,
13852 x_return_status => x_return_status,
13853 x_msg_count => x_msg_count,
13854 x_msg_data => x_msg_data,
13855 p_srfvv_rec => l_srfvv_rec,
13856 x_srfvv_rec => lx_srfvv_rec);
13857 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13858 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13859 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13860 RAISE Okc_Api.G_EXCEPTION_ERROR;
13861 END IF;
13862 End If;
13863 Close l_subrfnd_csr;
13864 End Loop;
13865 Close l_subsidy_csr;
13866
13867
13868 OKL_API.END_ACTIVITY (x_msg_count,
13869 x_msg_data );
13870 EXCEPTION
13871 WHEN OKL_API.G_EXCEPTION_ERROR THEN
13872 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
13873 l_api_name,
13874 G_PKG_NAME,
13875 'OKL_API.G_RET_STS_ERROR',
13876 x_msg_count,
13877 x_msg_data,
13878 '_PVT');
13879 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
13880 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
13881 l_api_name,
13882 G_PKG_NAME,
13883 'OKL_API.G_RET_STS_UNEXP_ERROR',
13884 x_msg_count,
13885 x_msg_data,
13886 '_PVT');
13887 WHEN OTHERS THEN
13888 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
13889 l_api_name,
13890 G_PKG_NAME,
13891 'OTHERS',
13892 x_msg_count,
13893 x_msg_data,
13894 '_PVT');
13895 END copy_updated_asset_components;
13896
13897 --Bug# 3533936:
13898 ------------------------------------------------------
13899 --update_release_asset_line called from
13900 --update_all_line
13901 -----------------------------------------------------
13902
13903 PROCEDURE update_release_asset_line
13904 (p_api_version IN NUMBER,
13905 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
13906 x_return_status OUT NOCOPY VARCHAR2,
13907 x_msg_count OUT NOCOPY NUMBER,
13908 x_msg_data OUT NOCOPY VARCHAR2,
13909 p_asset_id IN VARCHAR2,
13910 p_chr_id IN NUMBER,
13911 p_clev_fin_id IN NUMBER,
13912 x_cle_id OUT NOCOPY NUMBER) IS
13913
13914
13915 l_return_status VARCHAR2(1) DEFAULT Okl_Api.G_RET_STS_SUCCESS;
13916 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_RELEASE_ASSET';
13917 l_api_version CONSTANT NUMBER := 1.0;
13918
13919 --cursor to find the existing asset id on release asset line
13920 cursor l_cim_fa_csr(p_fin_asst_id in number) is
13921 select
13922 fa_cim.object1_id1 asset_id,
13923 fa_cim.dnz_chr_id chr_id
13924 from okc_k_items fa_cim,
13925 okc_k_lines_b fa_cleb,
13926 okc_line_styles_b fa_lseb
13927 where fa_cim.cle_id = fa_cleb.id
13928 and fa_cim.dnz_chr_id = fa_cleb.dnz_chr_id
13929 and fa_cleb.cle_id = p_fin_asst_id
13930 and fa_cleb.lse_id = fa_lseb.id
13931 and fa_lseb.lty_code = 'FIXED_ASSET';
13932
13933 l_asset_id okc_k_items.OBJECT1_ID1%TYPE;
13934 l_chr_id okc_k_items.DNZ_CHR_ID%TYPE;
13935
13936 --cursor to fetch all the lines
13937 CURSOR l_lines_csr(p_from_cle_id in number) IS
13938 SELECT level,
13939 id,
13940 chr_id,
13941 cle_id,
13942 dnz_chr_id,
13943 orig_system_id1
13944 FROM okc_k_lines_b
13945 CONNECT BY PRIOR id = cle_id
13946 START WITH id = p_from_cle_id;
13947
13948 l_lines_rec l_lines_csr%ROWTYPE;
13949
13950 --bug# 3783518 : is asset number equal in case of rebook
13951 cursor l_chk_rbk_ast(p_cle_id in number, p_chr_id in number, p_asset_id number) is
13952 select 'N' change_flag,
13953 chrb.orig_system_source_code
13954 from fa_additions_b fab,
13955 okl_txl_assets_b txlb,
13956 okc_k_lines_b fa_cleb,
13957 okc_line_styles_b fa_lseb,
13958 okc_k_headers_b chrb
13959 where fab.asset_number = txlb.asset_number
13960 and fab.asset_id = p_asset_id
13961 and txlb.kle_id = fa_cleb.id
13962 and fa_cleb.dnz_chr_id = chrb.id
13963 and fa_cleb.cle_id = p_cle_id
13964 and fa_cleb.lse_id = fa_lseb.id
13965 and fa_lseb.lty_code = 'FIXED_ASSET'
13966 and chrb.id = p_chr_id
13967 and chrb.orig_system_source_code = 'OKL_REBOOK';
13968
13969 l_rbk_ast_change_yn varchar2(1);
13970 l_k_source okc_k_headers_b.orig_system_source_code%TYPE;
13971
13972 BEGIN
13973 x_return_status := Okl_Api.G_RET_STS_SUCCESS;
13974 -- Call start_activity to create savepoint, check compatibility
13975 -- and initialize message list
13976 x_return_status := Okl_Api.START_ACTIVITY(
13977 p_api_name => l_api_name,
13978 p_pkg_name => g_pkg_name,
13979 p_init_msg_list => p_init_msg_list,
13980 l_api_version => l_api_version,
13981 p_api_version => p_api_version,
13982 p_api_type => '_PVT',
13983 x_return_status => x_return_status);
13984 -- Check if activity started successfully
13985 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13986 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13987 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13988 RAISE Okc_Api.G_EXCEPTION_ERROR;
13989 END IF;
13990
13991 --------------------
13992 --Bug# 3783518
13993 --------------------
13994 for l_chk_rbk_rec in l_chk_rbk_ast(p_cle_id => p_clev_fin_id,
13995 p_chr_id => p_chr_id,
13996 p_asset_id => p_asset_id)
13997 Loop
13998 l_rbk_ast_change_yn := l_chk_rbk_rec.change_flag;
13999 l_k_source := l_chk_rbk_rec.orig_system_source_code;
14000 end loop;
14001
14002 If nvl(l_k_source,OKL_API.G_MISS_CHAR) = 'OKL_REBOOK' then
14003 If l_rbk_ast_change_yn = 'Y' then
14004 --raise error : can not add new asset on a rebook
14005 OKL_API.set_message(
14006 p_app_name => G_APP_NAME,
14007 p_msg_name => 'OKL_REL_ASSET_RBK_NEW_AST_ADD');
14008 x_return_status := OKC_API.G_RET_STS_ERROR;
14009 RAISE OKL_API.G_EXCEPTION_ERROR;
14010 ElsIf l_rbk_ast_change_yn = 'N' then
14011 x_cle_id := p_clev_fin_id;
14012
14013 End If;
14014 Else
14015 --------------------
14016 --End : Bug# 3783518
14017 --------------------
14018 If nvl(p_asset_id,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR then
14019 x_cle_id := p_clev_fin_id;
14020 Else
14021 open l_cim_fa_csr(p_fin_asst_id => p_clev_fin_id);
14022 Fetch l_cim_fa_csr into l_asset_id, l_chr_id;
14023 If l_cim_fa_csr%NOTFOUND then
14024 --raise error : invalid line information
14025 OKL_API.set_message(p_app_name => G_APP_NAME,
14026 p_msg_name => 'OKL_LLA_LINE_RECORD');
14027 RAISE Okc_Api.G_EXCEPTION_ERROR;
14028 End If;
14029 close l_cim_fa_csr;
14030 If nvl(p_asset_id,OKL_API.G_MISS_CHAR) = nvl(l_asset_id,OKL_API.G_MISS_CHAR) then
14031 x_cle_id := p_clev_fin_id;
14032 Else
14033
14034 --Create new release asset line
14035 Create_release_asset_line
14036 (p_api_version => p_api_version,
14037 p_init_msg_list => p_init_msg_list,
14038 x_return_status => x_return_status,
14039 x_msg_count => x_msg_count,
14040 x_msg_data => x_msg_data,
14041 p_asset_id => p_asset_id,
14042 p_chr_id => l_chr_id,
14043 x_cle_id => x_cle_id);
14044
14045 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14046 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14047 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14048 RAISE OKL_API.G_EXCEPTION_ERROR;
14049 END IF;
14050
14051 --Copy rules, party roles, supplier invoice details
14052 Open l_lines_csr(p_from_cle_id => x_cle_id);
14053 Loop
14054 fetch l_lines_csr into l_lines_rec;
14055 Exit when l_lines_csr%NOTFOUND;
14056 copy_updated_asset_components
14057 (p_api_version => p_api_version,
14058 p_init_msg_list => p_init_msg_list,
14059 x_return_status => x_return_status,
14060 x_msg_count => x_msg_count,
14061 x_msg_data => x_msg_data,
14062 p_cle_id => l_lines_rec.id,
14063 p_orig_cle_id => l_lines_rec.orig_system_id1,
14064 p_chr_id => l_chr_id);
14065 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14066 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14067 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14068 RAISE OKL_API.G_EXCEPTION_ERROR;
14069 END IF;
14070 End Loop;
14071 Close l_lines_csr;
14072
14073
14074 --Delete old line
14075 OKL_CONTRACT_PUB.delete_contract_line(
14076 p_api_version => p_api_version,
14077 p_init_msg_list => p_init_msg_list,
14078 x_return_status => x_return_status,
14079 x_msg_count => x_msg_count,
14080 x_msg_data => x_msg_data,
14081 p_line_id => p_clev_fin_id
14082 );
14083
14084 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14085 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14086 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14087 RAISE OKL_API.G_EXCEPTION_ERROR;
14088 END IF;
14089
14090
14091 End If;
14092 End If; --Bug# 3783518
14093 End If;
14094 OKL_API.END_ACTIVITY (x_msg_count,
14095 x_msg_data );
14096 EXCEPTION
14097 WHEN OKL_API.G_EXCEPTION_ERROR THEN
14098 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
14099 l_api_name,
14100 G_PKG_NAME,
14101 'OKL_API.G_RET_STS_ERROR',
14102 x_msg_count,
14103 x_msg_data,
14104 '_PVT');
14105 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
14106 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
14107 l_api_name,
14108 G_PKG_NAME,
14109 'OKL_API.G_RET_STS_UNEXP_ERROR',
14110 x_msg_count,
14111 x_msg_data,
14112 '_PVT');
14113 WHEN OTHERS THEN
14114 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
14115 l_api_name,
14116 G_PKG_NAME,
14117 'OTHERS',
14118 x_msg_count,
14119 x_msg_data,
14120 '_PVT');
14121 END update_Release_asset_Line;
14122
14123
14124 --Bug# 3533936
14125 ---------------------------------------------------------
14126 --Local procedure to resolve residual value on release
14127 --asset line
14128 --------------------------------------------------------
14129 PROCEDURE Resolve_Residual_Value(
14130 p_api_version IN NUMBER,
14131 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
14132 x_return_status OUT NOCOPY VARCHAR2,
14133 x_msg_count OUT NOCOPY NUMBER,
14134 x_msg_data OUT NOCOPY VARCHAR2,
14135 p_asset_number IN VARCHAR2,
14136 p_clev_fin_rec IN clev_rec_type,
14137 p_klev_fin_rec IN klev_rec_type,
14138 --bug# 4631549
14139 p_call_mode IN Varchar2,
14140 x_clev_fin_rec OUT NOCOPY clev_rec_type,
14141 x_klev_fin_rec OUT NOCOPY klev_rec_type) IS
14142
14143 l_return_status VARCHAR2(1) DEFAULT Okl_Api.G_RET_STS_SUCCESS;
14144 l_api_name CONSTANT VARCHAR2(30) := 'RESOLVE_RESIDUL';
14145 l_api_version CONSTANT NUMBER := 1.0;
14146
14147
14148 l_top_line_id OKC_K_LINES_B.ID%TYPE;
14149 l_oec OKL_K_LINES.OEC%TYPE;
14150 l_residual_value OKL_K_LINES.RESIDUAL_VALUE%TYPE;
14151 lx_residual_value OKL_K_LINES.RESIDUAL_VALUE%TYPE;
14152
14153
14154 --cursor to get model line id
14155 CURSOR l_modelline_csr(p_cle_id IN NUMBER,
14156 p_chr_id IN NUMBER) IS
14157 SELECT model_cleb.id
14158 FROM OKC_K_LINES_B model_cleb,
14159 OKC_LINE_STYLES_B model_lseb
14160 WHERE model_cleb.cle_id = p_cle_id
14161 AND model_cleb.dnz_chr_id = p_chr_id
14162 AND model_cleb.lse_id = model_lseb.id
14163 AND model_lseb.lty_code = 'ITEM';
14164
14165 l_model_line_id OKC_K_LINES_B.ID%TYPE;
14166
14167 --Bug# 4631549
14168 cursor l_exp_cost_csr (p_kle_id in number) is
14169 select kle.expected_asset_cost
14170 from okl_k_lines kle
14171 where kle.id = p_kle_id;
14172
14173 l_exp_cost_rec l_exp_cost_csr%ROWTYPE;
14174
14175 Begin
14176
14177 x_return_status := Okl_Api.G_RET_STS_SUCCESS;
14178 -- Call start_activity to create savepoint, check compatibility
14179 -- and initialize message list
14180 x_return_status := Okl_Api.START_ACTIVITY(
14181 p_api_name => l_api_name,
14182 p_pkg_name => g_pkg_name,
14183 p_init_msg_list => p_init_msg_list,
14184 l_api_version => l_api_version,
14185 p_api_version => p_api_version,
14186 p_api_type => '_PVT',
14187 x_return_status => x_return_status);
14188 -- Check if activity started successfully
14189 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14190 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14191 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14192 RAISE Okc_Api.G_EXCEPTION_ERROR;
14193 END IF;
14194
14195 --Bug# 4631549
14196 If nvl(p_call_mode,okl_api.g_miss_char) = 'RELEASE_CONTRACT' then
14197 open l_exp_cost_csr (p_kle_id => p_clev_fin_rec.id);
14198 fetch l_exp_cost_csr into l_exp_cost_rec;
14199 close l_exp_cost_csr;
14200 end if;
14201
14202 Open l_modelline_csr(p_cle_id => p_clev_fin_rec.id,
14203 p_chr_id => p_clev_fin_rec.dnz_chr_id);
14204 Fetch l_modelline_csr into l_model_line_id;
14205 If l_modelline_csr%NOTFOUND then
14206 --raise errorr: invliad line information
14207 OKL_API.set_message(p_app_name => G_APP_NAME,
14208 p_msg_name => 'OKL_LLA_LINE_RECORD');
14209 RAISE Okc_Api.G_EXCEPTION_ERROR;
14210 End If;
14211 Close l_modelline_csr;
14212
14213 IF (p_klev_fin_rec.residual_percentage IS NOT NULL OR
14214 p_klev_fin_rec.residual_percentage <> OKL_API.G_MISS_NUM) AND
14215 (p_klev_fin_rec.residual_value IS NOT NULL OR
14216 p_klev_fin_rec.residual_value <> OKL_API.G_MISS_NUM) THEN
14217
14218 l_top_line_id := p_clev_fin_rec.id;
14219 --Bug# 4631549
14220 If nvl(p_call_mode,okl_api.g_miss_char) = 'RELEASE_CONTRACT' then
14221 l_oec := l_exp_cost_rec.expected_asset_cost;
14222 else
14223 l_oec := p_klev_fin_rec.oec;
14224 end if;
14225 l_residual_value := p_klev_fin_rec.residual_value;
14226
14227 get_res_per_upd_fin_rec(p_api_version => p_api_version,
14228 p_init_msg_list => p_init_msg_list,
14229 x_return_status => x_return_status,
14230 x_msg_count => x_msg_count,
14231 x_msg_data => x_msg_data,
14232 P_new_yn => 'N',
14233 p_asset_number => p_clev_fin_rec.name,
14234 p_res_value => l_residual_value,
14235 p_oec => l_oec,
14236 p_top_line_id => l_top_line_id,
14237 p_dnz_chr_id => p_clev_fin_rec.dnz_chr_id,
14238 x_fin_clev_rec => x_clev_fin_rec,
14239 x_fin_klev_rec => x_klev_fin_rec,
14240 p_validate_fin_line => OKL_API.G_TRUE); -- 4414408
14241
14242 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14243 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14244 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14245 RAISE OKL_API.G_EXCEPTION_ERROR;
14246 END IF;
14247
14248 res_value_calc_upd_fin_rec(p_api_version => p_api_version,
14249 p_init_msg_list => p_init_msg_list,
14250 x_return_status => x_return_status,
14251 x_msg_count => x_msg_count,
14252 x_msg_data => x_msg_data,
14253 P_new_yn => 'N',
14254 p_asset_number => p_asset_number,
14255 -- 4414408
14256 p_top_line_id => l_top_line_id,
14257 p_dnz_chr_id => p_clev_fin_rec.dnz_chr_id,
14258 x_fin_clev_rec => x_clev_fin_rec,
14259 x_fin_klev_rec => x_klev_fin_rec,
14260 x_res_value => lx_residual_value,
14261 p_validate_fin_line => OKL_API.G_TRUE); -- 4414408
14262
14263 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14264 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14265 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14266 RAISE OKL_API.G_EXCEPTION_ERROR;
14267 END IF;
14268
14269 ELSIF (p_klev_fin_rec.residual_percentage IS NULL OR
14270 p_klev_fin_rec.residual_percentage = OKL_API.G_MISS_NUM) AND
14271 (p_klev_fin_rec.residual_value IS NOT NULL OR
14272 p_klev_fin_rec.residual_value <> OKL_API.G_MISS_NUM) THEN
14273
14274 l_top_line_id := p_clev_fin_rec.id;
14275 --Bug# 4631549
14276 If nvl(p_call_mode,okl_api.g_miss_char) = 'RELEASE_CONTRACT' then
14277 l_oec := l_exp_cost_rec.expected_asset_cost;
14278 else
14279 l_oec := p_klev_fin_rec.oec;
14280 end if;
14281 l_residual_value := p_klev_fin_rec.residual_value;
14282
14283
14284 get_res_per_upd_fin_rec(p_api_version => p_api_version,
14285 p_init_msg_list => p_init_msg_list,
14286 x_return_status => x_return_status,
14287 x_msg_count => x_msg_count,
14288 x_msg_data => x_msg_data,
14289 P_new_yn => 'N',
14290 p_asset_number => p_clev_fin_rec.name,
14291 p_res_value => l_residual_value,
14292 p_oec => l_oec,
14293 p_top_line_id => l_top_line_id,
14294 p_dnz_chr_id => p_clev_fin_rec.dnz_chr_id,
14295 x_fin_clev_rec => x_clev_fin_rec,
14296 x_fin_klev_rec => x_klev_fin_rec,
14297 p_validate_fin_line => OKL_API.G_TRUE);
14298
14299 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14300 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14301 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14302 RAISE OKL_API.G_EXCEPTION_ERROR;
14303 END IF;
14304
14305 ELSIF (p_klev_fin_rec.residual_percentage IS NOT NULL OR
14306 p_klev_fin_rec.residual_percentage <> OKL_API.G_MISS_NUM) AND
14307 (p_klev_fin_rec.residual_value IS NULL OR
14308 p_klev_fin_rec.residual_value = OKL_API.G_MISS_NUM) THEN
14309
14310 --Bug# 4631549
14311 l_top_line_id := p_clev_fin_rec.id;
14312
14313 res_value_calc_upd_fin_rec(p_api_version => p_api_version,
14314 p_init_msg_list => p_init_msg_list,
14315 x_return_status => x_return_status,
14316 x_msg_count => x_msg_count,
14317 x_msg_data => x_msg_data,
14318 P_new_yn => 'N',
14319 p_asset_number => p_asset_number,
14320 -- 4414408
14321 p_top_line_id => p_clev_fin_rec.id,
14322 p_dnz_chr_id => p_clev_fin_rec.dnz_chr_id,
14323 x_fin_clev_rec => x_clev_fin_rec,
14324 x_fin_klev_rec => x_klev_fin_rec,
14325 x_res_value => lx_residual_value,
14326 p_validate_fin_line => OKL_API.G_TRUE);
14327 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14328 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14329 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14330 RAISE OKL_API.G_EXCEPTION_ERROR;
14331 END IF;
14332 END IF;
14333
14334 OKL_API.END_ACTIVITY (x_msg_count,
14335 x_msg_data );
14336 EXCEPTION
14337 WHEN OKL_API.G_EXCEPTION_ERROR THEN
14338 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
14339 l_api_name,
14340 G_PKG_NAME,
14341 'OKL_API.G_RET_STS_ERROR',
14342 x_msg_count,
14343 x_msg_data,
14344 '_PVT');
14345 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
14346 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
14347 l_api_name,
14348 G_PKG_NAME,
14349 'OKL_API.G_RET_STS_UNEXP_ERROR',
14350 x_msg_count,
14351 x_msg_data,
14352 '_PVT');
14353 WHEN OTHERS THEN
14354 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
14355 l_api_name,
14356 G_PKG_NAME,
14357 'OTHERS',
14358 x_msg_count,
14359 x_msg_data,
14360 '_PVT');
14361 End Resolve_Residual_Value;
14362
14363 --Bug# 3533936
14364 -----------------------------------------------------
14365 --Modify Release Asset line based on the user inputs
14366 --provided for modifiable columns during Release
14367 ----------------------------------------------------
14368 PROCEDURE Modify_Release_Asset_Line(
14369 p_api_version IN NUMBER,
14370 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
14371 x_return_status OUT NOCOPY VARCHAR2,
14372 x_msg_count OUT NOCOPY NUMBER,
14373 x_msg_data OUT NOCOPY VARCHAR2,
14374 p_clev_fin_rec IN clev_rec_type,
14375 p_klev_fin_rec IN klev_rec_type,
14376 --akrangan Bug# 5362977 start
14377 p_clev_model_rec IN clev_rec_type,
14378 --akrangan Bug# 5362977 end
14379 p_cimv_model_rec IN cimv_rec_type,
14380 p_clev_fa_rec IN clev_rec_type,
14381 p_cimv_fa_rec IN cimv_rec_type,
14382 p_talv_fa_rec IN talv_rec_type,
14383 p_itiv_ib_tbl IN itiv_tbl_type,
14384 p_cle_id IN NUMBER,
14385 --Bug# 4631549
14386 p_call_mode IN VARCHAR2,
14387 x_clev_fin_rec OUT NOCOPY clev_rec_type,
14388 x_klev_fin_rec OUT NOCOPY klev_rec_type,
14389 x_clev_model_rec OUT NOCOPY clev_rec_type,
14390 x_klev_model_rec OUT NOCOPY klev_rec_type,
14391 x_clev_fa_rec OUT NOCOPY clev_rec_type,
14392 x_klev_fa_rec OUT NOCOPY klev_rec_type,
14393 x_clev_ib_tbl OUT NOCOPY clev_tbl_type,
14394 x_klev_ib_tbl OUT NOCOPY klev_tbl_type
14395 ) IS
14396
14397
14398
14399 l_return_status VARCHAR2(1) DEFAULT Okl_Api.G_RET_STS_SUCCESS;
14400 l_api_name CONSTANT VARCHAR2(30) := 'MODIFY_RELEASE_ASSET';
14401 l_api_version CONSTANT NUMBER := 1.0;
14402
14403 --cursor to get fixed asset details
14404 cursor l_fa_csr (p_fin_cle_id in number,
14405 p_chr_id in number) is
14406 select txlb.id,
14407 txlb.depreciation_cost,
14408 txlb.current_units,
14409 txlb.percent_salvage_value,
14410 txlb.salvage_value,
14411 txlb.asset_number
14412 from okl_trx_assets trx,
14413 okl_txl_assets_b txlb,
14414 okc_k_lines_b cleb_fa,
14415 okc_line_styles_b lseb_fa
14416 where trx.id = txlb.tas_id
14417 and trx.tsu_code = 'ENTERED'
14418 --Bug# 3783518
14419 --and trx.tas_type = 'CRL'
14420 and txlb.kle_id = cleb_fa.id
14421 --Bug# 3783518
14422 --and txlb.tal_type = 'CRL'
14423 and cleb_fa.cle_id = p_fin_cle_id
14424 and cleb_fa.dnz_chr_id = p_chr_id
14425 and cleb_fa.lse_id = lseb_fa.id
14426 and lseb_fa.lty_code = 'FIXED_ASSET';
14427
14428
14429 l_fa_rec l_fa_csr%ROWTYPE;
14430
14431 --cursor to get install base details
14432 cursor l_ib_csr (p_fin_cle_id in number,
14433 p_chr_id in number) is
14434 select iti.id,
14435 iti.serial_number,
14436 iti.instance_number_ib,
14437 iti.object_id1_new,
14438 iti.object_id2_new
14439 from okl_trx_assets trx,
14440 okl_txl_itm_insts iti,
14441 okc_k_lines_b cleb_ib,
14442 okc_line_styles_b lseb_ib,
14443 okc_k_lines_b cleb_inst,
14444 okc_line_styles_b lseb_inst
14445 where trx.id = iti.tas_id
14446 and trx.tsu_code = 'ENTERED'
14447 --akrangan bug 5362977 start
14448 AND trx.tas_type IN ('CRL','CFA','CRB')
14449 --akrangan bug 5362977 end
14450 and iti.kle_id = cleb_ib.id
14451 --akrangan bug 5362977 start
14452 AND iti.tal_type IN ('CRL','CFA','CRB')
14453 --akrangan bug 5362977 end
14454 and cleb_ib.cle_id = cleb_inst.id
14455 and cleb_ib.dnz_chr_id = cleb_inst.dnz_chr_id
14456 and cleb_ib.lse_id = lseb_ib.id
14457 and lseb_ib.lty_code = 'INST_ITEM'
14458 and cleb_inst.cle_id = p_fin_cle_id
14459 and cleb_inst.dnz_chr_id = p_chr_id
14460 and cleb_inst.lse_id = lseb_inst.id
14461 and lseb_inst.lty_code = 'FREE_FORM2';
14462
14463 l_ib_rec l_ib_csr%ROWTYPE;
14464
14465 l_clev_fin_rec clev_rec_type;
14466 l_klev_fin_rec klev_rec_type;
14467 l_talv_fa_rec talv_rec_type;
14468 l_itiv_ib_tbl itiv_tbl_type;
14469
14470 l_rel_ast_clev_fin_rec clev_rec_type;
14471 l_rel_ast_klev_fin_rec klev_rec_type;
14472 l_rel_ast_talv_rec talv_rec_type;
14473 l_rel_ast_itiv_ib_tbl itiv_tbl_type;
14474
14475 i Number;
14476 j Number;
14477
14478 --cursor to fetch all the lines
14479 CURSOR l_lines_csr(p_from_cle_id in number) IS
14480 SELECT level,
14481 cleb.id,
14482 cleb.chr_id,
14483 cleb.cle_id,
14484 cleb.dnz_chr_id,
14485 cleb.lse_id
14486 FROM okc_k_lines_b cleb
14487 CONNECT BY PRIOR cleb.id = cle_id
14488 START WITH cleb.id = p_from_cle_id;
14489
14490 l_lines_rec l_lines_csr%ROWTYPE;
14491
14492 --cursor to get lty_code
14493 CURSOR l_lty_csr (p_lse_id in number) is
14494 SELECT lty_code
14495 from okc_line_styles_b
14496 where id = p_lse_id;
14497
14498 l_lty_code OKC_LINE_STYLES_B.lty_code%TYPE;
14499
14500 lx_clev_rec clev_rec_type;
14501 lx_klev_rec klev_rec_type;
14502
14503 --BUG# NBV:
14504 --cursor to get model and fixed asset lines
14505 cursor l_cleb_csr (p_cle_id in number,
14506 p_chr_id in number,
14507 p_lty_code in varchar2) is
14508 select cleb.id,
14509 cleb.price_unit
14510 from okc_k_lines_b cleb,
14511 okc_line_styles_b lseb
14512 where cleb.cle_id = p_cle_id
14513 and cleb.dnz_chr_id = p_chr_id
14514 and cleb.lse_id = lseb.id
14515 and lseb.lty_code = p_lty_code;
14516
14517 l_cleb_rec l_cleb_csr%ROWTYPE;
14518 rec_count NUMBER;
14519
14520 l_clev_price_tbl clev_tbl_type;
14521 lx_clev_price_tbl clev_tbl_type;
14522 l_klev_price_tbl klev_tbl_type;
14523 lx_klev_price_tbl klev_tbl_type;
14524 --akrangan Bug# 5362977 start
14525 l_clev_fa_rec clev_rec_type;
14526 l_klev_fa_rec klev_rec_type;
14527 lx_clev_fa_rec clev_rec_type;
14528 lx_klev_fa_rec klev_rec_type;
14529 l_cimv_model_rec cimv_rec_type;
14530 x_cimv_model_rec cimv_rec_type;
14531
14532 --cursor to check if the contract is undergoing on-line rebook
14533 CURSOR l_chk_rbk_csr(p_chr_id IN NUMBER) is
14534 SELECT '!'
14535 FROM okc_k_headers_b chr,
14536 okl_trx_contracts ktrx
14537 WHERE ktrx.khr_id_new = chr.id
14538 AND ktrx.tsu_code = 'ENTERED'
14539 AND ktrx.rbr_code is NOT NULL
14540 AND ktrx.tcn_type = 'TRBK'
14541 --rkuttiya added for 12.1.1 Multi GAAP
14542 AND representation_type = 'PRIMARY'
14543 --
14544 AND chr.id = p_chr_id
14545 AND chr.orig_system_source_code = 'OKL_REBOOK';
14546
14547 l_rbk_khr VARCHAR2(1);
14548 --akrangan Bug# 5362977 end
14549
14550 BEGIN
14551
14552 x_return_status := Okl_Api.G_RET_STS_SUCCESS;
14553 -- Call start_activity to create savepoint, check compatibility
14554 -- and initialize message list
14555 x_return_status := Okl_Api.START_ACTIVITY(
14556 p_api_name => l_api_name,
14557 p_pkg_name => g_pkg_name,
14558 p_init_msg_list => p_init_msg_list,
14559 l_api_version => l_api_version,
14560 p_api_version => p_api_version,
14561 p_api_type => '_PVT',
14562 x_return_status => x_return_status);
14563 -- Check if activity started successfully
14564 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14565 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14566 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14567 RAISE Okc_Api.G_EXCEPTION_ERROR;
14568 END IF;
14569 -- akrangan Bug# 5362977 start
14570 l_rbk_khr := '?';
14571 OPEN l_chk_rbk_csr (p_chr_id => p_clev_fin_rec.dnz_chr_id);
14572 FETCH l_chk_rbk_csr INTO l_rbk_khr;
14573 CLOSE l_chk_rbk_csr;
14574 -- akrangan Bug# 5176649 end
14575
14576
14577 --1. update modifiable parameters on financial asset line
14578
14579 l_clev_fin_rec.id := p_cle_id;
14580 l_klev_fin_rec.id := p_cle_id;
14581 l_klev_fin_rec.PRESCRIBED_ASSET_YN := p_klev_fin_rec.PRESCRIBED_ASSET_YN;
14582
14583 l_klev_fin_rec.RESIDUAL_GRNTY_AMOUNT := p_klev_fin_rec.RESIDUAL_GRNTY_AMOUNT;
14584
14585 l_klev_fin_rec.RESIDUAL_CODE := p_klev_fin_rec.RESIDUAL_CODE;
14586
14587 If nvl(p_klev_fin_rec.RESIDUAL_VALUE,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM and
14588 nvl(p_klev_fin_rec.RESIDUAL_PERCENTAGE,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
14589 l_klev_fin_rec.RESIDUAL_VALUE := p_klev_fin_rec.RESIDUAL_VALUE;
14590 l_klev_fin_rec.RESIDUAL_PERCENTAGE := p_klev_fin_rec.RESIDUAL_PERCENTAGE;
14591 End If;
14592
14593 If nvl(p_klev_fin_rec.RESIDUAL_PERCENTAGE,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM and
14594 nvl(p_klev_fin_rec.RESIDUAL_VALUE,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM then
14595 l_klev_fin_rec.RESIDUAL_PERCENTAGE := p_klev_fin_rec.RESIDUAL_PERCENTAGE;
14596 l_klev_fin_rec.RESIDUAL_VALUE := NULL;
14597 End If;
14598
14599 If nvl(p_klev_fin_rec.RESIDUAL_PERCENTAGE,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM and
14600 nvl(p_klev_fin_rec.RESIDUAL_VALUE,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
14601 l_klev_fin_rec.RESIDUAL_VALUE := p_klev_fin_rec.RESIDUAL_VALUE;
14602 l_klev_fin_rec.RESIDUAL_PERCENTAGE := NULL;
14603 End If;
14604
14605 --BUG# : NBV - update price unit on fixed asset and model lines
14606 rec_count := 0;
14607 open l_cleb_csr(p_cle_id => p_cle_id,
14608 p_chr_id => p_clev_fin_rec.dnz_chr_id,
14609 p_lty_code => 'FIXED_ASSET');
14610 fetch l_cleb_csr into l_cleb_rec;
14611 If l_cleb_csr%NOTFOUND then
14612 Null;
14613 Else
14614 rec_count := rec_count+1;
14615 l_clev_price_tbl(rec_count).id := l_cleb_rec.id;
14616 l_klev_price_tbl(rec_count).id := l_cleb_rec.id;
14617 l_clev_price_tbl(rec_count).price_unit := p_talv_fa_rec.original_cost;
14618 End If;
14619 close l_cleb_csr;
14620
14621 open l_cleb_csr(p_cle_id => p_cle_id,
14622 p_chr_id => p_clev_fin_rec.dnz_chr_id,
14623 p_lty_code => 'ITEM');
14624 fetch l_cleb_csr into l_cleb_rec;
14625 If l_cleb_csr%NOTFOUND then
14626 Null;
14627 Else
14628 rec_count := rec_count+1;
14629 l_clev_price_tbl(rec_count).id := l_cleb_rec.id;
14630 l_klev_price_tbl(rec_count).id := l_cleb_rec.id;
14631 l_clev_price_tbl(rec_count).price_unit := p_talv_fa_rec.original_cost;
14632 End If;
14633 close l_cleb_csr;
14634
14635 If l_clev_price_tbl.COUNT > 0 then
14636
14637 OKL_CONTRACT_PUB.update_contract_line(
14638 p_api_version => p_api_version,
14639 p_init_msg_list => p_init_msg_list,
14640 x_return_status => x_return_status,
14641 x_msg_count => x_msg_count,
14642 x_msg_data => x_msg_data,
14643 p_clev_tbl => l_clev_price_tbl,
14644 p_klev_tbl => l_klev_price_tbl,
14645 x_clev_tbl => lx_clev_price_tbl,
14646 x_klev_tbl => lx_klev_price_tbl);
14647
14648 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14649 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14650 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14651 RAISE Okc_Api.G_EXCEPTION_ERROR;
14652 END IF;
14653
14654 --Bug# 4631549
14655 If nvl(p_call_mode,okl_api.g_miss_char) = 'RELEASE_ASSET' then
14656 --Calculate oec
14657 OKL_EXECUTE_FORMULA_PUB.EXECUTE(p_api_version => p_api_version,
14658 p_init_msg_list => p_init_msg_list,
14659 x_return_status => x_return_status,
14660 x_msg_count => x_msg_count,
14661 x_msg_data => x_msg_data,
14662 p_formula_name => G_FORMULA_OEC,
14663 p_contract_id => p_clev_fin_rec.dnz_chr_id,
14664 p_line_id => p_cle_id,
14665 x_value => l_klev_fin_rec.oec);
14666 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14667 OKL_API.set_message(p_app_name => G_APP_NAME,
14668 p_msg_name => G_CALC_AMOUNT,
14669 p_token1 => G_AMT_TOKEN,
14670 p_token1_value => 'OEC');
14671 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14672 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14673 OKL_API.set_message(p_app_name => G_APP_NAME,
14674 p_msg_name => G_CALC_AMOUNT,
14675 p_token1 => G_AMT_TOKEN,
14676 p_token1_value => 'OEC');
14677 RAISE OKL_API.G_EXCEPTION_ERROR;
14678 END IF;
14679 End If;
14680 END IF;
14681 --END BUG: NBV
14682
14683
14684
14685 --set adjustments to null
14686 l_klev_fin_rec.CAPITAL_REDUCTION_PERCENT := null;
14687 l_klev_fin_rec.CAPITAL_REDUCTION := null;
14688 l_klev_fin_rec.TRADEIN_AMOUNT := null;
14689
14690 --Bug#5601721 -- start
14691 l_klev_fin_rec.DOWN_PAYMENT_RECEIVER_CODE := null;
14692 l_klev_fin_rec.CAPITALIZE_DOWN_PAYMENT_YN:= null;
14693 l_klev_fin_rec.CAPITALIZED_INTEREST := null;
14694 update_financial_asset_line(
14695 p_api_version => p_api_version,
14696 p_init_msg_list => p_init_msg_list,
14697 x_return_status => x_return_status,
14698 x_msg_count => x_msg_count,
14699 x_msg_data => x_msg_data,
14700 p_clev_rec => l_clev_fin_rec,
14701 p_klev_rec => l_klev_fin_rec,
14702 x_clev_rec => l_rel_ast_clev_fin_rec,
14703 x_klev_rec => l_rel_ast_klev_fin_rec);
14704
14705 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14706 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14707 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14708 RAISE Okc_Api.G_EXCEPTION_ERROR;
14709 END IF;
14710 --Bug#5601721 -- end
14711
14712 --Bug# 4631549
14713 If nvl(p_call_mode,okl_api.g_miss_char) = 'RELEASE_ASSET' then
14714 --calculate capital_amount
14715 OKL_EXECUTE_FORMULA_PUB.EXECUTE(p_api_version => p_api_version,
14716 p_init_msg_list => p_init_msg_list,
14717 x_return_status => x_return_status,
14718 x_msg_count => x_msg_count,
14719 x_msg_data => x_msg_data,
14720 p_formula_name => G_FORMULA_CAP,
14721 p_contract_id => p_clev_fin_rec.dnz_chr_id,
14722 p_line_id => p_cle_id,
14723 x_value => l_klev_fin_rec.capital_amount);
14724 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14725 OKL_API.set_message(p_app_name => G_APP_NAME,
14726 p_msg_name => G_CALC_AMOUNT,
14727 p_token1 => G_AMT_TOKEN,
14728 p_token1_value => 'Capital Amount');
14729 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14730 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14731 OKL_API.set_message(p_app_name => G_APP_NAME,
14732 p_msg_name => G_CALC_AMOUNT,
14733 p_token1 => G_AMT_TOKEN,
14734 p_token1_value => 'Capital Amount');
14735 RAISE OKL_API.G_EXCEPTION_ERROR;
14736 END IF;
14737 End If;
14738
14739 -- akrangan bug 5362977 start
14740 l_clev_fin_rec.item_description := p_talv_fa_rec.description;
14741 -- akrangan bug 5362977 end
14742 update_financial_asset_line(
14743 p_api_version => p_api_version,
14744 p_init_msg_list => p_init_msg_list,
14745 x_return_status => x_return_status,
14746 x_msg_count => x_msg_count,
14747 x_msg_data => x_msg_data,
14748 p_clev_rec => l_clev_fin_rec,
14749 p_klev_rec => l_klev_fin_rec,
14750 x_clev_rec => l_rel_ast_clev_fin_rec,
14751 x_klev_rec => l_rel_ast_klev_fin_rec);
14752
14753 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14754 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14755 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14756 RAISE Okc_Api.G_EXCEPTION_ERROR;
14757 END IF;
14758 -- akrangan Bug# 5362977 start
14759 IF l_rbk_khr = '!' THEN
14760 l_clev_fa_rec.id := p_clev_fa_rec.id;
14761 l_klev_fa_rec.id := p_clev_fa_rec.id;
14762
14763 l_clev_fa_rec.item_description := p_talv_fa_rec.description;
14764
14765 l_klev_fa_rec.Year_Built := p_talv_fa_rec.year_manufactured;
14766 OKL_CONTRACT_PUB.update_contract_line(p_api_version => p_api_version,
14767 p_init_msg_list => p_init_msg_list,
14768 x_return_status => x_return_status,
14769 x_msg_count => x_msg_count,
14770 x_msg_data => x_msg_data,
14771 p_clev_rec => l_clev_fa_rec,
14772 p_klev_rec => l_klev_fa_rec,
14773 x_clev_rec => lx_clev_fa_rec,
14774 x_klev_rec => lx_klev_fa_rec);
14775
14776 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14777 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14778 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14779 RAISE Okc_Api.G_EXCEPTION_ERROR;
14780 END IF;
14781
14782 x_return_status := get_rec_cimv(p_clev_model_rec.id,
14783 p_clev_fin_rec.dnz_chr_id,
14784 l_cimv_model_rec);
14785 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14786 OKL_API.set_message(p_app_name => G_APP_NAME,
14787 p_msg_name => G_FETCHING_INFO,
14788 p_token1 => G_REC_NAME_TOKEN,
14789 p_token1_value => 'OKC_K_ITEMS_V Record');
14790 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14791 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14792 OKL_API.set_message(p_app_name => G_APP_NAME,
14793 p_msg_name => G_FETCHING_INFO,
14794 p_token1 => G_REC_NAME_TOKEN,
14795 p_token1_value => 'OKC_K_ITEMS_V Record');
14796 RAISE OKL_API.G_EXCEPTION_ERROR;
14797 END IF;
14798
14799 l_cimv_model_rec.object1_id1 := p_cimv_model_rec.object1_id1;
14800 l_cimv_model_rec.object1_id2 := p_cimv_model_rec.object1_id2;
14801
14802 OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version => p_api_version,
14803 p_init_msg_list => p_init_msg_list,
14804 x_return_status => x_return_status,
14805 x_msg_count => x_msg_count,
14806 x_msg_data => x_msg_data,
14807 p_cimv_rec => l_cimv_model_rec,
14808 x_cimv_rec => x_cimv_model_rec);
14809
14810 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14811 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14812 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14813 RAISE Okc_Api.G_EXCEPTION_ERROR;
14814 END IF;
14815
14816 END IF;
14817 --akrangan Bug# 5362977 end
14818
14819 --2. update modifiable parameters on FA transaction line
14820 --get fixed asset details
14821 open l_fa_csr(p_fin_cle_id => p_cle_id,
14822 p_chr_id => p_clev_fin_rec.dnz_chr_id);
14823 fetch l_fa_csr into l_fa_rec;
14824 If l_fa_csr%NOTFOUND then
14825 --raise error:invalid line information
14826 OKL_API.set_message(p_app_name => G_APP_NAME,
14827 p_msg_name => 'OKL_LLA_LINE_RECORD');
14828 RAISE Okc_Api.G_EXCEPTION_ERROR;
14829 End If;
14830 close l_fa_csr;
14831
14832 l_talv_fa_rec.id := l_fa_rec.id;
14833 l_talv_fa_rec.DEPRN_METHOD := p_talv_fa_rec.DEPRN_METHOD;
14834 l_talv_fa_rec.LIFE_IN_MONTHS := p_talv_fa_rec.LIFE_IN_MONTHS;
14835 l_talv_fa_rec.DEPRN_RATE := p_talv_fa_rec.DEPRN_RATE;
14836 l_talv_fa_rec.FA_LOCATION_ID := p_talv_fa_rec.FA_LOCATION_ID;
14837 l_talv_fa_rec.SALVAGE_VALUE := p_talv_fa_rec.SALVAGE_VALUE;
14838 l_talv_fa_rec.PERCENT_SALVAGE_VALUE := p_talv_fa_rec.PERCENT_SALVAGE_VALUE;
14839 -- akrangan Bug# 5362977 start
14840 IF l_rbk_khr = '!' THEN
14841 l_talv_fa_rec.year_manufactured := p_talv_fa_rec.year_manufactured;
14842 l_talv_fa_rec.manufacturer_name := p_talv_fa_rec.manufacturer_name;
14843 l_talv_fa_rec.model_number := p_talv_fa_rec.model_number;
14844 l_talv_fa_rec.description := p_talv_fa_rec.description;
14845 END IF;
14846 -- akrangan Bug# 5362977 end
14847 Update_asset_lines(
14848 p_api_version => p_api_version,
14849 p_init_msg_list => p_init_msg_list,
14850 x_return_status => x_return_status,
14851 x_msg_count => x_msg_count,
14852 x_msg_data => x_msg_data,
14853 p_talv_rec => l_talv_fa_rec,
14854 x_talv_rec => l_rel_ast_talv_rec);
14855
14856 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14857 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14858 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14859 RAISE Okc_Api.G_EXCEPTION_ERROR;
14860 END IF;
14861
14862 --3. update modifiable parameters on IB transaction line
14863 i := 0;
14864 open l_ib_csr(p_fin_cle_id => p_cle_id,
14865 p_chr_id => p_clev_fin_rec.dnz_chr_id);
14866 Loop
14867 fetch l_ib_csr into l_ib_rec;
14868 Exit when l_ib_csr%NOTFOUND;
14869 i := i+1;
14870 l_itiv_ib_tbl(i).id := l_ib_rec.id;
14871 l_itiv_ib_tbl(i).SERIAL_NUMBER := l_ib_rec.SERIAL_NUMBER;
14872 l_itiv_ib_tbl(i).OBJECT_ID1_NEW := l_ib_rec.OBJECT_ID1_NEW;
14873 l_itiv_ib_tbl(i).OBJECT_ID2_NEW := l_ib_rec.OBJECT_ID2_NEW;
14874 End Loop;
14875 Close l_ib_csr;
14876
14877 If l_itiv_ib_tbl.COUNT > 0 and p_itiv_ib_tbl.COUNT > 0 Then
14878 For i in l_itiv_ib_tbl.FIRST..l_itiv_ib_tbl.LAST
14879 Loop
14880 --currently only one install site is possible for one serial number
14881 --therefor the if clause commented below is not required
14882 For j in p_itiv_ib_tbl.FIRST..p_itiv_ib_tbl.LAST
14883 Loop
14884 --If (l_itiv_ib_tbl(i).SERIAL_NUMBER = p_itiv_ib_tbl(j).SERIAL_NUMBER) OR
14885 --(nvl(l_itiv_ib_tbl(i).SERIAL_NUMBER,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR
14886 --and nvl(p_itiv_ib_tbl(j).SERIAL_NUMBER,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR) then
14887 l_itiv_ib_tbl(i).OBJECT_ID1_OLD := l_itiv_ib_tbl(i).OBJECT_ID1_NEW;
14888 l_itiv_ib_tbl(i).OBJECT_ID2_OLD := l_itiv_ib_tbl(i).OBJECT_ID2_NEW;
14889 l_itiv_ib_tbl(i).OBJECT_ID1_NEW := p_itiv_ib_tbl(j).OBJECT_ID1_NEW;
14890 l_itiv_ib_tbl(i).OBJECT_ID2_NEW := p_itiv_ib_tbl(j).OBJECT_ID2_NEW;
14891 --akrangan Bug# 5362977 start
14892 IF l_rbk_khr = '!' THEN
14893 l_itiv_ib_tbl(i).INVENTORY_ITEM_ID := p_cimv_model_rec.object1_id1;
14894 l_itiv_ib_tbl(i).INVENTORY_ORG_ID := p_cimv_model_rec.object1_id2;
14895 END IF;
14896 --akrangan Bug# 5362977 end
14897
14898 --End If;
14899 End Loop;
14900 End Loop;
14901 OKL_TXL_ITM_INSTS_PUB.update_txl_itm_insts(p_api_version => p_api_version,
14902 p_init_msg_list => p_init_msg_list,
14903 x_return_status => x_return_status,
14904 x_msg_count => x_msg_count,
14905 x_msg_data => x_msg_data,
14906 p_iipv_tbl => l_itiv_ib_tbl,
14907 x_iipv_tbl => l_rel_ast_itiv_ib_tbl);
14908
14909 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14910 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14911 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14912 RAISE Okc_Api.G_EXCEPTION_ERROR;
14913 END IF;
14914 End If;
14915
14916 --------------------------------------------------
14917 --update residual value as per standard
14918 -------------------------------------------------
14919 Resolve_Residual_Value(
14920 p_api_version => p_api_version,
14921 p_init_msg_list => p_init_msg_list,
14922 x_return_status => x_return_status,
14923 x_msg_count => x_msg_count,
14924 x_msg_data => x_msg_data,
14925 p_asset_number => l_fa_rec.asset_number,
14926 p_clev_fin_rec => l_rel_ast_clev_fin_rec,
14927 p_klev_fin_rec => l_rel_ast_klev_fin_rec,
14928 --Bug# 4631549
14929 p_call_mode => p_call_mode,
14930 x_clev_fin_rec => x_clev_fin_rec,
14931 x_klev_fin_rec => x_klev_fin_rec);
14932
14933 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14934 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14935 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14936 RAISE Okc_Api.G_EXCEPTION_ERROR;
14937 END IF;
14938
14939 -------------------------------------------
14940 --Get all the lines
14941 -------------------------------------------
14942 i := 1;
14943 Open l_lines_csr (p_from_cle_id => x_clev_fin_rec.id);
14944 loop
14945 Fetch l_lines_csr into l_lines_rec;
14946 Exit when l_lines_csr%NOTFOUND;
14947 x_return_status := get_rec_clev(l_lines_rec.id,
14948 lx_clev_rec);
14949 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14950 OKL_API.set_message(p_app_name => G_APP_NAME,
14951 p_msg_name => G_FETCHING_INFO,
14952 p_token1 => G_REC_NAME_TOKEN,
14953 p_token1_value => 'OKC_K_LINES_V Record');
14954 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14955 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14956 OKL_API.set_message(p_app_name => G_APP_NAME,
14957 p_msg_name => G_FETCHING_INFO,
14958 p_token1 => G_REC_NAME_TOKEN,
14959 p_token1_value => 'OKC_K_LINES_V Record');
14960 RAISE Okc_Api.G_EXCEPTION_ERROR;
14961 END IF;
14962 x_return_status := get_rec_klev(l_lines_rec.id,
14963 lx_klev_rec);
14964 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14965 OKL_API.set_message(p_app_name => G_APP_NAME,
14966 p_msg_name => G_FETCHING_INFO,
14967 p_token1 => G_REC_NAME_TOKEN,
14968 p_token1_value => 'OKL_K_LINES_V Record');
14969 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14970 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14971 OKL_API.set_message(p_app_name => G_APP_NAME,
14972 p_msg_name => G_FETCHING_INFO,
14973 p_token1 => G_REC_NAME_TOKEN,
14974 p_token1_value => 'OKL_K_LINES_V Record');
14975 RAISE Okc_Api.G_EXCEPTION_ERROR;
14976 END IF;
14977
14978 Open l_lty_csr(p_lse_id => l_lines_rec.lse_id);
14979 Fetch l_lty_csr into l_lty_code;
14980 Close l_lty_csr;
14981
14982 If l_lty_code = 'ITEM' then
14983 x_clev_model_rec := lx_clev_rec;
14984 x_klev_model_rec := lx_klev_rec;
14985 ElsIf l_lty_code = 'FIXED_ASSET' then
14986 x_clev_fa_rec := lx_clev_rec;
14987 x_klev_fa_rec := lx_klev_rec;
14988 ElsIf l_lty_code = 'INST_ITEM' then
14989 x_clev_ib_tbl(i) := lx_clev_rec;
14990 x_klev_ib_tbl(i) := lx_klev_rec;
14991 i := i+1;
14992 End If;
14993 End Loop;
14994 Close l_lines_csr;
14995
14996
14997
14998 OKL_API.END_ACTIVITY (x_msg_count,
14999 x_msg_data );
15000 EXCEPTION
15001 WHEN OKL_API.G_EXCEPTION_ERROR THEN
15002 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
15003 l_api_name,
15004 G_PKG_NAME,
15005 'OKL_API.G_RET_STS_ERROR',
15006 x_msg_count,
15007 x_msg_data,
15008 '_PVT');
15009 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
15010 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
15011 l_api_name,
15012 G_PKG_NAME,
15013 'OKL_API.G_RET_STS_UNEXP_ERROR',
15014 x_msg_count,
15015 x_msg_data,
15016 '_PVT');
15017 WHEN OTHERS THEN
15018 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
15019 l_api_name,
15020 G_PKG_NAME,
15021 'OTHERS',
15022 x_msg_count,
15023 x_msg_data,
15024 '_PVT');
15025 END Modify_Release_asset_Line;
15026
15027 -----------------------------------------------------------------------------------------------
15028 --------------------- Main Process for All Lines Line Creation---------------------------------
15029 -----------------------------------------------------------------------------------------------
15030 PROCEDURE Create_all_line(
15031 p_api_version IN NUMBER,
15032 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
15033 x_return_status OUT NOCOPY VARCHAR2,
15034 x_msg_count OUT NOCOPY NUMBER,
15035 x_msg_data OUT NOCOPY VARCHAR2,
15036 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
15037 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
15038 p_clev_fin_rec IN clev_rec_type,
15039 p_klev_fin_rec IN klev_rec_type,
15040 p_cimv_model_rec IN cimv_rec_type,
15041 p_clev_fa_rec IN clev_rec_type,
15042 p_cimv_fa_rec IN cimv_rec_type,
15043 p_talv_fa_rec IN talv_rec_type,
15044 p_itiv_ib_tbl IN itiv_tbl_type,
15045 x_clev_fin_rec OUT NOCOPY clev_rec_type,
15046 x_clev_model_rec OUT NOCOPY clev_rec_type,
15047 x_clev_fa_rec OUT NOCOPY clev_rec_type,
15048 x_clev_ib_rec OUT NOCOPY clev_rec_type) IS
15049 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_ALL_LINES';
15050 l_asset_number OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE;
15051 m_clev_fin_rec clev_rec_type;
15052 m_klev_fin_rec klev_rec_type;
15053 l_clev_fin_rec clev_rec_type;
15054 l_klev_fin_rec klev_rec_type;
15055 l_clev_fin_rec_out clev_rec_type;
15056 l_klev_fin_rec_out klev_rec_type;
15057 l_clev_model_rec clev_rec_type;
15058 l_klev_model_rec klev_rec_type;
15059 l_cimv_model_rec cimv_rec_type;
15060 l_clev_model_rec_out clev_rec_type;
15061 l_klev_model_rec_out klev_rec_type;
15062 l_cimv_model_rec_out cimv_rec_type;
15063 l_clev_fa_rec clev_rec_type;
15064 l_klev_fa_rec klev_rec_type;
15065 l_cimv_fa_rec cimv_rec_type;
15066 l_trxv_fa_rec trxv_rec_type;
15067 l_talv_fa_rec talv_rec_type;
15068 l_clev_fa_rec_out clev_rec_type;
15069 l_klev_fa_rec_out klev_rec_type;
15070 l_cimv_fa_rec_out cimv_rec_type;
15071 l_trxv_fa_rec_out trxv_rec_type;
15072 l_talv_fa_rec_out talv_rec_type;
15073 l_clev_inst_rec clev_rec_type;
15074 l_klev_inst_rec klev_rec_type;
15075 l_itiv_inst_tbl itiv_tbl_type;
15076 l_clev_inst_rec_out clev_rec_type;
15077 l_klev_inst_rec_out klev_rec_type;
15078 l_itiv_inst_tbl_out itiv_tbl_type;
15079 l_clev_ib_rec clev_rec_type;
15080 l_klev_ib_rec klev_rec_type;
15081 l_cimv_ib_rec cimv_rec_type;
15082 l_trxv_ib_rec trxv_rec_type;
15083 l_itiv_ib_tbl itiv_tbl_type;
15084 r_itiv_ib_tbl itiv_tbl_type;
15085 l_clev_ib_rec_out clev_rec_type;
15086 l_klev_ib_rec_out klev_rec_type;
15087 l_cimv_ib_rec_out cimv_rec_type;
15088 l_trxv_ib_rec_out trxv_rec_type;
15089 l_itiv_ib_tbl_out itiv_tbl_type;
15090 ln_klev_fin_oec OKL_K_LINES_V.OEC%TYPE := 0;
15091 ln_klev_fin_res OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
15092 ln_klev_fin_cap OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
15093 ln_clev_model_price_unit OKC_K_LINES_V.PRICE_UNIT%TYPE := 0;
15094 ln_cimv_model_no_items OKC_K_ITEMS_V.NUMBER_OF_ITEMS%TYPE := 0;
15095 lv_object_id1_new OKL_TXL_ITM_INSTS_V.OBJECT_ID1_NEW%TYPE;
15096 lv_scs_code OKC_K_HEADERS_V.SCS_CODE%TYPE := null;
15097 ln_dummy NUMBER := 0;
15098 ln_dummy1 NUMBER := 0;
15099 i NUMBER := 0;
15100 j NUMBER := 0;
15101 k NUMBER := 0;
15102 m NUMBER := 0;
15103 n NUMBER := 0;
15104 p NUMBER := 0;
15105
15106 -- added by rravikir (Estimated property tax)
15107 ln_chr_id OKC_K_HEADERS_B.ID%TYPE;
15108 ln_cle_id OKL_K_LINES_V.ID%TYPE;
15109 -- end
15110 TYPE instance_id_tbl IS TABLE OF NUMBER
15111 INDEX BY BINARY_INTEGER;
15112 lt_instance_id_tbl instance_id_tbl;
15113 CURSOR c_get_scs_code(p_dnz_chr_id OKC_K_HEADERS_B.ID%TYPE)
15114 IS
15115 SELECT scs_code,
15116 --Bug# 4419339
15117 orig_system_source_code
15118 FROM OKC_K_HEADERS_B
15119 WHERE id = p_dnz_chr_id;
15120
15121
15122 --Bug# 4419339
15123 l_orig_system_source_code okc_k_headers_b.orig_system_source_code%TYPE;
15124
15125 CURSOR c_ib_sno_asset(p_asset_number OKL_TXL_ASSETS_B.ASSET_NUMBER%TYPE)
15126 IS
15127 SELECT CII.SERIAL_NUMBER IB_SERIAL_NUMBER,
15128 CII.INSTANCE_ID
15129 FROM
15130 OKC_K_HEADERS_V OKHV, OKC_K_LINES_V KLE_FA, OKC_LINE_STYLES_B LSE_FA, OKC_K_LINES_B KLE_IL,
15131 OKC_LINE_STYLES_B LSE_IL, OKC_K_LINES_B KLE_IB, OKC_LINE_STYLES_B LSE_IB, OKC_K_ITEMS ITE,
15132 CSI_ITEM_INSTANCES CII
15133 WHERE
15134 kle_fa.chr_id = okhv.id AND lse_fa.id = kle_fa.lse_id AND lse_fa.lty_code = 'FREE_FORM1'
15135 AND kle_il.cle_id = kle_fa.id AND lse_il.id = kle_il.lse_id AND lse_il.lty_code = 'FREE_FORM2'
15136 AND kle_ib.cle_id = kle_il.id AND lse_ib.id = kle_ib.lse_id AND lse_ib.lty_code = 'INST_ITEM'
15137 AND ite.cle_id = kle_ib.id AND ite.jtot_object1_code = 'OKX_IB_ITEM'
15138 AND cii.instance_id = ite.object1_id1 AND kle_fa.name = p_asset_number;
15139
15140 l_top_line_id NUMBER;
15141 l_oec NUMBER;
15142 l_residual_value NUMBER;
15143
15144 --Bug# 3533936:
15145 l_rel_ast_fin_cle_id NUMBER;
15146
15147 --cursor to check if contract has re-lease assets
15148 CURSOR l_chk_rel_ast_csr (p_chr_id IN Number) IS
15149 SELECT 'Y'
15150 FROM okc_k_headers_b CHR
15151 WHERE nvl(chr.orig_system_source_code,'XXXX') <> 'OKL_RELEASE'
15152 and chr.ID = p_chr_id
15153 AND exists (SELECT '1'
15154 FROM OKC_RULES_B rul
15155 WHERE rul.dnz_chr_id = chr.id
15156 AND rul.rule_information_category = 'LARLES'
15157 AND nvl(rule_information1,'N') = 'Y');
15158
15159 l_chk_rel_ast Varchar2(1) default 'N';
15160
15161 l_rel_ast_clev_fin_rec clev_rec_type;
15162 l_rel_ast_klev_fin_rec klev_rec_type;
15163 l_rel_ast_clev_model_rec clev_rec_type;
15164 l_rel_ast_klev_model_rec klev_rec_type;
15165 l_rel_ast_clev_fa_rec clev_rec_type;
15166 l_rel_ast_klev_fa_rec klev_rec_type;
15167 l_rel_ast_clev_ib_tbl clev_tbl_type;
15168 l_rel_ast_klev_ib_tbl klev_tbl_type;
15169 --End Bug# 3533936:
15170
15171 --| start 29-Oct-2008 cklee Bug: 7492324 move code logic to |
15172 --| OKL_TXL_ASSETS_PVT.CREATE_TXL_ASSET_DEF |
15173 --Bug# 4186455 : Do not default SV for LOANS
15174 --cursor to check deal type of the contract
15175 /* Cursor l_deal_type_csr (p_chr_id in number) is
15176 select khr.deal_type,
15177 khr.pdt_id,
15178 pdt.reporting_pdt_id
15179 from okl_products pdt,
15180 okl_k_headers khr
15181 where pdt.id = khr.pdt_id
15182 and khr.id = p_chr_id;
15183
15184 l_deal_type_rec l_deal_type_csr%ROWTYPE;
15185
15186 --dkagrawa changed cursor to use view OKL_PROD_QLTY_VAL_UV than okl_product_parameters_v
15187 --cursor to get deal type corresponding to a product
15188 Cursor l_pdt_deal_csr (p_pdt_id in number) is
15189 SELECT ppv.quality_val deal_type
15190 FROM okl_prod_qlty_val_uv ppv
15191 WHERE ppv.quality_name IN ('LEASE','INVESTOR')
15192 AND ppv.pdt_id = p_pdt_id;
15193
15194 l_pdt_deal_rec l_pdt_deal_csr%ROWTYPE;*/
15195 --End Bug# 4186455 : Do not default SV for LOANS
15196 --| end 29-Oct-2008 cklee Bug: 7492324 move code logic to |
15197 --| OKL_TXL_ASSETS_PVT.CREATE_TXL_ASSET_DEF |
15198
15199
15200 BEGIN
15201
15202 x_return_status := OKL_API.G_RET_STS_SUCCESS;
15203 -- Call start_activity to create savepoint, check compatibility
15204 -- and initialize message list
15205 x_return_status := OKL_API.START_ACTIVITY (
15206 l_api_name
15207 ,p_init_msg_list
15208 ,'_PVT'
15209 ,x_return_status);
15210 -- Check if activity started successfully
15211 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15212 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15213 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15214 RAISE OKL_API.G_EXCEPTION_ERROR;
15215 END IF;
15216
15217
15218 l_clev_fin_rec := p_clev_fin_rec;
15219 l_klev_fin_rec := p_klev_fin_rec;
15220 l_cimv_model_rec := p_cimv_model_rec;
15221 l_clev_fa_rec := p_clev_fa_rec;
15222 l_cimv_fa_rec := p_cimv_fa_rec;
15223 l_talv_fa_rec := p_talv_fa_rec;
15224 l_itiv_inst_tbl := p_itiv_ib_tbl;
15225 l_itiv_ib_tbl := p_itiv_ib_tbl;
15226
15227 IF (l_clev_fin_rec.dnz_chr_id IS NULL OR
15228 l_clev_fin_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
15229 OKL_API.set_message(p_app_name => G_APP_NAME,
15230 p_msg_name => G_REQUIRED_VALUE,
15231 p_token1 => G_COL_NAME_TOKEN,
15232 p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID for All Lines');
15233 RAISE OKL_API.G_EXCEPTION_ERROR;
15234 END IF;
15235 --start:| 14-May-2008 cklee Bug 6405415 |
15236 IF l_klev_fin_rec.residual_percentage <> OKL_API.G_MISS_NUM and
15237 l_klev_fin_rec.residual_percentage IS NOT NULL THEN
15238 IF NOT l_klev_fin_rec.residual_percentage between 0 and 100 THEN
15239 OKL_API.set_message(p_app_name => G_APP_NAME,
15240 p_msg_name => 'OKL_VALID_RESIDUAL_PERCENT');
15241 RAISE OKL_API.G_EXCEPTION_ERROR;
15242 END IF;
15243 END IF;
15244 --end:| 14-May-2008 cklee Bug 6405415 |
15245
15246 OPEN c_get_scs_code(p_dnz_chr_id => l_clev_fin_rec.dnz_chr_id);
15247 --Bug#4418339
15248 FETCH c_get_scs_code INTO lv_scs_code, l_orig_system_source_code;
15249 IF c_get_scs_code%NOTFOUND THEN
15250 OKL_API.set_message(p_app_name => G_APP_NAME,
15251 p_msg_name => G_NO_MATCHING_RECORD,
15252 p_token1 => G_COL_NAME_TOKEN,
15253 p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID');
15254 RAISE G_EXCEPTION_HALT_VALIDATION;
15255 END IF;
15256 CLOSE c_get_scs_code;
15257
15258 ------------------------------------------------------
15259 --Bug# 3533936 : Release Asset Case - all line details
15260 -- should default from exising asset
15261 ------------------------------------------------------
15262 l_chk_rel_ast := 'N';
15263 Open l_chk_rel_ast_csr(p_chr_id => l_clev_fin_rec.dnz_chr_id);
15264 Fetch l_chk_rel_ast_csr into l_chk_rel_ast;
15265 If l_chk_rel_ast_csr%NOTFOUND then
15266 null;
15267 end if;
15268 close l_chk_rel_ast_csr;
15269
15270
15271 If p_new_yn = 'N' And l_chk_rel_ast = 'Y' Then
15272
15273 Create_release_asset_line
15274 (p_api_version => p_api_version,
15275 p_init_msg_list => p_init_msg_list,
15276 x_return_status => x_return_status,
15277 x_msg_count => x_msg_count,
15278 x_msg_data => x_msg_data,
15279 p_asset_id => l_cimv_fa_rec.object1_id1,
15280 p_chr_id => l_clev_fin_rec.dnz_chr_id,
15281 x_cle_id => l_rel_ast_fin_cle_id);
15282
15283 --ramurt Bug#4945190
15284 ln_chr_id := l_clev_fin_rec.dnz_chr_id;
15285 ln_cle_id := l_rel_ast_fin_cle_id;
15286
15287 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15288 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15289 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15290 RAISE OKL_API.G_EXCEPTION_ERROR;
15291 END IF;
15292
15293 Modify_Release_Asset_Line(
15294 p_api_version => p_api_version,
15295 p_init_msg_list => p_init_msg_list,
15296 x_return_status => x_return_status,
15297 x_msg_count => x_msg_count,
15298 x_msg_data => x_msg_data,
15299 p_clev_fin_rec => l_clev_fin_rec,
15300 p_klev_fin_rec => l_klev_fin_rec,
15301 --akrangan Bug# 5362977 start
15302 p_clev_model_rec => l_clev_model_rec,
15303 --akrangan Bug# 5362977 end
15304 p_cimv_model_rec => l_cimv_model_rec,
15305 p_clev_fa_rec => l_clev_fa_rec,
15306 p_cimv_fa_rec => l_cimv_fa_rec,
15307 p_talv_fa_rec => l_talv_fa_rec,
15308 p_itiv_ib_tbl => l_itiv_ib_tbl,
15309 p_cle_id => l_rel_ast_fin_cle_id,
15310 --Bug# 4631549
15311 p_call_mode => 'RELEASE_ASSET',
15312 x_clev_fin_rec => l_rel_ast_clev_fin_rec,
15313 x_klev_fin_rec => l_rel_ast_klev_fin_rec,
15314 x_clev_model_rec => l_rel_ast_clev_model_rec,
15315 x_klev_model_rec => l_rel_ast_klev_model_rec,
15316 x_clev_fa_rec => l_rel_ast_clev_fa_rec,
15317 x_klev_fa_rec => l_rel_ast_klev_fa_rec,
15318 x_clev_ib_tbl => l_rel_ast_clev_ib_tbl,
15319 x_klev_ib_tbl => l_rel_ast_klev_ib_tbl);
15320
15321 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15322 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15323 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15324 RAISE OKL_API.G_EXCEPTION_ERROR;
15325 END IF;
15326
15327 x_clev_fin_rec := l_rel_ast_clev_fin_rec;
15328 x_clev_model_rec := l_rel_ast_clev_model_rec;
15329 x_clev_fa_rec := l_rel_ast_clev_fa_rec;
15330 If l_rel_ast_clev_ib_tbl.COUNT > 0 then
15331 x_clev_ib_rec := l_rel_ast_clev_ib_tbl(1);
15332 End If;
15333 Else
15334 ----------------------------------------------------------
15335 --End Bug# 3533936
15336 ----------------------------------------------------------
15337
15338
15339
15340 -- Code is commneted as per Nagen mail on 01/23/2002 10.11am
15341 -- code is put in place as per Manish on 09/16/2002
15342 IF (p_asset_number IS NULL OR
15343 p_asset_number = OKL_API.G_MISS_CHAR) AND
15344 (lv_scs_code IS NOT NULL OR
15345 lv_scs_code <> OKL_API.G_MISS_CHAR) AND
15346 --Bug#4419339
15347 --(lv_scs_code = 'QUOTE') AND
15348 --Bug# 4721141 : changed AND to OR
15349 (lv_scs_code = 'QUOTE') OR
15350 --Bug# 5098124 : Added 'OKL_QUOTE'
15351 (l_orig_system_source_code = 'OKL_LEASE_APP') OR
15352 (l_orig_system_source_code = 'OKL_QUOTE') THEN
15353 x_return_status := generate_asset_number(x_asset_number => l_asset_number);
15354 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15355 OKL_API.set_message(p_app_name => G_APP_NAME,
15356 p_msg_name => G_GEN_ASSET_NUMBER);
15357 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15358 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15359 OKL_API.set_message(p_app_name => G_APP_NAME,
15360 p_msg_name => G_GEN_ASSET_NUMBER);
15361 RAISE OKL_API.G_EXCEPTION_ERROR;
15362 END IF;
15363 l_talv_fa_rec.asset_number := l_asset_number;
15364 ELSE
15365 --Bug# 4053845:
15366 --l_asset_number := p_asset_number;
15367 l_asset_number := UPPER(p_asset_number);
15368 END IF;
15369
15370 IF l_itiv_ib_tbl.COUNT > 0 THEN
15371 p := l_itiv_ib_tbl.FIRST;
15372 LOOP
15373 -- Check for Required Values
15374 x_return_status := check_required_values(p_item1 => l_cimv_model_rec.object1_id1,
15375 p_item2 => l_cimv_model_rec.object1_id2,
15376 p_ast_no => l_talv_fa_rec.asset_number,
15377 p_ast_desc => l_talv_fa_rec.description,
15378 p_cost => l_talv_fa_rec.original_cost,
15379 p_units => l_talv_fa_rec.current_units,
15380 p_ib_loc1 => l_itiv_ib_tbl(p).object_id1_new,
15381 p_ib_loc2 => l_itiv_ib_tbl(p).object_id2_new,
15382 p_fa_loc => l_talv_fa_rec.fa_location_id,
15383 p_refinance_amount => l_klev_fin_rec.refinance_amount,
15384 p_chr_id => l_clev_fin_rec.dnz_chr_id);
15385 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15386 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
15387 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15388 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
15389 END IF;
15390 EXIT WHEN (p = l_itiv_ib_tbl.LAST);
15391 p := l_itiv_ib_tbl.NEXT(p);
15392 END LOOP;
15393 END IF;
15394 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15395 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15396 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15397 RAISE OKL_API.G_EXCEPTION_ERROR;
15398 END IF;
15399 IF P_new_yn = 'Y' THEN
15400 ln_clev_model_price_unit := abs(l_talv_fa_rec.original_cost);
15401 ln_cimv_model_no_items := l_talv_fa_rec.current_units;
15402 ELSIF p_new_yn = 'N' THEN
15403 IF l_clev_model_rec.price_unit = OKL_API.G_MISS_NUM THEN
15404 l_clev_model_rec.price_unit := null;
15405 END IF;
15406 IF l_cimv_model_rec.number_of_items = OKL_API.G_MISS_NUM THEN
15407 l_cimv_model_rec.number_of_items := null;
15408 END IF;
15409 ln_clev_model_price_unit := abs(l_talv_fa_rec.original_cost);
15410 ln_cimv_model_no_items := l_talv_fa_rec.current_units;
15411 -- we need to modify the code, let it go a temp
15412 -- ln_clev_model_price_unit := nvl(l_clev_model_rec.price_unit,0);
15413 -- ln_cimv_model_no_items := nvl(l_cimv_model_rec.number_of_items,0);
15414 END IF;
15415 --Build the Top Line Record
15416 -- First get the Top line Style id
15417 -- 4414408 Assign the line style id directly
15418 /*
15419 x_return_status := get_lse_id(p_lty_code => G_FIN_LINE_LTY_CODE,
15420 x_lse_id => l_clev_fin_rec.lse_id);
15421 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15422 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15423 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15424 RAISE OKL_API.G_EXCEPTION_ERROR;
15425 END IF;
15426 */
15427 l_clev_fin_rec.lse_id := G_FIN_LINE_LTY_ID;
15428 l_clev_fin_rec.chr_id := l_clev_fin_rec.dnz_chr_id;
15429 l_clev_fin_rec.cle_id := null;
15430 -- l_clev_fin_rec.name := l_asset_number;
15431 --Bug# 4053845
15432 l_clev_fin_rec.name := upper(l_clev_fin_rec.name);
15433 l_clev_fin_rec.item_description := l_talv_fa_rec.description;
15434 l_clev_fin_rec.exception_yn := 'N';
15435 IF (l_clev_fin_rec.display_sequence IS NUll OR
15436 l_clev_fin_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
15437 l_clev_fin_rec.display_sequence := 1;
15438 END IF;
15439 -- To Check We Got the Valid info
15440 IF UPPER(p_new_yn) NOT IN ('Y','N') OR
15441 (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
15442 UPPER(p_new_yn) IS NULL) THEN
15443 OKL_API.set_message(p_app_name => G_APP_NAME,
15444 p_msg_name => G_INVALID_YN,
15445 p_token1 => G_COL_NAME_TOKEN,
15446 p_token1_value => 'p_new_yn');
15447 -- Halt Validation
15448 RAISE OKL_API.G_EXCEPTION_ERROR;
15449 END IF;
15450 -- 4414408 Validate the Asset Number
15451 -- Validate to see if the asset_number given is not null
15452 -- and also Validate asset_number does not exists
15453 -- in OKL_TXL_ASSETS_V
15454 IF UPPER(p_new_yn) = 'Y' THEN
15455 validate_new_asset_number(x_return_status => x_return_status,
15456 p_asset_number => l_asset_number,
15457 p_dnz_chr_id => l_clev_fin_rec.dnz_chr_id);
15458 -- Check if activity started successfully
15459 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15460 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15461 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15462 RAISE OKL_API.G_EXCEPTION_ERROR;
15463 END IF;
15464 ELSE
15465 validate_new_asset_number(x_return_status => x_return_status,
15466 p_asset_number => l_asset_number,
15467 p_dnz_chr_id => l_clev_fin_rec.dnz_chr_id);
15468 -- Check if activity ended successfully
15469 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15470 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15471 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15472 RAISE OKL_API.G_EXCEPTION_ERROR;
15473 END IF;
15474 END IF;
15475
15476 -- Creation of the Financial Asset Line
15477 create_fin_line(p_api_version => p_api_version,
15478 p_init_msg_list => p_init_msg_list,
15479 x_return_status => x_return_status,
15480 x_msg_count => x_msg_count,
15481 x_msg_data => x_msg_data,
15482 P_new_yn => P_new_yn,
15483 p_asset_number => l_asset_number,
15484 p_clev_rec => l_clev_fin_rec,
15485 p_klev_rec => l_klev_fin_rec,
15486 x_clev_rec => x_clev_fin_rec,
15487 x_klev_rec => l_klev_fin_rec_out);
15488 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15489 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15490 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15491 RAISE OKL_API.G_EXCEPTION_ERROR;
15492 END IF;
15493
15494 -- added by rravikir (Estimated property tax)
15495 ln_chr_id := x_clev_fin_rec.dnz_chr_id;
15496 ln_cle_id := x_clev_fin_rec.id;
15497 -- end
15498
15499 -- We have to Populate the Model Line Record
15500 -- First get the Model line Style id
15501 -- 4414408 Assign the line style id directly
15502 /*
15503 x_return_status := get_lse_id(p_lty_code => G_MODEL_LINE_LTY_CODE,
15504 x_lse_id => l_clev_model_rec.lse_id);
15505 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15506 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15507 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15508 RAISE OKL_API.G_EXCEPTION_ERROR;
15509 END IF;
15510 */
15511 IF (l_clev_model_rec.display_sequence IS NUll OR
15512 l_clev_model_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
15513 l_clev_model_rec.display_sequence := x_clev_fin_rec.display_sequence + 1;
15514 END IF;
15515 l_clev_model_rec.lse_id := G_MODEL_LINE_LTY_ID;
15516 l_clev_model_rec.chr_id := null;
15517 l_clev_model_rec.cle_id := x_clev_fin_rec.id;
15518 l_clev_model_rec.exception_yn := 'N';
15519 l_clev_model_rec.price_unit := ln_clev_model_price_unit;
15520 l_clev_model_rec.dnz_chr_id := x_clev_fin_rec.dnz_chr_id;
15521 --Build Model cimv rec
15522 l_cimv_model_rec.exception_yn := 'N';
15523 l_cimv_model_rec.number_of_items := ln_cimv_model_no_items;
15524 -- Creation of the Model Line and Item Record
15525 create_model_line(p_api_version => p_api_version,
15526 p_init_msg_list => p_init_msg_list,
15527 x_return_status => x_return_status,
15528 x_msg_count => x_msg_count,
15529 x_msg_data => x_msg_data,
15530 P_new_yn => P_new_yn,
15531 p_asset_number => l_asset_number,
15532 p_clev_rec => l_clev_model_rec,
15533 p_klev_rec => l_klev_model_rec,
15534 p_cimv_rec => l_cimv_model_rec,
15535 x_clev_rec => x_clev_model_rec,
15536 x_klev_rec => l_klev_model_rec_out,
15537 x_cimv_rec => l_cimv_model_rec_out);
15538 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15539 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15540 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15541 RAISE OKL_API.G_EXCEPTION_ERROR;
15542 END IF;
15543 -- Calculate the OEC to Populate the OKL_K_LINES_V.OEC
15544 oec_calc_upd_fin_rec(p_api_version => p_api_version,
15545 p_init_msg_list => p_init_msg_list,
15546 x_return_status => x_return_status,
15547 x_msg_count => x_msg_count,
15548 x_msg_data => x_msg_data,
15549 P_new_yn => P_new_yn,
15550 p_asset_number => l_asset_number,
15551 -- 4414408
15552 p_top_line_id => x_clev_model_rec.cle_id,
15553 p_dnz_chr_id => x_clev_model_rec.dnz_chr_id,
15554 x_fin_clev_rec => x_clev_fin_rec,
15555 x_fin_klev_rec => l_klev_fin_rec_out,
15556 x_oec => ln_klev_fin_oec,
15557 p_validate_fin_line => OKL_API.G_FALSE);
15558 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15559 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15560 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15561 RAISE OKL_API.G_EXCEPTION_ERROR;
15562 END IF;
15563 -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
15564 cap_amt_calc_upd_fin_rec(p_api_version => p_api_version,
15565 p_init_msg_list => p_init_msg_list,
15566 x_return_status => x_return_status,
15567 x_msg_count => x_msg_count,
15568 x_msg_data => x_msg_data,
15569 P_new_yn => P_new_yn,
15570 p_asset_number => l_asset_number,
15571 -- 4414408
15572 p_top_line_id => x_clev_model_rec.cle_id,
15573 p_dnz_chr_id => x_clev_model_rec.dnz_chr_id,
15574 x_fin_clev_rec => x_clev_fin_rec,
15575 x_fin_klev_rec => l_klev_fin_rec_out,
15576 x_cap_amt => ln_klev_fin_cap,
15577 p_validate_fin_line => OKL_API.G_FALSE);
15578 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15579 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15580 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15581 RAISE OKL_API.G_EXCEPTION_ERROR;
15582 END IF;
15583 -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
15584 -- We need to Back calculate the Residual Percentage if value not given
15585 -- or if given should be in sync with residual value
15586
15587 IF l_klev_fin_rec_out.residual_percentage = OKL_API.G_MISS_NUM THEN
15588 l_klev_fin_rec_out.residual_percentage := null;
15589 END IF;
15590
15591 IF l_klev_fin_rec_out.residual_value = OKL_API.G_MISS_NUM THEN
15592 l_klev_fin_rec_out.residual_value := null;
15593 END IF;
15594
15595 IF (l_klev_fin_rec_out.residual_percentage IS NOT NULL OR
15596 l_klev_fin_rec_out.residual_percentage <> OKL_API.G_MISS_NUM) AND
15597 (l_klev_fin_rec_out.residual_value IS NOT NULL OR
15598 l_klev_fin_rec_out.residual_value <> OKL_API.G_MISS_NUM) THEN
15599
15600 l_top_line_id := x_clev_fin_rec.id;
15601 l_oec := l_klev_fin_rec_out.oec;
15602 l_residual_value := l_klev_fin_rec_out.residual_value;
15603
15604 get_res_per_upd_fin_rec(p_api_version => p_api_version,
15605 p_init_msg_list => p_init_msg_list,
15606 x_return_status => x_return_status,
15607 x_msg_count => x_msg_count,
15608 x_msg_data => x_msg_data,
15609 P_new_yn => P_new_yn,
15610 p_asset_number => l_asset_number,
15611 p_res_value => l_residual_value, --l_klev_fin_rec_out.residual_value
15612 p_oec => l_oec, --l_klev_fin_rec_out.oec
15613 p_top_line_id => l_top_line_id, --x_clev_fin_rec.id,
15614 p_dnz_chr_id => x_clev_model_rec.dnz_chr_id,
15615 x_fin_clev_rec => x_clev_fin_rec,
15616 x_fin_klev_rec => l_klev_fin_rec_out,
15617 p_validate_fin_line => OKL_API.G_FALSE); -- #4414408
15618 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15619 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15620 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15621 RAISE OKL_API.G_EXCEPTION_ERROR;
15622 END IF;
15623 res_value_calc_upd_fin_rec(p_api_version => p_api_version,
15624 p_init_msg_list => p_init_msg_list,
15625 x_return_status => x_return_status,
15626 x_msg_count => x_msg_count,
15627 x_msg_data => x_msg_data,
15628 P_new_yn => P_new_yn,
15629 p_asset_number => l_asset_number,
15630 -- 4414408
15631 p_top_line_id => l_top_line_id,
15632 p_dnz_chr_id => x_clev_model_rec.dnz_chr_id,
15633 x_fin_clev_rec => x_clev_fin_rec,
15634 x_fin_klev_rec => l_klev_fin_rec_out,
15635 x_res_value => ln_klev_fin_res,
15636 p_validate_fin_line => OKL_API.G_FALSE); -- #4414408
15637 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15638 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15639 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15640 RAISE OKL_API.G_EXCEPTION_ERROR;
15641 END IF;
15642 ELSIF (l_klev_fin_rec_out.residual_percentage IS NULL OR
15643 l_klev_fin_rec_out.residual_percentage = OKL_API.G_MISS_NUM) AND
15644 (l_klev_fin_rec_out.residual_value IS NOT NULL OR
15645 l_klev_fin_rec_out.residual_value <> OKL_API.G_MISS_NUM) THEN
15646
15647 l_top_line_id := x_clev_fin_rec.id;
15648 l_oec := l_klev_fin_rec_out.oec;
15649 l_residual_value := l_klev_fin_rec_out.residual_value;
15650
15651 get_res_per_upd_fin_rec(p_api_version => p_api_version,
15652 p_init_msg_list => p_init_msg_list,
15653 x_return_status => x_return_status,
15654 x_msg_count => x_msg_count,
15655 x_msg_data => x_msg_data,
15656 P_new_yn => P_new_yn,
15657 p_asset_number => l_asset_number,
15658 p_res_value => l_residual_value, --l_klev_fin_rec_out.residual_value
15659 p_oec => l_oec, --l_klev_fin_rec_out.oec
15660 p_top_line_id => l_top_line_id, --x_clev_fin_rec.id,
15661 p_dnz_chr_id => x_clev_model_rec.dnz_chr_id,
15662 x_fin_clev_rec => x_clev_fin_rec,
15663 x_fin_klev_rec => l_klev_fin_rec_out,
15664 p_validate_fin_line => OKL_API.G_FALSE); -- #4414408
15665 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15666 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15667 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15668 RAISE OKL_API.G_EXCEPTION_ERROR;
15669 END IF;
15670 ELSIF (l_klev_fin_rec_out.residual_percentage IS NOT NULL OR
15671 l_klev_fin_rec_out.residual_percentage <> OKL_API.G_MISS_NUM) AND
15672 (l_klev_fin_rec_out.residual_value IS NULL OR
15673 l_klev_fin_rec_out.residual_value = OKL_API.G_MISS_NUM) THEN
15674 res_value_calc_upd_fin_rec(p_api_version => p_api_version,
15675 p_init_msg_list => p_init_msg_list,
15676 x_return_status => x_return_status,
15677 x_msg_count => x_msg_count,
15678 x_msg_data => x_msg_data,
15679 P_new_yn => P_new_yn,
15680 p_asset_number => l_asset_number,
15681 -- 4414408
15682 p_top_line_id => x_clev_model_rec.cle_id,
15683 p_dnz_chr_id => x_clev_model_rec.dnz_chr_id,
15684 x_fin_clev_rec => x_clev_fin_rec,
15685 x_fin_klev_rec => l_klev_fin_rec_out,
15686 x_res_value => ln_klev_fin_res,
15687 p_validate_fin_line => OKL_API.G_FALSE); -- #4414408
15688 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15689 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15690 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15691 RAISE OKL_API.G_EXCEPTION_ERROR;
15692 END IF;
15693 END IF;
15694 IF (l_klev_fin_rec_out.oec IS NOT NULL OR
15695 l_klev_fin_rec_out.oec <> OKL_API.G_MISS_NUM) AND
15696 (l_klev_fin_rec_out.residual_value IS NOT NULL OR
15697 l_klev_fin_rec_out.residual_value <> OKL_API.G_MISS_NUM) THEN
15698 IF l_klev_fin_rec_out.residual_value > l_klev_fin_rec_out.oec THEN
15699 OKL_API.set_message(p_app_name => G_APP_NAME,
15700 p_msg_name => G_SALVAGE_VALUE);
15701 RAISE OKL_API.G_EXCEPTION_ERROR;
15702 END IF;
15703 END IF;
15704 -- Required cle Line Information
15705 -- Creation of the Fixed Asset Line Process
15706 -- Getting the Line style Info
15707 -- 4414408 Assign the line style ID directly
15708 /*
15709 x_return_status := get_lse_id(p_lty_code => G_FA_LINE_LTY_CODE,
15710 x_lse_id => l_clev_fa_rec.lse_id);
15711 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15712 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15713 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15714 RAISE OKL_API.G_EXCEPTION_ERROR;
15715 END IF;
15716 */
15717 IF (l_clev_fa_rec.display_sequence IS NUll OR
15718 l_clev_fa_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
15719 l_clev_fa_rec.display_sequence := x_clev_model_rec.display_sequence + 2;
15720 END IF;
15721 l_clev_fa_rec.lse_id := G_FA_LINE_LTY_ID;
15722 l_clev_fa_rec.chr_id := null;
15723 l_clev_fa_rec.cle_id := x_clev_fin_rec.id;
15724 l_clev_fa_rec.dnz_chr_id := x_clev_fin_rec.dnz_chr_id;
15725 l_clev_fa_rec.exception_yn := 'N';
15726 l_clev_fa_rec.price_unit := ln_clev_model_price_unit;
15727 l_clev_fa_rec.item_description := l_talv_fa_rec.description;
15728 --Bug# 4053845
15729 l_clev_fa_rec.name := upper(l_clev_fa_rec.name);
15730 -- A Bug fix Since we populate the year manufactured into OKL_TXL_ASSETS_B only
15731 -- We cannot use the information after the assets have been put into FA
15732 -- So we decided to populate the year Manufactured into OKL_K_LINES.YEAR_BUILT
15733 -- As the Datatype matches for both.
15734 l_klev_fa_rec.Year_Built := l_talv_fa_rec.year_manufactured;
15735 --start NISINHA Bug 6490572
15736 l_klev_fa_rec.model_number := l_talv_fa_rec.model_number;
15737 l_klev_fa_rec.manufacturer_name := l_talv_fa_rec.manufacturer_name;
15738 --end NISINHA Bug 6490572
15739 -- Required Item Information
15740 l_cimv_fa_rec.exception_yn := 'N';
15741 IF p_new_yn = 'Y' THEN
15742 l_cimv_fa_rec.object1_id1 := null;
15743 l_cimv_fa_rec.object1_id2 := null;
15744 ELSIF p_new_yn = 'N' THEN
15745 l_cimv_fa_rec.object1_id2 := '#';
15746 END IF;
15747 l_cimv_fa_rec.number_of_items := ln_cimv_model_no_items;
15748 -- Txl Asset Information
15749 IF (l_talv_fa_rec.asset_number IS NULL OR
15750 l_talv_fa_rec.asset_number = OKL_API.G_MISS_CHAR) THEN
15751 l_talv_fa_rec.asset_number := l_asset_number;
15752 --bug# 4053845
15753 ELSE
15754 l_talv_fa_rec.asset_number := UPPER(l_talv_fa_rec.asset_number);
15755 END IF;
15756 IF P_new_yn= 'Y' THEN
15757 --fix for #3481999
15758 IF ( l_talv_fa_rec.depreciation_cost IS NULL OR
15759 l_talv_fa_rec.depreciation_cost = OKL_API.G_MISS_NUM ) THEN
15760 l_talv_fa_rec.depreciation_cost := l_klev_fin_rec_out.oec;
15761 END IF;
15762
15763 l_talv_fa_rec.original_cost := l_klev_fin_rec_out.oec;
15764 l_talv_fa_rec.tal_type := 'CFA';
15765 --------------
15766 --Bug# 4082635
15767 -------------
15768 --| start 29-Oct-2008 cklee Bug: 7492324 move code logic to |
15769 --| OKL_TXL_ASSETS_PVT.CREATE_TXL_ASSET_DEF |
15770
15771 /*
15772 If nvl(l_talv_fa_rec.salvage_value,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM AND
15773 nvl(l_talv_fa_rec.percent_salvage_value, OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM then
15774 --Bug# 4186455 : Do not populate salvage value for Loan and loan revolving deal types
15775 for l_deal_type_rec in l_deal_type_csr(p_chr_id => l_clev_fin_rec.dnz_chr_id)
15776 loop
15777 If l_deal_type_rec.deal_type = 'LOAN' then
15778 If nvl(l_deal_type_rec.reporting_pdt_id,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
15779 for l_pdt_deal_rec in l_pdt_deal_csr(p_pdt_id => l_deal_type_rec.reporting_pdt_id)
15780 loop
15781 If l_pdt_deal_rec.deal_type = 'LEASEOP' then -- reporting pdt is operating lease
15782 l_talv_fa_rec.salvage_value := nvl(l_klev_fin_rec_out.residual_value,0);
15783
15784 End If;
15785 End loop;
15786 End If;
15787 Elsif l_deal_type_rec.deal_type = 'LOAN-REVOLVING' then
15788 null;
15789 Else -- for LEASEOP, LEASEDF, LEASEST
15790 l_talv_fa_rec.salvage_value := nvl(l_klev_fin_rec_out.residual_value,0);
15791 End If;
15792 End Loop;
15793 End If;*/
15794 --| end 29-Oct-2008 cklee Bug: 7492324 move code logic to |
15795 --| OKL_TXL_ASSETS_PVT.CREATE_TXL_ASSET_DEF |
15796 ------------------
15797 --End Bug# 4082635
15798 ------------------
15799 ELSIF p_new_yn = 'N' THEN
15800 l_talv_fa_rec.depreciation_cost := l_klev_fin_rec_out.oec;
15801 l_talv_fa_rec.original_cost := l_klev_fin_rec_out.oec;
15802 l_talv_fa_rec.tal_type := 'CRL';
15803 END IF;
15804 -- Creation of the Fixed Asset Line and item/Txl Asset Info
15805 Create_fixed_asset_line(p_api_version => p_api_version,
15806 p_init_msg_list => p_init_msg_list,
15807 x_return_status => x_return_status,
15808 x_msg_count => x_msg_count,
15809 x_msg_data => x_msg_data,
15810 P_new_yn => P_new_yn,
15811 p_asset_number => l_asset_number,
15812 p_clev_rec => l_clev_fa_rec,
15813 p_klev_rec => l_klev_fa_rec,
15814 p_cimv_rec => l_cimv_fa_rec,
15815 p_talv_rec => l_talv_fa_rec,
15816 x_clev_rec => x_clev_fa_rec,
15817 x_klev_rec => l_klev_fa_rec_out,
15818 x_cimv_rec => l_cimv_fa_rec_out,
15819 x_trxv_rec => l_trxv_fa_rec_out,
15820 x_talv_rec => l_talv_fa_rec_out);
15821 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15822 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15823 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15824 RAISE OKL_API.G_EXCEPTION_ERROR;
15825 END IF;
15826 IF p_new_yn = 'N' THEN
15827 FOR r_ib_sno_asset IN c_ib_sno_asset(l_talv_fa_rec_out.asset_number) LOOP
15828 r_itiv_ib_tbl(k).serial_number := r_ib_sno_asset.ib_serial_number;
15829 IF r_ib_sno_asset.ib_serial_number IS NULL OR
15830 r_ib_sno_asset.ib_serial_number = OKL_API.G_MISS_CHAR THEN
15831 r_itiv_ib_tbl(k).mfg_serial_number_yn := 'N';
15832 ELSE
15833 r_itiv_ib_tbl(k).mfg_serial_number_yn := 'Y';
15834 END IF;
15835 r_itiv_ib_tbl(k).dnz_cle_id := x_clev_fa_rec.cle_id;
15836 IF l_itiv_ib_tbl.COUNT > 0 THEN
15837 m := l_itiv_ib_tbl.FIRST;
15838 LOOP
15839 r_itiv_ib_tbl(k).object_id1_new := l_itiv_ib_tbl(m).object_id1_new;
15840 EXIT WHEN (m = l_itiv_ib_tbl.LAST);
15841 m := l_itiv_ib_tbl.NEXT(m);
15842 END LOOP;
15843 END IF;
15844 lt_instance_id_tbl(k) := r_ib_sno_asset.instance_id;
15845 k := k + 1;
15846 END LOOP;
15847 l_itiv_ib_tbl := r_itiv_ib_tbl;
15848 IF l_itiv_ib_tbl.COUNT > 0 THEN
15849 ln_dummy1 := l_itiv_ib_tbl.COUNT;
15850 -- We have intialize the J , since there could be any index integer
15851 j := l_itiv_ib_tbl.FIRST;
15852 LOOP
15853 IF (l_itiv_ib_tbl(j).mfg_serial_number_yn IS NULL OR
15854 l_itiv_ib_tbl(j).mfg_serial_number_yn = OKL_API.G_MISS_CHAR) THEN
15855 x_return_status := OKL_API.G_RET_STS_ERROR;
15856 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
15857 ELSIF l_itiv_ib_tbl(j).mfg_serial_number_yn = 'Y' THEN
15858 IF ln_dummy1 <> ln_cimv_model_no_items THEN
15859 OKL_API.set_message(p_app_name => G_APP_NAME,
15860 p_msg_name => G_CNT_REC);
15861 RAISE OKL_API.G_EXCEPTION_ERROR;
15862 END IF;
15863 ln_dummy := ln_cimv_model_no_items;
15864 ELSIF l_itiv_ib_tbl(j).mfg_serial_number_yn = 'N' THEN
15865 ln_dummy := 1;
15866 END IF;
15867 EXIT WHEN (j = l_itiv_ib_tbl.LAST);
15868 j := l_itiv_ib_tbl.NEXT(j);
15869 END LOOP;
15870 ELSE
15871 OKL_API.set_message(p_app_name => G_APP_NAME,
15872 p_msg_name => G_CNT_REC);
15873 RAISE OKL_API.G_EXCEPTION_ERROR;
15874 END IF;
15875 ELSIF p_new_yn = 'Y' THEN
15876 -- We have to make sure the count of the itiv_tbl
15877 -- should be equal to qty of items
15878 -- Since inst tbl and ib inst are same
15879 -- it is Good enough to do one
15880 IF l_itiv_ib_tbl.COUNT > 0 THEN
15881 ln_dummy1 := l_itiv_ib_tbl.COUNT;
15882 -- We have intialize the J , since there could be any index integer
15883 j := l_itiv_ib_tbl.FIRST;
15884 LOOP
15885
15886 l_itiv_ib_tbl(j).dnz_cle_id := x_clev_fa_rec.cle_id; -- For importing Serial Item fix
15887
15888 IF (l_itiv_ib_tbl(j).mfg_serial_number_yn IS NULL OR
15889 l_itiv_ib_tbl(j).mfg_serial_number_yn = OKL_API.G_MISS_CHAR) THEN
15890 x_return_status := OKL_API.G_RET_STS_ERROR;
15891 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
15892 ELSIF l_itiv_ib_tbl(j).mfg_serial_number_yn = 'Y' THEN
15893 IF ln_dummy1 <> ln_cimv_model_no_items THEN
15894 OKL_API.set_message(p_app_name => G_APP_NAME,
15895 p_msg_name => G_CNT_REC);
15896 RAISE OKL_API.G_EXCEPTION_ERROR;
15897 END IF;
15898 ln_dummy := ln_cimv_model_no_items;
15899 ELSIF l_itiv_ib_tbl(j).mfg_serial_number_yn = 'N' THEN
15900 ln_dummy := 1;
15901 END IF;
15902 EXIT WHEN (j = l_itiv_ib_tbl.LAST);
15903 j := l_itiv_ib_tbl.NEXT(j);
15904 END LOOP;
15905 ELSE
15906 OKL_API.set_message(p_app_name => G_APP_NAME,
15907 p_msg_name => G_CNT_REC);
15908 RAISE OKL_API.G_EXCEPTION_ERROR;
15909 END IF;
15910 END IF;
15911 -- Since we have to create the instance
15912 -- Depending of the qty in l_cimv_model_rec.number_of_items
15913 -- we have use loop
15914 j := l_itiv_ib_tbl.FIRST;
15915 FOR i IN 1..ln_dummy LOOP
15916 IF (l_itiv_ib_tbl(j).instance_number_ib IS NULL OR
15917 l_itiv_ib_tbl(j).instance_number_ib = OKL_API.G_MISS_CHAR) THEN
15918 x_return_status := generate_instance_number_ib(x_instance_number_ib => l_itiv_ib_tbl(j).instance_number_ib);
15919 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15920 OKL_API.set_message(p_app_name => G_APP_NAME,
15921 p_msg_name => G_GEN_INST_NUM_IB);
15922 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15923 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15924 OKL_API.set_message(p_app_name => G_APP_NAME,
15925 p_msg_name => G_GEN_INST_NUM_IB);
15926 RAISE OKL_API.G_EXCEPTION_ERROR;
15927 END IF;
15928 l_itiv_ib_tbl(j).instance_number_ib := l_asset_number||' '||l_itiv_ib_tbl(j).instance_number_ib;
15929 l_itiv_inst_tbl(j).instance_number_ib := l_itiv_ib_tbl(j).instance_number_ib;
15930 END IF;
15931 -- Creation of the Instance Line Process
15932 -- Getting the Line style Info
15933 -- 4414408 Assign the line style ID directly
15934 /*
15935 x_return_status := get_lse_id(p_lty_code => G_INST_LINE_LTY_CODE,
15936 x_lse_id => l_clev_inst_rec.lse_id);
15937 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15938 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
15939 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15940 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
15941 END IF;
15942 */
15943 IF (l_clev_inst_rec.display_sequence IS NUll OR
15944 l_clev_inst_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
15945 l_clev_inst_rec.display_sequence := x_clev_fa_rec.display_sequence + 3;
15946 END IF;
15947 -- Required cle Line Information
15948 l_clev_inst_rec.lse_id := G_INST_LINE_LTY_ID;
15949 l_clev_inst_rec.chr_id := null;
15950 l_clev_inst_rec.cle_id := x_clev_fin_rec.id;
15951 l_clev_inst_rec.dnz_chr_id := x_clev_fin_rec.dnz_chr_id;
15952 l_clev_inst_rec.exception_yn := 'N';
15953 -- Creation of the Instance Line
15954 Create_instance_line(p_api_version => p_api_version,
15955 p_init_msg_list => p_init_msg_list,
15956 x_return_status => x_return_status,
15957 x_msg_count => x_msg_count,
15958 x_msg_data => x_msg_data,
15959 p_clev_rec => l_clev_inst_rec,
15960 p_klev_rec => l_klev_inst_rec,
15961 p_itiv_rec => l_itiv_inst_tbl(j),
15962 x_clev_rec => l_clev_inst_rec_out,
15963 x_klev_rec => l_klev_inst_rec_out,
15964 x_itiv_rec => l_itiv_inst_tbl_out(j));
15965 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15966 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
15967 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15968 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
15969 END IF;
15970 -- Creation of the ib Line Process
15971 -- Getting the Line style Info
15972 -- 4414408 Assign the IB line style ID directly
15973 /*
15974 x_return_status := get_lse_id(p_lty_code => G_IB_LINE_LTY_CODE,
15975 x_lse_id => l_clev_ib_rec.lse_id);
15976 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15977 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
15978 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15979 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
15980 END IF;
15981 */
15982 IF (l_clev_ib_rec.display_sequence IS NUll OR
15983 l_clev_ib_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
15984 l_clev_ib_rec.display_sequence := l_clev_inst_rec_out.display_sequence + 4;
15985 END IF;
15986 -- Required cle Line Information
15987 l_clev_ib_rec.lse_id := G_IB_LINE_LTY_ID;
15988 l_clev_ib_rec.chr_id := null;
15989 l_clev_ib_rec.cle_id := l_clev_inst_rec_out.id;
15990 l_clev_ib_rec.dnz_chr_id := x_clev_fin_rec.dnz_chr_id;
15991 l_clev_ib_rec.exception_yn := 'N';
15992 -- Required Item Information
15993 l_cimv_ib_rec.exception_yn := 'N';
15994 l_cimv_ib_rec.object1_id1 := null;
15995 l_cimv_ib_rec.object1_id2 := null;
15996 -- Since the screen can give only party_site_id via l_itiv_tbl(j).object_id1_new
15997 -- We have to use the below function
15998 lv_object_id1_new := l_itiv_ib_tbl(j).object_id1_new;
15999 x_return_status := get_party_site_id(p_object_id1_new => lv_object_id1_new,
16000 x_object_id1_new => l_itiv_ib_tbl(j).object_id1_new,
16001 x_object_id2_new => l_itiv_ib_tbl(j).object_id2_new);
16002 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16003 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
16004 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16005 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
16006 END IF;
16007 IF P_new_yn= 'Y' THEN
16008 l_itiv_ib_tbl(j).tal_type := 'CFA';
16009 ELSIF p_new_yn = 'N' THEN
16010 l_itiv_ib_tbl(j).tal_type := 'CRL';
16011 m := lt_instance_id_tbl.FIRST;
16012 l_cimv_ib_rec.object1_id1 := lt_instance_id_tbl(m);
16013 l_cimv_ib_rec.object1_id2 := '#';
16014 END IF;
16015 -- Creation of the ib Line
16016 Create_instance_ib_line(p_api_version => p_api_version,
16017 p_init_msg_list => p_init_msg_list,
16018 x_return_status => x_return_status,
16019 x_msg_count => x_msg_count,
16020 x_msg_data => x_msg_data,
16021 p_clev_rec => l_clev_ib_rec,
16022 p_klev_rec => l_klev_ib_rec,
16023 p_cimv_rec => l_cimv_ib_rec,
16024 p_itiv_rec => l_itiv_ib_tbl(j),
16025 x_clev_rec => x_clev_ib_rec,
16026 x_klev_rec => l_klev_ib_rec_out,
16027 x_cimv_rec => l_cimv_ib_rec_out,
16028 x_trxv_rec => l_trxv_ib_rec_out,
16029 x_itiv_rec => l_itiv_ib_tbl_out(j));
16030 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16031 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
16032 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16033 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
16034 END IF;
16035 EXIT WHEN (j = l_itiv_inst_tbl.LAST);
16036 j := l_itiv_inst_tbl.NEXT(j);
16037 m := m + 1;
16038 END LOOP;
16039 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16040 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16041 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16042 RAISE OKL_API.G_EXCEPTION_ERROR;
16043 END IF;
16044 END IF; --release asset --Bug# 3533936
16045
16046 -- Added by rravikir (Estimated property tax) -- Bug 3947959
16047 -- Property tax rules are not created for Quotes, they are taken care in the
16048 -- respective API.
16049 IF (lv_scs_code IS NOT NULL AND lv_scs_code <> 'QUOTE') THEN
16050 OKL_LA_PROPERTY_TAX_PVT.create_est_prop_tax_rules(
16051 p_api_version => p_api_version,
16052 p_init_msg_list => p_init_msg_list,
16053 x_return_status => x_return_status,
16054 x_msg_count => x_msg_count,
16055 x_msg_data => x_msg_data,
16056 p_chr_id => ln_chr_id,
16057 p_cle_id => ln_cle_id);
16058 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16059 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16060 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16061 RAISE OKL_API.G_EXCEPTION_ERROR;
16062 END IF;
16063 --Bug#4658856 ramurt
16064 OKL_LA_SALES_TAX_PVT.create_sales_tax_rules(
16065 p_api_version => p_api_version,
16066 p_init_msg_list => p_init_msg_list,
16067 x_return_status => x_return_status,
16068 x_msg_count => x_msg_count,
16069 x_msg_data => x_msg_data,
16070 p_chr_id => ln_chr_id,
16071 p_cle_id => ln_cle_id);
16072
16073 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16074 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16075 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16076 RAISE OKL_API.G_EXCEPTION_ERROR;
16077 END IF;
16078 END IF;
16079 -- end
16080
16081 OKL_API.END_ACTIVITY (x_msg_count,
16082 x_msg_data );
16083 EXCEPTION
16084 WHEN OKL_API.G_EXCEPTION_ERROR THEN
16085 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
16086 l_api_name,
16087 G_PKG_NAME,
16088 'OKL_API.G_RET_STS_ERROR',
16089 x_msg_count,
16090 x_msg_data,
16091 '_PVT');
16092 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
16093 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
16094 l_api_name,
16095 G_PKG_NAME,
16096 'OKL_API.G_RET_STS_UNEXP_ERROR',
16097 x_msg_count,
16098 x_msg_data,
16099 '_PVT');
16100 WHEN OTHERS THEN
16101 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
16102 l_api_name,
16103 G_PKG_NAME,
16104 'OTHERS',
16105 x_msg_count,
16106 x_msg_data,
16107 '_PVT');
16108 END Create_all_line;
16109 -----------------------------------------------------------------------------------------------
16110 --------------------- Main Process for All Lines Line Updating---------------------------------
16111 -----------------------------------------------------------------------------------------------
16112 PROCEDURE Update_all_line(
16113 p_api_version IN NUMBER,
16114 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
16115 x_return_status OUT NOCOPY VARCHAR2,
16116 x_msg_count OUT NOCOPY NUMBER,
16117 x_msg_data OUT NOCOPY VARCHAR2,
16118 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
16119 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
16120 p_clev_fin_rec IN clev_rec_type,
16121 p_klev_fin_rec IN klev_rec_type,
16122 p_clev_model_rec IN clev_rec_type,
16123 p_cimv_model_rec IN cimv_rec_type,
16124 p_clev_fa_rec IN clev_rec_type,
16125 p_cimv_fa_rec IN cimv_rec_type,
16126 p_talv_fa_rec IN talv_rec_type,
16127 p_clev_ib_rec IN clev_rec_type,
16128 p_itiv_ib_rec IN itiv_rec_type,
16129 x_clev_fin_rec OUT NOCOPY clev_rec_type,
16130 x_clev_model_rec OUT NOCOPY clev_rec_type,
16131 x_clev_fa_rec OUT NOCOPY clev_rec_type,
16132 x_clev_ib_rec OUT NOCOPY clev_rec_type) IS
16133 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_ALL_LINES';
16134 l_clev_fin_rec clev_rec_type;
16135 l_klev_fin_rec klev_rec_type;
16136 l_clev_fin_rec_out clev_rec_type;
16137 l_klev_fin_rec_out klev_rec_type;
16138 l_clev_model_rec clev_rec_type;
16139 l_klev_model_rec klev_rec_type;
16140 l_cimv_model_rec cimv_rec_type;
16141 l_clev_model_rec_out clev_rec_type;
16142 l_klev_model_rec_out klev_rec_type;
16143 l_cimv_model_rec_out cimv_rec_type;
16144 l_clev_fa_rec clev_rec_type;
16145 l_klev_fa_rec klev_rec_type;
16146 l_cimv_fa_rec cimv_rec_type;
16147 l_trxv_fa_rec trxv_rec_type;
16148 l_talv_fa_rec talv_rec_type;
16149 l_clev_fa_rec_out clev_rec_type;
16150 l_klev_fa_rec_out klev_rec_type;
16151 l_cimv_fa_rec_out cimv_rec_type;
16152 l_trxv_fa_rec_out trxv_rec_type;
16153 l_talv_fa_rec_out talv_rec_type;
16154 l_clev_inst_rec clev_rec_type;
16155 l_klev_inst_rec klev_rec_type;
16156 l_itiv_inst_rec itiv_rec_type;
16157 l_clev_inst_rec_out clev_rec_type;
16158 l_klev_inst_rec_out klev_rec_type;
16159 l_itiv_inst_rec_out itiv_rec_type;
16160 l_clev_ib_rec clev_rec_type;
16161 l_klev_ib_rec klev_rec_type;
16162 l_cimv_ib_rec cimv_rec_type;
16163 l_trxv_ib_rec trxv_rec_type;
16164 l_itiv_ib_rec itiv_rec_type;
16165 l_clev_ib_rec_out clev_rec_type;
16166 l_klev_ib_rec_out klev_rec_type;
16167 l_cimv_ib_rec_out cimv_rec_type;
16168 l_trxv_ib_rec_out trxv_rec_type;
16169 l_itiv_ib_rec_out itiv_rec_type;
16170 n_itiv_ib_rec itiv_rec_type;
16171 nx_itiv_ib_rec itiv_rec_type;
16172
16173 r_clev_fin_rec clev_rec_type;
16174 r_klev_fin_rec klev_rec_type;
16175 r_clev_model_rec clev_rec_type;
16176 r_klev_model_rec klev_rec_type;
16177 r_cimv_model_rec cimv_rec_type;
16178 r_clev_fa_rec clev_rec_type;
16179 r_klev_fa_rec klev_rec_type;
16180 r_cimv_fa_rec cimv_rec_type;
16181 r_talv_fa_rec talv_rec_type;
16182 r_clev_inst_rec clev_rec_type;
16183 r_klev_inst_rec klev_rec_type;
16184 r_itiv_inst_rec itiv_rec_type;
16185 r_clev_ib_rec clev_rec_type;
16186 r_klev_ib_rec klev_rec_type;
16187 r_cimv_ib_rec cimv_rec_type;
16188 r_itiv_ib_rec itiv_rec_type;
16189 ln_addon_oec OKL_K_LINES_V.OEC%TYPE := 0;
16190 ln_klev_fin_oec OKL_K_LINES_V.OEC%TYPE := 0;
16191 ln_klev_fin_res OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
16192 ln_klev_fin_cap OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
16193 ln_clev_model_price_unit OKC_K_LINES_V.PRICE_UNIT%TYPE := 0;
16194 ln_cimv_model_no_items OKC_K_ITEMS_V.NUMBER_OF_ITEMS%TYPE := 0;
16195 lv_object_id1_new OKL_TXL_ITM_INSTS_V.OBJECT_ID1_NEW%TYPE;
16196 lv_model_object_id1 OKC_K_ITEMS_V.OBJECT1_ID1%TYPE;
16197 lv_model_object_id2 OKC_K_ITEMS_V.OBJECT1_ID2%TYPE;
16198 ln_dummy NUMBER := 0;
16199 ln_dummy1 NUMBER := 0;
16200 i NUMBER := 0;
16201 j NUMBER := 0;
16202 l_new_yn VARCHAR2(3);
16203 l_go_for_calc VARCHAR2(3):= 'Y';
16204
16205 -- rravikir added
16206 ln_txl_itm_id OKL_TXL_ITM_INSTS.ID%TYPE;
16207 k_itiv_ib_rec itiv_rec_type;
16208 kx_itiv_ib_rec itiv_rec_type;
16209 lv_object_id1 OKL_TXL_ITM_INSTS.OBJECT_ID1_NEW%TYPE;
16210 lv_object_id2 OKL_TXL_ITM_INSTS.OBJECT_ID2_NEW%TYPE;
16211 ln_inv_itm_id OKL_TXL_ITM_INSTS.INVENTORY_ITEM_ID%TYPE;
16212 ln_inv_org_id OKL_TXL_ITM_INSTS.INVENTORY_ORG_ID%TYPE;
16213 lv_jtot_object_code_new OKL_TXL_ITM_INSTS.JTOT_OBJECT_CODE_NEW%TYPE;
16214 -- end rravikir
16215
16216 CURSOR c_asset_iti(p_asset_number OKL_TXL_ASSETS_B.ASSET_NUMBER%TYPE,
16217 p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE)
16218 IS
16219 select cle_ib.id id
16220 from okc_line_styles_b lse_ib,
16221 okc_k_lines_b cle_ib,
16222 okc_line_styles_b lse_inst,
16223 okc_k_lines_b cle_inst,
16224 okc_line_styles_b lse_tl,
16225 okc_k_lines_v cleb_tl
16226 where cleb_tl.name = P_asset_number
16227 and cleb_tl.dnz_chr_id = p_dnz_chr_id
16228 and cleb_tl.lse_id = lse_tl.id
16229 and lse_tl.lty_code = G_FIN_LINE_LTY_CODE
16230 and lse_tl.lse_type = G_TLS_TYPE
16231 and cle_inst.cle_id = cleb_tl.id
16232 and cle_inst.lse_id = lse_inst.id
16233 and lse_inst.lty_code = G_INST_LINE_LTY_CODE
16234 and cle_ib.cle_id = cle_inst.id
16235 and cle_ib.lse_id = lse_ib.id
16236 and lse_ib.lty_code = G_IB_LINE_LTY_CODE;
16237
16238 -- rravikir added
16239 CURSOR c_get_txl_itm_insts(p_top_line_id OKC_K_LINES_B.ID%TYPE,
16240 p_txl_inst_id OKL_TXL_ITM_INSTS.ID%TYPE)
16241 IS
16242 select iti.id, iti.inventory_item_id, iti.inventory_org_id,
16243 iti.object_id1_new, iti.object_id2_new, iti.jtot_object_code_new
16244 from okl_txl_itm_insts iti,
16245 okc_line_styles_b lse_ib,
16246 okc_k_lines_b cle_ib,
16247 okc_line_styles_b lse_inst,
16248 okc_k_lines_b cle_inst
16249 where cle_inst.cle_id = p_top_line_id
16250 and cle_inst.lse_id = lse_inst.id
16251 and lse_inst.lty_code = G_INST_LINE_LTY_CODE
16252 and cle_ib.cle_id = cle_inst.id
16253 and cle_ib.lse_id = lse_ib.id
16254 and lse_ib.lty_code = G_IB_LINE_LTY_CODE
16255 and cle_ib.id = iti.kle_id
16256 and cle_ib.id <> p_txl_inst_id;
16257 -- end rravikir
16258
16259 l_top_line_id NUMBER;
16260 l_oec NUMBER;
16261
16262 --Bug# 3533936: Enhancements for release assets
16263 l_rel_ast_fin_cle_id NUMBER;
16264 l_itiv_ib_tbl itiv_tbl_type;
16265
16266 --cursor to get existing residual values
16267 --and down payment values Bug# 5192636
16268 cursor l_cle_csr (p_cle_id in number,
16269 p_chr_id in number) is
16270 select fin_kle.DOWN_PAYMENT_RECEIVER_CODE,
16271 fin_kle.CAPITALIZE_DOWN_PAYMENT_YN,
16272 fin_kle.residual_value,
16273 fin_kle.residual_percentage
16274 from
16275 okl_k_lines fin_kle,
16276 okc_k_lines_b fin_cleb
16277 where fin_kle.id = fin_cleb.id
16278 and fin_cleb.id = p_cle_id
16279 and fin_cleb.chr_id = p_chr_id
16280 and fin_cleb.dnz_chr_id = p_chr_id;
16281
16282 l_cle_rec l_cle_csr%ROWTYPE;
16283
16284 --cursor to get asset id from fa
16285 cursor l_fab_csr (p_asset_number in varchar2) is
16286 select asset_id
16287 from fa_additions_b
16288 where asset_number = p_Asset_number;
16289
16290 l_asset_id fa_additions_b.asset_id%TYPE;
16291
16292 --cursor to check if contract has re-lease assets
16293 CURSOR l_chk_rel_ast_csr (p_chr_id IN NUMBER) IS
16294 SELECT 'Y',
16295 --Bug# 4631549
16296 chr.orig_system_source_code,
16297 chr.orig_system_id1 orig_chr_id,
16298 chr.start_date
16299 FROM okc_k_headers_b CHR,
16300 okc_rules_b rul
16301 WHERE CHR.ID = p_chr_id
16302 AND rul.dnz_chr_id = CHR.id
16303 AND rul.rule_information_category = 'LARLES'
16304 AND NVL(rule_information1,'N') = 'Y';
16305
16306 l_chk_rel_ast Varchar2(1) default 'N';
16307 --Bug# 4631549
16308 l_orig_system_source_code OKC_K_HEADERS_B.orig_system_source_code%TYPE;
16309 l_orig_chr_id OKC_K_HEADERS_B.ID%TYPE;
16310 l_start_date OKC_K_HEADERS_B.START_DATE%TYPE;
16311
16312 l_rel_ast_clev_fin_rec clev_rec_type;
16313 l_rel_ast_klev_fin_rec klev_rec_type;
16314 l_rel_ast_clev_model_rec clev_rec_type;
16315 l_rel_ast_klev_model_rec klev_rec_type;
16316 l_rel_ast_clev_fa_rec clev_rec_type;
16317 l_rel_ast_klev_fa_rec klev_rec_type;
16318 l_rel_ast_clev_ib_tbl clev_tbl_type;
16319 l_rel_ast_klev_ib_tbl klev_tbl_type;
16320 --End Bug# 3533936
16321
16322 --Bug# 4161221: start
16323 CURSOR c_addon_line_id(p_model_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
16324 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
16325 SELECT cle.id
16326 FROM okc_k_lines_b cle,
16327 okc_line_styles_b lse
16328 WHERE cle.dnz_chr_id = p_chr_id
16329 AND cle.lse_id = lse.id
16330 AND lse.lty_code = G_ADDON_LINE_LTY_CODE
16331 AND cle.cle_id = p_model_cle_id;
16332
16333 r_cimv_addon_rec cimv_rec_type;
16334 rx_cimv_addon_rec cimv_rec_type;
16335 --Bug# 4161221: end
16336
16337
16338 --Bug# 4899328
16339 --cursor to check if the contract is undergoing on-line rebook
16340 cursor l_chk_rbk_csr(p_chr_id IN NUMBER) is
16341 SELECT '!'
16342 FROM okc_k_headers_b CHR,
16343 okl_trx_contracts ktrx
16344 WHERE ktrx.khr_id_new = chr.id
16345 AND ktrx.tsu_code = 'ENTERED'
16346 AND ktrx.rbr_code is NOT NULL
16347 AND ktrx.tcn_type = 'TRBK'
16348 --rkuttiya added for 12.1.1 Multi GAAP
16349 AND ktrx.representation_type = 'PRIMARY'
16350 --
16351 AND chr.id = p_chr_id
16352 AND chr.orig_system_source_code = 'OKL_REBOOK';
16353
16354 l_rbk_khr VARCHAR2(1) DEFAULT '?';
16355
16356 l_line_capital_amount okl_k_lines.capital_amount%TYPE;
16357
16358 --Bug# 4631549
16359 cursor l_orig_cle_csr (p_cle_id in number
16360 ) is
16361 select cleb.orig_system_id1 orig_cle_id
16362 from okc_k_lines_b cleb
16363 where cleb.id = p_cle_id;
16364
16365 l_orig_cle_rec l_orig_cle_csr%ROWTYPE;
16366
16367 cursor l_fbk_csr (p_asset_id in number) is
16368 select fab.book_type_code
16369 from fa_books fab,
16370 fa_book_controls fbc
16371 where fab.asset_id = p_asset_id
16372 and fab.transaction_header_id_out is null
16373 and fab.book_type_code = fbc.book_type_code
16374 and fbc.book_class = 'CORPORATE';
16375
16376 l_fbk_rec l_fbk_csr%ROWTYPE;
16377
16378 l_corp_net_book_value number;
16379 l_expected_cost number;
16380
16381 l_clev_fin_rec2 okl_okc_migration_pvt.clev_rec_type;
16382 lx_clev_fin_rec2 okl_okc_migration_pvt.clev_rec_type;
16383 l_klev_fin_rec2 okl_contract_pub.klev_rec_type;
16384 lx_klev_fin_rec2 okl_contract_pub.klev_rec_type;
16385 --End Bug# 4631549
16386 BEGIN
16387
16388 x_return_status := OKL_API.G_RET_STS_SUCCESS;
16389 -- Call start_activity to create savepoint, check compatibility
16390 -- and initialize message list
16391 x_return_status := OKL_API.START_ACTIVITY (
16392 l_api_name
16393 ,p_init_msg_list
16394 ,'_PVT'
16395 ,x_return_status);
16396 -- Check if activity started successfully
16397 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16398 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16399 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16400 RAISE OKL_API.G_EXCEPTION_ERROR;
16401 END IF;
16402 --start:| 14-May-2008 cklee Bug 6405415 |
16403 IF p_klev_fin_rec.residual_percentage <> OKL_API.G_MISS_NUM and
16404 p_klev_fin_rec.residual_percentage IS NOT NULL THEN
16405 IF NOT p_klev_fin_rec.residual_percentage between 0 and 100 THEN
16406 OKL_API.set_message(p_app_name => G_APP_NAME,
16407 p_msg_name => 'OKL_VALID_RESIDUAL_PERCENT');
16408 RAISE OKL_API.G_EXCEPTION_ERROR;
16409 END IF;
16410 END IF;
16411 --end:| 14-May-2008 cklee Bug 6405415 |
16412
16413 --Bug# 4959361
16414 OKL_LLA_UTIL_PVT.check_line_update_allowed
16415 (p_api_version => p_api_version,
16416 p_init_msg_list => p_init_msg_list,
16417 x_return_status => x_return_status,
16418 x_msg_count => x_msg_count,
16419 x_msg_data => x_msg_data,
16420 p_cle_id => p_clev_fin_rec.id);
16421
16422 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16423 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16424 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16425 RAISE OKL_API.G_EXCEPTION_ERROR;
16426 END IF;
16427 --Bug# 4959361
16428
16429 l_new_yn := p_new_yn;
16430 l_clev_fin_rec := p_clev_fin_rec;
16431 l_klev_fin_rec := p_klev_fin_rec;
16432
16433 --Bug# 6888733: start
16434
16435 if l_klev_fin_rec.RESIDUAL_GRNTY_AMOUNT = fnd_api.g_miss_num then
16436 l_klev_fin_rec.RESIDUAL_GRNTY_AMOUNT := null;
16437 end if;
16438
16439 --Bug# 6888733: end
16440
16441 l_clev_model_rec := p_clev_model_rec;
16442 l_cimv_model_rec := p_cimv_model_rec;
16443 l_clev_fa_rec := p_clev_fa_rec;
16444 l_cimv_fa_rec := p_cimv_fa_rec;
16445 l_talv_fa_rec := p_talv_fa_rec;
16446 l_itiv_inst_rec := p_itiv_ib_rec;
16447 l_clev_ib_rec := p_clev_ib_rec;
16448 l_itiv_ib_rec := p_itiv_ib_rec;
16449 IF (l_clev_fin_rec.dnz_chr_id IS NULL OR
16450 l_clev_fin_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
16451 OKL_API.set_message(p_app_name => G_APP_NAME,
16452 p_msg_name => G_REQUIRED_VALUE,
16453 p_token1 => G_COL_NAME_TOKEN,
16454 p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID for All Lines');
16455 RAISE OKL_API.G_EXCEPTION_ERROR;
16456 END IF;
16457
16458
16459 ------------------------------------------------------
16460 --Bug# 3533936 : Release Asset Case - all line details
16461 -- should default from exising asset
16462 ------------------------------------------------------
16463 l_chk_rel_ast := 'N';
16464 Open l_chk_rel_ast_csr(p_chr_id => l_clev_fin_rec.dnz_chr_id);
16465 FETCH l_chk_rel_ast_csr INTO l_chk_rel_ast,
16466 --Bug# 4631549
16467 l_orig_system_source_code,
16468 l_orig_chr_id,
16469 l_start_date;
16470 If l_chk_rel_ast_csr%NOTFOUND then
16471 null;
16472 end if;
16473 close l_chk_rel_ast_csr;
16474
16475 If l_new_yn = 'N' And l_chk_rel_ast = 'Y' Then
16476
16477 open l_fab_csr(p_asset_number => p_asset_number );
16478 fetch l_fab_csr into l_asset_id;
16479 If l_fab_csr%NOTFOUND then
16480 --error invalid line
16481 NULL;
16482 End If;
16483 close l_fab_csr;
16484
16485
16486 If l_klev_fin_rec.id = OKL_API.G_MISS_NUM then
16487 l_klev_fin_rec.id := l_clev_fin_rec.id;
16488 End If;
16489
16490
16491 l_itiv_ib_tbl(1) := l_itiv_ib_rec;
16492
16493 --Bug# 4631549
16494 If nvl(l_orig_system_source_code,okl_api.g_miss_char) <> 'OKL_RELEASE' Then
16495 update_release_asset_line
16496 (p_api_version => p_api_version,
16497 p_init_msg_list => p_init_msg_list,
16498 x_return_status => x_return_status,
16499 x_msg_count => x_msg_count,
16500 x_msg_data => x_msg_data,
16501 p_asset_id => to_char(l_asset_id),
16502 p_chr_id => l_clev_fin_rec.dnz_chr_id,
16503 p_clev_fin_id => l_clev_fin_rec.id,
16504 x_cle_id => l_rel_ast_fin_cle_id);
16505
16506 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16507 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16508 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16509 RAISE OKL_API.G_EXCEPTION_ERROR;
16510 END IF;
16511
16512
16513
16514 Modify_Release_Asset_Line(
16515 p_api_version => p_api_version,
16516 p_init_msg_list => p_init_msg_list,
16517 x_return_status => x_return_status,
16518 x_msg_count => x_msg_count,
16519 x_msg_data => x_msg_data,
16520 p_clev_fin_rec => l_clev_fin_rec,
16521 p_klev_fin_rec => l_klev_fin_rec,
16522 --akrangan Bug# 5362977 start
16523 p_clev_model_rec => l_clev_model_rec,
16524 --akrangan Bug# 5362977 end
16525 p_cimv_model_rec => l_cimv_model_rec,
16526 p_clev_fa_rec => l_clev_fa_rec,
16527 p_cimv_fa_rec => l_cimv_fa_rec,
16528 p_talv_fa_rec => l_talv_fa_rec,
16529 p_itiv_ib_tbl => l_itiv_ib_tbl,
16530 p_cle_id => l_rel_ast_fin_cle_id,
16531 --Bug# 4631549
16532 p_call_mode => 'RELEASE_ASSET',
16533 x_clev_fin_rec => l_rel_ast_clev_fin_rec,
16534 x_klev_fin_rec => l_rel_ast_klev_fin_rec,
16535 x_clev_model_rec => l_rel_ast_clev_model_rec,
16536 x_klev_model_rec => l_rel_ast_klev_model_rec,
16537 x_clev_fa_rec => l_rel_ast_clev_fa_rec,
16538 x_klev_fa_rec => l_rel_ast_klev_fa_rec,
16539 x_clev_ib_tbl => l_rel_ast_clev_ib_tbl,
16540 x_klev_ib_tbl => l_rel_ast_klev_ib_tbl);
16541
16542 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16543 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16544 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16545 RAISE OKL_API.G_EXCEPTION_ERROR;
16546 END IF;
16547
16548 x_clev_fin_rec := l_rel_ast_clev_fin_rec;
16549 x_clev_model_rec := l_rel_ast_clev_model_rec;
16550 x_clev_fa_rec := l_rel_ast_clev_fa_rec;
16551 If l_rel_ast_clev_ib_tbl.COUNT > 0 then
16552 x_clev_ib_rec := l_rel_ast_clev_ib_tbl(1);
16553 End If;
16554
16555 --Bug# 4631549
16556 ElsIf nvl(l_orig_system_source_code,OKL_API.G_MISS_CHAR) = 'OKL_RELEASE' Then
16557
16558 Modify_Release_Asset_Line(
16559 p_api_version => p_api_version,
16560 p_init_msg_list => p_init_msg_list,
16561 x_return_status => x_return_status,
16562 x_msg_count => x_msg_count,
16563 x_msg_data => x_msg_data,
16564 p_clev_fin_rec => l_clev_fin_rec,
16565 p_klev_fin_rec => l_klev_fin_rec,
16566 --akrangan Bug# 5362977 start
16567 p_clev_model_rec => l_clev_model_rec,
16568 --akrangan Bug# 5362977 end
16569 p_cimv_model_rec => l_cimv_model_rec,
16570 p_clev_fa_rec => l_clev_fa_rec,
16571 p_cimv_fa_rec => l_cimv_fa_rec,
16572 p_talv_fa_rec => l_talv_fa_rec,
16573 p_itiv_ib_tbl => l_itiv_ib_tbl,
16574 p_cle_id => l_clev_fin_rec.id,
16575 --Bug# 4631549
16576 p_call_mode => 'RELEASE_CONTRACT',
16577 x_clev_fin_rec => l_rel_ast_clev_fin_rec,
16578 x_klev_fin_rec => l_rel_ast_klev_fin_rec,
16579 x_clev_model_rec => l_rel_ast_clev_model_rec,
16580 x_klev_model_rec => l_rel_ast_klev_model_rec,
16581 x_clev_fa_rec => l_rel_ast_clev_fa_rec,
16582 x_klev_fa_rec => l_rel_ast_klev_fa_rec,
16583 x_clev_ib_tbl => l_rel_ast_clev_ib_tbl,
16584 x_klev_ib_tbl => l_rel_ast_klev_ib_tbl);
16585
16586 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16587 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16588 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16589 RAISE OKL_API.G_EXCEPTION_ERROR;
16590 END IF;
16591
16592 x_clev_fin_rec := l_rel_ast_clev_fin_rec;
16593 x_clev_model_rec := l_rel_ast_clev_model_rec;
16594 x_clev_fa_rec := l_rel_ast_clev_fa_rec;
16595 IF l_rel_ast_clev_ib_tbl.COUNT > 0 THEN
16596 x_clev_ib_rec := l_rel_ast_clev_ib_tbl(1);
16597 END IF;
16598 open l_orig_cle_csr (p_cle_id => x_clev_fin_rec.id);
16599 fetch l_orig_cle_csr into l_orig_cle_rec;
16600 close l_orig_cle_csr;
16601
16602 open l_fbk_csr (p_asset_id => l_asset_id);
16603 fetch l_fbk_csr into l_fbk_rec;
16604 close l_fbk_csr;
16605
16606 OKL_RELEASE_PVT.Calculate_Expected_Cost
16607 (p_api_version => p_api_version,
16608 p_init_msg_list => p_init_msg_list,
16609 x_return_status => x_return_status,
16610 x_msg_count => x_msg_count,
16611 x_msg_data => x_msg_data,
16612 p_new_chr_id => x_clev_fin_rec.dnz_chr_id,
16613 p_orig_chr_id => l_orig_chr_id,
16614 p_orig_cle_id => l_orig_cle_rec.orig_cle_id,
16615 p_asset_id => l_asset_id,
16616 p_book_type_code => l_fbk_rec.book_type_code,
16617 p_release_date => l_start_date,
16618 p_nbv => l_corp_net_book_value,
16619 x_expected_cost => l_expected_cost);
16620
16621 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16622 RAISE OKL_API.G_EXCEPTION_ERROR;
16623 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16624 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16625 END IF;
16626
16627 l_clev_fin_rec2.id := x_clev_fin_rec.id;
16628 l_klev_fin_rec2.id := x_clev_fin_rec.id;
16629 l_klev_fin_rec2.expected_asset_cost := l_expected_cost;
16630
16631 OKL_CONTRACT_PUB.update_contract_line
16632 (p_api_version => p_api_version,
16633 p_init_msg_list => p_init_msg_list,
16634 x_return_status => x_return_status,
16635 x_msg_count => x_msg_count,
16636 x_msg_data => x_msg_data,
16637 p_clev_rec => l_clev_fin_rec2,
16638 p_klev_rec => l_klev_fin_rec2,
16639 x_clev_rec => lx_clev_fin_rec2,
16640 x_klev_rec => lx_klev_fin_rec2);
16641
16642 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16643 RAISE OKL_API.G_EXCEPTION_ERROR;
16644 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16645 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16646 END IF;
16647 End If;
16648 --End Bug# 4631549
16649
16650 Else
16651 --End Bug# 3533936
16652
16653
16654
16655 -- Check for Required Values
16656 x_return_status := check_required_values(p_item1 => l_cimv_model_rec.object1_id1,
16657 p_item2 => l_cimv_model_rec.object1_id2,
16658 p_ast_no => l_talv_fa_rec.asset_number,
16659 p_ast_desc => l_talv_fa_rec.description,
16660 p_cost => l_talv_fa_rec.original_cost,
16661 p_units => l_talv_fa_rec.current_units,
16662 p_ib_loc1 => l_itiv_ib_rec.object_id1_new,
16663 p_ib_loc2 => l_itiv_ib_rec.object_id2_new,
16664 p_fa_loc => l_talv_fa_rec.fa_location_id,
16665 p_refinance_amount => l_klev_fin_rec.refinance_amount,
16666 p_chr_id => l_clev_fin_rec.dnz_chr_id);
16667 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16668 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16669 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16670 RAISE OKL_API.G_EXCEPTION_ERROR;
16671 END IF;
16672 -- To Get the txlv fa Line Record
16673 x_return_status := get_rec_txlv(l_clev_fa_rec.id,
16674 r_talv_fa_rec);
16675 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16676 OKL_API.set_message(p_app_name => G_APP_NAME,
16677 p_msg_name => G_FETCHING_INFO,
16678 p_token1 => G_REC_NAME_TOKEN,
16679 p_token1_value => 'OKL_TXL_ASSETS_V Record');
16680 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16681 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16682 OKL_API.set_message(p_app_name => G_APP_NAME,
16683 p_msg_name => G_FETCHING_INFO,
16684 p_token1 => G_REC_NAME_TOKEN,
16685 p_token1_value => 'OKL_TXL_ASSETS_V Record');
16686 RAISE OKL_API.G_EXCEPTION_ERROR;
16687 END IF;
16688 IF (l_talv_fa_rec.asset_number IS NUll OR
16689 l_talv_fa_rec.asset_number = OKL_API.G_MISS_CHAR) THEN
16690 l_talv_fa_rec.asset_number := r_talv_fa_rec.asset_number;
16691 -- ELSIF l_talv_fa_rec.asset_number = r_talv_fa_rec.asset_number THEN
16692 -- l_new_yn := 'N';
16693 END IF;
16694 IF (l_talv_fa_rec.original_cost IS NUll OR
16695 l_talv_fa_rec.original_cost = OKL_API.G_MISS_NUM) THEN
16696 OKL_API.set_message(p_app_name => G_APP_NAME,
16697 p_msg_name => G_REQUIRED_VALUE,
16698 p_token1 => G_REC_NAME_TOKEN,
16699 p_token1_value => 'OKL_TXL_ASSETS_V.ORIGINAL_COST');
16700 RAISE OKL_API.G_EXCEPTION_ERROR;
16701 END IF;
16702 IF (l_talv_fa_rec.current_units IS NUll OR
16703 l_talv_fa_rec.current_units = OKL_API.G_MISS_NUM) THEN
16704 OKL_API.set_message(p_app_name => G_APP_NAME,
16705 p_msg_name => G_REQUIRED_VALUE,
16706 p_token1 => G_COL_NAME_TOKEN,
16707 p_token1_value => 'OKL_TXL_ASSETS_V.CURRENT_UNITS');
16708 RAISE OKL_API.G_EXCEPTION_ERROR;
16709 END IF;
16710 l_clev_model_rec.price_unit := l_talv_fa_rec.original_cost;
16711 l_clev_fa_rec.price_unit := l_talv_fa_rec.original_cost;
16712 l_cimv_model_rec.number_of_items := l_talv_fa_rec.current_units;
16713 l_cimv_fa_rec.number_of_items := l_talv_fa_rec.current_units;
16714 -- To Get the kle top Line Record
16715 x_return_status := get_rec_clev(l_clev_fin_rec.id,
16716 r_clev_fin_rec);
16717 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16718 OKL_API.set_message(p_app_name => G_APP_NAME,
16719 p_msg_name => G_FETCHING_INFO,
16720 p_token1 => G_REC_NAME_TOKEN,
16721 p_token1_value => 'OKC_K_LINES_V Record');
16722 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16723 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16724 OKL_API.set_message(p_app_name => G_APP_NAME,
16725 p_msg_name => G_FETCHING_INFO,
16726 p_token1 => G_REC_NAME_TOKEN,
16727 p_token1_value => 'OKC_K_LINES_V Record');
16728 RAISE OKL_API.G_EXCEPTION_ERROR;
16729 END IF;
16730 -- To Get the kle top Line Record
16731 x_return_status := get_rec_klev(l_clev_fin_rec.id,
16732 r_klev_fin_rec);
16733 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16734 OKL_API.set_message(p_app_name => G_APP_NAME,
16735 p_msg_name => G_FETCHING_INFO,
16736 p_token1 => G_REC_NAME_TOKEN,
16737 p_token1_value => 'OKL_K_LINES_V Record');
16738 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16739 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16740 OKL_API.set_message(p_app_name => G_APP_NAME,
16741 p_msg_name => G_FETCHING_INFO,
16742 p_token1 => G_REC_NAME_TOKEN,
16743 p_token1_value => 'OKL_K_LINES_V Record');
16744 RAISE OKL_API.G_EXCEPTION_ERROR;
16745 END IF;
16746 IF r_clev_fin_rec.id <> r_klev_fin_rec.id THEN
16747 OKL_API.set_message(p_app_name => G_APP_NAME,
16748 p_msg_name => G_LINE_RECORD);
16749 RAISE OKL_API.G_EXCEPTION_ERROR;
16750 END IF;
16751 --Build the clev Top Line Record
16752 l_clev_fin_rec.cle_id := null;
16753 IF (l_clev_fin_rec.chr_id IS NUll OR
16754 l_clev_fin_rec.chr_id = OKL_API.G_MISS_NUM) THEN
16755 l_clev_fin_rec.chr_id := r_clev_fin_rec.chr_id;
16756 END IF;
16757 IF (l_clev_fin_rec.name IS NUll OR
16758 l_clev_fin_rec.name = OKL_API.G_MISS_CHAR) AND
16759 (r_clev_fin_rec.name <> p_asset_number) THEN
16760 l_clev_fin_rec.name := p_asset_number;
16761 END IF;
16762 IF (l_clev_fin_rec.exception_yn IS NUll OR
16763 l_clev_fin_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
16764 l_clev_fin_rec.exception_yn := r_clev_fin_rec.exception_yn;
16765 END IF;
16766 IF (l_clev_fin_rec.display_sequence IS NUll OR
16767 l_clev_fin_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
16768 l_clev_fin_rec.display_sequence := r_clev_fin_rec.display_sequence;
16769 END IF;
16770 IF (l_clev_fin_rec.lse_id IS NUll OR
16771 l_clev_fin_rec.lse_id = OKL_API.G_MISS_NUM) THEN
16772 l_clev_fin_rec.lse_id := r_clev_fin_rec.lse_id;
16773 END IF;
16774 IF (l_clev_fin_rec.line_number IS NUll OR
16775 l_clev_fin_rec.line_number = OKL_API.G_MISS_CHAR) THEN
16776 l_clev_fin_rec.line_number := r_clev_fin_rec.line_number;
16777 END IF;
16778 IF (l_clev_fin_rec.sts_code IS NUll OR
16779 l_clev_fin_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
16780 l_clev_fin_rec.sts_code := r_clev_fin_rec.sts_code;
16781 END IF;
16782 --Build the klev Top Line Record
16783 IF l_new_yn = 'Y' THEN
16784 ln_clev_model_price_unit := abs(l_talv_fa_rec.original_cost);
16785 ln_cimv_model_no_items := l_talv_fa_rec.current_units;
16786 ELSIF l_new_yn = 'N' THEN
16787 IF l_clev_model_rec.price_unit = OKL_API.G_MISS_NUM THEN
16788 l_clev_model_rec.price_unit := null;
16789 END IF;
16790 IF l_cimv_model_rec.number_of_items = OKL_API.G_MISS_NUM THEN
16791 l_cimv_model_rec.number_of_items := null;
16792 END IF;
16793 ln_clev_model_price_unit := abs(l_talv_fa_rec.original_cost);
16794 ln_cimv_model_no_items := l_talv_fa_rec.current_units;
16795 -- we need to modify the code, let it go a temp
16796 -- ln_clev_model_price_unit := nvl(l_clev_model_rec.price_unit,0);
16797 -- ln_cimv_model_no_items := nvl(l_cimv_model_rec.number_of_items,0);
16798 END IF;
16799 l_klev_fin_rec.id := r_klev_fin_rec.id;
16800
16801 l_clev_fin_rec.item_description := l_talv_fa_rec.description;
16802 -- Update of the Financial Asset Line
16803 update_fin_line(p_api_version => p_api_version,
16804 p_init_msg_list => p_init_msg_list,
16805 x_return_status => x_return_status,
16806 x_msg_count => x_msg_count,
16807 x_msg_data => x_msg_data,
16808 P_new_yn => l_new_yn,
16809 p_asset_number => p_asset_number,
16810 p_clev_rec => l_clev_fin_rec,
16811 p_klev_rec => l_klev_fin_rec,
16812 x_clev_rec => x_clev_fin_rec,
16813 x_klev_rec => l_klev_fin_rec_out);
16814 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16815 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16816 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16817 RAISE OKL_API.G_EXCEPTION_ERROR;
16818 END IF;
16819
16820 --We have to build the Model Line Record for the calculations of the
16821 -- oec of the top line
16822 -- To Get the cle Model Line Record
16823 x_return_status := get_rec_clev(l_clev_model_rec.id,
16824 r_clev_model_rec);
16825 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16826 OKL_API.set_message(p_app_name => G_APP_NAME,
16827 p_msg_name => G_FETCHING_INFO,
16828 p_token1 => G_REC_NAME_TOKEN,
16829 p_token1_value => 'OKC_K_LINES_V Record');
16830 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16831 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16832 OKL_API.set_message(p_app_name => G_APP_NAME,
16833 p_msg_name => G_FETCHING_INFO,
16834 p_token1 => G_REC_NAME_TOKEN,
16835 p_token1_value => 'OKC_K_LINES_V Record');
16836 RAISE OKL_API.G_EXCEPTION_ERROR;
16837 END IF;
16838 -- To Get the kle Model Line Record
16839 x_return_status := get_rec_klev(l_clev_model_rec.id,
16840 r_klev_model_rec);
16841 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16842 OKL_API.set_message(p_app_name => G_APP_NAME,
16843 p_msg_name => G_FETCHING_INFO,
16844 p_token1 => G_REC_NAME_TOKEN,
16845 p_token1_value => 'OKL_K_LINES_V Record');
16846 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16847 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16848 OKL_API.set_message(p_app_name => G_APP_NAME,
16849 p_msg_name => G_FETCHING_INFO,
16850 p_token1 => G_REC_NAME_TOKEN,
16851 p_token1_value => 'OKL_K_LINES_V Record');
16852 RAISE OKL_API.G_EXCEPTION_ERROR;
16853 END IF;
16854 IF r_klev_model_rec.id <> r_clev_model_rec.id THEN
16855 OKL_API.set_message(p_app_name => G_APP_NAME,
16856 p_msg_name => G_LINE_RECORD);
16857 RAISE OKL_API.G_EXCEPTION_ERROR;
16858 END IF;
16859 -- Build clev Model Line Record
16860 l_clev_model_rec.chr_id := null;
16861 IF (l_clev_model_rec.cle_id IS NUll OR
16862 l_clev_model_rec.cle_id = OKL_API.G_MISS_NUM) THEN
16863 l_clev_model_rec.cle_id := r_clev_model_rec.cle_id;
16864 END IF;
16865 IF (l_clev_model_rec.dnz_chr_id IS NUll OR
16866 l_clev_model_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
16867 l_clev_model_rec.dnz_chr_id := r_clev_model_rec.dnz_chr_id;
16868 END IF;
16869 IF (l_clev_model_rec.lse_id IS NUll OR
16870 l_clev_model_rec.lse_id = OKL_API.G_MISS_NUM) THEN
16871 l_clev_model_rec.lse_id := r_clev_model_rec.lse_id;
16872 END IF;
16873 IF (l_clev_model_rec.display_sequence IS NUll OR
16874 l_clev_model_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
16875 l_clev_model_rec.display_sequence := r_clev_model_rec.display_sequence;
16876 END IF;
16877 IF (l_clev_model_rec.exception_yn IS NUll OR
16878 l_clev_model_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
16879 l_clev_model_rec.exception_yn := r_clev_model_rec.exception_yn;
16880 END IF;
16881 IF (l_clev_model_rec.line_number IS NUll OR
16882 l_clev_model_rec.line_number = OKL_API.G_MISS_CHAR) THEN
16883 l_clev_model_rec.line_number := r_clev_model_rec.line_number;
16884 END IF;
16885 IF (l_clev_model_rec.sts_code IS NUll OR
16886 l_clev_model_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
16887 l_clev_model_rec.sts_code := r_clev_model_rec.sts_code;
16888 END IF;
16889 -- Build klev Model Line Record
16890 l_klev_model_rec := r_klev_model_rec;
16891 -- To Get the cimv Model Line Record
16892 x_return_status := get_rec_cimv(l_clev_model_rec.id,
16893 l_clev_model_rec.dnz_chr_id,
16894 r_cimv_model_rec);
16895 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16896 OKL_API.set_message(p_app_name => G_APP_NAME,
16897 p_msg_name => G_FETCHING_INFO,
16898 p_token1 => G_REC_NAME_TOKEN,
16899 p_token1_value => 'OKC_K_ITEMS_V Record');
16900 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16901 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16902 OKL_API.set_message(p_app_name => G_APP_NAME,
16903 p_msg_name => G_FETCHING_INFO,
16904 p_token1 => G_REC_NAME_TOKEN,
16905 p_token1_value => 'OKC_K_ITEMS_V Record');
16906 RAISE OKL_API.G_EXCEPTION_ERROR;
16907 END IF;
16908 --Build Model cimv item rec
16909 l_cimv_model_rec.id := r_cimv_model_rec.id;
16910 IF (l_cimv_model_rec.exception_yn IS NUll OR
16911 l_cimv_model_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
16912 l_cimv_model_rec.exception_yn := r_cimv_model_rec.exception_yn;
16913 END IF;
16914 IF (l_cimv_model_rec.dnz_chr_id IS NUll OR
16915 l_cimv_model_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
16916 l_cimv_model_rec.dnz_chr_id := r_cimv_model_rec.dnz_chr_id;
16917 END IF;
16918 IF (l_cimv_model_rec.cle_id IS NUll OR
16919 l_cimv_model_rec.cle_id = OKL_API.G_MISS_NUM) THEN
16920 l_cimv_model_rec.cle_id := r_cimv_model_rec.cle_id;
16921 END IF;
16922 -- We need to check the below since we do not have to call the formula
16923 -- Engine avery time. Which means that we have to call the formula Engine
16924 -- only if the price unit and number of items change.
16925 /*
16926 IF l_clev_model_rec.price_unit <> r_clev_model_rec.price_unit AND
16927 l_cimv_model_rec.number_of_items <> r_cimv_model_rec.number_of_items THEN
16928 l_klev_fin_rec.residual_percentage <> r_klev_fin_rec.residual_percentage AND
16929 l_klev_fin_rec.residual_value <> r_klev_fin_rec.residual_value THEN
16930 l_go_for_calc := 'Y';
16931 ELSIF l_clev_model_rec.price_unit <> r_clev_model_rec.price_unit OR
16932 l_cimv_model_rec.number_of_items <> r_cimv_model_rec.number_of_items THEN
16933 l_klev_fin_rec.residual_percentage <> r_klev_fin_rec.residual_percentage OR
16934 l_klev_fin_rec.residual_value <> r_klev_fin_rec.residual_value THEN
16935 l_go_for_calc := 'Y';
16936 ELSE
16937 l_go_for_calc := 'N';
16938 END IF;
16939 */
16940 -- Updating of the Model Line and Item Record
16941 update_model_line(p_api_version => p_api_version,
16942 p_init_msg_list => p_init_msg_list,
16943 x_return_status => x_return_status,
16944 x_msg_count => x_msg_count,
16945 x_msg_data => x_msg_data,
16946 P_new_yn => l_new_yn,
16947 p_asset_number => p_asset_number,
16948 p_clev_rec => l_clev_model_rec,
16949 p_klev_rec => l_klev_model_rec,
16950 p_cimv_rec => l_cimv_model_rec,
16951 x_clev_rec => x_clev_model_rec,
16952 x_klev_rec => l_klev_model_rec_out,
16953 x_cimv_rec => l_cimv_model_rec_out);
16954 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16955 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16956 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16957 RAISE OKL_API.G_EXCEPTION_ERROR;
16958 END IF;
16959
16960 --Bug# 4161221: start
16961 -- Update No. of Units on Add-on line when there is a change in the
16962 -- No. of Units on Asset line.
16963 FOR r_addon_line_id IN c_addon_line_id(p_model_cle_id => x_clev_model_rec.id,
16964 p_chr_id => x_clev_model_rec.dnz_chr_id) LOOP
16965
16966 -- To Get the cimv Addon Line Record
16967 x_return_status := get_rec_cimv(r_addon_line_id.id,
16968 x_clev_model_rec.dnz_chr_id,
16969 r_cimv_addon_rec);
16970 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16971 OKL_API.set_message(p_app_name => G_APP_NAME,
16972 p_msg_name => G_FETCHING_INFO,
16973 p_token1 => G_REC_NAME_TOKEN,
16974 p_token1_value => 'OKC_K_ITEMS_V Record');
16975 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
16976 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16977 OKL_API.set_message(p_app_name => G_APP_NAME,
16978 p_msg_name => G_FETCHING_INFO,
16979 p_token1 => G_REC_NAME_TOKEN,
16980 p_token1_value => 'OKC_K_ITEMS_V Record');
16981 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
16982 END IF;
16983
16984 IF (NVL(r_cimv_addon_rec.number_of_items,0) <>
16985 NVL(l_cimv_model_rec_out.number_of_items,0)) THEN
16986
16987 --Build addon cimv item rec
16988 r_cimv_addon_rec.number_of_items := l_cimv_model_rec_out.number_of_items;
16989 -- Updating of the addon Item Record
16990
16991 OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version => p_api_version,
16992 p_init_msg_list => p_init_msg_list,
16993 x_return_status => x_return_status,
16994 x_msg_count => x_msg_count,
16995 x_msg_data => x_msg_data,
16996 p_cimv_rec => r_cimv_addon_rec,
16997 x_cimv_rec => rx_cimv_addon_rec);
16998 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16999 OKL_API.set_message(p_app_name => G_APP_NAME,
17000 p_msg_name => G_UPDATING_ADDON_ITEM);
17001 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17002 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17003 OKL_API.set_message(p_app_name => G_APP_NAME,
17004 p_msg_name => G_UPDATING_ADDON_ITEM);
17005 RAISE OKL_API.G_EXCEPTION_ERROR;
17006 END IF;
17007 END IF;
17008 END LOOP;
17009 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17010 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17011 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17012 RAISE OKL_API.G_EXCEPTION_ERROR;
17013 END IF;
17014 --Bug# 4161221: end
17015
17016 lv_model_object_id1 := l_cimv_model_rec_out.object1_id1;
17017 lv_model_object_id2 := l_cimv_model_rec_out.object1_id2;
17018 IF l_go_for_calc = 'Y' THEN
17019 -- Calculate the OEC to Populate the OKL_K_LINES_V.OEC
17020 oec_calc_upd_fin_rec(p_api_version => p_api_version,
17021 p_init_msg_list => p_init_msg_list,
17022 x_return_status => x_return_status,
17023 x_msg_count => x_msg_count,
17024 x_msg_data => x_msg_data,
17025 P_new_yn => P_new_yn,
17026 p_asset_number => p_asset_number,
17027 -- 4414408
17028 p_top_line_id => l_clev_fin_rec.id,
17029 p_dnz_chr_id => x_clev_model_rec.dnz_chr_id,
17030 x_fin_clev_rec => x_clev_fin_rec,
17031 x_fin_klev_rec => l_klev_fin_rec_out,
17032 x_oec => ln_klev_fin_oec,
17033 p_validate_fin_line => OKL_API.G_TRUE);
17034 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17035 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17036 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17037 RAISE OKL_API.G_EXCEPTION_ERROR;
17038 END IF;
17039 -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
17040 cap_amt_calc_upd_fin_rec(p_api_version => p_api_version,
17041 p_init_msg_list => p_init_msg_list,
17042 x_return_status => x_return_status,
17043 x_msg_count => x_msg_count,
17044 x_msg_data => x_msg_data,
17045 P_new_yn => P_new_yn,
17046 p_asset_number => p_asset_number,
17047 -- 4414408
17048 p_top_line_id => l_clev_fin_rec.id,
17049 p_dnz_chr_id => x_clev_model_rec.dnz_chr_id,
17050 x_fin_clev_rec => x_clev_fin_rec,
17051 x_fin_klev_rec => l_klev_fin_rec_out,
17052 x_cap_amt => ln_klev_fin_cap,
17053 p_validate_fin_line => OKL_API.G_TRUE);
17054 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17055 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17056 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17057 RAISE OKL_API.G_EXCEPTION_ERROR;
17058 END IF;
17059 IF l_klev_fin_rec.residual_percentage = OKL_API.G_MISS_NUM THEN
17060 l_klev_fin_rec.residual_percentage := null;
17061 ELSIF l_klev_fin_rec.residual_value = OKL_API.G_MISS_NUM THEN
17062 l_klev_fin_rec.residual_value := null;
17063 END IF;
17064 -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
17065 IF (l_klev_fin_rec.residual_percentage IS NOT NULL OR
17066 l_klev_fin_rec.residual_percentage <> OKL_API.G_MISS_NUM) AND
17067 (l_klev_fin_rec.residual_value IS NOT NULL OR
17068 l_klev_fin_rec.residual_value <> OKL_API.G_MISS_NUM) THEN
17069 IF l_klev_fin_rec.residual_value <> r_klev_fin_rec.residual_value THEN
17070
17071 l_top_line_id := x_clev_fin_rec.id;
17072 l_oec := l_klev_fin_rec_out.oec;
17073
17074 get_res_per_upd_fin_rec(p_api_version => p_api_version,
17075 p_init_msg_list => p_init_msg_list,
17076 x_return_status => x_return_status,
17077 x_msg_count => x_msg_count,
17078 x_msg_data => x_msg_data,
17079 P_new_yn => P_new_yn,
17080 p_asset_number => p_asset_number,
17081 p_res_value => l_klev_fin_rec.residual_value,
17082 p_oec => l_oec, --l_klev_fin_rec_out.oec
17083 p_top_line_id => l_top_line_id, --x_clev_fin_rec.id,
17084 p_dnz_chr_id => x_clev_model_rec.dnz_chr_id,
17085 x_fin_clev_rec => x_clev_fin_rec,
17086 x_fin_klev_rec => l_klev_fin_rec_out,
17087 p_validate_fin_line => OKL_API.G_TRUE);
17088 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17089 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17090 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17091 RAISE OKL_API.G_EXCEPTION_ERROR;
17092 END IF;
17093 ELSIF l_klev_fin_rec.residual_percentage <> r_klev_fin_rec.residual_percentage THEN
17094 res_value_calc_upd_fin_rec(p_api_version => p_api_version,
17095 p_init_msg_list => p_init_msg_list,
17096 x_return_status => x_return_status,
17097 x_msg_count => x_msg_count,
17098 x_msg_data => x_msg_data,
17099 P_new_yn => P_new_yn,
17100 p_asset_number => p_asset_number,
17101 -- 4414408
17102 p_top_line_id => x_clev_model_rec.cle_id,
17103 p_dnz_chr_id => x_clev_model_rec.dnz_chr_id,
17104 x_fin_clev_rec => x_clev_fin_rec,
17105 x_fin_klev_rec => l_klev_fin_rec_out,
17106 x_res_value => ln_klev_fin_res,
17107 p_validate_fin_line => OKL_API.G_TRUE);
17108 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17109 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17110 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17111 RAISE OKL_API.G_EXCEPTION_ERROR;
17112 END IF;
17113 END IF;
17114 ELSIF (l_klev_fin_rec.residual_percentage IS NULL OR
17115 l_klev_fin_rec.residual_percentage = OKL_API.G_MISS_NUM) AND
17116 (l_klev_fin_rec.residual_value IS NOT NULL OR
17117 l_klev_fin_rec.residual_value <> OKL_API.G_MISS_NUM) THEN
17118
17119 l_top_line_id := x_clev_fin_rec.id;
17120 l_oec := l_klev_fin_rec_out.oec;
17121
17122 get_res_per_upd_fin_rec(p_api_version => p_api_version,
17123 p_init_msg_list => p_init_msg_list,
17124 x_return_status => x_return_status,
17125 x_msg_count => x_msg_count,
17126 x_msg_data => x_msg_data,
17127 P_new_yn => P_new_yn,
17128 p_asset_number => p_asset_number,
17129 p_res_value => l_klev_fin_rec.residual_value,
17130 p_oec => l_oec, --l_klev_fin_rec_out.oec
17131 p_top_line_id => l_top_line_id, --x_clev_fin_rec.id,
17132 p_dnz_chr_id => x_clev_model_rec.dnz_chr_id,
17133 x_fin_clev_rec => x_clev_fin_rec,
17134 x_fin_klev_rec => l_klev_fin_rec_out,
17135 p_validate_fin_line => OKL_API.G_TRUE);
17136 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17137 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17138 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17139 RAISE OKL_API.G_EXCEPTION_ERROR;
17140 END IF;
17141 ELSIF (l_klev_fin_rec.residual_percentage IS NOT NULL OR
17142 l_klev_fin_rec.residual_percentage <> OKL_API.G_MISS_NUM) AND
17143 (l_klev_fin_rec.residual_value IS NULL OR
17144 l_klev_fin_rec.residual_value = OKL_API.G_MISS_NUM) THEN
17145 res_value_calc_upd_fin_rec(p_api_version => p_api_version,
17146 p_init_msg_list => p_init_msg_list,
17147 x_return_status => x_return_status,
17148 x_msg_count => x_msg_count,
17149 x_msg_data => x_msg_data,
17150 P_new_yn => P_new_yn,
17151 p_asset_number => p_asset_number,
17152 -- 4414408
17153 p_top_line_id => x_clev_model_rec.cle_id,
17154 p_dnz_chr_id => x_clev_model_rec.dnz_chr_id,
17155 x_fin_clev_rec => x_clev_fin_rec,
17156 x_fin_klev_rec => l_klev_fin_rec_out,
17157 x_res_value => ln_klev_fin_res,
17158 p_validate_fin_line => OKL_API.G_TRUE);
17159 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17160 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17161 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17162 RAISE OKL_API.G_EXCEPTION_ERROR;
17163 END IF;
17164 END IF;
17165 END IF;
17166 IF (l_klev_fin_rec_out.oec IS NOT NULL OR
17167 l_klev_fin_rec_out.oec <> OKL_API.G_MISS_NUM) AND
17168 (l_klev_fin_rec_out.residual_value IS NOT NULL OR
17169 l_klev_fin_rec_out.residual_value <> OKL_API.G_MISS_NUM) THEN
17170 IF l_klev_fin_rec_out.residual_value > l_klev_fin_rec_out.oec THEN
17171 OKL_API.set_message(p_app_name => G_APP_NAME,
17172 p_msg_name => G_SALVAGE_VALUE);
17173 RAISE OKL_API.G_EXCEPTION_ERROR;
17174 END IF;
17175 END IF;
17176 -- Updating of the Fixed Asset Line Process
17177 -- To Get the cle fa Line Record
17178 x_return_status := get_rec_clev(l_clev_fa_rec.id,
17179 r_clev_fa_rec);
17180 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17181 OKL_API.set_message(p_app_name => G_APP_NAME,
17182 p_msg_name => G_FETCHING_INFO,
17183 p_token1 => G_REC_NAME_TOKEN,
17184 p_token1_value => 'OKC_K_LINES_V Record');
17185 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17186 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17187 OKL_API.set_message(p_app_name => G_APP_NAME,
17188 p_msg_name => G_FETCHING_INFO,
17189 p_token1 => G_REC_NAME_TOKEN,
17190 p_token1_value => 'OKC_K_LINES_V Record');
17191 RAISE OKL_API.G_EXCEPTION_ERROR;
17192 END IF;
17193 -- To Get the kle fa Line Record
17194 x_return_status := get_rec_klev(l_clev_fa_rec.id,
17195 r_klev_fa_rec);
17196 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17197 OKL_API.set_message(p_app_name => G_APP_NAME,
17198 p_msg_name => G_FETCHING_INFO,
17199 p_token1 => G_REC_NAME_TOKEN,
17200 p_token1_value => 'OKL_K_LINES_V Record');
17201 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17202 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17203 OKL_API.set_message(p_app_name => G_APP_NAME,
17204 p_msg_name => G_FETCHING_INFO,
17205 p_token1 => G_REC_NAME_TOKEN,
17206 p_token1_value => 'OKL_K_LINES_V Record');
17207 RAISE OKL_API.G_EXCEPTION_ERROR;
17208 END IF;
17209 IF r_klev_fa_rec.id <> r_clev_fa_rec.id THEN
17210 OKL_API.set_message(p_app_name => G_APP_NAME,
17211 p_msg_name => G_LINE_RECORD);
17212 RAISE OKL_API.G_EXCEPTION_ERROR;
17213 END IF;
17214 -- Build clev fa Line Record
17215 l_clev_fa_rec.chr_id := null;
17216 IF (l_clev_fa_rec.cle_id IS NUll OR
17217 l_clev_fa_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17218 l_clev_fa_rec.cle_id := r_clev_fa_rec.cle_id;
17219 END IF;
17220 IF (l_clev_fa_rec.dnz_chr_id IS NUll OR
17221 l_clev_fa_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
17222 l_clev_fa_rec.dnz_chr_id := r_clev_fa_rec.dnz_chr_id;
17223 END IF;
17224 IF (l_clev_fa_rec.display_sequence IS NUll OR
17225 l_clev_fa_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
17226 l_clev_fa_rec.display_sequence := r_clev_fa_rec.display_sequence;
17227 END IF;
17228 IF (l_clev_fa_rec.lse_id IS NUll OR
17229 l_clev_fa_rec.lse_id = OKL_API.G_MISS_NUM) THEN
17230 l_clev_fa_rec.lse_id := r_clev_fa_rec.lse_id;
17231 END IF;
17232 IF (l_clev_fa_rec.exception_yn IS NUll OR
17233 l_clev_fa_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
17234 l_clev_fa_rec.exception_yn := r_clev_fa_rec.exception_yn;
17235 END IF;
17236 IF (l_clev_fa_rec.line_number IS NUll OR
17237 l_clev_fa_rec.line_number = OKL_API.G_MISS_CHAR) THEN
17238 l_clev_fa_rec.line_number := r_clev_fa_rec.line_number;
17239 END IF;
17240 IF (l_clev_fa_rec.sts_code IS NUll OR
17241 l_clev_fa_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
17242 l_clev_fa_rec.sts_code := r_clev_fa_rec.sts_code;
17243 END IF;
17244 -- Build klev fa Line Record
17245 l_klev_fa_rec := r_klev_fa_rec;
17246 -- To Get the cimv fa Line Record
17247 x_return_status := get_rec_cimv(l_clev_fa_rec.id,
17248 l_clev_fa_rec.dnz_chr_id,
17249 r_cimv_fa_rec);
17250 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17251 OKL_API.set_message(p_app_name => G_APP_NAME,
17252 p_msg_name => G_FETCHING_INFO,
17253 p_token1 => G_REC_NAME_TOKEN,
17254 p_token1_value => 'OKC_K_ITEMS_V Record');
17255 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17256 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17257 OKL_API.set_message(p_app_name => G_APP_NAME,
17258 p_msg_name => G_FETCHING_INFO,
17259 p_token1 => G_REC_NAME_TOKEN,
17260 p_token1_value => 'OKC_K_ITEMS_V Record');
17261 RAISE OKL_API.G_EXCEPTION_ERROR;
17262 END IF;
17263 --Build cimv fa item rec
17264 l_cimv_fa_rec.id := r_cimv_fa_rec.id;
17265 IF (l_cimv_fa_rec.exception_yn IS NUll OR
17266 l_cimv_fa_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
17267 l_cimv_fa_rec.exception_yn := r_cimv_fa_rec.exception_yn;
17268 END IF;
17269 IF (l_cimv_fa_rec.dnz_chr_id IS NUll OR
17270 l_cimv_fa_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
17271 l_cimv_fa_rec.dnz_chr_id := r_cimv_fa_rec.dnz_chr_id;
17272 END IF;
17273 IF (l_cimv_fa_rec.cle_id IS NUll OR
17274 l_cimv_fa_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17275 l_cimv_fa_rec.cle_id := r_cimv_fa_rec.cle_id;
17276 END IF;
17277 IF (l_cimv_fa_rec.object1_id1 IS NUll OR
17278 l_cimv_fa_rec.object1_id1 = OKL_API.G_MISS_CHAR) THEN
17279 l_cimv_fa_rec.object1_id1 := null;
17280 ELSE
17281 l_cimv_fa_rec.object1_id1 := r_cimv_ib_rec.cle_id;
17282 END IF;
17283 IF (l_cimv_fa_rec.object1_id2 IS NUll OR
17284 l_cimv_fa_rec.object1_id2 = OKL_API.G_MISS_CHAR) THEN
17285 l_cimv_fa_rec.object1_id2 := null;
17286 ELSE
17287 l_cimv_fa_rec.object1_id2 := r_cimv_ib_rec.cle_id;
17288 END IF;
17289 --Build talv fa item rec
17290 l_talv_fa_rec.id := r_talv_fa_rec.id;
17291 l_talv_fa_rec.object_version_number := r_talv_fa_rec.object_version_number;
17292 l_talv_fa_rec.tas_id := r_talv_fa_rec.tas_id;
17293 l_talv_fa_rec.sfwt_flag := r_talv_fa_rec.sfwt_flag;
17294 l_talv_fa_rec.tal_type := r_talv_fa_rec.tal_type;
17295 l_talv_fa_rec.line_number := r_talv_fa_rec.line_number;
17296 l_talv_fa_rec.asset_number := p_asset_number;
17297 IF (l_talv_fa_rec.kle_id IS NUll OR
17298 l_talv_fa_rec.kle_id = OKL_API.G_MISS_NUM) THEN
17299 l_talv_fa_rec.kle_id := r_talv_fa_rec.kle_id;
17300 END IF;
17301 IF (l_talv_fa_rec.original_cost IS NUll OR
17302 l_talv_fa_rec.original_cost = OKL_API.G_MISS_NUM) THEN
17303 l_talv_fa_rec.original_cost := r_talv_fa_rec.original_cost;
17304 END IF;
17305 IF (l_talv_fa_rec.depreciation_cost IS NUll OR
17306 l_talv_fa_rec.depreciation_cost = OKL_API.G_MISS_NUM) THEN
17307 l_talv_fa_rec.depreciation_cost := r_talv_fa_rec.depreciation_cost;
17308 END IF;
17309
17310 IF (l_talv_fa_rec.description IS NUll OR
17311 l_talv_fa_rec.description = OKL_API.G_MISS_CHAR) THEN
17312 l_talv_fa_rec.description := r_talv_fa_rec.description;
17313 END IF;
17314 IF (l_talv_fa_rec.current_units IS NUll OR
17315 l_talv_fa_rec.current_units = OKL_API.G_MISS_NUM) THEN
17316 l_talv_fa_rec.current_units := r_talv_fa_rec.current_units;
17317 END IF;
17318
17319 --Bug# 4899328: For online rebook, update depreciation_cost and
17320 -- original_cost to line capital amount instead of line oec
17321 --check for rebook contract
17322 l_rbk_khr := '?';
17323 OPEN l_chk_rbk_csr (p_chr_id => l_clev_fin_rec.dnz_chr_id);
17324 FETCH l_chk_rbk_csr INTO l_rbk_khr;
17325 CLOSE l_chk_rbk_csr;
17326
17327 If l_rbk_khr = '!' Then
17328
17329 l_line_capital_amount := NVL(l_klev_fin_rec_out.capital_amount,ln_klev_fin_cap);
17330 l_talv_fa_rec.depreciation_cost := NVL(l_line_capital_amount,l_talv_fa_rec.depreciation_cost);
17331 l_talv_fa_rec.original_cost := NVL(l_line_capital_amount,l_talv_fa_rec.original_cost);
17332
17333 Else
17334 -- We are doing the below to make sure the oec is euqated to depreciation cost
17335 -- and the original cost.
17336 l_talv_fa_rec.depreciation_cost := NVL(l_klev_fin_rec_out.oec,l_talv_fa_rec.depreciation_cost);
17337 l_talv_fa_rec.original_cost := NVL(l_klev_fin_rec_out.oec,ln_klev_fin_oec);
17338 End If;
17339 --Bug# 4899328: End
17340
17341 l_clev_fa_rec.item_description := l_talv_fa_rec.description;
17342 -- A Bug fix Since we populate the year manufactured into OKL_TXL_ASSETS_B only
17343 -- We cannot use the information after the assets have been put into FA
17344 -- So we decided to populate the year Manufactured into OKL_K_LINES.YEAR_BUILT
17345 -- As the Datatype matches for both.
17346 l_klev_fa_rec.Year_Built := l_talv_fa_rec.year_manufactured;
17347 -- Updating of the Fixed Asset Line and item/Txl Asset Info
17348
17349 -- start NISINHA Bug# 6490572
17350 l_klev_fa_rec.model_number := l_talv_fa_rec.model_number;
17351 l_klev_fa_rec.manufacturer_name := l_talv_fa_rec.manufacturer_name;
17352 --end NISINHA Bug# 6490572
17353 update_fixed_asset_line(p_api_version => p_api_version,
17354 p_init_msg_list => p_init_msg_list,
17355 x_return_status => x_return_status,
17356 x_msg_count => x_msg_count,
17357 x_msg_data => x_msg_data,
17358 P_new_yn => l_new_yn,
17359 p_asset_number => p_asset_number,
17360 p_clev_rec => l_clev_fa_rec,
17361 p_klev_rec => l_klev_fa_rec,
17362 p_cimv_rec => l_cimv_fa_rec,
17363 p_talv_rec => l_talv_fa_rec,
17364 x_clev_rec => x_clev_fa_rec,
17365 x_klev_rec => l_klev_fa_rec_out,
17366 x_cimv_rec => l_cimv_fa_rec_out,
17367 x_talv_rec => l_talv_fa_rec_out);
17368 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17369 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17370 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17371 RAISE OKL_API.G_EXCEPTION_ERROR;
17372 END IF;
17373 -- Updating Asset Lines Details Asset Number
17374 update_asset_line_details(p_api_version => p_api_version,
17375 p_init_msg_list => p_init_msg_list,
17376 x_return_status => x_return_status,
17377 x_msg_count => x_msg_count,
17378 x_msg_data => x_msg_data,
17379 p_asset_number => p_asset_number,
17380 p_original_cost => l_talv_fa_rec_out.original_cost,
17381 p_tal_id => l_talv_fa_rec_out.ID);
17382 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17383 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17384 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17385 RAISE OKL_API.G_EXCEPTION_ERROR;
17386 END IF;
17387 IF p_new_yn = 'Y' THEN
17388 -- Updating of the Install Base Line Process
17389 -- To Get the cle IB Line Record
17390 x_return_status := get_rec_clev(l_clev_ib_rec.id,
17391 r_clev_ib_rec);
17392 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17393 OKL_API.set_message(p_app_name => G_APP_NAME,
17394 p_msg_name => G_FETCHING_INFO,
17395 p_token1 => G_REC_NAME_TOKEN,
17396 p_token1_value => 'OKC_K_LINES_V Record');
17397 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17398 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17399 OKL_API.set_message(p_app_name => G_APP_NAME,
17400 p_msg_name => G_FETCHING_INFO,
17401 p_token1 => G_REC_NAME_TOKEN,
17402 p_token1_value => 'OKC_K_LINES_V Record');
17403 RAISE OKL_API.G_EXCEPTION_ERROR;
17404 END IF;
17405 -- To Get the kle IB Line Record
17406 x_return_status := get_rec_klev(l_clev_ib_rec.id,
17407 r_klev_ib_rec);
17408 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17409 OKL_API.set_message(p_app_name => G_APP_NAME,
17410 p_msg_name => G_FETCHING_INFO,
17411 p_token1 => G_REC_NAME_TOKEN,
17412 p_token1_value => 'OKL_K_LINES_V Record');
17413 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17414 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17415 OKL_API.set_message(p_app_name => G_APP_NAME,
17416 p_msg_name => G_FETCHING_INFO,
17417 p_token1 => G_REC_NAME_TOKEN,
17418 p_token1_value => 'OKL_K_LINES_V Record');
17419 RAISE OKL_API.G_EXCEPTION_ERROR;
17420 END IF;
17421 IF r_clev_ib_rec.id <> r_klev_ib_rec.id THEN
17422 OKL_API.set_message(p_app_name => G_APP_NAME,
17423 p_msg_name => G_LINE_RECORD);
17424 RAISE OKL_API.G_EXCEPTION_ERROR;
17425 END IF;
17426 --Build the clev Top Line Record
17427 l_clev_ib_rec.chr_id := null;
17428 IF (l_clev_ib_rec.cle_id IS NUll OR
17429 l_clev_ib_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17430 l_clev_ib_rec.cle_id := r_clev_ib_rec.cle_id;
17431 END IF;
17432 IF (l_clev_ib_rec.dnz_chr_id IS NUll OR
17433 l_clev_ib_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
17434 l_clev_ib_rec.dnz_chr_id := r_clev_ib_rec.dnz_chr_id;
17435 END IF;
17436 IF (l_clev_ib_rec.lse_id IS NUll OR
17437 l_clev_ib_rec.lse_id = OKL_API.G_MISS_NUM) THEN
17438 l_clev_ib_rec.lse_id := r_clev_ib_rec.lse_id;
17439 END IF;
17440 IF (l_clev_ib_rec.display_sequence IS NUll OR
17441 l_clev_ib_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
17442 l_clev_ib_rec.display_sequence := r_clev_ib_rec.display_sequence;
17443 END IF;
17444 IF (l_clev_ib_rec.exception_yn IS NUll OR
17445 l_clev_ib_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
17446 l_clev_ib_rec.exception_yn := r_clev_ib_rec.exception_yn;
17447 END IF;
17448 IF (l_clev_ib_rec.line_number IS NUll OR
17449 l_clev_ib_rec.line_number = OKL_API.G_MISS_CHAR) THEN
17450 l_clev_ib_rec.line_number := r_clev_ib_rec.line_number;
17451 END IF;
17452 IF (l_clev_ib_rec.sts_code IS NUll OR
17453 l_clev_ib_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
17454 l_clev_ib_rec.sts_code := r_clev_ib_rec.sts_code;
17455 END IF;
17456 --Build the klev Top Line Record
17457 l_klev_ib_rec := r_klev_ib_rec;
17458 -- To Get the cimv ib Line Record
17459 x_return_status := get_rec_cimv(l_clev_ib_rec.id,
17460 l_clev_fin_rec.dnz_chr_id,
17461 r_cimv_ib_rec);
17462 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17463 OKL_API.set_message(p_app_name => G_APP_NAME,
17464 p_msg_name => G_FETCHING_INFO,
17465 p_token1 => G_REC_NAME_TOKEN,
17466 p_token1_value => 'OKC_K_ITEMS_V Record');
17467 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17468 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17469 OKL_API.set_message(p_app_name => G_APP_NAME,
17470 p_msg_name => G_FETCHING_INFO,
17471 p_token1 => G_REC_NAME_TOKEN,
17472 p_token1_value => 'OKC_K_ITEMS_V Record');
17473 RAISE OKL_API.G_EXCEPTION_ERROR;
17474 END IF;
17475 --Build cimv ib item rec
17476 l_cimv_ib_rec.id := r_cimv_ib_rec.id;
17477 IF (l_cimv_ib_rec.exception_yn IS NUll OR
17478 l_cimv_ib_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
17479 l_cimv_ib_rec.exception_yn := r_cimv_ib_rec.exception_yn;
17480 END IF;
17481 IF (l_cimv_ib_rec.dnz_chr_id IS NUll OR
17482 l_cimv_ib_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
17483 l_cimv_ib_rec.dnz_chr_id := r_cimv_ib_rec.dnz_chr_id;
17484 END IF;
17485 IF (l_cimv_ib_rec.cle_id IS NUll OR
17486 l_cimv_ib_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17487 l_cimv_ib_rec.cle_id := r_cimv_ib_rec.cle_id;
17488 END IF;
17489 IF (l_cimv_ib_rec.cle_id IS NUll OR
17490 l_cimv_ib_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17491 l_cimv_ib_rec.cle_id := r_cimv_ib_rec.cle_id;
17492 END IF;
17493 IF (l_cimv_ib_rec.cle_id IS NUll OR
17494 l_cimv_ib_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17495 l_cimv_ib_rec.cle_id := r_cimv_ib_rec.cle_id;
17496 END IF;
17497 IF (l_cimv_ib_rec.object1_id1 IS NUll OR
17498 l_cimv_ib_rec.object1_id1 = OKL_API.G_MISS_CHAR) THEN
17499 l_cimv_ib_rec.object1_id1 := null;
17500 ELSE
17501 l_cimv_ib_rec.object1_id1 := r_cimv_ib_rec.cle_id;
17502 END IF;
17503 IF (l_cimv_ib_rec.object1_id2 IS NUll OR
17504 l_cimv_ib_rec.object1_id2 = OKL_API.G_MISS_CHAR) THEN
17505 l_cimv_ib_rec.object1_id2 := null;
17506 ELSE
17507 l_cimv_ib_rec.object1_id2 := r_cimv_ib_rec.cle_id;
17508 END IF;
17509 -- To Get the itiv ib Line Record
17510 x_return_status := get_rec_itiv(l_clev_ib_rec.id,
17511 r_itiv_ib_rec);
17512 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17513 OKL_API.set_message(p_app_name => G_APP_NAME,
17514 p_msg_name => G_FETCHING_INFO,
17515 p_token1 => G_REC_NAME_TOKEN,
17516 p_token1_value => 'OKL_TXL_ITM_INSTS_V Record');
17517 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17518 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17519 OKL_API.set_message(p_app_name => G_APP_NAME,
17520 p_msg_name => G_FETCHING_INFO,
17521 p_token1 => G_REC_NAME_TOKEN,
17522 p_token1_value => 'OKL_TXL_ITM_INSTS_V Record');
17523 RAISE OKL_API.G_EXCEPTION_ERROR;
17524 END IF;
17525 --Build itiv ib item rec
17526 l_itiv_ib_rec.id := r_itiv_ib_rec.id;
17527 l_itiv_ib_rec.object_version_number := r_itiv_ib_rec.object_version_number;
17528 l_itiv_ib_rec.tas_id := r_itiv_ib_rec.tas_id;
17529 l_itiv_ib_rec.line_number := r_itiv_ib_rec.line_number;
17530 IF (l_itiv_ib_rec.kle_id IS NUll OR
17531 l_itiv_ib_rec.kle_id = OKL_API.G_MISS_NUM) THEN
17532 l_itiv_ib_rec.kle_id := r_itiv_ib_rec.kle_id;
17533 END IF;
17534 IF (l_itiv_ib_rec.instance_number_ib IS NUll OR
17535 l_itiv_ib_rec.instance_number_ib = OKL_API.G_MISS_CHAR) THEN
17536 l_itiv_ib_rec.instance_number_ib := r_itiv_ib_rec.instance_number_ib;
17537 END IF;
17538 -- Since the screen can give only party_site_id via l_itiv_tbl(j).object_id1_new
17539 -- We have to use the below function
17540 lv_object_id1_new := l_itiv_ib_rec.object_id1_new;
17541 x_return_status := get_party_site_id(p_object_id1_new => lv_object_id1_new,
17542 x_object_id1_new => l_itiv_ib_rec.object_id1_new,
17543 x_object_id2_new => l_itiv_ib_rec.object_id2_new);
17544 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17545 OKL_API.set_message(p_app_name => G_APP_NAME,
17546 p_msg_name => G_NO_MATCHING_RECORD,
17547 p_token1 => G_COL_NAME_TOKEN,
17548 p_token1_value => 'Party_site_id');
17549 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17550 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17551 OKL_API.set_message(p_app_name => G_APP_NAME,
17552 p_msg_name => G_NO_MATCHING_RECORD,
17553 p_token1 => G_COL_NAME_TOKEN,
17554 p_token1_value => 'Party_site_id');
17555 RAISE OKL_API.G_EXCEPTION_ERROR;
17556 END IF;
17557 IF (l_itiv_ib_rec.object_id1_new IS NUll OR
17558 l_itiv_ib_rec.object_id1_new = OKL_API.G_MISS_CHAR) THEN
17559 l_itiv_ib_rec.object_id1_new := r_itiv_ib_rec.object_id1_new;
17560 END IF;
17561 IF (l_itiv_ib_rec.object_id2_new IS NUll OR
17562 l_itiv_ib_rec.object_id2_new = OKL_API.G_MISS_CHAR) THEN
17563 l_itiv_ib_rec.object_id2_new := r_itiv_ib_rec.object_id2_new;
17564 END IF;
17565 IF (l_itiv_ib_rec.jtot_object_code_new IS NUll OR
17566 l_itiv_ib_rec.jtot_object_code_new = OKL_API.G_MISS_CHAR) THEN
17567 l_itiv_ib_rec.jtot_object_code_new := r_itiv_ib_rec.jtot_object_code_new;
17568 END IF;
17569 IF (l_itiv_ib_rec.mfg_serial_number_yn IS NUll OR
17570 l_itiv_ib_rec.mfg_serial_number_yn = OKL_API.G_MISS_CHAR) THEN
17571 l_itiv_ib_rec.mfg_serial_number_yn := r_itiv_ib_rec.mfg_serial_number_yn;
17572 END IF;
17573 IF (l_itiv_ib_rec.inventory_item_id IS NUll OR
17574 l_itiv_ib_rec.inventory_item_id = OKL_API.G_MISS_NUM) AND
17575 lv_model_object_id1 = r_itiv_ib_rec.inventory_item_id THEN
17576 l_itiv_ib_rec.inventory_item_id := r_itiv_ib_rec.inventory_item_id;
17577 ELSIF (l_itiv_ib_rec.inventory_item_id IS NOT NUll OR
17578 l_itiv_ib_rec.inventory_item_id <> OKL_API.G_MISS_NUM) AND
17579 lv_model_object_id1 <> r_itiv_ib_rec.inventory_item_id THEN
17580 l_itiv_ib_rec.inventory_item_id := lv_model_object_id1;
17581 ELSIF (l_itiv_ib_rec.inventory_item_id IS NUll OR
17582 l_itiv_ib_rec.inventory_item_id = OKL_API.G_MISS_NUM) OR
17583 lv_model_object_id1 <> r_itiv_ib_rec.inventory_item_id THEN
17584 l_itiv_ib_rec.inventory_item_id := lv_model_object_id1;
17585 END IF;
17586 IF (l_itiv_ib_rec.inventory_org_id IS NUll OR
17587 l_itiv_ib_rec.inventory_org_id = OKL_API.G_MISS_NUM) AND
17588 lv_model_object_id2 = r_itiv_ib_rec.inventory_org_id THEN
17589 l_itiv_ib_rec.inventory_org_id := r_itiv_ib_rec.inventory_org_id;
17590 ELSIF (l_itiv_ib_rec.inventory_org_id IS NOT NUll OR
17591 l_itiv_ib_rec.inventory_org_id <> OKL_API.G_MISS_NUM) AND
17592 lv_model_object_id2 <> r_itiv_ib_rec.inventory_org_id THEN
17593 l_itiv_ib_rec.inventory_org_id := lv_model_object_id2;
17594 ELSIF (l_itiv_ib_rec.inventory_org_id IS NUll OR
17595 l_itiv_ib_rec.inventory_org_id = OKL_API.G_MISS_NUM) OR
17596 lv_model_object_id2 <> r_itiv_ib_rec.inventory_org_id THEN
17597 l_itiv_ib_rec.inventory_org_id := lv_model_object_id2;
17598 END IF;
17599 -- Updating of the ib Line
17600 update_instance_ib_line(p_api_version => p_api_version,
17601 p_init_msg_list => p_init_msg_list,
17602 x_return_status => x_return_status,
17603 x_msg_count => x_msg_count,
17604 x_msg_data => x_msg_data,
17605 p_clev_rec => l_clev_ib_rec,
17606 p_klev_rec => l_klev_ib_rec,
17607 p_cimv_rec => l_cimv_ib_rec,
17608 p_itiv_rec => l_itiv_ib_rec,
17609 x_clev_rec => x_clev_ib_rec,
17610 x_klev_rec => l_klev_ib_rec_out,
17611 x_cimv_rec => l_cimv_ib_rec_out,
17612 x_itiv_rec => l_itiv_ib_rec_out);
17613 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17614 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17615 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17616 RAISE OKL_API.G_EXCEPTION_ERROR;
17617 END IF;
17618 -- Updating of the Instance Line
17619 -- To Get the cle IB Line Record
17620 x_return_status := get_rec_clev(l_clev_ib_rec.cle_id,
17621 r_clev_inst_rec);
17622 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17623 OKL_API.set_message(p_app_name => G_APP_NAME,
17624 p_msg_name => G_FETCHING_INFO,
17625 p_token1 => G_REC_NAME_TOKEN,
17626 p_token1_value => 'OKC_K_LINES_V Record');
17627 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17628 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17629 OKL_API.set_message(p_app_name => G_APP_NAME,
17630 p_msg_name => G_FETCHING_INFO,
17631 p_token1 => G_REC_NAME_TOKEN,
17632 p_token1_value => 'OKC_K_LINES_V Record');
17633 RAISE OKL_API.G_EXCEPTION_ERROR;
17634 END IF;
17635 -- To Get the kle IB Line Record
17636 x_return_status := get_rec_klev(l_clev_ib_rec.cle_id,
17637 r_klev_inst_rec);
17638 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17639 OKL_API.set_message(p_app_name => G_APP_NAME,
17640 p_msg_name => G_FETCHING_INFO,
17641 p_token1 => G_REC_NAME_TOKEN,
17642 p_token1_value => 'OKL_K_LINES_V Record');
17643 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17644 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17645 OKL_API.set_message(p_app_name => G_APP_NAME,
17646 p_msg_name => G_FETCHING_INFO,
17647 p_token1 => G_REC_NAME_TOKEN,
17648 p_token1_value => 'OKL_K_LINES_V Record');
17649 RAISE OKL_API.G_EXCEPTION_ERROR;
17650 END IF;
17651 IF r_clev_inst_rec.id <> r_klev_inst_rec.id THEN
17652 OKL_API.set_message(p_app_name => G_APP_NAME,
17653 p_msg_name => G_LINE_RECORD);
17654 RAISE OKL_API.G_EXCEPTION_ERROR;
17655 END IF;
17656 l_clev_inst_rec := r_clev_inst_rec;
17657 l_klev_inst_rec := r_klev_inst_rec;
17658 -- upating of the Instance Line
17659 update_instance_line(p_api_version => p_api_version,
17660 p_init_msg_list => p_init_msg_list,
17661 x_return_status => x_return_status,
17662 x_msg_count => x_msg_count,
17663 x_msg_data => x_msg_data,
17664 p_clev_rec => l_clev_inst_rec,
17665 p_klev_rec => l_klev_inst_rec,
17666 p_itiv_rec => l_itiv_inst_rec,
17667 x_clev_rec => l_clev_inst_rec_out,
17668 x_klev_rec => l_klev_inst_rec_out,
17669 x_itiv_rec => l_itiv_inst_rec_out);
17670 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17671 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17672 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17673 RAISE OKL_API.G_EXCEPTION_ERROR;
17674 END IF;
17675 ELSIF p_new_yn = 'N' THEN
17676 FOR r_asset_iti IN c_asset_iti(p_asset_number => p_asset_number,
17677 p_dnz_chr_id => x_clev_fa_rec.dnz_chr_id) LOOP
17678 -- To Get the itiv ib Line Record
17679 x_return_status := get_rec_itiv(r_asset_iti.id,
17680 n_itiv_ib_rec);
17681 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17682 OKL_API.set_message(p_app_name => G_APP_NAME,
17683 p_msg_name => G_FETCHING_INFO,
17684 p_token1 => G_REC_NAME_TOKEN,
17685 p_token1_value => 'OKL_TXL_ITM_INSTS_V Record');
17686 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
17687 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17688 OKL_API.set_message(p_app_name => G_APP_NAME,
17689 p_msg_name => G_FETCHING_INFO,
17690 p_token1 => G_REC_NAME_TOKEN,
17691 p_token1_value => 'OKL_TXL_ITM_INSTS_V Record');
17692 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
17693 END IF;
17694 n_itiv_ib_rec.object_id1_new := p_itiv_ib_rec.object_id1_new;
17695 n_itiv_ib_rec.object_id1_old := p_itiv_ib_rec.object_id1_new;
17696 OKL_TXL_ITM_INSTS_PUB.update_txl_itm_insts(p_api_version => p_api_version,
17697 p_init_msg_list => p_init_msg_list,
17698 x_return_status => x_return_status,
17699 x_msg_count => x_msg_count,
17700 x_msg_data => x_msg_data,
17701 p_iipv_rec => n_itiv_ib_rec,
17702 x_iipv_rec => nx_itiv_ib_rec);
17703 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17704 OKL_API.set_message(p_app_name => G_APP_NAME,
17705 p_msg_name => G_ITI_ID);
17706 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
17707 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17708 OKL_API.set_message(p_app_name => G_APP_NAME,
17709 p_msg_name => G_ITI_ID);
17710 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
17711 END IF;
17712 END LOOP;
17713 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17714 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17715 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17716 RAISE OKL_API.G_EXCEPTION_ERROR;
17717 END IF;
17718 END IF;
17719
17720 -- rravikir modified.
17721 -- Update the OKL_TXL_ITM_INSTS table, when the item or install site gets changed.
17722 ln_txl_itm_id := l_itiv_ib_rec_out.id;
17723 lv_object_id1 := l_itiv_ib_rec_out.object_id1_new;
17724 lv_object_id2 := l_itiv_ib_rec_out.object_id2_new;
17725 ln_inv_itm_id := l_itiv_ib_rec_out.inventory_item_id;
17726 ln_inv_org_id := l_itiv_ib_rec_out.inventory_org_id;
17727 lv_jtot_object_code_new := l_itiv_ib_rec_out.jtot_object_code_new;
17728 l_top_line_id := x_clev_fin_rec.id;
17729 FOR r_get_txl_itm_insts IN c_get_txl_itm_insts(p_top_line_id => l_top_line_id,
17730 p_txl_inst_id => ln_txl_itm_id) LOOP
17731 k_itiv_ib_rec.id := r_get_txl_itm_insts.id;
17732 k_itiv_ib_rec.object_id1_new := lv_object_id1;
17733 k_itiv_ib_rec.object_id2_new := lv_object_id2;
17734 k_itiv_ib_rec.inventory_item_id := ln_inv_itm_id;
17735 k_itiv_ib_rec.inventory_org_id := ln_inv_org_id;
17736 k_itiv_ib_rec.jtot_object_code_new := lv_jtot_object_code_new;
17737 OKL_TXL_ITM_INSTS_PUB.update_txl_itm_insts(p_api_version => p_api_version,
17738 p_init_msg_list => p_init_msg_list,
17739 x_return_status => x_return_status,
17740 x_msg_count => x_msg_count,
17741 x_msg_data => x_msg_data,
17742 p_iipv_rec => k_itiv_ib_rec,
17743 x_iipv_rec => kx_itiv_ib_rec);
17744 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17745 OKL_API.set_message(p_app_name => G_APP_NAME,
17746 p_msg_name => G_ITI_ID);
17747 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
17748 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17749 OKL_API.set_message(p_app_name => G_APP_NAME,
17750 p_msg_name => G_ITI_ID);
17751 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
17752 END IF;
17753 END LOOP;
17754 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17755 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17756 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17757 RAISE OKL_API.G_EXCEPTION_ERROR;
17758 END IF;
17759 -- end rravikir
17760
17761 -- We need to change the status of the header whenever there is updating happening
17762 -- after the contract status is approved
17763 IF (l_clev_inst_rec_out.dnz_chr_id is NOT NULL) AND
17764 (l_clev_inst_rec_out.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
17765 --cascade edit status on to lines
17766 okl_contract_status_pub.cascade_lease_status_edit
17767 (p_api_version => p_api_version,
17768 p_init_msg_list => p_init_msg_list,
17769 x_return_status => x_return_status,
17770 x_msg_count => x_msg_count,
17771 x_msg_data => x_msg_data,
17772 p_chr_id => l_clev_inst_rec_out.dnz_chr_id);
17773 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17774 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17775 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17776 RAISE OKL_API.G_EXCEPTION_ERROR;
17777 END IF;
17778 END IF;
17779 End If; --release asset : Bug# 3533936
17780 OKL_API.END_ACTIVITY (x_msg_count,
17781 x_msg_data );
17782 EXCEPTION
17783 WHEN OKL_API.G_EXCEPTION_ERROR THEN
17784 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
17785 l_api_name,
17786 G_PKG_NAME,
17787 'OKL_API.G_RET_STS_ERROR',
17788 x_msg_count,
17789 x_msg_data,
17790 '_PVT');
17791 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
17792 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
17793 l_api_name,
17794 G_PKG_NAME,
17795 'OKL_API.G_RET_STS_UNEXP_ERROR',
17796 x_msg_count,
17797 x_msg_data,
17798 '_PVT');
17799 WHEN OTHERS THEN
17800 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
17801 l_api_name,
17802 G_PKG_NAME,
17803 'OTHERS',
17804 x_msg_count,
17805 x_msg_data,
17806 '_PVT');
17807 END update_all_line;
17808 -------------------------------------------------------------------------------------------------------
17809 ----------------- Main Process for Creation of instance and Install base line ------------------------
17810 -------------------------------------------------------------------------------------------------------
17811 PROCEDURE create_ints_ib_line(
17812 p_api_version IN NUMBER,
17813 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
17814 x_return_status OUT NOCOPY VARCHAR2,
17815 x_msg_count OUT NOCOPY NUMBER,
17816 x_msg_data OUT NOCOPY VARCHAR2,
17817 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
17818 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
17819 p_current_units IN OKL_TXL_ASSETS_V.CURRENT_UNITS%TYPE,
17820 p_clev_ib_rec IN clev_rec_type,
17821 p_itiv_ib_tbl IN itiv_tbl_type,
17822 x_clev_ib_tbl OUT NOCOPY clev_tbl_type,
17823 x_itiv_ib_tbl OUT NOCOPY itiv_tbl_type,
17824 x_clev_fin_rec OUT NOCOPY clev_rec_type,
17825 x_klev_fin_rec OUT NOCOPY klev_rec_type,
17826 x_cimv_model_rec OUT NOCOPY cimv_rec_type,
17827 x_cimv_fa_rec OUT NOCOPY cimv_rec_type,
17828 x_talv_fa_rec OUT NOCOPY talv_rec_type) IS
17829 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_INTS_IB_LINE';
17830 l_clev_ib_rec clev_rec_type;
17831 l_klev_ib_rec klev_rec_type;
17832 l_clev_inst_rec clev_rec_type;
17833 l_klev_inst_rec klev_rec_type;
17834 l_cimv_ib_rec cimv_rec_type;
17835 l_itiv_ib_tbl itiv_tbl_type := p_itiv_ib_tbl;
17836 l_clev_inst_rec_out clev_rec_type;
17837 l_klev_inst_rec_out klev_rec_type;
17838 l_itiv_inst_tbl_out itiv_tbl_type;
17839 l_clev_ib_rec_out clev_rec_type;
17840 l_cimv_ib_rec_out cimv_rec_type;
17841 l_klev_ib_rec_out klev_rec_type;
17842 l_itiv_ib_tbl_out itiv_tbl_type;
17843 x_clev_ib_rec clev_rec_type;
17844 l_trxv_ib_rec_out trxv_rec_type;
17845 lv_object_id1_new OKL_TXL_ITM_INSTS_V.OBJECT_ID1_NEW%TYPE;
17846 j NUMBER := 0;
17847 ln_dummy NUMBER := 0;
17848 ln_dummy1 NUMBER := 0;
17849 -- rravikir added
17850 l_itiv_rec itiv_rec_type;
17851 lk_itiv_rec itiv_rec_type;
17852 lx_itiv_rec itiv_rec_type;
17853 k NUMBER := 0;
17854 ln_remain_inst NUMBER := 0;
17855 lb_record_created BOOLEAN := FALSE;
17856 lb_update_oec_required BOOLEAN := FALSE;
17857 ln_item_id OKL_TXL_ITM_INSTS.INVENTORY_ITEM_ID%TYPE;
17858 -- end
17859 ln_final_current_units OKC_K_ITEMS_V.NUMBER_OF_ITEMS%TYPE;
17860 ln_model_line_id OKC_K_LINES_V.ID%TYPE := OKL_API.G_MISS_NUM;
17861 ln_fa_line_id OKC_K_LINES_V.ID%TYPE := OKL_API.G_MISS_NUM;
17862 r_clev_model_rec clev_rec_type;
17863 r_klev_model_rec klev_rec_type;
17864 r_cimv_model_rec cimv_rec_type;
17865 r_clev_addon_rec clev_rec_type;
17866 r_klev_addon_rec klev_rec_type;
17867 r_cimv_addon_rec cimv_rec_type;
17868 rx_clev_addon_rec clev_rec_type;
17869 rx_klev_addon_rec klev_rec_type;
17870 rx_cimv_addon_rec cimv_rec_type;
17871 r_clev_fa_rec clev_rec_type;
17872 r_klev_fa_rec klev_rec_type;
17873 r_cimv_fa_rec cimv_rec_type;
17874 r_talv_fa_rec talv_rec_type;
17875 l_clev_model_rec_out clev_rec_type;
17876 l_klev_model_rec_out klev_rec_type;
17877 l_clev_fa_rec_out clev_rec_type;
17878 l_klev_fa_rec_out klev_rec_type;
17879 ln_model_qty OKC_K_ITEMS_V.NUMBER_OF_ITEMS%TYPE := 0;
17880 ln_klev_fin_oec OKL_K_LINES_V.OEC%TYPE := 0;
17881 ln_klev_fin_res OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
17882 ln_klev_fin_cap OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
17883
17884 CURSOR c_remain_inst_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
17885 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
17886 SELECT count(cle.id)
17887 FROM okc_subclass_top_line stl,
17888 okc_line_styles_b lse2,
17889 okc_line_styles_b lse1,
17890 okc_k_lines_v cle
17891 WHERE cle.cle_id = p_cle_id
17892 AND cle.dnz_chr_id = p_chr_id
17893 AND cle.lse_id = lse1.id
17894 AND lse1.lty_code = G_INST_LINE_LTY_CODE
17895 AND lse1.lse_parent_id = lse2.id
17896 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
17897 AND lse2.id = stl.lse_id
17898 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
17899
17900 CURSOR c_model_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
17901 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
17902 SELECT cle.id
17903 FROM okc_subclass_top_line stl,
17904 okc_line_styles_b lse2,
17905 okc_line_styles_b lse1,
17906 okc_k_lines_v cle
17907 WHERE cle.cle_id = p_cle_id
17908 AND cle.dnz_chr_id = p_chr_id
17909 AND cle.lse_id = lse1.id
17910 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
17911 AND lse1.lse_parent_id = lse2.id
17912 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
17913 AND lse2.id = stl.lse_id
17914 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
17915
17916 CURSOR c_fa_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
17917 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
17918 SELECT cle.id
17919 FROM okc_subclass_top_line stl,
17920 okc_line_styles_b lse2,
17921 okc_line_styles_b lse1,
17922 okc_k_lines_v cle
17923 WHERE cle.cle_id = p_cle_id
17924 AND cle.dnz_chr_id = p_chr_id
17925 AND cle.lse_id = lse1.id
17926 AND lse1.lty_code = G_FA_LINE_LTY_CODE
17927 AND lse1.lse_parent_id = lse2.id
17928 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
17929 AND lse2.id = stl.lse_id
17930 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
17931
17932 CURSOR c_addon_line_id(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
17933 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
17934 SELECT cle.id
17935 FROM okc_subclass_top_line stl,
17936 okc_line_styles_b lse3,
17937 okc_line_styles_b lse2,
17938 okc_line_styles_b lse1,
17939 okc_k_lines_b cle
17940 WHERE cle.dnz_chr_id = p_chr_id
17941 AND cle.lse_id = lse1.id
17942 AND lse1.lty_code = G_ADDON_LINE_LTY_CODE
17943 AND lse1.lse_parent_id = lse2.id
17944 AND lse2.lty_code = G_MODEL_LINE_LTY_CODE
17945 AND lse2.lse_parent_id = lse3.id
17946 AND lse3.lty_code = G_FIN_LINE_LTY_CODE
17947 AND lse3.id = stl.lse_id
17948 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE)
17949 AND cle.cle_id in (SELECT cle.id
17950 FROM okc_subclass_top_line stl,
17951 okc_line_styles_b lse2,
17952 okc_line_styles_b lse1,
17953 okc_k_lines_b cle
17954 WHERE cle.cle_id = p_cle_id
17955 AND cle.dnz_chr_id = p_chr_id
17956 AND cle.lse_id = lse1.id
17957 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
17958 AND lse1.lse_parent_id = lse2.id
17959 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
17960 AND lse2.id = stl.lse_id
17961 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE));
17962
17963 CURSOR c_model_item(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
17964 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
17965 SELECT cim.number_of_items
17966 FROM okc_subclass_top_line stl,
17967 okc_line_styles_b lse2,
17968 okc_line_styles_b lse1,
17969 okc_k_items_v cim,
17970 okc_k_lines_v cle
17971 WHERE cle.cle_id = p_cle_id
17972 AND cle.dnz_chr_id = p_chr_id
17973 AND cle.id = cim.cle_id
17974 AND cim.dnz_chr_id = cle.dnz_chr_id
17975 AND cle.lse_id = lse1.id
17976 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
17977 AND lse1.lse_parent_id = lse2.id
17978 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
17979 AND lse2.id = stl.lse_id
17980 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
17981
17982 --akrangan Bug# 5362977 start
17983 --cursor to check if contract has re-lease assets
17984 CURSOR l_chk_rel_ast_csr (p_chr_id IN NUMBER) IS
17985 SELECT 'Y'
17986 FROM OKC_RULES_B rul
17987 WHERE rul.dnz_chr_id = p_chr_id
17988 AND rul.rule_information_category = 'LARLES'
17989 AND NVL(rule_information1,'N') = 'Y';
17990
17991 l_chk_rel_ast VARCHAR2(1);
17992
17993 --cursor to check if the contract is undergoing on-line rebook
17994 cursor l_chk_rbk_csr(p_chr_id IN NUMBER) is
17995 SELECT '!'
17996 FROM okc_k_headers_b chr,
17997 okl_trx_contracts ktrx
17998 WHERE ktrx.khr_id_new = chr.id
17999 AND ktrx.tsu_code = 'ENTERED'
18000 AND ktrx.rbr_code is NOT NULL
18001 AND ktrx.tcn_type = 'TRBK'
18002 --rkuttiya added for 12.1.1 multi GAAP
18003 AND ktrx.representation_type = 'PRIMARY'
18004 --
18005 AND chr.id = p_chr_id
18006 AND chr.orig_system_source_code = 'OKL_REBOOK';
18007
18008 l_rbk_khr VARCHAR2(1);
18009 --akrangan Bug# 5362977 end
18010
18011
18012 BEGIN
18013 x_return_status := OKL_API.G_RET_STS_SUCCESS;
18014 -- Call start_activity to create savepoint, check compatibility
18015 -- and initialize message list
18016 x_return_status := OKL_API.START_ACTIVITY (
18017 l_api_name
18018 ,p_init_msg_list
18019 ,'_PVT'
18020 ,x_return_status);
18021 -- Check if activity started successfully
18022 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18023 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18024 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18025 RAISE OKL_API.G_EXCEPTION_ERROR;
18026 END IF;
18027 -- Get the Ib rec first and then we can get the instance line above the IB line
18028 x_return_status := get_rec_clev(p_clev_ib_rec.id,
18029 l_clev_ib_rec);
18030 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18031 OKL_API.set_message(p_app_name => G_APP_NAME,
18032 p_msg_name => G_FETCHING_INFO,
18033 p_token1 => G_REC_NAME_TOKEN,
18034 p_token1_value => 'OKC_K_LINES_V Record');
18035 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18036 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18037 OKL_API.set_message(p_app_name => G_APP_NAME,
18038 p_msg_name => G_FETCHING_INFO,
18039 p_token1 => G_REC_NAME_TOKEN,
18040 p_token1_value => 'OKC_K_LINES_V Record');
18041 RAISE OKL_API.G_EXCEPTION_ERROR;
18042 END IF;
18043 -- Now getting the inst line
18044 x_return_status := get_rec_clev(l_clev_ib_rec.cle_id,
18045 l_clev_inst_rec);
18046 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18047 OKL_API.set_message(p_app_name => G_APP_NAME,
18048 p_msg_name => G_FETCHING_INFO,
18049 p_token1 => G_REC_NAME_TOKEN,
18050 p_token1_value => 'OKC_K_LINES_V Record');
18051 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18052 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18053 OKL_API.set_message(p_app_name => G_APP_NAME,
18054 p_msg_name => G_FETCHING_INFO,
18055 p_token1 => G_REC_NAME_TOKEN,
18056 p_token1_value => 'OKC_K_LINES_V Record');
18057 RAISE OKL_API.G_EXCEPTION_ERROR;
18058 END IF;
18059
18060 -- Since a record is already created in TXL_ITM_INSTS, we need to update this
18061 -- record, and create 'n-1' records.
18062 -- rravikir modified
18063 IF (l_clev_inst_rec.id IS NOT NULL OR
18064 l_clev_inst_rec.id <> OKL_API.G_MISS_NUM) THEN
18065 -- We are here b'cause we have to update the okl_txl_itm_inst rec
18066 -- So we are calling the update api for the okl_txl_itm_insts rec
18067
18068 -- Now getting the item information OKL_TXL_ITM_INSTS
18069 x_return_status := get_rec_itiv(l_clev_ib_rec.id,
18070 l_itiv_rec);
18071 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18072 OKL_API.set_message(p_app_name => G_APP_NAME,
18073 p_msg_name => G_FETCHING_INFO,
18074 p_token1 => G_REC_NAME_TOKEN,
18075 p_token1_value => 'OKC_K_LINES_V Record');
18076 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18077 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18078 OKL_API.set_message(p_app_name => G_APP_NAME,
18079 p_msg_name => G_FETCHING_INFO,
18080 p_token1 => G_REC_NAME_TOKEN,
18081 p_token1_value => 'OKC_K_LINES_V Record');
18082 RAISE OKL_API.G_EXCEPTION_ERROR;
18083 END IF;
18084 -- checking for mfg_serial_number_yn flag
18085 k := l_itiv_ib_tbl.FIRST;
18086 IF l_itiv_ib_tbl(k).mfg_serial_number_yn <> 'Y' THEN
18087 OKL_API.set_message(p_app_name => G_APP_NAME,
18088 p_msg_name => G_REQUIRED_VALUE,
18089 p_token1 => G_COL_NAME_TOKEN,
18090 p_token1_value => 'mfg_serial_number_yn cannot be N');
18091 x_return_status := OKL_API.G_RET_STS_ERROR;
18092 IF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18093 RAISE OKL_API.G_EXCEPTION_ERROR;
18094 END IF;
18095 END IF;
18096
18097 l_itiv_rec.object_id1_new := l_itiv_ib_tbl(k).object_id1_new;
18098 l_itiv_rec.object_id2_new := l_itiv_ib_tbl(k).object_id2_new;
18099 l_itiv_rec.mfg_serial_number_yn := l_itiv_ib_tbl(k).mfg_serial_number_yn;
18100 l_itiv_rec.serial_number := l_itiv_ib_tbl(k).serial_number;
18101 l_itiv_rec.dnz_cle_id := l_itiv_ib_tbl(k).dnz_cle_id;
18102
18103 ln_item_id := l_itiv_rec.inventory_item_id;
18104
18105 -- Check for uniqueness of Serial number
18106 x_return_status := is_duplicate_serial_number(p_serial_number => l_itiv_rec.serial_number,
18107 p_item_id => l_itiv_rec.inventory_item_id);
18108 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18109 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18110 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18111 RAISE OKL_API.G_EXCEPTION_ERROR;
18112 END IF;
18113 l_itiv_rec.object_id2_new := '#';
18114
18115 update_txl_itm_insts(p_api_version => p_api_version,
18116 p_init_msg_list => p_init_msg_list,
18117 x_return_status => x_return_status,
18118 x_msg_count => x_msg_count,
18119 x_msg_data => x_msg_data,
18120 p_itiv_rec => l_itiv_rec,
18121 x_itiv_rec => lx_itiv_rec);
18122 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18123 OKL_API.set_message(p_app_name => G_APP_NAME,
18124 p_msg_name => G_ITI_ID);
18125 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18126 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18127 OKL_API.set_message(p_app_name => G_APP_NAME,
18128 p_msg_name => G_ITI_ID);
18129 RAISE OKL_API.G_EXCEPTION_ERROR;
18130 END IF;
18131 lb_record_created := TRUE;
18132 END IF;
18133 -- end rravikir modified
18134
18135
18136 -- We need to verify the p_current_units is same as the existing NUmber of items
18137 -- in the model line
18138
18139 -- rravikir modified
18140 -- Should be able to create more # of serial numbers than the current units.
18141 OPEN c_model_item(l_clev_inst_rec.cle_id,
18142 l_clev_inst_rec.dnz_chr_id);
18143 IF c_model_item%NOTFOUND THEN
18144 OKL_API.set_message(p_app_name => G_APP_NAME,
18145 p_msg_name => G_ITEM_RECORD);
18146 RAISE OKL_API.G_EXCEPTION_ERROR;
18147 END IF;
18148 FETCH c_model_item INTO ln_model_qty;
18149 CLOSE c_model_item;
18150
18151 -- If the serial #'s entered is not equal to the units in model line,
18152 -- we should update the fixed line , model line and also update the top line
18153 -- with latest OEC
18154 IF ln_model_qty <> l_itiv_ib_tbl.COUNT THEN
18155
18156 --akrangan Bug# 5362977 start
18157 -- Do not allow update of units if the contract has Re-lease assets
18158 l_chk_rel_ast := 'N';
18159 OPEN l_chk_rel_ast_csr(p_chr_id => l_clev_inst_rec.dnz_chr_id);
18160 FETCH l_chk_rel_ast_csr INTO l_chk_rel_ast;
18161 CLOSE l_chk_rel_ast_csr;
18162
18163 IF l_chk_rel_ast = 'Y' THEN
18164 OKL_API.set_message(p_app_name => G_APP_NAME,
18165 p_msg_name => 'OKL_LA_REL_UNITS_NO_UPDATE');
18166 RAISE OKL_API.G_EXCEPTION_ERROR;
18167 ELSE
18168
18169 lb_update_oec_required := TRUE;
18170 END IF;
18171 --akrangan Bug# 5362977 end
18172 END IF;
18173
18174 -- end modified
18175
18176 -- We have to make sure the count of the itiv_tbl
18177 -- should be equal to qty of items
18178 -- Since inst tbl and ib inst are same
18179 -- it is Good enough to do one
18180 ln_dummy1 := l_itiv_ib_tbl.COUNT - 1;
18181 IF ln_dummy1 > 0 THEN
18182 --ln_dummy1 := l_itiv_ib_tbl.COUNT;
18183 -- We have intialize the J , since there could be any index integer
18184 j := l_itiv_ib_tbl.FIRST;
18185 j := l_itiv_ib_tbl.NEXT(j);
18186 LOOP
18187 IF (l_itiv_ib_tbl(j).mfg_serial_number_yn IS NULL OR
18188 l_itiv_ib_tbl(j).mfg_serial_number_yn = OKL_API.G_MISS_CHAR) THEN
18189 x_return_status := OKL_API.G_RET_STS_ERROR;
18190 OKL_API.set_message(p_app_name => G_APP_NAME,
18191 p_msg_name => G_REQUIRED_VALUE,
18192 p_token1 => G_COL_NAME_TOKEN,
18193 p_token1_value => 'mfg_serial_number_yn');
18194 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18195 ELSIF l_itiv_ib_tbl(j).mfg_serial_number_yn <> 'Y' THEN
18196 OKL_API.set_message(p_app_name => G_APP_NAME,
18197 p_msg_name => G_REQUIRED_VALUE,
18198 p_token1 => G_COL_NAME_TOKEN,
18199 p_token1_value => 'mfg_serial_number_yn cannot be N');
18200 x_return_status := OKL_API.G_RET_STS_ERROR;
18201 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18202 END IF;
18203 EXIT WHEN (j = l_itiv_ib_tbl.LAST);
18204 j := l_itiv_ib_tbl.NEXT(j);
18205 END LOOP;
18206 IF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18207 RAISE OKL_API.G_EXCEPTION_ERROR;
18208 END IF;
18209 ELSIF (NOT lb_record_created) THEN
18210 OKL_API.set_message(p_app_name => G_APP_NAME,
18211 p_msg_name => G_CNT_REC);
18212 RAISE OKL_API.G_EXCEPTION_ERROR;
18213 END IF;
18214 -- Since we have to create the instance
18215 -- Depending of the qty in l_cimv_model_rec.number_of_items
18216 -- we have use loop
18217 ln_dummy := l_itiv_ib_tbl.COUNT - 1;
18218 IF (ln_dummy > 0) THEN
18219 j := l_itiv_ib_tbl.FIRST;
18220 j := l_itiv_ib_tbl.NEXT(j);
18221 FOR i IN 1..ln_dummy LOOP
18222 -- 4414408 Assign the line style ID directly
18223 /*
18224 -- Creation of the Instance Line Process
18225 -- Getting the Line style Info
18226 x_return_status := get_lse_id(p_lty_code => G_INST_LINE_LTY_CODE,
18227 x_lse_id => l_clev_inst_rec.lse_id);
18228 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18229 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18230 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18231 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18232 END IF;
18233 */
18234 IF (l_clev_inst_rec.display_sequence IS NUll OR
18235 l_clev_inst_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
18236 l_clev_inst_rec.display_sequence := l_clev_inst_rec.display_sequence + 1;
18237 END IF;
18238 -- Required cle Line Information
18239 -- Since we have a local Record of the Instance line
18240 -- We can you the same
18241 l_clev_inst_rec.lse_id := G_INST_LINE_LTY_ID;
18242 l_clev_inst_rec.chr_id := null;
18243 l_clev_inst_rec.cle_id := l_clev_inst_rec.cle_id;
18244 l_clev_inst_rec.dnz_chr_id := l_clev_inst_rec.dnz_chr_id;
18245 l_clev_inst_rec.exception_yn := 'N';
18246 IF (l_itiv_ib_tbl(j).instance_number_ib IS NULL OR
18247 l_itiv_ib_tbl(j).instance_number_ib = OKL_API.G_MISS_CHAR) THEN
18248 x_return_status := generate_instance_number_ib(x_instance_number_ib => l_itiv_ib_tbl(j).instance_number_ib);
18249 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18250 OKL_API.set_message(p_app_name => G_APP_NAME,
18251 p_msg_name => G_GEN_INST_NUM_IB);
18252 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18253 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18254 OKL_API.set_message(p_app_name => G_APP_NAME,
18255 p_msg_name => G_GEN_INST_NUM_IB);
18256 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18257 END IF;
18258 l_itiv_ib_tbl(j).instance_number_ib := p_asset_number||' '||l_itiv_ib_tbl(j).instance_number_ib;
18259 END IF;
18260
18261 -- Creation of the Instance Line
18262 Create_instance_line(p_api_version => p_api_version,
18263 p_init_msg_list => p_init_msg_list,
18264 x_return_status => x_return_status,
18265 x_msg_count => x_msg_count,
18266 x_msg_data => x_msg_data,
18267 p_clev_rec => l_clev_inst_rec,
18268 p_klev_rec => l_klev_inst_rec,
18269 p_itiv_rec => l_itiv_ib_tbl(j),
18270 x_clev_rec => l_clev_inst_rec_out,
18271 x_klev_rec => l_klev_inst_rec_out,
18272 x_itiv_rec => l_itiv_ib_tbl_out(j));
18273 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18274 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18275 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18276 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18277 END IF;
18278 -- 4414408 Assign the line style ID directly
18279 /*
18280 -- Creation of the ib Line Process
18281 -- Getting the Line style Info
18282 x_return_status := get_lse_id(p_lty_code => G_IB_LINE_LTY_CODE,
18283 x_lse_id => l_clev_ib_rec.lse_id);
18284 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18285 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18286 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18287 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18288 END IF;
18289 */
18290 IF (l_clev_ib_rec.display_sequence IS NUll OR
18291 l_clev_ib_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
18292 l_clev_ib_rec.display_sequence := l_clev_ib_rec_out.display_sequence + 1;
18293 END IF;
18294 -- Required cle Line Information
18295 l_clev_ib_rec.lse_id := G_IB_LINE_LTY_ID;
18296 l_clev_ib_rec.chr_id := null;
18297 l_clev_ib_rec.cle_id := l_clev_inst_rec_out.id;
18298 l_clev_ib_rec.dnz_chr_id := l_clev_inst_rec_out.dnz_chr_id;
18299 l_clev_ib_rec.exception_yn := 'N';
18300 -- Required Item Information
18301 l_cimv_ib_rec.exception_yn := 'N';
18302 l_cimv_ib_rec.object1_id1 := null;
18303 l_cimv_ib_rec.object1_id2 := null;
18304 -- Since the screen can give only party_site_id via l_itiv_tbl(j).object_id1_new
18305 -- We have to use the below function
18306 lv_object_id1_new := l_itiv_ib_tbl(j).object_id1_new;
18307 x_return_status := get_party_site_id(p_object_id1_new => lv_object_id1_new,
18308 x_object_id1_new => l_itiv_ib_tbl(j).object_id1_new,
18309 x_object_id2_new => l_itiv_ib_tbl(j).object_id2_new);
18310 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18311 OKL_API.set_message(p_app_name => G_APP_NAME,
18312 p_msg_name => G_NO_MATCHING_RECORD,
18313 p_token1 => G_COL_NAME_TOKEN,
18314 p_token1_value => 'Party_site_id');
18315 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18316 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18317 OKL_API.set_message(p_app_name => G_APP_NAME,
18318 p_msg_name => G_NO_MATCHING_RECORD,
18319 p_token1 => G_COL_NAME_TOKEN,
18320 p_token1_value => 'Party_site_id');
18321 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18322 END IF;
18323
18324 -- Check for uniqueness of Serial number
18325 x_return_status := is_duplicate_serial_number(p_serial_number => l_itiv_ib_tbl(j).serial_number,
18326 p_item_id => ln_item_id);
18327 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18328 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18329 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18330 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18331 END IF;
18332
18333 -- Creation of the ib Line
18334 Create_instance_ib_line(p_api_version => p_api_version,
18335 p_init_msg_list => p_init_msg_list,
18336 x_return_status => x_return_status,
18337 x_msg_count => x_msg_count,
18338 x_msg_data => x_msg_data,
18339 p_clev_rec => l_clev_ib_rec,
18340 p_klev_rec => l_klev_ib_rec,
18341 p_cimv_rec => l_cimv_ib_rec,
18342 p_itiv_rec => l_itiv_ib_tbl(j),
18343 x_clev_rec => x_clev_ib_rec,
18344 x_klev_rec => l_klev_ib_rec_out,
18345 x_cimv_rec => l_cimv_ib_rec_out,
18346 x_trxv_rec => l_trxv_ib_rec_out,
18347 x_itiv_rec => x_itiv_ib_tbl(j));
18348 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18349 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18350 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18351 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18352 END IF;
18353 EXIT WHEN (j = l_itiv_ib_tbl.LAST);
18354 x_clev_ib_tbl(i) := x_clev_ib_rec;
18355 j := l_itiv_ib_tbl.NEXT(j);
18356 END LOOP;
18357 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18358 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18359 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18360 RAISE OKL_API.G_EXCEPTION_ERROR;
18361 END IF;
18362 ELSIF (NOT lb_record_created) THEN
18363 OKL_API.set_message(p_app_name => G_APP_NAME,
18364 p_msg_name => G_CNT_REC);
18365 RAISE OKL_API.G_EXCEPTION_ERROR;
18366 END IF; -- End if (ln_dummy > 0)
18367
18368 -- We need to execute the following 'IF' loop, when the current units
18369 -- is changed, by editing more or less serial #'s.
18370 IF (lb_update_oec_required) THEN
18371 -- we should get the remaining inst line , so that we can update
18372 -- the fixed line , model line and also update the top line with latest OEC
18373 OPEN c_remain_inst_line(l_clev_inst_rec.cle_id,
18374 l_clev_inst_rec.dnz_chr_id);
18375 IF c_remain_inst_line%NOTFOUND THEN
18376 OKL_API.set_message(p_app_name => G_APP_NAME,
18377 p_msg_name => G_DELETING_INSTS_LINE);
18378 RAISE OKL_API.G_EXCEPTION_ERROR;
18379 END IF;
18380 FETCH c_remain_inst_line INTO ln_remain_inst;
18381 CLOSE c_remain_inst_line;
18382
18383 -- To get the Model Line
18384 -- Since we have update the model line
18385 OPEN c_model_line(l_clev_inst_rec.cle_id,
18386 l_clev_inst_rec.dnz_chr_id);
18387 IF c_model_line%NOTFOUND THEN
18388 OKL_API.set_message(p_app_name => G_APP_NAME,
18389 p_msg_name => G_NO_MATCHING_RECORD,
18390 p_token1 => G_COL_NAME_TOKEN,
18391 p_token1_value => 'Model Asset Line record');
18392 RAISE OKL_API.G_EXCEPTION_ERROR;
18393 END IF;
18394 FETCH c_model_line INTO ln_model_line_id;
18395 CLOSE c_model_line;
18396
18397 -- To get the Fixed Asset Line
18398 -- Since we have update the Fixed Asset Line
18399 OPEN c_fa_line(l_clev_inst_rec.cle_id,
18400 l_clev_inst_rec.dnz_chr_id);
18401 IF c_fa_line%NOTFOUND THEN
18402 OKL_API.set_message(p_app_name => G_APP_NAME,
18403 p_msg_name => G_NO_MATCHING_RECORD,
18404 p_token1 => G_COL_NAME_TOKEN,
18405 p_token1_value => 'Fixed Asset Line record');
18406 RAISE OKL_API.G_EXCEPTION_ERROR;
18407 END IF;
18408 FETCH c_fa_line INTO ln_fa_line_id;
18409 CLOSE c_fa_line;
18410
18411 -- We have to build the Model Line Record for the calculations of the
18412 -- oec of the top line
18413
18414 -- To Get the cle Model Line Record
18415 x_return_status := get_rec_clev(ln_model_line_id,
18416 r_clev_model_rec);
18417 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18418 OKL_API.set_message(p_app_name => G_APP_NAME,
18419 p_msg_name => G_FETCHING_INFO,
18420 p_token1 => G_REC_NAME_TOKEN,
18421 p_token1_value => 'OKC_K_LINES_V Record');
18422 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18423 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18424 OKL_API.set_message(p_app_name => G_APP_NAME,
18425 p_msg_name => G_FETCHING_INFO,
18426 p_token1 => G_REC_NAME_TOKEN,
18427 p_token1_value => 'OKC_K_LINES_V Record');
18428 RAISE OKL_API.G_EXCEPTION_ERROR;
18429 END IF;
18430
18431 -- To Get the kle Model Line Record
18432 x_return_status := get_rec_klev(ln_model_line_id,
18433 r_klev_model_rec);
18434 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18435 OKL_API.set_message(p_app_name => G_APP_NAME,
18436 p_msg_name => G_FETCHING_INFO,
18437 p_token1 => G_REC_NAME_TOKEN,
18438 p_token1_value => 'OKL_K_LINES_V Record');
18439 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18440 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18441 OKL_API.set_message(p_app_name => G_APP_NAME,
18442 p_msg_name => G_FETCHING_INFO,
18443 p_token1 => G_REC_NAME_TOKEN,
18444 p_token1_value => 'OKL_K_LINES_V Record');
18445 RAISE OKL_API.G_EXCEPTION_ERROR;
18446 END IF;
18447
18448 IF r_klev_model_rec.id <> r_clev_model_rec.id THEN
18449 OKL_API.set_message(p_app_name => G_APP_NAME,
18450 p_msg_name => G_LINE_RECORD);
18451 RAISE OKL_API.G_EXCEPTION_ERROR;
18452 END IF;
18453
18454 -- To Get the cimv Model Line Record
18455 x_return_status := get_rec_cimv(r_clev_model_rec.id,
18456 r_clev_model_rec.dnz_chr_id,
18457 r_cimv_model_rec);
18458 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18459 OKL_API.set_message(p_app_name => G_APP_NAME,
18460 p_msg_name => G_FETCHING_INFO,
18461 p_token1 => G_REC_NAME_TOKEN,
18462 p_token1_value => 'OKC_K_ITEMS_V Record');
18463 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18464 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18465 OKL_API.set_message(p_app_name => G_APP_NAME,
18466 p_msg_name => G_FETCHING_INFO,
18467 p_token1 => G_REC_NAME_TOKEN,
18468 p_token1_value => 'OKC_K_ITEMS_V Record');
18469 RAISE OKL_API.G_EXCEPTION_ERROR;
18470 END IF;
18471
18472 --Build Model cimv item rec
18473 r_cimv_model_rec.number_of_items := ln_remain_inst;
18474 -- Updating of the Model Line and Item Record
18475 update_model_line(p_api_version => p_api_version,
18476 p_init_msg_list => p_init_msg_list,
18477 x_return_status => x_return_status,
18478 x_msg_count => x_msg_count,
18479 x_msg_data => x_msg_data,
18480 P_new_yn => P_new_yn,
18481 p_asset_number => p_asset_number,
18482 p_clev_rec => r_clev_model_rec,
18483 p_klev_rec => r_klev_model_rec,
18484 p_cimv_rec => r_cimv_model_rec,
18485 x_clev_rec => l_clev_model_rec_out,
18486 x_klev_rec => l_klev_model_rec_out,
18487 x_cimv_rec => x_cimv_model_rec);
18488 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18489 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18490 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18491 RAISE OKL_API.G_EXCEPTION_ERROR;
18492 END IF;
18493
18494 -- We need to check if there are add on line and then we update the Addon number of items also
18495 -- Since there can be multiple Addo lines
18496 FOR r_addon_line_id IN c_addon_line_id(p_cle_id => l_clev_model_rec_out.cle_id,
18497 p_chr_id => l_clev_model_rec_out.dnz_chr_id) LOOP
18498 --We have to build the addon Line Record for the calculations of the
18499 -- oec of the top line
18500 -- To Get the cle addon Line Record
18501 x_return_status := get_rec_clev(r_addon_line_id.id,
18502 r_clev_addon_rec);
18503 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18504 OKL_API.set_message(p_app_name => G_APP_NAME,
18505 p_msg_name => G_FETCHING_INFO,
18506 p_token1 => G_REC_NAME_TOKEN,
18507 p_token1_value => 'OKC_K_LINES_V Record');
18508 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18509 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18510 OKL_API.set_message(p_app_name => G_APP_NAME,
18511 p_msg_name => G_FETCHING_INFO,
18512 p_token1 => G_REC_NAME_TOKEN,
18513 p_token1_value => 'OKC_K_LINES_V Record');
18514 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18515 END IF;
18516 -- To Get the kle Model Line Record
18517 x_return_status := get_rec_klev(r_addon_line_id.id,
18518 r_klev_addon_rec);
18519 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18520 OKL_API.set_message(p_app_name => G_APP_NAME,
18521 p_msg_name => G_FETCHING_INFO,
18522 p_token1 => G_REC_NAME_TOKEN,
18523 p_token1_value => 'OKL_K_LINES_V Record');
18524 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18525 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18526 OKL_API.set_message(p_app_name => G_APP_NAME,
18527 p_msg_name => G_FETCHING_INFO,
18528 p_token1 => G_REC_NAME_TOKEN,
18529 p_token1_value => 'OKL_K_LINES_V Record');
18530 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18531 END IF;
18532 IF r_klev_addon_rec.id <> r_clev_addon_rec.id THEN
18533 OKL_API.set_message(p_app_name => G_APP_NAME,
18534 p_msg_name => G_LINE_RECORD);
18535 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18536 END IF;
18537 -- To Get the cimv Model Line Record
18538 x_return_status := get_rec_cimv(r_clev_addon_rec.id,
18539 r_clev_addon_rec.dnz_chr_id,
18540 r_cimv_addon_rec);
18541 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18542 OKL_API.set_message(p_app_name => G_APP_NAME,
18543 p_msg_name => G_FETCHING_INFO,
18544 p_token1 => G_REC_NAME_TOKEN,
18545 p_token1_value => 'OKC_K_ITEMS_V Record');
18546 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18547 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18548 OKL_API.set_message(p_app_name => G_APP_NAME,
18549 p_msg_name => G_FETCHING_INFO,
18550 p_token1 => G_REC_NAME_TOKEN,
18551 p_token1_value => 'OKC_K_ITEMS_V Record');
18552 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18553 END IF;
18554 --Build addon cimv item rec
18555 r_cimv_addon_rec.number_of_items := ln_remain_inst;
18556 -- Updating of the addon Line and Item Record
18557 update_addon_line_rec(p_api_version => p_api_version,
18558 p_init_msg_list => p_init_msg_list,
18559 x_return_status => x_return_status,
18560 x_msg_count => x_msg_count,
18561 x_msg_data => x_msg_data,
18562 P_new_yn => P_new_yn,
18563 p_asset_number => p_asset_number,
18564 p_clev_rec => r_clev_addon_rec,
18565 p_klev_rec => r_klev_addon_rec,
18566 p_cimv_rec => r_cimv_addon_rec,
18567 x_clev_rec => rx_clev_addon_rec,
18568 x_klev_rec => rx_klev_addon_rec,
18569 x_cimv_rec => rx_cimv_addon_rec);
18570 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18571 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18572 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18573 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18574 END IF;
18575 END LOOP;
18576 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18577 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18578 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18579 RAISE OKL_API.G_EXCEPTION_ERROR;
18580 END IF;
18581
18582 -- Since we need to populate the OEC into fixed asset line also
18583 -- So we need to calcualte the same here it self
18584 oec_calc_upd_fin_rec(p_api_version => p_api_version,
18585 p_init_msg_list => p_init_msg_list,
18586 x_return_status => x_return_status,
18587 x_msg_count => x_msg_count,
18588 x_msg_data => x_msg_data,
18589 P_new_yn => P_new_yn,
18590 p_asset_number => p_asset_number,
18591 -- 4414408
18592 p_top_line_id => l_clev_inst_rec.cle_id,
18593 p_dnz_chr_id => l_clev_model_rec_out.dnz_chr_id,
18594 x_fin_clev_rec => x_clev_fin_rec,
18595 x_fin_klev_rec => x_klev_fin_rec,
18596 x_oec => ln_klev_fin_oec,
18597 p_validate_fin_line => OKL_API.G_TRUE);
18598 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18599 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18600 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18601 RAISE OKL_API.G_EXCEPTION_ERROR;
18602 END IF;
18603
18604 -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
18605 cap_amt_calc_upd_fin_rec(p_api_version => p_api_version,
18606 p_init_msg_list => p_init_msg_list,
18607 x_return_status => x_return_status,
18608 x_msg_count => x_msg_count,
18609 x_msg_data => x_msg_data,
18610 P_new_yn => P_new_yn,
18611 p_asset_number => p_asset_number,
18612 -- 4414408
18613 p_top_line_id => l_clev_inst_rec.cle_id,
18614 p_dnz_chr_id => l_clev_model_rec_out.dnz_chr_id,
18615 x_fin_clev_rec => x_clev_fin_rec,
18616 x_fin_klev_rec => x_klev_fin_rec,
18617 x_cap_amt => ln_klev_fin_cap,
18618 p_validate_fin_line => OKL_API.G_TRUE);
18619 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18620 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18621 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18622 RAISE OKL_API.G_EXCEPTION_ERROR;
18623 END IF;
18624
18625 -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
18626 res_value_calc_upd_fin_rec(p_api_version => p_api_version,
18627 p_init_msg_list => p_init_msg_list,
18628 x_return_status => x_return_status,
18629 x_msg_count => x_msg_count,
18630 x_msg_data => x_msg_data,
18631 P_new_yn => P_new_yn,
18632 p_asset_number => p_asset_number,
18633 -- 4414408
18634 p_top_line_id => l_clev_inst_rec.cle_id,
18635 p_dnz_chr_id => l_clev_model_rec_out.dnz_chr_id,
18636 x_fin_clev_rec => x_clev_fin_rec,
18637 x_fin_klev_rec => x_klev_fin_rec,
18638 x_res_value => ln_klev_fin_res,
18639 p_validate_fin_line => OKL_API.G_TRUE);
18640 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18641 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18642 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18643 RAISE OKL_API.G_EXCEPTION_ERROR;
18644 END IF;
18645
18646 -- Updating of the Fixed Asset Line Process
18647 -- To Get the cle fa Line Record
18648 x_return_status := get_rec_clev(ln_fa_line_id,
18649 r_clev_fa_rec);
18650 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18651 OKL_API.set_message(p_app_name => G_APP_NAME,
18652 p_msg_name => G_FETCHING_INFO,
18653 p_token1 => G_REC_NAME_TOKEN,
18654 p_token1_value => 'OKC_K_LINES_V Record');
18655 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18656 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18657 OKL_API.set_message(p_app_name => G_APP_NAME,
18658 p_msg_name => G_FETCHING_INFO,
18659 p_token1 => G_REC_NAME_TOKEN,
18660 p_token1_value => 'OKC_K_LINES_V Record');
18661 RAISE OKL_API.G_EXCEPTION_ERROR;
18662 END IF;
18663
18664 -- To Get the kle fa Line Record
18665 x_return_status := get_rec_klev(ln_fa_line_id,
18666 r_klev_fa_rec);
18667 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18668 OKL_API.set_message(p_app_name => G_APP_NAME,
18669 p_msg_name => G_FETCHING_INFO,
18670 p_token1 => G_REC_NAME_TOKEN,
18671 p_token1_value => 'OKL_K_LINES_V Record');
18672 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18673 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18674 OKL_API.set_message(p_app_name => G_APP_NAME,
18675 p_msg_name => G_FETCHING_INFO,
18676 p_token1 => G_REC_NAME_TOKEN,
18677 p_token1_value => 'OKL_K_LINES_V Record');
18678 RAISE OKL_API.G_EXCEPTION_ERROR;
18679 END IF;
18680
18681 IF r_klev_fa_rec.id <> r_clev_fa_rec.id THEN
18682 OKL_API.set_message(p_app_name => G_APP_NAME,
18683 p_msg_name => G_LINE_RECORD);
18684 RAISE OKL_API.G_EXCEPTION_ERROR;
18685 END IF;
18686
18687 -- To Get the cimv fa Line Record
18688 x_return_status := get_rec_cimv(r_clev_fa_rec.id,
18689 r_clev_fa_rec.dnz_chr_id,
18690 r_cimv_fa_rec);
18691 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18692 OKL_API.set_message(p_app_name => G_APP_NAME,
18693 p_msg_name => G_FETCHING_INFO,
18694 p_token1 => G_REC_NAME_TOKEN,
18695 p_token1_value => 'OKC_K_ITEMS_V Record');
18696 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18697 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18698 OKL_API.set_message(p_app_name => G_APP_NAME,
18699 p_msg_name => G_FETCHING_INFO,
18700 p_token1 => G_REC_NAME_TOKEN,
18701 p_token1_value => 'OKC_K_ITEMS_V Record');
18702 RAISE OKL_API.G_EXCEPTION_ERROR;
18703 END IF;
18704
18705 --Build cimv fa item rec
18706 r_cimv_fa_rec.number_of_items := ln_remain_inst;
18707 --Build talv fa item rec
18708 x_return_status := get_rec_txlv(r_clev_fa_rec.id,
18709 r_talv_fa_rec);
18710 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18711 OKL_API.set_message(p_app_name => G_APP_NAME,
18712 p_msg_name => G_FETCHING_INFO,
18713 p_token1 => G_REC_NAME_TOKEN,
18714 p_token1_value => 'OKL_TXL_ASSETS_V Record');
18715 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18716 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18717 OKL_API.set_message(p_app_name => G_APP_NAME,
18718 p_msg_name => G_FETCHING_INFO,
18719 p_token1 => G_REC_NAME_TOKEN,
18720 p_token1_value => 'OKL_TXL_ASSETS_V Record');
18721 RAISE OKL_API.G_EXCEPTION_ERROR;
18722 END IF;
18723
18724 --Build talv fa item rec
18725 r_talv_fa_rec.current_units := ln_remain_inst;
18726
18727 --akrangan Bug# 5362977 start
18728 -- For online rebook, update depreciation_cost and
18729 -- original_cost to line capital amount instead of line oec
18730 --check for rebook contract
18731 l_rbk_khr := '?';
18732 OPEN l_chk_rbk_csr (p_chr_id => r_clev_fa_rec.dnz_chr_id);
18733 FETCH l_chk_rbk_csr INTO l_rbk_khr;
18734 CLOSE l_chk_rbk_csr;
18735
18736 If l_rbk_khr = '!' Then
18737 r_talv_fa_rec.depreciation_cost := NVL(x_klev_fin_rec.capital_amount,ln_klev_fin_cap);
18738 r_talv_fa_rec.original_cost := NVL(x_klev_fin_rec.capital_amount,ln_klev_fin_cap);
18739 else
18740
18741 r_talv_fa_rec.depreciation_cost := x_klev_fin_rec.oec;
18742 r_talv_fa_rec.original_cost := x_klev_fin_rec.oec;
18743 end if;
18744 --akrangan Bug# 5362977 end
18745
18746 r_clev_fa_rec.item_description := r_talv_fa_rec.description;
18747 -- Updating of the Fixed Asset Line and item/Txl Asset Info
18748 update_fixed_asset_line(p_api_version => p_api_version,
18749 p_init_msg_list => p_init_msg_list,
18750 x_return_status => x_return_status,
18751 x_msg_count => x_msg_count,
18752 x_msg_data => x_msg_data,
18753 P_new_yn => P_new_yn,
18754 p_asset_number => p_asset_number,
18755 p_clev_rec => r_clev_fa_rec,
18756 p_klev_rec => r_klev_fa_rec,
18757 p_cimv_rec => r_cimv_fa_rec,
18758 p_talv_rec => r_talv_fa_rec,
18759 x_clev_rec => l_clev_fa_rec_out,
18760 x_klev_rec => l_klev_fa_rec_out,
18761 x_cimv_rec => x_cimv_fa_rec,
18762 x_talv_rec => x_talv_fa_rec);
18763 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18764 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18765 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18766 RAISE OKL_API.G_EXCEPTION_ERROR;
18767 END IF;
18768 --akrangan Bug# 5362977 start
18769 -- Update Tax Book details - okl_txd_assets_b
18770 update_asset_line_details(p_api_version => p_api_version,
18771 p_init_msg_list => p_init_msg_list,
18772 x_return_status => x_return_status,
18773 x_msg_count => x_msg_count,
18774 x_msg_data => x_msg_data,
18775 p_asset_number => p_asset_number,
18776 p_original_cost => x_talv_fa_rec.original_cost,
18777 p_tal_id => x_talv_fa_rec.ID);
18778 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18779 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18780 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18781 RAISE OKL_API.G_EXCEPTION_ERROR;
18782 END IF;
18783 --akrangan Bug# 5362977 end
18784
18785 -- We need to change the status of the header whenever there is updating happening
18786 -- after the contract status is approved
18787 IF (l_clev_fa_rec_out.dnz_chr_id is NOT NULL) AND
18788 (l_clev_fa_rec_out.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
18789 --cascade edit status on to lines
18790 okl_contract_status_pub.cascade_lease_status_edit
18791 (p_api_version => p_api_version,
18792 p_init_msg_list => p_init_msg_list,
18793 x_return_status => x_return_status,
18794 x_msg_count => x_msg_count,
18795 x_msg_data => x_msg_data,
18796 p_chr_id => l_clev_fa_rec_out.dnz_chr_id);
18797 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18798 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18799 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18800 RAISE OKL_API.G_EXCEPTION_ERROR;
18801 END IF;
18802 END IF;
18803
18804 END IF;
18805
18806 OKL_API.END_ACTIVITY (x_msg_count,
18807 x_msg_data );
18808 EXCEPTION
18809 WHEN OKL_API.G_EXCEPTION_ERROR THEN
18810 IF c_model_item%ISOPEN THEN
18811 CLOSE c_model_item;
18812 END IF;
18813 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
18814 l_api_name,
18815 G_PKG_NAME,
18816 'OKL_API.G_RET_STS_ERROR',
18817 x_msg_count,
18818 x_msg_data,
18819 '_PVT');
18820 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
18821 IF c_model_item%ISOPEN THEN
18822 CLOSE c_model_item;
18823 END IF;
18824 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
18825 l_api_name,
18826 G_PKG_NAME,
18827 'OKL_API.G_RET_STS_UNEXP_ERROR',
18828 x_msg_count,
18829 x_msg_data,
18830 '_PVT');
18831 WHEN OTHERS THEN
18832 IF c_model_item%ISOPEN THEN
18833 CLOSE c_model_item;
18834 END IF;
18835 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
18836 l_api_name,
18837 G_PKG_NAME,
18838 'OTHERS',
18839 x_msg_count,
18840 x_msg_data,
18841 '_PVT');
18842 END create_ints_ib_line;
18843 -------------------------------------------------------------------------------------------------------
18844 ----------------- Main Process for Updating of instance and Install base line ------------------------
18845 -------------------------------------------------------------------------------------------------------
18846 PROCEDURE update_ints_ib_line(
18847 p_api_version IN NUMBER,
18848 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
18849 x_return_status OUT NOCOPY VARCHAR2,
18850 x_msg_count OUT NOCOPY NUMBER,
18851 x_msg_data OUT NOCOPY VARCHAR2,
18852 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
18853 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
18854 p_top_line_id IN OKC_K_LINES_V.ID%TYPE,
18855 p_dnz_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
18856 p_itiv_ib_tbl IN itiv_tbl_type,
18857 x_clev_ib_tbl OUT NOCOPY clev_tbl_type,
18858 x_itiv_ib_tbl OUT NOCOPY itiv_tbl_type) IS
18859 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_INTS_IB_LINE';
18860 i NUMBER := 0;
18861 l_itiv_ib_tbl itiv_tbl_type;
18862 l_clev_inst_rec clev_rec_type;
18863 l_klev_inst_rec klev_rec_type;
18864 l_clev_ib_rec clev_rec_type;
18865 l_clev_inst_rec_out clev_rec_type;
18866 l_klev_inst_rec_out klev_rec_type;
18867 l_itiv_ib_tbl_out itiv_tbl_type;
18868 l_klev_ib_rec klev_rec_type;
18869 l_cimv_ib_rec cimv_rec_type;
18870 l_klev_ib_rec_out klev_rec_type;
18871 l_cimv_ib_rec_out cimv_rec_type;
18872 l_trxv_ib_rec_out trxv_rec_type;
18873 ln_remain_inst NUMBER := 0;
18874 ln_model_line_id OKC_K_LINES_V.ID%TYPE := OKL_API.G_MISS_NUM;
18875 lv_object_id1_new OKL_TXL_ITM_INSTS.OBJECT_ID1_NEW%TYPE := OKL_API.G_MISS_CHAR;
18876 ln_fa_line_id OKC_K_LINES_V.ID%TYPE := OKL_API.G_MISS_NUM;
18877 r_clev_model_rec clev_rec_type;
18878 r_klev_model_rec klev_rec_type;
18879 r_cimv_model_rec cimv_rec_type;
18880 r_clev_fa_rec clev_rec_type;
18881 r_klev_fa_rec klev_rec_type;
18882 r_cimv_fa_rec cimv_rec_type;
18883 r_talv_fa_rec talv_rec_type;
18884 l_clev_model_rec_out clev_rec_type;
18885 l_klev_model_rec_out klev_rec_type;
18886 l_cimv_model_rec_out cimv_rec_type;
18887 l_clev_fa_rec_out clev_rec_type;
18888 l_klev_fa_rec_out klev_rec_type;
18889 lx_cimv_fa_rec cimv_rec_type;
18890 lx_talv_fa_rec talv_rec_type;
18891 lx_clev_fin_rec clev_rec_type;
18892 lx_klev_fin_rec klev_rec_type;
18893 ln_klev_fin_oec OKL_K_LINES_V.OEC%TYPE := 0;
18894 ln_klev_fin_res OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
18895 ln_klev_fin_cap OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
18896 r_clev_addon_rec clev_rec_type;
18897 r_klev_addon_rec klev_rec_type;
18898 r_cimv_addon_rec cimv_rec_type;
18899 rx_clev_addon_rec clev_rec_type;
18900 rx_klev_addon_rec klev_rec_type;
18901 rx_cimv_addon_rec cimv_rec_type;
18902 ln_model_item OKL_TXL_ITM_INSTS.INVENTORY_ITEM_ID%TYPE;
18903
18904 CURSOR c_remain_inst_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
18905 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
18906 SELECT count(cle.id)
18907 FROM okc_subclass_top_line stl,
18908 okc_line_styles_b lse2,
18909 okc_line_styles_b lse1,
18910 okc_k_lines_v cle
18911 WHERE cle.cle_id = p_cle_id
18912 AND cle.dnz_chr_id = p_chr_id
18913 AND cle.lse_id = lse1.id
18914 AND lse1.lty_code = G_INST_LINE_LTY_CODE
18915 AND lse1.lse_parent_id = lse2.id
18916 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
18917 AND lse2.id = stl.lse_id
18918 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
18919
18920 CURSOR c_model_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
18921 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
18922 SELECT cle.id
18923 FROM okc_subclass_top_line stl,
18924 okc_line_styles_b lse2,
18925 okc_line_styles_b lse1,
18926 okc_k_lines_v cle
18927 WHERE cle.cle_id = p_cle_id
18928 AND cle.dnz_chr_id = p_chr_id
18929 AND cle.lse_id = lse1.id
18930 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
18931 AND lse1.lse_parent_id = lse2.id
18932 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
18933 AND lse2.id = stl.lse_id
18934 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
18935
18936 CURSOR c_model_item(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
18937 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
18938 SELECT cim.object1_id1
18939 FROM okc_subclass_top_line stl,
18940 okc_line_styles_b lse2,
18941 okc_line_styles_b lse1,
18942 okc_k_items cim,
18943 okc_k_lines_v cle
18944 WHERE cle.cle_id = p_cle_id
18945 AND cle.dnz_chr_id = p_chr_id
18946 AND cle.lse_id = lse1.id
18947 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
18948 AND lse1.lse_parent_id = lse2.id
18949 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
18950 AND lse2.id = stl.lse_id
18951 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE)
18952 AND cle.id = cim.cle_id
18953 AND cim.dnz_chr_id = cle.dnz_chr_id
18954 AND cim.jtot_object1_code = 'OKX_SYSITEM';
18955
18956 CURSOR c_fa_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
18957 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
18958 SELECT cle.id
18959 FROM okc_subclass_top_line stl,
18960 okc_line_styles_b lse2,
18961 okc_line_styles_b lse1,
18962 okc_k_lines_v cle
18963 WHERE cle.cle_id = p_cle_id
18964 AND cle.dnz_chr_id = p_chr_id
18965 AND cle.lse_id = lse1.id
18966 AND lse1.lty_code = G_FA_LINE_LTY_CODE
18967 AND lse1.lse_parent_id = lse2.id
18968 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
18969 AND lse2.id = stl.lse_id
18970 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
18971
18972 CURSOR c_addon_line_id(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
18973 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
18974 SELECT cle.id
18975 FROM okc_subclass_top_line stl,
18976 okc_line_styles_b lse3,
18977 okc_line_styles_b lse2,
18978 okc_line_styles_b lse1,
18979 okc_k_lines_b cle
18980 WHERE cle.dnz_chr_id = p_chr_id
18981 AND cle.lse_id = lse1.id
18982 AND lse1.lty_code = G_ADDON_LINE_LTY_CODE
18983 AND lse1.lse_parent_id = lse2.id
18984 AND lse2.lty_code = G_MODEL_LINE_LTY_CODE
18985 AND lse2.lse_parent_id = lse3.id
18986 AND lse3.lty_code = G_FIN_LINE_LTY_CODE
18987 AND lse3.id = stl.lse_id
18988 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE)
18989 AND cle.cle_id in (SELECT cle.id
18990 FROM okc_subclass_top_line stl,
18991 okc_line_styles_b lse2,
18992 okc_line_styles_b lse1,
18993 okc_k_lines_b cle
18994 WHERE cle.cle_id = p_cle_id
18995 AND cle.dnz_chr_id = p_chr_id
18996 AND cle.lse_id = lse1.id
18997 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
18998 AND lse1.lse_parent_id = lse2.id
18999 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
19000 AND lse2.id = stl.lse_id
19001 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE));
19002 --akrangan Bug# 5362977 start
19003 --cursor to check if contract has re-lease assets
19004 CURSOR l_chk_rel_ast_csr (p_chr_id IN NUMBER) IS
19005 SELECT 'Y'
19006 FROM OKC_RULES_B rul
19007 WHERE rul.dnz_chr_id = p_chr_id
19008 AND rul.rule_information_category = 'LARLES'
19009 AND NVL(rule_information1,'N') = 'Y';
19010
19011 l_chk_rel_ast VARCHAR2(1);
19012
19013 --cursor to check if the contract is undergoing on-line rebook
19014 cursor l_chk_rbk_csr(p_chr_id IN NUMBER) is
19015 SELECT '!'
19016 FROM okc_k_headers_b chr,
19017 okl_trx_contracts ktrx
19018 WHERE ktrx.khr_id_new = chr.id
19019 AND ktrx.tsu_code = 'ENTERED'
19020 AND ktrx.rbr_code is NOT NULL
19021 AND ktrx.tcn_type = 'TRBK'
19022 --rkuttiya added for 12.1.1 Multi GAAP
19023 AND ktrx.representation_type = 'PRIMARY'
19024 --
19025 AND chr.id = p_chr_id
19026 AND chr.orig_system_source_code = 'OKL_REBOOK';
19027
19028 l_rbk_khr VARCHAR2(1);
19029 --akrangan Bug# 5362977 end
19030
19031 BEGIN
19032 x_return_status := OKL_API.G_RET_STS_SUCCESS;
19033 -- Call start_activity to create savepoint, check compatibility
19034 -- and initialize message list
19035 x_return_status := OKL_API.START_ACTIVITY (
19036 l_api_name
19037 ,p_init_msg_list
19038 ,'_PVT'
19039 ,x_return_status);
19040 -- Check if activity started successfully
19041 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19042 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19043 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19044 RAISE OKL_API.G_EXCEPTION_ERROR;
19045 END IF;
19046 -- We must have top line id to go further
19047 IF (p_top_line_id IS NUll OR
19048 p_top_line_id = OKL_API.G_MISS_NUM) AND
19049 (p_dnz_chr_id IS NUll OR
19050 p_dnz_chr_id = OKL_API.G_MISS_NUM) THEN
19051 OKL_API.set_message(p_app_name => G_APP_NAME,
19052 p_msg_name => G_REQUIRED_VALUE,
19053 p_token1 => G_COL_NAME_TOKEN,
19054 p_token1_value => 'Top Line and Dnz_chr_id');
19055 RAISE OKL_API.G_EXCEPTION_ERROR;
19056 END IF;
19057
19058 -- Get the model item
19059 OPEN c_model_item(p_top_line_id,
19060 p_dnz_chr_id);
19061 IF c_model_item%NOTFOUND THEN
19062 OKL_API.set_message(p_app_name => G_APP_NAME,
19063 p_msg_name => G_NO_MATCHING_RECORD,
19064 p_token1 => G_COL_NAME_TOKEN,
19065 p_token1_value => 'Item_Id');
19066 RAISE OKL_API.G_EXCEPTION_ERROR;
19067 END IF;
19068 FETCH c_model_item INTO ln_model_item;
19069 CLOSE c_model_item;
19070
19071 -- we have to update the txl_itm_insts table only if the p_itiv_ib_tbl(i).id is given
19072 -- otherwise we have to create instance line and install base line and then create
19073 -- okl_txl_itm_insts record
19074 l_itiv_ib_tbl := p_itiv_ib_tbl;
19075 IF l_itiv_ib_tbl.COUNT > 0 THEN
19076 -- We have intialize the I, since there could be any index integer
19077 i := l_itiv_ib_tbl.FIRST;
19078 LOOP
19079 IF l_itiv_ib_tbl(i).id IS NULL OR
19080 l_itiv_ib_tbl(i).id = OKL_API.G_MISS_NUM THEN
19081
19082 -- 4334903 Assign the line style ID directly
19083 /*
19084 -- Creation of the Instance Line Process
19085 -- Getting the Line style Info
19086 x_return_status := get_lse_id(p_lty_code => G_INST_LINE_LTY_CODE,
19087 x_lse_id => l_clev_inst_rec.lse_id);
19088 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19089 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19090 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19091 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19092 END IF;
19093 */
19094 --akrangan Bug# 5362977 start
19095 -- Do not allow update of units if the contract has Re-lease assets
19096 l_chk_rel_ast := 'N';
19097 OPEN l_chk_rel_ast_csr(p_chr_id => p_dnz_chr_id);
19098 FETCH l_chk_rel_ast_csr INTO l_chk_rel_ast;
19099 CLOSE l_chk_rel_ast_csr;
19100
19101 IF l_chk_rel_ast = 'Y' THEN
19102 OKL_API.set_message(p_app_name => G_APP_NAME,
19103 p_msg_name => 'OKL_LA_REL_UNITS_NO_UPDATE');
19104 RAISE OKL_API.G_EXCEPTION_ERROR;
19105 END IF;
19106 --akrangan Bug# 5362977 end
19107
19108 l_clev_inst_rec.display_sequence := 1;
19109 -- Required cle Line Information
19110 -- Since we have a local Record of the Instance line
19111 -- We can you the same
19112 l_clev_inst_rec.lse_id := G_INST_LINE_LTY_ID;
19113 l_clev_inst_rec.chr_id := null;
19114 l_clev_inst_rec.cle_id := p_top_line_id;
19115 l_clev_inst_rec.dnz_chr_id := p_dnz_chr_id;
19116 l_clev_inst_rec.exception_yn := 'N';
19117 IF (l_itiv_ib_tbl(i).instance_number_ib IS NULL OR
19118 l_itiv_ib_tbl(i).instance_number_ib = OKL_API.G_MISS_CHAR) THEN
19119 x_return_status := generate_instance_number_ib(x_instance_number_ib => l_itiv_ib_tbl(i).instance_number_ib);
19120 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19121 OKL_API.set_message(p_app_name => G_APP_NAME,
19122 p_msg_name => G_GEN_INST_NUM_IB);
19123 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19124 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19125 OKL_API.set_message(p_app_name => G_APP_NAME,
19126 p_msg_name => G_GEN_INST_NUM_IB);
19127 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19128 END IF;
19129 l_itiv_ib_tbl(i).instance_number_ib := p_asset_number||' '||l_itiv_ib_tbl(i).instance_number_ib;
19130 END IF;
19131 -- Creation of the Instance Line
19132 Create_instance_line(p_api_version => p_api_version,
19133 p_init_msg_list => p_init_msg_list,
19134 x_return_status => x_return_status,
19135 x_msg_count => x_msg_count,
19136 x_msg_data => x_msg_data,
19137 p_clev_rec => l_clev_inst_rec,
19138 p_klev_rec => l_klev_inst_rec,
19139 p_itiv_rec => l_itiv_ib_tbl(i),
19140 x_clev_rec => l_clev_inst_rec_out,
19141 x_klev_rec => l_klev_inst_rec_out,
19142 x_itiv_rec => l_itiv_ib_tbl_out(i));
19143 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19144 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19145 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19146 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19147 END IF;
19148 -- 4414408 Assign the line style ID directly
19149 /*
19150 -- Creation of the ib Line Process
19151 -- Getting the Line style Info
19152 x_return_status := get_lse_id(p_lty_code => G_IB_LINE_LTY_CODE,
19153 x_lse_id => l_clev_ib_rec.lse_id);
19154 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19155 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19156 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19157 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19158 END IF;
19159 */
19160 l_clev_ib_rec.lse_id := G_IB_LINE_LTY_ID;
19161 l_clev_ib_rec.display_sequence := 2;
19162 -- Required cle Line Information
19163 l_clev_ib_rec.chr_id := null;
19164 l_clev_ib_rec.cle_id := l_clev_inst_rec_out.id;
19165 l_clev_ib_rec.dnz_chr_id := l_clev_inst_rec_out.dnz_chr_id;
19166 l_clev_ib_rec.exception_yn := 'N';
19167 -- Required Item Information
19168 l_cimv_ib_rec.exception_yn := 'N';
19169 l_cimv_ib_rec.object1_id1 := null;
19170 l_cimv_ib_rec.object1_id2 := null;
19171 -- Since the screen can give only party_site_id via l_itiv_ib_tbl(i).object_id1_new
19172 -- We have to use the below function
19173 lv_object_id1_new := l_itiv_ib_tbl(i).object_id1_new;
19174 x_return_status := get_party_site_id(p_object_id1_new => lv_object_id1_new,
19175 x_object_id1_new => l_itiv_ib_tbl(i).object_id1_new,
19176 x_object_id2_new => l_itiv_ib_tbl(i).object_id2_new);
19177 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19178 OKL_API.set_message(p_app_name => G_APP_NAME,
19179 p_msg_name => G_NO_MATCHING_RECORD,
19180 p_token1 => G_COL_NAME_TOKEN,
19181 p_token1_value => 'Party_site_id');
19182 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19183 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19184 OKL_API.set_message(p_app_name => G_APP_NAME,
19185 p_msg_name => G_NO_MATCHING_RECORD,
19186 p_token1 => G_COL_NAME_TOKEN,
19187 p_token1_value => 'Party_site_id');
19188 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19189 END IF;
19190
19191 -- Check for uniqueness of Serial number
19192 x_return_status := is_duplicate_serial_number(p_serial_number => l_itiv_ib_tbl(i).serial_number,
19193 p_item_id => ln_model_item);
19194 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19195 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19196 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19197 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19198 END IF;
19199
19200 -- Creation of the ib Line
19201 Create_instance_ib_line(p_api_version => p_api_version,
19202 p_init_msg_list => p_init_msg_list,
19203 x_return_status => x_return_status,
19204 x_msg_count => x_msg_count,
19205 x_msg_data => x_msg_data,
19206 p_clev_rec => l_clev_ib_rec,
19207 p_klev_rec => l_klev_ib_rec,
19208 p_cimv_rec => l_cimv_ib_rec,
19209 p_itiv_rec => l_itiv_ib_tbl(i),
19210 x_clev_rec => x_clev_ib_tbl(i),
19211 x_klev_rec => l_klev_ib_rec_out,
19212 x_cimv_rec => l_cimv_ib_rec_out,
19213 x_trxv_rec => l_trxv_ib_rec_out,
19214 x_itiv_rec => x_itiv_ib_tbl(i));
19215 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19216 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19217 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19218 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19219 END IF;
19220 ELSIF l_itiv_ib_tbl(i).id IS NOT NULL OR
19221 l_itiv_ib_tbl(i).id <> OKL_API.G_MISS_NUM THEN
19222
19223 -- Check for uniqueness of Serial number
19224 x_return_status := is_duplicate_serial_number(p_serial_number => l_itiv_ib_tbl(i).serial_number,
19225 p_item_id => ln_model_item);
19226 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19227 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19228 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19229 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19230 END IF;
19231
19232 -- We are here b'cause we have to update the okl_txl_itm_inst rec
19233 -- So we are calling the update api for the okl_txl_itm_insts rec
19234 l_itiv_ib_tbl(i).object_id2_new := '#';
19235 update_txl_itm_insts(p_api_version => p_api_version,
19236 p_init_msg_list => p_init_msg_list,
19237 x_return_status => x_return_status,
19238 x_msg_count => x_msg_count,
19239 x_msg_data => x_msg_data,
19240 p_itiv_rec => l_itiv_ib_tbl(i),
19241 x_itiv_rec => x_itiv_ib_tbl(i));
19242 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19243 OKL_API.set_message(p_app_name => G_APP_NAME,
19244 p_msg_name => G_ITI_ID);
19245 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19246 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19247 OKL_API.set_message(p_app_name => G_APP_NAME,
19248 p_msg_name => G_ITI_ID);
19249 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19250 END IF;
19251 ELSE
19252 OKL_API.set_message(p_app_name => G_APP_NAME,
19253 p_msg_name => G_LINE_RECORD);
19254 x_return_status := OKL_API.G_RET_STS_ERROR;
19255 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19256 END IF;
19257 EXIT WHEN (i = l_itiv_ib_tbl.LAST);
19258 i := l_itiv_ib_tbl.NEXT(i);
19259 END LOOP;
19260 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19261 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19262 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19263 RAISE OKL_API.G_EXCEPTION_ERROR;
19264 END IF;
19265 ELSE
19266 OKL_API.set_message(p_app_name => G_APP_NAME,
19267 p_msg_name => G_CNT_REC);
19268 RAISE OKL_API.G_EXCEPTION_ERROR;
19269 END IF;
19270 -- we should get the remaining inst line , so that we can update
19271 -- the fixed line , model line and also update the top line with latest OEC
19272 OPEN c_remain_inst_line(p_top_line_id,
19273 p_dnz_chr_id);
19274 IF c_remain_inst_line%NOTFOUND THEN
19275 OKL_API.set_message(p_app_name => G_APP_NAME,
19276 p_msg_name => G_DELETING_INSTS_LINE);
19277 RAISE OKL_API.G_EXCEPTION_ERROR;
19278 END IF;
19279 FETCH c_remain_inst_line INTO ln_remain_inst;
19280 CLOSE c_remain_inst_line;
19281 -- To get the Model Line
19282 -- Since we have update the model line
19283 OPEN c_model_line(p_top_line_id,
19284 p_dnz_chr_id);
19285 IF c_model_line%NOTFOUND THEN
19286 OKL_API.set_message(p_app_name => G_APP_NAME,
19287 p_msg_name => G_NO_MATCHING_RECORD,
19288 p_token1 => G_COL_NAME_TOKEN,
19289 p_token1_value => 'Model Asset Line record');
19290 RAISE OKL_API.G_EXCEPTION_ERROR;
19291 END IF;
19292 FETCH c_model_line INTO ln_model_line_id;
19293 CLOSE c_model_line;
19294 -- To get the Fixed Asset Line
19295 -- Since we have update the Fixed Asset Line
19296 OPEN c_fa_line(p_top_line_id,
19297 p_dnz_chr_id);
19298 IF c_fa_line%NOTFOUND THEN
19299 OKL_API.set_message(p_app_name => G_APP_NAME,
19300 p_msg_name => G_NO_MATCHING_RECORD,
19301 p_token1 => G_COL_NAME_TOKEN,
19302 p_token1_value => 'Fixed Asset Line record');
19303 RAISE OKL_API.G_EXCEPTION_ERROR;
19304 END IF;
19305 FETCH c_fa_line INTO ln_fa_line_id;
19306 CLOSE c_fa_line;
19307 --We have to build the Model Line Record for the calculations of the
19308 -- oec of the top line
19309 -- To Get the cle Model Line Record
19310 x_return_status := get_rec_clev(ln_model_line_id,
19311 r_clev_model_rec);
19312 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19313 OKL_API.set_message(p_app_name => G_APP_NAME,
19314 p_msg_name => G_FETCHING_INFO,
19315 p_token1 => G_REC_NAME_TOKEN,
19316 p_token1_value => 'OKC_K_LINES_V Record');
19317 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19318 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19319 OKL_API.set_message(p_app_name => G_APP_NAME,
19320 p_msg_name => G_FETCHING_INFO,
19321 p_token1 => G_REC_NAME_TOKEN,
19322 p_token1_value => 'OKC_K_LINES_V Record');
19323 RAISE OKL_API.G_EXCEPTION_ERROR;
19324 END IF;
19325 -- To Get the kle Model Line Record
19326 x_return_status := get_rec_klev(ln_model_line_id,
19327 r_klev_model_rec);
19328 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19329 OKL_API.set_message(p_app_name => G_APP_NAME,
19330 p_msg_name => G_FETCHING_INFO,
19331 p_token1 => G_REC_NAME_TOKEN,
19332 p_token1_value => 'OKL_K_LINES_V Record');
19333 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19334 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19335 OKL_API.set_message(p_app_name => G_APP_NAME,
19336 p_msg_name => G_FETCHING_INFO,
19337 p_token1 => G_REC_NAME_TOKEN,
19338 p_token1_value => 'OKL_K_LINES_V Record');
19339 RAISE OKL_API.G_EXCEPTION_ERROR;
19340 END IF;
19341 IF r_klev_model_rec.id <> r_clev_model_rec.id THEN
19342 OKL_API.set_message(p_app_name => G_APP_NAME,
19343 p_msg_name => G_LINE_RECORD);
19344 RAISE OKL_API.G_EXCEPTION_ERROR;
19345 END IF;
19346 -- To Get the cimv Model Line Record
19347 x_return_status := get_rec_cimv(r_clev_model_rec.id,
19348 r_clev_model_rec.dnz_chr_id,
19349 r_cimv_model_rec);
19350 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19351 OKL_API.set_message(p_app_name => G_APP_NAME,
19352 p_msg_name => G_FETCHING_INFO,
19353 p_token1 => G_REC_NAME_TOKEN,
19354 p_token1_value => 'OKC_K_ITEMS_V Record');
19355 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19356 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19357 OKL_API.set_message(p_app_name => G_APP_NAME,
19358 p_msg_name => G_FETCHING_INFO,
19359 p_token1 => G_REC_NAME_TOKEN,
19360 p_token1_value => 'OKC_K_ITEMS_V Record');
19361 RAISE OKL_API.G_EXCEPTION_ERROR;
19362 END IF;
19363 --Build Model cimv item rec
19364 r_cimv_model_rec.number_of_items := ln_remain_inst;
19365 -- Updating of the Model Line and Item Record
19366 update_model_line(p_api_version => p_api_version,
19367 p_init_msg_list => p_init_msg_list,
19368 x_return_status => x_return_status,
19369 x_msg_count => x_msg_count,
19370 x_msg_data => x_msg_data,
19371 P_new_yn => P_new_yn,
19372 p_asset_number => p_asset_number,
19373 p_clev_rec => r_clev_model_rec,
19374 p_klev_rec => r_klev_model_rec,
19375 p_cimv_rec => r_cimv_model_rec,
19376 x_clev_rec => l_clev_model_rec_out,
19377 x_klev_rec => l_klev_model_rec_out,
19378 x_cimv_rec => l_cimv_model_rec_out);
19379 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19380 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19381 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19382 RAISE OKL_API.G_EXCEPTION_ERROR;
19383 END IF;
19384 -- We need to check if there are add on line and then we update the Addon number of items also
19385 -- Since there can be multiple Addo lines
19386 FOR r_addon_line_id IN c_addon_line_id(p_cle_id => p_top_line_id,
19387 p_chr_id => p_dnz_chr_id) LOOP
19388 --We have to build the addon Line Record for the calculations of the
19389 -- oec of the top line
19390 -- To Get the cle addon Line Record
19391 x_return_status := get_rec_clev(r_addon_line_id.id,
19392 r_clev_addon_rec);
19393 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19394 OKL_API.set_message(p_app_name => G_APP_NAME,
19395 p_msg_name => G_FETCHING_INFO,
19396 p_token1 => G_REC_NAME_TOKEN,
19397 p_token1_value => 'OKC_K_LINES_V Record');
19398 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19399 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19400 OKL_API.set_message(p_app_name => G_APP_NAME,
19401 p_msg_name => G_FETCHING_INFO,
19402 p_token1 => G_REC_NAME_TOKEN,
19403 p_token1_value => 'OKC_K_LINES_V Record');
19404 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19405 END IF;
19406 -- To Get the kle Model Line Record
19407 x_return_status := get_rec_klev(r_addon_line_id.id,
19408 r_klev_addon_rec);
19409 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19410 OKL_API.set_message(p_app_name => G_APP_NAME,
19411 p_msg_name => G_FETCHING_INFO,
19412 p_token1 => G_REC_NAME_TOKEN,
19413 p_token1_value => 'OKL_K_LINES_V Record');
19414 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19415 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19416 OKL_API.set_message(p_app_name => G_APP_NAME,
19417 p_msg_name => G_FETCHING_INFO,
19418 p_token1 => G_REC_NAME_TOKEN,
19419 p_token1_value => 'OKL_K_LINES_V Record');
19420 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19421 END IF;
19422 IF r_klev_addon_rec.id <> r_clev_addon_rec.id THEN
19423 OKL_API.set_message(p_app_name => G_APP_NAME,
19424 p_msg_name => G_LINE_RECORD);
19425 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19426 END IF;
19427 -- To Get the cimv Model Line Record
19428 x_return_status := get_rec_cimv(r_clev_addon_rec.id,
19429 r_clev_addon_rec.dnz_chr_id,
19430 r_cimv_addon_rec);
19431 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19432 OKL_API.set_message(p_app_name => G_APP_NAME,
19433 p_msg_name => G_FETCHING_INFO,
19434 p_token1 => G_REC_NAME_TOKEN,
19435 p_token1_value => 'OKC_K_ITEMS_V Record');
19436 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19437 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19438 OKL_API.set_message(p_app_name => G_APP_NAME,
19439 p_msg_name => G_FETCHING_INFO,
19440 p_token1 => G_REC_NAME_TOKEN,
19441 p_token1_value => 'OKC_K_ITEMS_V Record');
19442 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19443 END IF;
19444 --Build addon cimv item rec
19445 r_cimv_addon_rec.number_of_items := ln_remain_inst;
19446 -- Updating of the addon Line and Item Record
19447 update_addon_line_rec(p_api_version => p_api_version,
19448 p_init_msg_list => p_init_msg_list,
19449 x_return_status => x_return_status,
19450 x_msg_count => x_msg_count,
19451 x_msg_data => x_msg_data,
19452 P_new_yn => P_new_yn,
19453 p_asset_number => p_asset_number,
19454 p_clev_rec => r_clev_addon_rec,
19455 p_klev_rec => r_klev_addon_rec,
19456 p_cimv_rec => r_cimv_addon_rec,
19457 x_clev_rec => rx_clev_addon_rec,
19458 x_klev_rec => rx_klev_addon_rec,
19459 x_cimv_rec => rx_cimv_addon_rec);
19460 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19461 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19462 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19463 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19464 END IF;
19465 END LOOP;
19466 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19467 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19468 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19469 RAISE OKL_API.G_EXCEPTION_ERROR;
19470 END IF;
19471 -- Since we need to populate the OEC into fixed asset line also
19472 -- So we need to calcualte the same here it self
19473 oec_calc_upd_fin_rec(p_api_version => p_api_version,
19474 p_init_msg_list => p_init_msg_list,
19475 x_return_status => x_return_status,
19476 x_msg_count => x_msg_count,
19477 x_msg_data => x_msg_data,
19478 P_new_yn => P_new_yn,
19479 p_asset_number => p_asset_number,
19480 -- 4414408
19481 p_top_line_id => p_top_line_id,
19482 p_dnz_chr_id => l_clev_model_rec_out.dnz_chr_id,
19483 x_fin_clev_rec => lx_clev_fin_rec,
19484 x_fin_klev_rec => lx_klev_fin_rec,
19485 x_oec => ln_klev_fin_oec,
19486 p_validate_fin_line => OKL_API.G_TRUE);
19487 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19488 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19489 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19490 RAISE OKL_API.G_EXCEPTION_ERROR;
19491 END IF;
19492 -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
19493 cap_amt_calc_upd_fin_rec(p_api_version => p_api_version,
19494 p_init_msg_list => p_init_msg_list,
19495 x_return_status => x_return_status,
19496 x_msg_count => x_msg_count,
19497 x_msg_data => x_msg_data,
19498 P_new_yn => P_new_yn,
19499 p_asset_number => p_asset_number,
19500 -- 4414408
19501 p_top_line_id => p_top_line_id,
19502 p_dnz_chr_id => l_clev_model_rec_out.dnz_chr_id,
19503 x_fin_clev_rec => lx_clev_fin_rec,
19504 x_fin_klev_rec => lx_klev_fin_rec,
19505 x_cap_amt => ln_klev_fin_cap,
19506 p_validate_fin_line => OKL_API.G_TRUE);
19507 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19508 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19509 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19510 RAISE OKL_API.G_EXCEPTION_ERROR;
19511 END IF;
19512 -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
19513 res_value_calc_upd_fin_rec(p_api_version => p_api_version,
19514 p_init_msg_list => p_init_msg_list,
19515 x_return_status => x_return_status,
19516 x_msg_count => x_msg_count,
19517 x_msg_data => x_msg_data,
19518 P_new_yn => P_new_yn,
19519 p_asset_number => p_asset_number,
19520 -- 4414408
19521 p_top_line_id => p_top_line_id,
19522 p_dnz_chr_id => l_clev_model_rec_out.dnz_chr_id,
19523 x_fin_clev_rec => lx_clev_fin_rec,
19524 x_fin_klev_rec => lx_klev_fin_rec,
19525 x_res_value => ln_klev_fin_res,
19526 p_validate_fin_line => OKL_API.G_TRUE);
19527 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19528 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19529 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19530 RAISE OKL_API.G_EXCEPTION_ERROR;
19531 END IF;
19532 -- Updating of the Fixed Asset Line Process
19533 -- To Get the cle fa Line Record
19534 x_return_status := get_rec_clev(ln_fa_line_id,
19535 r_clev_fa_rec);
19536 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19537 OKL_API.set_message(p_app_name => G_APP_NAME,
19538 p_msg_name => G_FETCHING_INFO,
19539 p_token1 => G_REC_NAME_TOKEN,
19540 p_token1_value => 'OKC_K_LINES_V Record');
19541 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19542 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19543 OKL_API.set_message(p_app_name => G_APP_NAME,
19544 p_msg_name => G_FETCHING_INFO,
19545 p_token1 => G_REC_NAME_TOKEN,
19546 p_token1_value => 'OKC_K_LINES_V Record');
19547 RAISE OKL_API.G_EXCEPTION_ERROR;
19548 END IF;
19549 -- To Get the kle fa Line Record
19550 x_return_status := get_rec_klev(ln_fa_line_id,
19551 r_klev_fa_rec);
19552 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19553 OKL_API.set_message(p_app_name => G_APP_NAME,
19554 p_msg_name => G_FETCHING_INFO,
19555 p_token1 => G_REC_NAME_TOKEN,
19556 p_token1_value => 'OKL_K_LINES_V Record');
19557 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19558 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19559 OKL_API.set_message(p_app_name => G_APP_NAME,
19560 p_msg_name => G_FETCHING_INFO,
19561 p_token1 => G_REC_NAME_TOKEN,
19562 p_token1_value => 'OKL_K_LINES_V Record');
19563 RAISE OKL_API.G_EXCEPTION_ERROR;
19564 END IF;
19565 IF r_klev_fa_rec.id <> r_clev_fa_rec.id THEN
19566 OKL_API.set_message(p_app_name => G_APP_NAME,
19567 p_msg_name => G_LINE_RECORD);
19568 RAISE OKL_API.G_EXCEPTION_ERROR;
19569 END IF;
19570 -- To Get the cimv fa Line Record
19571 x_return_status := get_rec_cimv(r_clev_fa_rec.id,
19572 r_clev_fa_rec.dnz_chr_id,
19573 r_cimv_fa_rec);
19574 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19575 OKL_API.set_message(p_app_name => G_APP_NAME,
19576 p_msg_name => G_FETCHING_INFO,
19577 p_token1 => G_REC_NAME_TOKEN,
19578 p_token1_value => 'OKC_K_ITEMS_V Record');
19579 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19580 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19581 OKL_API.set_message(p_app_name => G_APP_NAME,
19582 p_msg_name => G_FETCHING_INFO,
19583 p_token1 => G_REC_NAME_TOKEN,
19584 p_token1_value => 'OKC_K_ITEMS_V Record');
19585 RAISE OKL_API.G_EXCEPTION_ERROR;
19586 END IF;
19587 --Build cimv fa item rec
19588 r_cimv_fa_rec.number_of_items := ln_remain_inst;
19589 --Build talv fa item rec
19590 x_return_status := get_rec_txlv(r_clev_fa_rec.id,
19591 r_talv_fa_rec);
19592 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19593 OKL_API.set_message(p_app_name => G_APP_NAME,
19594 p_msg_name => G_FETCHING_INFO,
19595 p_token1 => G_REC_NAME_TOKEN,
19596 p_token1_value => 'OKL_TXL_ASSETS_V Record');
19597 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19598 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19599 OKL_API.set_message(p_app_name => G_APP_NAME,
19600 p_msg_name => G_FETCHING_INFO,
19601 p_token1 => G_REC_NAME_TOKEN,
19602 p_token1_value => 'OKL_TXL_ASSETS_V Record');
19603 RAISE OKL_API.G_EXCEPTION_ERROR;
19604 END IF;
19605 --Build talv fa item rec
19606 r_talv_fa_rec.current_units := ln_remain_inst;
19607 --akrangan Bug# 5362977 start
19608 -- For online rebook, update depreciation_cost and
19609 -- original_cost to line capital amount instead of line oec
19610 --check for rebook contract
19611 l_rbk_khr := '?';
19612 OPEN l_chk_rbk_csr (p_chr_id => r_clev_fa_rec.dnz_chr_id);
19613 FETCH l_chk_rbk_csr INTO l_rbk_khr;
19614 CLOSE l_chk_rbk_csr;
19615
19616 If l_rbk_khr = '!' Then
19617 r_talv_fa_rec.depreciation_cost := NVL(lx_klev_fin_rec.capital_amount,ln_klev_fin_cap);
19618 r_talv_fa_rec.original_cost := NVL(lx_klev_fin_rec.capital_amount,ln_klev_fin_cap);
19619 else
19620
19621 r_talv_fa_rec.depreciation_cost := lx_klev_fin_rec.oec;
19622 r_talv_fa_rec.original_cost := lx_klev_fin_rec.oec;
19623 end if;
19624 --akrangan Bug# 5362977 end
19625
19626 r_clev_fa_rec.item_description := r_talv_fa_rec.description;
19627 -- Updating of the Fixed Asset Line and item/Txl Asset Info
19628 update_fixed_asset_line(p_api_version => p_api_version,
19629 p_init_msg_list => p_init_msg_list,
19630 x_return_status => x_return_status,
19631 x_msg_count => x_msg_count,
19632 x_msg_data => x_msg_data,
19633 P_new_yn => P_new_yn,
19634 p_asset_number => p_asset_number,
19635 p_clev_rec => r_clev_fa_rec,
19636 p_klev_rec => r_klev_fa_rec,
19637 p_cimv_rec => r_cimv_fa_rec,
19638 p_talv_rec => r_talv_fa_rec,
19639 x_clev_rec => l_clev_fa_rec_out,
19640 x_klev_rec => l_klev_fa_rec_out,
19641 x_cimv_rec => lx_cimv_fa_rec,
19642 x_talv_rec => lx_talv_fa_rec);
19643 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19644 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19645 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19646 RAISE OKL_API.G_EXCEPTION_ERROR;
19647 END IF;
19648 --akrangan Bug# 5362977 start
19649 -- Update Tax Book details - okl_txd_assets_b
19650 update_asset_line_details(p_api_version => p_api_version,
19651 p_init_msg_list => p_init_msg_list,
19652 x_return_status => x_return_status,
19653 x_msg_count => x_msg_count,
19654 x_msg_data => x_msg_data,
19655 p_asset_number => p_asset_number,
19656 p_original_cost => lx_talv_fa_rec.original_cost,
19657 p_tal_id => lx_talv_fa_rec.ID);
19658 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19659 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19660 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19661 RAISE OKL_API.G_EXCEPTION_ERROR;
19662 END IF;
19663 --akrangan Bug# 5362977 end
19664
19665 -- We need to change the status of the header whenever there is updating happening
19666 -- after the contract status is approved
19667 IF (l_clev_fa_rec_out.dnz_chr_id is NOT NULL) AND
19668 (l_clev_fa_rec_out.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
19669 --cascade edit status on to lines
19670 okl_contract_status_pub.cascade_lease_status_edit
19671 (p_api_version => p_api_version,
19672 p_init_msg_list => p_init_msg_list,
19673 x_return_status => x_return_status,
19674 x_msg_count => x_msg_count,
19675 x_msg_data => x_msg_data,
19676 p_chr_id => l_clev_fa_rec_out.dnz_chr_id);
19677 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19678 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19679 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19680 RAISE OKL_API.G_EXCEPTION_ERROR;
19681 END IF;
19682 END IF;
19683 OKL_API.END_ACTIVITY (x_msg_count,
19684 x_msg_data );
19685 EXCEPTION
19686 WHEN OKL_API.G_EXCEPTION_ERROR THEN
19687 IF c_remain_inst_line%ISOPEN THEN
19688 CLOSE c_remain_inst_line;
19689 END IF;
19690 IF c_model_line%ISOPEN THEN
19691 CLOSE c_model_line;
19692 END IF;
19693 IF c_fa_line%ISOPEN THEN
19694 CLOSE c_fa_line;
19695 END IF;
19696 IF c_addon_line_id%ISOPEN THEN
19697 CLOSE c_addon_line_id;
19698 END IF;
19699 IF c_model_item%ISOPEN THEN
19700 CLOSE c_model_item;
19701 END IF;
19702 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
19703 l_api_name,
19704 G_PKG_NAME,
19705 'OKL_API.G_RET_STS_ERROR',
19706 x_msg_count,
19707 x_msg_data,
19708 '_PVT');
19709 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
19710 IF c_remain_inst_line%ISOPEN THEN
19711 CLOSE c_remain_inst_line;
19712 END IF;
19713 IF c_model_line%ISOPEN THEN
19714 CLOSE c_model_line;
19715 END IF;
19716 IF c_fa_line%ISOPEN THEN
19717 CLOSE c_fa_line;
19718 END IF;
19719 IF c_addon_line_id%ISOPEN THEN
19720 CLOSE c_addon_line_id;
19721 END IF;
19722 IF c_model_item%ISOPEN THEN
19723 CLOSE c_model_item;
19724 END IF;
19725 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
19726 l_api_name,
19727 G_PKG_NAME,
19728 'OKL_API.G_RET_STS_UNEXP_ERROR',
19729 x_msg_count,
19730 x_msg_data,
19731 '_PVT');
19732 WHEN OTHERS THEN
19733 IF c_remain_inst_line%ISOPEN THEN
19734 CLOSE c_remain_inst_line;
19735 END IF;
19736 IF c_model_line%ISOPEN THEN
19737 CLOSE c_model_line;
19738 END IF;
19739 IF c_fa_line%ISOPEN THEN
19740 CLOSE c_fa_line;
19741 END IF;
19742 IF c_addon_line_id%ISOPEN THEN
19743 CLOSE c_addon_line_id;
19744 END IF;
19745 IF c_model_item%ISOPEN THEN
19746 CLOSE c_model_item;
19747 END IF;
19748 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
19749 l_api_name,
19750 G_PKG_NAME,
19751 'OTHERS',
19752 x_msg_count,
19753 x_msg_data,
19754 '_PVT');
19755 END update_ints_ib_line;
19756 -------------------------------------------------------------------------------------------------------
19757 ----------------- Main Process for Deletion of instance and Install base line ------------------------
19758 -------------------------------------------------------------------------------------------------------
19759 PROCEDURE delete_ints_ib_line(
19760 p_api_version IN NUMBER,
19761 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
19762 x_return_status OUT NOCOPY VARCHAR2,
19763 x_msg_count OUT NOCOPY NUMBER,
19764 x_msg_data OUT NOCOPY VARCHAR2,
19765 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
19766 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
19767 p_clev_ib_tbl IN clev_tbl_type,
19768 x_clev_fin_rec OUT NOCOPY clev_rec_type,
19769 x_klev_fin_rec OUT NOCOPY klev_rec_type,
19770 x_cimv_model_rec OUT NOCOPY cimv_rec_type,
19771 x_cimv_fa_rec OUT NOCOPY cimv_rec_type,
19772 x_talv_fa_rec OUT NOCOPY talv_rec_type) IS
19773 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_INTS_IB_LINE';
19774 l_clev_ib_tbl clev_tbl_type := p_clev_ib_tbl;
19775 l_clev_ib_rec clev_rec_type;
19776 l_clev_inst_rec clev_rec_type;
19777 ln_remain_inst NUMBER := 0;
19778 ln_model_line_id OKC_K_LINES_V.ID%TYPE := OKL_API.G_MISS_NUM;
19779 ln_fa_line_id OKC_K_LINES_V.ID%TYPE := OKL_API.G_MISS_NUM;
19780 r_clev_model_rec clev_rec_type;
19781 r_klev_model_rec klev_rec_type;
19782 r_cimv_model_rec cimv_rec_type;
19783 r_clev_fa_rec clev_rec_type;
19784 r_klev_fa_rec klev_rec_type;
19785 r_cimv_fa_rec cimv_rec_type;
19786 r_talv_fa_rec talv_rec_type;
19787 l_clev_model_rec_out clev_rec_type;
19788 l_klev_model_rec_out klev_rec_type;
19789 l_clev_fa_rec_out clev_rec_type;
19790 l_klev_fa_rec_out klev_rec_type;
19791 ln_klev_fin_oec OKL_K_LINES_V.OEC%TYPE := 0;
19792 ln_klev_fin_res OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
19793 ln_klev_fin_cap OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
19794 r_clev_addon_rec clev_rec_type;
19795 r_klev_addon_rec klev_rec_type;
19796 r_cimv_addon_rec cimv_rec_type;
19797 rx_clev_addon_rec clev_rec_type;
19798 rx_klev_addon_rec klev_rec_type;
19799 rx_cimv_addon_rec cimv_rec_type;
19800 j NUMBER := 0;
19801 lb_last_record_updated BOOLEAN := FALSE;
19802
19803 -- rravikir added
19804 l_itiv_rec itiv_rec_type;
19805 lx_itiv_rec itiv_rec_type;
19806 -- end
19807
19808 CURSOR c_remain_inst_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
19809 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
19810 SELECT count(cle.id)
19811 FROM okc_line_styles_b lse2,
19812 okc_line_styles_b lse1,
19813 okc_k_lines_v cle
19814 WHERE cle.cle_id = p_cle_id
19815 AND cle.dnz_chr_id = p_chr_id
19816 AND cle.lse_id = lse1.id
19817 AND lse1.lty_code = G_INST_LINE_LTY_CODE
19818 AND lse1.lse_parent_id = lse2.id
19819 AND lse2.lty_code = G_FIN_LINE_LTY_CODE;
19820
19821 CURSOR c_model_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
19822 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
19823 SELECT cle.id
19824 FROM okc_subclass_top_line stl,
19825 okc_line_styles_b lse2,
19826 okc_line_styles_b lse1,
19827 okc_k_lines_v cle
19828 WHERE cle.cle_id = p_cle_id
19829 AND cle.dnz_chr_id = p_chr_id
19830 AND cle.lse_id = lse1.id
19831 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
19832 AND lse1.lse_parent_id = lse2.id
19833 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
19834 AND lse2.id = stl.lse_id
19835 AND stl.scs_code = 'LEASE';
19836
19837 CURSOR c_fa_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
19838 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
19839 SELECT cle.id
19840 FROM okc_subclass_top_line stl,
19841 okc_line_styles_b lse2,
19842 okc_line_styles_b lse1,
19843 okc_k_lines_v cle
19844 WHERE cle.cle_id = p_cle_id
19845 AND cle.dnz_chr_id = p_chr_id
19846 AND cle.lse_id = lse1.id
19847 AND lse1.lty_code = G_FA_LINE_LTY_CODE
19848 AND lse1.lse_parent_id = lse2.id
19849 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
19850 AND lse2.id = stl.lse_id
19851 AND stl.scs_code = 'LEASE';
19852
19853 CURSOR c_addon_line_id(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
19854 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
19855 SELECT cle.id
19856 FROM okc_subclass_top_line stl,
19857 okc_line_styles_b lse3,
19858 okc_line_styles_b lse2,
19859 okc_line_styles_b lse1,
19860 okc_k_lines_b cle
19861 WHERE cle.dnz_chr_id = p_chr_id
19862 AND cle.lse_id = lse1.id
19863 AND lse1.lty_code = G_ADDON_LINE_LTY_CODE
19864 AND lse1.lse_parent_id = lse2.id
19865 AND lse2.lty_code = G_MODEL_LINE_LTY_CODE
19866 AND lse2.lse_parent_id = lse3.id
19867 AND lse3.lty_code = G_FIN_LINE_LTY_CODE
19868 AND lse3.id = stl.lse_id
19869 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE)
19870 AND cle.cle_id in (SELECT cle.id
19871 FROM okc_subclass_top_line stl,
19872 okc_line_styles_b lse2,
19873 okc_line_styles_b lse1,
19874 okc_k_lines_b cle
19875 WHERE cle.cle_id = p_cle_id
19876 AND cle.dnz_chr_id = p_chr_id
19877 AND cle.lse_id = lse1.id
19878 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
19879 AND lse1.lse_parent_id = lse2.id
19880 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
19881 AND lse2.id = stl.lse_id
19882 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE));
19883 --Bug# 5362977 start
19884 --cursor to check if contract has re-lease assets
19885 CURSOR l_chk_rel_ast_csr (p_chr_id IN NUMBER) IS
19886 SELECT 'Y'
19887 FROM OKC_RULES_B rul
19888 WHERE rul.dnz_chr_id = p_chr_id
19889 AND rul.rule_information_category = 'LARLES'
19890 AND NVL(rule_information1,'N') = 'Y';
19891
19892 l_chk_rel_ast VARCHAR2(1);
19893
19894 --cursor to check if the contract is undergoing on-line rebook
19895 cursor l_chk_rbk_csr(p_chr_id IN NUMBER) is
19896 SELECT '!'
19897 FROM okc_k_headers_b chr,
19898 okl_trx_contracts ktrx
19899 WHERE ktrx.khr_id_new = chr.id
19900 AND ktrx.tsu_code = 'ENTERED'
19901 AND ktrx.rbr_code is NOT NULL
19902 AND ktrx.tcn_type = 'TRBK'
19903 --rkuttiya added fopr 12.1.1 Multi GAAP
19904 AND ktrx.representation_type = 'PRIMARY'
19905 --
19906 AND chr.id = p_chr_id
19907 AND chr.orig_system_source_code = 'OKL_REBOOK';
19908
19909 l_rbk_khr VARCHAR2(1);
19910 --Bug# 5362977 end
19911
19912
19913 BEGIN
19914 x_return_status := OKL_API.G_RET_STS_SUCCESS;
19915 -- Call start_activity to create savepoint, check compatibility
19916 -- and initialize message list
19917 x_return_status := OKL_API.START_ACTIVITY (
19918 l_api_name
19919 ,p_init_msg_list
19920 ,'_PVT'
19921 ,x_return_status);
19922 -- Check if activity started successfully
19923 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19924 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19925 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19926 RAISE OKL_API.G_EXCEPTION_ERROR;
19927 END IF;
19928 IF l_clev_ib_tbl.COUNT > 0 THEN
19929 -- We have intialize the J , since there could be any index integer
19930 j := l_clev_ib_tbl.FIRST;
19931 LOOP
19932 IF l_clev_ib_tbl(j).id IS NUll OR
19933 l_clev_ib_tbl(j).id = OKL_API.G_MISS_NUM THEN
19934 OKL_API.set_message(p_app_name => G_APP_NAME,
19935 p_msg_name => G_REQUIRED_VALUE,
19936 p_token1 => G_COL_NAME_TOKEN,
19937 p_token1_value => 'IB OKC_K_LINES_B.ID');
19938 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19939 END IF;
19940 x_return_status := get_rec_clev(l_clev_ib_tbl(j).id,
19941 l_clev_ib_rec);
19942 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19943 OKL_API.set_message(p_app_name => G_APP_NAME,
19944 p_msg_name => G_FETCHING_INFO,
19945 p_token1 => G_REC_NAME_TOKEN,
19946 p_token1_value => 'OKC_K_LINES_V Record');
19947 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19948 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19949 OKL_API.set_message(p_app_name => G_APP_NAME,
19950 p_msg_name => G_FETCHING_INFO,
19951 p_token1 => G_REC_NAME_TOKEN,
19952 p_token1_value => 'OKC_K_LINES_V Record');
19953 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19954 END IF;
19955 x_return_status := get_rec_clev(l_clev_ib_rec.cle_id,
19956 l_clev_inst_rec);
19957 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19958 OKL_API.set_message(p_app_name => G_APP_NAME,
19959 p_msg_name => G_FETCHING_INFO,
19960 p_token1 => G_REC_NAME_TOKEN,
19961 p_token1_value => 'OKC_K_LINES_V Record');
19962 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19963 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19964 OKL_API.set_message(p_app_name => G_APP_NAME,
19965 p_msg_name => G_FETCHING_INFO,
19966 p_token1 => G_REC_NAME_TOKEN,
19967 p_token1_value => 'OKC_K_LINES_V Record');
19968 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19969 END IF;
19970
19971 -- we should get the remaining inst line , so that we can update
19972 -- the fixed line , model line and also update the top line with latest OEC
19973 OPEN c_remain_inst_line(l_clev_inst_rec.cle_id,
19974 l_clev_inst_rec.dnz_chr_id);
19975 IF c_remain_inst_line%NOTFOUND THEN
19976 OKL_API.set_message(p_app_name => G_APP_NAME,
19977 p_msg_name => G_DELETING_INSTS_LINE);
19978 x_return_status := OKL_API.G_RET_STS_ERROR;
19979 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19980 END IF;
19981 FETCH c_remain_inst_line INTO ln_remain_inst;
19982 CLOSE c_remain_inst_line;
19983
19984 -- Last record of the OKL_TXL_ITM_INSTS should not be deleted. It
19985 -- has to update the MFG_FLAG to 'N' and nullify the serial number.
19986 IF ln_remain_inst < 2 THEN
19987 x_return_status := get_rec_itiv(l_clev_ib_rec.id,
19988 l_itiv_rec);
19989 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19990 OKL_API.set_message(p_app_name => G_APP_NAME,
19991 p_msg_name => G_FETCHING_INFO,
19992 p_token1 => G_REC_NAME_TOKEN,
19993 p_token1_value => 'OKC_K_LINES_V Record');
19994 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19995 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19996 OKL_API.set_message(p_app_name => G_APP_NAME,
19997 p_msg_name => G_FETCHING_INFO,
19998 p_token1 => G_REC_NAME_TOKEN,
19999 p_token1_value => 'OKC_K_LINES_V Record');
20000 RAISE OKL_API.G_EXCEPTION_ERROR;
20001 END IF;
20002
20003 l_itiv_rec.mfg_serial_number_yn := 'N';
20004 l_itiv_rec.serial_number := null;
20005
20006 update_txl_itm_insts(p_api_version => p_api_version,
20007 p_init_msg_list => p_init_msg_list,
20008 x_return_status => x_return_status,
20009 x_msg_count => x_msg_count,
20010 x_msg_data => x_msg_data,
20011 p_itiv_rec => l_itiv_rec,
20012 x_itiv_rec => lx_itiv_rec);
20013 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20014 OKL_API.set_message(p_app_name => G_APP_NAME,
20015 p_msg_name => G_ITI_ID);
20016 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20017 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20018 OKL_API.set_message(p_app_name => G_APP_NAME,
20019 p_msg_name => G_ITI_ID);
20020 RAISE OKL_API.G_EXCEPTION_ERROR;
20021 END IF;
20022 lb_last_record_updated := TRUE;
20023 /* OKL_API.set_message(p_app_name => G_APP_NAME,
20024 p_msg_name => G_MIN_INST_LINE);
20025 x_return_status := OKL_API.G_RET_STS_ERROR;
20026 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);*/
20027 END IF;
20028
20029 IF (NOT lb_last_record_updated) THEN
20030 validate_sts_code(p_clev_rec => l_clev_inst_rec,
20031 x_return_status => x_return_status);
20032 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20033 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20034 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20035 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20036 END IF;
20037 --Bug# 5362977 start
20038 -- Do not allow update of units if the contract has Re-lease assets
20039 l_chk_rel_ast := 'N';
20040 OPEN l_chk_rel_ast_csr(p_chr_id => l_clev_inst_rec.dnz_chr_id);
20041 FETCH l_chk_rel_ast_csr INTO l_chk_rel_ast;
20042 CLOSE l_chk_rel_ast_csr;
20043
20044 IF l_chk_rel_ast = 'Y' THEN
20045 OKL_API.set_message(p_app_name => G_APP_NAME,
20046 p_msg_name => 'OKL_LA_REL_UNITS_NO_UPDATE');
20047 RAISE OKL_API.G_EXCEPTION_ERROR;
20048 END IF;
20049 --Bug# 5362977 end
20050
20051 OKL_CONTRACT_PUB.delete_contract_line(
20052 p_api_version => p_api_version,
20053 p_init_msg_list => p_init_msg_list,
20054 x_return_status => x_return_status,
20055 x_msg_count => x_msg_count,
20056 x_msg_data => x_msg_data,
20057 p_line_id => l_clev_inst_rec.id);
20058 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20059 OKL_API.set_message(p_app_name => G_APP_NAME,
20060 p_msg_name => G_DELETING_IB_LINE);
20061 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20062 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20063 OKL_API.set_message(p_app_name => G_APP_NAME,
20064 p_msg_name => G_DELETING_IB_LINE);
20065 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20066 END IF;
20067 END IF;
20068 EXIT WHEN (j = l_clev_ib_tbl.LAST);
20069 j := l_clev_ib_tbl.NEXT(j);
20070 END LOOP;
20071 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20072 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20073 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20074 RAISE OKL_API.G_EXCEPTION_ERROR;
20075 END IF;
20076 ELSE
20077 OKL_API.set_message(p_app_name => G_APP_NAME,
20078 p_msg_name => G_CNT_REC);
20079 RAISE OKL_API.G_EXCEPTION_ERROR;
20080 END IF;
20081 -- we should get the remaining inst line , so that we can update
20082 -- the fixed line , model line and also update the top line with latest OEC
20083 OPEN c_remain_inst_line(l_clev_inst_rec.cle_id,
20084 l_clev_inst_rec.dnz_chr_id);
20085 IF c_remain_inst_line%NOTFOUND THEN
20086 OKL_API.set_message(p_app_name => G_APP_NAME,
20087 p_msg_name => G_DELETING_INSTS_LINE);
20088 RAISE OKL_API.G_EXCEPTION_ERROR;
20089 END IF;
20090 FETCH c_remain_inst_line INTO ln_remain_inst;
20091 CLOSE c_remain_inst_line;
20092 -- To get the Model Line
20093 -- Since we have update the model line
20094 OPEN c_model_line(l_clev_inst_rec.cle_id,
20095 l_clev_inst_rec.dnz_chr_id);
20096 IF c_model_line%NOTFOUND THEN
20097 OKL_API.set_message(p_app_name => G_APP_NAME,
20098 p_msg_name => G_NO_MATCHING_RECORD,
20099 p_token1 => G_COL_NAME_TOKEN,
20100 p_token1_value => 'Model Asset Line record');
20101 RAISE OKL_API.G_EXCEPTION_ERROR;
20102 END IF;
20103 FETCH c_model_line INTO ln_model_line_id;
20104 CLOSE c_model_line;
20105 -- To get the Fixed Asset Line
20106 -- Since we have update the Fixed Asset Line
20107 OPEN c_fa_line(l_clev_inst_rec.cle_id,
20108 l_clev_inst_rec.dnz_chr_id);
20109 IF c_fa_line%NOTFOUND THEN
20110 OKL_API.set_message(p_app_name => G_APP_NAME,
20111 p_msg_name => G_NO_MATCHING_RECORD,
20112 p_token1 => G_COL_NAME_TOKEN,
20113 p_token1_value => 'Fixed Asset Line record');
20114 RAISE OKL_API.G_EXCEPTION_ERROR;
20115 END IF;
20116 FETCH c_fa_line INTO ln_fa_line_id;
20117 CLOSE c_fa_line;
20118 --We have to build the Model Line Record for the calculations of the
20119 -- oec of the top line
20120 -- To Get the cle Model Line Record
20121 x_return_status := get_rec_clev(ln_model_line_id,
20122 r_clev_model_rec);
20123 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20124 OKL_API.set_message(p_app_name => G_APP_NAME,
20125 p_msg_name => G_FETCHING_INFO,
20126 p_token1 => G_REC_NAME_TOKEN,
20127 p_token1_value => 'OKC_K_LINES_V Record');
20128 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20129 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20130 OKL_API.set_message(p_app_name => G_APP_NAME,
20131 p_msg_name => G_FETCHING_INFO,
20132 p_token1 => G_REC_NAME_TOKEN,
20133 p_token1_value => 'OKC_K_LINES_V Record');
20134 RAISE OKL_API.G_EXCEPTION_ERROR;
20135 END IF;
20136 -- To Get the kle Model Line Record
20137 x_return_status := get_rec_klev(ln_model_line_id,
20138 r_klev_model_rec);
20139 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20140 OKL_API.set_message(p_app_name => G_APP_NAME,
20141 p_msg_name => G_FETCHING_INFO,
20142 p_token1 => G_REC_NAME_TOKEN,
20143 p_token1_value => 'OKL_K_LINES_V Record');
20144 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20145 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20146 OKL_API.set_message(p_app_name => G_APP_NAME,
20147 p_msg_name => G_FETCHING_INFO,
20148 p_token1 => G_REC_NAME_TOKEN,
20149 p_token1_value => 'OKL_K_LINES_V Record');
20150 RAISE OKL_API.G_EXCEPTION_ERROR;
20151 END IF;
20152 IF r_klev_model_rec.id <> r_clev_model_rec.id THEN
20153 OKL_API.set_message(p_app_name => G_APP_NAME,
20154 p_msg_name => G_LINE_RECORD);
20155 RAISE OKL_API.G_EXCEPTION_ERROR;
20156 END IF;
20157 -- To Get the cimv Model Line Record
20158 x_return_status := get_rec_cimv(r_clev_model_rec.id,
20159 r_clev_model_rec.dnz_chr_id,
20160 r_cimv_model_rec);
20161 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20162 OKL_API.set_message(p_app_name => G_APP_NAME,
20163 p_msg_name => G_FETCHING_INFO,
20164 p_token1 => G_REC_NAME_TOKEN,
20165 p_token1_value => 'OKC_K_ITEMS_V Record');
20166 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20167 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20168 OKL_API.set_message(p_app_name => G_APP_NAME,
20169 p_msg_name => G_FETCHING_INFO,
20170 p_token1 => G_REC_NAME_TOKEN,
20171 p_token1_value => 'OKC_K_ITEMS_V Record');
20172 RAISE OKL_API.G_EXCEPTION_ERROR;
20173 END IF;
20174 --Build Model cimv item rec
20175 r_cimv_model_rec.number_of_items := ln_remain_inst;
20176 -- Updating of the Model Line and Item Record
20177 update_model_line(p_api_version => p_api_version,
20178 p_init_msg_list => p_init_msg_list,
20179 x_return_status => x_return_status,
20180 x_msg_count => x_msg_count,
20181 x_msg_data => x_msg_data,
20182 P_new_yn => P_new_yn,
20183 p_asset_number => p_asset_number,
20184 p_clev_rec => r_clev_model_rec,
20185 p_klev_rec => r_klev_model_rec,
20186 p_cimv_rec => r_cimv_model_rec,
20187 x_clev_rec => l_clev_model_rec_out,
20188 x_klev_rec => l_klev_model_rec_out,
20189 x_cimv_rec => x_cimv_model_rec);
20190 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20191 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20192 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20193 RAISE OKL_API.G_EXCEPTION_ERROR;
20194 END IF;
20195 -- We need to check if there are add on line and then we update the Addon number of items also
20196 -- Since there can be multiple Addo lines
20197 FOR r_addon_line_id IN c_addon_line_id(p_cle_id => l_clev_model_rec_out.cle_id,
20198 p_chr_id => l_clev_model_rec_out.dnz_chr_id) LOOP
20199 --We have to build the addon Line Record for the calculations of the
20200 -- oec of the top line
20201 -- To Get the cle addon Line Record
20202 x_return_status := get_rec_clev(r_addon_line_id.id,
20203 r_clev_addon_rec);
20204 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20205 OKL_API.set_message(p_app_name => G_APP_NAME,
20206 p_msg_name => G_FETCHING_INFO,
20207 p_token1 => G_REC_NAME_TOKEN,
20208 p_token1_value => 'OKC_K_LINES_V Record');
20209 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20210 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20211 OKL_API.set_message(p_app_name => G_APP_NAME,
20212 p_msg_name => G_FETCHING_INFO,
20213 p_token1 => G_REC_NAME_TOKEN,
20214 p_token1_value => 'OKC_K_LINES_V Record');
20215 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20216 END IF;
20217 -- To Get the kle Model Line Record
20218 x_return_status := get_rec_klev(r_addon_line_id.id,
20219 r_klev_addon_rec);
20220 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20221 OKL_API.set_message(p_app_name => G_APP_NAME,
20222 p_msg_name => G_FETCHING_INFO,
20223 p_token1 => G_REC_NAME_TOKEN,
20224 p_token1_value => 'OKL_K_LINES_V Record');
20225 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20226 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20227 OKL_API.set_message(p_app_name => G_APP_NAME,
20228 p_msg_name => G_FETCHING_INFO,
20229 p_token1 => G_REC_NAME_TOKEN,
20230 p_token1_value => 'OKL_K_LINES_V Record');
20231 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20232 END IF;
20233 IF r_klev_addon_rec.id <> r_clev_addon_rec.id THEN
20234 OKL_API.set_message(p_app_name => G_APP_NAME,
20235 p_msg_name => G_LINE_RECORD);
20236 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20237 END IF;
20238 -- To Get the cimv Model Line Record
20239 x_return_status := get_rec_cimv(r_clev_addon_rec.id,
20240 r_clev_addon_rec.dnz_chr_id,
20241 r_cimv_addon_rec);
20242 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20243 OKL_API.set_message(p_app_name => G_APP_NAME,
20244 p_msg_name => G_FETCHING_INFO,
20245 p_token1 => G_REC_NAME_TOKEN,
20246 p_token1_value => 'OKC_K_ITEMS_V Record');
20247 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20248 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20249 OKL_API.set_message(p_app_name => G_APP_NAME,
20250 p_msg_name => G_FETCHING_INFO,
20251 p_token1 => G_REC_NAME_TOKEN,
20252 p_token1_value => 'OKC_K_ITEMS_V Record');
20253 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20254 END IF;
20255 --Build addon cimv item rec
20256 r_cimv_addon_rec.number_of_items := ln_remain_inst;
20257 -- Updating of the addon Line and Item Record
20258 update_addon_line_rec(p_api_version => p_api_version,
20259 p_init_msg_list => p_init_msg_list,
20260 x_return_status => x_return_status,
20261 x_msg_count => x_msg_count,
20262 x_msg_data => x_msg_data,
20263 P_new_yn => P_new_yn,
20264 p_asset_number => p_asset_number,
20265 p_clev_rec => r_clev_addon_rec,
20266 p_klev_rec => r_klev_addon_rec,
20267 p_cimv_rec => r_cimv_addon_rec,
20268 x_clev_rec => rx_clev_addon_rec,
20269 x_klev_rec => rx_klev_addon_rec,
20270 x_cimv_rec => rx_cimv_addon_rec);
20271 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20272 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20273 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20274 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20275 END IF;
20276 END LOOP;
20277 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20278 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20279 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20280 RAISE OKL_API.G_EXCEPTION_ERROR;
20281 END IF;
20282 -- Since we need to populate the OEC into fixed asset line also
20283 -- So we need to calcualte the same here it self
20284 oec_calc_upd_fin_rec(p_api_version => p_api_version,
20285 p_init_msg_list => p_init_msg_list,
20286 x_return_status => x_return_status,
20287 x_msg_count => x_msg_count,
20288 x_msg_data => x_msg_data,
20289 P_new_yn => P_new_yn,
20290 p_asset_number => p_asset_number,
20291 -- 4414408
20292 p_top_line_id => l_clev_inst_rec.cle_id,
20293 p_dnz_chr_id => l_clev_model_rec_out.dnz_chr_id,
20294 x_fin_clev_rec => x_clev_fin_rec,
20295 x_fin_klev_rec => x_klev_fin_rec,
20296 x_oec => ln_klev_fin_oec,
20297 p_validate_fin_line => OKL_API.G_TRUE);
20298 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20299 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20300 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20301 RAISE OKL_API.G_EXCEPTION_ERROR;
20302 END IF;
20303 -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
20304 cap_amt_calc_upd_fin_rec(p_api_version => p_api_version,
20305 p_init_msg_list => p_init_msg_list,
20306 x_return_status => x_return_status,
20307 x_msg_count => x_msg_count,
20308 x_msg_data => x_msg_data,
20309 P_new_yn => P_new_yn,
20310 p_asset_number => p_asset_number,
20311 -- 4414408
20312 p_top_line_id => l_clev_inst_rec.cle_id,
20313 p_dnz_chr_id => l_clev_model_rec_out.dnz_chr_id,
20314 x_fin_clev_rec => x_clev_fin_rec,
20315 x_fin_klev_rec => x_klev_fin_rec,
20316 x_cap_amt => ln_klev_fin_cap,
20317 p_validate_fin_line => OKL_API.G_TRUE);
20318 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20319 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20320 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20321 RAISE OKL_API.G_EXCEPTION_ERROR;
20322 END IF;
20323 -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
20324 res_value_calc_upd_fin_rec(p_api_version => p_api_version,
20325 p_init_msg_list => p_init_msg_list,
20326 x_return_status => x_return_status,
20327 x_msg_count => x_msg_count,
20328 x_msg_data => x_msg_data,
20329 P_new_yn => P_new_yn,
20330 p_asset_number => p_asset_number,
20331 -- 4414408
20332 p_top_line_id => l_clev_inst_rec.cle_id,
20333 p_dnz_chr_id => l_clev_model_rec_out.dnz_chr_id,
20334 x_fin_clev_rec => x_clev_fin_rec,
20335 x_fin_klev_rec => x_klev_fin_rec,
20336 x_res_value => ln_klev_fin_res,
20337 p_validate_fin_line => OKL_API.G_TRUE);
20338 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20339 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20340 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20341 RAISE OKL_API.G_EXCEPTION_ERROR;
20342 END IF;
20343 -- Updating of the Fixed Asset Line Process
20344 -- To Get the cle fa Line Record
20345 x_return_status := get_rec_clev(ln_fa_line_id,
20346 r_clev_fa_rec);
20347 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20348 OKL_API.set_message(p_app_name => G_APP_NAME,
20349 p_msg_name => G_FETCHING_INFO,
20350 p_token1 => G_REC_NAME_TOKEN,
20351 p_token1_value => 'OKC_K_LINES_V Record');
20352 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20353 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20354 OKL_API.set_message(p_app_name => G_APP_NAME,
20355 p_msg_name => G_FETCHING_INFO,
20356 p_token1 => G_REC_NAME_TOKEN,
20357 p_token1_value => 'OKC_K_LINES_V Record');
20358 RAISE OKL_API.G_EXCEPTION_ERROR;
20359 END IF;
20360 -- To Get the kle fa Line Record
20361 x_return_status := get_rec_klev(ln_fa_line_id,
20362 r_klev_fa_rec);
20363 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20364 OKL_API.set_message(p_app_name => G_APP_NAME,
20365 p_msg_name => G_FETCHING_INFO,
20366 p_token1 => G_REC_NAME_TOKEN,
20367 p_token1_value => 'OKL_K_LINES_V Record');
20368 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20369 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20370 OKL_API.set_message(p_app_name => G_APP_NAME,
20371 p_msg_name => G_FETCHING_INFO,
20372 p_token1 => G_REC_NAME_TOKEN,
20373 p_token1_value => 'OKL_K_LINES_V Record');
20374 RAISE OKL_API.G_EXCEPTION_ERROR;
20375 END IF;
20376 IF r_klev_fa_rec.id <> r_clev_fa_rec.id THEN
20377 OKL_API.set_message(p_app_name => G_APP_NAME,
20378 p_msg_name => G_LINE_RECORD);
20379 RAISE OKL_API.G_EXCEPTION_ERROR;
20380 END IF;
20381 -- To Get the cimv fa Line Record
20382 x_return_status := get_rec_cimv(r_clev_fa_rec.id,
20383 r_clev_fa_rec.dnz_chr_id,
20384 r_cimv_fa_rec);
20385 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20386 OKL_API.set_message(p_app_name => G_APP_NAME,
20387 p_msg_name => G_FETCHING_INFO,
20388 p_token1 => G_REC_NAME_TOKEN,
20389 p_token1_value => 'OKC_K_ITEMS_V Record');
20390 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20391 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20392 OKL_API.set_message(p_app_name => G_APP_NAME,
20393 p_msg_name => G_FETCHING_INFO,
20394 p_token1 => G_REC_NAME_TOKEN,
20395 p_token1_value => 'OKC_K_ITEMS_V Record');
20396 RAISE OKL_API.G_EXCEPTION_ERROR;
20397 END IF;
20398 --Build cimv fa item rec
20399 r_cimv_fa_rec.number_of_items := ln_remain_inst;
20400 --Build talv fa item rec
20401 x_return_status := get_rec_txlv(r_clev_fa_rec.id,
20402 r_talv_fa_rec);
20403 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20404 OKL_API.set_message(p_app_name => G_APP_NAME,
20405 p_msg_name => G_FETCHING_INFO,
20406 p_token1 => G_REC_NAME_TOKEN,
20407 p_token1_value => 'OKL_TXL_ASSETS_V Record');
20408 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20409 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20410 OKL_API.set_message(p_app_name => G_APP_NAME,
20411 p_msg_name => G_FETCHING_INFO,
20412 p_token1 => G_REC_NAME_TOKEN,
20413 p_token1_value => 'OKL_TXL_ASSETS_V Record');
20414 RAISE OKL_API.G_EXCEPTION_ERROR;
20415 END IF;
20416 --Build talv fa item rec
20417 r_talv_fa_rec.current_units := ln_remain_inst;
20418
20419 --Bug# 5362977 start
20420 -- For online rebook, update depreciation_cost and
20421 -- original_cost to line capital amount instead of line oec
20422 --check for rebook contract
20423 l_rbk_khr := '?';
20424 OPEN l_chk_rbk_csr (p_chr_id => r_clev_fa_rec.dnz_chr_id);
20425 FETCH l_chk_rbk_csr INTO l_rbk_khr;
20426 CLOSE l_chk_rbk_csr;
20427
20428 If l_rbk_khr = '!' Then
20429 r_talv_fa_rec.depreciation_cost := NVL(x_klev_fin_rec.capital_amount,ln_klev_fin_cap);
20430 r_talv_fa_rec.original_cost := NVL(x_klev_fin_rec.capital_amount,ln_klev_fin_cap);
20431 else
20432
20433 r_talv_fa_rec.depreciation_cost := x_klev_fin_rec.oec;
20434 r_talv_fa_rec.original_cost := x_klev_fin_rec.oec;
20435 end if;
20436 --Bug# 5362977 end
20437
20438
20439 r_clev_fa_rec.item_description := r_talv_fa_rec.description;
20440 -- Updating of the Fixed Asset Line and item/Txl Asset Info
20441 update_fixed_asset_line(p_api_version => p_api_version,
20442 p_init_msg_list => p_init_msg_list,
20443 x_return_status => x_return_status,
20444 x_msg_count => x_msg_count,
20445 x_msg_data => x_msg_data,
20446 P_new_yn => P_new_yn,
20447 p_asset_number => p_asset_number,
20448 p_clev_rec => r_clev_fa_rec,
20449 p_klev_rec => r_klev_fa_rec,
20450 p_cimv_rec => r_cimv_fa_rec,
20451 p_talv_rec => r_talv_fa_rec,
20452 x_clev_rec => l_clev_fa_rec_out,
20453 x_klev_rec => l_klev_fa_rec_out,
20454 x_cimv_rec => x_cimv_fa_rec,
20455 x_talv_rec => x_talv_fa_rec);
20456 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20457 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20458 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20459 RAISE OKL_API.G_EXCEPTION_ERROR;
20460 END IF;
20461 --Bug# 5176649 start
20462 -- Update Tax Book details - okl_txd_assets_b
20463 update_asset_line_details(p_api_version => p_api_version,
20464 p_init_msg_list => p_init_msg_list,
20465 x_return_status => x_return_status,
20466 x_msg_count => x_msg_count,
20467 x_msg_data => x_msg_data,
20468 p_asset_number => p_asset_number,
20469 p_original_cost => x_talv_fa_rec.original_cost,
20470 p_tal_id => x_talv_fa_rec.ID);
20471 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20472 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20473 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20474 RAISE OKL_API.G_EXCEPTION_ERROR;
20475 END IF;
20476 --Bug# 5176649 end
20477
20478 -- We need to change the status of the header whenever there is updating happening
20479 -- after the contract status is approved
20480 IF (l_clev_fa_rec_out.dnz_chr_id is NOT NULL) AND
20481 (l_clev_fa_rec_out.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
20482 --cascade edit status on to lines
20483 okl_contract_status_pub.cascade_lease_status_edit
20484 (p_api_version => p_api_version,
20485 p_init_msg_list => p_init_msg_list,
20486 x_return_status => x_return_status,
20487 x_msg_count => x_msg_count,
20488 x_msg_data => x_msg_data,
20489 p_chr_id => l_clev_fa_rec_out.dnz_chr_id);
20490 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20491 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20492 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20493 RAISE OKL_API.G_EXCEPTION_ERROR;
20494 END IF;
20495 END IF;
20496 OKL_API.END_ACTIVITY (x_msg_count,
20497 x_msg_data );
20498 EXCEPTION
20499 WHEN OKL_API.G_EXCEPTION_ERROR THEN
20500 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
20501 l_api_name,
20502 G_PKG_NAME,
20503 'OKL_API.G_RET_STS_ERROR',
20504 x_msg_count,
20505 x_msg_data,
20506 '_PVT');
20507 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
20508 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
20509 l_api_name,
20510 G_PKG_NAME,
20511 'OKL_API.G_RET_STS_UNEXP_ERROR',
20512 x_msg_count,
20513 x_msg_data,
20514 '_PVT');
20515 WHEN OTHERS THEN
20516 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
20517 l_api_name,
20518 G_PKG_NAME,
20519 'OTHERS',
20520 x_msg_count,
20521 x_msg_data,
20522 '_PVT');
20523 END delete_ints_ib_line;
20524
20525 End OKL_CREATE_KLE_PVT;