[Home] [Help]
PACKAGE BODY: APPS.OKL_CREATE_KLE_PVT
Source
1 Package body okl_create_kle_pvt as
2 /* $Header: OKLRKLLB.pls 120.63.12020000.5 2013/03/08 12:54:15 racheruv 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 := r_okl_asdv_pk_csr.COST; --Made change by bkatraga for bug 9770391
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 --Bug# 15992711 : The re-leased flag is no longer checked at contract header
2558 -- but needs to be validated at contract line
2559 -- Cursor modified to include validation at asset line level
2560 /*CURSOR c_check_release_asset(p_dnz_chr_id OKC_K_HEADERS_B.ID%TYPE) is
2561 SELECT RULE_INFORMATION1
2562 FROM OKC_RULES_V
2563 WHERE DNZ_CHR_ID = p_dnz_chr_id
2564 AND RULE_INFORMATION_CATEGORY = 'LARLES';*/
2565
2566 CURSOR c_check_release_asset(p_asset_number IN OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2567 SELECT 'Y'
2568 FROM okl_asset_returns_all_b KAR
2569 WHERE KAR.kle_id IN (SELECT KLE.cle_id
2570 FROM okl_txl_assets_b TXL
2571 ,okl_txd_assets_b TXD
2572 ,okc_k_lines_b KLE
2573 WHERE TXD.asset_number = p_asset_number
2574 AND KLE.id = TXL.kle_id
2575 AND TXL.id = TXD.tal_id )
2576 AND KAR.ars_code = 'RE_LEASE';
2577 -- Bug# 15992711 : End of Modifications
2578
2579 BEGIN
2580 -- initialize return status
2581 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2582 -- data is required
2583 IF (p_asset_number = OKL_API.G_MISS_CHAR) OR
2584 (p_asset_number IS NULL) THEN
2585 -- store SQL error message on message stack
2586 OKL_API.set_message(p_app_name => G_APP_NAME,
2587 p_msg_name => G_REQUIRED_VALUE,
2588 p_token1 => G_COL_NAME_TOKEN,
2589 p_token1_value => 'ASSET_NUMBER');
2590 -- halt validation as it is a required field
2591 RAISE G_EXCEPTION_STOP_VALIDATION;
2592 END IF;
2593
2594 -- Get the Release asset code from OKC_RULES_V
2595 --Bug# 15992711 : Change in number of parameters passed to new cursor
2596 --OPEN c_check_release_asset(p_dnz_chr_id);
2597 OPEN c_check_release_asset(p_asset_number);
2598 -- Bug# 15992711 : End of Modifications
2599
2600 FETCH c_check_release_asset into lv_release_asset;
2601 IF c_check_release_asset%NOTFOUND THEN
2602 lv_release_asset := 'N';
2603 /* x_return_status := OKL_API.G_RET_STS_ERROR;
2604 OKL_API.set_message(p_app_name => G_APP_NAME,
2605 p_msg_name => G_NO_MATCHING_RECORD,
2606 p_token1 => G_COL_NAME_TOKEN,
2607 p_token1_value => 'OKC_RULES_V.RULE_INFORMATION1');
2608 RAISE G_EXCEPTION_HALT_VALIDATION;*/
2609 END IF;
2610 CLOSE c_check_release_asset;
2611
2612 --
2613 -- Check whether asset residual value is securitized
2614 -- If so, do not allow release of the asset
2615 --
2616 IF (upper(lv_release_asset) = 'Y') THEN
2617 okl_transaction_pvt.check_contract_securitized(
2618 p_api_version => 1.0,
2619 p_init_msg_list => OKL_API.G_FALSE,
2620 x_return_status => x_return_status,
2621 x_msg_count => x_msg_count,
2622 x_msg_data => x_msg_data,
2623 p_chr_id => p_dnz_chr_id,
2624 p_cle_id => p_kle_id,
2625 p_stream_type_class => 'RESIDUAL',
2626 p_trx_date => SYSDATE
2627 );
2628
2629 IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2630 OKL_API.set_message(p_app_name => G_APP_NAME,
2631 p_msg_name => 'OKL_LLA_ASSET_SECU_ERROR',
2632 p_token1 => 'ASSET_NUM',
2633 p_token1_value => p_asset_number
2634 );
2635
2636 x_return_status := OKL_API.G_RET_STS_ERROR;
2637 RETURN; -- no further processing
2638 END IF;
2639 END IF;
2640
2641 -- For released assets, we should not handle asset number validation.
2642 IF (upper(lv_release_asset) = 'N') THEN -- Start of release asset check
2643
2644 -- Get the asset number from the system
2645 OPEN c_get_asset_number(p_kle_id);
2646 FETCH c_get_asset_number into lv_asset_number;
2647 IF c_get_asset_number%NOTFOUND THEN
2648 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2649 END IF;
2650 CLOSE c_get_asset_number;
2651
2652 -- Check the asset number being changed
2653 IF (p_asset_number <> lv_asset_number) THEN -- Start of Asset number equality check
2654
2655 OPEN c_source_code(p_kle_id);
2656 FETCH c_source_code into lv_source_code;
2657 CLOSE c_source_code;
2658
2659 IF lv_source_code NOT IN ('OKL_REBOOK') THEN
2660 -- Enforce validation
2661 -- Validate if the Asset Number exists in OKL_TXL_ASSETS_B
2662 OPEN c_txl_asset_number(p_asset_number,
2663 p_kle_id);
2664 FETCH c_txl_asset_number into ln_okl_txl_assets_v;
2665 IF c_txl_asset_number%NOTFOUND THEN
2666 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2667 END IF;
2668 CLOSE c_txl_asset_number;
2669
2670 -- Validate if the Asset Number exists in OKX_ASSETS_V
2671 OPEN c_okx_assets_v(p_asset_number);
2672 FETCH c_okx_assets_v into ln_okx_assets_v;
2673 IF c_okx_assets_v%NOTFOUND THEN
2674 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2675 END IF;
2676 CLOSE c_okx_assets_v;
2677
2678 -- Validate if the Asset Number exists in OKX_ASSET_LINES_V
2679 OPEN c_okx_asset_lines_v(p_asset_number);
2680 FETCH c_okx_asset_lines_v into ln_okx_asset_lines_v;
2681 IF c_okx_asset_lines_v%NOTFOUND THEN
2682 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2683 END IF;
2684 CLOSE c_okx_asset_lines_v;
2685
2686 -- Validate if the Asset Number exists in OKL_TXD_ASSETS_V
2687 -- for Split Asset scenario.
2688 OPEN c_txd_assets_v(p_asset_number);
2689 FETCH c_txd_assets_v into ln_okl_txd_assets_v;
2690 IF c_txd_assets_v%NOTFOUND THEN
2691 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2692 END IF;
2693 CLOSE c_txd_assets_v;
2694
2695 ELSIF (lv_source_code = 'x' OR lv_source_code = OKL_API.G_MISS_CHAR)THEN
2696 -- Enforce validation
2697 -- Validate if the Asset Number exists in OKL_TXL_ASSETS_B
2698 OPEN c_txl_asset_number(p_asset_number,
2699 p_kle_id);
2700 FETCH c_txl_asset_number into ln_okl_txl_assets_v;
2701 IF c_txl_asset_number%NOTFOUND THEN
2702 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2703 END IF;
2704 CLOSE c_txl_asset_number;
2705
2706 -- Validate if the Asset Number exists in OKX_ASSETS_V
2707 OPEN c_okx_assets_v(p_asset_number);
2708 FETCH c_okx_assets_v into ln_okx_assets_v;
2709 IF c_okx_assets_v%NOTFOUND THEN
2710 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2711 END IF;
2712 CLOSE c_okx_assets_v;
2713
2714 -- Validate if the Asset Number exists in OKX_ASSET_LINES_V
2715 OPEN c_okx_asset_lines_v(p_asset_number);
2716 FETCH c_okx_asset_lines_v into ln_okx_asset_lines_v;
2717 IF c_okx_asset_lines_v%NOTFOUND THEN
2718 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2719 END IF;
2720 CLOSE c_okx_asset_lines_v;
2721
2722 -- Validate if the Asset Number exists in OKL_TXD_ASSETS_V
2723 -- for Split Asset scenario.
2724 OPEN c_txd_assets_v(p_asset_number);
2725 FETCH c_txd_assets_v into ln_okl_txd_assets_v;
2726 IF c_txd_assets_v%NOTFOUND THEN
2727 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2728 END IF;
2729 CLOSE c_txd_assets_v;
2730
2731 -- Since we have add this check only the cases if the asset number
2732 -- cannot be duplicate when created new fo re_book scenario
2733 ELSIF lv_source_code = 'OKL_REBOOK' THEN
2734 -- Validate if the Asset Number exists in OKL_TXL_ASSETS_V
2735 OPEN c_txl_asset_number(p_asset_number,
2736 p_kle_Id);
2737 FETCH c_txl_asset_number into ln_okl_txl_assets_v;
2738 IF c_txl_asset_number%NOTFOUND THEN
2739 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2740 END IF;
2741 CLOSE c_txl_asset_number;
2742
2743 -- Validate if the Asset Number exists in OKX_ASSETS_V
2744 OPEN c_okx_assets_v(p_asset_number);
2745 FETCH c_okx_assets_v into ln_okx_assets_v;
2746 IF c_okx_assets_v%NOTFOUND THEN
2747 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2748 END IF;
2749 CLOSE c_okx_assets_v;
2750
2751 -- Validate if the Asset Number exists in OKX_ASSET_LINES_V
2752 OPEN c_okx_asset_lines_v(p_asset_number);
2753 FETCH c_okx_asset_lines_v into ln_okx_asset_lines_v;
2754 IF c_okx_asset_lines_v%NOTFOUND THEN
2755 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2756 END IF;
2757 CLOSE c_okx_asset_lines_v;
2758
2759 -- Validate if the Asset Number exists in OKL_TXD_ASSETS_V
2760 -- for Split Asset scenario.
2761 OPEN c_txd_assets_v(p_asset_number);
2762 FETCH c_txd_assets_v into ln_okl_txd_assets_v;
2763 IF c_txd_assets_v%NOTFOUND THEN
2764 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2765 END IF;
2766 CLOSE c_txd_assets_v;
2767 END IF;
2768
2769 IF (ln_okl_txl_assets_v = 1) OR (ln_okx_assets_v = 1) OR
2770 (ln_okx_asset_lines_v = 1) OR (ln_okl_txd_assets_v = 1) THEN
2771 -- store SQL error message on message stack
2772 OKL_API.set_message(p_app_name => G_APP_NAME,
2773 p_msg_name => G_ASSET_NUMBER);
2774 RAISE G_EXCEPTION_HALT_VALIDATION;
2775 ELSIF (ln_okl_txl_assets_v = 1) AND (ln_okx_assets_v = 1) AND
2776 (ln_okx_asset_lines_v = 1) AND (ln_okl_txd_assets_v = 1) THEN
2777 -- store SQL error message on message stack
2778 OKL_API.set_message(p_app_name => G_APP_NAME,
2779 p_msg_name => G_ASSET_NUMBER);
2780 RAISE G_EXCEPTION_HALT_VALIDATION;
2781 END IF;
2782 END IF; -- End of Asset number equality check
2783 END IF; -- End of release asset check
2784 EXCEPTION
2785 WHEN G_EXCEPTION_STOP_VALIDATION then
2786 -- We are here since the field is required
2787 -- Notify Error
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 x_return_status := OKL_API.G_RET_STS_ERROR;
2807 WHEN G_EXCEPTION_HALT_VALIDATION then
2808 -- We are here b'cause we have no parent record
2809 -- If the cursor is open then it has to be closed
2810 IF c_txl_asset_number%ISOPEN THEN
2811 CLOSE c_txl_asset_number;
2812 END IF;
2813 IF c_source_code%ISOPEN THEN
2814 CLOSE c_source_code;
2815 END IF;
2816 IF c_okx_assets_v%ISOPEN THEN
2817 CLOSE c_okx_assets_v;
2818 END IF;
2819 IF c_okx_asset_lines_v%ISOPEN THEN
2820 CLOSE c_okx_asset_lines_v;
2821 END IF;
2822 IF c_check_release_asset%ISOPEN THEN
2823 CLOSE c_check_release_asset;
2824 END IF;
2825
2826 -- notify caller of an error
2827 x_return_status := OKL_API.G_RET_STS_ERROR;
2828 WHEN OTHERS THEN
2829 -- store SQL error message on message stack
2830 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
2831 p_msg_name => G_UNEXPECTED_ERROR,
2832 p_token1 => G_SQLCODE_TOKEN,
2833 p_token1_value => SQLCODE,
2834 p_token2 => G_SQLERRM_TOKEN,
2835 p_token2_value => SQLERRM);
2836 -- If the cursor is open then it has to be closed
2837 IF c_txl_asset_number%ISOPEN THEN
2838 CLOSE c_txl_asset_number;
2839 END IF;
2840 IF c_source_code%ISOPEN THEN
2841 CLOSE c_source_code;
2842 END IF;
2843 IF c_okx_assets_v%ISOPEN THEN
2844 CLOSE c_okx_assets_v;
2845 END IF;
2846 IF c_okx_asset_lines_v%ISOPEN THEN
2847 CLOSE c_okx_asset_lines_v;
2848 END IF;
2849 IF c_check_release_asset%ISOPEN THEN
2850 CLOSE c_check_release_asset;
2851 END IF;
2852
2853 -- notify caller of an error as UNEXPETED error
2854 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2855 END validate_new_ast_num_update;
2856 -------------------------------------------------------------------------------------------------
2857 -- Start of Commnets
2858 -- Badrinath Kuchibholta
2859 -- Procedure Name : Validate_new_Asset_Number
2860 -- Description : Validation for new Asset Number
2861 -- Business Rules : Validate Asset_Number against OKL_TXL_ASSETS_B.ASSET_NUMBER
2862 -- ,as same should not exists in table
2863 -- Parameters : OUT Return Status, IN Rec Info
2864 -- Version : 1.0
2865 -- End of Commnets
2866 PROCEDURE validate_new_asset_number(x_return_status OUT NOCOPY VARCHAR2,
2867 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
2868 p_dnz_chr_id IN OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
2869 ln_okl_txl_assets_v NUMBER := 0;
2870 ln_okx_assets_v NUMBER := 0;
2871 ln_okx_asset_lines_v NUMBER := 0;
2872 ln_okl_txd_assets_v NUMBER := 0;
2873 lv_release_asset OKC_RULES_V.RULE_INFORMATION1%TYPE := 'N';
2874
2875 CURSOR c_txl_asset_number(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2876 SELECT 1
2877 --FROM DUAL
2878 --WHERE EXISTS (SELECT '1'
2879 FROM OKL_TXL_ASSETS_B
2880 WHERE asset_number = p_asset_number; --);
2881 /*CURSOR c_okx_asset_lines_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2882 SELECT 1
2883 --FROM DUAL
2884 --WHERE EXISTS (SELECT '1'
2885 FROM OKX_ASSET_LINES_V
2886 WHERE asset_number = p_asset_number; --); */
2887 CURSOR c_okx_asset_lines_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2888 SELECT 1
2889 FROM fa_additions a
2890 WHERE a.asset_number = p_asset_number
2891 and exists
2892 (
2893 select 1 from okc_k_items b
2894 where b.jtot_object1_code = 'OKX_ASSET'
2895 and b.object1_id1 = to_char(a.asset_id)
2896 );
2897
2898 CURSOR c_okx_assets_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2899 SELECT 1
2900 --FROM DUAL
2901 --WHERE EXISTS (SELECT '1'
2902 FROM OKX_ASSETS_V
2903 WHERE asset_number = p_asset_number; --);
2904
2905 CURSOR c_txd_assets_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2906 SELECT 1
2907 --FROM DUAL
2908 --WHERE EXISTS (SELECT '1'
2909 FROM OKL_TRX_ASSETS TAS,
2910 OKL_TXL_ASSETS_V TXL,
2911 OKL_TXD_ASSETS_V TXD
2912 WHERE TXD.asset_number = p_asset_number
2913 AND TXD.TAL_ID = TXL.ID
2914 AND TXL.TAL_TYPE = 'ALI'
2915 AND TXL.TAS_ID = TAS.ID
2916 AND TAS.TSU_CODE = 'ENTERED'; --);
2917
2918 --Bug# 15992711 : The re-leased flag is no longer checked at contract header
2919 -- but needs to be validated at contract line
2920 -- Cursor modified to include validation at asset line level
2921 /*CURSOR c_check_release_asset(p_dnz_chr_id IN OKC_K_LINES_V.DNZ_CHR_ID%TYPE) is
2922 SELECT RULE_INFORMATION1
2923 FROM OKC_RULES_V
2924 WHERE DNZ_CHR_ID = p_dnz_chr_id
2925 AND RULE_INFORMATION_CATEGORY = 'LARLES';*/
2926
2927 CURSOR c_check_release_asset(p_asset_number IN OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2928 SELECT 'Y'
2929 FROM okl_asset_returns_all_b KAR
2930 WHERE KAR.kle_id IN (SELECT KLE.cle_id
2931 FROM okl_txl_assets_b TXL
2932 ,okl_txd_assets_b TXD
2933 ,okc_k_lines_b KLE
2934 WHERE TXD.asset_number = p_asset_number
2935 AND KLE.id = TXL.kle_id
2936 AND TXL.id = TXD.tal_id )
2937 AND KAR.ars_code = 'RE_LEASE';
2938 -- Bug# 15992711 : End of Modifications
2939
2940
2941 BEGIN
2942 -- initialize return status
2943 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2944 -- data is required
2945 IF (p_asset_number = OKL_API.G_MISS_CHAR) OR (p_asset_number IS NULL) THEN
2946 -- store SQL error message on message stack
2947 OKL_API.set_message(p_app_name => G_APP_NAME,
2948 p_msg_name => G_REQUIRED_VALUE,
2949 p_token1 => G_COL_NAME_TOKEN,
2950 p_token1_value => 'ASSET_NUMBER');
2951 -- halt validation as it is a required field
2952 RAISE G_EXCEPTION_STOP_VALIDATION;
2953 END IF;
2954
2955 IF (p_dnz_chr_id = OKL_API.G_MISS_NUM) OR (p_dnz_chr_id IS NULL) THEN
2956 -- store SQL error message on message stack
2957 OKL_API.set_message(p_app_name => G_APP_NAME,
2958 p_msg_name => G_REQUIRED_VALUE,
2959 p_token1 => G_COL_NAME_TOKEN,
2960 p_token1_value => 'DNZ_CHR_ID');
2961 -- halt validation as it is a required field
2962 RAISE G_EXCEPTION_STOP_VALIDATION;
2963 END IF;
2964
2965 -- Get the Release asset code from OKC_RULES_V
2966 -- Bug# 15992711 : Change in number of parameters passed to new cursor
2967 -- OPEN c_check_release_asset(p_dnz_chr_id);
2968 OPEN c_check_release_asset(p_asset_number);
2969 -- Bug# 15992711 : End of Modifications
2970
2971 FETCH c_check_release_asset into lv_release_asset;
2972 IF c_check_release_asset%NOTFOUND THEN
2973 lv_release_asset := 'N';
2974 /* x_return_status := OKL_API.G_RET_STS_ERROR;
2975 OKL_API.set_message(p_app_name => G_APP_NAME,
2976 p_msg_name => G_NO_MATCHING_RECORD,
2977 p_token1 => G_COL_NAME_TOKEN,
2978 p_token1_value => 'OKC_RULES_V.RULE_INFORMATION1');
2979 RAISE G_EXCEPTION_HALT_VALIDATION;*/
2980 END IF;
2981 CLOSE c_check_release_asset;
2982
2983 -- For released assets, we should not handle asset number validation.
2984 IF (upper(lv_release_asset) = 'N') THEN -- Start of release asset check
2985 -- Enforce validation
2986 -- Validate if the Asset Number exists in OKL_TXL_ASSETS_B
2987 OPEN c_txl_asset_number(p_asset_number);
2988 FETCH c_txl_asset_number into ln_okl_txl_assets_v;
2989 IF c_txl_asset_number%NOTFOUND THEN
2990 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2991 END IF;
2992 CLOSE c_txl_asset_number;
2993
2994 -- Validate if the Asset Number exists in OKX_ASSETS_V
2995 OPEN c_okx_assets_v(p_asset_number);
2996 FETCH c_okx_assets_v into ln_okx_assets_v;
2997 IF c_okx_assets_v%NOTFOUND THEN
2998 x_return_status := OKL_API.G_RET_STS_SUCCESS;
2999 END IF;
3000 CLOSE c_okx_assets_v;
3001
3002 -- Validate if the Asset Number exists in OKX_ASSET_LINES_V
3003 OPEN c_okx_asset_lines_v(p_asset_number);
3004 FETCH c_okx_asset_lines_v into ln_okx_asset_lines_v;
3005 IF c_okx_asset_lines_v%NOTFOUND THEN
3006 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3007 END IF;
3008 CLOSE c_okx_asset_lines_v;
3009
3010 -- Validate if the Asset Number exists in OKL_TXD_ASSETS_V
3011 -- for Split Asset scenario.
3012 OPEN c_txd_assets_v(p_asset_number);
3013 FETCH c_txd_assets_v into ln_okl_txd_assets_v;
3014 IF c_txd_assets_v%NOTFOUND THEN
3015 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3016 END IF;
3017 CLOSE c_txd_assets_v;
3018
3019 IF (ln_okl_txl_assets_v = 1) OR (ln_okx_assets_v = 1) OR
3020 (ln_okx_asset_lines_v = 1) OR (ln_okl_txd_assets_v = 1) THEN
3021 -- store SQL error message on message stack
3022 OKL_API.set_message(p_app_name => G_APP_NAME,
3023 p_msg_name => G_ASSET_NUMBER);
3024 RAISE G_EXCEPTION_HALT_VALIDATION;
3025 ELSIF (ln_okl_txl_assets_v = 1) AND (ln_okx_assets_v = 1) AND
3026 (ln_okx_asset_lines_v = 1) AND (ln_okl_txd_assets_v = 1) THEN
3027 -- store SQL error message on message stack
3028 OKL_API.set_message(p_app_name => G_APP_NAME,
3029 p_msg_name => G_ASSET_NUMBER);
3030 RAISE G_EXCEPTION_HALT_VALIDATION;
3031 END IF;
3032 END IF;
3033 EXCEPTION
3034 WHEN G_EXCEPTION_STOP_VALIDATION then
3035 -- We are here since the field is required
3036 -- Notify Error
3037 x_return_status := OKL_API.G_RET_STS_ERROR;
3038 WHEN G_EXCEPTION_HALT_VALIDATION then
3039 -- We are here b'cause we have no parent record
3040 -- If the cursor is open then it has to be closed
3041 IF c_txl_asset_number%ISOPEN THEN
3042 CLOSE c_txl_asset_number;
3043 END IF;
3044 IF c_okx_assets_v%ISOPEN THEN
3045 CLOSE c_okx_assets_v;
3046 END IF;
3047 IF c_okx_asset_lines_v%ISOPEN THEN
3048 CLOSE c_okx_asset_lines_v;
3049 END IF;
3050 IF c_txd_assets_v%ISOPEN THEN
3051 CLOSE c_txd_assets_v;
3052 END IF;
3053 IF c_check_release_asset%ISOPEN THEN
3054 CLOSE c_check_release_asset;
3055 END IF;
3056
3057 -- notify caller of an error
3058 x_return_status := OKL_API.G_RET_STS_ERROR;
3059 WHEN OTHERS THEN
3060 -- store SQL error message on message stack
3061 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
3062 p_msg_name => G_UNEXPECTED_ERROR,
3063 p_token1 => G_SQLCODE_TOKEN,
3064 p_token1_value => SQLCODE,
3065 p_token2 => G_SQLERRM_TOKEN,
3066 p_token2_value => SQLERRM);
3067 -- If the cursor is open then it has to be closed
3068 IF c_txl_asset_number%ISOPEN THEN
3069 CLOSE c_txl_asset_number;
3070 END IF;
3071 IF c_okx_assets_v%ISOPEN THEN
3072 CLOSE c_okx_assets_v;
3073 END IF;
3074 IF c_okx_asset_lines_v%ISOPEN THEN
3075 CLOSE c_okx_asset_lines_v;
3076 END IF;
3077 IF c_txd_assets_v%ISOPEN THEN
3078 CLOSE c_txd_assets_v;
3079 END IF;
3080 IF c_check_release_asset%ISOPEN THEN
3081 CLOSE c_check_release_asset;
3082 END IF;
3083 -- notify caller of an error as UNEXPETED error
3084 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3085 END validate_new_asset_number;
3086 -------------------------------------------------------------------------------------------------
3087 -- Start of Commnets
3088 -- Badrinath Kuchibholta
3089 -- Procedure Name : Validate_asset_tax_book
3090 -- Description : Validation Asset tax Book
3091 -- Business Rules : Validate Asset_Number, tax_book and tal type should be unique
3092 -- Parameters : OUT Return Status, IN Rec Info
3093 -- Version : 1.0
3094 -- End of Commnets
3095 PROCEDURE Validate_asset_tax_book(x_return_status OUT NOCOPY VARCHAR2,
3096 p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE,
3097 p_tax_book OKL_TXD_ASSETS_B.TAX_BOOK%TYPE,
3098 p_tal_id OKL_TXL_ASSETS_B.ID%TYPE) IS
3099 ln_asset_lines_dtls NUMBER := 0;
3100 CURSOR c_asset_lines_dtls_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE,
3101 p_tax_book OKL_TXD_ASSETS_B.TAX_BOOK%TYPE,
3102 p_tal_id OKL_TXL_ASSETS_B.ID%TYPE) is
3103 SELECT 1
3104 --FROM DUAL
3105 --WHERE EXISTS (SELECT '1'
3106 FROM OKL_TXD_ASSETS_B txd,
3107 OKL_TXL_ASSETS_B txl
3108 WHERE txl.asset_number = p_asset_number
3109 AND txl.asset_number = txd.asset_number
3110 AND txl.tal_type IN ('CFA','CIB','CRB','CRL','CSP','CRV')
3111 AND txd.tal_id = txl.id
3112 AND txd.tal_id = p_tal_id
3113 AND txd.tax_book = p_tax_book; --);
3114 BEGIN
3115 -- initialize return status
3116 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3117 -- data is required
3118 IF (p_asset_number = OKL_API.G_MISS_CHAR OR
3119 p_asset_number IS NULL) OR
3120 (p_tal_id = OKL_API.G_MISS_NUM OR
3121 p_tal_id IS NULL) OR
3122 (p_tax_book = OKL_API.G_MISS_CHAR OR
3123 p_tax_book IS NULL) THEN
3124 -- store SQL error message on message stack
3125 OKL_API.set_message(p_app_name => G_APP_NAME,
3126 p_msg_name => G_REQUIRED_VALUE,
3127 p_token1 => G_COL_NAME_TOKEN,
3128 p_token1_value => 'ASSET_NUMBER ,TAX BOOK and TAL ID');
3129 -- halt validation as it is a required field
3130 RAISE G_EXCEPTION_STOP_VALIDATION;
3131 END IF;
3132 -- Enforce validation
3133 -- Validate if the Asset Number exists in OKX_ASSET_LINES_V
3134 OPEN c_asset_lines_dtls_v(p_asset_number => p_asset_number,
3135 p_tax_book => p_tax_book,
3136 p_tal_id => p_tal_id);
3137 FETCH c_asset_lines_dtls_v into ln_asset_lines_dtls;
3138 IF c_asset_lines_dtls_v%NOTFOUND THEN
3139 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3140 END IF;
3141 CLOSE c_asset_lines_dtls_v;
3142 IF (ln_asset_lines_dtls = 1) THEN
3143 -- store SQL error message on message stack
3144 OKL_API.set_message(p_app_name => G_APP_NAME,
3145 p_msg_name => G_ASSET_NUMBER);
3146 RAISE G_EXCEPTION_HALT_VALIDATION;
3147 END IF;
3148 EXCEPTION
3149 WHEN G_EXCEPTION_STOP_VALIDATION then
3150 -- We are here since the field is required
3151 -- Notify Error
3152 x_return_status := OKL_API.G_RET_STS_ERROR;
3153 WHEN G_EXCEPTION_HALT_VALIDATION then
3154 -- We are here b'cause we have no parent record
3155 -- If the cursor is open then it has to be closed
3156 IF c_asset_lines_dtls_v%ISOPEN THEN
3157 CLOSE c_asset_lines_dtls_v;
3158 END IF;
3159 -- notify caller of an error
3160 x_return_status := OKL_API.G_RET_STS_ERROR;
3161 WHEN OTHERS 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_UNEXPECTED_ERROR,
3165 p_token1 => G_SQLCODE_TOKEN,
3166 p_token1_value => SQLCODE,
3167 p_token2 => G_SQLERRM_TOKEN,
3168 p_token2_value => SQLERRM);
3169 -- If the cursor is open then it has to be closed
3170 IF c_asset_lines_dtls_v%ISOPEN THEN
3171 CLOSE c_asset_lines_dtls_v;
3172 END IF;
3173 -- notify caller of an error as UNEXPETED error
3174 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3175 END Validate_asset_tax_book;
3176 ----------------------------------------------------------------------------------------
3177 -- Start of Commnets
3178 -- Badrinath Kuchibholta
3179 -- Procedure Name : validate_instance_number_ib
3180 -- Description : validate_instance_number_ib
3181 -- Business Rules : Validate instance_number_ib against OKL_TXL_ITM_INSTS.INSTANCE_NUMBER_IB
3182 -- ,as same should not exists in table
3183 -- Parameters : OUT Return Status, IN Rec Info
3184 -- Version : 1.0
3185 -- End of Commnets
3186
3187 PROCEDURE validate_instance_number_ib(x_return_status OUT NOCOPY VARCHAR2,
3188 p_inst_num_ib IN OKL_TXL_ITM_INSTS.INSTANCE_NUMBER_IB%TYPE) IS
3189 ln_dummy number := 0;
3190 CURSOR c_inst_num_ib_validate(p_inst_ib OKL_TXL_ITM_INSTS.INSTANCE_NUMBER_IB%TYPE) is
3191 SELECT 1
3192 --FROM DUAL
3193 --WHERE EXISTS (SELECT '1'
3194 FROM OKL_TXL_ITM_INSTS
3195 WHERE instance_number_ib = p_inst_ib; --);
3196
3197 BEGIN
3198 -- initialize return status
3199 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3200 -- data is required
3201 IF (p_inst_num_ib = OKL_API.G_MISS_CHAR OR
3202 p_inst_num_ib IS NULL) THEN
3203 -- store SQL error message on message stack
3204 OKL_API.set_message(p_app_name => G_APP_NAME,
3205 p_msg_name => G_REQUIRED_VALUE,
3206 p_token1 => G_COL_NAME_TOKEN,
3207 p_token1_value => 'INSTANCE_NUMBER_IB');
3208 RAISE G_EXCEPTION_STOP_VALIDATION;
3209 END IF;
3210 -- Enforce validation
3211 OPEN c_inst_num_ib_validate(p_inst_num_ib);
3212 FETCH c_inst_num_ib_validate into ln_dummy;
3213 IF c_inst_num_ib_validate%NOTFOUND THEN
3214 -- Since no parent record existing in OKL_TXL_ITM_INSTS
3215 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3216 END IF;
3217 CLOSE c_inst_num_ib_validate;
3218 IF (ln_dummy = 1) THEN
3219 -- store SQL error message on message stack
3220 OKL_API.set_message(p_app_name => G_APP_NAME,
3221 p_msg_name => G_INSTALL_BASE_NUMBER);
3222 RAISE G_EXCEPTION_HALT_VALIDATION;
3223 END IF;
3224 EXCEPTION
3225 WHEN G_EXCEPTION_STOP_VALIDATION then
3226 -- We are here since the field is required
3227 -- Notify Error
3228 x_return_status := OKL_API.G_RET_STS_ERROR;
3229 WHEN G_EXCEPTION_HALT_VALIDATION then
3230 -- We are here b'cause we have no parent record
3231 -- store SQL error message on message stack
3232 -- If the cursor is open then it has to be closed
3233 IF c_inst_num_ib_validate%ISOPEN THEN
3234 CLOSE c_inst_num_ib_validate;
3235 END IF;
3236 -- notify caller of an error
3237 x_return_status := OKL_API.G_RET_STS_ERROR;
3238 WHEN OTHERS THEN
3239 -- store SQL error message on message stack
3240 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
3241 p_msg_name => G_UNEXPECTED_ERROR,
3242 p_token1 => G_SQLCODE_TOKEN,
3243 p_token1_value => SQLCODE,
3244 p_token2 => G_SQLERRM_TOKEN,
3245 p_token2_value => SQLERRM);
3246 -- If the cursor is open then it has to be closed
3247 IF c_inst_num_ib_validate%ISOPEN THEN
3248 CLOSE c_inst_num_ib_validate;
3249 END IF;
3250 -- notify caller of an error as UNEXPETED error
3251 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3252 END validate_instance_number_ib;
3253 ------------------------------------------------------------------------------------------------------------
3254 -- Start of Commnets
3255 -- Badrinath Kuchibholta
3256 -- Procedure Name : validate_lse_id
3257 -- Description : validation and get the lty_code
3258 -- with OKC_LINE_STYLES_V
3259 -- Business Rules :
3260 -- Parameters :
3261 -- Version : 1.0
3262 -- End of Commnets
3263 PROCEDURE validate_lse_id(p_clev_rec IN clev_rec_type,
3264 x_return_status OUT NOCOPY VARCHAR2,
3265 x_lty_code OUT NOCOPY OKC_LINE_STYLES_V.LTY_CODE%TYPE,
3266 x_lse_type OUT NOCOPY OKC_LINE_STYLES_V.LSE_TYPE%TYPE) IS
3267 CURSOR c_lse_id_validate(p_lse_id OKC_LINE_STYLES_V.ID%TYPE) IS
3268 SELECT lty_code,
3269 lse_type
3270 FROM OKC_LINE_STYLES_V
3271 WHERE id = p_lse_id;
3272 BEGIN
3273 -- initialize return status
3274 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3275 -- data is required
3276 IF (p_clev_rec.lse_id = OKL_API.G_MISS_NUM) OR
3277 (p_clev_rec.lse_id IS NULL) THEN
3278 -- store SQL error message on message stack
3279 OKL_API.set_message(p_app_name => G_APP_NAME,
3280 p_msg_name => G_REQUIRED_VALUE,
3281 p_token1 => G_COL_NAME_TOKEN,
3282 p_token1_value => 'OKC_K_LINES_V.LSE_ID');
3283 -- halt validation as it is a required field
3284 RAISE G_EXCEPTION_STOP_VALIDATION;
3285 END IF;
3286 -- Enforce Foreign Key
3287 OPEN c_lse_id_validate(p_clev_rec.lse_id);
3288 FETCH c_lse_id_validate into x_lty_code,
3289 x_lse_type;
3290 -- If there are no records then
3291 IF c_lse_id_validate%NOTFOUND THEN
3292 OKL_API.set_message(p_app_name => G_APP_NAME,
3293 p_msg_name => G_NO_MATCHING_RECORD,
3294 p_token1 => G_COL_NAME_TOKEN,
3295 p_token1_value => 'OKC_K_LINES_V.LSE_ID');
3296 -- halt validation as it has no parent record
3297 RAISE G_EXCEPTION_HALT_VALIDATION;
3298 END IF;
3299 CLOSE c_lse_id_validate;
3300 -- If we have null records coming up
3301 IF (x_lty_code = OKL_API.G_MISS_CHAR OR
3302 x_lty_code IS NULL) AND
3303 (x_lse_type = OKL_API.G_MISS_CHAR OR
3304 x_lse_type IS NULL) THEN
3305 OKL_API.set_message(p_app_name => G_APP_NAME,
3306 p_msg_name => G_NO_MATCHING_RECORD,
3307 p_token1 => G_COL_NAME_TOKEN,
3308 p_token1_value => 'OKC_K_LINES_V.LSE_ID');
3309 -- halt validation as it has no parent record
3310 RAISE G_EXCEPTION_HALT_VALIDATION;
3311 END IF;
3312 EXCEPTION
3313 WHEN G_EXCEPTION_STOP_VALIDATION then
3314 -- We are here since the field is required
3315 -- Notify Error
3316 x_return_status := OKL_API.G_RET_STS_ERROR;
3317 WHEN G_EXCEPTION_HALT_VALIDATION then
3318 -- If the cursor is open then it has to be closed
3319 IF c_lse_id_validate%ISOPEN THEN
3320 CLOSE c_lse_id_validate;
3321 END IF;
3322 x_return_status := OKL_API.G_RET_STS_ERROR;
3323 WHEN OTHERS THEN
3324 -- store SQL error message on message stack
3325 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
3326 p_msg_name => G_UNEXPECTED_ERROR,
3327 p_token1 => G_SQLCODE_TOKEN,
3328 p_token1_value => SQLCODE,
3329 p_token2 => G_SQLERRM_TOKEN,
3330 p_token2_value => SQLERRM);
3331 -- If the cursor is open then it has to be closed
3332 IF c_lse_id_validate%ISOPEN THEN
3333 CLOSE c_lse_id_validate;
3334 END IF;
3335 -- notify caller of an error as UNEXPETED error
3336 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3337 END validate_lse_id;
3338 ---------------------------------------------------------------------------------------------------
3339 -- Start of Commnets
3340 -- Badrinath Kuchibholta
3341 -- Procedure Name : validate_cle_lse_id
3342 -- Description : validation of the cle_id
3343 -- with OKC_k_LINES_V and Check if the line style is TLS
3344 -- Business Rules :
3345 -- Parameters :
3346 -- Version : 1.0
3347 -- End of Commnets
3348
3349 PROCEDURE validate_cle_lse_id(p_clev_rec IN clev_rec_type,
3350 p_lty_code IN OKC_LINE_STYLES_V.LTY_CODE%TYPE,
3351 x_lty_code OUT NOCOPY OKC_LINE_STYLES_V.LTY_CODE%TYPE,
3352 x_return_status OUT NOCOPY VARCHAR2) IS
3353 ln_cle_id OKC_K_LINES_V.ID%TYPE := 0;
3354 lv_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
3355 lv_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
3356
3357 CURSOR c_cle_id_validate(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE) IS
3358 SELECT lse.lty_code
3359 FROM OKC_K_LINES_V cle,
3360 OKC_LINE_STYLES_V lse
3361 WHERE cle.id = p_cle_id
3362 AND lse.id = cle.lse_id;
3363
3364 BEGIN
3365 -- initialize return status
3366 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3367 -- data is required
3368 IF (p_clev_rec.cle_id = OKL_API.G_MISS_NUM OR
3369 p_clev_rec.cle_id IS NULL) THEN
3370 OKL_API.set_message(p_app_name => G_APP_NAME,
3371 p_msg_name => G_REQUIRED_VALUE,
3372 p_token1 => G_COL_NAME_TOKEN,
3373 p_token1_value => 'OKC_K_LINES_V.CLE_ID');
3374 -- halt validation as it is a required field
3375 RAISE G_EXCEPTION_STOP_VALIDATION;
3376 END IF;
3377 -- check the valid id is there
3378 OPEN c_cle_id_validate(p_clev_rec.cle_id);
3379 IF c_cle_id_validate%NOTFOUND THEN
3380 OKL_API.set_message(p_app_name => G_APP_NAME,
3381 p_msg_name => G_NO_MATCHING_RECORD,
3382 p_token1 => G_COL_NAME_TOKEN,
3383 p_token1_value => 'OKC_K_LINES_V.CLE_ID');
3384 -- halt validation as it has no parent record
3385 RAISE G_EXCEPTION_HALT_VALIDATION;
3386 END IF;
3387 FETCH c_cle_id_validate into lv_lty_code;
3388 CLOSE c_cle_id_validate;
3389 --Business Rules
3390 IF p_lty_code = G_MODEL_LINE_LTY_CODE AND
3391 lv_lty_code = G_FIN_LINE_LTY_CODE THEN
3392 x_lty_code := lv_lty_code;
3393 ELSIF p_lty_code = G_ADDON_LINE_LTY_CODE AND
3394 lv_lty_code = G_MODEL_LINE_LTY_CODE THEN
3395 x_lty_code := lv_lty_code;
3396 ELSIF p_lty_code = G_FA_LINE_LTY_CODE AND
3397 lv_lty_code = G_FIN_LINE_LTY_CODE THEN
3398 x_lty_code := lv_lty_code;
3399 ELSIF p_lty_code = G_INST_LINE_LTY_CODE AND
3400 lv_lty_code = G_FIN_LINE_LTY_CODE THEN
3401 x_lty_code := lv_lty_code;
3402 ELSIF p_lty_code = G_IB_LINE_LTY_CODE AND
3403 lv_lty_code = G_INST_LINE_LTY_CODE THEN
3404 x_lty_code := lv_lty_code;
3405 ELSE
3406 OKL_API.set_message(p_app_name => G_APP_NAME,
3407 p_msg_name => G_LINE_STYLE);
3408 -- halt validation as it has invalid Value
3409 RAISE G_EXCEPTION_HALT_VALIDATION;
3410 END IF;
3411 EXCEPTION
3412 WHEN G_EXCEPTION_STOP_VALIDATION then
3413 -- We are here since the field is required
3414 -- store SQL error message on message stack
3415 -- Notify Error
3416 x_return_status := OKL_API.G_RET_STS_ERROR;
3417 WHEN G_EXCEPTION_HALT_VALIDATION then
3418 IF c_cle_id_validate%ISOPEN THEN
3419 -- halt validation as it has no parent record
3420 RAISE G_EXCEPTION_HALT_VALIDATION;
3421 END IF;
3422 x_return_status := OKL_API.G_RET_STS_ERROR;
3423 WHEN OTHERS THEN
3424 -- store SQL error message on message stack
3425 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
3426 p_msg_name => G_UNEXPECTED_ERROR,
3427 p_token1 => G_SQLCODE_TOKEN,
3428 p_token1_value => SQLCODE,
3429 p_token2 => G_SQLERRM_TOKEN,
3430 p_token2_value => SQLERRM);
3431 IF c_cle_id_validate%ISOPEN THEN
3432 -- halt validation as it has no parent record
3433 RAISE G_EXCEPTION_HALT_VALIDATION;
3434 END IF;
3435 -- notify caller of an error as UNEXPETED error
3436 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3437 END validate_cle_lse_id;
3438 ----------------------------------------------------------------------------------------------------
3439 -- Start of Commnets
3440 -- Badrinath Kuchibholta
3441 -- Procedure Name : validate_dnz_chr_id
3442 -- Description : validation with OKC_K_LINES_V
3443 -- Business Rules :
3444 -- Parameters :
3445 -- Version : 1.0
3446 -- End of Commnets
3447
3448 PROCEDURE validate_dnz_chr_id(p_clev_rec IN clev_rec_type,
3449 x_return_status OUT NOCOPY VARCHAR2) IS
3450 ln_dummy NUMBER := 0;
3451 CURSOR c_dnz_chr_id_validate(p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
3452 SELECT 1
3453 --FROM DUAL
3454 --WHERE EXISTS (SELECT 1
3455 FROM OKC_K_HEADERS_B chrv
3456 WHERE chrv.id = p_dnz_chr_id; --);
3457 BEGIN
3458 -- initialize return status
3459 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3460 -- data is required
3461 IF (p_clev_rec.dnz_chr_id = OKL_API.G_MISS_NUM) OR
3462 (p_clev_rec.dnz_chr_id IS NULL) THEN
3463 -- store SQL error message on message stack
3464 OKL_API.set_message(p_app_name => G_APP_NAME,
3465 p_msg_name => G_REQUIRED_VALUE,
3466 p_token1 => G_COL_NAME_TOKEN,
3467 p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID');
3468 -- halt validation as it is a required field
3469 RAISE G_EXCEPTION_STOP_VALIDATION;
3470 END IF;
3471 -- Enforce Foreign Key
3472 -- since we are creating a asset line
3473 -- we assume the cle_id will not null
3474 -- as the same is not top line and it will be sub line
3475 OPEN c_dnz_chr_id_validate(p_clev_rec.dnz_chr_id);
3476 IF c_dnz_chr_id_validate%NOTFOUND THEN
3477 OKL_API.set_message(p_app_name => G_APP_NAME,
3478 p_msg_name => G_NO_MATCHING_RECORD,
3479 p_token1 => G_COL_NAME_TOKEN,
3480 p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID');
3481 -- halt validation as it has no parent record
3482 RAISE G_EXCEPTION_HALT_VALIDATION;
3483 END IF;
3484 FETCH c_dnz_chr_id_validate into ln_dummy;
3485 CLOSE c_dnz_chr_id_validate;
3486 IF (ln_dummy = 0) THEN
3487 OKL_API.set_message(p_app_name => G_APP_NAME,
3488 p_msg_name => G_NO_MATCHING_RECORD,
3489 p_token1 => G_COL_NAME_TOKEN,
3490 p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID');
3491 -- halt validation as it has no parent record
3492 RAISE G_EXCEPTION_HALT_VALIDATION;
3493 END IF;
3494 EXCEPTION
3495 WHEN G_EXCEPTION_STOP_VALIDATION then
3496 -- We are here since the field is required
3497 -- Notify Error
3498 x_return_status := OKL_API.G_RET_STS_ERROR;
3499 WHEN G_EXCEPTION_HALT_VALIDATION then
3500 -- If the cursor is open then it has to be closed
3501 IF c_dnz_chr_id_validate%ISOPEN THEN
3502 CLOSE c_dnz_chr_id_validate;
3503 END IF;
3504 x_return_status := OKL_API.G_RET_STS_ERROR;
3505 WHEN OTHERS THEN
3506 -- store SQL error message on message stack
3507 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
3508 p_msg_name => G_UNEXPECTED_ERROR,
3509 p_token1 => G_SQLCODE_TOKEN,
3510 p_token1_value => SQLCODE,
3511 p_token2 => G_SQLERRM_TOKEN,
3512 p_token2_value => SQLERRM);
3513 -- If the cursor is open then it has to be closed
3514 IF c_dnz_chr_id_validate%ISOPEN THEN
3515 CLOSE c_dnz_chr_id_validate;
3516 END IF;
3517 -- notify caller of an error as UNEXPETED error
3518 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3519 END validate_dnz_chr_id;
3520 --------------------------------------------------------------------------------------------
3521 -- Start of Commnets
3522 -- Badrinath Kuchibholta
3523 -- Procedure Name : check_required_values
3524 -- Description : check_required_values
3525 -- Business Rules :
3526 -- Parameters :
3527 -- Version : 1.0
3528 -- End of Commnets
3529
3530 FUNCTION check_required_values(p_item1 IN OKC_K_ITEMS_V.OBJECT1_ID1%TYPE,
3531 p_item2 IN OKC_K_ITEMS_V.OBJECT1_ID2%TYPE,
3532 p_ast_no IN OKL_TXL_ASSETS_B.ASSET_NUMBER%TYPE,
3533 p_ast_desc IN OKL_TXL_ASSETS_TL.DESCRIPTION%TYPE,
3534 p_cost IN OKL_TXL_ASSETS_B.ORIGINAL_COST%TYPE,
3535 p_units IN OKC_K_ITEMS_V.NUMBER_OF_ITEMS%TYPE,
3536 p_ib_loc1 IN OKL_TXL_ITM_INSTS_V.OBJECT_ID1_NEW%TYPE,
3537 p_ib_loc2 IN OKL_TXL_ITM_INSTS_V.OBJECT_ID2_NEW%TYPE,
3538 p_fa_loc IN OKL_TXL_ASSETS_B.FA_LOCATION_ID%TYPE,
3539 p_refinance_amount IN OKL_K_LINES.REFINANCE_AMOUNT%TYPE,
3540 p_chr_id IN OKC_K_LINES_B.DNZ_CHR_ID%TYPE)
3541 RETURN VARCHAR2 IS
3542 x_return_status VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
3543 ln_dummy NUMBER := 0;
3544 ln1_dummy NUMBER := 0;
3545 ln2_dummy NUMBER := 0;
3546 ln3_dummy NUMBER := p_units;
3547 lv_deal_type OKL_K_HEADERS_V.DEAL_TYPE%TYPE := null;
3548 lv_scs_code OKC_K_HEADERS_V.SCS_CODE%TYPE := null;
3549 --Bug# 4419339
3550 l_orig_system_source_code okc_k_headers_b.orig_system_source_code%TYPE;
3551 CURSOR get_deal_type(p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE)
3552 IS
3553 SELECT khr.deal_type,
3554 chr.scs_code,
3555 --Bug# 4419339
3556 chr.orig_system_source_code
3557 FROM OKL_K_HEADERS_V khr,
3558 OKC_K_HEADERS_B chr
3559 WHERE khr.id = p_dnz_chr_id
3560 AND chr.id = khr.id;
3561 BEGIN
3562 IF (p_chr_id <> OKL_API.G_MISS_NUM OR
3563 p_chr_id IS NOT NULL) THEN
3564 OPEN get_deal_type(p_dnz_chr_id => p_chr_id);
3565 FETCH get_deal_type into lv_deal_type,
3566 lv_scs_code,
3567 --Bug# 4419339
3568 l_orig_system_source_code;
3569 CLOSE get_deal_type;
3570 END IF;
3571 -- data is required
3572 IF (p_item1 = OKL_API.G_MISS_CHAR OR
3573 p_item1 IS NULL) THEN
3574 -- store SQL error message on message stack
3575 OKL_API.set_message(p_app_name => G_APP_NAME,
3576 p_msg_name => G_REQUIRED_VALUE,
3577 p_token1 => G_COL_NAME_TOKEN,
3578 p_token1_value => 'Item');
3579 -- halt validation as it is a required field
3580 RAISE G_EXCEPTION_STOP_VALIDATION;
3581 END IF;
3582 IF (p_item2 = OKL_API.G_MISS_CHAR OR
3583 p_item2 IS NULL) THEN
3584 -- store SQL error message on message stack
3585 OKL_API.set_message(p_app_name => G_APP_NAME,
3586 p_msg_name => G_REQUIRED_VALUE,
3587 p_token1 => G_COL_NAME_TOKEN,
3588 p_token1_value => 'Item');
3589 -- halt validation as it is a required field
3590 RAISE G_EXCEPTION_STOP_VALIDATION;
3591 END IF;
3592 IF (p_ast_no = OKL_API.G_MISS_CHAR OR
3593 p_ast_no IS NULL) THEN
3594 -- store SQL error message on message stack
3595 OKL_API.set_message(p_app_name => G_APP_NAME,
3596 p_msg_name => G_REQUIRED_VALUE,
3597 p_token1 => G_COL_NAME_TOKEN,
3598 p_token1_value => 'Asset Number');
3599 -- halt validation as it is a required field
3600 RAISE G_EXCEPTION_STOP_VALIDATION;
3601 END IF;
3602 IF (p_ast_desc = OKL_API.G_MISS_CHAR OR
3603 p_ast_desc IS NULL) THEN
3604 -- store SQL error message on message stack
3605 OKL_API.set_message(p_app_name => G_APP_NAME,
3606 p_msg_name => G_REQUIRED_VALUE,
3607 p_token1 => G_COL_NAME_TOKEN,
3608 p_token1_value => 'Description');
3609 -- halt validation as it is a required field
3610 RAISE G_EXCEPTION_STOP_VALIDATION;
3611 END IF;
3612 IF (p_cost = OKL_API.G_MISS_NUM OR
3613 p_cost IS NULL) THEN
3614 -- store SQL error message on message stack
3615 OKL_API.set_message(p_app_name => G_APP_NAME,
3616 p_msg_name => G_REQUIRED_VALUE,
3617 p_token1 => G_COL_NAME_TOKEN,
3618 p_token1_value => 'Unit Cost');
3619 -- halt validation as it is a required field
3620 RAISE G_EXCEPTION_STOP_VALIDATION;
3621 ELSE
3622 ln_dummy := sign(p_cost);
3623 IF ln_dummy = -1 THEN
3624 OKL_API.set_message(p_app_name => G_APP_NAME,
3625 p_msg_name => G_INVALID_VALUE,
3626 p_token1 => G_COL_NAME_TOKEN,
3627 p_token1_value => 'Unit Cost');
3628 -- halt validation as it is a required field
3629 RAISE G_EXCEPTION_STOP_VALIDATION;
3630 END IF;
3631 END IF;
3632 IF (ln3_dummy = OKL_API.G_MISS_NUM OR
3633 ln3_dummy IS NULL) THEN
3634 -- store SQL error message on message stack
3635 OKL_API.set_message(p_app_name => G_APP_NAME,
3636 p_msg_name => G_REQUIRED_VALUE,
3637 p_token1 => G_COL_NAME_TOKEN,
3638 p_token1_value => 'Units');
3639 -- halt validation as it is a required field
3640 RAISE G_EXCEPTION_STOP_VALIDATION;
3641 ELSE
3642 ln1_dummy := sign(p_units);
3643 IF ln1_dummy = -1 THEN
3644 OKL_API.set_message(p_app_name => G_APP_NAME,
3645 p_msg_name => G_INVALID_VALUE,
3646 p_token1 => G_COL_NAME_TOKEN,
3647 p_token1_value => 'Units');
3648 -- halt validation as it is a required field
3649 RAISE G_EXCEPTION_STOP_VALIDATION;
3650 END IF;
3651 ln2_dummy := instr(to_char(p_units),'.');
3652 IF ln2_dummy <> 0 THEN
3653 OKL_API.set_message(p_app_name => G_APP_NAME,
3654 p_msg_name => G_DECIMAL_VALUE,
3655 p_token1 => G_COL_NAME_TOKEN,
3656 p_token1_value => 'Units');
3657 -- halt validation as it is a required field
3658 RAISE G_EXCEPTION_STOP_VALIDATION;
3659 END IF;
3660 END IF;
3661 IF (p_ib_loc1 = OKL_API.G_MISS_CHAR OR
3662 p_ib_loc1 IS NULL) THEN
3663 -- store SQL error message on message stack
3664 OKL_API.set_message(p_app_name => G_APP_NAME,
3665 p_msg_name => G_REQUIRED_VALUE,
3666 p_token1 => G_COL_NAME_TOKEN,
3667 p_token1_value => 'Installed Site');
3668 -- halt validation as it is a required field
3669 RAISE G_EXCEPTION_STOP_VALIDATION;
3670 END IF;
3671 IF (p_ib_loc2 = OKL_API.G_MISS_CHAR OR
3672 p_ib_loc2 IS NULL) THEN
3673 -- store SQL error message on message stack
3674 OKL_API.set_message(p_app_name => G_APP_NAME,
3675 p_msg_name => G_REQUIRED_VALUE,
3676 p_token1 => G_COL_NAME_TOKEN,
3677 p_token1_value => 'Installed Site');
3678 -- halt validation as it is a required field
3679 RAISE G_EXCEPTION_STOP_VALIDATION;
3680 END IF;
3681 IF (p_fa_loc = OKL_API.G_MISS_NUM OR
3682 p_fa_loc IS NULL) AND lv_scs_code <> 'QUOTE' AND
3683 --Bug# 4419339
3684 nvl(l_orig_system_source_code,okl_api.g_miss_char) <> 'OKL_LEASE_APP' AND
3685 --Bug# 5098124 : Added condition for 'OKL_QUOTE'
3686 nvl(l_orig_system_source_code,okl_api.g_miss_char) <> 'OKL_QUOTE' THEN
3687 IF (lv_deal_type <> 'LOAN' AND (p_refinance_amount IS NULL OR
3688 p_refinance_amount = OKL_API.G_MISS_NUM)) THEN
3689 -- store SQL error message on message stack
3690 OKL_API.set_message(p_app_name => G_APP_NAME,
3691 p_msg_name => G_REQUIRED_VALUE,
3692 p_token1 => G_COL_NAME_TOKEN,
3693 p_token1_value => 'Fixed Asset Location');
3694 -- halt validation as it is a required field
3695 RAISE G_EXCEPTION_STOP_VALIDATION;
3696 END IF;
3697 END IF;
3698 RETURN(x_return_status);
3699 EXCEPTION
3700 WHEN G_EXCEPTION_STOP_VALIDATION then
3701 -- We are here since the field is required
3702 -- Notify Error
3703 x_return_status := OKL_API.G_RET_STS_ERROR;
3704 RETURN(x_return_status);
3705 WHEN OTHERS THEN
3706 OKL_API.set_message(p_app_name => G_APP_NAME,
3707 p_msg_name => 'Error Message from Required values');
3708 -- store SQL error message on message stack
3709 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
3710 p_msg_name => G_UNEXPECTED_ERROR,
3711 p_token1 => G_SQLCODE_TOKEN,
3712 p_token1_value => SQLCODE,
3713 p_token2 => G_SQLERRM_TOKEN,
3714 p_token2_value => SQLERRM);
3715 -- notify caller of an error as UNEXPETED error
3716 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3717 RETURN(x_return_status);
3718 END check_required_values;
3719 --------------------------------------------------------------------------------------------
3720 -- Start of Commnets
3721 -- Badrinath Kuchibholta
3722 -- Procedure Name : validate_kle_id
3723 -- Description : validation with OKL_TXL_ASSETS_V
3724 -- Business Rules :
3725 -- Parameters :
3726 -- Version : 1.0
3727 -- End of Commnets
3728
3729 PROCEDURE validate_kle_id(p_klev_rec IN klev_rec_type,
3730 x_record_exists OUT NOCOPY VARCHAR2,
3731 x_return_status OUT NOCOPY VARCHAR2) IS
3732 ln_dummy NUMBER := 0;
3733 CURSOR c_kle_id_validate(p_kle_id OKL_TXL_ASSETS_V.KLE_ID%TYPE) IS
3734 SELECT 1
3735 --FROM dual
3736 --WHERE EXISTS (SELECT '1'
3737 FROM OKL_TXL_ASSETS_V
3738 WHERE kle_id = p_kle_id; --);
3739 BEGIN
3740 -- initialize return status
3741 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3742 -- data is required
3743 IF (p_klev_rec.id = OKL_API.G_MISS_NUM) OR
3744 (p_klev_rec.id IS NULL) THEN
3745 -- store SQL error message on message stack
3746 OKL_API.set_message(p_app_name => G_APP_NAME,
3747 p_msg_name => G_REQUIRED_VALUE,
3748 p_token1 => G_COL_NAME_TOKEN,
3749 p_token1_value => 'OKL_TXL_ASSETS_V.KLE_ID');
3750 -- halt validation as it is a required field
3751 RAISE G_EXCEPTION_STOP_VALIDATION;
3752 END IF;
3753 -- Enforce Foreign Key
3754 OPEN c_kle_id_validate(p_klev_rec.id);
3755 FETCH c_kle_id_validate into ln_dummy;
3756 IF c_kle_id_validate%NOTFOUND THEN
3757 x_record_exists := null;
3758 END IF;
3759 CLOSE c_kle_id_validate;
3760 -- If there are no records then
3761 IF ln_dummy = 0 THEN
3762 x_record_exists := null;
3763 ELSE
3764 x_record_exists := 'X';
3765 END IF;
3766 EXCEPTION
3767 WHEN G_EXCEPTION_STOP_VALIDATION then
3768 -- We are here since the field is required
3769 -- Notify Error
3770 x_return_status := OKL_API.G_RET_STS_ERROR;
3771 WHEN OTHERS THEN
3772 -- store SQL error message on message stack
3773 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
3774 p_msg_name => G_UNEXPECTED_ERROR,
3775 p_token1 => G_SQLCODE_TOKEN,
3776 p_token1_value => SQLCODE,
3777 p_token2 => G_SQLERRM_TOKEN,
3778 p_token2_value => SQLERRM);
3779 -- If the cursor is open then it has to be closed
3780 IF c_kle_id_validate%ISOPEN THEN
3781 CLOSE c_kle_id_validate;
3782 END IF;
3783 -- notify caller of an error as UNEXPETED error
3784 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3785 END validate_kle_id;
3786 --------------------------------------------------------------------------------------------------
3787 -- Start of Commnets
3788 -- Badrinath Kuchibholta
3789 -- Procedure Name : validate_iti_kle_id
3790 -- Description : validation with OKL_TXL_ITM_INSTS_V
3791 -- Business Rules :
3792 -- Parameters :
3793 -- Version : 1.0
3794 -- End of Commnets
3795
3796 PROCEDURE validate_iti_kle_id(p_klev_rec IN klev_rec_type,
3797 x_record_exists OUT NOCOPY VARCHAR2,
3798 x_return_status OUT NOCOPY VARCHAR2) IS
3799 ln_dummy NUMBER := 0;
3800 CURSOR c_iti_kle_id_validate(p_kle_id OKL_TXL_ITM_INSTS_V.KLE_ID%TYPE) IS
3801 SELECT 1
3802 --FROM dual
3803 --WHERE EXISTS (SELECT '1'
3804 FROM OKL_TXL_ITM_INSTS_V
3805 WHERE kle_id = p_kle_id; --);
3806 BEGIN
3807 -- initialize return status
3808 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3809 -- data is required
3810 IF (p_klev_rec.id = OKL_API.G_MISS_NUM) OR
3811 (p_klev_rec.id IS NULL) THEN
3812 -- store SQL error message on message stack
3813 OKL_API.set_message(p_app_name => G_APP_NAME,
3814 p_msg_name => G_REQUIRED_VALUE,
3815 p_token1 => G_COL_NAME_TOKEN,
3816 p_token1_value => 'OKL_TXL_ITM_INSTS_V.KLE_ID');
3817 -- halt validation as it is a required field
3818 RAISE G_EXCEPTION_STOP_VALIDATION;
3819 END IF;
3820 -- Enforce Foreign Key
3821 OPEN c_iti_kle_id_validate(p_klev_rec.id);
3822 FETCH c_iti_kle_id_validate into ln_dummy;
3823 IF c_iti_kle_id_validate%NOTFOUND THEN
3824 x_record_exists := null;
3825 END IF;
3826 CLOSE c_iti_kle_id_validate;
3827 -- If there are no records then
3828 IF ln_dummy = 0 THEN
3829 x_record_exists := null;
3830 ELSE
3831 x_record_exists := 'X';
3832 END IF;
3833 EXCEPTION
3834 WHEN G_EXCEPTION_STOP_VALIDATION then
3835 -- We are here since the field is required
3836 -- Notify Error
3837 x_return_status := OKL_API.G_RET_STS_ERROR;
3838 WHEN OTHERS THEN
3839 -- store SQL error message on message stack
3840 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
3841 p_msg_name => G_UNEXPECTED_ERROR,
3842 p_token1 => G_SQLCODE_TOKEN,
3843 p_token1_value => SQLCODE,
3844 p_token2 => G_SQLERRM_TOKEN,
3845 p_token2_value => SQLERRM);
3846 -- If the cursor is open then it has to be closed
3847 IF c_iti_kle_id_validate%ISOPEN THEN
3848 CLOSE c_iti_kle_id_validate;
3849 END IF;
3850 -- notify caller of an error as UNEXPETED error
3851 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3852 END validate_iti_kle_id;
3853 ----------------------------------------------------------------------------------------------------
3854 -- Start of Commnets
3855 -- Badrinath Kuchibholta
3856 -- Procedure Name : validate_sts_code
3857 -- Description : validation with OKC_K_LINES_V
3858 -- Business Rules :
3859 -- Parameters :
3860 -- Version : 1.0
3861 -- End of Commnets
3862
3863 PROCEDURE validate_sts_code(p_clev_rec IN clev_rec_type,
3864 x_return_status OUT NOCOPY VARCHAR2) IS
3865
3866 lv_sts_code OKC_K_LINES_V.STS_CODE%TYPE;
3867 lv_lty_code OKC_LINE_STYLES_V.lty_CODE%TYPE;
3868
3869 CURSOR c_lty_code_validate(p_lse_id OKC_LINE_STYLES_B.ID%TYPE) IS
3870 SELECT lse.lty_code
3871 FROM OKC_LINE_STYLES_V lse
3872 WHERE lse.id = p_lse_id;
3873
3874 CURSOR c_sub_sub_line_sts_code(p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
3875 p_cle_id OKC_K_LINES_V.ID%TYPE,
3876 p_lty_code OKC_LINE_STYLES_V.lty_CODE%TYPE) IS
3877 SELECT cle.sts_code
3878 FROM OKC_K_LINES_V cle
3879 WHERE cle.id in (SELECT cle.cle_id
3880 FROM OKC_K_LINES_V cle
3881 WHERE id in (SELECT cle.cle_id
3882 FROM OKC_LINE_STYLES_V lse,
3883 OKC_K_LINES_V cle
3884 WHERE dnz_chr_id = p_dnz_chr_id
3885 AND cle.lse_id = lse.id
3886 AND cle.id = p_cle_id
3887 AND lse.lty_code = p_lty_code));
3888
3889 CURSOR c_sub_line_sts_code(p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
3890 p_cle_id OKC_K_LINES_V.ID%TYPE,
3891 p_lty_code OKC_LINE_STYLES_V.lty_CODE%TYPE) IS
3892 SELECT cle.sts_code
3893 FROM OKC_K_LINES_V cle
3894 WHERE id in (SELECT cle.cle_id
3895 FROM OKC_LINE_STYLES_V lse,
3896 OKC_K_LINES_V cle
3897 WHERE dnz_chr_id = p_dnz_chr_id
3898 AND cle.lse_id = lse.id
3899 AND cle.id = p_cle_id
3900 AND lse.lty_code = p_lty_code);
3901
3902 CURSOR c_top_line_sts_code(p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
3903 p_cle_id OKC_K_LINES_V.ID%TYPE,
3904 p_chr_id OKC_K_LINES_V.CHR_ID%TYPE) IS
3905 SELECT cle.sts_code
3906 FROM OKC_K_LINES_V cle
3907 WHERE cle.dnz_chr_id = p_dnz_chr_id
3908 AND cle.cle_id is null
3909 AND cle.id = p_cle_id
3910 AND cle.chr_id = p_chr_id;
3911 BEGIN
3912 -- initialize return status
3913 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3914 IF (p_clev_rec.sts_code = OKL_API.G_MISS_CHAR OR
3915 p_clev_rec.sts_code IS NULL) THEN
3916 -- store SQL error message on message stack
3917 OKL_API.set_message(p_app_name => G_APP_NAME,
3918 p_msg_name => G_REQUIRED_VALUE,
3919 p_token1 => G_COL_NAME_TOKEN,
3920 p_token1_value => 'OKC_K_LINES_V.STS_CODE');
3921 -- halt validation as it is a required field
3922 RAISE G_EXCEPTION_STOP_VALIDATION;
3923 END IF;
3924 -- First Get the Lty _code we are going to validate
3925 OPEN c_lty_code_validate(p_clev_rec.lse_id);
3926 IF c_lty_code_validate%NOTFOUND THEN
3927 OKL_API.set_message(p_app_name => G_APP_NAME,
3928 p_msg_name => G_NO_MATCHING_RECORD,
3929 p_token1 => G_COL_NAME_TOKEN,
3930 p_token1_value => 'OKC_LINE_STYLE_V.LTY_CODE');
3931 -- halt validation as it is a required field
3932 RAISE G_EXCEPTION_HALT_VALIDATION;
3933 END IF;
3934 FETCH c_lty_code_validate INTO lv_lty_code;
3935 CLOSE c_lty_code_validate;
3936 -- Depending on the lty code query the appropriate query
3937 IF lv_lty_code = G_ADDON_LINE_LTY_CODE OR
3938 lv_lty_code = G_IB_LINE_LTY_CODE THEN
3939 OPEN c_sub_sub_line_sts_code(p_clev_rec.dnz_chr_id,
3940 p_clev_rec.id,
3941 lv_lty_code);
3942 IF c_sub_sub_line_sts_code%NOTFOUND THEN
3943 OKL_API.set_message(p_app_name => G_APP_NAME,
3944 p_msg_name => G_NO_MATCHING_RECORD,
3945 p_token1 => G_COL_NAME_TOKEN,
3946 p_token1_value => 'OKC_K_LINES_V.STS_CODE');
3947 -- halt validation as it is a required field
3948 RAISE G_EXCEPTION_HALT_VALIDATION;
3949 END IF;
3950 FETCH c_sub_sub_line_sts_code INTO lv_sts_code;
3951 CLOSE c_sub_sub_line_sts_code;
3952 ELSIF lv_lty_code = G_MODEL_LINE_LTY_CODE OR
3953 lv_lty_code = G_FA_LINE_LTY_CODE OR
3954 lv_lty_code = G_INST_LINE_LTY_CODE THEN
3955 OPEN c_sub_line_sts_code(p_clev_rec.dnz_chr_id,
3956 p_clev_rec.id,
3957 lv_lty_code);
3958 IF c_sub_line_sts_code%NOTFOUND THEN
3959 OKL_API.set_message(p_app_name => G_APP_NAME,
3960 p_msg_name => G_NO_MATCHING_RECORD,
3961 p_token1 => G_COL_NAME_TOKEN,
3962 p_token1_value => 'OKC_K_LINES_V.STS_CODE');
3963 -- halt validation as it is a required field
3964 RAISE G_EXCEPTION_HALT_VALIDATION;
3965 END IF;
3966 FETCH c_sub_line_sts_code INTO lv_sts_code;
3967 CLOSE c_sub_line_sts_code;
3968 ELSIF lv_lty_code = G_FIN_LINE_LTY_CODE THEN
3969 OPEN c_top_line_sts_code(p_clev_rec.dnz_chr_id,
3970 p_clev_rec.id,
3971 p_clev_rec.chr_id);
3972 IF c_top_line_sts_code%NOTFOUND THEN
3973 OKL_API.set_message(p_app_name => G_APP_NAME,
3974 p_msg_name => G_NO_MATCHING_RECORD,
3975 p_token1 => G_COL_NAME_TOKEN,
3976 p_token1_value => 'OKC_K_LINES_V.STS_CODE');
3977 -- halt validation as it is a required field
3978 RAISE G_EXCEPTION_HALT_VALIDATION;
3979 END IF;
3980 FETCH c_top_line_sts_code INTO lv_sts_code;
3981 CLOSE c_top_line_sts_code;
3982 END IF;
3983 -- Check the Sts code is entered only
3984 IF lv_sts_code NOT IN ('ENTERED',
3985 'SIGNED',
3986 'ACTIVE',
3987 'HOLD',
3988 'NEW',
3989 'PENDING_APPROVAL',
3990 'APPROVED',
3991 'COMPLETE',
3992 'INCOMPLETE',
3993 'PASSED') THEN
3994 OKL_API.set_message(p_app_name => G_APP_NAME,
3995 p_msg_name => G_STATUS,
3996 p_token1 => 'STATUS',
3997 p_token1_value => lv_sts_code);
3998 -- halt validation as it is a required field
3999 RAISE G_EXCEPTION_HALT_VALIDATION;
4000 END IF;
4001 EXCEPTION
4002 WHEN G_EXCEPTION_STOP_VALIDATION then
4003 -- We are here since the field is required
4004 -- Notify Error
4005 x_return_status := OKL_API.G_RET_STS_ERROR;
4006 WHEN G_EXCEPTION_HALT_VALIDATION then
4007 -- If the cursor is open then it has to be closed
4008 IF c_lty_code_validate%ISOPEN THEN
4009 CLOSE c_lty_code_validate;
4010 END IF;
4011 -- If the cursor is open then it has to be closed
4012 IF c_sub_sub_line_sts_code%ISOPEN THEN
4013 CLOSE c_sub_sub_line_sts_code;
4014 END IF;
4015 -- If the cursor is open then it has to be closed
4016 IF c_sub_line_sts_code%ISOPEN THEN
4017 CLOSE c_sub_line_sts_code;
4018 END IF;
4019 -- If the cursor is open then it has to be closed
4020 IF c_top_line_sts_code%ISOPEN THEN
4021 CLOSE c_top_line_sts_code;
4022 END IF;
4023 x_return_status := OKL_API.G_RET_STS_ERROR;
4024 WHEN OTHERS THEN
4025 -- store SQL error message on message stack
4026 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
4027 p_msg_name => G_UNEXPECTED_ERROR,
4028 p_token1 => G_SQLCODE_TOKEN,
4029 p_token1_value => SQLCODE,
4030 p_token2 => G_SQLERRM_TOKEN,
4031 p_token2_value => SQLERRM);
4032 -- If the cursor is open then it has to be closed
4033 IF c_lty_code_validate%ISOPEN THEN
4034 CLOSE c_lty_code_validate;
4035 END IF;
4036 -- If the cursor is open then it has to be closed
4037 IF c_sub_sub_line_sts_code%ISOPEN THEN
4038 CLOSE c_sub_sub_line_sts_code;
4039 END IF;
4040 -- If the cursor is open then it has to be closed
4041 IF c_sub_line_sts_code%ISOPEN THEN
4042 CLOSE c_sub_line_sts_code;
4043 END IF;
4044 -- If the cursor is open then it has to be closed
4045 IF c_top_line_sts_code%ISOPEN THEN
4046 CLOSE c_top_line_sts_code;
4047 END IF;
4048 -- notify caller of an error as UNEXPETED error
4049 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
4050 END validate_sts_code;
4051 ----------------------------------------------------------------------------------------------------------
4052 PROCEDURE Create_asset_header(
4053 p_api_version IN NUMBER,
4054 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4055 x_return_status OUT NOCOPY VARCHAR2,
4056 x_msg_count OUT NOCOPY NUMBER,
4057 x_msg_data OUT NOCOPY VARCHAR2,
4058 p_trxv_rec IN trxv_rec_type,
4059 x_trxv_rec OUT NOCOPY trxv_rec_type) IS
4060 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_TRX_ASSET_HEADER';
4061 BEGIN
4062 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4063 -- Call start_activity to create savepoint, check compatibility
4064 -- and initialize message list
4065 x_return_status := OKL_API.START_ACTIVITY (
4066 l_api_name
4067 ,p_init_msg_list
4068 ,'_PVT'
4069 ,x_return_status);
4070 -- Check if activity started successfully
4071 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4072 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4073 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4074 RAISE OKL_API.G_EXCEPTION_ERROR;
4075 END IF;
4076 -- evaluate conditions, build outcomes for true conditions and
4077 -- put them on outcome queue
4078 OKL_TRX_ASSETS_PUB.create_trx_ass_h_def(
4079 p_api_version => p_api_version,
4080 p_init_msg_list => p_init_msg_list,
4081 x_return_status => x_return_status,
4082 x_msg_count => x_msg_count,
4083 x_msg_data => x_msg_data,
4084 p_thpv_rec => p_trxv_rec,
4085 x_thpv_rec => x_trxv_rec);
4086 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4087 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4088 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4089 RAISE OKL_API.G_EXCEPTION_ERROR;
4090 END IF;
4091 OKL_API.END_ACTIVITY (x_msg_count,
4092 x_msg_data );
4093 EXCEPTION
4094 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4095 OKL_API.set_message(p_app_name => G_APP_NAME,
4096 p_msg_name => G_TRX_ID);
4097 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4098 l_api_name,
4099 G_PKG_NAME,
4100 'OKL_API.G_RET_STS_ERROR',
4101 x_msg_count,
4102 x_msg_data,
4103 '_PVT');
4104 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4105 OKL_API.set_message(p_app_name => G_APP_NAME,
4106 p_msg_name => G_TRX_ID);
4107 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4108 l_api_name,
4109 G_PKG_NAME,
4110 'OKL_API.G_RET_STS_UNEXP_ERROR',
4111 x_msg_count,
4112 x_msg_data,
4113 '_PVT');
4114 WHEN OTHERS THEN
4115 OKL_API.set_message(p_app_name => G_APP_NAME,
4116 p_msg_name => G_TRX_ID);
4117 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4118 l_api_name,
4119 G_PKG_NAME,
4120 'OTHERS',
4121 x_msg_count,
4122 x_msg_data,
4123 '_PVT');
4124 END Create_asset_header;
4125 --------------------------------------------------------------------------------------------------
4126 -- Local Procedures for Update of Header record
4127 -- Incase where the error condition should be updated
4128 PROCEDURE Update_asset_header(
4129 p_api_version IN NUMBER,
4130 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4131 x_return_status OUT NOCOPY VARCHAR2,
4132 x_msg_count OUT NOCOPY NUMBER,
4133 x_msg_data OUT NOCOPY VARCHAR2,
4134 p_trxv_rec IN trxv_rec_type,
4135 x_trxv_rec OUT NOCOPY trxv_rec_type) IS
4136 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_TRX_ASSET_HEADER';
4137 BEGIN
4138 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4139 -- Call start_activity to create savepoint, check compatibility
4140 -- and initialize message list
4141 x_return_status := OKL_API.START_ACTIVITY (
4142 l_api_name
4143 ,p_init_msg_list
4144 ,'_PVT'
4145 ,x_return_status);
4146 -- Check if activity started successfully
4147 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4148 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4149 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4150 RAISE OKL_API.G_EXCEPTION_ERROR;
4151 END IF;
4152 -- evaluate conditions, build outcomes for true conditions and
4153 -- put them on outcome queue
4154 OKL_TRX_ASSETS_PUB.update_trx_ass_h_def(
4155 p_api_version => p_api_version,
4156 p_init_msg_list => p_init_msg_list,
4157 x_return_status => x_return_status,
4158 x_msg_count => x_msg_count,
4159 x_msg_data => x_msg_data,
4160 p_thpv_rec => p_trxv_rec,
4161 x_thpv_rec => x_trxv_rec);
4162 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4163 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4164 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4165 RAISE OKL_API.G_EXCEPTION_ERROR;
4166 END IF;
4167 OKL_API.END_ACTIVITY (x_msg_count,
4168 x_msg_data );
4169 EXCEPTION
4170 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4171 OKL_API.set_message(p_app_name => G_APP_NAME,
4172 p_msg_name => G_TRX_ID);
4173 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4174 l_api_name,
4175 G_PKG_NAME,
4176 'OKL_API.G_RET_STS_ERROR',
4177 x_msg_count,
4178 x_msg_data,
4179 '_PVT');
4180 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4181 OKL_API.set_message(p_app_name => G_APP_NAME,
4182 p_msg_name => G_TRX_ID);
4183 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4184 l_api_name,
4185 G_PKG_NAME,
4186 'OKL_API.G_RET_STS_UNEXP_ERROR',
4187 x_msg_count,
4188 x_msg_data,
4189 '_PVT');
4190 WHEN OTHERS THEN
4191 OKL_API.set_message(p_app_name => G_APP_NAME,
4192 p_msg_name => G_TRX_ID);
4193 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4194 l_api_name,
4195 G_PKG_NAME,
4196 'OTHERS',
4197 x_msg_count,
4198 x_msg_data,
4199 '_PVT');
4200 END Update_asset_header;
4201 ------------------------------------------------------------------------------------------------------
4202 PROCEDURE Create_asset_lines(
4203 p_api_version IN NUMBER,
4204 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4205 x_return_status OUT NOCOPY VARCHAR2,
4206 x_msg_count OUT NOCOPY NUMBER,
4207 x_msg_data OUT NOCOPY VARCHAR2,
4208 p_talv_rec IN talv_rec_type,
4209 x_trxv_rec OUT NOCOPY trxv_rec_type,
4210 x_talv_rec OUT NOCOPY talv_rec_type) IS
4211 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_TXL_ASSET_LINE';
4212 l_trxv_rec trxv_rec_type;
4213 l_talv_rec talv_rec_type;
4214
4215 --Added by dpsingh for LE uptake
4216 l_cntrct_number OKC_K_HEADERS_B.CONTRACT_NUMBER%TYPE;
4217 l_legal_entity_id NUMBER;
4218
4219 BEGIN
4220 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4221 -- Call start_activity to create savepoint, check compatibility
4222 -- and initialize message list
4223 x_return_status := OKL_API.START_ACTIVITY (
4224 l_api_name
4225 ,p_init_msg_list
4226 ,'_PVT'
4227 ,x_return_status);
4228 -- Check if activity started successfully
4229 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4230 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4231 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4232 RAISE OKL_API.G_EXCEPTION_ERROR;
4233 END IF;
4234 -- Create New Header record and new Line record
4235 -- Before creating Header record
4236 -- we should make sure atleast the required record is given
4237 l_trxv_rec.tas_type := 'CFA';
4238 x_return_status := get_try_id(p_try_name => G_TRY_NAME,
4239 x_try_id => l_trxv_rec.try_id);
4240 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4241 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4242 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4243 RAISE OKL_API.G_EXCEPTION_ERROR;
4244 END IF;
4245 l_trxv_rec.tsu_code := 'ENTERED';
4246 l_trxv_rec.date_trans_occurred := sysdate;
4247
4248 --Added by dpsingh for LE Uptake
4249
4250 l_legal_entity_id := OKL_LEGAL_ENTITY_UTIL.get_khr_le_id(p_talv_rec.dnz_khr_id) ;
4251 IF l_legal_entity_id IS NOT NULL THEN
4252 l_trxv_rec.legal_entity_id := l_legal_entity_id;
4253 ELSE
4254 -- get the contract number
4255 OPEN contract_num_csr(p_talv_rec.dnz_khr_id);
4256 FETCH contract_num_csr INTO l_cntrct_number;
4257 CLOSE contract_num_csr;
4258 Okl_Api.set_message(p_app_name => g_app_name,
4259 p_msg_name => 'OKL_LE_NOT_EXIST_CNTRCT',
4260 p_token1 => 'CONTRACT_NUMBER',
4261 p_token1_value => l_cntrct_number);
4262 RAISE OKL_API.G_EXCEPTION_ERROR;
4263 END IF;
4264 -- Now creating the new header record
4265 Create_asset_header(p_api_version => p_api_version,
4266 p_init_msg_list => p_init_msg_list,
4267 x_return_status => x_return_status,
4268 x_msg_count => x_msg_count,
4269 x_msg_data => x_msg_data,
4270 p_trxv_rec => l_trxv_rec,
4271 x_trxv_rec => x_trxv_rec);
4272 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4273 l_trxv_rec := x_trxv_rec;
4274 l_trxv_rec.tsu_code := 'ERROR';
4275 Update_asset_header(p_api_version => p_api_version,
4276 p_init_msg_list => p_init_msg_list,
4277 x_return_status => x_return_status,
4278 x_msg_count => x_msg_count,
4279 x_msg_data => x_msg_data,
4280 p_trxv_rec => l_trxv_rec,
4281 x_trxv_rec => x_trxv_rec);
4282 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4283 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4284 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4285 RAISE OKL_API.G_EXCEPTION_ERROR;
4286 END IF;
4287 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4288 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4289 l_trxv_rec := x_trxv_rec;
4290 l_trxv_rec.tsu_code := 'ERROR';
4291 Update_asset_header(p_api_version => p_api_version,
4292 p_init_msg_list => p_init_msg_list,
4293 x_return_status => x_return_status,
4294 x_msg_count => x_msg_count,
4295 x_msg_data => x_msg_data,
4296 p_trxv_rec => l_trxv_rec,
4297 x_trxv_rec => x_trxv_rec);
4298 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4299 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4300 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4301 RAISE OKL_API.G_EXCEPTION_ERROR;
4302 END IF;
4303 RAISE OKL_API.G_EXCEPTION_ERROR;
4304 END IF;
4305 -- Now we are creating the new line record
4306 l_talv_rec := p_talv_rec;
4307 l_talv_rec.tas_id := x_trxv_rec.id;
4308 IF (l_talv_rec.tal_type = OKL_API.G_MISS_CHAR OR
4309 l_talv_rec.tal_type IS NUll) THEN
4310 l_talv_rec.tal_type := 'CFA';
4311 END IF;
4312 IF (l_talv_rec.line_number = OKL_API.G_MISS_NUM OR
4313 l_talv_rec.line_number IS NUll) THEN
4314 l_talv_rec.line_number := 1;
4315 ELSE
4316 l_talv_rec.line_number := l_talv_rec.line_number + 1;
4317 END IF;
4318 IF (l_talv_rec.description = OKL_API.G_MISS_CHAR OR
4319 l_talv_rec.description IS NUll) THEN
4320 l_talv_rec.description := 'CREATION OF FIXED ASSETS' ;
4321 END IF;
4322 -- evaluate conditions, build outcomes for true conditions and
4323 -- put them on outcome queue
4324 OKL_TXL_ASSETS_PUB.create_txl_asset_def(
4325 p_api_version => p_api_version,
4326 p_init_msg_list => p_init_msg_list,
4327 x_return_status => x_return_status,
4328 x_msg_count => x_msg_count,
4329 x_msg_data => x_msg_data,
4330 p_tlpv_rec => l_talv_rec,
4331 x_tlpv_rec => x_talv_rec);
4332 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4333 OKL_API.set_message(p_app_name => G_APP_NAME,
4334 p_msg_name => G_KLE_ID);
4335 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4336 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4337 OKL_API.set_message(p_app_name => G_APP_NAME,
4338 p_msg_name => G_KLE_ID);
4339 RAISE OKL_API.G_EXCEPTION_ERROR;
4340 END IF;
4341 OKL_API.END_ACTIVITY (x_msg_count,
4342 x_msg_data );
4343 EXCEPTION
4344 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4345 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4346 l_api_name,
4347 G_PKG_NAME,
4348 'OKL_API.G_RET_STS_ERROR',
4349 x_msg_count,
4350 x_msg_data,
4351 '_PVT');
4352 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4353 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4354 l_api_name,
4355 G_PKG_NAME,
4356 'OKL_API.G_RET_STS_UNEXP_ERROR',
4357 x_msg_count,
4358 x_msg_data,
4359 '_PVT');
4360 WHEN OTHERS THEN
4361 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4362 l_api_name,
4363 G_PKG_NAME,
4364 'OTHERS',
4365 x_msg_count,
4366 x_msg_data,
4367 '_PVT');
4368 END Create_asset_lines;
4369 -------------------------------------------------------------------------------------------------------------------
4370 -- Local Procedures for update of line record
4371 PROCEDURE Update_asset_lines(
4372 p_api_version IN NUMBER,
4373 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4374 x_return_status OUT NOCOPY VARCHAR2,
4375 x_msg_count OUT NOCOPY NUMBER,
4376 x_msg_data OUT NOCOPY VARCHAR2,
4377 p_talv_rec IN talv_rec_type,
4378 x_talv_rec OUT NOCOPY talv_rec_type) IS
4379 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_TXL_ASSET_LINE';
4380 BEGIN
4381 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4382 -- Call start_activity to create savepoint, check compatibility
4383 -- and initialize message list
4384 x_return_status := OKL_API.START_ACTIVITY (
4385 l_api_name
4386 ,p_init_msg_list
4387 ,'_PVT'
4388 ,x_return_status);
4389 -- Check if activity started successfully
4390 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4391 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4392 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4393 RAISE OKL_API.G_EXCEPTION_ERROR;
4394 END IF;
4395 -- evaluate conditions, build outcomes for true conditions and
4396 -- put them on outcome queue
4397 OKL_TXL_ASSETS_PUB.update_txl_asset_def(
4398 p_api_version => p_api_version,
4399 p_init_msg_list => p_init_msg_list,
4400 x_return_status => x_return_status,
4401 x_msg_count => x_msg_count,
4402 x_msg_data => x_msg_data,
4403 p_tlpv_rec => p_talv_rec,
4404 x_tlpv_rec => x_talv_rec);
4405 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4406 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4407 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4408 RAISE OKL_API.G_EXCEPTION_ERROR;
4409 END IF;
4410 OKL_API.END_ACTIVITY (x_msg_count,
4411 x_msg_data );
4412 EXCEPTION
4413 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4414 OKL_API.set_message(p_app_name => G_APP_NAME,
4415 p_msg_name => G_KLE_ID);
4416 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4417 l_api_name,
4418 G_PKG_NAME,
4419 'OKL_API.G_RET_STS_ERROR',
4420 x_msg_count,
4421 x_msg_data,
4422 '_PVT');
4423 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4424 OKL_API.set_message(p_app_name => G_APP_NAME,
4425 p_msg_name => G_KLE_ID);
4426 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4427 l_api_name,
4428 G_PKG_NAME,
4429 'OKL_API.G_RET_STS_UNEXP_ERROR',
4430 x_msg_count,
4431 x_msg_data,
4432 '_PVT');
4433 WHEN OTHERS THEN
4434 OKL_API.set_message(p_app_name => G_APP_NAME,
4435 p_msg_name => G_KLE_ID);
4436 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4437 l_api_name,
4438 G_PKG_NAME,
4439 'OTHERS',
4440 x_msg_count,
4441 x_msg_data,
4442 '_PVT');
4443 END Update_asset_lines;
4444
4445 -------------------------------------------------------------------------------------------------
4446 -- Start of Commnets
4447 -- Badrinath Kuchibholta
4448 -- Procedure Name : Create_asset_line_details
4449 -- Description : Creation of asset_line_details
4450 -- Business Rules :
4451 -- Parameters :
4452 -- Version :
4453 -- End of Commnets
4454 PROCEDURE Create_asset_line_details(
4455 p_api_version IN NUMBER,
4456 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4457 x_return_status OUT NOCOPY VARCHAR2,
4458 x_msg_count OUT NOCOPY NUMBER,
4459 x_msg_data OUT NOCOPY VARCHAR2,
4460 p_txdv_tbl IN txdv_tbl_type,
4461 x_txdv_tbl OUT NOCOPY txdv_tbl_type)
4462 IS
4463 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_TXD_ASSET_DTL';
4464 i NUMBER := 0;
4465 l_txdv_tbl txdv_tbl_type := p_txdv_tbl;
4466 BEGIN
4467 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4468 -- Call start_activity to create savepoint, check compatibility
4469 -- and initialize message list
4470 x_return_status := OKL_API.START_ACTIVITY (
4471 l_api_name
4472 ,p_init_msg_list
4473 ,'_PVT'
4474 ,x_return_status);
4475 -- Check if activity started successfully
4476 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4477 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4478 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4479 RAISE OKL_API.G_EXCEPTION_ERROR;
4480 END IF;
4481 IF (p_txdv_tbl.COUNT > 0) THEN
4482 i := p_txdv_tbl.FIRST;
4483 LOOP
4484 Validate_asset_tax_book(x_return_status => x_return_status,
4485 p_asset_number => l_txdv_tbl(i).asset_number,
4486 p_tax_book => l_txdv_tbl(i).tax_book,
4487 p_tal_id => l_txdv_tbl(i).tal_id);
4488 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4489 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
4490 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4491 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
4492 END IF;
4493 OKL_TXD_ASSETS_PUB.create_txd_asset_def(
4494 p_api_version => p_api_version,
4495 p_init_msg_list => p_init_msg_list,
4496 x_return_status => x_return_status,
4497 x_msg_count => x_msg_count,
4498 x_msg_data => x_msg_data,
4499 p_adpv_rec => p_txdv_tbl(i),
4500 x_adpv_rec => x_txdv_tbl(i));
4501 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4502 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
4503 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4504 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
4505 END IF;
4506 EXIT WHEN (i = p_txdv_tbl.LAST);
4507 i := p_txdv_tbl.NEXT(i);
4508 END LOOP;
4509 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4510 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4511 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4512 RAISE OKL_API.G_EXCEPTION_ERROR;
4513 END IF;
4514 END IF;
4515 OKL_API.END_ACTIVITY (x_msg_count,
4516 x_msg_data );
4517 EXCEPTION
4518 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4519 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4520 l_api_name,
4521 G_PKG_NAME,
4522 'OKL_API.G_RET_STS_ERROR',
4523 x_msg_count,
4524 x_msg_data,
4525 '_PVT');
4526 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4527 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4528 l_api_name,
4529 G_PKG_NAME,
4530 'OKL_API.G_RET_STS_UNEXP_ERROR',
4531 x_msg_count,
4532 x_msg_data,
4533 '_PVT');
4534 WHEN OTHERS THEN
4535 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4536 l_api_name,
4537 G_PKG_NAME,
4538 'OTHERS',
4539 x_msg_count,
4540 x_msg_data,
4541 '_PVT');
4542 END Create_asset_line_details;
4543
4544 -------------------------------------------------------------------------------------------------
4545 -- Start of Commnets
4546 -- Badrinath Kuchibholta
4547 -- Procedure Name : update_asset_line_details
4548 -- Description : Updating of asset_line_details
4549 -- Business Rules :
4550 -- Parameters :
4551 -- Version :
4552 -- End of Commnets
4553 PROCEDURE update_asset_line_details(
4554 p_api_version IN NUMBER,
4555 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4556 x_return_status OUT NOCOPY VARCHAR2,
4557 x_msg_count OUT NOCOPY NUMBER,
4558 x_msg_data OUT NOCOPY VARCHAR2,
4559 p_txdv_tbl IN txdv_tbl_type,
4560 x_txdv_tbl OUT NOCOPY txdv_tbl_type)
4561 IS
4562 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_TXD_ASSET_DTL';
4563 i NUMBER := 0;
4564 l_txdv_tbl txdv_tbl_type := p_txdv_tbl;
4565 BEGIN
4566 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4567 -- Call start_activity to create savepoint, check compatibility
4568 -- and initialize message list
4569 x_return_status := OKL_API.START_ACTIVITY (
4570 l_api_name
4571 ,p_init_msg_list
4572 ,'_PVT'
4573 ,x_return_status);
4574 -- Check if activity started successfully
4575 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4576 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4577 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4578 RAISE OKL_API.G_EXCEPTION_ERROR;
4579 END IF;
4580 IF (p_txdv_tbl.COUNT > 0) THEN
4581 i := p_txdv_tbl.FIRST;
4582 LOOP
4583 Validate_asset_tax_book(x_return_status => x_return_status,
4584 p_asset_number => l_txdv_tbl(i).asset_number,
4585 p_tax_book => l_txdv_tbl(i).tax_book,
4586 p_tal_id => l_txdv_tbl(i).tal_id);
4587 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4588 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
4589 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4590 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
4591 END IF;
4592 OKL_TXD_ASSETS_PUB.update_txd_asset_def(
4593 p_api_version => p_api_version,
4594 p_init_msg_list => p_init_msg_list,
4595 x_return_status => x_return_status,
4596 x_msg_count => x_msg_count,
4597 x_msg_data => x_msg_data,
4598 p_adpv_rec => p_txdv_tbl(i),
4599 x_adpv_rec => x_txdv_tbl(i));
4600 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4601 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
4602 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4603 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
4604 END IF;
4605 EXIT WHEN (i = p_txdv_tbl.LAST);
4606 i := p_txdv_tbl.NEXT(i);
4607 END LOOP;
4608 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4609 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4610 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4611 RAISE OKL_API.G_EXCEPTION_ERROR;
4612 END IF;
4613 END IF;
4614 OKL_API.END_ACTIVITY (x_msg_count,
4615 x_msg_data );
4616 EXCEPTION
4617 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4618 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4619 l_api_name,
4620 G_PKG_NAME,
4621 'OKL_API.G_RET_STS_ERROR',
4622 x_msg_count,
4623 x_msg_data,
4624 '_PVT');
4625 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4626 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4627 l_api_name,
4628 G_PKG_NAME,
4629 'OKL_API.G_RET_STS_UNEXP_ERROR',
4630 x_msg_count,
4631 x_msg_data,
4632 '_PVT');
4633 WHEN OTHERS THEN
4634 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4635 l_api_name,
4636 G_PKG_NAME,
4637 'OTHERS',
4638 x_msg_count,
4639 x_msg_data,
4640 '_PVT');
4641 END update_asset_line_details;
4642
4643 -------------------------------------------------------------------------------------------------
4644 -- Start of Commnets
4645 -- Badrinath Kuchibholta
4646 -- Procedure Name : update_asset_line_details
4647 -- Description : Updating of asset_line_details
4648 -- Business Rules : To keep the Asset Number unique all through
4649 -- Parameters :
4650 -- Version :
4651 -- End of Commnets
4652 PROCEDURE update_asset_line_details(
4653 p_api_version IN NUMBER,
4654 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4655 x_return_status OUT NOCOPY VARCHAR2,
4656 x_msg_count OUT NOCOPY NUMBER,
4657 x_msg_data OUT NOCOPY VARCHAR2,
4658 p_asset_number IN OKL_TXL_ASSETS_B.ASSET_NUMBER%TYPE,
4659 p_original_cost IN OKL_TXL_ASSETS_B.ORIGINAL_COST%TYPE,
4660 p_tal_id IN OKL_TXL_ASSETS_B.ID%TYPE)
4661 IS
4662 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_TXD_ASSET_DTL';
4663 i NUMBER := 0;
4664 l_txdv_tbl txdv_tbl_type;
4665 lx_txdv_tbl txdv_tbl_type;
4666 lv_to_update VARCHAR2(3);
4667 BEGIN
4668 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4669 -- Call start_activity to create savepoint, check compatibility
4670 -- and initialize message list
4671 x_return_status := OKL_API.START_ACTIVITY (
4672 l_api_name
4673 ,p_init_msg_list
4674 ,'_PVT'
4675 ,x_return_status);
4676 -- Check if activity started successfully
4677 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4678 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4679 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4680 RAISE OKL_API.G_EXCEPTION_ERROR;
4681 END IF;
4682 x_return_status := get_txdv_tbl(p_tal_id => p_tal_id,
4683 p_asset_number => p_asset_number,
4684 p_original_cost => p_original_cost,
4685 x_to_update => lv_to_update,
4686 x_txdv_tbl => l_txdv_tbl);
4687 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4688 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4689 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4690 RAISE OKL_API.G_EXCEPTION_ERROR;
4691 END IF;
4692 IF lv_to_update = 'Y' THEN
4693 OKL_TXD_ASSETS_PUB.update_txd_asset_def(
4694 p_api_version => p_api_version,
4695 p_init_msg_list => p_init_msg_list,
4696 x_return_status => x_return_status,
4697 x_msg_count => x_msg_count,
4698 x_msg_data => x_msg_data,
4699 p_adpv_tbl => l_txdv_tbl,
4700 x_adpv_tbl => lx_txdv_tbl);
4701 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4702 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4703 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4704 RAISE OKL_API.G_EXCEPTION_ERROR;
4705 END IF;
4706 END IF;
4707 OKL_API.END_ACTIVITY (x_msg_count,
4708 x_msg_data );
4709 EXCEPTION
4710 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4711 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4712 l_api_name,
4713 G_PKG_NAME,
4714 'OKL_API.G_RET_STS_ERROR',
4715 x_msg_count,
4716 x_msg_data,
4717 '_PVT');
4718 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4719 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4720 l_api_name,
4721 G_PKG_NAME,
4722 'OKL_API.G_RET_STS_UNEXP_ERROR',
4723 x_msg_count,
4724 x_msg_data,
4725 '_PVT');
4726 WHEN OTHERS THEN
4727 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4728 l_api_name,
4729 G_PKG_NAME,
4730 'OTHERS',
4731 x_msg_count,
4732 x_msg_data,
4733 '_PVT');
4734 END update_asset_line_details;
4735
4736 -- 5530990
4737 PROCEDURE Update_Asset_Cost(
4738 p_api_version IN NUMBER,
4739 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4740 x_return_status OUT NOCOPY VARCHAR2,
4741 x_msg_count OUT NOCOPY NUMBER,
4742 x_msg_data OUT NOCOPY VARCHAR2,
4743 p_cleb_fin_id IN NUMBER,
4744 p_chr_id IN NUMBER,
4745 p_oec IN NUMBER) IS
4746
4747 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_ASSET_COST';
4748
4749 CURSOR l_chk_rbk_csr(p_chr_id IN NUMBER) is
4750 SELECT '!'
4751 FROM okc_k_headers_b CHR,
4752 okl_trx_contracts ktrx
4753 WHERE ktrx.khr_id_new = chr.id
4754 AND ktrx.tsu_code = 'ENTERED'
4755 AND ktrx.rbr_code is NOT NULL
4756 AND ktrx.tcn_type = 'TRBK'
4757 --rkuttiya added for 12.1.1 Multi GAAP
4758 AND ktrx.representation_type = 'PRIMARY'
4759 --
4760 AND chr.id = p_chr_id
4761 AND chr.orig_system_source_code = 'OKL_REBOOK';
4762
4763 l_rbk_khr VARCHAR2(1) DEFAULT '?';
4764
4765 CURSOR l_talv_csr(p_cleb_fin_id IN NUMBER,
4766 p_chr_id IN NUMBER) IS
4767 SELECT tal.id,
4768 tal.asset_number
4769 FROM okl_txl_assets_b tal,
4770 okc_k_lines_b cleb_fa
4771 WHERE cleb_fa.cle_id = p_cleb_fin_id
4772 AND cleb_fa.dnz_chr_id = p_chr_id
4773 AND cleb_fa.lse_id = 42
4774 AND tal.kle_id = cleb_fa.id;
4775
4776 l_tal_id OKL_TXL_ASSETS_B.id%TYPE;
4777 l_asset_number OKL_TXL_ASSETS_B.asset_number%TYPE;
4778
4779 l_talv_rec talv_rec_type;
4780 x_talv_rec talv_rec_type;
4781
4782 BEGIN
4783 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4784 -- Call start_activity to create savepoint, check compatibility
4785 -- and initialize message list
4786 x_return_status := OKL_API.START_ACTIVITY (
4787 l_api_name
4788 ,p_init_msg_list
4789 ,'_PVT'
4790 ,x_return_status);
4791 -- Check if activity started successfully
4792 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4793 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4794 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4795 RAISE OKL_API.G_EXCEPTION_ERROR;
4796 END IF;
4797
4798 l_rbk_khr := '?';
4799 OPEN l_chk_rbk_csr (p_chr_id => p_chr_id);
4800 FETCH l_chk_rbk_csr INTO l_rbk_khr;
4801 CLOSE l_chk_rbk_csr;
4802
4803 IF l_rbk_khr = '!' Then
4804
4805 OKL_ACTIVATE_ASSET_PVT.recalculate_asset_cost
4806 (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_chr_id => p_chr_id,
4812 p_cle_id => p_cleb_fin_id
4813 );
4814
4815 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4816 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4817 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4818 RAISE OKL_API.G_EXCEPTION_ERROR;
4819 END IF;
4820
4821 ELSE
4822
4823 OPEN l_talv_csr(p_cleb_fin_id => p_cleb_fin_id,
4824 p_chr_id => p_chr_id);
4825 FETCH l_talv_csr INTO l_tal_id, l_asset_number;
4826 CLOSE l_talv_csr;
4827
4828 IF l_tal_id IS NOT NULL THEN
4829
4830 l_talv_rec.id := l_tal_id;
4831 l_talv_rec.original_cost := p_oec;
4832 l_talv_rec.depreciation_cost := p_oec;
4833
4834 update_asset_lines(p_api_version => p_api_version,
4835 p_init_msg_list => p_init_msg_list,
4836 x_return_status => x_return_status,
4837 x_msg_count => x_msg_count,
4838 x_msg_data => x_msg_data,
4839 p_talv_rec => l_talv_rec,
4840 x_talv_rec => x_talv_rec);
4841 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4842 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4843 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4844 RAISE OKL_API.G_EXCEPTION_ERROR;
4845 END IF;
4846
4847 update_asset_line_details(p_api_version => p_api_version,
4848 p_init_msg_list => p_init_msg_list,
4849 x_return_status => x_return_status,
4850 x_msg_count => x_msg_count,
4851 x_msg_data => x_msg_data,
4852 p_asset_number => l_asset_number,
4853 p_original_cost => l_talv_rec.original_cost,
4854 p_tal_id => l_talv_rec.id);
4855 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4856 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4857 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4858 RAISE OKL_API.G_EXCEPTION_ERROR;
4859 END IF;
4860
4861 END IF;
4862
4863 END IF;
4864
4865 OKL_API.END_ACTIVITY (x_msg_count,
4866 x_msg_data);
4867 EXCEPTION
4868 WHEN OKL_API.G_EXCEPTION_ERROR THEN
4869 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4870 l_api_name,
4871 G_PKG_NAME,
4872 'OKL_API.G_RET_STS_ERROR',
4873 x_msg_count,
4874 x_msg_data,
4875 '_PVT');
4876 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4877 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4878 l_api_name,
4879 G_PKG_NAME,
4880 'OKL_API.G_RET_STS_UNEXP_ERROR',
4881 x_msg_count,
4882 x_msg_data,
4883 '_PVT');
4884 WHEN OTHERS THEN
4885 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4886 l_api_name,
4887 G_PKG_NAME,
4888 'OTHERS',
4889 x_msg_count,
4890 x_msg_data,
4891 '_PVT');
4892 END Update_Asset_Cost;
4893 --Bug# 5530990
4894
4895 --------------------------------------------------------------------------------------------------------------
4896 -- Local Procedures for creation of Txl Item Instance record
4897 PROCEDURE create_txl_itm_insts(
4898 p_api_version IN NUMBER,
4899 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4900 x_return_status OUT NOCOPY VARCHAR2,
4901 x_msg_count OUT NOCOPY NUMBER,
4902 x_msg_data OUT NOCOPY VARCHAR2,
4903 p_itiv_rec IN itiv_rec_type,
4904 x_trxv_rec OUT NOCOPY trxv_rec_type,
4905 x_itiv_rec OUT NOCOPY itiv_rec_type) IS
4906
4907 l_trxv_rec trxv_rec_type;
4908 l_itiv_rec itiv_rec_type;
4909 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_TXL_ITM_INSTS';
4910
4911 --Added by dpsingh for LE uptake
4912 CURSOR get_chr_id_csr(p_kle_id1 NUMBER) IS
4913 SELECT DNZ_CHR_ID
4914 FROM OKC_K_LINES_B
4915 WHERE ID = p_kle_id1;
4916
4917 l_chr_id NUMBER;
4918 l_cntrct_number OKC_K_HEADERS_B.CONTRACT_NUMBER%TYPE;
4919 l_legal_entity_id NUMBER;
4920
4921 BEGIN
4922 x_return_status := OKL_API.G_RET_STS_SUCCESS;
4923 -- Call start_activity to create savepoint, check compatibility
4924 -- and initialize message list
4925 x_return_status := OKL_API.START_ACTIVITY (
4926 l_api_name
4927 ,p_init_msg_list
4928 ,'_PVT'
4929 ,x_return_status);
4930 -- Check if activity started successfully
4931 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4932 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4933 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4934 RAISE OKL_API.G_EXCEPTION_ERROR;
4935 END IF;
4936 -- Create New Header record and new Line record
4937 -- Before creating Header record
4938 -- we should make sure atleast the required record is given
4939 l_trxv_rec.tas_type := 'CFA';
4940 x_return_status := get_try_id(p_try_name => G_TRY_NAME,
4941 x_try_id => l_trxv_rec.try_id);
4942 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4943 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4944 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4945 RAISE OKL_API.G_EXCEPTION_ERROR;
4946 END IF;
4947 l_trxv_rec.tsu_code := 'ENTERED';
4948 l_trxv_rec.date_trans_occurred := sysdate;
4949
4950 --Added by dpsingh for LE Uptake
4951 OPEN get_chr_id_csr(p_itiv_rec.kle_id);
4952 FETCH get_chr_id_csr INTO l_chr_id;
4953 CLOSE get_chr_id_csr;
4954
4955 l_legal_entity_id := OKL_LEGAL_ENTITY_UTIL.get_khr_le_id( l_chr_id) ;
4956 IF l_legal_entity_id IS NOT NULL THEN
4957 l_trxv_rec.legal_entity_id := l_legal_entity_id;
4958 ELSE
4959 -- get the contract number
4960 OPEN contract_num_csr(l_chr_id);
4961 FETCH contract_num_csr INTO l_cntrct_number;
4962 CLOSE contract_num_csr;
4963 Okl_Api.set_message(p_app_name => g_app_name,
4964 p_msg_name => 'OKL_LE_NOT_EXIST_CNTRCT',
4965 p_token1 => 'CONTRACT_NUMBER',
4966 p_token1_value => l_cntrct_number);
4967 RAISE OKL_API.G_EXCEPTION_ERROR;
4968 END IF;
4969 -- Now creating the new header record
4970 Create_asset_header(p_api_version => p_api_version,
4971 p_init_msg_list => p_init_msg_list,
4972 x_return_status => x_return_status,
4973 x_msg_count => x_msg_count,
4974 x_msg_data => x_msg_data,
4975 p_trxv_rec => l_trxv_rec,
4976 x_trxv_rec => x_trxv_rec);
4977 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4978 l_trxv_rec := x_trxv_rec;
4979 l_trxv_rec.tsu_code := 'ERROR';
4980 Update_asset_header(p_api_version => p_api_version,
4981 p_init_msg_list => p_init_msg_list,
4982 x_return_status => x_return_status,
4983 x_msg_count => x_msg_count,
4984 x_msg_data => x_msg_data,
4985 p_trxv_rec => l_trxv_rec,
4986 x_trxv_rec => x_trxv_rec);
4987 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4988 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4989 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4990 RAISE OKL_API.G_EXCEPTION_ERROR;
4991 END IF;
4992 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4993 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4994 l_trxv_rec := x_trxv_rec;
4995 l_trxv_rec.tsu_code := 'ERROR';
4996 Update_asset_header(p_api_version => p_api_version,
4997 p_init_msg_list => p_init_msg_list,
4998 x_return_status => x_return_status,
4999 x_msg_count => x_msg_count,
5000 x_msg_data => x_msg_data,
5001 p_trxv_rec => l_trxv_rec,
5002 x_trxv_rec => x_trxv_rec);
5003 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5004 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5005 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5006 RAISE OKL_API.G_EXCEPTION_ERROR;
5007 END IF;
5008 RAISE OKL_API.G_EXCEPTION_ERROR;
5009 END IF;
5010 -- Now we are creating the new line record
5011 l_itiv_rec := p_itiv_rec;
5012 l_itiv_rec.tas_id := x_trxv_rec.id;
5013 IF (l_itiv_rec.tal_type = OKL_API.G_MISS_CHAR OR
5014 l_itiv_rec.tal_type IS NUll) THEN
5015 l_itiv_rec.tal_type := 'CFA';
5016 END IF;
5017 -- evaluate conditions, build outcomes for true conditions and
5018 -- put them on outcome queue
5019 OKL_TXL_ITM_INSTS_PUB.create_txl_itm_insts(
5020 p_api_version => p_api_version,
5021 p_init_msg_list => p_init_msg_list,
5022 x_return_status => x_return_status,
5023 x_msg_count => x_msg_count,
5024 x_msg_data => x_msg_data,
5025 p_iipv_rec => l_itiv_rec,
5026 x_iipv_rec => x_itiv_rec);
5027 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5028 OKL_API.set_message(p_app_name => G_APP_NAME,
5029 p_msg_name => G_ITI_ID);
5030 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5031 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5032 OKL_API.set_message(p_app_name => G_APP_NAME,
5033 p_msg_name => G_ITI_ID);
5034 RAISE OKL_API.G_EXCEPTION_ERROR;
5035 END IF;
5036 OKL_API.END_ACTIVITY (x_msg_count,
5037 x_msg_data );
5038 EXCEPTION
5039 WHEN OKL_API.G_EXCEPTION_ERROR THEN
5040 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5041 l_api_name,
5042 G_PKG_NAME,
5043 'OKL_API.G_RET_STS_ERROR',
5044 x_msg_count,
5045 x_msg_data,
5046 '_PVT');
5047 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5048 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5049 l_api_name,
5050 G_PKG_NAME,
5051 'OKL_API.G_RET_STS_UNEXP_ERROR',
5052 x_msg_count,
5053 x_msg_data,
5054 '_PVT');
5055 WHEN OTHERS THEN
5056 OKL_API.set_message(p_app_name => G_APP_NAME,
5057 p_msg_name => G_ITI_ID);
5058 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5059 l_api_name,
5060 G_PKG_NAME,
5061 'OTHERS',
5062 x_msg_count,
5063 x_msg_data,
5064 '_PVT');
5065 END create_txl_itm_insts;
5066 --------------------------------------------------------------------------------------------------------------
5067 -- Local Procedures for update of Txl Item Instance record
5068 PROCEDURE update_txl_itm_insts(
5069 p_api_version IN NUMBER,
5070 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
5071 x_return_status OUT NOCOPY VARCHAR2,
5072 x_msg_count OUT NOCOPY NUMBER,
5073 x_msg_data OUT NOCOPY VARCHAR2,
5074 p_itiv_rec IN itiv_rec_type,
5075 x_itiv_rec OUT NOCOPY itiv_rec_type) IS
5076
5077 l_api_name CONSTANT VARCHAR2(30) := 'UPD_TXL_ITM_INSTS';
5078 BEGIN
5079 x_return_status := OKL_API.G_RET_STS_SUCCESS;
5080 -- Call start_activity to create savepoint, check compatibility
5081 -- and initialize message list
5082 x_return_status := OKL_API.START_ACTIVITY (
5083 l_api_name
5084 ,p_init_msg_list
5085 ,'_PVT'
5086 ,x_return_status);
5087 -- Check if activity started successfully
5088 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5089 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5090 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5091 RAISE OKL_API.G_EXCEPTION_ERROR;
5092 END IF;
5093 -- evaluate conditions, build outcomes for true conditions and
5094 -- put them on outcome queue
5095 OKL_TXL_ITM_INSTS_PUB.update_txl_itm_insts(p_api_version => p_api_version,
5096 p_init_msg_list => p_init_msg_list,
5097 x_return_status => x_return_status,
5098 x_msg_count => x_msg_count,
5099 x_msg_data => x_msg_data,
5100 p_iipv_rec => p_itiv_rec,
5101 x_iipv_rec => x_itiv_rec);
5102 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5103 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5104 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5105 RAISE OKL_API.G_EXCEPTION_ERROR;
5106 END IF;
5107 OKL_API.END_ACTIVITY (x_msg_count,
5108 x_msg_data );
5109 EXCEPTION
5110 WHEN OKL_API.G_EXCEPTION_ERROR THEN
5111 OKL_API.set_message(p_app_name => G_APP_NAME,
5112 p_msg_name => G_ITI_ID);
5113 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5114 l_api_name,
5115 G_PKG_NAME,
5116 'OKL_API.G_RET_STS_ERROR',
5117 x_msg_count,
5118 x_msg_data,
5119 '_PVT');
5120 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5121 OKL_API.set_message(p_app_name => G_APP_NAME,
5122 p_msg_name => G_ITI_ID);
5123 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5124 l_api_name,
5125 G_PKG_NAME,
5126 'OKL_API.G_RET_STS_UNEXP_ERROR',
5127 x_msg_count,
5128 x_msg_data,
5129 '_PVT');
5130 WHEN OTHERS THEN
5131 OKL_API.set_message(p_app_name => G_APP_NAME,
5132 p_msg_name => G_ITI_ID);
5133 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5134 l_api_name,
5135 G_PKG_NAME,
5136 'OTHERS',
5137 x_msg_count,
5138 x_msg_data,
5139 '_PVT');
5140 END update_txl_itm_insts;
5141 ---------------------------------------------------------------------------------------------
5142 PROCEDURE Create_financial_asset_line(
5143 p_api_version IN NUMBER,
5144 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
5145 x_return_status OUT NOCOPY VARCHAR2,
5146 x_msg_count OUT NOCOPY NUMBER,
5147 x_msg_data OUT NOCOPY VARCHAR2,
5148 p_clev_rec IN clev_rec_type,
5149 p_klev_rec IN klev_rec_type,
5150 x_clev_rec OUT NOCOPY clev_rec_type,
5151 x_klev_rec OUT NOCOPY klev_rec_type) IS
5152 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_FIN_AST_LINES';
5153 l_clev_rec clev_rec_type;
5154 BEGIN
5155 x_return_status := OKL_API.G_RET_STS_SUCCESS;
5156 -- Call start_activity to create savepoint, check compatibility
5157 -- and initialize message list
5158 x_return_status := OKL_API.START_ACTIVITY (
5159 l_api_name
5160 ,p_init_msg_list
5161 ,'_PVT'
5162 ,x_return_status);
5163 -- Check if activity started successfully
5164 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5165 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5166 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5167 RAISE OKL_API.G_EXCEPTION_ERROR;
5168 END IF;
5169 l_clev_rec := p_clev_rec;
5170 -- # 4334903 use new function default_contract_line_values
5171 /*
5172 IF (p_clev_rec.sts_code IS NULL OR
5173 p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
5174 x_return_status := get_sts_code(p_dnz_chr_id => p_clev_rec.dnz_chr_id,
5175 p_cle_id => null,
5176 x_sts_code => l_clev_rec.sts_code);
5177 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5178 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5179 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5180 RAISE OKL_API.G_EXCEPTION_ERROR;
5181 END IF;
5182 END IF;
5183 IF l_clev_rec.sts_code NOT IN ('ENTERED',
5184 'SIGNED',
5185 'ACTIVE',
5186 'HOLD',
5187 'NEW',
5188 'PENDING_APPROVAL',
5189 'APPROVED',
5190 'COMPLETE',
5191 'INCOMPLETE',
5192 'PASSED') THEN
5193 OKL_API.set_message(p_app_name => G_APP_NAME,
5194 p_msg_name => G_STATUS,
5195 p_token1 => 'STATUS',
5196 p_token1_value => l_clev_rec.sts_code);
5197 RAISE OKL_API.G_EXCEPTION_ERROR;
5198 END IF;
5199 IF (p_clev_rec.end_date IS NULL OR
5200 p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
5201 x_return_status := get_end_date(p_dnz_chr_id => p_clev_rec.dnz_chr_id,
5202 p_cle_id => null,
5203 x_end_date => l_clev_rec.end_date);
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 (p_clev_rec.start_date IS NULL OR
5211 p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
5212 x_return_status := get_start_date(p_dnz_chr_id => p_clev_rec.dnz_chr_id,
5213 p_cle_id => null,
5214 x_start_date => l_clev_rec.start_date);
5215 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5216 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5217 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5218 RAISE OKL_API.G_EXCEPTION_ERROR;
5219 END IF;
5220 END IF;
5221 IF (p_clev_rec.currency_code IS NULL OR
5222 p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
5223 x_return_status := get_currency_code(p_dnz_chr_id => p_clev_rec.dnz_chr_id,
5224 p_cle_id => null,
5225 x_currency_code => l_clev_rec.currency_code);
5226 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5227 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5228 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5229 RAISE OKL_API.G_EXCEPTION_ERROR;
5230 END IF;
5231 END IF;
5232 */
5233 IF ((p_clev_rec.sts_code IS NULL OR
5234 p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) OR
5235 (p_clev_rec.end_date IS NULL OR
5236 p_clev_rec.end_date = OKL_API.G_MISS_DATE) OR
5237 (p_clev_rec.start_date IS NULL OR
5238 p_clev_rec.start_date = OKL_API.G_MISS_DATE) OR
5239 (p_clev_rec.currency_code IS NULL OR
5240 p_clev_rec.currency_code = OKL_API.G_MISS_CHAR)
5241 ) THEN
5242 x_return_status := default_contract_line_values(p_dnz_chr_id => p_clev_rec.dnz_chr_id,
5243 p_cle_id => null,
5244 p_clev_rec => l_clev_rec);
5245 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5246 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5247 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5248 RAISE OKL_API.G_EXCEPTION_ERROR;
5249 END IF;
5250 END IF;
5251 IF l_clev_rec.sts_code NOT IN ('ENTERED',
5252 'SIGNED',
5253 'ACTIVE',
5254 'HOLD',
5255 'NEW',
5256 'PENDING_APPROVAL',
5257 'APPROVED',
5258 'COMPLETE',
5259 'INCOMPLETE',
5260 'PASSED') THEN
5261 OKL_API.set_message(p_app_name => G_APP_NAME,
5262 p_msg_name => G_STATUS,
5263 p_token1 => 'STATUS',
5264 p_token1_value => l_clev_rec.sts_code);
5265 RAISE OKL_API.G_EXCEPTION_ERROR;
5266 END IF;
5267
5268 OKL_CONTRACT_PUB.create_contract_line(p_api_version => p_api_version,
5269 p_init_msg_list => p_init_msg_list,
5270 x_return_status => x_return_status,
5271 x_msg_count => x_msg_count,
5272 x_msg_data => x_msg_data,
5273 p_clev_rec => l_clev_rec,
5274 p_klev_rec => p_klev_rec,
5275 x_clev_rec => x_clev_rec,
5276 x_klev_rec => x_klev_rec);
5277 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5278 OKL_API.set_message(p_app_name => G_APP_NAME,
5279 p_msg_name => G_CREATION_FIN_LINE);
5280 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5281 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5282 OKL_API.set_message(p_app_name => G_APP_NAME,
5283 p_msg_name => G_CREATION_FIN_LINE);
5284 RAISE OKL_API.G_EXCEPTION_ERROR;
5285 END IF;
5286 OKL_API.END_ACTIVITY (x_msg_count,
5287 x_msg_data );
5288 EXCEPTION
5289 WHEN OKL_API.G_EXCEPTION_ERROR THEN
5290 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5291 l_api_name,
5292 G_PKG_NAME,
5293 'OKL_API.G_RET_STS_ERROR',
5294 x_msg_count,
5295 x_msg_data,
5296 '_PVT');
5297 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5298 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5299 l_api_name,
5300 G_PKG_NAME,
5301 'OKL_API.G_RET_STS_UNEXP_ERROR',
5302 x_msg_count,
5303 x_msg_data,
5304 '_PVT');
5305 WHEN OTHERS THEN
5306 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5307 l_api_name,
5308 G_PKG_NAME,
5309 'OTHERS',
5310 x_msg_count,
5311 x_msg_data,
5312 '_PVT');
5313 END Create_financial_asset_line;
5314 ---------------------------------------------------------------------------------------------
5315 PROCEDURE update_financial_asset_line(
5316 p_api_version IN NUMBER,
5317 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
5318 x_return_status OUT NOCOPY VARCHAR2,
5319 x_msg_count OUT NOCOPY NUMBER,
5320 x_msg_data OUT NOCOPY VARCHAR2,
5321 p_clev_rec IN clev_rec_type,
5322 p_klev_rec IN klev_rec_type,
5323 x_clev_rec OUT NOCOPY clev_rec_type,
5324 x_klev_rec OUT NOCOPY klev_rec_type) IS
5325 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_FIN_AST_LINES';
5326 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
5327 BEGIN
5328 x_return_status := OKL_API.G_RET_STS_SUCCESS;
5329 -- Call start_activity to create savepoint, check compatibility
5330 -- and initialize message list
5331 x_return_status := OKL_API.START_ACTIVITY (
5332 l_api_name
5333 ,p_init_msg_list
5334 ,'_PVT'
5335 ,x_return_status);
5336 -- Check if activity started successfully
5337 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5338 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5339 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5340 RAISE OKL_API.G_EXCEPTION_ERROR;
5341 END IF;
5342 -- Calling the Process
5343 OKL_CONTRACT_PUB.update_contract_line(p_api_version => p_api_version,
5344 p_init_msg_list => p_init_msg_list,
5345 x_return_status => x_return_status,
5346 x_msg_count => x_msg_count,
5347 x_msg_data => x_msg_data,
5348 p_clev_rec => p_clev_rec,
5349 p_klev_rec => p_klev_rec,
5350 x_clev_rec => x_clev_rec,
5351 x_klev_rec => x_klev_rec);
5352 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5353 OKL_API.set_message(p_app_name => G_APP_NAME,
5354 p_msg_name => G_UPDATING_FIN_LINE);
5355 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5356 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5357 OKL_API.set_message(p_app_name => G_APP_NAME,
5358 p_msg_name => G_UPDATING_FIN_LINE);
5359 RAISE OKL_API.G_EXCEPTION_ERROR;
5360 END IF;
5361 OKL_API.END_ACTIVITY (x_msg_count,
5362 x_msg_data );
5363 EXCEPTION
5364 WHEN OKL_API.G_EXCEPTION_ERROR THEN
5365 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5366 l_api_name,
5367 G_PKG_NAME,
5368 'OKL_API.G_RET_STS_ERROR',
5369 x_msg_count,
5370 x_msg_data,
5371 '_PVT');
5372 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5373 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5374 l_api_name,
5375 G_PKG_NAME,
5376 'OKL_API.G_RET_STS_UNEXP_ERROR',
5377 x_msg_count,
5378 x_msg_data,
5379 '_PVT');
5380 WHEN OTHERS THEN
5381 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5382 l_api_name,
5383 G_PKG_NAME,
5384 'OTHERS',
5385 x_msg_count,
5386 x_msg_data,
5387 '_PVT');
5388 END update_financial_asset_line;
5389
5390 ---------------
5391 --Bug# 2994971
5392 ---------------
5393 PROCEDURE populate_insurance_category(p_api_version IN NUMBER,
5394 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
5395 x_return_status OUT NOCOPY VARCHAR2,
5396 x_msg_count OUT NOCOPY NUMBER,
5397 x_msg_data OUT NOCOPY VARCHAR2,
5398 p_cle_id IN NUMBER,
5399 p_inv_item_id IN NUMBER,
5400 p_inv_org_id IN NUMBER) IS
5401
5402 l_api_name CONSTANT VARCHAR2(30) := 'POPULATE_INS_CATEGORY';
5403
5404 --cursor to get asset category
5405 cursor l_msi_csr(p_inv_item_id in number,
5406 p_inv_org_id in number) is
5407 select msi.asset_category_id
5408 from mtl_system_items msi
5409 where msi.organization_id = p_inv_org_id
5410 and msi.inventory_item_id = p_inv_item_id;
5411
5412 l_asset_category_id mtl_system_items.asset_category_id%TYPE default NULL;
5413 l_clev_rec okl_okc_migration_pvt.clev_rec_type;
5414 l_klev_rec okl_contract_pub.klev_rec_type;
5415 lx_clev_rec okl_okc_migration_pvt.clev_rec_type;
5416 lx_klev_rec okl_contract_pub.klev_rec_type;
5417
5418
5419 BEGIN
5420
5421 x_return_status := OKL_API.G_RET_STS_SUCCESS;
5422 -- Call start_activity to create savepoint, check compatibility
5423 -- and initialize message list
5424 x_return_status := OKL_API.START_ACTIVITY (l_api_name
5425 ,p_init_msg_list
5426 ,'_PVT'
5427 ,x_return_status);
5428 -- Check if activity started successfully
5429 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5430 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5431 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5432 RAISE OKL_API.G_EXCEPTION_ERROR;
5433 END IF;
5434
5435 --fetch asset category
5436 l_asset_category_id := NULL;
5437 open l_msi_csr (p_inv_item_id => p_inv_item_id,
5438 p_inv_org_id => p_inv_org_id);
5439 fetch l_msi_csr into l_asset_category_id;
5440 if l_msi_csr%NOTFOUND then
5441 null;
5442 end if;
5443 close l_msi_csr;
5444
5445
5446 l_clev_rec.id := p_cle_id;
5447 l_klev_rec.id := p_cle_id;
5448 l_klev_rec.item_insurance_category := l_asset_category_id;
5449
5450 okl_contract_pub.update_contract_line(
5451 p_api_version => p_api_version,
5452 p_init_msg_list => p_init_msg_list,
5453 x_return_status => x_return_status,
5454 x_msg_count => x_msg_count,
5455 x_msg_data => x_msg_data,
5456 p_clev_rec => l_clev_rec,
5457 p_klev_rec => l_klev_rec,
5458 x_clev_rec => lx_clev_rec,
5459 x_klev_rec => lx_klev_rec
5460 );
5461
5462 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5463 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5464 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5465 RAISE OKL_API.G_EXCEPTION_ERROR;
5466 END IF;
5467
5468 OKL_API.END_ACTIVITY (x_msg_count,
5469 x_msg_data );
5470 EXCEPTION
5471 WHEN OKL_API.G_EXCEPTION_ERROR THEN
5472 if l_msi_csr%ISOPEN then
5473 close l_msi_csr;
5474 end if;
5475 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5476 l_api_name,
5477 G_PKG_NAME,
5478 'OKL_API.G_RET_STS_ERROR',
5479 x_msg_count,
5480 x_msg_data,
5481 '_PVT');
5482 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5483 if l_msi_csr%ISOPEN then
5484 close l_msi_csr;
5485 end if;
5486 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5487 l_api_name,
5488 G_PKG_NAME,
5489 'OKL_API.G_RET_STS_UNEXP_ERROR',
5490 x_msg_count,
5491 x_msg_data,
5492 '_PVT');
5493 WHEN OTHERS THEN
5494 if l_msi_csr%ISOPEN then
5495 close l_msi_csr;
5496 end if;
5497 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5498 l_api_name,
5499 G_PKG_NAME,
5500 'OTHERS',
5501 x_msg_count,
5502 x_msg_data,
5503 '_PVT');
5504 End POPULATE_INSURANCE_CATEGORY;
5505 -------------------
5506 --Bug# 2994971
5507 ------------------
5508
5509 ---22------------------------------------------------------------------------------------------
5510 PROCEDURE Create_model_line_item(p_api_version IN NUMBER,
5511 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
5512 x_return_status OUT NOCOPY VARCHAR2,
5513 x_msg_count OUT NOCOPY NUMBER,
5514 x_msg_data OUT NOCOPY VARCHAR2,
5515 -- 4414408 p_lty_code IN OKC_LINE_STYLES_V.LTY_CODE%TYPE,
5516 p_clev_rec IN clev_rec_type,
5517 p_klev_rec IN klev_rec_type,
5518 p_cimv_rec IN cimv_rec_type,
5519 x_clev_rec OUT NOCOPY clev_rec_type,
5520 x_klev_rec OUT NOCOPY klev_rec_type,
5521 x_cimv_rec OUT NOCOPY cimv_rec_type) IS
5522 l_clev_rec clev_rec_type;
5523 r_clev_rec clev_rec_type;
5524 l_talv_rec talv_rec_type;
5525 l_cimv_rec cimv_rec_type;
5526 -- l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
5527 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_MODEL_ITEM';
5528
5529 ------------------
5530 --Bug# 2994971
5531 -----------------
5532 l_inv_item_id number;
5533 l_inv_org_id number;
5534 l_asset_cle_id number;
5535
5536 BEGIN
5537 x_return_status := OKL_API.G_RET_STS_SUCCESS;
5538 -- Call start_activity to create savepoint, check compatibility
5539 -- and initialize message list
5540 x_return_status := OKL_API.START_ACTIVITY (l_api_name
5541 ,p_init_msg_list
5542 ,'_PVT'
5543 ,x_return_status);
5544 -- Check if activity started successfully
5545 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5546 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5547 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5548 RAISE OKL_API.G_EXCEPTION_ERROR;
5549 END IF;
5550 -- 4414408 redundant validation
5551 /*
5552 -- Check the cle_id that is of the top Fin Asset line
5553 validate_cle_lse_id(p_clev_rec => p_clev_rec,
5554 p_lty_code => p_lty_code,
5555 x_lty_code => l_lty_code,
5556 x_return_status => x_return_status);
5557 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5558 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5559 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5560 RAISE OKL_API.G_EXCEPTION_ERROR;
5561 END IF;
5562 */
5563 -- 4414408
5564 -- IF l_lty_code = G_FIN_LINE_LTY_CODE THEN
5565 r_clev_rec := p_clev_rec;
5566
5567 -- # 4334903 use new function default_contract_line_values
5568 /*
5569 IF (p_clev_rec.sts_code IS NULL OR
5570 p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
5571 x_return_status := get_sts_code(p_dnz_chr_id => null,
5572 p_cle_id => p_clev_rec.cle_id,
5573 x_sts_code => r_clev_rec.sts_code);
5574 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5575 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5576 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5577 RAISE OKL_API.G_EXCEPTION_ERROR;
5578 END IF;
5579 END IF;
5580 IF (p_clev_rec.end_date IS NULL OR
5581 p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
5582 x_return_status := get_end_date(p_dnz_chr_id => null,
5583 p_cle_id => p_clev_rec.cle_id,
5584 x_end_date => r_clev_rec.end_date);
5585 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5586 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5587 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5588 RAISE OKL_API.G_EXCEPTION_ERROR;
5589 END IF;
5590 END IF;
5591 IF (p_clev_rec.start_date IS NULL OR
5592 p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
5593 x_return_status := get_start_date(p_dnz_chr_id => null,
5594 p_cle_id => p_clev_rec.cle_id,
5595 x_start_date => r_clev_rec.start_date);
5596 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5597 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5598 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5599 RAISE OKL_API.G_EXCEPTION_ERROR;
5600 END IF;
5601 END IF;
5602 IF (p_clev_rec.currency_code IS NULL OR
5603 p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
5604 x_return_status := get_currency_code(p_dnz_chr_id => null,
5605 p_cle_id => p_clev_rec.cle_id,
5606 x_currency_code => r_clev_rec.currency_code);
5607 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5608 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5609 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5610 RAISE OKL_API.G_EXCEPTION_ERROR;
5611 END IF;
5612 END IF;
5613 */
5614
5615 IF ((p_clev_rec.sts_code IS NULL OR
5616 p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) OR
5617 (p_clev_rec.end_date IS NULL OR
5618 p_clev_rec.end_date = OKL_API.G_MISS_DATE) OR
5619 (p_clev_rec.start_date IS NULL OR
5620 p_clev_rec.start_date = OKL_API.G_MISS_DATE) OR
5621 (p_clev_rec.currency_code IS NULL OR
5622 p_clev_rec.currency_code = OKL_API.G_MISS_CHAR)
5623 ) THEN
5624 x_return_status := default_contract_line_values(p_dnz_chr_id => null,
5625 p_cle_id => r_clev_rec.cle_id,
5626 p_clev_rec => r_clev_rec);
5627 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5628 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5629 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5630 RAISE OKL_API.G_EXCEPTION_ERROR;
5631 END IF;
5632 END IF;
5633
5634 -- Now the all the records are there we can create Model Line
5635 OKL_CONTRACT_PUB.create_contract_line(p_api_version => p_api_version,
5636 p_init_msg_list => p_init_msg_list,
5637 x_return_status => x_return_status,
5638 x_msg_count => x_msg_count,
5639 x_msg_data => x_msg_data,
5640 p_clev_rec => r_clev_rec,
5641 p_klev_rec => p_klev_rec,
5642 x_clev_rec => x_clev_rec,
5643 x_klev_rec => x_klev_rec);
5644 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5645 OKL_API.set_message(p_app_name => G_APP_NAME,
5646 p_msg_name => G_CREATION_MODEL_LINE);
5647 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5648 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5649 OKL_API.set_message(p_app_name => G_APP_NAME,
5650 p_msg_name => G_CREATION_MODEL_LINE);
5651 RAISE OKL_API.G_EXCEPTION_ERROR;
5652 END IF;
5653 l_cimv_rec := p_cimv_rec;
5654 l_cimv_rec.cle_id := x_clev_rec.id;
5655 l_cimv_rec.dnz_chr_id := x_clev_rec.dnz_chr_id;
5656 l_cimv_rec.jtot_object1_code := 'OKX_SYSITEM';
5657 l_cimv_rec.exception_yn := 'N';
5658 -- Creation of Item Record for the above record information
5659 OKL_OKC_MIGRATION_PVT.create_contract_item(p_api_version => p_api_version,
5660 p_init_msg_list => p_init_msg_list,
5661 x_return_status => x_return_status,
5662 x_msg_count => x_msg_count,
5663 x_msg_data => x_msg_data,
5664 p_cimv_rec => l_cimv_rec,
5665 x_cimv_rec => x_cimv_rec);
5666 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5667 OKL_API.set_message(p_app_name => G_APP_NAME,
5668 p_msg_name => G_CREATION_MODEL_ITEM);
5669 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5670 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5671 OKL_API.set_message(p_app_name => G_APP_NAME,
5672 p_msg_name => G_CREATION_MODEL_ITEM);
5673 RAISE OKL_API.G_EXCEPTION_ERROR;
5674 END IF;
5675
5676 ---------------
5677 --Bug# 2994971
5678 ---------------
5679 If nvl(x_cimv_rec.object1_id1,okl_api.g_miss_char) <> OKL_API.G_MISS_CHAR and
5680 nvl(x_cimv_rec.object1_id2,okl_api.g_miss_char) <> OKL_API.G_MISS_CHAR then
5681
5682 --Bug# 3438811 :
5683 --l_inv_item_id := to_char(x_cimv_rec.object1_id1);
5684 --l_inv_org_id := to_char(x_cimv_rec.object1_id2);
5685 l_inv_item_id := to_number(x_cimv_rec.object1_id1);
5686 l_inv_org_id := to_number(x_cimv_rec.object1_id2);
5687 l_asset_cle_id := x_clev_rec.cle_id;
5688
5689 populate_insurance_category(p_api_version => p_api_version,
5690 p_init_msg_list => p_init_msg_list,
5691 x_return_status => x_return_status,
5692 x_msg_count => x_msg_count,
5693 x_msg_data => x_msg_data,
5694 p_cle_id => l_asset_cle_id,
5695 p_inv_item_id => l_inv_item_id,
5696 p_inv_org_id => l_inv_org_id);
5697 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5698 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5699 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5700 RAISE OKL_API.G_EXCEPTION_ERROR;
5701 END IF;
5702 End If;
5703 ---------------
5704 --Bug# 2994971
5705 ---------------
5706
5707 -- #4414408
5708 -- ELSE
5709 -- OKL_API.set_message(p_app_name => G_APP_NAME,
5710 -- p_msg_name => G_LINE_STYLE);
5711 -- RAISE OKL_API.G_EXCEPTION_ERROR;
5712 -- END IF;
5713 OKL_API.END_ACTIVITY (x_msg_count,
5714 x_msg_data );
5715 EXCEPTION
5716 WHEN OKL_API.G_EXCEPTION_ERROR THEN
5717 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5718 l_api_name,
5719 G_PKG_NAME,
5720 'OKL_API.G_RET_STS_ERROR',
5721 x_msg_count,
5722 x_msg_data,
5723 '_PVT');
5724 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5725 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5726 l_api_name,
5727 G_PKG_NAME,
5728 'OKL_API.G_RET_STS_UNEXP_ERROR',
5729 x_msg_count,
5730 x_msg_data,
5731 '_PVT');
5732 WHEN OTHERS THEN
5733 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5734 l_api_name,
5735 G_PKG_NAME,
5736 'OTHERS',
5737 x_msg_count,
5738 x_msg_data,
5739 '_PVT');
5740 END Create_model_line_item;
5741 ---------------------------------------------------------------------------------------------
5742 PROCEDURE update_model_line_item(p_api_version IN NUMBER,
5743 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
5744 x_return_status OUT NOCOPY VARCHAR2,
5745 x_msg_count OUT NOCOPY NUMBER,
5746 x_msg_data OUT NOCOPY VARCHAR2,
5747 p_lty_code IN OKC_LINE_STYLES_V.LTY_CODE%TYPE,
5748 p_clev_rec IN clev_rec_type,
5749 p_klev_rec IN klev_rec_type,
5750 p_cimv_rec IN cimv_rec_type,
5751 x_clev_rec OUT NOCOPY clev_rec_type,
5752 x_klev_rec OUT NOCOPY klev_rec_type,
5753 x_cimv_rec OUT NOCOPY cimv_rec_type) IS
5754
5755 l_clev_rec clev_rec_type;
5756 l_talv_rec talv_rec_type;
5757 l_cimv_rec cimv_rec_type;
5758 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
5759 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_MODEL_ITEM';
5760
5761 ------------------
5762 --Bug# 2994971
5763 -----------------
5764 l_inv_item_id number;
5765 l_inv_org_id number;
5766 l_asset_cle_id number;
5767
5768 BEGIN
5769 x_return_status := OKL_API.G_RET_STS_SUCCESS;
5770 -- Call start_activity to create savepoint, check compatibility
5771 -- and initialize message list
5772 x_return_status := OKL_API.START_ACTIVITY (l_api_name
5773 ,p_init_msg_list
5774 ,'_PVT'
5775 ,x_return_status);
5776 -- Check if activity started successfully
5777 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5778 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5779 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5780 RAISE OKL_API.G_EXCEPTION_ERROR;
5781 END IF;
5782 -- Check the cle_id that is of the top Fin Asset line
5783 validate_cle_lse_id(p_clev_rec => p_clev_rec,
5784 p_lty_code => p_lty_code,
5785 x_lty_code => l_lty_code,
5786 x_return_status => x_return_status);
5787 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5788 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5789 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5790 RAISE OKL_API.G_EXCEPTION_ERROR;
5791 END IF;
5792 IF l_lty_code = G_FIN_LINE_LTY_CODE THEN
5793 -- Now the all the records are there we can create Model Line
5794 OKL_CONTRACT_PUB.update_contract_line(p_api_version => p_api_version,
5795 p_init_msg_list => p_init_msg_list,
5796 x_return_status => x_return_status,
5797 x_msg_count => x_msg_count,
5798 x_msg_data => x_msg_data,
5799 p_clev_rec => p_clev_rec,
5800 p_klev_rec => p_klev_rec,
5801 x_clev_rec => x_clev_rec,
5802 x_klev_rec => x_klev_rec);
5803 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5804 OKL_API.set_message(p_app_name => G_APP_NAME,
5805 p_msg_name => G_UPDATING_MODEL_LINE);
5806 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5807 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5808 OKL_API.set_message(p_app_name => G_APP_NAME,
5809 p_msg_name => G_UPDATING_MODEL_LINE);
5810 RAISE OKL_API.G_EXCEPTION_ERROR;
5811 END IF;
5812 l_cimv_rec := p_cimv_rec;
5813 IF l_cimv_rec.cle_id <> x_clev_rec.id THEN
5814 OKL_API.set_message(p_app_name => G_APP_NAME,
5815 p_msg_name => G_ITEM_RECORD);
5816 RAISE OKL_API.G_EXCEPTION_ERROR;
5817 END IF;
5818 IF l_cimv_rec.dnz_chr_id <> x_clev_rec.dnz_chr_id THEN
5819 OKL_API.set_message(p_app_name => G_APP_NAME,
5820 p_msg_name => G_ITEM_RECORD);
5821 RAISE OKL_API.G_EXCEPTION_ERROR;
5822 END IF;
5823 -- Creation of Item Record for the above record information
5824 OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version => p_api_version,
5825 p_init_msg_list => p_init_msg_list,
5826 x_return_status => x_return_status,
5827 x_msg_count => x_msg_count,
5828 x_msg_data => x_msg_data,
5829 p_cimv_rec => l_cimv_rec,
5830 x_cimv_rec => x_cimv_rec);
5831 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5832 OKL_API.set_message(p_app_name => G_APP_NAME,
5833 p_msg_name => G_UPDATING_MODEL_ITEM);
5834 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5835 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5836 OKL_API.set_message(p_app_name => G_APP_NAME,
5837 p_msg_name => G_UPDATING_MODEL_ITEM);
5838 RAISE OKL_API.G_EXCEPTION_ERROR;
5839 END IF;
5840
5841 ---------------
5842 --Bug# 2994971
5843 ---------------
5844 If nvl(x_cimv_rec.object1_id1,okl_api.g_miss_char) <> OKL_API.G_MISS_CHAR and
5845 nvl(x_cimv_rec.object1_id2,okl_api.g_miss_char) <> OKL_API.G_MISS_CHAR then
5846
5847 --Bug# 3438811 :
5848 --l_inv_item_id := to_char(x_cimv_rec.object1_id1);
5849 --l_inv_org_id := to_char(x_cimv_rec.object1_id2);
5850 l_inv_item_id := to_number(x_cimv_rec.object1_id1);
5851 l_inv_org_id := to_number(x_cimv_rec.object1_id2);
5852 l_asset_cle_id := x_clev_rec.cle_id;
5853
5854 populate_insurance_category(p_api_version => p_api_version,
5855 p_init_msg_list => p_init_msg_list,
5856 x_return_status => x_return_status,
5857 x_msg_count => x_msg_count,
5858 x_msg_data => x_msg_data,
5859 p_cle_id => l_asset_cle_id,
5860 p_inv_item_id => l_inv_item_id,
5861 p_inv_org_id => l_inv_org_id);
5862 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5863 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5864 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5865 RAISE OKL_API.G_EXCEPTION_ERROR;
5866 END IF;
5867 End If;
5868 ---------------
5869 --Bug# 2994971
5870 ---------------
5871
5872
5873 ELSE
5874 OKL_API.set_message(p_app_name => G_APP_NAME,
5875 p_msg_name => G_LINE_STYLE);
5876 RAISE OKL_API.G_EXCEPTION_ERROR;
5877 END IF;
5878 OKL_API.END_ACTIVITY (x_msg_count,
5879 x_msg_data );
5880 EXCEPTION
5881 WHEN OKL_API.G_EXCEPTION_ERROR THEN
5882 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5883 l_api_name,
5884 G_PKG_NAME,
5885 'OKL_API.G_RET_STS_ERROR',
5886 x_msg_count,
5887 x_msg_data,
5888 '_PVT');
5889 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5890 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5891 l_api_name,
5892 G_PKG_NAME,
5893 'OKL_API.G_RET_STS_UNEXP_ERROR',
5894 x_msg_count,
5895 x_msg_data,
5896 '_PVT');
5897 WHEN OTHERS THEN
5898 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5899 l_api_name,
5900 G_PKG_NAME,
5901 'OTHERS',
5902 x_msg_count,
5903 x_msg_data,
5904 '_PVT');
5905 END update_model_line_item;
5906 --------------------------------------------------------------------------------------------------
5907 PROCEDURE create_fa_line_item(p_api_version IN NUMBER,
5908 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
5909 x_return_status OUT NOCOPY VARCHAR2,
5910 x_msg_count OUT NOCOPY NUMBER,
5911 x_msg_data OUT NOCOPY VARCHAR2,
5912 -- p_lty_code IN OKC_LINE_STYLES_V.LTY_CODE%TYPE,
5913 -- 4414408
5914 p_clev_rec IN clev_rec_type,
5915 p_klev_rec IN klev_rec_type,
5916 p_cimv_rec IN cimv_rec_type,
5917 p_talv_rec IN talv_rec_type,
5918 x_clev_rec OUT NOCOPY clev_rec_type,
5919 x_klev_rec OUT NOCOPY klev_rec_type,
5920 x_cimv_rec OUT NOCOPY cimv_rec_type,
5921 x_trxv_rec OUT NOCOPY trxv_rec_type,
5922 x_talv_rec OUT NOCOPY talv_rec_type) IS
5923 l_clev_rec clev_rec_type;
5924 r_clev_rec clev_rec_type;
5925 l_klev_rec klev_rec_type;
5926 l_cimv_rec cimv_rec_type;
5927 l_talv_rec talv_rec_type;
5928 l_trxv_rec trxv_rec_type;
5929 i NUMBER := 0;
5930
5931 -- l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
5932 lv_id1 OKC_K_ITEMS_V.OBJECT1_ID1%TYPE := OKL_API.G_MISS_CHAR;
5933 lv_id2 OKC_K_ITEMS_V.OBJECT1_ID2%TYPE := OKL_API.G_MISS_CHAR;
5934 ln_dummy NUMBER := 0;
5935 lv_dummy VARCHAR2(3);
5936 ln_tas_id OKL_TRX_ASSETS.ID%TYPE;
5937 ln_line_number OKL_TXL_ASSETS_V.LINE_NUMBER%TYPE;
5938 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_FA_LINE_ITEM';
5939 CURSOR c_asset_exist_chr(p_id1 OKX_ASSETS_V.ID1%TYPE,
5940 p_id2 OKX_ASSETS_V.ID2%TYPE,
5941 p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE)
5942 IS
5943 SELECT 1
5944 --FROM DUAL
5945 --WHERE EXISTS (SELECT '1'
5946 FROM OKX_ASSET_LINES_V
5947 WHERE id1 = p_id1
5948 AND id2 = p_id2
5949 AND dnz_chr_id <> p_dnz_chr_id
5950 AND line_status NOT IN ('EXPRIED','TERMINATED','ABANDONED'); --);
5951 BEGIN
5952 x_return_status := OKL_API.G_RET_STS_SUCCESS;
5953 -- Call start_activity to create savepoint, check compatibility
5954 -- and initialize message list
5955 x_return_status := OKL_API.START_ACTIVITY (l_api_name,
5956 p_init_msg_list,
5957 '_PVT',
5958 x_return_status);
5959 -- Check if activity started successfully
5960 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5961 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5962 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5963 RAISE OKL_API.G_EXCEPTION_ERROR;
5964 END IF;
5965 -- #4414408
5966 /*
5967 -- Check the cle_id that is of the top Fin Asset line
5968 validate_cle_lse_id(p_clev_rec => p_clev_rec,
5969 p_lty_code => p_lty_code,
5970 x_lty_code => l_lty_code,
5971 x_return_status => x_return_status);
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 */
5978 -- since Fixed Assets Line is a sub line of Fin Asset line we have to check weather
5979 -- which line are creating under which line
5980 -- IF l_lty_code = G_FIN_LINE_LTY_CODE THEN
5981
5982 r_clev_rec := p_clev_rec;
5983
5984 -- # 4414408 New function default_contract_line_values
5985 /*
5986 IF (p_clev_rec.sts_code IS NULL OR
5987 p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
5988 x_return_status := get_sts_code(p_dnz_chr_id => null,
5989 p_cle_id => p_clev_rec.cle_id,
5990 x_sts_code => r_clev_rec.sts_code);
5991 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5992 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5993 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5994 RAISE OKL_API.G_EXCEPTION_ERROR;
5995 END IF;
5996 END IF;
5997 IF (p_clev_rec.end_date IS NULL OR
5998 p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
5999 x_return_status := get_end_date(p_dnz_chr_id => null,
6000 p_cle_id => p_clev_rec.cle_id,
6001 x_end_date => r_clev_rec.end_date);
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 IF (p_clev_rec.start_date IS NULL OR
6009 p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
6010 x_return_status := get_start_date(p_dnz_chr_id => null,
6011 p_cle_id => p_clev_rec.cle_id,
6012 x_start_date => r_clev_rec.start_date);
6013 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6014 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6015 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6016 RAISE OKL_API.G_EXCEPTION_ERROR;
6017 END IF;
6018 END IF;
6019 IF (p_clev_rec.currency_code IS NULL OR
6020 p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
6021 x_return_status := get_currency_code(p_dnz_chr_id => null,
6022 p_cle_id => p_clev_rec.cle_id,
6023 x_currency_code => r_clev_rec.currency_code);
6024 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6025 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6026 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6027 RAISE OKL_API.G_EXCEPTION_ERROR;
6028 END IF;
6029 END IF;
6030 */
6031 IF ((p_clev_rec.sts_code IS NULL OR
6032 p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) OR
6033 (p_clev_rec.end_date IS NULL OR
6034 p_clev_rec.end_date = OKL_API.G_MISS_DATE) OR
6035 (p_clev_rec.start_date IS NULL OR
6036 p_clev_rec.start_date = OKL_API.G_MISS_DATE) OR
6037 (p_clev_rec.currency_code IS NULL OR
6038 p_clev_rec.currency_code = OKL_API.G_MISS_CHAR)
6039 ) THEN
6040 x_return_status := default_contract_line_values(p_dnz_chr_id => null,
6041 p_cle_id => r_clev_rec.cle_id,
6042 p_clev_rec => r_clev_rec);
6043 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6044 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6045 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6046 RAISE OKL_API.G_EXCEPTION_ERROR;
6047 END IF;
6048 END IF;
6049 -- Now the all the records are there we can create Fixed Asset Line
6050 OKL_CONTRACT_PUB.create_contract_line(p_api_version => p_api_version,
6051 p_init_msg_list => p_init_msg_list,
6052 x_return_status => x_return_status,
6053 x_msg_count => x_msg_count,
6054 x_msg_data => x_msg_data,
6055 p_clev_rec => r_clev_rec,
6056 p_klev_rec => p_klev_rec,
6057 x_clev_rec => x_clev_rec,
6058 x_klev_rec => x_klev_rec);
6059 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6060 OKL_API.set_message(p_app_name => G_APP_NAME,
6061 p_msg_name => G_CREATION_FA_LINE);
6062 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6063 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6064 OKL_API.set_message(p_app_name => G_APP_NAME,
6065 p_msg_name => G_CREATION_FA_LINE);
6066 RAISE OKL_API.G_EXCEPTION_ERROR;
6067 END IF;
6068 l_cimv_rec := p_cimv_rec;
6069 l_cimv_rec.cle_id := x_clev_rec.id;
6070 l_cimv_rec.dnz_chr_id := x_clev_rec.dnz_chr_id;
6071 lv_id1 := l_cimv_rec.object1_id1;
6072 lv_id2 := l_cimv_rec.object1_id2;
6073 l_cimv_rec.jtot_object1_code := 'OKX_ASSET';
6074 -- Now we should check weather the associated id1,id2 for a given asset number is null or not
6075 IF (lv_id1 IS NOT NULL OR
6076 lv_id1 <> OKL_API.G_MISS_CHAR) AND
6077 (lv_id2 IS NOT NULL OR
6078 lv_id2 <> OKL_API.G_MISS_CHAR) THEN
6079 -- Check to See the Fixed asset is not already in another contract
6080 OPEN c_asset_exist_chr(lv_id1,lv_id2,l_cimv_rec.dnz_chr_id);
6081 FETCH c_asset_exist_chr into ln_dummy;
6082 CLOSE c_asset_exist_chr;
6083 IF ln_dummy <> 1 THEN
6084 -- Creation of Item Record for the above record information
6085 OKL_OKC_MIGRATION_PVT.create_contract_item(p_api_version => p_api_version,
6086 p_init_msg_list => p_init_msg_list,
6087 x_return_status => x_return_status,
6088 x_msg_count => x_msg_count,
6089 x_msg_data => x_msg_data,
6090 p_cimv_rec => l_cimv_rec,
6091 x_cimv_rec => x_cimv_rec);
6092 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6093 OKL_API.set_message(p_app_name => G_APP_NAME,
6094 p_msg_name => G_CREATION_FA_ITEM);
6095 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6096 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6097 OKL_API.set_message(p_app_name => G_APP_NAME,
6098 p_msg_name => G_CREATION_FA_ITEM);
6099 RAISE OKL_API.G_EXCEPTION_ERROR;
6100 END IF;
6101 -- We need to do this as part of Asset Release since the p_new_yn flag is N
6102 -- So that the adjustment will be done while activation of the re-lease asseted contract.
6103 -- We need to know if the kle_id is already there or not
6104 -- ideally it should be null since it is a new record
6105 validate_kle_id(p_klev_rec => x_klev_rec,
6106 x_record_exists => lv_dummy,
6107 x_return_status => x_return_status);
6108 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6109 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6110 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6111 RAISE OKL_API.G_EXCEPTION_ERROR;
6112 END IF;
6113 IF (lv_dummy = OKL_API.G_MISS_CHAR OR
6114 lv_dummy IS NUll) THEN
6115 l_talv_rec := p_talv_rec;
6116 l_talv_rec.kle_id := x_clev_rec.id;
6117 l_talv_rec.dnz_khr_id := x_clev_rec.dnz_chr_id;
6118 l_talv_rec.line_number := 1 ;
6119 -- Create another kle_id record for the same header
6120 Create_asset_lines(p_api_version => p_api_version,
6121 p_init_msg_list => p_init_msg_list,
6122 x_return_status => x_return_status,
6123 x_msg_count => x_msg_count,
6124 x_msg_data => x_msg_data,
6125 p_talv_rec => l_talv_rec,
6126 x_trxv_rec => x_trxv_rec,
6127 x_talv_rec => x_talv_rec);
6128 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6129 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6130 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6131 RAISE OKL_API.G_EXCEPTION_ERROR;
6132 END IF;
6133 ELSE
6134 OKL_API.set_message(p_app_name => G_APP_NAME,
6135 p_msg_name => G_KLE_ID);
6136 RAISE OKL_API.G_EXCEPTION_ERROR;
6137 END IF;
6138 ELSE
6139 OKL_API.set_message(p_app_name => G_APP_NAME,
6140 p_msg_name => G_CREATION_FA_ITEM);
6141 RAISE OKL_API.G_EXCEPTION_ERROR;
6142 END IF;
6143 ELSE
6144 -- Since id1,id12 are null , hence NO Asset Number we are creating a new asset Number
6145 -- Creation of Item Record for the above record information
6146 OKL_OKC_MIGRATION_PVT.create_contract_item(p_api_version => p_api_version,
6147 p_init_msg_list => p_init_msg_list,
6148 x_return_status => x_return_status,
6149 x_msg_count => x_msg_count,
6150 x_msg_data => x_msg_data,
6151 p_cimv_rec => l_cimv_rec,
6152 x_cimv_rec => x_cimv_rec);
6153 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6154 OKL_API.set_message(p_app_name => G_APP_NAME,
6155 p_msg_name => G_CREATION_FA_ITEM);
6156 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6157 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6158 OKL_API.set_message(p_app_name => G_APP_NAME,
6159 p_msg_name => G_CREATION_FA_ITEM);
6160 RAISE OKL_API.G_EXCEPTION_ERROR;
6161 END IF;
6162 -- We need to know if the kle_id is already there or not
6163 -- ideally it should be null since it is a new record
6164 validate_kle_id(p_klev_rec => x_klev_rec,
6165 x_record_exists => lv_dummy,
6166 x_return_status => x_return_status);
6167 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6168 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6169 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6170 RAISE OKL_API.G_EXCEPTION_ERROR;
6171 END IF;
6172 IF (lv_dummy = OKL_API.G_MISS_CHAR OR
6173 lv_dummy IS NUll) THEN
6174 l_talv_rec := p_talv_rec;
6175 l_talv_rec.kle_id := x_clev_rec.id;
6176 l_talv_rec.dnz_khr_id := x_clev_rec.dnz_chr_id;
6177 l_talv_rec.line_number := 1 ;
6178 -- Create another kle_id record for the same header
6179 Create_asset_lines(p_api_version => p_api_version,
6180 p_init_msg_list => p_init_msg_list,
6181 x_return_status => x_return_status,
6182 x_msg_count => x_msg_count,
6183 x_msg_data => x_msg_data,
6184 p_talv_rec => l_talv_rec,
6185 x_trxv_rec => x_trxv_rec,
6186 x_talv_rec => x_talv_rec);
6187 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6188 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6189 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6190 RAISE OKL_API.G_EXCEPTION_ERROR;
6191 END IF;
6192 ELSE
6193 OKL_API.set_message(p_app_name => G_APP_NAME,
6194 p_msg_name => G_KLE_ID);
6195 RAISE OKL_API.G_EXCEPTION_ERROR;
6196 END IF;
6197 END IF;
6198 -- #4414408
6199 -- ELSE
6200 -- OKL_API.set_message(p_app_name => G_APP_NAME,
6201 -- p_msg_name => G_LINE_STYLE);
6202 -- RAISE OKL_API.G_EXCEPTION_ERROR;
6203 -- END IF;
6204 OKL_API.END_ACTIVITY (x_msg_count,
6205 x_msg_data );
6206 EXCEPTION
6207 WHEN OKL_API.G_EXCEPTION_ERROR THEN
6208 IF c_asset_exist_chr%ISOPEN THEN
6209 CLOSE c_asset_exist_chr;
6210 END IF;
6211 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6212 l_api_name,
6213 G_PKG_NAME,
6214 'OKL_API.G_RET_STS_ERROR',
6215 x_msg_count,
6216 x_msg_data,
6217 '_PVT');
6218 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6219 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6220 l_api_name,
6221 G_PKG_NAME,
6222 'OKL_API.G_RET_STS_UNEXP_ERROR',
6223 x_msg_count,
6224 x_msg_data,
6225 '_PVT');
6226 WHEN OTHERS THEN
6227 IF c_asset_exist_chr%ISOPEN THEN
6228 CLOSE c_asset_exist_chr;
6229 END IF;
6230 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6231 l_api_name,
6232 G_PKG_NAME,
6233 'OTHERS',
6234 x_msg_count,
6235 x_msg_data,
6236 '_PVT');
6237 END create_fa_line_item;
6238 -------------------------------------------------------------------------------------------------
6239 PROCEDURE update_fa_line_item(p_api_version IN NUMBER,
6240 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
6241 x_return_status OUT NOCOPY VARCHAR2,
6242 x_msg_count OUT NOCOPY NUMBER,
6243 x_msg_data OUT NOCOPY VARCHAR2,
6244 p_lty_code IN OKC_LINE_STYLES_V.LTY_CODE%TYPE,
6245 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
6246 p_clev_rec IN clev_rec_type,
6247 p_klev_rec IN klev_rec_type,
6248 p_cimv_rec IN cimv_rec_type,
6249 p_talv_rec IN talv_rec_type,
6250 x_clev_rec OUT NOCOPY clev_rec_type,
6251 x_klev_rec OUT NOCOPY klev_rec_type,
6252 x_cimv_rec OUT NOCOPY cimv_rec_type,
6253 x_talv_rec OUT NOCOPY talv_rec_type) IS
6254 l_clev_rec clev_rec_type;
6255 l_klev_rec klev_rec_type;
6256 l_cimv_rec cimv_rec_type;
6257 l_talv_rec talv_rec_type;
6258 l_trxv_rec trxv_rec_type;
6259 i NUMBER := 0;
6260 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
6261 ln_dummy NUMBER := 0;
6262 lv_dummy VARCHAR2(3);
6263 ln_tas_id OKL_TRX_ASSETS.ID%TYPE;
6264 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_FA_LINE_ITEM';
6265 BEGIN
6266 x_return_status := OKL_API.G_RET_STS_SUCCESS;
6267 -- Call start_activity to create savepoint, check compatibility
6268 -- and initialize message list
6269 x_return_status := OKL_API.START_ACTIVITY (
6270 l_api_name
6271 ,p_init_msg_list
6272 ,'_PVT'
6273 ,x_return_status);
6274 -- Check if activity started successfully
6275 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6276 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6277 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6278 RAISE OKL_API.G_EXCEPTION_ERROR;
6279 END IF;
6280 -- Check the cle_id that is of the top Fin Asset line
6281 validate_cle_lse_id(p_clev_rec => p_clev_rec,
6282 p_lty_code => p_lty_code,
6283 x_lty_code => l_lty_code,
6284 x_return_status => x_return_status);
6285 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6286 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6287 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6288 RAISE OKL_API.G_EXCEPTION_ERROR;
6289 END IF;
6290 -- since Fixed Assets Line is a sub line of Fin Asset line we have to check weather
6291 -- which line are creating under which line
6292 IF l_lty_code = G_FIN_LINE_LTY_CODE THEN
6293 OKL_CONTRACT_PUB.update_contract_line(p_api_version => p_api_version,
6294 p_init_msg_list => p_init_msg_list,
6295 x_return_status => x_return_status,
6296 x_msg_count => x_msg_count,
6297 x_msg_data => x_msg_data,
6298 p_clev_rec => p_clev_rec,
6299 p_klev_rec => p_klev_rec,
6300 x_clev_rec => x_clev_rec,
6301 x_klev_rec => x_klev_rec);
6302 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6303 OKL_API.set_message(p_app_name => G_APP_NAME,
6304 p_msg_name => G_UPDATING_FA_LINE);
6305 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6306 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6307 OKL_API.set_message(p_app_name => G_APP_NAME,
6308 p_msg_name => G_UPDATING_FA_LINE);
6309 RAISE OKL_API.G_EXCEPTION_ERROR;
6310 END IF;
6311 l_cimv_rec := p_cimv_rec;
6312 IF l_cimv_rec.cle_id <> x_clev_rec.id THEN
6313 OKL_API.set_message(p_app_name => G_APP_NAME,
6314 p_msg_name => G_ITEM_RECORD);
6315 RAISE OKL_API.G_EXCEPTION_ERROR;
6316 END IF;
6317 IF l_cimv_rec.dnz_chr_id <> x_clev_rec.dnz_chr_id THEN
6318 OKL_API.set_message(p_app_name => G_APP_NAME,
6319 p_msg_name => G_ITEM_RECORD);
6320 RAISE OKL_API.G_EXCEPTION_ERROR;
6321 END IF;
6322 -- Creation of Item Record for the above record information
6323 OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version => p_api_version,
6324 p_init_msg_list => p_init_msg_list,
6325 x_return_status => x_return_status,
6326 x_msg_count => x_msg_count,
6327 x_msg_data => x_msg_data,
6328 p_cimv_rec => l_cimv_rec,
6329 x_cimv_rec => x_cimv_rec);
6330 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6331 OKL_API.set_message(p_app_name => G_APP_NAME,
6332 p_msg_name => G_UPDATING_FA_ITEM);
6333 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6334 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6335 OKL_API.set_message(p_app_name => G_APP_NAME,
6336 p_msg_name => G_UPDATING_FA_ITEM);
6337 RAISE OKL_API.G_EXCEPTION_ERROR;
6338 END IF;
6339 -- x_clev_rec := l_clev_rec;
6340 -- We commented the same out because does not make sense
6341 -- because we are now populating the txl assets in both the cases
6342 -- i.e., when the OKC_K_ITEMS.OBJECT1_ID1 and OBJECT1_ID2 is null or not null
6343 -- IF (x_cimv_rec.object1_id1 IS NULL OR
6344 -- x_cimv_rec.object1_id1 = OKL_API.G_MISS_CHAR) AND
6345 -- (x_cimv_rec.object1_id2 IS NULL OR
6346 -- x_cimv_rec.object1_id2 = OKL_API.G_MISS_CHAR) THEN
6347 validate_kle_id(p_klev_rec => x_klev_rec,
6348 x_record_exists => lv_dummy,
6349 x_return_status => x_return_status);
6350 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6351 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6352 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6353 RAISE OKL_API.G_EXCEPTION_ERROR;
6354 END IF;
6355 IF (lv_dummy IS NOT NUll OR
6356 lv_dummy <> OKL_API.G_MISS_CHAR) THEN
6357 IF p_talv_rec.kle_id <> x_klev_rec.id THEN
6358 OKL_API.set_message(p_app_name => G_APP_NAME,
6359 p_msg_name => G_KLE_ID);
6360 RAISE OKL_API.G_EXCEPTION_ERROR;
6361 END IF;
6362 update_asset_lines(p_api_version => p_api_version,
6363 p_init_msg_list => p_init_msg_list,
6364 x_return_status => x_return_status,
6365 x_msg_count => x_msg_count,
6366 x_msg_data => x_msg_data,
6367 p_talv_rec => p_talv_rec,
6368 x_talv_rec => x_talv_rec);
6369 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6370 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6371 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6372 RAISE OKL_API.G_EXCEPTION_ERROR;
6373 END IF;
6374 ELSE
6375 OKL_API.set_message(p_app_name => G_APP_NAME,
6376 p_msg_name => G_KLE_ID);
6377 RAISE OKL_API.G_EXCEPTION_ERROR;
6378 END IF;
6379 -- END IF;
6380 ELSE
6381 OKL_API.set_message(p_app_name => G_APP_NAME,
6382 p_msg_name => G_LINE_STYLE);
6383 RAISE OKL_API.G_EXCEPTION_ERROR;
6384 END IF;
6385 -- x_clev_rec := l_clev_rec;
6386 OKL_API.END_ACTIVITY (x_msg_count,
6387 x_msg_data );
6388 EXCEPTION
6389 WHEN OKL_API.G_EXCEPTION_ERROR THEN
6390 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6391 l_api_name,
6392 G_PKG_NAME,
6393 'OKL_API.G_RET_STS_ERROR',
6394 x_msg_count,
6395 x_msg_data,
6396 '_PVT');
6397 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6398 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6399 l_api_name,
6400 G_PKG_NAME,
6401 'OKL_API.G_RET_STS_UNEXP_ERROR',
6402 x_msg_count,
6403 x_msg_data,
6404 '_PVT');
6405 WHEN OTHERS THEN
6406 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6407 l_api_name,
6408 G_PKG_NAME,
6409 'OTHERS',
6410 x_msg_count,
6411 x_msg_data,
6412 '_PVT');
6413 END update_fa_line_item;
6414 -------------------------------------------------------------------------------------------------
6415 PROCEDURE create_addon_line_item_rec(p_api_version IN NUMBER,
6416 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
6417 x_return_status OUT NOCOPY VARCHAR2,
6418 x_msg_count OUT NOCOPY NUMBER,
6419 x_msg_data OUT NOCOPY VARCHAR2,
6420 p_lty_code IN OKC_LINE_STYLES_V.LTY_CODE%TYPE,
6421 p_clev_rec IN clev_rec_type,
6422 p_klev_rec IN klev_rec_type,
6423 p_cimv_rec IN cimv_rec_type,
6424 x_clev_rec OUT NOCOPY clev_rec_type,
6425 x_klev_rec OUT NOCOPY klev_rec_type,
6426 x_cimv_rec OUT NOCOPY cimv_rec_type) IS
6427 l_clev_rec clev_rec_type;
6428 r_clev_rec clev_rec_type;
6429 l_cimv_rec cimv_rec_type;
6430 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
6431 i NUMBER := 0;
6432 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_AO_LNE_ITEM';
6433 ln_display_sequence OKC_K_LINES_V.DISPLAY_SEQUENCE%TYPE := 0;
6434 ln_num_of_items OKC_K_ITEMS.NUMBER_OF_ITEMS%TYPE := 0;
6435
6436 CURSOR get_dis_seq_qty(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
6437 P_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
6438 SELECT cle.display_sequence,
6439 cim.number_of_items
6440 FROM okc_line_styles_b lse2,
6441 okc_line_styles_b lse1,
6442 okc_k_items cim,
6443 okc_k_lines_b cle
6444 WHERE cle.id = p_cle_id
6445 AND cle.dnz_chr_id = p_dnz_chr_id
6446 AND cle.id = cim.cle_id
6447 AND cim.dnz_chr_id = cle.dnz_chr_id
6448 AND lse1.id = cle.lse_id
6449 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
6450 AND lse1.lse_parent_id = lse2.id
6451 AND lse2.lty_code = G_FIN_LINE_LTY_CODE;
6452 BEGIN
6453 x_return_status := OKL_API.G_RET_STS_SUCCESS;
6454 -- Call start_activity to create savepoint, check compatibility
6455 -- and initialize message list
6456 x_return_status := OKL_API.START_ACTIVITY (l_api_name
6457 ,p_init_msg_list
6458 ,'_PVT'
6459 ,x_return_status);
6460 -- Check if activity started successfully
6461 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6462 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6463 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6464 RAISE OKL_API.G_EXCEPTION_ERROR;
6465 END IF;
6466 -- Check the cle_id that is of the top Model line
6467 validate_cle_lse_id(p_clev_rec => p_clev_rec,
6468 p_lty_code => p_lty_code,
6469 x_lty_code => l_lty_code,
6470 x_return_status => x_return_status);
6471 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6472 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6473 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6474 RAISE OKL_API.G_EXCEPTION_ERROR;
6475 END IF;
6476 -- since Add on is a sub line of Model line we have to check weather
6477 -- which line are creating under which line
6478 IF l_lty_code = G_MODEL_LINE_LTY_CODE THEN
6479 r_clev_rec := p_clev_rec;
6480 IF (p_clev_rec.sts_code IS NULL OR
6481 p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
6482 x_return_status := get_sts_code(p_dnz_chr_id => null,
6483 p_cle_id => p_clev_rec.cle_id,
6484 x_sts_code => r_clev_rec.sts_code);
6485 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6486 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6487 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6488 RAISE OKL_API.G_EXCEPTION_ERROR;
6489 END IF;
6490 END IF;
6491 IF (p_clev_rec.end_date IS NULL OR
6492 p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
6493 x_return_status := get_end_date(p_dnz_chr_id => null,
6494 p_cle_id => p_clev_rec.cle_id,
6495 x_end_date => r_clev_rec.end_date);
6496 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6497 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6498 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6499 RAISE OKL_API.G_EXCEPTION_ERROR;
6500 END IF;
6501 END IF;
6502 IF (p_clev_rec.start_date IS NULL OR
6503 p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
6504 x_return_status := get_start_date(p_dnz_chr_id => null,
6505 p_cle_id => p_clev_rec.cle_id,
6506 x_start_date => r_clev_rec.start_date);
6507 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6508 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6509 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6510 RAISE OKL_API.G_EXCEPTION_ERROR;
6511 END IF;
6512 END IF;
6513 IF (p_clev_rec.currency_code IS NULL OR
6514 p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
6515 x_return_status := get_currency_code(p_dnz_chr_id => null,
6516 p_cle_id => p_clev_rec.cle_id,
6517 x_currency_code => r_clev_rec.currency_code);
6518 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6519 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6520 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6521 RAISE OKL_API.G_EXCEPTION_ERROR;
6522 END IF;
6523 END IF;
6524 OPEN get_dis_seq_qty(r_clev_rec.cle_id,
6525 r_clev_rec.dnz_chr_id);
6526 IF get_dis_seq_qty%NOTFOUND THEN
6527 OKL_API.set_message(p_app_name => G_APP_NAME,
6528 p_msg_name => G_LINE_RECORD);
6529 RAISE OKL_API.G_EXCEPTION_ERROR;
6530 END IF;
6531 FETCH get_dis_seq_qty INTO ln_display_sequence,
6532 ln_num_of_items;
6533 CLOSE get_dis_seq_qty;
6534 IF (p_clev_rec.display_sequence IS NULL OR
6535 p_clev_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
6536 r_clev_rec.display_sequence := ln_display_sequence + 1;
6537 END IF;
6538 -- Calling the Process
6539 OKL_CONTRACT_PUB.create_contract_line(p_api_version => p_api_version,
6540 p_init_msg_list => p_init_msg_list,
6541 x_return_status => x_return_status,
6542 x_msg_count => x_msg_count,
6543 x_msg_data => x_msg_data,
6544 p_clev_rec => r_clev_rec,
6545 p_klev_rec => p_klev_rec,
6546 x_clev_rec => x_clev_rec,
6547 x_klev_rec => x_klev_rec);
6548 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6549 OKL_API.set_message(p_app_name => G_APP_NAME,
6550 p_msg_name => G_CREATION_ADDON_LINE);
6551 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6552 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6553 OKL_API.set_message(p_app_name => G_APP_NAME,
6554 p_msg_name => G_CREATION_ADDON_LINE);
6555 RAISE OKL_API.G_EXCEPTION_ERROR;
6556 END IF;
6557 l_cimv_rec := p_cimv_rec;
6558 l_cimv_rec.cle_id := x_clev_rec.id;
6559 l_cimv_rec.dnz_chr_id := x_clev_rec.dnz_chr_id;
6560 l_cimv_rec.jtot_object1_code := 'OKX_SYSITEM';
6561 -- Check the number of items
6562 IF l_cimv_rec.number_of_items <> ln_num_of_items THEN
6563 OKL_API.set_message(p_app_name => G_APP_NAME,
6564 p_msg_name => G_ITEM_RECORD);
6565 RAISE OKL_API.G_EXCEPTION_ERROR;
6566 END IF;
6567 -- Creation of Item Record for the above record information
6568 OKL_OKC_MIGRATION_PVT.create_contract_item(p_api_version => p_api_version,
6569 p_init_msg_list => p_init_msg_list,
6570 x_return_status => x_return_status,
6571 x_msg_count => x_msg_count,
6572 x_msg_data => x_msg_data,
6573 p_cimv_rec => l_cimv_rec,
6574 x_cimv_rec => x_cimv_rec);
6575 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6576 OKL_API.set_message(p_app_name => G_APP_NAME,
6577 p_msg_name => G_CREATION_ADDON_ITEM);
6578 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6579 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6580 OKL_API.set_message(p_app_name => G_APP_NAME,
6581 p_msg_name => G_CREATION_ADDON_ITEM);
6582 RAISE OKL_API.G_EXCEPTION_ERROR;
6583 END IF;
6584 ELSE
6585 OKL_API.set_message(p_app_name => G_APP_NAME,
6586 p_msg_name => G_LINE_STYLE);
6587 RAISE OKL_API.G_EXCEPTION_ERROR;
6588 END IF;
6589 OKL_API.END_ACTIVITY (x_msg_count,
6590 x_msg_data );
6591 EXCEPTION
6592 WHEN OKL_API.G_EXCEPTION_ERROR THEN
6593 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6594 l_api_name,
6595 G_PKG_NAME,
6596 'OKL_API.G_RET_STS_ERROR',
6597 x_msg_count,
6598 x_msg_data,
6599 '_PVT');
6600 IF get_dis_seq_qty%ISOPEN THEN
6601 CLOSE get_dis_seq_qty;
6602 END IF;
6603 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6604 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6605 l_api_name,
6606 G_PKG_NAME,
6607 'OKL_API.G_RET_STS_UNEXP_ERROR',
6608 x_msg_count,
6609 x_msg_data,
6610 '_PVT');
6611 WHEN OTHERS THEN
6612 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6613 l_api_name,
6614 G_PKG_NAME,
6615 'OTHERS',
6616 x_msg_count,
6617 x_msg_data,
6618 '_PVT');
6619 IF get_dis_seq_qty%ISOPEN THEN
6620 CLOSE get_dis_seq_qty;
6621 END IF;
6622 END create_addon_line_item_rec;
6623 -----------------------------------------------------------------------------------------------------------
6624 PROCEDURE Update_addon_line_item_rec(p_api_version IN NUMBER,
6625 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
6626 x_return_status OUT NOCOPY VARCHAR2,
6627 x_msg_count OUT NOCOPY NUMBER,
6628 x_msg_data OUT NOCOPY VARCHAR2,
6629 p_lty_code IN OKC_LINE_STYLES_V.LTY_CODE%TYPE,
6630 p_clev_rec IN clev_rec_type,
6631 p_klev_rec IN klev_rec_type,
6632 p_cimv_rec IN cimv_rec_type,
6633 x_clev_rec OUT NOCOPY clev_rec_type,
6634 x_klev_rec OUT NOCOPY klev_rec_type,
6635 x_cimv_rec OUT NOCOPY cimv_rec_type) IS
6636 l_clev_rec clev_rec_type;
6637 l_klev_rec klev_rec_type;
6638 l_cimv_rec cimv_rec_type;
6639 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
6640 i NUMBER;
6641 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_AO_LNE_ITEM';
6642 ln_display_sequence OKC_K_LINES_V.DISPLAY_SEQUENCE%TYPE;
6643 ln_num_of_items OKC_K_ITEMS.NUMBER_OF_ITEMS%TYPE;
6644
6645 CURSOR get_dis_seq_qty(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
6646 P_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
6647 SELECT cle.display_sequence,
6648 cim.number_of_items
6649 FROM okc_line_styles_b lse2,
6650 okc_line_styles_b lse1,
6651 okc_k_items cim,
6652 okc_k_lines_b cle
6653 WHERE cle.id = p_cle_id
6654 AND cle.dnz_chr_id = p_dnz_chr_id
6655 AND cle.id = cim.cle_id
6656 AND cim.dnz_chr_id = cle.dnz_chr_id
6657 AND lse1.id = cle.lse_id
6658 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
6659 AND lse1.lse_parent_id = lse2.id
6660 AND lse2.lty_code = G_FIN_LINE_LTY_CODE;
6661
6662 BEGIN
6663 x_return_status := OKL_API.G_RET_STS_SUCCESS;
6664 -- Call start_activity to create savepoint, check compatibility
6665 -- and initialize message list
6666 x_return_status := OKL_API.START_ACTIVITY (l_api_name
6667 ,p_init_msg_list
6668 ,'_PVT'
6669 ,x_return_status);
6670 -- Check if activity started successfully
6671 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6672 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6673 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6674 RAISE OKL_API.G_EXCEPTION_ERROR;
6675 END IF;
6676 validate_cle_lse_id(p_clev_rec => p_clev_rec,
6677 p_lty_code => p_lty_code,
6678 x_lty_code => l_lty_code,
6679 x_return_status => x_return_status);
6680 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6681 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6682 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6683 RAISE OKL_API.G_EXCEPTION_ERROR;
6684 END IF;
6685 x_return_status := get_rec_klev(p_clev_rec.id,
6686 l_klev_rec);
6687 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6688 OKL_API.set_message(p_app_name => G_APP_NAME,
6689 p_msg_name => G_FETCHING_INFO,
6690 p_token1 => G_REC_NAME_TOKEN,
6691 p_token1_value => 'OKL_K_LINES_V Record');
6692 RAISE G_EXCEPTION_HALT_VALIDATION;
6693 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6694 OKL_API.set_message(p_app_name => G_APP_NAME,
6695 p_msg_name => G_FETCHING_INFO,
6696 p_token1 => G_REC_NAME_TOKEN,
6697 p_token1_value => 'OKL_K_LINES_V Record');
6698 RAISE G_EXCEPTION_HALT_VALIDATION;
6699 END IF;
6700 -- since Add on is a sub line of Model line we have to check weather
6701 -- which line are creating under which line
6702 IF l_lty_code = G_MODEL_LINE_LTY_CODE THEN
6703 -- Now the all the records are there we can create ADD on Line
6704 -- Calling the Process
6705 l_clev_rec := p_clev_rec;
6706 OPEN get_dis_seq_qty(l_clev_rec.cle_id,
6707 l_clev_rec.dnz_chr_id);
6708 IF get_dis_seq_qty%NOTFOUND THEN
6709 OKL_API.set_message(p_app_name => G_APP_NAME,
6710 p_msg_name => G_LINE_RECORD);
6711 RAISE OKL_API.G_EXCEPTION_ERROR;
6712 END IF;
6713 FETCH get_dis_seq_qty INTO ln_display_sequence,
6714 ln_num_of_items;
6715 CLOSE get_dis_seq_qty;
6716 IF (p_clev_rec.display_sequence IS NULL OR
6717 p_clev_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
6718 l_clev_rec.display_sequence := ln_display_sequence + 1;
6719 END IF;
6720 OKL_CONTRACT_PUB.update_contract_line(p_api_version => p_api_version,
6721 p_init_msg_list => p_init_msg_list,
6722 x_return_status => x_return_status,
6723 x_msg_count => x_msg_count,
6724 x_msg_data => x_msg_data,
6725 p_clev_rec => l_clev_rec,
6726 p_klev_rec => l_klev_rec,
6727 x_clev_rec => x_clev_rec,
6728 x_klev_rec => x_klev_rec);
6729 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6730 OKL_API.set_message(p_app_name => G_APP_NAME,
6731 p_msg_name => G_UPDATING_ADDON_LINE);
6732 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6733 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6734 OKL_API.set_message(p_app_name => G_APP_NAME,
6735 p_msg_name => G_UPDATING_ADDON_LINE);
6736 RAISE OKL_API.G_EXCEPTION_ERROR;
6737 END IF;
6738 l_cimv_rec := p_cimv_rec;
6739 x_return_status := get_rec_cimv(x_clev_rec.id,
6740 x_clev_rec.dnz_chr_id,
6741 l_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_FETCHING_INFO,
6745 p_token1 => G_REC_NAME_TOKEN,
6746 p_token1_value => 'OKC_K_ITEMS_V Record');
6747 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6748 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6749 OKL_API.set_message(p_app_name => G_APP_NAME,
6750 p_msg_name => G_FETCHING_INFO,
6751 p_token1 => G_REC_NAME_TOKEN,
6752 p_token1_value => 'OKC_K_ITEMS_V Record');
6753 RAISE OKL_API.G_EXCEPTION_ERROR;
6754 END IF;
6755 IF l_cimv_rec.cle_id <> x_clev_rec.id THEN
6756 OKL_API.set_message(p_app_name => G_APP_NAME,
6757 p_msg_name => G_ITEM_RECORD);
6758 RAISE OKL_API.G_EXCEPTION_ERROR;
6759 END IF;
6760 IF l_cimv_rec.dnz_chr_id <> x_clev_rec.dnz_chr_id THEN
6761 OKL_API.set_message(p_app_name => G_APP_NAME,
6762 p_msg_name => G_ITEM_RECORD);
6763 RAISE OKL_API.G_EXCEPTION_ERROR;
6764 END IF;
6765 -- We have the below has to been given from the screen
6766 l_cimv_rec.object1_id1 := p_cimv_rec.object1_id1;
6767 l_cimv_rec.object1_id2 := p_cimv_rec.object1_id2;
6768 l_cimv_rec.number_of_items := p_cimv_rec.number_of_items;
6769 -- Check the number of items
6770 IF l_cimv_rec.number_of_items <> ln_num_of_items THEN
6771 OKL_API.set_message(p_app_name => G_APP_NAME,
6772 p_msg_name => G_ITEM_RECORD);
6773 RAISE OKL_API.G_EXCEPTION_ERROR;
6774 END IF;
6775 -- Creation of Item Record for the above record information
6776 OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version => p_api_version,
6777 p_init_msg_list => p_init_msg_list,
6778 x_return_status => x_return_status,
6779 x_msg_count => x_msg_count,
6780 x_msg_data => x_msg_data,
6781 p_cimv_rec => l_cimv_rec,
6782 x_cimv_rec => x_cimv_rec);
6783 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6784 OKL_API.set_message(p_app_name => G_APP_NAME,
6785 p_msg_name => G_UPDATING_ADDON_ITEM);
6786 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6787 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6788 OKL_API.set_message(p_app_name => G_APP_NAME,
6789 p_msg_name => G_UPDATING_ADDON_ITEM);
6790 RAISE OKL_API.G_EXCEPTION_ERROR;
6791 END IF;
6792 ELSE
6793 OKL_API.set_message(p_app_name => G_APP_NAME,
6794 p_msg_name => G_LINE_STYLE);
6795 RAISE OKL_API.G_EXCEPTION_ERROR;
6796 END IF;
6797 OKL_API.END_ACTIVITY (x_msg_count,
6798 x_msg_data );
6799 EXCEPTION
6800 WHEN OKL_API.G_EXCEPTION_ERROR THEN
6801 IF get_dis_seq_qty%ISOPEN THEN
6802 CLOSE get_dis_seq_qty;
6803 END IF;
6804 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6805 l_api_name,
6806 G_PKG_NAME,
6807 'OKL_API.G_RET_STS_ERROR',
6808 x_msg_count,
6809 x_msg_data,
6810 '_PVT');
6811 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6812 IF get_dis_seq_qty%ISOPEN THEN
6813 CLOSE get_dis_seq_qty;
6814 END IF;
6815 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6816 l_api_name,
6817 G_PKG_NAME,
6818 'OKL_API.G_RET_STS_UNEXP_ERROR',
6819 x_msg_count,
6820 x_msg_data,
6821 '_PVT');
6822 WHEN OTHERS THEN
6823 IF get_dis_seq_qty%ISOPEN THEN
6824 CLOSE get_dis_seq_qty;
6825 END IF;
6826 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6827 l_api_name,
6828 G_PKG_NAME,
6829 'OTHERS',
6830 x_msg_count,
6831 x_msg_data,
6832 '_PVT');
6833 END Update_addon_line_item_rec;
6834 -------------------------------------------------------------------------------------------------------
6835 Procedure create_addon_line_rec(
6836 p_api_version IN NUMBER,
6837 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
6838 x_return_status OUT NOCOPY VARCHAR2,
6839 x_msg_count OUT NOCOPY NUMBER,
6840 x_msg_data OUT NOCOPY VARCHAR2,
6841 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
6842 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
6843 p_clev_rec IN clev_rec_type,
6844 p_klev_rec IN klev_rec_type,
6845 p_cimv_rec IN cimv_rec_type,
6846 x_clev_rec OUT NOCOPY clev_rec_type,
6847 x_klev_rec OUT NOCOPY klev_rec_type,
6848 x_cimv_rec OUT NOCOPY cimv_rec_type) IS
6849 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_AO_LNE_REC';
6850 l_clev_rec clev_rec_type;
6851 -- Variables for validation of line style
6852 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
6853 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
6854 ln_fa_id OKC_K_LINES_V.ID%TYPE;
6855
6856 CURSOR get_fa_id(p_top_line OKC_K_LINES_V.ID%TYPE,
6857 p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE)
6858 IS
6859 SELECT cle.id
6860 FROM okc_subclass_top_line stl,
6861 okc_line_styles_b lse2,
6862 okc_line_styles_b lse1,
6863 okc_k_lines_b cle
6864 WHERE cle.dnz_chr_id = p_dnz_chr_id
6865 AND cle.lse_id = lse1.id
6866 AND lse1.lty_code = G_FA_LINE_LTY_CODE
6867 AND lse1.lse_parent_id = lse2.id
6868 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
6869 AND lse2.id = stl.lse_id
6870 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE)
6871 AND cle.cle_id in (SELECT distinct to_char(cle.cle_id)
6872 FROM okc_subclass_top_line stl,
6873 okc_line_styles_b lse2,
6874 okc_line_styles_b lse1,
6875 okc_k_lines_b cle
6876 WHERE cle.id = p_top_line
6877 AND cle.dnz_chr_id = p_dnz_chr_id
6878 AND cle.lse_id = lse1.id
6879 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
6880 AND lse1.lse_parent_id = lse2.id
6881 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
6882 AND lse2.id = stl.lse_id
6883 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE));
6884 BEGIN
6885 x_return_status := OKL_API.G_RET_STS_SUCCESS;
6886 -- Call start_activity to create savepoint, check compatibility
6887 -- and initialize message list
6888 x_return_status := OKL_API.START_ACTIVITY (
6889 l_api_name
6890 ,p_init_msg_list
6891 ,'_PVT'
6892 ,x_return_status);
6893 -- Check if activity started successfully
6894 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6895 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6896 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6897 RAISE OKL_API.G_EXCEPTION_ERROR;
6898 END IF;
6899 -- To Check We Got the Valid info
6900 IF UPPER(p_new_yn) NOT IN ('Y','N') OR
6901 (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
6902 UPPER(p_new_yn) IS NULL) THEN
6903 OKL_API.set_message(p_app_name => G_APP_NAME,
6904 p_msg_name => G_INVALID_YN,
6905 p_token1 => G_COL_NAME_TOKEN,
6906 p_token1_value => 'p_new_yn');
6907 -- Halt Validation
6908 RAISE OKL_API.G_EXCEPTION_ERROR;
6909 END IF;
6910 -- Validate to see if the asset_number given is not null
6911 -- and also Validate asset_number does not exists
6912 -- in OKL_TXL_ASSETS_V
6913 OPEN get_fa_id(p_top_line => p_clev_rec.cle_id,
6914 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
6915 IF get_fa_id%NOTFOUND THEN
6916 OKL_API.set_message(p_app_name => G_APP_NAME,
6917 p_msg_name => G_LINE_RECORD);
6918 RAISE OKL_API.G_EXCEPTION_ERROR;
6919 END IF;
6920 FETCH get_fa_id INTO ln_fa_id;
6921 CLOSE get_fa_id;
6922
6923 IF UPPER(p_new_yn) = 'Y' THEN
6924 validate_new_ast_num_update(x_return_status => x_return_status,
6925 p_asset_number => p_asset_number,
6926 p_kle_id => ln_fa_id,
6927 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
6928 -- Check if activity started successfully
6929 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6930 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6931 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6932 RAISE OKL_API.G_EXCEPTION_ERROR;
6933 END IF;
6934 END IF;
6935 -- Validate Line Style id and get the line type code
6936 -- and line style type for further processing
6937 validate_lse_id(p_clev_rec => p_clev_rec,
6938 x_return_status => x_return_status,
6939 x_lty_code => l_lty_code,
6940 x_lse_type => l_lse_type);
6941 -- Check if activity started successfully
6942 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6943 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6944 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6945 RAISE OKL_API.G_EXCEPTION_ERROR;
6946 END IF;
6947 -- Validate the Dnz_Chr_id
6948 validate_dnz_chr_id(p_clev_rec => p_clev_rec,
6949 x_return_status => x_return_status);
6950 -- Check if activity started successfully
6951 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6952 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6953 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6954 RAISE OKL_API.G_EXCEPTION_ERROR;
6955 END IF;
6956 -- Now we are creating Add on Line
6957 -- Here we have have Dnz_Chr_id ,lse_id and cle_id
6958 -- The Record Should have the cle_id
6959 -- if the given line style is Add on Line
6960 -- Since there could be mutilple records we have to accept
6961 l_clev_rec := p_clev_rec;
6962 IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
6963 l_clev_rec.chr_id IS NULL) AND
6964 (l_clev_rec.dnz_chr_id IS NOT NULL OR
6965 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
6966 (l_clev_rec.cle_id IS NOT NULL OR
6967 l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
6968 l_lty_code = G_ADDON_LINE_LTY_CODE AND
6969 l_lse_type = G_SLS_TYPE THEN
6970 create_addon_line_item_rec(p_api_version => p_api_version,
6971 p_init_msg_list => p_init_msg_list,
6972 x_return_status => x_return_status,
6973 x_msg_count => x_msg_count,
6974 x_msg_data => x_msg_data,
6975 p_lty_code => l_lty_code,
6976 p_clev_rec => p_clev_rec,
6977 p_klev_rec => p_klev_rec,
6978 p_cimv_rec => p_cimv_rec,
6979 x_clev_rec => x_clev_rec,
6980 x_klev_rec => x_klev_rec,
6981 x_cimv_rec => x_cimv_rec);
6982 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6983 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6984 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6985 RAISE OKL_API.G_EXCEPTION_ERROR;
6986 END IF;
6987 ELSE
6988 OKL_API.set_message(p_app_name => G_APP_NAME,
6989 p_msg_name => G_INVALID_CRITERIA,
6990 p_token1 => G_COL_NAME_TOKEN,
6991 p_token1_value => 'Add on line');
6992 x_return_status := OKL_API.G_RET_STS_ERROR;
6993 RAISE OKL_API.G_EXCEPTION_ERROR;
6994 END IF;
6995 OKL_API.END_ACTIVITY (x_msg_count,
6996 x_msg_data );
6997 EXCEPTION
6998 WHEN OKL_API.G_EXCEPTION_ERROR THEN
6999 IF get_fa_id%ISOPEN THEN
7000 CLOSE get_fa_id;
7001 END IF;
7002 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7003 l_api_name,
7004 G_PKG_NAME,
7005 'OKL_API.G_RET_STS_ERROR',
7006 x_msg_count,
7007 x_msg_data,
7008 '_PVT');
7009 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7010 IF get_fa_id%ISOPEN THEN
7011 CLOSE get_fa_id;
7012 END IF;
7013 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7014 l_api_name,
7015 G_PKG_NAME,
7016 'OKL_API.G_RET_STS_UNEXP_ERROR',
7017 x_msg_count,
7018 x_msg_data,
7019 '_PVT');
7020 WHEN OTHERS THEN
7021 IF get_fa_id%ISOPEN THEN
7022 CLOSE get_fa_id;
7023 END IF;
7024 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7025 l_api_name,
7026 G_PKG_NAME,
7027 'OTHERS',
7028 x_msg_count,
7029 x_msg_data,
7030 '_PVT');
7031 END create_addon_line_rec;
7032 -------------------------------------------------------------------------------------------------------
7033 Procedure Update_addon_line_rec(
7034 p_api_version IN NUMBER,
7035 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
7036 x_return_status OUT NOCOPY VARCHAR2,
7037 x_msg_count OUT NOCOPY NUMBER,
7038 x_msg_data OUT NOCOPY VARCHAR2,
7039 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
7040 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
7041 p_clev_rec IN clev_rec_type,
7042 p_klev_rec IN klev_rec_type,
7043 p_cimv_rec IN cimv_rec_type,
7044 x_clev_rec OUT NOCOPY clev_rec_type,
7045 x_klev_rec OUT NOCOPY klev_rec_type,
7046 x_cimv_rec OUT NOCOPY cimv_rec_type) IS
7047 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_AO_LNE_REC';
7048 l_clev_rec clev_rec_type;
7049 -- Variables for validation of line style
7050 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
7051 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
7052 ln_fa_id OKC_K_LINES_V.ID%TYPE;
7053
7054 CURSOR get_fa_id(p_top_line OKC_K_LINES_V.ID%TYPE,
7055 p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE)
7056 IS
7057 SELECT cle.id
7058 FROM okc_subclass_top_line stl,
7059 okc_line_styles_b lse2,
7060 okc_line_styles_b lse1,
7061 okc_k_lines_b cle
7062 WHERE cle.dnz_chr_id = p_dnz_chr_id
7063 AND cle.lse_id = lse1.id
7064 AND lse1.lty_code = G_FA_LINE_LTY_CODE
7065 AND lse1.lse_parent_id = lse2.id
7066 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
7067 AND lse2.id = stl.lse_id
7068 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE)
7069 AND cle.cle_id in (SELECT distinct to_char(cle.cle_id)
7070 FROM okc_subclass_top_line stl,
7071 okc_line_styles_b lse2,
7072 okc_line_styles_b lse1,
7073 okc_k_lines_b cle
7074 WHERE cle.id = p_top_line
7075 AND cle.dnz_chr_id = p_dnz_chr_id
7076 AND cle.lse_id = lse1.id
7077 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
7078 AND lse1.lse_parent_id = lse2.id
7079 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
7080 AND lse2.id = stl.lse_id
7081 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE));
7082 BEGIN
7083 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7084 -- Call start_activity to create savepoint, check compatibility
7085 -- and initialize message list
7086 x_return_status := OKL_API.START_ACTIVITY (
7087 l_api_name
7088 ,p_init_msg_list
7089 ,'_PVT'
7090 ,x_return_status);
7091 -- Check if activity started successfully
7092 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7093 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7094 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7095 RAISE OKL_API.G_EXCEPTION_ERROR;
7096 END IF;
7097 l_clev_rec := p_clev_rec;
7098 x_return_status := get_sts_code(p_dnz_chr_id => null,
7099 p_cle_id => l_clev_rec.cle_id,
7100 x_sts_code => l_clev_rec.sts_code);
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 validate_sts_code(p_clev_rec => l_clev_rec,
7107 x_return_status => x_return_status);
7108 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7109 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7110 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7111 RAISE OKL_API.G_EXCEPTION_ERROR;
7112 END IF;
7113 OPEN get_fa_id(p_top_line => l_clev_rec.cle_id,
7114 p_dnz_chr_id => l_clev_rec.dnz_chr_id);
7115 IF get_fa_id%NOTFOUND THEN
7116 OKL_API.set_message(p_app_name => G_APP_NAME,
7117 p_msg_name => G_LINE_RECORD);
7118 RAISE OKL_API.G_EXCEPTION_ERROR;
7119 END IF;
7120 FETCH get_fa_id INTO ln_fa_id;
7121 CLOSE get_fa_id;
7122 -- To Check We Got the Valid info
7123 IF UPPER(p_new_yn) NOT IN ('Y','N') OR
7124 (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
7125 UPPER(p_new_yn) IS NULL) THEN
7126 OKL_API.set_message(p_app_name => G_APP_NAME,
7127 p_msg_name => G_INVALID_YN,
7128 p_token1 => G_COL_NAME_TOKEN,
7129 p_token1_value => 'p_new_yn');
7130 -- Halt Validation
7131 RAISE OKL_API.G_EXCEPTION_ERROR;
7132 END IF;
7133 -- Validate to see if the asset_number given is not null
7134 -- and also Validate asset_number does not exists
7135 -- in OKL_TXL_ASSETS_V
7136 IF UPPER(p_new_yn) = 'Y' THEN
7137 validate_new_ast_num_update(x_return_status => x_return_status,
7138 p_asset_number => p_asset_number,
7139 p_kle_id => ln_fa_id,
7140 p_dnz_chr_id => l_clev_rec.dnz_chr_id);
7141 -- Check if activity started successfully
7142 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7143 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7144 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7145 RAISE OKL_API.G_EXCEPTION_ERROR;
7146 END IF;
7147 END IF;
7148 x_return_status := get_lse_id(p_lty_code => G_ADDON_LINE_LTY_CODE,
7149 x_lse_id => l_clev_rec.lse_id);
7150 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7151 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7152 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7153 RAISE OKL_API.G_EXCEPTION_ERROR;
7154 END IF;
7155 -- Validate Line Style id and get the line type code
7156 -- and line style type for further processing
7157 validate_lse_id(p_clev_rec => l_clev_rec,
7158 x_return_status => x_return_status,
7159 x_lty_code => l_lty_code,
7160 x_lse_type => l_lse_type);
7161 -- Check if activity started successfully
7162 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7163 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7164 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7165 RAISE OKL_API.G_EXCEPTION_ERROR;
7166 END IF;
7167 -- Validate the Dnz_Chr_id
7168 validate_dnz_chr_id(p_clev_rec => l_clev_rec,
7169 x_return_status => x_return_status);
7170 -- Check if activity started successfully
7171 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7172 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7173 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7174 RAISE OKL_API.G_EXCEPTION_ERROR;
7175 END IF;
7176 -- Now we are updating Add on Line
7177 -- Here we have have Dnz_Chr_id ,lse_id and cle_id
7178 -- The Record Should have the cle_id
7179 -- if the given line style is Add on Line
7180 -- Since there could be mutilple records we have to accept
7181 IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
7182 l_clev_rec.chr_id IS NULL) AND
7183 (l_clev_rec.dnz_chr_id IS NOT NULL OR
7184 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
7185 (l_clev_rec.cle_id IS NOT NULL OR
7186 l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
7187 l_lty_code = G_ADDON_LINE_LTY_CODE AND
7188 l_lse_type = G_SLS_TYPE THEN
7189 update_addon_line_item_rec(p_api_version => p_api_version,
7190 p_init_msg_list => p_init_msg_list,
7191 x_return_status => x_return_status,
7192 x_msg_count => x_msg_count,
7193 x_msg_data => x_msg_data,
7194 p_lty_code => l_lty_code,
7195 p_clev_rec => l_clev_rec,
7196 p_klev_rec => p_klev_rec,
7197 p_cimv_rec => p_cimv_rec,
7198 x_clev_rec => x_clev_rec,
7199 x_klev_rec => x_klev_rec,
7200 x_cimv_rec => x_cimv_rec);
7201 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7202 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7203 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7204 RAISE OKL_API.G_EXCEPTION_ERROR;
7205 END IF;
7206 ELSE
7207 OKL_API.set_message(p_app_name => G_APP_NAME,
7208 p_msg_name => G_INVALID_CRITERIA,
7209 p_token1 => G_COL_NAME_TOKEN,
7210 p_token1_value => 'Add on line');
7211 x_return_status := OKL_API.G_RET_STS_ERROR;
7212 RAISE OKL_API.G_EXCEPTION_ERROR;
7213 END IF;
7214 OKL_API.END_ACTIVITY (x_msg_count,
7215 x_msg_data );
7216 EXCEPTION
7217 WHEN OKL_API.G_EXCEPTION_ERROR THEN
7218 IF get_fa_id%ISOPEN THEN
7219 CLOSE get_fa_id;
7220 END IF;
7221 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7222 l_api_name,
7223 G_PKG_NAME,
7224 'OKL_API.G_RET_STS_ERROR',
7225 x_msg_count,
7226 x_msg_data,
7227 '_PVT');
7228 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7229 IF get_fa_id%ISOPEN THEN
7230 CLOSE get_fa_id;
7231 END IF;
7232 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7233 l_api_name,
7234 G_PKG_NAME,
7235 'OKL_API.G_RET_STS_UNEXP_ERROR',
7236 x_msg_count,
7237 x_msg_data,
7238 '_PVT');
7239 WHEN OTHERS THEN
7240 IF get_fa_id%ISOPEN THEN
7241 CLOSE get_fa_id;
7242 END IF;
7243 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7244 l_api_name,
7245 G_PKG_NAME,
7246 'OTHERS',
7247 x_msg_count,
7248 x_msg_data,
7249 '_PVT');
7250 END Update_addon_line_rec;
7251 -------------------------------------------------------------------------------------------------------
7252 PROCEDURE delete_addon_line_rec(
7253 p_api_version IN NUMBER,
7254 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
7255 x_return_status OUT NOCOPY VARCHAR2,
7256 x_msg_count OUT NOCOPY NUMBER,
7257 x_msg_data OUT NOCOPY VARCHAR2,
7258 p_clev_rec IN clev_rec_type,
7259 p_klev_rec IN klev_rec_type,
7260 x_clev_rec OUT NOCOPY clev_rec_type) IS
7261 l_api_name CONSTANT VARCHAR2(30) := 'DEL_ADDON_REC';
7262 l_delete_clev_rec clev_rec_type;
7263 l_delete_klev_rec klev_rec_type;
7264 -- Variables for validation of line style
7265 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
7266 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
7267 BEGIN
7268 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7269 -- Call start_activity to create savepoint, check compatibility
7270 -- and initialize message list
7271 x_return_status := OKL_API.START_ACTIVITY (
7272 l_api_name
7273 ,p_init_msg_list
7274 ,'_PVT'
7275 ,x_return_status);
7276 -- Check if activity started successfully
7277 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7278 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7279 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7280 RAISE OKL_API.G_EXCEPTION_ERROR;
7281 END IF;
7282 OKL_API.init_msg_list(p_init_msg_list);
7283 l_delete_clev_rec := p_clev_rec;
7284 -- To Get the cle top Line Record
7285 x_return_status := get_rec_clev(p_clev_rec.id,
7286 l_delete_clev_rec);
7287 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7288 OKL_API.set_message(p_app_name => G_APP_NAME,
7289 p_msg_name => G_FETCHING_INFO,
7290 p_token1 => G_REC_NAME_TOKEN,
7291 p_token1_value => 'OKC_K_LINES_V Record');
7292 RAISE G_EXCEPTION_HALT_VALIDATION;
7293 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7294 OKL_API.set_message(p_app_name => G_APP_NAME,
7295 p_msg_name => G_FETCHING_INFO,
7296 p_token1 => G_REC_NAME_TOKEN,
7297 p_token1_value => 'OKC_K_LINES_V Record');
7298 RAISE G_EXCEPTION_HALT_VALIDATION;
7299 END IF;
7300 -- To Get the kle top Line Record
7301 x_return_status := get_rec_klev(p_clev_rec.id,
7302 l_delete_klev_rec);
7303 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7304 OKL_API.set_message(p_app_name => G_APP_NAME,
7305 p_msg_name => G_FETCHING_INFO,
7306 p_token1 => G_REC_NAME_TOKEN,
7307 p_token1_value => 'OKL_K_LINES_V Record');
7308 RAISE G_EXCEPTION_HALT_VALIDATION;
7309 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7310 OKL_API.set_message(p_app_name => G_APP_NAME,
7311 p_msg_name => G_FETCHING_INFO,
7312 p_token1 => G_REC_NAME_TOKEN,
7313 p_token1_value => 'OKL_K_LINES_V Record');
7314 RAISE G_EXCEPTION_HALT_VALIDATION;
7315 END IF;
7316 IF l_delete_klev_rec.id <> l_delete_clev_rec.id THEN
7317 OKL_API.set_message(p_app_name => G_APP_NAME,
7318 p_msg_name => G_LINE_RECORD);
7319 RAISE G_EXCEPTION_HALT_VALIDATION;
7320 END IF;
7321 validate_sts_code(p_clev_rec => l_delete_clev_rec,
7322 x_return_status => x_return_status);
7323 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7324 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7325 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7326 RAISE OKL_API.G_EXCEPTION_ERROR;
7327 END IF;
7328 -- Validate Line Style id and get the line type code
7329 -- and line style type for further processing
7330 validate_lse_id(p_clev_rec => l_delete_clev_rec,
7331 x_return_status => x_return_status,
7332 x_lty_code => l_lty_code,
7333 x_lse_type => l_lse_type);
7334 -- Check if activity started successfully
7335 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7336 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7337 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7338 RAISE OKL_API.G_EXCEPTION_ERROR;
7339 END IF;
7340 -- Validate the Dnz_Chr_id
7341 validate_dnz_chr_id(p_clev_rec => l_delete_clev_rec,
7342 x_return_status => x_return_status);
7343 -- Check if activity started successfully
7344 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7345 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7346 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7347 RAISE OKL_API.G_EXCEPTION_ERROR;
7348 END IF;
7349 -- Now we are deleting Add on Line
7350 -- Here we have have Dnz_Chr_id ,lse_id and cle_id
7351 -- The Record Should have the cle_id
7352 -- if the given line style is Add on Line
7353 -- Since there could be mutilple records we have to accept
7354 IF (l_delete_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
7355 l_delete_clev_rec.chr_id IS NULL) AND
7356 (l_delete_clev_rec.dnz_chr_id IS NOT NULL OR
7357 l_delete_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
7358 (l_delete_clev_rec.cle_id IS NOT NULL OR
7359 l_delete_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
7360 l_lty_code = G_ADDON_LINE_LTY_CODE AND
7361 l_lse_type = G_SLS_TYPE THEN
7362 OKL_CONTRACT_PUB.delete_contract_line(
7363 p_api_version => p_api_version,
7364 p_init_msg_list => p_init_msg_list,
7365 x_return_status => x_return_status,
7366 x_msg_count => x_msg_count,
7367 x_msg_data => x_msg_data,
7368 p_line_id => l_delete_clev_rec.id);
7369 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7370 OKL_API.set_message(p_app_name => G_APP_NAME,
7371 p_msg_name => G_DELETING_ADDON_LINE);
7372 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7373 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7374 OKL_API.set_message(p_app_name => G_APP_NAME,
7375 p_msg_name => G_DELETING_ADDON_LINE);
7376 RAISE OKL_API.G_EXCEPTION_ERROR;
7377 END IF;
7378 ELSE
7379 OKL_API.set_message(p_app_name => G_APP_NAME,
7380 p_msg_name => G_INVALID_CRITERIA,
7381 p_token1 => G_COL_NAME_TOKEN,
7382 p_token1_value => 'Add on line');
7383 x_return_status := OKL_API.G_RET_STS_ERROR;
7384 RAISE OKL_API.G_EXCEPTION_ERROR;
7385 END IF;
7386 -- We need to the below since we need to calculate the OEC again
7387 x_clev_rec := l_delete_clev_rec;
7388 OKL_API.END_ACTIVITY (x_msg_count,
7389 x_msg_data );
7390 EXCEPTION
7391 WHEN OKL_API.G_EXCEPTION_ERROR THEN
7392 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7393 l_api_name,
7394 G_PKG_NAME,
7395 'OKL_API.G_RET_STS_ERROR',
7396 x_msg_count,
7397 x_msg_data,
7398 '_PVT');
7399 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7400 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7401 l_api_name,
7402 G_PKG_NAME,
7403 'OKL_API.G_RET_STS_UNEXP_ERROR',
7404 x_msg_count,
7405 x_msg_data,
7406 '_PVT');
7407 WHEN OTHERS THEN
7408 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7409 l_api_name,
7410 G_PKG_NAME,
7411 'OTHERS',
7412 x_msg_count,
7413 x_msg_data,
7414 '_PVT');
7415 END delete_addon_line_rec;
7416 -------------------------------------------------------------------------------------------------
7417 PROCEDURE Create_inst_line(p_api_version IN NUMBER,
7418 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
7419 x_return_status OUT NOCOPY VARCHAR2,
7420 x_msg_count OUT NOCOPY NUMBER,
7421 x_msg_data OUT NOCOPY VARCHAR2,
7422 -- #4414408 p_lty_code IN OKC_LINE_STYLES_V.LTY_CODE%TYPE,
7423 p_clev_rec IN clev_rec_type,
7424 p_klev_rec IN klev_rec_type,
7425 x_clev_rec OUT NOCOPY clev_rec_type,
7426 x_klev_rec OUT NOCOPY klev_rec_type) IS
7427 l_clev_rec clev_rec_type;
7428 r_clev_rec clev_rec_type;
7429 -- l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
7430
7431 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_INSTS_LINE';
7432 BEGIN
7433
7434 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7435 -- Call start_activity to create savepoint, check compatibility
7436 -- and initialize message list
7437 x_return_status := OKL_API.START_ACTIVITY (l_api_name
7438 ,p_init_msg_list
7439 ,'_PVT'
7440 ,x_return_status);
7441 -- Check if activity started successfully
7442 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7443 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7444 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7445 RAISE OKL_API.G_EXCEPTION_ERROR;
7446 END IF;
7447 -- 4414408 redundant validation
7448 /*
7449 -- Check the cle_id that is of the top Fin Asset line
7450 validate_cle_lse_id(p_clev_rec => p_clev_rec,
7451 p_lty_code => p_lty_code,
7452 x_lty_code => l_lty_code,
7453 x_return_status => x_return_status);
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 */
7460 -- since Fixed Assets Line is a sub line of Fin Asset line we have to check weather
7461 -- which line are creating under which line
7462 -- IF l_lty_code = G_FIN_LINE_LTY_CODE THEN
7463
7464 r_clev_rec := p_clev_rec;
7465
7466 -- # 4414408 use new function default_contract_line_values
7467 /*
7468 IF (p_clev_rec.sts_code IS NULL OR
7469 p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
7470 x_return_status := get_sts_code(p_dnz_chr_id => null,
7471 p_cle_id => p_clev_rec.cle_id,
7472 x_sts_code => r_clev_rec.sts_code);
7473 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7474 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7475 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7476 RAISE OKL_API.G_EXCEPTION_ERROR;
7477 END IF;
7478 END IF;
7479 IF (p_clev_rec.end_date IS NULL OR
7480 p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
7481 x_return_status := get_end_date(p_dnz_chr_id => null,
7482 p_cle_id => p_clev_rec.cle_id,
7483 x_end_date => r_clev_rec.end_date);
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 IF (p_clev_rec.start_date IS NULL OR
7491 p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
7492 x_return_status := get_start_date(p_dnz_chr_id => null,
7493 p_cle_id => p_clev_rec.cle_id,
7494 x_start_date => r_clev_rec.start_date);
7495 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7496 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7497 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7498 RAISE OKL_API.G_EXCEPTION_ERROR;
7499 END IF;
7500 END IF;
7501 IF (p_clev_rec.currency_code IS NULL OR
7502 p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
7503 x_return_status := get_currency_code(p_dnz_chr_id => null,
7504 p_cle_id => p_clev_rec.cle_id,
7505 x_currency_code => r_clev_rec.currency_code);
7506 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7507 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7508 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7509 RAISE OKL_API.G_EXCEPTION_ERROR;
7510 END IF;
7511 END IF;
7512 */
7513 IF ((p_clev_rec.sts_code IS NULL OR
7514 p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) OR
7515 (p_clev_rec.end_date IS NULL OR
7516 p_clev_rec.end_date = OKL_API.G_MISS_DATE) OR
7517 (p_clev_rec.start_date IS NULL OR
7518 p_clev_rec.start_date = OKL_API.G_MISS_DATE) OR
7519 (p_clev_rec.currency_code IS NULL OR
7520 p_clev_rec.currency_code = OKL_API.G_MISS_CHAR)
7521 ) THEN
7522 x_return_status := default_contract_line_values(p_dnz_chr_id => null,
7523 p_cle_id => r_clev_rec.cle_id,
7524 p_clev_rec => r_clev_rec);
7525 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7526 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7527 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7528 RAISE OKL_API.G_EXCEPTION_ERROR;
7529 END IF;
7530 END IF;
7531
7532 -- Now the all the records are there we can create Instance Line
7533 OKL_CONTRACT_PUB.create_contract_line(p_api_version => p_api_version,
7534 p_init_msg_list => p_init_msg_list,
7535 x_return_status => x_return_status,
7536 x_msg_count => x_msg_count,
7537 x_msg_data => x_msg_data,
7538 p_clev_rec => r_clev_rec,
7539 p_klev_rec => p_klev_rec,
7540 x_clev_rec => x_clev_rec,
7541 x_klev_rec => x_klev_rec);
7542 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7543 OKL_API.set_message(p_app_name => G_APP_NAME,
7544 p_msg_name => G_CREATION_INSTS_LINE);
7545 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7546 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7547 OKL_API.set_message(p_app_name => G_APP_NAME,
7548 p_msg_name => G_CREATION_INSTS_LINE);
7549 RAISE OKL_API.G_EXCEPTION_ERROR;
7550 END IF;
7551 -- #4414408
7552 -- ELSE
7553 -- OKL_API.set_message(p_app_name => G_APP_NAME,
7554 -- p_msg_name => G_LINE_STYLE);
7555 -- RAISE OKL_API.G_EXCEPTION_ERROR;
7556 -- END IF;
7557 OKL_API.END_ACTIVITY (x_msg_count,
7558 x_msg_data );
7559 EXCEPTION
7560 WHEN OKL_API.G_EXCEPTION_ERROR THEN
7561 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7562 l_api_name,
7563 G_PKG_NAME,
7564 'OKL_API.G_RET_STS_ERROR',
7565 x_msg_count,
7566 x_msg_data,
7567 '_PVT');
7568 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7569 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7570 l_api_name,
7571 G_PKG_NAME,
7572 'OKL_API.G_RET_STS_UNEXP_ERROR',
7573 x_msg_count,
7574 x_msg_data,
7575 '_PVT');
7576 WHEN OTHERS THEN
7577 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7578 l_api_name,
7579 G_PKG_NAME,
7580 'OTHERS',
7581 x_msg_count,
7582 x_msg_data,
7583 '_PVT');
7584 END Create_inst_line;
7585 -------------------------------------------------------------------------------------------------
7586 PROCEDURE update_inst_line(p_api_version IN NUMBER,
7587 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
7588 x_return_status OUT NOCOPY VARCHAR2,
7589 x_msg_count OUT NOCOPY NUMBER,
7590 x_msg_data OUT NOCOPY VARCHAR2,
7591 p_lty_code IN OKC_LINE_STYLES_V.LTY_CODE%TYPE,
7592 p_clev_rec IN clev_rec_type,
7593 p_klev_rec IN klev_rec_type,
7594 x_clev_rec OUT NOCOPY clev_rec_type,
7595 x_klev_rec OUT NOCOPY klev_rec_type) IS
7596
7597 l_clev_rec clev_rec_type;
7598 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
7599
7600 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_INSTS_LINE';
7601 BEGIN
7602 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7603 -- Call start_activity to create savepoint, check compatibility
7604 -- and initialize message list
7605 x_return_status := OKL_API.START_ACTIVITY (l_api_name
7606 ,p_init_msg_list
7607 ,'_PVT'
7608 ,x_return_status);
7609 -- Check if activity started successfully
7610 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7611 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7612 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7613 RAISE OKL_API.G_EXCEPTION_ERROR;
7614 END IF;
7615 -- Check the cle_id that is of the top Fin Asset line
7616 validate_cle_lse_id(p_clev_rec => p_clev_rec,
7617 p_lty_code => p_lty_code,
7618 x_lty_code => l_lty_code,
7619 x_return_status => x_return_status);
7620 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7621 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7622 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7623 RAISE OKL_API.G_EXCEPTION_ERROR;
7624 END IF;
7625 -- since Fixed Assets Line is a sub line of Fin Asset line we have to check weather
7626 -- which line are creating under which line
7627 IF l_lty_code = G_FIN_LINE_LTY_CODE THEN
7628 -- Now the all the records are there we can create Instance Line
7629 OKL_CONTRACT_PUB.update_contract_line(p_api_version => p_api_version,
7630 p_init_msg_list => p_init_msg_list,
7631 x_return_status => x_return_status,
7632 x_msg_count => x_msg_count,
7633 x_msg_data => x_msg_data,
7634 p_clev_rec => p_clev_rec,
7635 p_klev_rec => p_klev_rec,
7636 x_clev_rec => x_clev_rec,
7637 x_klev_rec => x_klev_rec);
7638 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7639 OKL_API.set_message(p_app_name => G_APP_NAME,
7640 p_msg_name => G_UPDATING_INSTS_LINE);
7641 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7642 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7643 OKL_API.set_message(p_app_name => G_APP_NAME,
7644 p_msg_name => G_UPDATING_INSTS_LINE);
7645 RAISE OKL_API.G_EXCEPTION_ERROR;
7646 END IF;
7647 ELSE
7648 OKL_API.set_message(p_app_name => G_APP_NAME,
7649 p_msg_name => G_LINE_STYLE);
7650 RAISE OKL_API.G_EXCEPTION_ERROR;
7651 END IF;
7652 OKL_API.END_ACTIVITY (x_msg_count,
7653 x_msg_data );
7654 EXCEPTION
7655 WHEN OKL_API.G_EXCEPTION_ERROR THEN
7656 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7657 l_api_name,
7658 G_PKG_NAME,
7659 'OKL_API.G_RET_STS_ERROR',
7660 x_msg_count,
7661 x_msg_data,
7662 '_PVT');
7663 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7664 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7665 l_api_name,
7666 G_PKG_NAME,
7667 'OKL_API.G_RET_STS_UNEXP_ERROR',
7668 x_msg_count,
7669 x_msg_data,
7670 '_PVT');
7671 WHEN OTHERS THEN
7672 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7673 l_api_name,
7674 G_PKG_NAME,
7675 'OTHERS',
7676 x_msg_count,
7677 x_msg_data,
7678 '_PVT');
7679 END update_inst_line;
7680 -------------------------------------------------------------------------------------------------
7681 PROCEDURE Create_installed_base_line(p_api_version IN NUMBER,
7682 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
7683 x_return_status OUT NOCOPY VARCHAR2,
7684 x_msg_count OUT NOCOPY NUMBER,
7685 x_msg_data OUT NOCOPY VARCHAR2,
7686 -- 4414408 p_lty_code IN OKC_LINE_STYLES_V.LTY_CODE%TYPE,
7687 p_clev_rec IN clev_rec_type,
7688 p_klev_rec IN klev_rec_type,
7689 p_cimv_rec IN cimv_rec_type,
7690 p_itiv_rec IN itiv_rec_type,
7691 x_clev_rec OUT NOCOPY clev_rec_type,
7692 x_klev_rec OUT NOCOPY klev_rec_type,
7693 x_cimv_rec OUT NOCOPY cimv_rec_type,
7694 x_trxv_rec OUT NOCOPY trxv_rec_type,
7695 x_itiv_rec OUT NOCOPY itiv_rec_type) IS
7696 l_clev_rec clev_rec_type;
7697 r_clev_rec clev_rec_type;
7698 l_cimv_rec cimv_rec_type;
7699 r_cimv_rec cimv_rec_type;
7700 lv_dummy VARCHAR2(3) := OKL_API.G_MISS_CHAR ;
7701 -- l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
7702 l_itiv_rec itiv_rec_type;
7703 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_IB_LINE';
7704 BEGIN
7705 x_return_status := OKL_API.G_RET_STS_SUCCESS;
7706 -- Call start_activity to create savepoint, check compatibility
7707 -- and initialize message list
7708 x_return_status := OKL_API.START_ACTIVITY (
7709 l_api_name
7710 ,p_init_msg_list
7711 ,'_PVT'
7712 ,x_return_status);
7713 -- Check if activity started successfully
7714 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7715 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7716 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7717 RAISE OKL_API.G_EXCEPTION_ERROR;
7718 END IF;
7719 -- 4414408 redundant validation
7720 /*
7721 -- Check the cle_id that is of the top Fin Asset line
7722 validate_cle_lse_id(p_clev_rec => p_clev_rec,
7723 p_lty_code => p_lty_code,
7724 x_lty_code => l_lty_code,
7725 x_return_status => x_return_status);
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 */
7732 -- since IB Line is a sub line of instance line we have to check weather
7733 -- which line are creating under which line
7734 -- IF l_lty_code = G_INST_LINE_LTY_CODE THEN
7735
7736 r_clev_rec := p_clev_rec;
7737
7738 -- # 4414408 use new function default_contract_line_values
7739 /*
7740 IF (p_clev_rec.sts_code IS NULL OR
7741 p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
7742 x_return_status := get_sts_code(p_dnz_chr_id => null,
7743 p_cle_id => p_clev_rec.cle_id,
7744 x_sts_code => r_clev_rec.sts_code);
7745 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7746 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7747 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7748 RAISE OKL_API.G_EXCEPTION_ERROR;
7749 END IF;
7750 END IF;
7751 IF (p_clev_rec.end_date IS NULL OR
7752 p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
7753 x_return_status := get_end_date(p_dnz_chr_id => null,
7754 p_cle_id => p_clev_rec.cle_id,
7755 x_end_date => r_clev_rec.end_date);
7756 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7757 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7758 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7759 RAISE OKL_API.G_EXCEPTION_ERROR;
7760 END IF;
7761 END IF;
7762 IF (p_clev_rec.start_date IS NULL OR
7763 p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
7764 x_return_status := get_start_date(p_dnz_chr_id => null,
7765 p_cle_id => p_clev_rec.cle_id,
7766 x_start_date => r_clev_rec.start_date);
7767 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7768 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7769 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7770 RAISE OKL_API.G_EXCEPTION_ERROR;
7771 END IF;
7772 END IF;
7773 IF (p_clev_rec.currency_code IS NULL OR
7774 p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
7775 x_return_status := get_currency_code(p_dnz_chr_id => null,
7776 p_cle_id => p_clev_rec.cle_id,
7777 x_currency_code => r_clev_rec.currency_code);
7778 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7779 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7780 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7781 RAISE OKL_API.G_EXCEPTION_ERROR;
7782 END IF;
7783 END IF;
7784 */
7785
7786 IF ((p_clev_rec.sts_code IS NULL OR
7787 p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) OR
7788 (p_clev_rec.end_date IS NULL OR
7789 p_clev_rec.end_date = OKL_API.G_MISS_DATE) OR
7790 (p_clev_rec.start_date IS NULL OR
7791 p_clev_rec.start_date = OKL_API.G_MISS_DATE) OR
7792 (p_clev_rec.currency_code IS NULL OR
7793 p_clev_rec.currency_code = OKL_API.G_MISS_CHAR)
7794 ) THEN
7795 x_return_status := default_contract_line_values(p_dnz_chr_id => null,
7796 p_cle_id => r_clev_rec.cle_id,
7797 p_clev_rec => r_clev_rec);
7798 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7799 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7800 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7801 RAISE OKL_API.G_EXCEPTION_ERROR;
7802 END IF;
7803 END IF;
7804 -- Now the all the records are there we can create Instance Line
7805 OKL_CONTRACT_PUB.create_contract_line(p_api_version => p_api_version,
7806 p_init_msg_list => p_init_msg_list,
7807 x_return_status => x_return_status,
7808 x_msg_count => x_msg_count,
7809 x_msg_data => x_msg_data,
7810 p_clev_rec => r_clev_rec,
7811 p_klev_rec => p_klev_rec,
7812 x_clev_rec => x_clev_rec,
7813 x_klev_rec => x_klev_rec);
7814 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7815 OKL_API.set_message(p_app_name => G_APP_NAME,
7816 p_msg_name => G_CREATION_IB_LINE);
7817 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7818 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7819 OKL_API.set_message(p_app_name => G_APP_NAME,
7820 p_msg_name => G_CREATION_IB_LINE);
7821 RAISE OKL_API.G_EXCEPTION_ERROR;
7822 END IF;
7823 l_cimv_rec := p_cimv_rec;
7824 l_cimv_rec.cle_id := x_clev_rec.id;
7825 l_cimv_rec.dnz_chr_id := x_clev_rec.dnz_chr_id;
7826 l_cimv_rec.JTOT_OBJECT1_CODE := 'OKX_IB_ITEM';
7827 l_cimv_rec.exception_yn := 'N';
7828 IF (l_cimv_rec.object1_id1 IS NULL OR
7829 l_cimv_rec.object1_id1 = OKL_API.G_MISS_CHAR) AND
7830 (l_cimv_rec.object1_id2 IS NULL OR
7831 l_cimv_rec.object1_id2 = OKL_API.G_MISS_CHAR) THEN
7832 -- We have create the item rec,tal rec,trx rec and also create the iti rec
7833 -- Creation of Item Record for the above record information
7834 OKL_OKC_MIGRATION_PVT.create_contract_item(p_api_version => p_api_version,
7835 p_init_msg_list => p_init_msg_list,
7836 x_return_status => x_return_status,
7837 x_msg_count => x_msg_count,
7838 x_msg_data => x_msg_data,
7839 p_cimv_rec => l_cimv_rec,
7840 x_cimv_rec => x_cimv_rec);
7841 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7842 OKL_API.set_message(p_app_name => G_APP_NAME,
7843 p_msg_name => G_CREATION_IB_ITEM);
7844 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7845 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7846 OKL_API.set_message(p_app_name => G_APP_NAME,
7847 p_msg_name => G_CREATION_IB_ITEM);
7848 RAISE OKL_API.G_EXCEPTION_ERROR;
7849 END IF;
7850 -- Rest of the record Creation will Follow
7851 -- We need to know if the kle_id is already there or not
7852 -- ideally it should be null since it is a new record
7853 IF (x_klev_rec.id IS NOT NULL OR
7854 x_klev_rec.id <> OKL_API.G_MISS_NUM) THEN
7855 lv_dummy := null;
7856 END IF;
7857 IF (lv_dummy = OKL_API.G_MISS_CHAR OR
7858 lv_dummy IS NUll) THEN
7859 l_itiv_rec := p_itiv_rec;
7860 -- To the Item Info from model Line
7861 x_return_status := get_rec_ib_cimv(p_cle_id => x_clev_rec.cle_id,
7862 p_dnz_chr_id => x_cimv_rec.dnz_chr_id,
7863 x_cimv_rec => r_cimv_rec);
7864 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7865 OKL_API.set_message(p_app_name => G_APP_NAME,
7866 p_msg_name => G_FETCHING_INFO,
7867 p_token1 => G_REC_NAME_TOKEN,
7868 p_token1_value => 'OKC_K_ITEMS_V Record');
7869 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7870 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7871 OKL_API.set_message(p_app_name => G_APP_NAME,
7872 p_msg_name => G_FETCHING_INFO,
7873 p_token1 => G_REC_NAME_TOKEN,
7874 p_token1_value => 'OKC_K_ITEMS_V Record');
7875 RAISE OKL_API.G_EXCEPTION_ERROR;
7876 END IF;
7877 -- Creating iti record
7878 l_itiv_rec.inventory_item_id := to_number(r_cimv_rec.object1_id1);
7879 l_itiv_rec.inventory_org_id := to_number(r_cimv_rec.object1_id2);
7880 IF (l_itiv_rec.line_number IS NULL OR
7881 l_itiv_rec.line_number = OKL_API.G_MISS_NUM) THEN
7882 l_itiv_rec.line_number := 1;
7883 END IF;
7884 l_itiv_rec.kle_id := x_klev_rec.id;
7885 l_itiv_rec.jtot_object_code_new := 'OKX_PARTSITE';
7886 -- Create another iti_id record for the tas_id of the header
7887 create_txl_itm_insts(p_api_version => p_api_version,
7888 p_init_msg_list => p_init_msg_list,
7889 x_return_status => x_return_status,
7890 x_msg_count => x_msg_count,
7891 x_msg_data => x_msg_data,
7892 p_itiv_rec => l_itiv_rec,
7893 x_trxv_rec => x_trxv_rec,
7894 x_itiv_rec => x_itiv_rec);
7895 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7896 OKL_API.set_message(p_app_name => G_APP_NAME,
7897 p_msg_name => G_ITI_ID);
7898 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7899 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7900 OKL_API.set_message(p_app_name => G_APP_NAME,
7901 p_msg_name => G_ITI_ID);
7902 RAISE OKL_API.G_EXCEPTION_ERROR;
7903 END IF;
7904 ELSE
7905 OKL_API.set_message(p_app_name => G_APP_NAME,
7906 p_msg_name => G_ITI_ID);
7907 RAISE OKL_API.G_EXCEPTION_ERROR;
7908 END IF;
7909 ELSIF (l_cimv_rec.object1_id1 IS NOT NULL OR
7910 l_cimv_rec.object1_id1 <> OKL_API.G_MISS_CHAR) AND
7911 (l_cimv_rec.object1_id2 IS NOT NULL OR
7912 l_cimv_rec.object1_id2 <> OKL_API.G_MISS_CHAR)THEN
7913 -- Creation of Item Record for the above record information
7914 OKL_OKC_MIGRATION_PVT.create_contract_item(p_api_version => p_api_version,
7915 p_init_msg_list => p_init_msg_list,
7916 x_return_status => x_return_status,
7917 x_msg_count => x_msg_count,
7918 x_msg_data => x_msg_data,
7919 p_cimv_rec => l_cimv_rec,
7920 x_cimv_rec => x_cimv_rec);
7921 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7922 OKL_API.set_message(p_app_name => G_APP_NAME,
7923 p_msg_name => G_CREATION_IB_ITEM);
7924 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7925 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7926 OKL_API.set_message(p_app_name => G_APP_NAME,
7927 p_msg_name => G_CREATION_IB_ITEM);
7928 RAISE OKL_API.G_EXCEPTION_ERROR;
7929 END IF;
7930 -- Rest of the record Creation will Follow
7931 -- We need to know if the kle_id is already there or not
7932 -- ideally it should be null since it is a new record
7933 IF (x_klev_rec.id IS NOT NULL OR
7934 x_klev_rec.id <> OKL_API.G_MISS_NUM) THEN
7935 lv_dummy := null;
7936 END IF;
7937 IF (lv_dummy = OKL_API.G_MISS_CHAR OR
7938 lv_dummy IS NUll) THEN
7939 l_itiv_rec := p_itiv_rec;
7940 -- To the Item Info from model Line
7941 x_return_status := get_rec_ib_cimv(p_cle_id => x_clev_rec.cle_id,
7942 p_dnz_chr_id => x_cimv_rec.dnz_chr_id,
7943 x_cimv_rec => r_cimv_rec);
7944 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7945 OKL_API.set_message(p_app_name => G_APP_NAME,
7946 p_msg_name => G_FETCHING_INFO,
7947 p_token1 => G_REC_NAME_TOKEN,
7948 p_token1_value => 'OKC_K_ITEMS_V Record');
7949 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7950 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7951 OKL_API.set_message(p_app_name => G_APP_NAME,
7952 p_msg_name => G_FETCHING_INFO,
7953 p_token1 => G_REC_NAME_TOKEN,
7954 p_token1_value => 'OKC_K_ITEMS_V Record');
7955 RAISE OKL_API.G_EXCEPTION_ERROR;
7956 END IF;
7957 -- Creating iti record
7958 l_itiv_rec.inventory_item_id := to_number(r_cimv_rec.object1_id1);
7959 l_itiv_rec.inventory_org_id := to_number(r_cimv_rec.object1_id2);
7960 IF (l_itiv_rec.line_number IS NULL OR
7961 l_itiv_rec.line_number = OKL_API.G_MISS_NUM) THEN
7962 l_itiv_rec.line_number := 1;
7963 END IF;
7964 l_itiv_rec.kle_id := x_klev_rec.id;
7965 l_itiv_rec.jtot_object_code_new := 'OKX_PARTSITE';
7966 -- Create another iti_id record for the tas_id of the header
7967 create_txl_itm_insts(p_api_version => p_api_version,
7968 p_init_msg_list => p_init_msg_list,
7969 x_return_status => x_return_status,
7970 x_msg_count => x_msg_count,
7971 x_msg_data => x_msg_data,
7972 p_itiv_rec => l_itiv_rec,
7973 x_trxv_rec => x_trxv_rec,
7974 x_itiv_rec => x_itiv_rec);
7975 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7976 OKL_API.set_message(p_app_name => G_APP_NAME,
7977 p_msg_name => G_ITI_ID);
7978 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7979 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7980 OKL_API.set_message(p_app_name => G_APP_NAME,
7981 p_msg_name => G_ITI_ID);
7982 RAISE OKL_API.G_EXCEPTION_ERROR;
7983 END IF;
7984 ELSE
7985 OKL_API.set_message(p_app_name => G_APP_NAME,
7986 p_msg_name => G_ITI_ID);
7987 RAISE OKL_API.G_EXCEPTION_ERROR;
7988 END IF;
7989 ELSE
7990 OKL_API.set_message(p_app_name => G_APP_NAME,
7991 p_msg_name => G_ITEM_RECORD);
7992 x_return_status := OKL_API.G_RET_STS_ERROR;
7993 RAISE OKL_API.G_EXCEPTION_ERROR;
7994 END IF;
7995 -- #4414408
7996 -- ELSE
7997 -- OKL_API.set_message(p_app_name => G_APP_NAME,
7998 -- p_msg_name => G_LINE_STYLE);
7999 -- x_return_status := OKL_API.G_RET_STS_ERROR;
8000 -- RAISE OKL_API.G_EXCEPTION_ERROR;
8001 -- END IF;
8002 OKL_API.END_ACTIVITY (x_msg_count,
8003 x_msg_data );
8004 EXCEPTION
8005 WHEN OKL_API.G_EXCEPTION_ERROR THEN
8006 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8007 l_api_name,
8008 G_PKG_NAME,
8009 'OKL_API.G_RET_STS_ERROR',
8010 x_msg_count,
8011 x_msg_data,
8012 '_PVT');
8013 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8014 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8015 l_api_name,
8016 G_PKG_NAME,
8017 'OKL_API.G_RET_STS_UNEXP_ERROR',
8018 x_msg_count,
8019 x_msg_data,
8020 '_PVT');
8021 WHEN OTHERS THEN
8022 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8023 l_api_name,
8024 G_PKG_NAME,
8025 'OTHERS',
8026 x_msg_count,
8027 x_msg_data,
8028 '_PVT');
8029 END Create_installed_base_line;
8030 ---34----------------------------------------------------------------------------------------------
8031 PROCEDURE update_installed_base_line(p_api_version IN NUMBER,
8032 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
8033 x_return_status OUT NOCOPY VARCHAR2,
8034 x_msg_count OUT NOCOPY NUMBER,
8035 x_msg_data OUT NOCOPY VARCHAR2,
8036 p_lty_code IN OKC_LINE_STYLES_V.LTY_CODE%TYPE,
8037 p_clev_rec IN clev_rec_type,
8038 p_klev_rec IN klev_rec_type,
8039 p_cimv_rec IN cimv_rec_type,
8040 p_itiv_rec IN itiv_rec_type,
8041 x_clev_rec OUT NOCOPY clev_rec_type,
8042 x_klev_rec OUT NOCOPY klev_rec_type,
8043 x_cimv_rec OUT NOCOPY cimv_rec_type,
8044 x_itiv_rec OUT NOCOPY itiv_rec_type) IS
8045
8046 l_clev_rec clev_rec_type;
8047 l_cimv_rec cimv_rec_type;
8048 l_itiv_rec itiv_rec_type;
8049 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
8050 ln_tas_id OKL_TRX_ASSETS.ID%TYPE;
8051 lv_dummy VARCHAR2(3) := OKL_API.G_MISS_CHAR ;
8052 i NUMBER := 0;
8053 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_IB_LINE';
8054 BEGIN
8055 x_return_status := OKL_API.G_RET_STS_SUCCESS;
8056 -- Call start_activity to create savepoint, check compatibility
8057 -- and initialize message list
8058 x_return_status := OKL_API.START_ACTIVITY (
8059 l_api_name
8060 ,p_init_msg_list
8061 ,'_PVT'
8062 ,x_return_status);
8063 -- Check if activity started successfully
8064 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8065 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8066 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8067 RAISE OKL_API.G_EXCEPTION_ERROR;
8068 END IF;
8069 -- Check the cle_id that is of the top Fin Asset line
8070 validate_cle_lse_id(p_clev_rec => p_clev_rec,
8071 p_lty_code => p_lty_code,
8072 x_lty_code => l_lty_code,
8073 x_return_status => x_return_status);
8074 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8075 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8076 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8077 RAISE OKL_API.G_EXCEPTION_ERROR;
8078 END IF;
8079 -- since IB Line is a sub line of instance line we have to check weather
8080 -- which line are creating under which line
8081 IF l_lty_code = G_INST_LINE_LTY_CODE THEN
8082 -- Now the all the records are there we can create Instance Line
8083 OKL_CONTRACT_PUB.update_contract_line(p_api_version => p_api_version,
8084 p_init_msg_list => p_init_msg_list,
8085 x_return_status => x_return_status,
8086 x_msg_count => x_msg_count,
8087 x_msg_data => x_msg_data,
8088 p_clev_rec => p_clev_rec,
8089 p_klev_rec => p_klev_rec,
8090 x_clev_rec => x_clev_rec,
8091 x_klev_rec => x_klev_rec);
8092 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8093 OKL_API.set_message(p_app_name => G_APP_NAME,
8094 p_msg_name => G_UPDATING_IB_LINE);
8095 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8096 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8097 OKL_API.set_message(p_app_name => G_APP_NAME,
8098 p_msg_name => G_UPDATING_IB_LINE);
8099 RAISE OKL_API.G_EXCEPTION_ERROR;
8100 END IF;
8101 l_cimv_rec := p_cimv_rec;
8102 IF l_cimv_rec.cle_id <> x_clev_rec.id THEN
8103 OKL_API.set_message(p_app_name => G_APP_NAME,
8104 p_msg_name => G_ITEM_RECORD);
8105 RAISE OKL_API.G_EXCEPTION_ERROR;
8106 END IF;
8107 IF l_cimv_rec.dnz_chr_id <> x_clev_rec.dnz_chr_id THEN
8108 OKL_API.set_message(p_app_name => G_APP_NAME,
8109 p_msg_name => G_ITEM_RECORD);
8110 RAISE OKL_API.G_EXCEPTION_ERROR;
8111 END IF;
8112 IF (l_cimv_rec.object1_id1 IS NULL OR
8113 l_cimv_rec.object1_id1 = OKL_API.G_MISS_CHAR) AND
8114 (l_cimv_rec.object1_id2 IS NULL OR
8115 l_cimv_rec.object1_id2 = OKL_API.G_MISS_CHAR) THEN
8116 -- We have create the item rec,tal rec,trx rec and also create the iti rec
8117 -- Creation of Item Record for the above record information
8118 OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version => p_api_version,
8119 p_init_msg_list => p_init_msg_list,
8120 x_return_status => x_return_status,
8121 x_msg_count => x_msg_count,
8122 x_msg_data => x_msg_data,
8123 p_cimv_rec => l_cimv_rec,
8124 x_cimv_rec => x_cimv_rec);
8125 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8126 OKL_API.set_message(p_app_name => G_APP_NAME,
8127 p_msg_name => G_UPDATING_IB_ITEM);
8128 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8129 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8130 OKL_API.set_message(p_app_name => G_APP_NAME,
8131 p_msg_name => G_UPDATING_IB_ITEM);
8132 RAISE OKL_API.G_EXCEPTION_ERROR;
8133 END IF;
8134 validate_iti_kle_id(p_klev_rec => x_klev_rec,
8135 x_record_exists => lv_dummy,
8136 x_return_status => x_return_status);
8137 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8138 OKL_API.set_message(p_app_name => G_APP_NAME,
8139 p_msg_name => G_ITI_ID);
8140 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8141 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8142 OKL_API.set_message(p_app_name => G_APP_NAME,
8143 p_msg_name => G_ITI_ID);
8144 RAISE OKL_API.G_EXCEPTION_ERROR;
8145 END IF;
8146 IF (lv_dummy IS NOT NUll OR
8147 lv_dummy <> OKL_API.G_MISS_CHAR) THEN
8148 IF p_itiv_rec.kle_id <> x_klev_rec.id THEN
8149 OKL_API.set_message(p_app_name => G_APP_NAME,
8150 p_msg_name => G_ITI_ID);
8151 RAISE OKL_API.G_EXCEPTION_ERROR;
8152 END IF;
8153 update_txl_itm_insts(p_api_version => p_api_version,
8154 p_init_msg_list => p_init_msg_list,
8155 x_return_status => x_return_status,
8156 x_msg_count => x_msg_count,
8157 x_msg_data => x_msg_data,
8158 p_itiv_rec => p_itiv_rec,
8159 x_itiv_rec => x_itiv_rec);
8160 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8161 OKL_API.set_message(p_app_name => G_APP_NAME,
8162 p_msg_name => G_ITI_ID);
8163 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8164 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8165 OKL_API.set_message(p_app_name => G_APP_NAME,
8166 p_msg_name => G_ITI_ID);
8167 RAISE OKL_API.G_EXCEPTION_ERROR;
8168 END IF;
8169 ELSE
8170 OKL_API.set_message(p_app_name => G_APP_NAME,
8171 p_msg_name => G_ITI_ID);
8172 RAISE OKL_API.G_EXCEPTION_ERROR;
8173 END IF;
8174 ELSIF (l_cimv_rec.object1_id1 IS NOT NULL OR
8175 l_cimv_rec.object1_id1 <> OKL_API.G_MISS_CHAR) AND
8176 (l_cimv_rec.object1_id2 IS NOT NULL OR
8177 l_cimv_rec.object1_id2 <> OKL_API.G_MISS_CHAR) THEN
8178 -- Creation of Item Record for the above record information
8179 OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version => p_api_version,
8180 p_init_msg_list => p_init_msg_list,
8181 x_return_status => x_return_status,
8182 x_msg_count => x_msg_count,
8183 x_msg_data => x_msg_data,
8184 p_cimv_rec => l_cimv_rec,
8185 x_cimv_rec => x_cimv_rec);
8186 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8187 OKL_API.set_message(p_app_name => G_APP_NAME,
8188 p_msg_name => G_UPDATING_IB_ITEM);
8189 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8190 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8191 OKL_API.set_message(p_app_name => G_APP_NAME,
8192 p_msg_name => G_UPDATING_IB_ITEM);
8193 RAISE OKL_API.G_EXCEPTION_ERROR;
8194 END IF;
8195 ELSE
8196 OKL_API.set_message(p_app_name => G_APP_NAME,
8197 p_msg_name => G_UPDATING_IB_ITEM);
8198 RAISE OKL_API.G_EXCEPTION_ERROR;
8199 END IF;
8200 ELSE
8201 OKL_API.set_message(p_app_name => G_APP_NAME,
8202 p_msg_name => G_LINE_STYLE);
8203 RAISE OKL_API.G_EXCEPTION_ERROR;
8204 END IF;
8205 OKL_API.END_ACTIVITY (x_msg_count,
8206 x_msg_data );
8207 EXCEPTION
8208 WHEN OKL_API.G_EXCEPTION_ERROR THEN
8209 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8210 l_api_name,
8211 G_PKG_NAME,
8212 'OKL_API.G_RET_STS_ERROR',
8213 x_msg_count,
8214 x_msg_data,
8215 '_PVT');
8216 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8217 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8218 l_api_name,
8219 G_PKG_NAME,
8220 'OKL_API.G_RET_STS_UNEXP_ERROR',
8221 x_msg_count,
8222 x_msg_data,
8223 '_PVT');
8224 WHEN OTHERS THEN
8225 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8226 l_api_name,
8227 G_PKG_NAME,
8228 'OTHERS',
8229 x_msg_count,
8230 x_msg_data,
8231 '_PVT');
8232 END update_installed_base_line;
8233 -------------------------------------------------------------------------------------------------------
8234 ---------------------------- Main Process for Creation of Financial Asset -------------------------------
8235 -------------------------------------------------------------------------------------------------------
8236 PROCEDURE create_fin_line(
8237 p_api_version IN NUMBER,
8238 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
8239 x_return_status OUT NOCOPY VARCHAR2,
8240 x_msg_count OUT NOCOPY NUMBER,
8241 x_msg_data OUT NOCOPY VARCHAR2,
8242 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
8243 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
8244 p_clev_rec IN clev_rec_type,
8245 p_klev_rec IN klev_rec_type,
8246 x_clev_rec OUT NOCOPY clev_rec_type,
8247 x_klev_rec OUT NOCOPY klev_rec_type) IS
8248 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_FIN_AST_LINES';
8249 l_clev_rec clev_rec_type;
8250 -- Variables for validation of line style
8251 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
8252 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
8253 BEGIN
8254 x_return_status := OKL_API.G_RET_STS_SUCCESS;
8255 -- Call start_activity to create savepoint, check compatibility
8256 -- and initialize message list
8257 x_return_status := OKL_API.START_ACTIVITY (
8258 l_api_name
8259 ,p_init_msg_list
8260 ,'_PVT'
8261 ,x_return_status);
8262 -- Check if activity started successfully
8263 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8264 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8265 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8266 RAISE OKL_API.G_EXCEPTION_ERROR;
8267 END IF;
8268
8269 -- 4414408 The validation is now performed in create_all_line procedure
8270 /*
8271 -- To Check We Got the Valid info
8272 IF UPPER(p_new_yn) NOT IN ('Y','N') OR
8273 (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
8274 UPPER(p_new_yn) IS NULL) THEN
8275 OKL_API.set_message(p_app_name => G_APP_NAME,
8276 p_msg_name => G_INVALID_YN,
8277 p_token1 => G_COL_NAME_TOKEN,
8278 p_token1_value => 'p_new_yn');
8279 -- Halt Validation
8280 RAISE OKL_API.G_EXCEPTION_ERROR;
8281 END IF;
8282 -- Validate to see if the asset_number given is not null
8283 -- and also Validate asset_number does not exists
8284 -- in OKL_TXL_ASSETS_V
8285 IF UPPER(p_new_yn) = 'Y' THEN
8286 validate_new_asset_number(x_return_status => x_return_status,
8287 p_asset_number => p_asset_number,
8288 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
8289 -- Check if activity started successfully
8290 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8291 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8292 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8293 RAISE OKL_API.G_EXCEPTION_ERROR;
8294 END IF;
8295 ELSE
8296 validate_new_asset_number(x_return_status => x_return_status,
8297 p_asset_number => p_asset_number,
8298 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
8299 -- Check if activity ended successfully
8300 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8301 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8302 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8303 RAISE OKL_API.G_EXCEPTION_ERROR;
8304 END IF;
8305 END IF;
8306 */
8307 -- 4414408 The validations in Validate_lse_id and Validate_dnz_chr_id are redundant
8308 /*
8309 -- Validate Line Style id and get the line type code
8310 -- and line style type for further processing
8311 validate_lse_id(p_clev_rec => p_clev_rec,
8312 x_return_status => x_return_status,
8313 x_lty_code => l_lty_code,
8314 x_lse_type => l_lse_type);
8315 -- Check if activity started successfully
8316 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8317 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8318 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8319 RAISE OKL_API.G_EXCEPTION_ERROR;
8320 END IF;
8321 -- Validate the Dnz_Chr_id
8322 validate_dnz_chr_id(p_clev_rec => p_clev_rec,
8323 x_return_status => x_return_status);
8324 -- Check if activity started successfully
8325 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8326 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8327 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8328 RAISE OKL_API.G_EXCEPTION_ERROR;
8329 END IF;
8330 */
8331 -- creating of finanical Asset Lines which is the top Line
8332 -- While createing the cle_id will be null, chr_id will be not null
8333 -- and also the dnz_chr_id will be not null.Lse_id given will also helps
8334 -- to decide that this line is finanical Asset Line
8335 l_clev_rec := p_clev_rec;
8336 IF (l_clev_rec.cle_id = OKL_API.G_MISS_NUM OR
8337 l_clev_rec.cle_id IS NULL) AND
8338 (l_clev_rec.dnz_chr_id IS NOT NULL OR
8339 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
8340 (l_clev_rec.chr_id IS NOT NULL OR
8341 l_clev_rec.chr_id <> OKL_API.G_MISS_NUM) AND
8342 -- #4414408
8343 -- l_lty_code = G_FIN_LINE_LTY_CODE AND
8344 -- l_lse_type = G_TLS_TYPE THEN
8345 l_clev_rec.lse_id = G_FIN_LINE_LTY_ID THEN
8346 -- We need to do this because we wanted the asset number be unique
8347 -- both in the transaction level and the line levels
8348 l_clev_rec.name := p_asset_number;
8349 -- Entering the Asset Description
8350 create_financial_asset_line(p_api_version => p_api_version,
8351 p_init_msg_list => p_init_msg_list,
8352 x_return_status => x_return_status,
8353 x_msg_count => x_msg_count,
8354 x_msg_data => x_msg_data,
8355 p_clev_rec => l_clev_rec,
8356 p_klev_rec => p_klev_rec,
8357 x_clev_rec => x_clev_rec,
8358 x_klev_rec => x_klev_rec);
8359 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8360 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8361 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8362 RAISE OKL_API.G_EXCEPTION_ERROR;
8363 END IF;
8364 ELSE
8365 OKL_API.set_message(p_app_name => G_APP_NAME,
8366 p_msg_name => G_INVALID_CRITERIA,
8367 p_token1 => G_COL_NAME_TOKEN,
8368 p_token1_value => 'Financial Asset line');
8369 x_return_status := OKL_API.G_RET_STS_ERROR;
8370 RAISE OKL_API.G_EXCEPTION_ERROR;
8371 END IF;
8372 OKL_API.END_ACTIVITY (x_msg_count,
8373 x_msg_data );
8374 EXCEPTION
8375 WHEN OKL_API.G_EXCEPTION_ERROR THEN
8376 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8377 l_api_name,
8378 G_PKG_NAME,
8379 'OKL_API.G_RET_STS_ERROR',
8380 x_msg_count,
8381 x_msg_data,
8382 '_PVT');
8383 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8384 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8385 l_api_name,
8386 G_PKG_NAME,
8387 'OKL_API.G_RET_STS_UNEXP_ERROR',
8388 x_msg_count,
8389 x_msg_data,
8390 '_PVT');
8391 WHEN OTHERS THEN
8392 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8393 l_api_name,
8394 G_PKG_NAME,
8395 'OTHERS',
8396 x_msg_count,
8397 x_msg_data,
8398 '_PVT');
8399 END create_fin_line;
8400 -------------------------------------------------------------------------------------------------------
8401 ---------------------------- Main Process for update of Financial Asset -------------------------------
8402 -------------------------------------------------------------------------------------------------------
8403 PROCEDURE Update_fin_line(
8404 p_api_version IN NUMBER,
8405 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
8406 x_return_status OUT NOCOPY VARCHAR2,
8407 x_msg_count OUT NOCOPY NUMBER,
8408 x_msg_data OUT NOCOPY VARCHAR2,
8409 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
8410 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
8411 p_clev_rec IN clev_rec_type,
8412 p_klev_rec IN klev_rec_type,
8413 x_clev_rec OUT NOCOPY clev_rec_type,
8414 x_klev_rec OUT NOCOPY klev_rec_type,
8415 p_validate_fin_line IN VARCHAR2 DEFAULT OKL_API.G_TRUE) IS
8416 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_FIN_AST_LINES';
8417 l_clev_rec clev_rec_type := p_clev_rec;
8418 l_klev_rec klev_rec_type := p_klev_rec;
8419 -- Variables for validation of line style
8420 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
8421 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
8422 ln_fa_id OKC_K_LINES_V.ID%TYPE;
8423
8424 -- Temp variables for capital reduction and tradein amount
8425 tradein_amount OKL_K_LINES.TRADEIN_AMOUNT%TYPE;
8426 capital_reduction OKL_K_LINES.CAPITAL_REDUCTION%TYPE;
8427
8428 CURSOR get_fa_id(p_top_line OKC_K_LINES_V.ID%TYPE,
8429 p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE)
8430 IS
8431 -- #4414408
8432 SELECT cle.id
8433 -- FROM okc_subclass_top_line stl,
8434 -- okc_line_styles_b lse2,
8435 -- okc_line_styles_b lse1,
8436 FROM okc_k_lines_b cle
8437 WHERE cle.cle_id = p_top_line
8438 AND cle.dnz_chr_id = p_dnz_chr_id
8439 -- AND lse1.id = cle.lse_id
8440 -- AND lse1.lty_code = G_FA_LINE_LTY_CODE
8441 -- AND lse1.lse_parent_id = lse2.id
8442 -- AND lse2.lty_code = G_FIN_LINE_LTY_CODE
8443 -- AND lse2.id = stl.lse_id
8444 -- AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
8445 AND cle.lse_id = G_FA_LINE_LTY_ID;
8446
8447 BEGIN
8448 x_return_status := OKL_API.G_RET_STS_SUCCESS;
8449 -- Call start_activity to create savepoint, check compatibility
8450 -- and initialize message list
8451 x_return_status := OKL_API.START_ACTIVITY (
8452 l_api_name
8453 ,p_init_msg_list
8454 ,'_PVT'
8455 ,x_return_status);
8456 -- Check if activity started successfully
8457 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8458 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8459 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8460 RAISE OKL_API.G_EXCEPTION_ERROR;
8461 END IF;
8462 IF (p_validate_fin_line = OKL_API.G_TRUE) THEN
8463 validate_sts_code(p_clev_rec => l_clev_rec,
8464 x_return_status => x_return_status);
8465 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8466 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8467 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8468 RAISE OKL_API.G_EXCEPTION_ERROR;
8469 END IF;
8470 OPEN get_fa_id(p_top_line => l_clev_rec.id,
8471 p_dnz_chr_id => l_clev_rec.dnz_chr_id);
8472 FETCH get_fa_id INTO ln_fa_id;
8473 -- 4414408
8474 IF get_fa_id%NOTFOUND THEN
8475 OKL_API.set_message(p_app_name => G_APP_NAME,
8476 p_msg_name => G_LINE_RECORD);
8477 RAISE OKL_API.G_EXCEPTION_ERROR;
8478 END IF;
8479 CLOSE get_fa_id;
8480 -- To Check We Got the Valid info
8481 IF UPPER(p_new_yn) NOT IN ('Y','N') OR
8482 (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
8483 UPPER(p_new_yn) IS NULL) THEN
8484 OKL_API.set_message(p_app_name => G_APP_NAME,
8485 p_msg_name => G_INVALID_YN,
8486 p_token1 => G_COL_NAME_TOKEN,
8487 p_token1_value => 'p_new_yn');
8488 -- Halt Validation
8489 RAISE OKL_API.G_EXCEPTION_ERROR;
8490 END IF;
8491 -- Validate to see if the asset_number given is not null
8492 -- and also Validate asset_number does not exists
8493 -- in OKL_TXL_ASSETS_V
8494 IF UPPER(p_new_yn) = 'Y' THEN
8495 validate_new_ast_num_update(x_return_status => x_return_status,
8496 p_asset_number => p_asset_number,
8497 p_kle_id => ln_fa_id,
8498 p_dnz_chr_id => l_clev_rec.dnz_chr_id);
8499 -- Check if activity started successfully
8500 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8501 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8502 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8503 RAISE OKL_API.G_EXCEPTION_ERROR;
8504 END IF;
8505 ELSIF UPPER(p_new_yn) = 'N' THEN
8506 validate_new_ast_num_update(x_return_status => x_return_status,
8507 p_asset_number => p_asset_number,
8508 p_kle_id => ln_fa_id,
8509 p_dnz_chr_id => l_clev_rec.dnz_chr_id);
8510 -- Check if activity started successfully
8511 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8512 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8513 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8514 RAISE OKL_API.G_EXCEPTION_ERROR;
8515 END IF;
8516 END IF;
8517 -- Validate Line Style id and get the line type code
8518 -- and line style type for further processing
8519 validate_lse_id(p_clev_rec => l_clev_rec,
8520 x_return_status => x_return_status,
8521 x_lty_code => l_lty_code,
8522 x_lse_type => l_lse_type);
8523 -- Check if activity started successfully
8524 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8525 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8526 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8527 RAISE OKL_API.G_EXCEPTION_ERROR;
8528 END IF;
8529 -- Validate the Dnz_Chr_id
8530 validate_dnz_chr_id(p_clev_rec => l_clev_rec,
8531 x_return_status => x_return_status);
8532 -- Check if activity started successfully
8533 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8534 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8535 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8536 RAISE OKL_API.G_EXCEPTION_ERROR;
8537 END IF;
8538 END IF;
8539 -- Modified by rravikir
8540 -- Call to Accounting Util package to address Multi Currency requirement
8541 -- Start
8542 /*
8543 -- nnirnaka 12/24/02 commented this out as this already happens in
8544 -- contract line update
8545
8546 IF (l_klev_rec.capital_reduction <> OKL_API.G_MISS_NUM AND
8547 l_klev_rec.capital_reduction IS NOT NULL) THEN
8548 capital_reduction := l_klev_rec.capital_reduction;
8549 l_klev_rec.capital_reduction :=
8550 OKL_ACCOUNTING_UTIL.CROSS_CURRENCY_ROUND_AMOUNT(l_klev_rec.capital_reduction,
8551 l_clev_rec.currency_code);
8552
8553 IF (capital_reduction <> 0 AND l_klev_rec.capital_reduction = 0) THEN
8554 OKL_API.set_message(p_app_name => G_APP_NAME,
8555 p_msg_name => G_AMOUNT_ROUNDING,
8556 p_token1 => 'AMT',
8557 p_token1_value => to_char(capital_reduction));
8558 RAISE G_EXCEPTION_HALT_VALIDATION;
8559 END IF;
8560 END IF;
8561
8562 IF (l_klev_rec.tradein_amount <> OKL_API.G_MISS_NUM AND
8563 l_klev_rec.tradein_amount IS NOT NULL) THEN
8564 tradein_amount := l_klev_rec.tradein_amount;
8565 l_klev_rec.tradein_amount :=
8566 OKL_ACCOUNTING_UTIL.CROSS_CURRENCY_ROUND_AMOUNT(l_klev_rec.tradein_amount,
8567 l_clev_rec.currency_code);
8568
8569 IF (tradein_amount <> 0 AND l_klev_rec.tradein_amount = 0) THEN
8570 OKL_API.set_message(p_app_name => G_APP_NAME,
8571 p_msg_name => G_AMOUNT_ROUNDING,
8572 p_token1 => 'AMT',
8573 p_token1_value => to_char(tradein_amount));
8574 RAISE G_EXCEPTION_HALT_VALIDATION;
8575 END IF;
8576 END IF;
8577
8578 -- End Modification for Multi Currency
8579 */
8580
8581 -- Updating of finanical Asset Lines which is the top Line
8582 -- While Updating the cle_id will be null, chr_id will be not null
8583 -- and also the dnz_chr_id will be not null.Lse_id given will also helps
8584 -- to decide that this line is finanical Asset Line
8585 IF (l_clev_rec.cle_id = OKL_API.G_MISS_NUM OR
8586 l_clev_rec.cle_id IS NULL) AND
8587 (l_clev_rec.dnz_chr_id IS NOT NULL OR
8588 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
8589 (l_clev_rec.chr_id IS NOT NULL OR
8590 l_clev_rec.chr_id <> OKL_API.G_MISS_NUM) AND
8591 -- l_lty_code = G_FIN_LINE_LTY_CODE AND
8592 -- l_lse_type = G_TLS_TYPE THEN
8593 l_clev_rec.lse_id = G_FIN_LINE_LTY_ID THEN
8594
8595 -- Calling the Process
8596 update_financial_asset_line(p_api_version => p_api_version,
8597 p_init_msg_list => p_init_msg_list,
8598 x_return_status => x_return_status,
8599 x_msg_count => x_msg_count,
8600 x_msg_data => x_msg_data,
8601 p_clev_rec => l_clev_rec,
8602 p_klev_rec => l_klev_rec,
8603 x_clev_rec => x_clev_rec,
8604 x_klev_rec => x_klev_rec);
8605 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8606 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8607 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8608 RAISE OKL_API.G_EXCEPTION_ERROR;
8609 END IF;
8610 ELSE
8611 OKL_API.set_message(p_app_name => G_APP_NAME,
8612 p_msg_name => G_INVALID_CRITERIA,
8613 p_token1 => 'LINE_STYLE',
8614 p_token1_value => 'Financial Asset line');
8615 x_return_status := OKL_API.G_RET_STS_ERROR;
8616 RAISE OKL_API.G_EXCEPTION_ERROR;
8617 END IF;
8618 OKL_API.END_ACTIVITY (x_msg_count,
8619 x_msg_data );
8620 EXCEPTION
8621 WHEN OKL_API.G_EXCEPTION_ERROR THEN
8622 IF get_fa_id%ISOPEN THEN
8623 CLOSE get_fa_id;
8624 END IF;
8625 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8626 l_api_name,
8627 G_PKG_NAME,
8628 'OKL_API.G_RET_STS_ERROR',
8629 x_msg_count,
8630 x_msg_data,
8631 '_PVT');
8632 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8633 IF get_fa_id%ISOPEN THEN
8634 CLOSE get_fa_id;
8635 END IF;
8636 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8637 l_api_name,
8638 G_PKG_NAME,
8639 'OKL_API.G_RET_STS_UNEXP_ERROR',
8640 x_msg_count,
8641 x_msg_data,
8642 '_PVT');
8643 WHEN OTHERS THEN
8644 IF get_fa_id%ISOPEN THEN
8645 CLOSE get_fa_id;
8646 END IF;
8647 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8648 l_api_name,
8649 G_PKG_NAME,
8650 'OTHERS',
8651 x_msg_count,
8652 x_msg_data,
8653 '_PVT');
8654 END Update_fin_line;
8655 -------------------------------------------------------------------------------------------------------
8656 ----------------- Main Process for update of Financial Asset for Capital Cost -------------------------
8657 -------------------------------------------------------------------------------------------------------
8658 PROCEDURE Update_fin_cap_cost(
8659 p_api_version IN NUMBER,
8660 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
8661 x_return_status OUT NOCOPY VARCHAR2,
8662 x_msg_count OUT NOCOPY NUMBER,
8663 x_msg_data OUT NOCOPY VARCHAR2,
8664 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
8665 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
8666 p_clev_rec IN clev_rec_type,
8667 p_klev_rec IN klev_rec_type,
8668 x_clev_rec OUT NOCOPY clev_rec_type,
8669 x_klev_rec OUT NOCOPY klev_rec_type) IS
8670 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_FIN_CAP_COST';
8671 l_clev_rec clev_rec_type := p_clev_rec;
8672 l_klev_rec klev_rec_type := p_klev_rec;
8673 lx_clev_rec clev_rec_type;
8674 lx_klev_rec klev_rec_type;
8675 CURSOR c_get_lse_id_sts(p_top_line_id OKC_K_LINES_V.ID%TYPE) IS
8676 SELECT lse.id,
8677 cle.sts_code
8678 FROM okc_subclass_top_line stl,
8679 okc_line_styles_b lse,
8680 okc_k_lines_v cle
8681 WHERE cle.id = p_top_line_id
8682 AND cle.lse_id = lse.id
8683 AND lse.lty_code = G_FIN_LINE_LTY_CODE
8684 AND lse.lse_parent_id is null
8685 AND lse.lse_type = G_TLS_TYPE
8686 AND lse.id = stl.lse_id
8687 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
8688
8689 --Bug# 8652738
8690 CURSOR l_chk_rbk_csr(p_chr_id IN NUMBER) is
8691 SELECT '!'
8692 FROM okc_k_headers_b CHR,
8693 okl_trx_contracts ktrx
8694 WHERE ktrx.khr_id_new = chr.id
8695 AND ktrx.tsu_code = 'ENTERED'
8696 AND ktrx.rbr_code is NOT NULL
8697 AND ktrx.tcn_type = 'TRBK'
8698 AND ktrx.representation_type = 'PRIMARY'
8699 AND chr.id = p_chr_id
8700 AND chr.orig_system_source_code = 'OKL_REBOOK';
8701
8702 l_rbk_khr VARCHAR2(1) DEFAULT '?';
8703
8704 BEGIN
8705 x_return_status := OKL_API.G_RET_STS_SUCCESS;
8706 -- Call start_activity to create savepoint, check compatibility
8707 -- and initialize message list
8708 x_return_status := OKL_API.START_ACTIVITY (
8709 l_api_name
8710 ,p_init_msg_list
8711 ,'_PVT'
8712 ,x_return_status);
8713 -- Check if activity started successfully
8714 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8715 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8716 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8717 RAISE OKL_API.G_EXCEPTION_ERROR;
8718 END IF;
8719 OPEN c_get_lse_id_sts(p_top_line_id => l_clev_rec.id);
8720 FETCH c_get_lse_id_sts INTO l_clev_rec.lse_id,
8721 l_clev_rec.sts_code;
8722 -- 4414408
8723 IF c_get_lse_id_sts%NOTFOUND THEN
8724 OKL_API.set_message(p_app_name => G_APP_NAME,
8725 p_msg_name => G_LINE_RECORD);
8726 RAISE OKL_API.G_EXCEPTION_ERROR;
8727 END IF;
8728 CLOSE c_get_lse_id_sts;
8729 -- Here we update the capital Amount for the Top line of klev_rec
8730 --Bug# 3877032 :
8731 --IF (l_klev_rec.capital_reduction_percent IS NULL OR
8732 --l_klev_rec.capital_reduction_percent = OKL_API.G_MISS_NUM ) AND
8733 --(l_klev_rec.capital_reduction IS NULL OR
8734 --l_klev_rec.capital_reduction = OKL_API.G_MISS_NUM ) AND
8735 --(l_klev_rec.tradein_amount IS NULL OR
8736 --l_klev_rec.tradein_amount = OKL_API.G_MISS_NUM ) THEN
8737
8738 IF l_klev_rec.capital_reduction_percent = OKL_API.G_MISS_NUM AND
8739 l_klev_rec.capital_reduction = OKL_API.G_MISS_NUM AND
8740 l_klev_rec.tradein_amount = OKL_API.G_MISS_NUM THEN
8741 -- Updating of finanical Asset Lines with all the values
8742 Update_fin_line(p_api_version => p_api_version,
8743 p_init_msg_list => p_init_msg_list,
8744 x_return_status => x_return_status,
8745 x_msg_count => x_msg_count,
8746 x_msg_data => x_msg_data,
8747 P_new_yn => P_new_yn,
8748 p_asset_number => p_asset_number,
8749 p_clev_rec => l_clev_rec,
8750 p_klev_rec => l_klev_rec,
8751 x_clev_rec => x_clev_rec,
8752 x_klev_rec => x_klev_rec,
8753 p_validate_fin_line => OKL_API.G_TRUE); -- 4414408
8754 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8755 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8756 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8757 RAISE OKL_API.G_EXCEPTION_ERROR;
8758 END IF;
8759 ELSE
8760 -- Here we update the capital Amount for the Top line of klev_rec
8761 -- But further we first have to update the top line with values
8762 -- and then call the formula enigne which will calculat the capital amount
8763 -- and update the top line again, we have to take this route because we
8764 -- will have to depend on Formula engine which in turn will calculate
8765 -- by querying the data.
8766 Update_fin_line(p_api_version => p_api_version,
8767 p_init_msg_list => p_init_msg_list,
8768 x_return_status => x_return_status,
8769 x_msg_count => x_msg_count,
8770 x_msg_data => x_msg_data,
8771 P_new_yn => P_new_yn,
8772 p_asset_number => p_asset_number,
8773 p_clev_rec => l_clev_rec,
8774 p_klev_rec => l_klev_rec,
8775 x_clev_rec => x_clev_rec,
8776 x_klev_rec => x_klev_rec,
8777 p_validate_fin_line => OKL_API.G_TRUE);
8778 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8779 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8780 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8781 RAISE OKL_API.G_EXCEPTION_ERROR;
8782 END IF;
8783 OKL_EXECUTE_FORMULA_PUB.execute(p_api_version => p_api_version,
8784 p_init_msg_list => p_init_msg_list,
8785 x_return_status => x_return_status,
8786 x_msg_count => x_msg_count,
8787 x_msg_data => x_msg_data,
8788 p_formula_name => G_FORMULA_CAP,
8789 p_contract_id => x_clev_rec.dnz_chr_id,
8790 p_line_id => x_clev_rec.id,
8791 x_value => x_klev_rec.capital_amount);
8792 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8793 OKL_API.set_message(p_app_name => G_APP_NAME,
8794 p_msg_name => G_CALC_AMOUNT,
8795 p_token1 => G_AMT_TOKEN,
8796 p_token1_value => 'Capital Amount');
8797 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8798 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8799 OKL_API.set_message(p_app_name => G_APP_NAME,
8800 p_msg_name => G_CALC_AMOUNT,
8801 p_token1 => G_AMT_TOKEN,
8802 p_token1_value => 'Capital Amount');
8803 RAISE OKL_API.G_EXCEPTION_ERROR;
8804 END IF;
8805 -- Updating of finanical Asset Lines with all the values
8806 Update_fin_line(p_api_version => p_api_version,
8807 p_init_msg_list => p_init_msg_list,
8808 x_return_status => x_return_status,
8809 x_msg_count => x_msg_count,
8810 x_msg_data => x_msg_data,
8811 P_new_yn => P_new_yn,
8812 p_asset_number => p_asset_number,
8813 p_clev_rec => x_clev_rec,
8814 p_klev_rec => x_klev_rec,
8815 x_clev_rec => lx_clev_rec,
8816 x_klev_rec => lx_klev_rec,
8817 p_validate_fin_line => OKL_API.G_TRUE);
8818 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8819 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8820 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8821 RAISE OKL_API.G_EXCEPTION_ERROR;
8822 END IF;
8823
8824 --Bug# 8652738
8825 -- Recalculate Asset Depreciation cost when down payment is updated
8826 l_rbk_khr := '?';
8827 OPEN l_chk_rbk_csr (p_chr_id => x_clev_rec.dnz_chr_id);
8828 FETCH l_chk_rbk_csr INTO l_rbk_khr;
8829 CLOSE l_chk_rbk_csr;
8830
8831 IF l_rbk_khr = '!' Then
8832
8833 OKL_ACTIVATE_ASSET_PVT.recalculate_asset_cost
8834 (p_api_version => p_api_version,
8835 p_init_msg_list => p_init_msg_list,
8836 x_return_status => x_return_status,
8837 x_msg_count => x_msg_count,
8838 x_msg_data => x_msg_data,
8839 p_chr_id => x_clev_rec.dnz_chr_id,
8840 p_cle_id => x_clev_rec.id
8841 );
8842
8843 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8844 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8845 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8846 RAISE OKL_API.G_EXCEPTION_ERROR;
8847 END IF;
8848
8849 END IF;
8850 --Bug# 8652738
8851
8852 x_clev_rec := lx_clev_rec;
8853 x_klev_rec := lx_klev_rec;
8854 END IF;
8855 -- We need to change the status of the header whenever there is updating happening
8856 -- after the contract status is approved
8857 IF (x_clev_rec.dnz_chr_id is NOT NULL) AND
8858 (x_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
8859 --cascade edit status on to lines
8860 okl_contract_status_pub.cascade_lease_status_edit
8861 (p_api_version => p_api_version,
8862 p_init_msg_list => p_init_msg_list,
8863 x_return_status => x_return_status,
8864 x_msg_count => x_msg_count,
8865 x_msg_data => x_msg_data,
8866 p_chr_id => x_clev_rec.dnz_chr_id);
8867 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8868 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8869 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8870 RAISE OKL_API.G_EXCEPTION_ERROR;
8871 END IF;
8872 END IF;
8873 EXCEPTION
8874 WHEN OKL_API.G_EXCEPTION_ERROR THEN
8875 IF c_get_lse_id_sts%ISOPEN THEN
8876 CLOSE c_get_lse_id_sts;
8877 END IF;
8878 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8879 l_api_name,
8880 G_PKG_NAME,
8881 'OKL_API.G_RET_STS_ERROR',
8882 x_msg_count,
8883 x_msg_data,
8884 '_PVT');
8885 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8886 IF c_get_lse_id_sts%ISOPEN THEN
8887 CLOSE c_get_lse_id_sts;
8888 END IF;
8889 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8890 l_api_name,
8891 G_PKG_NAME,
8892 'OKL_API.G_RET_STS_UNEXP_ERROR',
8893 x_msg_count,
8894 x_msg_data,
8895 '_PVT');
8896 WHEN OTHERS THEN
8897 IF c_get_lse_id_sts%ISOPEN THEN
8898 CLOSE c_get_lse_id_sts;
8899 END IF;
8900 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8901 l_api_name,
8902 G_PKG_NAME,
8903 'OTHERS',
8904 x_msg_count,
8905 x_msg_data,
8906 '_PVT');
8907 END Update_fin_cap_cost;
8908 -----------------------------------------------------------------------------------
8909 -- Start of Commnets
8910 -- Badrinath Kuchibholta
8911 -- Procedure Name : oec_calc_upd_fin_rec
8912 -- Description : oec_calc_upd_fin_rec
8913 -- Business Rules :
8914 -- Parameters :
8915 -- Version : 1.0
8916 -- End of Commnets
8917
8918 PROCEDURE oec_calc_upd_fin_rec(
8919 p_api_version IN NUMBER,
8920 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
8921 x_return_status OUT NOCOPY VARCHAR2,
8922 x_msg_count OUT NOCOPY NUMBER,
8923 x_msg_data OUT NOCOPY VARCHAR2,
8924 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
8925 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
8926 p_top_line_id IN OKC_K_LINES_V.ID%TYPE,
8927 p_dnz_chr_id IN OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
8928 x_fin_clev_rec OUT NOCOPY clev_rec_type,
8929 x_fin_klev_rec OUT NOCOPY klev_rec_type,
8930 x_oec OUT NOCOPY OKL_K_LINES_V.OEC%TYPE,
8931 p_validate_fin_line IN VARCHAR2 DEFAULT OKL_API.G_TRUE) IS
8932
8933 ln_oec OKL_K_LINES_V.OEC%TYPE := 0;
8934 -- ln_top_line_id OKC_K_LINES_V.CLE_ID%TYPE := 0;
8935 l_update_clev_rec clev_rec_type;
8936 l_update_klev_rec klev_rec_type;
8937
8938 -- #4414408 Top line ID is now passed to the API
8939 /*
8940 -- To Find out the Top line ID
8941 CURSOR c_model_top_line(p_model_line_id OKC_K_LINES_V.ID%TYPE,
8942 p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
8943 SELECT cle.cle_id
8944 FROM okc_subclass_top_line stl,
8945 okc_line_styles_b lse2,
8946 okc_line_styles_b lse1,
8947 okc_k_items_v cim,
8948 okc_k_lines_v cle
8949 WHERE cle.id = p_model_line_id
8950 AND cle.dnz_chr_id = p_dnz_chr_id
8951 AND cle.id = cim.cle_id
8952 AND cle.dnz_chr_id = cim.dnz_chr_id
8953 AND cle.lse_id = lse1.id
8954 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
8955 AND lse1.lse_parent_id = lse2.id
8956 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
8957 AND lse2.id = stl.lse_id
8958 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE,G_QUOTE_SCS_CODE);
8959 */
8960 BEGIN
8961 -- initialize return status
8962 x_return_status := OKL_API.G_RET_STS_SUCCESS;
8963 /*
8964 OPEN c_model_top_line(p_model_line_id => p_model_line_id,
8965 p_dnz_chr_id => p_dnz_chr_id);
8966 FETCH c_model_top_line INTO ln_top_line_id;
8967 -- #4414408 Moved the IF statement below fetch statement
8968 IF c_model_top_line%NOTFOUND THEN
8969 OKL_API.set_message(p_app_name => G_APP_NAME,
8970 p_msg_name => G_NO_MATCHING_RECORD,
8971 p_token1 => G_COL_NAME_TOKEN,
8972 p_token1_value => 'cle_id');
8973 RAISE G_EXCEPTION_HALT_VALIDATION;
8974 END IF;
8975 -- #4414408 This condition will never be met
8976 -- IF (c_model_top_line%ROWCOUNT > 1) THEN
8977 -- OKL_API.set_message(p_app_name => G_APP_NAME,
8978 -- p_msg_name => 'More than one',
8979 -- p_token1 => 'Model line',
8980 -- p_token1_value => 'cle_id');
8981 -- RAISE G_EXCEPTION_HALT_VALIDATION;
8982 -- END IF;
8983
8984 CLOSE c_model_top_line;
8985 */
8986 -- to get the OEC
8987 /*
8988 x_oec := OKL_SEEDED_FUNCTIONS_PVT.LINE_OEC(p_dnz_chr_id => p_dnz_chr_id,
8989 p_cle_id => ln_top_line_id);
8990 */
8991 OKL_EXECUTE_FORMULA_PUB.execute(p_api_version => p_api_version,
8992 p_init_msg_list => p_init_msg_list,
8993 x_return_status => x_return_status,
8994 x_msg_count => x_msg_count,
8995 x_msg_data => x_msg_data,
8996 p_formula_name => G_FORMULA_OEC,
8997 p_contract_id => p_dnz_chr_id,
8998 p_line_id => p_top_line_id,
8999 x_value => x_oec);
9000
9001 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9002 OKL_API.set_message(p_app_name => G_APP_NAME,
9003 p_msg_name => G_CALC_AMOUNT,
9004 p_token1 => G_AMT_TOKEN,
9005 p_token1_value => 'OEC');
9006 RAISE G_EXCEPTION_HALT_VALIDATION;
9007 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9008 OKL_API.set_message(p_app_name => G_APP_NAME,
9009 p_msg_name => G_CALC_AMOUNT,
9010 p_token1 => G_AMT_TOKEN,
9011 p_token1_value => 'OEC');
9012 RAISE G_EXCEPTION_HALT_VALIDATION;
9013 END IF;
9014 -- To Get the cle top Line Record
9015 x_return_status := get_rec_clev(p_top_line_id, -- 4414408
9016 l_update_clev_rec);
9017 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9018 OKL_API.set_message(p_app_name => G_APP_NAME,
9019 p_msg_name => G_FETCHING_INFO,
9020 p_token1 => G_REC_NAME_TOKEN,
9021 p_token1_value => 'OKC_K_LINES_V Record');
9022 RAISE G_EXCEPTION_HALT_VALIDATION;
9023 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9024 OKL_API.set_message(p_app_name => G_APP_NAME,
9025 p_msg_name => G_FETCHING_INFO,
9026 p_token1 => G_REC_NAME_TOKEN,
9027 p_token1_value => 'OKC_K_LINES_V Record');
9028 RAISE G_EXCEPTION_HALT_VALIDATION;
9029 END IF;
9030 -- To Get the kle top Line Record
9031 x_return_status := get_rec_klev(p_top_line_id, -- 4414408
9032 l_update_klev_rec);
9033 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9034 OKL_API.set_message(p_app_name => G_APP_NAME,
9035 p_msg_name => G_FETCHING_INFO,
9036 p_token1 => G_REC_NAME_TOKEN,
9037 p_token1_value => 'OKL_K_LINES_V Record');
9038 RAISE G_EXCEPTION_HALT_VALIDATION;
9039 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9040 OKL_API.set_message(p_app_name => G_APP_NAME,
9041 p_msg_name => G_FETCHING_INFO,
9042 p_token1 => G_REC_NAME_TOKEN,
9043 p_token1_value => 'OKL_K_LINES_V Record');
9044 RAISE G_EXCEPTION_HALT_VALIDATION;
9045 END IF;
9046 IF l_update_klev_rec.id <> l_update_clev_rec.id THEN
9047 OKL_API.set_message(p_app_name => G_APP_NAME,
9048 p_msg_name => G_LINE_RECORD);
9049 RAISE G_EXCEPTION_HALT_VALIDATION;
9050 END IF;
9051 l_update_klev_rec.oec := x_oec;
9052
9053 -- Modified by rravikir
9054 -- Call to Accounting Util package to address Multi Currency requirement
9055 -- Start
9056 l_update_klev_rec.oec :=
9057 OKL_ACCOUNTING_UTIL.CROSS_CURRENCY_ROUND_AMOUNT(l_update_klev_rec.oec,
9058 l_update_clev_rec.currency_code);
9059
9060 IF (x_oec <> 0 AND l_update_klev_rec.oec = 0) THEN
9061 OKL_API.set_message(p_app_name => G_APP_NAME,
9062 p_msg_name => G_AMOUNT_ROUNDING,
9063 p_token1 => 'AMT',
9064 p_token1_value => to_char(x_oec));
9065 RAISE G_EXCEPTION_HALT_VALIDATION;
9066 END IF;
9067
9068 -- End Modification for Multi Currency
9069
9070 Update_fin_line(p_api_version => p_api_version,
9071 p_init_msg_list => p_init_msg_list,
9072 x_return_status => x_return_status,
9073 x_msg_count => x_msg_count,
9074 x_msg_data => x_msg_data,
9075 P_new_yn => P_new_yn,
9076 p_asset_number => p_asset_number,
9077 p_clev_rec => l_update_clev_rec,
9078 p_klev_rec => l_update_klev_rec,
9079 x_clev_rec => x_fin_clev_rec,
9080 x_klev_rec => x_fin_klev_rec,
9081 p_validate_fin_line => p_validate_fin_line); -- 4414408
9082 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9083 RAISE G_EXCEPTION_HALT_VALIDATION;
9084 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9085 RAISE G_EXCEPTION_HALT_VALIDATION;
9086 END IF;
9087 EXCEPTION
9088 WHEN G_EXCEPTION_STOP_VALIDATION then
9089 -- Notify Error
9090 x_return_status := OKL_API.G_RET_STS_ERROR;
9091 WHEN G_EXCEPTION_HALT_VALIDATION then
9092 -- If the cursor is open then it has to be closed
9093 -- 4414408
9094 -- IF c_model_top_line%ISOPEN THEN
9095 -- CLOSE c_model_top_line;
9096 -- END IF;
9097 -- notify caller of an error
9098 x_return_status := OKL_API.G_RET_STS_ERROR;
9099 WHEN OTHERS THEN
9100 -- store SQL error message on message stack
9101 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
9102 p_msg_name => G_UNEXPECTED_ERROR,
9103 p_token1 => G_SQLCODE_TOKEN,
9104 p_token1_value => SQLCODE,
9105 p_token2 => G_SQLERRM_TOKEN,
9106 p_token2_value => SQLERRM);
9107 -- If the cursor is open then it has to be closed
9108 -- 4414408
9109 -- IF c_model_top_line%ISOPEN THEN
9110 -- CLOSE c_model_top_line;
9111 -- END IF;
9112 -- notify caller of an error as UNEXPETED error
9113 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
9114 END oec_calc_upd_fin_rec;
9115 -----------------------------------------------------------------------------------
9116 -- Start of Commnets
9117 -- Badrinath Kuchibholta
9118 -- Procedure Name : cap_amt_calc_upd_fin_rec
9119 -- Description : cap_amt_calc_upd_fin_rec
9120 -- Business Rules :
9121 -- Parameters :
9122 -- Version : 1.0
9123 -- End of Commnets
9124
9125 PROCEDURE cap_amt_calc_upd_fin_rec(
9126 p_api_version IN NUMBER,
9127 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
9128 x_return_status OUT NOCOPY VARCHAR2,
9129 x_msg_count OUT NOCOPY NUMBER,
9130 x_msg_data OUT NOCOPY VARCHAR2,
9131 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
9132 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
9133 p_top_line_id IN OKC_K_LINES_V.ID%TYPE, -- 4414408
9134 p_dnz_chr_id IN OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
9135 x_fin_clev_rec OUT NOCOPY clev_rec_type,
9136 x_fin_klev_rec OUT NOCOPY klev_rec_type,
9137 x_cap_amt OUT NOCOPY OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE,
9138 p_validate_fin_line IN VARCHAR2 DEFAULT OKL_API.G_TRUE) IS
9139
9140 ln_cap_amt OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
9141 -- ln_top_line_id OKC_K_LINES_V.CLE_ID%TYPE := 0;
9142 l_update_clev_rec clev_rec_type;
9143 l_update_klev_rec klev_rec_type;
9144 -- #4414408 Top line ID is a parameter passed to the API
9145 /*
9146 -- To Find out the Top line ID
9147 CURSOR c_model_top_line(p_model_line_id OKC_K_LINES_V.ID%TYPE,
9148 p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
9149 SELECT cle.cle_id
9150 FROM okc_subclass_top_line stl,
9151 okc_line_styles_b lse2,
9152 okc_line_styles_b lse1,
9153 okc_k_items_v cim,
9154 okc_k_lines_v cle
9155 WHERE cle.id = p_model_line_id
9156 AND cle.dnz_chr_id = p_dnz_chr_id
9157 AND cle.id = cim.cle_id
9158 AND cle.dnz_chr_id = cim.dnz_chr_id
9159 AND cle.lse_id = lse1.id
9160 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
9161 AND lse1.lse_parent_id = lse2.id
9162 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
9163 AND lse2.id = stl.lse_id
9164 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
9165 */
9166
9167 BEGIN
9168 -- initialize return status
9169 x_return_status := OKL_API.G_RET_STS_SUCCESS;
9170 /*
9171 OPEN c_model_top_line(p_model_line_id => p_model_line_id,
9172 p_dnz_chr_id => p_dnz_chr_id);
9173 FETCH c_model_top_line INTO ln_top_line_id;
9174 -- #4414408 Moved the IF statement below fetch statement
9175 IF c_model_top_line%NOTFOUND THEN
9176 OKL_API.set_message(p_app_name => G_APP_NAME,
9177 p_msg_name => G_NO_MATCHING_RECORD,
9178 p_token1 => G_COL_NAME_TOKEN,
9179 p_token1_value => 'cle_id');
9180 RAISE G_EXCEPTION_HALT_VALIDATION;
9181 END IF;
9182 -- #4414408 This condition will never be met
9183 -- IF (c_model_top_line%ROWCOUNT > 1) THEN
9184 -- OKL_API.set_message(p_app_name => G_APP_NAME,
9185 -- p_msg_name => 'More than one',
9186 -- p_token1 => 'Model line',
9187 -- p_token1_value => 'cle_id');
9188 -- RAISE G_EXCEPTION_HALT_VALIDATION;
9189 -- END IF;
9190 CLOSE c_model_top_line;
9191 */
9192 -- to get the Capital Amount
9193 /*
9194 x_cap_amt := OKL_FORMULA_FUNCTION_PVT.line_capitalamount(p_chr_id => p_dnz_chr_id,
9195 p_line_id => ln_top_line_id);
9196 */
9197 OKL_EXECUTE_FORMULA_PUB.execute(p_api_version => p_api_version,
9198 p_init_msg_list => p_init_msg_list,
9199 x_return_status => x_return_status,
9200 x_msg_count => x_msg_count,
9201 x_msg_data => x_msg_data,
9202 p_formula_name => G_FORMULA_CAP,
9203 p_contract_id => p_dnz_chr_id,
9204 p_line_id => p_top_line_id, -- 4414408
9205 x_value => x_cap_amt);
9206
9207 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9208 OKL_API.set_message(p_app_name => G_APP_NAME,
9209 p_msg_name => G_CALC_AMOUNT,
9210 p_token1 => G_AMT_TOKEN,
9211 p_token1_value => 'Capital Amount');
9212 RAISE G_EXCEPTION_HALT_VALIDATION;
9213 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9214 OKL_API.set_message(p_app_name => G_APP_NAME,
9215 p_msg_name => G_CALC_AMOUNT,
9216 p_token1 => G_AMT_TOKEN,
9217 p_token1_value => 'Capital Amount');
9218 RAISE G_EXCEPTION_HALT_VALIDATION;
9219 END IF;
9220
9221 -- To Get the cle top Line Record
9222 x_return_status := get_rec_clev(p_top_line_id, -- 4414408
9223 l_update_clev_rec);
9224 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9225 OKL_API.set_message(p_app_name => G_APP_NAME,
9226 p_msg_name => G_FETCHING_INFO,
9227 p_token1 => G_REC_NAME_TOKEN,
9228 p_token1_value => 'OKC_K_LINES_V Record');
9229 RAISE G_EXCEPTION_HALT_VALIDATION;
9230 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9231 OKL_API.set_message(p_app_name => G_APP_NAME,
9232 p_msg_name => G_FETCHING_INFO,
9233 p_token1 => G_REC_NAME_TOKEN,
9234 p_token1_value => 'OKC_K_LINES_V Record');
9235 RAISE G_EXCEPTION_HALT_VALIDATION;
9236 END IF;
9237 -- To Get the kle top Line Record
9238 x_return_status := get_rec_klev(p_top_line_id, -- 4414408
9239 l_update_klev_rec);
9240 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9241 OKL_API.set_message(p_app_name => G_APP_NAME,
9242 p_msg_name => G_FETCHING_INFO,
9243 p_token1 => G_REC_NAME_TOKEN,
9244 p_token1_value => 'OKL_K_LINES_V Record');
9245 RAISE G_EXCEPTION_HALT_VALIDATION;
9246 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9247 OKL_API.set_message(p_app_name => G_APP_NAME,
9248 p_msg_name => G_FETCHING_INFO,
9249 p_token1 => G_REC_NAME_TOKEN,
9250 p_token1_value => 'OKL_K_LINES_V Record');
9251 RAISE G_EXCEPTION_HALT_VALIDATION;
9252 END IF;
9253 IF l_update_klev_rec.id <> l_update_clev_rec.id THEN
9254 OKL_API.set_message(p_app_name => G_APP_NAME,
9255 p_msg_name => G_LINE_RECORD);
9256 RAISE G_EXCEPTION_HALT_VALIDATION;
9257 END IF;
9258 l_update_klev_rec.capital_amount := x_cap_amt;
9259
9260 -- Modified by rravikir
9261 -- Call to Accounting Util package to address Multi Currency requirement
9262 -- Start
9263 l_update_klev_rec.capital_amount :=
9264 OKL_ACCOUNTING_UTIL.CROSS_CURRENCY_ROUND_AMOUNT(l_update_klev_rec.capital_amount,
9265 l_update_clev_rec.currency_code);
9266
9267 IF (x_cap_amt <> 0 AND l_update_klev_rec.capital_amount = 0) THEN
9268 OKL_API.set_message(p_app_name => G_APP_NAME,
9269 p_msg_name => G_AMOUNT_ROUNDING,
9270 p_token1 => 'AMT',
9271 p_token1_value => to_char(x_cap_amt));
9272 RAISE G_EXCEPTION_HALT_VALIDATION;
9273 END IF;
9274
9275 -- End Modification for Multi Currency
9276
9277 Update_fin_line(p_api_version => p_api_version,
9278 p_init_msg_list => p_init_msg_list,
9279 x_return_status => x_return_status,
9280 x_msg_count => x_msg_count,
9281 x_msg_data => x_msg_data,
9282 P_new_yn => P_new_yn,
9283 p_asset_number => p_asset_number,
9284 p_clev_rec => l_update_clev_rec,
9285 p_klev_rec => l_update_klev_rec,
9286 x_clev_rec => x_fin_clev_rec,
9287 x_klev_rec => x_fin_klev_rec,
9288 p_validate_fin_line => p_validate_fin_line); -- 4414408
9289 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9290 RAISE G_EXCEPTION_HALT_VALIDATION;
9291 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9292 RAISE G_EXCEPTION_HALT_VALIDATION;
9293 END IF;
9294 EXCEPTION
9295 WHEN G_EXCEPTION_STOP_VALIDATION then
9296 -- Notify Error
9297 x_return_status := OKL_API.G_RET_STS_ERROR;
9298 WHEN G_EXCEPTION_HALT_VALIDATION then
9299 -- If the cursor is open then it has to be closed
9300 -- IF c_model_top_line%ISOPEN THEN
9301 -- CLOSE c_model_top_line;
9302 -- END IF;
9303 -- notify caller of an error
9304 x_return_status := OKL_API.G_RET_STS_ERROR;
9305 WHEN OTHERS THEN
9306 -- store SQL error message on message stack
9307 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
9308 p_msg_name => G_UNEXPECTED_ERROR,
9309 p_token1 => G_SQLCODE_TOKEN,
9310 p_token1_value => SQLCODE,
9311 p_token2 => G_SQLERRM_TOKEN,
9312 p_token2_value => SQLERRM);
9313 -- If the cursor is open then it has to be closed
9314 -- IF c_model_top_line%ISOPEN THEN
9315 -- CLOSE c_model_top_line;
9316 -- END IF;
9317 -- notify caller of an error as UNEXPETED error
9318 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
9319 END cap_amt_calc_upd_fin_rec;
9320 -----------------------------------------------------------------------------------
9321 -- Start of Commnets
9322 -- Badrinath Kuchibholta
9323 -- Procedure Name : res_value_calc_upd_fin_rec
9324 -- Description : res_value_calc_upd_fin_rec
9325 -- Business Rules :
9326 -- Parameters :
9327 -- Version : 1.0
9328 -- End of Commnets
9329
9330 PROCEDURE res_value_calc_upd_fin_rec(
9331 p_api_version IN NUMBER,
9332 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
9333 x_return_status OUT NOCOPY VARCHAR2,
9334 x_msg_count OUT NOCOPY NUMBER,
9335 x_msg_data OUT NOCOPY VARCHAR2,
9336 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
9337 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
9338 p_top_line_id IN OKC_K_LINES_V.ID%TYPE, -- 4414408
9339 p_dnz_chr_id IN OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
9340 x_fin_clev_rec OUT NOCOPY clev_rec_type,
9341 x_fin_klev_rec OUT NOCOPY klev_rec_type,
9342 x_res_value OUT NOCOPY OKL_K_LINES_V.RESIDUAL_VALUE%TYPE,
9343 p_validate_fin_line IN VARCHAR2 DEFAULT OKL_API.G_TRUE) IS
9344
9345 ln_res_value OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
9346 -- ln_top_line_id OKC_K_LINES_V.CLE_ID%TYPE := 0;
9347 l_update_clev_rec clev_rec_type;
9348 l_update_klev_rec klev_rec_type;
9349 -- 4414408
9350 /*
9351 -- To Find out the Top line ID
9352 CURSOR c_model_top_line(p_model_line_id OKC_K_LINES_V.ID%TYPE,
9353 p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
9354 SELECT cle.cle_id
9355 FROM okc_subclass_top_line stl,
9356 okc_line_styles_b lse2,
9357 okc_line_styles_b lse1,
9358 okc_k_items_v cim,
9359 okc_k_lines_v cle
9360 WHERE cle.id = p_model_line_id
9361 AND cle.dnz_chr_id = p_dnz_chr_id
9362 AND cle.id = cim.cle_id
9363 AND cle.dnz_chr_id = cim.dnz_chr_id
9364 AND cle.lse_id = lse1.id
9365 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
9366 AND lse1.lse_parent_id = lse2.id
9367 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
9368 AND lse2.id = stl.lse_id
9369 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
9370 */
9371 BEGIN
9372 -- initialize return status
9373 x_return_status := OKL_API.G_RET_STS_SUCCESS;
9374 /*
9375 OPEN c_model_top_line(p_model_line_id => p_model_line_id,
9376 p_dnz_chr_id => p_dnz_chr_id);
9377 FETCH c_model_top_line INTO ln_top_line_id;
9378 -- #4414408 Moved the IF statement below fetch statement
9379 IF c_model_top_line%NOTFOUND THEN
9380 OKL_API.set_message(p_app_name => G_APP_NAME,
9381 p_msg_name => G_NO_MATCHING_RECORD,
9382 p_token1 => G_COL_NAME_TOKEN,
9383 p_token1_value => 'cle_id');
9384 RAISE G_EXCEPTION_HALT_VALIDATION;
9385 END IF;
9386 -- #4414408 This condition will never be met
9387 -- IF (c_model_top_line%ROWCOUNT > 1) THEN
9388 -- OKL_API.set_message(p_app_name => G_APP_NAME,
9389 -- p_msg_name => 'More than one',
9390 -- p_token1 => 'Model line',
9391 -- p_token1_value => 'cle_id');
9392 -- RAISE G_EXCEPTION_HALT_VALIDATION;
9393 -- END IF;
9394 CLOSE c_model_top_line;
9395 */
9396 -- to get the Residual value
9397 /*
9398 x_res_value := OKL_SEEDED_FUNCTIONS_PVT.line_residualvalue(p_chr_id => p_dnz_chr_id,
9399 p_line_id => ln_top_line_id);
9400 */
9401
9402 OKL_EXECUTE_FORMULA_PUB.execute(p_api_version => p_api_version,
9403 p_init_msg_list => p_init_msg_list,
9404 x_return_status => x_return_status,
9405 x_msg_count => x_msg_count,
9406 x_msg_data => x_msg_data,
9407 p_formula_name => G_FORMULA_RES,
9408 p_contract_id => p_dnz_chr_id,
9409 p_line_id => p_top_line_id, -- 4414408
9410 x_value => x_res_value);
9411 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9412 OKL_API.set_message(p_app_name => G_APP_NAME,
9413 p_msg_name => G_CALC_AMOUNT,
9414 p_token1 => G_AMT_TOKEN,
9415 p_token1_value => 'Residual Value');
9416 RAISE G_EXCEPTION_HALT_VALIDATION;
9417 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9418 OKL_API.set_message(p_app_name => G_APP_NAME,
9419 p_msg_name => G_CALC_AMOUNT,
9420 p_token1 => G_AMT_TOKEN,
9421 p_token1_value => 'Residual Value');
9422 RAISE G_EXCEPTION_HALT_VALIDATION;
9423 END IF;
9424 -- To Get the cle top Line Record
9425 x_return_status := get_rec_clev(p_top_line_id, -- 4414408
9426 l_update_clev_rec);
9427 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9428 OKL_API.set_message(p_app_name => G_APP_NAME,
9429 p_msg_name => G_FETCHING_INFO,
9430 p_token1 => G_REC_NAME_TOKEN,
9431 p_token1_value => 'OKC_K_LINES_V Record');
9432 RAISE G_EXCEPTION_HALT_VALIDATION;
9433 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9434 OKL_API.set_message(p_app_name => G_APP_NAME,
9435 p_msg_name => G_FETCHING_INFO,
9436 p_token1 => G_REC_NAME_TOKEN,
9437 p_token1_value => 'OKC_K_LINES_V Record');
9438 RAISE G_EXCEPTION_HALT_VALIDATION;
9439 END IF;
9440 -- To Get the kle top Line Record
9441 x_return_status := get_rec_klev(p_top_line_id, -- 4414408
9442 l_update_klev_rec);
9443 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9444 OKL_API.set_message(p_app_name => G_APP_NAME,
9445 p_msg_name => G_FETCHING_INFO,
9446 p_token1 => G_REC_NAME_TOKEN,
9447 p_token1_value => 'OKL_K_LINES_V Record');
9448 RAISE G_EXCEPTION_HALT_VALIDATION;
9449 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9450 OKL_API.set_message(p_app_name => G_APP_NAME,
9451 p_msg_name => G_FETCHING_INFO,
9452 p_token1 => G_REC_NAME_TOKEN,
9453 p_token1_value => 'OKL_K_LINES_V Record');
9454 RAISE G_EXCEPTION_HALT_VALIDATION;
9455 END IF;
9456 IF l_update_klev_rec.id <> l_update_clev_rec.id THEN
9457 OKL_API.set_message(p_app_name => G_APP_NAME,
9458 p_msg_name => G_LINE_RECORD);
9459 RAISE G_EXCEPTION_HALT_VALIDATION;
9460 END IF;
9461 -- commented for multi currency requirement. No need to round the value, as
9462 -- it is taken care in the call to accounting util package called below.
9463 -- l_update_klev_rec.residual_value := round(x_res_value,2);
9464 l_update_klev_rec.residual_value := x_res_value;
9465
9466 -- Modified by rravikir
9467 -- Call to Accounting Util package to address Multi Currency requirement
9468 -- Start
9469 l_update_klev_rec.residual_value :=
9470 OKL_ACCOUNTING_UTIL.CROSS_CURRENCY_ROUND_AMOUNT(l_update_klev_rec.residual_value,
9471 l_update_clev_rec.currency_code);
9472
9473 IF (x_res_value <> 0 AND l_update_klev_rec.residual_value = 0) THEN
9474 OKL_API.set_message(p_app_name => G_APP_NAME,
9475 p_msg_name => G_AMOUNT_ROUNDING,
9476 p_token1 => 'AMT',
9477 p_token1_value => to_char(x_res_value));
9478 RAISE G_EXCEPTION_HALT_VALIDATION;
9479 END IF;
9480
9481 -- End Modification for Multi Currency
9482
9483 Update_fin_line(p_api_version => p_api_version,
9484 p_init_msg_list => p_init_msg_list,
9485 x_return_status => x_return_status,
9486 x_msg_count => x_msg_count,
9487 x_msg_data => x_msg_data,
9488 P_new_yn => P_new_yn,
9489 p_asset_number => p_asset_number,
9490 p_clev_rec => l_update_clev_rec,
9491 p_klev_rec => l_update_klev_rec,
9492 x_clev_rec => x_fin_clev_rec,
9493 x_klev_rec => x_fin_klev_rec,
9494 p_validate_fin_line => p_validate_fin_line); -- 4414408
9495 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9496 RAISE G_EXCEPTION_HALT_VALIDATION;
9497 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9498 RAISE G_EXCEPTION_HALT_VALIDATION;
9499 END IF;
9500 EXCEPTION
9501 WHEN G_EXCEPTION_STOP_VALIDATION then
9502 -- Notify Error
9503 x_return_status := OKL_API.G_RET_STS_ERROR;
9504 WHEN G_EXCEPTION_HALT_VALIDATION then
9505 -- If the cursor is open then it has to be closed
9506 -- IF c_model_top_line%ISOPEN THEN
9507 -- CLOSE c_model_top_line;
9508 -- END IF;
9509 -- notify caller of an error
9510 x_return_status := OKL_API.G_RET_STS_ERROR;
9511 WHEN OTHERS THEN
9512 -- store SQL error message on message stack
9513 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
9514 p_msg_name => G_UNEXPECTED_ERROR,
9515 p_token1 => G_SQLCODE_TOKEN,
9516 p_token1_value => SQLCODE,
9517 p_token2 => G_SQLERRM_TOKEN,
9518 p_token2_value => SQLERRM);
9519 -- If the cursor is open then it has to be closed
9520 -- IF c_model_top_line%ISOPEN THEN
9521 -- CLOSE c_model_top_line;
9522 -- END IF;
9523 -- notify caller of an error as UNEXPETED error
9524 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
9525 END res_value_calc_upd_fin_rec;
9526
9527 -----------------------------------------------------------------------------------
9528 -- Start of Commnets
9529 -- Badrinath Kuchibholta
9530 -- Procedure Name : res_value_calc_upd_fin_rec
9531 -- Description : res_value_calc_upd_fin_rec
9532 -- Business Rules :
9533 -- Parameters :
9534 -- Version : 1.0
9535 -- End of Commnets
9536
9537 PROCEDURE get_res_per_upd_fin_rec(
9538 p_api_version IN NUMBER,
9539 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
9540 x_return_status OUT NOCOPY VARCHAR2,
9541 x_msg_count OUT NOCOPY NUMBER,
9542 x_msg_data OUT NOCOPY VARCHAR2,
9543 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
9544 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
9545 p_res_value IN OKL_K_LINES_V.RESIDUAL_VALUE%TYPE,
9546 p_oec IN OKL_K_LINES_V.OEC%TYPE,
9547 p_top_line_id IN OKC_K_LINES_V.ID%TYPE,
9548 p_dnz_chr_id IN OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
9549 x_fin_clev_rec OUT NOCOPY clev_rec_type,
9550 x_fin_klev_rec OUT NOCOPY klev_rec_type,
9551 p_validate_fin_line IN VARCHAR2 DEFAULT OKL_API.G_TRUE) IS
9552
9553 ln_res_per OKL_K_LINES_V.RESIDUAL_PERCENTAGE%TYPE := 0;
9554 ln_top_line_id OKC_K_LINES_V.CLE_ID%TYPE := 0;
9555 l_update_clev_rec clev_rec_type;
9556 l_update_klev_rec klev_rec_type;
9557
9558 BEGIN
9559 -- initialize return status
9560 x_return_status := OKL_API.G_RET_STS_SUCCESS;
9561
9562 IF (p_dnz_chr_id IS NULL OR
9563 p_dnz_chr_id = OKL_API.G_MISS_NUM) OR
9564 (p_top_line_id IS NULL OR
9565 p_top_line_id = OKL_API.G_MISS_NUM) THEN
9566 OKL_API.set_message(p_app_name => G_APP_NAME,
9567 p_msg_name => G_REQUIRED_VALUE,
9568 p_token1 => G_COL_NAME_TOKEN,
9569 p_token1_value => 'Chr_id,top_line');
9570 RAISE G_EXCEPTION_STOP_VALIDATION;
9571 END IF;
9572 -- gboomina bug 6139003 - Start
9573 -- Modified this condition to calculate residual percent
9574 -- only for valid values
9575 IF (p_oec IS NOT NULL AND
9576 p_oec <> OKL_API.G_MISS_NUM) AND
9577 (p_res_value IS NOT NULL AND
9578 p_res_value <> OKL_API.G_MISS_NUM) THEN
9579 -- gboomina bug 6139003 - End
9580 --Bug# 4631549
9581 If p_oec = 0 then
9582 ln_res_per := 0;
9583 else
9584 ln_res_per := ROUND(p_res_value * 100/p_oec,2);
9585 end if;
9586 END IF;
9587 -- To Get the cle top Line Record
9588 x_return_status := get_rec_clev(p_top_line_id,
9589 l_update_clev_rec);
9590 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9591 OKL_API.set_message(p_app_name => G_APP_NAME,
9592 p_msg_name => G_FETCHING_INFO,
9593 p_token1 => G_REC_NAME_TOKEN,
9594 p_token1_value => 'OKC_K_LINES_V Record');
9595 RAISE G_EXCEPTION_HALT_VALIDATION;
9596 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9597 OKL_API.set_message(p_app_name => G_APP_NAME,
9598 p_msg_name => G_FETCHING_INFO,
9599 p_token1 => G_REC_NAME_TOKEN,
9600 p_token1_value => 'OKC_K_LINES_V Record');
9601 RAISE G_EXCEPTION_HALT_VALIDATION;
9602 END IF;
9603 -- To Get the kle top Line Record
9604 x_return_status := get_rec_klev(p_top_line_id,
9605 l_update_klev_rec);
9606 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9607 OKL_API.set_message(p_app_name => G_APP_NAME,
9608 p_msg_name => G_FETCHING_INFO,
9609 p_token1 => G_REC_NAME_TOKEN,
9610 p_token1_value => 'OKL_K_LINES_V Record');
9611 RAISE G_EXCEPTION_HALT_VALIDATION;
9612 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9613 OKL_API.set_message(p_app_name => G_APP_NAME,
9614 p_msg_name => G_FETCHING_INFO,
9615 p_token1 => G_REC_NAME_TOKEN,
9616 p_token1_value => 'OKL_K_LINES_V Record');
9617 RAISE G_EXCEPTION_HALT_VALIDATION;
9618 END IF;
9619 IF l_update_klev_rec.id <> l_update_clev_rec.id THEN
9620 OKL_API.set_message(p_app_name => G_APP_NAME,
9621 p_msg_name => G_LINE_RECORD);
9622 RAISE G_EXCEPTION_HALT_VALIDATION;
9623 END IF;
9624 l_update_klev_rec.residual_percentage := ln_res_per;
9625 Update_fin_line(p_api_version => p_api_version,
9626 p_init_msg_list => p_init_msg_list,
9627 x_return_status => x_return_status,
9628 x_msg_count => x_msg_count,
9629 x_msg_data => x_msg_data,
9630 P_new_yn => P_new_yn,
9631 p_asset_number => p_asset_number,
9632 p_clev_rec => l_update_clev_rec,
9633 p_klev_rec => l_update_klev_rec,
9634 x_clev_rec => x_fin_clev_rec,
9635 x_klev_rec => x_fin_klev_rec,
9636 p_validate_fin_line => p_validate_fin_line); -- 4414408
9637 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9638 RAISE G_EXCEPTION_HALT_VALIDATION;
9639 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9640 RAISE G_EXCEPTION_HALT_VALIDATION;
9641 END IF;
9642 EXCEPTION
9643 WHEN G_EXCEPTION_STOP_VALIDATION then
9644 -- Notify Error
9645 x_return_status := OKL_API.G_RET_STS_ERROR;
9646 WHEN G_EXCEPTION_HALT_VALIDATION then
9647 -- notify caller of an error
9648 x_return_status := OKL_API.G_RET_STS_ERROR;
9649 WHEN OTHERS THEN
9650 -- store SQL error message on message stack
9651 OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
9652 p_msg_name => G_UNEXPECTED_ERROR,
9653 p_token1 => G_SQLCODE_TOKEN,
9654 p_token1_value => SQLCODE,
9655 p_token2 => G_SQLERRM_TOKEN,
9656 p_token2_value => SQLERRM);
9657 -- notify caller of an error as UNEXPETED error
9658 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
9659 END get_res_per_upd_fin_rec;
9660 -------------------------------------------------------------------------------------------------------
9661 ----------------------------- Main Process for Creation of model Line -----------------------------------
9662 -------------------------------------------------------------------------------------------------------
9663 PROCEDURE create_model_line(
9664 p_api_version IN NUMBER,
9665 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
9666 x_return_status OUT NOCOPY VARCHAR2,
9667 x_msg_count OUT NOCOPY NUMBER,
9668 x_msg_data OUT NOCOPY VARCHAR2,
9669 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
9670 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
9671 p_clev_rec IN clev_rec_type,
9672 p_klev_rec IN klev_rec_type,
9673 p_cimv_rec IN cimv_rec_type,
9674 x_clev_rec OUT NOCOPY clev_rec_type,
9675 x_klev_rec OUT NOCOPY klev_rec_type,
9676 x_cimv_rec OUT NOCOPY cimv_rec_type) IS
9677 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_MODEL_LINES';
9678 l_clev_rec clev_rec_type;
9679 -- Variables for validation of line style
9680 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
9681 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
9682 l_update_clev_rec clev_rec_type;
9683 l_update_klev_rec klev_rec_type;
9684 ln_lse_id OKC_LINE_STYLES_V.ID%TYPE := OKL_API.G_MISS_NUM;
9685 l_qty OKC_K_ITEMS_V.NUMBER_OF_ITEMS%TYPE := 0;
9686
9687 BEGIN
9688 x_return_status := OKL_API.G_RET_STS_SUCCESS;
9689 -- Call start_activity to create savepoint, check compatibility
9690 -- and initialize message list
9691 x_return_status := OKL_API.START_ACTIVITY (
9692 l_api_name
9693 ,p_init_msg_list
9694 ,'_PVT'
9695 ,x_return_status);
9696 -- Check if activity started successfully
9697 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9698 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9699 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9700 RAISE OKL_API.G_EXCEPTION_ERROR;
9701 END IF;
9702 -- 4414408 The validation is now performed in create_all_line procedure
9703 /*
9704 -- To Check We Got the Valid info
9705 IF UPPER(p_new_yn) NOT IN ('Y','N') OR
9706 (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
9707 UPPER(p_new_yn) IS NULL) THEN
9708 OKL_API.set_message(p_app_name => G_APP_NAME,
9709 p_msg_name => G_INVALID_YN,
9710 p_token1 => G_COL_NAME_TOKEN,
9711 p_token1_value => 'p_new_yn');
9712 -- Halt Validation
9713 RAISE OKL_API.G_EXCEPTION_ERROR;
9714 END IF;
9715 -- Validate to see if the asset_number given is not null
9716 -- and also Validate asset_number does not exists
9717 -- in OKL_TXL_ASSETS_V
9718 IF UPPER(p_new_yn) = 'Y' THEN
9719 validate_new_asset_number(x_return_status => x_return_status,
9720 p_asset_number => p_asset_number,
9721 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
9722 -- Check if activity started successfully
9723 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9724 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9725 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9726 RAISE OKL_API.G_EXCEPTION_ERROR;
9727 END IF;
9728 ELSE
9729 validate_new_asset_number(x_return_status => x_return_status,
9730 p_asset_number => p_asset_number,
9731 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
9732 -- Check if activity ended successfully
9733 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9734 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9735 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9736 RAISE OKL_API.G_EXCEPTION_ERROR;
9737 END IF;
9738 END IF;
9739 */
9740 -- 4414408 The validations in Validate_lse_id and Validate_dnz_chr_id are redundant
9741 /*
9742 -- Validate Line Style id and get the line type code
9743 -- and line style type for further processing
9744 validate_lse_id(p_clev_rec => p_clev_rec,
9745 x_return_status => x_return_status,
9746 x_lty_code => l_lty_code,
9747 x_lse_type => l_lse_type);
9748 -- Check if activity started successfully
9749 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9750 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9751 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9752 RAISE OKL_API.G_EXCEPTION_ERROR;
9753 END IF;
9754 -- Validate the Dnz_Chr_id
9755 validate_dnz_chr_id(p_clev_rec => p_clev_rec,
9756 x_return_status => x_return_status);
9757 -- Check if activity started successfully
9758 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9759 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9760 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9761 RAISE OKL_API.G_EXCEPTION_ERROR;
9762 END IF;
9763 */
9764 -- We have to Populate the Model Line Record
9765 l_clev_rec := p_clev_rec;
9766 -- Now we are Creating Model Line
9767 -- Here we have have Dnz_Chr_id ,lse_id and cle_id
9768 -- The Record Should have the cle_id
9769 -- if the given line style is Model Line
9770 IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
9771 l_clev_rec.chr_id IS NULL) AND
9772 (l_clev_rec.dnz_chr_id IS NOT NULL OR
9773 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
9774 (l_clev_rec.cle_id IS NOT NULL OR
9775 l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
9776 -- #414408
9777 -- l_lty_code = G_MODEL_LINE_LTY_CODE AND
9778 -- l_lse_type = G_SLS_TYPE THEN
9779 l_clev_rec.lse_id = G_MODEL_LINE_LTY_ID THEN
9780 create_model_line_item(p_api_version => p_api_version,
9781 p_init_msg_list => p_init_msg_list,
9782 x_return_status => x_return_status,
9783 x_msg_count => x_msg_count,
9784 x_msg_data => x_msg_data,
9785 -- p_lty_code => l_lty_code,
9786 -- #4414408 redundant parameter
9787 p_clev_rec => l_clev_rec,
9788 p_klev_rec => p_klev_rec,
9789 p_cimv_rec => p_cimv_rec,
9790 x_clev_rec => x_clev_rec,
9791 x_klev_rec => x_klev_rec,
9792 x_cimv_rec => x_cimv_rec);
9793 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9794 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9795 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9796 RAISE OKL_API.G_EXCEPTION_ERROR;
9797 END IF;
9798 ELSE
9799 OKL_API.set_message(p_app_name => G_APP_NAME,
9800 p_msg_name => G_INVALID_CRITERIA,
9801 p_token1 => G_COL_NAME_TOKEN,
9802 p_token1_value => 'Model Asset line');
9803 x_return_status := OKL_API.G_RET_STS_ERROR;
9804 RAISE OKL_API.G_EXCEPTION_ERROR;
9805 END IF;
9806 OKL_API.END_ACTIVITY (x_msg_count,
9807 x_msg_data );
9808 EXCEPTION
9809 WHEN OKL_API.G_EXCEPTION_ERROR THEN
9810 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9811 l_api_name,
9812 G_PKG_NAME,
9813 'OKL_API.G_RET_STS_ERROR',
9814 x_msg_count,
9815 x_msg_data,
9816 '_PVT');
9817 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
9818 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
9819 l_api_name,
9820 G_PKG_NAME,
9821 'OKL_API.G_RET_STS_UNEXP_ERROR',
9822 x_msg_count,
9823 x_msg_data,
9824 '_PVT');
9825 WHEN OTHERS THEN
9826 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
9827 l_api_name,
9828 G_PKG_NAME,
9829 'OTHERS',
9830 x_msg_count,
9831 x_msg_data,
9832 '_PVT');
9833 END create_model_line;
9834 -------------------------------------------------------------------------------------------------------
9835 ----------------------------- Main Process for update of model Line -----------------------------------
9836 -------------------------------------------------------------------------------------------------------
9837 PROCEDURE Update_model_line(
9838 p_api_version IN NUMBER,
9839 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
9840 x_return_status OUT NOCOPY VARCHAR2,
9841 x_msg_count OUT NOCOPY NUMBER,
9842 x_msg_data OUT NOCOPY VARCHAR2,
9843 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
9844 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
9845 p_clev_rec IN clev_rec_type,
9846 p_klev_rec IN klev_rec_type,
9847 p_cimv_rec IN cimv_rec_type,
9848 x_clev_rec OUT NOCOPY clev_rec_type,
9849 x_klev_rec OUT NOCOPY klev_rec_type,
9850 x_cimv_rec OUT NOCOPY cimv_rec_type) IS
9851 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_MODEL_LINES';
9852 l_clev_rec clev_rec_type;
9853 -- Variables for validation of line style
9854 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
9855 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
9856 ln_fa_id OKC_K_LINES_V.ID%TYPE;
9857
9858 CURSOR get_fa_id(p_top_line OKC_K_LINES_V.ID%TYPE,
9859 p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE)
9860 IS
9861 SELECT cle.id
9862 FROM okc_subclass_top_line stl,
9863 okc_line_styles_b lse2,
9864 okc_line_styles_b lse1,
9865 okc_k_lines_v cle
9866 WHERE cle.cle_id = p_top_line
9867 AND cle.dnz_chr_id = p_dnz_chr_id
9868 AND lse1.id = cle.lse_id
9869 AND lse1.lty_code = G_FA_LINE_LTY_CODE
9870 AND lse1.lse_parent_id = lse2.id
9871 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
9872 AND lse2.id = stl.lse_id
9873 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
9874
9875 BEGIN
9876 x_return_status := OKL_API.G_RET_STS_SUCCESS;
9877 -- Call start_activity to create savepoint, check compatibility
9878 -- and initialize message list
9879 x_return_status := OKL_API.START_ACTIVITY (
9880 l_api_name
9881 ,p_init_msg_list
9882 ,'_PVT'
9883 ,x_return_status);
9884 -- Check if activity started successfully
9885 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9886 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9887 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9888 RAISE OKL_API.G_EXCEPTION_ERROR;
9889 END IF;
9890 validate_sts_code(p_clev_rec => p_clev_rec,
9891 x_return_status => x_return_status);
9892 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9893 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9894 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9895 RAISE OKL_API.G_EXCEPTION_ERROR;
9896 END IF;
9897 -- To get the fixed asset line asset to see
9898 -- the asset number does not duplicate
9899 OPEN get_fa_id(p_top_line => p_clev_rec.cle_id,
9900 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
9901 IF get_fa_id%NOTFOUND THEN
9902 OKL_API.set_message(p_app_name => G_APP_NAME,
9903 p_msg_name => G_LINE_RECORD);
9904 RAISE OKL_API.G_EXCEPTION_ERROR;
9905 END IF;
9906 FETCH get_fa_id INTO ln_fa_id;
9907 CLOSE get_fa_id;
9908
9909 -- To Check We Got the Valid info
9910 IF UPPER(p_new_yn) NOT IN ('Y','N') OR
9911 (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
9912 UPPER(p_new_yn) IS NULL) THEN
9913 OKL_API.set_message(p_app_name => G_APP_NAME,
9914 p_msg_name => G_INVALID_YN,
9915 p_token1 => G_COL_NAME_TOKEN,
9916 p_token1_value => 'p_new_yn');
9917 -- Halt Validation
9918 RAISE OKL_API.G_EXCEPTION_ERROR;
9919 END IF;
9920 -- Validate to see if the asset_number given is not null
9921 -- and also Validate asset_number does not exists
9922 -- in OKL_TXL_ASSETS_V
9923 IF UPPER(p_new_yn) = 'Y' THEN
9924 validate_new_ast_num_update(x_return_status => x_return_status,
9925 p_asset_number => p_asset_number,
9926 p_kle_id => ln_fa_id,
9927 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
9928 -- Check if activity started successfully
9929 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9930 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9931 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9932 RAISE OKL_API.G_EXCEPTION_ERROR;
9933 END IF;
9934 ELSIF UPPER(p_new_yn) = 'N' THEN
9935 validate_new_ast_num_update(x_return_status => x_return_status,
9936 p_asset_number => p_asset_number,
9937 p_kle_id => ln_fa_id,
9938 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
9939 -- Check if activity started successfully
9940 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9941 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9942 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9943 RAISE OKL_API.G_EXCEPTION_ERROR;
9944 END IF;
9945 END IF;
9946 -- Validate Line Style id and get the line type code
9947 -- and line style type for further processing
9948 validate_lse_id(p_clev_rec => p_clev_rec,
9949 x_return_status => x_return_status,
9950 x_lty_code => l_lty_code,
9951 x_lse_type => l_lse_type);
9952 -- Check if activity started successfully
9953 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9954 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9955 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9956 RAISE OKL_API.G_EXCEPTION_ERROR;
9957 END IF;
9958 -- Validate the Dnz_Chr_id
9959 validate_dnz_chr_id(p_clev_rec => p_clev_rec,
9960 x_return_status => x_return_status);
9961 -- Check if activity started successfully
9962 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9963 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9964 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9965 RAISE OKL_API.G_EXCEPTION_ERROR;
9966 END IF;
9967 -- We have to Populate the Model Line Record
9968 l_clev_rec := p_clev_rec;
9969 -- Now we are updating Model Line
9970 -- Here we have have Dnz_Chr_id ,lse_id and cle_id
9971 -- The Record Should have the cle_id
9972 -- if the given line style is Model Line
9973 IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
9974 l_clev_rec.chr_id IS NULL) AND
9975 (l_clev_rec.dnz_chr_id IS NOT NULL OR
9976 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
9977 (l_clev_rec.cle_id IS NOT NULL OR
9978 l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
9979 l_lty_code = G_MODEL_LINE_LTY_CODE AND
9980 l_lse_type = G_SLS_TYPE THEN
9981 update_model_line_item(p_api_version => p_api_version,
9982 p_init_msg_list => p_init_msg_list,
9983 x_return_status => x_return_status,
9984 x_msg_count => x_msg_count,
9985 x_msg_data => x_msg_data,
9986 p_lty_code => l_lty_code,
9987 p_clev_rec => l_clev_rec,
9988 p_klev_rec => p_klev_rec,
9989 p_cimv_rec => p_cimv_rec,
9990 x_clev_rec => x_clev_rec,
9991 x_klev_rec => x_klev_rec,
9992 x_cimv_rec => x_cimv_rec);
9993 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9994 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9995 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9996 RAISE OKL_API.G_EXCEPTION_ERROR;
9997 END IF;
9998 ELSE
9999 OKL_API.set_message(p_app_name => G_APP_NAME,
10000 p_msg_name => G_INVALID_CRITERIA,
10001 p_token1 => G_COL_NAME_TOKEN,
10002 p_token1_value => 'Model Asset line');
10003 x_return_status := OKL_API.G_RET_STS_ERROR;
10004 RAISE OKL_API.G_EXCEPTION_ERROR;
10005 END IF;
10006 OKL_API.END_ACTIVITY (x_msg_count,
10007 x_msg_data );
10008 EXCEPTION
10009 WHEN OKL_API.G_EXCEPTION_ERROR THEN
10010 IF get_fa_id%ISOPEN THEN
10011 CLOSE get_fa_id;
10012 END IF;
10013 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10014 l_api_name,
10015 G_PKG_NAME,
10016 'OKL_API.G_RET_STS_ERROR',
10017 x_msg_count,
10018 x_msg_data,
10019 '_PVT');
10020 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10021 IF get_fa_id%ISOPEN THEN
10022 CLOSE get_fa_id;
10023 END IF;
10024 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10025 l_api_name,
10026 G_PKG_NAME,
10027 'OKL_API.G_RET_STS_UNEXP_ERROR',
10028 x_msg_count,
10029 x_msg_data,
10030 '_PVT');
10031 WHEN OTHERS THEN
10032 IF get_fa_id%ISOPEN THEN
10033 CLOSE get_fa_id;
10034 END IF;
10035 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10036 l_api_name,
10037 G_PKG_NAME,
10038 'OTHERS',
10039 x_msg_count,
10040 x_msg_data,
10041 '_PVT');
10042 END Update_model_line;
10043 -----------------------------------------------------------------------------------------------
10044 ----------------- Main Process for Fixed Asset Line Creation-----------------------------------
10045 -----------------------------------------------------------------------------------------------
10046 PROCEDURE Create_fixed_asset_line(
10047 p_api_version IN NUMBER,
10048 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
10049 x_return_status OUT NOCOPY VARCHAR2,
10050 x_msg_count OUT NOCOPY NUMBER,
10051 x_msg_data OUT NOCOPY VARCHAR2,
10052 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
10053 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
10054 p_clev_rec IN clev_rec_type,
10055 p_klev_rec IN klev_rec_type,
10056 p_cimv_rec IN cimv_rec_type,
10057 p_talv_rec IN talv_rec_type,
10058 x_clev_rec OUT NOCOPY clev_rec_type,
10059 x_klev_rec OUT NOCOPY klev_rec_type,
10060 x_cimv_rec OUT NOCOPY cimv_rec_type,
10061 x_trxv_rec OUT NOCOPY trxv_rec_type,
10062 x_talv_rec OUT NOCOPY talv_rec_type) IS
10063
10064 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_FXD_AST_LINES';
10065 l_clev_rec clev_rec_type;
10066 -- Variables for validation of line style
10067 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
10068 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
10069 BEGIN
10070 x_return_status := OKL_API.G_RET_STS_SUCCESS;
10071 -- Call start_activity to create savepoint, check compatibility
10072 -- and initialize message list
10073 x_return_status := OKL_API.START_ACTIVITY (
10074 l_api_name
10075 ,p_init_msg_list
10076 ,'_PVT'
10077 ,x_return_status);
10078 -- Check if activity started successfully
10079 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10080 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10081 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10082 RAISE OKL_API.G_EXCEPTION_ERROR;
10083 END IF;
10084 -- 4414408 The validation is now performed in create_all_line procedure
10085 /*
10086 -- To Check We Got the Valid info
10087 IF UPPER(p_new_yn) NOT IN ('Y','N') OR
10088 (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
10089 UPPER(p_new_yn) IS NULL) THEN
10090 OKL_API.set_message(p_app_name => G_APP_NAME,
10091 p_msg_name => G_INVALID_YN,
10092 p_token1 => G_COL_NAME_TOKEN,
10093 p_token1_value => 'p_new_yn');
10094 -- Halt Validation
10095 RAISE OKL_API.G_EXCEPTION_ERROR;
10096 END IF;
10097 -- Validate to see if the asset_number given is not null
10098 -- and also Validate asset_number does not exists
10099 -- in OKL_TXL_ASSETS_V
10100 IF UPPER(p_new_yn) = 'Y' THEN
10101 validate_new_asset_number(x_return_status => x_return_status,
10102 p_asset_number => p_asset_number,
10103 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
10104 -- Check if activity started successfully
10105 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10106 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10107 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10108 RAISE OKL_API.G_EXCEPTION_ERROR;
10109 END IF;
10110 ELSE
10111 validate_new_asset_number(x_return_status => x_return_status,
10112 p_asset_number => p_asset_number,
10113 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
10114 -- Check if activity ended successfully
10115 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10116 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10117 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10118 RAISE OKL_API.G_EXCEPTION_ERROR;
10119 END IF;
10120 END IF;
10121 */
10122 -- 4414408 The validations in Validate_lse_id and Validate_dnz_chr_id are redundant
10123 /*
10124 -- Validate Line Style id and get the line type code
10125 -- and line style type for further processing
10126 validate_lse_id(p_clev_rec => p_clev_rec,
10127 x_return_status => x_return_status,
10128 x_lty_code => l_lty_code,
10129 x_lse_type => l_lse_type);
10130 -- Check if activity started successfully
10131 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10132 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10133 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10134 RAISE OKL_API.G_EXCEPTION_ERROR;
10135 END IF;
10136 -- Validate the Dnz_Chr_id
10137 validate_dnz_chr_id(p_clev_rec => p_clev_rec,
10138 x_return_status => x_return_status);
10139 -- Check if activity started successfully
10140 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10141 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10142 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10143 RAISE OKL_API.G_EXCEPTION_ERROR;
10144 END IF;
10145 */
10146 -- Now we are going to create the Fixed Assets Line
10147 -- Here we have have Dnz_Chr_id ,lse_id and cle_id
10148 -- The Record Should have the cle_id
10149 -- if the given line style is Fixed Assets Line
10150 l_clev_rec := p_clev_rec;
10151 IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
10152 l_clev_rec.chr_id IS NULL) AND
10153 (l_clev_rec.dnz_chr_id IS NOT NULL OR
10154 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
10155 (l_clev_rec.cle_id IS NOT NULL OR
10156 l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
10157 -- #4414408
10158 -- l_lty_code = G_FA_LINE_LTY_CODE AND
10159 -- l_lse_type = G_SLS_TYPE THEN
10160 l_clev_rec.lse_id = G_FA_LINE_LTY_ID THEN
10161 create_fa_line_item(p_api_version => p_api_version,
10162 p_init_msg_list => p_init_msg_list,
10163 x_return_status => x_return_status,
10164 x_msg_count => x_msg_count,
10165 x_msg_data => x_msg_data,
10166 -- p_lty_code => l_lty_code,
10167 p_clev_rec => p_clev_rec,
10168 p_klev_rec => p_klev_rec,
10169 p_cimv_rec => p_cimv_rec,
10170 p_talv_rec => p_talv_rec,
10171 x_clev_rec => x_clev_rec,
10172 x_klev_rec => x_klev_rec,
10173 x_cimv_rec => x_cimv_rec,
10174 x_trxv_rec => x_trxv_rec,
10175 x_talv_rec => x_talv_rec);
10176 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10177 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10178 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10179 RAISE OKL_API.G_EXCEPTION_ERROR;
10180 END IF;
10181 ELSE
10182 OKL_API.set_message(p_app_name => G_APP_NAME,
10183 p_msg_name => G_INVALID_CRITERIA,
10184 p_token1 => G_COL_NAME_TOKEN,
10185 p_token1_value => 'Fixed Asset line');
10186 x_return_status := OKL_API.G_RET_STS_ERROR;
10187 RAISE OKL_API.G_EXCEPTION_ERROR;
10188 END IF;
10189 OKL_API.END_ACTIVITY (x_msg_count,
10190 x_msg_data );
10191 EXCEPTION
10192 WHEN OKL_API.G_EXCEPTION_ERROR THEN
10193 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10194 l_api_name,
10195 G_PKG_NAME,
10196 'OKL_API.G_RET_STS_ERROR',
10197 x_msg_count,
10198 x_msg_data,
10199 '_PVT');
10200 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10201 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10202 l_api_name,
10203 G_PKG_NAME,
10204 'OKL_API.G_RET_STS_UNEXP_ERROR',
10205 x_msg_count,
10206 x_msg_data,
10207 '_PVT');
10208 WHEN OTHERS THEN
10209 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10210 l_api_name,
10211 G_PKG_NAME,
10212 'OTHERS',
10213 x_msg_count,
10214 x_msg_data,
10215 '_PVT');
10216 END Create_fixed_asset_line;
10217 -------------------------------------------------------------------------------------------------------
10218 ----------------------------- Main Process for update of fixed asset Line -----------------------------
10219 -------------------------------------------------------------------------------------------------------
10220 PROCEDURE Update_fixed_asset_line(
10221 p_api_version IN NUMBER,
10222 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
10223 x_return_status OUT NOCOPY VARCHAR2,
10224 x_msg_count OUT NOCOPY NUMBER,
10225 x_msg_data OUT NOCOPY VARCHAR2,
10226 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
10227 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
10228 p_clev_rec IN clev_rec_type,
10229 p_klev_rec IN klev_rec_type,
10230 p_cimv_rec IN cimv_rec_type,
10231 p_talv_rec IN talv_rec_type,
10232 x_clev_rec OUT NOCOPY clev_rec_type,
10233 x_klev_rec OUT NOCOPY klev_rec_type,
10234 x_cimv_rec OUT NOCOPY cimv_rec_type,
10235 x_talv_rec OUT NOCOPY talv_rec_type) IS
10236 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_FXD_AST_LINES';
10237 l_clev_rec clev_rec_type;
10238 -- Variables for validation of line style
10239 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
10240 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
10241 BEGIN
10242 x_return_status := OKL_API.G_RET_STS_SUCCESS;
10243 -- Call start_activity to create savepoint, check compatibility
10244 -- and initialize message list
10245 x_return_status := OKL_API.START_ACTIVITY (
10246 l_api_name
10247 ,p_init_msg_list
10248 ,'_PVT'
10249 ,x_return_status);
10250 -- Check if activity started successfully
10251 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10252 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10253 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10254 RAISE OKL_API.G_EXCEPTION_ERROR;
10255 END IF;
10256 validate_sts_code(p_clev_rec => p_clev_rec,
10257 x_return_status => x_return_status);
10258 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10259 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10260 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10261 RAISE OKL_API.G_EXCEPTION_ERROR;
10262 END IF;
10263 -- To Check We Got the Valid info
10264 IF UPPER(p_new_yn) NOT IN ('Y','N') OR
10265 (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
10266 UPPER(p_new_yn) IS NULL) THEN
10267 OKL_API.set_message(p_app_name => G_APP_NAME,
10268 p_msg_name => G_INVALID_YN,
10269 p_token1 => G_COL_NAME_TOKEN,
10270 p_token1_value => 'p_new_yn');
10271 -- Halt Validation
10272 RAISE OKL_API.G_EXCEPTION_ERROR;
10273 END IF;
10274 -- Validate to see if the asset_number given is not null
10275 -- and also Validate asset_number does not exists
10276 -- in OKL_TXL_ASSETS_V
10277 IF UPPER(p_new_yn) = 'Y' THEN
10278 validate_new_ast_num_update(x_return_status => x_return_status,
10279 p_asset_number => p_asset_number,
10280 p_kle_id => p_talv_rec.kle_id,
10281 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
10282 -- Check if activity started successfully
10283 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10284 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10285 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10286 RAISE OKL_API.G_EXCEPTION_ERROR;
10287 END IF;
10288 ELSIF UPPER(p_new_yn) = 'N' THEN
10289 validate_new_ast_num_update(x_return_status => x_return_status,
10290 p_asset_number => p_asset_number,
10291 p_kle_id => p_talv_rec.kle_id,
10292 p_dnz_chr_id => p_clev_rec.dnz_chr_id);
10293 -- Check if activity started successfully
10294 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10295 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10296 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10297 RAISE OKL_API.G_EXCEPTION_ERROR;
10298 END IF;
10299 END IF;
10300 -- Validate Line Style id and get the line type code
10301 -- and line style type for further processing
10302 validate_lse_id(p_clev_rec => p_clev_rec,
10303 x_return_status => x_return_status,
10304 x_lty_code => l_lty_code,
10305 x_lse_type => l_lse_type);
10306 -- Check if activity started successfully
10307 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10308 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10309 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10310 RAISE OKL_API.G_EXCEPTION_ERROR;
10311 END IF;
10312 -- Validate the Dnz_Chr_id
10313 validate_dnz_chr_id(p_clev_rec => p_clev_rec,
10314 x_return_status => x_return_status);
10315 -- Check if activity started successfully
10316 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10317 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10318 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10319 RAISE OKL_API.G_EXCEPTION_ERROR;
10320 END IF;
10321 -- We have to Populate the Model Line Record
10322 l_clev_rec := p_clev_rec;
10323 -- Now we are updating Fixed Asset Line
10324 -- Here we have have Dnz_Chr_id ,lse_id and cle_id
10325 -- The Record Should have the cle_id
10326 -- if the given line style is Fixed Asset Line
10327 IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
10328 l_clev_rec.chr_id IS NULL) AND
10329 (l_clev_rec.dnz_chr_id IS NOT NULL OR
10330 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
10331 (l_clev_rec.cle_id IS NOT NULL OR
10332 l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
10333 l_lty_code = G_FA_LINE_LTY_CODE AND
10334 l_lse_type = G_SLS_TYPE THEN
10335 update_fa_line_item(p_api_version => p_api_version,
10336 p_init_msg_list => p_init_msg_list,
10337 x_return_status => x_return_status,
10338 x_msg_count => x_msg_count,
10339 x_msg_data => x_msg_data,
10340 p_lty_code => l_lty_code,
10341 P_new_yn => p_new_yn,
10342 p_clev_rec => l_clev_rec,
10343 p_klev_rec => p_klev_rec,
10344 p_cimv_rec => p_cimv_rec,
10345 p_talv_rec => p_talv_rec,
10346 x_clev_rec => x_clev_rec,
10347 x_klev_rec => x_klev_rec,
10348 x_cimv_rec => x_cimv_rec,
10349 x_talv_rec => x_talv_rec);
10350 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10351 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10352 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10353 RAISE OKL_API.G_EXCEPTION_ERROR;
10354 END IF;
10355 ELSE
10356 OKL_API.set_message(p_app_name => G_APP_NAME,
10357 p_msg_name => G_INVALID_CRITERIA,
10358 p_token1 => G_COL_NAME_TOKEN,
10359 p_token1_value => 'Fixed Asset line');
10360 x_return_status := OKL_API.G_RET_STS_ERROR;
10361 RAISE OKL_API.G_EXCEPTION_ERROR;
10362 END IF;
10363 OKL_API.END_ACTIVITY (x_msg_count,
10364 x_msg_data );
10365 EXCEPTION
10366 WHEN OKL_API.G_EXCEPTION_ERROR THEN
10367 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10368 l_api_name,
10369 G_PKG_NAME,
10370 'OKL_API.G_RET_STS_ERROR',
10371 x_msg_count,
10372 x_msg_data,
10373 '_PVT');
10374 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10375 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10376 l_api_name,
10377 G_PKG_NAME,
10378 'OKL_API.G_RET_STS_UNEXP_ERROR',
10379 x_msg_count,
10380 x_msg_data,
10381 '_PVT');
10382 WHEN OTHERS THEN
10383 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10384 l_api_name,
10385 G_PKG_NAME,
10386 'OTHERS',
10387 x_msg_count,
10388 x_msg_data,
10389 '_PVT');
10390 END Update_fixed_asset_line;
10391 -------------------------------------------------------------------------------------------------------
10392 ---------------------------- Main Process for Creation of Add on Line ---------------------------------
10393 -------------------------------------------------------------------------------------------------------
10394 PROCEDURE create_add_on_line(p_api_version IN NUMBER,
10395 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
10396 x_return_status OUT NOCOPY VARCHAR2,
10397 x_msg_count OUT NOCOPY NUMBER,
10398 x_msg_data OUT NOCOPY VARCHAR2,
10399 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
10400 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
10401 p_clev_tbl IN clev_tbl_type,
10402 p_klev_tbl IN klev_tbl_type,
10403 p_cimv_tbl IN cimv_tbl_type,
10404 x_clev_tbl OUT NOCOPY clev_tbl_type,
10405 x_klev_tbl OUT NOCOPY klev_tbl_type,
10406 x_fin_clev_rec OUT NOCOPY clev_rec_type,
10407 x_fin_klev_rec OUT NOCOPY klev_rec_type,
10408 x_cimv_tbl OUT NOCOPY cimv_tbl_type) IS
10409 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_ADD_LINE';
10410 i NUMBER := 0;
10411 j NUMBER := 0;
10412 k NUMBER := 0;
10413 l_klev_rec klev_rec_type;
10414 l_clev_tbl clev_tbl_type;
10415 x_klev_rec klev_rec_type;
10416 ln_oec OKL_K_LINES_V.OEC%TYPE := 0;
10417 ln_add_cle_id OKC_K_LINES_V.CLE_ID%TYPE := 0;
10418 ln_add_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE := 0;
10419 ln_top_line_id OKC_K_LINES_V.CLE_ID%TYPE := 0;
10420 ln_klev_fin_oec OKL_K_LINES_V.OEC%TYPE := 0;
10421 ln_klev_fin_res OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
10422 ln_klev_fin_cap OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
10423
10424 -- To Find out the Top line ID
10425 CURSOR c_model_top_line(p_model_line_id OKC_K_LINES_V.ID%TYPE,
10426 p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
10427 -- #4414408
10428 SELECT cle.cle_id
10429 FROM okc_k_lines_b cle
10430 WHERE cle.id = p_model_line_id
10431 AND cle.dnz_chr_id = p_dnz_chr_id
10432 AND cle.lse_id = G_MODEL_LINE_LTY_ID;
10433
10434 BEGIN
10435 x_return_status := OKL_API.G_RET_STS_SUCCESS;
10436 -- Call start_activity to create savepoint, check compatibility
10437 -- and initialize message list
10438 x_return_status := OKL_API.START_ACTIVITY (
10439 l_api_name
10440 ,p_init_msg_list
10441 ,'_PVT'
10442 ,x_return_status);
10443 -- Check if activity started successfully
10444 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10445 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10446 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10447 RAISE OKL_API.G_EXCEPTION_ERROR;
10448 END IF;
10449 OKL_API.init_msg_list(p_init_msg_list);
10450 -- Make sure PL/SQL table has records in it before passing
10451 IF (p_clev_tbl.COUNT > 0) AND
10452 (p_cimv_tbl.COUNT > 0)THEN
10453 i := p_clev_tbl.FIRST;
10454 k := p_cimv_tbl.FIRST;
10455 IF (p_klev_tbl.COUNT = 0) THEN
10456 -- Since p_klev_tbl is not Mandtory we could get and give blank record
10457 l_clev_tbl := p_clev_tbl;
10458 LOOP
10459 x_return_status := get_lse_id(p_lty_code => G_ADDON_LINE_LTY_CODE,
10460 x_lse_id => l_clev_tbl(i).lse_id);
10461 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10462 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
10463 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10464 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
10465 END IF;
10466 create_addon_line_rec(p_api_version => p_api_version,
10467 p_init_msg_list => p_init_msg_list,
10468 x_return_status => x_return_status,
10469 x_msg_count => x_msg_count,
10470 x_msg_data => x_msg_data,
10471 P_new_yn => P_new_yn,
10472 p_asset_number => p_asset_number,
10473 p_clev_rec => l_clev_tbl(i),
10474 p_klev_rec => l_klev_rec,
10475 p_cimv_rec => p_cimv_tbl(k),
10476 x_clev_rec => x_clev_tbl(i),
10477 x_klev_rec => x_klev_rec,
10478 x_cimv_rec => x_cimv_tbl(k));
10479 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10480 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
10481 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10482 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
10483 END IF;
10484 ln_add_cle_id := x_clev_tbl(i).cle_id;
10485 ln_add_dnz_chr_id := x_clev_tbl(i).dnz_chr_id;
10486 -- Assume that there will be one to one for item and add on line
10487 EXIT WHEN (i = p_clev_tbl.LAST);
10488 i := l_clev_tbl.NEXT(i);
10489 k := p_cimv_tbl.NEXT(k);
10490 x_klev_tbl(i) := x_klev_rec;
10491 END LOOP;
10492 ELSE
10493 IF (p_clev_tbl.COUNT <> p_klev_tbl.COUNT) OR
10494 (p_clev_tbl.COUNT <> p_cimv_tbl.COUNT) OR
10495 (p_klev_tbl.COUNT <> p_cimv_tbl.COUNT) THEN
10496 OKL_API.set_message(p_app_name => G_APP_NAME,
10497 p_msg_name => G_CNT_REC);
10498 RAISE OKL_API.G_EXCEPTION_ERROR;
10499 END IF;
10500 j := p_klev_tbl.FIRST;
10501 l_clev_tbl := p_clev_tbl;
10502 LOOP
10503 x_return_status := get_lse_id(p_lty_code => G_ADDON_LINE_LTY_CODE,
10504 x_lse_id => l_clev_tbl(i).lse_id);
10505 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10506 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
10507 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10508 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
10509 END IF;
10510 create_addon_line_rec(p_api_version => p_api_version,
10511 p_init_msg_list => p_init_msg_list,
10512 x_return_status => x_return_status,
10513 x_msg_count => x_msg_count,
10514 x_msg_data => x_msg_data,
10515 P_new_yn => P_new_yn,
10516 p_asset_number => p_asset_number,
10517 p_clev_rec => l_clev_tbl(i),
10518 p_klev_rec => p_klev_tbl(j),
10519 p_cimv_rec => p_cimv_tbl(k),
10520 x_clev_rec => x_clev_tbl(i),
10521 x_klev_rec => x_klev_tbl(j),
10522 x_cimv_rec => x_cimv_tbl(k));
10523 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10524 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
10525 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10526 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
10527 END IF;
10528 ln_add_cle_id := x_clev_tbl(i).cle_id;
10529 ln_add_dnz_chr_id := x_clev_tbl(i).dnz_chr_id;
10530 -- Assume that there will be one to one for item and add on line
10531 EXIT WHEN (i = p_clev_tbl.LAST);
10532 i := l_clev_tbl.NEXT(i);
10533 j := p_klev_tbl.NEXT(j);
10534 k := p_cimv_tbl.NEXT(K);
10535 END LOOP;
10536 END IF;
10537 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10538 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10539 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10540 RAISE OKL_API.G_EXCEPTION_ERROR;
10541 END IF;
10542
10543 OPEN c_model_top_line(p_model_line_id => ln_add_cle_id,
10544 p_dnz_chr_id => ln_add_dnz_chr_id);
10545 FETCH c_model_top_line INTO ln_top_line_id;
10546
10547 IF c_model_top_line%NOTFOUND THEN
10548 OKL_API.set_message(p_app_name => G_APP_NAME,
10549 p_msg_name => G_NO_MATCHING_RECORD,
10550 p_token1 => G_COL_NAME_TOKEN,
10551 p_token1_value => 'cle_id');
10552 RAISE G_EXCEPTION_HALT_VALIDATION;
10553 END IF;
10554
10555 CLOSE c_model_top_line;
10556
10557 -- Calculate the OEC to Populate the OKL_K_LINES_V.OEC
10558 oec_calc_upd_fin_rec(p_api_version => p_api_version,
10559 p_init_msg_list => p_init_msg_list,
10560 x_return_status => x_return_status,
10561 x_msg_count => x_msg_count,
10562 x_msg_data => x_msg_data,
10563 P_new_yn => P_new_yn,
10564 p_asset_number => p_asset_number,
10565 -- 4414408
10566 p_top_line_id => ln_top_line_id,
10567 p_dnz_chr_id => ln_add_dnz_chr_id,
10568 x_fin_clev_rec => x_fin_clev_rec,
10569 x_fin_klev_rec => x_fin_klev_rec,
10570 x_oec => ln_klev_fin_oec,
10571 p_validate_fin_line => OKL_API.G_TRUE);
10572 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10573 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10574 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10575 RAISE OKL_API.G_EXCEPTION_ERROR;
10576 END IF;
10577 -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
10578 cap_amt_calc_upd_fin_rec(p_api_version => p_api_version,
10579 p_init_msg_list => p_init_msg_list,
10580 x_return_status => x_return_status,
10581 x_msg_count => x_msg_count,
10582 x_msg_data => x_msg_data,
10583 P_new_yn => P_new_yn,
10584 p_asset_number => p_asset_number,
10585 -- 4414408
10586 p_top_line_id => ln_top_line_id,
10587 p_dnz_chr_id => ln_add_dnz_chr_id,
10588 x_fin_clev_rec => x_fin_clev_rec,
10589 x_fin_klev_rec => x_fin_klev_rec,
10590 x_cap_amt => ln_klev_fin_cap,
10591 p_validate_fin_line => OKL_API.G_TRUE);
10592 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10593 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10594 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10595 RAISE OKL_API.G_EXCEPTION_ERROR;
10596 END IF;
10597 -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
10598 res_value_calc_upd_fin_rec(p_api_version => p_api_version,
10599 p_init_msg_list => p_init_msg_list,
10600 x_return_status => x_return_status,
10601 x_msg_count => x_msg_count,
10602 x_msg_data => x_msg_data,
10603 P_new_yn => P_new_yn,
10604 p_asset_number => p_asset_number,
10605 -- 4414408
10606 p_top_line_id => ln_top_line_id,
10607 p_dnz_chr_id => ln_add_dnz_chr_id,
10608 x_fin_clev_rec => x_fin_clev_rec,
10609 x_fin_klev_rec => x_fin_klev_rec,
10610 x_res_value => ln_klev_fin_res,
10611 p_validate_fin_line => OKL_API.G_TRUE);
10612 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10613 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10614 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10615 RAISE OKL_API.G_EXCEPTION_ERROR;
10616 END IF;
10617
10618 --Bug# 5530990
10619 -- Update Original Cost and Depreciation Cost in
10620 -- OKL_TXL_ASSETS_B and OKL_TXD_ASSETS_B when
10621 -- Add on line is added
10622 update_asset_cost(p_api_version => p_api_version,
10623 p_init_msg_list => p_init_msg_list,
10624 x_return_status => x_return_status,
10625 x_msg_count => x_msg_count,
10626 x_msg_data => x_msg_data,
10627 p_cleb_fin_id => ln_top_line_id,
10628 p_chr_id => ln_add_dnz_chr_id,
10629 p_oec => ln_klev_fin_oec);
10630 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10631 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10632 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10633 RAISE OKL_API.G_EXCEPTION_ERROR;
10634 END IF;
10635
10636 ELSE
10637 OKL_API.set_message(p_app_name => G_APP_NAME,
10638 p_msg_name => G_CNT_REC);
10639 x_return_status := OKL_API.G_RET_STS_ERROR;
10640 RAISE OKL_API.G_EXCEPTION_ERROR;
10641 END IF;
10642 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10643 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10644 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10645 RAISE OKL_API.G_EXCEPTION_ERROR;
10646 END IF;
10647 OKL_API.END_ACTIVITY (x_msg_count,
10648 x_msg_data );
10649 EXCEPTION
10650 WHEN OKL_API.G_EXCEPTION_ERROR THEN
10651 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10652 l_api_name,
10653 G_PKG_NAME,
10654 'OKL_API.G_RET_STS_ERROR',
10655 x_msg_count,
10656 x_msg_data,
10657 '_PVT');
10658 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10659 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10660 l_api_name,
10661 G_PKG_NAME,
10662 'OKL_API.G_RET_STS_UNEXP_ERROR',
10663 x_msg_count,
10664 x_msg_data,
10665 '_PVT');
10666 WHEN OTHERS THEN
10667 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10668 l_api_name,
10669 G_PKG_NAME,
10670 'OTHERS',
10671 x_msg_count,
10672 x_msg_data,
10673 '_PVT');
10674 END create_add_on_line;
10675 -------------------------------------------------------------------------------------------------------
10676 ---------------------------- Main Process for Update of Add on Line ---------------------------------
10677 -------------------------------------------------------------------------------------------------------
10678 PROCEDURE update_add_on_line(
10679 p_api_version IN NUMBER,
10680 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
10681 x_return_status OUT NOCOPY VARCHAR2,
10682 x_msg_count OUT NOCOPY NUMBER,
10683 x_msg_data OUT NOCOPY VARCHAR2,
10684 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
10685 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
10686 p_clev_tbl IN clev_tbl_type,
10687 p_klev_tbl IN klev_tbl_type,
10688 p_cimv_tbl IN cimv_tbl_type,
10689 x_clev_tbl OUT NOCOPY clev_tbl_type,
10690 x_klev_tbl OUT NOCOPY klev_tbl_type,
10691 x_cimv_tbl OUT NOCOPY cimv_tbl_type,
10692 x_fin_clev_rec OUT NOCOPY clev_rec_type,
10693 x_fin_klev_rec OUT NOCOPY klev_rec_type) IS
10694
10695 i NUMBER := 0;
10696 j NUMBER := 0;
10697 k NUMBER := 0;
10698 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_ADD_LINE';
10699 l_klev_rec klev_rec_type;
10700 l_clev_tbl clev_tbl_type;
10701 x_klev_rec klev_rec_type;
10702 ln_add_cle_id OKC_K_LINES_V.CLE_ID%TYPE := 0;
10703 ln_add_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE := 0;
10704 ln_top_line_id OKC_K_LINES_V.CLE_ID%TYPE := 0;
10705 ln_klev_fin_oec OKL_K_LINES_V.OEC%TYPE := 0;
10706 ln_klev_fin_res OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
10707 ln_klev_fin_cap OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
10708
10709 -- To Find out the Top line ID
10710 CURSOR c_model_top_line(p_model_line_id OKC_K_LINES_V.ID%TYPE,
10711 p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
10712 -- #4414408
10713 SELECT cle.cle_id
10714 FROM okc_k_lines_b cle
10715 WHERE cle.id = p_model_line_id
10716 AND cle.dnz_chr_id = p_dnz_chr_id
10717 AND cle.lse_id = G_MODEL_LINE_LTY_ID;
10718
10719 BEGIN
10720 x_return_status := OKL_API.G_RET_STS_SUCCESS;
10721 -- Call start_activity to create savepoint, check compatibility
10722 -- and initialize message list
10723 x_return_status := OKL_API.START_ACTIVITY (
10724 l_api_name
10725 ,p_init_msg_list
10726 ,'_PVT'
10727 ,x_return_status);
10728 -- Check if activity started successfully
10729 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10730 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10731 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10732 RAISE OKL_API.G_EXCEPTION_ERROR;
10733 END IF;
10734 OKL_API.init_msg_list(p_init_msg_list);
10735 -- Make sure PL/SQL table has records in it before passing
10736 IF (p_clev_tbl.COUNT > 0) AND
10737 (p_klev_tbl.COUNT > 0) AND
10738 (p_cimv_tbl.COUNT > 0)THEN
10739 IF (p_clev_tbl.COUNT <> p_klev_tbl.COUNT) OR
10740 (p_clev_tbl.COUNT <> p_cimv_tbl.COUNT) OR
10741 (p_klev_tbl.COUNT <> p_cimv_tbl.COUNT) THEN
10742 OKL_API.set_message(p_app_name => G_APP_NAME,
10743 p_msg_name => G_CNT_REC);
10744 RAISE OKL_API.G_EXCEPTION_ERROR;
10745 END IF;
10746 i := p_clev_tbl.FIRST;
10747 j := p_klev_tbl.FIRST;
10748 k := p_cimv_tbl.FIRST;
10749 l_clev_tbl := p_clev_tbl;
10750 LOOP
10751 update_addon_line_rec(p_api_version => p_api_version,
10752 p_init_msg_list => p_init_msg_list,
10753 x_return_status => x_return_status,
10754 x_msg_count => x_msg_count,
10755 x_msg_data => x_msg_data,
10756 P_new_yn => P_new_yn,
10757 p_asset_number => p_asset_number,
10758 p_clev_rec => l_clev_tbl(i),
10759 p_klev_rec => p_klev_tbl(j),
10760 p_cimv_rec => p_cimv_tbl(k),
10761 x_clev_rec => x_clev_tbl(i),
10762 x_klev_rec => x_klev_tbl(j),
10763 x_cimv_rec => x_cimv_tbl(k));
10764 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10765 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
10766 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10767 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
10768 RAISE OKL_API.G_EXCEPTION_ERROR;
10769 END IF;
10770 ln_add_cle_id := x_clev_tbl(i).cle_id;
10771 ln_add_dnz_chr_id := x_clev_tbl(i).dnz_chr_id;
10772 -- Assume that there will be one to one for item and add on line
10773 EXIT WHEN (i = p_clev_tbl.LAST);
10774 i := p_clev_tbl.NEXT(i);
10775 j := p_klev_tbl.NEXT(j);
10776 k := p_clev_tbl.NEXT(k);
10777 END LOOP;
10778 ELSE
10779 OKL_API.set_message(p_app_name => G_APP_NAME,
10780 p_msg_name => G_CNT_REC);
10781 x_return_status := OKL_API.G_RET_STS_ERROR;
10782 RAISE OKL_API.G_EXCEPTION_ERROR;
10783 END IF;
10784 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10785 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10786 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10787 RAISE OKL_API.G_EXCEPTION_ERROR;
10788 END IF;
10789
10790 OPEN c_model_top_line(p_model_line_id => ln_add_cle_id,
10791 p_dnz_chr_id => ln_add_dnz_chr_id);
10792 FETCH c_model_top_line INTO ln_top_line_id;
10793
10794 IF c_model_top_line%NOTFOUND THEN
10795 OKL_API.set_message(p_app_name => G_APP_NAME,
10796 p_msg_name => G_NO_MATCHING_RECORD,
10797 p_token1 => G_COL_NAME_TOKEN,
10798 p_token1_value => 'cle_id');
10799 RAISE G_EXCEPTION_HALT_VALIDATION;
10800 END IF;
10801
10802 CLOSE c_model_top_line;
10803
10804 -- Calculate the OEC to Populate the OKL_K_LINES_V.OEC
10805 oec_calc_upd_fin_rec(p_api_version => p_api_version,
10806 p_init_msg_list => p_init_msg_list,
10807 x_return_status => x_return_status,
10808 x_msg_count => x_msg_count,
10809 x_msg_data => x_msg_data,
10810 P_new_yn => P_new_yn,
10811 p_asset_number => p_asset_number,
10812 -- 4414408
10813 p_top_line_id => ln_top_line_id,
10814 p_dnz_chr_id => ln_add_dnz_chr_id,
10815 x_fin_clev_rec => x_fin_clev_rec,
10816 x_fin_klev_rec => x_fin_klev_rec,
10817 x_oec => ln_klev_fin_oec,
10818 p_validate_fin_line => OKL_API.G_TRUE);
10819 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10820 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10821 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10822 RAISE OKL_API.G_EXCEPTION_ERROR;
10823 END IF;
10824 -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
10825 cap_amt_calc_upd_fin_rec(p_api_version => p_api_version,
10826 p_init_msg_list => p_init_msg_list,
10827 x_return_status => x_return_status,
10828 x_msg_count => x_msg_count,
10829 x_msg_data => x_msg_data,
10830 P_new_yn => P_new_yn,
10831 p_asset_number => p_asset_number,
10832 -- 4414408
10833 p_top_line_id => ln_top_line_id,
10834 p_dnz_chr_id => ln_add_dnz_chr_id,
10835 x_fin_clev_rec => x_fin_clev_rec,
10836 x_fin_klev_rec => x_fin_klev_rec,
10837 x_cap_amt => ln_klev_fin_cap,
10838 p_validate_fin_line => OKL_API.G_TRUE);
10839 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10840 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10841 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10842 RAISE OKL_API.G_EXCEPTION_ERROR;
10843 END IF;
10844 -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
10845 res_value_calc_upd_fin_rec(p_api_version => p_api_version,
10846 p_init_msg_list => p_init_msg_list,
10847 x_return_status => x_return_status,
10848 x_msg_count => x_msg_count,
10849 x_msg_data => x_msg_data,
10850 P_new_yn => P_new_yn,
10851 p_asset_number => p_asset_number,
10852 -- 4414408
10853 p_top_line_id => ln_top_line_id,
10854 p_dnz_chr_id => ln_add_dnz_chr_id,
10855 x_fin_clev_rec => x_fin_clev_rec,
10856 x_fin_klev_rec => x_fin_klev_rec,
10857 x_res_value => ln_klev_fin_res,
10858 p_validate_fin_line => OKL_API.G_TRUE);
10859 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10860 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10861 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10862 RAISE OKL_API.G_EXCEPTION_ERROR;
10863 END IF;
10864
10865 --Bug# 5530990
10866 -- Update Original Cost and Depreciation Cost in
10867 -- OKL_TXL_ASSETS_B and OKL_TXD_ASSETS_B when
10868 -- Add on line is updated
10869 update_asset_cost(p_api_version => p_api_version,
10870 p_init_msg_list => p_init_msg_list,
10871 x_return_status => x_return_status,
10872 x_msg_count => x_msg_count,
10873 x_msg_data => x_msg_data,
10874 p_cleb_fin_id => ln_top_line_id,
10875 p_chr_id => ln_add_dnz_chr_id,
10876 p_oec => ln_klev_fin_oec);
10877 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10878 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10879 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10880 RAISE OKL_API.G_EXCEPTION_ERROR;
10881 END IF;
10882
10883 -- We need to change the status of the header whenever there is updating happening
10884 -- after the contract status is approved
10885 IF (x_fin_clev_rec.dnz_chr_id is NOT NULL) AND
10886 (x_fin_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
10887 --cascade edit status on to lines
10888 okl_contract_status_pub.cascade_lease_status_edit
10889 (p_api_version => p_api_version,
10890 p_init_msg_list => p_init_msg_list,
10891 x_return_status => x_return_status,
10892 x_msg_count => x_msg_count,
10893 x_msg_data => x_msg_data,
10894 p_chr_id => x_fin_clev_rec.dnz_chr_id);
10895 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10896 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10897 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10898 RAISE OKL_API.G_EXCEPTION_ERROR;
10899 END IF;
10900 END IF;
10901 OKL_API.END_ACTIVITY (x_msg_count,
10902 x_msg_data );
10903 EXCEPTION
10904 WHEN OKL_API.G_EXCEPTION_ERROR THEN
10905 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10906 l_api_name,
10907 G_PKG_NAME,
10908 'OKL_API.G_RET_STS_ERROR',
10909 x_msg_count,
10910 x_msg_data,
10911 '_PVT');
10912 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10913 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10914 l_api_name,
10915 G_PKG_NAME,
10916 'OKL_API.G_RET_STS_UNEXP_ERROR',
10917 x_msg_count,
10918 x_msg_data,
10919 '_PVT');
10920 WHEN OTHERS THEN
10921 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10922 l_api_name,
10923 G_PKG_NAME,
10924 'OTHERS',
10925 x_msg_count,
10926 x_msg_data,
10927 '_PVT');
10928 END update_add_on_line;
10929 -------------------------------------------------------------------------------------------------------
10930 ---------------------------- Main Process for Delete of Add on Line -----------------------------------
10931 -------------------------------------------------------------------------------------------------------
10932 PROCEDURE delete_add_on_line(
10933 p_api_version IN NUMBER,
10934 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
10935 x_return_status OUT NOCOPY VARCHAR2,
10936 x_msg_count OUT NOCOPY NUMBER,
10937 x_msg_data OUT NOCOPY VARCHAR2,
10938 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
10939 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
10940 p_clev_tbl IN clev_tbl_type,
10941 p_klev_tbl IN klev_tbl_type,
10942 x_fin_clev_rec OUT NOCOPY clev_rec_type,
10943 x_fin_klev_rec OUT NOCOPY klev_rec_type) IS
10944
10945 i NUMBER := 0;
10946 j NUMBER := 0;
10947 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_ADDON_LN';
10948 ln_add_cle_id OKC_K_LINES_V.CLE_ID%TYPE := 0;
10949 ln_add_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE := 0;
10950 ln_top_line_id OKC_K_LINES_V.CLE_ID%TYPE := 0;
10951 l_clev_tbl clev_tbl_type;
10952 ln_klev_fin_oec OKL_K_LINES_V.OEC%TYPE := 0;
10953 ln_klev_fin_res OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
10954 ln_klev_fin_cap OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
10955
10956 -- To Find out the Top line ID
10957 CURSOR c_model_top_line(p_model_line_id OKC_K_LINES_V.ID%TYPE,
10958 p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
10959 -- #4414408
10960 SELECT cle.cle_id
10961 FROM okc_k_lines_b cle
10962 WHERE cle.id = p_model_line_id
10963 AND cle.dnz_chr_id = p_dnz_chr_id
10964 AND cle.lse_id = G_MODEL_LINE_LTY_ID;
10965
10966 BEGIN
10967 x_return_status := OKL_API.G_RET_STS_SUCCESS;
10968 -- Call start_activity to create savepoint, check compatibility
10969 -- and initialize message list
10970 x_return_status := OKL_API.START_ACTIVITY (
10971 l_api_name
10972 ,p_init_msg_list
10973 ,'_PVT'
10974 ,x_return_status);
10975 -- Check if activity started successfully
10976 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10977 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10978 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10979 RAISE OKL_API.G_EXCEPTION_ERROR;
10980 END IF;
10981 OKL_API.init_msg_list(p_init_msg_list);
10982 -- Make sure PL/SQL table has records in it before passing
10983 IF (p_clev_tbl.COUNT > 0) AND
10984 (p_klev_tbl.COUNT > 0) THEN
10985 IF (p_clev_tbl.COUNT <> p_klev_tbl.COUNT) THEN
10986 OKL_API.set_message(p_app_name => G_APP_NAME,
10987 p_msg_name => G_CNT_REC);
10988 RAISE OKL_API.G_EXCEPTION_ERROR;
10989 END IF;
10990 i := p_clev_tbl.FIRST;
10991 j := p_klev_tbl.FIRST;
10992 LOOP
10993 delete_addon_line_rec(p_api_version => p_api_version,
10994 p_init_msg_list => p_init_msg_list,
10995 x_return_status => x_return_status,
10996 x_msg_count => x_msg_count,
10997 x_msg_data => x_msg_data,
10998 p_clev_rec => p_clev_tbl(i),
10999 p_klev_rec => p_klev_tbl(j),
11000 x_clev_rec => l_clev_tbl(i));
11001 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11002 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
11003 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11004 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
11005 END IF;
11006 ln_add_cle_id := l_clev_tbl(i).cle_id;
11007 ln_add_dnz_chr_id := l_clev_tbl(i).dnz_chr_id;
11008 -- Assume that there will be one to one for item and add on line
11009 EXIT WHEN (i = p_clev_tbl.LAST);
11010 i := p_clev_tbl.NEXT(i);
11011 j := p_klev_tbl.NEXT(j);
11012 END LOOP;
11013 ELSE
11014 OKL_API.set_message(p_app_name => G_APP_NAME,
11015 p_msg_name => G_CNT_REC);
11016 x_return_status := OKL_API.G_RET_STS_ERROR;
11017 RAISE OKL_API.G_EXCEPTION_ERROR;
11018 END IF;
11019 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11020 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11021 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11022 RAISE OKL_API.G_EXCEPTION_ERROR;
11023 END IF;
11024
11025 OPEN c_model_top_line(p_model_line_id => ln_add_cle_id,
11026 p_dnz_chr_id => ln_add_dnz_chr_id);
11027 FETCH c_model_top_line INTO ln_top_line_id;
11028
11029 IF c_model_top_line%NOTFOUND THEN
11030 OKL_API.set_message(p_app_name => G_APP_NAME,
11031 p_msg_name => G_NO_MATCHING_RECORD,
11032 p_token1 => G_COL_NAME_TOKEN,
11033 p_token1_value => 'cle_id');
11034 RAISE G_EXCEPTION_HALT_VALIDATION;
11035 END IF;
11036
11037 CLOSE c_model_top_line;
11038
11039 -- Calculate the OEC to Populate the OKL_K_LINES_V.OEC
11040 oec_calc_upd_fin_rec(p_api_version => p_api_version,
11041 p_init_msg_list => p_init_msg_list,
11042 x_return_status => x_return_status,
11043 x_msg_count => x_msg_count,
11044 x_msg_data => x_msg_data,
11045 P_new_yn => P_new_yn,
11046 p_asset_number => p_asset_number,
11047 -- 4414408
11048 p_top_line_id => ln_top_line_id,
11049 p_dnz_chr_id => ln_add_dnz_chr_id,
11050 x_fin_clev_rec => x_fin_clev_rec,
11051 x_fin_klev_rec => x_fin_klev_rec,
11052 x_oec => ln_klev_fin_oec,
11053 p_validate_fin_line => OKL_API.G_TRUE);
11054 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11055 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11056 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11057 RAISE OKL_API.G_EXCEPTION_ERROR;
11058 END IF;
11059 -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
11060 cap_amt_calc_upd_fin_rec(p_api_version => p_api_version,
11061 p_init_msg_list => p_init_msg_list,
11062 x_return_status => x_return_status,
11063 x_msg_count => x_msg_count,
11064 x_msg_data => x_msg_data,
11065 P_new_yn => P_new_yn,
11066 p_asset_number => p_asset_number,
11067 -- 4414408
11068 p_top_line_id => ln_top_line_id,
11069 p_dnz_chr_id => ln_add_dnz_chr_id,
11070 x_fin_clev_rec => x_fin_clev_rec,
11071 x_fin_klev_rec => x_fin_klev_rec,
11072 x_cap_amt => ln_klev_fin_cap,
11073 p_validate_fin_line => OKL_API.G_TRUE);
11074 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11075 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11076 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11077 RAISE OKL_API.G_EXCEPTION_ERROR;
11078 END IF;
11079 -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
11080 res_value_calc_upd_fin_rec(p_api_version => p_api_version,
11081 p_init_msg_list => p_init_msg_list,
11082 x_return_status => x_return_status,
11083 x_msg_count => x_msg_count,
11084 x_msg_data => x_msg_data,
11085 P_new_yn => P_new_yn,
11086 p_asset_number => p_asset_number,
11087 -- 4414408
11088 p_top_line_id => ln_top_line_id,
11089 p_dnz_chr_id => ln_add_dnz_chr_id,
11090 x_fin_clev_rec => x_fin_clev_rec,
11091 x_fin_klev_rec => x_fin_klev_rec,
11092 x_res_value => ln_klev_fin_res,
11093 p_validate_fin_line => OKL_API.G_TRUE);
11094 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11095 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11096 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11097 RAISE OKL_API.G_EXCEPTION_ERROR;
11098 END IF;
11099
11100 --Bug# 5530990
11101 -- Update Original Cost and Depreciation Cost in
11102 -- OKL_TXL_ASSETS_B and OKL_TXD_ASSETS_B when
11103 -- Add on line is deleted
11104 update_asset_cost(p_api_version => p_api_version,
11105 p_init_msg_list => p_init_msg_list,
11106 x_return_status => x_return_status,
11107 x_msg_count => x_msg_count,
11108 x_msg_data => x_msg_data,
11109 p_cleb_fin_id => ln_top_line_id,
11110 p_chr_id => ln_add_dnz_chr_id,
11111 p_oec => ln_klev_fin_oec);
11112 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11113 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11114 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11115 RAISE OKL_API.G_EXCEPTION_ERROR;
11116 END IF;
11117
11118 -- We need to change the status of the header whenever there is updating happening
11119 -- after the contract status is approved
11120 IF (x_fin_clev_rec.dnz_chr_id is NOT NULL) AND
11121 (x_fin_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
11122 --cascade edit status on to lines
11123 okl_contract_status_pub.cascade_lease_status_edit
11124 (p_api_version => p_api_version,
11125 p_init_msg_list => p_init_msg_list,
11126 x_return_status => x_return_status,
11127 x_msg_count => x_msg_count,
11128 x_msg_data => x_msg_data,
11129 p_chr_id => x_fin_clev_rec.dnz_chr_id);
11130 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11131 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11132 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11133 RAISE OKL_API.G_EXCEPTION_ERROR;
11134 END IF;
11135 END IF;
11136 OKL_API.END_ACTIVITY (x_msg_count,
11137 x_msg_data );
11138 EXCEPTION
11139 WHEN OKL_API.G_EXCEPTION_ERROR THEN
11140 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11141 l_api_name,
11142 G_PKG_NAME,
11143 'OKL_API.G_RET_STS_ERROR',
11144 x_msg_count,
11145 x_msg_data,
11146 '_PVT');
11147 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11148 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11149 l_api_name,
11150 G_PKG_NAME,
11151 'OKL_API.G_RET_STS_UNEXP_ERROR',
11152 x_msg_count,
11153 x_msg_data,
11154 '_PVT');
11155 WHEN OTHERS THEN
11156 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11157 l_api_name,
11158 G_PKG_NAME,
11159 'OTHERS',
11160 x_msg_count,
11161 x_msg_data,
11162 '_PVT');
11163 END delete_add_on_line;
11164 -----------------------------------------------------------------------------------------------
11165 ------------------ Main Process for Instance Line Creation-------------------------------------
11166 -----------------------------------------------------------------------------------------------
11167 PROCEDURE Create_instance_line(
11168 p_api_version IN NUMBER,
11169 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
11170 x_return_status OUT NOCOPY VARCHAR2,
11171 x_msg_count OUT NOCOPY NUMBER,
11172 x_msg_data OUT NOCOPY VARCHAR2,
11173 p_clev_rec IN clev_rec_type,
11174 p_klev_rec IN klev_rec_type,
11175 p_itiv_rec IN itiv_rec_type,
11176 x_clev_rec OUT NOCOPY clev_rec_type,
11177 x_klev_rec OUT NOCOPY klev_rec_type,
11178 x_itiv_rec OUT NOCOPY itiv_rec_type) IS
11179
11180 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_INSTANCE_LINES';
11181 l_clev_rec clev_rec_type;
11182 ln_lse_id OKC_LINE_STYLES_V.ID%TYPE := OKL_API.G_MISS_NUM;
11183 -- Variables for validation of line style
11184 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
11185 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
11186 BEGIN
11187 x_return_status := OKL_API.G_RET_STS_SUCCESS;
11188 -- Call start_activity to create savepoint, check compatibility
11189 -- and initialize message list
11190 x_return_status := OKL_API.START_ACTIVITY (
11191 l_api_name
11192 ,p_init_msg_list
11193 ,'_PVT'
11194 ,x_return_status);
11195 -- Check if activity started successfully
11196 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11197 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11198 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11199 RAISE OKL_API.G_EXCEPTION_ERROR;
11200 END IF;
11201 -- 4414408 The validations in Validate_lse_id and Validate_dnz_chr_id are redundant
11202 /*
11203 -- Validate Line Style id and get the line type code
11204 -- and line style type for further processing
11205 validate_lse_id(p_clev_rec => p_clev_rec,
11206 x_return_status => x_return_status,
11207 x_lty_code => l_lty_code,
11208 x_lse_type => l_lse_type);
11209 -- Check if activity started successfully
11210 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11211 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11212 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11213 RAISE OKL_API.G_EXCEPTION_ERROR;
11214 END IF;
11215 -- Validate the Dnz_Chr_id
11216 validate_dnz_chr_id(p_clev_rec => p_clev_rec,
11217 x_return_status => x_return_status);
11218 -- Check if activity started successfully
11219 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11220 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11221 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11222 RAISE OKL_API.G_EXCEPTION_ERROR;
11223 END IF;
11224 */
11225 -- Now we are going to create the instance Line
11226 -- Here we have have Dnz_Chr_id ,lse_id and cle_id
11227 -- The Record Should have the cle_id
11228 -- if the given line style is instance Line
11229 l_clev_rec := p_clev_rec;
11230 IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
11231 l_clev_rec.chr_id IS NULL) AND
11232 (l_clev_rec.dnz_chr_id IS NOT NULL OR
11233 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
11234 (l_clev_rec.cle_id IS NOT NULL OR
11235 l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
11236 -- #4414408
11237 -- l_lty_code = G_INST_LINE_LTY_CODE AND
11238 -- l_lse_type = G_SLS_TYPE THEN
11239 l_clev_rec.lse_id = G_INST_LINE_LTY_ID THEN
11240 validate_instance_number_ib(x_return_status => x_return_status,
11241 p_inst_num_ib => p_itiv_rec.instance_number_ib);
11242 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11243 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11244 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11245 RAISE OKL_API.G_EXCEPTION_ERROR;
11246 END IF;
11247 Create_inst_line(p_api_version => p_api_version,
11248 p_init_msg_list => p_init_msg_list,
11249 x_return_status => x_return_status,
11250 x_msg_count => x_msg_count,
11251 x_msg_data => x_msg_data,
11252 -- 4414408 p_lty_code => l_lty_code,
11253 p_clev_rec => l_clev_rec,
11254 p_klev_rec => p_klev_rec,
11255 x_clev_rec => x_clev_rec,
11256 x_klev_rec => x_klev_rec);
11257 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11258 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11259 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11260 RAISE OKL_API.G_EXCEPTION_ERROR;
11261 END IF;
11262 ELSE
11263 OKL_API.set_message(p_app_name => G_APP_NAME,
11264 p_msg_name => G_INVALID_CRITERIA,
11265 p_token1 => G_COL_NAME_TOKEN,
11266 p_token1_value => 'Instance Asset line');
11267 x_return_status := OKL_API.G_RET_STS_ERROR;
11268 RAISE OKL_API.G_EXCEPTION_ERROR;
11269 END IF;
11270 OKL_API.END_ACTIVITY (x_msg_count,
11271 x_msg_data );
11272 EXCEPTION
11273 WHEN OKL_API.G_EXCEPTION_ERROR THEN
11274 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11275 l_api_name,
11276 G_PKG_NAME,
11277 'OKL_API.G_RET_STS_ERROR',
11278 x_msg_count,
11279 x_msg_data,
11280 '_PVT');
11281 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11282 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11283 l_api_name,
11284 G_PKG_NAME,
11285 'OKL_API.G_RET_STS_UNEXP_ERROR',
11286 x_msg_count,
11287 x_msg_data,
11288 '_PVT');
11289 WHEN OTHERS THEN
11290 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11291 l_api_name,
11292 G_PKG_NAME,
11293 'OTHERS',
11294 x_msg_count,
11295 x_msg_data,
11296 '_PVT');
11297 END Create_instance_line;
11298 -----------------------------------------------------------------------------------------------
11299 ------------------ Main Process for Updating Instance Line ------------------------------------
11300 -----------------------------------------------------------------------------------------------
11301 PROCEDURE Update_instance_line(
11302 p_api_version IN NUMBER,
11303 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
11304 x_return_status OUT NOCOPY VARCHAR2,
11305 x_msg_count OUT NOCOPY NUMBER,
11306 x_msg_data OUT NOCOPY VARCHAR2,
11307 p_clev_rec IN clev_rec_type,
11308 p_klev_rec IN klev_rec_type,
11309 p_itiv_rec IN itiv_rec_type,
11310 x_clev_rec OUT NOCOPY clev_rec_type,
11311 x_klev_rec OUT NOCOPY klev_rec_type,
11312 x_itiv_rec OUT NOCOPY itiv_rec_type) IS
11313
11314 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_INSTANCE_LINES';
11315 l_clev_rec clev_rec_type;
11316 -- Variables for validation of line style
11317 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
11318 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
11319 BEGIN
11320 x_return_status := OKL_API.G_RET_STS_SUCCESS;
11321 -- Call start_activity to create savepoint, check compatibility
11322 -- and initialize message list
11323 x_return_status := OKL_API.START_ACTIVITY (
11324 l_api_name
11325 ,p_init_msg_list
11326 ,'_PVT'
11327 ,x_return_status);
11328 -- Check if activity started successfully
11329 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11330 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11331 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11332 RAISE OKL_API.G_EXCEPTION_ERROR;
11333 END IF;
11334 validate_sts_code(p_clev_rec => p_clev_rec,
11335 x_return_status => x_return_status);
11336 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11337 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11338 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11339 RAISE OKL_API.G_EXCEPTION_ERROR;
11340 END IF;
11341 -- Validate Line Style id and get the line type code
11342 -- and line style type for further processing
11343 validate_lse_id(p_clev_rec => p_clev_rec,
11344 x_return_status => x_return_status,
11345 x_lty_code => l_lty_code,
11346 x_lse_type => l_lse_type);
11347 -- Check if activity started successfully
11348 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11349 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11350 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11351 RAISE OKL_API.G_EXCEPTION_ERROR;
11352 END IF;
11353 -- Validate the Dnz_Chr_id
11354 validate_dnz_chr_id(p_clev_rec => p_clev_rec,
11355 x_return_status => x_return_status);
11356 -- Check if activity started successfully
11357 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11358 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11359 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11360 RAISE OKL_API.G_EXCEPTION_ERROR;
11361 END IF;
11362 -- Now we are going to create the instance Line
11363 -- Here we have have Dnz_Chr_id ,lse_id and cle_id
11364 -- The Record Should have the cle_id
11365 -- if the given line style is instance Line
11366 l_clev_rec := p_clev_rec;
11367 IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
11368 l_clev_rec.chr_id IS NULL) AND
11369 (l_clev_rec.dnz_chr_id IS NOT NULL OR
11370 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
11371 (l_clev_rec.cle_id IS NOT NULL OR
11372 l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
11373 l_lty_code = G_INST_LINE_LTY_CODE AND
11374 l_lse_type = G_SLS_TYPE THEN
11375 IF (p_itiv_rec.instance_number_ib IS NOT NULL OR
11376 p_itiv_rec.instance_number_ib <> OKL_API.G_MISS_CHAR) THEN
11377 update_inst_line(p_api_version => p_api_version,
11378 p_init_msg_list => p_init_msg_list,
11379 x_return_status => x_return_status,
11380 x_msg_count => x_msg_count,
11381 x_msg_data => x_msg_data,
11382 p_lty_code => l_lty_code,
11383 p_clev_rec => p_clev_rec,
11384 p_klev_rec => p_klev_rec,
11385 x_clev_rec => x_clev_rec,
11386 x_klev_rec => x_klev_rec);
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 ELSE
11393 OKL_API.set_message(p_app_name => G_APP_NAME,
11394 p_msg_name => G_INVALID_CRITERIA,
11395 p_token1 => G_COL_NAME_TOKEN,
11396 p_token1_value => 'Instance Asset line');
11397 x_return_status := OKL_API.G_RET_STS_ERROR;
11398 RAISE OKL_API.G_EXCEPTION_ERROR;
11399 END IF;
11400 ELSE
11401 OKL_API.set_message(p_app_name => G_APP_NAME,
11402 p_msg_name => G_INVALID_CRITERIA,
11403 p_token1 => G_COL_NAME_TOKEN,
11404 p_token1_value => 'Instance Asset line');
11405 x_return_status := OKL_API.G_RET_STS_ERROR;
11406 RAISE OKL_API.G_EXCEPTION_ERROR;
11407 END IF;
11408 OKL_API.END_ACTIVITY (x_msg_count,
11409 x_msg_data );
11410 EXCEPTION
11411 WHEN OKL_API.G_EXCEPTION_ERROR THEN
11412 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11413 l_api_name,
11414 G_PKG_NAME,
11415 'OKL_API.G_RET_STS_ERROR',
11416 x_msg_count,
11417 x_msg_data,
11418 '_PVT');
11419 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11420 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11421 l_api_name,
11422 G_PKG_NAME,
11423 'OKL_API.G_RET_STS_UNEXP_ERROR',
11424 x_msg_count,
11425 x_msg_data,
11426 '_PVT');
11427 WHEN OTHERS THEN
11428 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11429 l_api_name,
11430 G_PKG_NAME,
11431 'OTHERS',
11432 x_msg_count,
11433 x_msg_data,
11434 '_PVT');
11435 END Update_instance_line;
11436 -----------------------------------------------------------------------------------------------
11437 ------------------ Main Process for Install Base Line Creation---------------------------------
11438 -----------------------------------------------------------------------------------------------
11439 PROCEDURE Create_instance_ib_line(
11440 p_api_version IN NUMBER,
11441 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
11442 x_return_status OUT NOCOPY VARCHAR2,
11443 x_msg_count OUT NOCOPY NUMBER,
11444 x_msg_data OUT NOCOPY VARCHAR2,
11445 p_clev_rec IN clev_rec_type,
11446 p_klev_rec IN klev_rec_type,
11447 p_cimv_rec IN cimv_rec_type,
11448 p_itiv_rec IN itiv_rec_type,
11449 x_clev_rec OUT NOCOPY clev_rec_type,
11450 x_klev_rec OUT NOCOPY klev_rec_type,
11451 x_cimv_rec OUT NOCOPY cimv_rec_type,
11452 x_trxv_rec OUT NOCOPY trxv_rec_type,
11453 x_itiv_rec OUT NOCOPY itiv_rec_type) IS
11454
11455 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_INSTANCE_IB_LINES';
11456 l_clev_rec clev_rec_type;
11457 l_cimv_rec cimv_rec_type;
11458 ln_lse_id OKC_LINE_STYLES_V.ID%TYPE := OKL_API.G_MISS_NUM;
11459 -- Variables for validation of line style
11460 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
11461 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
11462 BEGIN
11463 x_return_status := OKL_API.G_RET_STS_SUCCESS;
11464 -- Call start_activity to create savepoint, check compatibility
11465 -- and initialize message list
11466 x_return_status := OKL_API.START_ACTIVITY (
11467 l_api_name
11468 ,p_init_msg_list
11469 ,'_PVT'
11470 ,x_return_status);
11471 -- Check if activity started successfully
11472 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11473 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11474 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11475 RAISE OKL_API.G_EXCEPTION_ERROR;
11476 END IF;
11477 -- 4414408 The validations in Validate_lse_id and Validate_dnz_chr_id are redundant
11478 /*
11479 -- Validate Line Style id and get the line type code
11480 -- and line style type for further processing
11481 validate_lse_id(p_clev_rec => p_clev_rec,
11482 x_return_status => x_return_status,
11483 x_lty_code => l_lty_code,
11484 x_lse_type => l_lse_type);
11485 -- Check if activity started successfully
11486 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11487 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11488 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11489 RAISE OKL_API.G_EXCEPTION_ERROR;
11490 END IF;
11491 -- Validate the Dnz_Chr_id
11492 validate_dnz_chr_id(p_clev_rec => p_clev_rec,
11493 x_return_status => x_return_status);
11494 -- Check if activity started successfully
11495 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11496 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11497 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11498 RAISE OKL_API.G_EXCEPTION_ERROR;
11499 END IF;
11500 */
11501 -- Now we are going to create the instance Line
11502 -- Here we have have Dnz_Chr_id ,lse_id and cle_id
11503 -- The Record Should have the cle_id
11504 -- if the given line style is instance Line
11505 l_clev_rec := p_clev_rec;
11506 IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
11507 l_clev_rec.chr_id IS NULL) AND
11508 (l_clev_rec.dnz_chr_id IS NOT NULL OR
11509 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
11510 (l_clev_rec.cle_id IS NOT NULL OR
11511 l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
11512 -- 4414408
11513 -- l_lty_code = G_IB_LINE_LTY_CODE AND
11514 -- l_lse_type = G_SLS_TYPE THEN
11515 l_clev_rec.lse_id = G_IB_LINE_LTY_ID THEN
11516 validate_instance_number_ib(x_return_status => x_return_status,
11517 p_inst_num_ib => p_itiv_rec.instance_number_ib);
11518 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11519 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11520 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11521 RAISE OKL_API.G_EXCEPTION_ERROR;
11522 END IF;
11523 Create_installed_base_line(p_api_version => p_api_version,
11524 p_init_msg_list => p_init_msg_list,
11525 x_return_status => x_return_status,
11526 x_msg_count => x_msg_count,
11527 x_msg_data => x_msg_data,
11528 -- 4414408 p_lty_code => l_lty_code,
11529 p_clev_rec => l_clev_rec,
11530 p_klev_rec => p_klev_rec,
11531 p_cimv_rec => p_cimv_rec,
11532 p_itiv_rec => p_itiv_rec,
11533 x_clev_rec => x_clev_rec,
11534 x_klev_rec => x_klev_rec,
11535 x_cimv_rec => x_cimv_rec,
11536 x_trxv_rec => x_trxv_rec,
11537 x_itiv_rec => x_itiv_rec);
11538 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11539 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11540 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11541 RAISE OKL_API.G_EXCEPTION_ERROR;
11542 END IF;
11543 ELSE
11544 OKL_API.set_message(p_app_name => G_APP_NAME,
11545 p_msg_name => G_INVALID_CRITERIA,
11546 p_token1 => G_COL_NAME_TOKEN,
11547 p_token1_value => 'Install Base Asset line');
11548 x_return_status := OKL_API.G_RET_STS_ERROR;
11549 RAISE OKL_API.G_EXCEPTION_ERROR;
11550 END IF;
11551 OKL_API.END_ACTIVITY (x_msg_count,
11552 x_msg_data );
11553 EXCEPTION
11554 WHEN OKL_API.G_EXCEPTION_ERROR THEN
11555 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11556 l_api_name,
11557 G_PKG_NAME,
11558 'OKL_API.G_RET_STS_ERROR',
11559 x_msg_count,
11560 x_msg_data,
11561 '_PVT');
11562 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11563 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11564 l_api_name,
11565 G_PKG_NAME,
11566 'OKL_API.G_RET_STS_UNEXP_ERROR',
11567 x_msg_count,
11568 x_msg_data,
11569 '_PVT');
11570 WHEN OTHERS THEN
11571 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11572 l_api_name,
11573 G_PKG_NAME,
11574 'OTHERS',
11575 x_msg_count,
11576 x_msg_data,
11577 '_PVT');
11578 END Create_instance_ib_line;
11579 -----------------------------------------------------------------------------------------------
11580 ------------------ Main Process for Updating Instance IB Line ---------------------------------
11581 -----------------------------------------------------------------------------------------------
11582 PROCEDURE Update_instance_ib_line(
11583 p_api_version IN NUMBER,
11584 p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
11585 x_return_status OUT NOCOPY VARCHAR2,
11586 x_msg_count OUT NOCOPY NUMBER,
11587 x_msg_data OUT NOCOPY VARCHAR2,
11588 p_clev_rec IN clev_rec_type,
11589 p_klev_rec IN klev_rec_type,
11590 p_cimv_rec IN cimv_rec_type,
11591 p_itiv_rec IN itiv_rec_type,
11592 x_clev_rec OUT NOCOPY clev_rec_type,
11593 x_klev_rec OUT NOCOPY klev_rec_type,
11594 x_cimv_rec OUT NOCOPY cimv_rec_type,
11595 x_itiv_rec OUT NOCOPY itiv_rec_type) IS
11596
11597 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_INSTANCE_IB_LINES';
11598 l_clev_rec clev_rec_type;
11599 l_cimv_rec cimv_rec_type;
11600 lv_dummy VARCHAR2(3);
11601 lv_ib_id1 OKX_INSTALL_ITEMS_V.ID1%TYPE;
11602 lv_ib_id2 OKX_INSTALL_ITEMS_V.ID2%TYPE;
11603 -- Variables for validation of line style
11604 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
11605 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
11606 l_talv_rec talv_rec_type;
11607 l_trxv_rec trxv_rec_type;
11608 l_itiv_rec itiv_rec_type;
11609 ln_tas_id OKL_TRX_ASSETS.ID%TYPE;
11610 ln_line_number OKL_TXL_ASSETS_V.LINE_NUMBER%TYPE;
11611 BEGIN
11612 x_return_status := OKL_API.G_RET_STS_SUCCESS;
11613 -- Call start_activity to create savepoint, check compatibility
11614 -- and initialize message list
11615 x_return_status := OKL_API.START_ACTIVITY (
11616 l_api_name
11617 ,p_init_msg_list
11618 ,'_PVT'
11619 ,x_return_status);
11620 -- Check if activity started successfully
11621 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11622 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11623 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11624 RAISE OKL_API.G_EXCEPTION_ERROR;
11625 END IF;
11626 validate_sts_code(p_clev_rec => p_clev_rec,
11627 x_return_status => x_return_status);
11628 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11629 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11630 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11631 RAISE OKL_API.G_EXCEPTION_ERROR;
11632 END IF;
11633 -- Validate Line Style id and get the line type code
11634 -- and line style type for further processing
11635 validate_lse_id(p_clev_rec => p_clev_rec,
11636 x_return_status => x_return_status,
11637 x_lty_code => l_lty_code,
11638 x_lse_type => l_lse_type);
11639 -- Check if activity started successfully
11640 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11641 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11642 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11643 RAISE OKL_API.G_EXCEPTION_ERROR;
11644 END IF;
11645 -- Validate the Dnz_Chr_id
11646 validate_dnz_chr_id(p_clev_rec => p_clev_rec,
11647 x_return_status => x_return_status);
11648 -- Check if activity started successfully
11649 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11650 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11651 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11652 RAISE OKL_API.G_EXCEPTION_ERROR;
11653 END IF;
11654 -- Now we are going to create the installed_base_Line
11655 -- Here we have have Dnz_Chr_id ,lse_id and cle_id
11656 -- The Record Should have the cle_id
11657 -- if the given line style is instance base Line
11658 l_clev_rec := p_clev_rec;
11659 IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
11660 l_clev_rec.chr_id IS NULL) AND
11661 (l_clev_rec.dnz_chr_id IS NOT NULL OR
11662 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
11663 (l_clev_rec.cle_id IS NOT NULL OR
11664 l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
11665 l_lty_code = G_IB_LINE_LTY_CODE AND
11666 l_lse_type = G_SLS_TYPE THEN
11667 IF (p_itiv_rec.instance_number_ib IS NOT NULL OR
11668 p_itiv_rec.instance_number_ib <> OKL_API.G_MISS_CHAR) THEN
11669 l_cimv_rec := p_cimv_rec;
11670 update_installed_base_line(p_api_version => p_api_version,
11671 p_init_msg_list => p_init_msg_list,
11672 x_return_status => x_return_status,
11673 x_msg_count => x_msg_count,
11674 x_msg_data => x_msg_data,
11675 p_lty_code => l_lty_code,
11676 p_clev_rec => p_clev_rec,
11677 p_klev_rec => p_klev_rec,
11678 p_cimv_rec => p_cimv_rec,
11679 p_itiv_rec => p_itiv_rec,
11680 x_clev_rec => x_clev_rec,
11681 x_klev_rec => x_klev_rec,
11682 x_cimv_rec => x_cimv_rec,
11683 x_itiv_rec => x_itiv_rec);
11684 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11685 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11686 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11687 RAISE OKL_API.G_EXCEPTION_ERROR;
11688 END IF;
11689 ELSE
11690 OKL_API.set_message(p_app_name => G_APP_NAME,
11691 p_msg_name => G_INVALID_CRITERIA,
11692 p_token1 => G_COL_NAME_TOKEN,
11693 p_token1_value => 'Install Base Asset line');
11694 x_return_status := OKL_API.G_RET_STS_ERROR;
11695 RAISE OKL_API.G_EXCEPTION_ERROR;
11696 END IF;
11697 ELSE
11698 OKL_API.set_message(p_app_name => G_APP_NAME,
11699 p_msg_name => G_INVALID_CRITERIA,
11700 p_token1 => G_COL_NAME_TOKEN,
11701 p_token1_value => 'Instance Asset line');
11702 x_return_status := OKL_API.G_RET_STS_ERROR;
11703 RAISE OKL_API.G_EXCEPTION_ERROR;
11704 END IF;
11705 OKL_API.END_ACTIVITY (x_msg_count,
11706 x_msg_data );
11707 EXCEPTION
11708 WHEN OKL_API.G_EXCEPTION_ERROR THEN
11709 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11710 l_api_name,
11711 G_PKG_NAME,
11712 'OKL_API.G_RET_STS_ERROR',
11713 x_msg_count,
11714 x_msg_data,
11715 '_PVT');
11716 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11717 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11718 l_api_name,
11719 G_PKG_NAME,
11720 'OKL_API.G_RET_STS_UNEXP_ERROR',
11721 x_msg_count,
11722 x_msg_data,
11723 '_PVT');
11724 WHEN OTHERS THEN
11725 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11726 l_api_name,
11727 G_PKG_NAME,
11728 'OTHERS',
11729 x_msg_count,
11730 x_msg_data,
11731 '_PVT');
11732 END Update_instance_ib_line;
11733 -----------------------------------------------------------------------------------------------
11734 ------------------------ Main Process for Create Party Roles-----------------------------------
11735 -----------------------------------------------------------------------------------------------
11736 PROCEDURE Create_party_roles_rec(
11737 p_api_version IN NUMBER,
11738 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
11739 x_return_status OUT NOCOPY VARCHAR2,
11740 x_msg_count OUT NOCOPY NUMBER,
11741 x_msg_data OUT NOCOPY VARCHAR2,
11742 p_cplv_rec IN cplv_rec_type,
11743 x_cplv_rec OUT NOCOPY cplv_rec_type) IS
11744
11745 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_PTY_RLE_LINES';
11746 l_clev_rec clev_rec_type;
11747 l_cplv_rec cplv_rec_type;
11748 l_klev_rec klev_rec_type;
11749 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
11750 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
11751
11752 --Bug# 4558486
11753 l_kplv_rec OKL_K_PARTY_ROLES_PVT.kplv_rec_type;
11754 x_kplv_rec OKL_K_PARTY_ROLES_PVT.kplv_rec_type;
11755 BEGIN
11756 x_return_status := OKL_API.G_RET_STS_SUCCESS;
11757 -- Call start_activity to create savepoint, check compatibility
11758 -- and initialize message list
11759 x_return_status := OKL_API.START_ACTIVITY (
11760 l_api_name
11761 ,p_init_msg_list
11762 ,'_PVT'
11763 ,x_return_status);
11764 -- Check if activity started successfully
11765 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11766 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11767 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11768 RAISE OKL_API.G_EXCEPTION_ERROR;
11769 END IF;
11770 x_return_status := get_rec_clev(p_id => p_cplv_rec.cle_id,
11771 x_clev_rec => l_clev_rec);
11772 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11773 OKL_API.set_message(p_app_name => G_APP_NAME,
11774 p_msg_name => G_FETCHING_INFO,
11775 p_token1 => G_REC_NAME_TOKEN,
11776 p_token1_value => 'OKC_K_LINES_V Record');
11777 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11778 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11779 OKL_API.set_message(p_app_name => G_APP_NAME,
11780 p_msg_name => G_FETCHING_INFO,
11781 p_token1 => G_REC_NAME_TOKEN,
11782 p_token1_value => 'OKC_K_LINES_V Record');
11783 RAISE OKL_API.G_EXCEPTION_ERROR;
11784 END IF;
11785 x_return_status := get_rec_klev(p_id => p_cplv_rec.cle_id,
11786 x_klev_rec => l_klev_rec);
11787 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11788 OKL_API.set_message(p_app_name => G_APP_NAME,
11789 p_msg_name => G_FETCHING_INFO,
11790 p_token1 => G_REC_NAME_TOKEN,
11791 p_token1_value => 'OKL_K_LINES_V Record');
11792 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11793 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11794 OKL_API.set_message(p_app_name => G_APP_NAME,
11795 p_msg_name => G_FETCHING_INFO,
11796 p_token1 => G_REC_NAME_TOKEN,
11797 p_token1_value => 'OKL_K_LINES_V Record');
11798 RAISE OKL_API.G_EXCEPTION_ERROR;
11799 END IF;
11800 IF l_clev_rec.id <> l_klev_rec.id THEN
11801 OKL_API.set_message(p_app_name => G_APP_NAME,
11802 p_msg_name => G_LINE_RECORD);
11803 x_return_status := OKL_API.G_RET_STS_ERROR;
11804 RAISE OKL_API.G_EXCEPTION_ERROR;
11805 END IF;
11806 -- Validate Line Style id and get the line type code
11807 -- and line style type for further processing
11808 validate_lse_id(p_clev_rec => l_clev_rec,
11809 x_return_status => x_return_status,
11810 x_lty_code => l_lty_code,
11811 x_lse_type => l_lse_type);
11812 -- Check if activity started successfully
11813 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11814 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11815 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11816 RAISE OKL_API.G_EXCEPTION_ERROR;
11817 END IF;
11818 -- Validate the Dnz_Chr_id
11819 validate_dnz_chr_id(p_clev_rec => l_clev_rec,
11820 x_return_status => x_return_status);
11821 -- Check if activity started successfully
11822 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11823 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11824 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11825 RAISE OKL_API.G_EXCEPTION_ERROR;
11826 END IF;
11827 -- We can create a party item info only if the line is Model Line
11828 IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
11829 l_clev_rec.chr_id IS NULL) AND
11830 (l_clev_rec.dnz_chr_id IS NOT NULL OR
11831 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
11832 (l_clev_rec.cle_id IS NOT NULL OR
11833 l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
11834 (l_lty_code = G_MODEL_LINE_LTY_CODE OR
11835 l_lty_code = G_ADDON_LINE_LTY_CODE) AND
11836 l_lse_type = G_SLS_TYPE THEN
11837 x_return_status := get_rec_cplv(p_cplv_id => p_cplv_rec.id,
11838 x_cplv_rec => l_cplv_rec);
11839 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11840 OKL_API.set_message(p_app_name => G_APP_NAME,
11841 p_msg_name => G_FETCHING_INFO,
11842 p_token1 => G_REC_NAME_TOKEN,
11843 p_token1_value => 'OKC_K_PARTY_ROLES_V Record');
11844 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11845 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11846 OKL_API.set_message(p_app_name => G_APP_NAME,
11847 p_msg_name => G_FETCHING_INFO,
11848 p_token1 => G_REC_NAME_TOKEN,
11849 p_token1_value => 'OKC_K_PARTY_ROLES_V Record');
11850 RAISE OKL_API.G_EXCEPTION_ERROR;
11851 END IF;
11852
11853 IF (p_cplv_rec.cle_id IS NOT NULL OR
11854 p_cplv_rec.cle_id <> OKL_API.G_MISS_NUM) THEN
11855 l_cplv_rec.cle_id := p_cplv_rec.cle_id;
11856 ELSE
11857 OKL_API.set_message(p_app_name => G_APP_NAME,
11858 p_msg_name => G_REQUIRED_VALUE,
11859 p_token1 => G_COL_NAME_TOKEN,
11860 p_token1_value => 'cle_id in creation party roles');
11861 RAISE OKL_API.G_EXCEPTION_ERROR;
11862 END IF;
11863 l_cplv_rec.chr_id := null;
11864 -- Creation of Party Item Record for the above record information
11865 --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
11866 -- to create records in tables
11867 -- okc_k_party_roles_b and okl_k_party_roles
11868 /*
11869 OKL_OKC_MIGRATION_PVT.create_k_party_role(p_api_version => p_api_version,
11870 p_init_msg_list => p_init_msg_list,
11871 x_return_status => x_return_status,
11872 x_msg_count => x_msg_count,
11873 x_msg_data => x_msg_data,
11874 p_cplv_rec => l_cplv_rec,
11875 x_cplv_rec => x_cplv_rec);
11876 */
11877
11878 OKL_K_PARTY_ROLES_PVT.create_k_party_role
11879 (p_api_version => p_api_version,
11880 p_init_msg_list => p_init_msg_list,
11881 x_return_status => x_return_status,
11882 x_msg_count => x_msg_count,
11883 x_msg_data => x_msg_data,
11884 p_cplv_rec => l_cplv_rec,
11885 x_cplv_rec => x_cplv_rec,
11886 p_kplv_rec => l_kplv_rec,
11887 x_kplv_rec => x_kplv_rec);
11888
11889 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11890 OKL_API.set_message(p_app_name => G_APP_NAME,
11891 p_msg_name => G_CREATION_PARTY_ROLE);
11892 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11893 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11894 OKL_API.set_message(p_app_name => G_APP_NAME,
11895 p_msg_name => G_CREATION_PARTY_ROLE);
11896 RAISE OKL_API.G_EXCEPTION_ERROR;
11897 END IF;
11898 ELSE
11899 OKL_API.set_message(p_app_name => G_APP_NAME,
11900 p_msg_name => G_INVALID_CRITERIA,
11901 p_token1 => 'LINE_STYLE',
11902 p_token1_value => 'Model/Addon Line for Party Roles');
11903 x_return_status := OKL_API.G_RET_STS_ERROR;
11904 RAISE OKL_API.G_EXCEPTION_ERROR;
11905 END IF;
11906 OKL_API.END_ACTIVITY (x_msg_count,
11907 x_msg_data );
11908 EXCEPTION
11909 WHEN OKL_API.G_EXCEPTION_ERROR THEN
11910 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11911 l_api_name,
11912 G_PKG_NAME,
11913 'OKL_API.G_RET_STS_ERROR',
11914 x_msg_count,
11915 x_msg_data,
11916 '_PVT');
11917 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11918 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11919 l_api_name,
11920 G_PKG_NAME,
11921 'OKL_API.G_RET_STS_UNEXP_ERROR',
11922 x_msg_count,
11923 x_msg_data,
11924 '_PVT');
11925 WHEN OTHERS THEN
11926 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11927 l_api_name,
11928 G_PKG_NAME,
11929 'OTHERS',
11930 x_msg_count,
11931 x_msg_data,
11932 '_PVT');
11933 END Create_party_roles_rec;
11934 -----------------------------------------------------------------------------------------------
11935 ------------------------ Main Process for Update Party Roles-----------------------------------
11936 -----------------------------------------------------------------------------------------------
11937 PROCEDURE Update_party_roles_rec(
11938 p_api_version IN NUMBER,
11939 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
11940 x_return_status OUT NOCOPY VARCHAR2,
11941 x_msg_count OUT NOCOPY NUMBER,
11942 x_msg_data OUT NOCOPY VARCHAR2,
11943 p_cplv_rec IN cplv_rec_type,
11944 x_cplv_rec OUT NOCOPY cplv_rec_type) IS
11945
11946 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_PTY_RLE_LINES';
11947 l_clev_rec clev_rec_type;
11948 l_cplv_rec cplv_rec_type;
11949 l_klev_rec klev_rec_type;
11950 l_lty_code OKC_LINE_STYLES_V.LTY_CODE%TYPE;
11951 l_lse_type OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
11952
11953 --Bug# 4558486
11954 l_kplv_rec OKL_K_PARTY_ROLES_PVT.kplv_rec_type;
11955 x_kplv_rec OKL_K_PARTY_ROLES_PVT.kplv_rec_type;
11956 BEGIN
11957 x_return_status := OKL_API.G_RET_STS_SUCCESS;
11958 -- Call start_activity to create savepoint, check compatibility
11959 -- and initialize message list
11960 x_return_status := OKL_API.START_ACTIVITY (
11961 l_api_name
11962 ,p_init_msg_list
11963 ,'_PVT'
11964 ,x_return_status);
11965 -- Check if activity started successfully
11966 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11967 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11968 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11969 RAISE OKL_API.G_EXCEPTION_ERROR;
11970 END IF;
11971 x_return_status := get_rec_cplv(p_cplv_id => p_cplv_rec.id,
11972 x_cplv_rec => l_cplv_rec);
11973 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11974 OKL_API.set_message(p_app_name => G_APP_NAME,
11975 p_msg_name => G_FETCHING_INFO,
11976 p_token1 => G_REC_NAME_TOKEN,
11977 p_token1_value => 'OKC_K_PARTY_ROLES_V Record');
11978 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11979 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11980 OKL_API.set_message(p_app_name => G_APP_NAME,
11981 p_msg_name => G_FETCHING_INFO,
11982 p_token1 => G_REC_NAME_TOKEN,
11983 p_token1_value => 'OKC_K_PARTY_ROLES_V Record');
11984 RAISE OKL_API.G_EXCEPTION_ERROR;
11985 END IF;
11986 x_return_status := get_rec_clev(p_id => l_cplv_rec.cle_id,
11987 x_clev_rec => l_clev_rec);
11988 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11989 OKL_API.set_message(p_app_name => G_APP_NAME,
11990 p_msg_name => G_FETCHING_INFO,
11991 p_token1 => G_REC_NAME_TOKEN,
11992 p_token1_value => 'OKC_K_ITEMS_V Record');
11993 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11994 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11995 OKL_API.set_message(p_app_name => G_APP_NAME,
11996 p_msg_name => G_FETCHING_INFO,
11997 p_token1 => G_REC_NAME_TOKEN,
11998 p_token1_value => 'OKC_K_ITEMS_V Record');
11999 RAISE OKL_API.G_EXCEPTION_ERROR;
12000 END IF;
12001 x_return_status := get_rec_klev(p_id => l_cplv_rec.cle_id,
12002 x_klev_rec => l_klev_rec);
12003 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12004 OKL_API.set_message(p_app_name => G_APP_NAME,
12005 p_msg_name => G_FETCHING_INFO,
12006 p_token1 => G_REC_NAME_TOKEN,
12007 p_token1_value => 'OKL_K_ITEMS_V Record');
12008 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12009 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12010 OKL_API.set_message(p_app_name => G_APP_NAME,
12011 p_msg_name => G_FETCHING_INFO,
12012 p_token1 => G_REC_NAME_TOKEN,
12013 p_token1_value => 'OKL_K_ITEMS_V Record');
12014 RAISE OKL_API.G_EXCEPTION_ERROR;
12015 END IF;
12016 IF l_clev_rec.id <> l_klev_rec.id THEN
12017 OKL_API.set_message(p_app_name => G_APP_NAME,
12018 p_msg_name => G_LINE_RECORD);
12019 x_return_status := OKL_API.G_RET_STS_ERROR;
12020 RAISE OKL_API.G_EXCEPTION_ERROR;
12021 END IF;
12022 -- Validate Line Style id and get the line type code
12023 -- and line style type for further processing
12024 validate_lse_id(p_clev_rec => l_clev_rec,
12025 x_return_status => x_return_status,
12026 x_lty_code => l_lty_code,
12027 x_lse_type => l_lse_type);
12028 -- Check if activity started successfully
12029 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12030 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12031 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12032 RAISE OKL_API.G_EXCEPTION_ERROR;
12033 END IF;
12034 -- Validate the Dnz_Chr_id
12035 validate_dnz_chr_id(p_clev_rec => l_clev_rec,
12036 x_return_status => x_return_status);
12037 -- Check if activity started successfully
12038 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12039 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12040 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12041 RAISE OKL_API.G_EXCEPTION_ERROR;
12042 END IF;
12043 -- We can create a party item info only if the line is Model Line
12044 IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
12045 l_clev_rec.chr_id IS NULL) AND
12046 (l_clev_rec.dnz_chr_id IS NOT NULL OR
12047 l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
12048 (l_clev_rec.cle_id IS NOT NULL OR
12049 l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
12050 (l_lty_code = G_MODEL_LINE_LTY_CODE OR
12051 l_lty_code = G_ADDON_LINE_LTY_CODE) AND
12052 l_lse_type = G_SLS_TYPE THEN
12053 l_cplv_rec.object1_id1 := p_cplv_rec.object1_id1;
12054 l_cplv_rec.object1_id2 := p_cplv_rec.object1_id2;
12055 -- Creation of Party Item Record for the above record information
12056 --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
12057 -- to update records in tables
12058 -- okc_k_party_roles_b and okl_k_party_roles
12059 /*
12060 OKL_OKC_MIGRATION_PVT.update_k_party_role(p_api_version => p_api_version,
12061 p_init_msg_list => p_init_msg_list,
12062 x_return_status => x_return_status,
12063 x_msg_count => x_msg_count,
12064 x_msg_data => x_msg_data,
12065 p_cplv_rec => l_cplv_rec,
12066 x_cplv_rec => x_cplv_rec);
12067 */
12068 l_kplv_rec.id := l_cplv_rec.id;
12069 OKL_K_PARTY_ROLES_PVT.update_k_party_role
12070 (p_api_version => p_api_version,
12071 p_init_msg_list => p_init_msg_list,
12072 x_return_status => x_return_status,
12073 x_msg_count => x_msg_count,
12074 x_msg_data => x_msg_data,
12075 p_cplv_rec => l_cplv_rec,
12076 x_cplv_rec => x_cplv_rec,
12077 p_kplv_rec => l_kplv_rec,
12078 x_kplv_rec => x_kplv_rec);
12079
12080 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12081 OKL_API.set_message(p_app_name => G_APP_NAME,
12082 p_msg_name => G_UPDATING_PARTY_ROLE);
12083 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12084 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12085 OKL_API.set_message(p_app_name => G_APP_NAME,
12086 p_msg_name => G_UPDATING_PARTY_ROLE);
12087 RAISE OKL_API.G_EXCEPTION_ERROR;
12088 END IF;
12089 ELSE
12090 OKL_API.set_message(p_app_name => G_APP_NAME,
12091 p_msg_name => G_INVALID_CRITERIA,
12092 p_token1 => G_COL_NAME_TOKEN,
12093 p_token1_value => 'Model/Addon Line for Party Roles');
12094 x_return_status := OKL_API.G_RET_STS_ERROR;
12095 RAISE OKL_API.G_EXCEPTION_ERROR;
12096 END IF;
12097 -- We need to change the status of the header whenever there is updating happening
12098 -- after the contract status is approved
12099 IF (x_cplv_rec.dnz_chr_id is NOT NULL) AND
12100 (x_cplv_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
12101 --cascade edit status on to lines
12102 okl_contract_status_pub.cascade_lease_status_edit
12103 (p_api_version => p_api_version,
12104 p_init_msg_list => p_init_msg_list,
12105 x_return_status => x_return_status,
12106 x_msg_count => x_msg_count,
12107 x_msg_data => x_msg_data,
12108 p_chr_id => x_cplv_rec.dnz_chr_id);
12109 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12110 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12111 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12112 RAISE OKL_API.G_EXCEPTION_ERROR;
12113 END IF;
12114 END IF;
12115 OKL_API.END_ACTIVITY (x_msg_count,
12116 x_msg_data );
12117 EXCEPTION
12118 WHEN OKL_API.G_EXCEPTION_ERROR THEN
12119 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
12120 l_api_name,
12121 G_PKG_NAME,
12122 'OKL_API.G_RET_STS_ERROR',
12123 x_msg_count,
12124 x_msg_data,
12125 '_PVT');
12126 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
12127 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
12128 l_api_name,
12129 G_PKG_NAME,
12130 'OKL_API.G_RET_STS_UNEXP_ERROR',
12131 x_msg_count,
12132 x_msg_data,
12133 '_PVT');
12134 WHEN OTHERS THEN
12135 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
12136 l_api_name,
12137 G_PKG_NAME,
12138 'OTHERS',
12139 x_msg_count,
12140 x_msg_data,
12141 '_PVT');
12142 END update_party_roles_rec;
12143
12144 --Bug# 3631094
12145 --------------------------------------------------------------------------------
12146 --Start of comments
12147 --Procedure Name : check_off_lease_trx (local)
12148 --Description : procedure checks if off lease transaction
12149 -- is under-way for this asset
12150 --History : 21-May-2004 avsingh Created
12151 --Notes : local procedure (this could change and get more complex
12152 -- in future that is why a separate local proc)
12153 -- IN Parameters-
12154 -- p_asset_id - asset id
12155 -- OUT Parameters -
12156 -- x_pending_trx_yn - 'Y' - pending off_lease trx
12157 -- 'N' - no pending off_lease trx
12158 --End of comments
12159 --------------------------------------------------------------------------------
12160
12161 Procedure check_off_lease_trx
12162 (p_api_version IN NUMBER,
12163 p_init_msg_list IN VARCHAR2,
12164 x_return_status OUT NOCOPY VARCHAR2,
12165 x_msg_count OUT NOCOPY NUMBER,
12166 x_msg_data OUT NOCOPY VARCHAR2,
12167 p_asset_id IN NUMBER,
12168 x_pending_trx_yn OUT NOCOPY VARCHAR2) is
12169
12170 l_return_status VARCHAR2(1) DEFAULT Okl_Api.G_RET_STS_SUCCESS;
12171 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_OFF_LEASE_TRX';
12172 l_api_version CONSTANT NUMBER := 1.0;
12173
12174 --cursor to find whether unprocessed off lease transaction exists
12175 cursor l_off_lease_csr (p_asset_id in number) is
12176 select 'Y'
12177 from fa_additions fa
12178 where fa.asset_id = p_asset_id
12179 and exists
12180 (select '1'
12181 from okl_trx_assets h,
12182 okl_txl_assets_b l
12183 where h.id = l.tas_id
12184 and h.TAS_TYPE in ('AMT','AUD','AUS')
12185 and l.asset_number = fa.asset_number
12186 and h.tsu_code = 'ENTERED');
12187
12188
12189 l_off_lease_trx_exists varchar2(1);
12190
12191 Begin
12192 x_return_status := OKL_API.G_RET_STS_SUCCESS;
12193 -- Call start_activity to create savepoint, check compatibility
12194 -- and initialize message list
12195 x_return_status := Okl_Api.START_ACTIVITY(
12196 p_api_name => l_api_name,
12197 p_pkg_name => g_pkg_name,
12198 p_init_msg_list => p_init_msg_list,
12199 l_api_version => l_api_version,
12200 p_api_version => p_api_version,
12201 p_api_type => '_PVT',
12202 x_return_status => x_return_status);
12203 -- Check if activity started successfully
12204 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
12205 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
12206 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
12207 RAISE Okc_Api.G_EXCEPTION_ERROR;
12208 END IF;
12209
12210 --check with cursor
12211 l_off_lease_trx_exists := 'N';
12212 open l_off_lease_csr (p_asset_id => p_asset_id);
12213 fetch l_off_lease_csr into l_off_lease_trx_exists;
12214 if l_off_lease_csr%NOTFOUND then
12215 null;
12216 end if;
12217 close l_off_lease_csr;
12218
12219 x_pending_trx_yn := l_off_lease_trx_exists;
12220 EXCEPTION
12221 WHEN OKL_API.G_EXCEPTION_ERROR THEN
12222 if l_off_lease_csr%ISOPEN then
12223 close l_off_lease_csr;
12224 end if;
12225 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
12226 l_api_name,
12227 G_PKG_NAME,
12228 'OKL_API.G_RET_STS_ERROR',
12229 x_msg_count,
12230 x_msg_data,
12231 '_PVT');
12232 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
12233 if l_off_lease_csr%ISOPEN then
12234 close l_off_lease_csr;
12235 end if;
12236 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
12237 l_api_name,
12238 G_PKG_NAME,
12239 'OKL_API.G_RET_STS_UNEXP_ERROR',
12240 x_msg_count,
12241 x_msg_data,
12242 '_PVT');
12243 WHEN OTHERS THEN
12244 if l_off_lease_csr%ISOPEN then
12245 close l_off_lease_csr;
12246 end if;
12247 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
12248 l_api_name,
12249 G_PKG_NAME,
12250 'OTHERS',
12251 x_msg_count,
12252 x_msg_data,
12253 '_PVT');
12254 END check_off_lease_trx;
12255
12256 --------------------------------------------------------------------------------
12257 --Start of comments
12258 --Procedure Name : Get_Pdt_Params (local)
12259 --Description : Multi-GAAP - Calls product api to fetch
12260 -- product specific parameters
12261 --History : 21-May-2004 ashish.singh Created
12262 --Notes : local procedure
12263 -- IN Parameters-
12264 -- p_chr_id - contract id
12265 -- OUT Parameters -
12266 -- x_rep_pdt_id - Reporting product id
12267 -- x_tax_owner - tax owner
12268 -- x_deal_type - local product deal type
12269 -- x_rep_deal_type - Reporting product deal type
12270 --End of comments
12271 --------------------------------------------------------------------------------
12272 Procedure Get_Pdt_Params (p_api_version IN NUMBER,
12273 p_init_msg_list IN VARCHAR2,
12274 x_return_status OUT NOCOPY VARCHAR2,
12275 x_msg_count OUT NOCOPY NUMBER,
12276 x_msg_data OUT NOCOPY VARCHAR2,
12277 p_chr_id IN NUMBER,
12278 x_rep_pdt_id OUT NOCOPY NUMBER,
12279 x_tax_owner OUT NOCOPY VARCHAR2,
12280 x_deal_type OUT NOCOPY VARCHAR2,
12281 x_rep_deal_type OUT NOCOPY VARCHAR2) is
12282
12283 l_pdtv_rec okl_setupproducts_pub.pdtv_rec_type;
12284 l_pdt_parameter_rec okl_setupproducts_pub.pdt_parameters_rec_type;
12285 l_rep_pdt_parameter_rec okl_setupproducts_pub.pdt_parameters_rec_type;
12286 l_pdt_date DATE;
12287 l_no_data_found BOOLEAN;
12288 l_error_condition Exception;
12289 l_return_status VARCHAR2(1) default OKL_API.G_RET_STS_SUCCESS;
12290
12291 --cursor to get pdt_id and k_start date
12292 cursor l_chr_csr (p_chr_id in number) is
12293 SELECT chrb.start_date,
12294 khr.pdt_id
12295 FROM OKC_K_HEADERS_B chrb,
12296 OKL_K_HEADERS khr
12297 WHERE khr.id = chrb.id
12298 AND chrb.id = p_chr_id;
12299
12300 l_chr_rec l_chr_csr%ROWTYPE;
12301
12302 Begin
12303
12304 --get pdt id and date from k header
12305 open l_chr_csr(p_chr_id => p_chr_id);
12306 Fetch l_chr_csr into l_chr_rec;
12307 If l_chr_csr%NOTFOUND then
12308 Null;
12309 End If;
12310 close l_chr_csr;
12311
12312 l_pdtv_rec.id := l_chr_rec.pdt_id;
12313 l_pdt_date := l_chr_rec.start_date;
12314 l_no_data_found := TRUE;
12315 x_return_status := OKL_API.G_RET_STS_SUCCESS;
12316
12317 okl_setupproducts_pub.Getpdt_parameters(p_api_version => p_api_version,
12318 p_init_msg_list => p_init_msg_list,
12319 x_return_status => l_return_status,
12320 x_no_data_found => l_no_data_found,
12321 x_msg_count => x_msg_count,
12322 x_msg_data => x_msg_data,
12323 p_pdtv_rec => l_pdtv_rec,
12324 p_product_date => l_pdt_date,
12325 p_pdt_parameter_rec => l_pdt_parameter_rec);
12326
12327 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS Then
12328 x_rep_pdt_id := Null;
12329 x_tax_owner := Null;
12330 Else
12331 x_rep_pdt_id := l_pdt_parameter_rec.reporting_pdt_id;
12332 x_tax_owner := l_pdt_parameter_rec.tax_owner;
12333 x_deal_type := l_pdt_parameter_rec.deal_type;
12334 --get reporting product param values
12335 l_no_data_found := TRUE;
12336 l_pdtv_rec.id := x_rep_pdt_id;
12337 okl_setupproducts_pub.Getpdt_parameters(p_api_version => p_api_version,
12338 p_init_msg_list => p_init_msg_list,
12339 x_return_status => l_return_status,
12340 x_no_data_found => l_no_data_found,
12341 x_msg_count => x_msg_count,
12342 x_msg_data => x_msg_data,
12343 p_pdtv_rec => l_pdtv_rec,
12344 p_product_date => l_pdt_date,
12345 p_pdt_parameter_rec => l_rep_pdt_parameter_rec);
12346
12347 IF l_return_status <> OKL_API.G_RET_STS_SUCCESS Then
12348 x_rep_deal_type := NULL;
12349 Else
12350 x_rep_deal_type := l_rep_pdt_parameter_rec.deal_type;
12351 End If;
12352 End If;
12353
12354 Exception
12355 When l_error_condition Then
12356 If l_chr_csr%ISOPEN then
12357 close l_chr_csr;
12358 End If;
12359 When Others Then
12360 If l_chr_csr%ISOPEN then
12361 close l_chr_csr;
12362 End If;
12363 x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
12364 End Get_Pdt_Params;
12365 --Bug# 3631094
12366
12367 --Bug# 3950089: start
12368 ------------------------------------------------------------------------------
12369 --Start of comments
12370 --
12371 --Procedure Name : get_nbv
12372 --Purpose : Get Net Book Value- used internally
12373 --Modification History :
12374 --27-Jan-2005 rpillay Created
12375 ------------------------------------------------------------------------------
12376 PROCEDURE get_nbv(p_api_version IN NUMBER,
12377 p_init_msg_list IN VARCHAR2,
12378 x_return_status OUT NOCOPY VARCHAR2,
12379 x_msg_count OUT NOCOPY NUMBER,
12380 x_msg_data OUT NOCOPY VARCHAR2,
12381 p_asset_id IN NUMBER,
12382 p_book_type_code IN VARCHAR2,
12383 p_chr_id IN NUMBER,
12384 p_release_date IN DATE,
12385 x_nbv OUT NOCOPY Number) IS
12386
12387 l_return_status VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
12388 l_api_name CONSTANT VARCHAR2(30) := 'GET_NBV';
12389 l_api_version CONSTANT NUMBER := 1.0;
12390
12391 l_asset_hdr_rec FA_API_TYPES.asset_hdr_rec_type;
12392 l_asset_fin_rec FA_API_TYPES.asset_fin_rec_type;
12393 l_asset_deprn_rec FA_API_TYPES.asset_deprn_rec_type;
12394
12395 l_nbv NUMBER;
12396 l_converted_amount NUMBER;
12397 l_contract_currency OKL_K_HEADERS_FULL_V.currency_code%TYPE;
12398 l_currency_conversion_type OKL_K_HEADERS_FULL_V.currency_conversion_type%TYPE;
12399 l_currency_conversion_rate OKL_K_HEADERS_FULL_V.currency_conversion_rate%TYPE;
12400 l_currency_conversion_date OKL_K_HEADERS_FULL_V.currency_conversion_date%TYPE;
12401
12402 BEGIN
12403 --call start activity to set savepoint
12404 l_return_status := OKL_API.START_ACTIVITY( substr(l_api_name,1,26),
12405 p_init_msg_list,
12406 '_PVT',
12407 x_return_status);
12408 IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12409 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12410 ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
12411 RAISE OKL_API.G_EXCEPTION_ERROR;
12412 END IF;
12413
12414 l_asset_hdr_rec.asset_id := p_asset_id;
12415 l_asset_hdr_rec.book_type_code := p_book_type_code;
12416
12417 if NOT fa_cache_pkg.fazcbc(x_book => l_asset_hdr_rec.book_type_code) then
12418 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
12419 p_msg_name => 'OKL_LLA_FA_CACHE_ERROR'
12420 );
12421 Raise OKL_API.G_EXCEPTION_ERROR;
12422 end if;
12423
12424 -- To fetch Asset Current Cost
12425 if not FA_UTIL_PVT.get_asset_fin_rec
12426 (p_asset_hdr_rec => l_asset_hdr_rec,
12427 px_asset_fin_rec => l_asset_fin_rec,
12428 p_transaction_header_id => NULL,
12429 p_mrc_sob_type_code => 'P'
12430 ) then
12431
12432 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
12433 p_msg_name => 'OKL_LLA_FA_ASSET_FIN_REC_ERROR'
12434 );
12435 Raise OKL_API.G_EXCEPTION_ERROR;
12436 end if;
12437
12438 -- To fetch Depreciation Reserve
12439 if not FA_UTIL_PVT.get_asset_deprn_rec
12440 (p_asset_hdr_rec => l_asset_hdr_rec ,
12441 px_asset_deprn_rec => l_asset_deprn_rec,
12442 p_period_counter => NULL,
12443 p_mrc_sob_type_code => 'P'
12444 ) then
12445 OKL_API.SET_MESSAGE(p_app_name => g_app_name,
12446 p_msg_name => 'OKL_LLA_FA_DEPRN_REC_ERROR'
12447 );
12448 Raise OKL_API.G_EXCEPTION_ERROR;
12449 end if;
12450
12451 l_nbv := l_asset_fin_rec.cost - l_asset_deprn_rec.deprn_reserve;
12452
12453 l_converted_amount := 0;
12454 OKL_ACCOUNTING_UTIL.CONVERT_TO_CONTRACT_CURRENCY(
12455 p_khr_id => p_chr_id,
12456 p_from_currency => NULL,
12457 p_transaction_date => p_release_date,
12458 p_amount => l_nbv,
12459 x_return_status => x_return_status,
12460 x_contract_currency => l_contract_currency,
12461 x_currency_conversion_type => l_currency_conversion_type,
12462 x_currency_conversion_rate => l_currency_conversion_rate,
12463 x_currency_conversion_date => l_currency_conversion_date,
12464 x_converted_amount => l_converted_amount);
12465
12466 IF(x_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
12467 Okl_Api.Set_Message(p_app_name => Okl_Api.G_APP_NAME,
12468 p_msg_name => 'OKL_CONV_TO_FUNC_CURRENCY_FAIL');
12469 RAISE Okl_Api.G_EXCEPTION_ERROR;
12470 END IF;
12471
12472 x_nbv := l_converted_amount;
12473
12474 --Call end Activity
12475 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
12476 EXCEPTION
12477 WHEN OKL_API.G_EXCEPTION_ERROR Then
12478 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
12479 (
12480 l_api_name,
12481 G_PKG_NAME,
12482 'OKL_API.G_RET_STS_ERROR',
12483 x_msg_count,
12484 x_msg_data,
12485 '_PVT'
12486 );
12487 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
12488 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
12489 (
12490 l_api_name,
12491 G_PKG_NAME,
12492 'OKL_API.G_RET_STS_UNEXP_ERROR',
12493 x_msg_count,
12494 x_msg_data,
12495 '_PVT'
12496 );
12497 WHEN OTHERS THEN
12498 x_return_status :=OKL_API.HANDLE_EXCEPTIONS
12499 (
12500 l_api_name,
12501 G_PKG_NAME,
12502 'OTHERS',
12503 x_msg_count,
12504 x_msg_data,
12505 '_PVT'
12506 );
12507 END get_nbv;
12508 --Bug# 3950089: end
12509
12510 -------------------------------------------
12511 --Bug# 3533936 : Process for release Assets
12512 -------------------------------------------
12513 PROCEDURE Create_release_asset_line
12514 (p_api_version IN NUMBER,
12515 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
12516 x_return_status OUT NOCOPY VARCHAR2,
12517 x_msg_count OUT NOCOPY NUMBER,
12518 x_msg_data OUT NOCOPY VARCHAR2,
12519 p_asset_id IN VARCHAR2,
12520 p_chr_id IN NUMBER,
12521 x_cle_id OUT NOCOPY NUMBER) IS
12522
12523
12524 l_return_status VARCHAR2(1) DEFAULT Okl_Api.G_RET_STS_SUCCESS;
12525 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_RELEASE_ASSET';
12526 l_api_version CONSTANT NUMBER := 1.0;
12527
12528 --cursor to fetch original financial asset line id
12529 CURSOR l_orig_ast_csr(p_asset_id varchar2) IS
12530 SELECT cle_orig.cle_id finasst_id,
12531 asr.id asset_return_id,
12532 cle_orig.dnz_chr_id dnz_chr_id,
12533 --Bug# 4869443
12534 --trunc(cle_orig.date_terminated) date_terminated
12535 trunc(decode(sign(cle_orig.end_date - cle_orig.date_terminated),-1,cle_orig.end_date,cle_orig.date_terminated)) date_terminated,
12536 --Bug# 6328924
12537 asr.legal_entity_id
12538 FROM OKL_ASSET_RETURNS_B asr,
12539 OKC_K_LINES_B cle_orig,
12540 OKC_LINE_STYLES_B lse_orig,
12541 OKC_K_ITEMS cim_orig
12542 WHERE asr.kle_id = cle_orig.cle_id
12543 AND asr.ars_code = 'RE_LEASE'
12544 AND cim_orig.object1_id1 = p_asset_id
12545 AND cim_orig.object1_id2 = '#'
12546 AND cim_orig.jtot_object1_code = 'OKX_ASSET'
12547 AND cle_orig.id = cim_orig.cle_id
12548 AND cle_orig.dnz_chr_id = cim_orig.dnz_chr_id
12549 AND cle_orig.lse_id = lse_orig.id
12550 AND lse_orig.lty_code = 'FIXED_ASSET';
12551
12552 l_orig_ast_rec l_orig_ast_csr%ROWTYPE;
12553 l_new_finasst_id NUMBER;
12554
12555 --cursor to fetch all the lines
12556 CURSOR l_lines_csr(p_from_cle_id in number) IS
12557 SELECT level,
12558 id,
12559 chr_id,
12560 cle_id,
12561 dnz_chr_id,
12562 orig_system_id1,
12563 lse_id -- Bug # 15992711 added the column
12564 FROM okc_k_lines_b
12565 CONNECT BY PRIOR id = cle_id
12566 START WITH id = p_from_cle_id;
12567
12568 l_lines_rec l_lines_csr%ROWTYPE;
12569
12570 --cursor to fetch rules linked to lines
12571 CURSOR l_rgp_csr(p_cle_id in number,
12572 p_chr_id in number) IS
12573 SELECT rgpb.id
12574 FROM OKC_RULE_GROUPS_B rgpb
12575 WHERE rgpb.cle_id = p_cle_id
12576 AND rgpb.dnz_chr_id = p_chr_id;
12577
12578
12579 l_rgp_id OKC_RULE_GROUPS_B.ID%TYPE;
12580 l_rgpv_rec okl_okc_migration_pvt.rgpv_rec_type;
12581
12582
12583 --cursor to get cost and salvage value for corporate book
12584 CURSOR l_corpbook_csr (p_cle_id in number,
12585 p_chr_id in number) IS
12586 select txlb.depreciation_cost,
12587 txlb.current_units,
12588 txlb.salvage_value,
12589 txlb.percent_salvage_value,
12590 --Bug : 3569441
12591 txlb.id,
12592 txlb.corporate_book,
12593 --Bug# 3631094
12594 txlb.in_service_date,
12595 txlb.deprn_method,
12596 txlb.life_in_months,
12597 txlb.deprn_rate,
12598 txlb.depreciation_id,
12599 txlb.asset_number
12600 from okl_txl_assets_b txlb,
12601 okc_k_lines_b fa_cleb,
12602 okc_line_styles_b fa_lseb
12603 where txlb.kle_id = fa_cleb.id
12604 and txlb.tal_type = 'CRL'
12605 and fa_cleb.cle_id = p_cle_id
12606 and fa_cleb.dnz_chr_id = p_chr_id
12607 and fa_cleb.lse_id = fa_lseb.id
12608 and fa_lseb.lty_code = 'FIXED_ASSET';
12609
12610 l_corpbook_rec l_corpbook_csr%ROWTYPE;
12611
12612 --cursor to get model line details
12613 CURSOR l_modelline_csr(p_cle_id in number,
12614 p_chr_id in number) IS
12615 select model_cleb.id model_cle_id,
12616 model_cim.id model_cim_id
12617 from okc_k_items model_cim,
12618 okc_k_lines_b model_cleb,
12619 okc_line_styles_b model_lseb
12620 where model_cim.cle_id = model_cleb.id
12621 and model_cim.dnz_chr_id = model_cleb.dnz_chr_id
12622 and model_cleb.cle_id = p_cle_id
12623 and model_cleb.dnz_chr_id = p_chr_id
12624 and model_cleb.lse_id = model_lseb.id
12625 and model_lseb.lty_code = 'ITEM';
12626
12627 l_modelline_rec l_modelline_csr%ROWTYPE;
12628
12629 l_clev_rec clev_rec_type;
12630 l_klev_rec klev_rec_type;
12631 lx_clev_rec clev_rec_type;
12632 lx_klev_rec klev_rec_type;
12633 l_cimv_rec cimv_rec_type;
12634 lx_cimv_rec cimv_rec_type;
12635
12636 l_dt_clev_rec clev_rec_type;
12637 l_dt_klev_rec klev_rec_type;
12638 lx_dt_clev_rec clev_rec_type;
12639 lx_dt_klev_rec klev_rec_type;
12640
12641
12642 --cursor to get any existing addons for deletion
12643 CURSOR l_addonline_csr (p_cle_id in number,
12644 p_chr_id in number) IS
12645
12646 select addon_cleb.id addon_cle_id
12647 from okc_k_lines_b addon_cleb,
12648 okc_line_styles_b addon_lseb,
12649 okc_k_lines_b model_cleb,
12650 okc_line_styles_b model_lseb
12651 where addon_cleb.cle_id = model_cleb.id
12652 and addon_cleb.dnz_chr_id = model_cleb.dnz_chr_id
12653 and addon_cleb.lse_id = addon_lseb.id
12654 and addon_lseb.lty_code = 'ADD_ITEM'
12655 and model_cleb.cle_id = p_cle_id
12656 and model_cleb.dnz_chr_id = p_chr_id
12657 and model_cleb.lse_id = model_lseb.id
12658 and model_lseb.lty_code = 'ITEM';
12659
12660 l_addonline_id OKC_K_LINES_B.ID%TYPE;
12661
12662 --cursor to get any existing subsidies for deletion
12663 CURSOR l_subsidyline_csr (p_cle_id in number,
12664 p_chr_id in number) IS
12665 select subsidy_cleb.id subsidy_cle_id
12666 from okc_k_lines_b subsidy_cleb,
12667 okc_line_styles_b subsidy_lseb
12668 where subsidy_cleb.cle_id = p_cle_id
12669 and subsidy_cleb.dnz_chr_id = p_chr_id
12670 and subsidy_cleb.lse_id = subsidy_lseb.id
12671 and subsidy_lseb.lty_code = 'SUBSIDY';
12672
12673 l_subsidyline_id OKC_K_LINES_B.ID%TYPE;
12674
12675
12676 --cursor to get party roles attached to copied line
12677 CURSOR l_cpl_csr (p_cle_id in number,
12678 p_chr_id in number) IS
12679 select cplb.id
12680 from okc_k_party_roles_b cplb
12681 where cle_id = p_cle_id
12682 and dnz_chr_id = p_chr_id;
12683
12684 l_cpl_id OKC_K_PARTY_ROLES_B.ID%TYPE;
12685 l_cplv_rec OKL_OKC_MIGRATION_PVT.cplv_rec_type;
12686
12687
12688 --cursor to get supplier invoice details
12689 CURSOR l_sid_csr (p_cle_id in NUMBER) IS
12690 select sid.id
12691 from okl_supp_invoice_dtls sid
12692 where cle_id = p_cle_id;
12693
12694 l_sid_id OKL_SUPP_INVOICE_DTLS.ID%TYPE;
12695 l_sidv_rec OKL_SUPP_INVOICE_DTLS_PUB.sidv_rec_type;
12696
12697 --cursor to get item sources for fa and ib lines
12698 CURSOR l_orig_cim_csr(p_orig_cle_id in number) IS
12699 SELECT object1_id1,
12700 object1_id2
12701 from okc_k_items
12702 WHERE cle_id = p_orig_cle_id;
12703
12704 l_orig_cim_rec l_orig_cim_csr%ROWTYPE;
12705
12706 --cursor to get corresponding cim record fro fa and ib lines
12707 CURSOR l_cim_csr (p_cle_id in number, p_chr_id in number) IS
12708 SELECT id
12709 from okc_k_items
12710 WHERE cle_id = p_cle_id
12711 And dnz_chr_id = p_chr_id;
12712
12713 l_cim_id OKC_K_ITEMS.ID%TYPE;
12714 l_upd_cimv_rec OKL_OKC_MIGRATION_PVT.cimv_rec_type;
12715 lx_upd_cimv_rec OKL_OKC_MIGRATION_PVT.cimv_rec_type;
12716
12717
12718 --Cursor to get hdr date
12719 CURSOR l_hdr_csr (p_chr_id IN NUMBER) is
12720 SELECT chrb.start_date,
12721 chrb.end_date,
12722 chrb.sts_code,
12723 --Bug# 4869443
12724 chrb.orig_system_source_code,
12725 --Bug# 6328924
12726 khr.legal_entity_id
12727 FROM okc_k_headers_b chrb,
12728 okl_k_headers khr
12729 WHERE chrb.id = p_chr_id
12730 AND khr.id = chrb.id;
12731
12732 l_hdr_rec l_hdr_csr%ROWTYPE;
12733
12734 --Bug : 3569441
12735 --cursor to get all the tax books
12736 CURSOR l_taxbook_csr(p_tal_id in number) is
12737 select txdb.tax_book,
12738 txdb.id
12739 from okl_txd_assets_b txdb
12740 where txdb.tal_id = p_tal_id;
12741
12742 l_taxbook_rec l_taxbook_csr%ROWTYPE;
12743
12744 --Bug# 3950089: Fetch NBV using FA apis
12745 /*
12746 --cursor to get nbv for each book
12747 CURSOR l_nbv_csr (p_book_type_code varchar2,
12748 p_asset_id number) IS
12749 Select (fb.cost - fds.deprn_reserve) nbv
12750 from fa_books fb,
12751 fa_deprn_periods fdp,
12752 fa_deprn_summary fds
12753 where fb.book_type_code = p_book_type_code
12754 and fb.asset_id = p_asset_id
12755 and fb.transaction_header_id_out is null
12756 and fdp.book_type_code = fb.book_type_code
12757 and fdp.period_close_date is null
12758 and fds.book_type_code = fb.book_type_code
12759 and fds.asset_id = fb.asset_id
12760 and fds.period_counter = (fdp.period_counter - 1);
12761 */
12762
12763 l_nbv NUMBER;
12764
12765 l_talv_rec talv_rec_type;
12766 lx_talv_rec talv_rec_type;
12767 l_txdv_rec txdv_rec_type;
12768 lx_txdv_rec txdv_rec_type;
12769 --END BUG# : 3569441
12770
12771 --Bug# 3631094 : cursor to get category book defaults
12772 Cursor l_defaults_csr (p_book in varchar2,
12773 p_cat in number,
12774 p_date in date) is
12775 select fcb.LIFE_IN_MONTHS,
12776 fcb.DEPRN_METHOD,
12777 fcb.ADJUSTED_RATE,
12778 fcb.BASIC_RATE
12779 from FA_CATEGORY_BOOK_DEFAULTS fcb
12780 where fcb.book_type_code = p_book
12781 and fcb.category_id = p_cat
12782 and p_date between fcb.start_dpis and nvl(fcb.end_dpis,p_date);
12783
12784 l_defaults_rec l_defaults_csr%ROWTYPE;
12785
12786 Cursor town_rul_csr (pchrid number) is
12787 Select rule_information1 tax_owner,
12788 id
12789 From okc_rules_b rul
12790 where rul.dnz_chr_id = pchrid
12791 and rul.rule_information_category = 'LATOWN'
12792 and nvl(rul.STD_TEMPLATE_YN,'N') = 'N';
12793
12794 l_town_rul okc_rules_b.rule_information1%TYPE;
12795 l_town_rul_id okc_rules_b.id%TYPE;
12796
12797 l_rep_asset_book okl_txl_assets_b.corporate_book%TYPE;
12798 l_rep_asset_book_done varchar2(1);
12799 l_rep_pdt_id number;
12800 l_tax_owner varchar2(30);
12801 l_rep_deal_type okl_k_headers.deal_type%TYPE;
12802 l_multi_gaap_yn varchar2(1);
12803 l_adjust_asset_to_zero varchar2(1);
12804 l_deal_type okl_k_headers.deal_type%TYPE;
12805
12806 l_mg_txdv_rec txdv_rec_type;
12807 lx_mg_txdv_rec txdv_rec_type;
12808 l_corp_nbv number;
12809 l_pending_trx_yn varchar2(1);
12810
12811 --cursor to get asset number
12812 cursor l_Asset_no_csr(p_asset_id in number) is
12813 select asset_number
12814 from fa_additions
12815 where asset_id = p_asset_id;
12816
12817 l_asset_number fa_additions.asset_number%TYPE;
12818 l_mg_txd_id okl_txd_assets_b.id%TYPE;
12819 --Bug# 3631094
12820
12821 --Bug# 3783518 :
12822 CURSOR l_chk_rbk_csr (p_chr_id in NUMBER) is
12823 select 'Y'
12824 from okc_k_headers_b chrb
12825 where nvl(chrb.orig_system_source_code,'XXXX') = 'OKL_REBOOK'
12826 and chrb.id = p_chr_id;
12827
12828 l_rbk_yn varchar2(1);
12829 --Bug# 3783518 :
12830
12831 --Bug# 4558486
12832 l_kplv_rec OKL_K_PARTY_ROLES_PVT.kplv_rec_type;
12833
12834 --Bug# 4869443
12835 l_icx_date_format varchar2(240);
12836 l_termination_date varchar2(240);
12837 l_k_start_date varchar2(240);
12838 --Bug# 4869443
12839 BEGIN
12840 x_return_status := Okl_Api.G_RET_STS_SUCCESS;
12841 -- Call start_activity to create savepoint, check compatibility
12842 -- and initialize message list
12843 x_return_status := Okl_Api.START_ACTIVITY(
12844 p_api_name => l_api_name,
12845 p_pkg_name => g_pkg_name,
12846 p_init_msg_list => p_init_msg_list,
12847 l_api_version => l_api_version,
12848 p_api_version => p_api_version,
12849 p_api_type => '_PVT',
12850 x_return_status => x_return_status);
12851 -- Check if activity started successfully
12852 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
12853 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
12854 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
12855 RAISE Okc_Api.G_EXCEPTION_ERROR;
12856 END IF;
12857
12858 --------------------------------
12859 --Bug# 3783518 : Check if it is a rebook. New asset should not be added on rebook of a rlease asset contract
12860 --------------------------------
12861 l_rbk_yn := 'N';
12862 open l_chk_rbk_csr(p_chr_id => p_chr_id);
12863 fetch l_chk_rbk_csr into l_rbk_yn;
12864 if l_chk_rbk_csr%NOTFOUND then
12865 null;
12866 end if;
12867 close l_chk_rbk_csr;
12868
12869
12870 If l_rbk_yn = 'Y' then
12871 OKL_API.set_message(
12872 p_app_name => G_APP_NAME,
12873 p_msg_name => 'OKL_REL_ASSET_RBK_NEW_AST_ADD');
12874 x_return_status := OKC_API.G_RET_STS_ERROR;
12875 RAISE OKL_API.G_EXCEPTION_ERROR;
12876
12877 End If;
12878
12879 ------------------
12880 --end Bug# 3783518
12881 ------------------
12882 --------------------------------
12883 --0. Check if off-lease processing is not going on
12884 -------------------------------
12885
12886 ---------------------
12887 --bug# 4869443
12888 ---------------------
12889 open l_hdr_csr (p_chr_id => p_chr_id);
12890 Fetch l_hdr_csr into l_hdr_rec;
12891 close l_hdr_csr;
12892
12893 l_pending_trx_yn := 'N';
12894 check_off_lease_trx
12895 (p_api_version => p_api_version,
12896 p_init_msg_list => p_init_msg_list,
12897 x_return_status => x_return_status,
12898 x_msg_count => x_msg_count,
12899 x_msg_data => x_msg_data,
12900 p_asset_id => p_asset_id,
12901 x_pending_trx_yn => l_pending_trx_yn);
12902 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
12903 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
12904 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
12905 RAISE Okc_Api.G_EXCEPTION_ERROR;
12906 END IF;
12907
12908 If l_pending_trx_yn = 'Y' then
12909
12910 open l_asset_no_csr(p_asset_id => p_asset_id);
12911 fetch l_asset_no_csr into l_asset_number;
12912 if l_asset_no_csr%NOTFOUND then
12913 null;
12914 end if;
12915 close l_asset_no_csr;
12916
12917 OKL_API.set_message(
12918 p_app_name => G_APP_NAME,
12919 p_msg_name => 'OKL_LA_OFF_LEASE_TRX',
12920 p_token1 => 'ASSET_NUMBER',
12921 p_token1_value => l_asset_number);
12922 x_return_status := OKC_API.G_RET_STS_ERROR;
12923 RAISE OKL_API.G_EXCEPTION_ERROR;
12924
12925 End If;
12926
12927
12928 ------------------------
12929 --1. get the original asset id
12930 ------------------------
12931 Open l_orig_ast_csr (p_asset_id => p_asset_id);
12932 Fetch l_orig_ast_csr into l_orig_ast_rec;
12933 If l_orig_ast_csr%NOTFOUND then
12934 --raise error: Unable to fetch data for asset to release
12935 --from the old contract
12936 OKL_API.set_message(p_app_name => G_APP_NAME,
12937 p_msg_name => 'OKL_LA_RELEASE_AST_DTLS');
12938 RAISE Okl_Api.G_EXCEPTION_ERROR; -- rmunjulu bug 6805958
12939 End If;
12940 Close l_orig_ast_csr;
12941
12942
12943 --Bug# 4869443
12944 If nvl(l_hdr_rec.orig_system_source_code,OKL_API.G_MISS_CHAR) <> 'OKL_RELEASE' then --is a release asset case
12945 If (l_hdr_rec.start_date <= l_orig_ast_rec.date_terminated) then
12946 -- Raise Error: start date of the contract should not be less than or equal to termination
12947 -- date of the asset.
12948 l_icx_date_format := nvl(fnd_profile.value('ICX_DATE_FORMAT_MASK'),'DD-MON-RRRR');
12949
12950 l_termination_date := to_char(l_orig_ast_rec.date_terminated,l_icx_date_format);
12951 l_k_start_date := to_char(l_hdr_rec.start_date,l_icx_date_format);
12952
12953 open l_asset_no_csr(p_asset_id => p_asset_id);
12954 fetch l_asset_no_csr into l_asset_number;
12955 if l_asset_no_csr%NOTFOUND then
12956 null;
12957 end if;
12958 close l_asset_no_csr;
12959
12960 OKL_API.set_message(p_app_name => G_APP_NAME,
12961 p_msg_name => 'OKL_LA_RELEASE_AST_TRMN_DATE',
12962 p_token1 => 'TERMINATION_DATE',
12963 p_token1_value => l_termination_date,
12964 p_token2 => 'ASSET_NUMBER',
12965 p_token2_value => l_asset_number,
12966 p_token3 => 'CONTRACT_START_DATE',
12967 p_token3_value => l_k_start_date);
12968 RAISE Okl_Api.G_EXCEPTION_ERROR; -- rmunjulu bug 6805958 changed to OKL_API from OKC_API
12969 End If;
12970
12971 --Bug# 6328924
12972 If (l_hdr_rec.legal_entity_id <> l_orig_ast_rec.legal_entity_id) then
12973 -- Raise Error: The legal entity associated with Asset must be the same as
12974 -- the legal entity associated with the contract
12975
12976 open l_asset_no_csr(p_asset_id => p_asset_id);
12977 fetch l_asset_no_csr into l_asset_number;
12978 if l_asset_no_csr%NOTFOUND then
12979 null;
12980 end if;
12981 close l_asset_no_csr;
12982
12983 OKL_API.set_message(p_app_name => G_APP_NAME,
12984 p_msg_name => 'OKL_LA_RELEASE_ASSET_LGL_ENTY',
12985 p_token1 => 'ASSET_NUMBER',
12986 p_token1_value => l_asset_number);
12987 RAISE Okl_Api.G_EXCEPTION_ERROR;
12988 End If;
12989
12990 End If;
12991 --Bug# 4869443
12992
12993 --------------------------
12994 --2. copy asset line
12995 -------------------------
12996 OKL_COPY_ASSET_PUB.copy_asset_lines
12997 (p_api_version => p_api_version,
12998 p_init_msg_list => p_init_msg_list,
12999 x_return_status => x_return_status,
13000 x_msg_count => x_msg_count,
13001 x_msg_data => x_msg_data,
13002 p_from_cle_id => l_orig_ast_rec.finasst_id,
13003 p_to_cle_id => OKL_API.G_MISS_NUM ,
13004 p_to_chr_id => p_chr_id,
13005 p_to_template_yn => 'N',
13006 p_copy_reference => 'COPY',
13007 p_copy_line_party_yn => 'N',
13008 p_renew_ref_yn => 'N',
13009 p_trans_type => 'CRL',
13010 x_cle_id => l_new_finasst_id);
13011 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13012 RAISE OKL_API.G_EXCEPTION_ERROR;
13013 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13014 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13015 END IF;
13016
13017 ---------------------------
13018 --3. delete addon lines
13019 --------------------------
13020 Open l_addonline_csr(p_cle_id => l_new_finasst_id,
13021 p_chr_id => p_chr_id);
13022 Loop
13023 Fetch l_addonline_csr into l_addonline_id;
13024 Exit when l_addonline_csr%NOTFOUND;
13025 OKL_CONTRACT_PUB.delete_contract_line
13026 (p_api_version => p_api_version,
13027 p_init_msg_list => p_init_msg_list,
13028 x_return_status => x_return_status,
13029 x_msg_count => x_msg_count,
13030 x_msg_data => x_msg_data,
13031 p_line_id => l_addonline_id);
13032
13033 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13034 RAISE OKL_API.G_EXCEPTION_ERROR;
13035 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13036 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13037 END IF;
13038 End Loop;
13039 Close l_addonline_csr;
13040
13041 -----------------------------
13042 --4.delete subsidy lines
13043 ----------------------------
13044 Open l_subsidyline_csr (p_cle_id => l_new_finasst_id,
13045 p_chr_id => p_chr_id);
13046 Loop
13047 Fetch l_subsidyline_csr into l_subsidyline_id;
13048 Exit when l_subsidyline_csr%NOTFOUND;
13049 OKL_CONTRACT_PUB.delete_contract_line
13050 (p_api_version => p_api_version,
13051 p_init_msg_list => p_init_msg_list,
13052 x_return_status => x_return_status,
13053 x_msg_count => x_msg_count,
13054 x_msg_data => x_msg_data,
13055 p_line_id => l_subsidyline_id);
13056
13057 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13058 RAISE OKL_API.G_EXCEPTION_ERROR;
13059 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13060 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13061 END IF;
13062 End Loop;
13063 Close l_subsidyline_csr;
13064
13065
13066 ---------------------------------------------------
13067 --5. Delete the rules associated with original line
13068 -- Update contract header dates on to lines
13069 -- Plug in asset and ib ids
13070 -- Delete Parties
13071 -- Delete supplier invoice details
13072 --------------------------------------------------
13073 ---
13074 --Bug# 4869443 : cursor open moved up
13075 --
13076 --open l_hdr_csr (p_chr_id => p_chr_id);
13077 --Fetch l_hdr_csr into l_hdr_rec;
13078 --close l_hdr_csr;
13079
13080 open l_lines_csr(p_from_cle_id => l_new_finasst_id);
13081 Loop
13082 Fetch l_lines_csr into l_lines_rec;
13083 Exit when l_lines_csr%NOTFOUND;
13084
13085 --update line start and end dates
13086 l_dt_clev_rec.id := l_lines_rec.id;
13087 l_dt_klev_rec.id := l_lines_rec.id;
13088
13089 -- Bug #15992711: Start of modifications
13090 -- Passing the re-lease asset flag as 'Y' for the asset line
13091 -- which has re lease assets.
13092 IF l_lines_rec.lse_id = 33 THEN
13093 l_dt_klev_rec.re_lease_yn := 'Y';
13094 ELSE
13095 l_dt_klev_rec.re_lease_yn := NULL;
13096 END IF;
13097 -- Bug #15992711: End of modifications
13098
13099 l_dt_clev_rec.start_date := l_hdr_rec.start_date;
13100 l_dt_clev_rec.end_date := l_hdr_rec.end_date;
13101 l_dt_clev_rec.sts_code := l_hdr_rec.sts_code;
13102
13103 okl_contract_pub.update_contract_line
13104 (p_api_version => p_api_version,
13105 p_init_msg_list => p_init_msg_list,
13106 x_return_status => x_return_status,
13107 x_msg_count => x_msg_count,
13108 x_msg_data => x_msg_data,
13109 p_clev_rec => l_dt_clev_rec,
13110 p_klev_rec => l_dt_klev_rec,
13111 x_clev_rec => lx_dt_clev_rec,
13112 x_klev_rec => lx_dt_klev_rec);
13113
13114 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13115 RAISE OKL_API.G_EXCEPTION_ERROR;
13116 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13117 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13118 END IF;
13119
13120
13121 --plug in asset and ib ids
13122 Open l_orig_cim_csr(p_orig_cle_id => l_lines_rec.orig_system_id1);
13123 Fetch l_orig_cim_csr into l_orig_cim_rec;
13124 If l_orig_cim_csr%NOTFOUND then
13125 Null;
13126 Else
13127 Open l_cim_csr(p_cle_id => l_lines_rec.id, p_chr_id => p_chr_id);
13128 Fetch l_cim_csr into l_cim_id;
13129 If l_cim_csr%NOTFOUND then
13130 NULL;
13131 Else
13132
13133 l_upd_cimv_rec.id := l_cim_id;
13134 l_upd_cimv_rec.object1_id1 := l_orig_cim_rec.object1_id1;
13135 l_upd_cimv_rec.object1_id2 := l_orig_cim_rec.object1_id2;
13136
13137 OKL_OKC_MIGRATION_PVT.update_contract_item
13138 (p_api_version => p_api_version,
13139 p_init_msg_list => p_init_msg_list,
13140 x_return_status => x_return_status,
13141 x_msg_count => x_msg_count,
13142 x_msg_data => x_msg_data,
13143 p_cimv_rec => l_upd_cimv_rec,
13144 x_cimv_rec => lx_upd_cimv_rec);
13145
13146 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13147 RAISE OKL_API.G_EXCEPTION_ERROR;
13148 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13149 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13150 END IF;
13151 End If;
13152 Close l_cim_csr;
13153 End If;
13154 Close l_orig_cim_csr;
13155
13156 --Get rule groups associated with each line
13157 Open l_rgp_csr(p_cle_id => l_lines_rec.id, p_chr_id => p_chr_id);
13158 Loop
13159 Fetch l_rgp_csr into l_rgp_id;
13160 Exit when l_rgp_csr%NOTFOUND;
13161 --delete the rule group instance
13162 l_rgpv_rec.id := l_rgp_id;
13163 OKL_RULE_PUB.delete_rule_group
13164 (p_api_version => p_api_version,
13165 p_init_msg_list => p_init_msg_list,
13166 x_return_status => x_return_status,
13167 x_msg_count => x_msg_count,
13168 x_msg_data => x_msg_data,
13169 p_rgpv_rec => l_rgpv_rec );
13170
13171 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13172 RAISE OKL_API.G_EXCEPTION_ERROR;
13173 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13174 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13175 END IF;
13176 End Loop;
13177 Close l_rgp_csr;
13178
13179 --get supplier invoice details linked with each line
13180 Open l_sid_csr (p_cle_id => l_lines_rec.id);
13181 Loop
13182 Fetch l_sid_csr into l_sid_id;
13183 Exit when l_sid_csr%NOTFOUND;
13184 --delete sidv rec
13185 l_sidv_rec.id := l_sid_id;
13186 OKL_SUPP_INVOICE_DTLS_PUB.delete_sup_inv_dtls
13187 (p_api_version => p_api_version,
13188 p_init_msg_list => p_init_msg_list,
13189 x_return_status => x_return_status,
13190 x_msg_count => x_msg_count,
13191 x_msg_data => x_msg_data,
13192 p_sidv_rec => l_sidv_rec );
13193
13194 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13195 RAISE OKL_API.G_EXCEPTION_ERROR;
13196 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13197 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13198 END IF;
13199 End Loop;
13200 Close l_sid_csr;
13201
13202 --get party roles linked with each line
13203 Open l_cpl_csr (p_cle_id => l_lines_rec.id, p_chr_id => p_chr_id);
13204 Loop
13205 Fetch l_cpl_csr into l_cpl_id;
13206 Exit when l_cpl_csr%NOTFOUND;
13207 --delete cplv rec
13208 l_cplv_rec.id := l_cpl_id;
13209 --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
13210 -- to delete records in tables
13211 -- okc_k_party_roles_b and okl_k_party_roles
13212 /*
13213 OKL_OKC_MIGRATION_PVT.delete_k_party_role
13214 ( p_api_version => p_api_version,
13215 p_init_msg_list => p_init_msg_list,
13216 x_return_status => x_return_status,
13217 x_msg_count => x_msg_count,
13218 x_msg_data => x_msg_data,
13219 p_cplv_rec => l_cplv_rec );
13220 */
13221 l_kplv_rec.id := l_cplv_rec.id;
13222 OKL_K_PARTY_ROLES_PVT.delete_k_party_role
13223 ( p_api_version => p_api_version,
13224 p_init_msg_list => p_init_msg_list,
13225 x_return_status => x_return_status,
13226 x_msg_count => x_msg_count,
13227 x_msg_data => x_msg_data,
13228 p_cplv_rec => l_cplv_rec,
13229 p_kplv_rec => l_kplv_rec);
13230
13231 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13232 RAISE OKL_API.G_EXCEPTION_ERROR;
13233 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13234 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13235 END IF;
13236 End Loop;
13237 Close l_cpl_csr;
13238 End Loop;
13239 close l_lines_csr;
13240
13241 -------------------------------------------------------
13242 --6. Update the costs and salvage value from FA
13243 ------------------------------------------------------
13244 Open l_corpbook_csr(p_cle_id => l_new_finasst_id,
13245 p_chr_id => p_chr_id);
13246 Fetch l_corpbook_csr into l_corpbook_rec;
13247 If l_corpbook_csr%NOTFOUND then
13248 --error
13249 NULL;
13250 End If;
13251 Close l_corpbook_csr;
13252
13253 --Bug# 3950089: Fetch NBV using FA apis
13254 /*
13255 --BUG# : 3569441
13256 l_nbv := Null;
13257 Open l_nbv_csr(p_book_type_code => l_corpbook_rec.corporate_book,
13258 p_asset_id => p_asset_id);
13259 Fetch l_nbv_csr into l_nbv;
13260 If l_nbv_csr%NOTFOUND then
13261 null;
13262 End If;
13263 Close l_nbv_csr;
13264 */
13265
13266 l_nbv := Null;
13267 get_nbv(p_api_version => p_api_version,
13268 p_init_msg_list => p_init_msg_list,
13269 x_return_status => x_return_status,
13270 x_msg_count => x_msg_count,
13271 x_msg_data => x_msg_data,
13272 p_asset_id => p_asset_id,
13273 p_book_type_code => l_corpbook_rec.corporate_book,
13274 p_chr_id => p_chr_id,
13275 p_release_date => l_hdr_rec.start_date,
13276 x_nbv => l_nbv);
13277
13278 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13279 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13280 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13281 RAISE OKL_API.G_EXCEPTION_ERROR;
13282 END IF;
13283
13284 IF l_nbv is not NULL then
13285 --update okl_txl_Assets
13286 l_talv_rec.id := l_corpbook_rec.id;
13287 l_talv_rec.DEPRECIATION_COST := l_nbv;
13288 l_talv_rec.ORIGINAL_COST := l_nbv;
13289 l_corp_nbv := l_nbv;
13290
13291 Update_asset_lines(
13292 p_api_version => p_api_version,
13293 p_init_msg_list => p_init_msg_list,
13294 x_return_status => x_return_status,
13295 x_msg_count => x_msg_count,
13296 x_msg_data => x_msg_data,
13297 p_talv_rec => l_talv_rec,
13298 x_talv_rec => lx_talv_rec);
13299
13300 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13301 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13302 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13303 RAISE Okc_Api.G_EXCEPTION_ERROR;
13304 END IF;
13305 END IF;
13306 --BUG# :END 3569441
13307
13308 Open l_modelline_csr (p_cle_id => l_new_finasst_id,
13309 p_chr_id => p_chr_id);
13310 Fetch l_modelline_csr into l_modelline_rec;
13311 If l_modelline_csr%NOTFOUND then
13312 --error
13313 NULL;
13314 End If;
13315 Close l_modelline_csr;
13316
13317 l_clev_rec.id := l_modelline_rec.model_cle_id;
13318 l_klev_rec.id := l_modelline_rec.model_cle_id;
13319 --BUG# : 3569441
13320 If l_nbv is NULL then
13321 l_clev_rec.price_unit := (l_corpbook_rec.depreciation_cost/l_corpbook_rec.current_units);
13322 ElsIf l_nbv is NOT NULL then
13323 l_clev_rec.price_unit := (l_nbv/l_corpbook_rec.current_units);
13324 End If;
13325 --BUG# End : 3569441
13326 l_cimv_rec.id := l_modelline_rec.model_cim_id;
13327 l_cimv_rec.number_of_items := l_corpbook_rec.current_units;
13328
13329 okl_contract_pub.update_contract_line
13330 (p_api_version => p_api_version,
13331 p_init_msg_list => p_init_msg_list,
13332 x_return_status => x_return_status,
13333 x_msg_count => x_msg_count,
13334 x_msg_data => x_msg_data,
13335 p_clev_rec => l_clev_rec,
13336 p_klev_rec => l_klev_rec,
13337 x_clev_rec => lx_clev_rec,
13338 x_klev_rec => lx_klev_rec);
13339 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13340 RAISE OKL_API.G_EXCEPTION_ERROR;
13341 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13342 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13343 END IF;
13344
13345 okl_okc_migration_pvt.update_contract_item
13346 (p_api_version => p_api_version,
13347 p_init_msg_list => p_init_msg_list,
13348 x_return_status => x_return_status,
13349 x_msg_count => x_msg_count,
13350 x_msg_data => x_msg_data,
13351 p_cimv_rec => l_cimv_rec,
13352 x_cimv_rec => lx_cimv_rec);
13353 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13354 RAISE OKL_API.G_EXCEPTION_ERROR;
13355 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13356 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13357 END IF;
13358
13359 --update financial asset line for OEC and residual value
13360 l_clev_rec.id := l_new_finasst_id;
13361 l_klev_rec.id := l_new_finasst_id;
13362 l_clev_rec.price_unit := OKL_API.G_MISS_NUM;
13363 l_klev_rec.residual_percentage := l_corpbook_rec.percent_salvage_value;
13364 l_klev_rec.residual_value := l_corpbook_rec.salvage_value;
13365 --BUG : 3569441
13366 l_klev_rec.oec := l_nbv;
13367 --l_klev_rec.oec := l_corpbook_rec.depreciation_cost;
13368
13369 okl_contract_pub.update_contract_line
13370 (p_api_version => p_api_version,
13371 p_init_msg_list => p_init_msg_list,
13372 x_return_status => x_return_status,
13373 x_msg_count => x_msg_count,
13374 x_msg_data => x_msg_data,
13375 p_clev_rec => l_clev_rec,
13376 p_klev_rec => l_klev_rec,
13377 x_clev_rec => lx_clev_rec,
13378 x_klev_rec => lx_klev_rec);
13379 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13380 RAISE OKL_API.G_EXCEPTION_ERROR;
13381 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13382 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13383 END IF;
13384
13385 --Bug# 3631094 : Creation of reporting tax book
13386 l_rep_asset_book := OKL_SYSTEM_PARAMS_ALL_PUB.get_system_param_value(OKL_SYSTEM_PARAMS_ALL_PUB.G_RPT_PROD_BOOK_TYPE_CODE);
13387 l_rep_Asset_book_done := 'N';
13388 --BUG# : 3569441
13389 OPEN l_taxbook_csr(p_tal_id => l_corpbook_rec.id);
13390 Loop
13391 Fetch l_taxbook_csr into l_taxbook_rec;
13392 Exit when l_taxbook_csr%NOTFOUND;
13393 If l_taxbook_rec.tax_book = nvl(l_rep_Asset_book,OKL_API.G_MISS_CHAR) then
13394 l_rep_Asset_book_done := 'Y';
13395 l_mg_txd_id := l_taxbook_rec.id;
13396 End If;
13397 --Bug# 3950089: Fetch NBV using FA apis
13398 /*
13399 l_nbv := NULL;
13400 Open l_nbv_csr(p_book_type_code => l_taxbook_rec.tax_book,
13401 p_asset_id => p_asset_id);
13402 Fetch l_nbv_csr into l_nbv;
13403 If l_nbv_csr%NOTFOUND then
13404 NULL;
13405 End If;
13406 Close l_nbv_csr;
13407 */
13408
13409 l_nbv := Null;
13410 get_nbv(p_api_version => p_api_version,
13411 p_init_msg_list => p_init_msg_list,
13412 x_return_status => x_return_status,
13413 x_msg_count => x_msg_count,
13414 x_msg_data => x_msg_data,
13415 p_asset_id => p_asset_id,
13416 p_book_type_code => l_taxbook_rec.tax_book,
13417 p_chr_id => p_chr_id,
13418 p_release_date => l_hdr_rec.start_date,
13419 x_nbv => l_nbv);
13420
13421 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13422 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13423 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13424 RAISE OKL_API.G_EXCEPTION_ERROR;
13425 END IF;
13426
13427 If l_nbv is NOT NULL then
13428 --update okl_txd_Assets_b
13429 l_txdv_rec.id := l_taxbook_rec.id;
13430 l_txdv_rec.cost := l_nbv;
13431 OKL_TXD_ASSETS_PUB.UPDATE_TXD_ASSET_DEF
13432 (
13433 p_api_version => p_api_version,
13434 p_init_msg_list => p_init_msg_list,
13435 x_return_status => x_return_status,
13436 x_msg_count => x_msg_count,
13437 x_msg_data => x_msg_data,
13438 p_adpv_rec => l_txdv_rec,
13439 x_adpv_rec => lx_txdv_rec);
13440
13441 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13442 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13443 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13444 RAISE Okc_Api.G_EXCEPTION_ERROR;
13445 END IF;
13446 END IF;
13447 End Loop;
13448 Close l_taxbook_csr;
13449 --BUG# : END 3569441
13450
13451 --Bug# 3631094 :
13452 Get_Pdt_Params (p_api_version => p_api_version,
13453 p_init_msg_list => p_init_msg_list,
13454 x_return_status => x_return_status,
13455 x_msg_count => x_msg_count,
13456 x_msg_data => x_msg_data,
13457 p_chr_id => p_chr_id,
13458 x_rep_pdt_id => l_rep_pdt_id,
13459 x_tax_owner => l_tax_owner,
13460 x_deal_type => l_deal_type,
13461 x_rep_deal_type => l_rep_deal_type);
13462
13463 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13464 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13465 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13466 RAISE OKL_API.G_EXCEPTION_ERROR;
13467 END IF;
13468
13469 If l_tax_owner is null then
13470 Open town_rul_csr(pchrid => p_chr_id);
13471 Fetch town_rul_csr into l_town_rul,
13472 l_town_rul_id;
13473 If town_rul_csr%NOTFOUND Then
13474 OKC_API.set_message(
13475 p_app_name => G_APP_NAME,
13476 p_msg_name => G_REQUIRED_VALUE,
13477 p_token1 => G_COL_NAME_TOKEN,
13478 p_token1_value => 'Tax Owner');
13479 x_return_status := OKC_API.G_RET_STS_ERROR;
13480 RAISE OKL_API.G_EXCEPTION_ERROR;
13481 Else
13482 l_tax_owner := rtrim(ltrim(l_town_rul,' '),' ');
13483 End If;
13484 Close town_rul_csr;
13485 End If;
13486
13487 l_Multi_GAAP_YN := 'N';
13488 l_adjust_asset_to_zero := 'N';
13489 --checks wheter Multi-GAAP processing needs tobe done
13490 If l_rep_pdt_id is not NULL Then
13491 --Bug 7708944. SGIYER 01/15/2009.
13492 -- Implemented MG changes based on PM recommendation.
13493 l_Multi_GAAP_YN := 'Y';
13494 /*
13495 If l_deal_type = 'LEASEOP' and
13496 nvl(l_rep_deal_type,'X') = 'LEASEOP' and
13497 nvl(l_tax_owner,'X') = 'LESSOR' Then
13498 l_Multi_GAAP_YN := 'Y';
13499 End If;
13500
13501 If l_deal_type in ('LEASEDF','LEASEST') and
13502 nvl(l_rep_deal_type,'X') = 'LEASEOP' and
13503 nvl(l_tax_owner,'X') = 'LESSOR' Then
13504 l_Multi_GAAP_YN := 'Y';
13505 End If;
13506
13507 If l_deal_type in ('LEASEDF','LEASEST') and
13508 nvl(l_rep_deal_type,'X') = 'LEASEOP' and
13509 nvl(l_tax_owner,'X') = 'LESSEE' Then
13510 l_Multi_GAAP_YN := 'Y';
13511 End If;
13512
13513 If l_deal_type = 'LOAN' and
13514 nvl(l_rep_deal_type,'X') = 'LEASEOP' and
13515 nvl(l_tax_owner,'X') = 'LESSEE' Then
13516 l_Multi_GAAP_YN := 'Y';
13517 End If;
13518 */
13519 -- If the reporting product is DF/ST lease, the asset should
13520 -- be created and written to zero in the reporting book.
13521
13522 --Bug 7708944. SGIYER 01/15/2009.
13523 -- Implemented MG changes based on PM recommendation.
13524 If l_deal_type = 'LEASEOP' and
13525 nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
13526 nvl(l_tax_owner,'X') = 'LESSOR' Then
13527 --l_Multi_GAAP_YN := 'Y';
13528 l_adjust_asset_to_zero := 'Y';
13529 End If;
13530
13531 If l_deal_type in ('LEASEDF','LEASEST') and
13532 nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
13533 nvl(l_tax_owner,'X') = 'LESSOR' Then
13534 --l_Multi_GAAP_YN := 'Y';
13535 l_adjust_asset_to_zero := 'Y';
13536 End If;
13537
13538 If l_deal_type in ('LEASEDF','LEASEST') and
13539 nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
13540 nvl(l_tax_owner,'X') = 'LESSEE' Then
13541 --l_Multi_GAAP_YN := 'Y';
13542 l_adjust_asset_to_zero := 'Y';
13543 End If;
13544 End If;
13545
13546 --Bug 7708944. SGIYER 01/15/2009.
13547 -- Implemented MG changes based on PM recommendation.
13548 If l_Multi_GAAP_YN = 'Y' and nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST','LEASEOP') then
13549 If nvl(l_rep_Asset_book_done,OKL_API.G_MISS_CHAR) = 'N' then
13550 l_mg_txdv_rec.tal_id := l_corpbook_rec.id;
13551 l_mg_txdv_rec.asset_number := l_corpbook_rec.asset_number;
13552 l_mg_txdv_rec.tax_book := l_rep_Asset_book;
13553 --If nvl(l_adjust_asset_to_zero,OKL_API.G_MISS_CHAR) = 'Y' then
13554 --l_mg_txdv_rec.cost := 0;
13555 --ElsIf nvl(l_adjust_asset_to_zero,OKL_API.G_MISS_CHAR) = 'N' then
13556 l_mg_txdv_rec.cost := l_corp_nbv;
13557 --End If;
13558 --get defaults from category books
13559 open l_defaults_csr (p_book => l_rep_asset_book,
13560 p_cat => l_corpbook_rec.depreciation_id,
13561 p_date => l_corpbook_rec.in_service_date);
13562 Fetch l_defaults_csr into l_defaults_rec;
13563
13564 -- Bug# 5028512 - Modified - Start
13565 If l_defaults_csr%NOTFOUND then
13566 l_mg_txdv_rec.deprn_method_tax := l_corpbook_rec.deprn_method;
13567 l_mg_txdv_rec.life_in_months_tax := l_corpbook_rec.life_in_months;
13568 -- Depreciation Rates no longer needs to be adjusted by 100
13569 --l_mg_txdv_rec.deprn_rate_tax := (l_corpbook_rec.deprn_rate * 100);
13570 l_mg_txdv_rec.deprn_rate_tax := l_corpbook_rec.deprn_rate;
13571 Else
13572 l_mg_txdv_rec.deprn_method_tax := l_defaults_rec.deprn_method;
13573 l_mg_txdv_rec.life_in_months_tax := l_defaults_rec.life_in_months;
13574 -- Depreciation Rates no longer needs to be adjusted by 100
13575 -- l_mg_txdv_rec.deprn_rate_tax := (l_defaults_rec.adjusted_rate * 100);
13576 l_mg_txdv_rec.deprn_rate_tax := l_defaults_rec.adjusted_rate;
13577 End If;
13578 -- Bug# 5028512 - Modified - End
13579
13580 --Create transaction for Multi-Gaap Book
13581 OKL_TXD_ASSETS_PUB.CREATE_TXD_ASSET_DEF
13582 (
13583 p_api_version => p_api_version,
13584 p_init_msg_list => p_init_msg_list,
13585 x_return_status => x_return_status,
13586 x_msg_count => x_msg_count,
13587 x_msg_data => x_msg_data,
13588 p_adpv_rec => l_mg_txdv_rec,
13589 x_adpv_rec => lx_mg_txdv_rec);
13590
13591 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13592 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13593 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13594 RAISE Okc_Api.G_EXCEPTION_ERROR;
13595 END IF;
13596 End If; -- if multi gaap asset book is not doen
13597 End If; --If l_mutigaap_yn
13598 x_cle_id:= l_new_finasst_id;
13599
13600 OKL_API.END_ACTIVITY (x_msg_count,
13601 x_msg_data );
13602 EXCEPTION
13603 WHEN OKL_API.G_EXCEPTION_ERROR THEN
13604 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
13605 l_api_name,
13606 G_PKG_NAME,
13607 'OKL_API.G_RET_STS_ERROR',
13608 x_msg_count,
13609 x_msg_data,
13610 '_PVT');
13611 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
13612 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
13613 l_api_name,
13614 G_PKG_NAME,
13615 'OKL_API.G_RET_STS_UNEXP_ERROR',
13616 x_msg_count,
13617 x_msg_data,
13618 '_PVT');
13619 WHEN OTHERS THEN
13620 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
13621 l_api_name,
13622 G_PKG_NAME,
13623 'OTHERS',
13624 x_msg_count,
13625 x_msg_data,
13626 '_PVT');
13627 END Create_Release_asset_Line;
13628
13629 --Bug# 3533936:
13630 ----------------------------------------------------------
13631 --copy and sync line components from updated line with new
13632 --released asset id to new line
13633 --called from release asset line
13634 ---------------------------------------------------------
13635 PROCEDURE copy_updated_asset_components
13636 (p_api_version IN NUMBER,
13637 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
13638 x_return_status OUT NOCOPY VARCHAR2,
13639 x_msg_count OUT NOCOPY NUMBER,
13640 x_msg_data OUT NOCOPY VARCHAR2,
13641 p_cle_id IN NUMBER,
13642 p_orig_cle_id IN NUMBER,
13643 p_chr_id IN NUMBER) IS
13644
13645 l_return_status VARCHAR2(1) DEFAULT Okl_Api.G_RET_STS_SUCCESS;
13646 l_api_name CONSTANT VARCHAR2(30) := 'COPY_UPDATED_ASSET';
13647 l_api_version CONSTANT NUMBER := 1.0;
13648
13649 --cursor to get rule groups attached to old line
13650 CURSOR l_rgp_csr(p_orig_cle_id in number,
13651 p_chr_id in number) is
13652 SELECT rgpb.id
13653 FROM okc_rule_groups_b rgpb
13654 WHERE rgpb.cle_id = p_cle_id
13655 AND rgpb.dnz_chr_id = p_chr_id;
13656
13657 l_rgp_id OKC_RULE_GROUPS_B.ID%TYPE;
13658 lx_rgp_id OKC_RULE_GROUPS_B.ID%TYPE;
13659
13660 --cursor to get party roles attached to old line
13661 CURSOR l_cpl_csr (p_orig_cle_id in number,
13662 p_chr_id in number) is
13663 SELECT cplb.id,
13664 cplb.rle_code
13665 FROM okc_k_party_roles_b cplb
13666 WHERE cplb.cle_id = p_orig_cle_id
13667 AND cplb.dnz_chr_id = p_chr_id;
13668
13669 l_cpl_rec l_cpl_csr%ROWTYPE;
13670 lx_cpl_id OKC_K_PARTY_ROLES_B.ID%TYPE;
13671
13672 --cursor to get any covered asset lines where old line was referenced
13673 CURSOR l_lnk_ast_csr (p_orig_cle_id in NUMBER,
13674 p_chr_id in NUMBER) is
13675 SELECT cim.id
13676 FROM okc_k_items cim,
13677 okc_k_lines_b cleb,
13678 okc_line_styles_b lseb
13679 WHERE cim.object1_id1 = to_char(p_orig_cle_id)
13680 AND cim.object1_id2 = '#'
13681 AND cim.jtot_object1_code = 'OKX_COVASST'
13682 AND cim.cle_id = cleb.id
13683 AND cim.dnz_chr_id = cleb.dnz_chr_id
13684 AND cleb.dnz_chr_id = p_chr_id
13685 AND cleb.chr_id is NULL
13686 AND cleb.lse_id = lseb.id
13687 AND lseb.lty_code in ('LINK_SERV_ASSET','LINK_FEE_ASSET','LINK_USAGE_ASSET');
13688
13689 l_cim_id OKC_K_ITEMS.ID%TYPE;
13690 l_cimv_rec OKL_OKC_MIGRATION_PVT.cimv_rec_type;
13691 lx_cimv_rec OKL_OKC_MIGRATION_PVT.cimv_rec_type;
13692
13693 --cursor to get information about SLH/SLL to sync back
13694 CURSOR l_slh_csr(p_cle_id in number,
13695 p_orig_cle_id in number,
13696 p_chr_id in number) IS
13697 SELECT
13698
13699 RULSLH.ID,
13700 RULSLL.ID
13701 FROM OKC_RULES_B RULSLL_OLD,
13702 OKC_RULES_B RULSLH_OLD,
13703 OKC_RULE_GROUPS_B RGPB_OLD,
13704 OKC_RULES_B RULSLL,
13705 OKC_RULES_B RULSLH,
13706 OKC_RULE_GROUPS_B RGPB
13707 WHERE TO_CHAR(RULSLH_OLD.ID) = NVL(RULSLL.OBJECT2_ID1,-99) --the new sll has old slh's id
13708 AND RULSLH_OLD.OBJECT1_ID1 = RULSLH.OBJECT1_ID1 --stream type ids are same for old and new slh
13709 AND RULSLL_OLD.RULE_INFORMATION_CATEGORY = 'LASLL'
13710 AND RULSLL_OLD.DNZ_CHR_ID = RGPB_OLD.DNZ_CHR_ID
13711 AND RULSLL_OLD.RGP_ID = RGPB_OLD.ID
13712 AND RULSLH_OLD.RULE_INFORMATION_CATEGORY = 'LASLH'
13713 AND RULSLH_OLD.DNZ_CHR_ID = RGPB_OLD.DNZ_CHR_ID
13714 AND RULSLH_OLD.RGP_ID = RGPB_OLD.ID
13715 AND TO_CHAR(RULSLH_OLD.ID) = RULSLL_OLD.OBJECT2_ID1
13716 AND RGPB_OLD.RGD_CODE = 'LALEVL'
13717 AND RGPB_OLD.CHR_ID IS NULL
13718 AND RGPB_OLD.DNZ_CHR_ID = p_chr_id
13719 AND RGPB_OLD.CLE_ID = p_orig_cle_id
13720 --
13721 AND RULSLL.RULE_INFORMATION_CATEGORY = 'LASLL'
13722 AND RULSLL.DNZ_CHR_ID = RGPB.DNZ_CHR_ID
13723 AND RULSLL.RGP_ID = RGPB.ID
13724 AND RULSLH.RULE_INFORMATION_CATEGORY = 'LASLH'
13725 AND RULSLH.DNZ_CHR_ID = RGPB.DNZ_CHR_ID
13726 AND RULSLH.RGP_ID = RGPB.ID
13727 AND TO_CHAR(RULSLH.ID) <> NVL(RULSLL.OBJECT2_ID1,-99)
13728 AND RGPB.RGD_CODE = 'LALEVL'
13729 AND RGPB.CHR_ID IS NULL
13730 AND RGPB.DNZ_CHR_ID = p_chr_id
13731 AND RGPB.CLE_ID = p_cle_id;
13732
13733 l_slh_id OKC_RULES_B.ID%TYPE;
13734 l_sll_id OKC_RULES_B.ID%TYPE;
13735
13736 l_rulv_rec OKL_RULE_PUB.rulv_rec_type;
13737 lx_rulv_rec OKL_RULE_PUB.rulv_rec_type;
13738
13739 --Fetch any new subsidy associated to old line
13740 Cursor l_subsidy_csr (p_orig_cle_id in number,
13741 p_chr_id in number) IS
13742 Select sub_kle.subsidy_id subsidy_id,
13743 sub_cleb.id subsidy_cle_id,
13744 subb.name name,
13745 subt.description description,
13746 sub_kle.amount amount,
13747 sub_kle.subsidy_override_amount subsidy_override_amount,
13748 sub_cleb.dnz_chr_id dnz_chr_id,
13749 sub_cleb.cle_id asset_cle_id,
13750 sub_cplb.id cpl_id,
13751 pov.vendor_id vendor_id,
13752 pov.vendor_name vendor_name
13753 from
13754 okl_subsidies_b subb,
13755 okl_subsidies_tl subt,
13756 po_vendors pov,
13757 okc_k_party_roles_b sub_cplb,
13758 okl_k_lines sub_kle,
13759 okc_k_lines_b sub_cleb,
13760 okc_line_styles_b sub_lseb
13761 where subt.id = subb.id
13762 and subt.language = userenv('LANG')
13763 and subb.id = sub_kle.subsidy_id
13764 and pov.vendor_id = to_number(sub_cplb.object1_id1)
13765 and sub_cplb.object1_id2 = '#'
13766 and sub_cplb.jtot_object1_code = 'OKX_VENDOR'
13767 and sub_cplb.rle_code = 'OKL_VENDOR'
13768 and sub_cplb.cle_id = sub_cleb.id
13769 and sub_cplb.dnz_chr_id = sub_cleb.dnz_chr_id
13770 and sub_kle.id = sub_cleb.id
13771 and sub_cleb.cle_id = p_orig_cle_id
13772 and sub_cleb.dnz_chr_id = p_chr_id
13773 and sub_cleb.sts_code <> 'ABANDONED'
13774 and sub_cleb.lse_id = sub_lseb.id
13775 and sub_lseb.lty_code = 'SUBSIDY';
13776
13777 l_subsidy_rec l_subsidy_csr%ROWTYPE;
13778
13779 l_asb_rec okl_asset_subsidy_pvt.asb_rec_type;
13780 lx_asb_rec okl_asset_subsidy_pvt.asb_rec_type;
13781
13782 --Fetch refund details records against the old subsidy line
13783 Cursor l_subrfnd_csr (p_cpl_id in number) is
13784 Select ppyd.id
13785 from okl_party_payment_dtls ppyd
13786 where ppyd.cpl_id = p_cpl_id;
13787
13788 l_ppyd_id OKL_PARTY_PAYMENT_DTLS.ID%TYPE;
13789
13790 l_srfvv_rec OKL_SUBSIDY_RFND_DTLS_PVT.srfvv_rec_type;
13791 lx_srfvv_rec OKL_SUBSIDY_RFND_DTLS_PVT.srfvv_rec_type;
13792
13793 Begin
13794 x_return_status := Okl_Api.G_RET_STS_SUCCESS;
13795 -- Call start_activity to create savepoint, check compatibility
13796 -- and initialize message list
13797 x_return_status := Okl_Api.START_ACTIVITY(
13798 p_api_name => l_api_name,
13799 p_pkg_name => g_pkg_name,
13800 p_init_msg_list => p_init_msg_list,
13801 l_api_version => l_api_version,
13802 p_api_version => p_api_version,
13803 p_api_type => '_PVT',
13804 x_return_status => x_return_status);
13805 -- Check if activity started successfully
13806 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13807 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13808 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13809 RAISE Okc_Api.G_EXCEPTION_ERROR;
13810 END IF;
13811
13812 --1. Copy rules from old line to new line
13813 open l_rgp_csr(p_orig_cle_id => p_orig_cle_id,
13814 p_chr_id => p_chr_id);
13815 Loop
13816 Fetch l_rgp_csr into l_rgp_id;
13817 Exit when l_rgp_csr%NOTFOUND;
13818 okl_copy_contract_pub.Copy_Rules
13819 (p_api_version => p_api_version,
13820 p_init_msg_list => p_init_msg_list,
13821 x_return_status => x_return_status,
13822 x_msg_count => x_msg_count,
13823 x_msg_data => x_msg_data,
13824 p_rgp_id => l_rgp_id,
13825 p_cle_id => p_cle_id,
13826 p_to_template_yn => 'N',
13827 x_rgp_id => lx_rgp_id);
13828 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13829 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13830 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13831 RAISE Okc_Api.G_EXCEPTION_ERROR;
13832 END IF;
13833 End Loop;
13834 close l_rgp_csr;
13835
13836 --2. Copy party roles from old line to new line
13837 open l_cpl_csr(p_orig_cle_id => p_orig_cle_id,
13838 p_chr_id => p_chr_id);
13839 Loop
13840 Fetch l_cpl_csr into l_cpl_rec;
13841 Exit when l_cpl_csr%NOTFOUND;
13842 okl_copy_contract_pub.copy_party_roles
13843 (p_api_version => p_api_version,
13844 p_init_msg_list => p_init_msg_list,
13845 x_return_status => x_return_status,
13846 x_msg_count => x_msg_count,
13847 x_msg_data => x_msg_data,
13848 p_cpl_id => l_cpl_rec.id,
13849 p_cle_id => p_cle_id,
13850 p_rle_code => l_cpl_rec.rle_code,
13851 x_cpl_id => lx_cpl_id);
13852 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13853 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13854 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13855 RAISE Okc_Api.G_EXCEPTION_ERROR;
13856 END IF;
13857 End Loop;
13858 close l_cpl_csr;
13859
13860 --3. Relink covered asset lines
13861 Open l_lnk_ast_csr (p_orig_cle_id => p_orig_cle_id,
13862 p_chr_id => p_chr_id);
13863 Loop
13864 Fetch l_lnk_ast_csr into l_cim_id;
13865 Exit when l_lnk_ast_csr%NOTFOUND;
13866 l_cimv_rec.id := l_cim_id;
13867 l_cimv_rec.object1_id1 := to_char(p_cle_id);
13868 OKL_OKC_MIGRATION_PVT.update_contract_item
13869 (p_api_version => p_api_version,
13870 p_init_msg_list => p_init_msg_list,
13871 x_return_status => x_return_status,
13872 x_msg_count => x_msg_count,
13873 x_msg_data => x_msg_data,
13874 p_cimv_rec => l_cimv_rec,
13875 x_cimv_rec => lx_cimv_rec);
13876 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13877 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13878 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13879 RAISE Okc_Api.G_EXCEPTION_ERROR;
13880 END IF;
13881 End Loop;
13882 Close l_lnk_ast_csr;
13883
13884 --4. Relink SLH-SLL
13885 Open l_slh_csr (p_cle_id => p_cle_id,
13886 p_orig_cle_id => p_orig_cle_id,
13887 p_chr_id => p_chr_id
13888 );
13889 Loop
13890 Fetch l_slh_csr into l_slh_id, l_sll_id;
13891 Exit when l_slh_csr%NOTFOUND;
13892 l_rulv_rec.id := l_sll_id;
13893 l_rulv_rec.object2_id1 := to_char(l_slh_id);
13894 OKL_RULE_PUB.update_rule
13895 (p_api_version => p_api_version,
13896 p_init_msg_list => p_init_msg_list,
13897 x_return_status => x_return_status,
13898 x_msg_count => x_msg_count,
13899 x_msg_data => x_msg_data,
13900 p_rulv_rec => l_rulv_rec,
13901 x_rulv_rec => lx_rulv_rec);
13902 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13903 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13904 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13905 RAISE Okc_Api.G_EXCEPTION_ERROR;
13906 END IF;
13907 End Loop;
13908 Close l_slh_csr;
13909
13910 --5. Sync back any new subsidy that has been added
13911 Open l_subsidy_csr(p_orig_cle_id => p_orig_cle_id,
13912 p_chr_id => p_chr_id);
13913 Loop
13914 Fetch l_subsidy_csr into l_subsidy_rec;
13915 Exit when l_subsidy_csr%NOTFOUND;
13916 l_asb_rec.subsidy_id := l_subsidy_rec.subsidy_id;
13917 l_asb_rec.name := l_subsidy_rec.name;
13918 l_asb_rec.description := l_subsidy_rec.description;
13919 l_asb_rec.amount := l_subsidy_rec.amount;
13920 l_asb_rec.subsidy_override_amount := l_subsidy_rec.subsidy_override_amount;
13921 l_asb_rec.dnz_chr_id := l_subsidy_rec.dnz_chr_id;
13922 l_asb_rec.asset_cle_id := p_cle_id;
13923 l_asb_rec.vendor_id := l_subsidy_rec.vendor_id;
13924 l_asb_rec.vendor_name := l_asb_rec.vendor_name;
13925
13926 OKL_ASSET_SUBSIDY_PVT.create_asset_subsidy
13927 (p_api_version => p_api_version,
13928 p_init_msg_list => p_init_msg_list,
13929 x_return_status => x_return_status,
13930 x_msg_count => x_msg_count,
13931 x_msg_data => x_msg_data,
13932 p_asb_rec => l_asb_rec,
13933 x_asb_rec => lx_asb_rec);
13934 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13935 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13936 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13937 RAISE Okc_Api.G_EXCEPTION_ERROR;
13938 END IF;
13939
13940 --update link to party payment details
13941 Open l_subrfnd_csr(p_cpl_id => l_subsidy_rec.cpl_id);
13942 Fetch l_subrfnd_csr into l_ppyd_id;
13943 If l_subrfnd_csr%NOTFOUND then
13944 NULL;
13945 Else
13946 l_srfvv_rec.id := l_ppyd_id;
13947 l_srfvv_rec.cpl_id := lx_asb_rec.cpl_id;
13948 OKL_SUBSIDY_RFND_DTLS_PVT.update_refund_dtls
13949 (p_api_version => p_api_version,
13950 p_init_msg_list => p_init_msg_list,
13951 x_return_status => x_return_status,
13952 x_msg_count => x_msg_count,
13953 x_msg_data => x_msg_data,
13954 p_srfvv_rec => l_srfvv_rec,
13955 x_srfvv_rec => lx_srfvv_rec);
13956 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13957 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13958 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13959 RAISE Okc_Api.G_EXCEPTION_ERROR;
13960 END IF;
13961 End If;
13962 Close l_subrfnd_csr;
13963 End Loop;
13964 Close l_subsidy_csr;
13965
13966
13967 OKL_API.END_ACTIVITY (x_msg_count,
13968 x_msg_data );
13969 EXCEPTION
13970 WHEN OKL_API.G_EXCEPTION_ERROR THEN
13971 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
13972 l_api_name,
13973 G_PKG_NAME,
13974 'OKL_API.G_RET_STS_ERROR',
13975 x_msg_count,
13976 x_msg_data,
13977 '_PVT');
13978 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
13979 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
13980 l_api_name,
13981 G_PKG_NAME,
13982 'OKL_API.G_RET_STS_UNEXP_ERROR',
13983 x_msg_count,
13984 x_msg_data,
13985 '_PVT');
13986 WHEN OTHERS THEN
13987 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
13988 l_api_name,
13989 G_PKG_NAME,
13990 'OTHERS',
13991 x_msg_count,
13992 x_msg_data,
13993 '_PVT');
13994 END copy_updated_asset_components;
13995
13996 --Bug# 3533936:
13997 ------------------------------------------------------
13998 --update_release_asset_line called from
13999 --update_all_line
14000 -----------------------------------------------------
14001
14002 PROCEDURE update_release_asset_line
14003 (p_api_version IN NUMBER,
14004 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
14005 x_return_status OUT NOCOPY VARCHAR2,
14006 x_msg_count OUT NOCOPY NUMBER,
14007 x_msg_data OUT NOCOPY VARCHAR2,
14008 p_asset_id IN VARCHAR2,
14009 p_chr_id IN NUMBER,
14010 p_clev_fin_id IN NUMBER,
14011 x_cle_id OUT NOCOPY NUMBER) IS
14012
14013
14014 l_return_status VARCHAR2(1) DEFAULT Okl_Api.G_RET_STS_SUCCESS;
14015 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_RELEASE_ASSET';
14016 l_api_version CONSTANT NUMBER := 1.0;
14017
14018 --cursor to find the existing asset id on release asset line
14019 cursor l_cim_fa_csr(p_fin_asst_id in number) is
14020 select
14021 fa_cim.object1_id1 asset_id,
14022 fa_cim.dnz_chr_id chr_id
14023 from okc_k_items fa_cim,
14024 okc_k_lines_b fa_cleb,
14025 okc_line_styles_b fa_lseb
14026 where fa_cim.cle_id = fa_cleb.id
14027 and fa_cim.dnz_chr_id = fa_cleb.dnz_chr_id
14028 and fa_cleb.cle_id = p_fin_asst_id
14029 and fa_cleb.lse_id = fa_lseb.id
14030 and fa_lseb.lty_code = 'FIXED_ASSET';
14031
14032 l_asset_id okc_k_items.OBJECT1_ID1%TYPE;
14033 l_chr_id okc_k_items.DNZ_CHR_ID%TYPE;
14034
14035 --cursor to fetch all the lines
14036 CURSOR l_lines_csr(p_from_cle_id in number) IS
14037 SELECT level,
14038 id,
14039 chr_id,
14040 cle_id,
14041 dnz_chr_id,
14042 orig_system_id1
14043 FROM okc_k_lines_b
14044 CONNECT BY PRIOR id = cle_id
14045 START WITH id = p_from_cle_id;
14046
14047 l_lines_rec l_lines_csr%ROWTYPE;
14048
14049 --bug# 3783518 : is asset number equal in case of rebook
14050 cursor l_chk_rbk_ast(p_cle_id in number, p_chr_id in number, p_asset_id number) is
14051 select 'N' change_flag,
14052 chrb.orig_system_source_code
14053 from fa_additions_b fab,
14054 okl_txl_assets_b txlb,
14055 okc_k_lines_b fa_cleb,
14056 okc_line_styles_b fa_lseb,
14057 okc_k_headers_b chrb
14058 where fab.asset_number = txlb.asset_number
14059 and fab.asset_id = p_asset_id
14060 and txlb.kle_id = fa_cleb.id
14061 and fa_cleb.dnz_chr_id = chrb.id
14062 and fa_cleb.cle_id = p_cle_id
14063 and fa_cleb.lse_id = fa_lseb.id
14064 and fa_lseb.lty_code = 'FIXED_ASSET'
14065 and chrb.id = p_chr_id
14066 and chrb.orig_system_source_code = 'OKL_REBOOK';
14067
14068 l_rbk_ast_change_yn varchar2(1);
14069 l_k_source okc_k_headers_b.orig_system_source_code%TYPE;
14070
14071 BEGIN
14072 x_return_status := Okl_Api.G_RET_STS_SUCCESS;
14073 -- Call start_activity to create savepoint, check compatibility
14074 -- and initialize message list
14075 x_return_status := Okl_Api.START_ACTIVITY(
14076 p_api_name => l_api_name,
14077 p_pkg_name => g_pkg_name,
14078 p_init_msg_list => p_init_msg_list,
14079 l_api_version => l_api_version,
14080 p_api_version => p_api_version,
14081 p_api_type => '_PVT',
14082 x_return_status => x_return_status);
14083 -- Check if activity started successfully
14084 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14085 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14086 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14087 RAISE Okc_Api.G_EXCEPTION_ERROR;
14088 END IF;
14089
14090 --------------------
14091 --Bug# 3783518
14092 --------------------
14093 for l_chk_rbk_rec in l_chk_rbk_ast(p_cle_id => p_clev_fin_id,
14094 p_chr_id => p_chr_id,
14095 p_asset_id => p_asset_id)
14096 Loop
14097 l_rbk_ast_change_yn := l_chk_rbk_rec.change_flag;
14098 l_k_source := l_chk_rbk_rec.orig_system_source_code;
14099 end loop;
14100
14101
14102
14103 If nvl(l_k_source,OKL_API.G_MISS_CHAR) = 'OKL_REBOOK' then
14104
14105 If l_rbk_ast_change_yn = 'Y' then
14106 --raise error : can not add new asset on a rebook
14107 OKL_API.set_message(
14108 p_app_name => G_APP_NAME,
14109 p_msg_name => 'OKL_REL_ASSET_RBK_NEW_AST_ADD');
14110 x_return_status := OKC_API.G_RET_STS_ERROR;
14111 RAISE OKL_API.G_EXCEPTION_ERROR;
14112 ElsIf l_rbk_ast_change_yn = 'N' then
14113 x_cle_id := p_clev_fin_id;
14114
14115 End If;
14116
14117 Else
14118
14119 --------------------
14120 --End : Bug# 3783518
14121 --------------------
14122 If nvl(p_asset_id,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR then
14123 x_cle_id := p_clev_fin_id;
14124 Else
14125 open l_cim_fa_csr(p_fin_asst_id => p_clev_fin_id);
14126 Fetch l_cim_fa_csr into l_asset_id, l_chr_id;
14127 If l_cim_fa_csr%NOTFOUND then
14128 --raise error : invalid line information
14129 OKL_API.set_message(p_app_name => G_APP_NAME,
14130 p_msg_name => 'OKL_LLA_LINE_RECORD');
14131 RAISE Okc_Api.G_EXCEPTION_ERROR;
14132 End If;
14133 close l_cim_fa_csr;
14134 If nvl(p_asset_id,OKL_API.G_MISS_CHAR) = nvl(l_asset_id,OKL_API.G_MISS_CHAR) then
14135 x_cle_id := p_clev_fin_id;
14136 Else
14137
14138 --Create new release asset line
14139 Create_release_asset_line
14140 (p_api_version => p_api_version,
14141 p_init_msg_list => p_init_msg_list,
14142 x_return_status => x_return_status,
14143 x_msg_count => x_msg_count,
14144 x_msg_data => x_msg_data,
14145 p_asset_id => p_asset_id,
14146 p_chr_id => l_chr_id,
14147 x_cle_id => x_cle_id);
14148
14149 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14150 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14151 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14152 RAISE OKL_API.G_EXCEPTION_ERROR;
14153 END IF;
14154
14155 --Copy rules, party roles, supplier invoice details
14156 Open l_lines_csr(p_from_cle_id => x_cle_id);
14157 Loop
14158 fetch l_lines_csr into l_lines_rec;
14159 Exit when l_lines_csr%NOTFOUND;
14160 copy_updated_asset_components
14161 (p_api_version => p_api_version,
14162 p_init_msg_list => p_init_msg_list,
14163 x_return_status => x_return_status,
14164 x_msg_count => x_msg_count,
14165 x_msg_data => x_msg_data,
14166 p_cle_id => l_lines_rec.id,
14167 p_orig_cle_id => l_lines_rec.orig_system_id1,
14168 p_chr_id => l_chr_id);
14169 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14170 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14171 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14172 RAISE OKL_API.G_EXCEPTION_ERROR;
14173 END IF;
14174 End Loop;
14175 Close l_lines_csr;
14176
14177
14178 --Delete old line
14179 OKL_CONTRACT_PUB.delete_contract_line(
14180 p_api_version => p_api_version,
14181 p_init_msg_list => p_init_msg_list,
14182 x_return_status => x_return_status,
14183 x_msg_count => x_msg_count,
14184 x_msg_data => x_msg_data,
14185 p_line_id => p_clev_fin_id
14186 );
14187
14188 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14189 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14190 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14191 RAISE OKL_API.G_EXCEPTION_ERROR;
14192 END IF;
14193
14194
14195 End If;
14196 End If; --Bug# 3783518
14197
14198 End If;
14199
14200 OKL_API.END_ACTIVITY (x_msg_count,
14201 x_msg_data );
14202 EXCEPTION
14203 WHEN OKL_API.G_EXCEPTION_ERROR THEN
14204 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
14205 l_api_name,
14206 G_PKG_NAME,
14207 'OKL_API.G_RET_STS_ERROR',
14208 x_msg_count,
14209 x_msg_data,
14210 '_PVT');
14211 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
14212 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
14213 l_api_name,
14214 G_PKG_NAME,
14215 'OKL_API.G_RET_STS_UNEXP_ERROR',
14216 x_msg_count,
14217 x_msg_data,
14218 '_PVT');
14219 WHEN OTHERS THEN
14220 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
14221 l_api_name,
14222 G_PKG_NAME,
14223 'OTHERS',
14224 x_msg_count,
14225 x_msg_data,
14226 '_PVT');
14227 END update_Release_asset_Line;
14228
14229
14230 --Bug# 3533936
14231 ---------------------------------------------------------
14232 --Local procedure to resolve residual value on release
14233 --asset line
14234 --------------------------------------------------------
14235 PROCEDURE Resolve_Residual_Value(
14236 p_api_version IN NUMBER,
14237 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
14238 x_return_status OUT NOCOPY VARCHAR2,
14239 x_msg_count OUT NOCOPY NUMBER,
14240 x_msg_data OUT NOCOPY VARCHAR2,
14241 p_asset_number IN VARCHAR2,
14242 p_clev_fin_rec IN clev_rec_type,
14243 p_klev_fin_rec IN klev_rec_type,
14244 --bug# 4631549
14245 p_call_mode IN Varchar2,
14246 x_clev_fin_rec OUT NOCOPY clev_rec_type,
14247 x_klev_fin_rec OUT NOCOPY klev_rec_type) IS
14248
14249 l_return_status VARCHAR2(1) DEFAULT Okl_Api.G_RET_STS_SUCCESS;
14250 l_api_name CONSTANT VARCHAR2(30) := 'RESOLVE_RESIDUL';
14251 l_api_version CONSTANT NUMBER := 1.0;
14252
14253
14254 l_top_line_id OKC_K_LINES_B.ID%TYPE;
14255 l_oec OKL_K_LINES.OEC%TYPE;
14256 l_residual_value OKL_K_LINES.RESIDUAL_VALUE%TYPE;
14257 lx_residual_value OKL_K_LINES.RESIDUAL_VALUE%TYPE;
14258
14259
14260 --cursor to get model line id
14261 CURSOR l_modelline_csr(p_cle_id IN NUMBER,
14262 p_chr_id IN NUMBER) IS
14263 SELECT model_cleb.id
14264 FROM OKC_K_LINES_B model_cleb,
14265 OKC_LINE_STYLES_B model_lseb
14266 WHERE model_cleb.cle_id = p_cle_id
14267 AND model_cleb.dnz_chr_id = p_chr_id
14268 AND model_cleb.lse_id = model_lseb.id
14269 AND model_lseb.lty_code = 'ITEM';
14270
14271 l_model_line_id OKC_K_LINES_B.ID%TYPE;
14272
14273 --Bug# 4631549
14274 cursor l_exp_cost_csr (p_kle_id in number) is
14275 select kle.expected_asset_cost
14276 from okl_k_lines kle
14277 where kle.id = p_kle_id;
14278
14279 l_exp_cost_rec l_exp_cost_csr%ROWTYPE;
14280
14281 Begin
14282
14283 x_return_status := Okl_Api.G_RET_STS_SUCCESS;
14284 -- Call start_activity to create savepoint, check compatibility
14285 -- and initialize message list
14286 x_return_status := Okl_Api.START_ACTIVITY(
14287 p_api_name => l_api_name,
14288 p_pkg_name => g_pkg_name,
14289 p_init_msg_list => p_init_msg_list,
14290 l_api_version => l_api_version,
14291 p_api_version => p_api_version,
14292 p_api_type => '_PVT',
14293 x_return_status => x_return_status);
14294 -- Check if activity started successfully
14295 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14296 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14297 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14298 RAISE Okc_Api.G_EXCEPTION_ERROR;
14299 END IF;
14300
14301 --Bug# 4631549
14302 If nvl(p_call_mode,okl_api.g_miss_char) = 'RELEASE_CONTRACT' then
14303 open l_exp_cost_csr (p_kle_id => p_clev_fin_rec.id);
14304 fetch l_exp_cost_csr into l_exp_cost_rec;
14305 close l_exp_cost_csr;
14306 end if;
14307
14308 Open l_modelline_csr(p_cle_id => p_clev_fin_rec.id,
14309 p_chr_id => p_clev_fin_rec.dnz_chr_id);
14310 Fetch l_modelline_csr into l_model_line_id;
14311 If l_modelline_csr%NOTFOUND then
14312 --raise errorr: invliad line information
14313 OKL_API.set_message(p_app_name => G_APP_NAME,
14314 p_msg_name => 'OKL_LLA_LINE_RECORD');
14315 RAISE Okc_Api.G_EXCEPTION_ERROR;
14316 End If;
14317 Close l_modelline_csr;
14318
14319 IF (p_klev_fin_rec.residual_percentage IS NOT NULL OR
14320 p_klev_fin_rec.residual_percentage <> OKL_API.G_MISS_NUM) AND
14321 (p_klev_fin_rec.residual_value IS NOT NULL OR
14322 p_klev_fin_rec.residual_value <> OKL_API.G_MISS_NUM) THEN
14323
14324 l_top_line_id := p_clev_fin_rec.id;
14325 --Bug# 4631549
14326 If nvl(p_call_mode,okl_api.g_miss_char) = 'RELEASE_CONTRACT' then
14327 l_oec := l_exp_cost_rec.expected_asset_cost;
14328 else
14329 l_oec := p_klev_fin_rec.oec;
14330 end if;
14331 l_residual_value := p_klev_fin_rec.residual_value;
14332
14333 get_res_per_upd_fin_rec(p_api_version => p_api_version,
14334 p_init_msg_list => p_init_msg_list,
14335 x_return_status => x_return_status,
14336 x_msg_count => x_msg_count,
14337 x_msg_data => x_msg_data,
14338 P_new_yn => 'N',
14339 p_asset_number => p_clev_fin_rec.name,
14340 p_res_value => l_residual_value,
14341 p_oec => l_oec,
14342 p_top_line_id => l_top_line_id,
14343 p_dnz_chr_id => p_clev_fin_rec.dnz_chr_id,
14344 x_fin_clev_rec => x_clev_fin_rec,
14345 x_fin_klev_rec => x_klev_fin_rec,
14346 p_validate_fin_line => OKL_API.G_TRUE); -- 4414408
14347
14348 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14349 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14350 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14351 RAISE OKL_API.G_EXCEPTION_ERROR;
14352 END IF;
14353
14354 res_value_calc_upd_fin_rec(p_api_version => p_api_version,
14355 p_init_msg_list => p_init_msg_list,
14356 x_return_status => x_return_status,
14357 x_msg_count => x_msg_count,
14358 x_msg_data => x_msg_data,
14359 P_new_yn => 'N',
14360 p_asset_number => p_asset_number,
14361 -- 4414408
14362 p_top_line_id => l_top_line_id,
14363 p_dnz_chr_id => p_clev_fin_rec.dnz_chr_id,
14364 x_fin_clev_rec => x_clev_fin_rec,
14365 x_fin_klev_rec => x_klev_fin_rec,
14366 x_res_value => lx_residual_value,
14367 p_validate_fin_line => OKL_API.G_TRUE); -- 4414408
14368
14369 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14370 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14371 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14372 RAISE OKL_API.G_EXCEPTION_ERROR;
14373 END IF;
14374
14375 ELSIF (p_klev_fin_rec.residual_percentage IS NULL OR
14376 p_klev_fin_rec.residual_percentage = OKL_API.G_MISS_NUM) AND
14377 (p_klev_fin_rec.residual_value IS NOT NULL OR
14378 p_klev_fin_rec.residual_value <> OKL_API.G_MISS_NUM) THEN
14379
14380 l_top_line_id := p_clev_fin_rec.id;
14381 --Bug# 4631549
14382 If nvl(p_call_mode,okl_api.g_miss_char) = 'RELEASE_CONTRACT' then
14383 l_oec := l_exp_cost_rec.expected_asset_cost;
14384 else
14385 l_oec := p_klev_fin_rec.oec;
14386 end if;
14387 l_residual_value := p_klev_fin_rec.residual_value;
14388
14389
14390 get_res_per_upd_fin_rec(p_api_version => p_api_version,
14391 p_init_msg_list => p_init_msg_list,
14392 x_return_status => x_return_status,
14393 x_msg_count => x_msg_count,
14394 x_msg_data => x_msg_data,
14395 P_new_yn => 'N',
14396 p_asset_number => p_clev_fin_rec.name,
14397 p_res_value => l_residual_value,
14398 p_oec => l_oec,
14399 p_top_line_id => l_top_line_id,
14400 p_dnz_chr_id => p_clev_fin_rec.dnz_chr_id,
14401 x_fin_clev_rec => x_clev_fin_rec,
14402 x_fin_klev_rec => x_klev_fin_rec,
14403 p_validate_fin_line => OKL_API.G_TRUE);
14404
14405 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14406 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14407 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14408 RAISE OKL_API.G_EXCEPTION_ERROR;
14409 END IF;
14410
14411 ELSIF (p_klev_fin_rec.residual_percentage IS NOT NULL OR
14412 p_klev_fin_rec.residual_percentage <> OKL_API.G_MISS_NUM) AND
14413 (p_klev_fin_rec.residual_value IS NULL OR
14414 p_klev_fin_rec.residual_value = OKL_API.G_MISS_NUM) THEN
14415
14416 --Bug# 4631549
14417 l_top_line_id := p_clev_fin_rec.id;
14418
14419 res_value_calc_upd_fin_rec(p_api_version => p_api_version,
14420 p_init_msg_list => p_init_msg_list,
14421 x_return_status => x_return_status,
14422 x_msg_count => x_msg_count,
14423 x_msg_data => x_msg_data,
14424 P_new_yn => 'N',
14425 p_asset_number => p_asset_number,
14426 -- 4414408
14427 p_top_line_id => p_clev_fin_rec.id,
14428 p_dnz_chr_id => p_clev_fin_rec.dnz_chr_id,
14429 x_fin_clev_rec => x_clev_fin_rec,
14430 x_fin_klev_rec => x_klev_fin_rec,
14431 x_res_value => lx_residual_value,
14432 p_validate_fin_line => OKL_API.G_TRUE);
14433 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14434 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14435 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14436 RAISE OKL_API.G_EXCEPTION_ERROR;
14437 END IF;
14438 END IF;
14439
14440 OKL_API.END_ACTIVITY (x_msg_count,
14441 x_msg_data );
14442 EXCEPTION
14443 WHEN OKL_API.G_EXCEPTION_ERROR THEN
14444 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
14445 l_api_name,
14446 G_PKG_NAME,
14447 'OKL_API.G_RET_STS_ERROR',
14448 x_msg_count,
14449 x_msg_data,
14450 '_PVT');
14451 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
14452 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
14453 l_api_name,
14454 G_PKG_NAME,
14455 'OKL_API.G_RET_STS_UNEXP_ERROR',
14456 x_msg_count,
14457 x_msg_data,
14458 '_PVT');
14459 WHEN OTHERS THEN
14460 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
14461 l_api_name,
14462 G_PKG_NAME,
14463 'OTHERS',
14464 x_msg_count,
14465 x_msg_data,
14466 '_PVT');
14467 End Resolve_Residual_Value;
14468
14469 --Bug# 3533936
14470 -----------------------------------------------------
14471 --Modify Release Asset line based on the user inputs
14472 --provided for modifiable columns during Release
14473 ----------------------------------------------------
14474 PROCEDURE Modify_Release_Asset_Line(
14475 p_api_version IN NUMBER,
14476 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
14477 x_return_status OUT NOCOPY VARCHAR2,
14478 x_msg_count OUT NOCOPY NUMBER,
14479 x_msg_data OUT NOCOPY VARCHAR2,
14480 p_clev_fin_rec IN clev_rec_type,
14481 p_klev_fin_rec IN klev_rec_type,
14482 --akrangan Bug# 5362977 start
14483 p_clev_model_rec IN clev_rec_type,
14484 --akrangan Bug# 5362977 end
14485 p_cimv_model_rec IN cimv_rec_type,
14486 p_clev_fa_rec IN clev_rec_type,
14487 p_cimv_fa_rec IN cimv_rec_type,
14488 p_talv_fa_rec IN talv_rec_type,
14489 p_itiv_ib_tbl IN itiv_tbl_type,
14490 p_cle_id IN NUMBER,
14491 --Bug# 4631549
14492 p_call_mode IN VARCHAR2,
14493 x_clev_fin_rec OUT NOCOPY clev_rec_type,
14494 x_klev_fin_rec OUT NOCOPY klev_rec_type,
14495 x_clev_model_rec OUT NOCOPY clev_rec_type,
14496 x_klev_model_rec OUT NOCOPY klev_rec_type,
14497 x_clev_fa_rec OUT NOCOPY clev_rec_type,
14498 x_klev_fa_rec OUT NOCOPY klev_rec_type,
14499 x_clev_ib_tbl OUT NOCOPY clev_tbl_type,
14500 x_klev_ib_tbl OUT NOCOPY klev_tbl_type
14501 ) IS
14502
14503
14504
14505 l_return_status VARCHAR2(1) DEFAULT Okl_Api.G_RET_STS_SUCCESS;
14506 l_api_name CONSTANT VARCHAR2(30) := 'MODIFY_RELEASE_ASSET';
14507 l_api_version CONSTANT NUMBER := 1.0;
14508
14509 --cursor to get fixed asset details
14510 cursor l_fa_csr (p_fin_cle_id in number,
14511 p_chr_id in number) is
14512 select txlb.id,
14513 txlb.depreciation_cost,
14514 txlb.current_units,
14515 txlb.percent_salvage_value,
14516 txlb.salvage_value,
14517 txlb.asset_number
14518 from okl_trx_assets trx,
14519 okl_txl_assets_b txlb,
14520 okc_k_lines_b cleb_fa,
14521 okc_line_styles_b lseb_fa
14522 where trx.id = txlb.tas_id
14523 and trx.tsu_code = 'ENTERED'
14524 --Bug# 3783518
14525 --and trx.tas_type = 'CRL'
14526 and txlb.kle_id = cleb_fa.id
14527 --Bug# 3783518
14528 --and txlb.tal_type = 'CRL'
14529 and cleb_fa.cle_id = p_fin_cle_id
14530 and cleb_fa.dnz_chr_id = p_chr_id
14531 and cleb_fa.lse_id = lseb_fa.id
14532 and lseb_fa.lty_code = 'FIXED_ASSET';
14533
14534
14535 l_fa_rec l_fa_csr%ROWTYPE;
14536
14537 --cursor to get install base details
14538 cursor l_ib_csr (p_fin_cle_id in number,
14539 p_chr_id in number) is
14540 select iti.id,
14541 iti.serial_number,
14542 iti.instance_number_ib,
14543 iti.object_id1_new,
14544 iti.object_id2_new
14545 from okl_trx_assets trx,
14546 okl_txl_itm_insts iti,
14547 okc_k_lines_b cleb_ib,
14548 okc_line_styles_b lseb_ib,
14549 okc_k_lines_b cleb_inst,
14550 okc_line_styles_b lseb_inst
14551 where trx.id = iti.tas_id
14552 and trx.tsu_code = 'ENTERED'
14553 --akrangan bug 5362977 start
14554 AND trx.tas_type IN ('CRL','CFA','CRB')
14555 --akrangan bug 5362977 end
14556 and iti.kle_id = cleb_ib.id
14557 --akrangan bug 5362977 start
14558 AND iti.tal_type IN ('CRL','CFA','CRB')
14559 --akrangan bug 5362977 end
14560 and cleb_ib.cle_id = cleb_inst.id
14561 and cleb_ib.dnz_chr_id = cleb_inst.dnz_chr_id
14562 and cleb_ib.lse_id = lseb_ib.id
14563 and lseb_ib.lty_code = 'INST_ITEM'
14564 and cleb_inst.cle_id = p_fin_cle_id
14565 and cleb_inst.dnz_chr_id = p_chr_id
14566 and cleb_inst.lse_id = lseb_inst.id
14567 and lseb_inst.lty_code = 'FREE_FORM2';
14568
14569 l_ib_rec l_ib_csr%ROWTYPE;
14570
14571 l_clev_fin_rec clev_rec_type;
14572 l_klev_fin_rec klev_rec_type;
14573 l_talv_fa_rec talv_rec_type;
14574 l_itiv_ib_tbl itiv_tbl_type;
14575
14576 l_rel_ast_clev_fin_rec clev_rec_type;
14577 l_rel_ast_klev_fin_rec klev_rec_type;
14578 l_rel_ast_talv_rec talv_rec_type;
14579 l_rel_ast_itiv_ib_tbl itiv_tbl_type;
14580
14581 i Number;
14582 j Number;
14583
14584 --cursor to fetch all the lines
14585 CURSOR l_lines_csr(p_from_cle_id in number) IS
14586 SELECT level,
14587 cleb.id,
14588 cleb.chr_id,
14589 cleb.cle_id,
14590 cleb.dnz_chr_id,
14591 cleb.lse_id
14592 FROM okc_k_lines_b cleb
14593 CONNECT BY PRIOR cleb.id = cle_id
14594 START WITH cleb.id = p_from_cle_id;
14595
14596 l_lines_rec l_lines_csr%ROWTYPE;
14597
14598 --cursor to get lty_code
14599 CURSOR l_lty_csr (p_lse_id in number) is
14600 SELECT lty_code
14601 from okc_line_styles_b
14602 where id = p_lse_id;
14603
14604 l_lty_code OKC_LINE_STYLES_B.lty_code%TYPE;
14605
14606 lx_clev_rec clev_rec_type;
14607 lx_klev_rec klev_rec_type;
14608
14609 --BUG# NBV:
14610 --cursor to get model and fixed asset lines
14611 cursor l_cleb_csr (p_cle_id in number,
14612 p_chr_id in number,
14613 p_lty_code in varchar2) is
14614 select cleb.id,
14615 cleb.price_unit
14616 from okc_k_lines_b cleb,
14617 okc_line_styles_b lseb
14618 where cleb.cle_id = p_cle_id
14619 and cleb.dnz_chr_id = p_chr_id
14620 and cleb.lse_id = lseb.id
14621 and lseb.lty_code = p_lty_code;
14622
14623 l_cleb_rec l_cleb_csr%ROWTYPE;
14624 rec_count NUMBER;
14625
14626 l_clev_price_tbl clev_tbl_type;
14627 lx_clev_price_tbl clev_tbl_type;
14628 l_klev_price_tbl klev_tbl_type;
14629 lx_klev_price_tbl klev_tbl_type;
14630 --akrangan Bug# 5362977 start
14631 l_clev_fa_rec clev_rec_type;
14632 l_klev_fa_rec klev_rec_type;
14633 lx_clev_fa_rec clev_rec_type;
14634 lx_klev_fa_rec klev_rec_type;
14635 l_cimv_model_rec cimv_rec_type;
14636 x_cimv_model_rec cimv_rec_type;
14637
14638 --cursor to check if the contract is undergoing on-line rebook
14639 CURSOR l_chk_rbk_csr(p_chr_id IN NUMBER) is
14640 SELECT '!'
14641 FROM okc_k_headers_b chr,
14642 okl_trx_contracts ktrx
14643 WHERE ktrx.khr_id_new = chr.id
14644 AND ktrx.tsu_code = 'ENTERED'
14645 AND ktrx.rbr_code is NOT NULL
14646 AND ktrx.tcn_type = 'TRBK'
14647 --rkuttiya added for 12.1.1 Multi GAAP
14648 AND representation_type = 'PRIMARY'
14649 --
14650 AND chr.id = p_chr_id
14651 AND chr.orig_system_source_code = 'OKL_REBOOK';
14652
14653 l_rbk_khr VARCHAR2(1);
14654 --akrangan Bug# 5362977 end
14655
14656 BEGIN
14657
14658 x_return_status := Okl_Api.G_RET_STS_SUCCESS;
14659 -- Call start_activity to create savepoint, check compatibility
14660 -- and initialize message list
14661 x_return_status := Okl_Api.START_ACTIVITY(
14662 p_api_name => l_api_name,
14663 p_pkg_name => g_pkg_name,
14664 p_init_msg_list => p_init_msg_list,
14665 l_api_version => l_api_version,
14666 p_api_version => p_api_version,
14667 p_api_type => '_PVT',
14668 x_return_status => x_return_status);
14669 -- Check if activity started successfully
14670 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14671 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14672 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14673 RAISE Okc_Api.G_EXCEPTION_ERROR;
14674 END IF;
14675 -- akrangan Bug# 5362977 start
14676 l_rbk_khr := '?';
14677 OPEN l_chk_rbk_csr (p_chr_id => p_clev_fin_rec.dnz_chr_id);
14678 FETCH l_chk_rbk_csr INTO l_rbk_khr;
14679 CLOSE l_chk_rbk_csr;
14680 -- akrangan Bug# 5176649 end
14681
14682
14683 --1. update modifiable parameters on financial asset line
14684
14685 l_clev_fin_rec.id := p_cle_id;
14686 l_klev_fin_rec.id := p_cle_id;
14687 l_klev_fin_rec.PRESCRIBED_ASSET_YN := p_klev_fin_rec.PRESCRIBED_ASSET_YN;
14688
14689 l_klev_fin_rec.RESIDUAL_GRNTY_AMOUNT := p_klev_fin_rec.RESIDUAL_GRNTY_AMOUNT;
14690
14691 l_klev_fin_rec.RESIDUAL_CODE := p_klev_fin_rec.RESIDUAL_CODE;
14692
14693 If nvl(p_klev_fin_rec.RESIDUAL_VALUE,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM and
14694 nvl(p_klev_fin_rec.RESIDUAL_PERCENTAGE,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
14695 l_klev_fin_rec.RESIDUAL_VALUE := p_klev_fin_rec.RESIDUAL_VALUE;
14696 l_klev_fin_rec.RESIDUAL_PERCENTAGE := p_klev_fin_rec.RESIDUAL_PERCENTAGE;
14697 End If;
14698
14699 If nvl(p_klev_fin_rec.RESIDUAL_PERCENTAGE,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM and
14700 nvl(p_klev_fin_rec.RESIDUAL_VALUE,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM then
14701 l_klev_fin_rec.RESIDUAL_PERCENTAGE := p_klev_fin_rec.RESIDUAL_PERCENTAGE;
14702 l_klev_fin_rec.RESIDUAL_VALUE := NULL;
14703 End If;
14704
14705 If nvl(p_klev_fin_rec.RESIDUAL_PERCENTAGE,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM and
14706 nvl(p_klev_fin_rec.RESIDUAL_VALUE,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
14707 l_klev_fin_rec.RESIDUAL_VALUE := p_klev_fin_rec.RESIDUAL_VALUE;
14708 l_klev_fin_rec.RESIDUAL_PERCENTAGE := NULL;
14709 End If;
14710
14711 --BUG# : NBV - update price unit on fixed asset and model lines
14712 rec_count := 0;
14713 open l_cleb_csr(p_cle_id => p_cle_id,
14714 p_chr_id => p_clev_fin_rec.dnz_chr_id,
14715 p_lty_code => 'FIXED_ASSET');
14716 fetch l_cleb_csr into l_cleb_rec;
14717 If l_cleb_csr%NOTFOUND then
14718 Null;
14719 Else
14720 rec_count := rec_count+1;
14721 l_clev_price_tbl(rec_count).id := l_cleb_rec.id;
14722 l_klev_price_tbl(rec_count).id := l_cleb_rec.id;
14723 l_clev_price_tbl(rec_count).price_unit := p_talv_fa_rec.original_cost;
14724 End If;
14725 close l_cleb_csr;
14726
14727 open l_cleb_csr(p_cle_id => p_cle_id,
14728 p_chr_id => p_clev_fin_rec.dnz_chr_id,
14729 p_lty_code => 'ITEM');
14730 fetch l_cleb_csr into l_cleb_rec;
14731 If l_cleb_csr%NOTFOUND then
14732 Null;
14733 Else
14734 rec_count := rec_count+1;
14735 l_clev_price_tbl(rec_count).id := l_cleb_rec.id;
14736 l_klev_price_tbl(rec_count).id := l_cleb_rec.id;
14737 l_clev_price_tbl(rec_count).price_unit := p_talv_fa_rec.original_cost;
14738 End If;
14739 close l_cleb_csr;
14740
14741 If l_clev_price_tbl.COUNT > 0 then
14742
14743 OKL_CONTRACT_PUB.update_contract_line(
14744 p_api_version => p_api_version,
14745 p_init_msg_list => p_init_msg_list,
14746 x_return_status => x_return_status,
14747 x_msg_count => x_msg_count,
14748 x_msg_data => x_msg_data,
14749 p_clev_tbl => l_clev_price_tbl,
14750 p_klev_tbl => l_klev_price_tbl,
14751 x_clev_tbl => lx_clev_price_tbl,
14752 x_klev_tbl => lx_klev_price_tbl);
14753
14754 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14755 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14756 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14757 RAISE Okc_Api.G_EXCEPTION_ERROR;
14758 END IF;
14759
14760 --Bug# 4631549
14761 If nvl(p_call_mode,okl_api.g_miss_char) = 'RELEASE_ASSET' then
14762 --Calculate oec
14763 OKL_EXECUTE_FORMULA_PUB.EXECUTE(p_api_version => p_api_version,
14764 p_init_msg_list => p_init_msg_list,
14765 x_return_status => x_return_status,
14766 x_msg_count => x_msg_count,
14767 x_msg_data => x_msg_data,
14768 p_formula_name => G_FORMULA_OEC,
14769 p_contract_id => p_clev_fin_rec.dnz_chr_id,
14770 p_line_id => p_cle_id,
14771 x_value => l_klev_fin_rec.oec);
14772 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14773 OKL_API.set_message(p_app_name => G_APP_NAME,
14774 p_msg_name => G_CALC_AMOUNT,
14775 p_token1 => G_AMT_TOKEN,
14776 p_token1_value => 'OEC');
14777 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14778 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14779 OKL_API.set_message(p_app_name => G_APP_NAME,
14780 p_msg_name => G_CALC_AMOUNT,
14781 p_token1 => G_AMT_TOKEN,
14782 p_token1_value => 'OEC');
14783 RAISE OKL_API.G_EXCEPTION_ERROR;
14784 END IF;
14785 End If;
14786 END IF;
14787 --END BUG: NBV
14788
14789
14790
14791 --set adjustments to null
14792 l_klev_fin_rec.CAPITAL_REDUCTION_PERCENT := null;
14793 l_klev_fin_rec.CAPITAL_REDUCTION := null;
14794 l_klev_fin_rec.TRADEIN_AMOUNT := null;
14795
14796 --Bug#5601721 -- start
14797 l_klev_fin_rec.DOWN_PAYMENT_RECEIVER_CODE := null;
14798 l_klev_fin_rec.CAPITALIZE_DOWN_PAYMENT_YN:= null;
14799 l_klev_fin_rec.CAPITALIZED_INTEREST := null;
14800 update_financial_asset_line(
14801 p_api_version => p_api_version,
14802 p_init_msg_list => p_init_msg_list,
14803 x_return_status => x_return_status,
14804 x_msg_count => x_msg_count,
14805 x_msg_data => x_msg_data,
14806 p_clev_rec => l_clev_fin_rec,
14807 p_klev_rec => l_klev_fin_rec,
14808 x_clev_rec => l_rel_ast_clev_fin_rec,
14809 x_klev_rec => l_rel_ast_klev_fin_rec);
14810
14811 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14812 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14813 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14814 RAISE Okc_Api.G_EXCEPTION_ERROR;
14815 END IF;
14816 --Bug#5601721 -- end
14817
14818 --Bug# 4631549
14819 If nvl(p_call_mode,okl_api.g_miss_char) = 'RELEASE_ASSET' then
14820 --calculate capital_amount
14821 OKL_EXECUTE_FORMULA_PUB.EXECUTE(p_api_version => p_api_version,
14822 p_init_msg_list => p_init_msg_list,
14823 x_return_status => x_return_status,
14824 x_msg_count => x_msg_count,
14825 x_msg_data => x_msg_data,
14826 p_formula_name => G_FORMULA_CAP,
14827 p_contract_id => p_clev_fin_rec.dnz_chr_id,
14828 p_line_id => p_cle_id,
14829 x_value => l_klev_fin_rec.capital_amount);
14830 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14831 OKL_API.set_message(p_app_name => G_APP_NAME,
14832 p_msg_name => G_CALC_AMOUNT,
14833 p_token1 => G_AMT_TOKEN,
14834 p_token1_value => 'Capital Amount');
14835 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14836 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14837 OKL_API.set_message(p_app_name => G_APP_NAME,
14838 p_msg_name => G_CALC_AMOUNT,
14839 p_token1 => G_AMT_TOKEN,
14840 p_token1_value => 'Capital Amount');
14841 RAISE OKL_API.G_EXCEPTION_ERROR;
14842 END IF;
14843 End If;
14844
14845 -- akrangan bug 5362977 start
14846 l_clev_fin_rec.item_description := p_talv_fa_rec.description;
14847 -- akrangan bug 5362977 end
14848 update_financial_asset_line(
14849 p_api_version => p_api_version,
14850 p_init_msg_list => p_init_msg_list,
14851 x_return_status => x_return_status,
14852 x_msg_count => x_msg_count,
14853 x_msg_data => x_msg_data,
14854 p_clev_rec => l_clev_fin_rec,
14855 p_klev_rec => l_klev_fin_rec,
14856 x_clev_rec => l_rel_ast_clev_fin_rec,
14857 x_klev_rec => l_rel_ast_klev_fin_rec);
14858
14859 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14860 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14861 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14862 RAISE Okc_Api.G_EXCEPTION_ERROR;
14863 END IF;
14864
14865
14866 -- akrangan Bug# 5362977 start
14867 IF l_rbk_khr = '!' THEN
14868 l_clev_fa_rec.id := p_clev_fa_rec.id;
14869 l_klev_fa_rec.id := p_clev_fa_rec.id;
14870
14871 l_clev_fa_rec.item_description := p_talv_fa_rec.description;
14872
14873 l_klev_fa_rec.Year_Built := p_talv_fa_rec.year_manufactured;
14874 OKL_CONTRACT_PUB.update_contract_line(p_api_version => p_api_version,
14875 p_init_msg_list => p_init_msg_list,
14876 x_return_status => x_return_status,
14877 x_msg_count => x_msg_count,
14878 x_msg_data => x_msg_data,
14879 p_clev_rec => l_clev_fa_rec,
14880 p_klev_rec => l_klev_fa_rec,
14881 x_clev_rec => lx_clev_fa_rec,
14882 x_klev_rec => lx_klev_fa_rec);
14883
14884 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14885 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14886 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14887 RAISE Okc_Api.G_EXCEPTION_ERROR;
14888 END IF;
14889
14890 x_return_status := get_rec_cimv(p_clev_model_rec.id,
14891 p_clev_fin_rec.dnz_chr_id,
14892 l_cimv_model_rec);
14893 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14894 OKL_API.set_message(p_app_name => G_APP_NAME,
14895 p_msg_name => G_FETCHING_INFO,
14896 p_token1 => G_REC_NAME_TOKEN,
14897 p_token1_value => 'OKC_K_ITEMS_V Record');
14898 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14899 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14900 OKL_API.set_message(p_app_name => G_APP_NAME,
14901 p_msg_name => G_FETCHING_INFO,
14902 p_token1 => G_REC_NAME_TOKEN,
14903 p_token1_value => 'OKC_K_ITEMS_V Record');
14904 RAISE OKL_API.G_EXCEPTION_ERROR;
14905 END IF;
14906
14907 l_cimv_model_rec.object1_id1 := p_cimv_model_rec.object1_id1;
14908 l_cimv_model_rec.object1_id2 := p_cimv_model_rec.object1_id2;
14909
14910 OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version => p_api_version,
14911 p_init_msg_list => p_init_msg_list,
14912 x_return_status => x_return_status,
14913 x_msg_count => x_msg_count,
14914 x_msg_data => x_msg_data,
14915 p_cimv_rec => l_cimv_model_rec,
14916 x_cimv_rec => x_cimv_model_rec);
14917
14918 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14919 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14920 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14921 RAISE Okc_Api.G_EXCEPTION_ERROR;
14922 END IF;
14923
14924 END IF;
14925 --akrangan Bug# 5362977 end
14926
14927
14928 --2. update modifiable parameters on FA transaction line
14929 --get fixed asset details
14930 open l_fa_csr(p_fin_cle_id => p_cle_id,
14931 p_chr_id => p_clev_fin_rec.dnz_chr_id);
14932 fetch l_fa_csr into l_fa_rec;
14933 If l_fa_csr%NOTFOUND then
14934 --raise error:invalid line information
14935 OKL_API.set_message(p_app_name => G_APP_NAME,
14936 p_msg_name => 'OKL_LLA_LINE_RECORD');
14937 RAISE Okc_Api.G_EXCEPTION_ERROR;
14938 End If;
14939 close l_fa_csr;
14940
14941 l_talv_fa_rec.id := l_fa_rec.id;
14942 l_talv_fa_rec.DEPRN_METHOD := p_talv_fa_rec.DEPRN_METHOD;
14943 l_talv_fa_rec.LIFE_IN_MONTHS := p_talv_fa_rec.LIFE_IN_MONTHS;
14944 l_talv_fa_rec.DEPRN_RATE := p_talv_fa_rec.DEPRN_RATE;
14945 l_talv_fa_rec.FA_LOCATION_ID := p_talv_fa_rec.FA_LOCATION_ID;
14946 l_talv_fa_rec.SALVAGE_VALUE := p_talv_fa_rec.SALVAGE_VALUE;
14947 l_talv_fa_rec.PERCENT_SALVAGE_VALUE := p_talv_fa_rec.PERCENT_SALVAGE_VALUE;
14948 -- akrangan Bug# 5362977 start
14949 IF l_rbk_khr = '!' THEN
14950 l_talv_fa_rec.year_manufactured := p_talv_fa_rec.year_manufactured;
14951 l_talv_fa_rec.manufacturer_name := p_talv_fa_rec.manufacturer_name;
14952 l_talv_fa_rec.model_number := p_talv_fa_rec.model_number;
14953 l_talv_fa_rec.description := p_talv_fa_rec.description;
14954 END IF;
14955 -- akrangan Bug# 5362977 end
14956 Update_asset_lines(
14957 p_api_version => p_api_version,
14958 p_init_msg_list => p_init_msg_list,
14959 x_return_status => x_return_status,
14960 x_msg_count => x_msg_count,
14961 x_msg_data => x_msg_data,
14962 p_talv_rec => l_talv_fa_rec,
14963 x_talv_rec => l_rel_ast_talv_rec);
14964
14965 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14966 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14967 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14968 RAISE Okc_Api.G_EXCEPTION_ERROR;
14969 END IF;
14970
14971 --3. update modifiable parameters on IB transaction line
14972 i := 0;
14973 open l_ib_csr(p_fin_cle_id => p_cle_id,
14974 p_chr_id => p_clev_fin_rec.dnz_chr_id);
14975 Loop
14976 fetch l_ib_csr into l_ib_rec;
14977 Exit when l_ib_csr%NOTFOUND;
14978 i := i+1;
14979 l_itiv_ib_tbl(i).id := l_ib_rec.id;
14980 l_itiv_ib_tbl(i).SERIAL_NUMBER := l_ib_rec.SERIAL_NUMBER;
14981 l_itiv_ib_tbl(i).OBJECT_ID1_NEW := l_ib_rec.OBJECT_ID1_NEW;
14982 l_itiv_ib_tbl(i).OBJECT_ID2_NEW := l_ib_rec.OBJECT_ID2_NEW;
14983 End Loop;
14984 Close l_ib_csr;
14985
14986 If l_itiv_ib_tbl.COUNT > 0 and p_itiv_ib_tbl.COUNT > 0 Then
14987 For i in l_itiv_ib_tbl.FIRST..l_itiv_ib_tbl.LAST
14988 Loop
14989 --currently only one install site is possible for one serial number
14990 --therefor the if clause commented below is not required
14991 For j in p_itiv_ib_tbl.FIRST..p_itiv_ib_tbl.LAST
14992 Loop
14993 --If (l_itiv_ib_tbl(i).SERIAL_NUMBER = p_itiv_ib_tbl(j).SERIAL_NUMBER) OR
14994 --(nvl(l_itiv_ib_tbl(i).SERIAL_NUMBER,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR
14995 --and nvl(p_itiv_ib_tbl(j).SERIAL_NUMBER,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR) then
14996 l_itiv_ib_tbl(i).OBJECT_ID1_OLD := l_itiv_ib_tbl(i).OBJECT_ID1_NEW;
14997 l_itiv_ib_tbl(i).OBJECT_ID2_OLD := l_itiv_ib_tbl(i).OBJECT_ID2_NEW;
14998 l_itiv_ib_tbl(i).OBJECT_ID1_NEW := p_itiv_ib_tbl(j).OBJECT_ID1_NEW;
14999 l_itiv_ib_tbl(i).OBJECT_ID2_NEW := p_itiv_ib_tbl(j).OBJECT_ID2_NEW;
15000 --akrangan Bug# 5362977 start
15001 IF l_rbk_khr = '!' THEN
15002 l_itiv_ib_tbl(i).INVENTORY_ITEM_ID := p_cimv_model_rec.object1_id1;
15003 l_itiv_ib_tbl(i).INVENTORY_ORG_ID := p_cimv_model_rec.object1_id2;
15004 END IF;
15005 --akrangan Bug# 5362977 end
15006
15007 --End If;
15008 End Loop;
15009 End Loop;
15010 OKL_TXL_ITM_INSTS_PUB.update_txl_itm_insts(p_api_version => p_api_version,
15011 p_init_msg_list => p_init_msg_list,
15012 x_return_status => x_return_status,
15013 x_msg_count => x_msg_count,
15014 x_msg_data => x_msg_data,
15015 p_iipv_tbl => l_itiv_ib_tbl,
15016 x_iipv_tbl => l_rel_ast_itiv_ib_tbl);
15017
15018 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
15019 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
15020 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
15021 RAISE Okc_Api.G_EXCEPTION_ERROR;
15022 END IF;
15023 End If;
15024
15025 --------------------------------------------------
15026 --update residual value as per standard
15027 -------------------------------------------------
15028 Resolve_Residual_Value(
15029 p_api_version => p_api_version,
15030 p_init_msg_list => p_init_msg_list,
15031 x_return_status => x_return_status,
15032 x_msg_count => x_msg_count,
15033 x_msg_data => x_msg_data,
15034 p_asset_number => l_fa_rec.asset_number,
15035 p_clev_fin_rec => l_rel_ast_clev_fin_rec,
15036 p_klev_fin_rec => l_rel_ast_klev_fin_rec,
15037 --Bug# 4631549
15038 p_call_mode => p_call_mode,
15039 x_clev_fin_rec => x_clev_fin_rec,
15040 x_klev_fin_rec => x_klev_fin_rec);
15041
15042 IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
15043 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
15044 ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
15045 RAISE Okc_Api.G_EXCEPTION_ERROR;
15046 END IF;
15047
15048 -------------------------------------------
15049 --Get all the lines
15050 -------------------------------------------
15051 i := 1;
15052 Open l_lines_csr (p_from_cle_id => x_clev_fin_rec.id);
15053 loop
15054 Fetch l_lines_csr into l_lines_rec;
15055 Exit when l_lines_csr%NOTFOUND;
15056 x_return_status := get_rec_clev(l_lines_rec.id,
15057 lx_clev_rec);
15058 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15059 OKL_API.set_message(p_app_name => G_APP_NAME,
15060 p_msg_name => G_FETCHING_INFO,
15061 p_token1 => G_REC_NAME_TOKEN,
15062 p_token1_value => 'OKC_K_LINES_V Record');
15063 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
15064 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15065 OKL_API.set_message(p_app_name => G_APP_NAME,
15066 p_msg_name => G_FETCHING_INFO,
15067 p_token1 => G_REC_NAME_TOKEN,
15068 p_token1_value => 'OKC_K_LINES_V Record');
15069 RAISE Okc_Api.G_EXCEPTION_ERROR;
15070 END IF;
15071 x_return_status := get_rec_klev(l_lines_rec.id,
15072 lx_klev_rec);
15073 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15074 OKL_API.set_message(p_app_name => G_APP_NAME,
15075 p_msg_name => G_FETCHING_INFO,
15076 p_token1 => G_REC_NAME_TOKEN,
15077 p_token1_value => 'OKL_K_LINES_V Record');
15078 RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
15079 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15080 OKL_API.set_message(p_app_name => G_APP_NAME,
15081 p_msg_name => G_FETCHING_INFO,
15082 p_token1 => G_REC_NAME_TOKEN,
15083 p_token1_value => 'OKL_K_LINES_V Record');
15084 RAISE Okc_Api.G_EXCEPTION_ERROR;
15085 END IF;
15086
15087 Open l_lty_csr(p_lse_id => l_lines_rec.lse_id);
15088 Fetch l_lty_csr into l_lty_code;
15089 Close l_lty_csr;
15090
15091 If l_lty_code = 'ITEM' then
15092 x_clev_model_rec := lx_clev_rec;
15093 x_klev_model_rec := lx_klev_rec;
15094 ElsIf l_lty_code = 'FIXED_ASSET' then
15095 x_clev_fa_rec := lx_clev_rec;
15096 x_klev_fa_rec := lx_klev_rec;
15097 ElsIf l_lty_code = 'INST_ITEM' then
15098 x_clev_ib_tbl(i) := lx_clev_rec;
15099 x_klev_ib_tbl(i) := lx_klev_rec;
15100 i := i+1;
15101 End If;
15102 End Loop;
15103 Close l_lines_csr;
15104
15105
15106
15107 OKL_API.END_ACTIVITY (x_msg_count,
15108 x_msg_data );
15109 EXCEPTION
15110 WHEN OKL_API.G_EXCEPTION_ERROR THEN
15111 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
15112 l_api_name,
15113 G_PKG_NAME,
15114 'OKL_API.G_RET_STS_ERROR',
15115 x_msg_count,
15116 x_msg_data,
15117 '_PVT');
15118 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
15119 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
15120 l_api_name,
15121 G_PKG_NAME,
15122 'OKL_API.G_RET_STS_UNEXP_ERROR',
15123 x_msg_count,
15124 x_msg_data,
15125 '_PVT');
15126 WHEN OTHERS THEN
15127 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
15128 l_api_name,
15129 G_PKG_NAME,
15130 'OTHERS',
15131 x_msg_count,
15132 x_msg_data,
15133 '_PVT');
15134 END Modify_Release_asset_Line;
15135
15136 -----------------------------------------------------------------------------------------------
15137 --------------------- Main Process for All Lines Line Creation---------------------------------
15138 -----------------------------------------------------------------------------------------------
15139 PROCEDURE Create_all_line(
15140 p_api_version IN NUMBER,
15141 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
15142 x_return_status OUT NOCOPY VARCHAR2,
15143 x_msg_count OUT NOCOPY NUMBER,
15144 x_msg_data OUT NOCOPY VARCHAR2,
15145 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
15146 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
15147 p_clev_fin_rec IN clev_rec_type,
15148 p_klev_fin_rec IN klev_rec_type,
15149 p_cimv_model_rec IN cimv_rec_type,
15150 p_clev_fa_rec IN clev_rec_type,
15151 p_cimv_fa_rec IN cimv_rec_type,
15152 p_talv_fa_rec IN talv_rec_type,
15153 p_itiv_ib_tbl IN itiv_tbl_type,
15154 x_clev_fin_rec OUT NOCOPY clev_rec_type,
15155 x_clev_model_rec OUT NOCOPY clev_rec_type,
15156 x_clev_fa_rec OUT NOCOPY clev_rec_type,
15157 x_clev_ib_rec OUT NOCOPY clev_rec_type) IS
15158 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_ALL_LINES';
15159 l_asset_number OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE;
15160 m_clev_fin_rec clev_rec_type;
15161 m_klev_fin_rec klev_rec_type;
15162 l_clev_fin_rec clev_rec_type;
15163 l_klev_fin_rec klev_rec_type;
15164 l_clev_fin_rec_out clev_rec_type;
15165 l_klev_fin_rec_out klev_rec_type;
15166 l_clev_model_rec clev_rec_type;
15167 l_klev_model_rec klev_rec_type;
15168 l_cimv_model_rec cimv_rec_type;
15169 l_clev_model_rec_out clev_rec_type;
15170 l_klev_model_rec_out klev_rec_type;
15171 l_cimv_model_rec_out cimv_rec_type;
15172 l_clev_fa_rec clev_rec_type;
15173 l_klev_fa_rec klev_rec_type;
15174 l_cimv_fa_rec cimv_rec_type;
15175 l_trxv_fa_rec trxv_rec_type;
15176 l_talv_fa_rec talv_rec_type;
15177 l_clev_fa_rec_out clev_rec_type;
15178 l_klev_fa_rec_out klev_rec_type;
15179 l_cimv_fa_rec_out cimv_rec_type;
15180 l_trxv_fa_rec_out trxv_rec_type;
15181 l_talv_fa_rec_out talv_rec_type;
15182 l_clev_inst_rec clev_rec_type;
15183 l_klev_inst_rec klev_rec_type;
15184 l_itiv_inst_tbl itiv_tbl_type;
15185 l_clev_inst_rec_out clev_rec_type;
15186 l_klev_inst_rec_out klev_rec_type;
15187 l_itiv_inst_tbl_out itiv_tbl_type;
15188 l_clev_ib_rec clev_rec_type;
15189 l_klev_ib_rec klev_rec_type;
15190 l_cimv_ib_rec cimv_rec_type;
15191 l_trxv_ib_rec trxv_rec_type;
15192 l_itiv_ib_tbl itiv_tbl_type;
15193 r_itiv_ib_tbl itiv_tbl_type;
15194 l_clev_ib_rec_out clev_rec_type;
15195 l_klev_ib_rec_out klev_rec_type;
15196 l_cimv_ib_rec_out cimv_rec_type;
15197 l_trxv_ib_rec_out trxv_rec_type;
15198 l_itiv_ib_tbl_out itiv_tbl_type;
15199 ln_klev_fin_oec OKL_K_LINES_V.OEC%TYPE := 0;
15200 ln_klev_fin_res OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
15201 ln_klev_fin_cap OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
15202 ln_clev_model_price_unit OKC_K_LINES_V.PRICE_UNIT%TYPE := 0;
15203 ln_cimv_model_no_items OKC_K_ITEMS_V.NUMBER_OF_ITEMS%TYPE := 0;
15204 lv_object_id1_new OKL_TXL_ITM_INSTS_V.OBJECT_ID1_NEW%TYPE;
15205 lv_scs_code OKC_K_HEADERS_V.SCS_CODE%TYPE := null;
15206 ln_dummy NUMBER := 0;
15207 ln_dummy1 NUMBER := 0;
15208 i NUMBER := 0;
15209 j NUMBER := 0;
15210 k NUMBER := 0;
15211 m NUMBER := 0;
15212 n NUMBER := 0;
15213 p NUMBER := 0;
15214
15215 -- added by rravikir (Estimated property tax)
15216 ln_chr_id OKC_K_HEADERS_B.ID%TYPE;
15217 ln_cle_id OKL_K_LINES_V.ID%TYPE;
15218 -- end
15219 TYPE instance_id_tbl IS TABLE OF NUMBER
15220 INDEX BY BINARY_INTEGER;
15221 lt_instance_id_tbl instance_id_tbl;
15222 CURSOR c_get_scs_code(p_dnz_chr_id OKC_K_HEADERS_B.ID%TYPE)
15223 IS
15224 SELECT scs_code,
15225 --Bug# 4419339
15226 orig_system_source_code
15227 FROM OKC_K_HEADERS_B
15228 WHERE id = p_dnz_chr_id;
15229
15230
15231 --Bug# 4419339
15232 l_orig_system_source_code okc_k_headers_b.orig_system_source_code%TYPE;
15233
15234 CURSOR c_ib_sno_asset(p_asset_number OKL_TXL_ASSETS_B.ASSET_NUMBER%TYPE)
15235 IS
15236 SELECT CII.SERIAL_NUMBER IB_SERIAL_NUMBER,
15237 CII.INSTANCE_ID
15238 FROM
15239 OKC_K_HEADERS_V OKHV, OKC_K_LINES_V KLE_FA, OKC_LINE_STYLES_B LSE_FA, OKC_K_LINES_B KLE_IL,
15240 OKC_LINE_STYLES_B LSE_IL, OKC_K_LINES_B KLE_IB, OKC_LINE_STYLES_B LSE_IB, OKC_K_ITEMS ITE,
15241 CSI_ITEM_INSTANCES CII
15242 WHERE
15243 kle_fa.chr_id = okhv.id AND lse_fa.id = kle_fa.lse_id AND lse_fa.lty_code = 'FREE_FORM1'
15244 AND kle_il.cle_id = kle_fa.id AND lse_il.id = kle_il.lse_id AND lse_il.lty_code = 'FREE_FORM2'
15245 AND kle_ib.cle_id = kle_il.id AND lse_ib.id = kle_ib.lse_id AND lse_ib.lty_code = 'INST_ITEM'
15246 AND ite.cle_id = kle_ib.id AND ite.jtot_object1_code = 'OKX_IB_ITEM'
15247 AND cii.instance_id = ite.object1_id1 AND kle_fa.name = p_asset_number;
15248
15249 l_top_line_id NUMBER;
15250 l_oec NUMBER;
15251 l_residual_value NUMBER;
15252
15253 --Bug# 3533936:
15254 l_rel_ast_fin_cle_id NUMBER;
15255
15256 --cursor to check if contract has re-lease assets
15257 --Bug# 15992711 : The re-leased flag is no longer checked at contract header
15258 -- but needs to be validated at contract line
15259 -- Cursor modified to include validation at asset line level
15260 /*CURSOR l_chk_rel_ast_csr (p_chr_id IN Number) IS
15261 SELECT 'Y'
15262 FROM okc_k_headers_b CHR
15263 WHERE nvl(chr.orig_system_source_code,'XXXX') <> 'OKL_RELEASE'
15264 and chr.ID = p_chr_id
15265 AND exists (SELECT '1'
15266 FROM OKC_RULES_B rul
15267 WHERE rul.dnz_chr_id = chr.id
15268 AND rul.rule_information_category = 'LARLES'
15269 AND nvl(rule_information1,'N') = 'Y');*/
15270
15271 CURSOR l_chk_rel_ast_csr (p_chr_id IN Number
15272 ,p_asset_number IN OKX_ASSETS_V.ASSET_NUMBER%TYPE) IS
15273 SELECT 'Y'
15274 FROM okc_k_headers_b CHR
15275 WHERE nvl(chr.orig_system_source_code,'XXXX') <> 'OKL_RELEASE'
15276 and chr.ID = p_chr_id
15277 AND EXISTS (
15278 SELECT '1'
15279 FROM okl_asset_returns_all_b KAR
15280 WHERE KAR.kle_id IN (SELECT KLE.cle_id
15281 FROM okl_txl_assets_b TXL
15282 ,okl_txd_assets_b TXD
15283 ,okc_k_lines_b KLE
15284 WHERE TXD.asset_number = p_asset_number
15285 AND KLE.id = TXL.kle_id
15286 AND TXL.id = TXD.tal_id )
15287 AND KAR.ars_code = 'RE_LEASE');
15288 -- Bug# 15992711 : End of Modifications
15289
15290 l_chk_rel_ast Varchar2(1) default 'N';
15291
15292 l_rel_ast_clev_fin_rec clev_rec_type;
15293 l_rel_ast_klev_fin_rec klev_rec_type;
15294 l_rel_ast_clev_model_rec clev_rec_type;
15295 l_rel_ast_klev_model_rec klev_rec_type;
15296 l_rel_ast_clev_fa_rec clev_rec_type;
15297 l_rel_ast_klev_fa_rec klev_rec_type;
15298 l_rel_ast_clev_ib_tbl clev_tbl_type;
15299 l_rel_ast_klev_ib_tbl klev_tbl_type;
15300 --End Bug# 3533936:
15301
15302 --| start 29-Oct-2008 cklee Bug: 7492324 move code logic to |
15303 --| OKL_TXL_ASSETS_PVT.CREATE_TXL_ASSET_DEF |
15304 --Bug# 4186455 : Do not default SV for LOANS
15305 --cursor to check deal type of the contract
15306 /* Cursor l_deal_type_csr (p_chr_id in number) is
15307 select khr.deal_type,
15308 khr.pdt_id,
15309 pdt.reporting_pdt_id
15310 from okl_products pdt,
15311 okl_k_headers khr
15312 where pdt.id = khr.pdt_id
15313 and khr.id = p_chr_id;
15314
15315 l_deal_type_rec l_deal_type_csr%ROWTYPE;
15316
15317 --dkagrawa changed cursor to use view OKL_PROD_QLTY_VAL_UV than okl_product_parameters_v
15318 --cursor to get deal type corresponding to a product
15319 Cursor l_pdt_deal_csr (p_pdt_id in number) is
15320 SELECT ppv.quality_val deal_type
15321 FROM okl_prod_qlty_val_uv ppv
15322 WHERE ppv.quality_name IN ('LEASE','INVESTOR')
15323 AND ppv.pdt_id = p_pdt_id;
15324
15325 l_pdt_deal_rec l_pdt_deal_csr%ROWTYPE;*/
15326 --End Bug# 4186455 : Do not default SV for LOANS
15327 --| end 29-Oct-2008 cklee Bug: 7492324 move code logic to |
15328 --| OKL_TXL_ASSETS_PVT.CREATE_TXL_ASSET_DEF |
15329
15330
15331 BEGIN
15332
15333 x_return_status := OKL_API.G_RET_STS_SUCCESS;
15334 -- Call start_activity to create savepoint, check compatibility
15335 -- and initialize message list
15336 x_return_status := OKL_API.START_ACTIVITY (
15337 l_api_name
15338 ,p_init_msg_list
15339 ,'_PVT'
15340 ,x_return_status);
15341 -- Check if activity started successfully
15342 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15343 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15344 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15345 RAISE OKL_API.G_EXCEPTION_ERROR;
15346 END IF;
15347
15348
15349 l_clev_fin_rec := p_clev_fin_rec;
15350 l_klev_fin_rec := p_klev_fin_rec;
15351 l_cimv_model_rec := p_cimv_model_rec;
15352 l_clev_fa_rec := p_clev_fa_rec;
15353 l_cimv_fa_rec := p_cimv_fa_rec;
15354 l_talv_fa_rec := p_talv_fa_rec;
15355 l_itiv_inst_tbl := p_itiv_ib_tbl;
15356 l_itiv_ib_tbl := p_itiv_ib_tbl;
15357
15358 IF (l_clev_fin_rec.dnz_chr_id IS NULL OR
15359 l_clev_fin_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
15360 OKL_API.set_message(p_app_name => G_APP_NAME,
15361 p_msg_name => G_REQUIRED_VALUE,
15362 p_token1 => G_COL_NAME_TOKEN,
15363 p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID for All Lines');
15364 RAISE OKL_API.G_EXCEPTION_ERROR;
15365 END IF;
15366 --start:| 14-May-2008 cklee Bug 6405415 |
15367 IF l_klev_fin_rec.residual_percentage <> OKL_API.G_MISS_NUM and
15368 l_klev_fin_rec.residual_percentage IS NOT NULL THEN
15369 IF NOT l_klev_fin_rec.residual_percentage between 0 and 100 THEN
15370 OKL_API.set_message(p_app_name => G_APP_NAME,
15371 p_msg_name => 'OKL_VALID_RESIDUAL_PERCENT');
15372 RAISE OKL_API.G_EXCEPTION_ERROR;
15373 END IF;
15374 END IF;
15375 --end:| 14-May-2008 cklee Bug 6405415 |
15376
15377 OPEN c_get_scs_code(p_dnz_chr_id => l_clev_fin_rec.dnz_chr_id);
15378 --Bug#4418339
15379 FETCH c_get_scs_code INTO lv_scs_code, l_orig_system_source_code;
15380 IF c_get_scs_code%NOTFOUND THEN
15381 OKL_API.set_message(p_app_name => G_APP_NAME,
15382 p_msg_name => G_NO_MATCHING_RECORD,
15383 p_token1 => G_COL_NAME_TOKEN,
15384 p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID');
15385 RAISE G_EXCEPTION_HALT_VALIDATION;
15386 END IF;
15387 CLOSE c_get_scs_code;
15388
15389
15390 ------------------------------------------------------
15391 --Bug# 3533936 : Release Asset Case - all line details
15392 -- should default from exising asset
15393 ------------------------------------------------------
15394 l_chk_rel_ast := 'N';
15395
15396 -- Bug# 15992711 : Change in number of parameters passed to new cursor
15397 -- Open l_chk_rel_ast_csr(p_chr_id => l_clev_fin_rec.dnz_chr_id);
15398 Open l_chk_rel_ast_csr(l_clev_fin_rec.dnz_chr_id,p_asset_number);
15399 -- Bug# 15992711 : End of Modifications
15400
15401 Fetch l_chk_rel_ast_csr into l_chk_rel_ast;
15402 If l_chk_rel_ast_csr%NOTFOUND then
15403 null;
15404 end if;
15405 close l_chk_rel_ast_csr;
15406
15407 If p_new_yn = 'N' And l_chk_rel_ast = 'Y' Then
15408
15409 Create_release_asset_line
15410 (p_api_version => p_api_version,
15411 p_init_msg_list => p_init_msg_list,
15412 x_return_status => x_return_status,
15413 x_msg_count => x_msg_count,
15414 x_msg_data => x_msg_data,
15415 p_asset_id => l_cimv_fa_rec.object1_id1,
15416 p_chr_id => l_clev_fin_rec.dnz_chr_id,
15417 x_cle_id => l_rel_ast_fin_cle_id);
15418
15419 --ramurt Bug#4945190
15420 ln_chr_id := l_clev_fin_rec.dnz_chr_id;
15421 ln_cle_id := l_rel_ast_fin_cle_id;
15422
15423
15424 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15425 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15426 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15427 RAISE OKL_API.G_EXCEPTION_ERROR;
15428 END IF;
15429
15430 Modify_Release_Asset_Line(
15431 p_api_version => p_api_version,
15432 p_init_msg_list => p_init_msg_list,
15433 x_return_status => x_return_status,
15434 x_msg_count => x_msg_count,
15435 x_msg_data => x_msg_data,
15436 p_clev_fin_rec => l_clev_fin_rec,
15437 p_klev_fin_rec => l_klev_fin_rec,
15438 --akrangan Bug# 5362977 start
15439 p_clev_model_rec => l_clev_model_rec,
15440 --akrangan Bug# 5362977 end
15441 p_cimv_model_rec => l_cimv_model_rec,
15442 p_clev_fa_rec => l_clev_fa_rec,
15443 p_cimv_fa_rec => l_cimv_fa_rec,
15444 p_talv_fa_rec => l_talv_fa_rec,
15445 p_itiv_ib_tbl => l_itiv_ib_tbl,
15446 p_cle_id => l_rel_ast_fin_cle_id,
15447 --Bug# 4631549
15448 p_call_mode => 'RELEASE_ASSET',
15449 x_clev_fin_rec => l_rel_ast_clev_fin_rec,
15450 x_klev_fin_rec => l_rel_ast_klev_fin_rec,
15451 x_clev_model_rec => l_rel_ast_clev_model_rec,
15452 x_klev_model_rec => l_rel_ast_klev_model_rec,
15453 x_clev_fa_rec => l_rel_ast_clev_fa_rec,
15454 x_klev_fa_rec => l_rel_ast_klev_fa_rec,
15455 x_clev_ib_tbl => l_rel_ast_clev_ib_tbl,
15456 x_klev_ib_tbl => l_rel_ast_klev_ib_tbl);
15457
15458
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
15465 x_clev_fin_rec := l_rel_ast_clev_fin_rec;
15466 x_clev_model_rec := l_rel_ast_clev_model_rec;
15467 x_clev_fa_rec := l_rel_ast_clev_fa_rec;
15468 If l_rel_ast_clev_ib_tbl.COUNT > 0 then
15469 x_clev_ib_rec := l_rel_ast_clev_ib_tbl(1);
15470 End If;
15471 Else
15472 ----------------------------------------------------------
15473 --End Bug# 3533936
15474 ----------------------------------------------------------
15475
15476
15477
15478 -- Code is commneted as per Nagen mail on 01/23/2002 10.11am
15479 -- code is put in place as per Manish on 09/16/2002
15480 IF (p_asset_number IS NULL OR
15481 p_asset_number = OKL_API.G_MISS_CHAR) AND
15482 (lv_scs_code IS NOT NULL OR
15483 lv_scs_code <> OKL_API.G_MISS_CHAR) AND
15484 --Bug#4419339
15485 --(lv_scs_code = 'QUOTE') AND
15486 --Bug# 4721141 : changed AND to OR
15487 (lv_scs_code = 'QUOTE') OR
15488 --Bug# 5098124 : Added 'OKL_QUOTE'
15489 (l_orig_system_source_code = 'OKL_LEASE_APP') OR
15490 (l_orig_system_source_code = 'OKL_QUOTE') THEN
15491 x_return_status := generate_asset_number(x_asset_number => l_asset_number);
15492 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15493 OKL_API.set_message(p_app_name => G_APP_NAME,
15494 p_msg_name => G_GEN_ASSET_NUMBER);
15495 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15496 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15497 OKL_API.set_message(p_app_name => G_APP_NAME,
15498 p_msg_name => G_GEN_ASSET_NUMBER);
15499 RAISE OKL_API.G_EXCEPTION_ERROR;
15500 END IF;
15501 l_talv_fa_rec.asset_number := l_asset_number;
15502 ELSE
15503 --Bug# 4053845:
15504 --l_asset_number := p_asset_number;
15505 l_asset_number := UPPER(p_asset_number);
15506 END IF;
15507
15508 IF l_itiv_ib_tbl.COUNT > 0 THEN
15509 p := l_itiv_ib_tbl.FIRST;
15510 LOOP
15511 -- Check for Required Values
15512 x_return_status := check_required_values(p_item1 => l_cimv_model_rec.object1_id1,
15513 p_item2 => l_cimv_model_rec.object1_id2,
15514 p_ast_no => l_talv_fa_rec.asset_number,
15515 p_ast_desc => l_talv_fa_rec.description,
15516 p_cost => l_talv_fa_rec.original_cost,
15517 p_units => l_talv_fa_rec.current_units,
15518 p_ib_loc1 => l_itiv_ib_tbl(p).object_id1_new,
15519 p_ib_loc2 => l_itiv_ib_tbl(p).object_id2_new,
15520 p_fa_loc => l_talv_fa_rec.fa_location_id,
15521 p_refinance_amount => l_klev_fin_rec.refinance_amount,
15522 p_chr_id => l_clev_fin_rec.dnz_chr_id);
15523 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15524 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
15525 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15526 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
15527 END IF;
15528 EXIT WHEN (p = l_itiv_ib_tbl.LAST);
15529 p := l_itiv_ib_tbl.NEXT(p);
15530 END LOOP;
15531 END IF;
15532 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15533 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15534 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15535 RAISE OKL_API.G_EXCEPTION_ERROR;
15536 END IF;
15537 IF P_new_yn = 'Y' THEN
15538 ln_clev_model_price_unit := abs(l_talv_fa_rec.original_cost);
15539 ln_cimv_model_no_items := l_talv_fa_rec.current_units;
15540 ELSIF p_new_yn = 'N' THEN
15541 IF l_clev_model_rec.price_unit = OKL_API.G_MISS_NUM THEN
15542 l_clev_model_rec.price_unit := null;
15543 END IF;
15544 IF l_cimv_model_rec.number_of_items = OKL_API.G_MISS_NUM THEN
15545 l_cimv_model_rec.number_of_items := null;
15546 END IF;
15547 ln_clev_model_price_unit := abs(l_talv_fa_rec.original_cost);
15548 ln_cimv_model_no_items := l_talv_fa_rec.current_units;
15549 -- we need to modify the code, let it go a temp
15550 -- ln_clev_model_price_unit := nvl(l_clev_model_rec.price_unit,0);
15551 -- ln_cimv_model_no_items := nvl(l_cimv_model_rec.number_of_items,0);
15552 END IF;
15553 --Build the Top Line Record
15554 -- First get the Top line Style id
15555 -- 4414408 Assign the line style id directly
15556 /*
15557 x_return_status := get_lse_id(p_lty_code => G_FIN_LINE_LTY_CODE,
15558 x_lse_id => l_clev_fin_rec.lse_id);
15559 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15560 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15561 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15562 RAISE OKL_API.G_EXCEPTION_ERROR;
15563 END IF;
15564 */
15565 l_clev_fin_rec.lse_id := G_FIN_LINE_LTY_ID;
15566 l_clev_fin_rec.chr_id := l_clev_fin_rec.dnz_chr_id;
15567 l_clev_fin_rec.cle_id := null;
15568 -- l_clev_fin_rec.name := l_asset_number;
15569 --Bug# 4053845
15570 l_clev_fin_rec.name := upper(l_clev_fin_rec.name);
15571 l_clev_fin_rec.item_description := l_talv_fa_rec.description;
15572 l_clev_fin_rec.exception_yn := 'N';
15573 IF (l_clev_fin_rec.display_sequence IS NUll OR
15574 l_clev_fin_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
15575 l_clev_fin_rec.display_sequence := 1;
15576 END IF;
15577 -- To Check We Got the Valid info
15578 IF UPPER(p_new_yn) NOT IN ('Y','N') OR
15579 (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
15580 UPPER(p_new_yn) IS NULL) THEN
15581 OKL_API.set_message(p_app_name => G_APP_NAME,
15582 p_msg_name => G_INVALID_YN,
15583 p_token1 => G_COL_NAME_TOKEN,
15584 p_token1_value => 'p_new_yn');
15585 -- Halt Validation
15586 RAISE OKL_API.G_EXCEPTION_ERROR;
15587 END IF;
15588 -- 4414408 Validate the Asset Number
15589 -- Validate to see if the asset_number given is not null
15590 -- and also Validate asset_number does not exists
15591 -- in OKL_TXL_ASSETS_V
15592 IF UPPER(p_new_yn) = 'Y' THEN
15593 validate_new_asset_number(x_return_status => x_return_status,
15594 p_asset_number => l_asset_number,
15595 p_dnz_chr_id => l_clev_fin_rec.dnz_chr_id);
15596 -- Check if activity started successfully
15597 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15598 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15599 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15600 RAISE OKL_API.G_EXCEPTION_ERROR;
15601 END IF;
15602 ELSE
15603 validate_new_asset_number(x_return_status => x_return_status,
15604 p_asset_number => l_asset_number,
15605 p_dnz_chr_id => l_clev_fin_rec.dnz_chr_id);
15606 -- Check if activity ended successfully
15607 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15608 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15609 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15610 RAISE OKL_API.G_EXCEPTION_ERROR;
15611 END IF;
15612 END IF;
15613
15614 -- Creation of the Financial Asset Line
15615 create_fin_line(p_api_version => p_api_version,
15616 p_init_msg_list => p_init_msg_list,
15617 x_return_status => x_return_status,
15618 x_msg_count => x_msg_count,
15619 x_msg_data => x_msg_data,
15620 P_new_yn => P_new_yn,
15621 p_asset_number => l_asset_number,
15622 p_clev_rec => l_clev_fin_rec,
15623 p_klev_rec => l_klev_fin_rec,
15624 x_clev_rec => x_clev_fin_rec,
15625 x_klev_rec => l_klev_fin_rec_out);
15626 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15627 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15628 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15629 RAISE OKL_API.G_EXCEPTION_ERROR;
15630 END IF;
15631
15632 -- added by rravikir (Estimated property tax)
15633 ln_chr_id := x_clev_fin_rec.dnz_chr_id;
15634 ln_cle_id := x_clev_fin_rec.id;
15635 -- end
15636
15637 -- We have to Populate the Model Line Record
15638 -- First get the Model line Style id
15639 -- 4414408 Assign the line style id directly
15640 /*
15641 x_return_status := get_lse_id(p_lty_code => G_MODEL_LINE_LTY_CODE,
15642 x_lse_id => l_clev_model_rec.lse_id);
15643 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15644 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15645 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15646 RAISE OKL_API.G_EXCEPTION_ERROR;
15647 END IF;
15648 */
15649 IF (l_clev_model_rec.display_sequence IS NUll OR
15650 l_clev_model_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
15651 l_clev_model_rec.display_sequence := x_clev_fin_rec.display_sequence + 1;
15652 END IF;
15653 l_clev_model_rec.lse_id := G_MODEL_LINE_LTY_ID;
15654 l_clev_model_rec.chr_id := null;
15655 l_clev_model_rec.cle_id := x_clev_fin_rec.id;
15656 l_clev_model_rec.exception_yn := 'N';
15657 l_clev_model_rec.price_unit := ln_clev_model_price_unit;
15658 l_clev_model_rec.dnz_chr_id := x_clev_fin_rec.dnz_chr_id;
15659 --Build Model cimv rec
15660 l_cimv_model_rec.exception_yn := 'N';
15661 l_cimv_model_rec.number_of_items := ln_cimv_model_no_items;
15662 -- Creation of the Model Line and Item Record
15663 create_model_line(p_api_version => p_api_version,
15664 p_init_msg_list => p_init_msg_list,
15665 x_return_status => x_return_status,
15666 x_msg_count => x_msg_count,
15667 x_msg_data => x_msg_data,
15668 P_new_yn => P_new_yn,
15669 p_asset_number => l_asset_number,
15670 p_clev_rec => l_clev_model_rec,
15671 p_klev_rec => l_klev_model_rec,
15672 p_cimv_rec => l_cimv_model_rec,
15673 x_clev_rec => x_clev_model_rec,
15674 x_klev_rec => l_klev_model_rec_out,
15675 x_cimv_rec => l_cimv_model_rec_out);
15676 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15677 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15678 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15679 RAISE OKL_API.G_EXCEPTION_ERROR;
15680 END IF;
15681 -- Calculate the OEC to Populate the OKL_K_LINES_V.OEC
15682 oec_calc_upd_fin_rec(p_api_version => p_api_version,
15683 p_init_msg_list => p_init_msg_list,
15684 x_return_status => x_return_status,
15685 x_msg_count => x_msg_count,
15686 x_msg_data => x_msg_data,
15687 P_new_yn => P_new_yn,
15688 p_asset_number => l_asset_number,
15689 -- 4414408
15690 p_top_line_id => x_clev_model_rec.cle_id,
15691 p_dnz_chr_id => x_clev_model_rec.dnz_chr_id,
15692 x_fin_clev_rec => x_clev_fin_rec,
15693 x_fin_klev_rec => l_klev_fin_rec_out,
15694 x_oec => ln_klev_fin_oec,
15695 p_validate_fin_line => OKL_API.G_FALSE);
15696 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15697 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15698 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15699 RAISE OKL_API.G_EXCEPTION_ERROR;
15700 END IF;
15701 -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
15702 cap_amt_calc_upd_fin_rec(p_api_version => p_api_version,
15703 p_init_msg_list => p_init_msg_list,
15704 x_return_status => x_return_status,
15705 x_msg_count => x_msg_count,
15706 x_msg_data => x_msg_data,
15707 P_new_yn => P_new_yn,
15708 p_asset_number => l_asset_number,
15709 -- 4414408
15710 p_top_line_id => x_clev_model_rec.cle_id,
15711 p_dnz_chr_id => x_clev_model_rec.dnz_chr_id,
15712 x_fin_clev_rec => x_clev_fin_rec,
15713 x_fin_klev_rec => l_klev_fin_rec_out,
15714 x_cap_amt => ln_klev_fin_cap,
15715 p_validate_fin_line => OKL_API.G_FALSE);
15716 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15717 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15718 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15719 RAISE OKL_API.G_EXCEPTION_ERROR;
15720 END IF;
15721 -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
15722 -- We need to Back calculate the Residual Percentage if value not given
15723 -- or if given should be in sync with residual value
15724
15725 IF l_klev_fin_rec_out.residual_percentage = OKL_API.G_MISS_NUM THEN
15726 l_klev_fin_rec_out.residual_percentage := null;
15727 END IF;
15728
15729 IF l_klev_fin_rec_out.residual_value = OKL_API.G_MISS_NUM THEN
15730 l_klev_fin_rec_out.residual_value := null;
15731 END IF;
15732
15733 IF (l_klev_fin_rec_out.residual_percentage IS NOT NULL OR
15734 l_klev_fin_rec_out.residual_percentage <> OKL_API.G_MISS_NUM) AND
15735 (l_klev_fin_rec_out.residual_value IS NOT NULL OR
15736 l_klev_fin_rec_out.residual_value <> OKL_API.G_MISS_NUM) THEN
15737
15738 l_top_line_id := x_clev_fin_rec.id;
15739 l_oec := l_klev_fin_rec_out.oec;
15740 l_residual_value := l_klev_fin_rec_out.residual_value;
15741
15742 get_res_per_upd_fin_rec(p_api_version => p_api_version,
15743 p_init_msg_list => p_init_msg_list,
15744 x_return_status => x_return_status,
15745 x_msg_count => x_msg_count,
15746 x_msg_data => x_msg_data,
15747 P_new_yn => P_new_yn,
15748 p_asset_number => l_asset_number,
15749 p_res_value => l_residual_value, --l_klev_fin_rec_out.residual_value
15750 p_oec => l_oec, --l_klev_fin_rec_out.oec
15751 p_top_line_id => l_top_line_id, --x_clev_fin_rec.id,
15752 p_dnz_chr_id => x_clev_model_rec.dnz_chr_id,
15753 x_fin_clev_rec => x_clev_fin_rec,
15754 x_fin_klev_rec => l_klev_fin_rec_out,
15755 p_validate_fin_line => OKL_API.G_FALSE); -- #4414408
15756 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15757 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15758 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15759 RAISE OKL_API.G_EXCEPTION_ERROR;
15760 END IF;
15761 res_value_calc_upd_fin_rec(p_api_version => p_api_version,
15762 p_init_msg_list => p_init_msg_list,
15763 x_return_status => x_return_status,
15764 x_msg_count => x_msg_count,
15765 x_msg_data => x_msg_data,
15766 P_new_yn => P_new_yn,
15767 p_asset_number => l_asset_number,
15768 -- 4414408
15769 p_top_line_id => l_top_line_id,
15770 p_dnz_chr_id => x_clev_model_rec.dnz_chr_id,
15771 x_fin_clev_rec => x_clev_fin_rec,
15772 x_fin_klev_rec => l_klev_fin_rec_out,
15773 x_res_value => ln_klev_fin_res,
15774 p_validate_fin_line => OKL_API.G_FALSE); -- #4414408
15775 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15776 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15777 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15778 RAISE OKL_API.G_EXCEPTION_ERROR;
15779 END IF;
15780 ELSIF (l_klev_fin_rec_out.residual_percentage IS NULL OR
15781 l_klev_fin_rec_out.residual_percentage = OKL_API.G_MISS_NUM) AND
15782 (l_klev_fin_rec_out.residual_value IS NOT NULL OR
15783 l_klev_fin_rec_out.residual_value <> OKL_API.G_MISS_NUM) THEN
15784
15785 l_top_line_id := x_clev_fin_rec.id;
15786 l_oec := l_klev_fin_rec_out.oec;
15787 l_residual_value := l_klev_fin_rec_out.residual_value;
15788
15789 get_res_per_upd_fin_rec(p_api_version => p_api_version,
15790 p_init_msg_list => p_init_msg_list,
15791 x_return_status => x_return_status,
15792 x_msg_count => x_msg_count,
15793 x_msg_data => x_msg_data,
15794 P_new_yn => P_new_yn,
15795 p_asset_number => l_asset_number,
15796 p_res_value => l_residual_value, --l_klev_fin_rec_out.residual_value
15797 p_oec => l_oec, --l_klev_fin_rec_out.oec
15798 p_top_line_id => l_top_line_id, --x_clev_fin_rec.id,
15799 p_dnz_chr_id => x_clev_model_rec.dnz_chr_id,
15800 x_fin_clev_rec => x_clev_fin_rec,
15801 x_fin_klev_rec => l_klev_fin_rec_out,
15802 p_validate_fin_line => OKL_API.G_FALSE); -- #4414408
15803 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15804 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15805 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15806 RAISE OKL_API.G_EXCEPTION_ERROR;
15807 END IF;
15808 ELSIF (l_klev_fin_rec_out.residual_percentage IS NOT NULL OR
15809 l_klev_fin_rec_out.residual_percentage <> OKL_API.G_MISS_NUM) AND
15810 (l_klev_fin_rec_out.residual_value IS NULL OR
15811 l_klev_fin_rec_out.residual_value = OKL_API.G_MISS_NUM) THEN
15812 res_value_calc_upd_fin_rec(p_api_version => p_api_version,
15813 p_init_msg_list => p_init_msg_list,
15814 x_return_status => x_return_status,
15815 x_msg_count => x_msg_count,
15816 x_msg_data => x_msg_data,
15817 P_new_yn => P_new_yn,
15818 p_asset_number => l_asset_number,
15819 -- 4414408
15820 p_top_line_id => x_clev_model_rec.cle_id,
15821 p_dnz_chr_id => x_clev_model_rec.dnz_chr_id,
15822 x_fin_clev_rec => x_clev_fin_rec,
15823 x_fin_klev_rec => l_klev_fin_rec_out,
15824 x_res_value => ln_klev_fin_res,
15825 p_validate_fin_line => OKL_API.G_FALSE); -- #4414408
15826 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15827 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15828 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15829 RAISE OKL_API.G_EXCEPTION_ERROR;
15830 END IF;
15831 END IF;
15832 IF (l_klev_fin_rec_out.oec IS NOT NULL OR
15833 l_klev_fin_rec_out.oec <> OKL_API.G_MISS_NUM) AND
15834 (l_klev_fin_rec_out.residual_value IS NOT NULL OR
15835 l_klev_fin_rec_out.residual_value <> OKL_API.G_MISS_NUM) THEN
15836 IF l_klev_fin_rec_out.residual_value > l_klev_fin_rec_out.oec THEN
15837 OKL_API.set_message(p_app_name => G_APP_NAME,
15838 p_msg_name => G_SALVAGE_VALUE);
15839 RAISE OKL_API.G_EXCEPTION_ERROR;
15840 END IF;
15841 END IF;
15842 -- Required cle Line Information
15843 -- Creation of the Fixed Asset Line Process
15844 -- Getting the Line style Info
15845 -- 4414408 Assign the line style ID directly
15846 /*
15847 x_return_status := get_lse_id(p_lty_code => G_FA_LINE_LTY_CODE,
15848 x_lse_id => l_clev_fa_rec.lse_id);
15849 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15850 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15851 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15852 RAISE OKL_API.G_EXCEPTION_ERROR;
15853 END IF;
15854 */
15855 IF (l_clev_fa_rec.display_sequence IS NUll OR
15856 l_clev_fa_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
15857 l_clev_fa_rec.display_sequence := x_clev_model_rec.display_sequence + 2;
15858 END IF;
15859 l_clev_fa_rec.lse_id := G_FA_LINE_LTY_ID;
15860 l_clev_fa_rec.chr_id := null;
15861 l_clev_fa_rec.cle_id := x_clev_fin_rec.id;
15862 l_clev_fa_rec.dnz_chr_id := x_clev_fin_rec.dnz_chr_id;
15863 l_clev_fa_rec.exception_yn := 'N';
15864 l_clev_fa_rec.price_unit := ln_clev_model_price_unit;
15865 l_clev_fa_rec.item_description := l_talv_fa_rec.description;
15866 --Bug# 4053845
15867 l_clev_fa_rec.name := upper(l_clev_fa_rec.name);
15868 -- A Bug fix Since we populate the year manufactured into OKL_TXL_ASSETS_B only
15869 -- We cannot use the information after the assets have been put into FA
15870 -- So we decided to populate the year Manufactured into OKL_K_LINES.YEAR_BUILT
15871 -- As the Datatype matches for both.
15872 l_klev_fa_rec.Year_Built := l_talv_fa_rec.year_manufactured;
15873 --start NISINHA Bug 6490572
15874 l_klev_fa_rec.model_number := l_talv_fa_rec.model_number;
15875 l_klev_fa_rec.manufacturer_name := l_talv_fa_rec.manufacturer_name;
15876 --end NISINHA Bug 6490572
15877 -- Required Item Information
15878 l_cimv_fa_rec.exception_yn := 'N';
15879 IF p_new_yn = 'Y' THEN
15880 l_cimv_fa_rec.object1_id1 := null;
15881 l_cimv_fa_rec.object1_id2 := null;
15882 ELSIF p_new_yn = 'N' THEN
15883 l_cimv_fa_rec.object1_id2 := '#';
15884 END IF;
15885 l_cimv_fa_rec.number_of_items := ln_cimv_model_no_items;
15886 -- Txl Asset Information
15887 IF (l_talv_fa_rec.asset_number IS NULL OR
15888 l_talv_fa_rec.asset_number = OKL_API.G_MISS_CHAR) THEN
15889 l_talv_fa_rec.asset_number := l_asset_number;
15890 --bug# 4053845
15891 ELSE
15892 l_talv_fa_rec.asset_number := UPPER(l_talv_fa_rec.asset_number);
15893 END IF;
15894 IF P_new_yn= 'Y' THEN
15895 --fix for #3481999
15896 IF ( l_talv_fa_rec.depreciation_cost IS NULL OR
15897 l_talv_fa_rec.depreciation_cost = OKL_API.G_MISS_NUM ) THEN
15898 l_talv_fa_rec.depreciation_cost := l_klev_fin_rec_out.oec;
15899 END IF;
15900
15901 l_talv_fa_rec.original_cost := l_klev_fin_rec_out.oec;
15902 l_talv_fa_rec.tal_type := 'CFA';
15903 --------------
15904 --Bug# 4082635
15905 -------------
15906 --| start 29-Oct-2008 cklee Bug: 7492324 move code logic to |
15907 --| OKL_TXL_ASSETS_PVT.CREATE_TXL_ASSET_DEF |
15908
15909 /*
15910 If nvl(l_talv_fa_rec.salvage_value,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM AND
15911 nvl(l_talv_fa_rec.percent_salvage_value, OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM then
15912 --Bug# 4186455 : Do not populate salvage value for Loan and loan revolving deal types
15913 for l_deal_type_rec in l_deal_type_csr(p_chr_id => l_clev_fin_rec.dnz_chr_id)
15914 loop
15915 If l_deal_type_rec.deal_type = 'LOAN' then
15916 If nvl(l_deal_type_rec.reporting_pdt_id,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
15917 for l_pdt_deal_rec in l_pdt_deal_csr(p_pdt_id => l_deal_type_rec.reporting_pdt_id)
15918 loop
15919 If l_pdt_deal_rec.deal_type = 'LEASEOP' then -- reporting pdt is operating lease
15920 l_talv_fa_rec.salvage_value := nvl(l_klev_fin_rec_out.residual_value,0);
15921
15922 End If;
15923 End loop;
15924 End If;
15925 Elsif l_deal_type_rec.deal_type = 'LOAN-REVOLVING' then
15926 null;
15927 Else -- for LEASEOP, LEASEDF, LEASEST
15928 l_talv_fa_rec.salvage_value := nvl(l_klev_fin_rec_out.residual_value,0);
15929 End If;
15930 End Loop;
15931 End If;*/
15932 --| end 29-Oct-2008 cklee Bug: 7492324 move code logic to |
15933 --| OKL_TXL_ASSETS_PVT.CREATE_TXL_ASSET_DEF |
15934 ------------------
15935 --End Bug# 4082635
15936 ------------------
15937 ELSIF p_new_yn = 'N' THEN
15938 l_talv_fa_rec.depreciation_cost := l_klev_fin_rec_out.oec;
15939 l_talv_fa_rec.original_cost := l_klev_fin_rec_out.oec;
15940 l_talv_fa_rec.tal_type := 'CRL';
15941 END IF;
15942 -- Creation of the Fixed Asset Line and item/Txl Asset Info
15943 Create_fixed_asset_line(p_api_version => p_api_version,
15944 p_init_msg_list => p_init_msg_list,
15945 x_return_status => x_return_status,
15946 x_msg_count => x_msg_count,
15947 x_msg_data => x_msg_data,
15948 P_new_yn => P_new_yn,
15949 p_asset_number => l_asset_number,
15950 p_clev_rec => l_clev_fa_rec,
15951 p_klev_rec => l_klev_fa_rec,
15952 p_cimv_rec => l_cimv_fa_rec,
15953 p_talv_rec => l_talv_fa_rec,
15954 x_clev_rec => x_clev_fa_rec,
15955 x_klev_rec => l_klev_fa_rec_out,
15956 x_cimv_rec => l_cimv_fa_rec_out,
15957 x_trxv_rec => l_trxv_fa_rec_out,
15958 x_talv_rec => l_talv_fa_rec_out);
15959 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15960 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15961 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15962 RAISE OKL_API.G_EXCEPTION_ERROR;
15963 END IF;
15964 IF p_new_yn = 'N' THEN
15965 FOR r_ib_sno_asset IN c_ib_sno_asset(l_talv_fa_rec_out.asset_number) LOOP
15966 r_itiv_ib_tbl(k).serial_number := r_ib_sno_asset.ib_serial_number;
15967 IF r_ib_sno_asset.ib_serial_number IS NULL OR
15968 r_ib_sno_asset.ib_serial_number = OKL_API.G_MISS_CHAR THEN
15969 r_itiv_ib_tbl(k).mfg_serial_number_yn := 'N';
15970 ELSE
15971 r_itiv_ib_tbl(k).mfg_serial_number_yn := 'Y';
15972 END IF;
15973 r_itiv_ib_tbl(k).dnz_cle_id := x_clev_fa_rec.cle_id;
15974 IF l_itiv_ib_tbl.COUNT > 0 THEN
15975 m := l_itiv_ib_tbl.FIRST;
15976 LOOP
15977 r_itiv_ib_tbl(k).object_id1_new := l_itiv_ib_tbl(m).object_id1_new;
15978 EXIT WHEN (m = l_itiv_ib_tbl.LAST);
15979 m := l_itiv_ib_tbl.NEXT(m);
15980 END LOOP;
15981 END IF;
15982 lt_instance_id_tbl(k) := r_ib_sno_asset.instance_id;
15983 k := k + 1;
15984 END LOOP;
15985 l_itiv_ib_tbl := r_itiv_ib_tbl;
15986 IF l_itiv_ib_tbl.COUNT > 0 THEN
15987 ln_dummy1 := l_itiv_ib_tbl.COUNT;
15988 -- We have intialize the J , since there could be any index integer
15989 j := l_itiv_ib_tbl.FIRST;
15990 LOOP
15991 IF (l_itiv_ib_tbl(j).mfg_serial_number_yn IS NULL OR
15992 l_itiv_ib_tbl(j).mfg_serial_number_yn = OKL_API.G_MISS_CHAR) THEN
15993 x_return_status := OKL_API.G_RET_STS_ERROR;
15994 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
15995 ELSIF l_itiv_ib_tbl(j).mfg_serial_number_yn = 'Y' THEN
15996 IF ln_dummy1 <> ln_cimv_model_no_items THEN
15997 OKL_API.set_message(p_app_name => G_APP_NAME,
15998 p_msg_name => G_CNT_REC);
15999 RAISE OKL_API.G_EXCEPTION_ERROR;
16000 END IF;
16001 ln_dummy := ln_cimv_model_no_items;
16002 ELSIF l_itiv_ib_tbl(j).mfg_serial_number_yn = 'N' THEN
16003 ln_dummy := 1;
16004 END IF;
16005 EXIT WHEN (j = l_itiv_ib_tbl.LAST);
16006 j := l_itiv_ib_tbl.NEXT(j);
16007 END LOOP;
16008 ELSE
16009 OKL_API.set_message(p_app_name => G_APP_NAME,
16010 p_msg_name => G_CNT_REC);
16011 RAISE OKL_API.G_EXCEPTION_ERROR;
16012 END IF;
16013 ELSIF p_new_yn = 'Y' THEN
16014 -- We have to make sure the count of the itiv_tbl
16015 -- should be equal to qty of items
16016 -- Since inst tbl and ib inst are same
16017 -- it is Good enough to do one
16018 IF l_itiv_ib_tbl.COUNT > 0 THEN
16019 ln_dummy1 := l_itiv_ib_tbl.COUNT;
16020 -- We have intialize the J , since there could be any index integer
16021 j := l_itiv_ib_tbl.FIRST;
16022 LOOP
16023
16024 l_itiv_ib_tbl(j).dnz_cle_id := x_clev_fa_rec.cle_id; -- For importing Serial Item fix
16025
16026 IF (l_itiv_ib_tbl(j).mfg_serial_number_yn IS NULL OR
16027 l_itiv_ib_tbl(j).mfg_serial_number_yn = OKL_API.G_MISS_CHAR) THEN
16028 x_return_status := OKL_API.G_RET_STS_ERROR;
16029 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
16030 ELSIF l_itiv_ib_tbl(j).mfg_serial_number_yn = 'Y' THEN
16031 IF ln_dummy1 <> ln_cimv_model_no_items THEN
16032 OKL_API.set_message(p_app_name => G_APP_NAME,
16033 p_msg_name => G_CNT_REC);
16034 RAISE OKL_API.G_EXCEPTION_ERROR;
16035 END IF;
16036 ln_dummy := ln_cimv_model_no_items;
16037 ELSIF l_itiv_ib_tbl(j).mfg_serial_number_yn = 'N' THEN
16038 ln_dummy := 1;
16039 END IF;
16040 EXIT WHEN (j = l_itiv_ib_tbl.LAST);
16041 j := l_itiv_ib_tbl.NEXT(j);
16042 END LOOP;
16043 ELSE
16044 OKL_API.set_message(p_app_name => G_APP_NAME,
16045 p_msg_name => G_CNT_REC);
16046 RAISE OKL_API.G_EXCEPTION_ERROR;
16047 END IF;
16048 END IF;
16049 -- Since we have to create the instance
16050 -- Depending of the qty in l_cimv_model_rec.number_of_items
16051 -- we have use loop
16052 j := l_itiv_ib_tbl.FIRST;
16053 FOR i IN 1..ln_dummy LOOP
16054 IF (l_itiv_ib_tbl(j).instance_number_ib IS NULL OR
16055 l_itiv_ib_tbl(j).instance_number_ib = OKL_API.G_MISS_CHAR) THEN
16056 x_return_status := generate_instance_number_ib(x_instance_number_ib => l_itiv_ib_tbl(j).instance_number_ib);
16057 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16058 OKL_API.set_message(p_app_name => G_APP_NAME,
16059 p_msg_name => G_GEN_INST_NUM_IB);
16060 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16061 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16062 OKL_API.set_message(p_app_name => G_APP_NAME,
16063 p_msg_name => G_GEN_INST_NUM_IB);
16064 RAISE OKL_API.G_EXCEPTION_ERROR;
16065 END IF;
16066 l_itiv_ib_tbl(j).instance_number_ib := l_asset_number||' '||l_itiv_ib_tbl(j).instance_number_ib;
16067 l_itiv_inst_tbl(j).instance_number_ib := l_itiv_ib_tbl(j).instance_number_ib;
16068 END IF;
16069 -- Creation of the Instance Line Process
16070 -- Getting the Line style Info
16071 -- 4414408 Assign the line style ID directly
16072 /*
16073 x_return_status := get_lse_id(p_lty_code => G_INST_LINE_LTY_CODE,
16074 x_lse_id => l_clev_inst_rec.lse_id);
16075 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16076 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
16077 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16078 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
16079 END IF;
16080 */
16081 IF (l_clev_inst_rec.display_sequence IS NUll OR
16082 l_clev_inst_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
16083 l_clev_inst_rec.display_sequence := x_clev_fa_rec.display_sequence + 3;
16084 END IF;
16085 -- Required cle Line Information
16086 l_clev_inst_rec.lse_id := G_INST_LINE_LTY_ID;
16087 l_clev_inst_rec.chr_id := null;
16088 l_clev_inst_rec.cle_id := x_clev_fin_rec.id;
16089 l_clev_inst_rec.dnz_chr_id := x_clev_fin_rec.dnz_chr_id;
16090 l_clev_inst_rec.exception_yn := 'N';
16091 -- Creation of the Instance Line
16092 Create_instance_line(p_api_version => p_api_version,
16093 p_init_msg_list => p_init_msg_list,
16094 x_return_status => x_return_status,
16095 x_msg_count => x_msg_count,
16096 x_msg_data => x_msg_data,
16097 p_clev_rec => l_clev_inst_rec,
16098 p_klev_rec => l_klev_inst_rec,
16099 p_itiv_rec => l_itiv_inst_tbl(j),
16100 x_clev_rec => l_clev_inst_rec_out,
16101 x_klev_rec => l_klev_inst_rec_out,
16102 x_itiv_rec => l_itiv_inst_tbl_out(j));
16103 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16104 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
16105 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16106 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
16107 END IF;
16108 -- Creation of the ib Line Process
16109 -- Getting the Line style Info
16110 -- 4414408 Assign the IB line style ID directly
16111 /*
16112 x_return_status := get_lse_id(p_lty_code => G_IB_LINE_LTY_CODE,
16113 x_lse_id => l_clev_ib_rec.lse_id);
16114 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16115 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
16116 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16117 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
16118 END IF;
16119 */
16120 IF (l_clev_ib_rec.display_sequence IS NUll OR
16121 l_clev_ib_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
16122 l_clev_ib_rec.display_sequence := l_clev_inst_rec_out.display_sequence + 4;
16123 END IF;
16124 -- Required cle Line Information
16125 l_clev_ib_rec.lse_id := G_IB_LINE_LTY_ID;
16126 l_clev_ib_rec.chr_id := null;
16127 l_clev_ib_rec.cle_id := l_clev_inst_rec_out.id;
16128 l_clev_ib_rec.dnz_chr_id := x_clev_fin_rec.dnz_chr_id;
16129 l_clev_ib_rec.exception_yn := 'N';
16130 -- Required Item Information
16131 l_cimv_ib_rec.exception_yn := 'N';
16132 l_cimv_ib_rec.object1_id1 := null;
16133 l_cimv_ib_rec.object1_id2 := null;
16134 -- Since the screen can give only party_site_id via l_itiv_tbl(j).object_id1_new
16135 -- We have to use the below function
16136 lv_object_id1_new := l_itiv_ib_tbl(j).object_id1_new;
16137 x_return_status := get_party_site_id(p_object_id1_new => lv_object_id1_new,
16138 x_object_id1_new => l_itiv_ib_tbl(j).object_id1_new,
16139 x_object_id2_new => l_itiv_ib_tbl(j).object_id2_new);
16140 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16141 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
16142 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16143 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
16144 END IF;
16145 IF P_new_yn= 'Y' THEN
16146 l_itiv_ib_tbl(j).tal_type := 'CFA';
16147 ELSIF p_new_yn = 'N' THEN
16148 l_itiv_ib_tbl(j).tal_type := 'CRL';
16149 m := lt_instance_id_tbl.FIRST;
16150 l_cimv_ib_rec.object1_id1 := lt_instance_id_tbl(m);
16151 l_cimv_ib_rec.object1_id2 := '#';
16152 END IF;
16153 -- Creation of the ib Line
16154 Create_instance_ib_line(p_api_version => p_api_version,
16155 p_init_msg_list => p_init_msg_list,
16156 x_return_status => x_return_status,
16157 x_msg_count => x_msg_count,
16158 x_msg_data => x_msg_data,
16159 p_clev_rec => l_clev_ib_rec,
16160 p_klev_rec => l_klev_ib_rec,
16161 p_cimv_rec => l_cimv_ib_rec,
16162 p_itiv_rec => l_itiv_ib_tbl(j),
16163 x_clev_rec => x_clev_ib_rec,
16164 x_klev_rec => l_klev_ib_rec_out,
16165 x_cimv_rec => l_cimv_ib_rec_out,
16166 x_trxv_rec => l_trxv_ib_rec_out,
16167 x_itiv_rec => l_itiv_ib_tbl_out(j));
16168 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16169 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
16170 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16171 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
16172 END IF;
16173 EXIT WHEN (j = l_itiv_inst_tbl.LAST);
16174 j := l_itiv_inst_tbl.NEXT(j);
16175 m := m + 1;
16176 END LOOP;
16177 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16178 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16179 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16180 RAISE OKL_API.G_EXCEPTION_ERROR;
16181 END IF;
16182 END IF; --release asset --Bug# 3533936
16183
16184 -- Added by rravikir (Estimated property tax) -- Bug 3947959
16185 -- Property tax rules are not created for Quotes, they are taken care in the
16186 -- respective API.
16187 IF (lv_scs_code IS NOT NULL AND lv_scs_code <> 'QUOTE') THEN
16188 OKL_LA_PROPERTY_TAX_PVT.create_est_prop_tax_rules(
16189 p_api_version => p_api_version,
16190 p_init_msg_list => p_init_msg_list,
16191 x_return_status => x_return_status,
16192 x_msg_count => x_msg_count,
16193 x_msg_data => x_msg_data,
16194 p_chr_id => ln_chr_id,
16195 p_cle_id => ln_cle_id);
16196 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16197 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16198 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16199 RAISE OKL_API.G_EXCEPTION_ERROR;
16200 END IF;
16201 --Bug#4658856 ramurt
16202 OKL_LA_SALES_TAX_PVT.create_sales_tax_rules(
16203 p_api_version => p_api_version,
16204 p_init_msg_list => p_init_msg_list,
16205 x_return_status => x_return_status,
16206 x_msg_count => x_msg_count,
16207 x_msg_data => x_msg_data,
16208 p_chr_id => ln_chr_id,
16209 p_cle_id => ln_cle_id);
16210
16211 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16212 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16213 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16214 RAISE OKL_API.G_EXCEPTION_ERROR;
16215 END IF;
16216 END IF;
16217 -- end
16218
16219 OKL_API.END_ACTIVITY (x_msg_count,
16220 x_msg_data );
16221 EXCEPTION
16222 WHEN OKL_API.G_EXCEPTION_ERROR THEN
16223 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
16224 l_api_name,
16225 G_PKG_NAME,
16226 'OKL_API.G_RET_STS_ERROR',
16227 x_msg_count,
16228 x_msg_data,
16229 '_PVT');
16230 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
16231 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
16232 l_api_name,
16233 G_PKG_NAME,
16234 'OKL_API.G_RET_STS_UNEXP_ERROR',
16235 x_msg_count,
16236 x_msg_data,
16237 '_PVT');
16238 WHEN OTHERS THEN
16239 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
16240 l_api_name,
16241 G_PKG_NAME,
16242 'OTHERS',
16243 x_msg_count,
16244 x_msg_data,
16245 '_PVT');
16246 END Create_all_line;
16247 -----------------------------------------------------------------------------------------------
16248 --------------------- Main Process for All Lines Line Updating---------------------------------
16249 -----------------------------------------------------------------------------------------------
16250 PROCEDURE Update_all_line(
16251 p_api_version IN NUMBER,
16252 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
16253 x_return_status OUT NOCOPY VARCHAR2,
16254 x_msg_count OUT NOCOPY NUMBER,
16255 x_msg_data OUT NOCOPY VARCHAR2,
16256 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
16257 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
16258 p_clev_fin_rec IN clev_rec_type,
16259 p_klev_fin_rec IN klev_rec_type,
16260 p_clev_model_rec IN clev_rec_type,
16261 p_cimv_model_rec IN cimv_rec_type,
16262 p_clev_fa_rec IN clev_rec_type,
16263 p_cimv_fa_rec IN cimv_rec_type,
16264 p_talv_fa_rec IN talv_rec_type,
16265 p_clev_ib_rec IN clev_rec_type,
16266 p_itiv_ib_rec IN itiv_rec_type,
16267 x_clev_fin_rec OUT NOCOPY clev_rec_type,
16268 x_clev_model_rec OUT NOCOPY clev_rec_type,
16269 x_clev_fa_rec OUT NOCOPY clev_rec_type,
16270 x_clev_ib_rec OUT NOCOPY clev_rec_type) IS
16271 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_ALL_LINES';
16272 l_clev_fin_rec clev_rec_type;
16273 l_klev_fin_rec klev_rec_type;
16274 l_clev_fin_rec_out clev_rec_type;
16275 l_klev_fin_rec_out klev_rec_type;
16276 l_clev_model_rec clev_rec_type;
16277 l_klev_model_rec klev_rec_type;
16278 l_cimv_model_rec cimv_rec_type;
16279 l_clev_model_rec_out clev_rec_type;
16280 l_klev_model_rec_out klev_rec_type;
16281 l_cimv_model_rec_out cimv_rec_type;
16282 l_clev_fa_rec clev_rec_type;
16283 l_klev_fa_rec klev_rec_type;
16284 l_cimv_fa_rec cimv_rec_type;
16285 l_trxv_fa_rec trxv_rec_type;
16286 l_talv_fa_rec talv_rec_type;
16287 l_clev_fa_rec_out clev_rec_type;
16288 l_klev_fa_rec_out klev_rec_type;
16289 l_cimv_fa_rec_out cimv_rec_type;
16290 l_trxv_fa_rec_out trxv_rec_type;
16291 l_talv_fa_rec_out talv_rec_type;
16292 l_clev_inst_rec clev_rec_type;
16293 l_klev_inst_rec klev_rec_type;
16294 l_itiv_inst_rec itiv_rec_type;
16295 l_clev_inst_rec_out clev_rec_type;
16296 l_klev_inst_rec_out klev_rec_type;
16297 l_itiv_inst_rec_out itiv_rec_type;
16298 l_clev_ib_rec clev_rec_type;
16299 l_klev_ib_rec klev_rec_type;
16300 l_cimv_ib_rec cimv_rec_type;
16301 l_trxv_ib_rec trxv_rec_type;
16302 l_itiv_ib_rec itiv_rec_type;
16303 l_clev_ib_rec_out clev_rec_type;
16304 l_klev_ib_rec_out klev_rec_type;
16305 l_cimv_ib_rec_out cimv_rec_type;
16306 l_trxv_ib_rec_out trxv_rec_type;
16307 l_itiv_ib_rec_out itiv_rec_type;
16308 n_itiv_ib_rec itiv_rec_type;
16309 nx_itiv_ib_rec itiv_rec_type;
16310
16311 r_clev_fin_rec clev_rec_type;
16312 r_klev_fin_rec klev_rec_type;
16313 r_clev_model_rec clev_rec_type;
16314 r_klev_model_rec klev_rec_type;
16315 r_cimv_model_rec cimv_rec_type;
16316 r_clev_fa_rec clev_rec_type;
16317 r_klev_fa_rec klev_rec_type;
16318 r_cimv_fa_rec cimv_rec_type;
16319 r_talv_fa_rec talv_rec_type;
16320 r_clev_inst_rec clev_rec_type;
16321 r_klev_inst_rec klev_rec_type;
16322 r_itiv_inst_rec itiv_rec_type;
16323 r_clev_ib_rec clev_rec_type;
16324 r_klev_ib_rec klev_rec_type;
16325 r_cimv_ib_rec cimv_rec_type;
16326 r_itiv_ib_rec itiv_rec_type;
16327 ln_addon_oec OKL_K_LINES_V.OEC%TYPE := 0;
16328 ln_klev_fin_oec OKL_K_LINES_V.OEC%TYPE := 0;
16329 ln_klev_fin_res OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
16330 ln_klev_fin_cap OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
16331 ln_clev_model_price_unit OKC_K_LINES_V.PRICE_UNIT%TYPE := 0;
16332 ln_cimv_model_no_items OKC_K_ITEMS_V.NUMBER_OF_ITEMS%TYPE := 0;
16333 lv_object_id1_new OKL_TXL_ITM_INSTS_V.OBJECT_ID1_NEW%TYPE;
16334 lv_model_object_id1 OKC_K_ITEMS_V.OBJECT1_ID1%TYPE;
16335 lv_model_object_id2 OKC_K_ITEMS_V.OBJECT1_ID2%TYPE;
16336 ln_dummy NUMBER := 0;
16337 ln_dummy1 NUMBER := 0;
16338 i NUMBER := 0;
16339 j NUMBER := 0;
16340 l_new_yn VARCHAR2(3);
16341 l_go_for_calc VARCHAR2(3):= 'Y';
16342
16343 -- rravikir added
16344 ln_txl_itm_id OKL_TXL_ITM_INSTS.ID%TYPE;
16345 k_itiv_ib_rec itiv_rec_type;
16346 kx_itiv_ib_rec itiv_rec_type;
16347 lv_object_id1 OKL_TXL_ITM_INSTS.OBJECT_ID1_NEW%TYPE;
16348 lv_object_id2 OKL_TXL_ITM_INSTS.OBJECT_ID2_NEW%TYPE;
16349 ln_inv_itm_id OKL_TXL_ITM_INSTS.INVENTORY_ITEM_ID%TYPE;
16350 ln_inv_org_id OKL_TXL_ITM_INSTS.INVENTORY_ORG_ID%TYPE;
16351 lv_jtot_object_code_new OKL_TXL_ITM_INSTS.JTOT_OBJECT_CODE_NEW%TYPE;
16352 -- end rravikir
16353
16354 CURSOR c_asset_iti(p_asset_number OKL_TXL_ASSETS_B.ASSET_NUMBER%TYPE,
16355 p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE)
16356 IS
16357 select cle_ib.id id
16358 from okc_line_styles_b lse_ib,
16359 okc_k_lines_b cle_ib,
16360 okc_line_styles_b lse_inst,
16361 okc_k_lines_b cle_inst,
16362 okc_line_styles_b lse_tl,
16363 okc_k_lines_v cleb_tl
16364 where cleb_tl.name = P_asset_number
16365 and cleb_tl.dnz_chr_id = p_dnz_chr_id
16366 and cleb_tl.lse_id = lse_tl.id
16367 and lse_tl.lty_code = G_FIN_LINE_LTY_CODE
16368 and lse_tl.lse_type = G_TLS_TYPE
16369 and cle_inst.cle_id = cleb_tl.id
16370 and cle_inst.lse_id = lse_inst.id
16371 and lse_inst.lty_code = G_INST_LINE_LTY_CODE
16372 and cle_ib.cle_id = cle_inst.id
16373 and cle_ib.lse_id = lse_ib.id
16374 and lse_ib.lty_code = G_IB_LINE_LTY_CODE;
16375
16376 -- rravikir added
16377 CURSOR c_get_txl_itm_insts(p_top_line_id OKC_K_LINES_B.ID%TYPE,
16378 p_txl_inst_id OKL_TXL_ITM_INSTS.ID%TYPE)
16379 IS
16380 select iti.id, iti.inventory_item_id, iti.inventory_org_id,
16381 iti.object_id1_new, iti.object_id2_new, iti.jtot_object_code_new
16382 from okl_txl_itm_insts iti,
16383 okc_line_styles_b lse_ib,
16384 okc_k_lines_b cle_ib,
16385 okc_line_styles_b lse_inst,
16386 okc_k_lines_b cle_inst
16387 where cle_inst.cle_id = p_top_line_id
16388 and cle_inst.lse_id = lse_inst.id
16389 and lse_inst.lty_code = G_INST_LINE_LTY_CODE
16390 and cle_ib.cle_id = cle_inst.id
16391 and cle_ib.lse_id = lse_ib.id
16392 and lse_ib.lty_code = G_IB_LINE_LTY_CODE
16393 and cle_ib.id = iti.kle_id
16394 and cle_ib.id <> p_txl_inst_id;
16395 -- end rravikir
16396
16397 l_top_line_id NUMBER;
16398 l_oec NUMBER;
16399
16400 --Bug# 3533936: Enhancements for release assets
16401 l_rel_ast_fin_cle_id NUMBER;
16402 l_itiv_ib_tbl itiv_tbl_type;
16403
16404 --cursor to get existing residual values
16405 --and down payment values Bug# 5192636
16406 cursor l_cle_csr (p_cle_id in number,
16407 p_chr_id in number) is
16408 select fin_kle.DOWN_PAYMENT_RECEIVER_CODE,
16409 fin_kle.CAPITALIZE_DOWN_PAYMENT_YN,
16410 fin_kle.residual_value,
16411 fin_kle.residual_percentage
16412 from
16413 okl_k_lines fin_kle,
16414 okc_k_lines_b fin_cleb
16415 where fin_kle.id = fin_cleb.id
16416 and fin_cleb.id = p_cle_id
16417 and fin_cleb.chr_id = p_chr_id
16418 and fin_cleb.dnz_chr_id = p_chr_id;
16419
16420 l_cle_rec l_cle_csr%ROWTYPE;
16421
16422 --cursor to get asset id from fa
16423 cursor l_fab_csr (p_asset_number in varchar2) is
16424 select asset_id
16425 from fa_additions_b
16426 where asset_number = p_Asset_number;
16427
16428 l_asset_id fa_additions_b.asset_id%TYPE;
16429
16430 --cursor to check if contract has re-lease assets
16431 --Bug# 15992711 : The re-leased flag is no longer checked at contract header
16432 -- but needs to be validated at contract line
16433 -- Cursor modified to include validation at asset line level
16434 /*CURSOR l_chk_rel_ast_csr (p_chr_id IN NUMBER) IS
16435 SELECT 'Y',
16436 --Bug# 4631549
16437 chr.orig_system_source_code,
16438 chr.orig_system_id1 orig_chr_id,
16439 chr.start_date
16440 FROM okc_k_headers_b CHR,
16441 okc_rules_b rul
16442 WHERE CHR.ID = p_chr_id
16443 AND rul.dnz_chr_id = CHR.id
16444 AND rul.rule_information_category = 'LARLES'
16445 AND NVL(rule_information1,'N') = 'Y';*/
16446
16447 CURSOR l_chk_rel_ast_csr (p_chr_id IN NUMBER
16448 ,p_asset_number IN OKX_ASSETS_V.ASSET_NUMBER%TYPE) IS
16449 SELECT 'Y',
16450 --Bug# 4631549
16451 chr.orig_system_source_code,
16452 chr.orig_system_id1 orig_chr_id,
16453 chr.start_date
16454 FROM okc_k_headers_b CHR,
16455 okl_txl_assets_b txlb,
16456 okc_line_styles_b lseb,
16457 okc_k_lines_b cleb_top,
16458 okl_k_lines kle_top
16459 WHERE txlb.kle_id = cleb_top.id
16460 AND cleb_top.lse_id = lseb.id
16461 AND lseb.lty_code = 'FIXED_ASSET'
16462 AND cleb_top.dnz_chr_id = chr.id
16463 AND kle_top.id = cleb_top.id
16464 AND txlb.asset_number = p_asset_number
16465 AND nvl(kle_top.re_lease_yn,'N') = 'Y';
16466 -- Bug# 15992711 : End of Modifications
16467
16468 l_chk_rel_ast Varchar2(1) default 'N';
16469 --Bug# 4631549
16470 l_orig_system_source_code OKC_K_HEADERS_B.orig_system_source_code%TYPE;
16471 l_orig_chr_id OKC_K_HEADERS_B.ID%TYPE;
16472 l_start_date OKC_K_HEADERS_B.START_DATE%TYPE;
16473
16474 l_rel_ast_clev_fin_rec clev_rec_type;
16475 l_rel_ast_klev_fin_rec klev_rec_type;
16476 l_rel_ast_clev_model_rec clev_rec_type;
16477 l_rel_ast_klev_model_rec klev_rec_type;
16478 l_rel_ast_clev_fa_rec clev_rec_type;
16479 l_rel_ast_klev_fa_rec klev_rec_type;
16480 l_rel_ast_clev_ib_tbl clev_tbl_type;
16481 l_rel_ast_klev_ib_tbl klev_tbl_type;
16482 --End Bug# 3533936
16483
16484 --Bug# 4161221: start
16485 CURSOR c_addon_line_id(p_model_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
16486 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
16487 SELECT cle.id
16488 FROM okc_k_lines_b cle,
16489 okc_line_styles_b lse
16490 WHERE cle.dnz_chr_id = p_chr_id
16491 AND cle.lse_id = lse.id
16492 AND lse.lty_code = G_ADDON_LINE_LTY_CODE
16493 AND cle.cle_id = p_model_cle_id;
16494
16495 r_cimv_addon_rec cimv_rec_type;
16496 rx_cimv_addon_rec cimv_rec_type;
16497 --Bug# 4161221: end
16498
16499
16500 --Bug# 4899328
16501 --cursor to check if the contract is undergoing on-line rebook
16502 cursor l_chk_rbk_csr(p_chr_id IN NUMBER) is
16503 SELECT '!'
16504 FROM okc_k_headers_b CHR,
16505 okl_trx_contracts ktrx
16506 WHERE ktrx.khr_id_new = chr.id
16507 AND ktrx.tsu_code = 'ENTERED'
16508 AND ktrx.rbr_code is NOT NULL
16509 AND ktrx.tcn_type = 'TRBK'
16510 --rkuttiya added for 12.1.1 Multi GAAP
16511 AND ktrx.representation_type = 'PRIMARY'
16512 --
16513 AND chr.id = p_chr_id
16514 AND chr.orig_system_source_code = 'OKL_REBOOK';
16515
16516 l_rbk_khr VARCHAR2(1) DEFAULT '?';
16517
16518 l_line_capital_amount okl_k_lines.capital_amount%TYPE;
16519
16520 --Bug# 4631549
16521 cursor l_orig_cle_csr (p_cle_id in number
16522 ) is
16523 select cleb.orig_system_id1 orig_cle_id
16524 from okc_k_lines_b cleb
16525 where cleb.id = p_cle_id;
16526
16527 l_orig_cle_rec l_orig_cle_csr%ROWTYPE;
16528
16529 cursor l_fbk_csr (p_asset_id in number) is
16530 select fab.book_type_code
16531 from fa_books fab,
16532 fa_book_controls fbc
16533 where fab.asset_id = p_asset_id
16534 and fab.transaction_header_id_out is null
16535 and fab.book_type_code = fbc.book_type_code
16536 and fbc.book_class = 'CORPORATE';
16537
16538 l_fbk_rec l_fbk_csr%ROWTYPE;
16539
16540 l_corp_net_book_value number;
16541 l_expected_cost number;
16542
16543 l_clev_fin_rec2 okl_okc_migration_pvt.clev_rec_type;
16544 lx_clev_fin_rec2 okl_okc_migration_pvt.clev_rec_type;
16545 l_klev_fin_rec2 okl_contract_pub.klev_rec_type;
16546 lx_klev_fin_rec2 okl_contract_pub.klev_rec_type;
16547 --End Bug# 4631549
16548
16549 --Added by bkatraga for bug 13717587
16550 l_db_num_of_items NUMBER;
16551 l_db_price_unit NUMBER;
16552
16553 CURSOR c_get_line_details(p_dnz_chr_id NUMBER, p_clev_fin_id NUMBER) IS
16554 SELECT cim_mdl.number_of_items,
16555 cleb_mdl.price_unit
16556 FROM okc_k_lines_b cleb_mdl,
16557 okc_line_styles_b lse_mdl,
16558 okc_k_items cim_mdl
16559 WHERE cim_mdl.cle_id = cleb_mdl.id
16560 AND cim_mdl.dnz_chr_id = cleb_mdl.dnz_chr_id
16561 AND cim_mdl.jtot_object1_code = 'OKX_SYSITEM'
16562 AND lse_mdl.id = cleb_mdl.lse_id
16563 AND lse_mdl.lty_code = 'ITEM'
16564 AND cleb_mdl.dnz_chr_id = p_dnz_chr_id
16565 AND cleb_mdl.cle_id = p_clev_fin_id;
16566 --end bkatraga
16567
16568 BEGIN
16569
16570 x_return_status := OKL_API.G_RET_STS_SUCCESS;
16571 -- Call start_activity to create savepoint, check compatibility
16572 -- and initialize message list
16573 x_return_status := OKL_API.START_ACTIVITY (
16574 l_api_name
16575 ,p_init_msg_list
16576 ,'_PVT'
16577 ,x_return_status);
16578 -- Check if activity started successfully
16579 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16580 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16581 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16582 RAISE OKL_API.G_EXCEPTION_ERROR;
16583 END IF;
16584 --start:| 14-May-2008 cklee Bug 6405415 |
16585 IF p_klev_fin_rec.residual_percentage <> OKL_API.G_MISS_NUM and
16586 p_klev_fin_rec.residual_percentage IS NOT NULL THEN
16587 IF NOT p_klev_fin_rec.residual_percentage between 0 and 100 THEN
16588 OKL_API.set_message(p_app_name => G_APP_NAME,
16589 p_msg_name => 'OKL_VALID_RESIDUAL_PERCENT');
16590 RAISE OKL_API.G_EXCEPTION_ERROR;
16591 END IF;
16592 END IF;
16593 --end:| 14-May-2008 cklee Bug 6405415 |
16594
16595 --Bug# 4959361
16596 OKL_LLA_UTIL_PVT.check_line_update_allowed
16597 (p_api_version => p_api_version,
16598 p_init_msg_list => p_init_msg_list,
16599 x_return_status => x_return_status,
16600 x_msg_count => x_msg_count,
16601 x_msg_data => x_msg_data,
16602 p_cle_id => p_clev_fin_rec.id);
16603
16604 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16605 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16606 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16607 RAISE OKL_API.G_EXCEPTION_ERROR;
16608 END IF;
16609 --Bug# 4959361
16610
16611 l_new_yn := p_new_yn;
16612 l_clev_fin_rec := p_clev_fin_rec;
16613 l_klev_fin_rec := p_klev_fin_rec;
16614
16615 --Bug# 6888733: start
16616
16617 if l_klev_fin_rec.RESIDUAL_GRNTY_AMOUNT = fnd_api.g_miss_num then
16618 l_klev_fin_rec.RESIDUAL_GRNTY_AMOUNT := null;
16619 end if;
16620
16621 --Bug# 6888733: end
16622
16623 l_clev_model_rec := p_clev_model_rec;
16624 l_cimv_model_rec := p_cimv_model_rec;
16625 l_clev_fa_rec := p_clev_fa_rec;
16626 l_cimv_fa_rec := p_cimv_fa_rec;
16627 l_talv_fa_rec := p_talv_fa_rec;
16628 l_itiv_inst_rec := p_itiv_ib_rec;
16629 l_clev_ib_rec := p_clev_ib_rec;
16630 l_itiv_ib_rec := p_itiv_ib_rec;
16631 IF (l_clev_fin_rec.dnz_chr_id IS NULL OR
16632 l_clev_fin_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
16633 OKL_API.set_message(p_app_name => G_APP_NAME,
16634 p_msg_name => G_REQUIRED_VALUE,
16635 p_token1 => G_COL_NAME_TOKEN,
16636 p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID for All Lines');
16637 RAISE OKL_API.G_EXCEPTION_ERROR;
16638 END IF;
16639
16640
16641 ------------------------------------------------------
16642 --Bug# 3533936 : Release Asset Case - all line details
16643 -- should default from exising asset
16644 ------------------------------------------------------
16645 l_chk_rel_ast := 'N';
16646
16647 -- Bug# 15992711 : Change in number of parameters passed to new cursor
16648 -- Open l_chk_rel_ast_csr(p_chr_id => l_clev_fin_rec.dnz_chr_id);
16649 Open l_chk_rel_ast_csr(l_clev_fin_rec.dnz_chr_id
16650 , p_asset_number);
16651 -- Bug# 15992711 : End of Modifications
16652
16653 FETCH l_chk_rel_ast_csr INTO l_chk_rel_ast,
16654 --Bug# 4631549
16655 l_orig_system_source_code,
16656 l_orig_chr_id,
16657 l_start_date;
16658 If l_chk_rel_ast_csr%NOTFOUND then
16659 null;
16660 end if;
16661 close l_chk_rel_ast_csr;
16662
16663 If l_new_yn = 'N' And l_chk_rel_ast = 'Y' Then
16664
16665 open l_fab_csr(p_asset_number => p_asset_number );
16666 fetch l_fab_csr into l_asset_id;
16667 If l_fab_csr%NOTFOUND then
16668 --error invalid line
16669 NULL;
16670 End If;
16671 close l_fab_csr;
16672
16673
16674 If l_klev_fin_rec.id = OKL_API.G_MISS_NUM then
16675 l_klev_fin_rec.id := l_clev_fin_rec.id;
16676 End If;
16677
16678
16679 l_itiv_ib_tbl(1) := l_itiv_ib_rec;
16680
16681 --Bug# 4631549
16682 If nvl(l_orig_system_source_code,okl_api.g_miss_char) <> 'OKL_RELEASE' Then
16683 update_release_asset_line
16684 (p_api_version => p_api_version,
16685 p_init_msg_list => p_init_msg_list,
16686 x_return_status => x_return_status,
16687 x_msg_count => x_msg_count,
16688 x_msg_data => x_msg_data,
16689 p_asset_id => to_char(l_asset_id),
16690 p_chr_id => l_clev_fin_rec.dnz_chr_id,
16691 p_clev_fin_id => l_clev_fin_rec.id,
16692 x_cle_id => l_rel_ast_fin_cle_id);
16693
16694 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16695 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16696 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16697 RAISE OKL_API.G_EXCEPTION_ERROR;
16698 END IF;
16699
16700
16701
16702 Modify_Release_Asset_Line(
16703 p_api_version => p_api_version,
16704 p_init_msg_list => p_init_msg_list,
16705 x_return_status => x_return_status,
16706 x_msg_count => x_msg_count,
16707 x_msg_data => x_msg_data,
16708 p_clev_fin_rec => l_clev_fin_rec,
16709 p_klev_fin_rec => l_klev_fin_rec,
16710 --akrangan Bug# 5362977 start
16711 p_clev_model_rec => l_clev_model_rec,
16712 --akrangan Bug# 5362977 end
16713 p_cimv_model_rec => l_cimv_model_rec,
16714 p_clev_fa_rec => l_clev_fa_rec,
16715 p_cimv_fa_rec => l_cimv_fa_rec,
16716 p_talv_fa_rec => l_talv_fa_rec,
16717 p_itiv_ib_tbl => l_itiv_ib_tbl,
16718 p_cle_id => l_rel_ast_fin_cle_id,
16719 --Bug# 4631549
16720 p_call_mode => 'RELEASE_ASSET',
16721 x_clev_fin_rec => l_rel_ast_clev_fin_rec,
16722 x_klev_fin_rec => l_rel_ast_klev_fin_rec,
16723 x_clev_model_rec => l_rel_ast_clev_model_rec,
16724 x_klev_model_rec => l_rel_ast_klev_model_rec,
16725 x_clev_fa_rec => l_rel_ast_clev_fa_rec,
16726 x_klev_fa_rec => l_rel_ast_klev_fa_rec,
16727 x_clev_ib_tbl => l_rel_ast_clev_ib_tbl,
16728 x_klev_ib_tbl => l_rel_ast_klev_ib_tbl);
16729
16730 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16731 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16732 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16733 RAISE OKL_API.G_EXCEPTION_ERROR;
16734 END IF;
16735
16736 x_clev_fin_rec := l_rel_ast_clev_fin_rec;
16737 x_clev_model_rec := l_rel_ast_clev_model_rec;
16738 x_clev_fa_rec := l_rel_ast_clev_fa_rec;
16739 If l_rel_ast_clev_ib_tbl.COUNT > 0 then
16740 x_clev_ib_rec := l_rel_ast_clev_ib_tbl(1);
16741 End If;
16742
16743 --Bug# 4631549
16744 ElsIf nvl(l_orig_system_source_code,OKL_API.G_MISS_CHAR) = 'OKL_RELEASE' Then
16745
16746 Modify_Release_Asset_Line(
16747 p_api_version => p_api_version,
16748 p_init_msg_list => p_init_msg_list,
16749 x_return_status => x_return_status,
16750 x_msg_count => x_msg_count,
16751 x_msg_data => x_msg_data,
16752 p_clev_fin_rec => l_clev_fin_rec,
16753 p_klev_fin_rec => l_klev_fin_rec,
16754 --akrangan Bug# 5362977 start
16755 p_clev_model_rec => l_clev_model_rec,
16756 --akrangan Bug# 5362977 end
16757 p_cimv_model_rec => l_cimv_model_rec,
16758 p_clev_fa_rec => l_clev_fa_rec,
16759 p_cimv_fa_rec => l_cimv_fa_rec,
16760 p_talv_fa_rec => l_talv_fa_rec,
16761 p_itiv_ib_tbl => l_itiv_ib_tbl,
16762 p_cle_id => l_clev_fin_rec.id,
16763 --Bug# 4631549
16764 p_call_mode => 'RELEASE_CONTRACT',
16765 x_clev_fin_rec => l_rel_ast_clev_fin_rec,
16766 x_klev_fin_rec => l_rel_ast_klev_fin_rec,
16767 x_clev_model_rec => l_rel_ast_clev_model_rec,
16768 x_klev_model_rec => l_rel_ast_klev_model_rec,
16769 x_clev_fa_rec => l_rel_ast_clev_fa_rec,
16770 x_klev_fa_rec => l_rel_ast_klev_fa_rec,
16771 x_clev_ib_tbl => l_rel_ast_clev_ib_tbl,
16772 x_klev_ib_tbl => l_rel_ast_klev_ib_tbl);
16773
16774 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16775 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16776 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16777 RAISE OKL_API.G_EXCEPTION_ERROR;
16778 END IF;
16779
16780 x_clev_fin_rec := l_rel_ast_clev_fin_rec;
16781 x_clev_model_rec := l_rel_ast_clev_model_rec;
16782 x_clev_fa_rec := l_rel_ast_clev_fa_rec;
16783 IF l_rel_ast_clev_ib_tbl.COUNT > 0 THEN
16784 x_clev_ib_rec := l_rel_ast_clev_ib_tbl(1);
16785 END IF;
16786 open l_orig_cle_csr (p_cle_id => x_clev_fin_rec.id);
16787 fetch l_orig_cle_csr into l_orig_cle_rec;
16788 close l_orig_cle_csr;
16789
16790 open l_fbk_csr (p_asset_id => l_asset_id);
16791 fetch l_fbk_csr into l_fbk_rec;
16792 close l_fbk_csr;
16793
16794 OKL_RELEASE_PVT.Calculate_Expected_Cost
16795 (p_api_version => p_api_version,
16796 p_init_msg_list => p_init_msg_list,
16797 x_return_status => x_return_status,
16798 x_msg_count => x_msg_count,
16799 x_msg_data => x_msg_data,
16800 p_new_chr_id => x_clev_fin_rec.dnz_chr_id,
16801 p_orig_chr_id => l_orig_chr_id,
16802 p_orig_cle_id => l_orig_cle_rec.orig_cle_id,
16803 p_asset_id => l_asset_id,
16804 p_book_type_code => l_fbk_rec.book_type_code,
16805 p_release_date => l_start_date,
16806 p_nbv => l_corp_net_book_value,
16807 x_expected_cost => l_expected_cost);
16808
16809 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16810 RAISE OKL_API.G_EXCEPTION_ERROR;
16811 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16812 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16813 END IF;
16814
16815 l_clev_fin_rec2.id := x_clev_fin_rec.id;
16816 l_klev_fin_rec2.id := x_clev_fin_rec.id;
16817 l_klev_fin_rec2.expected_asset_cost := l_expected_cost;
16818
16819 OKL_CONTRACT_PUB.update_contract_line
16820 (p_api_version => p_api_version,
16821 p_init_msg_list => p_init_msg_list,
16822 x_return_status => x_return_status,
16823 x_msg_count => x_msg_count,
16824 x_msg_data => x_msg_data,
16825 p_clev_rec => l_clev_fin_rec2,
16826 p_klev_rec => l_klev_fin_rec2,
16827 x_clev_rec => lx_clev_fin_rec2,
16828 x_klev_rec => lx_klev_fin_rec2);
16829
16830 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16831 RAISE OKL_API.G_EXCEPTION_ERROR;
16832 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16833 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16834 END IF;
16835 End If;
16836 --End Bug# 4631549
16837
16838 Else
16839 --End Bug# 3533936
16840
16841
16842
16843 -- Check for Required Values
16844 x_return_status := check_required_values(p_item1 => l_cimv_model_rec.object1_id1,
16845 p_item2 => l_cimv_model_rec.object1_id2,
16846 p_ast_no => l_talv_fa_rec.asset_number,
16847 p_ast_desc => l_talv_fa_rec.description,
16848 p_cost => l_talv_fa_rec.original_cost,
16849 p_units => l_talv_fa_rec.current_units,
16850 p_ib_loc1 => l_itiv_ib_rec.object_id1_new,
16851 p_ib_loc2 => l_itiv_ib_rec.object_id2_new,
16852 p_fa_loc => l_talv_fa_rec.fa_location_id,
16853 p_refinance_amount => l_klev_fin_rec.refinance_amount,
16854 p_chr_id => l_clev_fin_rec.dnz_chr_id);
16855 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16856 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16857 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16858 RAISE OKL_API.G_EXCEPTION_ERROR;
16859 END IF;
16860
16861 --Added by bkatraga for bug 13717587
16862 OPEN c_get_line_details(p_dnz_chr_id => l_clev_fin_rec.dnz_chr_id, p_clev_fin_id => l_clev_fin_rec.id);
16863 FETCH c_get_line_details INTO l_db_num_of_items, l_db_price_unit;
16864 CLOSE c_get_line_details;
16865 --end bkatraga
16866
16867 -- To Get the txlv fa Line Record
16868 x_return_status := get_rec_txlv(l_clev_fa_rec.id,
16869 r_talv_fa_rec);
16870 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16871 OKL_API.set_message(p_app_name => G_APP_NAME,
16872 p_msg_name => G_FETCHING_INFO,
16873 p_token1 => G_REC_NAME_TOKEN,
16874 p_token1_value => 'OKL_TXL_ASSETS_V Record');
16875 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16876 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16877 OKL_API.set_message(p_app_name => G_APP_NAME,
16878 p_msg_name => G_FETCHING_INFO,
16879 p_token1 => G_REC_NAME_TOKEN,
16880 p_token1_value => 'OKL_TXL_ASSETS_V Record');
16881 RAISE OKL_API.G_EXCEPTION_ERROR;
16882 END IF;
16883 IF (l_talv_fa_rec.asset_number IS NUll OR
16884 l_talv_fa_rec.asset_number = OKL_API.G_MISS_CHAR) THEN
16885 l_talv_fa_rec.asset_number := r_talv_fa_rec.asset_number;
16886 -- ELSIF l_talv_fa_rec.asset_number = r_talv_fa_rec.asset_number THEN
16887 -- l_new_yn := 'N';
16888 END IF;
16889 IF (l_talv_fa_rec.original_cost IS NUll OR
16890 l_talv_fa_rec.original_cost = OKL_API.G_MISS_NUM) THEN
16891 OKL_API.set_message(p_app_name => G_APP_NAME,
16892 p_msg_name => G_REQUIRED_VALUE,
16893 p_token1 => G_REC_NAME_TOKEN,
16894 p_token1_value => 'OKL_TXL_ASSETS_V.ORIGINAL_COST');
16895 RAISE OKL_API.G_EXCEPTION_ERROR;
16896 END IF;
16897 IF (l_talv_fa_rec.current_units IS NUll OR
16898 l_talv_fa_rec.current_units = OKL_API.G_MISS_NUM) THEN
16899 OKL_API.set_message(p_app_name => G_APP_NAME,
16900 p_msg_name => G_REQUIRED_VALUE,
16901 p_token1 => G_COL_NAME_TOKEN,
16902 p_token1_value => 'OKL_TXL_ASSETS_V.CURRENT_UNITS');
16903 RAISE OKL_API.G_EXCEPTION_ERROR;
16904 END IF;
16905 l_clev_model_rec.price_unit := l_talv_fa_rec.original_cost;
16906 l_clev_fa_rec.price_unit := l_talv_fa_rec.original_cost;
16907 l_cimv_model_rec.number_of_items := l_talv_fa_rec.current_units;
16908 l_cimv_fa_rec.number_of_items := l_talv_fa_rec.current_units;
16909 -- To Get the kle top Line Record
16910 x_return_status := get_rec_clev(l_clev_fin_rec.id,
16911 r_clev_fin_rec);
16912 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16913 OKL_API.set_message(p_app_name => G_APP_NAME,
16914 p_msg_name => G_FETCHING_INFO,
16915 p_token1 => G_REC_NAME_TOKEN,
16916 p_token1_value => 'OKC_K_LINES_V Record');
16917 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16918 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16919 OKL_API.set_message(p_app_name => G_APP_NAME,
16920 p_msg_name => G_FETCHING_INFO,
16921 p_token1 => G_REC_NAME_TOKEN,
16922 p_token1_value => 'OKC_K_LINES_V Record');
16923 RAISE OKL_API.G_EXCEPTION_ERROR;
16924 END IF;
16925 -- To Get the kle top Line Record
16926 x_return_status := get_rec_klev(l_clev_fin_rec.id,
16927 r_klev_fin_rec);
16928 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16929 OKL_API.set_message(p_app_name => G_APP_NAME,
16930 p_msg_name => G_FETCHING_INFO,
16931 p_token1 => G_REC_NAME_TOKEN,
16932 p_token1_value => 'OKL_K_LINES_V Record');
16933 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16934 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16935 OKL_API.set_message(p_app_name => G_APP_NAME,
16936 p_msg_name => G_FETCHING_INFO,
16937 p_token1 => G_REC_NAME_TOKEN,
16938 p_token1_value => 'OKL_K_LINES_V Record');
16939 RAISE OKL_API.G_EXCEPTION_ERROR;
16940 END IF;
16941 IF r_clev_fin_rec.id <> r_klev_fin_rec.id THEN
16942 OKL_API.set_message(p_app_name => G_APP_NAME,
16943 p_msg_name => G_LINE_RECORD);
16944 RAISE OKL_API.G_EXCEPTION_ERROR;
16945 END IF;
16946 --Build the clev Top Line Record
16947 l_clev_fin_rec.cle_id := null;
16948 IF (l_clev_fin_rec.chr_id IS NUll OR
16949 l_clev_fin_rec.chr_id = OKL_API.G_MISS_NUM) THEN
16950 l_clev_fin_rec.chr_id := r_clev_fin_rec.chr_id;
16951 END IF;
16952 IF (l_clev_fin_rec.name IS NUll OR
16953 l_clev_fin_rec.name = OKL_API.G_MISS_CHAR) AND
16954 (r_clev_fin_rec.name <> p_asset_number) THEN
16955 l_clev_fin_rec.name := p_asset_number;
16956 END IF;
16957 IF (l_clev_fin_rec.exception_yn IS NUll OR
16958 l_clev_fin_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
16959 l_clev_fin_rec.exception_yn := r_clev_fin_rec.exception_yn;
16960 END IF;
16961 IF (l_clev_fin_rec.display_sequence IS NUll OR
16962 l_clev_fin_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
16963 l_clev_fin_rec.display_sequence := r_clev_fin_rec.display_sequence;
16964 END IF;
16965 IF (l_clev_fin_rec.lse_id IS NUll OR
16966 l_clev_fin_rec.lse_id = OKL_API.G_MISS_NUM) THEN
16967 l_clev_fin_rec.lse_id := r_clev_fin_rec.lse_id;
16968 END IF;
16969 IF (l_clev_fin_rec.line_number IS NUll OR
16970 l_clev_fin_rec.line_number = OKL_API.G_MISS_CHAR) THEN
16971 l_clev_fin_rec.line_number := r_clev_fin_rec.line_number;
16972 END IF;
16973 IF (l_clev_fin_rec.sts_code IS NUll OR
16974 l_clev_fin_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
16975 l_clev_fin_rec.sts_code := r_clev_fin_rec.sts_code;
16976 END IF;
16977 --Build the klev Top Line Record
16978 IF l_new_yn = 'Y' THEN
16979 ln_clev_model_price_unit := abs(l_talv_fa_rec.original_cost);
16980 ln_cimv_model_no_items := l_talv_fa_rec.current_units;
16981 ELSIF l_new_yn = 'N' THEN
16982 IF l_clev_model_rec.price_unit = OKL_API.G_MISS_NUM THEN
16983 l_clev_model_rec.price_unit := null;
16984 END IF;
16985 IF l_cimv_model_rec.number_of_items = OKL_API.G_MISS_NUM THEN
16986 l_cimv_model_rec.number_of_items := null;
16987 END IF;
16988 ln_clev_model_price_unit := abs(l_talv_fa_rec.original_cost);
16989 ln_cimv_model_no_items := l_talv_fa_rec.current_units;
16990 -- we need to modify the code, let it go a temp
16991 -- ln_clev_model_price_unit := nvl(l_clev_model_rec.price_unit,0);
16992 -- ln_cimv_model_no_items := nvl(l_cimv_model_rec.number_of_items,0);
16993 END IF;
16994 l_klev_fin_rec.id := r_klev_fin_rec.id;
16995
16996 l_clev_fin_rec.item_description := l_talv_fa_rec.description;
16997 -- Update of the Financial Asset Line
16998 update_fin_line(p_api_version => p_api_version,
16999 p_init_msg_list => p_init_msg_list,
17000 x_return_status => x_return_status,
17001 x_msg_count => x_msg_count,
17002 x_msg_data => x_msg_data,
17003 P_new_yn => l_new_yn,
17004 p_asset_number => p_asset_number,
17005 p_clev_rec => l_clev_fin_rec,
17006 p_klev_rec => l_klev_fin_rec,
17007 x_clev_rec => x_clev_fin_rec,
17008 x_klev_rec => l_klev_fin_rec_out);
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
17015 --We have to build the Model Line Record for the calculations of the
17016 -- oec of the top line
17017 -- To Get the cle Model Line Record
17018 x_return_status := get_rec_clev(l_clev_model_rec.id,
17019 r_clev_model_rec);
17020 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17021 OKL_API.set_message(p_app_name => G_APP_NAME,
17022 p_msg_name => G_FETCHING_INFO,
17023 p_token1 => G_REC_NAME_TOKEN,
17024 p_token1_value => 'OKC_K_LINES_V Record');
17025 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17026 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17027 OKL_API.set_message(p_app_name => G_APP_NAME,
17028 p_msg_name => G_FETCHING_INFO,
17029 p_token1 => G_REC_NAME_TOKEN,
17030 p_token1_value => 'OKC_K_LINES_V Record');
17031 RAISE OKL_API.G_EXCEPTION_ERROR;
17032 END IF;
17033 -- To Get the kle Model Line Record
17034 x_return_status := get_rec_klev(l_clev_model_rec.id,
17035 r_klev_model_rec);
17036 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17037 OKL_API.set_message(p_app_name => G_APP_NAME,
17038 p_msg_name => G_FETCHING_INFO,
17039 p_token1 => G_REC_NAME_TOKEN,
17040 p_token1_value => 'OKL_K_LINES_V Record');
17041 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17042 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17043 OKL_API.set_message(p_app_name => G_APP_NAME,
17044 p_msg_name => G_FETCHING_INFO,
17045 p_token1 => G_REC_NAME_TOKEN,
17046 p_token1_value => 'OKL_K_LINES_V Record');
17047 RAISE OKL_API.G_EXCEPTION_ERROR;
17048 END IF;
17049 IF r_klev_model_rec.id <> r_clev_model_rec.id THEN
17050 OKL_API.set_message(p_app_name => G_APP_NAME,
17051 p_msg_name => G_LINE_RECORD);
17052 RAISE OKL_API.G_EXCEPTION_ERROR;
17053 END IF;
17054 -- Build clev Model Line Record
17055 l_clev_model_rec.chr_id := null;
17056 IF (l_clev_model_rec.cle_id IS NUll OR
17057 l_clev_model_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17058 l_clev_model_rec.cle_id := r_clev_model_rec.cle_id;
17059 END IF;
17060 IF (l_clev_model_rec.dnz_chr_id IS NUll OR
17061 l_clev_model_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
17062 l_clev_model_rec.dnz_chr_id := r_clev_model_rec.dnz_chr_id;
17063 END IF;
17064 IF (l_clev_model_rec.lse_id IS NUll OR
17065 l_clev_model_rec.lse_id = OKL_API.G_MISS_NUM) THEN
17066 l_clev_model_rec.lse_id := r_clev_model_rec.lse_id;
17067 END IF;
17068 IF (l_clev_model_rec.display_sequence IS NUll OR
17069 l_clev_model_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
17070 l_clev_model_rec.display_sequence := r_clev_model_rec.display_sequence;
17071 END IF;
17072 IF (l_clev_model_rec.exception_yn IS NUll OR
17073 l_clev_model_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
17074 l_clev_model_rec.exception_yn := r_clev_model_rec.exception_yn;
17075 END IF;
17076 IF (l_clev_model_rec.line_number IS NUll OR
17077 l_clev_model_rec.line_number = OKL_API.G_MISS_CHAR) THEN
17078 l_clev_model_rec.line_number := r_clev_model_rec.line_number;
17079 END IF;
17080 IF (l_clev_model_rec.sts_code IS NUll OR
17081 l_clev_model_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
17082 l_clev_model_rec.sts_code := r_clev_model_rec.sts_code;
17083 END IF;
17084 -- Build klev Model Line Record
17085 l_klev_model_rec := r_klev_model_rec;
17086 -- To Get the cimv Model Line Record
17087 x_return_status := get_rec_cimv(l_clev_model_rec.id,
17088 l_clev_model_rec.dnz_chr_id,
17089 r_cimv_model_rec);
17090 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17091 OKL_API.set_message(p_app_name => G_APP_NAME,
17092 p_msg_name => G_FETCHING_INFO,
17093 p_token1 => G_REC_NAME_TOKEN,
17094 p_token1_value => 'OKC_K_ITEMS_V Record');
17095 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17096 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17097 OKL_API.set_message(p_app_name => G_APP_NAME,
17098 p_msg_name => G_FETCHING_INFO,
17099 p_token1 => G_REC_NAME_TOKEN,
17100 p_token1_value => 'OKC_K_ITEMS_V Record');
17101 RAISE OKL_API.G_EXCEPTION_ERROR;
17102 END IF;
17103 --Build Model cimv item rec
17104 l_cimv_model_rec.id := r_cimv_model_rec.id;
17105 IF (l_cimv_model_rec.exception_yn IS NUll OR
17106 l_cimv_model_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
17107 l_cimv_model_rec.exception_yn := r_cimv_model_rec.exception_yn;
17108 END IF;
17109 IF (l_cimv_model_rec.dnz_chr_id IS NUll OR
17110 l_cimv_model_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
17111 l_cimv_model_rec.dnz_chr_id := r_cimv_model_rec.dnz_chr_id;
17112 END IF;
17113 IF (l_cimv_model_rec.cle_id IS NUll OR
17114 l_cimv_model_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17115 l_cimv_model_rec.cle_id := r_cimv_model_rec.cle_id;
17116 END IF;
17117 -- We need to check the below since we do not have to call the formula
17118 -- Engine avery time. Which means that we have to call the formula Engine
17119 -- only if the price unit and number of items change.
17120 /*
17121 IF l_clev_model_rec.price_unit <> r_clev_model_rec.price_unit AND
17122 l_cimv_model_rec.number_of_items <> r_cimv_model_rec.number_of_items THEN
17123 l_klev_fin_rec.residual_percentage <> r_klev_fin_rec.residual_percentage AND
17124 l_klev_fin_rec.residual_value <> r_klev_fin_rec.residual_value THEN
17125 l_go_for_calc := 'Y';
17126 ELSIF l_clev_model_rec.price_unit <> r_clev_model_rec.price_unit OR
17127 l_cimv_model_rec.number_of_items <> r_cimv_model_rec.number_of_items THEN
17128 l_klev_fin_rec.residual_percentage <> r_klev_fin_rec.residual_percentage OR
17129 l_klev_fin_rec.residual_value <> r_klev_fin_rec.residual_value THEN
17130 l_go_for_calc := 'Y';
17131 ELSE
17132 l_go_for_calc := 'N';
17133 END IF;
17134 */
17135 -- Updating of the Model Line and Item Record
17136 update_model_line(p_api_version => p_api_version,
17137 p_init_msg_list => p_init_msg_list,
17138 x_return_status => x_return_status,
17139 x_msg_count => x_msg_count,
17140 x_msg_data => x_msg_data,
17141 P_new_yn => l_new_yn,
17142 p_asset_number => p_asset_number,
17143 p_clev_rec => l_clev_model_rec,
17144 p_klev_rec => l_klev_model_rec,
17145 p_cimv_rec => l_cimv_model_rec,
17146 x_clev_rec => x_clev_model_rec,
17147 x_klev_rec => l_klev_model_rec_out,
17148 x_cimv_rec => l_cimv_model_rec_out);
17149 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17150 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17151 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17152 RAISE OKL_API.G_EXCEPTION_ERROR;
17153 END IF;
17154
17155 --Bug# 4161221: start
17156 -- Update No. of Units on Add-on line when there is a change in the
17157 -- No. of Units on Asset line.
17158 FOR r_addon_line_id IN c_addon_line_id(p_model_cle_id => x_clev_model_rec.id,
17159 p_chr_id => x_clev_model_rec.dnz_chr_id) LOOP
17160
17161 -- To Get the cimv Addon Line Record
17162 x_return_status := get_rec_cimv(r_addon_line_id.id,
17163 x_clev_model_rec.dnz_chr_id,
17164 r_cimv_addon_rec);
17165 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17166 OKL_API.set_message(p_app_name => G_APP_NAME,
17167 p_msg_name => G_FETCHING_INFO,
17168 p_token1 => G_REC_NAME_TOKEN,
17169 p_token1_value => 'OKC_K_ITEMS_V Record');
17170 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
17171 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17172 OKL_API.set_message(p_app_name => G_APP_NAME,
17173 p_msg_name => G_FETCHING_INFO,
17174 p_token1 => G_REC_NAME_TOKEN,
17175 p_token1_value => 'OKC_K_ITEMS_V Record');
17176 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
17177 END IF;
17178
17179 IF (NVL(r_cimv_addon_rec.number_of_items,0) <>
17180 NVL(l_cimv_model_rec_out.number_of_items,0)) THEN
17181
17182 --Build addon cimv item rec
17183 r_cimv_addon_rec.number_of_items := l_cimv_model_rec_out.number_of_items;
17184 -- Updating of the addon Item Record
17185
17186 OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version => p_api_version,
17187 p_init_msg_list => p_init_msg_list,
17188 x_return_status => x_return_status,
17189 x_msg_count => x_msg_count,
17190 x_msg_data => x_msg_data,
17191 p_cimv_rec => r_cimv_addon_rec,
17192 x_cimv_rec => rx_cimv_addon_rec);
17193 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17194 OKL_API.set_message(p_app_name => G_APP_NAME,
17195 p_msg_name => G_UPDATING_ADDON_ITEM);
17196 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17197 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17198 OKL_API.set_message(p_app_name => G_APP_NAME,
17199 p_msg_name => G_UPDATING_ADDON_ITEM);
17200 RAISE OKL_API.G_EXCEPTION_ERROR;
17201 END IF;
17202 END IF;
17203 END LOOP;
17204 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17205 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17206 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17207 RAISE OKL_API.G_EXCEPTION_ERROR;
17208 END IF;
17209 --Bug# 4161221: end
17210
17211 lv_model_object_id1 := l_cimv_model_rec_out.object1_id1;
17212 lv_model_object_id2 := l_cimv_model_rec_out.object1_id2;
17213 IF l_go_for_calc = 'Y' THEN
17214 -- Calculate the OEC to Populate the OKL_K_LINES_V.OEC
17215 oec_calc_upd_fin_rec(p_api_version => p_api_version,
17216 p_init_msg_list => p_init_msg_list,
17217 x_return_status => x_return_status,
17218 x_msg_count => x_msg_count,
17219 x_msg_data => x_msg_data,
17220 P_new_yn => P_new_yn,
17221 p_asset_number => p_asset_number,
17222 -- 4414408
17223 p_top_line_id => l_clev_fin_rec.id,
17224 p_dnz_chr_id => x_clev_model_rec.dnz_chr_id,
17225 x_fin_clev_rec => x_clev_fin_rec,
17226 x_fin_klev_rec => l_klev_fin_rec_out,
17227 x_oec => ln_klev_fin_oec,
17228 p_validate_fin_line => OKL_API.G_TRUE);
17229 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17230 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17231 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17232 RAISE OKL_API.G_EXCEPTION_ERROR;
17233 END IF;
17234 -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
17235 cap_amt_calc_upd_fin_rec(p_api_version => p_api_version,
17236 p_init_msg_list => p_init_msg_list,
17237 x_return_status => x_return_status,
17238 x_msg_count => x_msg_count,
17239 x_msg_data => x_msg_data,
17240 P_new_yn => P_new_yn,
17241 p_asset_number => p_asset_number,
17242 -- 4414408
17243 p_top_line_id => l_clev_fin_rec.id,
17244 p_dnz_chr_id => x_clev_model_rec.dnz_chr_id,
17245 x_fin_clev_rec => x_clev_fin_rec,
17246 x_fin_klev_rec => l_klev_fin_rec_out,
17247 x_cap_amt => ln_klev_fin_cap,
17248 p_validate_fin_line => OKL_API.G_TRUE);
17249 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17250 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17251 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17252 RAISE OKL_API.G_EXCEPTION_ERROR;
17253 END IF;
17254 IF l_klev_fin_rec.residual_percentage = OKL_API.G_MISS_NUM THEN
17255 l_klev_fin_rec.residual_percentage := null;
17256 ELSIF l_klev_fin_rec.residual_value = OKL_API.G_MISS_NUM THEN
17257 l_klev_fin_rec.residual_value := null;
17258 END IF;
17259 -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
17260 IF (l_klev_fin_rec.residual_percentage IS NOT NULL OR
17261 l_klev_fin_rec.residual_percentage <> OKL_API.G_MISS_NUM) AND
17262 (l_klev_fin_rec.residual_value IS NOT NULL OR
17263 l_klev_fin_rec.residual_value <> OKL_API.G_MISS_NUM) THEN
17264 IF l_klev_fin_rec.residual_value <> r_klev_fin_rec.residual_value THEN
17265
17266 l_top_line_id := x_clev_fin_rec.id;
17267 l_oec := l_klev_fin_rec_out.oec;
17268
17269 get_res_per_upd_fin_rec(p_api_version => p_api_version,
17270 p_init_msg_list => p_init_msg_list,
17271 x_return_status => x_return_status,
17272 x_msg_count => x_msg_count,
17273 x_msg_data => x_msg_data,
17274 P_new_yn => P_new_yn,
17275 p_asset_number => p_asset_number,
17276 p_res_value => l_klev_fin_rec.residual_value,
17277 p_oec => l_oec, --l_klev_fin_rec_out.oec
17278 p_top_line_id => l_top_line_id, --x_clev_fin_rec.id,
17279 p_dnz_chr_id => x_clev_model_rec.dnz_chr_id,
17280 x_fin_clev_rec => x_clev_fin_rec,
17281 x_fin_klev_rec => l_klev_fin_rec_out,
17282 p_validate_fin_line => OKL_API.G_TRUE);
17283 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17284 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17285 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17286 RAISE OKL_API.G_EXCEPTION_ERROR;
17287 END IF;
17288 ELSIF l_klev_fin_rec.residual_percentage <> r_klev_fin_rec.residual_percentage THEN
17289 res_value_calc_upd_fin_rec(p_api_version => p_api_version,
17290 p_init_msg_list => p_init_msg_list,
17291 x_return_status => x_return_status,
17292 x_msg_count => x_msg_count,
17293 x_msg_data => x_msg_data,
17294 P_new_yn => P_new_yn,
17295 p_asset_number => p_asset_number,
17296 -- 4414408
17297 p_top_line_id => x_clev_model_rec.cle_id,
17298 p_dnz_chr_id => x_clev_model_rec.dnz_chr_id,
17299 x_fin_clev_rec => x_clev_fin_rec,
17300 x_fin_klev_rec => l_klev_fin_rec_out,
17301 x_res_value => ln_klev_fin_res,
17302 p_validate_fin_line => OKL_API.G_TRUE);
17303 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17304 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17305 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17306 RAISE OKL_API.G_EXCEPTION_ERROR;
17307 END IF;
17308 END IF;
17309 ELSIF (l_klev_fin_rec.residual_percentage IS NULL OR
17310 l_klev_fin_rec.residual_percentage = OKL_API.G_MISS_NUM) AND
17311 (l_klev_fin_rec.residual_value IS NOT NULL OR
17312 l_klev_fin_rec.residual_value <> OKL_API.G_MISS_NUM) THEN
17313
17314 l_top_line_id := x_clev_fin_rec.id;
17315 l_oec := l_klev_fin_rec_out.oec;
17316
17317 get_res_per_upd_fin_rec(p_api_version => p_api_version,
17318 p_init_msg_list => p_init_msg_list,
17319 x_return_status => x_return_status,
17320 x_msg_count => x_msg_count,
17321 x_msg_data => x_msg_data,
17322 P_new_yn => P_new_yn,
17323 p_asset_number => p_asset_number,
17324 p_res_value => l_klev_fin_rec.residual_value,
17325 p_oec => l_oec, --l_klev_fin_rec_out.oec
17326 p_top_line_id => l_top_line_id, --x_clev_fin_rec.id,
17327 p_dnz_chr_id => x_clev_model_rec.dnz_chr_id,
17328 x_fin_clev_rec => x_clev_fin_rec,
17329 x_fin_klev_rec => l_klev_fin_rec_out,
17330 p_validate_fin_line => OKL_API.G_TRUE);
17331 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17332 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17333 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17334 RAISE OKL_API.G_EXCEPTION_ERROR;
17335 END IF;
17336 ELSIF (l_klev_fin_rec.residual_percentage IS NOT NULL OR
17337 l_klev_fin_rec.residual_percentage <> OKL_API.G_MISS_NUM) AND
17338 (l_klev_fin_rec.residual_value IS NULL OR
17339 l_klev_fin_rec.residual_value = OKL_API.G_MISS_NUM) THEN
17340 res_value_calc_upd_fin_rec(p_api_version => p_api_version,
17341 p_init_msg_list => p_init_msg_list,
17342 x_return_status => x_return_status,
17343 x_msg_count => x_msg_count,
17344 x_msg_data => x_msg_data,
17345 P_new_yn => P_new_yn,
17346 p_asset_number => p_asset_number,
17347 -- 4414408
17348 p_top_line_id => x_clev_model_rec.cle_id,
17349 p_dnz_chr_id => x_clev_model_rec.dnz_chr_id,
17350 x_fin_clev_rec => x_clev_fin_rec,
17351 x_fin_klev_rec => l_klev_fin_rec_out,
17352 x_res_value => ln_klev_fin_res,
17353 p_validate_fin_line => OKL_API.G_TRUE);
17354 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17355 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17356 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17357 RAISE OKL_API.G_EXCEPTION_ERROR;
17358 END IF;
17359 END IF;
17360 END IF;
17361 IF (l_klev_fin_rec_out.oec IS NOT NULL OR
17362 l_klev_fin_rec_out.oec <> OKL_API.G_MISS_NUM) AND
17363 (l_klev_fin_rec_out.residual_value IS NOT NULL OR
17364 l_klev_fin_rec_out.residual_value <> OKL_API.G_MISS_NUM) THEN
17365 IF l_klev_fin_rec_out.residual_value > l_klev_fin_rec_out.oec THEN
17366 OKL_API.set_message(p_app_name => G_APP_NAME,
17367 p_msg_name => G_SALVAGE_VALUE);
17368 RAISE OKL_API.G_EXCEPTION_ERROR;
17369 END IF;
17370 END IF;
17371 -- Updating of the Fixed Asset Line Process
17372 -- To Get the cle fa Line Record
17373 x_return_status := get_rec_clev(l_clev_fa_rec.id,
17374 r_clev_fa_rec);
17375 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17376 OKL_API.set_message(p_app_name => G_APP_NAME,
17377 p_msg_name => G_FETCHING_INFO,
17378 p_token1 => G_REC_NAME_TOKEN,
17379 p_token1_value => 'OKC_K_LINES_V Record');
17380 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17381 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17382 OKL_API.set_message(p_app_name => G_APP_NAME,
17383 p_msg_name => G_FETCHING_INFO,
17384 p_token1 => G_REC_NAME_TOKEN,
17385 p_token1_value => 'OKC_K_LINES_V Record');
17386 RAISE OKL_API.G_EXCEPTION_ERROR;
17387 END IF;
17388 -- To Get the kle fa Line Record
17389 x_return_status := get_rec_klev(l_clev_fa_rec.id,
17390 r_klev_fa_rec);
17391 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17392 OKL_API.set_message(p_app_name => G_APP_NAME,
17393 p_msg_name => G_FETCHING_INFO,
17394 p_token1 => G_REC_NAME_TOKEN,
17395 p_token1_value => 'OKL_K_LINES_V Record');
17396 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17397 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17398 OKL_API.set_message(p_app_name => G_APP_NAME,
17399 p_msg_name => G_FETCHING_INFO,
17400 p_token1 => G_REC_NAME_TOKEN,
17401 p_token1_value => 'OKL_K_LINES_V Record');
17402 RAISE OKL_API.G_EXCEPTION_ERROR;
17403 END IF;
17404 IF r_klev_fa_rec.id <> r_clev_fa_rec.id THEN
17405 OKL_API.set_message(p_app_name => G_APP_NAME,
17406 p_msg_name => G_LINE_RECORD);
17407 RAISE OKL_API.G_EXCEPTION_ERROR;
17408 END IF;
17409 -- Build clev fa Line Record
17410 l_clev_fa_rec.chr_id := null;
17411 IF (l_clev_fa_rec.cle_id IS NUll OR
17412 l_clev_fa_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17413 l_clev_fa_rec.cle_id := r_clev_fa_rec.cle_id;
17414 END IF;
17415 IF (l_clev_fa_rec.dnz_chr_id IS NUll OR
17416 l_clev_fa_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
17417 l_clev_fa_rec.dnz_chr_id := r_clev_fa_rec.dnz_chr_id;
17418 END IF;
17419 IF (l_clev_fa_rec.display_sequence IS NUll OR
17420 l_clev_fa_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
17421 l_clev_fa_rec.display_sequence := r_clev_fa_rec.display_sequence;
17422 END IF;
17423 IF (l_clev_fa_rec.lse_id IS NUll OR
17424 l_clev_fa_rec.lse_id = OKL_API.G_MISS_NUM) THEN
17425 l_clev_fa_rec.lse_id := r_clev_fa_rec.lse_id;
17426 END IF;
17427 IF (l_clev_fa_rec.exception_yn IS NUll OR
17428 l_clev_fa_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
17429 l_clev_fa_rec.exception_yn := r_clev_fa_rec.exception_yn;
17430 END IF;
17431 IF (l_clev_fa_rec.line_number IS NUll OR
17432 l_clev_fa_rec.line_number = OKL_API.G_MISS_CHAR) THEN
17433 l_clev_fa_rec.line_number := r_clev_fa_rec.line_number;
17434 END IF;
17435 IF (l_clev_fa_rec.sts_code IS NUll OR
17436 l_clev_fa_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
17437 l_clev_fa_rec.sts_code := r_clev_fa_rec.sts_code;
17438 END IF;
17439 -- Build klev fa Line Record
17440 l_klev_fa_rec := r_klev_fa_rec;
17441 -- To Get the cimv fa Line Record
17442 x_return_status := get_rec_cimv(l_clev_fa_rec.id,
17443 l_clev_fa_rec.dnz_chr_id,
17444 r_cimv_fa_rec);
17445 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17446 OKL_API.set_message(p_app_name => G_APP_NAME,
17447 p_msg_name => G_FETCHING_INFO,
17448 p_token1 => G_REC_NAME_TOKEN,
17449 p_token1_value => 'OKC_K_ITEMS_V Record');
17450 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17451 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17452 OKL_API.set_message(p_app_name => G_APP_NAME,
17453 p_msg_name => G_FETCHING_INFO,
17454 p_token1 => G_REC_NAME_TOKEN,
17455 p_token1_value => 'OKC_K_ITEMS_V Record');
17456 RAISE OKL_API.G_EXCEPTION_ERROR;
17457 END IF;
17458 --Build cimv fa item rec
17459 l_cimv_fa_rec.id := r_cimv_fa_rec.id;
17460 IF (l_cimv_fa_rec.exception_yn IS NUll OR
17461 l_cimv_fa_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
17462 l_cimv_fa_rec.exception_yn := r_cimv_fa_rec.exception_yn;
17463 END IF;
17464 IF (l_cimv_fa_rec.dnz_chr_id IS NUll OR
17465 l_cimv_fa_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
17466 l_cimv_fa_rec.dnz_chr_id := r_cimv_fa_rec.dnz_chr_id;
17467 END IF;
17468 IF (l_cimv_fa_rec.cle_id IS NUll OR
17469 l_cimv_fa_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17470 l_cimv_fa_rec.cle_id := r_cimv_fa_rec.cle_id;
17471 END IF;
17472 IF (l_cimv_fa_rec.object1_id1 IS NUll OR
17473 l_cimv_fa_rec.object1_id1 = OKL_API.G_MISS_CHAR) THEN
17474 l_cimv_fa_rec.object1_id1 := null;
17475 ELSE
17476 l_cimv_fa_rec.object1_id1 := r_cimv_ib_rec.cle_id;
17477 END IF;
17478 IF (l_cimv_fa_rec.object1_id2 IS NUll OR
17479 l_cimv_fa_rec.object1_id2 = OKL_API.G_MISS_CHAR) THEN
17480 l_cimv_fa_rec.object1_id2 := null;
17481 ELSE
17482 l_cimv_fa_rec.object1_id2 := r_cimv_ib_rec.cle_id;
17483 END IF;
17484 --Build talv fa item rec
17485 l_talv_fa_rec.id := r_talv_fa_rec.id;
17486 l_talv_fa_rec.object_version_number := r_talv_fa_rec.object_version_number;
17487 l_talv_fa_rec.tas_id := r_talv_fa_rec.tas_id;
17488 l_talv_fa_rec.sfwt_flag := r_talv_fa_rec.sfwt_flag;
17489 l_talv_fa_rec.tal_type := r_talv_fa_rec.tal_type;
17490 l_talv_fa_rec.line_number := r_talv_fa_rec.line_number;
17491 l_talv_fa_rec.asset_number := p_asset_number;
17492 IF (l_talv_fa_rec.kle_id IS NUll OR
17493 l_talv_fa_rec.kle_id = OKL_API.G_MISS_NUM) THEN
17494 l_talv_fa_rec.kle_id := r_talv_fa_rec.kle_id;
17495 END IF;
17496 IF (l_talv_fa_rec.original_cost IS NUll OR
17497 l_talv_fa_rec.original_cost = OKL_API.G_MISS_NUM) THEN
17498 l_talv_fa_rec.original_cost := r_talv_fa_rec.original_cost;
17499 END IF;
17500 IF (l_talv_fa_rec.depreciation_cost IS NUll OR
17501 l_talv_fa_rec.depreciation_cost = OKL_API.G_MISS_NUM) THEN
17502 l_talv_fa_rec.depreciation_cost := r_talv_fa_rec.depreciation_cost;
17503 END IF;
17504
17505 IF (l_talv_fa_rec.description IS NUll OR
17506 l_talv_fa_rec.description = OKL_API.G_MISS_CHAR) THEN
17507 l_talv_fa_rec.description := r_talv_fa_rec.description;
17508 END IF;
17509 IF (l_talv_fa_rec.current_units IS NUll OR
17510 l_talv_fa_rec.current_units = OKL_API.G_MISS_NUM) THEN
17511 l_talv_fa_rec.current_units := r_talv_fa_rec.current_units;
17512 END IF;
17513
17514 --Bug# 4899328: For online rebook, update depreciation_cost and
17515 -- original_cost to line capital amount instead of line oec
17516 --check for rebook contract
17517 l_rbk_khr := '?';
17518 OPEN l_chk_rbk_csr (p_chr_id => l_clev_fin_rec.dnz_chr_id);
17519 FETCH l_chk_rbk_csr INTO l_rbk_khr;
17520 CLOSE l_chk_rbk_csr;
17521
17522 If l_rbk_khr = '!' Then
17523
17524 l_line_capital_amount := NVL(l_klev_fin_rec_out.capital_amount,ln_klev_fin_cap);
17525
17526 -- Bug 13867007: Start
17527 -- RGOOTY: Added IF clause
17528 IF(l_talv_fa_rec.current_units <> l_db_num_of_items OR
17529 l_talv_fa_rec.original_cost <> l_db_price_unit )
17530 THEN
17531 l_talv_fa_rec.depreciation_cost := NVL(l_line_capital_amount,l_talv_fa_rec.depreciation_cost);
17532 END IF;
17533 -- Bug 13867007: End
17534 l_talv_fa_rec.original_cost := NVL(l_line_capital_amount,l_talv_fa_rec.original_cost);
17535
17536 Else
17537 -- We are doing the below to make sure the oec is euqated to depreciation cost
17538 -- and the original cost.
17539 --Added IF clause by bkatraga for bug 13717587
17540 IF(l_talv_fa_rec.current_units <> l_db_num_of_items OR
17541 l_talv_fa_rec.original_cost <> l_db_price_unit) THEN
17542 l_talv_fa_rec.depreciation_cost := NVL(l_klev_fin_rec_out.oec,l_talv_fa_rec.depreciation_cost);
17543 END IF;
17544 l_talv_fa_rec.original_cost := NVL(l_klev_fin_rec_out.oec,ln_klev_fin_oec);
17545 End If;
17546 --Bug# 4899328: End
17547
17548 l_clev_fa_rec.item_description := l_talv_fa_rec.description;
17549 -- A Bug fix Since we populate the year manufactured into OKL_TXL_ASSETS_B only
17550 -- We cannot use the information after the assets have been put into FA
17551 -- So we decided to populate the year Manufactured into OKL_K_LINES.YEAR_BUILT
17552 -- As the Datatype matches for both.
17553 l_klev_fa_rec.Year_Built := l_talv_fa_rec.year_manufactured;
17554 -- Updating of the Fixed Asset Line and item/Txl Asset Info
17555
17556 -- start NISINHA Bug# 6490572
17557 l_klev_fa_rec.model_number := l_talv_fa_rec.model_number;
17558 l_klev_fa_rec.manufacturer_name := l_talv_fa_rec.manufacturer_name;
17559 --end NISINHA Bug# 6490572
17560 update_fixed_asset_line(p_api_version => p_api_version,
17561 p_init_msg_list => p_init_msg_list,
17562 x_return_status => x_return_status,
17563 x_msg_count => x_msg_count,
17564 x_msg_data => x_msg_data,
17565 P_new_yn => l_new_yn,
17566 p_asset_number => p_asset_number,
17567 p_clev_rec => l_clev_fa_rec,
17568 p_klev_rec => l_klev_fa_rec,
17569 p_cimv_rec => l_cimv_fa_rec,
17570 p_talv_rec => l_talv_fa_rec,
17571 x_clev_rec => x_clev_fa_rec,
17572 x_klev_rec => l_klev_fa_rec_out,
17573 x_cimv_rec => l_cimv_fa_rec_out,
17574 x_talv_rec => l_talv_fa_rec_out);
17575 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17576 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17577 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17578 RAISE OKL_API.G_EXCEPTION_ERROR;
17579 END IF;
17580 -- Updating Asset Lines Details Asset Number
17581 update_asset_line_details(p_api_version => p_api_version,
17582 p_init_msg_list => p_init_msg_list,
17583 x_return_status => x_return_status,
17584 x_msg_count => x_msg_count,
17585 x_msg_data => x_msg_data,
17586 p_asset_number => p_asset_number,
17587 p_original_cost => l_talv_fa_rec_out.original_cost,
17588 p_tal_id => l_talv_fa_rec_out.ID);
17589 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17590 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17591 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17592 RAISE OKL_API.G_EXCEPTION_ERROR;
17593 END IF;
17594 IF p_new_yn = 'Y' THEN
17595 -- Updating of the Install Base Line Process
17596 -- To Get the cle IB Line Record
17597 x_return_status := get_rec_clev(l_clev_ib_rec.id,
17598 r_clev_ib_rec);
17599 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17600 OKL_API.set_message(p_app_name => G_APP_NAME,
17601 p_msg_name => G_FETCHING_INFO,
17602 p_token1 => G_REC_NAME_TOKEN,
17603 p_token1_value => 'OKC_K_LINES_V Record');
17604 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17605 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17606 OKL_API.set_message(p_app_name => G_APP_NAME,
17607 p_msg_name => G_FETCHING_INFO,
17608 p_token1 => G_REC_NAME_TOKEN,
17609 p_token1_value => 'OKC_K_LINES_V Record');
17610 RAISE OKL_API.G_EXCEPTION_ERROR;
17611 END IF;
17612 -- To Get the kle IB Line Record
17613 x_return_status := get_rec_klev(l_clev_ib_rec.id,
17614 r_klev_ib_rec);
17615 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17616 OKL_API.set_message(p_app_name => G_APP_NAME,
17617 p_msg_name => G_FETCHING_INFO,
17618 p_token1 => G_REC_NAME_TOKEN,
17619 p_token1_value => 'OKL_K_LINES_V Record');
17620 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17621 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17622 OKL_API.set_message(p_app_name => G_APP_NAME,
17623 p_msg_name => G_FETCHING_INFO,
17624 p_token1 => G_REC_NAME_TOKEN,
17625 p_token1_value => 'OKL_K_LINES_V Record');
17626 RAISE OKL_API.G_EXCEPTION_ERROR;
17627 END IF;
17628 IF r_clev_ib_rec.id <> r_klev_ib_rec.id THEN
17629 OKL_API.set_message(p_app_name => G_APP_NAME,
17630 p_msg_name => G_LINE_RECORD);
17631 RAISE OKL_API.G_EXCEPTION_ERROR;
17632 END IF;
17633 --Build the clev Top Line Record
17634 l_clev_ib_rec.chr_id := null;
17635 IF (l_clev_ib_rec.cle_id IS NUll OR
17636 l_clev_ib_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17637 l_clev_ib_rec.cle_id := r_clev_ib_rec.cle_id;
17638 END IF;
17639 IF (l_clev_ib_rec.dnz_chr_id IS NUll OR
17640 l_clev_ib_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
17641 l_clev_ib_rec.dnz_chr_id := r_clev_ib_rec.dnz_chr_id;
17642 END IF;
17643 IF (l_clev_ib_rec.lse_id IS NUll OR
17644 l_clev_ib_rec.lse_id = OKL_API.G_MISS_NUM) THEN
17645 l_clev_ib_rec.lse_id := r_clev_ib_rec.lse_id;
17646 END IF;
17647 IF (l_clev_ib_rec.display_sequence IS NUll OR
17648 l_clev_ib_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
17649 l_clev_ib_rec.display_sequence := r_clev_ib_rec.display_sequence;
17650 END IF;
17651 IF (l_clev_ib_rec.exception_yn IS NUll OR
17652 l_clev_ib_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
17653 l_clev_ib_rec.exception_yn := r_clev_ib_rec.exception_yn;
17654 END IF;
17655 IF (l_clev_ib_rec.line_number IS NUll OR
17656 l_clev_ib_rec.line_number = OKL_API.G_MISS_CHAR) THEN
17657 l_clev_ib_rec.line_number := r_clev_ib_rec.line_number;
17658 END IF;
17659 IF (l_clev_ib_rec.sts_code IS NUll OR
17660 l_clev_ib_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
17661 l_clev_ib_rec.sts_code := r_clev_ib_rec.sts_code;
17662 END IF;
17663 --Build the klev Top Line Record
17664 l_klev_ib_rec := r_klev_ib_rec;
17665 -- To Get the cimv ib Line Record
17666 x_return_status := get_rec_cimv(l_clev_ib_rec.id,
17667 l_clev_fin_rec.dnz_chr_id,
17668 r_cimv_ib_rec);
17669 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17670 OKL_API.set_message(p_app_name => G_APP_NAME,
17671 p_msg_name => G_FETCHING_INFO,
17672 p_token1 => G_REC_NAME_TOKEN,
17673 p_token1_value => 'OKC_K_ITEMS_V Record');
17674 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17675 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17676 OKL_API.set_message(p_app_name => G_APP_NAME,
17677 p_msg_name => G_FETCHING_INFO,
17678 p_token1 => G_REC_NAME_TOKEN,
17679 p_token1_value => 'OKC_K_ITEMS_V Record');
17680 RAISE OKL_API.G_EXCEPTION_ERROR;
17681 END IF;
17682 --Build cimv ib item rec
17683 l_cimv_ib_rec.id := r_cimv_ib_rec.id;
17684 IF (l_cimv_ib_rec.exception_yn IS NUll OR
17685 l_cimv_ib_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
17686 l_cimv_ib_rec.exception_yn := r_cimv_ib_rec.exception_yn;
17687 END IF;
17688 IF (l_cimv_ib_rec.dnz_chr_id IS NUll OR
17689 l_cimv_ib_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
17690 l_cimv_ib_rec.dnz_chr_id := r_cimv_ib_rec.dnz_chr_id;
17691 END IF;
17692 IF (l_cimv_ib_rec.cle_id IS NUll OR
17693 l_cimv_ib_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17694 l_cimv_ib_rec.cle_id := r_cimv_ib_rec.cle_id;
17695 END IF;
17696 IF (l_cimv_ib_rec.cle_id IS NUll OR
17697 l_cimv_ib_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17698 l_cimv_ib_rec.cle_id := r_cimv_ib_rec.cle_id;
17699 END IF;
17700 IF (l_cimv_ib_rec.cle_id IS NUll OR
17701 l_cimv_ib_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17702 l_cimv_ib_rec.cle_id := r_cimv_ib_rec.cle_id;
17703 END IF;
17704 IF (l_cimv_ib_rec.object1_id1 IS NUll OR
17705 l_cimv_ib_rec.object1_id1 = OKL_API.G_MISS_CHAR) THEN
17706 l_cimv_ib_rec.object1_id1 := null;
17707 ELSE
17708 l_cimv_ib_rec.object1_id1 := r_cimv_ib_rec.cle_id;
17709 END IF;
17710 IF (l_cimv_ib_rec.object1_id2 IS NUll OR
17711 l_cimv_ib_rec.object1_id2 = OKL_API.G_MISS_CHAR) THEN
17712 l_cimv_ib_rec.object1_id2 := null;
17713 ELSE
17714 l_cimv_ib_rec.object1_id2 := r_cimv_ib_rec.cle_id;
17715 END IF;
17716 -- To Get the itiv ib Line Record
17717 x_return_status := get_rec_itiv(l_clev_ib_rec.id,
17718 r_itiv_ib_rec);
17719 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17720 OKL_API.set_message(p_app_name => G_APP_NAME,
17721 p_msg_name => G_FETCHING_INFO,
17722 p_token1 => G_REC_NAME_TOKEN,
17723 p_token1_value => 'OKL_TXL_ITM_INSTS_V Record');
17724 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17725 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17726 OKL_API.set_message(p_app_name => G_APP_NAME,
17727 p_msg_name => G_FETCHING_INFO,
17728 p_token1 => G_REC_NAME_TOKEN,
17729 p_token1_value => 'OKL_TXL_ITM_INSTS_V Record');
17730 RAISE OKL_API.G_EXCEPTION_ERROR;
17731 END IF;
17732 --Build itiv ib item rec
17733 l_itiv_ib_rec.id := r_itiv_ib_rec.id;
17734 l_itiv_ib_rec.object_version_number := r_itiv_ib_rec.object_version_number;
17735 l_itiv_ib_rec.tas_id := r_itiv_ib_rec.tas_id;
17736 l_itiv_ib_rec.line_number := r_itiv_ib_rec.line_number;
17737 IF (l_itiv_ib_rec.kle_id IS NUll OR
17738 l_itiv_ib_rec.kle_id = OKL_API.G_MISS_NUM) THEN
17739 l_itiv_ib_rec.kle_id := r_itiv_ib_rec.kle_id;
17740 END IF;
17741 IF (l_itiv_ib_rec.instance_number_ib IS NUll OR
17742 l_itiv_ib_rec.instance_number_ib = OKL_API.G_MISS_CHAR) THEN
17743 l_itiv_ib_rec.instance_number_ib := r_itiv_ib_rec.instance_number_ib;
17744 END IF;
17745 -- Since the screen can give only party_site_id via l_itiv_tbl(j).object_id1_new
17746 -- We have to use the below function
17747 lv_object_id1_new := l_itiv_ib_rec.object_id1_new;
17748 x_return_status := get_party_site_id(p_object_id1_new => lv_object_id1_new,
17749 x_object_id1_new => l_itiv_ib_rec.object_id1_new,
17750 x_object_id2_new => l_itiv_ib_rec.object_id2_new);
17751 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17752 OKL_API.set_message(p_app_name => G_APP_NAME,
17753 p_msg_name => G_NO_MATCHING_RECORD,
17754 p_token1 => G_COL_NAME_TOKEN,
17755 p_token1_value => 'Party_site_id');
17756 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17757 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17758 OKL_API.set_message(p_app_name => G_APP_NAME,
17759 p_msg_name => G_NO_MATCHING_RECORD,
17760 p_token1 => G_COL_NAME_TOKEN,
17761 p_token1_value => 'Party_site_id');
17762 RAISE OKL_API.G_EXCEPTION_ERROR;
17763 END IF;
17764 IF (l_itiv_ib_rec.object_id1_new IS NUll OR
17765 l_itiv_ib_rec.object_id1_new = OKL_API.G_MISS_CHAR) THEN
17766 l_itiv_ib_rec.object_id1_new := r_itiv_ib_rec.object_id1_new;
17767 END IF;
17768 IF (l_itiv_ib_rec.object_id2_new IS NUll OR
17769 l_itiv_ib_rec.object_id2_new = OKL_API.G_MISS_CHAR) THEN
17770 l_itiv_ib_rec.object_id2_new := r_itiv_ib_rec.object_id2_new;
17771 END IF;
17772 IF (l_itiv_ib_rec.jtot_object_code_new IS NUll OR
17773 l_itiv_ib_rec.jtot_object_code_new = OKL_API.G_MISS_CHAR) THEN
17774 l_itiv_ib_rec.jtot_object_code_new := r_itiv_ib_rec.jtot_object_code_new;
17775 END IF;
17776 IF (l_itiv_ib_rec.mfg_serial_number_yn IS NUll OR
17777 l_itiv_ib_rec.mfg_serial_number_yn = OKL_API.G_MISS_CHAR) THEN
17778 l_itiv_ib_rec.mfg_serial_number_yn := r_itiv_ib_rec.mfg_serial_number_yn;
17779 END IF;
17780 IF (l_itiv_ib_rec.inventory_item_id IS NUll OR
17781 l_itiv_ib_rec.inventory_item_id = OKL_API.G_MISS_NUM) AND
17782 lv_model_object_id1 = r_itiv_ib_rec.inventory_item_id THEN
17783 l_itiv_ib_rec.inventory_item_id := r_itiv_ib_rec.inventory_item_id;
17784 ELSIF (l_itiv_ib_rec.inventory_item_id IS NOT NUll OR
17785 l_itiv_ib_rec.inventory_item_id <> OKL_API.G_MISS_NUM) AND
17786 lv_model_object_id1 <> r_itiv_ib_rec.inventory_item_id THEN
17787 l_itiv_ib_rec.inventory_item_id := lv_model_object_id1;
17788 ELSIF (l_itiv_ib_rec.inventory_item_id IS NUll OR
17789 l_itiv_ib_rec.inventory_item_id = OKL_API.G_MISS_NUM) OR
17790 lv_model_object_id1 <> r_itiv_ib_rec.inventory_item_id THEN
17791 l_itiv_ib_rec.inventory_item_id := lv_model_object_id1;
17792 END IF;
17793 IF (l_itiv_ib_rec.inventory_org_id IS NUll OR
17794 l_itiv_ib_rec.inventory_org_id = OKL_API.G_MISS_NUM) AND
17795 lv_model_object_id2 = r_itiv_ib_rec.inventory_org_id THEN
17796 l_itiv_ib_rec.inventory_org_id := r_itiv_ib_rec.inventory_org_id;
17797 ELSIF (l_itiv_ib_rec.inventory_org_id IS NOT NUll OR
17798 l_itiv_ib_rec.inventory_org_id <> OKL_API.G_MISS_NUM) AND
17799 lv_model_object_id2 <> r_itiv_ib_rec.inventory_org_id THEN
17800 l_itiv_ib_rec.inventory_org_id := lv_model_object_id2;
17801 ELSIF (l_itiv_ib_rec.inventory_org_id IS NUll OR
17802 l_itiv_ib_rec.inventory_org_id = OKL_API.G_MISS_NUM) OR
17803 lv_model_object_id2 <> r_itiv_ib_rec.inventory_org_id THEN
17804 l_itiv_ib_rec.inventory_org_id := lv_model_object_id2;
17805 END IF;
17806 -- Updating of the ib Line
17807 update_instance_ib_line(p_api_version => p_api_version,
17808 p_init_msg_list => p_init_msg_list,
17809 x_return_status => x_return_status,
17810 x_msg_count => x_msg_count,
17811 x_msg_data => x_msg_data,
17812 p_clev_rec => l_clev_ib_rec,
17813 p_klev_rec => l_klev_ib_rec,
17814 p_cimv_rec => l_cimv_ib_rec,
17815 p_itiv_rec => l_itiv_ib_rec,
17816 x_clev_rec => x_clev_ib_rec,
17817 x_klev_rec => l_klev_ib_rec_out,
17818 x_cimv_rec => l_cimv_ib_rec_out,
17819 x_itiv_rec => l_itiv_ib_rec_out);
17820 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17821 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17822 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17823 RAISE OKL_API.G_EXCEPTION_ERROR;
17824 END IF;
17825 -- Updating of the Instance Line
17826 -- To Get the cle IB Line Record
17827 x_return_status := get_rec_clev(l_clev_ib_rec.cle_id,
17828 r_clev_inst_rec);
17829 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17830 OKL_API.set_message(p_app_name => G_APP_NAME,
17831 p_msg_name => G_FETCHING_INFO,
17832 p_token1 => G_REC_NAME_TOKEN,
17833 p_token1_value => 'OKC_K_LINES_V Record');
17834 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17835 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17836 OKL_API.set_message(p_app_name => G_APP_NAME,
17837 p_msg_name => G_FETCHING_INFO,
17838 p_token1 => G_REC_NAME_TOKEN,
17839 p_token1_value => 'OKC_K_LINES_V Record');
17840 RAISE OKL_API.G_EXCEPTION_ERROR;
17841 END IF;
17842 -- To Get the kle IB Line Record
17843 x_return_status := get_rec_klev(l_clev_ib_rec.cle_id,
17844 r_klev_inst_rec);
17845 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17846 OKL_API.set_message(p_app_name => G_APP_NAME,
17847 p_msg_name => G_FETCHING_INFO,
17848 p_token1 => G_REC_NAME_TOKEN,
17849 p_token1_value => 'OKL_K_LINES_V Record');
17850 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17851 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17852 OKL_API.set_message(p_app_name => G_APP_NAME,
17853 p_msg_name => G_FETCHING_INFO,
17854 p_token1 => G_REC_NAME_TOKEN,
17855 p_token1_value => 'OKL_K_LINES_V Record');
17856 RAISE OKL_API.G_EXCEPTION_ERROR;
17857 END IF;
17858 IF r_clev_inst_rec.id <> r_klev_inst_rec.id THEN
17859 OKL_API.set_message(p_app_name => G_APP_NAME,
17860 p_msg_name => G_LINE_RECORD);
17861 RAISE OKL_API.G_EXCEPTION_ERROR;
17862 END IF;
17863 l_clev_inst_rec := r_clev_inst_rec;
17864 l_klev_inst_rec := r_klev_inst_rec;
17865 -- upating of the Instance Line
17866 update_instance_line(p_api_version => p_api_version,
17867 p_init_msg_list => p_init_msg_list,
17868 x_return_status => x_return_status,
17869 x_msg_count => x_msg_count,
17870 x_msg_data => x_msg_data,
17871 p_clev_rec => l_clev_inst_rec,
17872 p_klev_rec => l_klev_inst_rec,
17873 p_itiv_rec => l_itiv_inst_rec,
17874 x_clev_rec => l_clev_inst_rec_out,
17875 x_klev_rec => l_klev_inst_rec_out,
17876 x_itiv_rec => l_itiv_inst_rec_out);
17877 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17878 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17879 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17880 RAISE OKL_API.G_EXCEPTION_ERROR;
17881 END IF;
17882 ELSIF p_new_yn = 'N' THEN
17883 FOR r_asset_iti IN c_asset_iti(p_asset_number => p_asset_number,
17884 p_dnz_chr_id => x_clev_fa_rec.dnz_chr_id) LOOP
17885 -- To Get the itiv ib Line Record
17886 x_return_status := get_rec_itiv(r_asset_iti.id,
17887 n_itiv_ib_rec);
17888 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17889 OKL_API.set_message(p_app_name => G_APP_NAME,
17890 p_msg_name => G_FETCHING_INFO,
17891 p_token1 => G_REC_NAME_TOKEN,
17892 p_token1_value => 'OKL_TXL_ITM_INSTS_V Record');
17893 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
17894 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17895 OKL_API.set_message(p_app_name => G_APP_NAME,
17896 p_msg_name => G_FETCHING_INFO,
17897 p_token1 => G_REC_NAME_TOKEN,
17898 p_token1_value => 'OKL_TXL_ITM_INSTS_V Record');
17899 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
17900 END IF;
17901 n_itiv_ib_rec.object_id1_new := p_itiv_ib_rec.object_id1_new;
17902 n_itiv_ib_rec.object_id1_old := p_itiv_ib_rec.object_id1_new;
17903 OKL_TXL_ITM_INSTS_PUB.update_txl_itm_insts(p_api_version => p_api_version,
17904 p_init_msg_list => p_init_msg_list,
17905 x_return_status => x_return_status,
17906 x_msg_count => x_msg_count,
17907 x_msg_data => x_msg_data,
17908 p_iipv_rec => n_itiv_ib_rec,
17909 x_iipv_rec => nx_itiv_ib_rec);
17910 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17911 OKL_API.set_message(p_app_name => G_APP_NAME,
17912 p_msg_name => G_ITI_ID);
17913 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
17914 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17915 OKL_API.set_message(p_app_name => G_APP_NAME,
17916 p_msg_name => G_ITI_ID);
17917 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
17918 END IF;
17919 END LOOP;
17920 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17921 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17922 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17923 RAISE OKL_API.G_EXCEPTION_ERROR;
17924 END IF;
17925 END IF;
17926
17927 -- rravikir modified.
17928 -- Update the OKL_TXL_ITM_INSTS table, when the item or install site gets changed.
17929 ln_txl_itm_id := l_itiv_ib_rec_out.id;
17930 lv_object_id1 := l_itiv_ib_rec_out.object_id1_new;
17931 lv_object_id2 := l_itiv_ib_rec_out.object_id2_new;
17932 ln_inv_itm_id := l_itiv_ib_rec_out.inventory_item_id;
17933 ln_inv_org_id := l_itiv_ib_rec_out.inventory_org_id;
17934 lv_jtot_object_code_new := l_itiv_ib_rec_out.jtot_object_code_new;
17935 l_top_line_id := x_clev_fin_rec.id;
17936 FOR r_get_txl_itm_insts IN c_get_txl_itm_insts(p_top_line_id => l_top_line_id,
17937 p_txl_inst_id => ln_txl_itm_id) LOOP
17938 k_itiv_ib_rec.id := r_get_txl_itm_insts.id;
17939 k_itiv_ib_rec.object_id1_new := lv_object_id1;
17940 k_itiv_ib_rec.object_id2_new := lv_object_id2;
17941 k_itiv_ib_rec.inventory_item_id := ln_inv_itm_id;
17942 k_itiv_ib_rec.inventory_org_id := ln_inv_org_id;
17943 k_itiv_ib_rec.jtot_object_code_new := lv_jtot_object_code_new;
17944 OKL_TXL_ITM_INSTS_PUB.update_txl_itm_insts(p_api_version => p_api_version,
17945 p_init_msg_list => p_init_msg_list,
17946 x_return_status => x_return_status,
17947 x_msg_count => x_msg_count,
17948 x_msg_data => x_msg_data,
17949 p_iipv_rec => k_itiv_ib_rec,
17950 x_iipv_rec => kx_itiv_ib_rec);
17951 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17952 OKL_API.set_message(p_app_name => G_APP_NAME,
17953 p_msg_name => G_ITI_ID);
17954 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
17955 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17956 OKL_API.set_message(p_app_name => G_APP_NAME,
17957 p_msg_name => G_ITI_ID);
17958 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
17959 END IF;
17960 END LOOP;
17961 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17962 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17963 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17964 RAISE OKL_API.G_EXCEPTION_ERROR;
17965 END IF;
17966 -- end rravikir
17967
17968 -- We need to change the status of the header whenever there is updating happening
17969 -- after the contract status is approved
17970 IF (l_clev_inst_rec_out.dnz_chr_id is NOT NULL) AND
17971 (l_clev_inst_rec_out.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
17972 --cascade edit status on to lines
17973 okl_contract_status_pub.cascade_lease_status_edit
17974 (p_api_version => p_api_version,
17975 p_init_msg_list => p_init_msg_list,
17976 x_return_status => x_return_status,
17977 x_msg_count => x_msg_count,
17978 x_msg_data => x_msg_data,
17979 p_chr_id => l_clev_inst_rec_out.dnz_chr_id);
17980 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17981 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17982 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17983 RAISE OKL_API.G_EXCEPTION_ERROR;
17984 END IF;
17985 END IF;
17986 End If; --release asset : Bug# 3533936
17987 OKL_API.END_ACTIVITY (x_msg_count,
17988 x_msg_data );
17989 EXCEPTION
17990 WHEN OKL_API.G_EXCEPTION_ERROR THEN
17991 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
17992 l_api_name,
17993 G_PKG_NAME,
17994 'OKL_API.G_RET_STS_ERROR',
17995 x_msg_count,
17996 x_msg_data,
17997 '_PVT');
17998 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
17999 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
18000 l_api_name,
18001 G_PKG_NAME,
18002 'OKL_API.G_RET_STS_UNEXP_ERROR',
18003 x_msg_count,
18004 x_msg_data,
18005 '_PVT');
18006 WHEN OTHERS THEN
18007 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
18008 l_api_name,
18009 G_PKG_NAME,
18010 'OTHERS',
18011 x_msg_count,
18012 x_msg_data,
18013 '_PVT');
18014 END update_all_line;
18015 -------------------------------------------------------------------------------------------------------
18016 ----------------- Main Process for Creation of instance and Install base line ------------------------
18017 -------------------------------------------------------------------------------------------------------
18018 PROCEDURE create_ints_ib_line(
18019 p_api_version IN NUMBER,
18020 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
18021 x_return_status OUT NOCOPY VARCHAR2,
18022 x_msg_count OUT NOCOPY NUMBER,
18023 x_msg_data OUT NOCOPY VARCHAR2,
18024 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
18025 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
18026 p_current_units IN OKL_TXL_ASSETS_V.CURRENT_UNITS%TYPE,
18027 p_clev_ib_rec IN clev_rec_type,
18028 p_itiv_ib_tbl IN itiv_tbl_type,
18029 x_clev_ib_tbl OUT NOCOPY clev_tbl_type,
18030 x_itiv_ib_tbl OUT NOCOPY itiv_tbl_type,
18031 x_clev_fin_rec OUT NOCOPY clev_rec_type,
18032 x_klev_fin_rec OUT NOCOPY klev_rec_type,
18033 x_cimv_model_rec OUT NOCOPY cimv_rec_type,
18034 x_cimv_fa_rec OUT NOCOPY cimv_rec_type,
18035 x_talv_fa_rec OUT NOCOPY talv_rec_type) IS
18036 l_api_name CONSTANT VARCHAR2(30) := 'CREATE_INTS_IB_LINE';
18037 l_clev_ib_rec clev_rec_type;
18038 l_klev_ib_rec klev_rec_type;
18039 l_clev_inst_rec clev_rec_type;
18040 l_klev_inst_rec klev_rec_type;
18041 l_cimv_ib_rec cimv_rec_type;
18042 l_itiv_ib_tbl itiv_tbl_type := p_itiv_ib_tbl;
18043 l_clev_inst_rec_out clev_rec_type;
18044 l_klev_inst_rec_out klev_rec_type;
18045 l_itiv_inst_tbl_out itiv_tbl_type;
18046 l_clev_ib_rec_out clev_rec_type;
18047 l_cimv_ib_rec_out cimv_rec_type;
18048 l_klev_ib_rec_out klev_rec_type;
18049 l_itiv_ib_tbl_out itiv_tbl_type;
18050 x_clev_ib_rec clev_rec_type;
18051 l_trxv_ib_rec_out trxv_rec_type;
18052 lv_object_id1_new OKL_TXL_ITM_INSTS_V.OBJECT_ID1_NEW%TYPE;
18053 j NUMBER := 0;
18054 ln_dummy NUMBER := 0;
18055 ln_dummy1 NUMBER := 0;
18056 -- rravikir added
18057 l_itiv_rec itiv_rec_type;
18058 lk_itiv_rec itiv_rec_type;
18059 lx_itiv_rec itiv_rec_type;
18060 k NUMBER := 0;
18061 ln_remain_inst NUMBER := 0;
18062 lb_record_created BOOLEAN := FALSE;
18063 lb_update_oec_required BOOLEAN := FALSE;
18064 ln_item_id OKL_TXL_ITM_INSTS.INVENTORY_ITEM_ID%TYPE;
18065 -- end
18066 ln_final_current_units OKC_K_ITEMS_V.NUMBER_OF_ITEMS%TYPE;
18067 ln_model_line_id OKC_K_LINES_V.ID%TYPE := OKL_API.G_MISS_NUM;
18068 ln_fa_line_id OKC_K_LINES_V.ID%TYPE := OKL_API.G_MISS_NUM;
18069 r_clev_model_rec clev_rec_type;
18070 r_klev_model_rec klev_rec_type;
18071 r_cimv_model_rec cimv_rec_type;
18072 r_clev_addon_rec clev_rec_type;
18073 r_klev_addon_rec klev_rec_type;
18074 r_cimv_addon_rec cimv_rec_type;
18075 rx_clev_addon_rec clev_rec_type;
18076 rx_klev_addon_rec klev_rec_type;
18077 rx_cimv_addon_rec cimv_rec_type;
18078 r_clev_fa_rec clev_rec_type;
18079 r_klev_fa_rec klev_rec_type;
18080 r_cimv_fa_rec cimv_rec_type;
18081 r_talv_fa_rec talv_rec_type;
18082 l_clev_model_rec_out clev_rec_type;
18083 l_klev_model_rec_out klev_rec_type;
18084 l_clev_fa_rec_out clev_rec_type;
18085 l_klev_fa_rec_out klev_rec_type;
18086 ln_model_qty OKC_K_ITEMS_V.NUMBER_OF_ITEMS%TYPE := 0;
18087 ln_klev_fin_oec OKL_K_LINES_V.OEC%TYPE := 0;
18088 ln_klev_fin_res OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
18089 ln_klev_fin_cap OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
18090
18091 CURSOR c_remain_inst_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
18092 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
18093 SELECT count(cle.id)
18094 FROM okc_subclass_top_line stl,
18095 okc_line_styles_b lse2,
18096 okc_line_styles_b lse1,
18097 okc_k_lines_v cle
18098 WHERE cle.cle_id = p_cle_id
18099 AND cle.dnz_chr_id = p_chr_id
18100 AND cle.lse_id = lse1.id
18101 AND lse1.lty_code = G_INST_LINE_LTY_CODE
18102 AND lse1.lse_parent_id = lse2.id
18103 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
18104 AND lse2.id = stl.lse_id
18105 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
18106
18107 CURSOR c_model_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
18108 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
18109 SELECT cle.id
18110 FROM okc_subclass_top_line stl,
18111 okc_line_styles_b lse2,
18112 okc_line_styles_b lse1,
18113 okc_k_lines_v cle
18114 WHERE cle.cle_id = p_cle_id
18115 AND cle.dnz_chr_id = p_chr_id
18116 AND cle.lse_id = lse1.id
18117 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
18118 AND lse1.lse_parent_id = lse2.id
18119 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
18120 AND lse2.id = stl.lse_id
18121 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
18122
18123 CURSOR c_fa_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
18124 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
18125 SELECT cle.id
18126 FROM okc_subclass_top_line stl,
18127 okc_line_styles_b lse2,
18128 okc_line_styles_b lse1,
18129 okc_k_lines_v cle
18130 WHERE cle.cle_id = p_cle_id
18131 AND cle.dnz_chr_id = p_chr_id
18132 AND cle.lse_id = lse1.id
18133 AND lse1.lty_code = G_FA_LINE_LTY_CODE
18134 AND lse1.lse_parent_id = lse2.id
18135 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
18136 AND lse2.id = stl.lse_id
18137 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
18138
18139 CURSOR c_addon_line_id(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
18140 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
18141 SELECT cle.id
18142 FROM okc_subclass_top_line stl,
18143 okc_line_styles_b lse3,
18144 okc_line_styles_b lse2,
18145 okc_line_styles_b lse1,
18146 okc_k_lines_b cle
18147 WHERE cle.dnz_chr_id = p_chr_id
18148 AND cle.lse_id = lse1.id
18149 AND lse1.lty_code = G_ADDON_LINE_LTY_CODE
18150 AND lse1.lse_parent_id = lse2.id
18151 AND lse2.lty_code = G_MODEL_LINE_LTY_CODE
18152 AND lse2.lse_parent_id = lse3.id
18153 AND lse3.lty_code = G_FIN_LINE_LTY_CODE
18154 AND lse3.id = stl.lse_id
18155 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE)
18156 AND cle.cle_id in (SELECT cle.id
18157 FROM okc_subclass_top_line stl,
18158 okc_line_styles_b lse2,
18159 okc_line_styles_b lse1,
18160 okc_k_lines_b cle
18161 WHERE cle.cle_id = p_cle_id
18162 AND cle.dnz_chr_id = p_chr_id
18163 AND cle.lse_id = lse1.id
18164 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
18165 AND lse1.lse_parent_id = lse2.id
18166 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
18167 AND lse2.id = stl.lse_id
18168 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE));
18169
18170 CURSOR c_model_item(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
18171 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
18172 SELECT cim.number_of_items
18173 FROM okc_subclass_top_line stl,
18174 okc_line_styles_b lse2,
18175 okc_line_styles_b lse1,
18176 okc_k_items_v cim,
18177 okc_k_lines_v cle
18178 WHERE cle.cle_id = p_cle_id
18179 AND cle.dnz_chr_id = p_chr_id
18180 AND cle.id = cim.cle_id
18181 AND cim.dnz_chr_id = cle.dnz_chr_id
18182 AND cle.lse_id = lse1.id
18183 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
18184 AND lse1.lse_parent_id = lse2.id
18185 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
18186 AND lse2.id = stl.lse_id
18187 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
18188
18189 --akrangan Bug# 5362977 start
18190 --cursor to check if contract has re-lease assets
18191 --Bug# 15992711 : The re-leased flag is no longer checked at contract header
18192 -- but needs to be validated at contract line
18193 -- Cursor modified to include validation at asset line level
18194 /*CURSOR l_chk_rel_ast_csr (p_chr_id IN NUMBER) IS
18195 SELECT 'Y'
18196 FROM OKC_RULES_B rul
18197 WHERE rul.dnz_chr_id = p_chr_id
18198 AND rul.rule_information_category = 'LARLES'
18199 AND NVL(rule_information1,'N') = 'Y';*/
18200
18201 CURSOR l_chk_rel_ast_csr (p_dnz_chr_id IN OKC_K_LINES_V.DNZ_CHR_ID%TYPE
18202 ,p_asset_num IN OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
18203 SELECT NVL(kle_top.re_lease_yn,'N') release_flag
18204 FROM okl_txl_assets_b txlb,
18205 okc_line_styles_b lseb,
18206 okc_k_lines_b cleb_top,
18207 okl_k_lines kle_top
18208 WHERE txlb.kle_id = cleb_top.id
18209 AND cleb_top.lse_id = lseb.id
18210 AND lseb.lty_code = 'FIXED_ASSET'
18211 AND cleb_top.dnz_chr_id = p_dnz_chr_id
18212 AND kle_top.id = cleb_top.id
18213 AND txlb.asset_number = p_asset_num;
18214 -- Bug# 15992711 : End of Modifications
18215
18216 l_chk_rel_ast VARCHAR2(1);
18217
18218 --cursor to check if the contract is undergoing on-line rebook
18219 cursor l_chk_rbk_csr(p_chr_id IN NUMBER) is
18220 SELECT '!'
18221 FROM okc_k_headers_b chr,
18222 okl_trx_contracts ktrx
18223 WHERE ktrx.khr_id_new = chr.id
18224 AND ktrx.tsu_code = 'ENTERED'
18225 AND ktrx.rbr_code is NOT NULL
18226 AND ktrx.tcn_type = 'TRBK'
18227 --rkuttiya added for 12.1.1 multi GAAP
18228 AND ktrx.representation_type = 'PRIMARY'
18229 --
18230 AND chr.id = p_chr_id
18231 AND chr.orig_system_source_code = 'OKL_REBOOK';
18232
18233 l_rbk_khr VARCHAR2(1);
18234 --akrangan Bug# 5362977 end
18235
18236
18237 BEGIN
18238 x_return_status := OKL_API.G_RET_STS_SUCCESS;
18239 -- Call start_activity to create savepoint, check compatibility
18240 -- and initialize message list
18241 x_return_status := OKL_API.START_ACTIVITY (
18242 l_api_name
18243 ,p_init_msg_list
18244 ,'_PVT'
18245 ,x_return_status);
18246 -- Check if activity started successfully
18247 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18248 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18249 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18250 RAISE OKL_API.G_EXCEPTION_ERROR;
18251 END IF;
18252 -- Get the Ib rec first and then we can get the instance line above the IB line
18253 x_return_status := get_rec_clev(p_clev_ib_rec.id,
18254 l_clev_ib_rec);
18255 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18256 OKL_API.set_message(p_app_name => G_APP_NAME,
18257 p_msg_name => G_FETCHING_INFO,
18258 p_token1 => G_REC_NAME_TOKEN,
18259 p_token1_value => 'OKC_K_LINES_V Record');
18260 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18261 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18262 OKL_API.set_message(p_app_name => G_APP_NAME,
18263 p_msg_name => G_FETCHING_INFO,
18264 p_token1 => G_REC_NAME_TOKEN,
18265 p_token1_value => 'OKC_K_LINES_V Record');
18266 RAISE OKL_API.G_EXCEPTION_ERROR;
18267 END IF;
18268 -- Now getting the inst line
18269 x_return_status := get_rec_clev(l_clev_ib_rec.cle_id,
18270 l_clev_inst_rec);
18271 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18272 OKL_API.set_message(p_app_name => G_APP_NAME,
18273 p_msg_name => G_FETCHING_INFO,
18274 p_token1 => G_REC_NAME_TOKEN,
18275 p_token1_value => 'OKC_K_LINES_V Record');
18276 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18277 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18278 OKL_API.set_message(p_app_name => G_APP_NAME,
18279 p_msg_name => G_FETCHING_INFO,
18280 p_token1 => G_REC_NAME_TOKEN,
18281 p_token1_value => 'OKC_K_LINES_V Record');
18282 RAISE OKL_API.G_EXCEPTION_ERROR;
18283 END IF;
18284
18285 -- Since a record is already created in TXL_ITM_INSTS, we need to update this
18286 -- record, and create 'n-1' records.
18287 -- rravikir modified
18288 IF (l_clev_inst_rec.id IS NOT NULL OR
18289 l_clev_inst_rec.id <> OKL_API.G_MISS_NUM) THEN
18290 -- We are here b'cause we have to update the okl_txl_itm_inst rec
18291 -- So we are calling the update api for the okl_txl_itm_insts rec
18292
18293 -- Now getting the item information OKL_TXL_ITM_INSTS
18294 x_return_status := get_rec_itiv(l_clev_ib_rec.id,
18295 l_itiv_rec);
18296 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18297 OKL_API.set_message(p_app_name => G_APP_NAME,
18298 p_msg_name => G_FETCHING_INFO,
18299 p_token1 => G_REC_NAME_TOKEN,
18300 p_token1_value => 'OKC_K_LINES_V Record');
18301 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18302 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18303 OKL_API.set_message(p_app_name => G_APP_NAME,
18304 p_msg_name => G_FETCHING_INFO,
18305 p_token1 => G_REC_NAME_TOKEN,
18306 p_token1_value => 'OKC_K_LINES_V Record');
18307 RAISE OKL_API.G_EXCEPTION_ERROR;
18308 END IF;
18309 -- checking for mfg_serial_number_yn flag
18310 k := l_itiv_ib_tbl.FIRST;
18311 IF l_itiv_ib_tbl(k).mfg_serial_number_yn <> 'Y' THEN
18312 OKL_API.set_message(p_app_name => G_APP_NAME,
18313 p_msg_name => G_REQUIRED_VALUE,
18314 p_token1 => G_COL_NAME_TOKEN,
18315 p_token1_value => 'mfg_serial_number_yn cannot be N');
18316 x_return_status := OKL_API.G_RET_STS_ERROR;
18317 IF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18318 RAISE OKL_API.G_EXCEPTION_ERROR;
18319 END IF;
18320 END IF;
18321
18322 l_itiv_rec.object_id1_new := l_itiv_ib_tbl(k).object_id1_new;
18323 l_itiv_rec.object_id2_new := l_itiv_ib_tbl(k).object_id2_new;
18324 l_itiv_rec.mfg_serial_number_yn := l_itiv_ib_tbl(k).mfg_serial_number_yn;
18325 l_itiv_rec.serial_number := l_itiv_ib_tbl(k).serial_number;
18326 l_itiv_rec.dnz_cle_id := l_itiv_ib_tbl(k).dnz_cle_id;
18327
18328 ln_item_id := l_itiv_rec.inventory_item_id;
18329
18330 -- Check for uniqueness of Serial number
18331 x_return_status := is_duplicate_serial_number(p_serial_number => l_itiv_rec.serial_number,
18332 p_item_id => l_itiv_rec.inventory_item_id);
18333 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18334 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18335 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18336 RAISE OKL_API.G_EXCEPTION_ERROR;
18337 END IF;
18338 l_itiv_rec.object_id2_new := '#';
18339
18340 update_txl_itm_insts(p_api_version => p_api_version,
18341 p_init_msg_list => p_init_msg_list,
18342 x_return_status => x_return_status,
18343 x_msg_count => x_msg_count,
18344 x_msg_data => x_msg_data,
18345 p_itiv_rec => l_itiv_rec,
18346 x_itiv_rec => lx_itiv_rec);
18347 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18348 OKL_API.set_message(p_app_name => G_APP_NAME,
18349 p_msg_name => G_ITI_ID);
18350 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18351 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18352 OKL_API.set_message(p_app_name => G_APP_NAME,
18353 p_msg_name => G_ITI_ID);
18354 RAISE OKL_API.G_EXCEPTION_ERROR;
18355 END IF;
18356 lb_record_created := TRUE;
18357 END IF;
18358 -- end rravikir modified
18359
18360
18361 -- We need to verify the p_current_units is same as the existing NUmber of items
18362 -- in the model line
18363
18364 -- rravikir modified
18365 -- Should be able to create more # of serial numbers than the current units.
18366 OPEN c_model_item(l_clev_inst_rec.cle_id,
18367 l_clev_inst_rec.dnz_chr_id);
18368 IF c_model_item%NOTFOUND THEN
18369 OKL_API.set_message(p_app_name => G_APP_NAME,
18370 p_msg_name => G_ITEM_RECORD);
18371 RAISE OKL_API.G_EXCEPTION_ERROR;
18372 END IF;
18373 FETCH c_model_item INTO ln_model_qty;
18374 CLOSE c_model_item;
18375
18376 -- If the serial #'s entered is not equal to the units in model line,
18377 -- we should update the fixed line , model line and also update the top line
18378 -- with latest OEC
18379 IF ln_model_qty <> l_itiv_ib_tbl.COUNT THEN
18380
18381 --akrangan Bug# 5362977 start
18382 -- Do not allow update of units if the contract has Re-lease assets
18383 l_chk_rel_ast := 'N';
18384
18385 -- Bug# 15992711 : Change in number of parameters passed to new cursor
18386 -- OPEN l_chk_rel_ast_csr(p_chr_id => l_clev_inst_rec.dnz_chr_id);
18387 OPEN l_chk_rel_ast_csr(l_clev_inst_rec.dnz_chr_id
18388 ,p_asset_number);
18389 -- Bug# 15992711 : End of Modifications
18390
18391 FETCH l_chk_rel_ast_csr INTO l_chk_rel_ast;
18392 CLOSE l_chk_rel_ast_csr;
18393
18394 IF l_chk_rel_ast = 'Y' THEN
18395 OKL_API.set_message(p_app_name => G_APP_NAME,
18396 p_msg_name => 'OKL_LA_REL_UNITS_NO_UPDATE');
18397 RAISE OKL_API.G_EXCEPTION_ERROR;
18398 ELSE
18399
18400 lb_update_oec_required := TRUE;
18401 END IF;
18402 --akrangan Bug# 5362977 end
18403 END IF;
18404
18405 -- end modified
18406
18407 -- We have to make sure the count of the itiv_tbl
18408 -- should be equal to qty of items
18409 -- Since inst tbl and ib inst are same
18410 -- it is Good enough to do one
18411 ln_dummy1 := l_itiv_ib_tbl.COUNT - 1;
18412 IF ln_dummy1 > 0 THEN
18413 --ln_dummy1 := l_itiv_ib_tbl.COUNT;
18414 -- We have intialize the J , since there could be any index integer
18415 j := l_itiv_ib_tbl.FIRST;
18416 j := l_itiv_ib_tbl.NEXT(j);
18417 LOOP
18418 IF (l_itiv_ib_tbl(j).mfg_serial_number_yn IS NULL OR
18419 l_itiv_ib_tbl(j).mfg_serial_number_yn = OKL_API.G_MISS_CHAR) THEN
18420 x_return_status := OKL_API.G_RET_STS_ERROR;
18421 OKL_API.set_message(p_app_name => G_APP_NAME,
18422 p_msg_name => G_REQUIRED_VALUE,
18423 p_token1 => G_COL_NAME_TOKEN,
18424 p_token1_value => 'mfg_serial_number_yn');
18425 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18426 ELSIF l_itiv_ib_tbl(j).mfg_serial_number_yn <> 'Y' THEN
18427 OKL_API.set_message(p_app_name => G_APP_NAME,
18428 p_msg_name => G_REQUIRED_VALUE,
18429 p_token1 => G_COL_NAME_TOKEN,
18430 p_token1_value => 'mfg_serial_number_yn cannot be N');
18431 x_return_status := OKL_API.G_RET_STS_ERROR;
18432 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18433 END IF;
18434 EXIT WHEN (j = l_itiv_ib_tbl.LAST);
18435 j := l_itiv_ib_tbl.NEXT(j);
18436 END LOOP;
18437 IF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18438 RAISE OKL_API.G_EXCEPTION_ERROR;
18439 END IF;
18440 ELSIF (NOT lb_record_created) THEN
18441 OKL_API.set_message(p_app_name => G_APP_NAME,
18442 p_msg_name => G_CNT_REC);
18443 RAISE OKL_API.G_EXCEPTION_ERROR;
18444 END IF;
18445 -- Since we have to create the instance
18446 -- Depending of the qty in l_cimv_model_rec.number_of_items
18447 -- we have use loop
18448 ln_dummy := l_itiv_ib_tbl.COUNT - 1;
18449 IF (ln_dummy > 0) THEN
18450 j := l_itiv_ib_tbl.FIRST;
18451 j := l_itiv_ib_tbl.NEXT(j);
18452 FOR i IN 1..ln_dummy LOOP
18453 -- 4414408 Assign the line style ID directly
18454 /*
18455 -- Creation of the Instance Line Process
18456 -- Getting the Line style Info
18457 x_return_status := get_lse_id(p_lty_code => G_INST_LINE_LTY_CODE,
18458 x_lse_id => l_clev_inst_rec.lse_id);
18459 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18460 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18461 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18462 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18463 END IF;
18464 */
18465 IF (l_clev_inst_rec.display_sequence IS NUll OR
18466 l_clev_inst_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
18467 l_clev_inst_rec.display_sequence := l_clev_inst_rec.display_sequence + 1;
18468 END IF;
18469 -- Required cle Line Information
18470 -- Since we have a local Record of the Instance line
18471 -- We can you the same
18472 l_clev_inst_rec.lse_id := G_INST_LINE_LTY_ID;
18473 l_clev_inst_rec.chr_id := null;
18474 l_clev_inst_rec.cle_id := l_clev_inst_rec.cle_id;
18475 l_clev_inst_rec.dnz_chr_id := l_clev_inst_rec.dnz_chr_id;
18476 l_clev_inst_rec.exception_yn := 'N';
18477 IF (l_itiv_ib_tbl(j).instance_number_ib IS NULL OR
18478 l_itiv_ib_tbl(j).instance_number_ib = OKL_API.G_MISS_CHAR) THEN
18479 x_return_status := generate_instance_number_ib(x_instance_number_ib => l_itiv_ib_tbl(j).instance_number_ib);
18480 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18481 OKL_API.set_message(p_app_name => G_APP_NAME,
18482 p_msg_name => G_GEN_INST_NUM_IB);
18483 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18484 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18485 OKL_API.set_message(p_app_name => G_APP_NAME,
18486 p_msg_name => G_GEN_INST_NUM_IB);
18487 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18488 END IF;
18489 l_itiv_ib_tbl(j).instance_number_ib := p_asset_number||' '||l_itiv_ib_tbl(j).instance_number_ib;
18490 END IF;
18491
18492 -- Creation of the Instance Line
18493 Create_instance_line(p_api_version => p_api_version,
18494 p_init_msg_list => p_init_msg_list,
18495 x_return_status => x_return_status,
18496 x_msg_count => x_msg_count,
18497 x_msg_data => x_msg_data,
18498 p_clev_rec => l_clev_inst_rec,
18499 p_klev_rec => l_klev_inst_rec,
18500 p_itiv_rec => l_itiv_ib_tbl(j),
18501 x_clev_rec => l_clev_inst_rec_out,
18502 x_klev_rec => l_klev_inst_rec_out,
18503 x_itiv_rec => l_itiv_ib_tbl_out(j));
18504 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18505 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18506 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18507 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18508 END IF;
18509 -- 4414408 Assign the line style ID directly
18510 /*
18511 -- Creation of the ib Line Process
18512 -- Getting the Line style Info
18513 x_return_status := get_lse_id(p_lty_code => G_IB_LINE_LTY_CODE,
18514 x_lse_id => l_clev_ib_rec.lse_id);
18515 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18516 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18517 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18518 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18519 END IF;
18520 */
18521 IF (l_clev_ib_rec.display_sequence IS NUll OR
18522 l_clev_ib_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
18523 l_clev_ib_rec.display_sequence := l_clev_ib_rec_out.display_sequence + 1;
18524 END IF;
18525 -- Required cle Line Information
18526 l_clev_ib_rec.lse_id := G_IB_LINE_LTY_ID;
18527 l_clev_ib_rec.chr_id := null;
18528 l_clev_ib_rec.cle_id := l_clev_inst_rec_out.id;
18529 l_clev_ib_rec.dnz_chr_id := l_clev_inst_rec_out.dnz_chr_id;
18530 l_clev_ib_rec.exception_yn := 'N';
18531 -- Required Item Information
18532 l_cimv_ib_rec.exception_yn := 'N';
18533 l_cimv_ib_rec.object1_id1 := null;
18534 l_cimv_ib_rec.object1_id2 := null;
18535 -- Since the screen can give only party_site_id via l_itiv_tbl(j).object_id1_new
18536 -- We have to use the below function
18537 lv_object_id1_new := l_itiv_ib_tbl(j).object_id1_new;
18538 x_return_status := get_party_site_id(p_object_id1_new => lv_object_id1_new,
18539 x_object_id1_new => l_itiv_ib_tbl(j).object_id1_new,
18540 x_object_id2_new => l_itiv_ib_tbl(j).object_id2_new);
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_NO_MATCHING_RECORD,
18544 p_token1 => G_COL_NAME_TOKEN,
18545 p_token1_value => 'Party_site_id');
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_NO_MATCHING_RECORD,
18550 p_token1 => G_COL_NAME_TOKEN,
18551 p_token1_value => 'Party_site_id');
18552 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18553 END IF;
18554
18555 -- Check for uniqueness of Serial number
18556 x_return_status := is_duplicate_serial_number(p_serial_number => l_itiv_ib_tbl(j).serial_number,
18557 p_item_id => ln_item_id);
18558 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18559 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18560 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18561 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18562 END IF;
18563
18564 -- Creation of the ib Line
18565 Create_instance_ib_line(p_api_version => p_api_version,
18566 p_init_msg_list => p_init_msg_list,
18567 x_return_status => x_return_status,
18568 x_msg_count => x_msg_count,
18569 x_msg_data => x_msg_data,
18570 p_clev_rec => l_clev_ib_rec,
18571 p_klev_rec => l_klev_ib_rec,
18572 p_cimv_rec => l_cimv_ib_rec,
18573 p_itiv_rec => l_itiv_ib_tbl(j),
18574 x_clev_rec => x_clev_ib_rec,
18575 x_klev_rec => l_klev_ib_rec_out,
18576 x_cimv_rec => l_cimv_ib_rec_out,
18577 x_trxv_rec => l_trxv_ib_rec_out,
18578 x_itiv_rec => x_itiv_ib_tbl(j));
18579 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18580 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18581 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18582 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18583 END IF;
18584 EXIT WHEN (j = l_itiv_ib_tbl.LAST);
18585 x_clev_ib_tbl(i) := x_clev_ib_rec;
18586 j := l_itiv_ib_tbl.NEXT(j);
18587 END LOOP;
18588 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18589 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18590 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18591 RAISE OKL_API.G_EXCEPTION_ERROR;
18592 END IF;
18593 ELSIF (NOT lb_record_created) THEN
18594 OKL_API.set_message(p_app_name => G_APP_NAME,
18595 p_msg_name => G_CNT_REC);
18596 RAISE OKL_API.G_EXCEPTION_ERROR;
18597 END IF; -- End if (ln_dummy > 0)
18598
18599 -- We need to execute the following 'IF' loop, when the current units
18600 -- is changed, by editing more or less serial #'s.
18601 IF (lb_update_oec_required) THEN
18602 -- we should get the remaining inst line , so that we can update
18603 -- the fixed line , model line and also update the top line with latest OEC
18604 OPEN c_remain_inst_line(l_clev_inst_rec.cle_id,
18605 l_clev_inst_rec.dnz_chr_id);
18606 IF c_remain_inst_line%NOTFOUND THEN
18607 OKL_API.set_message(p_app_name => G_APP_NAME,
18608 p_msg_name => G_DELETING_INSTS_LINE);
18609 RAISE OKL_API.G_EXCEPTION_ERROR;
18610 END IF;
18611 FETCH c_remain_inst_line INTO ln_remain_inst;
18612 CLOSE c_remain_inst_line;
18613
18614 -- To get the Model Line
18615 -- Since we have update the model line
18616 OPEN c_model_line(l_clev_inst_rec.cle_id,
18617 l_clev_inst_rec.dnz_chr_id);
18618 IF c_model_line%NOTFOUND THEN
18619 OKL_API.set_message(p_app_name => G_APP_NAME,
18620 p_msg_name => G_NO_MATCHING_RECORD,
18621 p_token1 => G_COL_NAME_TOKEN,
18622 p_token1_value => 'Model Asset Line record');
18623 RAISE OKL_API.G_EXCEPTION_ERROR;
18624 END IF;
18625 FETCH c_model_line INTO ln_model_line_id;
18626 CLOSE c_model_line;
18627
18628 -- To get the Fixed Asset Line
18629 -- Since we have update the Fixed Asset Line
18630 OPEN c_fa_line(l_clev_inst_rec.cle_id,
18631 l_clev_inst_rec.dnz_chr_id);
18632 IF c_fa_line%NOTFOUND THEN
18633 OKL_API.set_message(p_app_name => G_APP_NAME,
18634 p_msg_name => G_NO_MATCHING_RECORD,
18635 p_token1 => G_COL_NAME_TOKEN,
18636 p_token1_value => 'Fixed Asset Line record');
18637 RAISE OKL_API.G_EXCEPTION_ERROR;
18638 END IF;
18639 FETCH c_fa_line INTO ln_fa_line_id;
18640 CLOSE c_fa_line;
18641
18642 -- We have to build the Model Line Record for the calculations of the
18643 -- oec of the top line
18644
18645 -- To Get the cle Model Line Record
18646 x_return_status := get_rec_clev(ln_model_line_id,
18647 r_clev_model_rec);
18648 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18649 OKL_API.set_message(p_app_name => G_APP_NAME,
18650 p_msg_name => G_FETCHING_INFO,
18651 p_token1 => G_REC_NAME_TOKEN,
18652 p_token1_value => 'OKC_K_LINES_V Record');
18653 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18654 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18655 OKL_API.set_message(p_app_name => G_APP_NAME,
18656 p_msg_name => G_FETCHING_INFO,
18657 p_token1 => G_REC_NAME_TOKEN,
18658 p_token1_value => 'OKC_K_LINES_V Record');
18659 RAISE OKL_API.G_EXCEPTION_ERROR;
18660 END IF;
18661
18662 -- To Get the kle Model Line Record
18663 x_return_status := get_rec_klev(ln_model_line_id,
18664 r_klev_model_rec);
18665 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18666 OKL_API.set_message(p_app_name => G_APP_NAME,
18667 p_msg_name => G_FETCHING_INFO,
18668 p_token1 => G_REC_NAME_TOKEN,
18669 p_token1_value => 'OKL_K_LINES_V Record');
18670 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18671 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18672 OKL_API.set_message(p_app_name => G_APP_NAME,
18673 p_msg_name => G_FETCHING_INFO,
18674 p_token1 => G_REC_NAME_TOKEN,
18675 p_token1_value => 'OKL_K_LINES_V Record');
18676 RAISE OKL_API.G_EXCEPTION_ERROR;
18677 END IF;
18678
18679 IF r_klev_model_rec.id <> r_clev_model_rec.id THEN
18680 OKL_API.set_message(p_app_name => G_APP_NAME,
18681 p_msg_name => G_LINE_RECORD);
18682 RAISE OKL_API.G_EXCEPTION_ERROR;
18683 END IF;
18684
18685 -- To Get the cimv Model Line Record
18686 x_return_status := get_rec_cimv(r_clev_model_rec.id,
18687 r_clev_model_rec.dnz_chr_id,
18688 r_cimv_model_rec);
18689 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18690 OKL_API.set_message(p_app_name => G_APP_NAME,
18691 p_msg_name => G_FETCHING_INFO,
18692 p_token1 => G_REC_NAME_TOKEN,
18693 p_token1_value => 'OKC_K_ITEMS_V Record');
18694 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18695 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18696 OKL_API.set_message(p_app_name => G_APP_NAME,
18697 p_msg_name => G_FETCHING_INFO,
18698 p_token1 => G_REC_NAME_TOKEN,
18699 p_token1_value => 'OKC_K_ITEMS_V Record');
18700 RAISE OKL_API.G_EXCEPTION_ERROR;
18701 END IF;
18702
18703 --Build Model cimv item rec
18704 r_cimv_model_rec.number_of_items := ln_remain_inst;
18705 -- Updating of the Model Line and Item Record
18706 update_model_line(p_api_version => p_api_version,
18707 p_init_msg_list => p_init_msg_list,
18708 x_return_status => x_return_status,
18709 x_msg_count => x_msg_count,
18710 x_msg_data => x_msg_data,
18711 P_new_yn => P_new_yn,
18712 p_asset_number => p_asset_number,
18713 p_clev_rec => r_clev_model_rec,
18714 p_klev_rec => r_klev_model_rec,
18715 p_cimv_rec => r_cimv_model_rec,
18716 x_clev_rec => l_clev_model_rec_out,
18717 x_klev_rec => l_klev_model_rec_out,
18718 x_cimv_rec => x_cimv_model_rec);
18719 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18720 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18721 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18722 RAISE OKL_API.G_EXCEPTION_ERROR;
18723 END IF;
18724
18725 -- We need to check if there are add on line and then we update the Addon number of items also
18726 -- Since there can be multiple Addo lines
18727 FOR r_addon_line_id IN c_addon_line_id(p_cle_id => l_clev_model_rec_out.cle_id,
18728 p_chr_id => l_clev_model_rec_out.dnz_chr_id) LOOP
18729 --We have to build the addon Line Record for the calculations of the
18730 -- oec of the top line
18731 -- To Get the cle addon Line Record
18732 x_return_status := get_rec_clev(r_addon_line_id.id,
18733 r_clev_addon_rec);
18734 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18735 OKL_API.set_message(p_app_name => G_APP_NAME,
18736 p_msg_name => G_FETCHING_INFO,
18737 p_token1 => G_REC_NAME_TOKEN,
18738 p_token1_value => 'OKC_K_LINES_V Record');
18739 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18740 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18741 OKL_API.set_message(p_app_name => G_APP_NAME,
18742 p_msg_name => G_FETCHING_INFO,
18743 p_token1 => G_REC_NAME_TOKEN,
18744 p_token1_value => 'OKC_K_LINES_V Record');
18745 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18746 END IF;
18747 -- To Get the kle Model Line Record
18748 x_return_status := get_rec_klev(r_addon_line_id.id,
18749 r_klev_addon_rec);
18750 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18751 OKL_API.set_message(p_app_name => G_APP_NAME,
18752 p_msg_name => G_FETCHING_INFO,
18753 p_token1 => G_REC_NAME_TOKEN,
18754 p_token1_value => 'OKL_K_LINES_V Record');
18755 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18756 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18757 OKL_API.set_message(p_app_name => G_APP_NAME,
18758 p_msg_name => G_FETCHING_INFO,
18759 p_token1 => G_REC_NAME_TOKEN,
18760 p_token1_value => 'OKL_K_LINES_V Record');
18761 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18762 END IF;
18763 IF r_klev_addon_rec.id <> r_clev_addon_rec.id THEN
18764 OKL_API.set_message(p_app_name => G_APP_NAME,
18765 p_msg_name => G_LINE_RECORD);
18766 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18767 END IF;
18768 -- To Get the cimv Model Line Record
18769 x_return_status := get_rec_cimv(r_clev_addon_rec.id,
18770 r_clev_addon_rec.dnz_chr_id,
18771 r_cimv_addon_rec);
18772 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18773 OKL_API.set_message(p_app_name => G_APP_NAME,
18774 p_msg_name => G_FETCHING_INFO,
18775 p_token1 => G_REC_NAME_TOKEN,
18776 p_token1_value => 'OKC_K_ITEMS_V Record');
18777 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18778 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18779 OKL_API.set_message(p_app_name => G_APP_NAME,
18780 p_msg_name => G_FETCHING_INFO,
18781 p_token1 => G_REC_NAME_TOKEN,
18782 p_token1_value => 'OKC_K_ITEMS_V Record');
18783 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18784 END IF;
18785 --Build addon cimv item rec
18786 r_cimv_addon_rec.number_of_items := ln_remain_inst;
18787 -- Updating of the addon Line and Item Record
18788 update_addon_line_rec(p_api_version => p_api_version,
18789 p_init_msg_list => p_init_msg_list,
18790 x_return_status => x_return_status,
18791 x_msg_count => x_msg_count,
18792 x_msg_data => x_msg_data,
18793 P_new_yn => P_new_yn,
18794 p_asset_number => p_asset_number,
18795 p_clev_rec => r_clev_addon_rec,
18796 p_klev_rec => r_klev_addon_rec,
18797 p_cimv_rec => r_cimv_addon_rec,
18798 x_clev_rec => rx_clev_addon_rec,
18799 x_klev_rec => rx_klev_addon_rec,
18800 x_cimv_rec => rx_cimv_addon_rec);
18801 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18802 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18803 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18804 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18805 END IF;
18806 END LOOP;
18807 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18808 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18809 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18810 RAISE OKL_API.G_EXCEPTION_ERROR;
18811 END IF;
18812
18813 -- Since we need to populate the OEC into fixed asset line also
18814 -- So we need to calcualte the same here it self
18815 oec_calc_upd_fin_rec(p_api_version => p_api_version,
18816 p_init_msg_list => p_init_msg_list,
18817 x_return_status => x_return_status,
18818 x_msg_count => x_msg_count,
18819 x_msg_data => x_msg_data,
18820 P_new_yn => P_new_yn,
18821 p_asset_number => p_asset_number,
18822 -- 4414408
18823 p_top_line_id => l_clev_inst_rec.cle_id,
18824 p_dnz_chr_id => l_clev_model_rec_out.dnz_chr_id,
18825 x_fin_clev_rec => x_clev_fin_rec,
18826 x_fin_klev_rec => x_klev_fin_rec,
18827 x_oec => ln_klev_fin_oec,
18828 p_validate_fin_line => OKL_API.G_TRUE);
18829 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18830 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18831 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18832 RAISE OKL_API.G_EXCEPTION_ERROR;
18833 END IF;
18834
18835 -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
18836 cap_amt_calc_upd_fin_rec(p_api_version => p_api_version,
18837 p_init_msg_list => p_init_msg_list,
18838 x_return_status => x_return_status,
18839 x_msg_count => x_msg_count,
18840 x_msg_data => x_msg_data,
18841 P_new_yn => P_new_yn,
18842 p_asset_number => p_asset_number,
18843 -- 4414408
18844 p_top_line_id => l_clev_inst_rec.cle_id,
18845 p_dnz_chr_id => l_clev_model_rec_out.dnz_chr_id,
18846 x_fin_clev_rec => x_clev_fin_rec,
18847 x_fin_klev_rec => x_klev_fin_rec,
18848 x_cap_amt => ln_klev_fin_cap,
18849 p_validate_fin_line => OKL_API.G_TRUE);
18850 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18851 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18852 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18853 RAISE OKL_API.G_EXCEPTION_ERROR;
18854 END IF;
18855
18856 -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
18857 res_value_calc_upd_fin_rec(p_api_version => p_api_version,
18858 p_init_msg_list => p_init_msg_list,
18859 x_return_status => x_return_status,
18860 x_msg_count => x_msg_count,
18861 x_msg_data => x_msg_data,
18862 P_new_yn => P_new_yn,
18863 p_asset_number => p_asset_number,
18864 -- 4414408
18865 p_top_line_id => l_clev_inst_rec.cle_id,
18866 p_dnz_chr_id => l_clev_model_rec_out.dnz_chr_id,
18867 x_fin_clev_rec => x_clev_fin_rec,
18868 x_fin_klev_rec => x_klev_fin_rec,
18869 x_res_value => ln_klev_fin_res,
18870 p_validate_fin_line => OKL_API.G_TRUE);
18871 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18872 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18873 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18874 RAISE OKL_API.G_EXCEPTION_ERROR;
18875 END IF;
18876
18877 -- Updating of the Fixed Asset Line Process
18878 -- To Get the cle fa Line Record
18879 x_return_status := get_rec_clev(ln_fa_line_id,
18880 r_clev_fa_rec);
18881 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18882 OKL_API.set_message(p_app_name => G_APP_NAME,
18883 p_msg_name => G_FETCHING_INFO,
18884 p_token1 => G_REC_NAME_TOKEN,
18885 p_token1_value => 'OKC_K_LINES_V Record');
18886 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18887 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18888 OKL_API.set_message(p_app_name => G_APP_NAME,
18889 p_msg_name => G_FETCHING_INFO,
18890 p_token1 => G_REC_NAME_TOKEN,
18891 p_token1_value => 'OKC_K_LINES_V Record');
18892 RAISE OKL_API.G_EXCEPTION_ERROR;
18893 END IF;
18894
18895 -- To Get the kle fa Line Record
18896 x_return_status := get_rec_klev(ln_fa_line_id,
18897 r_klev_fa_rec);
18898 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18899 OKL_API.set_message(p_app_name => G_APP_NAME,
18900 p_msg_name => G_FETCHING_INFO,
18901 p_token1 => G_REC_NAME_TOKEN,
18902 p_token1_value => 'OKL_K_LINES_V Record');
18903 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18904 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18905 OKL_API.set_message(p_app_name => G_APP_NAME,
18906 p_msg_name => G_FETCHING_INFO,
18907 p_token1 => G_REC_NAME_TOKEN,
18908 p_token1_value => 'OKL_K_LINES_V Record');
18909 RAISE OKL_API.G_EXCEPTION_ERROR;
18910 END IF;
18911
18912 IF r_klev_fa_rec.id <> r_clev_fa_rec.id THEN
18913 OKL_API.set_message(p_app_name => G_APP_NAME,
18914 p_msg_name => G_LINE_RECORD);
18915 RAISE OKL_API.G_EXCEPTION_ERROR;
18916 END IF;
18917
18918 -- To Get the cimv fa Line Record
18919 x_return_status := get_rec_cimv(r_clev_fa_rec.id,
18920 r_clev_fa_rec.dnz_chr_id,
18921 r_cimv_fa_rec);
18922 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18923 OKL_API.set_message(p_app_name => G_APP_NAME,
18924 p_msg_name => G_FETCHING_INFO,
18925 p_token1 => G_REC_NAME_TOKEN,
18926 p_token1_value => 'OKC_K_ITEMS_V Record');
18927 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18928 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18929 OKL_API.set_message(p_app_name => G_APP_NAME,
18930 p_msg_name => G_FETCHING_INFO,
18931 p_token1 => G_REC_NAME_TOKEN,
18932 p_token1_value => 'OKC_K_ITEMS_V Record');
18933 RAISE OKL_API.G_EXCEPTION_ERROR;
18934 END IF;
18935
18936 --Build cimv fa item rec
18937 r_cimv_fa_rec.number_of_items := ln_remain_inst;
18938 --Build talv fa item rec
18939 x_return_status := get_rec_txlv(r_clev_fa_rec.id,
18940 r_talv_fa_rec);
18941 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18942 OKL_API.set_message(p_app_name => G_APP_NAME,
18943 p_msg_name => G_FETCHING_INFO,
18944 p_token1 => G_REC_NAME_TOKEN,
18945 p_token1_value => 'OKL_TXL_ASSETS_V Record');
18946 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18947 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18948 OKL_API.set_message(p_app_name => G_APP_NAME,
18949 p_msg_name => G_FETCHING_INFO,
18950 p_token1 => G_REC_NAME_TOKEN,
18951 p_token1_value => 'OKL_TXL_ASSETS_V Record');
18952 RAISE OKL_API.G_EXCEPTION_ERROR;
18953 END IF;
18954
18955 --Build talv fa item rec
18956 r_talv_fa_rec.current_units := ln_remain_inst;
18957
18958 --akrangan Bug# 5362977 start
18959 -- For online rebook, update depreciation_cost and
18960 -- original_cost to line capital amount instead of line oec
18961 --check for rebook contract
18962 l_rbk_khr := '?';
18963 OPEN l_chk_rbk_csr (p_chr_id => r_clev_fa_rec.dnz_chr_id);
18964 FETCH l_chk_rbk_csr INTO l_rbk_khr;
18965 CLOSE l_chk_rbk_csr;
18966
18967 If l_rbk_khr = '!' Then
18968 r_talv_fa_rec.depreciation_cost := NVL(x_klev_fin_rec.capital_amount,ln_klev_fin_cap);
18969 r_talv_fa_rec.original_cost := NVL(x_klev_fin_rec.capital_amount,ln_klev_fin_cap);
18970 else
18971
18972 r_talv_fa_rec.depreciation_cost := x_klev_fin_rec.oec;
18973 r_talv_fa_rec.original_cost := x_klev_fin_rec.oec;
18974 end if;
18975 --akrangan Bug# 5362977 end
18976
18977 r_clev_fa_rec.item_description := r_talv_fa_rec.description;
18978 -- Updating of the Fixed Asset Line and item/Txl Asset Info
18979 update_fixed_asset_line(p_api_version => p_api_version,
18980 p_init_msg_list => p_init_msg_list,
18981 x_return_status => x_return_status,
18982 x_msg_count => x_msg_count,
18983 x_msg_data => x_msg_data,
18984 P_new_yn => P_new_yn,
18985 p_asset_number => p_asset_number,
18986 p_clev_rec => r_clev_fa_rec,
18987 p_klev_rec => r_klev_fa_rec,
18988 p_cimv_rec => r_cimv_fa_rec,
18989 p_talv_rec => r_talv_fa_rec,
18990 x_clev_rec => l_clev_fa_rec_out,
18991 x_klev_rec => l_klev_fa_rec_out,
18992 x_cimv_rec => x_cimv_fa_rec,
18993 x_talv_rec => x_talv_fa_rec);
18994 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18995 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18996 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18997 RAISE OKL_API.G_EXCEPTION_ERROR;
18998 END IF;
18999 --akrangan Bug# 5362977 start
19000 -- Update Tax Book details - okl_txd_assets_b
19001 update_asset_line_details(p_api_version => p_api_version,
19002 p_init_msg_list => p_init_msg_list,
19003 x_return_status => x_return_status,
19004 x_msg_count => x_msg_count,
19005 x_msg_data => x_msg_data,
19006 p_asset_number => p_asset_number,
19007 p_original_cost => x_talv_fa_rec.original_cost,
19008 p_tal_id => x_talv_fa_rec.ID);
19009 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19010 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19011 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19012 RAISE OKL_API.G_EXCEPTION_ERROR;
19013 END IF;
19014 --akrangan Bug# 5362977 end
19015
19016 -- We need to change the status of the header whenever there is updating happening
19017 -- after the contract status is approved
19018 IF (l_clev_fa_rec_out.dnz_chr_id is NOT NULL) AND
19019 (l_clev_fa_rec_out.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
19020 --cascade edit status on to lines
19021 okl_contract_status_pub.cascade_lease_status_edit
19022 (p_api_version => p_api_version,
19023 p_init_msg_list => p_init_msg_list,
19024 x_return_status => x_return_status,
19025 x_msg_count => x_msg_count,
19026 x_msg_data => x_msg_data,
19027 p_chr_id => l_clev_fa_rec_out.dnz_chr_id);
19028 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19029 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19030 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19031 RAISE OKL_API.G_EXCEPTION_ERROR;
19032 END IF;
19033 END IF;
19034
19035 END IF;
19036
19037 OKL_API.END_ACTIVITY (x_msg_count,
19038 x_msg_data );
19039 EXCEPTION
19040 WHEN OKL_API.G_EXCEPTION_ERROR THEN
19041 IF c_model_item%ISOPEN THEN
19042 CLOSE c_model_item;
19043 END IF;
19044 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
19045 l_api_name,
19046 G_PKG_NAME,
19047 'OKL_API.G_RET_STS_ERROR',
19048 x_msg_count,
19049 x_msg_data,
19050 '_PVT');
19051 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
19052 IF c_model_item%ISOPEN THEN
19053 CLOSE c_model_item;
19054 END IF;
19055 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
19056 l_api_name,
19057 G_PKG_NAME,
19058 'OKL_API.G_RET_STS_UNEXP_ERROR',
19059 x_msg_count,
19060 x_msg_data,
19061 '_PVT');
19062 WHEN OTHERS THEN
19063 IF c_model_item%ISOPEN THEN
19064 CLOSE c_model_item;
19065 END IF;
19066 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
19067 l_api_name,
19068 G_PKG_NAME,
19069 'OTHERS',
19070 x_msg_count,
19071 x_msg_data,
19072 '_PVT');
19073 END create_ints_ib_line;
19074 -------------------------------------------------------------------------------------------------------
19075 ----------------- Main Process for Updating of instance and Install base line ------------------------
19076 -------------------------------------------------------------------------------------------------------
19077 PROCEDURE update_ints_ib_line(
19078 p_api_version IN NUMBER,
19079 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
19080 x_return_status OUT NOCOPY VARCHAR2,
19081 x_msg_count OUT NOCOPY NUMBER,
19082 x_msg_data OUT NOCOPY VARCHAR2,
19083 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
19084 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
19085 p_top_line_id IN OKC_K_LINES_V.ID%TYPE,
19086 p_dnz_chr_id IN OKC_K_HEADERS_V.ID%TYPE,
19087 p_itiv_ib_tbl IN itiv_tbl_type,
19088 x_clev_ib_tbl OUT NOCOPY clev_tbl_type,
19089 x_itiv_ib_tbl OUT NOCOPY itiv_tbl_type) IS
19090 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_INTS_IB_LINE';
19091 i NUMBER := 0;
19092 l_itiv_ib_tbl itiv_tbl_type;
19093 l_clev_inst_rec clev_rec_type;
19094 l_klev_inst_rec klev_rec_type;
19095 l_clev_ib_rec clev_rec_type;
19096 l_clev_inst_rec_out clev_rec_type;
19097 l_klev_inst_rec_out klev_rec_type;
19098 l_itiv_ib_tbl_out itiv_tbl_type;
19099 l_klev_ib_rec klev_rec_type;
19100 l_cimv_ib_rec cimv_rec_type;
19101 l_klev_ib_rec_out klev_rec_type;
19102 l_cimv_ib_rec_out cimv_rec_type;
19103 l_trxv_ib_rec_out trxv_rec_type;
19104 ln_remain_inst NUMBER := 0;
19105 ln_model_line_id OKC_K_LINES_V.ID%TYPE := OKL_API.G_MISS_NUM;
19106 lv_object_id1_new OKL_TXL_ITM_INSTS.OBJECT_ID1_NEW%TYPE := OKL_API.G_MISS_CHAR;
19107 ln_fa_line_id OKC_K_LINES_V.ID%TYPE := OKL_API.G_MISS_NUM;
19108 r_clev_model_rec clev_rec_type;
19109 r_klev_model_rec klev_rec_type;
19110 r_cimv_model_rec cimv_rec_type;
19111 r_clev_fa_rec clev_rec_type;
19112 r_klev_fa_rec klev_rec_type;
19113 r_cimv_fa_rec cimv_rec_type;
19114 r_talv_fa_rec talv_rec_type;
19115 l_clev_model_rec_out clev_rec_type;
19116 l_klev_model_rec_out klev_rec_type;
19117 l_cimv_model_rec_out cimv_rec_type;
19118 l_clev_fa_rec_out clev_rec_type;
19119 l_klev_fa_rec_out klev_rec_type;
19120 lx_cimv_fa_rec cimv_rec_type;
19121 lx_talv_fa_rec talv_rec_type;
19122 lx_clev_fin_rec clev_rec_type;
19123 lx_klev_fin_rec klev_rec_type;
19124 ln_klev_fin_oec OKL_K_LINES_V.OEC%TYPE := 0;
19125 ln_klev_fin_res OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
19126 ln_klev_fin_cap OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
19127 r_clev_addon_rec clev_rec_type;
19128 r_klev_addon_rec klev_rec_type;
19129 r_cimv_addon_rec cimv_rec_type;
19130 rx_clev_addon_rec clev_rec_type;
19131 rx_klev_addon_rec klev_rec_type;
19132 rx_cimv_addon_rec cimv_rec_type;
19133 ln_model_item OKL_TXL_ITM_INSTS.INVENTORY_ITEM_ID%TYPE;
19134
19135 CURSOR c_remain_inst_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
19136 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
19137 SELECT count(cle.id)
19138 FROM okc_subclass_top_line stl,
19139 okc_line_styles_b lse2,
19140 okc_line_styles_b lse1,
19141 okc_k_lines_v cle
19142 WHERE cle.cle_id = p_cle_id
19143 AND cle.dnz_chr_id = p_chr_id
19144 AND cle.lse_id = lse1.id
19145 AND lse1.lty_code = G_INST_LINE_LTY_CODE
19146 AND lse1.lse_parent_id = lse2.id
19147 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
19148 AND lse2.id = stl.lse_id
19149 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
19150
19151 CURSOR c_model_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
19152 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
19153 SELECT cle.id
19154 FROM okc_subclass_top_line stl,
19155 okc_line_styles_b lse2,
19156 okc_line_styles_b lse1,
19157 okc_k_lines_v cle
19158 WHERE cle.cle_id = p_cle_id
19159 AND cle.dnz_chr_id = p_chr_id
19160 AND cle.lse_id = lse1.id
19161 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
19162 AND lse1.lse_parent_id = lse2.id
19163 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
19164 AND lse2.id = stl.lse_id
19165 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
19166
19167 CURSOR c_model_item(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
19168 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
19169 SELECT cim.object1_id1
19170 FROM okc_subclass_top_line stl,
19171 okc_line_styles_b lse2,
19172 okc_line_styles_b lse1,
19173 okc_k_items cim,
19174 okc_k_lines_v cle
19175 WHERE cle.cle_id = p_cle_id
19176 AND cle.dnz_chr_id = p_chr_id
19177 AND cle.lse_id = lse1.id
19178 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
19179 AND lse1.lse_parent_id = lse2.id
19180 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
19181 AND lse2.id = stl.lse_id
19182 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE)
19183 AND cle.id = cim.cle_id
19184 AND cim.dnz_chr_id = cle.dnz_chr_id
19185 AND cim.jtot_object1_code = 'OKX_SYSITEM';
19186
19187 CURSOR c_fa_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
19188 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
19189 SELECT cle.id
19190 FROM okc_subclass_top_line stl,
19191 okc_line_styles_b lse2,
19192 okc_line_styles_b lse1,
19193 okc_k_lines_v cle
19194 WHERE cle.cle_id = p_cle_id
19195 AND cle.dnz_chr_id = p_chr_id
19196 AND cle.lse_id = lse1.id
19197 AND lse1.lty_code = G_FA_LINE_LTY_CODE
19198 AND lse1.lse_parent_id = lse2.id
19199 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
19200 AND lse2.id = stl.lse_id
19201 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
19202
19203 CURSOR c_addon_line_id(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
19204 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
19205 SELECT cle.id
19206 FROM okc_subclass_top_line stl,
19207 okc_line_styles_b lse3,
19208 okc_line_styles_b lse2,
19209 okc_line_styles_b lse1,
19210 okc_k_lines_b cle
19211 WHERE cle.dnz_chr_id = p_chr_id
19212 AND cle.lse_id = lse1.id
19213 AND lse1.lty_code = G_ADDON_LINE_LTY_CODE
19214 AND lse1.lse_parent_id = lse2.id
19215 AND lse2.lty_code = G_MODEL_LINE_LTY_CODE
19216 AND lse2.lse_parent_id = lse3.id
19217 AND lse3.lty_code = G_FIN_LINE_LTY_CODE
19218 AND lse3.id = stl.lse_id
19219 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE)
19220 AND cle.cle_id in (SELECT cle.id
19221 FROM okc_subclass_top_line stl,
19222 okc_line_styles_b lse2,
19223 okc_line_styles_b lse1,
19224 okc_k_lines_b cle
19225 WHERE cle.cle_id = p_cle_id
19226 AND cle.dnz_chr_id = p_chr_id
19227 AND cle.lse_id = lse1.id
19228 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
19229 AND lse1.lse_parent_id = lse2.id
19230 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
19231 AND lse2.id = stl.lse_id
19232 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE));
19233 --akrangan Bug# 5362977 start
19234 --cursor to check if contract has re-lease assets
19235 --Bug# 15992711 : The re-leased flag is no longer checked at contract header
19236 -- but needs to be validated at contract line
19237 -- Cursor modified to include validation at asset line level
19238 /* CURSOR l_chk_rel_ast_csr (p_chr_id IN NUMBER) IS
19239 SELECT 'Y'
19240 FROM OKC_RULES_B rul
19241 WHERE rul.dnz_chr_id = p_chr_id
19242 AND rul.rule_information_category = 'LARLES'
19243 AND NVL(rule_information1,'N') = 'Y';*/
19244
19245 CURSOR l_chk_rel_ast_csr (p_dnz_chr_id IN OKC_K_LINES_V.DNZ_CHR_ID%TYPE
19246 ,p_asset_num IN OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
19247 SELECT NVL(kle_top.re_lease_yn,'N') release_flag
19248 FROM okl_txl_assets_b txlb,
19249 okc_line_styles_b lseb,
19250 okc_k_lines_b cleb_top,
19251 okl_k_lines kle_top
19252 WHERE txlb.kle_id = cleb_top.id
19253 AND cleb_top.lse_id = lseb.id
19254 AND lseb.lty_code = 'FIXED_ASSET'
19255 AND cleb_top.dnz_chr_id = p_dnz_chr_id
19256 AND kle_top.id = cleb_top.id
19257 AND txlb.asset_number = p_asset_num;
19258 -- Bug# 15992711 : End of Modifications
19259
19260 l_chk_rel_ast VARCHAR2(1);
19261
19262 --cursor to check if the contract is undergoing on-line rebook
19263 cursor l_chk_rbk_csr(p_chr_id IN NUMBER) is
19264 SELECT '!'
19265 FROM okc_k_headers_b chr,
19266 okl_trx_contracts ktrx
19267 WHERE ktrx.khr_id_new = chr.id
19268 AND ktrx.tsu_code = 'ENTERED'
19269 AND ktrx.rbr_code is NOT NULL
19270 AND ktrx.tcn_type = 'TRBK'
19271 --rkuttiya added for 12.1.1 Multi GAAP
19272 AND ktrx.representation_type = 'PRIMARY'
19273 --
19274 AND chr.id = p_chr_id
19275 AND chr.orig_system_source_code = 'OKL_REBOOK';
19276
19277 l_rbk_khr VARCHAR2(1);
19278 --akrangan Bug# 5362977 end
19279
19280 BEGIN
19281 x_return_status := OKL_API.G_RET_STS_SUCCESS;
19282 -- Call start_activity to create savepoint, check compatibility
19283 -- and initialize message list
19284 x_return_status := OKL_API.START_ACTIVITY (
19285 l_api_name
19286 ,p_init_msg_list
19287 ,'_PVT'
19288 ,x_return_status);
19289 -- Check if activity started successfully
19290 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19291 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19292 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19293 RAISE OKL_API.G_EXCEPTION_ERROR;
19294 END IF;
19295 -- We must have top line id to go further
19296 IF (p_top_line_id IS NUll OR
19297 p_top_line_id = OKL_API.G_MISS_NUM) AND
19298 (p_dnz_chr_id IS NUll OR
19299 p_dnz_chr_id = OKL_API.G_MISS_NUM) THEN
19300 OKL_API.set_message(p_app_name => G_APP_NAME,
19301 p_msg_name => G_REQUIRED_VALUE,
19302 p_token1 => G_COL_NAME_TOKEN,
19303 p_token1_value => 'Top Line and Dnz_chr_id');
19304 RAISE OKL_API.G_EXCEPTION_ERROR;
19305 END IF;
19306
19307 -- Get the model item
19308 OPEN c_model_item(p_top_line_id,
19309 p_dnz_chr_id);
19310 IF c_model_item%NOTFOUND THEN
19311 OKL_API.set_message(p_app_name => G_APP_NAME,
19312 p_msg_name => G_NO_MATCHING_RECORD,
19313 p_token1 => G_COL_NAME_TOKEN,
19314 p_token1_value => 'Item_Id');
19315 RAISE OKL_API.G_EXCEPTION_ERROR;
19316 END IF;
19317 FETCH c_model_item INTO ln_model_item;
19318 CLOSE c_model_item;
19319
19320 -- we have to update the txl_itm_insts table only if the p_itiv_ib_tbl(i).id is given
19321 -- otherwise we have to create instance line and install base line and then create
19322 -- okl_txl_itm_insts record
19323 l_itiv_ib_tbl := p_itiv_ib_tbl;
19324 IF l_itiv_ib_tbl.COUNT > 0 THEN
19325 -- We have intialize the I, since there could be any index integer
19326 i := l_itiv_ib_tbl.FIRST;
19327 LOOP
19328 IF l_itiv_ib_tbl(i).id IS NULL OR
19329 l_itiv_ib_tbl(i).id = OKL_API.G_MISS_NUM THEN
19330
19331 -- 4334903 Assign the line style ID directly
19332 /*
19333 -- Creation of the Instance Line Process
19334 -- Getting the Line style Info
19335 x_return_status := get_lse_id(p_lty_code => G_INST_LINE_LTY_CODE,
19336 x_lse_id => l_clev_inst_rec.lse_id);
19337 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19338 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19339 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19340 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19341 END IF;
19342 */
19343 --akrangan Bug# 5362977 start
19344 -- Do not allow update of units if the contract has Re-lease assets
19345 l_chk_rel_ast := 'N';
19346
19347 -- Bug# 15992711 : Change in number of parameters passed to new cursor
19348 -- OPEN l_chk_rel_ast_csr(p_chr_id => p_dnz_chr_id);
19349 OPEN l_chk_rel_ast_csr( p_dnz_chr_id
19350 ,p_asset_number);
19351 -- Bug# 15992711 : End of Modifications
19352
19353 FETCH l_chk_rel_ast_csr INTO l_chk_rel_ast;
19354 CLOSE l_chk_rel_ast_csr;
19355
19356 IF l_chk_rel_ast = 'Y' THEN
19357 OKL_API.set_message(p_app_name => G_APP_NAME,
19358 p_msg_name => 'OKL_LA_REL_UNITS_NO_UPDATE');
19359 RAISE OKL_API.G_EXCEPTION_ERROR;
19360 END IF;
19361 --akrangan Bug# 5362977 end
19362
19363 l_clev_inst_rec.display_sequence := 1;
19364 -- Required cle Line Information
19365 -- Since we have a local Record of the Instance line
19366 -- We can you the same
19367 l_clev_inst_rec.lse_id := G_INST_LINE_LTY_ID;
19368 l_clev_inst_rec.chr_id := null;
19369 l_clev_inst_rec.cle_id := p_top_line_id;
19370 l_clev_inst_rec.dnz_chr_id := p_dnz_chr_id;
19371 l_clev_inst_rec.exception_yn := 'N';
19372 IF (l_itiv_ib_tbl(i).instance_number_ib IS NULL OR
19373 l_itiv_ib_tbl(i).instance_number_ib = OKL_API.G_MISS_CHAR) THEN
19374 x_return_status := generate_instance_number_ib(x_instance_number_ib => l_itiv_ib_tbl(i).instance_number_ib);
19375 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19376 OKL_API.set_message(p_app_name => G_APP_NAME,
19377 p_msg_name => G_GEN_INST_NUM_IB);
19378 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19379 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19380 OKL_API.set_message(p_app_name => G_APP_NAME,
19381 p_msg_name => G_GEN_INST_NUM_IB);
19382 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19383 END IF;
19384 l_itiv_ib_tbl(i).instance_number_ib := p_asset_number||' '||l_itiv_ib_tbl(i).instance_number_ib;
19385 END IF;
19386 -- Creation of the Instance Line
19387 Create_instance_line(p_api_version => p_api_version,
19388 p_init_msg_list => p_init_msg_list,
19389 x_return_status => x_return_status,
19390 x_msg_count => x_msg_count,
19391 x_msg_data => x_msg_data,
19392 p_clev_rec => l_clev_inst_rec,
19393 p_klev_rec => l_klev_inst_rec,
19394 p_itiv_rec => l_itiv_ib_tbl(i),
19395 x_clev_rec => l_clev_inst_rec_out,
19396 x_klev_rec => l_klev_inst_rec_out,
19397 x_itiv_rec => l_itiv_ib_tbl_out(i));
19398 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19399 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19400 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19401 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19402 END IF;
19403 -- 4414408 Assign the line style ID directly
19404 /*
19405 -- Creation of the ib Line Process
19406 -- Getting the Line style Info
19407 x_return_status := get_lse_id(p_lty_code => G_IB_LINE_LTY_CODE,
19408 x_lse_id => l_clev_ib_rec.lse_id);
19409 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19410 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19411 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19412 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19413 END IF;
19414 */
19415 l_clev_ib_rec.lse_id := G_IB_LINE_LTY_ID;
19416 l_clev_ib_rec.display_sequence := 2;
19417 -- Required cle Line Information
19418 l_clev_ib_rec.chr_id := null;
19419 l_clev_ib_rec.cle_id := l_clev_inst_rec_out.id;
19420 l_clev_ib_rec.dnz_chr_id := l_clev_inst_rec_out.dnz_chr_id;
19421 l_clev_ib_rec.exception_yn := 'N';
19422 -- Required Item Information
19423 l_cimv_ib_rec.exception_yn := 'N';
19424 l_cimv_ib_rec.object1_id1 := null;
19425 l_cimv_ib_rec.object1_id2 := null;
19426 -- Since the screen can give only party_site_id via l_itiv_ib_tbl(i).object_id1_new
19427 -- We have to use the below function
19428 lv_object_id1_new := l_itiv_ib_tbl(i).object_id1_new;
19429 x_return_status := get_party_site_id(p_object_id1_new => lv_object_id1_new,
19430 x_object_id1_new => l_itiv_ib_tbl(i).object_id1_new,
19431 x_object_id2_new => l_itiv_ib_tbl(i).object_id2_new);
19432 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19433 OKL_API.set_message(p_app_name => G_APP_NAME,
19434 p_msg_name => G_NO_MATCHING_RECORD,
19435 p_token1 => G_COL_NAME_TOKEN,
19436 p_token1_value => 'Party_site_id');
19437 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19438 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19439 OKL_API.set_message(p_app_name => G_APP_NAME,
19440 p_msg_name => G_NO_MATCHING_RECORD,
19441 p_token1 => G_COL_NAME_TOKEN,
19442 p_token1_value => 'Party_site_id');
19443 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19444 END IF;
19445
19446 -- Check for uniqueness of Serial number
19447 x_return_status := is_duplicate_serial_number(p_serial_number => l_itiv_ib_tbl(i).serial_number,
19448 p_item_id => ln_model_item);
19449 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19450 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19451 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19452 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19453 END IF;
19454
19455 -- Creation of the ib Line
19456 Create_instance_ib_line(p_api_version => p_api_version,
19457 p_init_msg_list => p_init_msg_list,
19458 x_return_status => x_return_status,
19459 x_msg_count => x_msg_count,
19460 x_msg_data => x_msg_data,
19461 p_clev_rec => l_clev_ib_rec,
19462 p_klev_rec => l_klev_ib_rec,
19463 p_cimv_rec => l_cimv_ib_rec,
19464 p_itiv_rec => l_itiv_ib_tbl(i),
19465 x_clev_rec => x_clev_ib_tbl(i),
19466 x_klev_rec => l_klev_ib_rec_out,
19467 x_cimv_rec => l_cimv_ib_rec_out,
19468 x_trxv_rec => l_trxv_ib_rec_out,
19469 x_itiv_rec => x_itiv_ib_tbl(i));
19470 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19471 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19472 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19473 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19474 END IF;
19475 ELSIF l_itiv_ib_tbl(i).id IS NOT NULL OR
19476 l_itiv_ib_tbl(i).id <> OKL_API.G_MISS_NUM THEN
19477
19478 -- Check for uniqueness of Serial number
19479 x_return_status := is_duplicate_serial_number(p_serial_number => l_itiv_ib_tbl(i).serial_number,
19480 p_item_id => ln_model_item);
19481 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19482 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19483 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19484 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19485 END IF;
19486
19487 -- We are here b'cause we have to update the okl_txl_itm_inst rec
19488 -- So we are calling the update api for the okl_txl_itm_insts rec
19489 l_itiv_ib_tbl(i).object_id2_new := '#';
19490 update_txl_itm_insts(p_api_version => p_api_version,
19491 p_init_msg_list => p_init_msg_list,
19492 x_return_status => x_return_status,
19493 x_msg_count => x_msg_count,
19494 x_msg_data => x_msg_data,
19495 p_itiv_rec => l_itiv_ib_tbl(i),
19496 x_itiv_rec => x_itiv_ib_tbl(i));
19497 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19498 OKL_API.set_message(p_app_name => G_APP_NAME,
19499 p_msg_name => G_ITI_ID);
19500 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19501 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19502 OKL_API.set_message(p_app_name => G_APP_NAME,
19503 p_msg_name => G_ITI_ID);
19504 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19505 END IF;
19506 ELSE
19507 OKL_API.set_message(p_app_name => G_APP_NAME,
19508 p_msg_name => G_LINE_RECORD);
19509 x_return_status := OKL_API.G_RET_STS_ERROR;
19510 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19511 END IF;
19512 EXIT WHEN (i = l_itiv_ib_tbl.LAST);
19513 i := l_itiv_ib_tbl.NEXT(i);
19514 END LOOP;
19515 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19516 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19517 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19518 RAISE OKL_API.G_EXCEPTION_ERROR;
19519 END IF;
19520 ELSE
19521 OKL_API.set_message(p_app_name => G_APP_NAME,
19522 p_msg_name => G_CNT_REC);
19523 RAISE OKL_API.G_EXCEPTION_ERROR;
19524 END IF;
19525 -- we should get the remaining inst line , so that we can update
19526 -- the fixed line , model line and also update the top line with latest OEC
19527 OPEN c_remain_inst_line(p_top_line_id,
19528 p_dnz_chr_id);
19529 IF c_remain_inst_line%NOTFOUND THEN
19530 OKL_API.set_message(p_app_name => G_APP_NAME,
19531 p_msg_name => G_DELETING_INSTS_LINE);
19532 RAISE OKL_API.G_EXCEPTION_ERROR;
19533 END IF;
19534 FETCH c_remain_inst_line INTO ln_remain_inst;
19535 CLOSE c_remain_inst_line;
19536 -- To get the Model Line
19537 -- Since we have update the model line
19538 OPEN c_model_line(p_top_line_id,
19539 p_dnz_chr_id);
19540 IF c_model_line%NOTFOUND THEN
19541 OKL_API.set_message(p_app_name => G_APP_NAME,
19542 p_msg_name => G_NO_MATCHING_RECORD,
19543 p_token1 => G_COL_NAME_TOKEN,
19544 p_token1_value => 'Model Asset Line record');
19545 RAISE OKL_API.G_EXCEPTION_ERROR;
19546 END IF;
19547 FETCH c_model_line INTO ln_model_line_id;
19548 CLOSE c_model_line;
19549 -- To get the Fixed Asset Line
19550 -- Since we have update the Fixed Asset Line
19551 OPEN c_fa_line(p_top_line_id,
19552 p_dnz_chr_id);
19553 IF c_fa_line%NOTFOUND THEN
19554 OKL_API.set_message(p_app_name => G_APP_NAME,
19555 p_msg_name => G_NO_MATCHING_RECORD,
19556 p_token1 => G_COL_NAME_TOKEN,
19557 p_token1_value => 'Fixed Asset Line record');
19558 RAISE OKL_API.G_EXCEPTION_ERROR;
19559 END IF;
19560 FETCH c_fa_line INTO ln_fa_line_id;
19561 CLOSE c_fa_line;
19562 --We have to build the Model Line Record for the calculations of the
19563 -- oec of the top line
19564 -- To Get the cle Model Line Record
19565 x_return_status := get_rec_clev(ln_model_line_id,
19566 r_clev_model_rec);
19567 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19568 OKL_API.set_message(p_app_name => G_APP_NAME,
19569 p_msg_name => G_FETCHING_INFO,
19570 p_token1 => G_REC_NAME_TOKEN,
19571 p_token1_value => 'OKC_K_LINES_V Record');
19572 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19573 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19574 OKL_API.set_message(p_app_name => G_APP_NAME,
19575 p_msg_name => G_FETCHING_INFO,
19576 p_token1 => G_REC_NAME_TOKEN,
19577 p_token1_value => 'OKC_K_LINES_V Record');
19578 RAISE OKL_API.G_EXCEPTION_ERROR;
19579 END IF;
19580 -- To Get the kle Model Line Record
19581 x_return_status := get_rec_klev(ln_model_line_id,
19582 r_klev_model_rec);
19583 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19584 OKL_API.set_message(p_app_name => G_APP_NAME,
19585 p_msg_name => G_FETCHING_INFO,
19586 p_token1 => G_REC_NAME_TOKEN,
19587 p_token1_value => 'OKL_K_LINES_V Record');
19588 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19589 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19590 OKL_API.set_message(p_app_name => G_APP_NAME,
19591 p_msg_name => G_FETCHING_INFO,
19592 p_token1 => G_REC_NAME_TOKEN,
19593 p_token1_value => 'OKL_K_LINES_V Record');
19594 RAISE OKL_API.G_EXCEPTION_ERROR;
19595 END IF;
19596 IF r_klev_model_rec.id <> r_clev_model_rec.id THEN
19597 OKL_API.set_message(p_app_name => G_APP_NAME,
19598 p_msg_name => G_LINE_RECORD);
19599 RAISE OKL_API.G_EXCEPTION_ERROR;
19600 END IF;
19601 -- To Get the cimv Model Line Record
19602 x_return_status := get_rec_cimv(r_clev_model_rec.id,
19603 r_clev_model_rec.dnz_chr_id,
19604 r_cimv_model_rec);
19605 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19606 OKL_API.set_message(p_app_name => G_APP_NAME,
19607 p_msg_name => G_FETCHING_INFO,
19608 p_token1 => G_REC_NAME_TOKEN,
19609 p_token1_value => 'OKC_K_ITEMS_V Record');
19610 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19611 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19612 OKL_API.set_message(p_app_name => G_APP_NAME,
19613 p_msg_name => G_FETCHING_INFO,
19614 p_token1 => G_REC_NAME_TOKEN,
19615 p_token1_value => 'OKC_K_ITEMS_V Record');
19616 RAISE OKL_API.G_EXCEPTION_ERROR;
19617 END IF;
19618 --Build Model cimv item rec
19619 r_cimv_model_rec.number_of_items := ln_remain_inst;
19620 -- Updating of the Model Line and Item Record
19621 update_model_line(p_api_version => p_api_version,
19622 p_init_msg_list => p_init_msg_list,
19623 x_return_status => x_return_status,
19624 x_msg_count => x_msg_count,
19625 x_msg_data => x_msg_data,
19626 P_new_yn => P_new_yn,
19627 p_asset_number => p_asset_number,
19628 p_clev_rec => r_clev_model_rec,
19629 p_klev_rec => r_klev_model_rec,
19630 p_cimv_rec => r_cimv_model_rec,
19631 x_clev_rec => l_clev_model_rec_out,
19632 x_klev_rec => l_klev_model_rec_out,
19633 x_cimv_rec => l_cimv_model_rec_out);
19634 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19635 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19636 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19637 RAISE OKL_API.G_EXCEPTION_ERROR;
19638 END IF;
19639 -- We need to check if there are add on line and then we update the Addon number of items also
19640 -- Since there can be multiple Addo lines
19641 FOR r_addon_line_id IN c_addon_line_id(p_cle_id => p_top_line_id,
19642 p_chr_id => p_dnz_chr_id) LOOP
19643 --We have to build the addon Line Record for the calculations of the
19644 -- oec of the top line
19645 -- To Get the cle addon Line Record
19646 x_return_status := get_rec_clev(r_addon_line_id.id,
19647 r_clev_addon_rec);
19648 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19649 OKL_API.set_message(p_app_name => G_APP_NAME,
19650 p_msg_name => G_FETCHING_INFO,
19651 p_token1 => G_REC_NAME_TOKEN,
19652 p_token1_value => 'OKC_K_LINES_V Record');
19653 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19654 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19655 OKL_API.set_message(p_app_name => G_APP_NAME,
19656 p_msg_name => G_FETCHING_INFO,
19657 p_token1 => G_REC_NAME_TOKEN,
19658 p_token1_value => 'OKC_K_LINES_V Record');
19659 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19660 END IF;
19661 -- To Get the kle Model Line Record
19662 x_return_status := get_rec_klev(r_addon_line_id.id,
19663 r_klev_addon_rec);
19664 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19665 OKL_API.set_message(p_app_name => G_APP_NAME,
19666 p_msg_name => G_FETCHING_INFO,
19667 p_token1 => G_REC_NAME_TOKEN,
19668 p_token1_value => 'OKL_K_LINES_V Record');
19669 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19670 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19671 OKL_API.set_message(p_app_name => G_APP_NAME,
19672 p_msg_name => G_FETCHING_INFO,
19673 p_token1 => G_REC_NAME_TOKEN,
19674 p_token1_value => 'OKL_K_LINES_V Record');
19675 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19676 END IF;
19677 IF r_klev_addon_rec.id <> r_clev_addon_rec.id THEN
19678 OKL_API.set_message(p_app_name => G_APP_NAME,
19679 p_msg_name => G_LINE_RECORD);
19680 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19681 END IF;
19682 -- To Get the cimv Model Line Record
19683 x_return_status := get_rec_cimv(r_clev_addon_rec.id,
19684 r_clev_addon_rec.dnz_chr_id,
19685 r_cimv_addon_rec);
19686 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19687 OKL_API.set_message(p_app_name => G_APP_NAME,
19688 p_msg_name => G_FETCHING_INFO,
19689 p_token1 => G_REC_NAME_TOKEN,
19690 p_token1_value => 'OKC_K_ITEMS_V Record');
19691 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19692 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19693 OKL_API.set_message(p_app_name => G_APP_NAME,
19694 p_msg_name => G_FETCHING_INFO,
19695 p_token1 => G_REC_NAME_TOKEN,
19696 p_token1_value => 'OKC_K_ITEMS_V Record');
19697 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19698 END IF;
19699 --Build addon cimv item rec
19700 r_cimv_addon_rec.number_of_items := ln_remain_inst;
19701 -- Updating of the addon Line and Item Record
19702 update_addon_line_rec(p_api_version => p_api_version,
19703 p_init_msg_list => p_init_msg_list,
19704 x_return_status => x_return_status,
19705 x_msg_count => x_msg_count,
19706 x_msg_data => x_msg_data,
19707 P_new_yn => P_new_yn,
19708 p_asset_number => p_asset_number,
19709 p_clev_rec => r_clev_addon_rec,
19710 p_klev_rec => r_klev_addon_rec,
19711 p_cimv_rec => r_cimv_addon_rec,
19712 x_clev_rec => rx_clev_addon_rec,
19713 x_klev_rec => rx_klev_addon_rec,
19714 x_cimv_rec => rx_cimv_addon_rec);
19715 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19716 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19717 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19718 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19719 END IF;
19720 END LOOP;
19721 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19722 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19723 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19724 RAISE OKL_API.G_EXCEPTION_ERROR;
19725 END IF;
19726 -- Since we need to populate the OEC into fixed asset line also
19727 -- So we need to calcualte the same here it self
19728 oec_calc_upd_fin_rec(p_api_version => p_api_version,
19729 p_init_msg_list => p_init_msg_list,
19730 x_return_status => x_return_status,
19731 x_msg_count => x_msg_count,
19732 x_msg_data => x_msg_data,
19733 P_new_yn => P_new_yn,
19734 p_asset_number => p_asset_number,
19735 -- 4414408
19736 p_top_line_id => p_top_line_id,
19737 p_dnz_chr_id => l_clev_model_rec_out.dnz_chr_id,
19738 x_fin_clev_rec => lx_clev_fin_rec,
19739 x_fin_klev_rec => lx_klev_fin_rec,
19740 x_oec => ln_klev_fin_oec,
19741 p_validate_fin_line => OKL_API.G_TRUE);
19742 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19743 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19744 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19745 RAISE OKL_API.G_EXCEPTION_ERROR;
19746 END IF;
19747 -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
19748 cap_amt_calc_upd_fin_rec(p_api_version => p_api_version,
19749 p_init_msg_list => p_init_msg_list,
19750 x_return_status => x_return_status,
19751 x_msg_count => x_msg_count,
19752 x_msg_data => x_msg_data,
19753 P_new_yn => P_new_yn,
19754 p_asset_number => p_asset_number,
19755 -- 4414408
19756 p_top_line_id => p_top_line_id,
19757 p_dnz_chr_id => l_clev_model_rec_out.dnz_chr_id,
19758 x_fin_clev_rec => lx_clev_fin_rec,
19759 x_fin_klev_rec => lx_klev_fin_rec,
19760 x_cap_amt => ln_klev_fin_cap,
19761 p_validate_fin_line => OKL_API.G_TRUE);
19762 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19763 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19764 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19765 RAISE OKL_API.G_EXCEPTION_ERROR;
19766 END IF;
19767 -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
19768 res_value_calc_upd_fin_rec(p_api_version => p_api_version,
19769 p_init_msg_list => p_init_msg_list,
19770 x_return_status => x_return_status,
19771 x_msg_count => x_msg_count,
19772 x_msg_data => x_msg_data,
19773 P_new_yn => P_new_yn,
19774 p_asset_number => p_asset_number,
19775 -- 4414408
19776 p_top_line_id => p_top_line_id,
19777 p_dnz_chr_id => l_clev_model_rec_out.dnz_chr_id,
19778 x_fin_clev_rec => lx_clev_fin_rec,
19779 x_fin_klev_rec => lx_klev_fin_rec,
19780 x_res_value => ln_klev_fin_res,
19781 p_validate_fin_line => OKL_API.G_TRUE);
19782 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19783 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19784 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19785 RAISE OKL_API.G_EXCEPTION_ERROR;
19786 END IF;
19787 -- Updating of the Fixed Asset Line Process
19788 -- To Get the cle fa Line Record
19789 x_return_status := get_rec_clev(ln_fa_line_id,
19790 r_clev_fa_rec);
19791 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19792 OKL_API.set_message(p_app_name => G_APP_NAME,
19793 p_msg_name => G_FETCHING_INFO,
19794 p_token1 => G_REC_NAME_TOKEN,
19795 p_token1_value => 'OKC_K_LINES_V Record');
19796 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19797 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19798 OKL_API.set_message(p_app_name => G_APP_NAME,
19799 p_msg_name => G_FETCHING_INFO,
19800 p_token1 => G_REC_NAME_TOKEN,
19801 p_token1_value => 'OKC_K_LINES_V Record');
19802 RAISE OKL_API.G_EXCEPTION_ERROR;
19803 END IF;
19804 -- To Get the kle fa Line Record
19805 x_return_status := get_rec_klev(ln_fa_line_id,
19806 r_klev_fa_rec);
19807 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19808 OKL_API.set_message(p_app_name => G_APP_NAME,
19809 p_msg_name => G_FETCHING_INFO,
19810 p_token1 => G_REC_NAME_TOKEN,
19811 p_token1_value => 'OKL_K_LINES_V Record');
19812 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19813 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19814 OKL_API.set_message(p_app_name => G_APP_NAME,
19815 p_msg_name => G_FETCHING_INFO,
19816 p_token1 => G_REC_NAME_TOKEN,
19817 p_token1_value => 'OKL_K_LINES_V Record');
19818 RAISE OKL_API.G_EXCEPTION_ERROR;
19819 END IF;
19820 IF r_klev_fa_rec.id <> r_clev_fa_rec.id THEN
19821 OKL_API.set_message(p_app_name => G_APP_NAME,
19822 p_msg_name => G_LINE_RECORD);
19823 RAISE OKL_API.G_EXCEPTION_ERROR;
19824 END IF;
19825 -- To Get the cimv fa Line Record
19826 x_return_status := get_rec_cimv(r_clev_fa_rec.id,
19827 r_clev_fa_rec.dnz_chr_id,
19828 r_cimv_fa_rec);
19829 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19830 OKL_API.set_message(p_app_name => G_APP_NAME,
19831 p_msg_name => G_FETCHING_INFO,
19832 p_token1 => G_REC_NAME_TOKEN,
19833 p_token1_value => 'OKC_K_ITEMS_V Record');
19834 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19835 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19836 OKL_API.set_message(p_app_name => G_APP_NAME,
19837 p_msg_name => G_FETCHING_INFO,
19838 p_token1 => G_REC_NAME_TOKEN,
19839 p_token1_value => 'OKC_K_ITEMS_V Record');
19840 RAISE OKL_API.G_EXCEPTION_ERROR;
19841 END IF;
19842 --Build cimv fa item rec
19843 r_cimv_fa_rec.number_of_items := ln_remain_inst;
19844 --Build talv fa item rec
19845 x_return_status := get_rec_txlv(r_clev_fa_rec.id,
19846 r_talv_fa_rec);
19847 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19848 OKL_API.set_message(p_app_name => G_APP_NAME,
19849 p_msg_name => G_FETCHING_INFO,
19850 p_token1 => G_REC_NAME_TOKEN,
19851 p_token1_value => 'OKL_TXL_ASSETS_V Record');
19852 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19853 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19854 OKL_API.set_message(p_app_name => G_APP_NAME,
19855 p_msg_name => G_FETCHING_INFO,
19856 p_token1 => G_REC_NAME_TOKEN,
19857 p_token1_value => 'OKL_TXL_ASSETS_V Record');
19858 RAISE OKL_API.G_EXCEPTION_ERROR;
19859 END IF;
19860 --Build talv fa item rec
19861 r_talv_fa_rec.current_units := ln_remain_inst;
19862 --akrangan Bug# 5362977 start
19863 -- For online rebook, update depreciation_cost and
19864 -- original_cost to line capital amount instead of line oec
19865 --check for rebook contract
19866 l_rbk_khr := '?';
19867 OPEN l_chk_rbk_csr (p_chr_id => r_clev_fa_rec.dnz_chr_id);
19868 FETCH l_chk_rbk_csr INTO l_rbk_khr;
19869 CLOSE l_chk_rbk_csr;
19870
19871 If l_rbk_khr = '!' Then
19872 --Commented by bkatraga for bug 9770391
19873 --r_talv_fa_rec.depreciation_cost := NVL(lx_klev_fin_rec.capital_amount,ln_klev_fin_cap);
19874 r_talv_fa_rec.original_cost := NVL(lx_klev_fin_rec.capital_amount,ln_klev_fin_cap);
19875 else
19876 --Commented by bkatraga for bug 9770391
19877 --r_talv_fa_rec.depreciation_cost := lx_klev_fin_rec.oec;
19878 r_talv_fa_rec.original_cost := lx_klev_fin_rec.oec;
19879 end if;
19880 --akrangan Bug# 5362977 end
19881
19882 r_clev_fa_rec.item_description := r_talv_fa_rec.description;
19883 -- Updating of the Fixed Asset Line and item/Txl Asset Info
19884 update_fixed_asset_line(p_api_version => p_api_version,
19885 p_init_msg_list => p_init_msg_list,
19886 x_return_status => x_return_status,
19887 x_msg_count => x_msg_count,
19888 x_msg_data => x_msg_data,
19889 P_new_yn => P_new_yn,
19890 p_asset_number => p_asset_number,
19891 p_clev_rec => r_clev_fa_rec,
19892 p_klev_rec => r_klev_fa_rec,
19893 p_cimv_rec => r_cimv_fa_rec,
19894 p_talv_rec => r_talv_fa_rec,
19895 x_clev_rec => l_clev_fa_rec_out,
19896 x_klev_rec => l_klev_fa_rec_out,
19897 x_cimv_rec => lx_cimv_fa_rec,
19898 x_talv_rec => lx_talv_fa_rec);
19899 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19900 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19901 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19902 RAISE OKL_API.G_EXCEPTION_ERROR;
19903 END IF;
19904 --akrangan Bug# 5362977 start
19905 -- Update Tax Book details - okl_txd_assets_b
19906 update_asset_line_details(p_api_version => p_api_version,
19907 p_init_msg_list => p_init_msg_list,
19908 x_return_status => x_return_status,
19909 x_msg_count => x_msg_count,
19910 x_msg_data => x_msg_data,
19911 p_asset_number => p_asset_number,
19912 p_original_cost => lx_talv_fa_rec.original_cost,
19913 p_tal_id => lx_talv_fa_rec.ID);
19914 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19915 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19916 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19917 RAISE OKL_API.G_EXCEPTION_ERROR;
19918 END IF;
19919 --akrangan Bug# 5362977 end
19920
19921 -- We need to change the status of the header whenever there is updating happening
19922 -- after the contract status is approved
19923 IF (l_clev_fa_rec_out.dnz_chr_id is NOT NULL) AND
19924 (l_clev_fa_rec_out.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
19925 --cascade edit status on to lines
19926 okl_contract_status_pub.cascade_lease_status_edit
19927 (p_api_version => p_api_version,
19928 p_init_msg_list => p_init_msg_list,
19929 x_return_status => x_return_status,
19930 x_msg_count => x_msg_count,
19931 x_msg_data => x_msg_data,
19932 p_chr_id => l_clev_fa_rec_out.dnz_chr_id);
19933 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19934 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19935 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19936 RAISE OKL_API.G_EXCEPTION_ERROR;
19937 END IF;
19938 END IF;
19939 OKL_API.END_ACTIVITY (x_msg_count,
19940 x_msg_data );
19941 EXCEPTION
19942 WHEN OKL_API.G_EXCEPTION_ERROR THEN
19943 IF c_remain_inst_line%ISOPEN THEN
19944 CLOSE c_remain_inst_line;
19945 END IF;
19946 IF c_model_line%ISOPEN THEN
19947 CLOSE c_model_line;
19948 END IF;
19949 IF c_fa_line%ISOPEN THEN
19950 CLOSE c_fa_line;
19951 END IF;
19952 IF c_addon_line_id%ISOPEN THEN
19953 CLOSE c_addon_line_id;
19954 END IF;
19955 IF c_model_item%ISOPEN THEN
19956 CLOSE c_model_item;
19957 END IF;
19958 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
19959 l_api_name,
19960 G_PKG_NAME,
19961 'OKL_API.G_RET_STS_ERROR',
19962 x_msg_count,
19963 x_msg_data,
19964 '_PVT');
19965 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
19966 IF c_remain_inst_line%ISOPEN THEN
19967 CLOSE c_remain_inst_line;
19968 END IF;
19969 IF c_model_line%ISOPEN THEN
19970 CLOSE c_model_line;
19971 END IF;
19972 IF c_fa_line%ISOPEN THEN
19973 CLOSE c_fa_line;
19974 END IF;
19975 IF c_addon_line_id%ISOPEN THEN
19976 CLOSE c_addon_line_id;
19977 END IF;
19978 IF c_model_item%ISOPEN THEN
19979 CLOSE c_model_item;
19980 END IF;
19981 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
19982 l_api_name,
19983 G_PKG_NAME,
19984 'OKL_API.G_RET_STS_UNEXP_ERROR',
19985 x_msg_count,
19986 x_msg_data,
19987 '_PVT');
19988 WHEN OTHERS THEN
19989 IF c_remain_inst_line%ISOPEN THEN
19990 CLOSE c_remain_inst_line;
19991 END IF;
19992 IF c_model_line%ISOPEN THEN
19993 CLOSE c_model_line;
19994 END IF;
19995 IF c_fa_line%ISOPEN THEN
19996 CLOSE c_fa_line;
19997 END IF;
19998 IF c_addon_line_id%ISOPEN THEN
19999 CLOSE c_addon_line_id;
20000 END IF;
20001 IF c_model_item%ISOPEN THEN
20002 CLOSE c_model_item;
20003 END IF;
20004 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
20005 l_api_name,
20006 G_PKG_NAME,
20007 'OTHERS',
20008 x_msg_count,
20009 x_msg_data,
20010 '_PVT');
20011 END update_ints_ib_line;
20012 -------------------------------------------------------------------------------------------------------
20013 ----------------- Main Process for Deletion of instance and Install base line ------------------------
20014 -------------------------------------------------------------------------------------------------------
20015 PROCEDURE delete_ints_ib_line(
20016 p_api_version IN NUMBER,
20017 p_init_msg_list IN VARCHAR2 DEFAULT OKC_API.G_FALSE,
20018 x_return_status OUT NOCOPY VARCHAR2,
20019 x_msg_count OUT NOCOPY NUMBER,
20020 x_msg_data OUT NOCOPY VARCHAR2,
20021 P_new_yn IN OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
20022 p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
20023 p_clev_ib_tbl IN clev_tbl_type,
20024 x_clev_fin_rec OUT NOCOPY clev_rec_type,
20025 x_klev_fin_rec OUT NOCOPY klev_rec_type,
20026 x_cimv_model_rec OUT NOCOPY cimv_rec_type,
20027 x_cimv_fa_rec OUT NOCOPY cimv_rec_type,
20028 x_talv_fa_rec OUT NOCOPY talv_rec_type) IS
20029 l_api_name CONSTANT VARCHAR2(30) := 'DELETE_INTS_IB_LINE';
20030 l_clev_ib_tbl clev_tbl_type := p_clev_ib_tbl;
20031 l_clev_ib_rec clev_rec_type;
20032 l_clev_inst_rec clev_rec_type;
20033 ln_remain_inst NUMBER := 0;
20034 ln_model_line_id OKC_K_LINES_V.ID%TYPE := OKL_API.G_MISS_NUM;
20035 ln_fa_line_id OKC_K_LINES_V.ID%TYPE := OKL_API.G_MISS_NUM;
20036 r_clev_model_rec clev_rec_type;
20037 r_klev_model_rec klev_rec_type;
20038 r_cimv_model_rec cimv_rec_type;
20039 r_clev_fa_rec clev_rec_type;
20040 r_klev_fa_rec klev_rec_type;
20041 r_cimv_fa_rec cimv_rec_type;
20042 r_talv_fa_rec talv_rec_type;
20043 l_clev_model_rec_out clev_rec_type;
20044 l_klev_model_rec_out klev_rec_type;
20045 l_clev_fa_rec_out clev_rec_type;
20046 l_klev_fa_rec_out klev_rec_type;
20047 ln_klev_fin_oec OKL_K_LINES_V.OEC%TYPE := 0;
20048 ln_klev_fin_res OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
20049 ln_klev_fin_cap OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
20050 r_clev_addon_rec clev_rec_type;
20051 r_klev_addon_rec klev_rec_type;
20052 r_cimv_addon_rec cimv_rec_type;
20053 rx_clev_addon_rec clev_rec_type;
20054 rx_klev_addon_rec klev_rec_type;
20055 rx_cimv_addon_rec cimv_rec_type;
20056 j NUMBER := 0;
20057 lb_last_record_updated BOOLEAN := FALSE;
20058
20059 -- rravikir added
20060 l_itiv_rec itiv_rec_type;
20061 lx_itiv_rec itiv_rec_type;
20062 -- end
20063
20064 CURSOR c_remain_inst_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
20065 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
20066 SELECT count(cle.id)
20067 FROM okc_line_styles_b lse2,
20068 okc_line_styles_b lse1,
20069 okc_k_lines_v cle
20070 WHERE cle.cle_id = p_cle_id
20071 AND cle.dnz_chr_id = p_chr_id
20072 AND cle.lse_id = lse1.id
20073 AND lse1.lty_code = G_INST_LINE_LTY_CODE
20074 AND lse1.lse_parent_id = lse2.id
20075 AND lse2.lty_code = G_FIN_LINE_LTY_CODE;
20076
20077 CURSOR c_model_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
20078 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
20079 SELECT cle.id
20080 FROM okc_subclass_top_line stl,
20081 okc_line_styles_b lse2,
20082 okc_line_styles_b lse1,
20083 okc_k_lines_v cle
20084 WHERE cle.cle_id = p_cle_id
20085 AND cle.dnz_chr_id = p_chr_id
20086 AND cle.lse_id = lse1.id
20087 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
20088 AND lse1.lse_parent_id = lse2.id
20089 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
20090 AND lse2.id = stl.lse_id
20091 AND stl.scs_code = 'LEASE';
20092
20093 CURSOR c_fa_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
20094 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
20095 SELECT cle.id
20096 FROM okc_subclass_top_line stl,
20097 okc_line_styles_b lse2,
20098 okc_line_styles_b lse1,
20099 okc_k_lines_v cle
20100 WHERE cle.cle_id = p_cle_id
20101 AND cle.dnz_chr_id = p_chr_id
20102 AND cle.lse_id = lse1.id
20103 AND lse1.lty_code = G_FA_LINE_LTY_CODE
20104 AND lse1.lse_parent_id = lse2.id
20105 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
20106 AND lse2.id = stl.lse_id
20107 AND stl.scs_code = 'LEASE';
20108
20109 CURSOR c_addon_line_id(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
20110 p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
20111 SELECT cle.id
20112 FROM okc_subclass_top_line stl,
20113 okc_line_styles_b lse3,
20114 okc_line_styles_b lse2,
20115 okc_line_styles_b lse1,
20116 okc_k_lines_b cle
20117 WHERE cle.dnz_chr_id = p_chr_id
20118 AND cle.lse_id = lse1.id
20119 AND lse1.lty_code = G_ADDON_LINE_LTY_CODE
20120 AND lse1.lse_parent_id = lse2.id
20121 AND lse2.lty_code = G_MODEL_LINE_LTY_CODE
20122 AND lse2.lse_parent_id = lse3.id
20123 AND lse3.lty_code = G_FIN_LINE_LTY_CODE
20124 AND lse3.id = stl.lse_id
20125 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE)
20126 AND cle.cle_id in (SELECT cle.id
20127 FROM okc_subclass_top_line stl,
20128 okc_line_styles_b lse2,
20129 okc_line_styles_b lse1,
20130 okc_k_lines_b cle
20131 WHERE cle.cle_id = p_cle_id
20132 AND cle.dnz_chr_id = p_chr_id
20133 AND cle.lse_id = lse1.id
20134 AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
20135 AND lse1.lse_parent_id = lse2.id
20136 AND lse2.lty_code = G_FIN_LINE_LTY_CODE
20137 AND lse2.id = stl.lse_id
20138 AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE));
20139 --Bug# 5362977 start
20140 --cursor to check if contract has re-lease assets
20141 --Bug# 15992711 : The re-leased flag is no longer checked at contract header
20142 -- but needs to be validated at contract line
20143 -- Cursor modified to include validation at asset line level
20144 /*CURSOR l_chk_rel_ast_csr (p_chr_id IN NUMBER) IS
20145 SELECT 'Y'
20146 FROM OKC_RULES_B rul
20147 WHERE rul.dnz_chr_id = p_chr_id
20148 AND rul.rule_information_category = 'LARLES'
20149 AND NVL(rule_information1,'N') = 'Y';
20150 */
20151 CURSOR l_chk_rel_ast_csr (p_dnz_chr_id IN OKC_K_LINES_V.DNZ_CHR_ID%TYPE
20152 ,p_asset_number IN OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
20153 SELECT NVL(kle_top.re_lease_yn,'N') release_flag
20154 FROM okl_txl_assets_b txlb,
20155 okc_line_styles_b lseb,
20156 okc_k_lines_b cleb_top,
20157 okl_k_lines kle_top
20158 WHERE txlb.kle_id = cleb_top.id
20159 AND cleb_top.lse_id = lseb.id
20160 AND lseb.lty_code = 'FIXED_ASSET'
20161 AND cleb_top.dnz_chr_id = p_dnz_chr_id
20162 AND kle_top.id = cleb_top.id
20163 AND txlb.asset_number = p_asset_number;
20164 -- Bug# 15992711 : End of Modifications
20165
20166
20167 l_chk_rel_ast VARCHAR2(1);
20168
20169 --cursor to check if the contract is undergoing on-line rebook
20170 cursor l_chk_rbk_csr(p_chr_id IN NUMBER) is
20171 SELECT '!'
20172 FROM okc_k_headers_b chr,
20173 okl_trx_contracts ktrx
20174 WHERE ktrx.khr_id_new = chr.id
20175 AND ktrx.tsu_code = 'ENTERED'
20176 AND ktrx.rbr_code is NOT NULL
20177 AND ktrx.tcn_type = 'TRBK'
20178 --rkuttiya added fopr 12.1.1 Multi GAAP
20179 AND ktrx.representation_type = 'PRIMARY'
20180 --
20181 AND chr.id = p_chr_id
20182 AND chr.orig_system_source_code = 'OKL_REBOOK';
20183
20184 l_rbk_khr VARCHAR2(1);
20185 --Bug# 5362977 end
20186
20187
20188 BEGIN
20189 x_return_status := OKL_API.G_RET_STS_SUCCESS;
20190 -- Call start_activity to create savepoint, check compatibility
20191 -- and initialize message list
20192 x_return_status := OKL_API.START_ACTIVITY (
20193 l_api_name
20194 ,p_init_msg_list
20195 ,'_PVT'
20196 ,x_return_status);
20197 -- Check if activity started successfully
20198 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20199 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20200 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20201 RAISE OKL_API.G_EXCEPTION_ERROR;
20202 END IF;
20203 IF l_clev_ib_tbl.COUNT > 0 THEN
20204 -- We have intialize the J , since there could be any index integer
20205 j := l_clev_ib_tbl.FIRST;
20206 LOOP
20207 IF l_clev_ib_tbl(j).id IS NUll OR
20208 l_clev_ib_tbl(j).id = OKL_API.G_MISS_NUM THEN
20209 OKL_API.set_message(p_app_name => G_APP_NAME,
20210 p_msg_name => G_REQUIRED_VALUE,
20211 p_token1 => G_COL_NAME_TOKEN,
20212 p_token1_value => 'IB OKC_K_LINES_B.ID');
20213 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20214 END IF;
20215 x_return_status := get_rec_clev(l_clev_ib_tbl(j).id,
20216 l_clev_ib_rec);
20217 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20218 OKL_API.set_message(p_app_name => G_APP_NAME,
20219 p_msg_name => G_FETCHING_INFO,
20220 p_token1 => G_REC_NAME_TOKEN,
20221 p_token1_value => 'OKC_K_LINES_V Record');
20222 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20223 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20224 OKL_API.set_message(p_app_name => G_APP_NAME,
20225 p_msg_name => G_FETCHING_INFO,
20226 p_token1 => G_REC_NAME_TOKEN,
20227 p_token1_value => 'OKC_K_LINES_V Record');
20228 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20229 END IF;
20230 x_return_status := get_rec_clev(l_clev_ib_rec.cle_id,
20231 l_clev_inst_rec);
20232 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20233 OKL_API.set_message(p_app_name => G_APP_NAME,
20234 p_msg_name => G_FETCHING_INFO,
20235 p_token1 => G_REC_NAME_TOKEN,
20236 p_token1_value => 'OKC_K_LINES_V Record');
20237 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20238 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20239 OKL_API.set_message(p_app_name => G_APP_NAME,
20240 p_msg_name => G_FETCHING_INFO,
20241 p_token1 => G_REC_NAME_TOKEN,
20242 p_token1_value => 'OKC_K_LINES_V Record');
20243 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20244 END IF;
20245
20246 -- we should get the remaining inst line , so that we can update
20247 -- the fixed line , model line and also update the top line with latest OEC
20248 OPEN c_remain_inst_line(l_clev_inst_rec.cle_id,
20249 l_clev_inst_rec.dnz_chr_id);
20250 IF c_remain_inst_line%NOTFOUND THEN
20251 OKL_API.set_message(p_app_name => G_APP_NAME,
20252 p_msg_name => G_DELETING_INSTS_LINE);
20253 x_return_status := OKL_API.G_RET_STS_ERROR;
20254 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20255 END IF;
20256 FETCH c_remain_inst_line INTO ln_remain_inst;
20257 CLOSE c_remain_inst_line;
20258
20259 -- Last record of the OKL_TXL_ITM_INSTS should not be deleted. It
20260 -- has to update the MFG_FLAG to 'N' and nullify the serial number.
20261 IF ln_remain_inst < 2 THEN
20262 x_return_status := get_rec_itiv(l_clev_ib_rec.id,
20263 l_itiv_rec);
20264 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20265 OKL_API.set_message(p_app_name => G_APP_NAME,
20266 p_msg_name => G_FETCHING_INFO,
20267 p_token1 => G_REC_NAME_TOKEN,
20268 p_token1_value => 'OKC_K_LINES_V Record');
20269 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20270 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20271 OKL_API.set_message(p_app_name => G_APP_NAME,
20272 p_msg_name => G_FETCHING_INFO,
20273 p_token1 => G_REC_NAME_TOKEN,
20274 p_token1_value => 'OKC_K_LINES_V Record');
20275 RAISE OKL_API.G_EXCEPTION_ERROR;
20276 END IF;
20277
20278 l_itiv_rec.mfg_serial_number_yn := 'N';
20279 l_itiv_rec.serial_number := null;
20280
20281 update_txl_itm_insts(p_api_version => p_api_version,
20282 p_init_msg_list => p_init_msg_list,
20283 x_return_status => x_return_status,
20284 x_msg_count => x_msg_count,
20285 x_msg_data => x_msg_data,
20286 p_itiv_rec => l_itiv_rec,
20287 x_itiv_rec => lx_itiv_rec);
20288 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20289 OKL_API.set_message(p_app_name => G_APP_NAME,
20290 p_msg_name => G_ITI_ID);
20291 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20292 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20293 OKL_API.set_message(p_app_name => G_APP_NAME,
20294 p_msg_name => G_ITI_ID);
20295 RAISE OKL_API.G_EXCEPTION_ERROR;
20296 END IF;
20297 lb_last_record_updated := TRUE;
20298 /* OKL_API.set_message(p_app_name => G_APP_NAME,
20299 p_msg_name => G_MIN_INST_LINE);
20300 x_return_status := OKL_API.G_RET_STS_ERROR;
20301 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);*/
20302 END IF;
20303
20304 IF (NOT lb_last_record_updated) THEN
20305 validate_sts_code(p_clev_rec => l_clev_inst_rec,
20306 x_return_status => x_return_status);
20307 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20308 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20309 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20310 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20311 END IF;
20312 --Bug# 5362977 start
20313 -- Do not allow update of units if the contract has Re-lease assets
20314 l_chk_rel_ast := 'N';
20315
20316 -- Bug# 15992711 : Change in number of parameters passed to new cursor
20317 -- OPEN l_chk_rel_ast_csr(p_chr_id => l_clev_inst_rec.dnz_chr_id);
20318 OPEN l_chk_rel_ast_csr(l_clev_inst_rec.dnz_chr_id
20319 ,p_asset_number);
20320 -- Bug# 15992711 : End of Modifications
20321
20322 FETCH l_chk_rel_ast_csr INTO l_chk_rel_ast;
20323 CLOSE l_chk_rel_ast_csr;
20324
20325 IF l_chk_rel_ast = 'Y' THEN
20326 OKL_API.set_message(p_app_name => G_APP_NAME,
20327 p_msg_name => 'OKL_LA_REL_UNITS_NO_UPDATE');
20328 RAISE OKL_API.G_EXCEPTION_ERROR;
20329 END IF;
20330 --Bug# 5362977 end
20331
20332 OKL_CONTRACT_PUB.delete_contract_line(
20333 p_api_version => p_api_version,
20334 p_init_msg_list => p_init_msg_list,
20335 x_return_status => x_return_status,
20336 x_msg_count => x_msg_count,
20337 x_msg_data => x_msg_data,
20338 p_line_id => l_clev_inst_rec.id);
20339 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20340 OKL_API.set_message(p_app_name => G_APP_NAME,
20341 p_msg_name => G_DELETING_IB_LINE);
20342 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20343 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20344 OKL_API.set_message(p_app_name => G_APP_NAME,
20345 p_msg_name => G_DELETING_IB_LINE);
20346 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20347 END IF;
20348 END IF;
20349 EXIT WHEN (j = l_clev_ib_tbl.LAST);
20350 j := l_clev_ib_tbl.NEXT(j);
20351 END LOOP;
20352 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20353 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20354 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20355 RAISE OKL_API.G_EXCEPTION_ERROR;
20356 END IF;
20357 ELSE
20358 OKL_API.set_message(p_app_name => G_APP_NAME,
20359 p_msg_name => G_CNT_REC);
20360 RAISE OKL_API.G_EXCEPTION_ERROR;
20361 END IF;
20362 -- we should get the remaining inst line , so that we can update
20363 -- the fixed line , model line and also update the top line with latest OEC
20364 OPEN c_remain_inst_line(l_clev_inst_rec.cle_id,
20365 l_clev_inst_rec.dnz_chr_id);
20366 IF c_remain_inst_line%NOTFOUND THEN
20367 OKL_API.set_message(p_app_name => G_APP_NAME,
20368 p_msg_name => G_DELETING_INSTS_LINE);
20369 RAISE OKL_API.G_EXCEPTION_ERROR;
20370 END IF;
20371 FETCH c_remain_inst_line INTO ln_remain_inst;
20372 CLOSE c_remain_inst_line;
20373 -- To get the Model Line
20374 -- Since we have update the model line
20375 OPEN c_model_line(l_clev_inst_rec.cle_id,
20376 l_clev_inst_rec.dnz_chr_id);
20377 IF c_model_line%NOTFOUND THEN
20378 OKL_API.set_message(p_app_name => G_APP_NAME,
20379 p_msg_name => G_NO_MATCHING_RECORD,
20380 p_token1 => G_COL_NAME_TOKEN,
20381 p_token1_value => 'Model Asset Line record');
20382 RAISE OKL_API.G_EXCEPTION_ERROR;
20383 END IF;
20384 FETCH c_model_line INTO ln_model_line_id;
20385 CLOSE c_model_line;
20386 -- To get the Fixed Asset Line
20387 -- Since we have update the Fixed Asset Line
20388 OPEN c_fa_line(l_clev_inst_rec.cle_id,
20389 l_clev_inst_rec.dnz_chr_id);
20390 IF c_fa_line%NOTFOUND THEN
20391 OKL_API.set_message(p_app_name => G_APP_NAME,
20392 p_msg_name => G_NO_MATCHING_RECORD,
20393 p_token1 => G_COL_NAME_TOKEN,
20394 p_token1_value => 'Fixed Asset Line record');
20395 RAISE OKL_API.G_EXCEPTION_ERROR;
20396 END IF;
20397 FETCH c_fa_line INTO ln_fa_line_id;
20398 CLOSE c_fa_line;
20399 --We have to build the Model Line Record for the calculations of the
20400 -- oec of the top line
20401 -- To Get the cle Model Line Record
20402 x_return_status := get_rec_clev(ln_model_line_id,
20403 r_clev_model_rec);
20404 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20405 OKL_API.set_message(p_app_name => G_APP_NAME,
20406 p_msg_name => G_FETCHING_INFO,
20407 p_token1 => G_REC_NAME_TOKEN,
20408 p_token1_value => 'OKC_K_LINES_V Record');
20409 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20410 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20411 OKL_API.set_message(p_app_name => G_APP_NAME,
20412 p_msg_name => G_FETCHING_INFO,
20413 p_token1 => G_REC_NAME_TOKEN,
20414 p_token1_value => 'OKC_K_LINES_V Record');
20415 RAISE OKL_API.G_EXCEPTION_ERROR;
20416 END IF;
20417 -- To Get the kle Model Line Record
20418 x_return_status := get_rec_klev(ln_model_line_id,
20419 r_klev_model_rec);
20420 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20421 OKL_API.set_message(p_app_name => G_APP_NAME,
20422 p_msg_name => G_FETCHING_INFO,
20423 p_token1 => G_REC_NAME_TOKEN,
20424 p_token1_value => 'OKL_K_LINES_V Record');
20425 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20426 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20427 OKL_API.set_message(p_app_name => G_APP_NAME,
20428 p_msg_name => G_FETCHING_INFO,
20429 p_token1 => G_REC_NAME_TOKEN,
20430 p_token1_value => 'OKL_K_LINES_V Record');
20431 RAISE OKL_API.G_EXCEPTION_ERROR;
20432 END IF;
20433 IF r_klev_model_rec.id <> r_clev_model_rec.id THEN
20434 OKL_API.set_message(p_app_name => G_APP_NAME,
20435 p_msg_name => G_LINE_RECORD);
20436 RAISE OKL_API.G_EXCEPTION_ERROR;
20437 END IF;
20438 -- To Get the cimv Model Line Record
20439 x_return_status := get_rec_cimv(r_clev_model_rec.id,
20440 r_clev_model_rec.dnz_chr_id,
20441 r_cimv_model_rec);
20442 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20443 OKL_API.set_message(p_app_name => G_APP_NAME,
20444 p_msg_name => G_FETCHING_INFO,
20445 p_token1 => G_REC_NAME_TOKEN,
20446 p_token1_value => 'OKC_K_ITEMS_V Record');
20447 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20448 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20449 OKL_API.set_message(p_app_name => G_APP_NAME,
20450 p_msg_name => G_FETCHING_INFO,
20451 p_token1 => G_REC_NAME_TOKEN,
20452 p_token1_value => 'OKC_K_ITEMS_V Record');
20453 RAISE OKL_API.G_EXCEPTION_ERROR;
20454 END IF;
20455 --Build Model cimv item rec
20456 r_cimv_model_rec.number_of_items := ln_remain_inst;
20457 -- Updating of the Model Line and Item Record
20458 update_model_line(p_api_version => p_api_version,
20459 p_init_msg_list => p_init_msg_list,
20460 x_return_status => x_return_status,
20461 x_msg_count => x_msg_count,
20462 x_msg_data => x_msg_data,
20463 P_new_yn => P_new_yn,
20464 p_asset_number => p_asset_number,
20465 p_clev_rec => r_clev_model_rec,
20466 p_klev_rec => r_klev_model_rec,
20467 p_cimv_rec => r_cimv_model_rec,
20468 x_clev_rec => l_clev_model_rec_out,
20469 x_klev_rec => l_klev_model_rec_out,
20470 x_cimv_rec => x_cimv_model_rec);
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 -- We need to check if there are add on line and then we update the Addon number of items also
20477 -- Since there can be multiple Addo lines
20478 FOR r_addon_line_id IN c_addon_line_id(p_cle_id => l_clev_model_rec_out.cle_id,
20479 p_chr_id => l_clev_model_rec_out.dnz_chr_id) LOOP
20480 --We have to build the addon Line Record for the calculations of the
20481 -- oec of the top line
20482 -- To Get the cle addon Line Record
20483 x_return_status := get_rec_clev(r_addon_line_id.id,
20484 r_clev_addon_rec);
20485 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20486 OKL_API.set_message(p_app_name => G_APP_NAME,
20487 p_msg_name => G_FETCHING_INFO,
20488 p_token1 => G_REC_NAME_TOKEN,
20489 p_token1_value => 'OKC_K_LINES_V Record');
20490 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20491 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20492 OKL_API.set_message(p_app_name => G_APP_NAME,
20493 p_msg_name => G_FETCHING_INFO,
20494 p_token1 => G_REC_NAME_TOKEN,
20495 p_token1_value => 'OKC_K_LINES_V Record');
20496 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20497 END IF;
20498 -- To Get the kle Model Line Record
20499 x_return_status := get_rec_klev(r_addon_line_id.id,
20500 r_klev_addon_rec);
20501 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20502 OKL_API.set_message(p_app_name => G_APP_NAME,
20503 p_msg_name => G_FETCHING_INFO,
20504 p_token1 => G_REC_NAME_TOKEN,
20505 p_token1_value => 'OKL_K_LINES_V Record');
20506 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20507 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20508 OKL_API.set_message(p_app_name => G_APP_NAME,
20509 p_msg_name => G_FETCHING_INFO,
20510 p_token1 => G_REC_NAME_TOKEN,
20511 p_token1_value => 'OKL_K_LINES_V Record');
20512 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20513 END IF;
20514 IF r_klev_addon_rec.id <> r_clev_addon_rec.id THEN
20515 OKL_API.set_message(p_app_name => G_APP_NAME,
20516 p_msg_name => G_LINE_RECORD);
20517 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20518 END IF;
20519 -- To Get the cimv Model Line Record
20520 x_return_status := get_rec_cimv(r_clev_addon_rec.id,
20521 r_clev_addon_rec.dnz_chr_id,
20522 r_cimv_addon_rec);
20523 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20524 OKL_API.set_message(p_app_name => G_APP_NAME,
20525 p_msg_name => G_FETCHING_INFO,
20526 p_token1 => G_REC_NAME_TOKEN,
20527 p_token1_value => 'OKC_K_ITEMS_V Record');
20528 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20529 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20530 OKL_API.set_message(p_app_name => G_APP_NAME,
20531 p_msg_name => G_FETCHING_INFO,
20532 p_token1 => G_REC_NAME_TOKEN,
20533 p_token1_value => 'OKC_K_ITEMS_V Record');
20534 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20535 END IF;
20536 --Build addon cimv item rec
20537 r_cimv_addon_rec.number_of_items := ln_remain_inst;
20538 -- Updating of the addon Line and Item Record
20539 update_addon_line_rec(p_api_version => p_api_version,
20540 p_init_msg_list => p_init_msg_list,
20541 x_return_status => x_return_status,
20542 x_msg_count => x_msg_count,
20543 x_msg_data => x_msg_data,
20544 P_new_yn => P_new_yn,
20545 p_asset_number => p_asset_number,
20546 p_clev_rec => r_clev_addon_rec,
20547 p_klev_rec => r_klev_addon_rec,
20548 p_cimv_rec => r_cimv_addon_rec,
20549 x_clev_rec => rx_clev_addon_rec,
20550 x_klev_rec => rx_klev_addon_rec,
20551 x_cimv_rec => rx_cimv_addon_rec);
20552 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20553 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20554 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20555 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20556 END IF;
20557 END LOOP;
20558 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20559 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20560 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20561 RAISE OKL_API.G_EXCEPTION_ERROR;
20562 END IF;
20563 -- Since we need to populate the OEC into fixed asset line also
20564 -- So we need to calcualte the same here it self
20565 oec_calc_upd_fin_rec(p_api_version => p_api_version,
20566 p_init_msg_list => p_init_msg_list,
20567 x_return_status => x_return_status,
20568 x_msg_count => x_msg_count,
20569 x_msg_data => x_msg_data,
20570 P_new_yn => P_new_yn,
20571 p_asset_number => p_asset_number,
20572 -- 4414408
20573 p_top_line_id => l_clev_inst_rec.cle_id,
20574 p_dnz_chr_id => l_clev_model_rec_out.dnz_chr_id,
20575 x_fin_clev_rec => x_clev_fin_rec,
20576 x_fin_klev_rec => x_klev_fin_rec,
20577 x_oec => ln_klev_fin_oec,
20578 p_validate_fin_line => OKL_API.G_TRUE);
20579 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20580 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20581 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20582 RAISE OKL_API.G_EXCEPTION_ERROR;
20583 END IF;
20584 -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
20585 cap_amt_calc_upd_fin_rec(p_api_version => p_api_version,
20586 p_init_msg_list => p_init_msg_list,
20587 x_return_status => x_return_status,
20588 x_msg_count => x_msg_count,
20589 x_msg_data => x_msg_data,
20590 P_new_yn => P_new_yn,
20591 p_asset_number => p_asset_number,
20592 -- 4414408
20593 p_top_line_id => l_clev_inst_rec.cle_id,
20594 p_dnz_chr_id => l_clev_model_rec_out.dnz_chr_id,
20595 x_fin_clev_rec => x_clev_fin_rec,
20596 x_fin_klev_rec => x_klev_fin_rec,
20597 x_cap_amt => ln_klev_fin_cap,
20598 p_validate_fin_line => OKL_API.G_TRUE);
20599 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20600 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20601 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20602 RAISE OKL_API.G_EXCEPTION_ERROR;
20603 END IF;
20604 -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
20605 res_value_calc_upd_fin_rec(p_api_version => p_api_version,
20606 p_init_msg_list => p_init_msg_list,
20607 x_return_status => x_return_status,
20608 x_msg_count => x_msg_count,
20609 x_msg_data => x_msg_data,
20610 P_new_yn => P_new_yn,
20611 p_asset_number => p_asset_number,
20612 -- 4414408
20613 p_top_line_id => l_clev_inst_rec.cle_id,
20614 p_dnz_chr_id => l_clev_model_rec_out.dnz_chr_id,
20615 x_fin_clev_rec => x_clev_fin_rec,
20616 x_fin_klev_rec => x_klev_fin_rec,
20617 x_res_value => ln_klev_fin_res,
20618 p_validate_fin_line => OKL_API.G_TRUE);
20619 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20620 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20621 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20622 RAISE OKL_API.G_EXCEPTION_ERROR;
20623 END IF;
20624 -- Updating of the Fixed Asset Line Process
20625 -- To Get the cle fa Line Record
20626 x_return_status := get_rec_clev(ln_fa_line_id,
20627 r_clev_fa_rec);
20628 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20629 OKL_API.set_message(p_app_name => G_APP_NAME,
20630 p_msg_name => G_FETCHING_INFO,
20631 p_token1 => G_REC_NAME_TOKEN,
20632 p_token1_value => 'OKC_K_LINES_V Record');
20633 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20634 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20635 OKL_API.set_message(p_app_name => G_APP_NAME,
20636 p_msg_name => G_FETCHING_INFO,
20637 p_token1 => G_REC_NAME_TOKEN,
20638 p_token1_value => 'OKC_K_LINES_V Record');
20639 RAISE OKL_API.G_EXCEPTION_ERROR;
20640 END IF;
20641 -- To Get the kle fa Line Record
20642 x_return_status := get_rec_klev(ln_fa_line_id,
20643 r_klev_fa_rec);
20644 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20645 OKL_API.set_message(p_app_name => G_APP_NAME,
20646 p_msg_name => G_FETCHING_INFO,
20647 p_token1 => G_REC_NAME_TOKEN,
20648 p_token1_value => 'OKL_K_LINES_V Record');
20649 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20650 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20651 OKL_API.set_message(p_app_name => G_APP_NAME,
20652 p_msg_name => G_FETCHING_INFO,
20653 p_token1 => G_REC_NAME_TOKEN,
20654 p_token1_value => 'OKL_K_LINES_V Record');
20655 RAISE OKL_API.G_EXCEPTION_ERROR;
20656 END IF;
20657 IF r_klev_fa_rec.id <> r_clev_fa_rec.id THEN
20658 OKL_API.set_message(p_app_name => G_APP_NAME,
20659 p_msg_name => G_LINE_RECORD);
20660 RAISE OKL_API.G_EXCEPTION_ERROR;
20661 END IF;
20662 -- To Get the cimv fa Line Record
20663 x_return_status := get_rec_cimv(r_clev_fa_rec.id,
20664 r_clev_fa_rec.dnz_chr_id,
20665 r_cimv_fa_rec);
20666 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20667 OKL_API.set_message(p_app_name => G_APP_NAME,
20668 p_msg_name => G_FETCHING_INFO,
20669 p_token1 => G_REC_NAME_TOKEN,
20670 p_token1_value => 'OKC_K_ITEMS_V Record');
20671 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20672 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20673 OKL_API.set_message(p_app_name => G_APP_NAME,
20674 p_msg_name => G_FETCHING_INFO,
20675 p_token1 => G_REC_NAME_TOKEN,
20676 p_token1_value => 'OKC_K_ITEMS_V Record');
20677 RAISE OKL_API.G_EXCEPTION_ERROR;
20678 END IF;
20679 --Build cimv fa item rec
20680 r_cimv_fa_rec.number_of_items := ln_remain_inst;
20681 --Build talv fa item rec
20682 x_return_status := get_rec_txlv(r_clev_fa_rec.id,
20683 r_talv_fa_rec);
20684 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20685 OKL_API.set_message(p_app_name => G_APP_NAME,
20686 p_msg_name => G_FETCHING_INFO,
20687 p_token1 => G_REC_NAME_TOKEN,
20688 p_token1_value => 'OKL_TXL_ASSETS_V Record');
20689 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20690 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20691 OKL_API.set_message(p_app_name => G_APP_NAME,
20692 p_msg_name => G_FETCHING_INFO,
20693 p_token1 => G_REC_NAME_TOKEN,
20694 p_token1_value => 'OKL_TXL_ASSETS_V Record');
20695 RAISE OKL_API.G_EXCEPTION_ERROR;
20696 END IF;
20697 --Build talv fa item rec
20698 r_talv_fa_rec.current_units := ln_remain_inst;
20699
20700 --Bug# 5362977 start
20701 -- For online rebook, update depreciation_cost and
20702 -- original_cost to line capital amount instead of line oec
20703 --check for rebook contract
20704 l_rbk_khr := '?';
20705 OPEN l_chk_rbk_csr (p_chr_id => r_clev_fa_rec.dnz_chr_id);
20706 FETCH l_chk_rbk_csr INTO l_rbk_khr;
20707 CLOSE l_chk_rbk_csr;
20708
20709 If l_rbk_khr = '!' Then
20710 --Commented by bkatraga for bug 9770391
20711 --r_talv_fa_rec.depreciation_cost := NVL(x_klev_fin_rec.capital_amount,ln_klev_fin_cap);
20712 r_talv_fa_rec.original_cost := NVL(x_klev_fin_rec.capital_amount,ln_klev_fin_cap);
20713 else
20714 --Commented by bkatraga for bug 9770391
20715 --r_talv_fa_rec.depreciation_cost := x_klev_fin_rec.oec;
20716 r_talv_fa_rec.original_cost := x_klev_fin_rec.oec;
20717 end if;
20718 --Bug# 5362977 end
20719
20720
20721 r_clev_fa_rec.item_description := r_talv_fa_rec.description;
20722 -- Updating of the Fixed Asset Line and item/Txl Asset Info
20723 update_fixed_asset_line(p_api_version => p_api_version,
20724 p_init_msg_list => p_init_msg_list,
20725 x_return_status => x_return_status,
20726 x_msg_count => x_msg_count,
20727 x_msg_data => x_msg_data,
20728 P_new_yn => P_new_yn,
20729 p_asset_number => p_asset_number,
20730 p_clev_rec => r_clev_fa_rec,
20731 p_klev_rec => r_klev_fa_rec,
20732 p_cimv_rec => r_cimv_fa_rec,
20733 p_talv_rec => r_talv_fa_rec,
20734 x_clev_rec => l_clev_fa_rec_out,
20735 x_klev_rec => l_klev_fa_rec_out,
20736 x_cimv_rec => x_cimv_fa_rec,
20737 x_talv_rec => x_talv_fa_rec);
20738 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20739 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20740 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20741 RAISE OKL_API.G_EXCEPTION_ERROR;
20742 END IF;
20743 --Bug# 5176649 start
20744 -- Update Tax Book details - okl_txd_assets_b
20745 update_asset_line_details(p_api_version => p_api_version,
20746 p_init_msg_list => p_init_msg_list,
20747 x_return_status => x_return_status,
20748 x_msg_count => x_msg_count,
20749 x_msg_data => x_msg_data,
20750 p_asset_number => p_asset_number,
20751 p_original_cost => x_talv_fa_rec.original_cost,
20752 p_tal_id => x_talv_fa_rec.ID);
20753 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20754 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20755 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20756 RAISE OKL_API.G_EXCEPTION_ERROR;
20757 END IF;
20758 --Bug# 5176649 end
20759
20760 -- We need to change the status of the header whenever there is updating happening
20761 -- after the contract status is approved
20762 IF (l_clev_fa_rec_out.dnz_chr_id is NOT NULL) AND
20763 (l_clev_fa_rec_out.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
20764 --cascade edit status on to lines
20765 okl_contract_status_pub.cascade_lease_status_edit
20766 (p_api_version => p_api_version,
20767 p_init_msg_list => p_init_msg_list,
20768 x_return_status => x_return_status,
20769 x_msg_count => x_msg_count,
20770 x_msg_data => x_msg_data,
20771 p_chr_id => l_clev_fa_rec_out.dnz_chr_id);
20772 IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20773 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20774 ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20775 RAISE OKL_API.G_EXCEPTION_ERROR;
20776 END IF;
20777 END IF;
20778 OKL_API.END_ACTIVITY (x_msg_count,
20779 x_msg_data );
20780 EXCEPTION
20781 WHEN OKL_API.G_EXCEPTION_ERROR THEN
20782 x_return_status := OKL_API.HANDLE_EXCEPTIONS(
20783 l_api_name,
20784 G_PKG_NAME,
20785 'OKL_API.G_RET_STS_ERROR',
20786 x_msg_count,
20787 x_msg_data,
20788 '_PVT');
20789 WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
20790 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
20791 l_api_name,
20792 G_PKG_NAME,
20793 'OKL_API.G_RET_STS_UNEXP_ERROR',
20794 x_msg_count,
20795 x_msg_data,
20796 '_PVT');
20797 WHEN OTHERS THEN
20798 x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
20799 l_api_name,
20800 G_PKG_NAME,
20801 'OTHERS',
20802 x_msg_count,
20803 x_msg_data,
20804 '_PVT');
20805 END delete_ints_ib_line;
20806
20807 End OKL_CREATE_KLE_PVT;