DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_COPY_ASSET_PVT

Source


1 Package body okl_copy_asset_pvt as
2 /* $Header: OKLRCALB.pls 120.16 2006/11/13 06:30:14 dpsingh noship $ */
3 -------------------------------------------------------------------------------------------------
4 -- GLOBAL MESSAGE CONSTANTS
5 -------------------------------------------------------------------------------------------------
6   G_COL_NAME_TOKEN              CONSTANT  VARCHAR2(200) := OKL_API.G_COL_NAME_TOKEN;
7   G_REQUIRED_VALUE              CONSTANT  VARCHAR2(200) := 'OKL_REQUIRED_VALUE';
8   G_NO_MATCHING_RECORD          CONSTANT  VARCHAR2(200) := 'OKL_LLA_NO_MATCHING_RECORD';
9   G_INVALID_YN                  CONSTANT  VARCHAR2(200) := 'OKL_INVALID_YN';
10   G_LINE_RECORD                 CONSTANT  VARCHAR2(200) := 'OKL_LLA_LINE_RECORD';
11   G_ITEM_RECORD                 CONSTANT  VARCHAR2(200) := 'OKL_LLA_ITEM_RECORD';
12   G_TRX_ID                      CONSTANT  VARCHAR2(200) := 'OKL_LLA_TRX_ID';
13   G_KLE_ID                      CONSTANT  VARCHAR2(200) := 'OKL_LLA_KLE_ID';
14   G_TXD_ID                      CONSTANT  VARCHAR2(200) := 'OKL_LLA_TXD_ID';
15   G_ITI_ID                      CONSTANT  VARCHAR2(200) := 'OKL_LLA_ITI_ID';
16   G_COPY_LINE                   CONSTANT  VARCHAR2(200) := 'OKL_LLA_COPY_LINE';
17   G_UPPERCASE_REQUIRED	        CONSTANT  VARCHAR2(200) := 'OKL_UPPER_CASE_REQUIRED';
18   G_UNEXPECTED_ERROR            CONSTANT  VARCHAR2(200) := 'OKL_CONTRACTS_UNEXP_ERROR';
19   G_FETCHING_INFO               CONSTANT  VARCHAR2(200) := 'OKL_LLA_FETCHING_INFO';
20   G_REC_NAME_TOKEN              CONSTANT  VARCHAR2(200) := 'REC_INFO';
21   G_UPDATING_FIN_LINE           CONSTANT  VARCHAR2(200) := 'OKL_LLA_UPDATING_FIN_LINE';
22   G_SQLERRM_TOKEN               CONSTANT  VARCHAR2(200) := 'SQLerrm';
23   G_SQLCODE_TOKEN               CONSTANT  VARCHAR2(200) := 'SQLcode';
24 --bug# 2769267
25   G_CONV_RATE_NOT_FOUND         CONSTANT VARCHAR2(200)  := 'OKL_LLA_CONV_RATE_NOT_FOUND';
26   G_FROM_CURRENCY_TOKEN         CONSTANT VARCHAR2(200)  := 'FROM_CURRENCY';
27   G_TO_CURRENCY_TOKEN           CONSTANT VARCHAR2(200)  := 'TO_CURRENCY';
28   G_CONV_TYPE_TOKEN             CONSTANT VARCHAR2(200)  := 'CONVERSION_TYPE';
29   G_CONV_DATE_TOKEN             CONSTANT VARCHAR2(200)  := 'CONVERSION_DATE';
30 
31 --BUG# 3569441
32   G_INVALID_INSTALL_LOC_TYPE CONSTANT VARCHAR2(200) := 'OKL_INVALID_INSTALL_LOC_TYPE';
33   G_LOCATION_TYPE_TOKEN      CONSTANT VARCHAR2(30)  := 'LOCATION_TYPE';
34   G_LOC_TYPE1_TOKEN          CONSTANT VARCHAR2(30)  := 'LOCATION_TYPE1';
35   G_LOC_TYPE2_TOKEN          CONSTANT VARCHAR2(30)  := 'LOCATION_TYPE2';
36 
37   G_MISSING_USAGE            CONSTANT VARCHAR2(200) := 'OKL_INSTALL_LOC_MISSING_USAGE';
38   G_USAGE_TYPE_TOKEN         CONSTANT VARCHAR2(30)  := 'USAGE_TYPE';
39   G_ADDRESS_TOKEN            CONSTANT VARCHAR2(30)  := 'ADDRESS';
40   G_INSTANCE_NUMBER_TOKEN    CONSTANT VARCHAR2(30)  := 'INSTANCE_NUMBER';
41 --END BUG# 3569441
42 -------------------------------------------------------------------------------------------------
43 -- GLOBAL EXCEPTION
44 -------------------------------------------------------------------------------------------------
45   G_EXCEPTION_HALT_VALIDATION             EXCEPTION;
46   G_EXCEPTION_STOP_VALIDATION             EXCEPTION;
47   G_API_TYPE                    CONSTANT  VARCHAR2(4) := '_PVT';
48   G_API_VERSION                 CONSTANT  NUMBER := 1.0;
49   G_SCOPE                       CONSTANT  VARCHAR2(4) := '_PVT';
50 -------------------------------------------------------------------------------------------------
51 -- GLOBAL VARIABLES
52 -------------------------------------------------------------------------------------------------
53   G_PKG_NAME	                CONSTANT  VARCHAR2(200) := 'OKL_COPY_ASSET_PVT';
54   G_APP_NAME		        CONSTANT  VARCHAR2(3)   :=  OKL_API.G_APP_NAME;
55   G_FND_APP                     CONSTANT  VARCHAR2(200) := OKL_API.G_FND_APP;
56   G_FIN_LINE_LTY_CODE                     OKC_LINE_STYLES_V.LTY_CODE%TYPE := 'FREE_FORM1';
57   G_MODEL_LINE_LTY_CODE                   OKC_LINE_STYLES_V.LTY_CODE%TYPE := 'ITEM';
58   G_ADDON_LINE_LTY_CODE                   OKC_LINE_STYLES_V.LTY_CODE%TYPE := 'ADD_ITEM';
59   G_FA_LINE_LTY_CODE                      OKC_LINE_STYLES_V.LTY_CODE%TYPE := 'FIXED_ASSET';
60   G_INST_LINE_LTY_CODE                    OKC_LINE_STYLES_V.LTY_CODE%TYPE := 'FREE_FORM2';
61   G_IB_LINE_LTY_CODE                      OKC_LINE_STYLES_V.LTY_CODE%TYPE := 'INST_ITEM';
62   G_FEE_LINE_LTY_CODE                     OKC_LINE_STYLES_V.LTY_CODE%TYPE := 'FEE';
63   G_SER_LINE_LTY_CODE                     OKC_LINE_STYLES_V.LTY_CODE%TYPE := 'SOLD_SERVICE';
64   G_UBB_LINE_LTY_CODE                     OKC_LINE_STYLES_V.LTY_CODE%TYPE := 'USAGE';
65   G_ID2                         CONSTANT  VARCHAR2(200) := '#';
66   G_TRY_TYPE                              OKL_TRX_TYPES_V.TRY_TYPE%TYPE   := 'TIE';
67   G_TLS_TYPE                              OKC_LINE_STYLES_V.LSE_TYPE%TYPE := 'TLS';
68   G_SLS_TYPE                              OKC_LINE_STYLES_V.LSE_TYPE%TYPE := 'SLS';
69   G_LEASE_SCS_CODE                        OKC_K_HEADERS_V.SCS_CODE%TYPE   := 'LEASE';
70   G_LOAN_SCS_CODE                         OKC_K_HEADERS_V.SCS_CODE%TYPE   := 'LOAN';
71 --  G_FA_TRY_NAME                           OKL_TRX_TYPES_V.NAME%TYPE       := 'CREATE ASSET LINES';
72 --  G_IB_TRY_NAME                           OKL_TRX_TYPES_V.NAME%TYPE       := 'CREATE_IB_LINES';
73   G_TRY_NAME                              OKL_TRX_TYPES_TL.NAME%TYPE     := 'Internal Asset Creation';
74   G_LANGUAGE                              OKL_TRX_TYPES_TL.LANGUAGE%TYPE := 'US';
75   G_GEN_INST_NUM_IB         CONSTANT  VARCHAR2(200) := 'OKL_LLA_GEN_INST_NUM_IB';
76   G_GEN_ASSET_NUMBER        CONSTANT  VARCHAR2(200) := 'OKL_LLA_GEN_ASSET_NUMBER';
77 -------------------------------------------------------------------------------------------------
78 -- COMPOSITE GLOBAL VARIABLES
79 -------------------------------------------------------------------------------------------------
80     subtype cimv_rec_type is OKL_OKC_MIGRATION_PVT.cimv_rec_type;
81     subtype clev_rec_type is OKL_OKC_MIGRATION_PVT.clev_rec_type;
82     subtype klev_rec_type is OKL_CONTRACT_PUB.klev_rec_type;
83     subtype trxv_rec_type is OKL_TRX_ASSETS_PUB.thpv_rec_type;
84     subtype trxv_tbl_type is OKL_TRX_ASSETS_PUB.thpv_tbl_type;
85     subtype talv_rec_type is OKL_TXL_ASSETS_PUB.tlpv_rec_type;
86     subtype talv_tbl_type is OKL_TXL_ASSETS_PUB.tlpv_tbl_type;
87     subtype txdv_tbl_type is OKL_TXD_ASSETS_PUB.adpv_tbl_type;
88     subtype txdv_rec_type is OKL_TXD_ASSETS_PUB.adpv_rec_type;
89     subtype itiv_rec_type is OKL_TXL_ITM_INSTS_PUB.iipv_rec_type;
90     subtype itiv_tbl_type is OKL_TXL_ITM_INSTS_PUB.iipv_tbl_type;
91     subtype sidv_rec_type is OKL_SUPP_INVOICE_DTLS_PUB.sidv_rec_type;
92     subtype sidv_tbl_type is OKL_SUPP_INVOICE_DTLS_PUB.sidv_tbl_type;
93     TYPE g_ib_id_rec IS RECORD (
94     id                             NUMBER := OKL_API.G_MISS_NUM,
95     dnz_chr_id                     NUMBER := OKL_API.G_MISS_NUM);
96 
97     TYPE g_ib_id_tbl IS TABLE OF g_ib_id_rec
98         INDEX BY BINARY_INTEGER;
99 
100     TYPE g_ib_item_type IS RECORD (
101     object1_id1                    OKC_K_ITEMS_V.OBJECT1_ID1%TYPE := OKL_API.G_MISS_CHAR,
102     object1_id2                    OKC_K_ITEMS_V.OBJECT1_ID2%TYPE := OKL_API.G_MISS_CHAR);
103 
104     TYPE g_ib_item_tbl IS TABLE OF g_ib_item_type
105         INDEX BY BINARY_INTEGER;
106 -----------------------------------------------------------------------------------------------------------
107 --Added by dpsingh for LE uptake
108 CURSOR contract_num_csr (p_ctr_id1 NUMBER) IS
109   SELECT  contract_number
110   FROM OKC_K_HEADERS_B
111   WHERE id = p_ctr_id1;
112 
113 CURSOR get_chr_id_csr(p_kle_id1 NUMBER) IS
114   SELECT  DNZ_CHR_ID
115   FROM OKC_K_LINES_B
116   WHERE ID = p_kle_id1;
117 
118   FUNCTION generate_instance_number_ib(x_instance_number_ib  OUT NOCOPY  OKL_TXL_ITM_INSTS_V.INSTANCE_NUMBER_IB%TYPE)
119   RETURN VARCHAR2 IS
120     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
121     -- cursor to get sequence number for asset number
122     Cursor c_instance_no_ib IS
123     select TO_CHAR(OKL_IBN_SEQ.NEXTVAL)
124     FROM dual;
125   BEGIN
126     OPEN  c_instance_no_ib;
127     FETCH c_instance_no_ib INTO x_instance_number_ib;
128     IF (c_instance_no_ib%NOTFOUND) Then
129       x_return_status := OKC_API.G_RET_STS_ERROR;
130       OKL_API.SET_MESSAGE(p_app_name 	 => g_app_name,
131                           p_msg_name	 => g_unexpected_error,
132                           p_token1	 => g_sqlcode_token,
133                           p_token1_value => sqlcode,
134 			  p_token2	 => g_sqlerrm_token,
135 			  p_token2_value => sqlerrm);
136     END IF;
137     CLOSE c_instance_no_ib;
138     RETURN x_return_status;
139   EXCEPTION
140     WHEN OTHERS THEN
141       IF c_instance_no_ib%ISOPEN THEN
142         CLOSE c_instance_no_ib;
143       END IF;
144       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
145       OKL_API.SET_MESSAGE(p_app_name 	 => g_app_name,
146                           p_msg_name	 => g_unexpected_error,
147                           p_token1	 => g_sqlcode_token,
148                           p_token1_value => sqlcode,
149 			  p_token2	 => g_sqlerrm_token,
150 			  p_token2_value => sqlerrm);
151     RETURN x_return_status;
152   END generate_instance_number_ib;
153 ---------------------------------------------------------------------------------------------------------------
154 /*
155   FUNCTION generate_asset_number(p_old_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
156                                  x_asset_number     OUT NOCOPY OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE)
157   RETURN VARCHAR2 IS
158     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
159     -- cursor to get sequence number for asset number
160     Cursor c_asset_no(p_old_asset_number OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE) IS
161     select p_old_asset_number||'_'||OKL_FAN_SEQ.NEXTVAL
162     FROM dual;
163   BEGIN
164     OPEN  c_asset_no(p_old_asset_number);
165     FETCH c_asset_no INTO x_asset_number;
166     IF (c_asset_no%NOTFOUND) Then
167       x_return_status := OKC_API.G_RET_STS_ERROR;
168       OKL_API.SET_MESSAGE(p_app_name 	 => g_app_name,
169                           p_msg_name	 => g_unexpected_error,
170                           p_token1	 => g_sqlcode_token,
171                           p_token1_value => sqlcode,
172 			  p_token2	 => g_sqlerrm_token,
173 			  p_token2_value => sqlerrm);
174     END IF;
175     CLOSE c_asset_no;
176     RETURN x_return_status;
177   EXCEPTION
178     WHEN OTHERS THEN
179       IF c_asset_no%ISOPEN THEN
180         CLOSE c_asset_no;
181       END IF;
182       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
183       OKL_API.SET_MESSAGE(p_app_name 	 => g_app_name,
184                           p_msg_name	 => g_unexpected_error,
185                           p_token1	 => g_sqlcode_token,
186                           p_token1_value => sqlcode,
187 			  p_token2	 => g_sqlerrm_token,
188 			  p_token2_value => sqlerrm);
189     RETURN x_return_status;
190   END generate_asset_number;
191 */
192   FUNCTION generate_asset_number(x_asset_number OUT NOCOPY OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE)
193   RETURN VARCHAR2 IS
194     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
195     ln_dummy1                  NUMBER := 0;
196     ln_dummy2                  NUMBER := 0;
197     ln_dummy3                  NUMBER := 0;
198     lv_asset_number            OKX_ASSETS_V.ASSET_NUMBER%TYPE;
199     -- cursor to get sequence number for asset number
200     Cursor c_asset_no IS
201     select 'OKL'||OKL_FAN_SEQ.NEXTVAL
202     FROM dual;
203 
204     -- cursor to get check the existence of asset number
205     CURSOR c_txl_asset_number(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE)
206     IS
207     SELECT 1
208     FROM DUAL
209     WHERE EXISTS (SELECT '1'
210                   FROM OKL_TXL_ASSETS_B
211                   WHERE asset_number = p_asset_number);
212 
213     CURSOR c_okx_asset_lines_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
214     SELECT 1
215     FROM DUAL
216     WHERE EXISTS (SELECT '1'
217                   FROM OKX_ASSET_LINES_V
218                   WHERE asset_number = p_asset_number);
219 
220     CURSOR c_okx_assets_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
221     SELECT 1
222     FROM DUAL
223     WHERE EXISTS (SELECT '1'
224                   FROM OKX_ASSETS_V
225                   WHERE asset_number = p_asset_number);
226 
227   BEGIN
228     OPEN  c_asset_no;
229     FETCH c_asset_no INTO x_asset_number;
230     IF (c_asset_no%NOTFOUND) THEN
231       x_return_status := OKC_API.G_RET_STS_ERROR;
232       OKL_API.SET_MESSAGE(p_app_name 	   => g_app_name,
233                           p_msg_name	   => g_unexpected_error,
234                           p_token1	   => g_sqlcode_token,
235                           p_token1_value => sqlcode,
236            			      p_token2	   => g_sqlerrm_token,
237               			  p_token2_value => sqlerrm);
238     END IF;
239     CLOSE c_asset_no;
240 
241     LOOP
242       lv_asset_number := x_asset_number;
243 
244       OPEN  c_txl_asset_number(lv_asset_number);
245       FETCH c_txl_asset_number INTO ln_dummy1;
246       IF c_txl_asset_number%NOTFOUND THEN
247         ln_dummy1 := 0;
248       END IF;
249       CLOSE c_txl_asset_number;
250 
251       OPEN c_okx_asset_lines_v(lv_asset_number);
252       FETCH c_okx_asset_lines_v INTO ln_dummy2;
253       IF c_okx_asset_lines_v%NOTFOUND THEN
254         ln_dummy2 := 0;
255       END IF;
256       CLOSE c_okx_asset_lines_v;
257 
258       OPEN c_okx_assets_v(lv_asset_number);
259       FETCH c_okx_assets_v INTO ln_dummy3;
260       IF c_okx_assets_v%NOTFOUND THEN
261         ln_dummy3 := 0;
262       END IF;
263       CLOSE c_okx_assets_v;
264 
265       IF ln_dummy1 = 1 OR
266          ln_dummy2 = 1 OR
267          ln_dummy3 = 1 THEN
268         OPEN  c_asset_no;
269         FETCH c_asset_no INTO x_asset_number;
270         IF (c_asset_no%NOTFOUND) THEN
271           x_return_status := OKC_API.G_RET_STS_ERROR;
272           OKL_API.SET_MESSAGE(p_app_name 	   => g_app_name,
273                               p_msg_name	   => g_unexpected_error,
274                               p_token1	       => g_sqlcode_token,
275                               p_token1_value   => sqlcode,
276            			          p_token2	       => g_sqlerrm_token,
277                  			  p_token2_value   => sqlerrm);
278         END IF;
279         CLOSE c_asset_no;
280       ELSE
281         EXIT;
282       END IF;
283     END LOOP;
284 
285     RETURN x_return_status;
286   EXCEPTION
287     WHEN OTHERS THEN
288       IF c_asset_no%ISOPEN THEN
289         CLOSE c_asset_no;
290       END IF;
291       IF c_txl_asset_number%ISOPEN THEN
292         CLOSE c_txl_asset_number;
293       END IF;
294       IF c_okx_asset_lines_v%ISOPEN THEN
295         CLOSE c_okx_asset_lines_v;
296       END IF;
297       IF c_okx_assets_v%ISOPEN THEN
298         CLOSE c_okx_assets_v;
299       END IF;
300       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
301       OKL_API.SET_MESSAGE(p_app_name 	 => g_app_name,
302                           p_msg_name	 => g_unexpected_error,
303                           p_token1	 => g_sqlcode_token,
304                           p_token1_value => sqlcode,
305 			  p_token2	 => g_sqlerrm_token,
306 			  p_token2_value => sqlerrm);
307     RETURN x_return_status;
308   END generate_asset_number;
309 -------------------------------------------------------------------------------------------------
310 -- Start of Commnets
311 -- Badrinath Kuchibholta
312 -- Procedure Name       : Validate_from _cle_id
313 -- Description          : validation with OKC_K_LINES_V
314 -- Business Rules       : The Line should be a top Line
315 -- Parameters           : 1.P_cle_id should be the top line
316 --                        2.x_fa_line_id the Fixed asset line Id
317 --                          as the same will be the okl_txl_tables
318 --                        3. Return Status
319 -- Version              : 1.0
320 -- End of Commnets
321   PROCEDURE validate_from_cle_id(p_cle_id        IN OKC_K_LINES_V.ID%TYPE,
322                                  x_fa_line_id    OUT NOCOPY OKL_K_LINES_V.ID%TYPE,
323                                  x_ib_id_tbl     OUT NOCOPY g_ib_id_tbl,
324                                  x_dnz_chr_id    OUT NOCOPY OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
325                                  x_return_status OUT NOCOPY VARCHAR2)
326   IS
327     ln_cle_id             OKC_K_LINES_V.CLE_ID%TYPE;
328     ln_chr_id             OKC_K_LINES_V.CHR_ID%TYPE;
329     lv_lty_code           OKC_LINE_STYLES_V.LTY_CODE%TYPE;
330     lv_lse_type           OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
331 
332     i                        NUMBER := 0;
333     CURSOR c_cle_id_validate(p_cle_id    OKC_K_LINES_V.ID%TYPE)
334     IS
335     SELECT cle.cle_id
336            ,cle.chr_id
337            ,lse.lty_code
338            ,lse.lse_type
339     FROM okc_k_lines_b cle,
340          okc_line_styles_v lse
341     WHERE cle.lse_id = lse.id
342     AND cle.id = p_cle_id;
343 
344     CURSOR c_get_fa_line_id(p_cle_id    OKC_K_LINES_V.ID%TYPE)
345     IS
346     SELECT cle.id,
347            cle.dnz_chr_id
348     FROM okc_line_styles_b lse,
349          okc_k_lines_v cle
350     WHERE cle.cle_id = p_cle_id
351     AND lse.id = cle.lse_id
352     AND lse.lty_code = G_FA_LINE_LTY_CODE;
353 
354     CURSOR c_get_ib_line_id(p_cle_id    OKC_K_LINES_V.ID%TYPE)
355     IS
356     SELECT cle_ib.id,
357            cle_ib.dnz_chr_id
358     FROM okc_line_styles_b lse_ib,
359          okc_k_lines_b cle_ib,
360          okc_line_styles_b lse_inst,
361          okc_k_lines_b cle_inst
362     WHERE cle_inst.cle_id = p_cle_id
363     AND cle_inst.lse_id = lse_inst.id
364     AND lse_inst.lty_code = G_INST_LINE_LTY_CODE
365     AND cle_ib.cle_id = cle_inst.id
366     AND cle_ib.lse_id = lse_ib.id
367     AND lse_ib.lty_code = G_IB_LINE_LTY_CODE;
368 
369     r_get_ib_line_id    c_get_ib_line_id%ROWTYPE;
370 
371   BEGIN
372     -- initialize return status
373     x_return_status := OKL_API.G_RET_STS_SUCCESS;
374     -- data is required
375     IF (p_cle_id = OKL_API.G_MISS_NUM) OR
376        (p_cle_id IS NULL) THEN
377        OKL_API.set_message(p_app_name     => G_APP_NAME,
378                            p_msg_name     => G_REQUIRED_VALUE,
379                            p_token1       => G_COL_NAME_TOKEN,
380                            p_token1_value => 'Cle_id');
381        -- halt validation
382        RAISE G_EXCEPTION_STOP_VALIDATION;
383     END IF;
384     -- Enforce Foreign Key
385     OPEN  c_cle_id_validate(p_cle_id);
386     IF c_cle_id_validate%NOTFOUND THEN
387       -- store SQL error message on message stack
388       OKL_API.set_message(p_app_name     => G_APP_NAME,
389                           p_msg_name     => G_NO_MATCHING_RECORD,
390                           p_token1       => G_COL_NAME_TOKEN,
391                           p_token1_value => 'Cle_id');
392        -- halt validation
393        RAISE G_EXCEPTION_HALT_VALIDATION;
394     END IF;
395     FETCH c_cle_id_validate into ln_cle_id,
396                                  ln_chr_id,
397                                  lv_lty_code,
398                                  lv_lse_type;
399     CLOSE c_cle_id_validate;
400     IF (ln_cle_id IS NULL OR
401         ln_cle_id = OKL_API.G_MISS_NUM) AND
402         ln_chr_id IS NOT NULL AND
403         lv_lty_code = G_FIN_LINE_LTY_CODE AND
404         lv_lse_type = G_TLS_TYPE THEN
405        OPEN  c_get_fa_line_id(p_cle_id);
406        IF c_get_fa_line_id%NOTFOUND THEN
407          -- store SQL error message on message stack
408          OKL_API.set_message(p_app_name     => G_APP_NAME,
409                              p_msg_name     => G_NO_MATCHING_RECORD,
410                              p_token1       => G_COL_NAME_TOKEN,
411                              p_token1_value => 'FA_Cle_id');
412          -- halt validation
413          RAISE G_EXCEPTION_HALT_VALIDATION;
414        END IF;
415        FETCH c_get_fa_line_id INTO x_fa_line_id,
416                                    x_dnz_chr_id;
417        CLOSE c_get_fa_line_id;
418        FOR r_get_ib_line_id IN c_get_ib_line_id(p_cle_id) LOOP
419          IF c_get_ib_line_id%NOTFOUND THEN
420             OKL_API.set_message(p_app_name     => G_APP_NAME,
421                                 p_msg_name     => G_NO_MATCHING_RECORD,
422                                 p_token1       => G_COL_NAME_TOKEN,
423                                 p_token1_value => 'IB_Cle_id');
424             x_return_status := OKL_API.G_RET_STS_ERROR;
425             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
426          END IF;
427          x_ib_id_tbl(i).id      := r_get_ib_line_id.id;
428          IF r_get_ib_line_id.dnz_chr_id <> x_dnz_chr_id THEN
429            OKL_API.set_message(p_app_name     => G_APP_NAME,
430                                p_msg_name     => G_NO_MATCHING_RECORD,
431                                p_token1       => G_COL_NAME_TOKEN,
432                                p_token1_value => 'DNZ_CHR_ID');
433             x_return_status := OKL_API.G_RET_STS_ERROR;
434             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
435          END IF;
436          x_ib_id_tbl(i).dnz_chr_id := r_get_ib_line_id.dnz_chr_id;
437          i  := i + 1;
438        END LOOP;
439        IF x_return_status = OKL_API.G_RET_STS_ERROR THEN
440           -- halt validation
441           RAISE G_EXCEPTION_HALT_VALIDATION;
442        END IF;
443     ELSE
444        OKL_API.set_message(p_app_name  => G_APP_NAME,
445                             p_msg_name => G_LINE_RECORD);
446        -- halt validation
447        RAISE G_EXCEPTION_HALT_VALIDATION;
448     END IF;
449   EXCEPTION
450     WHEN G_EXCEPTION_STOP_VALIDATION then
451     -- We are here since the field is required
452     -- store SQL error message on message stack
453     -- Notify Error
454     x_return_status := OKL_API.G_RET_STS_ERROR;
455     WHEN G_EXCEPTION_HALT_VALIDATION then
456     -- We are here b'cause we have no parent record
457     -- If the cursor is open then it has to be closed
458     IF c_cle_id_validate%ISOPEN THEN
459        CLOSE c_cle_id_validate;
460     END IF;
461     IF c_get_fa_line_id%ISOPEN THEN
462        CLOSE c_get_fa_line_id;
463     END IF;
464     IF c_get_ib_line_id%ISOPEN THEN
465        CLOSE c_get_ib_line_id;
466     END IF;
467     -- notify caller of an error
468     x_return_status := OKL_API.G_RET_STS_ERROR;
469     WHEN OTHERS THEN
470       -- store SQL error message on message stack
471       OKL_API.SET_MESSAGE(p_app_name => G_APP_NAME,
472                       p_msg_name => G_UNEXPECTED_ERROR,
473                       p_token1 => G_SQLCODE_TOKEN,
474                       p_token1_value => SQLCODE,
475                       p_token2 => G_SQLERRM_TOKEN,
476                       p_token2_value => SQLERRM);
477     -- If the cursor is open then it has to be closed
478     IF c_cle_id_validate%ISOPEN THEN
479        CLOSE c_cle_id_validate;
480     END IF;
481     IF c_get_fa_line_id%ISOPEN THEN
482        CLOSE c_get_fa_line_id;
483     END IF;
484     IF c_get_ib_line_id%ISOPEN THEN
485        CLOSE c_get_ib_line_id;
486     END IF;
487     -- notify caller of an error as UNEXPETED error
488      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
489   END validate_from_cle_id;
490 -------------------------------------------------------------------------------------------------
491 -- Start of Commnets
492 -- Badrinath Kuchibholta
493 -- Procedure Name       : validate_items_ids
494 -- Description          : validation with OKC_K_ITEMS_V
495 -- Business Rules       : If the id1 and id2 are populated in okc_k_items_v
496 --                        we need to get current info from FA and
497 --                        populate the txl_assets table
498 --                        if id1 and id2 are null then we there is already info
499 --                        in txl_assets tables and now we copy that info and
500 --                        create another record in txl_assets table.
501 --                        This validation will give me information weather
502 --                        id1 and id2 are null or not.
503 -- Parameters           : 1.P_cle_id should be the Fixed asset line or ib line
504 --                        Function will return the Return Status
505 -- Version              : 1.0
506 -- End of Commnets
507   FUNCTION validate_items_ids(p_cle_id      IN OKC_K_LINES_V.ID%TYPE,
508                               p_dnz_chr_id  IN OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
509                               x_object1_id1 OUT NOCOPY OKC_K_ITEMS_V.OBJECT1_ID1%TYPE,
510                               x_object1_id2 OUT NOCOPY OKC_K_ITEMS_V.OBJECT1_ID2%TYPE)
511   RETURN VARCHAR2  IS
512     x_return_status       VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
513     CURSOR c_validate_items_ids(p_cle_id      IN OKC_K_LINES_V.ID%TYPE,
514                                 p_dnz_chr_id  IN OKC_K_LINES_V.DNZ_CHR_ID%TYPE)
515     IS
516     SELECT object1_id1,
517            object1_id2
518     FROM okc_k_items_v cim
519     WHERE cim.cle_id = p_cle_id
520     AND cim.dnz_chr_id = p_dnz_chr_id
521     AND cim.object1_id1 IS NOT NULL
522     AND cim.object1_id2 IS NOT NULL;
523   BEGIN
524     -- data is required
525     IF (p_cle_id = OKL_API.G_MISS_NUM OR
526        p_cle_id IS NULL) AND
527        (p_dnz_chr_id = OKL_API.G_MISS_NUM OR
528        p_dnz_chr_id IS NULL) THEN
529        -- store SQL error message on message stack
530        OKL_API.set_message(p_app_name     => G_APP_NAME,
531                            p_msg_name     => G_REQUIRED_VALUE,
532                            p_token1       => G_COL_NAME_TOKEN,
533                            p_token1_value => 'dnz_chr_id and Cle_id');
534        -- halt validation
535        RAISE G_EXCEPTION_STOP_VALIDATION;
536     END IF;
537     -- Enforce Foreign Key
538     OPEN  c_validate_items_ids(p_cle_id,
539                                p_dnz_chr_id);
540     FETCH c_validate_items_ids into x_object1_id1,
541                                     x_object1_id2;
542     CLOSE c_validate_items_ids;
543     RETURN x_return_status;
544   EXCEPTION
545     WHEN G_EXCEPTION_STOP_VALIDATION then
546     -- We are here since the field is required
547     -- Notify Error
548     x_return_status := OKL_API.G_RET_STS_ERROR;
549     -- If the cursor is open then it has to be closed
550     IF c_validate_items_ids%ISOPEN THEN
551        CLOSE c_validate_items_ids;
552     END IF;
553     RETURN x_return_status;
554     WHEN OTHERS THEN
555       -- store SQL error message on message stack
556       OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
557                           p_msg_name     => G_UNEXPECTED_ERROR,
558                           p_token1       => G_SQLCODE_TOKEN,
559                           p_token1_value => SQLCODE,
560                           p_token2       => G_SQLERRM_TOKEN,
561                           p_token2_value => SQLERRM);
562     -- If the cursor is open then it has to be closed
563     IF c_validate_items_ids%ISOPEN THEN
564        CLOSE c_validate_items_ids;
565     END IF;
566     -- notify caller of an error as UNEXPETED error
567      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
568     RETURN x_return_status;
569   END validate_items_ids;
570 ---------------------------------------------------------------------------------------------------------------
571   FUNCTION get_rec_clev(p_id       IN OKC_K_LINES_V.ID%TYPE,
572                         x_clev_rec OUT NOCOPY clev_rec_type)
573   RETURN VARCHAR2 IS
574     CURSOR okc_clev_pk_csr (p_cle_id NUMBER) IS
575     SELECT ID,
576            OBJECT_VERSION_NUMBER,
577            SFWT_FLAG,
578            CHR_ID,
579            CLE_ID,
580            LSE_ID,
581            LINE_NUMBER,
582            STS_CODE,
583            DISPLAY_SEQUENCE,
584            TRN_CODE,
585            DNZ_CHR_ID,
586            COMMENTS,
587            ITEM_DESCRIPTION,
588            OKE_BOE_DESCRIPTION,
589            COGNOMEN,
590            HIDDEN_IND,
591            PRICE_UNIT,
592            PRICE_UNIT_PERCENT,
593            PRICE_NEGOTIATED,
594            PRICE_NEGOTIATED_RENEWED,
595            PRICE_LEVEL_IND,
596            INVOICE_LINE_LEVEL_IND,
597            DPAS_RATING,
598            BLOCK23TEXT,
599            EXCEPTION_YN,
600            TEMPLATE_USED,
601            DATE_TERMINATED,
602            NAME,
603            START_DATE,
604            END_DATE,
605            DATE_RENEWED,
606            UPG_ORIG_SYSTEM_REF,
607            UPG_ORIG_SYSTEM_REF_ID,
608            ORIG_SYSTEM_SOURCE_CODE,
609            ORIG_SYSTEM_ID1,
610            ORIG_SYSTEM_REFERENCE1,
611            REQUEST_ID,
612            PROGRAM_APPLICATION_ID,
613            PROGRAM_ID,
614            PROGRAM_UPDATE_DATE,
615            PRICE_LIST_ID,
616            PRICING_DATE,
617            PRICE_LIST_LINE_ID,
618            LINE_LIST_PRICE,
619            ITEM_TO_PRICE_YN,
620            PRICE_BASIS_YN,
621            CONFIG_HEADER_ID,
622            CONFIG_REVISION_NUMBER,
623            CONFIG_COMPLETE_YN,
624            CONFIG_VALID_YN,
625            CONFIG_TOP_MODEL_LINE_ID,
626            CONFIG_ITEM_TYPE,
627            CONFIG_ITEM_ID ,
628            ATTRIBUTE_CATEGORY,
629            ATTRIBUTE1,
630            ATTRIBUTE2,
631            ATTRIBUTE3,
632            ATTRIBUTE4,
633            ATTRIBUTE5,
634            ATTRIBUTE6,
635            ATTRIBUTE7,
636            ATTRIBUTE8,
637            ATTRIBUTE9,
638            ATTRIBUTE10,
639            ATTRIBUTE11,
640            ATTRIBUTE12,
641            ATTRIBUTE13,
642            ATTRIBUTE14,
643            ATTRIBUTE15,
644            CREATED_BY,
645            CREATION_DATE,
646            LAST_UPDATED_BY,
647            LAST_UPDATE_DATE,
648            PRICE_TYPE,
649            CURRENCY_CODE,
650 	   CURRENCY_CODE_RENEWED,
651            LAST_UPDATE_LOGIN
652     FROM Okc_K_Lines_V
653     WHERE okc_k_lines_v.id  = p_cle_id;
654     l_okc_clev_pk              okc_clev_pk_csr%ROWTYPE;
655     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
656   BEGIN
657     -- Get current database values
658     OPEN okc_clev_pk_csr (p_id);
659     FETCH okc_clev_pk_csr INTO
660               x_clev_rec.ID,
661               x_clev_rec.OBJECT_VERSION_NUMBER,
662               x_clev_rec.SFWT_FLAG,
663               x_clev_rec.CHR_ID,
664               x_clev_rec.CLE_ID,
665               x_clev_rec.LSE_ID,
666               x_clev_rec.LINE_NUMBER,
667               x_clev_rec.STS_CODE,
668               x_clev_rec.DISPLAY_SEQUENCE,
669               x_clev_rec.TRN_CODE,
670               x_clev_rec.DNZ_CHR_ID,
671               x_clev_rec.COMMENTS,
672               x_clev_rec.ITEM_DESCRIPTION,
673               x_clev_rec.OKE_BOE_DESCRIPTION,
674 	      x_clev_rec.COGNOMEN,
675               x_clev_rec.HIDDEN_IND,
676 	      x_clev_rec.PRICE_UNIT,
677 	      x_clev_rec.PRICE_UNIT_PERCENT,
678               x_clev_rec.PRICE_NEGOTIATED,
679 	      x_clev_rec.PRICE_NEGOTIATED_RENEWED,
680               x_clev_rec.PRICE_LEVEL_IND,
681               x_clev_rec.INVOICE_LINE_LEVEL_IND,
682               x_clev_rec.DPAS_RATING,
683               x_clev_rec.BLOCK23TEXT,
684               x_clev_rec.EXCEPTION_YN,
685               x_clev_rec.TEMPLATE_USED,
686               x_clev_rec.DATE_TERMINATED,
687               x_clev_rec.NAME,
688               x_clev_rec.START_DATE,
689               x_clev_rec.END_DATE,
690 	      x_clev_rec.DATE_RENEWED,
691               x_clev_rec.UPG_ORIG_SYSTEM_REF,
692               x_clev_rec.UPG_ORIG_SYSTEM_REF_ID,
693               x_clev_rec.ORIG_SYSTEM_SOURCE_CODE,
694               x_clev_rec.ORIG_SYSTEM_ID1,
695               x_clev_rec.ORIG_SYSTEM_REFERENCE1,
696               x_clev_rec.request_id,
697               x_clev_rec.program_application_id,
698               x_clev_rec.program_id,
699               x_clev_rec.program_update_date,
700               x_clev_rec.price_list_id,
701               x_clev_rec.pricing_date,
702               x_clev_rec.price_list_line_id,
703               x_clev_rec.line_list_price,
704               x_clev_rec.item_to_price_yn,
705               x_clev_rec.price_basis_yn,
706               x_clev_rec.config_header_id,
707               x_clev_rec.config_revision_number,
708               x_clev_rec.config_complete_yn,
709               x_clev_rec.config_valid_yn,
710               x_clev_rec.config_top_model_line_id,
711               x_clev_rec.config_item_type,
712               x_clev_rec.CONFIG_ITEM_ID ,
713               x_clev_rec.ATTRIBUTE_CATEGORY,
714               x_clev_rec.ATTRIBUTE1,
715               x_clev_rec.ATTRIBUTE2,
716               x_clev_rec.ATTRIBUTE3,
717               x_clev_rec.ATTRIBUTE4,
718               x_clev_rec.ATTRIBUTE5,
719               x_clev_rec.ATTRIBUTE6,
720               x_clev_rec.ATTRIBUTE7,
721               x_clev_rec.ATTRIBUTE8,
722               x_clev_rec.ATTRIBUTE9,
723               x_clev_rec.ATTRIBUTE10,
724               x_clev_rec.ATTRIBUTE11,
725               x_clev_rec.ATTRIBUTE12,
726               x_clev_rec.ATTRIBUTE13,
727               x_clev_rec.ATTRIBUTE14,
728               x_clev_rec.ATTRIBUTE15,
729               x_clev_rec.CREATED_BY,
730               x_clev_rec.CREATION_DATE,
731               x_clev_rec.LAST_UPDATED_BY,
732               x_clev_rec.LAST_UPDATE_DATE,
733               x_clev_rec.PRICE_TYPE,
734               x_clev_rec.CURRENCY_CODE,
735 	      x_clev_rec.CURRENCY_CODE_RENEWED,
736               x_clev_rec.LAST_UPDATE_LOGIN;
737     IF  okc_clev_pk_csr%NOTFOUND THEN
738         x_return_status := OKL_API.G_RET_STS_ERROR;
739     END IF;
740     CLOSE okc_clev_pk_csr;
741     RETURN(x_return_status);
742   EXCEPTION
743     WHEN OTHERS THEN
744       -- store SQL error message on message stack for caller
745       OKL_API.set_message(G_APP_NAME,
746                           G_UNEXPECTED_ERROR,
747                           G_SQLCODE_TOKEN,
748                           SQLCODE,
749                           G_SQLERRM_TOKEN,
750                           SQLERRM);
751      -- notify caller of an UNEXPECTED error
752      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
753      -- if the cursor is open
754      IF okc_clev_pk_csr%ISOPEN THEN
755         CLOSE okc_clev_pk_csr;
756      END IF;
757      RETURN(x_return_status);
758   END get_rec_clev;
759 -----------------------------------------------------------------------------------------------
760   FUNCTION get_rec_klev(p_id       IN  OKL_K_LINES_V.ID%TYPE,
761                         x_klev_rec OUT NOCOPY klev_rec_type)
762   RETURN VARCHAR2 IS
763     CURSOR okl_k_lines_v_pk_csr (p_kle_id  OKL_K_LINES_V.ID%TYPE) IS
764       SELECT ID,
765              OBJECT_VERSION_NUMBER,
766              KLE_ID,
767              STY_ID,
768              PRC_CODE,
769              FCG_CODE,
770              NTY_CODE,
771              ESTIMATED_OEC,
772              LAO_AMOUNT,
773              TITLE_DATE,
774              FEE_CHARGE,
775              LRS_PERCENT,
776              INITIAL_DIRECT_COST,
777              PERCENT_STAKE,
778              PERCENT,
779              EVERGREEN_PERCENT,
780              AMOUNT_STAKE,
781              OCCUPANCY,
782              COVERAGE,
783              RESIDUAL_PERCENTAGE,
784              DATE_LAST_INSPECTION,
785              DATE_SOLD,
786              LRV_AMOUNT,
787              CAPITAL_REDUCTION,
788              DATE_NEXT_INSPECTION_DUE,
789              DATE_RESIDUAL_LAST_REVIEW,
790              DATE_LAST_REAMORTISATION,
791              VENDOR_ADVANCE_PAID,
792              WEIGHTED_AVERAGE_LIFE,
793              TRADEIN_AMOUNT,
794              BOND_EQUIVALENT_YIELD,
795              TERMINATION_PURCHASE_AMOUNT,
796              REFINANCE_AMOUNT,
797              YEAR_BUILT,
798              DELIVERED_DATE,
799              CREDIT_TENANT_YN,
800              DATE_LAST_CLEANUP,
801              YEAR_OF_MANUFACTURE,
802              COVERAGE_RATIO,
803              REMARKETED_AMOUNT,
804              GROSS_SQUARE_FOOTAGE,
805              PRESCRIBED_ASSET_YN,
806              DATE_REMARKETED,
807              NET_RENTABLE,
808              REMARKET_MARGIN,
809              DATE_LETTER_ACCEPTANCE,
810              REPURCHASED_AMOUNT,
811              DATE_COMMITMENT_EXPIRATION,
812              DATE_REPURCHASED,
813              DATE_APPRAISAL,
814              RESIDUAL_VALUE,
815              APPRAISAL_VALUE,
816              SECURED_DEAL_YN,
817              GAIN_LOSS,
818              FLOOR_AMOUNT,
819              RE_LEASE_YN,
820              PREVIOUS_CONTRACT,
821              TRACKED_RESIDUAL,
822              DATE_TITLE_RECEIVED,
823              AMOUNT,
824              ATTRIBUTE_CATEGORY,
825              ATTRIBUTE1,
826              ATTRIBUTE2,
827              ATTRIBUTE3,
828              ATTRIBUTE4,
829              ATTRIBUTE5,
830              ATTRIBUTE6,
831              ATTRIBUTE7,
832              ATTRIBUTE8,
833              ATTRIBUTE9,
834              ATTRIBUTE10,
835              ATTRIBUTE11,
836              ATTRIBUTE12,
837              ATTRIBUTE13,
838              ATTRIBUTE14,
839              ATTRIBUTE15,
840              STY_ID_FOR,
841              CLG_ID,
842              CREATED_BY,
843              CREATION_DATE,
844              LAST_UPDATED_BY,
845              LAST_UPDATE_DATE,
846              LAST_UPDATE_LOGIN,
847              DATE_FUNDING,
848              DATE_FUNDING_REQUIRED,
849              DATE_ACCEPTED,
850              DATE_DELIVERY_EXPECTED,
851              OEC,
852              CAPITAL_AMOUNT,
853              RESIDUAL_GRNTY_AMOUNT,
854              RESIDUAL_CODE,
855              RVI_PREMIUM,
856              CREDIT_NATURE,
857              CAPITALIZED_INTEREST,
858              CAPITAL_REDUCTION_PERCENT,
859 --Bug# 2998115:
860              DATE_PAY_INVESTOR_START,
861              PAY_INVESTOR_FREQUENCY,
862              PAY_INVESTOR_EVENT,
863              PAY_INVESTOR_REMITTANCE_DAYS,
864              FEE_TYPE,
865 --Bug#3143522 Subsidies :
866              SUBSIDY_ID,
867              --SUBSIDIZED_OEC,
868              --SUBSIDIZED_CAP_AMOUNT,
869              PRE_TAX_YIELD,
870              AFTER_TAX_YIELD,
871              IMPLICIT_INTEREST_RATE,
872              IMPLICIT_NON_IDC_INTEREST_RATE,
873              PRE_TAX_IRR,
874              AFTER_TAX_IRR,
875              SUBSIDY_OVERRIDE_AMOUNT,
876 --quote
877              SUB_PRE_TAX_YIELD,
878              SUB_AFTER_TAX_YIELD,
879              SUB_IMPL_INTEREST_RATE,
880              SUB_IMPL_NON_IDC_INT_RATE,
881              SUB_PRE_TAX_IRR,
882              SUB_AFTER_TAX_IRR,
883 --Bug# 2994971
884              ITEM_INSURANCE_CATEGORY,
885 --Bug# 3973640 : 11.510+ schema
886              QTE_ID,
887              FUNDING_DATE,
888              STREAM_TYPE_SUBCLASS
889 --ramurt Bug#4552772
890    ,FEE_PURPOSE_CODE
891     FROM OKL_K_LINES_V
892     WHERE OKL_K_LINES_V.id     = p_kle_id;
893     l_okl_k_lines_v_pk         okl_k_lines_v_pk_csr%ROWTYPE;
894     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
895   BEGIN
896     -- Get current database values
897     OPEN okl_k_lines_v_pk_csr (p_id);
898     FETCH okl_k_lines_v_pk_csr INTO
899         x_klev_rec.ID,
900         x_klev_rec.OBJECT_VERSION_NUMBER,
901         x_klev_rec.KLE_ID,
902         x_klev_rec.STY_ID,
903         x_klev_rec.PRC_CODE,
904         x_klev_rec.FCG_CODE,
905         x_klev_rec.NTY_CODE,
906         x_klev_rec.ESTIMATED_OEC,
907         x_klev_rec.LAO_AMOUNT,
908         x_klev_rec.TITLE_DATE,
909         x_klev_rec.FEE_CHARGE,
910         x_klev_rec.LRS_PERCENT,
911         x_klev_rec.INITIAL_DIRECT_COST,
912         x_klev_rec.PERCENT_STAKE,
913         x_klev_rec.PERCENT,
914         x_klev_rec.EVERGREEN_PERCENT,
915         x_klev_rec.AMOUNT_STAKE,
916         x_klev_rec.OCCUPANCY,
917         x_klev_rec.COVERAGE,
918         x_klev_rec.RESIDUAL_PERCENTAGE,
919         x_klev_rec.DATE_LAST_INSPECTION,
920         x_klev_rec.DATE_SOLD,
921         x_klev_rec.LRV_AMOUNT,
922         x_klev_rec.CAPITAL_REDUCTION,
923         x_klev_rec.DATE_NEXT_INSPECTION_DUE,
924         x_klev_rec.DATE_RESIDUAL_LAST_REVIEW,
925         x_klev_rec.DATE_LAST_REAMORTISATION,
926         x_klev_rec.VENDOR_ADVANCE_PAID,
927         x_klev_rec.WEIGHTED_AVERAGE_LIFE,
928         x_klev_rec.TRADEIN_AMOUNT,
929         x_klev_rec.BOND_EQUIVALENT_YIELD,
930         x_klev_rec.TERMINATION_PURCHASE_AMOUNT,
931         x_klev_rec.REFINANCE_AMOUNT,
932         x_klev_rec.YEAR_BUILT,
933         x_klev_rec.DELIVERED_DATE,
934         x_klev_rec.CREDIT_TENANT_YN,
935         x_klev_rec.DATE_LAST_CLEANUP,
936         x_klev_rec.YEAR_OF_MANUFACTURE,
937         x_klev_rec.COVERAGE_RATIO,
938         x_klev_rec.REMARKETED_AMOUNT,
939         x_klev_rec.GROSS_SQUARE_FOOTAGE,
940         x_klev_rec.PRESCRIBED_ASSET_YN,
941         x_klev_rec.DATE_REMARKETED,
942         x_klev_rec.NET_RENTABLE,
943         x_klev_rec.REMARKET_MARGIN,
944         x_klev_rec.DATE_LETTER_ACCEPTANCE,
945         x_klev_rec.REPURCHASED_AMOUNT,
946         x_klev_rec.DATE_COMMITMENT_EXPIRATION,
947         x_klev_rec.DATE_REPURCHASED,
948         x_klev_rec.DATE_APPRAISAL,
949         x_klev_rec.RESIDUAL_VALUE,
950         x_klev_rec.APPRAISAL_VALUE,
951         x_klev_rec.SECURED_DEAL_YN,
952         x_klev_rec.GAIN_LOSS,
953         x_klev_rec.FLOOR_AMOUNT,
954         x_klev_rec.RE_LEASE_YN,
955         x_klev_rec.PREVIOUS_CONTRACT,
956         x_klev_rec.TRACKED_RESIDUAL,
957         x_klev_rec.DATE_TITLE_RECEIVED,
958         x_klev_rec.AMOUNT,
959         x_klev_rec.ATTRIBUTE_CATEGORY,
960         x_klev_rec.ATTRIBUTE1,
961         x_klev_rec.ATTRIBUTE2,
962         x_klev_rec.ATTRIBUTE3,
963         x_klev_rec.ATTRIBUTE4,
964         x_klev_rec.ATTRIBUTE5,
965         x_klev_rec.ATTRIBUTE6,
966         x_klev_rec.ATTRIBUTE7,
967         x_klev_rec.ATTRIBUTE8,
968         x_klev_rec.ATTRIBUTE9,
969         x_klev_rec.ATTRIBUTE10,
970         x_klev_rec.ATTRIBUTE11,
971         x_klev_rec.ATTRIBUTE12,
972         x_klev_rec.ATTRIBUTE13,
973         x_klev_rec.ATTRIBUTE14,
974         x_klev_rec.ATTRIBUTE15,
975         x_klev_rec.STY_ID_FOR,
976         x_klev_rec.CLG_ID,
977         x_klev_rec.CREATED_BY,
978         x_klev_rec.CREATION_DATE,
979         x_klev_rec.LAST_UPDATED_BY,
980         x_klev_rec.LAST_UPDATE_DATE,
981         x_klev_rec.LAST_UPDATE_LOGIN,
982         x_klev_rec.DATE_FUNDING,
983         x_klev_rec.DATE_FUNDING_REQUIRED,
984         x_klev_rec.DATE_ACCEPTED,
985         x_klev_rec.DATE_DELIVERY_EXPECTED,
986         x_klev_rec.OEC,
987         x_klev_rec.CAPITAL_AMOUNT,
988         x_klev_rec.RESIDUAL_GRNTY_AMOUNT,
989         x_klev_rec.RESIDUAL_CODE,
990         x_klev_rec.RVI_PREMIUM,
991         x_klev_rec.CREDIT_NATURE,
992         x_klev_rec.CAPITALIZED_INTEREST,
993         x_klev_rec.CAPITAL_REDUCTION_PERCENT,
994 --Bug# 2998115 :
995          x_klev_rec.DATE_PAY_INVESTOR_START,
996          x_klev_rec.PAY_INVESTOR_FREQUENCY,
997          x_klev_rec.PAY_INVESTOR_EVENT,
998          x_klev_rec.PAY_INVESTOR_REMITTANCE_DAYS,
999          x_klev_rec.FEE_TYPE,
1000 --Bug#3143522 Subsidies :
1001              x_klev_rec.SUBSIDY_ID,
1002              --x_klev_rec.SUBSIDIZED_OEC,
1003              --x_klev_rec.SUBSIDIZED_CAP_AMOUNT,
1004              x_klev_rec.PRE_TAX_YIELD,
1005              x_klev_rec.AFTER_TAX_YIELD,
1006              x_klev_rec.IMPLICIT_INTEREST_RATE,
1007              x_klev_rec.IMPLICIT_NON_IDC_INTEREST_RATE,
1008              x_klev_rec.PRE_TAX_IRR,
1009              x_klev_rec.AFTER_TAX_IRR,
1010              x_klev_rec.SUBSIDY_OVERRIDE_AMOUNT,
1011 --quote
1012              x_klev_rec.SUB_PRE_TAX_YIELD,
1013              x_klev_rec.SUB_AFTER_TAX_YIELD,
1014              x_klev_rec.SUB_IMPL_INTEREST_RATE,
1015              x_klev_rec.SUB_IMPL_NON_IDC_INT_RATE,
1016              x_klev_rec.SUB_PRE_TAX_IRR,
1017              x_klev_rec.SUB_AFTER_TAX_IRR,
1018 --Bug# 2994971 :
1019              x_klev_rec.ITEM_INSURANCE_CATEGORY,
1020 --Bug# 3973640 : 11.510+ schema
1021              x_klev_rec.QTE_ID,
1022              x_klev_rec.FUNDING_DATE,
1023              x_klev_rec.STREAM_TYPE_SUBCLASS
1024 --ramurt Bug#4552772
1025    ,x_klev_rec.FEE_PURPOSE_CODE;
1026     IF  okl_k_lines_v_pk_csr%NOTFOUND THEN
1027         x_return_status := OKL_API.G_RET_STS_ERROR;
1028     END IF;
1029     CLOSE okl_k_lines_v_pk_csr;
1030     RETURN(x_return_status);
1031   EXCEPTION
1032     WHEN OTHERS THEN
1033       -- store SQL error message on message stack for caller
1034       OKL_API.set_message(G_APP_NAME,
1035                           G_UNEXPECTED_ERROR,
1036                           G_SQLCODE_TOKEN,
1037                           SQLCODE,
1038                           G_SQLERRM_TOKEN,
1039                           SQLERRM);
1040      -- notify caller of an UNEXPECTED error
1041      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1042      -- if the cursor is open
1043      IF okl_k_lines_v_pk_csr%ISOPEN THEN
1044         CLOSE okl_k_lines_v_pk_csr;
1045      END IF;
1046      RETURN(x_return_status);
1047   END get_rec_klev;
1048 -------------------------------------------------------------------------------------------------
1049 -- Start of Commnets
1050 -- Badrinath Kuchibholta
1051 -- Function Name        : get_tasv_rec
1052 -- Description          : Get Transaction Header Record
1053 -- Business Rules       :
1054 -- Parameters           :
1055 -- Version              :
1056 -- End of Commnets
1057   FUNCTION  get_tasv_rec(p_tas_id   IN  NUMBER,
1058                          x_trxv_rec OUT NOCOPY trxv_rec_type)
1059   RETURN  VARCHAR2
1060   IS
1061     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1062     CURSOR c_trxv_rec(p_tas_id NUMBER)
1063     IS
1064     SELECT ID,
1065            OBJECT_VERSION_NUMBER,
1066            ICA_ID,
1067            ATTRIBUTE_CATEGORY,
1068            ATTRIBUTE1,
1069            ATTRIBUTE2,
1070            ATTRIBUTE3,
1071            ATTRIBUTE4,
1072            ATTRIBUTE5,
1073            ATTRIBUTE6,
1074            ATTRIBUTE7,
1075            ATTRIBUTE8,
1076            ATTRIBUTE9,
1077            ATTRIBUTE10,
1078            ATTRIBUTE11,
1079            ATTRIBUTE12,
1080            ATTRIBUTE13,
1081            ATTRIBUTE14,
1082            ATTRIBUTE15,
1083            TAS_TYPE,
1084            CREATED_BY,
1085            CREATION_DATE,
1086            LAST_UPDATED_BY,
1087            LAST_UPDATE_DATE,
1088            LAST_UPDATE_LOGIN,
1089            TSU_CODE,
1090            TRY_ID,
1091            DATE_TRANS_OCCURRED,
1092            TRANS_NUMBER,
1093            COMMENTS,
1094            REQ_ASSET_ID,
1095            TOTAL_MATCH_AMOUNT
1096     FROM OKL_TRX_ASSETS
1097     WHERE id = p_tas_id;
1098   BEGIN
1099     OPEN c_trxv_rec(p_tas_id);
1100     FETCH c_trxv_rec INTO
1101            x_trxv_rec.ID,
1102            x_trxv_rec.OBJECT_VERSION_NUMBER,
1103            x_trxv_rec.ICA_ID,
1104            x_trxv_rec.ATTRIBUTE_CATEGORY,
1105            x_trxv_rec.ATTRIBUTE1,
1106            x_trxv_rec.ATTRIBUTE2,
1107            x_trxv_rec.ATTRIBUTE3,
1108            x_trxv_rec.ATTRIBUTE4,
1109            x_trxv_rec.ATTRIBUTE5,
1110            x_trxv_rec.ATTRIBUTE6,
1111            x_trxv_rec.ATTRIBUTE7,
1112            x_trxv_rec.ATTRIBUTE8,
1113            x_trxv_rec.ATTRIBUTE9,
1114            x_trxv_rec.ATTRIBUTE10,
1115            x_trxv_rec.ATTRIBUTE11,
1116            x_trxv_rec.ATTRIBUTE12,
1117            x_trxv_rec.ATTRIBUTE13,
1118            x_trxv_rec.ATTRIBUTE14,
1119            x_trxv_rec.ATTRIBUTE15,
1120            x_trxv_rec.TAS_TYPE,
1121            x_trxv_rec.CREATED_BY,
1122            x_trxv_rec.CREATION_DATE,
1123            x_trxv_rec.LAST_UPDATED_BY,
1124            x_trxv_rec.LAST_UPDATE_DATE,
1125            x_trxv_rec.LAST_UPDATE_LOGIN,
1126            x_trxv_rec.TSU_CODE,
1127            x_trxv_rec.TRY_ID,
1128            x_trxv_rec.DATE_TRANS_OCCURRED,
1129            x_trxv_rec.TRANS_NUMBER,
1130            x_trxv_rec.COMMENTS,
1131            x_trxv_rec.REQ_ASSET_ID,
1132            x_trxv_rec.TOTAL_MATCH_AMOUNT;
1133     IF c_trxv_rec%NOTFOUND THEN
1134        x_return_status := OKL_API.G_RET_STS_ERROR;
1135     END IF;
1136     CLOSE c_trxv_rec;
1137     RETURN(x_return_status);
1138   EXCEPTION
1139     WHEN OTHERS THEN
1140       -- store SQL error message on message stack for caller
1141       OKL_API.set_message(
1142               G_APP_NAME,
1143               G_UNEXPECTED_ERROR,
1144               G_SQLCODE_TOKEN,
1145               SQLCODE,
1146               G_SQLERRM_TOKEN,
1147               SQLERRM);
1148      IF c_trxv_rec%ISOPEN THEN
1149         CLOSE c_trxv_rec;
1150      END IF;
1151       -- notify caller of an UNEXPECTED error
1152      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1153      RETURN(x_return_status);
1154   END get_tasv_rec;
1155 ------------------------------------------------------------------------------------------------
1156 -- Start of Commnets
1157 -- Badrinath Kuchibholta
1158 -- Function Name        : get_sidv_rec
1159 -- Description          : Get Supplier Invoice Details Record
1160 -- Business Rules       :
1161 -- Parameters           :
1162 -- Version              :
1163 -- End of Commnets
1164   FUNCTION  get_sidv_rec(p_cle_id   IN OKL_SUPP_INVOICE_DTLS.ID%TYPE,
1165                          x_sidv_rec OUT NOCOPY sidv_rec_type)
1166   RETURN  VARCHAR2 IS
1167     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1168     CURSOR okl_supp_invoice_dtls_v_pk_csr(p_id OKL_SUPP_INVOICE_DTLS.ID%TYPE) IS
1169     SELECT ID,
1170            OBJECT_VERSION_NUMBER,
1171            CLE_ID,
1172            FA_CLE_ID,
1173            INVOICE_NUMBER,
1174            DATE_INVOICED,
1175            DATE_DUE,
1176            SHIPPING_ADDRESS_ID1,
1177            SHIPPING_ADDRESS_ID2,
1178            SHIPPING_ADDRESS_CODE,
1179            ATTRIBUTE_CATEGORY,
1180            ATTRIBUTE1,
1181            ATTRIBUTE2,
1182            ATTRIBUTE3,
1183            ATTRIBUTE4,
1184            ATTRIBUTE5,
1185            ATTRIBUTE6,
1186            ATTRIBUTE7,
1187            ATTRIBUTE8,
1188            ATTRIBUTE9,
1189            ATTRIBUTE10,
1190            ATTRIBUTE11,
1191            ATTRIBUTE12,
1192            ATTRIBUTE13,
1193            ATTRIBUTE14,
1194            ATTRIBUTE15,
1195            CREATED_BY,
1196            CREATION_DATE,
1197            LAST_UPDATED_BY,
1198            LAST_UPDATE_DATE,
1199            LAST_UPDATE_LOGIN
1200       FROM Okl_Supp_Invoice_Dtls_V sid
1201       WHERE sid.cle_id = p_id;
1202     l_okl_supp_invoice_dtls_v_pk   okl_supp_invoice_dtls_v_pk_csr%ROWTYPE;
1203   BEGIN
1204     -- Get current database values
1205     OPEN okl_supp_invoice_dtls_v_pk_csr (p_id => p_cle_id);
1206     FETCH okl_supp_invoice_dtls_v_pk_csr INTO
1207               x_sidv_rec.id,
1208               x_sidv_rec.object_version_number,
1209               x_sidv_rec.cle_id,
1210               x_sidv_rec.fa_cle_id,
1211               x_sidv_rec.invoice_number,
1212               x_sidv_rec.date_invoiced,
1213               x_sidv_rec.date_due,
1214               x_sidv_rec.shipping_address_id1,
1215               x_sidv_rec.shipping_address_id2,
1216               x_sidv_rec.shipping_address_code,
1217               x_sidv_rec.attribute_category,
1218               x_sidv_rec.attribute1,
1219               x_sidv_rec.attribute2,
1220               x_sidv_rec.attribute3,
1221               x_sidv_rec.attribute4,
1222               x_sidv_rec.attribute5,
1223               x_sidv_rec.attribute6,
1224               x_sidv_rec.attribute7,
1225               x_sidv_rec.attribute8,
1226               x_sidv_rec.attribute9,
1227               x_sidv_rec.attribute10,
1228               x_sidv_rec.attribute11,
1229               x_sidv_rec.attribute12,
1230               x_sidv_rec.attribute13,
1231               x_sidv_rec.attribute14,
1232               x_sidv_rec.attribute15,
1233               x_sidv_rec.created_by,
1234               x_sidv_rec.creation_date,
1235               x_sidv_rec.last_updated_by,
1236               x_sidv_rec.last_update_date,
1237               x_sidv_rec.last_update_login;
1238     IF okl_supp_invoice_dtls_v_pk_csr%NOTFOUND THEN
1239        OKL_API.set_message(p_app_name     => G_APP_NAME,
1240                             p_msg_name     => G_NO_MATCHING_RECORD,
1241                             p_token1       => G_COL_NAME_TOKEN,
1242                             p_token1_value => 'OKL_SUPP_INVOICE_DTLS Record');
1243        x_return_status := OKL_API.G_RET_STS_ERROR;
1244     END IF;
1245     CLOSE okl_supp_invoice_dtls_v_pk_csr;
1246     RETURN(x_return_status);
1247   EXCEPTION
1248     WHEN OTHERS THEN
1249       -- store SQL error message on message stack for caller
1250       OKL_API.set_message(
1251               G_APP_NAME,
1252               G_UNEXPECTED_ERROR,
1253               G_SQLCODE_TOKEN,
1254               SQLCODE,
1255               G_SQLERRM_TOKEN,
1256               SQLERRM);
1257       IF okl_supp_invoice_dtls_v_pk_csr%ISOPEN THEN
1258         CLOSE okl_supp_invoice_dtls_v_pk_csr;
1259       END IF;
1260       -- notify caller of an UNEXPECTED error
1261       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1262       RETURN(x_return_status);
1263   END get_sidv_rec;
1264 ----------------------------------------------------------------------------
1265 -- Start of Commnets
1266 -- Badrinath Kuchibholta
1267 -- Function Name        : get_txlv_rec
1268 -- Description          : Get Transaction Line Record
1269 -- Business Rules       :
1270 -- Parameters           :
1271 -- Version              :
1272 -- End of Commnets
1273   FUNCTION  get_txlv_rec(p_kle_id   IN NUMBER,
1274                          x_txlv_rec OUT NOCOPY talv_rec_type)
1275   RETURN  VARCHAR2 IS
1276     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1277     CURSOR okl_talv_pk_csr (p_kle_id  IN NUMBER) IS
1278     SELECT ID,
1279            OBJECT_VERSION_NUMBER,
1280            SFWT_FLAG,
1281            TAS_ID,
1282            ILO_ID,
1283            ILO_ID_OLD,
1284            IAY_ID,
1285            IAY_ID_NEW,
1286            KLE_ID,
1287            DNZ_KHR_ID,
1288            LINE_NUMBER,
1289            ORG_ID,
1290            TAL_TYPE,
1291            ASSET_NUMBER,
1292            DESCRIPTION,
1293            FA_LOCATION_ID,
1294            ORIGINAL_COST,
1295            CURRENT_UNITS,
1296            MANUFACTURER_NAME,
1297            YEAR_MANUFACTURED,
1298            SUPPLIER_ID,
1299            USED_ASSET_YN,
1300            TAG_NUMBER,
1301            MODEL_NUMBER,
1302            CORPORATE_BOOK,
1303            DATE_PURCHASED,
1304            DATE_DELIVERY,
1305            IN_SERVICE_DATE,
1306            LIFE_IN_MONTHS,
1307            DEPRECIATION_ID,
1308            DEPRECIATION_COST,
1309            DEPRN_METHOD,
1310            DEPRN_RATE,
1311            SALVAGE_VALUE,
1312            PERCENT_SALVAGE_VALUE,
1313 --Bug# 2981308
1314            ASSET_KEY_ID,
1315            ATTRIBUTE_CATEGORY,
1316            ATTRIBUTE1,
1317            ATTRIBUTE2,
1318            ATTRIBUTE3,
1319            ATTRIBUTE4,
1320            ATTRIBUTE5,
1321            ATTRIBUTE6,
1322            ATTRIBUTE7,
1323            ATTRIBUTE8,
1324            ATTRIBUTE9,
1325            ATTRIBUTE10,
1326            ATTRIBUTE11,
1327            ATTRIBUTE12,
1328            ATTRIBUTE13,
1329            ATTRIBUTE14,
1330            ATTRIBUTE15,
1331            CREATED_BY,
1332            CREATION_DATE,
1333            LAST_UPDATED_BY,
1334            LAST_UPDATE_DATE,
1335            LAST_UPDATE_LOGIN,
1336            DEPRECIATE_YN,
1337            HOLD_PERIOD_DAYS,
1338            OLD_SALVAGE_VALUE,
1339            NEW_RESIDUAL_VALUE,
1340            OLD_RESIDUAL_VALUE,
1341            UNITS_RETIRED,
1342            COST_RETIRED,
1343            SALE_PROCEEDS,
1344            REMOVAL_COST,
1345            DNZ_ASSET_ID,
1346            DATE_DUE,
1347            REP_ASSET_ID,
1348            LKE_ASSET_ID,
1349            MATCH_AMOUNT,
1350            SPLIT_INTO_SINGLES_FLAG,
1351            SPLIT_INTO_UNITS,
1352 -- Multi-Currency Change
1353            CURRENCY_CODE,
1354            CURRENCY_CONVERSION_TYPE,
1355            CURRENCY_CONVERSION_RATE,
1356            CURRENCY_CONVERSION_DATE
1357 -- Multi-Currency Change
1358     FROM Okl_Txl_Assets_V tal
1359     WHERE tal.kle_id  = p_kle_id;
1360     l_okl_talv_pk                  okl_talv_pk_csr%ROWTYPE;
1361   BEGIN
1362     -- Get current database values
1363     OPEN okl_talv_pk_csr(p_kle_id);
1364     FETCH okl_talv_pk_csr INTO
1365               x_txlv_rec.ID,
1366               x_txlv_rec.OBJECT_VERSION_NUMBER,
1367               x_txlv_rec.SFWT_FLAG,
1368               x_txlv_rec.TAS_ID,
1369               x_txlv_rec.ILO_ID,
1370               x_txlv_rec.ILO_ID_OLD,
1371               x_txlv_rec.IAY_ID,
1372               x_txlv_rec.IAY_ID_NEW,
1373               x_txlv_rec.KLE_ID,
1374               x_txlv_rec.DNZ_KHR_ID,
1375               x_txlv_rec.LINE_NUMBER,
1376               x_txlv_rec.ORG_ID,
1377               x_txlv_rec.TAL_TYPE,
1378               x_txlv_rec.ASSET_NUMBER,
1379               x_txlv_rec.DESCRIPTION,
1380               x_txlv_rec.FA_LOCATION_ID,
1381               x_txlv_rec.ORIGINAL_COST,
1382               x_txlv_rec.CURRENT_UNITS,
1383               x_txlv_rec.MANUFACTURER_NAME,
1384               x_txlv_rec.YEAR_MANUFACTURED,
1385               x_txlv_rec.SUPPLIER_ID,
1386               x_txlv_rec.USED_ASSET_YN,
1387               x_txlv_rec.TAG_NUMBER,
1388               x_txlv_rec.MODEL_NUMBER,
1389               x_txlv_rec.CORPORATE_BOOK,
1390               x_txlv_rec.DATE_PURCHASED,
1391               x_txlv_rec.DATE_DELIVERY,
1392               x_txlv_rec.IN_SERVICE_DATE,
1393               x_txlv_rec.LIFE_IN_MONTHS,
1394               x_txlv_rec.DEPRECIATION_ID,
1395               x_txlv_rec.DEPRECIATION_COST,
1396               x_txlv_rec.DEPRN_METHOD,
1397               x_txlv_rec.DEPRN_RATE,
1398               x_txlv_rec.SALVAGE_VALUE,
1399               x_txlv_rec.PERCENT_SALVAGE_VALUE,
1400 --Bug# 2181308
1401               x_txlv_rec.ASSET_KEY_ID,
1402               x_txlv_rec.ATTRIBUTE_CATEGORY,
1403               x_txlv_rec.ATTRIBUTE1,
1404               x_txlv_rec.ATTRIBUTE2,
1405               x_txlv_rec.ATTRIBUTE3,
1406               x_txlv_rec.ATTRIBUTE4,
1407               x_txlv_rec.ATTRIBUTE5,
1408               x_txlv_rec.ATTRIBUTE6,
1409               x_txlv_rec.ATTRIBUTE7,
1410               x_txlv_rec.ATTRIBUTE8,
1411               x_txlv_rec.ATTRIBUTE9,
1412               x_txlv_rec.ATTRIBUTE10,
1413               x_txlv_rec.ATTRIBUTE11,
1414               x_txlv_rec.ATTRIBUTE12,
1415               x_txlv_rec.ATTRIBUTE13,
1416               x_txlv_rec.ATTRIBUTE14,
1417               x_txlv_rec.ATTRIBUTE15,
1418               x_txlv_rec.CREATED_BY,
1419               x_txlv_rec.CREATION_DATE,
1420               x_txlv_rec.LAST_UPDATED_BY,
1421               x_txlv_rec.LAST_UPDATE_DATE,
1422               x_txlv_rec.LAST_UPDATE_LOGIN,
1423               x_txlv_rec.DEPRECIATE_YN,
1424               x_txlv_rec.HOLD_PERIOD_DAYS,
1425               x_txlv_rec.OLD_SALVAGE_VALUE,
1426               x_txlv_rec.NEW_RESIDUAL_VALUE,
1427               x_txlv_rec.OLD_RESIDUAL_VALUE,
1428               x_txlv_rec.UNITS_RETIRED,
1429               x_txlv_rec.COST_RETIRED,
1430               x_txlv_rec.SALE_PROCEEDS,
1431               x_txlv_rec.REMOVAL_COST,
1432               x_txlv_rec.DNZ_ASSET_ID,
1433               x_txlv_rec.DATE_DUE,
1434               x_txlv_rec.REP_ASSET_ID,
1435               x_txlv_rec.LKE_ASSET_ID,
1436               x_txlv_rec.MATCH_AMOUNT,
1437               x_txlv_rec.SPLIT_INTO_SINGLES_FLAG,
1438               x_txlv_rec.SPLIT_INTO_UNITS,
1439 -- Multi-Currency Change
1440               x_txlv_rec.CURRENCY_CODE,
1441               x_txlv_rec.CURRENCY_CONVERSION_TYPE,
1442               x_txlv_rec.CURRENCY_CONVERSION_RATE,
1443               x_txlv_rec.CURRENCY_CONVERSION_DATE;
1444 -- Multi-Currency Change
1445     IF okl_talv_pk_csr%NOTFOUND THEN
1446        x_return_status := OKL_API.G_RET_STS_ERROR;
1447     END IF;
1448     CLOSE okl_talv_pk_csr;
1449     RETURN(x_return_status);
1450   EXCEPTION
1451     WHEN OTHERS THEN
1452       -- store SQL error message on message stack for caller
1453       OKL_API.set_message(
1454               G_APP_NAME,
1455               G_UNEXPECTED_ERROR,
1456               G_SQLCODE_TOKEN,
1457               SQLCODE,
1458               G_SQLERRM_TOKEN,
1459               SQLERRM);
1460       IF okl_talv_pk_csr%ISOPEN THEN
1461         CLOSE okl_talv_pk_csr;
1462       END IF;
1463       -- notify caller of an UNEXPECTED error
1464       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1465       RETURN(x_return_status);
1466   END get_txlv_rec;
1467 ----------------------------------------------------------------------------
1468 -- Start of Commnets
1469 -- Badrinath Kuchibholta
1470 -- Function Name        : get_txdv_rec
1471 -- Description          : Get Transaction Detail Line Record
1472 -- Business Rules       :
1473 -- Parameters           :
1474 -- Version              :
1475 -- End of Commnets
1476   FUNCTION get_txdv_tbl(p_tal_id   IN NUMBER,
1477                         x_txdv_tbl OUT NOCOPY txdv_tbl_type)
1478   RETURN  VARCHAR2
1479   IS
1480     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1481     i                          NUMBER := 0;
1482     CURSOR c_okl_asdv_pk_csr (p_tal_id  IN NUMBER) IS
1483     SELECT id,
1484            object_version_number,
1485            tal_id,
1486            target_kle_id,
1487            line_detail_number,
1488            asset_number,
1489            description,
1490            quantity,
1491            cost,
1492            tax_book,
1493            life_in_months_tax,
1494            deprn_method_tax,
1495            deprn_rate_tax,
1496            salvage_value,
1497            attribute_category,
1498            attribute1,
1499            attribute2,
1500            attribute3,
1501            attribute4,
1502            attribute5,
1503            attribute6,
1504            attribute7,
1505            attribute8,
1506            attribute9,
1507            attribute10,
1508            attribute11,
1509            attribute12,
1510            attribute13,
1511            attribute14,
1512            attribute15,
1513            created_by,
1514            creation_date,
1515            last_updated_by,
1516            last_update_date,
1517            last_update_login,
1518            split_percent,
1519            inventory_item_id ,
1520 -- Multi-Currency Change
1521            currency_code,
1522            currency_conversion_type,
1523            currency_conversion_rate,
1524            currency_conversion_date
1525 -- Multi-Currency Change
1526     FROM Okl_Txd_Assets_V txd
1527     WHERE txd.tal_id  = p_tal_id;
1528   BEGIN
1529     FOR r_okl_asdv_pk_csr IN c_okl_asdv_pk_csr(p_tal_id) LOOP
1530         x_txdv_tbl(i).ID                     := r_okl_asdv_pk_csr.ID;
1531         x_txdv_tbl(i).OBJECT_VERSION_NUMBER  := r_okl_asdv_pk_csr.OBJECT_VERSION_NUMBER;
1532         x_txdv_tbl(i).TAL_ID                 := r_okl_asdv_pk_csr.TAL_ID;
1533         x_txdv_tbl(i).TARGET_KLE_ID          := r_okl_asdv_pk_csr.TARGET_KLE_ID;
1534         x_txdv_tbl(i).LINE_DETAIL_NUMBER     := r_okl_asdv_pk_csr.LINE_DETAIL_NUMBER;
1535         x_txdv_tbl(i).DESCRIPTION            := r_okl_asdv_pk_csr.DESCRIPTION;
1536         x_txdv_tbl(i).ASSET_NUMBER           := r_okl_asdv_pk_csr.ASSET_NUMBER;
1537         x_txdv_tbl(i).QUANTITY               := r_okl_asdv_pk_csr.QUANTITY;
1538         x_txdv_tbl(i).COST                   := r_okl_asdv_pk_csr.COST;
1539         x_txdv_tbl(i).TAX_BOOK               := r_okl_asdv_pk_csr.TAX_BOOK;
1540         x_txdv_tbl(i).LIFE_IN_MONTHS_TAX     := r_okl_asdv_pk_csr.LIFE_IN_MONTHS_TAX;
1541         x_txdv_tbl(i).DEPRN_METHOD_TAX       := r_okl_asdv_pk_csr.DEPRN_METHOD_TAX;
1542         x_txdv_tbl(i).DEPRN_RATE_TAX         := r_okl_asdv_pk_csr.DEPRN_RATE_TAX;
1543         x_txdv_tbl(i).SALVAGE_VALUE          := r_okl_asdv_pk_csr.SALVAGE_VALUE;
1544         x_txdv_tbl(i).ATTRIBUTE_CATEGORY     := r_okl_asdv_pk_csr.ATTRIBUTE_CATEGORY;
1545         x_txdv_tbl(i).ATTRIBUTE1             := r_okl_asdv_pk_csr.ATTRIBUTE1;
1546         x_txdv_tbl(i).ATTRIBUTE2             := r_okl_asdv_pk_csr.ATTRIBUTE2;
1547         x_txdv_tbl(i).ATTRIBUTE3             := r_okl_asdv_pk_csr.ATTRIBUTE3;
1548         x_txdv_tbl(i).ATTRIBUTE4             := r_okl_asdv_pk_csr.ATTRIBUTE4;
1549         x_txdv_tbl(i).ATTRIBUTE5             := r_okl_asdv_pk_csr.ATTRIBUTE5;
1550         x_txdv_tbl(i).ATTRIBUTE6             := r_okl_asdv_pk_csr.ATTRIBUTE6;
1551         x_txdv_tbl(i).ATTRIBUTE7             := r_okl_asdv_pk_csr.ATTRIBUTE7;
1552         x_txdv_tbl(i).ATTRIBUTE8             := r_okl_asdv_pk_csr.ATTRIBUTE8;
1553         x_txdv_tbl(i).ATTRIBUTE9             := r_okl_asdv_pk_csr.ATTRIBUTE9;
1554         x_txdv_tbl(i).ATTRIBUTE10            := r_okl_asdv_pk_csr.ATTRIBUTE10;
1555         x_txdv_tbl(i).ATTRIBUTE11            := r_okl_asdv_pk_csr.ATTRIBUTE11;
1556         x_txdv_tbl(i).ATTRIBUTE12            := r_okl_asdv_pk_csr.ATTRIBUTE12;
1557         x_txdv_tbl(i).ATTRIBUTE13            := r_okl_asdv_pk_csr.ATTRIBUTE13;
1558         x_txdv_tbl(i).ATTRIBUTE14            := r_okl_asdv_pk_csr.ATTRIBUTE14;
1559         x_txdv_tbl(i).ATTRIBUTE15            := r_okl_asdv_pk_csr.ATTRIBUTE15;
1560         x_txdv_tbl(i).CREATED_BY             := r_okl_asdv_pk_csr.CREATED_BY;
1561         x_txdv_tbl(i).CREATION_DATE          := r_okl_asdv_pk_csr.CREATION_DATE;
1562         x_txdv_tbl(i).LAST_UPDATED_BY        := r_okl_asdv_pk_csr.LAST_UPDATED_BY;
1563         x_txdv_tbl(i).LAST_UPDATE_DATE       := r_okl_asdv_pk_csr.LAST_UPDATE_DATE;
1564         x_txdv_tbl(i).LAST_UPDATE_LOGIN      := r_okl_asdv_pk_csr.LAST_UPDATE_LOGIN;
1565         x_txdv_tbl(i).SPLIT_PERCENT          := r_okl_asdv_pk_csr.split_percent;
1566         x_txdv_tbl(i).INVENTORY_ITEM_ID      := r_okl_asdv_pk_csr.inventory_item_id;
1567 -- Multi-Currency Change
1568         x_txdv_tbl(i).CURRENCY_CODE            := r_okl_asdv_pk_csr.currency_code;
1569         x_txdv_tbl(i).CURRENCY_CONVERSION_TYPE := r_okl_asdv_pk_csr.currency_conversion_type;
1570         x_txdv_tbl(i).CURRENCY_CONVERSION_RATE := r_okl_asdv_pk_csr.currency_conversion_rate;
1571         x_txdv_tbl(i).CURRENCY_CONVERSION_DATE := r_okl_asdv_pk_csr.currency_conversion_date;
1572 -- Multi-Currency Change
1573         i := i + 1;
1574        IF c_okl_asdv_pk_csr%NOTFOUND THEN
1575           x_return_status := OKL_API.G_RET_STS_ERROR;
1576           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
1577        END IF;
1578     END LOOP;
1579     RETURN(x_return_status);
1580   EXCEPTION
1581     WHEN OTHERS THEN
1582       -- store SQL error message on message stack for caller
1583       OKL_API.set_message(
1584               G_APP_NAME,
1585               G_UNEXPECTED_ERROR,
1586               G_SQLCODE_TOKEN,
1587               SQLCODE,
1588               G_SQLERRM_TOKEN,
1589               SQLERRM);
1590        IF c_okl_asdv_pk_csr%ISOPEN THEN
1591           CLOSE c_okl_asdv_pk_csr;
1592        END IF;
1593       -- notify caller of an UNEXPECTED error
1594       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1595       return(x_return_status);
1596   END get_txdv_tbl;
1597 ----------------------------------------------------------------------------
1598 -- Start of Commnets
1599 -- Badrinath Kuchibholta
1600 -- Function Name        : get_itiv_rec
1601 -- Description          : Get Transaction item instance Record
1602 -- Business Rules       :
1603 -- Parameters           :
1604 -- Version              :
1605 -- End of Commnets
1606   FUNCTION  get_itiv_rec(p_kle_id   IN NUMBER,
1607                          x_itiv_rec OUT NOCOPY itiv_rec_type)
1608   RETURN  VARCHAR2 IS
1609     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1610     CURSOR okl_itiv_pk_csr (p_kle_id     IN NUMBER) IS
1611     SELECT ID,
1612            OBJECT_VERSION_NUMBER,
1613            TAS_ID,
1614            TAL_ID,
1615            KLE_ID,
1616            TAL_TYPE,
1617            LINE_NUMBER,
1618            INSTANCE_NUMBER_IB,
1619            OBJECT_ID1_NEW,
1620            OBJECT_ID2_NEW,
1621            JTOT_OBJECT_CODE_NEW,
1622            OBJECT_ID1_OLD,
1623            OBJECT_ID2_OLD,
1624            JTOT_OBJECT_CODE_OLD,
1625            INVENTORY_ORG_ID,
1626            SERIAL_NUMBER,
1627            MFG_SERIAL_NUMBER_YN,
1628            INVENTORY_ITEM_ID,
1629            INV_MASTER_ORG_ID,
1630            ATTRIBUTE_CATEGORY,
1631            ATTRIBUTE1,
1632            ATTRIBUTE2,
1633            ATTRIBUTE3,
1634            ATTRIBUTE4,
1635            ATTRIBUTE5,
1636            ATTRIBUTE6,
1637            ATTRIBUTE7,
1638            ATTRIBUTE8,
1639            ATTRIBUTE9,
1640            ATTRIBUTE10,
1641            ATTRIBUTE11,
1642            ATTRIBUTE12,
1643            ATTRIBUTE13,
1644            ATTRIBUTE14,
1645            ATTRIBUTE15,
1646            CREATED_BY,
1647            CREATION_DATE,
1648            LAST_UPDATED_BY,
1649            LAST_UPDATE_DATE,
1650            LAST_UPDATE_LOGIN
1651     FROM OKL_TXL_ITM_INSTS iti
1652     WHERE iti.kle_id  = p_kle_id;
1653   BEGIN
1654     -- Get current database values
1655     OPEN okl_itiv_pk_csr (p_kle_id);
1656     FETCH okl_itiv_pk_csr INTO
1657               x_itiv_rec.ID,
1658               x_itiv_rec.OBJECT_VERSION_NUMBER,
1659               x_itiv_rec.TAS_ID,
1660               x_itiv_rec.TAL_ID,
1661               x_itiv_rec.KLE_ID,
1662               x_itiv_rec.TAL_TYPE,
1663               x_itiv_rec.LINE_NUMBER,
1664               x_itiv_rec.INSTANCE_NUMBER_IB,
1665               x_itiv_rec.OBJECT_ID1_NEW,
1666               x_itiv_rec.OBJECT_ID2_NEW,
1667               x_itiv_rec.JTOT_OBJECT_CODE_NEW,
1668               x_itiv_rec.OBJECT_ID1_OLD,
1669               x_itiv_rec.OBJECT_ID2_OLD,
1670               x_itiv_rec.JTOT_OBJECT_CODE_OLD,
1671               x_itiv_rec.INVENTORY_ORG_ID,
1672               x_itiv_rec.SERIAL_NUMBER,
1673               x_itiv_rec.MFG_SERIAL_NUMBER_YN,
1674               x_itiv_rec.INVENTORY_ITEM_ID,
1675               x_itiv_rec.INV_MASTER_ORG_ID,
1676               x_itiv_rec.ATTRIBUTE_CATEGORY,
1677               x_itiv_rec.ATTRIBUTE1,
1678               x_itiv_rec.ATTRIBUTE2,
1679               x_itiv_rec.ATTRIBUTE3,
1680               x_itiv_rec.ATTRIBUTE4,
1681               x_itiv_rec.ATTRIBUTE5,
1682               x_itiv_rec.ATTRIBUTE6,
1683               x_itiv_rec.ATTRIBUTE7,
1684               x_itiv_rec.ATTRIBUTE8,
1685               x_itiv_rec.ATTRIBUTE9,
1686               x_itiv_rec.ATTRIBUTE10,
1687               x_itiv_rec.ATTRIBUTE11,
1688               x_itiv_rec.ATTRIBUTE12,
1689               x_itiv_rec.ATTRIBUTE13,
1690               x_itiv_rec.ATTRIBUTE14,
1691               x_itiv_rec.ATTRIBUTE15,
1692               x_itiv_rec.CREATED_BY,
1693               x_itiv_rec.CREATION_DATE,
1694               x_itiv_rec.LAST_UPDATED_BY,
1695               x_itiv_rec.LAST_UPDATE_DATE,
1696               x_itiv_rec.LAST_UPDATE_LOGIN;
1697     IF okl_itiv_pk_csr%NOTFOUND THEN
1698        x_return_status := OKL_API.G_RET_STS_ERROR;
1699     END IF;
1700     CLOSE okl_itiv_pk_csr;
1701     RETURN(x_return_status);
1702   EXCEPTION
1703     WHEN OTHERS THEN
1704       -- store SQL error message on message stack for caller
1705       OKL_API.set_message(
1706               G_APP_NAME,
1707               G_UNEXPECTED_ERROR,
1708               G_SQLCODE_TOKEN,
1709               SQLCODE,
1710               G_SQLERRM_TOKEN,
1711               SQLERRM);
1712       IF okl_itiv_pk_csr%ISOPEN THEN
1713         CLOSE okl_itiv_pk_csr;
1714       END IF;
1715       -- notify caller of an UNEXPECTED error
1716       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1717       RETURN(x_return_status);
1718   END get_itiv_rec;
1719 --------------------------------------------------------------------------
1720   FUNCTION get_try_id(p_try_name  IN  OKL_TRX_TYPES_V.NAME%TYPE,
1721                       x_try_id    OUT NOCOPY OKC_LINE_STYLES_V.ID%TYPE)
1722   RETURN VARCHAR2 IS
1723     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1724     CURSOR c_get_try_id(p_try_name  OKL_TRX_TYPES_V.NAME%TYPE) IS
1725     SELECT id
1726     FROM OKL_TRX_TYPES_tl
1727     WHERE upper(name) = upper(p_try_name)
1728     AND language = G_LANGUAGE;
1729  BEGIN
1730    IF (p_try_name = OKL_API.G_MISS_CHAR) OR
1731        (p_try_name IS NULL) THEN
1732        -- store SQL error message on message stack
1733        OKL_API.set_message(p_app_name     => G_APP_NAME,
1734                            p_msg_name     => G_REQUIRED_VALUE,
1735                            p_token1       => G_COL_NAME_TOKEN,
1736                            p_token1_value => 'Try Name');
1737        -- halt validation as it is a required field
1738        RAISE G_EXCEPTION_STOP_VALIDATION;
1739     END IF;
1740     OPEN c_get_try_id(p_try_name);
1741     FETCH c_get_try_id INTO x_try_id;
1742     IF c_get_try_id%NOTFOUND THEN
1743        OKL_API.set_message(p_app_name     => G_APP_NAME,
1744                            p_msg_name     => G_NO_MATCHING_RECORD,
1745                            p_token1       => G_COL_NAME_TOKEN,
1746                            p_token1_value => 'Try Name');
1747        RAISE G_EXCEPTION_HALT_VALIDATION;
1748     END IF;
1749     CLOSE c_get_try_id;
1750     RETURN x_return_status;
1751   EXCEPTION
1752     WHEN G_EXCEPTION_STOP_VALIDATION then
1753     -- We are here since the field is required
1754     -- Notify Error
1755     x_return_status := OKL_API.G_RET_STS_ERROR;
1756     WHEN G_EXCEPTION_HALT_VALIDATION then
1757     -- We are here b'cause we have no parent record
1758     -- If the cursor is open then it has to be closed
1759      IF c_get_try_id%ISOPEN THEN
1760         CLOSE c_get_try_id;
1761      END IF;
1762     -- notify caller of an error
1763     x_return_status := OKL_API.G_RET_STS_ERROR;
1764     WHEN OTHERS THEN
1765       -- store SQL error message on message stack for caller
1766       OKL_API.set_message(
1767               G_APP_NAME,
1768               G_UNEXPECTED_ERROR,
1769               G_SQLCODE_TOKEN,
1770               SQLCODE,
1771               G_SQLERRM_TOKEN,
1772               SQLERRM);
1773      -- notify caller of an UNEXPECTED error
1774      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1775      -- if the cursor is open
1776      IF c_get_try_id%ISOPEN THEN
1777         CLOSE c_get_try_id;
1778      END IF;
1779      RETURN(x_return_status);
1780  END get_try_id;
1781 --4-------------------------------------------------------------------------
1782 -- FUNCTION get_rec for: OKC_K_ITEMS_V
1783 ---------------------------------------------------------------------------
1784   FUNCTION get_rec_cimv(p_cle_id      IN  OKC_K_ITEMS_V.CLE_ID%TYPE,
1785                         p_dnz_chr_id  IN  OKC_K_ITEMS_V.DNZ_CHR_ID%TYPE,
1786                         x_cimv_rec OUT NOCOPY cimv_rec_type)
1787   RETURN VARCHAR2 IS
1788     CURSOR okc_cimv_pk_csr(p_cle_id     OKC_K_ITEMS_V.CLE_ID%TYPE,
1789                            p_dnz_chr_id OKC_K_ITEMS_V.DNZ_CHR_ID%TYPE) IS
1790     SELECT CIM.ID,
1791            CIM.OBJECT_VERSION_NUMBER,
1792            CIM.CLE_ID,
1793            CIM.CHR_ID,
1794            CIM.CLE_ID_FOR,
1795            CIM.DNZ_CHR_ID,
1796            CIM.OBJECT1_ID1,
1797            CIM.OBJECT1_ID2,
1798            CIM.JTOT_OBJECT1_CODE,
1799            CIM.UOM_CODE,
1800            CIM.EXCEPTION_YN,
1801            CIM.NUMBER_OF_ITEMS,
1802            CIM.UPG_ORIG_SYSTEM_REF,
1803            CIM.UPG_ORIG_SYSTEM_REF_ID,
1804            CIM.PRICED_ITEM_YN,
1805            CIM.CREATED_BY,
1806            CIM.CREATION_DATE,
1807            CIM.LAST_UPDATED_BY,
1808            CIM.LAST_UPDATE_DATE,
1809            CIM.LAST_UPDATE_LOGIN
1810     FROM okc_k_items_v cim
1811     WHERE cim.dnz_chr_id = p_dnz_chr_id
1812     AND cim.cle_id = p_cle_id;
1813     l_okc_cimv_pk              okc_cimv_pk_csr%ROWTYPE;
1814     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1815   BEGIN
1816     OPEN okc_cimv_pk_csr(p_cle_id,
1817                          p_dnz_chr_id);
1818     FETCH okc_cimv_pk_csr INTO
1819               x_cimv_rec.ID,
1820               x_cimv_rec.OBJECT_VERSION_NUMBER,
1821               x_cimv_rec.CLE_ID,
1822               x_cimv_rec.CHR_ID,
1823               x_cimv_rec.CLE_ID_FOR,
1824               x_cimv_rec.DNZ_CHR_ID,
1825               x_cimv_rec.OBJECT1_ID1,
1826               x_cimv_rec.OBJECT1_ID2,
1827               x_cimv_rec.JTOT_OBJECT1_CODE,
1828               x_cimv_rec.UOM_CODE,
1829               x_cimv_rec.EXCEPTION_YN,
1830               x_cimv_rec.NUMBER_OF_ITEMS,
1831               x_cimv_rec.UPG_ORIG_SYSTEM_REF,
1832               x_cimv_rec.UPG_ORIG_SYSTEM_REF_ID,
1833               x_cimv_rec.PRICED_ITEM_YN,
1834               x_cimv_rec.CREATED_BY,
1835               x_cimv_rec.CREATION_DATE,
1836               x_cimv_rec.LAST_UPDATED_BY,
1837               x_cimv_rec.LAST_UPDATE_DATE,
1838               x_cimv_rec.LAST_UPDATE_LOGIN;
1839     IF okc_cimv_pk_csr%NOTFOUND THEN
1840        x_return_status := OKL_API.G_RET_STS_ERROR;
1841     END IF;
1842     IF (okc_cimv_pk_csr%ROWCOUNT > 1) THEN
1843        x_return_status := OKL_API.G_RET_STS_ERROR;
1844     END IF;
1845     CLOSE okc_cimv_pk_csr;
1846     RETURN(x_return_status);
1847   EXCEPTION
1848     WHEN OTHERS THEN
1849       -- store SQL error message on message stack for caller
1850       OKL_API.set_message(
1851               G_APP_NAME,
1852               G_UNEXPECTED_ERROR,
1853               G_SQLCODE_TOKEN,
1854               SQLCODE,
1855               G_SQLERRM_TOKEN,
1856               SQLERRM);
1857      -- notify caller of an UNEXPECTED error
1858      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1859      -- if the cursor is open
1860      IF okc_cimv_pk_csr%ISOPEN THEN
1861         CLOSE okc_cimv_pk_csr;
1862      END IF;
1863      RETURN(x_return_status);
1864   END get_rec_cimv;
1865 -------------------------------------------------------------------------------------------------
1866 -- Start of Commnets
1867 -- Badrinath Kuchibholta
1868 -- Procedure Name       : Create_asset_header
1869 -- Description          : Creation of Asset Header
1870 -- Business Rules       :
1871 -- Parameters           :
1872 -- Version              :
1873 -- End of Commnets
1874   PROCEDURE Create_asset_header(
1875             p_api_version    IN  NUMBER,
1876             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
1877             x_return_status  OUT NOCOPY VARCHAR2,
1878             x_msg_count      OUT NOCOPY NUMBER,
1879             x_msg_data       OUT NOCOPY VARCHAR2,
1880             p_trxv_rec       IN  trxv_rec_type,
1881             x_trxv_rec       OUT NOCOPY trxv_rec_type) IS
1882     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_TRX_ASSET_HEADER';
1883   BEGIN
1884     x_return_status      := OKL_API.G_RET_STS_SUCCESS;
1885     -- Call start_activity to create savepoint, check compatibility
1886     -- and initialize message list
1887     x_return_status := OKL_API.START_ACTIVITY (
1888                                l_api_name
1889                                ,p_init_msg_list
1890                                ,'_PVT'
1891                                ,x_return_status);
1892     -- Check if activity started successfully
1893     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1894        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1895     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1896        RAISE OKL_API.G_EXCEPTION_ERROR;
1897     END IF;
1898     -- evaluate conditions, build outcomes for true conditions and
1899     -- put them on outcome queue
1900     OKL_TRX_ASSETS_PUB.create_trx_ass_h_def(
1901                        p_api_version    => p_api_version,
1902                        p_init_msg_list  => p_init_msg_list,
1903                        x_return_status  => x_return_status,
1904                        x_msg_count      => x_msg_count,
1905                        x_msg_data       => x_msg_data,
1906                        p_thpv_rec       => p_trxv_rec,
1907                        x_thpv_rec       => x_trxv_rec);
1908     OKL_API.END_ACTIVITY (x_msg_count,
1909                           x_msg_data );
1910   EXCEPTION
1911     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1912     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1913                                l_api_name,
1914                                G_PKG_NAME,
1915                                'OKL_API.G_RET_STS_ERROR',
1916                                x_msg_count,
1917                                x_msg_data,
1918                                '_PVT');
1919     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1920     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
1921                               l_api_name,
1922                               G_PKG_NAME,
1923                               'OKL_API.G_RET_STS_UNEXP_ERROR',
1924                               x_msg_count,
1925                               x_msg_data,
1926                               '_PVT');
1927     WHEN OTHERS THEN
1928     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
1929                               l_api_name,
1930                               G_PKG_NAME,
1931                               'OTHERS',
1932                               x_msg_count,
1933                               x_msg_data,
1934                               '_PVT');
1935   END Create_asset_header;
1936 -------------------------------------------------------------------------------------------------
1937 -- Start of Commnets
1938 -- Badrinath Kuchibholta
1939 -- Procedure Name       : Update_asset_header
1940 -- Description          : Update of Asset Header
1941 -- Business Rules       :
1942 -- Parameters           :
1943 -- Version              :
1944 -- End of Commnets
1945   PROCEDURE Update_asset_header(
1946             p_api_version    IN  NUMBER,
1947             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
1948             x_return_status  OUT NOCOPY VARCHAR2,
1949             x_msg_count      OUT NOCOPY NUMBER,
1950             x_msg_data       OUT NOCOPY VARCHAR2,
1951             p_trxv_rec       IN  trxv_rec_type,
1952             x_trxv_rec       OUT NOCOPY trxv_rec_type) IS
1953     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_TRX_ASSET_HEADER';
1954   BEGIN
1955     x_return_status        := OKL_API.G_RET_STS_SUCCESS;
1956     -- Call start_activity to create savepoint, check compatibility
1957     -- and initialize message list
1958     x_return_status := OKL_API.START_ACTIVITY (
1959                                l_api_name
1960                                ,p_init_msg_list
1961                                ,'_PVT'
1962                                ,x_return_status);
1963     -- Check if activity started successfully
1964     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1965        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
1966     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1967        RAISE OKL_API.G_EXCEPTION_ERROR;
1968     END IF;
1969     -- evaluate conditions, build outcomes for true conditions and
1970     -- put them on outcome queue
1971     OKL_TRX_ASSETS_PUB.update_trx_ass_h_def(
1972                        p_api_version    => p_api_version,
1973                        p_init_msg_list  => p_init_msg_list,
1974                        x_return_status  => x_return_status,
1975                        x_msg_count      => x_msg_count,
1976                        x_msg_data       => x_msg_data,
1977                        p_thpv_rec       => p_trxv_rec,
1978                        x_thpv_rec       => x_trxv_rec);
1979     OKL_API.END_ACTIVITY (x_msg_count,
1980                           x_msg_data );
1981   EXCEPTION
1982     WHEN OKL_API.G_EXCEPTION_ERROR THEN
1983     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
1984                                l_api_name,
1985                                G_PKG_NAME,
1986                                'OKL_API.G_RET_STS_ERROR',
1987                                x_msg_count,
1988                                x_msg_data,
1989                                '_PVT');
1990     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1991     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
1992                               l_api_name,
1993                               G_PKG_NAME,
1994                               'OKL_API.G_RET_STS_UNEXP_ERROR',
1995                               x_msg_count,
1996                               x_msg_data,
1997                               '_PVT');
1998     WHEN OTHERS THEN
1999     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2000                               l_api_name,
2001                               G_PKG_NAME,
2002                               'OTHERS',
2003                               x_msg_count,
2004                               x_msg_data,
2005                               '_PVT');
2006   END Update_asset_header;
2007 -------------------------------------------------------------------------------------------------
2008 -- Start of Commnets
2009 -- Badrinath Kuchibholta
2010 -- Procedure Name       : Create_asset_lines
2011 -- Description          : Creation of Asset Lines
2012 -- Business Rules       :
2013 -- Parameters           :
2014 -- Version              :
2015 -- End of Commnets
2016   PROCEDURE Create_asset_lines(
2017             p_api_version    IN  NUMBER,
2018             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
2019             x_return_status  OUT NOCOPY VARCHAR2,
2020             x_msg_count      OUT NOCOPY NUMBER,
2021             x_msg_data       OUT NOCOPY VARCHAR2,
2022             p_talv_rec       IN  talv_rec_type,
2023             x_talv_rec       OUT NOCOPY talv_rec_type)
2024   IS
2025     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_TXL_ASSET_LINE';
2026   BEGIN
2027     x_return_status  := OKL_API.G_RET_STS_SUCCESS;
2028     -- Call start_activity to create savepoint, check compatibility
2029     -- and initialize message list
2030     x_return_status := OKL_API.START_ACTIVITY (
2031                                l_api_name
2032                                ,p_init_msg_list
2033                                ,'_PVT'
2034                                ,x_return_status);
2035     -- Check if activity started successfully
2036     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2037        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2038     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2039        RAISE OKL_API.G_EXCEPTION_ERROR;
2040     END IF;
2041     OKL_TXL_ASSETS_PUB.create_txl_asset_def(
2042                        p_api_version    => p_api_version,
2043                        p_init_msg_list  => p_init_msg_list,
2044                        x_return_status  => x_return_status,
2045                        x_msg_count      => x_msg_count,
2046                        x_msg_data       => x_msg_data,
2047                        p_tlpv_rec       => p_talv_rec,
2048                        x_tlpv_rec       => x_talv_rec);
2049     OKL_API.END_ACTIVITY (x_msg_count,
2050                           x_msg_data );
2051   EXCEPTION
2052     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2053       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2054                                  l_api_name,
2055                                  G_PKG_NAME,
2056                                  'OKL_API.G_RET_STS_ERROR',
2057                                  x_msg_count,
2058                                  x_msg_data,
2059                                  '_PVT');
2060     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2061       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2062                                 l_api_name,
2063                                 G_PKG_NAME,
2064                                 'OKL_API.G_RET_STS_UNEXP_ERROR',
2065                                 x_msg_count,
2066                                 x_msg_data,
2067                                 '_PVT');
2068     WHEN OTHERS THEN
2069       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2070                                 l_api_name,
2071                                 G_PKG_NAME,
2072                                 'OTHERS',
2073                                 x_msg_count,
2074                                 x_msg_data,
2075                                 '_PVT');
2076   END Create_asset_lines;
2077 -------------------------------------------------------------------------------------------------
2078 -- Start of Commnets
2079 -- Badrinath Kuchibholta
2080 -- Procedure Name       : Create_asset_line_details
2081 -- Description          : Creation of asset_line_details
2082 -- Business Rules       :
2083 -- Parameters           :
2084 -- Version              :
2085 -- End of Commnets
2086   PROCEDURE Create_asset_line_details(
2087             p_api_version    IN  NUMBER,
2088             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
2089             x_return_status  OUT NOCOPY VARCHAR2,
2090             x_msg_count      OUT NOCOPY NUMBER,
2091             x_msg_data       OUT NOCOPY VARCHAR2,
2092             p_txdv_tbl       IN  txdv_tbl_type,
2093             x_txdv_tbl       OUT NOCOPY txdv_tbl_type)
2094   IS
2095     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_TXD_ASSET_DTL';
2096   BEGIN
2097     x_return_status  := OKL_API.G_RET_STS_SUCCESS;
2098     -- Call start_activity to create savepoint, check compatibility
2099     -- and initialize message list
2100     x_return_status := OKL_API.START_ACTIVITY (
2101                                l_api_name
2102                                ,p_init_msg_list
2103                                ,'_PVT'
2104                                ,x_return_status);
2105     -- Check if activity started successfully
2106     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2107        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2108     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2109        RAISE OKL_API.G_EXCEPTION_ERROR;
2110     END IF;
2111     OKL_TXD_ASSETS_PUB.create_txd_asset_def(
2112                        p_api_version    => p_api_version,
2113                        p_init_msg_list  => p_init_msg_list,
2114                        x_return_status  => x_return_status,
2115                        x_msg_count      => x_msg_count,
2116                        x_msg_data       => x_msg_data,
2117                        p_adpv_tbl       => p_txdv_tbl,
2118                        x_adpv_tbl       => x_txdv_tbl);
2119     OKL_API.END_ACTIVITY (x_msg_count,
2120                           x_msg_data );
2121   EXCEPTION
2122     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2123       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2124                                  l_api_name,
2125                                  G_PKG_NAME,
2126                                  'OKL_API.G_RET_STS_ERROR',
2127                                  x_msg_count,
2128                                  x_msg_data,
2129                                  '_PVT');
2130     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2131       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2132                                 l_api_name,
2133                                 G_PKG_NAME,
2134                                 'OKL_API.G_RET_STS_UNEXP_ERROR',
2135                                  x_msg_count,
2136                                  x_msg_data,
2137                                  '_PVT');
2138     WHEN OTHERS THEN
2139       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2140                                 l_api_name,
2141                                 G_PKG_NAME,
2142                                 'OTHERS',
2143                                 x_msg_count,
2144                                 x_msg_data,
2145                                 '_PVT');
2146   END Create_asset_line_details;
2147 
2148 -------------------------------------------------------------------------------------------------
2149 -- Start of Commnets
2150 -- Badrinath Kuchibholta
2151 -- Procedure Name       : Create_asset_line_details
2152 -- Description          : Creation of asset_line_details
2153 -- Business Rules       :
2154 -- Parameters           :
2155 -- Version              :
2156 -- End of Commnets
2157   PROCEDURE Create_asset_line_details(
2158             p_api_version    IN  NUMBER,
2159             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
2160             x_return_status  OUT NOCOPY VARCHAR2,
2161             x_msg_count      OUT NOCOPY NUMBER,
2162             x_msg_data       OUT NOCOPY VARCHAR2,
2163             p_txdv_rec       IN  txdv_rec_type,
2164             x_txdv_rec       OUT NOCOPY txdv_rec_type)
2165   IS
2166     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_TXD_ASSET_DTL';
2167   BEGIN
2168     x_return_status  := OKL_API.G_RET_STS_SUCCESS;
2169     -- Call start_activity to create savepoint, check compatibility
2170     -- and initialize message list
2171     x_return_status := OKL_API.START_ACTIVITY (
2172                                l_api_name
2173                                ,p_init_msg_list
2174                                ,'_PVT'
2175                                ,x_return_status);
2176     -- Check if activity started successfully
2177     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2178        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2179     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2180        RAISE OKL_API.G_EXCEPTION_ERROR;
2181     END IF;
2182     OKL_TXD_ASSETS_PUB.create_txd_asset_def(
2183                        p_api_version    => p_api_version,
2184                        p_init_msg_list  => p_init_msg_list,
2185                        x_return_status  => x_return_status,
2186                        x_msg_count      => x_msg_count,
2187                        x_msg_data       => x_msg_data,
2188                        p_adpv_rec       => p_txdv_rec,
2189                        x_adpv_rec       => x_txdv_rec);
2190     OKL_API.END_ACTIVITY (x_msg_count,
2191                           x_msg_data );
2192   EXCEPTION
2193     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2194       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2195                                  l_api_name,
2196                                  G_PKG_NAME,
2197                                  'OKL_API.G_RET_STS_ERROR',
2198                                  x_msg_count,
2199                                  x_msg_data,
2200                                  '_PVT');
2201     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2202       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2203                                 l_api_name,
2204                                 G_PKG_NAME,
2205                                 'OKL_API.G_RET_STS_UNEXP_ERROR',
2206                                  x_msg_count,
2207                                  x_msg_data,
2208                                  '_PVT');
2209     WHEN OTHERS THEN
2210       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2211                                 l_api_name,
2212                                 G_PKG_NAME,
2213                                 'OTHERS',
2214                                 x_msg_count,
2215                                 x_msg_data,
2216                                 '_PVT');
2217   END Create_asset_line_details;
2218 --------------------------------------------------------------------------------------------------------------
2219   PROCEDURE create_txl_iti(
2220     p_api_version                  IN NUMBER,
2221     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2222     x_return_status                OUT NOCOPY VARCHAR2,
2223     x_msg_count                    OUT NOCOPY NUMBER,
2224     x_msg_data                     OUT NOCOPY VARCHAR2,
2225     p_itiv_rec                     IN itiv_rec_type,
2226     x_itiv_rec                     OUT NOCOPY itiv_rec_type) IS
2227 
2228     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_TXL_ITM_INSTS';
2229   BEGIN
2230     x_return_status   := OKL_API.G_RET_STS_SUCCESS;
2231     -- Call start_activity to create savepoint, check compatibility
2232     -- and initialize message list
2233     x_return_status := OKL_API.START_ACTIVITY (
2234                                l_api_name
2235                                ,p_init_msg_list
2236                                ,'_PVT'
2237                                ,x_return_status);
2238     -- Check if activity started successfully
2239     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2240        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2241     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2242        RAISE OKL_API.G_EXCEPTION_ERROR;
2243     END IF;
2244     OKL_TXL_ITM_INSTS_PUB.create_txl_itm_insts(
2245                        p_api_version    => p_api_version,
2246                        p_init_msg_list  => p_init_msg_list,
2247                        x_return_status  => x_return_status,
2248                        x_msg_count      => x_msg_count,
2249                        x_msg_data       => x_msg_data,
2250                        p_iipv_rec       => p_itiv_rec,
2251                        x_iipv_rec       => x_itiv_rec);
2252     OKL_API.END_ACTIVITY (x_msg_count,
2253                           x_msg_data );
2254   EXCEPTION
2255     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2256     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2257                                l_api_name,
2258                                G_PKG_NAME,
2259                                'OKL_API.G_RET_STS_ERROR',
2260                                x_msg_count,
2261                                x_msg_data,
2262                                '_PVT');
2263     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2264     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2265                               l_api_name,
2266                               G_PKG_NAME,
2267                               'OKL_API.G_RET_STS_UNEXP_ERROR',
2268                               x_msg_count,
2269                               x_msg_data,
2270                               '_PVT');
2271     WHEN OTHERS THEN
2272     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2273                               l_api_name,
2274                               G_PKG_NAME,
2275                               'OTHERS',
2276                               x_msg_count,
2277                               x_msg_data,
2278                               '_PVT');
2279   END create_txl_iti;
2280 --------------------------------------------------------------------------------------------------------------
2281   PROCEDURE create_supp_invoice_dtls(p_api_version   IN NUMBER,
2282                                      p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
2283                                      x_return_status OUT NOCOPY VARCHAR2,
2284                                      x_msg_count     OUT NOCOPY NUMBER,
2285                                      x_msg_data      OUT NOCOPY VARCHAR2,
2286                                      p_cle_id        IN  OKC_K_LINES_V.ID%TYPE,
2287                                      p_fin_cle_id    IN  OKC_K_LINES_V.ID%TYPE) IS
2288 
2289     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_SID';
2290     ln_cle_id       OKL_SUPP_INVOICE_DTLS.CLE_ID%TYPE;
2291     ln_fa_cle_id    OKL_SUPP_INVOICE_DTLS.FA_CLE_ID%TYPE;
2292     l_sidv_rec      sidv_rec_type;
2293     lx_sidv_rec     sidv_rec_type;
2294     lad_sidv_rec    sidv_rec_type;
2295     ladx_sidv_rec   sidv_rec_type;
2296     i               NUMBER :=0;
2297     ln_dummy        NUMBER :=0;
2298     ln1_dummy       NUMBER :=0;
2299     CURSOR c_validate_supp(p_cle_id OKL_K_LINES_V.ID%TYPE)
2300     IS
2301     SELECT 1
2302     FROM DUAL
2303     WHERE EXISTS (SELECT 1
2304                   FROM OKL_SUPP_INVOICE_DTLS_V
2305                   WHERE cle_id = p_cle_id);
2306 
2307    CURSOR c_model_line_id(p_cle_id OKL_K_LINES_V.ID%TYPE)
2308     IS
2309     SELECT cle_ml.id ml_cle_id,
2310            cle_fa.id fa_cle_id
2311     FROM OKC_K_LINES_V cle_fa,
2312          OKC_LINE_STYLES_V lse_fa,
2313          OKC_K_LINES_V cle_ml,
2314          OKC_LINE_STYLES_V lse_ml
2315     WHERE cle_ml.cle_id = p_cle_id
2316     AND cle_ml.lse_id = lse_ml.id
2317     AND lse_ml.lty_code = G_MODEL_LINE_LTY_CODE
2318     AND cle_fa.cle_id = cle_ml.cle_id
2319     AND cle_fa.dnz_chr_id = cle_ml.dnz_chr_id
2320     AND cle_fa.lse_id = lse_fa.id
2321     AND lse_fa.lty_code = G_FA_LINE_LTY_CODE;
2322 
2323     CURSOR c_addon_line_id(p_cle_id OKL_K_LINES_V.ID%TYPE)
2324     IS
2325     SELECT cle_ad.id ad_cle_id,
2326            cle_fa.id fa_cle_id
2327     FROM OKC_K_LINES_V cle_ad,
2328          OKC_LINE_STYLES_V lse_ad,
2329          OKC_K_LINES_V cle_fa,
2330          OKC_LINE_STYLES_V lse_fa,
2331          OKC_K_LINES_V cle_ml,
2332          OKC_LINE_STYLES_V lse_ml
2333     WHERE cle_ml.cle_id = p_cle_id
2334     AND cle_ml.lse_id = lse_ml.id
2335     AND lse_ml.lty_code = G_MODEL_LINE_LTY_CODE
2336     AND cle_fa.cle_id = cle_ml.cle_id
2337     AND cle_fa.dnz_chr_id = cle_ml.dnz_chr_id
2338     AND cle_fa.lse_id = lse_fa.id
2339     AND lse_fa.lty_code = G_FA_LINE_LTY_CODE
2340     AND cle_ad.cle_id = cle_ml.id
2341     AND cle_ad.dnz_chr_id = cle_ml.dnz_chr_id
2342     AND cle_ad.lse_id = lse_ad.id
2343     AND lse_ad.lty_code = G_ADDON_LINE_LTY_CODE;
2344 
2345     CURSOR c_new_addon_line_id(p_cle_id OKL_K_LINES_V.ID%TYPE,
2346                                p_orig_cle_id OKC_K_LINES_V.ORIG_SYSTEM_ID1%TYPE)
2347     IS
2348     SELECT cle_ad.id ad_cle_id,
2349            cle_fa.id fa_cle_id
2350     FROM OKC_K_LINES_V cle_ad,
2351          OKC_LINE_STYLES_V lse_ad,
2352          OKC_K_LINES_V cle_fa,
2353          OKC_LINE_STYLES_V lse_fa,
2354          OKC_K_LINES_V cle_ml,
2355          OKC_LINE_STYLES_V lse_ml
2356     WHERE cle_ml.cle_id = p_cle_id
2357     AND cle_ml.lse_id = lse_ml.id
2358     AND lse_ml.lty_code = G_MODEL_LINE_LTY_CODE
2359     AND cle_fa.cle_id = cle_ml.cle_id
2360     AND cle_fa.dnz_chr_id = cle_ml.dnz_chr_id
2361     AND cle_fa.lse_id = lse_fa.id
2362     AND lse_fa.lty_code = G_FA_LINE_LTY_CODE
2363     AND cle_ad.cle_id = cle_ml.id
2364     AND cle_ad.orig_system_id1 = p_orig_cle_id
2365     AND cle_ad.dnz_chr_id = cle_ml.dnz_chr_id
2366     AND cle_ad.lse_id = lse_ad.id
2367     AND lse_ad.lty_code = G_ADDON_LINE_LTY_CODE;
2368 
2369   BEGIN
2370     x_return_status   := OKL_API.G_RET_STS_SUCCESS;
2371     -- Call start_activity to create savepoint, check compatibility
2372     -- and initialize message list
2373     x_return_status := OKL_API.START_ACTIVITY (
2374                                l_api_name
2375                                ,p_init_msg_list
2376                                ,'_PVT'
2377                                ,x_return_status);
2378     -- Check if activity started successfully
2379     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2380        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2381     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2382        RAISE OKL_API.G_EXCEPTION_ERROR;
2383     END IF;
2384     OPEN  c_model_line_id(p_cle_id => p_cle_id);
2385     FETCH c_model_line_id INTO ln_cle_id,
2386                                ln_fa_cle_id;
2387     CLOSE c_model_line_id;
2388     OPEN  c_validate_supp(p_cle_id => ln_cle_id);
2389     FETCH c_validate_supp INTO ln_dummy;
2390     CLOSE c_validate_supp;
2391     -- Copy the supplier Invoice Details associated to Model line
2392     IF ln_dummy = 1 THEN
2393       -- Get the SID Record
2394       x_return_status := get_sidv_rec(p_cle_id   => ln_cle_id,
2395                                       x_sidv_rec => l_sidv_rec);
2396       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2397          OKL_API.set_message(p_app_name      => G_APP_NAME,
2398                              p_msg_name      => G_NO_MATCHING_RECORD,
2399                              p_token1        => G_COL_NAME_TOKEN,
2400                              p_token1_value  => 'OKL_SUPP_INVOICE_DTLS_V record');
2401          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2402       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2403          OKL_API.set_message(p_app_name      => G_APP_NAME,
2404                              p_msg_name      => G_NO_MATCHING_RECORD,
2405                              p_token1        => G_COL_NAME_TOKEN,
2406                              p_token1_value  => 'OKL_SUPP_INVOICE_DTLS_V record');
2407          RAISE OKL_API.G_EXCEPTION_ERROR;
2408       END IF;
2409       OPEN  c_model_line_id(p_cle_id => p_fin_cle_id);
2410       FETCH c_model_line_id INTO l_sidv_rec.cle_id,
2411                                  l_sidv_rec.fa_cle_id;
2412       CLOSE c_model_line_id;
2413       OKL_SUPP_INVOICE_DTLS_PUB.create_sup_inv_dtls(
2414                          p_api_version    => p_api_version,
2415                          p_init_msg_list  => p_init_msg_list,
2416                          x_return_status  => x_return_status,
2417                          x_msg_count      => x_msg_count,
2418                          x_msg_data       => x_msg_data,
2419                          p_sidv_rec       => l_sidv_rec,
2420                          x_sidv_rec       => lx_sidv_rec);
2421       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2422          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2423       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2424          RAISE OKL_API.G_EXCEPTION_ERROR;
2425       END IF;
2426     END IF;
2427     -- Copy the supplier Invoice Details associated to Add on line
2428     FOR r_addon_line_id IN c_addon_line_id(p_cle_id => p_cle_id) LOOP
2429       IF r_addon_line_id.ad_cle_id IS NOT NULL OR
2430          r_addon_line_id.ad_cle_id <> OKL_API.G_MISS_NUM THEN
2431         OPEN  c_validate_supp(p_cle_id => r_addon_line_id.ad_cle_id);
2432         FETCH c_validate_supp INTO ln1_dummy;
2433         CLOSE c_validate_supp;
2434         IF ln1_dummy = 1 THEN
2435           x_return_status := get_sidv_rec(p_cle_id   => r_addon_line_id.ad_cle_id,
2436                                           x_sidv_rec => lad_sidv_rec);
2437           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2438              OKL_API.set_message(p_app_name      => G_APP_NAME,
2439                                  p_msg_name      => G_NO_MATCHING_RECORD,
2440                                  p_token1        => G_COL_NAME_TOKEN,
2441                                  p_token1_value  => 'OKL_SUPP_INVOICE_DTLS_V record');
2442               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
2443           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2444              OKL_API.set_message(p_app_name      => G_APP_NAME,
2445                                  p_msg_name      => G_NO_MATCHING_RECORD,
2446                                  p_token1        => G_COL_NAME_TOKEN,
2447                                  p_token1_value  => 'OKL_SUPP_INVOICE_DTLS_V record');
2448               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
2449           END IF;
2450           OPEN  c_new_addon_line_id(p_cle_id => p_fin_cle_id,
2451                                     p_orig_cle_id => r_addon_line_id.ad_cle_id);
2452           FETCH c_new_addon_line_id INTO lad_sidv_rec.cle_id,
2453                                          lad_sidv_rec.fa_cle_id;
2454           CLOSE c_new_addon_line_id;
2455           OKL_SUPP_INVOICE_DTLS_PUB.create_sup_inv_dtls(
2456                              p_api_version    => p_api_version,
2457                              p_init_msg_list  => p_init_msg_list,
2458                              x_return_status  => x_return_status,
2459                              x_msg_count      => x_msg_count,
2460                              x_msg_data       => x_msg_data,
2461                              p_sidv_rec       => lad_sidv_rec,
2462                              x_sidv_rec       => ladx_sidv_rec);
2463           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2464             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
2465           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2466             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
2467           END IF;
2468           ln1_dummy := 0;
2469         END IF;
2470       END IF;
2471     END LOOP;
2472     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2473        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2474     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2475        RAISE OKL_API.G_EXCEPTION_ERROR;
2476     END IF;
2477     OKL_API.END_ACTIVITY (x_msg_count,
2478                           x_msg_data );
2479   EXCEPTION
2480     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2481     IF c_validate_supp%ISOPEN THEN
2482       CLOSE c_validate_supp;
2483     END IF;
2484     IF c_model_line_id%ISOPEN THEN
2485       CLOSE c_model_line_id;
2486     END IF;
2487     IF c_addon_line_id%ISOPEN THEN
2488       CLOSE c_addon_line_id;
2489     END IF;
2490     IF c_new_addon_line_id%ISOPEN THEN
2491       CLOSE c_new_addon_line_id;
2492     END IF;
2493     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2494                                l_api_name,
2495                                G_PKG_NAME,
2496                                'OKL_API.G_RET_STS_ERROR',
2497                                x_msg_count,
2498                                x_msg_data,
2499                                '_PVT');
2500     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2501     IF c_validate_supp%ISOPEN THEN
2502       CLOSE c_validate_supp;
2503     END IF;
2504     IF c_model_line_id%ISOPEN THEN
2505       CLOSE c_model_line_id;
2506     END IF;
2507     IF c_addon_line_id%ISOPEN THEN
2508       CLOSE c_addon_line_id;
2509     END IF;
2510     IF c_new_addon_line_id%ISOPEN THEN
2511       CLOSE c_new_addon_line_id;
2512     END IF;
2513     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2514                               l_api_name,
2515                               G_PKG_NAME,
2516                               'OKL_API.G_RET_STS_UNEXP_ERROR',
2517                               x_msg_count,
2518                               x_msg_data,
2519                               '_PVT');
2520     WHEN OTHERS THEN
2521     IF c_validate_supp%ISOPEN THEN
2522       CLOSE c_validate_supp;
2523     END IF;
2524     IF c_model_line_id%ISOPEN THEN
2525       CLOSE c_model_line_id;
2526     END IF;
2527     IF c_addon_line_id%ISOPEN THEN
2528       CLOSE c_addon_line_id;
2529     END IF;
2530     IF c_new_addon_line_id%ISOPEN THEN
2531       CLOSE c_new_addon_line_id;
2532     END IF;
2533     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2534                               l_api_name,
2535                               G_PKG_NAME,
2536                               'OTHERS',
2537                               x_msg_count,
2538                               x_msg_data,
2539                               '_PVT');
2540   END create_supp_invoice_dtls;
2541 -------------------------------------------------------------------------------------------------------
2542   PROCEDURE Create_asset_lines(
2543             p_api_version    IN  NUMBER,
2544             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
2545             x_return_status  OUT NOCOPY VARCHAR2,
2546             x_msg_count      OUT NOCOPY NUMBER,
2547             x_msg_data       OUT NOCOPY VARCHAR2,
2548             p_talv_rec       IN  talv_rec_type,
2549             p_trans_type     IN  OKL_TRX_ASSETS.TAS_TYPE%TYPE,
2550             x_trxv_rec       OUT NOCOPY trxv_rec_type,
2551             x_talv_rec       OUT NOCOPY talv_rec_type) IS
2552     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_TXL_ASSET_LINE';
2553     l_trxv_rec               trxv_rec_type;
2554     l_talv_rec               talv_rec_type;
2555 
2556 --Added by dpsingh for LE uptake
2557   l_chr_id  NUMBER;
2558   l_cntrct_number          OKC_K_HEADERS_B.CONTRACT_NUMBER%TYPE;
2559   l_legal_entity_id          NUMBER;
2560 
2561   BEGIN
2562     x_return_status  := OKL_API.G_RET_STS_SUCCESS;
2563     -- Call start_activity to create savepoint, check compatibility
2564     -- and initialize message list
2565     x_return_status := OKL_API.START_ACTIVITY (
2566                                l_api_name
2567                                ,p_init_msg_list
2568                                ,'_PVT'
2569                                ,x_return_status);
2570     -- Check if activity started successfully
2571     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2572        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2573     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2574        RAISE OKL_API.G_EXCEPTION_ERROR;
2575     END IF;
2576     -- Create New Header record and new Line record
2577     -- Before creating Header record
2578     -- we should make sure atleast the required record is given
2579     x_return_status := get_try_id(p_try_name => G_TRY_NAME,
2580                                   x_try_id   => l_trxv_rec.try_id);
2581     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2582        OKL_API.set_message(p_app_name     => G_APP_NAME,
2583                            p_msg_name     => G_NO_MATCHING_RECORD,
2584                            p_token1       => G_COL_NAME_TOKEN,
2585                            p_token1_value => 'try_id');
2586        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2587     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2588        OKL_API.set_message(p_app_name     => G_APP_NAME,
2589                            p_msg_name     => G_NO_MATCHING_RECORD,
2590                            p_token1       => G_COL_NAME_TOKEN,
2591                            p_token1_value => 'try_id');
2592        RAISE OKL_API.G_EXCEPTION_ERROR;
2593     END IF;
2594     l_trxv_rec.tsu_code            := 'ENTERED';
2595     l_trxv_rec.date_trans_occurred := sysdate;
2596     l_trxv_rec.tas_type            := p_trans_type;
2597 
2598      --Added by dpsingh for LE Uptake
2599     OPEN get_chr_id_csr(p_talv_rec.kle_id);
2600     FETCH get_chr_id_csr INTO l_chr_id;
2601     CLOSE get_chr_id_csr;
2602     l_legal_entity_id  := OKL_LEGAL_ENTITY_UTIL.get_khr_le_id(l_chr_id) ;
2603     IF  l_legal_entity_id IS NOT NULL THEN
2604        l_trxv_rec.legal_entity_id :=  l_legal_entity_id;
2605     ELSE
2606         -- get the contract number
2607        OPEN contract_num_csr(l_chr_id);
2608        FETCH contract_num_csr INTO l_cntrct_number;
2609        CLOSE contract_num_csr;
2610 	Okl_Api.set_message(p_app_name     => g_app_name,
2611                              p_msg_name     => 'OKL_LE_NOT_EXIST_CNTRCT',
2612 			     p_token1           =>  'CONTRACT_NUMBER',
2613 			     p_token1_value  =>  l_cntrct_number);
2614          RAISE OKL_API.G_EXCEPTION_ERROR;
2615     END IF;
2616 
2617     -- Now creating the new header record
2618     Create_asset_header(p_api_version    => p_api_version,
2619                         p_init_msg_list  => p_init_msg_list,
2620                         x_return_status  => x_return_status,
2621                         x_msg_count      => x_msg_count,
2622                         x_msg_data       => x_msg_data,
2623                         p_trxv_rec       => l_trxv_rec,
2624                         x_trxv_rec       => x_trxv_rec);
2625     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2626        OKL_API.set_message(p_app_name     => G_APP_NAME,
2627                            p_msg_name     => G_TRX_ID);
2628        l_trxv_rec                     :=  x_trxv_rec;
2629        l_trxv_rec.tsu_code            := 'ERROR';
2630        Update_asset_header(p_api_version    => p_api_version,
2631                            p_init_msg_list  => p_init_msg_list,
2632                            x_return_status  => x_return_status,
2633                            x_msg_count      => x_msg_count,
2634                            x_msg_data       => x_msg_data,
2635                            p_trxv_rec       => l_trxv_rec,
2636                            x_trxv_rec       => x_trxv_rec);
2637        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2638            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2639        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2640            RAISE OKL_API.G_EXCEPTION_ERROR;
2641        END IF;
2642        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2643     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2644        OKL_API.set_message(p_app_name     => G_APP_NAME,
2645                            p_msg_name     => G_TRX_ID);
2646        l_trxv_rec                     :=  x_trxv_rec;
2647        l_trxv_rec.tsu_code            := 'ERROR';
2648        Update_asset_header(p_api_version    => p_api_version,
2649                            p_init_msg_list  => p_init_msg_list,
2650                            x_return_status  => x_return_status,
2651                            x_msg_count      => x_msg_count,
2652                            x_msg_data       => x_msg_data,
2653                            p_trxv_rec       => l_trxv_rec,
2654                            x_trxv_rec       => x_trxv_rec);
2655        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2656           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2657        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2658           RAISE OKL_API.G_EXCEPTION_ERROR;
2659        END IF;
2660        RAISE OKL_API.G_EXCEPTION_ERROR;
2661     END IF;
2662     -- Now we are creating the new line record
2663     l_talv_rec                 := p_talv_rec;
2664     l_talv_rec.tas_id          := x_trxv_rec.id;
2665     IF (l_talv_rec.tal_type = OKL_API.G_MISS_CHAR OR
2666        l_talv_rec.tal_type IS NUll) THEN
2667        l_talv_rec.tal_type       := p_trans_type;
2668     END IF;
2669     IF (l_talv_rec.line_number = OKL_API.G_MISS_NUM OR
2670        l_talv_rec.line_number IS NUll) THEN
2671        l_talv_rec.line_number       := 1;
2672     ELSE
2673        l_talv_rec.line_number       := l_talv_rec.line_number + 1;
2674     END IF;
2675     IF (l_talv_rec.description = OKL_API.G_MISS_CHAR OR
2676         l_talv_rec.description IS NUll) THEN
2677         l_talv_rec.description := 'CREATION OF FIXED ASSETS' ;
2678     END IF;
2679     IF p_trans_type NOT IN ('CRB','CRL','CSP','CRV','ALI') THEN
2680 --      x_return_status := generate_asset_number(p_old_asset_number => l_talv_rec.asset_number,
2681 --                                               x_asset_number => l_talv_rec.asset_number);
2682       x_return_status := generate_asset_number(x_asset_number => l_talv_rec.asset_number);
2683       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2684         OKL_API.set_message(p_app_name => G_APP_NAME,
2685                            p_msg_name  => G_GEN_ASSET_NUMBER);
2686         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2687       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2688         OKL_API.set_message(p_app_name => G_APP_NAME,
2689                             p_msg_name => G_GEN_ASSET_NUMBER);
2690         RAISE OKL_API.G_EXCEPTION_ERROR;
2691       END IF;
2692     END IF;
2693     -- evaluate conditions, build outcomes for true conditions and
2694     -- put them on outcome queue
2695     OKL_TXL_ASSETS_PUB.create_txl_asset_def(
2696                        p_api_version    => p_api_version,
2697                        p_init_msg_list  => p_init_msg_list,
2698                        x_return_status  => x_return_status,
2699                        x_msg_count      => x_msg_count,
2700                        x_msg_data       => x_msg_data,
2701                        p_tlpv_rec       => l_talv_rec,
2702                        x_tlpv_rec       => x_talv_rec);
2703     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2704        OKL_API.set_message(p_app_name     => G_APP_NAME,
2705                            p_msg_name     => G_KLE_ID);
2706        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2707     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2708        OKL_API.set_message(p_app_name     => G_APP_NAME,
2709                            p_msg_name     => G_KLE_ID);
2710        RAISE OKL_API.G_EXCEPTION_ERROR;
2711     END IF;
2712     OKL_API.END_ACTIVITY (x_msg_count,
2713                           x_msg_data );
2714   EXCEPTION
2715     WHEN OKL_API.G_EXCEPTION_ERROR THEN
2716     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
2717                                l_api_name,
2718                                G_PKG_NAME,
2719                                'OKL_API.G_RET_STS_ERROR',
2720                                x_msg_count,
2721                                x_msg_data,
2722                                '_PVT');
2723     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2724     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2725                               l_api_name,
2726                               G_PKG_NAME,
2727                               'OKL_API.G_RET_STS_UNEXP_ERROR',
2728                               x_msg_count,
2729                               x_msg_data,
2730                               '_PVT');
2731     WHEN OTHERS THEN
2732     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
2733                               l_api_name,
2734                               G_PKG_NAME,
2735                               'OTHERS',
2736                               x_msg_count,
2737                               x_msg_data,
2738                               '_PVT');
2739   END Create_asset_lines;
2740 -------------------------------------------------------------------------------------------------------
2741   PROCEDURE Create_Asset_trx_txl_txd(
2742             p_api_version    IN  NUMBER,
2743             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
2744             x_return_status  OUT NOCOPY VARCHAR2,
2745             x_msg_count      OUT NOCOPY NUMBER,
2746             x_msg_data       OUT NOCOPY VARCHAR2,
2747             p_cle_id         IN  OKC_K_LINES_V.ID%TYPE,
2748             p_dnz_chr_id     IN  OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
2749             p_fin_cle_id     IN  OKC_K_LINES_V.ID%TYPE,
2750             p_trans_type     IN  OKL_TRX_ASSETS.TAS_TYPE%TYPE,
2751             x_trxv_rec       OUT NOCOPY trxv_rec_type,
2752             x_talv_rec       OUT NOCOPY talv_rec_type,
2753             x_txdv_tbl       OUT NOCOPY txdv_tbl_type) IS
2754     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_HEADER_LINE_DETAILS';
2755     l_trxv_rec               trxv_rec_type;
2756     l_talv_rec               talv_rec_type;
2757     l_txdv_tbl               txdv_tbl_type;
2758     ln_dummy                 NUMBER :=0;
2759     i                        NUMBER :=0;
2760     CURSOR c_trans_line_dtl_exist(p_tal_id OKL_K_LINES_V.ID%TYPE)
2761     IS
2762     SELECT 1
2763     FROM DUAL
2764     WHERE EXISTS (SELECT '1'
2765                   FROM OKL_TXD_ASSETS_V
2766                   WHERE tal_id = p_tal_id);
2767 
2768     CURSOR c_fa_line_id(p_cle_id OKL_K_LINES_V.ID%TYPE
2769                         ,p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE)
2770     IS
2771     SELECT cle.id
2772     FROM OKC_K_LINES_V cle,
2773          OKC_LINE_STYLES_V lse
2774     WHERE cle.cle_id = p_cle_id
2775     AND cle.dnz_chr_id = p_dnz_chr_id
2776     AND cle.lse_id = lse.id
2777     AND lse.lty_code = G_FA_LINE_LTY_CODE;
2778 
2779   --Added by dpsingh for LE uptake
2780   l_cntrct_number          OKC_K_HEADERS_B.CONTRACT_NUMBER%TYPE;
2781   l_legal_entity_id          NUMBER;
2782 
2783   BEGIN
2784     x_return_status  := OKL_API.G_RET_STS_SUCCESS;
2785     -- Call start_activity to create savepoint, check compatibility
2786     -- and initialize message list
2787     x_return_status := OKL_API.START_ACTIVITY (
2788                                l_api_name
2789                                ,p_init_msg_list
2790                                ,'_PVT'
2791                                ,x_return_status);
2792     -- Check if activity started successfully
2793     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2794        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2795     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2796        RAISE OKL_API.G_EXCEPTION_ERROR;
2797     END IF;
2798     -- Get the TAL Rec
2799     x_return_status := get_txlv_rec(p_kle_id   => p_cle_id,
2800                                     x_txlv_rec => l_talv_rec);
2801     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2802        OKL_API.set_message(p_app_name      => G_APP_NAME,
2803                            p_msg_name      => G_NO_MATCHING_RECORD,
2804                            p_token1        => G_COL_NAME_TOKEN,
2805                            p_token1_value  => 'OKL_TXL_ASSETS_V record');
2806        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2807     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2808        OKL_API.set_message(p_app_name     => G_APP_NAME,
2809                            p_msg_name     => G_NO_MATCHING_RECORD,
2810                            p_token1        => G_COL_NAME_TOKEN,
2811                            p_token1_value  => 'OKL_TXL_ASSETS_V record');
2812        RAISE OKL_API.G_EXCEPTION_ERROR;
2813     END IF;
2814     -- Since the above get rec itiv will get the old kle_id
2815     -- w.r.t p_from cle_id(top Line).
2816     -- but We have to replace the same with new fixed asset id
2817     -- with respect to new  x_cle_id(top line).
2818     OPEN  c_fa_line_id(p_fin_cle_id,
2819                        p_dnz_chr_id);
2820     FETCH c_fa_line_id INTO l_talv_rec.kle_id;
2821     CLOSE c_fa_line_id;
2822     -- Get the TRX Rec
2823     x_return_status := get_tasv_rec(p_tas_id   => l_talv_rec.tas_id,
2824                                     x_trxv_rec => l_trxv_rec);
2825     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2826        OKL_API.set_message(p_app_name     => G_APP_NAME,
2827                            p_msg_name     => G_NO_MATCHING_RECORD,
2828                            p_token1        => G_COL_NAME_TOKEN,
2829                            p_token1_value  => 'OKL_TRX_ASSETS record');
2830        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2831     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2832        OKL_API.set_message(p_app_name     => G_APP_NAME,
2833                            p_msg_name     => G_NO_MATCHING_RECORD,
2834                            p_token1        => G_COL_NAME_TOKEN,
2835                            p_token1_value  => 'OKL_TRX_ASSETS record');
2836        RAISE OKL_API.G_EXCEPTION_ERROR;
2837     END IF;
2838     l_trxv_rec.tas_type := p_trans_type;
2839     l_trxv_rec.tsu_code := 'ENTERED';
2840     l_trxv_rec.date_trans_occurred := sysdate;
2841 
2842      --Added by dpsingh for LE Uptake
2843     l_legal_entity_id  := OKL_LEGAL_ENTITY_UTIL.get_khr_le_id(p_dnz_chr_id) ;
2844     IF  l_legal_entity_id IS NOT NULL THEN
2845        l_trxv_rec.legal_entity_id :=  l_legal_entity_id;
2846     ELSE
2847         -- get the contract number
2848        OPEN contract_num_csr(p_dnz_chr_id);
2849        FETCH contract_num_csr INTO l_cntrct_number;
2850        CLOSE contract_num_csr;
2851 	Okl_Api.set_message(p_app_name     => g_app_name,
2852                              p_msg_name     => 'OKL_LE_NOT_EXIST_CNTRCT',
2853 			     p_token1           =>  'CONTRACT_NUMBER',
2854 			     p_token1_value  =>  l_cntrct_number);
2855          RAISE OKL_API.G_EXCEPTION_ERROR;
2856     END IF;
2857     -- Now creating the new header record
2858     Create_asset_header(p_api_version    => p_api_version,
2859                         p_init_msg_list  => p_init_msg_list,
2860                         x_return_status  => x_return_status,
2861                         x_msg_count      => x_msg_count,
2862                         x_msg_data       => x_msg_data,
2863                         p_trxv_rec       => l_trxv_rec,
2864                         x_trxv_rec       => x_trxv_rec);
2865     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2866        OKL_API.set_message(p_app_name     => G_APP_NAME,
2867                            p_msg_name     => G_TRX_ID);
2868        l_trxv_rec                     :=  x_trxv_rec;
2869        l_trxv_rec.tsu_code            := 'ERROR';
2870        Update_asset_header(p_api_version    => p_api_version,
2871                            p_init_msg_list  => p_init_msg_list,
2872                            x_return_status  => x_return_status,
2873                            x_msg_count      => x_msg_count,
2874                            x_msg_data       => x_msg_data,
2875                            p_trxv_rec       => l_trxv_rec,
2876                            x_trxv_rec       => x_trxv_rec);
2877        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2878            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2879        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2880            RAISE OKL_API.G_EXCEPTION_ERROR;
2881        END IF;
2882        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2883     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2884        OKL_API.set_message(p_app_name     => G_APP_NAME,
2885                            p_msg_name     => G_TRX_ID);
2886        l_trxv_rec                     :=  x_trxv_rec;
2887        l_trxv_rec.tsu_code            := 'ERROR';
2888        Update_asset_header(p_api_version    => p_api_version,
2889                            p_init_msg_list  => p_init_msg_list,
2890                            x_return_status  => x_return_status,
2891                            x_msg_count      => x_msg_count,
2892                            x_msg_data       => x_msg_data,
2893                            p_trxv_rec       => l_trxv_rec,
2894                            x_trxv_rec       => x_trxv_rec);
2895        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2896           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2897        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2898           RAISE OKL_API.G_EXCEPTION_ERROR;
2899        END IF;
2900        RAISE OKL_API.G_EXCEPTION_ERROR;
2901     END IF;
2902     l_talv_rec.tal_type := p_trans_type;
2903     -- Now we shoudl generate the Serial number
2904     IF p_trans_type NOT IN ('CRB','CRL','CSP','CRV','ALI') THEN
2905 --      x_return_status := generate_asset_number(p_old_asset_number => l_talv_rec.asset_number,
2906 --                                               x_asset_number => l_talv_rec.asset_number);
2907       x_return_status := generate_asset_number(x_asset_number => l_talv_rec.asset_number);
2908          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2909         OKL_API.set_message(p_app_name => G_APP_NAME,
2910                            p_msg_name  => G_GEN_ASSET_NUMBER);
2911         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2912       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2913         OKL_API.set_message(p_app_name => G_APP_NAME,
2914                             p_msg_name => G_GEN_ASSET_NUMBER);
2915         RAISE OKL_API.G_EXCEPTION_ERROR;
2916       END IF;
2917     END IF;
2918     l_talv_rec.dnz_khr_id            := p_dnz_chr_id;
2919     l_talv_rec.tas_id                := x_trxv_rec.id;
2920     --Bug# 3657624 : Depreciation Rate should not be multiplied by 100
2921     /*
2922     --Bug# 3621663 : Flat rate support
2923     If nvl(l_talv_rec.deprn_rate,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
2924         l_talv_rec.deprn_rate := l_talv_rec.deprn_rate * 100;
2925     End If;
2926     --Bug# 3621663 End
2927     */
2928     --Bug# 3657624 End
2929     -- Now we are creating the new line record
2930     Create_asset_lines(p_api_version    => p_api_version,
2931                        p_init_msg_list  => p_init_msg_list,
2932                        x_return_status  => x_return_status,
2933                        x_msg_count      => x_msg_count,
2934                        x_msg_data       => x_msg_data,
2935                        p_talv_rec       => l_talv_rec,
2936                        x_talv_rec       => x_talv_rec);
2937     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2938        OKL_API.set_message(p_app_name     => G_APP_NAME,
2939                            p_msg_name     => G_KLE_ID);
2940        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2941     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2942        OKL_API.set_message(p_app_name     => G_APP_NAME,
2943                            p_msg_name     => G_KLE_ID);
2944        RAISE OKL_API.G_EXCEPTION_ERROR;
2945     END IF;
2946     -- Check to see if the Asset Details Records are there
2947     OPEN  c_trans_line_dtl_exist(l_talv_rec.id);
2948     FETCH c_trans_line_dtl_exist INTO ln_dummy;
2949     CLOSE c_trans_line_dtl_exist;
2950     IF ln_dummy = 1 THEN
2951        x_return_status := get_txdv_tbl(p_tal_id   => l_talv_rec.id,
2952                                        x_txdv_tbl => l_txdv_tbl);
2953        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2954        OKL_API.set_message(p_app_name     => G_APP_NAME,
2955                            p_msg_name     => G_NO_MATCHING_RECORD,
2956                            p_token1        => G_COL_NAME_TOKEN,
2957                            p_token1_value  => 'OKL_TXD_ASSETS_V record');
2958           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2959        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2960        OKL_API.set_message(p_app_name     => G_APP_NAME,
2961                            p_msg_name     => G_NO_MATCHING_RECORD,
2962                            p_token1        => G_COL_NAME_TOKEN,
2963                            p_token1_value  => 'OKL_TXD_ASSETS_V record');
2964           RAISE OKL_API.G_EXCEPTION_ERROR;
2965        END IF;
2966        IF (l_txdv_tbl.COUNT > 0) THEN
2967          i := l_txdv_tbl.FIRST;
2968          LOOP
2969            l_txdv_tbl(i).asset_number := l_talv_rec.asset_number;
2970            l_txdv_tbl(i).tal_id       := x_talv_rec.id;
2971            --Bug# 3657624 : Depreciation Rate should not be multiplied by 100
2972            /*
2973            --Bug# 3621663 : Flat rate support
2974            If nvl(l_txdv_tbl(i).deprn_rate_tax,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
2975                l_txdv_tbl(i).deprn_rate_tax := l_txdv_tbl(i).deprn_rate_tax * 100;
2976            End If;
2977            --Bug# 3621663
2978            */
2979            --Bug# 3657624 End
2980            EXIT WHEN (i = l_txdv_tbl.LAST);
2981            i := l_txdv_tbl.NEXT(i);
2982          END LOOP;
2983        END IF;
2984        Create_asset_line_details(p_api_version    => p_api_version,
2985                                  p_init_msg_list  => p_init_msg_list,
2986                                  x_return_status  => x_return_status,
2987                                  x_msg_count      => x_msg_count,
2988                                  x_msg_data       => x_msg_data,
2989                                  p_txdv_tbl       => l_txdv_tbl,
2990                                  x_txdv_tbl       => x_txdv_tbl);
2991        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2992        OKL_API.set_message(p_app_name     => G_APP_NAME,
2993                            p_msg_name     => G_TXD_ID);
2994           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
2995        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2996        OKL_API.set_message(p_app_name     => G_APP_NAME,
2997                            p_msg_name     => G_TXD_ID);
2998           RAISE OKL_API.G_EXCEPTION_ERROR;
2999        END IF;
3000     END IF;
3001     OKL_API.END_ACTIVITY (x_msg_count,
3002                           x_msg_data );
3003   EXCEPTION
3004     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3005     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3006                                l_api_name,
3007                                G_PKG_NAME,
3008                                'OKL_API.G_RET_STS_ERROR',
3009                                x_msg_count,
3010                                x_msg_data,
3011                                '_PVT');
3012     IF c_trans_line_dtl_exist%ISOPEN THEN
3013        CLOSE c_trans_line_dtl_exist;
3014     END IF;
3015     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3016     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
3017                               l_api_name,
3018                               G_PKG_NAME,
3019                               'OKL_API.G_RET_STS_UNEXP_ERROR',
3020                               x_msg_count,
3021                               x_msg_data,
3022                               '_PVT');
3023     WHEN OTHERS THEN
3024     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
3025                               l_api_name,
3026                               G_PKG_NAME,
3027                               'OTHERS',
3028                               x_msg_count,
3029                               x_msg_data,
3030                               '_PVT');
3031      IF c_fa_line_id%ISOPEN THEN
3032         CLOSE c_fa_line_id;
3033      END IF;
3034      IF c_trans_line_dtl_exist%ISOPEN THEN
3035         CLOSE c_trans_line_dtl_exist;
3036      END IF;
3037   END Create_Asset_trx_txl_txd;
3038 --------------------------------------------------------------------------------------------------------------
3039 PROCEDURE Create_Asset_trx_txl_For_Loan(
3040             p_api_version     IN  NUMBER,
3041             p_init_msg_list   IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
3042             x_return_status   OUT NOCOPY VARCHAR2,
3043             x_msg_count       OUT NOCOPY NUMBER,
3044             x_msg_data        OUT NOCOPY VARCHAR2,
3045             p_cle_id          IN  OKC_K_LINES_V.ID%TYPE,
3046             p_from_dnz_chr_id IN  OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
3047             p_to_dnz_chr_id   IN  OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
3048             p_fin_cle_id      IN  OKC_K_LINES_V.ID%TYPE,
3049             p_trans_type      IN  OKL_TRX_ASSETS.TAS_TYPE%TYPE,
3050             x_trxv_rec        OUT NOCOPY trxv_rec_type,
3051             x_talv_rec        OUT NOCOPY talv_rec_type,
3052             x_txdv_tbl        OUT NOCOPY txdv_tbl_type) IS
3053     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_ASSET_TRX_LOAN';
3054     l_trxv_rec               trxv_rec_type;
3055     l_talv_rec               talv_rec_type;
3056     l_txdv_tbl               txdv_tbl_type;
3057     ln_dummy                 NUMBER :=0;
3058     i                        NUMBER :=0;
3059 
3060     Cursor get_txl_csr (p_fa_cle_id  IN NUMBER,
3061                         p_chr_id     IN NUMBER) IS
3062     Select fin_tl.name                  Asset_Number,
3063            fin_tl.item_description      description,
3064            mdl_cle.price_unit           unit_price,
3065            mdl_cim.number_of_items      units,
3066            fin_kle.oec                  oec,
3067            fa_kle.year_built            Year_of_Manufacture
3068     From   okc_k_items        mdl_cim,
3069            okc_k_lines_b      mdl_cle,
3070            okc_line_styles_b  mdl_lse,
3071            okl_k_lines        fin_kle,
3072            okc_k_lines_tl     fin_tl,
3073            okc_k_lines_b      fin_cle,
3074            okc_line_styles_b  fin_lse,
3075            okl_k_lines        fa_kle,
3076            okc_k_lines_b      fa_cle,
3077            okc_line_styles_b  fa_lse
3078     where  mdl_cim.cle_id     = mdl_cle.id
3079     and    mdl_cim.dnz_chr_id = mdl_cle.dnz_chr_id
3080     and    mdl_cle.cle_id     = fin_cle.id
3081     and    mdl_cle.dnz_chr_id = fin_cle.dnz_chr_id
3082     and    mdl_cle.lse_id     = mdl_lse.id
3083     and    mdl_lse.lty_code   = 'ITEM'
3084     and    fin_kle.id         = fin_cle.id
3085     and    fin_tl.id          = fin_cle.id
3086     and    fin_tl.language    = USERENV('LANG')
3087     and    fin_cle.lse_id     = fin_lse.id
3088     and    fin_lse.lty_code   = 'FREE_FORM1'
3089     and    fin_cle.id         = fa_cle.cle_id
3090     and    fin_cle.dnz_chr_id = fa_cle.dnz_chr_id
3091     and    fa_kle.id          = fa_cle.id
3092     and    fa_cle.lse_id      = fa_lse.id
3093     and    fa_lse.lty_code    = 'FIXED_ASSET'
3094     and    fa_cle.id      = p_fa_cle_id
3095     and    fa_cle.dnz_chr_id  = p_chr_id;
3096 
3097     get_txl_rec get_txl_csr%ROWTYPE;
3098 
3099     CURSOR try_id_csr(p_try_name  OKL_TRX_TYPES_V.NAME%TYPE) IS
3100     SELECT id
3101     FROM   OKL_TRX_TYPES_tl
3102     WHERE  upper(name) = upper(p_try_name)
3103     AND    language = 'US';
3104 
3105     l_try_id  NUMBER;
3106 
3107     CURSOR c_fa_line_id(p_cle_id OKL_K_LINES_V.ID%TYPE
3108                         ,p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE)
3109     IS
3110     SELECT cle.id
3111     FROM OKC_K_LINES_V cle,
3112          OKC_LINE_STYLES_V lse
3113     WHERE cle.cle_id   = p_cle_id
3114     AND cle.dnz_chr_id = p_dnz_chr_id
3115     AND cle.lse_id     = lse.id
3116     AND lse.lty_code   = G_FA_LINE_LTY_CODE;
3117 
3118 --Added by dpsingh for LE uptake
3119  l_cntrct_number          OKC_K_HEADERS_B.CONTRACT_NUMBER%TYPE;
3120   l_legal_entity_id         NUMBER;
3121 
3122   BEGIN
3123     x_return_status  := OKL_API.G_RET_STS_SUCCESS;
3124     -- Call start_activity to create savepoint, check compatibility
3125     -- and initialize message list
3126     x_return_status := OKL_API.START_ACTIVITY (
3127                                l_api_name
3128                                ,p_init_msg_list
3129                                ,'_PVT'
3130                                ,x_return_status);
3131     -- Check if activity started successfully
3132     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3133        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3134     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3135        RAISE OKL_API.G_EXCEPTION_ERROR;
3136     END IF;
3137 
3138     Open get_txl_csr(p_fa_cle_id  => p_cle_id,
3139                      p_chr_id     => p_from_dnz_chr_id);
3140     Fetch get_txl_csr into get_txl_rec;
3141     IF get_txl_csr%NOTFOUND Then
3142         OKL_API.set_message(p_app_name      => G_APP_NAME,
3143                             p_msg_name      => G_NO_MATCHING_RECORD,
3144                             p_token1        => G_COL_NAME_TOKEN,
3145                             p_token1_value  => 'OKL_TXL_ASSETS_V record');
3146         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3147     Else
3148         --get try id
3149         Open  try_id_csr(p_try_name => 'Internal Asset Creation');
3150         Fetch try_id_csr into l_try_id;
3151         If try_id_csr%NOTFOUND then
3152             OKL_API.set_message(p_app_name     => G_APP_NAME,
3153                           p_msg_name     => G_NO_MATCHING_RECORD,
3154                           p_token1       => G_COL_NAME_TOKEN,
3155                           p_token1_value => 'OKL_TRX_TYPES_V.ID');
3156              RAISE OKL_API.G_EXCEPTION_ERROR;
3157         End If;
3158         Close try_id_csr;
3159 
3160         l_trxv_rec.try_id   := l_try_id;
3161         l_trxv_rec.tas_type := p_trans_type;
3162         l_trxv_rec.tsu_code := 'ENTERED';
3163         l_trxv_rec.date_trans_occurred := sysdate;
3164         --Added by dpsingh for LE Uptake
3165     l_legal_entity_id  := OKL_LEGAL_ENTITY_UTIL.get_khr_le_id(p_from_dnz_chr_id) ;
3166     IF  l_legal_entity_id IS NOT NULL THEN
3167        l_trxv_rec.legal_entity_id :=  l_legal_entity_id;
3168     ELSE
3169         -- get the contract number
3170        OPEN contract_num_csr(p_from_dnz_chr_id);
3171        FETCH contract_num_csr INTO l_cntrct_number;
3172        CLOSE contract_num_csr;
3173 	Okl_Api.set_message(p_app_name     => g_app_name,
3174                              p_msg_name     => 'OKL_LE_NOT_EXIST_CNTRCT',
3175 			     p_token1           =>  'CONTRACT_NUMBER',
3176 			     p_token1_value  =>  l_cntrct_number);
3177          RAISE OKL_API.G_EXCEPTION_ERROR;
3178     END IF;
3179         -- Now creating the new header record
3180         Create_asset_header(p_api_version    => p_api_version,
3181                             p_init_msg_list  => p_init_msg_list,
3182                             x_return_status  => x_return_status,
3183                             x_msg_count      => x_msg_count,
3184                             x_msg_data       => x_msg_data,
3185                             p_trxv_rec       => l_trxv_rec,
3186                             x_trxv_rec       => x_trxv_rec);
3187         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3188           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3189         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3190           RAISE OKL_API.G_EXCEPTION_ERROR;
3191         END IF;
3192 
3193         OPEN  c_fa_line_id(p_fin_cle_id,
3194                            p_to_dnz_chr_id);
3195         FETCH c_fa_line_id INTO l_talv_rec.kle_id;
3196         CLOSE c_fa_line_id;
3197 
3198         l_talv_rec.tal_type := p_trans_type;
3199 
3200         -- Now we should generate the Asset number
3201         IF p_trans_type NOT IN ('CRB','CRL','CSP','CRV','ALI') THEN
3202           x_return_status := generate_asset_number(x_asset_number => l_talv_rec.asset_number);
3203           IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
3204             OKL_API.set_message(p_app_name => G_APP_NAME,
3205                                 p_msg_name  => G_GEN_ASSET_NUMBER);
3206             RAISE OKL_API.G_EXCEPTION_ERROR;
3207           END IF;
3208         ELSE
3209           l_talv_rec.asset_number := get_txl_rec.ASSET_NUMBER;
3210         END IF;
3211 
3212         l_talv_rec.dnz_khr_id            := p_to_dnz_chr_id;
3213         l_talv_rec.tas_id                := x_trxv_rec.id;
3214         l_talv_rec.line_number           := 1;
3215         l_talv_rec.original_cost         := get_txl_rec.OEC;
3216         l_talv_rec.current_units         := get_txl_rec.UNITS;
3217         l_talv_rec.year_manufactured     := get_txl_rec.Year_of_Manufacture;
3218         l_talv_rec.Depreciation_Cost     := get_txl_rec.OEC;
3219 
3220         -- Now we are creating the new line record
3221         Create_asset_lines(p_api_version    => p_api_version,
3222                            p_init_msg_list  => p_init_msg_list,
3223                            x_return_status  => x_return_status,
3224                            x_msg_count      => x_msg_count,
3225                            x_msg_data       => x_msg_data,
3226                            p_talv_rec       => l_talv_rec,
3227                            x_talv_rec       => x_talv_rec);
3228         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3229           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3230         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3231           RAISE OKL_API.G_EXCEPTION_ERROR;
3232         END IF;
3233     End If;
3234     Close get_txl_csr;
3235     OKL_API.END_ACTIVITY (x_msg_count,
3236                           x_msg_data );
3237     EXCEPTION
3238     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3239     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3240                                l_api_name,
3241                                G_PKG_NAME,
3242                                'OKL_API.G_RET_STS_ERROR',
3243                                x_msg_count,
3244                                x_msg_data,
3245                                '_PVT');
3246     IF get_txl_csr%ISOPEN THEN
3247        CLOSE get_txl_csr;
3248     END IF;
3249     IF try_id_csr%ISOPEN THEN
3250        CLOSE try_id_csr;
3251     END IF;
3252     IF c_fa_line_id%ISOPEN THEN
3253        CLOSE c_fa_line_id;
3254     END IF;
3255     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3256     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
3257                               l_api_name,
3258                               G_PKG_NAME,
3259                               'OKL_API.G_RET_STS_UNEXP_ERROR',
3260                               x_msg_count,
3261                               x_msg_data,
3262                               '_PVT');
3263     IF get_txl_csr%ISOPEN THEN
3264         CLOSE get_txl_csr;
3265     END IF;
3266     IF try_id_csr%ISOPEN THEN
3267        CLOSE try_id_csr;
3268     END IF;
3269     IF c_fa_line_id%ISOPEN THEN
3270        CLOSE c_fa_line_id;
3271     END IF;
3272 
3273     WHEN OTHERS THEN
3274     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
3275                               l_api_name,
3276                               G_PKG_NAME,
3277                               'OTHERS',
3278                               x_msg_count,
3279                               x_msg_data,
3280                               '_PVT');
3281      IF get_txl_csr%ISOPEN THEN
3282         CLOSE get_txl_csr;
3283      END IF;
3284      IF try_id_csr%ISOPEN THEN
3285         CLOSE try_id_csr;
3286      END IF;
3287      IF c_fa_line_id%ISOPEN THEN
3288         CLOSE c_fa_line_id;
3289      END IF;
3290 END  Create_Asset_trx_txl_For_Loan;
3291 ---19-----------------------------------------------------------------------------------------------------------
3292 -- Local Procedures for creation of Txl Item Instance record
3293   PROCEDURE create_txl_itm_insts(
3294     p_api_version                  IN NUMBER,
3295     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3296     x_return_status                OUT NOCOPY VARCHAR2,
3297     x_msg_count                    OUT NOCOPY NUMBER,
3298     x_msg_data                     OUT NOCOPY VARCHAR2,
3299     p_itiv_rec                     IN itiv_rec_type,
3300     p_trans_type                   IN OKL_TRX_ASSETS.TAS_TYPE%TYPE,
3301     p_asset_number                 IN OKL_TXL_ASSETS_B.ASSET_NUMBER%TYPE,
3302     x_trxv_rec                     OUT NOCOPY trxv_rec_type,
3303     x_itiv_rec                     OUT NOCOPY itiv_rec_type) IS
3304 
3305     l_trxv_rec               trxv_rec_type;
3306     l_itiv_rec               itiv_rec_type;
3307     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_TXL_ITM_INSTS';
3308 
3309     --Added by dpsingh for LE uptake
3310     l_chr_id                      NUMBER;
3311     l_cntrct_number          OKC_K_HEADERS_B.CONTRACT_NUMBER%TYPE;
3312     l_legal_entity_id          NUMBER;
3313 
3314     BEGIN
3315     x_return_status   := OKL_API.G_RET_STS_SUCCESS;
3316     -- Call start_activity to create savepoint, check compatibility
3317     -- and initialize message list
3318     x_return_status := OKL_API.START_ACTIVITY (
3319                                l_api_name
3320                                ,p_init_msg_list
3321                                ,'_PVT'
3322                                ,x_return_status);
3323     -- Check if activity started successfully
3324     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3325        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3326     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3327        RAISE OKL_API.G_EXCEPTION_ERROR;
3328     END IF;
3329     -- Create New Header record and new Line record
3330     -- Before creating Header record
3331     -- we should make sure atleast the required record is given
3332 
3333     x_return_status := get_try_id(p_try_name => G_TRY_NAME,
3334                                   x_try_id   => l_trxv_rec.try_id);
3335     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3336        OKL_API.set_message(p_app_name     => G_APP_NAME,
3337                            p_msg_name     => G_NO_MATCHING_RECORD,
3338                            p_token1        => G_COL_NAME_TOKEN,
3339                            p_token1_value  => 'try id');
3340        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3341     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3342        OKL_API.set_message(p_app_name     => G_APP_NAME,
3343                            p_msg_name     => G_NO_MATCHING_RECORD,
3344                            p_token1        => G_COL_NAME_TOKEN,
3345                            p_token1_value  => 'try id');
3346        RAISE OKL_API.G_EXCEPTION_ERROR;
3347     END IF;
3348     l_trxv_rec.tsu_code            := 'ENTERED';
3349     l_trxv_rec.date_trans_occurred := sysdate;
3350     l_trxv_rec.tas_type            := p_trans_type;
3351 
3352      --Added by dpsingh for LE Uptake
3353     OPEN get_chr_id_csr(p_itiv_rec.kle_id);
3354     FETCH get_chr_id_csr INTO l_chr_id;
3355     CLOSE get_chr_id_csr;
3356     l_legal_entity_id  := OKL_LEGAL_ENTITY_UTIL.get_khr_le_id(l_chr_id) ;
3357     IF  l_legal_entity_id IS NOT NULL THEN
3358        l_trxv_rec.legal_entity_id :=  l_legal_entity_id;
3359     ELSE
3360         -- get the contract number
3361        OPEN contract_num_csr(l_chr_id);
3362        FETCH contract_num_csr INTO l_cntrct_number;
3363        CLOSE contract_num_csr;
3364 	Okl_Api.set_message(p_app_name     => g_app_name,
3365                              p_msg_name     => 'OKL_LE_NOT_EXIST_CNTRCT',
3366 			     p_token1           =>  'CONTRACT_NUMBER',
3367 			     p_token1_value  =>  l_cntrct_number);
3368          RAISE OKL_API.G_EXCEPTION_ERROR;
3369     END IF;
3370     -- Now creating the new header record
3371     Create_asset_header(p_api_version    => p_api_version,
3372                         p_init_msg_list  => p_init_msg_list,
3373                         x_return_status  => x_return_status,
3374                         x_msg_count      => x_msg_count,
3375                         x_msg_data       => x_msg_data,
3376                         p_trxv_rec       => l_trxv_rec,
3377                         x_trxv_rec       => x_trxv_rec);
3378     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3379        OKL_API.set_message(p_app_name     => G_APP_NAME,
3380                            p_msg_name     => G_TRX_ID);
3381        l_trxv_rec                     :=  x_trxv_rec;
3382        l_trxv_rec.tsu_code            := 'ERROR';
3383        Update_asset_header(p_api_version    => p_api_version,
3384                            p_init_msg_list  => p_init_msg_list,
3385                            x_return_status  => x_return_status,
3386                            x_msg_count      => x_msg_count,
3387                            x_msg_data       => x_msg_data,
3388                            p_trxv_rec       => l_trxv_rec,
3389                            x_trxv_rec       => x_trxv_rec);
3390        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3391            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3392        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3393            RAISE OKL_API.G_EXCEPTION_ERROR;
3394        END IF;
3395        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3396     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3397        OKL_API.set_message(p_app_name     => G_APP_NAME,
3398                            p_msg_name     => G_TRX_ID);
3399        l_trxv_rec                     :=  x_trxv_rec;
3400        l_trxv_rec.tsu_code            := 'ERROR';
3401        Update_asset_header(p_api_version    => p_api_version,
3402                            p_init_msg_list  => p_init_msg_list,
3403                            x_return_status  => x_return_status,
3404                            x_msg_count      => x_msg_count,
3405                            x_msg_data       => x_msg_data,
3406                            p_trxv_rec       => l_trxv_rec,
3407                            x_trxv_rec       => x_trxv_rec);
3408        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3409           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3410        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3411           RAISE OKL_API.G_EXCEPTION_ERROR;
3412        END IF;
3413        RAISE OKL_API.G_EXCEPTION_ERROR;
3414     END IF;
3415     -- Now we are creating the new line record
3416     l_itiv_rec                 := p_itiv_rec;
3417     l_itiv_rec.tas_id          := x_trxv_rec.id;
3418     IF (l_itiv_rec.tal_type = OKL_API.G_MISS_CHAR OR
3419        l_itiv_rec.tal_type IS NUll) THEN
3420        l_itiv_rec.tal_type       := p_trans_type;
3421     END IF;
3422     --Generate the Instance Number IB
3423     x_return_status := generate_instance_number_ib(x_instance_number_ib => l_itiv_rec.instance_number_ib);
3424     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3425       OKL_API.set_message(p_app_name => G_APP_NAME,
3426                          p_msg_name  => G_GEN_INST_NUM_IB);
3427       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3428     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3429       OKL_API.set_message(p_app_name => G_APP_NAME,
3430                           p_msg_name => G_GEN_INST_NUM_IB);
3431       RAISE OKL_API.G_EXCEPTION_ERROR;
3432     END IF;
3433     l_itiv_rec.instance_number_ib := nvl(p_asset_number,null)||'-'||l_itiv_rec.instance_number_ib;
3434     -- evaluate conditions, build outcomes for true conditions and
3435     -- put them on outcome queue
3436     create_txl_iti(p_api_version   => p_api_version,
3437                    p_init_msg_list => p_init_msg_list,
3438                    x_return_status => x_return_status,
3439                    x_msg_count     => x_msg_count,
3440                    x_msg_data      => x_msg_data,
3441                    p_itiv_rec      => l_itiv_rec,
3442                    x_itiv_rec      => x_itiv_rec);
3443     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3444        OKL_API.set_message(p_app_name     => G_APP_NAME,
3445                            p_msg_name     => G_ITI_ID);
3446        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3447     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3448        OKL_API.set_message(p_app_name     => G_APP_NAME,
3449                            p_msg_name     => G_ITI_ID);
3450        RAISE OKL_API.G_EXCEPTION_ERROR;
3451     END IF;
3452     OKL_API.END_ACTIVITY (x_msg_count,
3453                           x_msg_data );
3454   EXCEPTION
3455     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3456     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3457                                l_api_name,
3458                                G_PKG_NAME,
3459                                'OKL_API.G_RET_STS_ERROR',
3460                                x_msg_count,
3461                                x_msg_data,
3462                                '_PVT');
3463     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3464     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
3465                               l_api_name,
3466                               G_PKG_NAME,
3467                               'OKL_API.G_RET_STS_UNEXP_ERROR',
3468                               x_msg_count,
3469                               x_msg_data,
3470                               '_PVT');
3471     WHEN OTHERS THEN
3472     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
3473                               l_api_name,
3474                               G_PKG_NAME,
3475                               'OTHERS',
3476                               x_msg_count,
3477                               x_msg_data,
3478                               '_PVT');
3479   END create_txl_itm_insts;
3480 -------------------------------------------------------------------------------------------------------
3481   PROCEDURE Create_Asset_header_instance(
3482             p_api_version    IN  NUMBER,
3483             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
3484             x_return_status  OUT NOCOPY VARCHAR2,
3485             x_msg_count      OUT NOCOPY NUMBER,
3486             x_msg_data       OUT NOCOPY VARCHAR2,
3487             p_cle_id         IN  OKC_K_LINES_V.ID%TYPE,
3488             p_new_cle_id     IN  OKC_K_LINES_V.ID%TYPE,
3489             p_dnz_chr_id     IN  OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
3490             p_trans_type     IN OKL_TRX_ASSETS.TAS_TYPE%TYPE,
3491             p_asset_number   IN OKL_TXL_ASSETS_B.ASSET_NUMBER%TYPE,
3492             p_fin_cle_id     IN  OKC_K_LINES_V.ID%TYPE,
3493             x_trxv_rec       OUT NOCOPY trxv_rec_type,
3494             x_itiv_rec       OUT NOCOPY itiv_rec_type)
3495   IS
3496     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_HEADER_LINE_DETAILS';
3497     l_trxv_rec               trxv_rec_type;
3498     l_itiv_rec               itiv_rec_type;
3499 
3500     CURSOR c_ib_line_id(p_cle_id OKL_K_LINES_V.ID%TYPE
3501                         ,p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE)
3502     IS
3503     SELECT cle.id
3504     FROM OKC_K_LINES_V cle,
3505          OKC_LINE_STYLES_V lse
3506     WHERE cle.dnz_chr_id = p_dnz_chr_id
3507     AND cle.lse_id = lse.id
3508     AND lse.lty_code = G_IB_LINE_LTY_CODE
3509     AND cle.cle_id in (SELECT cle.id
3510                        FROM OKC_K_LINES_V cle,
3511                             OKC_LINE_STYLES_V lse
3512                        WHERE cle.cle_id = p_cle_id
3513                        AND cle.lse_id = lse.id
3514                        AND lse.lty_code = G_INST_LINE_LTY_CODE
3515                        AND cle.dnz_chr_id = p_dnz_chr_id);
3516   --Added by dpsingh for LE uptake
3517   l_cntrct_number          OKC_K_HEADERS_B.CONTRACT_NUMBER%TYPE;
3518   l_legal_entity_id          NUMBER;
3519 
3520   BEGIN
3521     x_return_status  := OKL_API.G_RET_STS_SUCCESS;
3522     -- Call start_activity to create savepoint, check compatibility
3523     -- and initialize message list
3524     x_return_status := OKL_API.START_ACTIVITY (
3525                                l_api_name
3526                                ,p_init_msg_list
3527                                ,'_PVT'
3528                                ,x_return_status);
3529     -- Check if activity started successfully
3530     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3531        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3532     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3533        RAISE OKL_API.G_EXCEPTION_ERROR;
3534     END IF;
3535     -- Get the TAL Rec
3536     x_return_status := get_itiv_rec(p_kle_id   => p_cle_id,
3537                                     x_itiv_rec => l_itiv_rec);
3538     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3539        OKL_API.set_message(p_app_name     => G_APP_NAME,
3540                            p_msg_name     => G_NO_MATCHING_RECORD,
3541                            p_token1       => G_COL_NAME_TOKEN,
3542                            p_token1_value => 'OKL_TXL_ITM_INSTS_V record');
3543        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3544     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3545        OKL_API.set_message(p_app_name     => G_APP_NAME,
3546                            p_msg_name     => G_NO_MATCHING_RECORD,
3547                            p_token1       => G_COL_NAME_TOKEN,
3548                            p_token1_value => 'OKL_TXL_ITM_INSTS_V record');
3549        RAISE OKL_API.G_EXCEPTION_ERROR;
3550     END IF;
3551     -- Since the above get rec itiv will get the old kle_id
3552     -- w.r.t p_from cle_id(top Line).
3553     -- but We have to replace the same with new install base id
3554     -- with respect to new  x_cle_id(top line).
3555     OPEN  c_ib_line_id(p_fin_cle_id,
3556                        p_dnz_chr_id);
3557     FETCH c_ib_line_id INTO l_itiv_rec.kle_id;
3558     CLOSE c_ib_line_id;
3559     -- Get the TRX Rec
3560     x_return_status := get_tasv_rec(p_tas_id   => l_itiv_rec.tas_id,
3561                                     x_trxv_rec => l_trxv_rec);
3562     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3563        OKL_API.set_message(p_app_name     => G_APP_NAME,
3564                            p_msg_name     => G_NO_MATCHING_RECORD,
3565                            p_token1        => G_COL_NAME_TOKEN,
3566                            p_token1_value  => 'OKL_TRX_ASSETS record');
3567        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3568     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3569        OKL_API.set_message(p_app_name     => G_APP_NAME,
3570                            p_msg_name     => G_NO_MATCHING_RECORD,
3571                            p_token1        => G_COL_NAME_TOKEN,
3572                            p_token1_value  => 'OKL_TRX_ASSETS record');
3573        RAISE OKL_API.G_EXCEPTION_ERROR;
3574     END IF;
3575     l_trxv_rec.tsu_code            := 'ENTERED';
3576     l_trxv_rec.date_trans_occurred := sysdate;
3577     l_trxv_rec.tas_type            := p_trans_type;
3578 
3579     --Added by dpsingh for LE Uptake
3580     l_legal_entity_id  := OKL_LEGAL_ENTITY_UTIL.get_khr_le_id(p_dnz_chr_id) ;
3581     IF  l_legal_entity_id IS NOT NULL THEN
3582        l_trxv_rec.legal_entity_id :=  l_legal_entity_id;
3583     ELSE
3584         -- get the contract number
3585        OPEN contract_num_csr(p_dnz_chr_id);
3586        FETCH contract_num_csr INTO l_cntrct_number;
3587        CLOSE contract_num_csr;
3588 	Okl_Api.set_message(p_app_name     => g_app_name,
3589                              p_msg_name     => 'OKL_LE_NOT_EXIST_CNTRCT',
3590 			     p_token1           =>  'CONTRACT_NUMBER',
3591 			     p_token1_value  =>  l_cntrct_number);
3592          RAISE OKL_API.G_EXCEPTION_ERROR;
3593     END IF;
3594     -- Now creating the new header record
3595     Create_asset_header(p_api_version    => p_api_version,
3596                         p_init_msg_list  => p_init_msg_list,
3597                         x_return_status  => x_return_status,
3598                         x_msg_count      => x_msg_count,
3599                         x_msg_data       => x_msg_data,
3600                         p_trxv_rec       => l_trxv_rec,
3601                         x_trxv_rec       => x_trxv_rec);
3602     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3603        OKL_API.set_message(p_app_name     => G_APP_NAME,
3604                            p_msg_name     => G_TRX_ID);
3605        l_trxv_rec                     :=  x_trxv_rec;
3606        l_trxv_rec.tsu_code            := 'ERROR';
3607        Update_asset_header(p_api_version    => p_api_version,
3608                            p_init_msg_list  => p_init_msg_list,
3609                            x_return_status  => x_return_status,
3610                            x_msg_count      => x_msg_count,
3611                            x_msg_data       => x_msg_data,
3612                            p_trxv_rec       => l_trxv_rec,
3613                            x_trxv_rec       => x_trxv_rec);
3614        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3615            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3616        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3617            RAISE OKL_API.G_EXCEPTION_ERROR;
3618        END IF;
3619        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3620     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3621        OKL_API.set_message(p_app_name     => G_APP_NAME,
3622                            p_msg_name     => G_TRX_ID);
3623        l_trxv_rec                     :=  x_trxv_rec;
3624        l_trxv_rec.tsu_code            := 'ERROR';
3625        Update_asset_header(p_api_version    => p_api_version,
3626                            p_init_msg_list  => p_init_msg_list,
3627                            x_return_status  => x_return_status,
3628                            x_msg_count      => x_msg_count,
3629                            x_msg_data       => x_msg_data,
3630                            p_trxv_rec       => l_trxv_rec,
3631                            x_trxv_rec       => x_trxv_rec);
3632        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3633           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3634        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3635           RAISE OKL_API.G_EXCEPTION_ERROR;
3636        END IF;
3637        RAISE OKL_API.G_EXCEPTION_ERROR;
3638     END IF;
3639     l_itiv_rec.tal_type := p_trans_type;
3640     l_itiv_rec.tas_id   := x_trxv_rec.id;
3641     --Generate the Instance Number IB
3642     x_return_status := generate_instance_number_ib(x_instance_number_ib => l_itiv_rec.instance_number_ib);
3643     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3644       OKL_API.set_message(p_app_name => G_APP_NAME,
3645                          p_msg_name  => G_GEN_INST_NUM_IB);
3646       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3647     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3648       OKL_API.set_message(p_app_name => G_APP_NAME,
3649                           p_msg_name => G_GEN_INST_NUM_IB);
3650       RAISE OKL_API.G_EXCEPTION_ERROR;
3651     END IF;
3652     l_itiv_rec.kle_id := p_new_cle_id;
3653     l_itiv_rec.dnz_cle_id := p_fin_cle_id;
3654     l_itiv_rec.instance_number_ib := nvl(p_asset_number,null)||'-'||l_itiv_rec.instance_number_ib;
3655     -- Now we are creating the new item instance record
3656     create_txl_iti(p_api_version    => p_api_version,
3657                    p_init_msg_list  => p_init_msg_list,
3658                    x_return_status  => x_return_status,
3659                    x_msg_count      => x_msg_count,
3660                    x_msg_data       => x_msg_data,
3661                    p_itiv_rec       => l_itiv_rec,
3662                    x_itiv_rec       => x_itiv_rec);
3663     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3664        OKL_API.set_message(p_app_name     => G_APP_NAME,
3665                            p_msg_name     => G_ITI_ID);
3666        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3667     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3668        OKL_API.set_message(p_app_name     => G_APP_NAME,
3669                            p_msg_name     => G_ITI_ID);
3670        RAISE OKL_API.G_EXCEPTION_ERROR;
3671     END IF;
3672     OKL_API.END_ACTIVITY (x_msg_count,
3673                           x_msg_data );
3674   EXCEPTION
3675     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3676     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3677                                l_api_name,
3678                                G_PKG_NAME,
3679                                'OKL_API.G_RET_STS_ERROR',
3680                                x_msg_count,
3681                                x_msg_data,
3682                                '_PVT');
3683     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3684     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
3685                               l_api_name,
3686                               G_PKG_NAME,
3687                               'OKL_API.G_RET_STS_UNEXP_ERROR',
3688                               x_msg_count,
3689                               x_msg_data,
3690                               '_PVT');
3691     WHEN OTHERS THEN
3692     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
3693                               l_api_name,
3694                               G_PKG_NAME,
3695                               'OTHERS',
3696                               x_msg_count,
3697                               x_msg_data,
3698                               '_PVT');
3699     IF c_ib_line_id%ISOPEN THEN
3700        CLOSE c_ib_line_id;
3701     END IF;
3702   END Create_Asset_header_instance;
3703 ----------------------------------------------------------------------------------------------
3704 --Bug#3143522    : Subsidies
3705 --Name    : Copy_Party_Payment_dtls
3706 --Purpose : To copy party payment details linked to a subsidy line
3707 --Copy of aubsidy line vendor payment details
3708 --*******THIS CODE WILL NOT BE CALLED AS Copy of refund details is taken care in OKL
3709 --*******Base COPY API (OKL_COPY_CONTRACT_PUB)
3710 ----------------------------------------------------------------------------------------------
3711 PROCEDURE CREATE_PARTY_PYMT_DTLS (p_api_version      in number,
3712                                   p_init_msg_list    in varchar2,
3713                                   x_return_status    out nocopy varchar2,
3714                                   x_msg_count        OUT NOCOPY NUMBER,
3715                                   x_msg_data         OUT NOCOPY VARCHAR2,
3716                                   p_from_cle_id      in number,
3717                                   p_to_cle_id        in number) is
3718 
3719 l_return_status        VARCHAR2(1)  default OKL_API.G_RET_STS_SUCCESS;
3720 l_api_name             CONSTANT varchar2(30) := 'CREATE_PARTY_PYMT_DTLS';
3721 l_api_version          CONSTANT NUMBER := 1.0;
3722 
3723 
3724 --cursor to fetch party payment details on source line
3725 cursor l_ppyd_csr (p_from_cle_id in number) is
3726 select  ppyd.cpl_id
3727        ,ppyd.vendor_id
3728        ,ppyd.PAY_SITE_ID
3729        ,ppyd.PAYMENT_TERM_ID
3730        ,ppyd.PAYMENT_METHOD_CODE
3731        ,ppyd.PAY_GROUP_CODE
3732        ,ppyd.ATTRIBUTE_CATEGORY
3733        ,ppyd.ATTRIBUTE1
3734        ,ppyd.ATTRIBUTE2
3735        ,ppyd.ATTRIBUTE3
3736        ,ppyd.ATTRIBUTE4
3737        ,ppyd.ATTRIBUTE5
3738        ,ppyd.ATTRIBUTE6
3739        ,ppyd.ATTRIBUTE7
3740        ,ppyd.ATTRIBUTE8
3741        ,ppyd.ATTRIBUTE9
3742        ,ppyd.ATTRIBUTE10
3743        ,ppyd.ATTRIBUTE11
3744        ,ppyd.ATTRIBUTE12
3745        ,ppyd.ATTRIBUTE13
3746        ,ppyd.ATTRIBUTE14
3747        ,ppyd.ATTRIBUTE15
3748        ,cleb_sub.id subsidy_cle_id
3749 from   okl_party_payment_dtls ppyd,
3750        okc_k_party_roles_b    cplb,
3751        okc_k_lines_b          cleb_sub
3752 where  ppyd.cpl_id        = cplb.id
3753 and    cplb.cle_id        = cleb_sub.id
3754 and    cleb_sub.cle_id    = p_from_cle_id
3755 and    cleb_sub.sts_code  <> 'ABANDONED';
3756 
3757 l_ppyd_rec l_ppyd_csr%rowtype;
3758 
3759 --cursor to get party role record from new line
3760 cursor l_cplb_csr (p_to_cle_id     in number,
3761                    p_parent_cle_id in number)is
3762 select cplb.id
3763 from   okc_k_party_roles_b    cplb,
3764        okc_k_lines_b          cleb_sub
3765 where  cplb.cle_id               = cleb_sub.id
3766 and    cleb_sub.cle_id           = p_to_cle_id
3767 and    cleb_sub.orig_system_id1  = p_parent_cle_id
3768 and    cleb_sub.dnz_chr_id       = cleb_sub.dnz_chr_id
3769 and    cleb_sub.sts_code   <> 'ABANDONED';
3770 
3771 l_new_cpl_id number;
3772 l_ppydv_rec    okl_pyd_pvt.ppydv_rec_type;
3773 x_ppydv_rec    okl_pyd_pvt.ppydv_rec_type;
3774 
3775 begin
3776 
3777     x_return_status := OKL_API.G_RET_STS_SUCCESS;
3778     -- Call start_activity to create savepoint, check compatibility
3779     -- and initialize message list
3780     x_return_status := OKL_API.START_ACTIVITY (
3781                                l_api_name
3782                                ,p_init_msg_list
3783                                ,'_PVT'
3784                                ,x_return_status);
3785     -- Check if activity started successfully
3786     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3787        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3788     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3789        RAISE OKL_API.G_EXCEPTION_ERROR;
3790     END IF;
3791 
3792 
3793      open l_ppyd_csr(p_from_cle_id => p_from_cle_id);
3794      Loop
3795          Fetch l_ppyd_csr into l_ppyd_rec;
3796          Exit when l_ppyd_csr%NOTFOUND;
3797          open l_cplb_csr(p_to_cle_id => p_to_cle_id,
3798                          p_parent_cle_id => l_ppyd_rec.subsidy_cle_id);
3799          Fetch l_cplb_csr into  l_new_cpl_id;
3800          If l_cplb_csr%NOTFOUND then
3801              null;
3802          Else
3803              l_ppydv_rec.cpl_id               := l_new_cpl_id;
3804              l_ppydv_rec.vendor_id            := l_ppyd_rec.vendor_id;
3805              l_ppydv_rec.pay_site_id          := l_ppyd_rec.pay_site_id;
3806              l_ppydv_rec.PAYMENT_TERM_ID      := l_ppyd_rec.PAYMENT_TERM_ID;
3807              l_ppydv_rec.PAYMENT_METHOD_CODE  := l_ppyd_rec.PAYMENT_METHOD_CODE;
3808              l_ppydv_rec.PAY_GROUP_CODE       := l_ppyd_rec.PAY_GROUP_CODE;
3809              l_ppydv_rec.ATTRIBUTE_CATEGORY   := l_ppyd_rec.ATTRIBUTE_CATEGORY;
3810              l_ppydv_rec.ATTRIBUTE1           := l_ppyd_rec.ATTRIBUTE1;
3811              l_ppydv_rec.ATTRIBUTE2           := l_ppyd_rec.ATTRIBUTE2;
3812              l_ppydv_rec.ATTRIBUTE3           := l_ppyd_rec.ATTRIBUTE3;
3813              l_ppydv_rec.ATTRIBUTE4           := l_ppyd_rec.ATTRIBUTE4;
3814              l_ppydv_rec.ATTRIBUTE5           := l_ppyd_rec.ATTRIBUTE5;
3815              l_ppydv_rec.ATTRIBUTE6           := l_ppyd_rec.ATTRIBUTE6;
3816              l_ppydv_rec.ATTRIBUTE7           := l_ppyd_rec.ATTRIBUTE7;
3817              l_ppydv_rec.ATTRIBUTE8           := l_ppyd_rec.ATTRIBUTE8;
3818              l_ppydv_rec.ATTRIBUTE9           := l_ppyd_rec.ATTRIBUTE9;
3819              l_ppydv_rec.ATTRIBUTE10          := l_ppyd_rec.ATTRIBUTE10;
3820              l_ppydv_rec.ATTRIBUTE11          := l_ppyd_rec.ATTRIBUTE11;
3821              l_ppydv_rec.ATTRIBUTE12          := l_ppyd_rec.ATTRIBUTE12;
3822              l_ppydv_rec.ATTRIBUTE13          := l_ppyd_rec.ATTRIBUTE13;
3823              l_ppydv_rec.ATTRIBUTE14          := l_ppyd_rec.ATTRIBUTE14;
3824              l_ppydv_rec.ATTRIBUTE15          := l_ppyd_rec.ATTRIBUTE15;
3825 
3826              -------------------------------------------------------
3827              --call API to create record
3828              -------------------------------------------------------
3829              OKL_PYD_PVT.Insert_Row
3830                   (p_api_version    => p_api_version,
3831                    p_init_msg_list  => p_init_msg_list,
3832                    x_return_status  => x_return_status,
3833                    x_msg_count      => x_msg_count,
3834                    x_msg_data       => x_msg_data,
3835                    p_ppydv_rec      => l_ppydv_rec,
3836                    x_ppydv_rec      => x_ppydv_rec);
3837 
3838              IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3839                  RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3840              ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3841                  RAISE OKL_API.G_EXCEPTION_ERROR;
3842              END IF;
3843         End If;
3844         close l_cplb_csr;
3845     End Loop;
3846     close l_ppyd_csr;
3847     OKL_API.END_ACTIVITY (x_msg_count,x_msg_data );
3848     EXCEPTION
3849     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3850     If l_ppyd_csr%ISOPEN then
3851         close l_ppyd_csr;
3852     End If;
3853     If l_cplb_csr%ISOPEN then
3854         close l_cplb_csr;
3855     End If;
3856     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
3857                                l_api_name,
3858                                G_PKG_NAME,
3859                                'OKL_API.G_RET_STS_ERROR',
3860                                x_msg_count,
3861                                x_msg_data,
3862                                '_PVT');
3863     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3864     If l_ppyd_csr%ISOPEN then
3865         close l_ppyd_csr;
3866     End If;
3867     If l_cplb_csr%ISOPEN then
3868         close l_cplb_csr;
3869     End If;
3870     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
3871                               l_api_name,
3872                               G_PKG_NAME,
3873                               'OKL_API.G_RET_STS_UNEXP_ERROR',
3874                               x_msg_count,
3875                               x_msg_data,
3876                               '_PVT');
3877     WHEN OTHERS THEN
3878     If l_ppyd_csr%ISOPEN then
3879         close l_ppyd_csr;
3880     End If;
3881     If l_cplb_csr%ISOPEN then
3882         close l_cplb_csr;
3883     End If;
3884     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
3885                               l_api_name,
3886                               G_PKG_NAME,
3887                               'OTHERS',
3888                               x_msg_count,
3889                               x_msg_data,
3890                               '_PVT');
3891 end create_party_pymt_dtls;
3892 ---------------
3893 --Bug# 2994971
3894 ---------------
3895   PROCEDURE populate_insurance_category(p_api_version   IN NUMBER,
3896                                         p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
3897                                         x_return_status OUT NOCOPY VARCHAR2,
3898                                         x_msg_count     OUT NOCOPY NUMBER,
3899                                         x_msg_data      OUT NOCOPY VARCHAR2,
3900                                         p_cle_id        IN  NUMBER
3901                                         ) IS
3902 
3903   l_api_name   CONSTANT VARCHAR2(30) := 'POPULATE_INS_CATEGORY';
3904 
3905   --cursor to get inventory item details
3906   cursor l_cleb_csr (p_cle_id in number) is
3907   select kle_fin.item_insurance_category,
3908          cim_model.object1_id1,
3909          cim_model.object1_id2
3910   from   okc_k_items cim_model,
3911          okc_k_lines_b cleb_model,
3912          okc_line_styles_b lseb_model,
3913          okl_k_lines   kle_fin
3914   where  cim_model.cle_id    = cleb_model.id
3915   and    cleb_model.cle_id   = p_cle_id
3916   and    lseb_model.id       = cleb_model.lse_id
3917   and    lseb_model.lty_code = 'ITEM'
3918   and    kle_fin.id          = p_cle_id;
3919 
3920 
3921   l_cleb_rec   l_cleb_csr%ROWTYPE;
3922 
3923   --cursor to get asset category
3924   cursor l_msi_csr(p_inv_item_id in number,
3925                    p_inv_org_id  in number) is
3926   select msi.asset_category_id
3927   from   mtl_system_items msi
3928   where  msi.organization_id   = p_inv_org_id
3929   and    msi.inventory_item_id = p_inv_item_id;
3930 
3931   l_asset_category_id mtl_system_items.asset_category_id%TYPE default NULL;
3932   l_clev_rec  okl_okc_migration_pvt.clev_rec_type;
3933   l_klev_rec  okl_contract_pub.klev_rec_type;
3934   lx_clev_rec  okl_okc_migration_pvt.clev_rec_type;
3935   lx_klev_rec  okl_contract_pub.klev_rec_type;
3936 
3937   l_inv_item_id  number;
3938   l_inv_org_id   number;
3939 
3940 
3941   BEGIN
3942 
3943     x_return_status          := OKL_API.G_RET_STS_SUCCESS;
3944     -- Call start_activity to create savepoint, check compatibility
3945     -- and initialize message list
3946     x_return_status := OKL_API.START_ACTIVITY (l_api_name
3947                                                ,p_init_msg_list
3948                                                ,'_PVT'
3949                                                ,x_return_status);
3950     -- Check if activity started successfully
3951     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3952        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3953     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
3954        RAISE OKL_API.G_EXCEPTION_ERROR;
3955     END IF;
3956 
3957     --fetch inv item details
3958     open l_cleb_csr(p_cle_id => p_cle_id);
3959     fetch l_cleb_csr into l_cleb_rec;
3960     if l_cleb_csr%NOTFOUND then
3961         null;
3962     end if;
3963     close l_cleb_csr;
3964 
3965     --------------------------------------------------------------------------
3966     --if inv item id and org id are found and item_insurance_category is null :
3967     ---------------------------------------------------------------------------
3968     if nvl(l_cleb_rec.object1_id1,okl_api.g_miss_char) <> OKL_API.G_MISS_CHAR and
3969        nvl(l_cleb_rec.object1_id2,okl_api.g_miss_char) <> OKL_API.G_MISS_CHAR and
3970        nvl(l_cleb_rec.item_insurance_category,okl_api.g_miss_num) = OKL_API.G_MISS_NUM then
3971 
3972 
3973         l_inv_item_id := to_number(l_cleb_rec.object1_id1);
3974         l_inv_org_id  := to_number(l_cleb_rec.object1_id2);
3975 
3976         --fetch asset category
3977         l_asset_category_id := NULL;
3978         open l_msi_csr (p_inv_item_id => l_inv_item_id,
3979                         p_inv_org_id  => l_inv_org_id);
3980         fetch l_msi_csr into l_asset_category_id;
3981         if l_msi_csr%NOTFOUND then
3982             null;
3983         end if;
3984         close l_msi_csr;
3985 
3986 
3987         l_clev_rec.id := p_cle_id;
3988         l_klev_rec.id := p_cle_id;
3989         l_klev_rec.item_insurance_category := l_asset_category_id;
3990 
3991         okl_contract_pub.update_contract_line(
3992                          p_api_version   => p_api_version,
3993                          p_init_msg_list => p_init_msg_list,
3994                          x_return_status => x_return_status,
3995                          x_msg_count     => x_msg_count,
3996                          x_msg_data      => x_msg_data,
3997                          p_clev_rec      => l_clev_rec,
3998                          p_klev_rec      => l_klev_rec,
3999                          x_clev_rec      => lx_clev_rec,
4000                          x_klev_rec      => lx_klev_rec
4001                          );
4002 
4003         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4004             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4005         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4006             RAISE OKL_API.G_EXCEPTION_ERROR;
4007         END IF;
4008     End If;
4009 
4010     OKL_API.END_ACTIVITY (x_msg_count,
4011                           x_msg_data );
4012   EXCEPTION
4013     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4014     if l_msi_csr%ISOPEN then
4015        close l_msi_csr;
4016     end if;
4017     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4018                                l_api_name,
4019                                G_PKG_NAME,
4020                                'OKL_API.G_RET_STS_ERROR',
4021                                x_msg_count,
4022                                x_msg_data,
4023                                '_PVT');
4024     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4025     if l_msi_csr%ISOPEN then
4026        close l_msi_csr;
4027     end if;
4028     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4029                                l_api_name,
4030                                G_PKG_NAME,
4031                                'OKL_API.G_RET_STS_UNEXP_ERROR',
4032                                x_msg_count,
4033                                x_msg_data,
4034                                '_PVT');
4035     WHEN OTHERS THEN
4036     if l_msi_csr%ISOPEN then
4037        close l_msi_csr;
4038     end if;
4039     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4040                               l_api_name,
4041                               G_PKG_NAME,
4042                               'OTHERS',
4043                               x_msg_count,
4044                               x_msg_data,
4045                               '_PVT');
4046 End POPULATE_INSURANCE_CATEGORY;
4047 -------------------
4048 --Bug# 2994971
4049 ------------------
4050 
4051 -----------------------------------------------------------------------------------------------
4052 --------------------------- Main Process for Copy of Asset Line -------------------------------
4053 -----------------------------------------------------------------------------------------------
4054   Procedure copy_asset_lines(
4055             p_api_version        IN  NUMBER,
4056             p_init_msg_list      IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
4057             x_return_status      OUT NOCOPY VARCHAR2,
4058             x_msg_count          OUT NOCOPY NUMBER,
4059             x_msg_data           OUT NOCOPY VARCHAR2,
4060             P_from_cle_id        IN  NUMBER,
4061             p_to_cle_id          IN  NUMBER DEFAULT OKL_API.G_MISS_NUM,
4062             p_to_chr_id          IN  NUMBER,
4063             p_to_template_yn	 IN  VARCHAR2,
4064             p_copy_reference	 IN  VARCHAR2,
4065             p_copy_line_party_yn IN  VARCHAR2,
4066             p_renew_ref_yn       IN  VARCHAR2,
4067             p_trans_type         IN  VARCHAR2,
4068             x_cle_id             OUT NOCOPY NUMBER) IS
4069     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_COPY_ASSETS';
4070     ln_txl_rec               NUMBER := 0;
4071     ln_iti_rec               NUMBER := 0;
4072     lv_deal_type             OKL_K_HEADERS_V.DEAL_TYPE%TYPE;
4073     ln_oec                   OKL_K_LINES_V.OEC%TYPE;
4074     l_from_fa_kle_id         OKL_K_LINES_V.ID%TYPE;
4075     l_from_ib_kle_id         OKL_K_LINES_V.ID%TYPE;
4076     l_from_dnz_chr_id        OKC_K_LINES_V.DNZ_CHR_ID%TYPE;
4077     ln_cle_id                OKL_K_LINES_V.ID%TYPE;
4078     l_dummy                  NUMBER := 0;
4079     l_txdv_tbl               txdv_tbl_type;
4080     l_talv_rec               talv_rec_type;
4081     l_itiv_rec               itiv_rec_type;
4082     lx_asset_trxv_rec        trxv_rec_type;
4083     lx_instance_trxv_rec     trxv_rec_type;
4084     lx_txdv_tbl              txdv_tbl_type;
4085     lx_txlv_rec              talv_rec_type;
4086     lx_itiv_rec              itiv_rec_type;
4087     l_txdv_rec               txdv_rec_type;
4088     lx_txdv_rec              txdv_rec_type;
4089     l_clev_rec               clev_rec_type;
4090     l_klev_rec               klev_rec_type;
4091     lx_clev_rec              clev_rec_type;
4092     lx_klev_rec              klev_rec_type;
4093     l_fa_clev_rec            clev_rec_type;
4094     l_fa_klev_rec            klev_rec_type;
4095     lx_fa_clev_rec           clev_rec_type;
4096     lx_fa_klev_rec           klev_rec_type;
4097 
4098     ln_txd_line_number       NUMBER := 0;
4099     lv_gen_asset_number      OKL_TXL_ASSETS_B.ASSET_NUMBER%TYPE;
4100     l_fa_object1_id1         OKC_K_ITEMS_V.OBJECT1_ID1%TYPE;
4101     l_fa_object1_id2         OKC_K_ITEMS_V.OBJECT1_ID2%TYPE;
4102     l_ib_object1_id1         OKC_K_ITEMS_V.OBJECT1_ID1%TYPE;
4103     l_ib_object1_id2         OKC_K_ITEMS_V.OBJECT1_ID2%TYPE;
4104     lt_ib_id_tbl             g_ib_id_tbl;
4105     lt_new_ib_id_tbl         g_ib_id_tbl;
4106     lt_ib_item_tbl           g_ib_item_tbl;
4107     l_cimv_rec               cimv_rec_type;
4108     lx_cimv_rec              cimv_rec_type;
4109     i                        NUMBER := 0;
4110     j                        NUMBER := 0;
4111 
4112     CURSOR l_chr_csr( cleId NUMBER ) IS
4113     Select khr.id,
4114            khr.authoring_org_id,
4115 	   khr.currency_code,
4116 	   khr.start_date
4117     From OKL_K_LINES_FULL_V kle,
4118          OKL_K_HEADERS_FULL_V KHR
4119     Where kle.id = cleId
4120       and KHR.ID = KLE.DNZ_CHR_ID;
4121 
4122     l_chr_rec l_chr_csr%ROWTYPE;
4123     l_func_curr_code OKL_K_HEADERS_FULL_V.CURRENCY_CODE%TYPE;
4124     l_chr_curr_code  OKL_K_HEADERS_FULL_V.CURRENCY_CODE%TYPE;
4125 
4126     x_contract_currency		okl_k_headers_full_v.currency_code%TYPE;
4127     x_currency_conversion_type	okl_k_headers_full_v.currency_conversion_type%TYPE;
4128     x_currency_conversion_rate	okl_k_headers_full_v.currency_conversion_rate%TYPE;
4129     x_currency_conversion_date	okl_k_headers_full_v.currency_conversion_date%TYPE;
4130 
4131     CURSOR c_check_txl_rec(p_fa_kle_id   OKL_K_LINES_V.ID%TYPE)
4132     IS
4133     SELECT 1
4134     FROM DUAL
4135     WHERE EXISTS (SELECT '1'
4136                   FROM OKL_TXL_ASSETS_V
4137                   WHERE kle_Id = p_fa_kle_id);
4138 
4139     CURSOR c_check_iti_rec(p_ib_kle_id   OKL_K_LINES_V.ID%TYPE)
4140     IS
4141     SELECT 1
4142     FROM DUAL
4143     WHERE EXISTS (SELECT '1'
4144                   FROM OKL_TXL_ITM_INSTS_V
4145                   WHERE kle_id = p_ib_kle_id);
4146 
4147     CURSOR c_asset_info(p_object1_id1 OKC_K_ITEMS_V.OBJECT1_ID1%TYPE,
4148                         p_object1_id2 OKC_K_ITEMS_V.OBJECT1_ID2%TYPE) IS
4149     SELECT *
4150     FROM OKX_ASSETS_V
4151     WHERE id1 = p_object1_id1
4152     AND id2  = p_object1_id2;
4153 
4154     CURSOR c_asset_loc_info(p_asset_id OKX_AST_DST_HST_V.ASSET_ID%TYPE) IS
4155     SELECT  location_id
4156     FROM OKX_AST_DST_HST_V
4157     WHERE asset_id = p_asset_id
4158     AND transaction_header_id_out is null
4159     AND sysdate between start_date_active and nvl(end_date_active,sysdate+1)
4160     AND rownum < 2;
4161 
4162     CURSOR c_asset_details_info(p_object1_id1 OKX_AST_BKS_V.ID1%TYPE) IS
4163     SELECT *
4164     FROM OKX_AST_BKS_V
4165     WHERE id1 = p_object1_id1
4166     AND book_class = 'TAX';
4167 
4168     CURSOR c_ib_info(p_object1_id1 OKC_K_ITEMS_V.OBJECT1_ID1%TYPE,
4169                      p_object1_id2 OKC_K_ITEMS_V.OBJECT1_ID2%TYPE) IS
4170     SELECT *
4171     FROM OKX_INSTALL_ITEMS_V
4172     WHERE id1 = p_object1_id1
4173     AND id2  = p_object1_id2;
4174 
4175     CURSOR c_new_fa_line_id(p_cle_id OKL_K_LINES_V.ID%TYPE
4176                             ,p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE)
4177     IS
4178     SELECT cle.id
4179     FROM OKC_K_LINES_V cle,
4180          OKC_LINE_STYLES_V lse
4181     WHERE cle.cle_id = p_cle_id
4182     AND cle.dnz_chr_id = p_dnz_chr_id
4183     AND cle.lse_id = lse.id
4184     AND lse.lty_code = G_FA_LINE_LTY_CODE;
4185 
4186     CURSOR c_year_manufactured(p_kle_id OKL_K_LINES_V.ID%TYPE)
4187     IS
4188     SELECT kle.Year_Built
4189     FROM OKL_K_LINES_V kle
4190     WHERE kle.id = p_kle_id;
4191 
4192     CURSOR c_new_ib_line_id(p_cle_id OKL_K_LINES_V.ID%TYPE
4193                            ,p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE)
4194     IS
4195     SELECT cle.id,
4196            cle.dnz_chr_id
4197     FROM OKC_K_LINES_V cle,
4198          OKC_LINE_STYLES_V lse
4199     WHERE cle.dnz_chr_id = p_dnz_chr_id
4200     AND cle.lse_id = lse.id
4201     AND lse.lty_code = G_IB_LINE_LTY_CODE
4202     AND cle.cle_id in (SELECT cle.id
4203                        FROM OKC_K_LINES_V cle,
4204                             OKC_LINE_STYLES_V lse
4205                        WHERE cle.cle_id = p_cle_id
4206                        AND cle.lse_id = lse.id
4207                        AND lse.lty_code = G_INST_LINE_LTY_CODE
4208                        AND cle.dnz_chr_id = p_dnz_chr_id);
4209 
4210     CURSOR c_new_model_item_info(p_cle_id OKL_K_LINES_V.ID%TYPE
4211                                  ,p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE)
4212     IS
4213     SELECT cim.object1_id1,
4214            cim.object1_id2
4215     FROM OKC_LINE_STYLES_V lse,
4216          OKC_K_ITEMS_V cim,
4217          OKC_K_LINES_V cle
4218     WHERE cle.dnz_chr_id = p_dnz_chr_id
4219     AND cle.cle_id = p_cle_id
4220     AND cle.id = cim.cle_id
4221     AND cle.dnz_chr_id = cim.dnz_chr_id
4222     AND cle.lse_id = lse.id
4223     AND lse.lty_code = G_MODEL_LINE_LTY_CODE;
4224 
4225     CURSOR c_get_iti_object_id1(p_party_site_id HZ_PARTY_SITE_USES.PARTY_SITE_ID%TYPE)
4226     IS
4227     SELECT psu.party_site_use_id
4228     FROM HZ_PARTY_SITE_USES psu,
4229          HZ_PARTY_SITES ps
4230     WHERE ps.party_site_id =   psu.party_site_id
4231     AND psu.site_use_type = 'INSTALL_AT'
4232     AND psu.party_site_id = p_party_site_id;
4233 
4234     --Bug# 3569441 : Get install location type code
4235     CURSOR l_loc_type_csr(p_instance_id in number) is
4236     SELECT install_location_type_code,
4237            owner_party_id
4238     FROM   csi_item_instances
4239     WHERE  instance_id = p_instance_id;
4240 
4241     l_loc_type_rec l_loc_type_csr%ROWTYPE;
4242 
4243     CURSOR l_site_use_csr (p_location_id in number) is
4244     SELECT psu.party_site_use_id
4245     FROM   hz_party_site_uses psu,
4246            hz_party_sites     ps
4247     WHERE  psu.party_site_id     = ps.party_site_id
4248     AND    psu.site_use_type     = 'INSTALL_AT'
4249     AND    ps.location_id        = p_location_id;
4250 
4251     l_site_use_rec    l_site_use_csr%ROWTYPE;
4252 
4253     --Cursor to get address for error
4254     Cursor l_address_csr (pty_site_id in number ) is
4255     select substr(arp_addr_label_pkg.format_address(null,hl.address1,hl.address2,hl.address3, hl.address4,hl.city,hl.county,hl.state,hl.province,hl.postal_code,null,hl.country,null, null,null,null,null,null,null,'n','n',80,1,1),1,80)
4256     from hz_locations hl,
4257          hz_party_sites ps
4258     where hl.location_id = ps.location_id
4259     and   ps.party_site_id = pty_site_id;
4260 
4261     Cursor l_address_csr2 (loc_id in number) is
4262     select substr(arp_addr_label_pkg.format_address(null,hl.address1,hl.address2,hl.address3, hl.address4,hl.city,hl.county,hl.state,hl.province,hl.postal_code,null,hl.country,null, null,null,null,null,null,null,'n','n',80,1,1),1,80)
4263     from hz_locations hl
4264     where hl.location_id = loc_id;
4265 
4266     l_address varchar2(80);
4267     --End BUG# 3569441
4268 
4269 
4270     CURSOR c_get_deal_type(p_top_line_id OKL_K_LINES_V.ID%TYPE,
4271                            p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE)
4272     IS
4273     SELECT khrv.deal_type,
4274            klev.oec
4275     FROM okl_k_headers_v khrv,
4276          okc_subclass_top_line stl,
4277          okc_line_styles_b lse,
4278          okc_k_lines_v cle,
4279          okl_k_lines_v klev
4280     WHERE cle.cle_id is null
4281     AND cle.id = klev.id
4282     AND cle.chr_id = cle.dnz_chr_id
4283     AND cle.lse_id = lse.id
4284     AND lse.lty_code = G_FIN_LINE_LTY_CODE
4285     AND lse.lse_parent_id is null
4286     AND lse.lse_type = G_TLS_TYPE
4287     AND lse.id = stl.lse_Id
4288     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE)
4289     AND cle.dnz_chr_id = khrv.id
4290     AND cle.dnz_chr_id = p_dnz_chr_id
4291     AND cle.id = p_top_line_id;
4292 
4293     r_asset_info          c_asset_info%ROWTYPE;
4294     r_asset_details_info  c_asset_details_info%ROWTYPE;
4295     r_ib_info             c_ib_info%ROWTYPE;
4296 
4297     Cursor deal_type_stscode_csr(p_chr_id IN NUMBER) is
4298     Select deal_type, sts_code
4299     From   okl_k_headers_full_v
4300     Where  id = p_chr_id;
4301 
4302     l_deal_type  okl_k_headers_full_v.deal_type%type;
4303     lv_sts_code  okl_k_headers_full_v.deal_type%type;
4304 
4305     --Bug# 2981308
4306     --cursor to fetch asset key ccid
4307     cursor l_fab_csr(p_asset_id in number) is
4308     select asset_key_ccid
4309     from   fa_additions_b
4310     where  asset_id = p_asset_id;
4311 
4312    --Bug# 3621663 : Flat rate support
4313     cursor l_life_in_months_csr (p_deprn_method in varchar2,
4314                                  p_life_in_months in number) is
4315     select 'Y'
4316     from   fa_methods
4317     where  method_code = p_deprn_method
4318     and    life_in_months = p_life_in_months
4319     and    life_in_months is not null;
4320 
4321     l_life_in_months_exists varchar2(1);
4322 
4323     cursor l_rate_csr (p_deprn_method in varchar2,
4324                        p_rate         in number) is
4325     select 'Y'
4326     from   fa_flat_rates ffr,
4327            fa_methods    fm
4328     where  fm.method_code     = p_deprn_method
4329     and    ffr.method_id      = fm.method_id
4330     and    ffr.adjusted_rate  = p_rate
4331     and    ffr.adjusting_rate  = 0;
4332 
4333     l_rate_exists varchar2(1);
4334     --Bug# 3621663
4335 
4336    --Bug# 3877032
4337     l_fin_clev_rec    okl_okc_migration_pvt.clev_rec_type;
4338     l_fin_klev_rec    okl_contract_pub.klev_rec_type;
4339     lx_fin_clev_rec   okl_okc_migration_pvt.clev_rec_type;
4340     lx_fin_klev_rec   okl_contract_pub.klev_rec_type;
4341 
4342   BEGIN
4343     x_return_status  := OKL_API.G_RET_STS_SUCCESS;
4344     -- Call start_activity to create savepoint, check compatibility
4345     -- and initialize message list
4346     x_return_status := OKL_API.START_ACTIVITY (
4347                                l_api_name
4348                                ,p_init_msg_list
4349                                ,'_PVT'
4350                                ,x_return_status);
4351     -- Check if activity started successfully
4352     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4353        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4354     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4355        RAISE OKL_API.G_EXCEPTION_ERROR;
4356     END IF;
4357     -- Validating the chr_id and cle_id
4358     validate_from_cle_id(p_cle_id        => p_from_cle_id,
4359                          x_fa_line_id    => l_from_fa_kle_id,
4360                          x_ib_id_tbl     => lt_ib_id_tbl,
4361                          x_dnz_chr_id    => l_from_dnz_chr_id,
4362                          x_return_status => x_return_status);
4363     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4364        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4365     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4366        RAISE OKL_API.G_EXCEPTION_ERROR;
4367     END IF;
4368     -- since avery validation is passed
4369     -- First to copy a contract line then get the cle id
4370     OKL_COPY_CONTRACT_PUB.COPY_CONTRACT_LINES(
4371                           p_api_version        => p_api_version,
4372                           p_init_msg_list      => p_init_msg_list,
4373                           x_return_status      => x_return_status,
4374                           x_msg_count          => x_msg_count,
4375                           x_msg_data           => x_msg_data,
4376                           p_from_cle_id        => p_from_cle_id,
4377                           p_to_cle_id          => p_to_cle_id,
4378                           p_to_chr_id          => p_to_chr_id,
4379                           p_to_template_yn     => p_to_template_yn,
4380                           p_copy_reference     => p_copy_reference,
4381                           p_copy_line_party_yn => p_copy_line_party_yn,
4382                           p_renew_ref_yn       => p_renew_ref_yn,
4383                           x_cle_id             => x_cle_id);
4384     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4385       OKL_API.set_message(p_app_name     => G_APP_NAME,
4386                           p_msg_name     => G_COPY_LINE);
4387        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4388     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4389       OKL_API.set_message(p_app_name     => G_APP_NAME,
4390                           p_msg_name     => G_COPY_LINE);
4391        RAISE OKL_API.G_EXCEPTION_ERROR;
4392     END IF;
4393 
4394     ln_cle_id := x_cle_id;
4395     -- We need to update the asset number
4396     -- Fixed asset item info
4397     x_return_status := validate_items_ids(p_cle_id      => l_from_fa_kle_id,
4398                                           p_dnz_chr_id  => l_from_dnz_chr_id,
4399                                           x_object1_id1 => l_fa_object1_id1,
4400                                           x_object1_id2 => l_fa_object1_id2);
4401     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4402       OKL_API.set_message(p_app_name     => G_APP_NAME,
4403                           p_msg_name     => G_ITEM_RECORD);
4404        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4405     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4406       OKL_API.set_message(p_app_name     => G_APP_NAME,
4407                           p_msg_name     => G_ITEM_RECORD);
4408      -- TO put error message
4409        RAISE OKL_API.G_EXCEPTION_ERROR;
4410     END IF;
4411     -- Install Base Item info
4412     IF lt_ib_id_tbl.COUNT > 0 THEN
4413        i := lt_ib_id_tbl.FIRST;
4414        LOOP
4415          x_return_status := validate_items_ids(p_cle_id      => lt_ib_id_tbl(i).id,
4416                                                p_dnz_chr_id  => l_from_dnz_chr_id,
4417                                                x_object1_id1 => lt_ib_item_tbl(i).object1_id1,
4418                                                x_object1_id2 => lt_ib_item_tbl(i).object1_id2);
4419          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4420            EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
4421          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4422            EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
4423          END IF;
4424          EXIT WHEN (i = lt_ib_id_tbl.LAST);
4425          i := lt_ib_id_tbl.NEXT(i);
4426        END LOOP;
4427     ELSE
4428       OKL_API.set_message(p_app_name     => G_APP_NAME,
4429                           p_msg_name     => G_LINE_RECORD);
4430       RAISE OKL_API.G_EXCEPTION_ERROR;
4431     END IF;
4432     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4433       OKL_API.set_message(p_app_name     => G_APP_NAME,
4434                           p_msg_name     => G_ITEM_RECORD);
4435        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4436     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4437       OKL_API.set_message(p_app_name     => G_APP_NAME,
4438                           p_msg_name     => G_ITEM_RECORD);
4439        RAISE OKL_API.G_EXCEPTION_ERROR;
4440     END IF;
4441     IF (l_fa_object1_id1 IS NULL OR
4442        l_fa_object1_id1 = OKL_API.G_MISS_CHAR) AND
4443        (l_fa_object1_id2 IS NULL OR
4444        l_fa_object1_id2 = OKL_API.G_MISS_CHAR) THEN
4445 
4446       --check if it is a 'LOAN' contract
4447       Open deal_type_stscode_csr(p_chr_id => l_from_dnz_chr_id);
4448       Fetch deal_type_stscode_csr into l_deal_type, lv_sts_code;
4449       Close deal_type_stscode_csr;
4450 
4451       IF (l_deal_type in ('LOAN','LOAN-REVOLVING') AND lv_sts_code = 'BOOKED') THEN
4452         Create_Asset_trx_txl_For_Loan(p_api_version    => p_api_version,
4453                                       p_init_msg_list    => p_init_msg_list,
4454                                       x_return_status    => x_return_status,
4455                                       x_msg_count        => x_msg_count,
4456                                       x_msg_data         => x_msg_data,
4457                                       p_cle_id           => l_from_fa_kle_id,
4458                                       p_fin_cle_id       => ln_cle_id,
4459                                       p_from_dnz_chr_id  => l_from_dnz_chr_id,
4460                                       p_to_dnz_chr_id    => p_to_chr_id,
4461                                       p_trans_type       => p_trans_type,
4462                                       x_trxv_rec         => lx_asset_trxv_rec,
4463                                       x_talv_rec         => lx_txlv_rec,
4464                                       x_txdv_tbl         => lx_txdv_tbl);
4465         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4466           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4467         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4468           RAISE OKL_API.G_EXCEPTION_ERROR;
4469         END IF;
4470         lv_gen_asset_number := lx_txlv_rec.asset_number;
4471       ELSE
4472         -- Check to see if the txl info is there or not
4473         OPEN  c_check_txl_rec(l_from_fa_kle_id);
4474         IF c_check_txl_rec%NOTFOUND THEN
4475           OKL_API.set_message(p_app_name     => G_APP_NAME,
4476                               p_msg_name     => G_NO_MATCHING_RECORD,
4477                               p_token1       => G_COL_NAME_TOKEN,
4478                               p_token1_value => 'OKL_TXL_ASSETS_V.KLE_ID');
4479           RAISE OKL_API.G_EXCEPTION_ERROR;
4480         END IF;
4481         FETCH c_check_txl_rec INTO ln_txl_rec;
4482         CLOSE c_check_txl_rec;
4483 
4484         IF ln_txl_rec = 1 THEN
4485            -- Copy the Asset Info
4486            Create_Asset_trx_txl_txd(p_api_version   => p_api_version,
4487                                     p_init_msg_list => p_init_msg_list,
4488                                     x_return_status => x_return_status,
4489                                     x_msg_count     => x_msg_count,
4490                                     x_msg_data      => x_msg_data,
4491                                     p_cle_id        => l_from_fa_kle_id,
4492                                     p_fin_cle_id    => x_cle_id,
4493                                     p_dnz_chr_id    => p_to_chr_id,
4494                                     p_trans_type    => p_trans_type,
4495                                     x_trxv_rec      => lx_asset_trxv_rec,
4496                                     x_talv_rec      => lx_txlv_rec,
4497                                     x_txdv_tbl      => lx_txdv_tbl);
4498            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4499              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4500            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4501              RAISE OKL_API.G_EXCEPTION_ERROR;
4502            END IF;
4503            lv_gen_asset_number := lx_txlv_rec.asset_number;
4504         ELSE
4505           RAISE OKL_API.G_EXCEPTION_ERROR;
4506         END IF;
4507       END IF;
4508       -- Calling the api to copy the Supplier Invoice Details info
4509       create_supp_invoice_dtls(p_api_version   => p_api_version,
4510                                p_init_msg_list => p_init_msg_list,
4511                                x_return_status => x_return_status,
4512                                x_msg_count     => x_msg_count,
4513                                x_msg_data      => x_msg_data,
4514                                p_cle_id        => p_from_cle_id,
4515                                p_fin_cle_id    => x_cle_id);
4516       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4517         OKL_API.set_message(p_app_name     => G_APP_NAME,
4518                             p_msg_name     => ' Error in copy Supplier Invoice Details');
4519         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4520       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4521         OKL_API.set_message(p_app_name     => G_APP_NAME,
4522                             p_msg_name     => ' Error in copy Supplier Invoice Details');
4523         RAISE OKL_API.G_EXCEPTION_ERROR;
4524       END IF;
4525     ELSIF (l_fa_object1_id1 IS NOT NULL OR
4526           l_fa_object1_id1 <> OKL_API.G_MISS_CHAR) AND
4527           (l_fa_object1_id2 IS NOT NULL OR
4528       l_fa_object1_id2 <> OKL_API.G_MISS_CHAR) THEN
4529       -- Now we have to create txl assets info for existing FA asset
4530       OPEN  c_asset_info(p_object1_id1 => l_fa_object1_id1,
4531                          p_object1_id2 => l_fa_object1_id2);
4532       FETCH c_asset_info into r_asset_info;
4533       CLOSE c_asset_info;
4534       OPEN  c_asset_loc_info(p_asset_id => l_fa_object1_id1);
4535       FETCH c_asset_loc_info into l_talv_rec.fa_location_id;
4536       CLOSE c_asset_loc_info;
4537       --we have to populate the txl with the existing asset info
4538       OPEN  c_new_fa_line_id(p_cle_id     => x_cle_id,
4539                              p_dnz_chr_id => p_to_chr_id);
4540       IF c_new_fa_line_id%NOTFOUND THEN
4541         OKL_API.set_message(p_app_name     => G_APP_NAME,
4542                             p_msg_name     => G_NO_MATCHING_RECORD,
4543                             p_token1       => G_COL_NAME_TOKEN,
4544                             p_token1_value => 'New Fa Line Id');
4545         -- TO put error message
4546         RAISE OKL_API.G_EXCEPTION_ERROR;
4547       END IF;
4548       FETCH c_new_fa_line_id into l_talv_rec.kle_id;
4549       CLOSE c_new_fa_line_id;
4550 
4551       OPEN c_year_manufactured(p_kle_id =>l_talv_rec.kle_id);
4552       IF c_year_manufactured%NOTFOUND THEN
4553         OKL_API.set_message(p_app_name     => G_APP_NAME,
4554                             p_msg_name     => G_NO_MATCHING_RECORD,
4555                             p_token1       => G_COL_NAME_TOKEN,
4556                             p_token1_value => 'New kle Fa Line Id');
4557         -- TO put error message
4558         RAISE OKL_API.G_EXCEPTION_ERROR;
4559       END IF;
4560       FETCH c_year_manufactured into l_talv_rec.year_manufactured;
4561       CLOSE c_year_manufactured;
4562       l_talv_rec.dnz_khr_id            := p_to_chr_id;
4563       ----------------------------------------------------------------------
4564       --Bug# 3562847 : Removed org_id assignment below
4565       --               verified l_talv_rec.org_id not being used anywhere in
4566       --               processing of l_talv_rec transaction record
4567       ---------------------------------------------------------------------
4568       --l_talv_rec.org_id                := r_asset_info.org_id;
4569       l_talv_rec.asset_number          := r_asset_info.asset_number;
4570       l_talv_rec.description           := r_asset_info.description;
4571 
4572       OPEN  c_get_deal_type(p_top_line_id => x_cle_id,
4573                             p_dnz_chr_id  => p_to_chr_id);
4574       IF c_get_deal_type%NOTFOUND THEN
4575         OKL_API.set_message(p_app_name     => G_APP_NAME,
4576                             p_msg_name     => G_NO_MATCHING_RECORD,
4577                             p_token1       => G_COL_NAME_TOKEN,
4578                             p_token1_value => 'New Top line Id');
4579         RAISE OKL_API.G_EXCEPTION_ERROR;
4580       END IF;
4581       FETCH c_get_deal_type INTO lv_deal_type,
4582                                  ln_oec;
4583       CLOSE c_get_deal_type;
4584       --bug# 2769267 : contract is active cost should be taken from fa
4585       --l_talv_rec.original_cost         := ln_oec;
4586       --l_talv_rec.depreciation_cost     := ln_oec;
4587       --open cursor to get currency parameters from contract header
4588       OPEN  l_chr_csr( p_from_cle_id );
4589       FETCH l_chr_csr INTO l_chr_rec;
4590       CLOSE l_chr_csr;
4591       --get the functional currency code
4592       l_chr_curr_code  := l_chr_rec.CURRENCY_CODE;
4593       l_func_curr_code := OKL_ACCOUNTING_UTIL.get_func_curr_code;
4594       If  (l_chr_curr_code <> l_func_curr_code) Then
4595           l_talv_rec.original_cost := NULL;
4596           okl_accounting_util.convert_to_contract_currency(
4597                           p_khr_id                    => l_chr_rec.id,
4598                           p_from_currency             => l_func_curr_code,
4599                           p_transaction_date          => l_chr_rec.start_date,
4600                           p_amount 	              => r_asset_info.cost,
4601                           x_contract_currency	      => x_contract_currency,
4602                           x_currency_conversion_type  => x_currency_conversion_type,
4603                           x_currency_conversion_rate  => x_currency_conversion_rate,
4604                           x_currency_conversion_date  => x_currency_conversion_date,
4605                           x_converted_amount          => l_talv_rec.original_cost);
4606           IF (r_asset_info.cost >= 0) and (l_talv_rec.original_cost < 0) then
4607                 --currency conversion rate was not found in Oracle GL
4608                 OKC_API.set_message(p_app_name     => G_APP_NAME,
4609                                p_msg_name     => G_CONV_RATE_NOT_FOUND,
4610                                p_token1       => G_FROM_CURRENCY_TOKEN,
4611                                p_token1_value => x_contract_currency,
4612                                p_token2       => G_TO_CURRENCY_TOKEN,
4613                                p_token2_value => l_func_curr_code,
4614                                p_token3       => G_CONV_TYPE_TOKEN,
4615                                p_token3_value => x_currency_conversion_type,
4616                                p_token4       => G_CONV_DATE_TOKEN,
4617                                p_token4_value => to_char(x_currency_conversion_date,'DD-MON-YYYY'));
4618                 RAISE OKL_API.G_EXCEPTION_ERROR;
4619           End If;
4620           l_talv_rec.depreciation_cost := l_talv_rec.original_cost;
4621       Else--currencies are same
4622           l_talv_rec.original_cost         := r_asset_info.cost;
4623           l_talv_rec.depreciation_cost     := r_asset_info.cost;
4624       End If;
4625       --bug# 2769267
4626       l_talv_rec.current_units         := r_asset_info.current_units;
4627       l_talv_rec.manufacturer_name     := r_asset_info.manufacturer_name;
4628       IF upper(r_asset_info.new_used) = 'NEW' THEN
4629          l_talv_rec.used_asset_yn         := null;
4630       ELSIF (r_asset_info.new_used IS NULL OR
4631             r_asset_info.new_used = OKL_API.G_MISS_CHAR) THEN
4632          l_talv_rec.used_asset_yn         := null;
4633       ELSE
4634          l_talv_rec.used_asset_yn         := 'Y';
4635       END IF;
4636       l_talv_rec.tag_number            := r_asset_info.tag_number;
4637       l_talv_rec.model_number          := r_asset_info.model_number;
4638 
4639       l_talv_rec.corporate_book        := r_asset_info.corporate_book;
4640       l_talv_rec.in_service_date       := r_asset_info.in_service_date;
4641       l_talv_rec.life_in_months        := r_asset_info.life_in_months;
4642       l_talv_rec.depreciation_id       := r_asset_info.depreciation_category;
4643       l_talv_rec.deprn_method          := r_asset_info.deprn_method_code;
4644       l_talv_rec.deprn_rate            := r_asset_info.adjusted_rate;
4645 
4646      --Bug# 3621663 : Flat rate method support
4647       l_life_in_months_exists := 'N';
4648       Open l_life_in_months_csr(p_deprn_method   => r_asset_info.deprn_method_code,
4649                                 p_life_in_months => r_asset_info.life_in_months);
4650       Fetch l_life_in_months_csr into l_life_in_months_exists;
4651       If l_life_in_months_csr%NOTFOUND then
4652           null;
4653       End If;
4654       Close l_life_in_months_csr;
4655 
4656       If l_life_in_months_exists = 'Y' then
4657           l_talv_rec.life_in_months := r_asset_info.life_in_months;
4658           l_talv_rec.deprn_rate     := null;
4659       ElsIf l_life_in_months_exists = 'N' then
4660           l_rate_exists := 'N';
4661           Open l_rate_csr (p_deprn_method => r_asset_info.deprn_method_code,
4662                            p_rate         => r_asset_info.adjusted_rate);
4663           Fetch l_rate_csr into l_rate_exists;
4664           If l_rate_csr%NOTFOUND then
4665              Null;
4666           End If;
4667           Close l_rate_csr;
4668           If l_rate_exists = 'Y' then
4669               --Bug# 3657624 : Depreciation Rate should not be multiplied by 100
4670               --l_talv_rec.deprn_rate     := r_asset_info.adjusted_rate*100;
4671               l_talv_rec.deprn_rate     := r_asset_info.adjusted_rate;
4672               l_talv_rec.life_in_months := Null;
4673           End If;
4674       End If;
4675       --Bug# 3621663 : End
4676 
4677       --Bug# 2769267
4678       --ssiruvol currency conversion while copying from FA onto contract lines.
4679       --OPEN  l_chr_csr( p_from_cle_id );
4680       --FETCH l_chr_csr INTO l_chr_rec;
4681       --CLOSE l_chr_csr;
4682 
4683       --l_chr_curr_code  := l_chr_rec.CURRENCY_CODE;
4684       --l_func_curr_code := OKC_CURRENCY_API.GET_OU_CURRENCY(l_chr_rec.authoring_org_id);
4685 
4686       -- Bug# 3950089
4687       -- Populate either Salvage percent or Salvage value in okl_txl_assets_b
4688       IF (r_asset_info.percent_salvage_value IS NULL) THEN
4689 
4690         IF ( l_chr_curr_code <> l_func_curr_code ) Then
4691           l_talv_rec.salvage_value := NULL;
4692           okl_accounting_util.convert_to_contract_currency(
4693                           p_khr_id                    => l_chr_rec.id,
4694                           p_from_currency             => l_func_curr_code,
4695                           p_transaction_date          => l_chr_rec.start_date,
4696                           p_amount 	              => r_asset_info.salvage_value,
4697                           x_contract_currency	      => x_contract_currency,
4698                           x_currency_conversion_type  => x_currency_conversion_type,
4699                           x_currency_conversion_rate  => x_currency_conversion_rate,
4700                           x_currency_conversion_date  => x_currency_conversion_date,
4701                           x_converted_amount          => l_talv_rec.salvage_value);
4702           IF (r_asset_info.salvage_value >= 0) and (l_talv_rec.salvage_value < 0) then
4703                 --currency conversion rate was not found in Oracle GL
4704                 OKC_API.set_message(p_app_name     => G_APP_NAME,
4705                                p_msg_name     => G_CONV_RATE_NOT_FOUND,
4706                                p_token1       => G_FROM_CURRENCY_TOKEN,
4707                                p_token1_value => x_contract_currency,
4708                                p_token2       => G_TO_CURRENCY_TOKEN,
4709                                p_token2_value => l_func_curr_code,
4710                                p_token3       => G_CONV_TYPE_TOKEN,
4711                                p_token3_value => x_currency_conversion_type,
4712                                p_token4       => G_CONV_DATE_TOKEN,
4713                                p_token4_value => to_char(x_currency_conversion_date,'DD-MON-YYYY'));
4714                 RAISE OKL_API.G_EXCEPTION_ERROR;
4715           End If;
4716         Else
4717           l_talv_rec.salvage_value := r_asset_info.salvage_value;
4718         End If;
4719 
4720       ELSE
4721         --Bug# 3950089
4722         l_talv_rec.percent_salvage_value := r_asset_info.percent_salvage_value * 100;
4723       END IF;
4724 
4725       --Bug# 2981308 : fetch asset asset key ccid from FA and assign
4726       open l_fab_csr (p_asset_id => r_asset_info.asset_id);
4727       fetch l_fab_csr into l_talv_rec.asset_key_id;
4728       if l_fab_csr%NOTFOUND then
4729           Null;
4730       end if;
4731       close l_fab_csr;
4732       --End Bug# 2981308
4733 
4734       -- Now we are going to the txl info with the fixed asset info for the asset number
4735       Create_asset_lines(p_api_version   => p_api_version,
4736                          p_init_msg_list => p_init_msg_list,
4737                          x_return_status => x_return_status,
4738                          x_msg_count     => x_msg_count,
4739                          x_msg_data      => x_msg_data,
4740                          p_talv_rec      => l_talv_rec,
4741                          p_trans_type    => p_trans_type,
4742                          x_trxv_rec      => lx_asset_trxv_rec,
4743                          x_talv_rec      => lx_txlv_rec);
4744       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4745         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4746       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4747         RAISE OKL_API.G_EXCEPTION_ERROR;
4748       END IF;
4749       lv_gen_asset_number := lx_txlv_rec.asset_number;
4750 
4751       -- We have to create Txd info if the Asset has tax book info we need to load the txd also
4752       -- Since We will have more than one row we need to load the values thru loop
4753       FOR r_asset_details_info IN c_asset_details_info(p_object1_id1 => l_fa_object1_id1) LOOP
4754         -- Loading the txd info
4755         l_txdv_rec.tal_id                := lx_txlv_rec.id;
4756         l_txdv_rec.line_detail_number    := ln_txd_line_number;
4757 --          l_txdv_rec.asset_number          := r_asset_details_info.asset_number;
4758         l_txdv_rec.asset_number          := lv_gen_asset_number;
4759         l_txdv_rec.description           := r_asset_details_info.description;
4760         l_txdv_rec.quantity              := r_asset_details_info.current_units;
4761         --Bug# 2769267 : commented the code below
4762         /*
4763         --IF r_asset_details_info.cost = 0 THEN
4764           -- Based on the deal type we need populate the original_cost as price_unit of line
4765           -- which is oec/current_units for the line
4766          -- OPEN  c_get_deal_type(p_top_line_id => x_cle_id,
4767 --                                p_dnz_chr_id  => p_to_chr_id);
4768 --          IF c_get_deal_type%NOTFOUND THEN
4769 --            OKL_API.set_message(p_app_name     => G_APP_NAME,
4770 --                                p_msg_name     => G_NO_MATCHING_RECORD,
4771 --                                p_token1       => G_COL_NAME_TOKEN,
4772 --                                p_token1_value => 'New Top line Id');
4773 --            RAISE OKL_API.G_EXCEPTION_ERROR;
4774 --          END IF;
4775 --          FETCH c_get_deal_type INTO lv_deal_type,
4776 --                                     ln_oec;
4777 --          CLOSE c_get_deal_type;
4778 --          IF  lv_deal_type in ('LEASEDF','LEASEST') THEN
4779 --            l_txdv_rec.cost     := ln_oec;
4780 --          ELSE
4781 --            l_txdv_rec.cost     := r_asset_details_info.cost;
4782 --          END IF;
4783 --        ELSE
4784 --          l_txdv_rec.cost     := r_asset_details_info.cost;
4785 --        END IF;
4786 --        */
4787         --Bug# 2769267 : active contracts costs should be taken from FA and converted if required
4788         If  (l_chr_curr_code <> l_func_curr_code) Then
4789             l_txdv_rec.cost := NULL;
4790             okl_accounting_util.convert_to_contract_currency(
4791                           p_khr_id                    => l_chr_rec.id,
4792                           p_from_currency             => l_func_curr_code,
4793                           p_transaction_date          => l_chr_rec.start_date,
4794                           p_amount 	              => r_asset_details_info.cost,
4795                           x_contract_currency	      => x_contract_currency,
4796                           x_currency_conversion_type  => x_currency_conversion_type,
4797                           x_currency_conversion_rate  => x_currency_conversion_rate,
4798                           x_currency_conversion_date  => x_currency_conversion_date,
4799                           x_converted_amount          => l_txdv_rec.cost);
4800             IF (r_asset_details_info.cost >= 0) and (l_txdv_rec.cost < 0) then
4801                 --currency conversion rate was not found in Oracle GL
4802                 OKC_API.set_message(p_app_name     => G_APP_NAME,
4803                                p_msg_name     => G_CONV_RATE_NOT_FOUND,
4804                                p_token1       => G_FROM_CURRENCY_TOKEN,
4805                                p_token1_value => x_contract_currency,
4806                                p_token2       => G_TO_CURRENCY_TOKEN,
4807                                p_token2_value => l_func_curr_code,
4808                                p_token3       => G_CONV_TYPE_TOKEN,
4809                                p_token3_value => x_currency_conversion_type,
4810                                p_token4       => G_CONV_DATE_TOKEN,
4811                                p_token4_value => to_char(x_currency_conversion_date,'DD-MON-YYYY'));
4812                 RAISE OKL_API.G_EXCEPTION_ERROR;
4813             End If;
4814         Else
4815             l_txdv_rec.cost         := r_asset_details_info.cost;
4816         End If;
4817         --Bug# 2769627 End
4818         l_txdv_rec.tax_book              := r_asset_details_info.book_type_code;
4819         l_txdv_rec.life_in_months_tax    := r_asset_details_info.life_in_months;
4820         l_txdv_rec.deprn_method_tax      := r_asset_details_info.deprn_method_code;
4821         l_txdv_rec.deprn_rate_tax        := r_asset_details_info.adjusted_rate;
4822         l_txdv_rec.salvage_value         := r_asset_details_info.salvage_value;
4823 
4824         --Bug# 3621663 : Flat rate method support
4825         l_life_in_months_exists := 'N';
4826         Open l_life_in_months_csr(p_deprn_method   => r_asset_details_info.deprn_method_code,
4827                                   p_life_in_months => r_asset_details_info.life_in_months);
4828         Fetch l_life_in_months_csr into l_life_in_months_exists;
4829         If l_life_in_months_csr%NOTFOUND then
4830             null;
4831         End If;
4832         Close l_life_in_months_csr;
4833 
4834         If l_life_in_months_exists = 'Y' then
4835             l_txdv_rec.life_in_months_tax := r_asset_details_info.life_in_months;
4836             l_txdv_rec.deprn_rate_tax     := null;
4837         ElsIf l_life_in_months_exists = 'N' then
4838             l_rate_exists := 'N';
4839             Open l_rate_csr (p_deprn_method => r_asset_details_info.deprn_method_code,
4840                              p_rate         => r_asset_details_info.adjusted_rate);
4841             Fetch l_rate_csr into l_rate_exists;
4842             If l_rate_csr%NOTFOUND then
4843                Null;
4844             End If;
4845             Close l_rate_csr;
4846             If l_rate_exists = 'Y' then
4847                 --Bug# 3657624 : Depreciation Rate should not be multiplied by 100
4848                 --l_txdv_rec.deprn_rate_tax   := r_asset_details_info.adjusted_rate*100;
4849                 l_txdv_rec.deprn_rate_tax   := r_asset_details_info.adjusted_rate;
4850                 l_txdv_rec.life_in_months_tax := Null;
4851             End If;
4852         End If;
4853         --Bug# 3621663 : End
4854         -- We are going to Create teh Asset Details info
4855         Create_asset_line_details(p_api_version   => p_api_version,
4856                                   p_init_msg_list => p_init_msg_list,
4857                                   x_return_status => x_return_status,
4858                                   x_msg_count     => x_msg_count,
4859                                   x_msg_data      => x_msg_data,
4860                                   p_txdv_rec      => l_txdv_rec,
4861                                   x_txdv_rec      => lx_txdv_rec);
4862         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4863           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
4864         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4865           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
4866         END IF;
4867         ln_txd_line_number := ln_txd_line_number + 1;
4868       END LOOP;
4869       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4870         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4871       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4872         RAISE OKL_API.G_EXCEPTION_ERROR;
4873       END IF;
4874       -- we have to null out the object1_id1 and object1_id2 in okc_k_items
4875       -- since the copy lines are for a new contract
4876       x_return_status := get_rec_cimv(lx_txlv_rec.kle_id,
4877                                       p_to_chr_id,
4878                                       l_cimv_rec);
4879       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4880         OKL_API.set_message(p_app_name     => G_APP_NAME,
4881                             p_msg_name     => G_NO_MATCHING_RECORD,
4882                             p_token1        => G_COL_NAME_TOKEN,
4883                             p_token1_value  => 'OKC_K_ITEMS_V record');
4884         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4885       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4886         OKL_API.set_message(p_app_name     => G_APP_NAME,
4887                             p_msg_name     => G_NO_MATCHING_RECORD,
4888                             p_token1        => G_COL_NAME_TOKEN,
4889                             p_token1_value  => 'OKC_K_ITEMS_V record');
4890         RAISE OKL_API.G_EXCEPTION_ERROR;
4891       END IF;
4892       IF l_cimv_rec.cle_id <> lx_txlv_rec.kle_id THEN
4893         OKL_API.set_message(p_app_name => G_APP_NAME,
4894                             p_msg_name => G_NO_MATCHING_RECORD,
4895                             p_token1        => G_COL_NAME_TOKEN,
4896                             p_token1_value  => 'OKC_K_ITEMS_V.CLE_ID');
4897         RAISE OKL_API.G_EXCEPTION_ERROR;
4898       END IF;
4899       IF l_cimv_rec.dnz_chr_id <> p_to_chr_id THEN
4900         OKL_API.set_message(p_app_name => G_APP_NAME,
4901                             p_msg_name => G_NO_MATCHING_RECORD,
4902                             p_token1        => G_COL_NAME_TOKEN,
4903                             p_token1_value  => 'OKC_K_ITEMS_V.DNZ_CHR_ID');
4904         RAISE OKL_API.G_EXCEPTION_ERROR;
4905       END IF;
4906       l_cimv_rec.object1_id1     := null;
4907       l_cimv_rec.object1_id2     := null;
4908       -- Updating of Item Record for the above record information
4909       OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version   => p_api_version,
4910                                                  p_init_msg_list => p_init_msg_list,
4911                                                  x_return_status => x_return_status,
4912                                                  x_msg_count     => x_msg_count,
4913                                                  x_msg_data      => x_msg_data,
4914                                                  p_cimv_rec      => l_cimv_rec,
4915                                                  x_cimv_rec      => lx_cimv_rec);
4916       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4917         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4918       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4919         RAISE OKL_API.G_EXCEPTION_ERROR;
4920       END IF;
4921       -- Calling the api to copy the Supplier Invoice Details info
4922       create_supp_invoice_dtls(p_api_version   => p_api_version,
4923                                p_init_msg_list => p_init_msg_list,
4924                                x_return_status => x_return_status,
4925                                x_msg_count     => x_msg_count,
4926                                x_msg_data      => x_msg_data,
4927                                p_cle_id        => p_from_cle_id,
4928                                p_fin_cle_id    => x_cle_id);
4929       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4930         OKL_API.set_message(p_app_name     => G_APP_NAME,
4931                             p_msg_name     => ' Error in copy Supplier Invoice Details');
4932         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4933       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4934         OKL_API.set_message(p_app_name     => G_APP_NAME,
4935                             p_msg_name     => ' Error in copy Supplier Invoice Details');
4936         RAISE OKL_API.G_EXCEPTION_ERROR;
4937       END IF;
4938     ELSE
4939       OKL_API.set_message(p_app_name     => G_APP_NAME,
4940                           p_msg_name     => G_ITEM_RECORD);
4941       RAISE OKL_API.G_EXCEPTION_ERROR;
4942     END IF;
4943     x_return_status := get_rec_clev(x_cle_id,
4944                                     l_clev_rec);
4945     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4946        OKL_API.set_message(p_app_name     => G_APP_NAME,
4947                            p_msg_name     => G_FETCHING_INFO,
4948                            p_token1       => G_REC_NAME_TOKEN,
4949                            p_token1_value => 'OKC_K_LINES_V Record');
4950        RAISE G_EXCEPTION_HALT_VALIDATION;
4951     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4952        OKL_API.set_message(p_app_name     => G_APP_NAME,
4953                            p_msg_name     => G_FETCHING_INFO,
4954                            p_token1       => G_REC_NAME_TOKEN,
4955                            p_token1_value => 'OKC_K_LINES_V Record');
4956        RAISE G_EXCEPTION_HALT_VALIDATION;
4957     END IF;
4958     -- To Get the kle top Line Record
4959     x_return_status := get_rec_klev(x_cle_id,
4960                                     l_klev_rec);
4961     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4962        OKL_API.set_message(p_app_name     => G_APP_NAME,
4963                            p_msg_name     => G_FETCHING_INFO,
4964                            p_token1       => G_REC_NAME_TOKEN,
4965                            p_token1_value => 'OKL_K_LINES_V Record');
4966        RAISE G_EXCEPTION_HALT_VALIDATION;
4967     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4968        OKL_API.set_message(p_app_name     => G_APP_NAME,
4969                            p_msg_name     => G_FETCHING_INFO,
4970                            p_token1       => G_REC_NAME_TOKEN,
4971                            p_token1_value => 'OKL_K_LINES_V Record');
4972        RAISE G_EXCEPTION_HALT_VALIDATION;
4973     END IF;
4974     IF l_klev_rec.id <> l_clev_rec.id THEN
4975        OKL_API.set_message(p_app_name     => G_APP_NAME,
4976                            p_msg_name     => G_LINE_RECORD);
4977        RAISE G_EXCEPTION_HALT_VALIDATION;
4978     END IF;
4979     l_clev_rec.name := lv_gen_asset_number;
4980     OKL_CONTRACT_PUB.update_contract_line(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_clev_rec      => l_clev_rec,
4986                                           p_klev_rec      => l_klev_rec,
4987                                           x_clev_rec      => lx_clev_rec,
4988                                           x_klev_rec      => lx_klev_rec);
4989     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4990        OKL_API.set_message(p_app_name     => G_APP_NAME,
4991                            p_msg_name     => G_UPDATING_FIN_LINE);
4992        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4993     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4994        OKL_API.set_message(p_app_name     => G_APP_NAME,
4995                            p_msg_name     => G_UPDATING_FIN_LINE);
4996        RAISE OKL_API.G_EXCEPTION_ERROR;
4997     END IF;
4998     -- Ib Line creation/copy
4999     FOR r_new_ib_line_id IN c_new_ib_line_id(p_cle_id     => x_cle_id,
5000                                              p_dnz_chr_id => p_to_chr_id) LOOP
5001       IF c_new_ib_line_id%NOTFOUND THEN
5002         x_return_status := OKL_API.G_RET_STS_ERROR;
5003         EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
5004       END IF;
5005       lt_new_ib_id_tbl(j).id         := r_new_ib_line_id.id;
5006       lt_new_ib_id_tbl(j).dnz_chr_id := r_new_ib_line_id.dnz_chr_id;
5007       j := j + 1;
5008     END LOOP;
5009     IF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5010       OKL_API.set_message(p_app_name     => G_APP_NAME,
5011                           p_msg_name     => G_NO_MATCHING_RECORD,
5012                           p_token1       => G_COL_NAME_TOKEN,
5013                           p_token1_value => 'New ib Line Id');
5014       RAISE OKL_API.G_EXCEPTION_ERROR;
5015     END IF;
5016     IF lt_new_ib_id_tbl.COUNT <> lt_ib_id_tbl.COUNT THEN
5017       OKL_API.set_message(p_app_name     => G_APP_NAME,
5018                           p_msg_name     => G_LINE_RECORD);
5019       RAISE OKL_API.G_EXCEPTION_ERROR;
5020     END IF;
5021     -- Install Base Item info
5022     IF lt_ib_id_tbl.COUNT > 0 THEN
5023        i := lt_ib_id_tbl.FIRST;
5024        j := lt_new_ib_id_tbl.FIRST;
5025        LOOP
5026          IF (lt_ib_item_tbl(i).object1_id1 IS NULL OR
5027             lt_ib_item_tbl(i).object1_id1 = OKL_API.G_MISS_CHAR) AND
5028             (lt_ib_item_tbl(i).object1_id2 IS NULL OR
5029             lt_ib_item_tbl(i).object1_id2 = OKL_API.G_MISS_CHAR) THEN
5030             IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5031               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
5032             ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5033               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
5034             END IF;
5035             -- Check to see if the iti info is there or not
5036             OPEN  c_check_iti_rec(lt_ib_id_tbl(i).id);
5037             IF c_check_iti_rec%NOTFOUND THEN
5038                OKL_API.set_message(p_app_name     => G_APP_NAME,
5039                                    p_msg_name     => G_NO_MATCHING_RECORD,
5040                                    p_token1       => G_COL_NAME_TOKEN,
5041                                    p_token1_value => 'OKL_TXL_ITM_INSTS_V.KLE_ID');
5042               x_return_status := OKL_API.G_RET_STS_ERROR;
5043               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
5044             END IF;
5045             FETCH c_check_iti_rec INTO ln_iti_rec;
5046             CLOSE c_check_iti_rec;
5047             IF ln_iti_rec = 1 THEN
5048               -- Copy the Instance rec
5049               Create_Asset_header_instance(p_api_version   => p_api_version,
5050                                            p_init_msg_list => p_init_msg_list,
5051                                            x_return_status => x_return_status,
5052                                            x_msg_count     => x_msg_count,
5053                                            x_msg_data      => x_msg_data,
5054                                            p_cle_id        => lt_ib_id_tbl(i).id,
5055                                            p_new_cle_id    => lt_new_ib_id_tbl(j).id,
5056                                            p_fin_cle_id    => x_cle_id,
5057                                            p_dnz_chr_id    => p_to_chr_id,
5058                                            p_trans_type    => p_trans_type,
5059                                            p_asset_number  => lx_txlv_rec.asset_number,
5060                                            x_trxv_rec      => lx_instance_trxv_rec,
5061                                            x_itiv_rec      => lx_itiv_rec);
5062               IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5063                 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
5064               ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5065                 EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
5066               END IF;
5067             ELSE
5068               x_return_status := OKL_API.G_RET_STS_ERROR;
5069               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
5070             END IF;
5071          ELSIF (lt_ib_item_tbl(i).object1_id1 IS NOT NULL OR
5072             lt_ib_item_tbl(i).object1_id1 <> OKL_API.G_MISS_CHAR) AND
5073             (lt_ib_item_tbl(i).object1_id2 IS NOT NULL OR
5074             lt_ib_item_tbl(i).object1_id2 <> OKL_API.G_MISS_CHAR) THEN
5075             -- to get the item info to populate the inventory item id and inventory org id
5076             -- into the txl itm insts table
5077 
5078             OPEN  c_new_model_item_info(p_cle_id     => x_cle_id,
5079                                         p_dnz_chr_id => p_to_chr_id);
5080             IF c_new_model_item_info%NOTFOUND THEN
5081               x_return_status := OKL_API.G_RET_STS_ERROR;
5082               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
5083             END IF;
5084             FETCH c_new_model_item_info INTO l_itiv_rec.inventory_item_id,
5085                                              l_itiv_rec.inventory_org_id;
5086             CLOSE c_new_model_item_info;
5087 
5088             OPEN  c_ib_info(lt_ib_item_tbl(i).object1_id1,
5089                             lt_ib_item_tbl(i).object1_id2);
5090             IF c_ib_info%NOTFOUND THEN
5091                OKL_API.set_message(p_app_name     => G_APP_NAME,
5092                                    p_msg_name     => G_NO_MATCHING_RECORD,
5093                                    p_token1       => G_COL_NAME_TOKEN,
5094                                    p_token1_value => 'OKX_INSTALL_ITEMS_V.OBJECT1_ID1');
5095               x_return_status := OKL_API.G_RET_STS_ERROR;
5096               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
5097             END IF;
5098             FETCH c_ib_info INTO r_ib_info;
5099             CLOSE c_ib_info;
5100             l_itiv_rec.object_id2_new := G_ID2;
5101             l_itiv_rec.jtot_object_code_new := 'OKX_PARTSITE';
5102             l_itiv_rec.instance_number_ib := r_ib_info.name;
5103             l_itiv_rec.line_number := 1;
5104             IF lt_ib_id_tbl.COUNT > 0 AND
5105               r_ib_info.serial_number IS NOT NULL  THEN
5106               l_itiv_rec.mfg_serial_number_yn := 'Y';
5107               l_itiv_rec.serial_number := r_ib_info.serial_number;
5108 
5109             ELSE
5110               l_itiv_rec.mfg_serial_number_yn := 'N';
5111               l_itiv_rec.serial_number := r_ib_info.serial_number;
5112             END IF;
5113             l_itiv_rec.kle_id := lt_new_ib_id_tbl(j).id;
5114             l_itiv_rec.dnz_cle_id := x_cle_id;
5115 
5116             --Bug# 3569441 :
5117             OPEN l_loc_type_csr(p_instance_id => r_ib_info.id1);
5118             Fetch l_loc_type_csr into l_loc_type_rec;
5119             If l_loc_type_csr%NOTFOUND then
5120                 Null;
5121             End If;
5122             CLOSE l_loc_type_csr;
5123 
5124             If nvl(l_loc_type_rec.install_location_type_code,OKL_API.G_MISS_CHAR) not in ('HZ_PARTY_SITES','HZ_LOCATIONS') then
5125 
5126                 --Raise Error
5127                 OKL_API.Set_Message(p_app_name     => G_APP_NAME,
5128                               p_msg_name     => G_INVALID_INSTALL_LOC_TYPE,
5129                               p_token1       => G_LOCATION_TYPE_TOKEN,
5130                               p_token1_value => l_loc_type_rec.install_location_type_code,
5131                               p_token2       => G_LOC_TYPE1_TOKEN,
5132                               p_token2_value => 'HZ_PARTY_SITES',
5133                               p_token3       => G_LOC_TYPE2_TOKEN,
5134                               p_token3_value => 'HZ_LOCATIONS');
5135                 x_return_status := OKL_API.G_RET_STS_ERROR;
5136                 RAISE OKL_API.G_EXCEPTION_ERROR;
5137 
5138             Elsif nvl(l_loc_type_rec.install_location_type_code,OKL_API.G_MISS_CHAR) = 'HZ_PARTY_SITES' then
5139 
5140                 OPEN  c_get_iti_object_id1(r_ib_info.install_location_id);
5141                 FETCH c_get_iti_object_id1 INTO l_itiv_rec.object_id1_new;
5142                 IF c_get_iti_object_id1%NOTFOUND THEN
5143                     Open l_address_csr(pty_site_id => r_ib_info.install_location_id);
5144                     Fetch l_address_csr into l_address;
5145                     Close l_address_csr;
5146                     --Raise Error : not defined as install_at
5147                     OKL_API.Set_Message(p_app_name  => G_APP_NAME,
5148                               p_msg_name     => G_MISSING_USAGE,
5149                               p_token1       => G_USAGE_TYPE_TOKEN,
5150                               p_token1_value => 'INSTALL_AT',
5151                               p_token2       => G_ADDRESS_TOKEN,
5152                               p_token2_value => l_address,
5153                               p_token3       => G_INSTANCE_NUMBER_TOKEN,
5154                               p_token3_value => r_ib_info.instance_number);
5155                     x_return_status := OKL_API.G_RET_STS_ERROR;
5156                     RAISE OKL_API.G_EXCEPTION_ERROR;
5157                 END IF;
5158                 CLOSE c_get_iti_object_id1;
5159 
5160             Elsif nvl(l_loc_type_rec.install_location_type_code,OKL_API.G_MISS_CHAR) = 'HZ_LOCATIONS' then
5161 
5162                 OPEN  l_site_use_csr(r_ib_info.install_location_id);
5163                 FETCH l_site_use_csr INTO l_site_use_rec;
5164                 IF l_site_use_csr%NOTFOUND THEN
5165                     open l_address_csr2(loc_id => r_ib_info.install_location_id);
5166                     fetch l_address_csr2 into l_address;
5167                     close l_address_csr2;
5168                     --Raise Error : not defined as install_at
5169                     OKL_API.Set_Message(p_app_name  => G_APP_NAME,
5170                               p_msg_name     => G_MISSING_USAGE,
5171                               p_token1       => G_USAGE_TYPE_TOKEN,
5172                               p_token1_value => 'INSTALL_AT',
5173                               p_token2       => G_ADDRESS_TOKEN,
5174                               p_token2_value => l_address,
5175                               p_token3       => G_INSTANCE_NUMBER_TOKEN,
5176                               p_token3_value => r_ib_info.instance_number);
5177                     x_return_status := OKL_API.G_RET_STS_ERROR;
5178                     RAISE OKL_API.G_EXCEPTION_ERROR;
5179 
5180                 END IF;
5181                 l_itiv_rec.object_id1_new := l_site_use_rec.party_site_use_id;
5182                 CLOSE l_site_use_csr;
5183 
5184             End If;
5185             --End Bug# 3569441 :
5186 
5187             create_txl_itm_insts(p_api_version    => p_api_version,
5188                                  p_init_msg_list  => p_init_msg_list,
5189                                  x_return_status  => x_return_status,
5190                                  x_msg_count      => x_msg_count,
5191                                  x_msg_data       => x_msg_data,
5192                                  p_itiv_rec       => l_itiv_rec,
5193                                  p_trans_type    =>  p_trans_type,
5194                                  p_asset_number  =>  lx_txlv_rec.asset_number,
5195                                  x_trxv_rec       => lx_instance_trxv_rec,
5196                                  x_itiv_rec       => lx_itiv_rec);
5197             IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5198               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
5199             ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5200               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
5201             END IF;
5202 
5203             -- we have to null out the object1_id1 and object1_id2 in okc_k_items
5204             -- since the copy lines are for a new contract
5205             x_return_status := get_rec_cimv(lx_itiv_rec.kle_id,
5206                                             p_to_chr_id,
5207                                             l_cimv_rec);
5208             IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5209             OKL_API.set_message(p_app_name     => G_APP_NAME,
5210                                 p_msg_name     => G_NO_MATCHING_RECORD,
5211                                 p_token1       => G_COL_NAME_TOKEN,
5212                                 p_token1_value => 'OKC_K_ITEMS_V record');
5213               RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5214             ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5215             OKL_API.set_message(p_app_name     => G_APP_NAME,
5216                                 p_msg_name     => G_NO_MATCHING_RECORD,
5217                                 p_token1       => G_COL_NAME_TOKEN,
5218                                 p_token1_value => 'OKC_K_ITEMS_V record');
5219               RAISE OKL_API.G_EXCEPTION_ERROR;
5220             END IF;
5221             IF l_cimv_rec.cle_id <> lx_itiv_rec.kle_id THEN
5222               OKL_API.set_message(p_app_name     => G_APP_NAME,
5223                                   p_msg_name     => G_NO_MATCHING_RECORD,
5224                                   p_token1       => G_COL_NAME_TOKEN,
5225                                   p_token1_value => 'KLE_ID');
5226               RAISE OKL_API.G_EXCEPTION_ERROR;
5227             END IF;
5228             l_cimv_rec.object1_id1     := null;
5229             l_cimv_rec.object1_id2     := null;
5230             -- Updating of Item Record for the above record information
5231             OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version   => p_api_version,
5232                                                        p_init_msg_list => p_init_msg_list,
5233                                                        x_return_status => x_return_status,
5234                                                        x_msg_count     => x_msg_count,
5235                                                        x_msg_data      => x_msg_data,
5236                                                        p_cimv_rec      => l_cimv_rec,
5237                                                        x_cimv_rec      => lx_cimv_rec);
5238             IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5239               RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5240             ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5241               RAISE OKL_API.G_EXCEPTION_ERROR;
5242             END IF;
5243          ELSE
5244            OKL_API.set_message(p_app_name     => G_APP_NAME,
5245                                p_msg_name     => G_ITEM_RECORD);
5246            x_return_status := OKL_API.G_RET_STS_ERROR;
5247            EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
5248          END IF;
5249          EXIT WHEN (i = lt_ib_id_tbl.LAST);
5250          i := lt_ib_id_tbl.NEXT(i);
5251          j := lt_new_ib_id_tbl.NEXT(j);
5252        END LOOP;
5253        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5254          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5255        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5256           RAISE OKL_API.G_EXCEPTION_ERROR;
5257        END IF;
5258     ELSE
5259       OKL_API.set_message(p_app_name     => G_APP_NAME,
5260                           p_msg_name     => G_LINE_RECORD);
5261       RAISE OKL_API.G_EXCEPTION_ERROR;
5262     END IF;
5263 
5264 
5265     /*-----------------------------------------------------------
5266     --This code commented as Copy refund details has been moved
5267     --to OKL base COPY API (OKL_COPY_CONTRACT_PUB)
5268     --This code put into copy contract
5269     --Bug # 3143522: Subsidies - copy subsidy line payment details
5270     --CREATE_PARTY_PYMT_DTLS (p_api_version      => p_api_version,
5271                             --p_init_msg_list    => p_init_msg_list,
5272                             --x_return_status    => x_return_status,
5273                             --x_msg_count        => x_msg_count,
5274                             --x_msg_data         => x_msg_data,
5275                             --p_from_cle_id      => p_from_cle_id,
5276                             --p_to_cle_id        => x_cle_id);
5277 
5278      --IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5279         --RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5280      --ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5281         --RAISE OKL_API.G_EXCEPTION_ERROR;
5282      --END IF;
5283     --End Bug# : Subsidies enhancement
5284     --This code put into copy contract
5285     -------------------------------------------------------------*/
5286 
5287     --------------
5288     --bug# 2994971
5289     --------------
5290     populate_insurance_category(p_api_version   => p_api_version,
5291                                 p_init_msg_list => p_init_msg_list,
5292                                 x_return_status => x_return_status,
5293                                 x_msg_count     => x_msg_count,
5294                                 x_msg_data      => x_msg_data,
5295                                 p_cle_id        => x_cle_id
5296                                );
5297 
5298      IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5299         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5300      ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5301         RAISE OKL_API.G_EXCEPTION_ERROR;
5302      END IF;
5303     --------------
5304     --bug# 2994971
5305     --------------
5306 
5307     --bug# 3877032
5308     ---------------------------
5309     --recalculate capital amount
5310     ---------------------------
5311     OKL_EXECUTE_FORMULA_PUB.execute(p_api_version   => p_api_version,
5312                                   p_init_msg_list => p_init_msg_list,
5313                                   x_return_status => x_return_status,
5314                                   x_msg_count     => x_msg_count,
5315                                   x_msg_data      => x_msg_data,
5316                                   p_formula_name  => 'LINE_CAP_AMNT',
5317                                   p_contract_id   => p_to_chr_id,
5318                                   p_line_id       => x_cle_id,
5319                                   x_value         => l_fin_klev_rec.capital_amount);
5320    If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
5321         raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5322    Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
5323          raise OKC_API.G_EXCEPTION_ERROR;
5324    End If;
5325 
5326    l_fin_klev_rec.id := x_cle_id;
5327    l_fin_clev_rec.id := x_cle_id;
5328 
5329    okl_contract_pub.update_contract_line(p_api_version   => p_api_version,
5330                                          p_init_msg_list => p_init_msg_list,
5331                                          x_return_status => x_return_status,
5332                                          x_msg_count     => x_msg_count,
5333                                          x_msg_data      => x_msg_data,
5334                                          p_clev_rec      => l_fin_clev_rec,
5335                                          p_klev_rec      => l_fin_klev_rec,
5336                                          x_clev_rec      => lx_fin_clev_rec,
5337                                          x_klev_rec      => lx_fin_klev_rec);
5338    If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
5339          raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5340    Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
5341          raise OKC_API.G_EXCEPTION_ERROR;
5342    End If;
5343    ---------------------------
5344    --recalculate capital amount
5345    ---------------------------
5346 
5347 
5348 
5349     OKL_API.END_ACTIVITY (x_msg_count,
5350                           x_msg_data );
5351   EXCEPTION
5352     WHEN OKL_API.G_EXCEPTION_ERROR THEN
5353       IF c_year_manufactured%ISOPEN THEN
5354           CLOSE c_year_manufactured;
5355       END IF;
5356       IF c_get_deal_type%ISOPEN THEN
5357          CLOSE c_get_deal_type;
5358       END IF;
5359       IF c_check_txl_rec%ISOPEN THEN
5360          CLOSE c_check_txl_rec;
5361       END IF;
5362       IF c_check_iti_rec%ISOPEN THEN
5363          CLOSE c_check_iti_rec;
5364       END IF;
5365       IF c_asset_info%ISOPEN THEN
5366          CLOSE c_asset_info;
5367       END IF;
5368       IF c_asset_loc_info%ISOPEN THEN
5369          CLOSE c_asset_loc_info;
5370       END IF;
5371       IF c_asset_details_info%ISOPEN THEN
5372          CLOSE c_asset_details_info;
5373       END IF;
5374       IF c_ib_info%ISOPEN THEN
5375          CLOSE c_ib_info;
5376       END IF;
5377       IF c_new_fa_line_id%ISOPEN THEN
5378          CLOSE c_new_fa_line_id;
5379       END IF;
5380       IF c_new_ib_line_id%ISOPEN THEN
5381          CLOSE c_new_ib_line_id;
5382       END IF;
5383       IF c_new_model_item_info%ISOPEN THEN
5384          CLOSE c_new_model_item_info;
5385       END IF;
5386       IF c_get_iti_object_id1%ISOPEN THEN
5387          CLOSE c_get_iti_object_id1;
5388       END IF;
5389       --Bug# 2981308 :
5390       IF l_fab_csr%ISOPEN then
5391           close l_fab_csr;
5392       END IF;
5393       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5394                                  l_api_name,
5395                                  G_PKG_NAME,
5396                                  'OKL_API.G_RET_STS_ERROR',
5397                                  x_msg_count,
5398                                  x_msg_data,
5399                                  '_PVT');
5400     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5401       IF c_year_manufactured%ISOPEN THEN
5402           CLOSE c_year_manufactured;
5403       END IF;
5404       IF c_get_deal_type%ISOPEN THEN
5405          CLOSE c_get_deal_type;
5406       END IF;
5407       IF c_get_iti_object_id1%ISOPEN THEN
5408          CLOSE c_get_iti_object_id1;
5409       END IF;
5410       IF c_check_txl_rec%ISOPEN THEN
5411          CLOSE c_check_txl_rec;
5412       END IF;
5413       IF c_check_iti_rec%ISOPEN THEN
5414          CLOSE c_check_iti_rec;
5415       END IF;
5416       IF c_asset_loc_info%ISOPEN THEN
5417          CLOSE c_asset_loc_info;
5418       END IF;
5419       IF c_asset_info%ISOPEN THEN
5420          CLOSE c_asset_info;
5421       END IF;
5422       IF c_asset_details_info%ISOPEN THEN
5423          CLOSE c_asset_details_info;
5424       END IF;
5425       IF c_ib_info%ISOPEN THEN
5426          CLOSE c_ib_info;
5427       END IF;
5428       IF c_new_fa_line_id%ISOPEN THEN
5429          CLOSE c_new_fa_line_id;
5430       END IF;
5431       IF c_new_ib_line_id%ISOPEN THEN
5432          CLOSE c_new_ib_line_id;
5433       END IF;
5434       IF c_new_model_item_info%ISOPEN THEN
5435          CLOSE c_new_model_item_info;
5436       END IF;
5437       --Bug# 2981308 :
5438       IF l_fab_csr%ISOPEN then
5439           close l_fab_csr;
5440       END IF;
5441       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5442                                 l_api_name,
5443                                 G_PKG_NAME,
5444                                 'OKL_API.G_RET_STS_UNEXP_ERROR',
5445                                 x_msg_count,
5446                                 x_msg_data,
5447                                 '_PVT');
5448     WHEN OTHERS THEN
5449       IF c_year_manufactured%ISOPEN THEN
5450           CLOSE c_year_manufactured;
5451       END IF;
5452       IF c_get_deal_type%ISOPEN THEN
5453          CLOSE c_get_deal_type;
5454       END IF;
5455       IF c_get_iti_object_id1%ISOPEN THEN
5456          CLOSE c_get_iti_object_id1;
5457       END IF;
5458       IF c_check_txl_rec%ISOPEN THEN
5459          CLOSE c_check_txl_rec;
5460       END IF;
5461       IF c_check_iti_rec%ISOPEN THEN
5462          CLOSE c_check_iti_rec;
5463       END IF;
5464       IF c_asset_info%ISOPEN THEN
5465          CLOSE c_asset_info;
5466       END IF;
5467       IF c_asset_loc_info%ISOPEN THEN
5468          CLOSE c_asset_loc_info;
5469       END IF;
5470       IF c_asset_details_info%ISOPEN THEN
5471          CLOSE c_asset_details_info;
5472       END IF;
5473       IF c_ib_info%ISOPEN THEN
5474          CLOSE c_ib_info;
5475       END IF;
5476       IF c_new_fa_line_id%ISOPEN THEN
5477          CLOSE c_new_fa_line_id;
5478       END IF;
5479       IF c_new_ib_line_id%ISOPEN THEN
5480          CLOSE c_new_ib_line_id;
5481       END IF;
5482       IF c_new_model_item_info%ISOPEN THEN
5483          CLOSE c_new_model_item_info;
5484       END IF;
5485       --Bug# 2981308 :
5486       IF l_fab_csr%ISOPEN then
5487           close l_fab_csr;
5488       END IF;
5489       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5490                                 l_api_name,
5491                                 G_PKG_NAME,
5492                                 'OTHERS',
5493                                 x_msg_count,
5494                                 x_msg_data,
5495                                 '_PVT');
5496   END copy_asset_lines;
5497 -----------------------------------------------------------------------------------------------
5498 --------------------------- Main Process for Copy of Asset Line -------------------------------
5499 -----------------------------------------------------------------------------------------------
5500   Procedure copy_asset_lines(
5501             p_api_version        IN  NUMBER,
5502             p_init_msg_list      IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
5503             x_return_status      OUT NOCOPY VARCHAR2,
5504             x_msg_count          OUT NOCOPY NUMBER,
5505             x_msg_data           OUT NOCOPY VARCHAR2,
5506             p_from_cle_id_tbl    IN  klev_tbl_type,
5507             p_to_cle_id          IN  NUMBER DEFAULT OKL_API.G_MISS_NUM,
5508             p_to_chr_id          IN  NUMBER,
5509             p_to_template_yn	 IN  VARCHAR2,
5510             p_copy_reference	 IN  VARCHAR2,
5511             p_copy_line_party_yn IN  VARCHAR2,
5512             p_renew_ref_yn       IN  VARCHAR2,
5513             p_trans_type         IN  VARCHAR2,
5514             x_cle_id_tbl         OUT NOCOPY klev_tbl_type)
5515   IS
5516     l_api_name           CONSTANT VARCHAR2(30) := 'CREATE_COPY_ASSETS';
5517     l_api_version        CONSTANT NUMBER := 1;
5518     i                             NUMBER := 0;
5519   BEGIN
5520     OKL_API.init_msg_list(p_init_msg_list);
5521     -- Make sure PL/SQL table has records in it before passing
5522     IF (p_from_cle_id_tbl.COUNT > 0) THEN
5523       i := p_from_cle_id_tbl.FIRST;
5524       LOOP
5525         copy_asset_lines(p_api_version        => p_api_version,
5526                          p_init_msg_list      => p_init_msg_list,
5527                          x_return_status      => x_return_status,
5528                          x_msg_count          => x_msg_count,
5529                          x_msg_data           => x_msg_data,
5530                          P_from_cle_id        => p_from_cle_id_tbl(i).id,
5531                          p_to_cle_id          => p_to_cle_id,
5532                          p_to_chr_id          => p_to_chr_id,
5533                          p_to_template_yn     => p_to_template_yn,
5534                          p_copy_reference     => p_copy_reference,
5535                          p_copy_line_party_yn => p_copy_line_party_yn,
5536                          p_renew_ref_yn       => p_renew_ref_yn,
5537                          p_trans_type         => p_trans_type,
5538                          x_cle_id             => x_cle_id_tbl(i).id);
5539         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5540           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
5541         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5542           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
5543         END IF;
5544         EXIT WHEN (i = p_from_cle_id_tbl.LAST);
5545         i := p_from_cle_id_tbl.NEXT(i);
5546       END LOOP;
5547     END IF;
5548   EXCEPTION
5549     WHEN OKL_API.G_EXCEPTION_ERROR THEN
5550       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5551                                  l_api_name,
5552                                  G_PKG_NAME,
5553                                  'OKL_API.G_RET_STS_ERROR',
5554                                  x_msg_count,
5555                                  x_msg_data,
5556                                  '_PVT');
5557     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5558       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5559                                 l_api_name,
5560                                 G_PKG_NAME,
5561                                 'OKL_API.G_RET_STS_UNEXP_ERROR',
5562                                 x_msg_count,
5563                                 x_msg_data,
5564                                 '_PVT');
5565     WHEN OTHERS THEN
5566       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5567                                 l_api_name,
5568                                 G_PKG_NAME,
5569                                 'OTHERS',
5570                                 x_msg_count,
5571                                 x_msg_data,
5572                                 '_PVT');
5573   END copy_asset_lines;
5574 -----------------------------------------------------------------------------------------------------
5575   PROCEDURE link_cov_asst(p_api_version              IN  NUMBER,
5576                           p_init_msg_list            IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
5577                           x_return_status            OUT NOCOPY VARCHAR2,
5578                           x_msg_count                OUT NOCOPY NUMBER,
5579                           x_msg_data                 OUT NOCOPY VARCHAR2,
5580                           p_orig_lnk_cle_id          IN  NUMBER,
5581                           p_new_lnk_cim_id           IN  NUMBER,
5582                           p_object_code              IN  VARCHAR2,
5583                           p_new_chr_id               IN  NUMBER) IS
5584     l_api_name         VARCHAR2(30) := 'LINK_COV_ASSET';
5585     l_new_cle_id       OKC_K_LINES_B.ID%TYPE;
5586     l_new_lnk_cim_id   NUMBER;
5587     l_cimv_rec         OKL_OKC_MIGRATION_PVT.cimv_rec_type;
5588     lx_cimv_rec        OKL_OKC_MIGRATION_PVT.cimv_rec_type;
5589     --cursor to fetch original fin linked asset line id
5590     CURSOR l_orig_ast_csr(p_orig_lnk_cle_id IN NUMBER,
5591                           p_new_chr_id      IN NUMBER) IS
5592     SELECT new_cle.id
5593     FROM OKC_K_LINES_B new_cle,
5594          OKC_K_ITEMS   orig_lnk_cim
5595     WHERE
5596     --Bug# 2998115 :
5597    --Bug# 3868709 : Query fixed for Performance issue
5598    ((new_cle.ORIG_SYSTEM_ID1 = orig_lnk_cim.object1_id1)
5599       OR
5600       exists (select null
5601               from   OKC_K_LINES_B rbk_cle
5602               where  rbk_cle.id  = orig_lnk_cim.object1_id1
5603               AND rbk_cle.ORIG_SYSTEM_ID1 = new_cle.id)
5604      )
5605     AND new_cle.chr_id          = p_new_chr_id
5606     AND orig_lnk_cim.cle_id     = p_orig_lnk_cle_id
5607     AND orig_lnk_cim.jtot_object1_code = 'OKX_COVASST'
5608     AND not exists (select null
5609                    from OKC_K_LINES_B another_cle
5610                    where another_cle.orig_system_id1 = new_cle.orig_system_id1
5611                    and another_cle.lse_id = new_cle.lse_id
5612                    and another_cle.chr_id = new_cle.chr_id
5613                    and another_cle.id <> new_cle.id);
5614 
5615     --Bug# 3877032 : CAP AMNT
5616     cursor l_cap_amnt_csr(p_cim_id in number) is
5617     select  cov_ast_cim.object1_id1,
5618             cov_ast_cim.dnz_chr_id
5619     from   okc_k_lines_b          cov_ast_cleb,
5620            okc_line_styles_b      cov_ast_lseb,
5621            okl_k_lines            fee_kle,
5622            okc_k_items            cov_ast_cim
5623     where  fee_kle.id            = cov_ast_cleb.cle_id
5624     and    fee_kle.fee_type      = 'CAPITALIZED'
5625     and    cov_ast_lseb.id       =  cov_ast_cleb.lse_id
5626     and    cov_ast_lseb.lty_code = 'LINK_FEE_ASSET'
5627     and    cov_ast_cleb.id       =  cov_ast_cim.cle_id
5628     and    cov_ast_cim.id        = p_cim_id
5629     and    cov_ast_cim.jtot_object1_code = 'OKX_COVASST'
5630     --Bug# 4057305 : exclude the linked asset lines for which the asset does not
5631     --               exist on the same contract
5632     and    exists (select '1'
5633                    from   okc_k_lines_b fin_ast_cleb,
5634                           okc_line_styles_b fin_ast_lseb
5635                    where  fin_ast_cleb.id         =  cov_ast_cim.object1_id1
5636                    and    fin_ast_cleb.lse_id     =  fin_ast_lseb.id
5637                    and    fin_ast_lseb.lty_code   =  'FREE_FORM1'
5638                    and    fin_ast_cleb.dnz_chr_id = cov_ast_cim.dnz_chr_id);
5639 
5640 
5641     l_fin_clev_rec    okl_okc_migration_pvt.clev_rec_type;
5642     l_fin_klev_rec    okl_contract_pub.klev_rec_type;
5643     lx_fin_clev_rec   okl_okc_migration_pvt.clev_rec_type;
5644     lx_fin_klev_rec   okl_contract_pub.klev_rec_type;
5645 
5646   BEGIN
5647     x_return_status := OKL_API.G_RET_STS_SUCCESS;
5648     l_new_lnk_cim_id := p_new_lnk_cim_id;
5649     IF p_object_code in ('OKL_USAGE','OKX_LEASE') THEN --for covered usage contract and syndicated contract
5650       l_cimv_rec.id                := l_new_lnk_cim_id;
5651       l_cimv_rec.object1_id1       := OKL_API.G_MISS_CHAR;
5652       l_cimv_rec.object1_id2       := OKL_API.G_MISS_CHAR;
5653       l_cimv_rec.jtot_object1_code := OKL_API.G_MISS_CHAR;
5654     Else --for covered asset
5655       OPEN  l_orig_ast_csr(p_orig_lnk_cle_id => p_orig_lnk_cle_id,
5656                           p_new_chr_id      => p_new_chr_id);
5657       FETCH l_orig_ast_csr into l_new_cle_id;
5658       IF l_orig_ast_csr%NOTFOUND THEN
5659         --null out the new link
5660         l_cimv_rec.id                := l_new_lnk_cim_id;
5661         l_cimv_rec.object1_id1       := OKL_API.G_MISS_CHAR;
5662         l_cimv_rec.object1_id2       := OKL_API.G_MISS_CHAR;
5663         l_cimv_rec.jtot_object1_code := OKL_API.G_MISS_CHAR;
5664       ELSE
5665         --update the new link with new asset
5666         l_cimv_rec.id := l_new_lnk_cim_id;
5667         l_cimv_rec.object1_id1 := to_char(l_new_cle_id);
5668       END IF;
5669       CLOSE l_orig_ast_csr;
5670     END IF;
5671     --update link contract item accordingly
5672     okl_okc_migration_pvt.update_contract_item(p_api_version    => p_api_version,
5673                                                p_init_msg_list  => p_init_msg_list,
5674                                                x_return_status  => x_return_status,
5675                                                x_msg_count      => x_msg_count,
5676                                                x_msg_data       => x_msg_data,
5677                                                p_cimv_rec       => l_cimv_rec,
5678                                                x_cimv_rec       => lx_cimv_rec);
5679     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5680       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5681     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5682       RAISE OKL_API.G_EXCEPTION_ERROR;
5683     END IF;
5684 
5685     --Bug# 3877032
5686     If nvl(lx_cimv_rec.object1_id1,okl_api.g_miss_char) <> okl_api.g_miss_char then
5687         for l_cap_amnt_rec in l_cap_amnt_csr(lx_cimv_rec.id)
5688         Loop
5689              l_fin_klev_rec.id := to_number(l_cap_amnt_rec.object1_id1);
5690              l_fin_clev_rec.dnz_chr_id := l_cap_amnt_rec.dnz_chr_id;
5691              l_fin_clev_rec.id := to_number(l_cap_amnt_rec.object1_id1);
5692              OKL_EXECUTE_FORMULA_PUB.execute(p_api_version   => p_api_version,
5693                                            p_init_msg_list => p_init_msg_list,
5694                                            x_return_status => x_return_status,
5695                                            x_msg_count     => x_msg_count,
5696                                            x_msg_data      => x_msg_data,
5697                                            p_formula_name  => 'LINE_CAP_AMNT',
5698                                            p_contract_id   => l_fin_clev_rec.dnz_chr_id,
5699                                            p_line_id       => to_number(l_fin_klev_rec.id),
5700                                            x_value         => l_fin_klev_rec.capital_amount);
5701            If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
5702                  raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5703            Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
5704                  raise OKC_API.G_EXCEPTION_ERROR;
5705            End If;
5706 
5707 
5708            okl_contract_pub.update_contract_line(p_api_version   => p_api_version,
5709                                                  p_init_msg_list => p_init_msg_list,
5710                                                  x_return_status => x_return_status,
5711                                                  x_msg_count     => x_msg_count,
5712                                                  x_msg_data      => x_msg_data,
5713                                                  p_clev_rec      => l_fin_clev_rec,
5714                                                  p_klev_rec      => l_fin_klev_rec,
5715                                                  x_clev_rec      => lx_fin_clev_rec,
5716                                                  x_klev_rec      => lx_fin_klev_rec);
5717            If x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR Then
5718                  raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5719            Elsif x_return_status = OKC_API.G_RET_STS_ERROR Then
5720                  raise OKC_API.G_EXCEPTION_ERROR;
5721            End If;
5722         End Loop;
5723     End If;
5724 
5725   EXCEPTION
5726     WHEN OKL_API.G_EXCEPTION_ERROR THEN
5727       IF l_orig_ast_csr%ISOPEN THEN
5728         CLOSE l_orig_ast_csr;
5729       END IF;
5730       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5731                                  l_api_name,
5732                                  G_PKG_NAME,
5733                                  'OKL_API.G_RET_STS_ERROR',
5734                                  x_msg_count,
5735                                  x_msg_data,
5736                                  '_PVT');
5737     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5738       IF l_orig_ast_csr%ISOPEN THEN
5739         CLOSE l_orig_ast_csr;
5740       END IF;
5741       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5742                                 l_api_name,
5743                                 G_PKG_NAME,
5744                                 'OKL_API.G_RET_STS_UNEXP_ERROR',
5745                                 x_msg_count,
5746                                 x_msg_data,
5747                                 '_PVT');
5748     WHEN OTHERS THEN
5749       IF l_orig_ast_csr%ISOPEN THEN
5750         CLOSE l_orig_ast_csr;
5751       END IF;
5752       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5753                                 l_api_name,
5754                                 G_PKG_NAME,
5755                                 'OTHERS',
5756                                 x_msg_count,
5757                                 x_msg_data,
5758                                 '_PVT');
5759   END link_cov_asst;
5760 
5761   --
5762   -- NAME: copy_service_line_link
5763   --
5764   -- DESCRIPTION: This process copies records from OKC_K_REL_OBJS
5765   --              in case a linked service line exists at copied contract.
5766   --
5767   PROCEDURE copy_service_line_link(
5768                                    x_return_status   OUT NOCOPY VARCHAR2,
5769                                    x_msg_count       OUT NOCOPY NUMBER,
5770                                    x_msg_data        OUT NOCOPY VARCHAR2,
5771                                    p_to_chr_id       IN  OKC_K_HEADERS_B.ID%TYPE,
5772                                    p_from_line_id    IN  OKC_K_LINES_B.ID%TYPE
5773                                   ) IS
5774   CURSOR line_style_csr(p_top_line_id OKC_K_LINES_B.ID%TYPE) IS
5775   SELECT lse.lty_code,
5776          cle.dnz_chr_id
5777   FROM   okc_line_styles_b lse,
5778          okc_k_lines_b cle
5779   WHERE cle.id       = p_top_line_id
5780   AND   cle.lse_id   = lse.id
5781   AND   lse.lse_parent_id is null
5782   AND   lse.lse_type = G_TLS_TYPE;
5783 
5784   CURSOR h_new_link_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
5785   SELECT 'Y'
5786   FROM   okc_k_rel_objs
5787   WHERE  chr_id = p_chr_id
5788   AND    cle_id IS NULL
5789   AND    rty_code = 'OKLSRV'
5790   AND    jtot_object1_code = 'OKL_SERVICE';
5791 
5792   CURSOR h_old_link_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
5793   SELECT cle_id,
5794          chr_id,
5795          rty_code,
5796          object1_id1,
5797          object1_id2,
5798          jtot_object1_code
5799   FROM   okc_k_rel_objs
5800   WHERE  chr_id = p_chr_id
5801   AND    cle_id IS NULL
5802   AND    rty_code = 'OKLSRV'
5803   AND    jtot_object1_code = 'OKL_SERVICE';
5804 
5805   --
5806   -- returns linked service top line
5807   -- and its sub-lines
5808   --
5809   CURSOR srv_link_csr (p_srv_top_line_id OKC_K_LINES_V.ID%TYPE) IS
5810   SELECT rel.id,
5811          rel.cle_id,
5812          rel.chr_id,
5813          rel.rty_code,
5814          rel.object1_id1,
5815          rel.object1_id2,
5816          rel.jtot_object1_code
5817   FROM   okc_k_rel_objs rel
5818   WHERE  rty_code          = 'OKLSRV'
5819   AND    cle_id is not null
5820   AND    jtot_object1_code = 'OKL_SERVICE_LINE'
5821   AND    cle_id            = p_srv_top_line_id
5822   UNION
5823   SELECT rel.id,
5824          rel.cle_id,
5825          rel.chr_id,
5826          rel.rty_code,
5827          rel.object1_id1,
5828          rel.object1_id2,
5829          rel.jtot_object1_code
5830   FROM   okc_k_rel_objs rel,
5831          okc_k_lines_b line
5832   WHERE  rty_code              = 'OKLSRV'
5833   AND    rel.cle_id is not null
5834   AND    rel.jtot_object1_code = 'OKL_COV_PROD'
5835   AND    rel.cle_id            = line.id
5836   AND    line.cle_id           = p_srv_top_line_id;
5837 
5838   CURSOR copy_line_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE,
5839                         p_line_id OKC_K_LINES_V.ID%TYPE) IS
5840   SELECT id
5841   FROM   okc_k_lines_b
5842   WHERE  orig_system_id1 = p_line_id
5843   AND    dnz_chr_id      = p_chr_id;
5844 
5845   copy_service_failed EXCEPTION;
5846   l_lty_code          OKC_LINE_STYLES_B.LTY_CODE%TYPE;
5847   l_from_chr_id       OKC_K_HEADERS_B.ID%TYPE;
5848   l_h_link_exist      VARCHAR2(1) := 'N';
5849   l_to_line_id        OKC_K_LINES_V.ID%TYPE;
5850 
5851   l_crjv_rec          OKC_K_REL_OBJS_PUB.crjv_rec_type;
5852   x_crjv_rec          OKC_K_REL_OBJS_PUB.crjv_rec_type;
5853 
5854   BEGIN
5855 
5856      x_return_status := OKL_API.G_RET_STS_SUCCESS;
5857 
5858      l_lty_code := '?';
5859      OPEN  line_style_csr(p_from_line_id);
5860      IF line_style_csr%NOTFOUND THEN
5861         OKL_API.set_message(p_app_name  => G_APP_NAME,
5862                             p_msg_name  => G_LINE_RECORD);
5863         -- halt validation
5864         RAISE copy_service_failed;
5865      END IF;
5866 
5867      FETCH line_style_csr INTO l_lty_code,
5868                                l_from_chr_id;
5869      CLOSE line_style_csr;
5870 
5871      --
5872      -- Copy link only in case of SERVICE line
5873      --
5874      IF (l_lty_code = G_SER_LINE_LTY_CODE) THEN -- SERVICE LINE
5875 
5876         FOR h_old_link_rec IN h_old_link_csr(l_from_chr_id)
5877         LOOP
5878            --
5879            -- Link exist for this contract
5880            -- so, check for header link after copy
5881            -- if no link exists, create one
5882            --
5883            l_h_link_exist := '?';
5884            OPEN h_new_link_csr(p_to_chr_id);
5885            FETCH h_new_link_csr INTO l_h_link_exist;
5886            CLOSE h_new_link_csr;
5887 
5888            IF (l_h_link_exist <> 'Y') THEN -- create header link first
5889               l_crjv_rec := NULL;
5890               l_crjv_rec.chr_id            := p_to_chr_id;
5891               l_crjv_rec.cle_id            := NULL;
5892               l_crjv_rec.rty_code          := h_old_link_rec.rty_code;
5893               l_crjv_rec.object1_id1       := h_old_link_rec.object1_id1;
5894               l_crjv_rec.object1_id2       := h_old_link_rec.object1_id2;
5895               l_crjv_rec.jtot_object1_code := h_old_link_rec.jtot_object1_code;
5896 
5897               OKC_K_REL_OBJS_PUB.create_row (
5898                                              p_api_version => 1.0,
5899                                              p_init_msg_list => OKC_API.G_FALSE,
5900                                              x_return_status => x_return_status,
5901                                              x_msg_count     => x_msg_count,
5902                                              x_msg_data      => x_msg_data,
5903                                              p_crjv_rec      => l_crjv_rec,
5904                                              x_crjv_rec      => x_crjv_rec
5905                                             );
5906 
5907               IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5908                  RAISE OKC_API.G_EXCEPTION_ERROR;
5909               END IF;
5910            END IF; -- l_h_link_exist = 'Y'
5911 
5912            --
5913            -- Now check for service line link
5914            -- If link exists for this service top line
5915            -- create links for the top as well as sub-lines
5916            --
5917            FOR srv_link_rec IN srv_link_csr (p_from_line_id)
5918            LOOP
5919              l_crjv_rec := NULL;
5920              l_crjv_rec.chr_id            := p_to_chr_id;
5921              l_crjv_rec.rty_code          := srv_link_rec.rty_code;
5922              l_crjv_rec.object1_id1       := srv_link_rec.object1_id1;
5923              l_crjv_rec.object1_id2       := srv_link_rec.object1_id2;
5924              l_crjv_rec.jtot_object1_code := srv_link_rec.jtot_object1_code;
5925 
5926              IF (srv_link_rec.cle_id IS NOT NULL) THEN  -- get corresponding copied line ID
5927                 OPEN copy_line_csr(p_to_chr_id,
5928                                    srv_link_rec.cle_id);
5929                 FETCH copy_line_csr INTO l_to_line_id;
5930                 CLOSE copy_line_csr;
5931 
5932                 l_crjv_rec.cle_id := l_to_line_id;
5933              END IF;
5934 
5935              OKC_K_REL_OBJS_PUB.create_row (
5936                                             p_api_version => 1.0,
5937                                             p_init_msg_list => OKC_API.G_FALSE,
5938                                             x_return_status => x_return_status,
5939                                             x_msg_count     => x_msg_count,
5940                                             x_msg_data      => x_msg_data,
5941                                             p_crjv_rec      => l_crjv_rec,
5942                                             x_crjv_rec      => x_crjv_rec
5943                                            );
5944 
5945              IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
5946                 RAISE OKC_API.G_EXCEPTION_ERROR;
5947              END IF;
5948 
5949            END LOOP;
5950         END LOOP; -- h_old_link_csr
5951      END IF;
5952 
5953   EXCEPTION
5954      WHEN copy_service_failed THEN
5955        x_return_status := OKL_API.G_RET_STS_ERROR;
5956   END copy_service_line_link;
5957 
5958 -----------------------------------------------------------------------------------------------
5959 --------------------------- Main Process for Copy of All Lines --------------------------------
5960 -----------------------------------------------------------------------------------------------
5961   Procedure copy_all_lines(
5962             p_api_version        IN  NUMBER,
5963             p_init_msg_list      IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
5964             x_return_status      OUT NOCOPY VARCHAR2,
5965             x_msg_count          OUT NOCOPY NUMBER,
5966             x_msg_data           OUT NOCOPY VARCHAR2,
5967             p_from_cle_id_tbl    IN  klev_tbl_type,
5968             p_to_cle_id          IN  NUMBER DEFAULT OKL_API.G_MISS_NUM,
5969             p_to_chr_id          IN  NUMBER,
5970             p_to_template_yn	 IN  VARCHAR2,
5971             p_copy_reference	 IN  VARCHAR2,
5972             p_copy_line_party_yn IN  VARCHAR2,
5973             p_renew_ref_yn       IN  VARCHAR2,
5974             p_trans_type         IN  VARCHAR2,
5975             x_cle_id_tbl         OUT NOCOPY klev_tbl_type)
5976   IS
5977     l_api_name           CONSTANT VARCHAR2(30) := 'CREATE_COPY_ASSETS';
5978     l_api_version        CONSTANT NUMBER := 1;
5979     i                             NUMBER := 0;
5980     lv_lty_code                   OKC_LINE_STYLES_B.LTY_CODE%TYPE;
5981     lx_cle_id_tbl                 klev_tbl_type;
5982     l_new_lnk_cle_id              OKC_K_LINES_B.ID%TYPE;
5983     l_orig_lnk_cle_id             OKC_K_LINES_B.ID%TYPE;
5984     l_new_lnk_cim_id              OKC_K_ITEMS.ID%TYPE;
5985     l_jtot_object1_code           OKC_K_ITEMS.JTOT_OBJECT1_CODE%TYPE;
5986     l_object1_id1                 OKC_K_ITEMS.OBJECT1_ID1%TYPE;
5987     l_object1_id2                 OKC_K_ITEMS.OBJECT1_ID2%TYPE;
5988     l_cle_id                      OKC_K_LINES_B.ID%TYPE;
5989     l_dnz_chr_id                  OKC_K_LINES_B.DNZ_CHR_ID%TYPE;
5990     l_level                       NUMBER;
5991     l_orig_system_id1             OKC_K_LINES_B.ORIG_SYSTEM_ID1%TYPE;
5992 
5993     lsx_cle_id_tbl                klev_tbl_type;
5994     j                             NUMBER := 0;
5995     k                             NUMBER := 0;
5996     m                             NUMBER := 0;
5997     ln_old_chr_id                 OKC_K_HEADERS_B.ID%TYPE;
5998 
5999     CURSOR c_get_lty_code(p_top_line_id OKC_K_LINES_B.ID%TYPE) IS
6000 
6001     SELECT lse.lty_code,
6002            cle.dnz_chr_id
6003     FROM okc_line_styles_b lse,
6004          okc_k_lines_b cle
6005     WHERE cle.id = p_top_line_id
6006     AND cle.lse_id = lse.id
6007     AND lse.lse_parent_id is null
6008     AND lse.lse_type = G_TLS_TYPE;
6009 
6010     CURSOR c_get_tls_spk(p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE)
6011     IS
6012     SELECT cle.id top_line_id
6013     FROM okc_line_styles_b lse,
6014          okc_k_lines_b cle
6015     WHERE cle.dnz_chr_id = p_dnz_chr_id
6016     AND cle.lse_id = lse.id
6017     AND lse.lse_parent_id is null
6018     AND lse.lse_type = G_TLS_TYPE
6019     AND lse.lty_code in (G_FEE_LINE_LTY_CODE,G_SER_LINE_LTY_CODE,G_UBB_LINE_LTY_CODE);
6020 
6021     --cursor to fetch all the lines under a top line
6022     cursor  l_cle_csr(p_cle_id IN NUMBER) IS
6023     SELECT level,
6024 	   id,
6025 	   dnz_chr_id,
6026            orig_system_id1
6027     FROM okc_k_lines_b
6028     CONNECT BY  PRIOR id = cle_id
6029     START WITH  id = p_cle_id;
6030 
6031     --cursor to fetch copied link lines for fixing
6032     Cursor l_lnk_csr (p_cle_id IN NUMBER) is
6033     SELECT new_lnk_cle.id,
6034            new_lnk_cle.orig_system_id1,
6035            new_lnk_cim.id,
6036            new_lnk_cim.jtot_object1_code,
6037            new_lnk_cim.object1_id1,
6038            new_lnk_cim.object1_id2
6039     FROM okc_k_items     new_lnk_cim,
6040          okc_k_lines_b   new_lnk_cle
6041     WHERE new_lnk_cim.cle_id     = new_lnk_cle.id
6042     AND new_lnk_cim.dnz_chr_id = new_lnk_cle.dnz_chr_id
6043     --Bug# 4899328
6044     -- To link cov assets when copying only sub-lines
6045     --AND new_lnk_cle.cle_id     = p_cle_id;
6046     AND new_lnk_cle.id     = p_cle_id;
6047 
6048     -- Get contract context
6049     CURSOR h_context_csr (p_chr_id OKC_K_HEADERS_V.ID%TYPE) IS
6050     SELECT authoring_org_id,
6051            inv_organization_id
6052     FROM   okc_k_headers_b
6053     WHERE  id = p_chr_id;
6054 
6055     l_auth_org_id OKC_K_HEADERS_V.AUTHORING_ORG_ID%TYPE;
6056     l_inv_org_id  OKC_K_HEADERS_V.INV_ORGANIZATION_ID%TYPE;
6057 
6058   BEGIN
6059     OKL_API.init_msg_list(p_init_msg_list);
6060     -- Make sure PL/SQL table has records in it before passing
6061 
6062     --
6063     -- Set the context once again
6064     --
6065     OPEN h_context_csr (p_to_chr_id);
6066     FETCH h_context_csr INTO l_auth_org_id,
6067                              l_inv_org_id;
6068     CLOSE h_context_csr;
6069 
6070     OKL_CONTEXT.SET_OKC_ORG_CONTEXT(l_auth_org_id,l_inv_org_id);
6071 
6072 
6073     IF (p_from_cle_id_tbl.COUNT > 0) THEN
6074       i := p_from_cle_id_tbl.FIRST;
6075       LOOP
6076         OPEN  c_get_lty_code(p_from_cle_id_tbl(i).id);
6077         IF c_get_lty_code%NOTFOUND THEN
6078           OKL_API.set_message(p_app_name  => G_APP_NAME,
6079                               p_msg_name => G_LINE_RECORD);
6080           -- halt validation
6081           RAISE G_EXCEPTION_HALT_VALIDATION;
6082         END IF;
6083         FETCH c_get_lty_code INTO lv_lty_code,
6084                                   ln_old_chr_id;
6085         CLOSE c_get_lty_code;
6086         IF lv_lty_code = G_FIN_LINE_LTY_CODE THEN
6087           copy_asset_lines(p_api_version        => p_api_version,
6088                            p_init_msg_list      => p_init_msg_list,
6089                            x_return_status      => x_return_status,
6090                            x_msg_count          => x_msg_count,
6091                            x_msg_data           => x_msg_data,
6092                            P_from_cle_id        => p_from_cle_id_tbl(i).id,
6093                            p_to_cle_id          => p_to_cle_id,
6094                            p_to_chr_id          => p_to_chr_id,
6095                            p_to_template_yn     => p_to_template_yn,
6096                            p_copy_reference     => p_copy_reference,
6097                            p_copy_line_party_yn => p_copy_line_party_yn,
6098                            p_renew_ref_yn       => p_renew_ref_yn,
6099                            p_trans_type         => p_trans_type,
6100                            x_cle_id             => x_cle_id_tbl(i).id);
6101           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6102             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
6103           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6104             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
6105           END IF;
6106         ELSE
6107           OKL_COPY_CONTRACT_PUB.COPY_CONTRACT_LINES(
6108                                 p_api_version        => p_api_version,
6109                                 p_init_msg_list      => p_init_msg_list,
6110                                 x_return_status      => x_return_status,
6111                                 x_msg_count          => x_msg_count,
6112                                 x_msg_data           => x_msg_data,
6113                                 p_from_cle_id        => p_from_cle_id_tbl(i).id,
6114                                 p_to_cle_id          => p_to_cle_id,
6115                                 p_to_chr_id          => p_to_chr_id,
6116                                 p_to_template_yn     => p_to_template_yn,
6117                                 p_copy_reference     => p_copy_reference,
6118                                 p_copy_line_party_yn => p_copy_line_party_yn,
6119                                 p_renew_ref_yn       => p_renew_ref_yn,
6120                                 x_cle_id             => x_cle_id_tbl(i).id);
6121           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6122             OKL_API.set_message(p_app_name     => G_APP_NAME,
6123                                 p_msg_name     => G_COPY_LINE);
6124             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
6125           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6126             OKL_API.set_message(p_app_name     => G_APP_NAME,
6127                                 p_msg_name     => G_COPY_LINE);
6128             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
6129           END IF;
6130 
6131           --Bug# 2872267:
6132           /*-----------------------------------------------------------------
6133           --
6134           -- Copy Link detail from OKC_K_REL_OBJS
6135           -- in case of Service Integration, where
6136           -- OKL service line(s) is/are linked with OKS Service contract
6137           --
6138           --copy_service_line_link(
6139                                  --x_return_status   => x_return_status,
6140                                  --x_msg_count       => x_msg_count,
6141                                  --x_msg_data        => x_msg_data,
6142                                  --p_to_chr_id       => p_to_chr_id,
6143                                  --p_from_line_id    => p_from_cle_id_tbl(i).id
6144                                 --);
6145 
6146           --IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6147             --RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6148           --ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6149             --RAISE OKL_API.G_EXCEPTION_ERROR;
6150           --END IF;
6151           ---------------------------------------------------------------------*/
6152 
6153         END IF;
6154         EXIT WHEN (i = p_from_cle_id_tbl.LAST);
6155         i := p_from_cle_id_tbl.NEXT(i);
6156       END LOOP;
6157       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6158          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6159       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6160          RAISE OKL_API.G_EXCEPTION_ERROR;
6161       END IF;
6162     END IF;
6163     lx_cle_id_tbl := x_cle_id_tbl;
6164     -- We need to do this only for split contract cases where in we need the other toplines
6165     -- fee, service, usage. Since the UI will collect only the asset lines and not other lines.
6166     IF p_trans_type = 'CSP' THEN
6167       FOR r_get_tls_spk IN c_get_tls_spk(p_dnz_chr_id => ln_old_chr_id) LOOP
6168         OKL_COPY_CONTRACT_PUB.COPY_CONTRACT_LINES(
6169                               p_api_version        => p_api_version,
6170                               p_init_msg_list      => p_init_msg_list,
6171                               x_return_status      => x_return_status,
6172                               x_msg_count          => x_msg_count,
6173                               x_msg_data           => x_msg_data,
6174                               p_from_cle_id        => r_get_tls_spk.top_line_id,
6175                               p_to_cle_id          => p_to_cle_id,
6176                               p_to_chr_id          => p_to_chr_id,
6177                               p_to_template_yn     => p_to_template_yn,
6178                               p_copy_reference     => p_copy_reference,
6179                               p_copy_line_party_yn => p_copy_line_party_yn,
6180                               p_renew_ref_yn       => p_renew_ref_yn,
6181                               x_cle_id             => lsx_cle_id_tbl(j).id);
6182         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6183           OKL_API.set_message(p_app_name     => G_APP_NAME,
6184                               p_msg_name     => G_COPY_LINE);
6185           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
6186         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6187           OKL_API.set_message(p_app_name     => G_APP_NAME,
6188                               p_msg_name     => G_COPY_LINE);
6189           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
6190         END IF;
6191         j := j + 1 ;
6192       END LOOP;
6193       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6194         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6195       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6196         RAISE OKL_API.G_EXCEPTION_ERROR;
6197       END IF;
6198     END IF;
6199     IF lx_cle_id_tbl.COUNT > 0 AND
6200        lsx_cle_id_tbl.COUNT > 0 THEN
6201       k := lx_cle_id_tbl.LAST;
6202       k := k + 1;
6203       m := lsx_cle_id_tbl.FIRST;
6204       LOOP
6205         lx_cle_id_tbl(k).id := lsx_cle_id_tbl(m).id;
6206         EXIT WHEN (m = lsx_cle_id_tbl.LAST);
6207         m := lsx_cle_id_tbl.NEXT(m);
6208         k := k + 1;
6209       END LOOP;
6210       x_cle_id_tbl := lx_cle_id_tbl;
6211     END IF;
6212     ---------------------------------------------------------------------------
6213     --special process to change the linked line links for covered asset
6214     ---------------------------------------------------------------------------
6215     IF lx_cle_id_tbl.LAST is NOT NULL THEN
6216       FOR j in 1..lx_cle_id_tbl.last LOOP
6217         OPEN  l_cle_csr(lx_cle_id_tbl(j).id);
6218         LOOP
6219           Fetch l_cle_csr INTO l_level,
6220                                l_cle_id,
6221                                l_dnz_chr_id,
6222                                l_orig_system_id1;
6223           EXIT when l_cle_csr%NOTFOUND;
6224           OPEN l_lnk_csr(p_cle_id => l_cle_id);
6225           LOOP
6226             FETCH l_lnk_csr INTO
6227                        l_new_lnk_cle_id,
6228                        l_orig_lnk_cle_id,
6229                        l_new_lnk_cim_id,
6230                        l_jtot_object1_code,
6231                        l_object1_id1,
6232                        l_object1_id2;
6233             EXIT when l_lnk_csr%NOTFOUND;
6234             IF l_jtot_object1_code in  ('OKX_COVASST', 'OKL_USAGE', 'OKX_LEASE') AND
6235                (l_object1_id1 is not null) THEN
6236                link_cov_asst(p_api_version      =>  p_api_version,
6237                              p_init_msg_list    =>  p_init_msg_list,
6238                              x_return_status    =>  x_return_status,
6239                              x_msg_count        =>  x_msg_count,
6240                              x_msg_data         =>  x_msg_data,
6241                              p_orig_lnk_cle_id  =>  l_orig_lnk_cle_id,
6242                              p_new_lnk_cim_id   =>  l_new_lnk_cim_id,
6243                              p_object_code      =>  l_jtot_object1_code,
6244                              p_new_chr_id       =>  l_dnz_chr_id );
6245                IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6246                  RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6247                ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6248                  RAISE OKL_API.G_EXCEPTION_ERROR;
6249                END IF;
6250             END IF;
6251           END LOOP;
6252           CLOSE l_lnk_csr;
6253         END LOOP;
6254         CLOSE l_cle_csr;
6255       END LOOP;
6256     END IF;
6257     -------------------------------------------------------------------------
6258     --end of special processing for fixing linked lines
6259     -------------------------------------------------------------------------
6260   EXCEPTION
6261     WHEN OKL_API.G_EXCEPTION_ERROR THEN
6262       IF c_get_lty_code%ISOPEN THEN
6263         CLOSE c_get_lty_code;
6264       END IF;
6265       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6266                                  l_api_name,
6267                                  G_PKG_NAME,
6268                                  'OKL_API.G_RET_STS_ERROR',
6269                                  x_msg_count,
6270                                  x_msg_data,
6271                                  '_PVT');
6272     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6273       IF c_get_lty_code%ISOPEN THEN
6274         CLOSE c_get_lty_code;
6275       END IF;
6276       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6277                                 l_api_name,
6278                                 G_PKG_NAME,
6279                                 'OKL_API.G_RET_STS_UNEXP_ERROR',
6280                                 x_msg_count,
6281                                 x_msg_data,
6282                                 '_PVT');
6283     WHEN OTHERS THEN
6284       IF c_get_lty_code%ISOPEN THEN
6285         CLOSE c_get_lty_code;
6286       END IF;
6287       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6288                                 l_api_name,
6289                                 G_PKG_NAME,
6290                                 'OTHERS',
6291                                 x_msg_count,
6292                                 x_msg_data,
6293                                 '_PVT');
6294   END copy_all_lines;
6295 End okl_copy_asset_pvt;