DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_CREATE_KLE_PVT

Source


1 Package body okl_create_kle_pvt as
2 /* $Header: OKLRKLLB.pls 120.63.12020000.5 2013/03/08 12:54:15 racheruv ship $ */
3 -------------------------------------------------------------------------------------------------
4 -- GLOBAL MESSAGE CONSTANTS
5 -------------------------------------------------------------------------------------------------
6   G_FND_APP                 CONSTANT  VARCHAR2(200) := OKL_API.G_FND_APP;
7   G_COL_NAME_TOKEN          CONSTANT  VARCHAR2(200) := OKL_API.G_COL_NAME_TOKEN;
8   G_AMT_TOKEN               CONSTANT  VARCHAR2(200) := 'AMOUNT';
9   G_REC_NAME_TOKEN          CONSTANT  VARCHAR2(200) := 'REC_INFO';
10   G_PARENT_TABLE_TOKEN	    CONSTANT  VARCHAR2(200) := OKL_API.G_PARENT_TABLE_TOKEN;
11   G_CHILD_TABLE_TOKEN	    CONSTANT  VARCHAR2(200) := OKL_API.G_CHILD_TABLE_TOKEN;
12   G_UNEXPECTED_ERROR        CONSTANT  VARCHAR2(200) := 'OKL_UNEXPECTED_ERROR';
13   G_SQLERRM_TOKEN           CONSTANT  VARCHAR2(200) := 'SQLerrm';
14   G_SQLCODE_TOKEN           CONSTANT  VARCHAR2(200) := 'SQLcode';
15 ------------------------------------------------------------------------------------
16 -- GLOBAL OKL MESSAGES
17 ------------------------------------------------------------------------------------
18   G_INVALID_YN              CONSTANT  VARCHAR2(200) := 'OKL_INVALID_YN';
19   G_INVALID_VALUE           CONSTANT  VARCHAR2(200) := 'OKL_LLA_NEGATIVE';
20   G_DECIMAL_VALUE           CONSTANT  VARCHAR2(200) := 'OKL_LLA_DECIMAL_VAL';
21   G_NO_PARENT_RECORD        CONSTANT  VARCHAR2(200) := 'OKL_NO_PARENT_RECORD';
22   G_REQUIRED_VALUE          CONSTANT  VARCHAR2(200) := 'OKL_REQUIRED_VALUE';
23   G_NO_MATCHING_RECORD      CONSTANT  VARCHAR2(200) := 'OKL_LLA_NO_MATCHING_RECORD';
24   G_CALC_AMOUNT             CONSTANT  VARCHAR2(200) := 'OKL_LLA_CALC_AMOUNT';
25   G_CREATION_FIN_LINE       CONSTANT  VARCHAR2(200) := 'OKL_LLA_CREATION_FIN_LINE';
26   G_UPDATING_FIN_LINE       CONSTANT  VARCHAR2(200) := 'OKL_LLA_UPDATING_FIN_LINE';
27   G_CREATION_MODEL_LINE     CONSTANT  VARCHAR2(200) := 'OKL_LLA_CREATION_MODEL_LINE';
28   G_UPDATING_MODEL_LINE     CONSTANT  VARCHAR2(200) := 'OKL_LLA_UPDATING_MODEL_LINE';
29   G_CREATION_MODEL_ITEM     CONSTANT  VARCHAR2(200) := 'OKL_LLA_CREATION_MODEL_ITEM';
30   G_UPDATING_MODEL_ITEM     CONSTANT  VARCHAR2(200) := 'OKL_LLA_UPDATING_MODEL_ITEM';
31   G_CREATION_FA_LINE        CONSTANT  VARCHAR2(200) := 'OKL_LLA_CREATION_FA_LINE';
32   G_UPDATING_FA_LINE        CONSTANT  VARCHAR2(200) := 'OKL_LLA_UPDATING_FA_LINE';
33   G_CREATION_FA_ITEM        CONSTANT  VARCHAR2(200) := 'OKL_LLA_CREATION_FA_ITEM';
34   G_UPDATING_FA_ITEM        CONSTANT  VARCHAR2(200) := 'OKL_LLA_UPDATING_FA_ITEM';
35   G_CREATION_ADDON_LINE     CONSTANT  VARCHAR2(200) := 'OKL_LLA_CREATION_ADDON_LINE';
36   G_UPDATING_ADDON_LINE     CONSTANT  VARCHAR2(200) := 'OKL_LLA_UPDATING_ADDON_LINE';
37   G_DELETING_ADDON_LINE     CONSTANT  VARCHAR2(200) := 'OKL_LLA_DELETING_ADDON_LINE';
38   G_CREATION_ADDON_ITEM     CONSTANT  VARCHAR2(200) := 'OKL_LLA_CREATION_ADDON_ITEM';
39   G_UPDATING_ADDON_ITEM     CONSTANT  VARCHAR2(200) := 'OKL_LLA_UPDATING_ADDON_ITEM';
40   G_CREATION_INSTS_LINE     CONSTANT  VARCHAR2(200) := 'OKL_LLA_CREATION_INSTS_LINE';
41   G_UPDATING_INSTS_LINE     CONSTANT  VARCHAR2(200) := 'OKL_LLA_UPDATING_INSTS_LINE';
42   G_DELETING_INSTS_LINE     CONSTANT  VARCHAR2(200) := 'OKL_LLA_DELETING_INSTS_LINE';
43   G_MIN_INST_LINE           CONSTANT  VARCHAR2(200) := 'OKL_LLA_MIN_INST_LINE';
44   G_CREATION_IB_LINE        CONSTANT  VARCHAR2(200) := 'OKL_LLA_CREATION_IB_LINE';
45   G_UPDATING_IB_LINE        CONSTANT  VARCHAR2(200) := 'OKL_LLA_UPDATING_IB_LINE';
46   G_DELETING_IB_LINE        CONSTANT  VARCHAR2(200) := 'OKL_LLA_DELETING_IB_LINE';
47   G_CREATION_IB_ITEM        CONSTANT  VARCHAR2(200) := 'OKL_LLA_CREATION_IB_ITEM';
48   G_UPDATING_IB_ITEM        CONSTANT  VARCHAR2(200) := 'OKL_LLA_UPDATING_IB_ITEM';
49   G_CREATION_PARTY_ROLE     CONSTANT  VARCHAR2(200) := 'OKL_LLA_CREATION_PARTY_ROLE';
50   G_UPDATING_PARTY_ROLE     CONSTANT  VARCHAR2(200) := 'OKL_LLA_UPDATING_PARTY_ROLE';
51   G_ASSET_NUMBER            CONSTANT  VARCHAR2(200) := 'OKL_LLA_ASSET_NUMBER';
52   G_DUPLICATE_SERIAL_NUM    CONSTANT  VARCHAR2(200) := 'OKL_LLA_SERIAL_NUM_DUP';
53   G_GEN_INST_NUM_IB         CONSTANT  VARCHAR2(200) := 'OKL_LLA_GEN_INST_NUM_IB';
54   G_GEN_ASSET_NUMBER        CONSTANT  VARCHAR2(200) := 'OKL_LLA_GEN_ASSET_NUMBER';
55   G_LINE_STYLE              CONSTANT  VARCHAR2(200) := 'OKL_LLA_LINE_STYLE';
56   G_CNT_REC                 CONSTANT  VARCHAR2(200) := 'OKL_LLA_CNT_REC';
57   G_ITEM_RECORD             CONSTANT  VARCHAR2(200) := 'OKL_LLA_ITEM_RECORD';
58   G_LINE_RECORD             CONSTANT  VARCHAR2(200) := 'OKL_LLA_LINE_RECORD';
59   G_INSTALL_BASE_NUMBER     CONSTANT  VARCHAR2(200) := 'OKL_LLA_INSTALL_BASE_NUMBER';
60   G_FETCHING_INFO           CONSTANT  VARCHAR2(200) := 'OKL_LLA_FETCHING_INFO';
61   G_INVALID_CRITERIA        CONSTANT  VARCHAR2(200) := 'OKL_LLA_INVALID_CRITERIA';
62   G_SALVAGE_VALUE           CONSTANT  VARCHAR2(200) := 'OKL_LLA_SALVAGE_VALUE';
63   G_STATUS                  CONSTANT  VARCHAR2(200) := 'OKL_LLA_STATUS';
64   G_CHR_ID                  CONSTANT  VARCHAR2(200) := 'OKL_LLA_CHR_ID';
65   G_LSE_ID                  CONSTANT  VARCHAR2(200) := 'OKL_LLA_LSE_ID';
66   G_KLE_ID                  CONSTANT  VARCHAR2(200) := 'OKL_LLA_KLE_ID';
67   G_TRX_ID                  CONSTANT  VARCHAR2(200) := 'OKL_LLA_TRX_ID';
68   G_ITI_ID                  CONSTANT  VARCHAR2(200) := 'OKL_LLA_ITI_ID';
69   G_AMOUNT_ROUNDING         CONSTANT  VARCHAR2(200) := 'OKL_LA_ROUNDING_ERROR';
70 ------------------------------------------------------------------------------------
71 -- GLOBAL EXCEPTION
72 ------------------------------------------------------------------------------------
73   G_EXCEPTION_HALT_VALIDATION             EXCEPTION;
74   G_EXCEPTION_STOP_VALIDATION             EXCEPTION;
75   G_API_TYPE                    CONSTANT  VARCHAR2(4) := '_PVT';
76   G_API_VERSION                 CONSTANT  NUMBER := 1.0;
77   G_SCOPE                       CONSTANT  VARCHAR2(4) := '_PVT';
78 
79  -- GLOBAL VARIABLES
80 -----------------------------------------------------------------------------------
81   G_PKG_NAME                    CONSTANT  VARCHAR2(200) := 'OKL_CREATE_ASSET_PVT';
82   G_APP_NAME                    CONSTANT  VARCHAR2(3)   :=  OKL_API.G_APP_NAME;
83   G_TRY_NAME                              OKL_TRX_TYPES_TL.NAME%TYPE     := 'Internal Asset Creation';
84   G_LANGUAGE                              OKL_TRX_TYPES_TL.LANGUAGE%TYPE := 'US';
85 --  G_FA_TRY_NAME                           OKL_TRX_TYPES_V.NAME%TYPE       := 'CREATE ASSET LINES';
86 --  G_IB_TRY_NAME                           OKL_TRX_TYPES_V.NAME%TYPE       := 'CREATE_IB_LINES';
87 --  G_TRY_TYPE                              OKL_TRX_TYPES_V.TRY_TYPE%TYPE   := 'TIE';
88   G_FORMULA_OEC                           OKL_FORMULAE_V.NAME%TYPE := 'LINE_OEC';
89   G_FORMULA_CAP                           OKL_FORMULAE_V.NAME%TYPE := 'LINE_CAP_AMNT';
90   G_FORMULA_RES                           OKL_FORMULAE_V.NAME%TYPE := 'LINE_RESIDUAL_VALUE';
91   G_ID2                         CONSTANT  VARCHAR2(200) := '#';
92   G_TLS_TYPE                              OKC_LINE_STYLES_V.LSE_TYPE%TYPE := 'TLS';
93   G_SLS_TYPE                              OKC_LINE_STYLES_V.LSE_TYPE%TYPE := 'SLS';
94   G_LEASE_SCS_CODE                        OKC_K_HEADERS_V.SCS_CODE%TYPE := 'LEASE';
95   G_LOAN_SCS_CODE                         OKC_K_HEADERS_V.SCS_CODE%TYPE := 'LOAN';
96   G_QUOTE_SCS_CODE                        OKC_K_HEADERS_V.SCS_CODE%TYPE := 'QUOTE';
97 ---------------------------------------------------------------------------------------------------------------
98   --Added by dpsingh for LE uptake
99   CURSOR contract_num_csr (p_ctr_id1 NUMBER) IS
100   SELECT  contract_number
101   FROM OKC_K_HEADERS_B
102   WHERE id = p_ctr_id1;
103 
104   FUNCTION is_duplicate_serial_number(p_serial_number  OKL_TXL_ITM_INSTS.SERIAL_NUMBER%TYPE,
105                                       p_item_id        OKL_TXL_ITM_INSTS.INVENTORY_ITEM_ID%TYPE)
106   RETURN VARCHAR2 IS
107     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
108     ln_serial_number           NUMBER      := 0;
109     -- cursor to get sequence number for asset number
110     -- Bug 4698117
111 
112 
113     CURSOR c_check_dup_serial_num IS
114     SELECT 1 FROM OKL_TXL_ITM_INSTS
115 	  WHERE INVENTORY_ITEM_ID = p_item_id
116 	  AND SERIAL_NUMBER = p_serial_number
117         AND NOT EXISTS (
118         select 1 From okc_k_lines_b cleb
119         where cleb.id=OKL_TXL_ITM_INSTS.kle_id
120         and cleb.STS_CODE = 'ABANDONED'
121     );
122    --Bug# 4698117: End
123   BEGIN
124     OPEN  c_check_dup_serial_num;
125     FETCH c_check_dup_serial_num INTO ln_serial_number;
126     IF (c_check_dup_serial_num%NOTFOUND) Then
127       x_return_status := OKL_API.G_RET_STS_SUCCESS;
128     END IF;
129     CLOSE c_check_dup_serial_num;
130     IF (ln_serial_number = 1) THEN
131        OKL_API.set_message(p_app_name     => G_APP_NAME,
132                            p_msg_name     => G_DUPLICATE_SERIAL_NUM,
133                            p_token1	      => 'COL_NAME',
134                            p_token1_value => p_serial_number);
135        RAISE G_EXCEPTION_HALT_VALIDATION;
136     END IF;
137     RETURN x_return_status;
138   EXCEPTION
139     WHEN G_EXCEPTION_HALT_VALIDATION then
140       IF c_check_dup_serial_num%ISOPEN THEN
141         CLOSE c_check_dup_serial_num;
142       END IF;
143      -- notify caller of an error
144      x_return_status := OKL_API.G_RET_STS_ERROR;
145      RETURN x_return_status;
146     WHEN OTHERS THEN
147       IF c_check_dup_serial_num%ISOPEN THEN
148         CLOSE c_check_dup_serial_num;
149       END IF;
150       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
151       OKL_API.SET_MESSAGE(p_app_name 	 => g_app_name,
152                           p_msg_name	 => g_unexpected_error,
153                           p_token1	 => g_sqlcode_token,
154                           p_token1_value => sqlcode,
155 			  p_token2	 => g_sqlerrm_token,
156 			  p_token2_value => sqlerrm);
157     RETURN x_return_status;
158   END is_duplicate_serial_number;
159 ---------------------------------------------------------------------------------------------------------------
160   FUNCTION generate_instance_number_ib(x_instance_number_ib  OUT NOCOPY OKL_TXL_ITM_INSTS_V.INSTANCE_NUMBER_IB%TYPE)
161   RETURN VARCHAR2 IS
162     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
163     -- cursor to get sequence number for asset number
164     Cursor c_instance_no_ib IS
165     select TO_CHAR(OKL_IBN_SEQ.NEXTVAL)
166     FROM dual;
167   BEGIN
168     OPEN  c_instance_no_ib;
169     FETCH c_instance_no_ib INTO x_instance_number_ib;
170     IF (c_instance_no_ib%NOTFOUND) Then
171       x_return_status := OKC_API.G_RET_STS_ERROR;
172       OKL_API.SET_MESSAGE(p_app_name 	 => g_app_name,
173                           p_msg_name	 => g_unexpected_error,
174                           p_token1	 => g_sqlcode_token,
175                           p_token1_value => sqlcode,
176 			  p_token2	 => g_sqlerrm_token,
177 			  p_token2_value => sqlerrm);
178     END IF;
179     CLOSE c_instance_no_ib;
180     RETURN x_return_status;
181   EXCEPTION
182     WHEN OTHERS THEN
183       IF c_instance_no_ib%ISOPEN THEN
184         CLOSE c_instance_no_ib;
185       END IF;
186       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
187       OKL_API.SET_MESSAGE(p_app_name 	 => g_app_name,
188                           p_msg_name	 => g_unexpected_error,
189                           p_token1	 => g_sqlcode_token,
190                           p_token1_value => sqlcode,
191 			  p_token2	 => g_sqlerrm_token,
192 			  p_token2_value => sqlerrm);
193     RETURN x_return_status;
194   END generate_instance_number_ib;
195 ---------------------------------------------------------------------------------------------------------------
196   FUNCTION generate_asset_number(x_asset_number OUT NOCOPY OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE)
197   RETURN VARCHAR2 IS
198     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
199     ln_dummy1                  NUMBER := 0;
200     ln_dummy2                  NUMBER := 0;
201     ln_dummy3                  NUMBER := 0;
202     lv_asset_number            OKX_ASSETS_V.ASSET_NUMBER%TYPE;
203     -- cursor to get sequence number for asset number
204     Cursor c_asset_no IS
205     select 'OKL'||OKL_FAN_SEQ.NEXTVAL
206     FROM dual;
207 
208     -- cursor to get check the existence of asset number
209     CURSOR c_txl_asset_number(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE)
210     IS
211     SELECT 1
212     --FROM DUAL
213     --WHERE EXISTS (SELECT '1'
214                   FROM OKL_TXL_ASSETS_B
215                   WHERE asset_number = p_asset_number; --);
216 
217     /*CURSOR c_okx_asset_lines_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
218     SELECT 1
219     --FROM DUAL
220     --WHERE EXISTS (SELECT '1'
221                   FROM OKX_ASSET_LINES_V
222                   WHERE asset_number = p_asset_number; --); */
223 
224     CURSOR c_okx_asset_lines_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
225     SELECT 1
226     FROM fa_additions a
227     WHERE a.asset_number = p_asset_number
228     and exists
229      (
230        select 1 from okc_k_items b
231        where b.jtot_object1_code = 'OKX_ASSET'
232        and   b.object1_id1 = to_char(a.asset_id)
233      );
234 
235 
236     CURSOR c_okx_assets_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
237     SELECT 1
238     --FROM DUAL
239     --WHERE EXISTS (SELECT '1'
240                   FROM OKX_ASSETS_V
241                   WHERE asset_number = p_asset_number; --);
242 
243   BEGIN
244     OPEN  c_asset_no;
245     FETCH c_asset_no INTO x_asset_number;
246     IF (c_asset_no%NOTFOUND) THEN
247       x_return_status := OKC_API.G_RET_STS_ERROR;
248       OKL_API.SET_MESSAGE(p_app_name 	   => g_app_name,
249                           p_msg_name	   => g_unexpected_error,
250                           p_token1	   => g_sqlcode_token,
251                           p_token1_value => sqlcode,
252            			      p_token2	   => g_sqlerrm_token,
253               			  p_token2_value => sqlerrm);
254     END IF;
255     CLOSE c_asset_no;
256 
257     LOOP
258       lv_asset_number := x_asset_number;
259 
260       OPEN  c_txl_asset_number(lv_asset_number);
261       FETCH c_txl_asset_number INTO ln_dummy1;
262       IF c_txl_asset_number%NOTFOUND THEN
263         ln_dummy1 := 0;
264       END IF;
265       CLOSE c_txl_asset_number;
266 
267       OPEN c_okx_asset_lines_v(lv_asset_number);
268       FETCH c_okx_asset_lines_v INTO ln_dummy2;
269       IF c_okx_asset_lines_v%NOTFOUND THEN
270         ln_dummy2 := 0;
271       END IF;
272       CLOSE c_okx_asset_lines_v;
273 
274       OPEN c_okx_assets_v(lv_asset_number);
275       FETCH c_okx_assets_v INTO ln_dummy3;
276       IF c_okx_assets_v%NOTFOUND THEN
277         ln_dummy3 := 0;
278       END IF;
279       CLOSE c_okx_assets_v;
280 
281       IF ln_dummy1 = 1 OR
282          ln_dummy2 = 1 OR
283          ln_dummy3 = 1 THEN
284         OPEN  c_asset_no;
285         FETCH c_asset_no INTO x_asset_number;
286         IF (c_asset_no%NOTFOUND) THEN
287           x_return_status := OKC_API.G_RET_STS_ERROR;
288           OKL_API.SET_MESSAGE(p_app_name 	   => g_app_name,
289                               p_msg_name	   => g_unexpected_error,
290                               p_token1	   => g_sqlcode_token,
291                               p_token1_value => sqlcode,
292            			          p_token2	   => g_sqlerrm_token,
293                  			  p_token2_value => sqlerrm);
294         END IF;
295         CLOSE c_asset_no;
296       ELSE
297         EXIT;
298       END IF;
299     END LOOP;
300 
301     RETURN x_return_status;
302   EXCEPTION
303     WHEN OTHERS THEN
304       IF c_asset_no%ISOPEN THEN
305         CLOSE c_asset_no;
306       END IF;
307       IF c_txl_asset_number%ISOPEN THEN
308         CLOSE c_txl_asset_number;
309       END IF;
310       IF c_okx_asset_lines_v%ISOPEN THEN
311         CLOSE c_okx_asset_lines_v;
312       END IF;
313       IF c_okx_assets_v%ISOPEN THEN
314         CLOSE c_okx_assets_v;
315       END IF;
316       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
317       OKL_API.SET_MESSAGE(p_app_name 	 => g_app_name,
318                           p_msg_name	 => g_unexpected_error,
319                           p_token1	     => g_sqlcode_token,
320                           p_token1_value => sqlcode,
321             			  p_token2	     => g_sqlerrm_token,
322             			  p_token2_value => sqlerrm);
323     RETURN x_return_status;
324   END generate_asset_number;
325 ----------------------------------------------------------------------------------------------------------
326   FUNCTION get_sts_code(p_dnz_chr_id IN  OKC_K_LINES_B.DNZ_CHR_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
327                         p_cle_id     IN  OKC_K_LINES_B.CLE_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
328                         x_sts_code   OUT NOCOPY OKC_K_HEADERS_B.STS_CODE%TYPE)
329   RETURN VARCHAR2 IS
330     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
331     CURSOR c_get_tls_sts_code(p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE) IS
332     SELECT chrv.sts_code
333     FROM OKC_K_HEADERS_V chrv
334     WHERE chrv.id = p_dnz_chr_id;
335 
336     CURSOR c_get_sls_sts_code(p_cle_id OKC_K_LINES_B.CLE_ID%TYPE) IS
337     SELECT cle.sts_code
338     FROM OKC_K_LINES_V cle
339     WHERE cle.id = p_cle_id;
340   BEGIN
341     -- Both p_dnz_chr_id and p_cle_id are not to be given
342     IF (p_dnz_chr_id IS NOT NULL OR
343        p_dnz_chr_id <> OKL_API.G_MISS_NUM) AND
344        (p_cle_id IS NOT NULL OR
345        p_cle_id <> OKL_API.G_MISS_NUM) THEN
346        -- store SQL error message on message stack
347        -- Notify Error
348        OKL_API.set_message(p_app_name     => G_APP_NAME,
349                            p_msg_name     => G_REQUIRED_VALUE,
350                            p_token1       => G_COL_NAME_TOKEN,
351                            p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID and CLE_ID');
352        RAISE G_EXCEPTION_STOP_VALIDATION;
353     END IF;
354     --  Getting the TOP Line STS CODE
355     IF (p_dnz_chr_id IS NOT NULL OR
356        p_dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
357        OPEN c_get_tls_sts_code(p_dnz_chr_id);
358        FETCH c_get_tls_sts_code INTO x_sts_code;
359        IF c_get_tls_sts_code%NOTFOUND THEN
360           -- store SQL error message on message stack
361           OKL_API.set_message(p_app_name     => G_APP_NAME,
362                               p_msg_name     => G_NO_MATCHING_RECORD,
363                               p_token1       => G_COL_NAME_TOKEN,
364                               p_token1_value => 'OKC_K_HEADERS_V.STS_CODE');
365           RAISE G_EXCEPTION_HALT_VALIDATION;
366        END IF;
367        CLOSE c_get_tls_sts_code;
368        IF (x_sts_code IS NULL OR
369           x_sts_code = OKL_API.G_MISS_CHAR) THEN
370          OKL_API.set_message(p_app_name     => G_APP_NAME,
371                              p_msg_name     => G_REQUIRED_VALUE,
372                              p_token1       => G_COL_NAME_TOKEN,
373                              p_token1_value => 'sts_code');
374           RAISE G_EXCEPTION_STOP_VALIDATION;
375        END IF;
376     END IF;
377     --  Getting the SUB Line STS CODE
378     IF (p_cle_id IS NOT NULL OR
379        p_cle_id <> OKL_API.G_MISS_NUM) THEN
380        OPEN c_get_sls_sts_code(p_cle_id);
381        FETCH c_get_sls_sts_code INTO x_sts_code;
382        IF c_get_sls_sts_code%NOTFOUND THEN
383           -- store SQL error message on message stack
384           OKL_API.set_message(p_app_name     => G_APP_NAME,
385                               p_msg_name     => G_NO_MATCHING_RECORD,
386                               p_token1       => G_COL_NAME_TOKEN,
387                               p_token1_value => 'OKC_K_HEADERS_V.STS_CODE');
388           RAISE G_EXCEPTION_HALT_VALIDATION;
389        END IF;
390        CLOSE c_get_sls_sts_code;
391        IF (x_sts_code IS NULL OR
392           x_sts_code = OKL_API.G_MISS_CHAR) THEN
393          OKL_API.set_message(p_app_name     => G_APP_NAME,
394                              p_msg_name     => G_REQUIRED_VALUE,
395                              p_token1       => G_COL_NAME_TOKEN,
396                              p_token1_value => 'sts_code');
397           RAISE G_EXCEPTION_STOP_VALIDATION;
398        END IF;
399     END IF;
400     RETURN x_return_status;
401   EXCEPTION
402     WHEN G_EXCEPTION_STOP_VALIDATION then
403     -- We are here since the field is required
404     x_return_status := OKL_API.G_RET_STS_ERROR;
405     WHEN G_EXCEPTION_HALT_VALIDATION then
406       -- We are here b'cause we have no parent record
407       -- If the cursor is open then it has to be closed
408      IF c_get_tls_sts_code%ISOPEN THEN
409         CLOSE c_get_tls_sts_code;
410      END IF;
411      -- if the cursor is open
412      IF c_get_sls_sts_code%ISOPEN THEN
413         CLOSE c_get_sls_sts_code;
414      END IF;
415      -- notify caller of an error
416      x_return_status := OKL_API.G_RET_STS_ERROR;
417     WHEN OTHERS THEN
418       -- store SQL error message on message stack for caller
419       OKL_API.set_message(G_APP_NAME,
420                           G_UNEXPECTED_ERROR,
421                           G_SQLCODE_TOKEN,
422                           SQLCODE,
423                           G_SQLERRM_TOKEN,
424                           SQLERRM);
425      -- notify caller of an UNEXPECTED error
426      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
427      -- if the cursor is open
428      IF c_get_tls_sts_code%ISOPEN THEN
429         CLOSE c_get_tls_sts_code;
430      END IF;
431      -- if the cursor is open
432      IF c_get_sls_sts_code%ISOPEN THEN
433         CLOSE c_get_sls_sts_code;
434      END IF;
435      RETURN(x_return_status);
436   END get_sts_code;
437 ----------------------------------------------------------------------------------------------------------------
438   FUNCTION get_end_date(p_dnz_chr_id IN  OKC_K_LINES_B.DNZ_CHR_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
439                         p_cle_id     IN  OKC_K_LINES_B.CLE_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
440                         x_end_date   OUT NOCOPY OKC_K_HEADERS_B.END_DATE%TYPE)
441   RETURN VARCHAR2 IS
442     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
443     CURSOR c_get_tls_end_date(p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE) IS
444     SELECT chrv.end_Date
445     FROM OKC_K_HEADERS_V chrv
446     WHERE chrv.id = p_dnz_chr_id;
447 
448     CURSOR c_get_sls_end_date(p_cle_id OKC_K_LINES_B.CLE_ID%TYPE) IS
449     SELECT cle.end_date
450     FROM OKC_K_LINES_V cle
451     WHERE cle.id = p_cle_id;
452   BEGIN
453     -- Both p_dnz_chr_id and p_cle_id are not to be given
454     IF (p_dnz_chr_id IS NOT NULL OR
455        p_dnz_chr_id <> OKL_API.G_MISS_NUM) AND
456        (p_cle_id IS NOT NULL OR
457        p_cle_id <> OKL_API.G_MISS_NUM) THEN
458        -- store SQL error message on message stack
459        -- Notify Error
460        OKL_API.set_message(p_app_name     => G_APP_NAME,
461                            p_msg_name     => G_REQUIRED_VALUE,
462                            p_token1       => G_COL_NAME_TOKEN,
463                            p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID and CLE_ID');
464        RAISE G_EXCEPTION_STOP_VALIDATION;
465     END IF;
466     --  Getting the TOP Line STS CODE
467     IF (p_dnz_chr_id IS NOT NULL OR
468        p_dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
469        OPEN c_get_tls_end_date(p_dnz_chr_id);
470        FETCH c_get_tls_end_date INTO x_end_date;
471        IF c_get_tls_end_date%NOTFOUND THEN
472           -- store SQL error message on message stack
473           OKL_API.set_message(p_app_name     => G_APP_NAME,
474                               p_msg_name     => G_NO_MATCHING_RECORD,
475                               p_token1       => G_COL_NAME_TOKEN,
476                               p_token1_value => 'OKC_K_HEADERS_V.END_DATE');
477           RAISE G_EXCEPTION_HALT_VALIDATION;
478        END IF;
479        CLOSE c_get_tls_end_date;
480     END IF;
481     --  Getting the SUB Line STS CODE
482     IF (p_cle_id IS NOT NULL OR
483        p_cle_id <> OKL_API.G_MISS_NUM) THEN
484        OPEN c_get_sls_end_date(p_cle_id);
485        FETCH c_get_sls_end_date INTO x_end_date;
486        IF c_get_sls_end_date%NOTFOUND THEN
487           -- store SQL error message on message stack
488           OKL_API.set_message(p_app_name     => G_APP_NAME,
489                               p_msg_name     => G_NO_MATCHING_RECORD,
490                               p_token1       => G_COL_NAME_TOKEN,
491                               p_token1_value => 'OKC_K_HEADERS_V.END_DATE');
492           RAISE G_EXCEPTION_HALT_VALIDATION;
493        END IF;
494        CLOSE c_get_sls_end_date;
495     END IF;
496     RETURN x_return_status;
497   EXCEPTION
498     WHEN G_EXCEPTION_STOP_VALIDATION then
499     -- We are here since the field is required
500     x_return_status := OKL_API.G_RET_STS_ERROR;
501     WHEN G_EXCEPTION_HALT_VALIDATION then
502       -- We are here b'cause we have no parent record
503       -- If the cursor is open then it has to be closed
504      IF c_get_tls_end_date%ISOPEN THEN
505         CLOSE c_get_tls_end_date;
506      END IF;
507      -- if the cursor is open
508      IF c_get_sls_end_date%ISOPEN THEN
509         CLOSE c_get_sls_end_date;
510      END IF;
511      -- notify caller of an error
512      x_return_status := OKL_API.G_RET_STS_ERROR;
513     WHEN OTHERS THEN
514       -- store SQL error message on message stack for caller
515       OKL_API.set_message(G_APP_NAME,
516                           G_UNEXPECTED_ERROR,
517                           G_SQLCODE_TOKEN,
518                           SQLCODE,
519                           G_SQLERRM_TOKEN,
520                           SQLERRM);
521      -- notify caller of an UNEXPECTED error
522      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
523      -- if the cursor is open
524      IF c_get_tls_end_date%ISOPEN THEN
525         CLOSE c_get_tls_end_date;
526      END IF;
527      -- if the cursor is open
528      IF c_get_sls_end_date%ISOPEN THEN
529         CLOSE c_get_sls_end_date;
530      END IF;
531      RETURN(x_return_status);
532   END get_end_date;
533 ----------------------------------------------------------------------------------------------------------------
534   FUNCTION get_start_date(p_dnz_chr_id IN  OKC_K_LINES_B.DNZ_CHR_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
535                         p_cle_id     IN  OKC_K_LINES_B.CLE_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
536                         x_start_date   OUT NOCOPY OKC_K_HEADERS_B.START_DATE%TYPE)
537   RETURN VARCHAR2 IS
538     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
539     lv_orig_sys_source_code    OKC_K_HEADERS_B.ORIG_SYSTEM_SOURCE_CODE%TYPE;
540     ln_orig_system_id1         OKC_K_HEADERS_B.ORIG_SYSTEM_ID1%TYPE;
541     ld_start_date              OKC_K_LINES_B.START_DATE%TYPE;
542     CURSOR c_get_tls_start_date(p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE) IS
543     SELECT chrv.start_Date,
544            chrv.orig_system_source_code,
545            chrv.orig_system_id1
546     FROM OKC_K_HEADERS_V chrv
547     WHERE chrv.id = p_dnz_chr_id;
548 
549     CURSOR c_get_sls_start_date(p_cle_id OKC_K_LINES_B.CLE_ID%TYPE) IS
550     SELECT cle.start_date
551     FROM OKC_K_LINES_V cle
552     WHERE cle.id = p_cle_id;
553 
554     CURSOR c_get_trx_date_trans_occ(p_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE) IS
555     SELECT date_transaction_occurred
556     FROM okl_trx_contracts
557     WHERE khr_id = p_chr_id
558     AND tcn_type = 'TRBK'
559     AND tsu_code = 'ENTERED'
560     --rkuttiya added for 12.1.1 Multi GAAP
561     AND representation_type = 'PRIMARY';
562     --
563   BEGIN
564     -- Both p_dnz_chr_id and p_cle_id are not to be given
565     IF (p_dnz_chr_id IS NOT NULL OR
566        p_dnz_chr_id <> OKL_API.G_MISS_NUM) AND
567        (p_cle_id IS NOT NULL OR
568        p_cle_id <> OKL_API.G_MISS_NUM) THEN
569        -- store SQL error message on message stack
570        -- Notify Error
571        OKL_API.set_message(p_app_name     => G_APP_NAME,
572                            p_msg_name     => G_REQUIRED_VALUE,
573                            p_token1       => G_COL_NAME_TOKEN,
574                            p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID and CLE_ID');
575        RAISE G_EXCEPTION_STOP_VALIDATION;
576     END IF;
577     --  Getting the TOP Line STS CODE
578     IF (p_dnz_chr_id IS NOT NULL OR
579        p_dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
580        OPEN c_get_tls_start_date(p_dnz_chr_id);
581        FETCH c_get_tls_start_date INTO x_start_date,
582                                        lv_orig_sys_source_code,
583                                        ln_orig_system_id1;
584        IF c_get_tls_start_date%NOTFOUND THEN
585           -- store SQL error message on message stack
586           OKL_API.set_message(p_app_name     => G_APP_NAME,
587                               p_msg_name     => G_NO_MATCHING_RECORD,
588                               p_token1       => G_COL_NAME_TOKEN,
589                               p_token1_value => 'OKC_K_HEADERS_V.START_DATE');
590           RAISE G_EXCEPTION_HALT_VALIDATION;
591        END IF;
592        CLOSE c_get_tls_start_date;
593        IF lv_orig_sys_source_code = 'OKL_REBOOK' THEN
594          OPEN  c_get_trx_date_trans_occ(p_chr_id => ln_orig_system_id1);
595          FETCH c_get_trx_date_trans_occ INTO ld_start_date;
596          CLOSE c_get_trx_date_trans_occ;
597          x_start_date :=  nvl(ld_start_date,sysdate);
598        END IF;
599     END IF;
600     --  Getting the SUB Line STS CODE
601     IF (p_cle_id IS NOT NULL OR
602        p_cle_id <> OKL_API.G_MISS_NUM) THEN
603        OPEN c_get_sls_start_date(p_cle_id);
604        FETCH c_get_sls_start_date INTO x_start_date;
605        IF c_get_sls_start_date%NOTFOUND THEN
606           -- store SQL error message on message stack
607           OKL_API.set_message(p_app_name     => G_APP_NAME,
608                               p_msg_name     => G_NO_MATCHING_RECORD,
609                               p_token1       => G_COL_NAME_TOKEN,
610                               p_token1_value => 'OKC_K_HEADERS_V.START_DATE');
611           RAISE G_EXCEPTION_HALT_VALIDATION;
612        END IF;
613        CLOSE c_get_sls_start_date;
614     END IF;
615     RETURN x_return_status;
616   EXCEPTION
617     WHEN G_EXCEPTION_STOP_VALIDATION then
618     -- We are here since the field is required
619     x_return_status := OKL_API.G_RET_STS_ERROR;
620     WHEN G_EXCEPTION_HALT_VALIDATION then
621       -- We are here b'cause we have no parent record
622       -- If the cursor is open then it has to be closed
623      IF c_get_tls_start_date%ISOPEN THEN
624         CLOSE c_get_tls_start_date;
625      END IF;
626      -- if the cursor is open
627      IF c_get_sls_start_date%ISOPEN THEN
628         CLOSE c_get_sls_start_date;
629      END IF;
630      -- notify caller of an error
631      x_return_status := OKL_API.G_RET_STS_ERROR;
632     WHEN OTHERS THEN
633       -- store SQL error message on message stack for caller
634       OKL_API.set_message(G_APP_NAME,
635                           G_UNEXPECTED_ERROR,
636                           G_SQLCODE_TOKEN,
637                           SQLCODE,
638                           G_SQLERRM_TOKEN,
639                           SQLERRM);
640      -- notify caller of an UNEXPECTED error
641      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
642      -- if the cursor is open
643      IF c_get_tls_start_date%ISOPEN THEN
644         CLOSE c_get_tls_start_date;
645      END IF;
646      -- if the cursor is open
647      IF c_get_sls_start_date%ISOPEN THEN
648         CLOSE c_get_sls_start_date;
649      END IF;
650      RETURN(x_return_status);
651   END get_start_date;
652 ----------------------------------------------------------------------------------------------------------------
653   FUNCTION get_currency_code(p_dnz_chr_id    IN  OKC_K_LINES_B.DNZ_CHR_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
654                              p_cle_id        IN  OKC_K_LINES_B.CLE_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
655                              x_currency_code OUT NOCOPY OKC_K_HEADERS_B.CURRENCY_CODE%TYPE)
656   RETURN VARCHAR2 IS
657     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
658     CURSOR c_get_tls_currency_code(p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE) IS
659     SELECT chrv.currency_code
660     FROM OKC_K_HEADERS_V chrv
661     WHERE chrv.id = p_dnz_chr_id;
662 
663     CURSOR c_get_sls_currency_code(p_cle_id OKC_K_LINES_B.CLE_ID%TYPE) IS
664     SELECT cle.currency_code
665     FROM OKC_K_LINES_V cle
666     WHERE cle.id = p_cle_id;
667   BEGIN
668     -- Both p_dnz_chr_id and p_cle_id are not to be given
669     IF (p_dnz_chr_id IS NOT NULL OR
670        p_dnz_chr_id <> OKL_API.G_MISS_NUM) AND
671        (p_cle_id IS NOT NULL OR
672        p_cle_id <> OKL_API.G_MISS_NUM) THEN
673        -- store SQL error message on message stack
674        -- Notify Error
675        OKL_API.set_message(p_app_name     => G_APP_NAME,
676                            p_msg_name     => G_REQUIRED_VALUE,
677                            p_token1       => G_COL_NAME_TOKEN,
678                            p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID and CLE_ID');
679        RAISE G_EXCEPTION_STOP_VALIDATION;
680     END IF;
681     --  Getting the TOP Line STS CODE
682     IF (p_dnz_chr_id IS NOT NULL OR
683        p_dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
684        OPEN c_get_tls_currency_code(p_dnz_chr_id);
685        FETCH c_get_tls_currency_code INTO x_currency_code;
686        IF c_get_tls_currency_code%NOTFOUND THEN
687           -- store SQL error message on message stack
688           OKL_API.set_message(p_app_name     => G_APP_NAME,
689                               p_msg_name     => G_NO_MATCHING_RECORD,
690                               p_token1       => G_COL_NAME_TOKEN,
691                               p_token1_value => 'OKC_K_HEADERS_V.CURRENCY_CODE');
692           RAISE G_EXCEPTION_HALT_VALIDATION;
693        END IF;
694        CLOSE c_get_tls_currency_code;
695     END IF;
696     --  Getting the SUB Line STS CODE
697     IF (p_cle_id IS NOT NULL OR
698        p_cle_id <> OKL_API.G_MISS_NUM) THEN
699        OPEN c_get_sls_currency_code(p_cle_id);
700        FETCH c_get_sls_currency_code INTO x_currency_code;
701        IF c_get_sls_currency_code%NOTFOUND THEN
702           -- store SQL error message on message stack
703           OKL_API.set_message(p_app_name     => G_APP_NAME,
704                               p_msg_name     => G_NO_MATCHING_RECORD,
705                               p_token1       => G_COL_NAME_TOKEN,
706                               p_token1_value => 'OKC_K_HEADERS_V.CURRENCY_CODE');
707           RAISE G_EXCEPTION_HALT_VALIDATION;
708        END IF;
709        CLOSE c_get_sls_currency_code;
710     END IF;
711     RETURN x_return_status;
712   EXCEPTION
713     WHEN G_EXCEPTION_STOP_VALIDATION then
714     -- We are here since the field is required
715     x_return_status := OKL_API.G_RET_STS_ERROR;
716     WHEN G_EXCEPTION_HALT_VALIDATION then
717       -- We are here b'cause we have no parent record
718       -- If the cursor is open then it has to be closed
719      IF c_get_tls_currency_code%ISOPEN THEN
720         CLOSE c_get_tls_currency_code;
721      END IF;
722      -- if the cursor is open
723      IF c_get_sls_currency_code%ISOPEN THEN
724         CLOSE c_get_sls_currency_code;
725      END IF;
726      -- notify caller of an error
727      x_return_status := OKL_API.G_RET_STS_ERROR;
728     WHEN OTHERS THEN
729       -- store SQL error message on message stack for caller
730       OKL_API.set_message(G_APP_NAME,
731                           G_UNEXPECTED_ERROR,
732                           G_SQLCODE_TOKEN,
733                           SQLCODE,
734                           G_SQLERRM_TOKEN,
735                           SQLERRM);
736      -- notify caller of an UNEXPECTED error
737      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
738      -- if the cursor is open
739      IF c_get_tls_currency_code%ISOPEN THEN
740         CLOSE c_get_tls_currency_code;
741      END IF;
742      -- if the cursor is open
743      IF c_get_sls_currency_code%ISOPEN THEN
744         CLOSE c_get_sls_currency_code;
745      END IF;
746      RETURN(x_return_status);
747   END get_currency_code;
748 ----------------------------------------------------------------------------------------------------------------
749 -- Start of Commnets
750 -- Ramesh Seela
751 -- Function Name        : default_contract_line_values
752 -- Description          : Default the values of start_date, end_date, sts_code, and currency_code on the line
753 -- Business Rules       :
754 -- Parameters           :
755 -- Version              :
756 -- End of Commnets
757 
758   FUNCTION default_contract_line_values(p_dnz_chr_id IN  OKC_K_LINES_B.DNZ_CHR_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
759                         p_cle_id     IN  OKC_K_LINES_B.CLE_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
760                         p_clev_rec   IN OUT  NOCOPY clev_rec_type)
761   RETURN VARCHAR2 IS
762     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
763     lv_orig_sys_source_code    OKC_K_HEADERS_B.ORIG_SYSTEM_SOURCE_CODE%TYPE;
764     ln_orig_system_id1         OKC_K_HEADERS_B.ORIG_SYSTEM_ID1%TYPE;
765     ld_start_date              OKC_K_LINES_B.START_DATE%TYPE;
766     ld_end_date                OKC_K_LINES_B.END_DATE%TYPE;
767     lv_currency_code           OKC_K_HEADERS_B.CURRENCY_CODE%TYPE;
768     lv_sts_code                OKC_K_HEADERS_B.STS_CODE%TYPE;
769 
770     CURSOR c_get_contract_header_details(p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE) IS
771     SELECT chrv.sts_code,
772            chrv.end_date,
773            chrv.currency_code,
774            chrv.start_Date,
775            chrv.orig_system_source_code,
776            chrv.orig_system_id1
777     FROM OKC_K_HEADERS_V chrv
778     WHERE chrv.id = p_dnz_chr_id;
779 
780     CURSOR c_get_contract_line_details(p_cle_id OKC_K_LINES_B.CLE_ID%TYPE) IS
781     SELECT cle.sts_code,
782            cle.end_date,
783            cle.currency_code,
784            cle.start_date
785     FROM OKC_K_LINES_V cle
786     WHERE cle.id = p_cle_id;
787 
788     CURSOR c_get_trx_date_trans_occ(p_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE) IS
789     SELECT date_transaction_occurred
790     FROM okl_trx_contracts
791     WHERE khr_id = p_chr_id
792     AND tcn_type = 'TRBK'
793     AND tsu_code = 'ENTERED'
794     --rkuttiya added for 12.1.1 Multi GAAP
795     AND representation_type = 'PRIMARY';
796     --
797   BEGIN
798     -- Both p_dnz_chr_id and p_cle_id are not to be given
799     IF (p_dnz_chr_id IS NOT NULL OR
800        p_dnz_chr_id <> OKL_API.G_MISS_NUM) AND
801        (p_cle_id IS NOT NULL OR
802        p_cle_id <> OKL_API.G_MISS_NUM) THEN
803        -- store SQL error message on message stack
804        -- Notify Error
805        OKL_API.set_message(p_app_name     => G_APP_NAME,
806                            p_msg_name     => G_REQUIRED_VALUE,
807                            p_token1       => G_COL_NAME_TOKEN,
808                            p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID and CLE_ID');
809        RAISE G_EXCEPTION_STOP_VALIDATION;
810     END IF;
811     --  Getting the TOP Line STS CODE
812     IF (p_dnz_chr_id IS NOT NULL OR
813        p_dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
814        OPEN c_get_contract_header_details(p_dnz_chr_id);
815        FETCH c_get_contract_header_details
816        INTO lv_sts_code,
817             ld_end_date,
818             lv_currency_code,
819             ld_start_date,
820             lv_orig_sys_source_code,
821             ln_orig_system_id1;
822        IF c_get_contract_header_details%NOTFOUND THEN
823           -- store SQL error message on message stack
824           OKL_API.set_message(p_app_name     => G_APP_NAME,
825                               p_msg_name     => G_NO_MATCHING_RECORD,
826                               p_token1       => G_COL_NAME_TOKEN,
827                               p_token1_value => 'OKC_K_HEADERS_V.START_DATE');
828           RAISE G_EXCEPTION_HALT_VALIDATION;
829        END IF;
830        CLOSE c_get_contract_header_details;
831        IF lv_orig_sys_source_code = 'OKL_REBOOK' THEN
832          OPEN  c_get_trx_date_trans_occ(p_chr_id => ln_orig_system_id1);
833          FETCH c_get_trx_date_trans_occ INTO ld_start_date;
834          CLOSE c_get_trx_date_trans_occ;
835          ld_start_date :=  nvl(ld_start_date,sysdate);
836        END IF;
837     END IF;
838     --  Getting the SUB Line STS CODE
839     IF (p_cle_id IS NOT NULL OR
840        p_cle_id <> OKL_API.G_MISS_NUM) THEN
841        OPEN c_get_contract_line_details(p_cle_id);
842        FETCH c_get_contract_line_details
843        INTO lv_sts_code,
844             ld_end_date,
845             lv_currency_code,
846             ld_start_date;
847        IF c_get_contract_line_details%NOTFOUND THEN
848           -- store SQL error message on message stack
849           OKL_API.set_message(p_app_name     => G_APP_NAME,
850                               p_msg_name     => G_NO_MATCHING_RECORD,
851                               p_token1       => G_COL_NAME_TOKEN,
852                               p_token1_value => 'OKC_K_HEADERS_V.START_DATE');
853           RAISE G_EXCEPTION_HALT_VALIDATION;
854        END IF;
855        CLOSE c_get_contract_line_details;
856     END IF;
857     IF (p_clev_rec.sts_code IS NULL OR
858         p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
859        p_clev_rec.sts_code := lv_sts_code;
860     END IF;
861     IF (p_clev_rec.end_date IS NULL OR
862         p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
863        p_clev_rec.end_date := ld_end_date;
864     END IF;
865     IF (p_clev_rec.start_date IS NULL OR
866         p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
867        p_clev_rec.start_date := ld_start_date;
868     END IF;
869     IF (p_clev_rec.currency_code IS NULL OR
870         p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
871        p_clev_rec.currency_code := lv_currency_code;
872     END IF;
873     RETURN x_return_status;
874   EXCEPTION
875     WHEN G_EXCEPTION_STOP_VALIDATION then
876     -- We are here since the field is required
877     x_return_status := OKL_API.G_RET_STS_ERROR;
878     WHEN G_EXCEPTION_HALT_VALIDATION then
879       -- We are here b'cause we have no parent record
880       -- If the cursor is open then it has to be closed
881      IF c_get_contract_header_details%ISOPEN THEN
882         CLOSE c_get_contract_header_details;
883      END IF;
884      -- if the cursor is open
885      IF c_get_contract_line_details%ISOPEN THEN
886         CLOSE c_get_contract_line_details;
887      END IF;
888      -- notify caller of an error
889      x_return_status := OKL_API.G_RET_STS_ERROR;
890     WHEN OTHERS THEN
891       -- store SQL error message on message stack for caller
892       OKL_API.set_message(G_APP_NAME,
893                           G_UNEXPECTED_ERROR,
894                           G_SQLCODE_TOKEN,
895                           SQLCODE,
896                           G_SQLERRM_TOKEN,
897                           SQLERRM);
898      -- notify caller of an UNEXPECTED error
899      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
900      -- if the cursor is open
901      IF c_get_contract_header_details%ISOPEN THEN
902         CLOSE c_get_contract_header_details;
903      END IF;
904      -- if the cursor is open
905      IF c_get_contract_line_details%ISOPEN THEN
906         CLOSE c_get_contract_line_details;
907      END IF;
908      RETURN(x_return_status);
909   END default_contract_line_values;
910 -------------------------------------------------------------------------------------------------
911   FUNCTION get_rec_txlv(p_txlv_id   IN  OKL_TXL_ASSETS_V.KLE_ID%TYPE,
912                         x_txlv_rec  OUT NOCOPY talv_rec_type)
913   RETURN VARCHAR2 IS
914     CURSOR okl_talv_pk_csr (p_kle_id  IN NUMBER) IS
915     SELECT ID,
916            OBJECT_VERSION_NUMBER,
917            SFWT_FLAG,
918            TAS_ID,
919            ILO_ID,
920            ILO_ID_OLD,
921            IAY_ID,
922            IAY_ID_NEW,
923            KLE_ID,
924            DNZ_KHR_ID,
925            LINE_NUMBER,
926            ORG_ID,
927            TAL_TYPE,
928            ASSET_NUMBER,
929            DESCRIPTION,
930            FA_LOCATION_ID,
931            ORIGINAL_COST,
932            CURRENT_UNITS,
933            MANUFACTURER_NAME,
934            YEAR_MANUFACTURED,
935            SUPPLIER_ID,
936            USED_ASSET_YN,
937            TAG_NUMBER,
938            MODEL_NUMBER,
939            CORPORATE_BOOK,
940            DATE_PURCHASED,
941            DATE_DELIVERY,
942            IN_SERVICE_DATE,
943            LIFE_IN_MONTHS,
944            DEPRECIATION_ID,
945            DEPRECIATION_COST,
946            DEPRN_METHOD,
947            DEPRN_RATE,
948            SALVAGE_VALUE,
949            PERCENT_SALVAGE_VALUE,
950 --Bug# 2981308
951            ASSET_KEY_ID,
952            ATTRIBUTE_CATEGORY,
953            ATTRIBUTE1,
954            ATTRIBUTE2,
955            ATTRIBUTE3,
956            ATTRIBUTE4,
957            ATTRIBUTE5,
958            ATTRIBUTE6,
959            ATTRIBUTE7,
960            ATTRIBUTE8,
961            ATTRIBUTE9,
962            ATTRIBUTE10,
963            ATTRIBUTE11,
964            ATTRIBUTE12,
965            ATTRIBUTE13,
966            ATTRIBUTE14,
967            ATTRIBUTE15,
968            CREATED_BY,
969            CREATION_DATE,
970            LAST_UPDATED_BY,
971            LAST_UPDATE_DATE,
972            LAST_UPDATE_LOGIN,
973            DEPRECIATE_YN,
974            HOLD_PERIOD_DAYS,
975            OLD_SALVAGE_VALUE,
976            NEW_RESIDUAL_VALUE,
977            OLD_RESIDUAL_VALUE,
978            UNITS_RETIRED,
979            COST_RETIRED,
980            SALE_PROCEEDS,
981            REMOVAL_COST,
982            DNZ_ASSET_ID,
983            DATE_DUE,
984            REP_ASSET_ID,
985            LKE_ASSET_ID,
986            MATCH_AMOUNT,
987            SPLIT_INTO_SINGLES_FLAG,
988            SPLIT_INTO_UNITS,
989            CURRENCY_CODE,
990            CURRENCY_CONVERSION_TYPE,
991            CURRENCY_CONVERSION_RATE,
992            CURRENCY_CONVERSION_DATE
993       FROM Okl_Txl_Assets_V
994      WHERE okl_txl_assets_v.kle_id  = p_kle_id;
995     l_okl_talv_pk                  okl_talv_pk_csr%ROWTYPE;
996     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
997   BEGIN
998     OPEN okl_talv_pk_csr (p_txlv_id);
999     FETCH okl_talv_pk_csr INTO
1000               x_txlv_rec.ID,
1001               x_txlv_rec.OBJECT_VERSION_NUMBER,
1002               x_txlv_rec.SFWT_FLAG,
1003               x_txlv_rec.TAS_ID,
1004               x_txlv_rec.ILO_ID,
1005               x_txlv_rec.ILO_ID_OLD,
1006               x_txlv_rec.IAY_ID,
1007               x_txlv_rec.IAY_ID_NEW,
1008               x_txlv_rec.KLE_ID,
1009               x_txlv_rec.DNZ_KHR_ID,
1010               x_txlv_rec.LINE_NUMBER,
1011               x_txlv_rec.ORG_ID,
1012               x_txlv_rec.TAL_TYPE,
1013               x_txlv_rec.ASSET_NUMBER,
1014               x_txlv_rec.DESCRIPTION,
1015               x_txlv_rec.FA_LOCATION_ID,
1016               x_txlv_rec.ORIGINAL_COST,
1017               x_txlv_rec.CURRENT_UNITS,
1018               x_txlv_rec.MANUFACTURER_NAME,
1019               x_txlv_rec.YEAR_MANUFACTURED,
1020               x_txlv_rec.SUPPLIER_ID,
1021               x_txlv_rec.USED_ASSET_YN,
1022               x_txlv_rec.TAG_NUMBER,
1023               x_txlv_rec.MODEL_NUMBER,
1024               x_txlv_rec.CORPORATE_BOOK,
1025               x_txlv_rec.DATE_PURCHASED,
1026               x_txlv_rec.DATE_DELIVERY,
1027               x_txlv_rec.IN_SERVICE_DATE,
1028               x_txlv_rec.LIFE_IN_MONTHS,
1029               x_txlv_rec.DEPRECIATION_ID,
1030               x_txlv_rec.DEPRECIATION_COST,
1031               x_txlv_rec.DEPRN_METHOD,
1032               x_txlv_rec.DEPRN_RATE,
1033               x_txlv_rec.SALVAGE_VALUE,
1034               x_txlv_rec.PERCENT_SALVAGE_VALUE,
1035 --Bug# 2981308
1036               x_txlv_rec.ASSET_KEY_ID,
1037               x_txlv_rec.ATTRIBUTE_CATEGORY,
1038               x_txlv_rec.ATTRIBUTE1,
1039               x_txlv_rec.ATTRIBUTE2,
1040               x_txlv_rec.ATTRIBUTE3,
1041               x_txlv_rec.ATTRIBUTE4,
1042               x_txlv_rec.ATTRIBUTE5,
1043               x_txlv_rec.ATTRIBUTE6,
1044               x_txlv_rec.ATTRIBUTE7,
1045               x_txlv_rec.ATTRIBUTE8,
1046               x_txlv_rec.ATTRIBUTE9,
1047               x_txlv_rec.ATTRIBUTE10,
1048               x_txlv_rec.ATTRIBUTE11,
1049               x_txlv_rec.ATTRIBUTE12,
1050               x_txlv_rec.ATTRIBUTE13,
1051               x_txlv_rec.ATTRIBUTE14,
1052               x_txlv_rec.ATTRIBUTE15,
1053               x_txlv_rec.CREATED_BY,
1054               x_txlv_rec.CREATION_DATE,
1055               x_txlv_rec.LAST_UPDATED_BY,
1056               x_txlv_rec.LAST_UPDATE_DATE,
1057               x_txlv_rec.LAST_UPDATE_LOGIN,
1058               x_txlv_rec.DEPRECIATE_YN,
1059               x_txlv_rec.HOLD_PERIOD_DAYS,
1060               x_txlv_rec.OLD_SALVAGE_VALUE,
1061               x_txlv_rec.NEW_RESIDUAL_VALUE,
1062               x_txlv_rec.OLD_RESIDUAL_VALUE,
1063               x_txlv_rec.UNITS_RETIRED,
1064               x_txlv_rec.COST_RETIRED,
1065               x_txlv_rec.SALE_PROCEEDS,
1066               x_txlv_rec.REMOVAL_COST,
1067               x_txlv_rec.DNZ_ASSET_ID,
1068               x_txlv_rec.DATE_DUE,
1069               x_txlv_rec.REP_ASSET_ID,
1070               x_txlv_rec.LKE_ASSET_ID,
1071               x_txlv_rec.MATCH_AMOUNT,
1072               x_txlv_rec.SPLIT_INTO_SINGLES_FLAG,
1073               x_txlv_rec.SPLIT_INTO_UNITS,
1074               x_txlv_rec.CURRENCY_CODE,
1075               x_txlv_rec.CURRENCY_CONVERSION_TYPE,
1076               x_txlv_rec.CURRENCY_CONVERSION_RATE,
1077               x_txlv_rec.CURRENCY_CONVERSION_DATE;
1078     IF okl_talv_pk_csr%NOTFOUND THEN
1079        x_return_status := OKL_API.G_RET_STS_ERROR;
1080     END IF;
1081     CLOSE okl_talv_pk_csr;
1082     RETURN(x_return_status);
1083   EXCEPTION
1084     WHEN OTHERS THEN
1085       -- store SQL error message on message stack for caller
1086       OKL_API.set_message(G_APP_NAME,
1087                           G_UNEXPECTED_ERROR,
1088                           G_SQLCODE_TOKEN,
1089                           SQLCODE,
1090                           G_SQLERRM_TOKEN,
1091                           SQLERRM);
1092      -- notify caller of an UNEXPECTED error
1093      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1094      -- if the cursor is open
1095      IF okl_talv_pk_csr%ISOPEN THEN
1096         CLOSE okl_talv_pk_csr;
1097      END IF;
1098      RETURN(x_return_status);
1099   END get_rec_txlv;
1100 ----------------------------------------------------------------------------
1101 -- Start of Commnets
1102 -- Badrinath Kuchibholta
1103 -- Function Name        : get_txdv_rec
1104 -- Description          : Get Transaction Detail Line Record
1105 -- Business Rules       :
1106 -- Parameters           :
1107 -- Version              :
1108 -- End of Commnets
1109   FUNCTION get_txdv_tbl(p_tal_id        IN NUMBER,
1110                         p_asset_number  IN OKL_TXL_ASSETS_B.ASSET_NUMBER%TYPE,
1111                         p_original_cost IN OKL_TXL_ASSETS_B.ORIGINAL_COST%TYPE,
1112                         x_to_update     OUT NOCOPY VARCHAR2,
1113                         x_txdv_tbl      OUT NOCOPY txdv_tbl_type)
1114   RETURN  VARCHAR2
1115   IS
1116     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1117     i                          NUMBER := 0;
1118     lv_to_update               VARCHAR2(3) := 'N';
1119     CURSOR c_okl_asdv_pk_csr (p_tal_id  IN NUMBER) IS
1120     SELECT id,
1121            object_version_number,
1122            tal_id,
1123            target_kle_id,
1124            line_detail_number,
1125            asset_number,
1126            description,
1127            quantity,
1128            cost,
1129            tax_book,
1130            life_in_months_tax,
1131            deprn_method_tax,
1132            deprn_rate_tax,
1133            salvage_value,
1134            attribute_category,
1135            attribute1,
1136            attribute2,
1137            attribute3,
1138            attribute4,
1139            attribute5,
1140            attribute6,
1141            attribute7,
1142            attribute8,
1143            attribute9,
1144            attribute10,
1145            attribute11,
1146            attribute12,
1147            attribute13,
1148            attribute14,
1149            attribute15,
1150            created_by,
1151            creation_date,
1152            last_updated_by,
1153            last_update_date,
1154            last_update_login,
1155            split_percent,
1156            inventory_item_id
1157     FROM Okl_Txd_Assets_V txd
1158     WHERE txd.tal_id  = p_tal_id;
1159   BEGIN
1160     FOR r_okl_asdv_pk_csr IN c_okl_asdv_pk_csr(p_tal_id) LOOP
1161         x_txdv_tbl(i).ID                     := r_okl_asdv_pk_csr.ID;
1162         x_txdv_tbl(i).OBJECT_VERSION_NUMBER  := r_okl_asdv_pk_csr.OBJECT_VERSION_NUMBER;
1163         x_txdv_tbl(i).TAL_ID                 := r_okl_asdv_pk_csr.TAL_ID;
1164         x_txdv_tbl(i).TARGET_KLE_ID          := r_okl_asdv_pk_csr.TARGET_KLE_ID;
1165         x_txdv_tbl(i).LINE_DETAIL_NUMBER     := r_okl_asdv_pk_csr.LINE_DETAIL_NUMBER;
1166         x_txdv_tbl(i).DESCRIPTION            := r_okl_asdv_pk_csr.DESCRIPTION;
1167         IF (p_asset_number <> r_okl_asdv_pk_csr.ASSET_NUMBER) OR
1168            (p_original_cost <> r_okl_asdv_pk_csr.COST) THEN
1169           x_txdv_tbl(i).COST                   := r_okl_asdv_pk_csr.COST; --Made change by bkatraga for bug 9770391
1170           x_txdv_tbl(i).ASSET_NUMBER           := p_asset_number;
1171           lv_to_update := 'Y';
1172         ELSE
1173           x_txdv_tbl(i).COST                   := r_okl_asdv_pk_csr.COST;
1174           x_txdv_tbl(i).ASSET_NUMBER           := r_okl_asdv_pk_csr.ASSET_NUMBER;
1175           lv_to_update := 'N';
1176         END IF;
1177         x_txdv_tbl(i).QUANTITY               := r_okl_asdv_pk_csr.QUANTITY;
1178         x_txdv_tbl(i).TAX_BOOK               := r_okl_asdv_pk_csr.TAX_BOOK;
1179         x_txdv_tbl(i).LIFE_IN_MONTHS_TAX     := r_okl_asdv_pk_csr.LIFE_IN_MONTHS_TAX;
1180         x_txdv_tbl(i).DEPRN_METHOD_TAX       := r_okl_asdv_pk_csr.DEPRN_METHOD_TAX;
1181         x_txdv_tbl(i).DEPRN_RATE_TAX         := r_okl_asdv_pk_csr.DEPRN_RATE_TAX;
1182         x_txdv_tbl(i).SALVAGE_VALUE          := r_okl_asdv_pk_csr.SALVAGE_VALUE;
1183         x_txdv_tbl(i).ATTRIBUTE_CATEGORY     := r_okl_asdv_pk_csr.ATTRIBUTE_CATEGORY;
1184         x_txdv_tbl(i).ATTRIBUTE1             := r_okl_asdv_pk_csr.ATTRIBUTE1;
1185         x_txdv_tbl(i).ATTRIBUTE2             := r_okl_asdv_pk_csr.ATTRIBUTE2;
1186         x_txdv_tbl(i).ATTRIBUTE3             := r_okl_asdv_pk_csr.ATTRIBUTE3;
1187         x_txdv_tbl(i).ATTRIBUTE4             := r_okl_asdv_pk_csr.ATTRIBUTE4;
1188         x_txdv_tbl(i).ATTRIBUTE5             := r_okl_asdv_pk_csr.ATTRIBUTE5;
1189         x_txdv_tbl(i).ATTRIBUTE6             := r_okl_asdv_pk_csr.ATTRIBUTE6;
1190         x_txdv_tbl(i).ATTRIBUTE7             := r_okl_asdv_pk_csr.ATTRIBUTE7;
1191         x_txdv_tbl(i).ATTRIBUTE8             := r_okl_asdv_pk_csr.ATTRIBUTE8;
1192         x_txdv_tbl(i).ATTRIBUTE9             := r_okl_asdv_pk_csr.ATTRIBUTE9;
1193         x_txdv_tbl(i).ATTRIBUTE10            := r_okl_asdv_pk_csr.ATTRIBUTE10;
1194         x_txdv_tbl(i).ATTRIBUTE11            := r_okl_asdv_pk_csr.ATTRIBUTE11;
1195         x_txdv_tbl(i).ATTRIBUTE12            := r_okl_asdv_pk_csr.ATTRIBUTE12;
1196         x_txdv_tbl(i).ATTRIBUTE13            := r_okl_asdv_pk_csr.ATTRIBUTE13;
1197         x_txdv_tbl(i).ATTRIBUTE14            := r_okl_asdv_pk_csr.ATTRIBUTE14;
1198         x_txdv_tbl(i).ATTRIBUTE15            := r_okl_asdv_pk_csr.ATTRIBUTE15;
1199         x_txdv_tbl(i).CREATED_BY             := r_okl_asdv_pk_csr.CREATED_BY;
1200         x_txdv_tbl(i).CREATION_DATE          := r_okl_asdv_pk_csr.CREATION_DATE;
1201         x_txdv_tbl(i).LAST_UPDATED_BY        := r_okl_asdv_pk_csr.LAST_UPDATED_BY;
1202         x_txdv_tbl(i).LAST_UPDATE_DATE       := r_okl_asdv_pk_csr.LAST_UPDATE_DATE;
1203         x_txdv_tbl(i).LAST_UPDATE_LOGIN      := r_okl_asdv_pk_csr.LAST_UPDATE_LOGIN;
1204         x_txdv_tbl(i).SPLIT_PERCENT          := r_okl_asdv_pk_csr.split_percent;
1205         x_txdv_tbl(i).INVENTORY_ITEM_ID      := r_okl_asdv_pk_csr.inventory_item_id;
1206         i := i + 1;
1207 --       IF c_okl_asdv_pk_csr%NOTFOUND THEN
1208 --          x_return_status := OKL_API.G_RET_STS_ERROR;
1209 --          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
1210 --       END IF;
1211     END LOOP;
1212     x_to_update := lv_to_update;
1213     RETURN(x_return_status);
1214   EXCEPTION
1215     WHEN OTHERS THEN
1216       -- store SQL error message on message stack for caller
1217       OKL_API.set_message(
1218               G_APP_NAME,
1219               G_UNEXPECTED_ERROR,
1220               G_SQLCODE_TOKEN,
1221               SQLCODE,
1222               G_SQLERRM_TOKEN,
1223               SQLERRM);
1224        IF c_okl_asdv_pk_csr%ISOPEN THEN
1225           CLOSE c_okl_asdv_pk_csr;
1226        END IF;
1227       -- notify caller of an UNEXPECTED error
1228       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1229       return(x_return_status);
1230   END get_txdv_tbl;
1231 -----------------------------------------------------------------------------------------------
1232   FUNCTION get_rec_itiv(p_itiv_id   IN  OKL_TXL_ITM_INSTS_V.KLE_ID%TYPE,
1233                         x_itiv_rec  OUT NOCOPY itiv_rec_type)
1234   RETURN VARCHAR2 IS
1235 
1236     CURSOR okl_itiv_pk_csr (p_kle_id  IN NUMBER) IS
1237     SELECT ID,
1238            OBJECT_VERSION_NUMBER,
1239            TAS_ID,
1240            TAL_ID,
1241            KLE_ID,
1242            TAL_TYPE,
1243            LINE_NUMBER,
1244            INSTANCE_NUMBER_IB,
1245            OBJECT_ID1_NEW,
1246            OBJECT_ID2_NEW,
1247            JTOT_OBJECT_CODE_NEW,
1248            OBJECT_ID1_OLD,
1249            OBJECT_ID2_OLD,
1250            JTOT_OBJECT_CODE_OLD,
1251            INVENTORY_ORG_ID,
1252            SERIAL_NUMBER,
1253            MFG_SERIAL_NUMBER_YN,
1254            INVENTORY_ITEM_ID,
1255            INV_MASTER_ORG_ID,
1256            ATTRIBUTE_CATEGORY,
1257            ATTRIBUTE1,
1258            ATTRIBUTE2,
1259            ATTRIBUTE3,
1260            ATTRIBUTE4,
1261            ATTRIBUTE5,
1262            ATTRIBUTE6,
1263            ATTRIBUTE7,
1264            ATTRIBUTE8,
1265            ATTRIBUTE9,
1266            ATTRIBUTE10,
1267            ATTRIBUTE11,
1268            ATTRIBUTE12,
1269            ATTRIBUTE13,
1270            ATTRIBUTE14,
1271            ATTRIBUTE15,
1272            CREATED_BY,
1273            CREATION_DATE,
1274            LAST_UPDATED_BY,
1275            LAST_UPDATE_DATE,
1276            LAST_UPDATE_LOGIN
1277     FROM OKL_TXL_ITM_INSTS iti
1278     WHERE iti.kle_id  = p_kle_id;
1279     l_okl_itiv_pk                  okl_itiv_pk_csr%ROWTYPE;
1280     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1281   BEGIN
1282     OPEN okl_itiv_pk_csr (p_itiv_id);
1283     FETCH okl_itiv_pk_csr INTO
1284               x_itiv_rec.ID,
1285               x_itiv_rec.OBJECT_VERSION_NUMBER,
1286               x_itiv_rec.TAS_ID,
1287               x_itiv_rec.TAL_ID,
1288               x_itiv_rec.KLE_ID,
1289               x_itiv_rec.TAL_TYPE,
1290               x_itiv_rec.LINE_NUMBER,
1291               x_itiv_rec.INSTANCE_NUMBER_IB,
1292               x_itiv_rec.OBJECT_ID1_NEW,
1293               x_itiv_rec.OBJECT_ID2_NEW,
1294               x_itiv_rec.JTOT_OBJECT_CODE_NEW,
1295               x_itiv_rec.OBJECT_ID1_OLD,
1296               x_itiv_rec.OBJECT_ID2_OLD,
1297               x_itiv_rec.JTOT_OBJECT_CODE_OLD,
1298               x_itiv_rec.INVENTORY_ORG_ID,
1299               x_itiv_rec.SERIAL_NUMBER,
1300               x_itiv_rec.MFG_SERIAL_NUMBER_YN,
1301               x_itiv_rec.INVENTORY_ITEM_ID,
1302               x_itiv_rec.INV_MASTER_ORG_ID,
1303               x_itiv_rec.ATTRIBUTE_CATEGORY,
1304               x_itiv_rec.ATTRIBUTE1,
1305               x_itiv_rec.ATTRIBUTE2,
1306               x_itiv_rec.ATTRIBUTE3,
1307               x_itiv_rec.ATTRIBUTE4,
1308               x_itiv_rec.ATTRIBUTE5,
1309               x_itiv_rec.ATTRIBUTE6,
1310               x_itiv_rec.ATTRIBUTE7,
1311               x_itiv_rec.ATTRIBUTE8,
1312               x_itiv_rec.ATTRIBUTE9,
1313               x_itiv_rec.ATTRIBUTE10,
1314               x_itiv_rec.ATTRIBUTE11,
1315               x_itiv_rec.ATTRIBUTE12,
1316               x_itiv_rec.ATTRIBUTE13,
1317               x_itiv_rec.ATTRIBUTE14,
1318               x_itiv_rec.ATTRIBUTE15,
1319               x_itiv_rec.CREATED_BY,
1320               x_itiv_rec.CREATION_DATE,
1321               x_itiv_rec.LAST_UPDATED_BY,
1322               x_itiv_rec.LAST_UPDATE_DATE,
1323               x_itiv_rec.LAST_UPDATE_LOGIN;
1324     IF okl_itiv_pk_csr%NOTFOUND THEN
1325        x_return_status := OKL_API.G_RET_STS_ERROR;
1326     END IF;
1327     CLOSE okl_itiv_pk_csr;
1328     RETURN(x_return_status);
1329   EXCEPTION
1330     WHEN OTHERS THEN
1331       -- store SQL error message on message stack for caller
1332       OKL_API.set_message(G_APP_NAME,
1333                           G_UNEXPECTED_ERROR,
1334                           G_SQLCODE_TOKEN,
1335                           SQLCODE,
1336                           G_SQLERRM_TOKEN,
1337                           SQLERRM);
1338      -- notify caller of an UNEXPECTED error
1339      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1340      -- if the cursor is open
1341      IF okl_itiv_pk_csr%ISOPEN THEN
1342         CLOSE okl_itiv_pk_csr;
1343      END IF;
1344      RETURN(x_return_status);
1345   END get_rec_itiv;
1346 -----------------------------------------------------------------------------------------------------
1347   FUNCTION get_rec_cplv(p_cplv_id   IN  OKC_K_PARTY_ROLES_B.ID%TYPE,
1348                         x_cplv_rec  OUT NOCOPY cplv_rec_type)
1349   RETURN VARCHAR2 IS
1350   CURSOR okc_cplv_pk_csr (p_cplv_id  OKC_K_PARTY_ROLES_B.ID%TYPE) IS
1351   SELECT ID,
1352          OBJECT_VERSION_NUMBER,
1353          SFWT_FLAG,
1354          CPL_ID,
1355          CHR_ID,
1356          CLE_ID,
1357          RLE_CODE,
1358          DNZ_CHR_ID,
1359          OBJECT1_ID1,
1360          OBJECT1_ID2,
1361          JTOT_OBJECT1_CODE,
1362          COGNOMEN,
1363          CODE,
1364          FACILITY,
1365          MINORITY_GROUP_LOOKUP_CODE,
1366          SMALL_BUSINESS_FLAG,
1367          WOMEN_OWNED_FLAG,
1368          ALIAS,
1369          ATTRIBUTE_CATEGORY,
1370          ATTRIBUTE1,
1371          ATTRIBUTE2,
1372          ATTRIBUTE3,
1373          ATTRIBUTE4,
1374          ATTRIBUTE5,
1375          ATTRIBUTE6,
1376          ATTRIBUTE7,
1377          ATTRIBUTE8,
1378          ATTRIBUTE9,
1379          ATTRIBUTE10,
1380          ATTRIBUTE11,
1381          ATTRIBUTE12,
1382          ATTRIBUTE13,
1383          ATTRIBUTE14,
1384          ATTRIBUTE15,
1385          CREATED_BY,
1386          CREATION_DATE,
1387          LAST_UPDATED_BY,
1388          LAST_UPDATE_DATE,
1389          LAST_UPDATE_LOGIN
1390       FROM Okc_K_Party_Roles_V cpr
1391      WHERE cpr.id = p_cplv_id;
1392     l_okc_cplv_pk                  okc_cplv_pk_csr%ROWTYPE;
1393     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1394   BEGIN
1395     OPEN okc_cplv_pk_csr (p_cplv_id);
1396     FETCH okc_cplv_pk_csr INTO
1397               x_cplv_rec.ID,
1398               x_cplv_rec.OBJECT_VERSION_NUMBER,
1399               x_cplv_rec.SFWT_FLAG,
1400               x_cplv_rec.CPL_ID,
1401               x_cplv_rec.CHR_ID,
1402               x_cplv_rec.CLE_ID,
1403               x_cplv_rec.RLE_CODE,
1404               x_cplv_rec.DNZ_CHR_ID,
1405               x_cplv_rec.OBJECT1_ID1,
1406               x_cplv_rec.OBJECT1_ID2,
1407               x_cplv_rec.JTOT_OBJECT1_CODE,
1408               x_cplv_rec.COGNOMEN,
1409               x_cplv_rec.CODE,
1410               x_cplv_rec.FACILITY,
1411               x_cplv_rec.MINORITY_GROUP_LOOKUP_CODE,
1412               x_cplv_rec.SMALL_BUSINESS_FLAG,
1413               x_cplv_rec.WOMEN_OWNED_FLAG,
1414               x_cplv_rec.ALIAS,
1415               x_cplv_rec.ATTRIBUTE_CATEGORY,
1416               x_cplv_rec.ATTRIBUTE1,
1417               x_cplv_rec.ATTRIBUTE2,
1418               x_cplv_rec.ATTRIBUTE3,
1419               x_cplv_rec.ATTRIBUTE4,
1420               x_cplv_rec.ATTRIBUTE5,
1421               x_cplv_rec.ATTRIBUTE6,
1422               x_cplv_rec.ATTRIBUTE7,
1423               x_cplv_rec.ATTRIBUTE8,
1424               x_cplv_rec.ATTRIBUTE9,
1425               x_cplv_rec.ATTRIBUTE10,
1426               x_cplv_rec.ATTRIBUTE11,
1427               x_cplv_rec.ATTRIBUTE12,
1428               x_cplv_rec.ATTRIBUTE13,
1429               x_cplv_rec.ATTRIBUTE14,
1430               x_cplv_rec.ATTRIBUTE15,
1431               x_cplv_rec.CREATED_BY,
1432               x_cplv_rec.CREATION_DATE,
1433               x_cplv_rec.LAST_UPDATED_BY,
1434               x_cplv_rec.LAST_UPDATE_DATE,
1435               x_cplv_rec.LAST_UPDATE_LOGIN;
1436     IF okc_cplv_pk_csr%NOTFOUND THEN
1437        x_return_status := OKL_API.G_RET_STS_ERROR;
1438     END IF;
1439     CLOSE okc_cplv_pk_csr;
1440     RETURN(x_return_status);
1441   EXCEPTION
1442     WHEN OTHERS THEN
1443       -- store SQL error message on message stack for caller
1444       OKL_API.set_message(G_APP_NAME,
1445                           G_UNEXPECTED_ERROR,
1446                           G_SQLCODE_TOKEN,
1447                           SQLCODE,
1448                           G_SQLERRM_TOKEN,
1449                           SQLERRM);
1450      -- notify caller of an UNEXPECTED error
1451      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1452      -- if the cursor is open
1453      IF okc_cplv_pk_csr%ISOPEN THEN
1454         CLOSE okc_cplv_pk_csr;
1455      END IF;
1456      RETURN(x_return_status);
1457   END get_rec_cplv;
1458 --------------------------------------------------------------------------------------------------
1459   FUNCTION get_rec_ib_cimv(p_cle_id      IN  OKC_K_ITEMS_V.CLE_ID%TYPE,
1460                            p_dnz_chr_id  IN  OKC_K_ITEMS_V.DNZ_CHR_ID%TYPE,
1461                            x_cimv_rec OUT NOCOPY cimv_rec_type)
1462   RETURN VARCHAR2 IS
1463     CURSOR okc_cimv_pk_csr(p_cle_id     OKC_K_ITEMS_V.CLE_ID%TYPE,
1464                            p_dnz_chr_id OKC_K_ITEMS_V.DNZ_CHR_ID%TYPE) IS
1465     SELECT CIM.ID,
1466            CIM.OBJECT_VERSION_NUMBER,
1467            CIM.CLE_ID,
1468            CIM.CHR_ID,
1469            CIM.CLE_ID_FOR,
1470            CIM.DNZ_CHR_ID,
1471            CIM.OBJECT1_ID1,
1472            CIM.OBJECT1_ID2,
1473            CIM.JTOT_OBJECT1_CODE,
1474            CIM.UOM_CODE,
1475            CIM.EXCEPTION_YN,
1476            CIM.NUMBER_OF_ITEMS,
1477            CIM.UPG_ORIG_SYSTEM_REF,
1478            CIM.UPG_ORIG_SYSTEM_REF_ID,
1479            CIM.PRICED_ITEM_YN,
1480            CIM.CREATED_BY,
1481            CIM.CREATION_DATE,
1482            CIM.LAST_UPDATED_BY,
1483            CIM.LAST_UPDATE_DATE,
1484            CIM.LAST_UPDATE_LOGIN
1485     FROM okc_k_items_v cim,
1486     okc_k_lines_b cle,
1487     okc_line_styles_b lse,
1488     okc_k_lines_b cle1
1489     WHERE cim.dnz_chr_id = p_dnz_chr_id
1490     AND   cim.cle_id = cle.id
1491     AND   cle.lse_id = lse.id
1492     AND   lse.lty_code = 'ITEM'
1493     AND   cle.dnz_chr_id = p_dnz_chr_id --cim.dnz_chr_id
1494     AND   cle.cle_id = cle1.cle_id
1495     AND   cle1.id = p_cle_id
1496     AND   cle1.dnz_chr_id = p_dnz_chr_id; --cim.dnz_chr_id
1497 
1498     /*FROM okc_k_items_v cim
1499     WHERE cim.dnz_chr_id = p_dnz_chr_id
1500     AND cim.cle_id in (SELECT cle.id
1501                        FROM okc_k_lines_v cle,
1502                             okc_line_styles_v lse
1503                        WHERE cle.lse_id = lse.id
1504                        AND lse.lty_code = 'ITEM'
1505                        AND cle.dnz_chr_id = cim.dnz_chr_id
1506                        AND cle.cle_id in (SELECT cle1.cle_id
1507                                           FROM okc_k_lines_v cle1
1508                                           WHERE cle1.id = p_cle_id
1509                                           AND cle1.dnz_chr_id = cim.dnz_chr_id));*/
1510     l_okc_cimv_pk              okc_cimv_pk_csr%ROWTYPE;
1511     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1512   BEGIN
1513     OPEN okc_cimv_pk_csr(p_cle_id,
1514                          p_dnz_chr_id);
1515     FETCH okc_cimv_pk_csr INTO
1516               x_cimv_rec.ID,
1517               x_cimv_rec.OBJECT_VERSION_NUMBER,
1518               x_cimv_rec.CLE_ID,
1519               x_cimv_rec.CHR_ID,
1520               x_cimv_rec.CLE_ID_FOR,
1521               x_cimv_rec.DNZ_CHR_ID,
1522               x_cimv_rec.OBJECT1_ID1,
1523               x_cimv_rec.OBJECT1_ID2,
1524               x_cimv_rec.JTOT_OBJECT1_CODE,
1525               x_cimv_rec.UOM_CODE,
1526               x_cimv_rec.EXCEPTION_YN,
1527               x_cimv_rec.NUMBER_OF_ITEMS,
1528               x_cimv_rec.UPG_ORIG_SYSTEM_REF,
1529               x_cimv_rec.UPG_ORIG_SYSTEM_REF_ID,
1530               x_cimv_rec.PRICED_ITEM_YN,
1531               x_cimv_rec.CREATED_BY,
1532               x_cimv_rec.CREATION_DATE,
1533               x_cimv_rec.LAST_UPDATED_BY,
1534               x_cimv_rec.LAST_UPDATE_DATE,
1535               x_cimv_rec.LAST_UPDATE_LOGIN;
1536     IF okc_cimv_pk_csr%NOTFOUND THEN
1537        x_return_status := OKL_API.G_RET_STS_ERROR;
1538     END IF;
1539     IF (okc_cimv_pk_csr%ROWCOUNT > 1) THEN
1540        x_return_status := OKL_API.G_RET_STS_ERROR;
1541     END IF;
1542     CLOSE okc_cimv_pk_csr;
1543     RETURN(x_return_status);
1544   EXCEPTION
1545     WHEN OTHERS THEN
1546       -- store SQL error message on message stack for caller
1547       OKL_API.set_message(G_APP_NAME,
1548                           G_UNEXPECTED_ERROR,
1549                           G_SQLCODE_TOKEN,
1550                           SQLCODE,
1551                           G_SQLERRM_TOKEN,
1552                           SQLERRM);
1553      -- notify caller of an UNEXPECTED error
1554      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1555      -- if the cursor is open
1556      IF okc_cimv_pk_csr%ISOPEN THEN
1557         CLOSE okc_cimv_pk_csr;
1558      END IF;
1559      RETURN(x_return_status);
1560   END get_rec_ib_cimv;
1561 ----------------------------------------------------------------------------------------------------
1562   FUNCTION get_rec_cimv(p_cle_id      IN  OKC_K_ITEMS_V.CLE_ID%TYPE,
1563                         p_dnz_chr_id  IN  OKC_K_ITEMS_V.DNZ_CHR_ID%TYPE,
1564                         x_cimv_rec OUT NOCOPY cimv_rec_type)
1565   RETURN VARCHAR2 IS
1566     CURSOR okc_cimv_pk_csr(p_cle_id     OKC_K_ITEMS_V.CLE_ID%TYPE,
1567                            p_dnz_chr_id OKC_K_ITEMS_V.DNZ_CHR_ID%TYPE) IS
1568     SELECT CIM.ID,
1569            CIM.OBJECT_VERSION_NUMBER,
1570            CIM.CLE_ID,
1571            CIM.CHR_ID,
1572            CIM.CLE_ID_FOR,
1573            CIM.DNZ_CHR_ID,
1574            CIM.OBJECT1_ID1,
1575            CIM.OBJECT1_ID2,
1576            CIM.JTOT_OBJECT1_CODE,
1577            CIM.UOM_CODE,
1578            CIM.EXCEPTION_YN,
1579            CIM.NUMBER_OF_ITEMS,
1580            CIM.UPG_ORIG_SYSTEM_REF,
1581            CIM.UPG_ORIG_SYSTEM_REF_ID,
1582            CIM.PRICED_ITEM_YN,
1583            CIM.CREATED_BY,
1584            CIM.CREATION_DATE,
1585            CIM.LAST_UPDATED_BY,
1586            CIM.LAST_UPDATE_DATE,
1587            CIM.LAST_UPDATE_LOGIN
1588     FROM okc_k_items_v cim
1589     WHERE cim.dnz_chr_id = p_dnz_chr_id
1590     AND cim.cle_id = p_cle_id;
1591     l_okc_cimv_pk              okc_cimv_pk_csr%ROWTYPE;
1592     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1593   BEGIN
1594     OPEN okc_cimv_pk_csr(p_cle_id,
1595                          p_dnz_chr_id);
1596     FETCH okc_cimv_pk_csr INTO
1597               x_cimv_rec.ID,
1598               x_cimv_rec.OBJECT_VERSION_NUMBER,
1599               x_cimv_rec.CLE_ID,
1600               x_cimv_rec.CHR_ID,
1601               x_cimv_rec.CLE_ID_FOR,
1602               x_cimv_rec.DNZ_CHR_ID,
1603               x_cimv_rec.OBJECT1_ID1,
1604               x_cimv_rec.OBJECT1_ID2,
1605               x_cimv_rec.JTOT_OBJECT1_CODE,
1606               x_cimv_rec.UOM_CODE,
1607               x_cimv_rec.EXCEPTION_YN,
1608               x_cimv_rec.NUMBER_OF_ITEMS,
1609               x_cimv_rec.UPG_ORIG_SYSTEM_REF,
1610               x_cimv_rec.UPG_ORIG_SYSTEM_REF_ID,
1611               x_cimv_rec.PRICED_ITEM_YN,
1612               x_cimv_rec.CREATED_BY,
1613               x_cimv_rec.CREATION_DATE,
1614               x_cimv_rec.LAST_UPDATED_BY,
1615               x_cimv_rec.LAST_UPDATE_DATE,
1616               x_cimv_rec.LAST_UPDATE_LOGIN;
1617     IF okc_cimv_pk_csr%NOTFOUND THEN
1618        x_return_status := OKL_API.G_RET_STS_ERROR;
1619     END IF;
1620     IF (okc_cimv_pk_csr%ROWCOUNT > 1) THEN
1621        x_return_status := OKL_API.G_RET_STS_ERROR;
1622     END IF;
1623     CLOSE okc_cimv_pk_csr;
1624     RETURN(x_return_status);
1625   EXCEPTION
1626     WHEN OTHERS THEN
1627       -- store SQL error message on message stack for caller
1628       OKL_API.set_message(G_APP_NAME,
1629                           G_UNEXPECTED_ERROR,
1630                           G_SQLCODE_TOKEN,
1631                           SQLCODE,
1632                           G_SQLERRM_TOKEN,
1633                           SQLERRM);
1634      -- notify caller of an UNEXPECTED error
1635      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1636      -- if the cursor is open
1637      IF okc_cimv_pk_csr%ISOPEN THEN
1638         CLOSE okc_cimv_pk_csr;
1639      END IF;
1640      RETURN(x_return_status);
1641   END get_rec_cimv;
1642 -------------------------------------------------------------------------------------------------
1643   FUNCTION get_rec_update_cimv(p_cimv_id      IN  OKC_K_ITEMS_V.ID%TYPE,
1644                                x_cimv_rec OUT NOCOPY cimv_rec_type)
1645   RETURN VARCHAR2 IS
1646     CURSOR okc_cimv_pk_csr(p_cimv_id     OKC_K_ITEMS_V.ID%TYPE) IS
1647     SELECT  ID,
1648             OBJECT_VERSION_NUMBER,
1649             CLE_ID,
1650             CHR_ID,
1651             CLE_ID_FOR,
1652             DNZ_CHR_ID,
1653             OBJECT1_ID1,
1654             OBJECT1_ID2,
1655             JTOT_OBJECT1_CODE,
1656             UOM_CODE,
1657             EXCEPTION_YN,
1658             NUMBER_OF_ITEMS,
1659             UPG_ORIG_SYSTEM_REF,
1660             UPG_ORIG_SYSTEM_REF_ID,
1661             PRICED_ITEM_YN,
1662             CREATED_BY,
1663             CREATION_DATE,
1664             LAST_UPDATED_BY,
1665             LAST_UPDATE_DATE,
1666             LAST_UPDATE_LOGIN
1667       FROM okc_k_items_V cim
1668      WHERE cim.id = p_cimv_id;
1669     l_okc_cimv_pk              okc_cimv_pk_csr%ROWTYPE;
1670     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1671   BEGIN
1672     OPEN okc_cimv_pk_csr(p_cimv_id);
1673     FETCH okc_cimv_pk_csr INTO
1674               x_cimv_rec.ID,
1675               x_cimv_rec.OBJECT_VERSION_NUMBER,
1676               x_cimv_rec.CLE_ID,
1677               x_cimv_rec.CHR_ID,
1678               x_cimv_rec.CLE_ID_FOR,
1679               x_cimv_rec.DNZ_CHR_ID,
1680               x_cimv_rec.OBJECT1_ID1,
1681               x_cimv_rec.OBJECT1_ID2,
1682               x_cimv_rec.JTOT_OBJECT1_CODE,
1683               x_cimv_rec.UOM_CODE,
1684               x_cimv_rec.EXCEPTION_YN,
1685               x_cimv_rec.NUMBER_OF_ITEMS,
1686               x_cimv_rec.UPG_ORIG_SYSTEM_REF,
1687               x_cimv_rec.UPG_ORIG_SYSTEM_REF_ID,
1688               x_cimv_rec.PRICED_ITEM_YN,
1689               x_cimv_rec.CREATED_BY,
1690               x_cimv_rec.CREATION_DATE,
1691               x_cimv_rec.LAST_UPDATED_BY,
1692               x_cimv_rec.LAST_UPDATE_DATE,
1693               x_cimv_rec.LAST_UPDATE_LOGIN;
1694     IF okc_cimv_pk_csr%NOTFOUND THEN
1695        x_return_status := OKL_API.G_RET_STS_ERROR;
1696     END IF;
1697     CLOSE okc_cimv_pk_csr;
1698     RETURN(x_return_status);
1699   EXCEPTION
1700     WHEN OTHERS THEN
1701       -- store SQL error message on message stack for caller
1702       OKL_API.set_message(G_APP_NAME,
1703                           G_UNEXPECTED_ERROR,
1704                           G_SQLCODE_TOKEN,
1705                           SQLCODE,
1706                           G_SQLERRM_TOKEN,
1707                           SQLERRM);
1708      -- notify caller of an UNEXPECTED error
1709      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1710      -- if the cursor is open
1711      IF okc_cimv_pk_csr%ISOPEN THEN
1712         CLOSE okc_cimv_pk_csr;
1713      END IF;
1714      RETURN(x_return_status);
1715   END get_rec_update_cimv;
1716 ---------------------------------------------------------------------------------------------------------
1717   FUNCTION get_party_site_id(p_object_id1_new IN  OKL_TXL_ITM_INSTS_V.OBJECT_ID1_NEW%TYPE,
1718                              x_object_id1_new OUT NOCOPY OKL_TXL_ITM_INSTS_V.OBJECT_ID1_NEW%TYPE,
1719                              x_object_id2_new OUT NOCOPY OKL_TXL_ITM_INSTS_V.OBJECT_ID2_NEW%TYPE)
1720   RETURN VARCHAR2 IS
1721     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1722 
1723     CURSOR c_get_id1_id2(p_id1 OKL_TXL_ITM_INSTS_V.OBJECT_ID1_NEW%TYPE) IS
1724     SELECT id1
1725            ,id2
1726     FROM OKX_PARTY_SITE_USES_V
1727     WHERE id1 = p_id1
1728     AND id2 = G_ID2
1729     AND site_use_type = 'INSTALL_AT';
1730 
1731   BEGIN
1732     IF (p_object_id1_new IS NULL OR
1733        p_object_id1_new = OKL_API.G_MISS_NUM) THEN
1734       OKL_API.set_message(p_app_name     => G_APP_NAME,
1735                           p_msg_name     => G_REQUIRED_VALUE,
1736                           p_token1       => G_COL_NAME_TOKEN,
1737                           p_token1_value => 'OKX_PARTY_SITE_USES_V.ID1');
1738       RAISE G_EXCEPTION_HALT_VALIDATION;
1739     END IF;
1740     OPEN c_get_id1_id2(p_object_id1_new);
1741     FETCH c_get_id1_id2 INTO x_object_id1_new,
1742                              x_object_id2_new;
1743     IF c_get_id1_id2%NOTFOUND THEN
1744       OKL_API.set_message(p_app_name     => G_APP_NAME,
1745                           p_msg_name     => G_NO_MATCHING_RECORD,
1746                           p_token1       => G_COL_NAME_TOKEN,
1747                           p_token1_value => 'OKX_PARTY_SITE_USES_V.ID1 and ID2');
1748       RAISE G_EXCEPTION_HALT_VALIDATION;
1749     END IF;
1750     CLOSE c_get_id1_id2;
1751     IF (x_object_id1_new IS NULL OR
1752        x_object_id1_new = OKL_API.G_MISS_CHAR) AND
1753        (x_object_id2_new IS NULL OR
1754        x_object_id2_new = OKL_API.G_MISS_CHAR) THEN
1755       OKL_API.set_message(p_app_name     => G_APP_NAME,
1756                           p_msg_name     => G_NO_MATCHING_RECORD,
1757                           p_token1       => G_COL_NAME_TOKEN,
1758                           p_token1_value => 'OKX_PARTY_SITE_USES_V.ID1 and ID2');
1759       RAISE G_EXCEPTION_HALT_VALIDATION;
1760     ELSIF (x_object_id1_new IS NULL OR
1761        x_object_id1_new = OKL_API.G_MISS_CHAR) OR
1762        (x_object_id2_new IS NULL OR
1763        x_object_id2_new = OKL_API.G_MISS_CHAR) THEN
1764       OKL_API.set_message(p_app_name     => G_APP_NAME,
1765                           p_msg_name     => G_NO_MATCHING_RECORD,
1766                           p_token1       => G_COL_NAME_TOKEN,
1767                           p_token1_value => 'OKX_PARTY_SITE_USES_V.ID1 and ID2');
1768       RAISE G_EXCEPTION_HALT_VALIDATION;
1769     END IF;
1770     RETURN x_return_status;
1771   EXCEPTION
1772     WHEN G_EXCEPTION_HALT_VALIDATION then
1773     -- If the cursor is open then it has to be closed
1774     x_return_status := OKL_API.G_RET_STS_ERROR;
1775     IF c_get_id1_id2%ISOPEN THEN
1776        CLOSE c_get_id1_id2;
1777     END IF;
1778     RETURN(x_return_status);
1779     WHEN OTHERS THEN
1780       -- store SQL error message on message stack for caller
1781       OKL_API.set_message(G_APP_NAME,
1782                           G_UNEXPECTED_ERROR,
1783                           G_SQLCODE_TOKEN,
1784                           SQLCODE,
1785                           G_SQLERRM_TOKEN,
1786                           SQLERRM);
1787      -- notify caller of an UNEXPECTED error
1788      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1789      -- if the cursor is open
1790      IF c_get_id1_id2%ISOPEN THEN
1791         CLOSE c_get_id1_id2;
1792      END IF;
1793      RETURN(x_return_status);
1794   END get_party_site_id;
1795 ---------------------------------------------------------------------------------------------
1796   FUNCTION get_lse_id(p_lty_code  IN  OKC_LINE_STYLES_V.LTY_CODE%TYPE,
1797                       x_lse_id    OUT NOCOPY OKC_LINE_STYLES_V.ID%TYPE)
1798   RETURN VARCHAR2 IS
1799     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1800 
1801     CURSOR c_get_lse_id1(p_code OKC_LINE_STYLES_V.LTY_CODE%TYPE) IS
1802     SELECT lse.id
1803     FROM okc_subclass_top_line stl,
1804          okc_line_styles_b lse
1805     WHERE lse.lty_code = G_FIN_LINE_LTY_CODE
1806     AND lse.lse_parent_id is null
1807     AND lse.lse_type = G_TLS_TYPE
1808     AND lse.id = stl.lse_id
1809     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
1810 
1811     CURSOR c_get_lse_id2(p_code OKC_LINE_STYLES_V.LTY_CODE%TYPE) IS
1812     SELECT lse1.id
1813     FROM okc_subclass_top_line stl,
1814          okc_line_styles_b lse2,
1815          okc_line_styles_b lse1
1816     WHERE lse1.lty_code = p_code
1817     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
1818     AND lse1.lse_parent_id = lse2.id
1819     AND lse2.id = stl.lse_id
1820     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
1821 
1822     CURSOR c_get_lse_id3(p_code  OKC_LINE_STYLES_V.LTY_CODE%TYPE,
1823                          p_code2 OKC_LINE_STYLES_V.LTY_CODE%TYPE) IS
1824     SELECT lse1.id
1825     FROM okc_subclass_top_line stl,
1826          okc_line_styles_b lse3,
1827          okc_line_styles_b lse2,
1828          okc_line_styles_b lse1
1829     WHERE lse1.lty_code = p_code
1830     AND lse1.lse_parent_id = lse2.id
1831     AND lse2.lty_code = p_code2
1832     AND lse2.lse_parent_id = lse3.id
1833     AND lse3.lty_code = G_FIN_LINE_LTY_CODE
1834     AND lse3.id = stl.lse_id
1835     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
1836   BEGIN
1837     IF (p_lty_code IS NULL OR
1838        p_lty_code = OKL_API.G_MISS_CHAR) THEN
1839        OKL_API.set_message(p_app_name     => G_APP_NAME,
1840                            p_msg_name     => G_REQUIRED_VALUE,
1841                            p_token1       => G_COL_NAME_TOKEN,
1842                            p_token1_value => 'OKC_LINE_STYLES_V.LSE_TYPE');
1843        x_return_status := OKL_API.G_RET_STS_ERROR;
1844     END IF;
1845     -- Top Line Line Style
1846     IF p_lty_code = G_FIN_LINE_LTY_CODE THEN
1847       OPEN  c_get_lse_id1(p_lty_code);
1848       FETCH c_get_lse_id1 INTO x_lse_id;
1849       IF c_get_lse_id1%NOTFOUND THEN
1850         OKL_API.set_message(p_app_name     => G_APP_NAME,
1851                             p_msg_name     => G_NO_MATCHING_RECORD,
1852                             p_token1       => G_COL_NAME_TOKEN,
1853                             p_token1_value => 'OKC_LINE_STYLES_V.ID');
1854         x_return_status := OKL_API.G_RET_STS_ERROR;
1855       END IF;
1856       CLOSE c_get_lse_id1;
1857     -- Model Line, Fixed Asset line and Instance line
1858     ELSIF p_lty_code IN (G_MODEL_LINE_LTY_CODE,G_FA_LINE_LTY_CODE,G_INST_LINE_LTY_CODE) THEN
1859       OPEN c_get_lse_id2(p_lty_code);
1860       FETCH c_get_lse_id2 INTO x_lse_id;
1861       IF c_get_lse_id2%NOTFOUND THEN
1862         OKL_API.set_message(p_app_name     => G_APP_NAME,
1863                             p_msg_name     => G_NO_MATCHING_RECORD,
1864                             p_token1       => G_COL_NAME_TOKEN,
1865                             p_token1_value => 'OKC_LINE_STYLES_V.ID');
1866         x_return_status := OKL_API.G_RET_STS_ERROR;
1867       END IF;
1868       CLOSE c_get_lse_id2;
1869     -- Addon line and Install Base line
1870     ELSIF p_lty_code IN (G_IB_LINE_LTY_CODE,G_ADDON_LINE_LTY_CODE) THEN
1871       IF p_lty_code = G_IB_LINE_LTY_CODE THEN
1872         OPEN c_get_lse_id3(p_lty_code,
1873                            G_INST_LINE_LTY_CODE);
1874         FETCH c_get_lse_id3 INTO x_lse_id;
1875         IF c_get_lse_id3%NOTFOUND THEN
1876           OKL_API.set_message(p_app_name     => G_APP_NAME,
1877                               p_msg_name     => G_NO_MATCHING_RECORD,
1878                               p_token1       => G_COL_NAME_TOKEN,
1879                               p_token1_value => 'OKC_LINE_STYLES_V.ID');
1880           x_return_status := OKL_API.G_RET_STS_ERROR;
1881         END IF;
1882         CLOSE c_get_lse_id3;
1883       ELSIF p_lty_code = G_ADDON_LINE_LTY_CODE THEN
1884         OPEN c_get_lse_id3(p_lty_code,
1885                            G_MODEL_LINE_LTY_CODE);
1886         FETCH c_get_lse_id3 INTO x_lse_id;
1887         IF c_get_lse_id3%NOTFOUND THEN
1888           OKL_API.set_message(p_app_name     => G_APP_NAME,
1889                               p_msg_name     => G_NO_MATCHING_RECORD,
1890                               p_token1       => G_COL_NAME_TOKEN,
1891                               p_token1_value => 'OKC_LINE_STYLES_V.ID');
1892            x_return_status := OKL_API.G_RET_STS_ERROR;
1893         END IF;
1894         CLOSE c_get_lse_id3;
1895       END IF;
1896     ELSE
1897       x_return_status := OKL_API.G_RET_STS_ERROR;
1898     END IF;
1899     RETURN x_return_status;
1900   EXCEPTION
1901     WHEN OTHERS THEN
1902       -- store SQL error message on message stack for caller
1903       OKL_API.set_message(G_APP_NAME,
1904                           G_UNEXPECTED_ERROR,
1905                           G_SQLCODE_TOKEN,
1906                           SQLCODE,
1907                           G_SQLERRM_TOKEN,
1908                           SQLERRM);
1909      -- notify caller of an UNEXPECTED error
1910      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1911      -- if the cursor is open
1912      IF c_get_lse_id1%ISOPEN THEN
1913         CLOSE c_get_lse_id1;
1914      END IF;
1915      IF c_get_lse_id2%ISOPEN THEN
1916         CLOSE c_get_lse_id2;
1917      END IF;
1918      IF c_get_lse_id3%ISOPEN THEN
1919         CLOSE c_get_lse_id3;
1920      END IF;
1921      RETURN(x_return_status);
1922   END get_lse_id;
1923 --------------------------------------------------------------------------------------------------
1924   FUNCTION get_try_id(p_try_name  IN  OKL_TRX_TYPES_V.NAME%TYPE,
1925                       x_try_id    OUT NOCOPY OKC_LINE_STYLES_V.ID%TYPE)
1926   RETURN VARCHAR2 IS
1927     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1928     CURSOR c_get_try_id(p_try_name  OKL_TRX_TYPES_V.NAME%TYPE) IS
1929     SELECT id
1930     FROM OKL_TRX_TYPES_tl
1931     WHERE upper(name) = upper(p_try_name)
1932     AND language = G_LANGUAGE;
1933   BEGIN
1934     IF (p_try_name = OKL_API.G_MISS_CHAR) OR
1935        (p_try_name IS NULL) THEN
1936        -- store SQL error message on message stack
1937        OKL_API.set_message(p_app_name     => G_APP_NAME,
1938                            p_msg_name     => G_REQUIRED_VALUE,
1939                            p_token1       => G_COL_NAME_TOKEN,
1940                            p_token1_value => 'OKL_TRX_TYPES_V.NAME');
1941        -- halt validation as it is a required field
1942        RAISE G_EXCEPTION_STOP_VALIDATION;
1943      END IF;
1944      OPEN c_get_try_id(p_try_name);
1945      FETCH c_get_try_id INTO x_try_id;
1946      IF c_get_try_id%NOTFOUND THEN
1947        OKL_API.set_message(p_app_name     => G_APP_NAME,
1948                            p_msg_name     => G_NO_MATCHING_RECORD,
1949                            p_token1       => G_COL_NAME_TOKEN,
1950                            p_token1_value => 'OKL_TRX_TYPES_V.ID');
1951        RAISE G_EXCEPTION_HALT_VALIDATION;
1952      END IF;
1953      CLOSE c_get_try_id;
1954      RETURN x_return_status;
1955   EXCEPTION
1956     WHEN G_EXCEPTION_STOP_VALIDATION then
1957     -- We are here since the field is required
1958     -- Notify Error
1959     x_return_status := OKL_API.G_RET_STS_ERROR;
1960     WHEN G_EXCEPTION_HALT_VALIDATION then
1961     -- We are here b'cause we have no parent record
1962     -- If the cursor is open then it has to be closed
1963      IF c_get_try_id%ISOPEN THEN
1964         CLOSE c_get_try_id;
1965      END IF;
1966     -- notify caller of an error
1967     x_return_status := OKL_API.G_RET_STS_ERROR;
1968     WHEN OTHERS THEN
1969       -- store SQL error message on message stack for caller
1970       OKL_API.set_message(G_APP_NAME,
1971                           G_UNEXPECTED_ERROR,
1972                           G_SQLCODE_TOKEN,
1973                           SQLCODE,
1974                           G_SQLERRM_TOKEN,
1975                           SQLERRM);
1976      -- notify caller of an UNEXPECTED error
1977      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1978      -- if the cursor is open
1979      IF c_get_try_id%ISOPEN THEN
1980         CLOSE c_get_try_id;
1981      END IF;
1982      RETURN(x_return_status);
1983   END get_try_id;
1984 ------------------------------------------------------------------------------------------------------
1985   FUNCTION get_rec_clev(p_id       IN OKC_K_LINES_V.ID%TYPE,
1986                         x_clev_rec OUT NOCOPY clev_rec_type)
1987   RETURN VARCHAR2 IS
1988     CURSOR okc_clev_pk_csr (p_cle_id NUMBER) IS
1989     SELECT ID,
1990            OBJECT_VERSION_NUMBER,
1991            SFWT_FLAG,
1992            CHR_ID,
1993            CLE_ID,
1994            LSE_ID,
1995            LINE_NUMBER,
1996            STS_CODE,
1997            DISPLAY_SEQUENCE,
1998            TRN_CODE,
1999            DNZ_CHR_ID,
2000            COMMENTS,
2001            ITEM_DESCRIPTION,
2002            OKE_BOE_DESCRIPTION,
2003            COGNOMEN,
2004            HIDDEN_IND,
2005            PRICE_UNIT,
2006            PRICE_UNIT_PERCENT,
2007            PRICE_NEGOTIATED,
2008            PRICE_NEGOTIATED_RENEWED,
2009            PRICE_LEVEL_IND,
2010            INVOICE_LINE_LEVEL_IND,
2011            DPAS_RATING,
2012            BLOCK23TEXT,
2013            EXCEPTION_YN,
2014            TEMPLATE_USED,
2015            DATE_TERMINATED,
2016            NAME,
2017            START_DATE,
2018            END_DATE,
2019            DATE_RENEWED,
2020            UPG_ORIG_SYSTEM_REF,
2021            UPG_ORIG_SYSTEM_REF_ID,
2022            ORIG_SYSTEM_SOURCE_CODE,
2023            ORIG_SYSTEM_ID1,
2024            ORIG_SYSTEM_REFERENCE1,
2025            REQUEST_ID,
2026            PROGRAM_APPLICATION_ID,
2027            PROGRAM_ID,
2028            PROGRAM_UPDATE_DATE,
2029            PRICE_LIST_ID,
2030            PRICING_DATE,
2031            PRICE_LIST_LINE_ID,
2032            LINE_LIST_PRICE,
2033            ITEM_TO_PRICE_YN,
2034            PRICE_BASIS_YN,
2035            CONFIG_HEADER_ID,
2036            CONFIG_REVISION_NUMBER,
2037            CONFIG_COMPLETE_YN,
2038            CONFIG_VALID_YN,
2039            CONFIG_TOP_MODEL_LINE_ID,
2040            CONFIG_ITEM_TYPE,
2041            CONFIG_ITEM_ID ,
2042            ATTRIBUTE_CATEGORY,
2043            ATTRIBUTE1,
2044            ATTRIBUTE2,
2045            ATTRIBUTE3,
2046            ATTRIBUTE4,
2047            ATTRIBUTE5,
2048            ATTRIBUTE6,
2049            ATTRIBUTE7,
2050            ATTRIBUTE8,
2051            ATTRIBUTE9,
2052            ATTRIBUTE10,
2053            ATTRIBUTE11,
2054            ATTRIBUTE12,
2055            ATTRIBUTE13,
2056            ATTRIBUTE14,
2057            ATTRIBUTE15,
2058            CREATED_BY,
2059            CREATION_DATE,
2060            LAST_UPDATED_BY,
2061            LAST_UPDATE_DATE,
2062            PRICE_TYPE,
2063            CURRENCY_CODE,
2064 	   CURRENCY_CODE_RENEWED,
2065            LAST_UPDATE_LOGIN
2066     FROM Okc_K_Lines_V
2067     WHERE okc_k_lines_v.id  = p_cle_id;
2068     l_okc_clev_pk              okc_clev_pk_csr%ROWTYPE;
2069     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
2070   BEGIN
2071     -- Get current database values
2072     OPEN okc_clev_pk_csr (p_id);
2073     FETCH okc_clev_pk_csr INTO
2074               x_clev_rec.ID,
2075               x_clev_rec.OBJECT_VERSION_NUMBER,
2076               x_clev_rec.SFWT_FLAG,
2077               x_clev_rec.CHR_ID,
2078               x_clev_rec.CLE_ID,
2079               x_clev_rec.LSE_ID,
2080               x_clev_rec.LINE_NUMBER,
2081               x_clev_rec.STS_CODE,
2082               x_clev_rec.DISPLAY_SEQUENCE,
2083               x_clev_rec.TRN_CODE,
2084               x_clev_rec.DNZ_CHR_ID,
2085               x_clev_rec.COMMENTS,
2086               x_clev_rec.ITEM_DESCRIPTION,
2087               x_clev_rec.OKE_BOE_DESCRIPTION,
2088 	      x_clev_rec.COGNOMEN,
2089               x_clev_rec.HIDDEN_IND,
2090 	      x_clev_rec.PRICE_UNIT,
2091 	      x_clev_rec.PRICE_UNIT_PERCENT,
2092               x_clev_rec.PRICE_NEGOTIATED,
2093 	      x_clev_rec.PRICE_NEGOTIATED_RENEWED,
2094               x_clev_rec.PRICE_LEVEL_IND,
2095               x_clev_rec.INVOICE_LINE_LEVEL_IND,
2096               x_clev_rec.DPAS_RATING,
2097               x_clev_rec.BLOCK23TEXT,
2098               x_clev_rec.EXCEPTION_YN,
2099               x_clev_rec.TEMPLATE_USED,
2100               x_clev_rec.DATE_TERMINATED,
2101               x_clev_rec.NAME,
2102               x_clev_rec.START_DATE,
2103               x_clev_rec.END_DATE,
2104 	      x_clev_rec.DATE_RENEWED,
2105               x_clev_rec.UPG_ORIG_SYSTEM_REF,
2106               x_clev_rec.UPG_ORIG_SYSTEM_REF_ID,
2107               x_clev_rec.ORIG_SYSTEM_SOURCE_CODE,
2108               x_clev_rec.ORIG_SYSTEM_ID1,
2109               x_clev_rec.ORIG_SYSTEM_REFERENCE1,
2110               x_clev_rec.request_id,
2111               x_clev_rec.program_application_id,
2112               x_clev_rec.program_id,
2113               x_clev_rec.program_update_date,
2114               x_clev_rec.price_list_id,
2115               x_clev_rec.pricing_date,
2116               x_clev_rec.price_list_line_id,
2117               x_clev_rec.line_list_price,
2118               x_clev_rec.item_to_price_yn,
2119               x_clev_rec.price_basis_yn,
2120               x_clev_rec.config_header_id,
2121               x_clev_rec.config_revision_number,
2122               x_clev_rec.config_complete_yn,
2123               x_clev_rec.config_valid_yn,
2124               x_clev_rec.config_top_model_line_id,
2125               x_clev_rec.config_item_type,
2126               x_clev_rec.CONFIG_ITEM_ID ,
2127               x_clev_rec.ATTRIBUTE_CATEGORY,
2128               x_clev_rec.ATTRIBUTE1,
2129               x_clev_rec.ATTRIBUTE2,
2130               x_clev_rec.ATTRIBUTE3,
2131               x_clev_rec.ATTRIBUTE4,
2132               x_clev_rec.ATTRIBUTE5,
2133               x_clev_rec.ATTRIBUTE6,
2134               x_clev_rec.ATTRIBUTE7,
2135               x_clev_rec.ATTRIBUTE8,
2136               x_clev_rec.ATTRIBUTE9,
2137               x_clev_rec.ATTRIBUTE10,
2138               x_clev_rec.ATTRIBUTE11,
2139               x_clev_rec.ATTRIBUTE12,
2140               x_clev_rec.ATTRIBUTE13,
2141               x_clev_rec.ATTRIBUTE14,
2142               x_clev_rec.ATTRIBUTE15,
2143               x_clev_rec.CREATED_BY,
2144               x_clev_rec.CREATION_DATE,
2145               x_clev_rec.LAST_UPDATED_BY,
2146               x_clev_rec.LAST_UPDATE_DATE,
2147               x_clev_rec.PRICE_TYPE,
2148               x_clev_rec.CURRENCY_CODE,
2149 	      x_clev_rec.CURRENCY_CODE_RENEWED,
2150               x_clev_rec.LAST_UPDATE_LOGIN;
2151     IF  okc_clev_pk_csr%NOTFOUND THEN
2152         x_return_status := OKL_API.G_RET_STS_ERROR;
2153     END IF;
2154     CLOSE okc_clev_pk_csr;
2155     RETURN(x_return_status);
2156   EXCEPTION
2157     WHEN OTHERS THEN
2158       -- store SQL error message on message stack for caller
2159       OKL_API.set_message(G_APP_NAME,
2160                           G_UNEXPECTED_ERROR,
2161                           G_SQLCODE_TOKEN,
2162                           SQLCODE,
2163                           G_SQLERRM_TOKEN,
2164                           SQLERRM);
2165      -- notify caller of an UNEXPECTED error
2166      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2167      -- if the cursor is open
2168      IF okc_clev_pk_csr%ISOPEN THEN
2169         CLOSE okc_clev_pk_csr;
2170      END IF;
2171      RETURN(x_return_status);
2172   END get_rec_clev;
2173 -----------------------------------------------------------------------------------------------
2174   FUNCTION get_rec_klev(p_id       IN  OKL_K_LINES_V.ID%TYPE,
2175                         x_klev_rec OUT NOCOPY klev_rec_type)
2176   RETURN VARCHAR2 IS
2177     CURSOR okl_k_lines_v_pk_csr (p_kle_id  OKL_K_LINES_V.ID%TYPE) IS
2178       SELECT ID,
2179              OBJECT_VERSION_NUMBER,
2180              KLE_ID,
2181              STY_ID,
2182              PRC_CODE,
2183              FCG_CODE,
2184              NTY_CODE,
2185              ESTIMATED_OEC,
2186              LAO_AMOUNT,
2187              TITLE_DATE,
2188              FEE_CHARGE,
2189              LRS_PERCENT,
2190              INITIAL_DIRECT_COST,
2191              PERCENT_STAKE,
2192              PERCENT,
2193              EVERGREEN_PERCENT,
2194              AMOUNT_STAKE,
2195              OCCUPANCY,
2196              COVERAGE,
2197              RESIDUAL_PERCENTAGE,
2198              DATE_LAST_INSPECTION,
2199              DATE_SOLD,
2200              LRV_AMOUNT,
2201              CAPITAL_REDUCTION,
2202              DATE_NEXT_INSPECTION_DUE,
2203              DATE_RESIDUAL_LAST_REVIEW,
2204              DATE_LAST_REAMORTISATION,
2205              VENDOR_ADVANCE_PAID,
2206              WEIGHTED_AVERAGE_LIFE,
2207              TRADEIN_AMOUNT,
2208              BOND_EQUIVALENT_YIELD,
2209              TERMINATION_PURCHASE_AMOUNT,
2210              REFINANCE_AMOUNT,
2211              YEAR_BUILT,
2212              DELIVERED_DATE,
2213              CREDIT_TENANT_YN,
2214              DATE_LAST_CLEANUP,
2215              YEAR_OF_MANUFACTURE,
2216              COVERAGE_RATIO,
2217              REMARKETED_AMOUNT,
2218              GROSS_SQUARE_FOOTAGE,
2219              PRESCRIBED_ASSET_YN,
2220              DATE_REMARKETED,
2221              NET_RENTABLE,
2222              REMARKET_MARGIN,
2223              DATE_LETTER_ACCEPTANCE,
2224              REPURCHASED_AMOUNT,
2225              DATE_COMMITMENT_EXPIRATION,
2226              DATE_REPURCHASED,
2227              DATE_APPRAISAL,
2228              RESIDUAL_VALUE,
2229              APPRAISAL_VALUE,
2230              SECURED_DEAL_YN,
2231              GAIN_LOSS,
2232              FLOOR_AMOUNT,
2233              RE_LEASE_YN,
2234              PREVIOUS_CONTRACT,
2235              TRACKED_RESIDUAL,
2236              DATE_TITLE_RECEIVED,
2237              AMOUNT,
2238              ATTRIBUTE_CATEGORY,
2239              ATTRIBUTE1,
2240              ATTRIBUTE2,
2241              ATTRIBUTE3,
2242              ATTRIBUTE4,
2243              ATTRIBUTE5,
2244              ATTRIBUTE6,
2245              ATTRIBUTE7,
2246              ATTRIBUTE8,
2247              ATTRIBUTE9,
2248              ATTRIBUTE10,
2249              ATTRIBUTE11,
2250              ATTRIBUTE12,
2251              ATTRIBUTE13,
2252              ATTRIBUTE14,
2253              ATTRIBUTE15,
2254              STY_ID_FOR,
2255              CLG_ID,
2256              CREATED_BY,
2257              CREATION_DATE,
2258              LAST_UPDATED_BY,
2259              LAST_UPDATE_DATE,
2260              LAST_UPDATE_LOGIN,
2261              DATE_FUNDING,
2262              DATE_FUNDING_REQUIRED,
2263              DATE_ACCEPTED,
2264              DATE_DELIVERY_EXPECTED,
2265              OEC,
2266              CAPITAL_AMOUNT,
2267              RESIDUAL_GRNTY_AMOUNT,
2268              RESIDUAL_CODE,
2269              RVI_PREMIUM,
2270              CREDIT_NATURE,
2271              CAPITALIZED_INTEREST,
2272              CAPITAL_REDUCTION_PERCENT,
2273              DATE_PAY_INVESTOR_START,
2274              PAY_INVESTOR_FREQUENCY,
2275              PAY_INVESTOR_EVENT,
2276              PAY_INVESTOR_REMITTANCE_DAYS,
2277              FEE_TYPE,
2278              SUBSIDY_ID,
2279 /* subsidy columns removed later, 09/26/2003
2280              SUBSIDIZED_OEC,
2281              SUBSIDIZED_CAP_AMOUNT,
2282 */
2283              PRE_TAX_YIELD,
2284              AFTER_TAX_YIELD,
2285              IMPLICIT_INTEREST_RATE,
2286              IMPLICIT_NON_IDC_INTEREST_RATE,
2287              PRE_TAX_IRR,
2288              AFTER_TAX_IRR,
2289              SUBSIDY_OVERRIDE_AMOUNT,
2290              SUB_PRE_TAX_YIELD,
2291              SUB_AFTER_TAX_YIELD,
2292              SUB_IMPL_INTEREST_RATE,
2293              SUB_IMPL_NON_IDC_INT_RATE,
2294              SUB_PRE_TAX_IRR,
2295              SUB_AFTER_TAX_IRR,
2296 --Bug# 2994971 :
2297              ITEM_INSURANCE_CATEGORY,
2298              --Bug# 3973640: 11.5.10 Schema changes
2299              QTE_ID,
2300              FUNDING_DATE,
2301              STREAM_TYPE_SUBCLASS
2302 -- ramurt Bug#4552772
2303              ,FEE_PURPOSE_CODE
2304 --Bug# 4631549
2305    ,EXPECTED_ASSET_COST
2306 --Bug# 5192636
2307    ,DOWN_PAYMENT_RECEIVER_CODE
2308    ,CAPITALIZE_DOWN_PAYMENT_YN
2309    --start NISINHA bug # 6490572
2310    ,MODEL_NUMBER
2311    ,MANUFACTURER_NAME
2312    --end NISINHA bug # 6490572
2313    FROM OKL_K_LINES_V
2314     WHERE OKL_K_LINES_V.id     = p_kle_id;
2315     l_okl_k_lines_v_pk         okl_k_lines_v_pk_csr%ROWTYPE;
2316     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
2317   BEGIN
2318     -- Get current database values
2319     OPEN okl_k_lines_v_pk_csr (p_id);
2320     FETCH okl_k_lines_v_pk_csr INTO
2321         x_klev_rec.ID,
2322         x_klev_rec.OBJECT_VERSION_NUMBER,
2323         x_klev_rec.KLE_ID,
2324         x_klev_rec.STY_ID,
2325         x_klev_rec.PRC_CODE,
2326         x_klev_rec.FCG_CODE,
2327         x_klev_rec.NTY_CODE,
2328         x_klev_rec.ESTIMATED_OEC,
2329         x_klev_rec.LAO_AMOUNT,
2330         x_klev_rec.TITLE_DATE,
2331         x_klev_rec.FEE_CHARGE,
2332         x_klev_rec.LRS_PERCENT,
2333         x_klev_rec.INITIAL_DIRECT_COST,
2334         x_klev_rec.PERCENT_STAKE,
2335         x_klev_rec.PERCENT,
2336         x_klev_rec.EVERGREEN_PERCENT,
2337         x_klev_rec.AMOUNT_STAKE,
2338         x_klev_rec.OCCUPANCY,
2339         x_klev_rec.COVERAGE,
2340         x_klev_rec.RESIDUAL_PERCENTAGE,
2341         x_klev_rec.DATE_LAST_INSPECTION,
2342         x_klev_rec.DATE_SOLD,
2343         x_klev_rec.LRV_AMOUNT,
2344         x_klev_rec.CAPITAL_REDUCTION,
2345         x_klev_rec.DATE_NEXT_INSPECTION_DUE,
2346         x_klev_rec.DATE_RESIDUAL_LAST_REVIEW,
2347         x_klev_rec.DATE_LAST_REAMORTISATION,
2348         x_klev_rec.VENDOR_ADVANCE_PAID,
2349         x_klev_rec.WEIGHTED_AVERAGE_LIFE,
2350         x_klev_rec.TRADEIN_AMOUNT,
2351         x_klev_rec.BOND_EQUIVALENT_YIELD,
2352         x_klev_rec.TERMINATION_PURCHASE_AMOUNT,
2353         x_klev_rec.REFINANCE_AMOUNT,
2354         x_klev_rec.YEAR_BUILT,
2355         x_klev_rec.DELIVERED_DATE,
2356         x_klev_rec.CREDIT_TENANT_YN,
2357         x_klev_rec.DATE_LAST_CLEANUP,
2358         x_klev_rec.YEAR_OF_MANUFACTURE,
2359         x_klev_rec.COVERAGE_RATIO,
2360         x_klev_rec.REMARKETED_AMOUNT,
2361         x_klev_rec.GROSS_SQUARE_FOOTAGE,
2362         x_klev_rec.PRESCRIBED_ASSET_YN,
2363         x_klev_rec.DATE_REMARKETED,
2364         x_klev_rec.NET_RENTABLE,
2365         x_klev_rec.REMARKET_MARGIN,
2366         x_klev_rec.DATE_LETTER_ACCEPTANCE,
2367         x_klev_rec.REPURCHASED_AMOUNT,
2368         x_klev_rec.DATE_COMMITMENT_EXPIRATION,
2369         x_klev_rec.DATE_REPURCHASED,
2370         x_klev_rec.DATE_APPRAISAL,
2371         x_klev_rec.RESIDUAL_VALUE,
2372         x_klev_rec.APPRAISAL_VALUE,
2373         x_klev_rec.SECURED_DEAL_YN,
2374         x_klev_rec.GAIN_LOSS,
2375         x_klev_rec.FLOOR_AMOUNT,
2376         x_klev_rec.RE_LEASE_YN,
2377         x_klev_rec.PREVIOUS_CONTRACT,
2378         x_klev_rec.TRACKED_RESIDUAL,
2379         x_klev_rec.DATE_TITLE_RECEIVED,
2380         x_klev_rec.AMOUNT,
2381         x_klev_rec.ATTRIBUTE_CATEGORY,
2382         x_klev_rec.ATTRIBUTE1,
2383         x_klev_rec.ATTRIBUTE2,
2384         x_klev_rec.ATTRIBUTE3,
2385         x_klev_rec.ATTRIBUTE4,
2386         x_klev_rec.ATTRIBUTE5,
2387         x_klev_rec.ATTRIBUTE6,
2388         x_klev_rec.ATTRIBUTE7,
2389         x_klev_rec.ATTRIBUTE8,
2390         x_klev_rec.ATTRIBUTE9,
2391         x_klev_rec.ATTRIBUTE10,
2392         x_klev_rec.ATTRIBUTE11,
2393         x_klev_rec.ATTRIBUTE12,
2394         x_klev_rec.ATTRIBUTE13,
2395         x_klev_rec.ATTRIBUTE14,
2396         x_klev_rec.ATTRIBUTE15,
2397         x_klev_rec.STY_ID_FOR,
2398         x_klev_rec.CLG_ID,
2399         x_klev_rec.CREATED_BY,
2400         x_klev_rec.CREATION_DATE,
2401         x_klev_rec.LAST_UPDATED_BY,
2402         x_klev_rec.LAST_UPDATE_DATE,
2403         x_klev_rec.LAST_UPDATE_LOGIN,
2404         x_klev_rec.DATE_FUNDING,
2405         x_klev_rec.DATE_FUNDING_REQUIRED,
2406         x_klev_rec.DATE_ACCEPTED,
2407         x_klev_rec.DATE_DELIVERY_EXPECTED,
2408         x_klev_rec.OEC,
2409         x_klev_rec.CAPITAL_AMOUNT,
2410         x_klev_rec.RESIDUAL_GRNTY_AMOUNT,
2411         x_klev_rec.RESIDUAL_CODE,
2412         x_klev_rec.RVI_PREMIUM,
2413         x_klev_rec.CREDIT_NATURE,
2414         x_klev_rec.CAPITALIZED_INTEREST,
2415         x_klev_rec.CAPITAL_REDUCTION_PERCENT,
2416         x_klev_rec.DATE_PAY_INVESTOR_START,
2417         x_klev_rec.PAY_INVESTOR_FREQUENCY,
2418         x_klev_rec.PAY_INVESTOR_EVENT,
2419         x_klev_rec.PAY_INVESTOR_REMITTANCE_DAYS,
2420         x_klev_rec.FEE_TYPE,
2421         x_klev_rec.SUBSIDY_ID,
2422 /* subsidy colymns removed later, 09/26/2003
2423         x_klev_rec.SUBSIDIZED_OEC,
2424         x_klev_rec.SUBSIDIZED_CAP_AMOUNT,
2425 */
2426         x_klev_rec.PRE_TAX_YIELD,
2427         x_klev_rec.AFTER_TAX_YIELD,
2428         x_klev_rec.IMPLICIT_INTEREST_RATE,
2429         x_klev_rec.IMPLICIT_NON_IDC_INTEREST_RATE,
2430         x_klev_rec.PRE_TAX_IRR,
2431         x_klev_rec.AFTER_TAX_IRR,
2432         x_klev_rec.SUBSIDY_OVERRIDE_AMOUNT,
2433         x_klev_rec.SUB_PRE_TAX_YIELD,
2434         x_klev_rec.SUB_AFTER_TAX_YIELD,
2435         x_klev_rec.SUB_IMPL_INTEREST_RATE,
2436         x_klev_rec.SUB_IMPL_NON_IDC_INT_RATE,
2437         x_klev_rec.SUB_PRE_TAX_IRR,
2438         x_klev_rec.SUB_AFTER_TAX_IRR,
2439 --Bug# 2994971 :
2440         x_klev_rec.ITEM_INSURANCE_CATEGORY,
2441         --Bug# 3973640: 11.5.10 Schema changes
2442         x_klev_rec.QTE_ID,
2443         x_klev_rec.FUNDING_DATE,
2444         x_klev_rec.STREAM_TYPE_SUBCLASS
2445 --ramurt Bug#4552772
2446    ,x_klev_rec.FEE_PURPOSE_CODE
2447 --Bug# 4631549
2448    ,x_klev_rec.EXPECTED_ASSET_COST
2449 --Bug# 5192636
2450    ,x_klev_rec.DOWN_PAYMENT_RECEIVER_CODE
2451    ,x_klev_rec.CAPITALIZE_DOWN_PAYMENT_YN
2452 -- start NISINHA Bug# 6490572
2453    ,x_klev_rec.MODEL_NUMBER
2454    ,x_klev_rec.MANUFACTURER_NAME;
2455 --end NISINHA Bug # 6490572
2456 
2457     IF  okl_k_lines_v_pk_csr%NOTFOUND THEN
2458         x_return_status := OKL_API.G_RET_STS_ERROR;
2459     END IF;
2460     CLOSE okl_k_lines_v_pk_csr;
2461     RETURN(x_return_status);
2462   EXCEPTION
2463     WHEN OTHERS THEN
2464       -- store SQL error message on message stack for caller
2465       OKL_API.set_message(G_APP_NAME,
2466                           G_UNEXPECTED_ERROR,
2467                           G_SQLCODE_TOKEN,
2468                           SQLCODE,
2469                           G_SQLERRM_TOKEN,
2470                           SQLERRM);
2471      -- notify caller of an UNEXPECTED error
2472      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2473      -- if the cursor is open
2474      IF okl_k_lines_v_pk_csr%ISOPEN THEN
2475         CLOSE okl_k_lines_v_pk_csr;
2476      END IF;
2477      RETURN(x_return_status);
2478   END get_rec_klev;
2479 -------------------------------------------------------------------------------------------------
2480 -- Start of Commnets
2481 -- Badrinath Kuchibholta
2482 -- Procedure Name       : Validate_new_Ast_Num_update
2483 -- Description          : Validate_new_Ast_Num_update
2484 -- Business Rules       : Validate Asset_Number against OKL_TXL_ASSETS_B.ASSET_NUMBER
2485 --                        ,as same should not exists in table
2486 -- Parameters           : OUT Return Status, IN Rec Info
2487 -- Version              : 1.0
2488 -- End of Commnets
2489   PROCEDURE validate_new_ast_num_update(x_return_status OUT NOCOPY VARCHAR2,
2490                                         p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
2491                                         p_kle_Id       IN OKL_TXL_ASSETS_V.KLE_ID%TYPE,
2492                                         p_dnz_chr_id   IN OKC_K_HEADERS_B.ID%TYPE) IS
2493     ln_okl_txl_assets_v           NUMBER := 0;
2494     ln_okx_assets_v               NUMBER := 0;
2495     ln_okx_asset_lines_v          NUMBER := 0;
2496     ln_okl_txd_assets_v           NUMBER := 0;
2497     lv_source_code                OKC_K_HEADERS_B.ORIG_SYSTEM_SOURCE_CODE%TYPE;
2498     lv_asset_source_code          OKC_K_LINES_B.ORIG_SYSTEM_SOURCE_CODE%TYPE;
2499     lv_asset_number               OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE;
2500     lv_release_asset              OKC_RULES_V.RULE_INFORMATION1%TYPE := 'N';
2501     x_msg_count                   NUMBER;
2502     x_msg_data                    VARCHAR2(100);
2503 
2504     CURSOR c_get_asset_number(p_kle_Id       OKL_TXL_ASSETS_V.KLE_ID%TYPE)
2505     IS
2506     SELECT NAME
2507     FROM OKC_K_LINES_TL
2508     WHERE ID = (SELECT CLE_ID
2509                 FROM OKC_K_LINES_B
2510                 WHERE ID = p_kle_Id)
2511     AND language = USERENV('lang');
2512 
2513     CURSOR c_txl_asset_number(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE,
2514                               p_kle_Id       OKL_TXL_ASSETS_V.KLE_ID%TYPE)
2515     IS
2516     SELECT 1
2517     --FROM DUAL
2518     --WHERE EXISTS (SELECT '1'
2519                   FROM OKL_TXL_ASSETS_B
2520                   WHERE asset_number = p_asset_number
2521                   AND kle_id <> p_kle_id; --);
2522 
2523     CURSOR c_okx_asset_lines_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2524     SELECT 1
2525     --FROM DUAL
2526     --WHERE EXISTS (SELECT '1'
2527                   FROM OKX_ASSET_LINES_V
2528                   WHERE asset_number = p_asset_number; --);
2529 
2530     CURSOR c_okx_assets_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2531     SELECT 1
2532     --FROM DUAL
2533     --WHERE EXISTS (SELECT '1'
2534                   FROM OKX_ASSETS_V
2535                   WHERE asset_number = p_asset_number; --);
2536 
2537     CURSOR c_txd_assets_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2538     SELECT 1
2539     --FROM DUAL
2540     --WHERE EXISTS (SELECT '1'
2541                   FROM OKL_TRX_ASSETS TAS,
2542                        OKL_TXL_ASSETS_V TXL,
2543                        OKL_TXD_ASSETS_V TXD
2544                   WHERE TXD.asset_number = p_asset_number
2545                   AND   TXD.TAL_ID       = TXL.ID
2546                   AND   TXL.TAL_TYPE     = 'ALI'
2547                   AND   TXL.TAS_ID       =  TAS.ID
2548                   AND   TAS.TSU_CODE     = 'ENTERED'; --);
2549 
2550     CURSOR c_source_code(p_kle_Id OKL_TXL_ASSETS_V.KLE_ID%TYPE) is
2551     SELECT nvl(chr.orig_system_source_code,'x')
2552     FROM okc_k_headers_b chr,
2553          okc_k_lines_b cle
2554     WHERE cle.id = p_kle_Id
2555     AND cle.dnz_chr_id = chr.id;
2556 
2557     --Bug# 15992711 : The re-leased flag is no longer checked at contract header
2558     --                but needs to be validated at contract line
2559     --                Cursor modified to include validation at asset line level
2560     /*CURSOR c_check_release_asset(p_dnz_chr_id OKC_K_HEADERS_B.ID%TYPE) is
2561     SELECT RULE_INFORMATION1
2562     FROM   OKC_RULES_V
2563     WHERE  DNZ_CHR_ID = p_dnz_chr_id
2564     AND    RULE_INFORMATION_CATEGORY = 'LARLES';*/
2565 
2566     CURSOR c_check_release_asset(p_asset_number IN OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2567 	SELECT 'Y'
2568 	FROM okl_asset_returns_all_b KAR
2569 	WHERE KAR.kle_id IN (SELECT KLE.cle_id
2570 	                     FROM okl_txl_assets_b TXL
2571                            ,okl_txd_assets_b TXD
2572                            ,okc_k_lines_b    KLE
2573 	                     WHERE TXD.asset_number = p_asset_number
2574                        AND   KLE.id = TXL.kle_id
2575                        AND   TXL.id = TXD.tal_id )
2576         AND KAR.ars_code = 'RE_LEASE';
2577     -- Bug# 15992711 : End of Modifications
2578 
2579   BEGIN
2580     -- initialize return status
2581     x_return_status := OKL_API.G_RET_STS_SUCCESS;
2582     -- data is required
2583     IF (p_asset_number = OKL_API.G_MISS_CHAR) OR
2584       (p_asset_number IS NULL) THEN
2585        -- store SQL error message on message stack
2586       OKL_API.set_message(p_app_name     => G_APP_NAME,
2587                           p_msg_name     => G_REQUIRED_VALUE,
2588                           p_token1       => G_COL_NAME_TOKEN,
2589                           p_token1_value => 'ASSET_NUMBER');
2590       -- halt validation as it is a required field
2591       RAISE G_EXCEPTION_STOP_VALIDATION;
2592     END IF;
2593 
2594     -- Get the Release asset code from OKC_RULES_V
2595     --Bug# 15992711 : Change in number of parameters passed to new cursor
2596     --OPEN  c_check_release_asset(p_dnz_chr_id);
2597     OPEN  c_check_release_asset(p_asset_number);
2598     -- Bug# 15992711 : End of Modifications
2599 
2600     FETCH c_check_release_asset into lv_release_asset;
2601     IF c_check_release_asset%NOTFOUND THEN
2602       lv_release_asset := 'N';
2603 /*      x_return_status := OKL_API.G_RET_STS_ERROR;
2604       OKL_API.set_message(p_app_name     => G_APP_NAME,
2605                           p_msg_name     => G_NO_MATCHING_RECORD,
2606                           p_token1       => G_COL_NAME_TOKEN,
2607                           p_token1_value => 'OKC_RULES_V.RULE_INFORMATION1');
2608       RAISE G_EXCEPTION_HALT_VALIDATION;*/
2609     END IF;
2610     CLOSE c_check_release_asset;
2611 
2612     --
2613     -- Check whether asset residual value is securitized
2614     -- If so, do not allow release of the asset
2615     --
2616     IF (upper(lv_release_asset) = 'Y') THEN
2617        okl_transaction_pvt.check_contract_securitized(
2618                                  p_api_version        => 1.0,
2619                                  p_init_msg_list      => OKL_API.G_FALSE,
2620                                  x_return_status      => x_return_status,
2621                                  x_msg_count          => x_msg_count,
2622                                  x_msg_data           => x_msg_data,
2623                                  p_chr_id             => p_dnz_chr_id,
2624                                  p_cle_id             => p_kle_id,
2625                                  p_stream_type_class  => 'RESIDUAL',
2626                                  p_trx_date           => SYSDATE
2627                                 );
2628 
2629        IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2630           OKL_API.set_message(p_app_name     => G_APP_NAME,
2631                               p_msg_name     => 'OKL_LLA_ASSET_SECU_ERROR',
2632                               p_token1       => 'ASSET_NUM',
2633                               p_token1_value => p_asset_number
2634                              );
2635 
2636           x_return_status := OKL_API.G_RET_STS_ERROR;
2637           RETURN; -- no further processing
2638        END IF;
2639     END IF;
2640 
2641     -- For released assets, we should not handle asset number validation.
2642     IF (upper(lv_release_asset) = 'N') THEN -- Start of release asset check
2643 
2644       -- Get the asset number from the system
2645       OPEN  c_get_asset_number(p_kle_id);
2646       FETCH c_get_asset_number into lv_asset_number;
2647       IF c_get_asset_number%NOTFOUND THEN
2648          x_return_status := OKL_API.G_RET_STS_SUCCESS;
2649       END IF;
2650       CLOSE c_get_asset_number;
2651 
2652       -- Check the asset number being changed
2653       IF (p_asset_number <> lv_asset_number) THEN -- Start of Asset number equality check
2654 
2655         OPEN  c_source_code(p_kle_id);
2656         FETCH c_source_code into lv_source_code;
2657         CLOSE c_source_code;
2658 
2659         IF lv_source_code NOT IN ('OKL_REBOOK') THEN
2660           -- Enforce validation
2661           -- Validate if the Asset Number exists in OKL_TXL_ASSETS_B
2662           OPEN  c_txl_asset_number(p_asset_number,
2663                                    p_kle_id);
2664           FETCH c_txl_asset_number into ln_okl_txl_assets_v;
2665           IF c_txl_asset_number%NOTFOUND THEN
2666             x_return_status := OKL_API.G_RET_STS_SUCCESS;
2667           END IF;
2668           CLOSE c_txl_asset_number;
2669 
2670           -- Validate if the Asset Number exists in OKX_ASSETS_V
2671           OPEN  c_okx_assets_v(p_asset_number);
2672           FETCH c_okx_assets_v into ln_okx_assets_v;
2673           IF c_okx_assets_v%NOTFOUND THEN
2674             x_return_status := OKL_API.G_RET_STS_SUCCESS;
2675           END IF;
2676           CLOSE c_okx_assets_v;
2677 
2678           -- Validate if the Asset Number exists in OKX_ASSET_LINES_V
2679           OPEN  c_okx_asset_lines_v(p_asset_number);
2680           FETCH c_okx_asset_lines_v into ln_okx_asset_lines_v;
2681           IF c_okx_asset_lines_v%NOTFOUND THEN
2682             x_return_status := OKL_API.G_RET_STS_SUCCESS;
2683           END IF;
2684           CLOSE c_okx_asset_lines_v;
2685 
2686           -- Validate if the Asset Number exists in OKL_TXD_ASSETS_V
2687           -- for Split Asset scenario.
2688           OPEN  c_txd_assets_v(p_asset_number);
2689           FETCH c_txd_assets_v into ln_okl_txd_assets_v;
2690           IF c_txd_assets_v%NOTFOUND THEN
2691             x_return_status := OKL_API.G_RET_STS_SUCCESS;
2692           END IF;
2693           CLOSE c_txd_assets_v;
2694 
2695         ELSIF (lv_source_code = 'x'  OR lv_source_code = OKL_API.G_MISS_CHAR)THEN
2696           -- Enforce validation
2697           -- Validate if the Asset Number exists in OKL_TXL_ASSETS_B
2698           OPEN  c_txl_asset_number(p_asset_number,
2699                                    p_kle_id);
2700           FETCH c_txl_asset_number into ln_okl_txl_assets_v;
2701           IF c_txl_asset_number%NOTFOUND THEN
2702             x_return_status := OKL_API.G_RET_STS_SUCCESS;
2703           END IF;
2704           CLOSE c_txl_asset_number;
2705 
2706           -- Validate if the Asset Number exists in OKX_ASSETS_V
2707           OPEN  c_okx_assets_v(p_asset_number);
2708           FETCH c_okx_assets_v into ln_okx_assets_v;
2709           IF c_okx_assets_v%NOTFOUND THEN
2710             x_return_status := OKL_API.G_RET_STS_SUCCESS;
2711           END IF;
2712           CLOSE c_okx_assets_v;
2713 
2714           -- Validate if the Asset Number exists in OKX_ASSET_LINES_V
2715           OPEN  c_okx_asset_lines_v(p_asset_number);
2716           FETCH c_okx_asset_lines_v into ln_okx_asset_lines_v;
2717           IF c_okx_asset_lines_v%NOTFOUND THEN
2718             x_return_status := OKL_API.G_RET_STS_SUCCESS;
2719           END IF;
2720           CLOSE c_okx_asset_lines_v;
2721 
2722           -- Validate if the Asset Number exists in OKL_TXD_ASSETS_V
2723           -- for Split Asset scenario.
2724           OPEN  c_txd_assets_v(p_asset_number);
2725           FETCH c_txd_assets_v into ln_okl_txd_assets_v;
2726           IF c_txd_assets_v%NOTFOUND THEN
2727             x_return_status := OKL_API.G_RET_STS_SUCCESS;
2728           END IF;
2729           CLOSE c_txd_assets_v;
2730 
2731           -- Since we have add this check only the cases if the asset number
2732           -- cannot be duplicate  when created new fo re_book scenario
2733         ELSIF lv_source_code = 'OKL_REBOOK' THEN
2734           -- Validate if the Asset Number exists in OKL_TXL_ASSETS_V
2735           OPEN  c_txl_asset_number(p_asset_number,
2736                                    p_kle_Id);
2737           FETCH c_txl_asset_number into ln_okl_txl_assets_v;
2738           IF c_txl_asset_number%NOTFOUND THEN
2739             x_return_status := OKL_API.G_RET_STS_SUCCESS;
2740           END IF;
2741           CLOSE c_txl_asset_number;
2742 
2743           -- Validate if the Asset Number exists in OKX_ASSETS_V
2744           OPEN  c_okx_assets_v(p_asset_number);
2745           FETCH c_okx_assets_v into ln_okx_assets_v;
2746           IF c_okx_assets_v%NOTFOUND THEN
2747             x_return_status := OKL_API.G_RET_STS_SUCCESS;
2748           END IF;
2749           CLOSE c_okx_assets_v;
2750 
2751           -- Validate if the Asset Number exists in OKX_ASSET_LINES_V
2752           OPEN  c_okx_asset_lines_v(p_asset_number);
2753           FETCH c_okx_asset_lines_v into ln_okx_asset_lines_v;
2754           IF c_okx_asset_lines_v%NOTFOUND THEN
2755             x_return_status := OKL_API.G_RET_STS_SUCCESS;
2756           END IF;
2757           CLOSE c_okx_asset_lines_v;
2758 
2759           -- Validate if the Asset Number exists in OKL_TXD_ASSETS_V
2760           -- for Split Asset scenario.
2761           OPEN  c_txd_assets_v(p_asset_number);
2762           FETCH c_txd_assets_v into ln_okl_txd_assets_v;
2763           IF c_txd_assets_v%NOTFOUND THEN
2764             x_return_status := OKL_API.G_RET_STS_SUCCESS;
2765           END IF;
2766           CLOSE c_txd_assets_v;
2767         END IF;
2768 
2769         IF (ln_okl_txl_assets_v = 1)  OR (ln_okx_assets_v = 1) OR
2770            (ln_okx_asset_lines_v = 1) OR (ln_okl_txd_assets_v = 1) THEN
2771           -- store SQL error message on message stack
2772           OKL_API.set_message(p_app_name     => G_APP_NAME,
2773                               p_msg_name     => G_ASSET_NUMBER);
2774           RAISE G_EXCEPTION_HALT_VALIDATION;
2775         ELSIF (ln_okl_txl_assets_v = 1) AND (ln_okx_assets_v = 1) AND
2776               (ln_okx_asset_lines_v = 1) AND (ln_okl_txd_assets_v = 1) THEN
2777           -- store SQL error message on message stack
2778           OKL_API.set_message(p_app_name     => G_APP_NAME,
2779                               p_msg_name     => G_ASSET_NUMBER);
2780           RAISE G_EXCEPTION_HALT_VALIDATION;
2781         END IF;
2782       END IF; -- End of Asset number equality check
2783     END IF; -- End of release asset check
2784   EXCEPTION
2785     WHEN G_EXCEPTION_STOP_VALIDATION then
2786     -- We are here since the field is required
2787     -- Notify Error
2788     -- We are here b'cause we have no parent record
2789     -- If the cursor is open then it has to be closed
2790     IF c_txl_asset_number%ISOPEN THEN
2791        CLOSE c_txl_asset_number;
2792     END IF;
2793     IF c_source_code%ISOPEN THEN
2794       CLOSE c_source_code;
2795     END IF;
2796     IF c_okx_assets_v%ISOPEN THEN
2797        CLOSE c_okx_assets_v;
2798     END IF;
2799     IF c_okx_asset_lines_v%ISOPEN THEN
2800        CLOSE c_okx_asset_lines_v;
2801     END IF;
2802     IF c_check_release_asset%ISOPEN THEN
2803        CLOSE c_check_release_asset;
2804     END IF;
2805 
2806     x_return_status := OKL_API.G_RET_STS_ERROR;
2807     WHEN G_EXCEPTION_HALT_VALIDATION then
2808     -- We are here b'cause we have no parent record
2809     -- If the cursor is open then it has to be closed
2810     IF c_txl_asset_number%ISOPEN THEN
2811        CLOSE c_txl_asset_number;
2812     END IF;
2813     IF c_source_code%ISOPEN THEN
2814       CLOSE c_source_code;
2815     END IF;
2816     IF c_okx_assets_v%ISOPEN THEN
2817        CLOSE c_okx_assets_v;
2818     END IF;
2819     IF c_okx_asset_lines_v%ISOPEN THEN
2820        CLOSE c_okx_asset_lines_v;
2821     END IF;
2822     IF c_check_release_asset%ISOPEN THEN
2823        CLOSE c_check_release_asset;
2824     END IF;
2825 
2826     -- notify caller of an error
2827     x_return_status := OKL_API.G_RET_STS_ERROR;
2828     WHEN OTHERS THEN
2829     -- store SQL error message on message stack
2830     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
2831                         p_msg_name     => G_UNEXPECTED_ERROR,
2832                         p_token1       => G_SQLCODE_TOKEN,
2833                         p_token1_value => SQLCODE,
2834                         p_token2       => G_SQLERRM_TOKEN,
2835                         p_token2_value => SQLERRM);
2836     -- If the cursor is open then it has to be closed
2837     IF c_txl_asset_number%ISOPEN THEN
2838        CLOSE c_txl_asset_number;
2839     END IF;
2840     IF c_source_code%ISOPEN THEN
2841       CLOSE c_source_code;
2842     END IF;
2843     IF c_okx_assets_v%ISOPEN THEN
2844        CLOSE c_okx_assets_v;
2845     END IF;
2846     IF c_okx_asset_lines_v%ISOPEN THEN
2847        CLOSE c_okx_asset_lines_v;
2848     END IF;
2849     IF c_check_release_asset%ISOPEN THEN
2850        CLOSE c_check_release_asset;
2851     END IF;
2852 
2853     -- notify caller of an error as UNEXPETED error
2854     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2855   END validate_new_ast_num_update;
2856 -------------------------------------------------------------------------------------------------
2857 -- Start of Commnets
2858 -- Badrinath Kuchibholta
2859 -- Procedure Name       : Validate_new_Asset_Number
2860 -- Description          : Validation for new Asset Number
2861 -- Business Rules       : Validate Asset_Number against OKL_TXL_ASSETS_B.ASSET_NUMBER
2862 --                        ,as same should not exists in table
2863 -- Parameters           : OUT Return Status, IN Rec Info
2864 -- Version              : 1.0
2865 -- End of Commnets
2866   PROCEDURE validate_new_asset_number(x_return_status OUT NOCOPY VARCHAR2,
2867                                       p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
2868                                       p_dnz_chr_id   IN OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
2869     ln_okl_txl_assets_v           NUMBER := 0;
2870     ln_okx_assets_v               NUMBER := 0;
2871     ln_okx_asset_lines_v          NUMBER := 0;
2872     ln_okl_txd_assets_v           NUMBER := 0;
2873     lv_release_asset              OKC_RULES_V.RULE_INFORMATION1%TYPE := 'N';
2874 
2875     CURSOR c_txl_asset_number(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2876     SELECT 1
2877     --FROM DUAL
2878     --WHERE EXISTS (SELECT '1'
2879                   FROM OKL_TXL_ASSETS_B
2880                   WHERE asset_number = p_asset_number; --);
2881     /*CURSOR c_okx_asset_lines_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2882     SELECT 1
2883     --FROM DUAL
2884     --WHERE EXISTS (SELECT '1'
2885                   FROM OKX_ASSET_LINES_V
2886                   WHERE asset_number = p_asset_number; --); */
2887     CURSOR c_okx_asset_lines_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2888     SELECT 1
2889     FROM fa_additions a
2890     WHERE a.asset_number = p_asset_number
2891     and exists
2892      (
2893        select 1 from okc_k_items b
2894        where b.jtot_object1_code = 'OKX_ASSET'
2895        and   b.object1_id1 = to_char(a.asset_id)
2896      );
2897 
2898     CURSOR c_okx_assets_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2899     SELECT 1
2900     --FROM DUAL
2901     --WHERE EXISTS (SELECT '1'
2902                   FROM OKX_ASSETS_V
2903                   WHERE asset_number = p_asset_number; --);
2904 
2905     CURSOR c_txd_assets_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2906     SELECT 1
2907     --FROM DUAL
2908     --WHERE EXISTS (SELECT '1'
2909                   FROM OKL_TRX_ASSETS TAS,
2910                        OKL_TXL_ASSETS_V TXL,
2911                        OKL_TXD_ASSETS_V TXD
2912                   WHERE TXD.asset_number = p_asset_number
2913                   AND   TXD.TAL_ID       = TXL.ID
2914                   AND   TXL.TAL_TYPE     = 'ALI'
2915                   AND   TXL.TAS_ID       =  TAS.ID
2916                   AND   TAS.TSU_CODE     = 'ENTERED'; --);
2917 
2918     --Bug# 15992711 : The re-leased flag is no longer checked at contract header
2919     --                but needs to be validated at contract line
2920     --                Cursor modified to include validation at asset line level
2921     /*CURSOR c_check_release_asset(p_dnz_chr_id   IN OKC_K_LINES_V.DNZ_CHR_ID%TYPE) is
2922     SELECT RULE_INFORMATION1
2923     FROM   OKC_RULES_V
2924     WHERE  DNZ_CHR_ID = p_dnz_chr_id
2925     AND    RULE_INFORMATION_CATEGORY = 'LARLES';*/
2926 
2927     CURSOR c_check_release_asset(p_asset_number IN OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2928 	SELECT 'Y'
2929 	FROM okl_asset_returns_all_b KAR
2930 	WHERE KAR.kle_id IN (SELECT KLE.cle_id
2931 	                     FROM okl_txl_assets_b TXL
2932                            ,okl_txd_assets_b TXD
2933                            ,okc_k_lines_b    KLE
2934 	                     WHERE TXD.asset_number = p_asset_number
2935                        AND   KLE.id = TXL.kle_id
2936                        AND   TXL.id = TXD.tal_id )
2937         AND KAR.ars_code = 'RE_LEASE';
2938     -- Bug# 15992711 : End of Modifications
2939 
2940 
2941   BEGIN
2942     -- initialize return status
2943     x_return_status := OKL_API.G_RET_STS_SUCCESS;
2944     -- data is required
2945     IF (p_asset_number = OKL_API.G_MISS_CHAR) OR (p_asset_number IS NULL) THEN
2946       -- store SQL error message on message stack
2947       OKL_API.set_message(p_app_name     => G_APP_NAME,
2948                           p_msg_name     => G_REQUIRED_VALUE,
2949                           p_token1       => G_COL_NAME_TOKEN,
2950                           p_token1_value => 'ASSET_NUMBER');
2951       -- halt validation as it is a required field
2952       RAISE G_EXCEPTION_STOP_VALIDATION;
2953     END IF;
2954 
2955     IF (p_dnz_chr_id = OKL_API.G_MISS_NUM) OR (p_dnz_chr_id IS NULL) THEN
2956       -- store SQL error message on message stack
2957       OKL_API.set_message(p_app_name     => G_APP_NAME,
2958                           p_msg_name     => G_REQUIRED_VALUE,
2959                           p_token1       => G_COL_NAME_TOKEN,
2960                           p_token1_value => 'DNZ_CHR_ID');
2961       -- halt validation as it is a required field
2962       RAISE G_EXCEPTION_STOP_VALIDATION;
2963     END IF;
2964 
2965     -- Get the Release asset code from OKC_RULES_V
2966     -- Bug# 15992711 : Change in number of parameters passed to new cursor
2967     -- OPEN  c_check_release_asset(p_dnz_chr_id);
2968     OPEN  c_check_release_asset(p_asset_number);
2969     -- Bug# 15992711 : End of Modifications
2970 
2971     FETCH c_check_release_asset into lv_release_asset;
2972     IF c_check_release_asset%NOTFOUND THEN
2973       lv_release_asset := 'N';
2974 /*      x_return_status := OKL_API.G_RET_STS_ERROR;
2975       OKL_API.set_message(p_app_name     => G_APP_NAME,
2976                           p_msg_name     => G_NO_MATCHING_RECORD,
2977                           p_token1       => G_COL_NAME_TOKEN,
2978                           p_token1_value => 'OKC_RULES_V.RULE_INFORMATION1');
2979       RAISE G_EXCEPTION_HALT_VALIDATION;*/
2980     END IF;
2981     CLOSE c_check_release_asset;
2982 
2983     -- For released assets, we should not handle asset number validation.
2984     IF (upper(lv_release_asset) = 'N') THEN -- Start of release asset check
2985       -- Enforce validation
2986       -- Validate if the Asset Number exists in OKL_TXL_ASSETS_B
2987       OPEN  c_txl_asset_number(p_asset_number);
2988       FETCH c_txl_asset_number into ln_okl_txl_assets_v;
2989       IF c_txl_asset_number%NOTFOUND THEN
2990          x_return_status := OKL_API.G_RET_STS_SUCCESS;
2991       END IF;
2992       CLOSE c_txl_asset_number;
2993 
2994       -- Validate if the Asset Number exists in OKX_ASSETS_V
2995       OPEN  c_okx_assets_v(p_asset_number);
2996       FETCH c_okx_assets_v into ln_okx_assets_v;
2997       IF c_okx_assets_v%NOTFOUND THEN
2998         x_return_status := OKL_API.G_RET_STS_SUCCESS;
2999       END IF;
3000       CLOSE c_okx_assets_v;
3001 
3002       -- Validate if the Asset Number exists in OKX_ASSET_LINES_V
3003       OPEN  c_okx_asset_lines_v(p_asset_number);
3004       FETCH c_okx_asset_lines_v into ln_okx_asset_lines_v;
3005       IF c_okx_asset_lines_v%NOTFOUND THEN
3006         x_return_status := OKL_API.G_RET_STS_SUCCESS;
3007       END IF;
3008       CLOSE c_okx_asset_lines_v;
3009 
3010       -- Validate if the Asset Number exists in OKL_TXD_ASSETS_V
3011       -- for Split Asset scenario.
3012       OPEN  c_txd_assets_v(p_asset_number);
3013       FETCH c_txd_assets_v into ln_okl_txd_assets_v;
3014       IF c_txd_assets_v%NOTFOUND THEN
3015         x_return_status := OKL_API.G_RET_STS_SUCCESS;
3016       END IF;
3017       CLOSE c_txd_assets_v;
3018 
3019       IF (ln_okl_txl_assets_v = 1) OR (ln_okx_assets_v = 1) OR
3020          (ln_okx_asset_lines_v = 1) OR (ln_okl_txd_assets_v = 1) THEN
3021         -- store SQL error message on message stack
3022          OKL_API.set_message(p_app_name     => G_APP_NAME,
3023                              p_msg_name     => G_ASSET_NUMBER);
3024          RAISE G_EXCEPTION_HALT_VALIDATION;
3025       ELSIF (ln_okl_txl_assets_v = 1) AND (ln_okx_assets_v = 1) AND
3026             (ln_okx_asset_lines_v = 1) AND (ln_okl_txd_assets_v = 1) THEN
3027         -- store SQL error message on message stack
3028         OKL_API.set_message(p_app_name     => G_APP_NAME,
3029                             p_msg_name     => G_ASSET_NUMBER);
3030         RAISE G_EXCEPTION_HALT_VALIDATION;
3031       END IF;
3032     END IF;
3033   EXCEPTION
3034     WHEN G_EXCEPTION_STOP_VALIDATION then
3035     -- We are here since the field is required
3036     -- Notify Error
3037     x_return_status := OKL_API.G_RET_STS_ERROR;
3038     WHEN G_EXCEPTION_HALT_VALIDATION then
3039     -- We are here b'cause we have no parent record
3040     -- If the cursor is open then it has to be closed
3041     IF c_txl_asset_number%ISOPEN THEN
3042        CLOSE c_txl_asset_number;
3043     END IF;
3044     IF c_okx_assets_v%ISOPEN THEN
3045        CLOSE c_okx_assets_v;
3046     END IF;
3047     IF c_okx_asset_lines_v%ISOPEN THEN
3048        CLOSE c_okx_asset_lines_v;
3049     END IF;
3050     IF c_txd_assets_v%ISOPEN THEN
3051        CLOSE c_txd_assets_v;
3052     END IF;
3053     IF c_check_release_asset%ISOPEN THEN
3054        CLOSE c_check_release_asset;
3055     END IF;
3056 
3057     -- notify caller of an error
3058     x_return_status := OKL_API.G_RET_STS_ERROR;
3059     WHEN OTHERS THEN
3060     -- store SQL error message on message stack
3061     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
3062                         p_msg_name     => G_UNEXPECTED_ERROR,
3063                         p_token1       => G_SQLCODE_TOKEN,
3064                         p_token1_value => SQLCODE,
3065                         p_token2       => G_SQLERRM_TOKEN,
3066                         p_token2_value => SQLERRM);
3067     -- If the cursor is open then it has to be closed
3068     IF c_txl_asset_number%ISOPEN THEN
3069        CLOSE c_txl_asset_number;
3070     END IF;
3071     IF c_okx_assets_v%ISOPEN THEN
3072        CLOSE c_okx_assets_v;
3073     END IF;
3074     IF c_okx_asset_lines_v%ISOPEN THEN
3075        CLOSE c_okx_asset_lines_v;
3076     END IF;
3077     IF c_txd_assets_v%ISOPEN THEN
3078        CLOSE c_txd_assets_v;
3079     END IF;
3080     IF c_check_release_asset%ISOPEN THEN
3081        CLOSE c_check_release_asset;
3082     END IF;
3083     -- notify caller of an error as UNEXPETED error
3084     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3085   END validate_new_asset_number;
3086 -------------------------------------------------------------------------------------------------
3087 -- Start of Commnets
3088 -- Badrinath Kuchibholta
3089 -- Procedure Name       : Validate_asset_tax_book
3090 -- Description          : Validation Asset tax Book
3091 -- Business Rules       : Validate Asset_Number, tax_book and tal type should be unique
3092 -- Parameters           : OUT Return Status, IN Rec Info
3093 -- Version              : 1.0
3094 -- End of Commnets
3095   PROCEDURE Validate_asset_tax_book(x_return_status OUT NOCOPY VARCHAR2,
3096                                     p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE,
3097                                     p_tax_book     OKL_TXD_ASSETS_B.TAX_BOOK%TYPE,
3098                                     p_tal_id       OKL_TXL_ASSETS_B.ID%TYPE) IS
3099     ln_asset_lines_dtls           NUMBER := 0;
3100     CURSOR c_asset_lines_dtls_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE,
3101                                 p_tax_book     OKL_TXD_ASSETS_B.TAX_BOOK%TYPE,
3102                                 p_tal_id       OKL_TXL_ASSETS_B.ID%TYPE) is
3103     SELECT 1
3104     --FROM DUAL
3105     --WHERE EXISTS (SELECT '1'
3106                   FROM OKL_TXD_ASSETS_B txd,
3107                        OKL_TXL_ASSETS_B txl
3108                   WHERE txl.asset_number = p_asset_number
3109                   AND txl.asset_number = txd.asset_number
3110                   AND txl.tal_type IN ('CFA','CIB','CRB','CRL','CSP','CRV')
3111                   AND txd.tal_id = txl.id
3112                   AND txd.tal_id = p_tal_id
3113                   AND txd.tax_book = p_tax_book; --);
3114   BEGIN
3115     -- initialize return status
3116     x_return_status := OKL_API.G_RET_STS_SUCCESS;
3117     -- data is required
3118     IF (p_asset_number = OKL_API.G_MISS_CHAR OR
3119        p_asset_number IS NULL) OR
3120        (p_tal_id = OKL_API.G_MISS_NUM OR
3121        p_tal_id IS NULL) OR
3122        (p_tax_book = OKL_API.G_MISS_CHAR OR
3123        p_tax_book IS NULL) THEN
3124        -- store SQL error message on message stack
3125       OKL_API.set_message(p_app_name     => G_APP_NAME,
3126                           p_msg_name     => G_REQUIRED_VALUE,
3127                           p_token1       => G_COL_NAME_TOKEN,
3128                           p_token1_value => 'ASSET_NUMBER ,TAX BOOK and TAL ID');
3129       -- halt validation as it is a required field
3130       RAISE G_EXCEPTION_STOP_VALIDATION;
3131     END IF;
3132     -- Enforce validation
3133     -- Validate if the Asset Number exists in OKX_ASSET_LINES_V
3134     OPEN  c_asset_lines_dtls_v(p_asset_number => p_asset_number,
3135                                p_tax_book => p_tax_book,
3136                                p_tal_id => p_tal_id);
3137     FETCH c_asset_lines_dtls_v into ln_asset_lines_dtls;
3138     IF c_asset_lines_dtls_v%NOTFOUND THEN
3139        x_return_status := OKL_API.G_RET_STS_SUCCESS;
3140     END IF;
3141     CLOSE c_asset_lines_dtls_v;
3142     IF (ln_asset_lines_dtls = 1) THEN
3143        -- store SQL error message on message stack
3144        OKL_API.set_message(p_app_name     => G_APP_NAME,
3145                            p_msg_name     => G_ASSET_NUMBER);
3146        RAISE G_EXCEPTION_HALT_VALIDATION;
3147     END IF;
3148   EXCEPTION
3149     WHEN G_EXCEPTION_STOP_VALIDATION then
3150     -- We are here since the field is required
3151     -- Notify Error
3152     x_return_status := OKL_API.G_RET_STS_ERROR;
3153     WHEN G_EXCEPTION_HALT_VALIDATION then
3154     -- We are here b'cause we have no parent record
3155     -- If the cursor is open then it has to be closed
3156     IF c_asset_lines_dtls_v%ISOPEN THEN
3157        CLOSE c_asset_lines_dtls_v;
3158     END IF;
3159     -- notify caller of an error
3160     x_return_status := OKL_API.G_RET_STS_ERROR;
3161     WHEN OTHERS THEN
3162     -- store SQL error message on message stack
3163     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
3164                         p_msg_name     => G_UNEXPECTED_ERROR,
3165                         p_token1       => G_SQLCODE_TOKEN,
3166                         p_token1_value => SQLCODE,
3167                         p_token2       => G_SQLERRM_TOKEN,
3168                         p_token2_value => SQLERRM);
3169     -- If the cursor is open then it has to be closed
3170     IF c_asset_lines_dtls_v%ISOPEN THEN
3171        CLOSE c_asset_lines_dtls_v;
3172     END IF;
3173     -- notify caller of an error as UNEXPETED error
3174     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3175   END Validate_asset_tax_book;
3176 ----------------------------------------------------------------------------------------
3177 -- Start of Commnets
3178 -- Badrinath Kuchibholta
3179 -- Procedure Name       : validate_instance_number_ib
3180 -- Description          : validate_instance_number_ib
3181 -- Business Rules       : Validate instance_number_ib against OKL_TXL_ITM_INSTS.INSTANCE_NUMBER_IB
3182 --                        ,as same should not exists in table
3183 -- Parameters           : OUT Return Status, IN Rec Info
3184 -- Version              : 1.0
3185 -- End of Commnets
3186 
3187   PROCEDURE validate_instance_number_ib(x_return_status OUT NOCOPY VARCHAR2,
3188                                         p_inst_num_ib IN OKL_TXL_ITM_INSTS.INSTANCE_NUMBER_IB%TYPE) IS
3189     ln_dummy number := 0;
3190     CURSOR c_inst_num_ib_validate(p_inst_ib  OKL_TXL_ITM_INSTS.INSTANCE_NUMBER_IB%TYPE) is
3191     SELECT 1
3192     --FROM DUAL
3193     --WHERE EXISTS (SELECT '1'
3194                   FROM OKL_TXL_ITM_INSTS
3195                   WHERE instance_number_ib = p_inst_ib; --);
3196 
3197   BEGIN
3198     -- initialize return status
3199     x_return_status := OKL_API.G_RET_STS_SUCCESS;
3200     -- data is required
3201     IF (p_inst_num_ib = OKL_API.G_MISS_CHAR OR
3202        p_inst_num_ib IS NULL) THEN
3203        -- store SQL error message on message stack
3204       OKL_API.set_message(p_app_name     => G_APP_NAME,
3205                           p_msg_name     => G_REQUIRED_VALUE,
3206                           p_token1       => G_COL_NAME_TOKEN,
3207                           p_token1_value => 'INSTANCE_NUMBER_IB');
3208        RAISE G_EXCEPTION_STOP_VALIDATION;
3209     END IF;
3210     -- Enforce validation
3211     OPEN  c_inst_num_ib_validate(p_inst_num_ib);
3212     FETCH c_inst_num_ib_validate into ln_dummy;
3213     IF c_inst_num_ib_validate%NOTFOUND THEN
3214        -- Since no parent record existing in OKL_TXL_ITM_INSTS
3215        x_return_status := OKL_API.G_RET_STS_SUCCESS;
3216     END IF;
3217     CLOSE c_inst_num_ib_validate;
3218     IF (ln_dummy = 1) THEN
3219        -- store SQL error message on message stack
3220        OKL_API.set_message(p_app_name     => G_APP_NAME,
3221                            p_msg_name     => G_INSTALL_BASE_NUMBER);
3222        RAISE G_EXCEPTION_HALT_VALIDATION;
3223     END IF;
3224   EXCEPTION
3225     WHEN G_EXCEPTION_STOP_VALIDATION then
3226     -- We are here since the field is required
3227     -- Notify Error
3228     x_return_status := OKL_API.G_RET_STS_ERROR;
3229     WHEN G_EXCEPTION_HALT_VALIDATION then
3230     -- We are here b'cause we have no parent record
3231     -- store SQL error message on message stack
3232     -- If the cursor is open then it has to be closed
3233     IF c_inst_num_ib_validate%ISOPEN THEN
3234        CLOSE c_inst_num_ib_validate;
3235     END IF;
3236     -- notify caller of an error
3237     x_return_status := OKL_API.G_RET_STS_ERROR;
3238     WHEN OTHERS THEN
3239      -- store SQL error message on message stack
3240      OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
3241                          p_msg_name     => G_UNEXPECTED_ERROR,
3242                          p_token1       => G_SQLCODE_TOKEN,
3243                          p_token1_value => SQLCODE,
3244                          p_token2       => G_SQLERRM_TOKEN,
3245                          p_token2_value => SQLERRM);
3246     -- If the cursor is open then it has to be closed
3247     IF c_inst_num_ib_validate%ISOPEN THEN
3248        CLOSE c_inst_num_ib_validate;
3249     END IF;
3250     -- notify caller of an error as UNEXPETED error
3251     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3252   END validate_instance_number_ib;
3253 ------------------------------------------------------------------------------------------------------------
3254 -- Start of Commnets
3255 -- Badrinath Kuchibholta
3256 -- Procedure Name       : validate_lse_id
3257 -- Description          : validation and get the lty_code
3258 --                        with OKC_LINE_STYLES_V
3259 -- Business Rules       :
3260 -- Parameters           :
3261 -- Version              : 1.0
3262 -- End of Commnets
3263   PROCEDURE validate_lse_id(p_clev_rec      IN clev_rec_type,
3264                             x_return_status OUT NOCOPY VARCHAR2,
3265                             x_lty_code      OUT NOCOPY OKC_LINE_STYLES_V.LTY_CODE%TYPE,
3266                             x_lse_type      OUT NOCOPY OKC_LINE_STYLES_V.LSE_TYPE%TYPE) IS
3267     CURSOR c_lse_id_validate(p_lse_id     OKC_LINE_STYLES_V.ID%TYPE) IS
3268     SELECT lty_code,
3269            lse_type
3270     FROM OKC_LINE_STYLES_V
3271     WHERE id = p_lse_id;
3272   BEGIN
3273     -- initialize return status
3274     x_return_status := OKL_API.G_RET_STS_SUCCESS;
3275     -- data is required
3276     IF (p_clev_rec.lse_id = OKL_API.G_MISS_NUM) OR
3277        (p_clev_rec.lse_id IS NULL) THEN
3278        -- store SQL error message on message stack
3279       OKL_API.set_message(p_app_name     => G_APP_NAME,
3280                           p_msg_name     => G_REQUIRED_VALUE,
3281                           p_token1       => G_COL_NAME_TOKEN,
3282                           p_token1_value => 'OKC_K_LINES_V.LSE_ID');
3283        -- halt validation as it is a required field
3284        RAISE G_EXCEPTION_STOP_VALIDATION;
3285     END IF;
3286     -- Enforce Foreign Key
3287     OPEN  c_lse_id_validate(p_clev_rec.lse_id);
3288     FETCH c_lse_id_validate into x_lty_code,
3289                                  x_lse_type;
3290             -- If there are no records then
3291     IF c_lse_id_validate%NOTFOUND THEN
3292          OKL_API.set_message(p_app_name     => G_APP_NAME,
3293                              p_msg_name     => G_NO_MATCHING_RECORD,
3294                              p_token1       => G_COL_NAME_TOKEN,
3295                              p_token1_value => 'OKC_K_LINES_V.LSE_ID');
3296        -- halt validation as it has no parent record
3297        RAISE G_EXCEPTION_HALT_VALIDATION;
3298     END IF;
3299     CLOSE c_lse_id_validate;
3300     -- If we have null records coming up
3301     IF (x_lty_code = OKL_API.G_MISS_CHAR OR
3302        x_lty_code IS NULL) AND
3303        (x_lse_type =  OKL_API.G_MISS_CHAR OR
3304        x_lse_type IS NULL) THEN
3305          OKL_API.set_message(p_app_name     => G_APP_NAME,
3306                              p_msg_name     => G_NO_MATCHING_RECORD,
3307                              p_token1       => G_COL_NAME_TOKEN,
3308                              p_token1_value => 'OKC_K_LINES_V.LSE_ID');
3309        -- halt validation as it has no parent record
3310        RAISE G_EXCEPTION_HALT_VALIDATION;
3311     END IF;
3312   EXCEPTION
3313     WHEN G_EXCEPTION_STOP_VALIDATION then
3314     -- We are here since the field is required
3315     -- Notify Error
3316     x_return_status := OKL_API.G_RET_STS_ERROR;
3317     WHEN G_EXCEPTION_HALT_VALIDATION then
3318     -- If the cursor is open then it has to be closed
3319     IF c_lse_id_validate%ISOPEN THEN
3320        CLOSE c_lse_id_validate;
3321     END IF;
3322     x_return_status := OKL_API.G_RET_STS_ERROR;
3323     WHEN OTHERS THEN
3324     -- store SQL error message on message stack
3325     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
3326                         p_msg_name     => G_UNEXPECTED_ERROR,
3327                         p_token1       => G_SQLCODE_TOKEN,
3328                         p_token1_value => SQLCODE,
3329                         p_token2       => G_SQLERRM_TOKEN,
3330                         p_token2_value => SQLERRM);
3331     -- If the cursor is open then it has to be closed
3332     IF c_lse_id_validate%ISOPEN THEN
3333        CLOSE c_lse_id_validate;
3334     END IF;
3335     -- notify caller of an error as UNEXPETED error
3336     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3337   END validate_lse_id;
3338 ---------------------------------------------------------------------------------------------------
3339 -- Start of Commnets
3340 -- Badrinath Kuchibholta
3341 -- Procedure Name       : validate_cle_lse_id
3342 -- Description          : validation of the cle_id
3343 --                        with OKC_k_LINES_V and Check if the line style is TLS
3344 -- Business Rules       :
3345 -- Parameters           :
3346 -- Version              : 1.0
3347 -- End of Commnets
3348 
3349   PROCEDURE validate_cle_lse_id(p_clev_rec      IN clev_rec_type,
3350                                 p_lty_code      IN OKC_LINE_STYLES_V.LTY_CODE%TYPE,
3351                                 x_lty_code      OUT NOCOPY OKC_LINE_STYLES_V.LTY_CODE%TYPE,
3352                                 x_return_status OUT NOCOPY VARCHAR2) IS
3353     ln_cle_id          OKC_K_LINES_V.ID%TYPE := 0;
3354     lv_lse_type        OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
3355     lv_lty_code        OKC_LINE_STYLES_V.LTY_CODE%TYPE;
3356 
3357     CURSOR c_cle_id_validate(p_cle_id     OKC_K_LINES_V.CLE_ID%TYPE) IS
3358     SELECT lse.lty_code
3359     FROM OKC_K_LINES_V cle,
3360          OKC_LINE_STYLES_V lse
3361     WHERE cle.id = p_cle_id
3362     AND lse.id = cle.lse_id;
3363 
3364   BEGIN
3365     -- initialize return status
3366     x_return_status := OKL_API.G_RET_STS_SUCCESS;
3367     -- data is required
3368     IF (p_clev_rec.cle_id = OKL_API.G_MISS_NUM OR
3369        p_clev_rec.cle_id IS NULL) THEN
3370       OKL_API.set_message(p_app_name     => G_APP_NAME,
3371                           p_msg_name     => G_REQUIRED_VALUE,
3372                           p_token1       => G_COL_NAME_TOKEN,
3373                           p_token1_value => 'OKC_K_LINES_V.CLE_ID');
3374        -- halt validation as it is a required field
3375        RAISE G_EXCEPTION_STOP_VALIDATION;
3376     END IF;
3377     -- check the valid id is there
3378     OPEN  c_cle_id_validate(p_clev_rec.cle_id);
3379     IF c_cle_id_validate%NOTFOUND THEN
3380          OKL_API.set_message(p_app_name     => G_APP_NAME,
3381                              p_msg_name     => G_NO_MATCHING_RECORD,
3382                              p_token1       => G_COL_NAME_TOKEN,
3383                              p_token1_value => 'OKC_K_LINES_V.CLE_ID');
3384        -- halt validation as it has no parent record
3385        RAISE G_EXCEPTION_HALT_VALIDATION;
3386     END IF;
3387     FETCH c_cle_id_validate into lv_lty_code;
3388     CLOSE c_cle_id_validate;
3389     --Business Rules
3390     IF p_lty_code  = G_MODEL_LINE_LTY_CODE AND
3391        lv_lty_code = G_FIN_LINE_LTY_CODE THEN
3392        x_lty_code  := lv_lty_code;
3393     ELSIF p_lty_code = G_ADDON_LINE_LTY_CODE AND
3394        lv_lty_code   = G_MODEL_LINE_LTY_CODE THEN
3395        x_lty_code  := lv_lty_code;
3396     ELSIF p_lty_code = G_FA_LINE_LTY_CODE AND
3397        lv_lty_code   = G_FIN_LINE_LTY_CODE THEN
3398        x_lty_code  := lv_lty_code;
3399     ELSIF p_lty_code = G_INST_LINE_LTY_CODE AND
3400        lv_lty_code   = G_FIN_LINE_LTY_CODE THEN
3401        x_lty_code  := lv_lty_code;
3402     ELSIF p_lty_code = G_IB_LINE_LTY_CODE AND
3403        lv_lty_code   = G_INST_LINE_LTY_CODE THEN
3404        x_lty_code  := lv_lty_code;
3405     ELSE
3406        OKL_API.set_message(p_app_name     => G_APP_NAME,
3407                            p_msg_name     => G_LINE_STYLE);
3408        -- halt validation as it has invalid Value
3409        RAISE G_EXCEPTION_HALT_VALIDATION;
3410     END IF;
3411   EXCEPTION
3412     WHEN G_EXCEPTION_STOP_VALIDATION then
3413     -- We are here since the field is required
3414     -- store SQL error message on message stack
3415     -- Notify Error
3416     x_return_status := OKL_API.G_RET_STS_ERROR;
3417     WHEN G_EXCEPTION_HALT_VALIDATION then
3418     IF c_cle_id_validate%ISOPEN THEN
3419        -- halt validation as it has no parent record
3420        RAISE G_EXCEPTION_HALT_VALIDATION;
3421     END IF;
3422     x_return_status := OKL_API.G_RET_STS_ERROR;
3423     WHEN OTHERS THEN
3424     -- store SQL error message on message stack
3425     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
3426                         p_msg_name     => G_UNEXPECTED_ERROR,
3427                         p_token1       => G_SQLCODE_TOKEN,
3428                         p_token1_value => SQLCODE,
3429                         p_token2       => G_SQLERRM_TOKEN,
3430                         p_token2_value => SQLERRM);
3431     IF c_cle_id_validate%ISOPEN THEN
3432        -- halt validation as it has no parent record
3433        RAISE G_EXCEPTION_HALT_VALIDATION;
3434     END IF;
3435     -- notify caller of an error as UNEXPETED error
3436     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3437   END validate_cle_lse_id;
3438 ----------------------------------------------------------------------------------------------------
3439 -- Start of Commnets
3440 -- Badrinath Kuchibholta
3441 -- Procedure Name       : validate_dnz_chr_id
3442 -- Description          : validation with OKC_K_LINES_V
3443 -- Business Rules       :
3444 -- Parameters           :
3445 -- Version              : 1.0
3446 -- End of Commnets
3447 
3448   PROCEDURE validate_dnz_chr_id(p_clev_rec IN clev_rec_type,
3449                                 x_return_status OUT NOCOPY VARCHAR2) IS
3450     ln_dummy      NUMBER := 0;
3451     CURSOR c_dnz_chr_id_validate(p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
3452     SELECT 1
3453     --FROM DUAL
3454     --WHERE EXISTS (SELECT 1
3455                   FROM OKC_K_HEADERS_B chrv
3456                   WHERE chrv.id = p_dnz_chr_id; --);
3457   BEGIN
3458     -- initialize return status
3459     x_return_status := OKL_API.G_RET_STS_SUCCESS;
3460     -- data is required
3461     IF (p_clev_rec.dnz_chr_id = OKL_API.G_MISS_NUM) OR
3462        (p_clev_rec.dnz_chr_id IS NULL) THEN
3463        -- store SQL error message on message stack
3464       OKL_API.set_message(p_app_name     => G_APP_NAME,
3465                           p_msg_name     => G_REQUIRED_VALUE,
3466                           p_token1       => G_COL_NAME_TOKEN,
3467                           p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID');
3468        -- halt validation as it is a required field
3469        RAISE G_EXCEPTION_STOP_VALIDATION;
3470     END IF;
3471     -- Enforce Foreign Key
3472     -- since we are creating a asset line
3473     -- we assume the cle_id will not null
3474     -- as the same is not top line and it will be sub line
3475     OPEN  c_dnz_chr_id_validate(p_clev_rec.dnz_chr_id);
3476     IF c_dnz_chr_id_validate%NOTFOUND THEN
3477       OKL_API.set_message(p_app_name     => G_APP_NAME,
3478                           p_msg_name     => G_NO_MATCHING_RECORD,
3479                           p_token1       => G_COL_NAME_TOKEN,
3480                           p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID');
3481       -- halt validation as it has no parent record
3482       RAISE G_EXCEPTION_HALT_VALIDATION;
3483     END IF;
3484     FETCH c_dnz_chr_id_validate into ln_dummy;
3485     CLOSE c_dnz_chr_id_validate;
3486     IF (ln_dummy = 0) THEN
3487       OKL_API.set_message(p_app_name     => G_APP_NAME,
3488                           p_msg_name     => G_NO_MATCHING_RECORD,
3489                           p_token1       => G_COL_NAME_TOKEN,
3490                           p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID');
3491        -- halt validation as it has no parent record
3492        RAISE G_EXCEPTION_HALT_VALIDATION;
3493     END IF;
3494   EXCEPTION
3495     WHEN G_EXCEPTION_STOP_VALIDATION then
3496     -- We are here since the field is required
3497     -- Notify Error
3498     x_return_status := OKL_API.G_RET_STS_ERROR;
3499     WHEN G_EXCEPTION_HALT_VALIDATION then
3500     -- If the cursor is open then it has to be closed
3501     IF c_dnz_chr_id_validate%ISOPEN THEN
3502        CLOSE c_dnz_chr_id_validate;
3503     END IF;
3504     x_return_status := OKL_API.G_RET_STS_ERROR;
3505     WHEN OTHERS THEN
3506     -- store SQL error message on message stack
3507     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
3508                         p_msg_name     => G_UNEXPECTED_ERROR,
3509                         p_token1       => G_SQLCODE_TOKEN,
3510                         p_token1_value => SQLCODE,
3511                         p_token2       => G_SQLERRM_TOKEN,
3512                         p_token2_value => SQLERRM);
3513     -- If the cursor is open then it has to be closed
3514     IF c_dnz_chr_id_validate%ISOPEN THEN
3515        CLOSE c_dnz_chr_id_validate;
3516     END IF;
3517     -- notify caller of an error as UNEXPETED error
3518     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3519   END validate_dnz_chr_id;
3520 --------------------------------------------------------------------------------------------
3521 -- Start of Commnets
3522 -- Badrinath Kuchibholta
3523 -- Procedure Name       : check_required_values
3524 -- Description          : check_required_values
3525 -- Business Rules       :
3526 -- Parameters           :
3527 -- Version              : 1.0
3528 -- End of Commnets
3529 
3530   FUNCTION check_required_values(p_item1    IN OKC_K_ITEMS_V.OBJECT1_ID1%TYPE,
3531                                  p_item2    IN OKC_K_ITEMS_V.OBJECT1_ID2%TYPE,
3532                                  p_ast_no   IN OKL_TXL_ASSETS_B.ASSET_NUMBER%TYPE,
3533                                  p_ast_desc IN OKL_TXL_ASSETS_TL.DESCRIPTION%TYPE,
3534                                  p_cost     IN OKL_TXL_ASSETS_B.ORIGINAL_COST%TYPE,
3535                                  p_units    IN OKC_K_ITEMS_V.NUMBER_OF_ITEMS%TYPE,
3536                                  p_ib_loc1  IN OKL_TXL_ITM_INSTS_V.OBJECT_ID1_NEW%TYPE,
3537                                  p_ib_loc2  IN OKL_TXL_ITM_INSTS_V.OBJECT_ID2_NEW%TYPE,
3538                                  p_fa_loc   IN OKL_TXL_ASSETS_B.FA_LOCATION_ID%TYPE,
3539                                  p_refinance_amount IN OKL_K_LINES.REFINANCE_AMOUNT%TYPE,
3540                                  p_chr_id   IN OKC_K_LINES_B.DNZ_CHR_ID%TYPE)
3541   RETURN VARCHAR2 IS
3542     x_return_status          VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
3543     ln_dummy                 NUMBER := 0;
3544     ln1_dummy                NUMBER := 0;
3545     ln2_dummy                NUMBER := 0;
3546     ln3_dummy                NUMBER := p_units;
3547     lv_deal_type             OKL_K_HEADERS_V.DEAL_TYPE%TYPE := null;
3548     lv_scs_code              OKC_K_HEADERS_V.SCS_CODE%TYPE := null;
3549     --Bug# 4419339
3550     l_orig_system_source_code   okc_k_headers_b.orig_system_source_code%TYPE;
3551     CURSOR get_deal_type(p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE)
3552     IS
3553     SELECT khr.deal_type,
3554            chr.scs_code,
3555            --Bug# 4419339
3556            chr.orig_system_source_code
3557     FROM OKL_K_HEADERS_V khr,
3558          OKC_K_HEADERS_B chr
3559     WHERE khr.id = p_dnz_chr_id
3560     AND chr.id = khr.id;
3561   BEGIN
3562     IF (p_chr_id <> OKL_API.G_MISS_NUM OR
3563        p_chr_id IS NOT NULL) THEN
3564     OPEN  get_deal_type(p_dnz_chr_id => p_chr_id);
3565     FETCH get_deal_type into lv_deal_type,
3566                              lv_scs_code,
3567                              --Bug# 4419339
3568                              l_orig_system_source_code;
3569     CLOSE get_deal_type;
3570     END IF;
3571     -- data is required
3572     IF (p_item1 = OKL_API.G_MISS_CHAR OR
3573        p_item1 IS NULL) THEN
3574        -- store SQL error message on message stack
3575       OKL_API.set_message(p_app_name     => G_APP_NAME,
3576                           p_msg_name     => G_REQUIRED_VALUE,
3577                           p_token1       => G_COL_NAME_TOKEN,
3578                           p_token1_value => 'Item');
3579        -- halt validation as it is a required field
3580        RAISE G_EXCEPTION_STOP_VALIDATION;
3581     END IF;
3582     IF (p_item2 = OKL_API.G_MISS_CHAR OR
3583        p_item2 IS NULL) THEN
3584        -- store SQL error message on message stack
3585       OKL_API.set_message(p_app_name     => G_APP_NAME,
3586                           p_msg_name     => G_REQUIRED_VALUE,
3587                           p_token1       => G_COL_NAME_TOKEN,
3588                           p_token1_value => 'Item');
3589        -- halt validation as it is a required field
3590        RAISE G_EXCEPTION_STOP_VALIDATION;
3591     END IF;
3592     IF (p_ast_no = OKL_API.G_MISS_CHAR OR
3593        p_ast_no IS NULL) THEN
3594        -- store SQL error message on message stack
3595       OKL_API.set_message(p_app_name     => G_APP_NAME,
3596                           p_msg_name     => G_REQUIRED_VALUE,
3597                           p_token1       => G_COL_NAME_TOKEN,
3598                           p_token1_value => 'Asset Number');
3599        -- halt validation as it is a required field
3600        RAISE G_EXCEPTION_STOP_VALIDATION;
3601     END IF;
3602     IF (p_ast_desc = OKL_API.G_MISS_CHAR OR
3603        p_ast_desc IS NULL) THEN
3604        -- store SQL error message on message stack
3605       OKL_API.set_message(p_app_name     => G_APP_NAME,
3606                           p_msg_name     => G_REQUIRED_VALUE,
3607                           p_token1       => G_COL_NAME_TOKEN,
3608                           p_token1_value => 'Description');
3609        -- halt validation as it is a required field
3610        RAISE G_EXCEPTION_STOP_VALIDATION;
3611     END IF;
3612     IF (p_cost = OKL_API.G_MISS_NUM OR
3613        p_cost IS NULL) THEN
3614        -- store SQL error message on message stack
3615       OKL_API.set_message(p_app_name     => G_APP_NAME,
3616                           p_msg_name     => G_REQUIRED_VALUE,
3617                           p_token1       => G_COL_NAME_TOKEN,
3618                           p_token1_value => 'Unit Cost');
3619        -- halt validation as it is a required field
3620        RAISE G_EXCEPTION_STOP_VALIDATION;
3621     ELSE
3622       ln_dummy := sign(p_cost);
3623       IF ln_dummy = -1 THEN
3624         OKL_API.set_message(p_app_name     => G_APP_NAME,
3625                             p_msg_name     => G_INVALID_VALUE,
3626                             p_token1       => G_COL_NAME_TOKEN,
3627                             p_token1_value => 'Unit Cost');
3628          -- halt validation as it is a required field
3629          RAISE G_EXCEPTION_STOP_VALIDATION;
3630       END IF;
3631     END IF;
3632     IF (ln3_dummy = OKL_API.G_MISS_NUM OR
3633        ln3_dummy IS NULL) THEN
3634        -- store SQL error message on message stack
3635       OKL_API.set_message(p_app_name     => G_APP_NAME,
3636                           p_msg_name     => G_REQUIRED_VALUE,
3637                           p_token1       => G_COL_NAME_TOKEN,
3638                           p_token1_value => 'Units');
3639        -- halt validation as it is a required field
3640        RAISE G_EXCEPTION_STOP_VALIDATION;
3641     ELSE
3642       ln1_dummy := sign(p_units);
3643       IF ln1_dummy = -1 THEN
3644         OKL_API.set_message(p_app_name     => G_APP_NAME,
3645                             p_msg_name     => G_INVALID_VALUE,
3646                             p_token1       => G_COL_NAME_TOKEN,
3647                             p_token1_value => 'Units');
3648          -- halt validation as it is a required field
3649          RAISE G_EXCEPTION_STOP_VALIDATION;
3650       END IF;
3651       ln2_dummy := instr(to_char(p_units),'.');
3652       IF ln2_dummy <> 0 THEN
3653         OKL_API.set_message(p_app_name     => G_APP_NAME,
3654                             p_msg_name     => G_DECIMAL_VALUE,
3655                             p_token1       => G_COL_NAME_TOKEN,
3656                             p_token1_value => 'Units');
3657          -- halt validation as it is a required field
3658          RAISE G_EXCEPTION_STOP_VALIDATION;
3659       END IF;
3660     END IF;
3661     IF (p_ib_loc1 = OKL_API.G_MISS_CHAR OR
3662        p_ib_loc1 IS NULL) THEN
3663        -- store SQL error message on message stack
3664       OKL_API.set_message(p_app_name     => G_APP_NAME,
3665                           p_msg_name     => G_REQUIRED_VALUE,
3666                           p_token1       => G_COL_NAME_TOKEN,
3667                           p_token1_value => 'Installed Site');
3668        -- halt validation as it is a required field
3669        RAISE G_EXCEPTION_STOP_VALIDATION;
3670     END IF;
3671     IF (p_ib_loc2 = OKL_API.G_MISS_CHAR OR
3672        p_ib_loc2 IS NULL) THEN
3673        -- store SQL error message on message stack
3674       OKL_API.set_message(p_app_name     => G_APP_NAME,
3675                           p_msg_name     => G_REQUIRED_VALUE,
3676                           p_token1       => G_COL_NAME_TOKEN,
3677                           p_token1_value => 'Installed Site');
3678        -- halt validation as it is a required field
3679        RAISE G_EXCEPTION_STOP_VALIDATION;
3680     END IF;
3681     IF (p_fa_loc = OKL_API.G_MISS_NUM OR
3682        p_fa_loc IS NULL) AND lv_scs_code <> 'QUOTE'  AND
3683        --Bug# 4419339
3684        nvl(l_orig_system_source_code,okl_api.g_miss_char) <> 'OKL_LEASE_APP' AND
3685        --Bug# 5098124 : Added condition for 'OKL_QUOTE'
3686        nvl(l_orig_system_source_code,okl_api.g_miss_char) <> 'OKL_QUOTE' THEN
3687       IF (lv_deal_type <> 'LOAN' AND (p_refinance_amount IS NULL OR
3688           p_refinance_amount = OKL_API.G_MISS_NUM)) THEN
3689         -- store SQL error message on message stack
3690         OKL_API.set_message(p_app_name     => G_APP_NAME,
3691                             p_msg_name     => G_REQUIRED_VALUE,
3692                             p_token1       => G_COL_NAME_TOKEN,
3693                             p_token1_value => 'Fixed Asset Location');
3694          -- halt validation as it is a required field
3695          RAISE G_EXCEPTION_STOP_VALIDATION;
3696       END IF;
3697     END IF;
3698     RETURN(x_return_status);
3699   EXCEPTION
3700     WHEN G_EXCEPTION_STOP_VALIDATION then
3701     -- We are here since the field is required
3702     -- Notify Error
3703     x_return_status := OKL_API.G_RET_STS_ERROR;
3704     RETURN(x_return_status);
3705     WHEN OTHERS THEN
3706       OKL_API.set_message(p_app_name     => G_APP_NAME,
3707                           p_msg_name     => 'Error Message from Required values');
3708     -- store SQL error message on message stack
3709     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
3710                         p_msg_name     => G_UNEXPECTED_ERROR,
3711                         p_token1       => G_SQLCODE_TOKEN,
3712                         p_token1_value => SQLCODE,
3713                         p_token2       => G_SQLERRM_TOKEN,
3714                         p_token2_value => SQLERRM);
3715     -- notify caller of an error as UNEXPETED error
3716     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3717     RETURN(x_return_status);
3718   END check_required_values;
3719 --------------------------------------------------------------------------------------------
3720 -- Start of Commnets
3721 -- Badrinath Kuchibholta
3722 -- Procedure Name       : validate_kle_id
3723 -- Description          : validation with OKL_TXL_ASSETS_V
3724 -- Business Rules       :
3725 -- Parameters           :
3726 -- Version              : 1.0
3727 -- End of Commnets
3728 
3729   PROCEDURE validate_kle_id(p_klev_rec      IN klev_rec_type,
3730                             x_record_exists OUT NOCOPY VARCHAR2,
3731                             x_return_status OUT NOCOPY VARCHAR2) IS
3732     ln_dummy      NUMBER := 0;
3733     CURSOR c_kle_id_validate(p_kle_id OKL_TXL_ASSETS_V.KLE_ID%TYPE) IS
3734     SELECT 1
3735     --FROM dual
3736     --WHERE EXISTS (SELECT '1'
3737                   FROM OKL_TXL_ASSETS_V
3738                   WHERE kle_id = p_kle_id; --);
3739   BEGIN
3740     -- initialize return status
3741     x_return_status := OKL_API.G_RET_STS_SUCCESS;
3742     -- data is required
3743     IF (p_klev_rec.id = OKL_API.G_MISS_NUM) OR
3744        (p_klev_rec.id IS NULL) THEN
3745        -- store SQL error message on message stack
3746       OKL_API.set_message(p_app_name     => G_APP_NAME,
3747                           p_msg_name     => G_REQUIRED_VALUE,
3748                           p_token1       => G_COL_NAME_TOKEN,
3749                           p_token1_value => 'OKL_TXL_ASSETS_V.KLE_ID');
3750        -- halt validation as it is a required field
3751        RAISE G_EXCEPTION_STOP_VALIDATION;
3752     END IF;
3753     -- Enforce Foreign Key
3754     OPEN  c_kle_id_validate(p_klev_rec.id);
3755     FETCH c_kle_id_validate into ln_dummy;
3756     IF c_kle_id_validate%NOTFOUND THEN
3757        x_record_exists := null;
3758     END IF;
3759     CLOSE c_kle_id_validate;
3760     -- If there are no records then
3761     IF ln_dummy = 0 THEN
3762        x_record_exists := null;
3763     ELSE
3764        x_record_exists := 'X';
3765     END IF;
3766   EXCEPTION
3767     WHEN G_EXCEPTION_STOP_VALIDATION then
3768     -- We are here since the field is required
3769     -- Notify Error
3770     x_return_status := OKL_API.G_RET_STS_ERROR;
3771     WHEN OTHERS THEN
3772     -- store SQL error message on message stack
3773     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
3774                         p_msg_name     => G_UNEXPECTED_ERROR,
3775                         p_token1       => G_SQLCODE_TOKEN,
3776                         p_token1_value => SQLCODE,
3777                         p_token2       => G_SQLERRM_TOKEN,
3778                         p_token2_value => SQLERRM);
3779     -- If the cursor is open then it has to be closed
3780     IF c_kle_id_validate%ISOPEN THEN
3781        CLOSE c_kle_id_validate;
3782     END IF;
3783     -- notify caller of an error as UNEXPETED error
3784     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3785   END validate_kle_id;
3786 --------------------------------------------------------------------------------------------------
3787 -- Start of Commnets
3788 -- Badrinath Kuchibholta
3789 -- Procedure Name       : validate_iti_kle_id
3790 -- Description          : validation with OKL_TXL_ITM_INSTS_V
3791 -- Business Rules       :
3792 -- Parameters           :
3793 -- Version              : 1.0
3794 -- End of Commnets
3795 
3796   PROCEDURE validate_iti_kle_id(p_klev_rec      IN klev_rec_type,
3797                             x_record_exists OUT NOCOPY VARCHAR2,
3798                             x_return_status OUT NOCOPY VARCHAR2) IS
3799     ln_dummy      NUMBER := 0;
3800     CURSOR c_iti_kle_id_validate(p_kle_id OKL_TXL_ITM_INSTS_V.KLE_ID%TYPE) IS
3801     SELECT 1
3802     --FROM dual
3803     --WHERE EXISTS (SELECT '1'
3804                   FROM OKL_TXL_ITM_INSTS_V
3805                   WHERE kle_id = p_kle_id; --);
3806   BEGIN
3807     -- initialize return status
3808     x_return_status := OKL_API.G_RET_STS_SUCCESS;
3809     -- data is required
3810     IF (p_klev_rec.id = OKL_API.G_MISS_NUM) OR
3811        (p_klev_rec.id IS NULL) THEN
3812        -- store SQL error message on message stack
3813       OKL_API.set_message(p_app_name     => G_APP_NAME,
3814                           p_msg_name     => G_REQUIRED_VALUE,
3815                           p_token1       => G_COL_NAME_TOKEN,
3816                           p_token1_value => 'OKL_TXL_ITM_INSTS_V.KLE_ID');
3817        -- halt validation as it is a required field
3818        RAISE G_EXCEPTION_STOP_VALIDATION;
3819     END IF;
3820     -- Enforce Foreign Key
3821     OPEN  c_iti_kle_id_validate(p_klev_rec.id);
3822     FETCH c_iti_kle_id_validate into ln_dummy;
3823     IF c_iti_kle_id_validate%NOTFOUND THEN
3824        x_record_exists := null;
3825     END IF;
3826     CLOSE c_iti_kle_id_validate;
3827     -- If there are no records then
3828     IF ln_dummy = 0 THEN
3829        x_record_exists := null;
3830     ELSE
3831        x_record_exists := 'X';
3832     END IF;
3833   EXCEPTION
3834     WHEN G_EXCEPTION_STOP_VALIDATION then
3835     -- We are here since the field is required
3836     -- Notify Error
3837     x_return_status := OKL_API.G_RET_STS_ERROR;
3838     WHEN OTHERS THEN
3839     -- store SQL error message on message stack
3840     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
3841                         p_msg_name     => G_UNEXPECTED_ERROR,
3842                         p_token1       => G_SQLCODE_TOKEN,
3843                         p_token1_value => SQLCODE,
3844                         p_token2       => G_SQLERRM_TOKEN,
3845                         p_token2_value => SQLERRM);
3846     -- If the cursor is open then it has to be closed
3847     IF c_iti_kle_id_validate%ISOPEN THEN
3848        CLOSE c_iti_kle_id_validate;
3849     END IF;
3850     -- notify caller of an error as UNEXPETED error
3851     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3852   END validate_iti_kle_id;
3853 ----------------------------------------------------------------------------------------------------
3854 -- Start of Commnets
3855 -- Badrinath Kuchibholta
3856 -- Procedure Name       : validate_sts_code
3857 -- Description          : validation with OKC_K_LINES_V
3858 -- Business Rules       :
3859 -- Parameters           :
3860 -- Version              : 1.0
3861 -- End of Commnets
3862 
3863   PROCEDURE validate_sts_code(p_clev_rec IN clev_rec_type,
3864                               x_return_status OUT NOCOPY VARCHAR2) IS
3865 
3866     lv_sts_code       OKC_K_LINES_V.STS_CODE%TYPE;
3867     lv_lty_code       OKC_LINE_STYLES_V.lty_CODE%TYPE;
3868 
3869     CURSOR c_lty_code_validate(p_lse_id       OKC_LINE_STYLES_B.ID%TYPE) IS
3870     SELECT lse.lty_code
3871     FROM OKC_LINE_STYLES_V lse
3872     WHERE lse.id = p_lse_id;
3873 
3874     CURSOR c_sub_sub_line_sts_code(p_dnz_chr_id   OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
3875                                    p_cle_id       OKC_K_LINES_V.ID%TYPE,
3876                                    p_lty_code     OKC_LINE_STYLES_V.lty_CODE%TYPE) IS
3877     SELECT cle.sts_code
3878     FROM OKC_K_LINES_V cle
3879     WHERE cle.id in (SELECT cle.cle_id
3880                      FROM OKC_K_LINES_V cle
3881                      WHERE id in (SELECT cle.cle_id
3882                                   FROM OKC_LINE_STYLES_V lse,
3883                                        OKC_K_LINES_V cle
3884                                   WHERE dnz_chr_id = p_dnz_chr_id
3885                                   AND cle.lse_id = lse.id
3886                                   AND cle.id = p_cle_id
3887                                   AND lse.lty_code = p_lty_code));
3888 
3889     CURSOR c_sub_line_sts_code(p_dnz_chr_id   OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
3890                                p_cle_id       OKC_K_LINES_V.ID%TYPE,
3891                                p_lty_code     OKC_LINE_STYLES_V.lty_CODE%TYPE) IS
3892     SELECT cle.sts_code
3893     FROM OKC_K_LINES_V cle
3894     WHERE id in (SELECT cle.cle_id
3895                  FROM OKC_LINE_STYLES_V lse,
3896                       OKC_K_LINES_V cle
3897                  WHERE dnz_chr_id = p_dnz_chr_id
3898                  AND cle.lse_id = lse.id
3899                  AND cle.id = p_cle_id
3900                  AND lse.lty_code = p_lty_code);
3901 
3902     CURSOR c_top_line_sts_code(p_dnz_chr_id   OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
3903                                p_cle_id       OKC_K_LINES_V.ID%TYPE,
3904                                p_chr_id   OKC_K_LINES_V.CHR_ID%TYPE) IS
3905     SELECT cle.sts_code
3906     FROM OKC_K_LINES_V cle
3907     WHERE cle.dnz_chr_id = p_dnz_chr_id
3908     AND cle.cle_id is null
3909     AND cle.id = p_cle_id
3910     AND cle.chr_id = p_chr_id;
3911   BEGIN
3912     -- initialize return status
3913     x_return_status := OKL_API.G_RET_STS_SUCCESS;
3914     IF (p_clev_rec.sts_code = OKL_API.G_MISS_CHAR OR
3915        p_clev_rec.sts_code IS NULL) THEN
3916        -- store SQL error message on message stack
3917       OKL_API.set_message(p_app_name     => G_APP_NAME,
3918                           p_msg_name     => G_REQUIRED_VALUE,
3919                           p_token1       => G_COL_NAME_TOKEN,
3920                           p_token1_value => 'OKC_K_LINES_V.STS_CODE');
3921        -- halt validation as it is a required field
3922        RAISE G_EXCEPTION_STOP_VALIDATION;
3923     END IF;
3924     -- First Get the Lty _code we are going to validate
3925     OPEN c_lty_code_validate(p_clev_rec.lse_id);
3926     IF c_lty_code_validate%NOTFOUND THEN
3927          OKL_API.set_message(p_app_name     => G_APP_NAME,
3928                              p_msg_name     => G_NO_MATCHING_RECORD,
3929                              p_token1       => G_COL_NAME_TOKEN,
3930                              p_token1_value => 'OKC_LINE_STYLE_V.LTY_CODE');
3931        -- halt validation as it is a required field
3932        RAISE G_EXCEPTION_HALT_VALIDATION;
3933     END IF;
3934     FETCH c_lty_code_validate INTO lv_lty_code;
3935     CLOSE c_lty_code_validate;
3936     -- Depending on the lty code query the appropriate query
3937     IF lv_lty_code = G_ADDON_LINE_LTY_CODE OR
3938        lv_lty_code = G_IB_LINE_LTY_CODE THEN
3939        OPEN c_sub_sub_line_sts_code(p_clev_rec.dnz_chr_id,
3940                                     p_clev_rec.id,
3941                                     lv_lty_code);
3942         IF c_sub_sub_line_sts_code%NOTFOUND THEN
3943          OKL_API.set_message(p_app_name     => G_APP_NAME,
3944                              p_msg_name     => G_NO_MATCHING_RECORD,
3945                              p_token1       => G_COL_NAME_TOKEN,
3946                              p_token1_value => 'OKC_K_LINES_V.STS_CODE');
3947          -- halt validation as it is a required field
3948          RAISE G_EXCEPTION_HALT_VALIDATION;
3949        END IF;
3950        FETCH c_sub_sub_line_sts_code INTO lv_sts_code;
3951        CLOSE c_sub_sub_line_sts_code;
3952     ELSIF lv_lty_code = G_MODEL_LINE_LTY_CODE OR
3953           lv_lty_code = G_FA_LINE_LTY_CODE OR
3954           lv_lty_code = G_INST_LINE_LTY_CODE THEN
3955        OPEN c_sub_line_sts_code(p_clev_rec.dnz_chr_id,
3956                                 p_clev_rec.id,
3957                                 lv_lty_code);
3958        IF c_sub_line_sts_code%NOTFOUND THEN
3959          OKL_API.set_message(p_app_name     => G_APP_NAME,
3960                              p_msg_name     => G_NO_MATCHING_RECORD,
3961                              p_token1       => G_COL_NAME_TOKEN,
3962                              p_token1_value => 'OKC_K_LINES_V.STS_CODE');
3963          -- halt validation as it is a required field
3964          RAISE G_EXCEPTION_HALT_VALIDATION;
3965        END IF;
3966        FETCH c_sub_line_sts_code INTO lv_sts_code;
3967        CLOSE c_sub_line_sts_code;
3968     ELSIF lv_lty_code = G_FIN_LINE_LTY_CODE THEN
3969        OPEN c_top_line_sts_code(p_clev_rec.dnz_chr_id,
3970                                 p_clev_rec.id,
3971                                 p_clev_rec.chr_id);
3972        IF c_top_line_sts_code%NOTFOUND THEN
3973          OKL_API.set_message(p_app_name     => G_APP_NAME,
3974                              p_msg_name     => G_NO_MATCHING_RECORD,
3975                              p_token1       => G_COL_NAME_TOKEN,
3976                              p_token1_value => 'OKC_K_LINES_V.STS_CODE');
3977          -- halt validation as it is a required field
3978          RAISE G_EXCEPTION_HALT_VALIDATION;
3979        END IF;
3980        FETCH c_top_line_sts_code INTO lv_sts_code;
3981        CLOSE c_top_line_sts_code;
3982     END IF;
3983     -- Check the Sts code is entered only
3984     IF lv_sts_code NOT IN ('ENTERED',
3985                            'SIGNED',
3986                            'ACTIVE',
3987                            'HOLD',
3988                            'NEW',
3989                            'PENDING_APPROVAL',
3990                            'APPROVED',
3991                            'COMPLETE',
3992                            'INCOMPLETE',
3993                            'PASSED') THEN
3994       OKL_API.set_message(p_app_name     => G_APP_NAME,
3995                           p_msg_name     => G_STATUS,
3996                           p_token1       => 'STATUS',
3997                           p_token1_value => lv_sts_code);
3998       -- halt validation as it is a required field
3999       RAISE G_EXCEPTION_HALT_VALIDATION;
4000     END IF;
4001   EXCEPTION
4002     WHEN G_EXCEPTION_STOP_VALIDATION then
4003     -- We are here since the field is required
4004     -- Notify Error
4005     x_return_status := OKL_API.G_RET_STS_ERROR;
4006     WHEN G_EXCEPTION_HALT_VALIDATION then
4007     -- If the cursor is open then it has to be closed
4008     IF c_lty_code_validate%ISOPEN THEN
4009        CLOSE c_lty_code_validate;
4010     END IF;
4011     -- If the cursor is open then it has to be closed
4012     IF c_sub_sub_line_sts_code%ISOPEN THEN
4013        CLOSE c_sub_sub_line_sts_code;
4014     END IF;
4015     -- If the cursor is open then it has to be closed
4016     IF c_sub_line_sts_code%ISOPEN THEN
4017        CLOSE c_sub_line_sts_code;
4018     END IF;
4019     -- If the cursor is open then it has to be closed
4020     IF c_top_line_sts_code%ISOPEN THEN
4021        CLOSE c_top_line_sts_code;
4022     END IF;
4023     x_return_status := OKL_API.G_RET_STS_ERROR;
4024     WHEN OTHERS THEN
4025     -- store SQL error message on message stack
4026     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
4027                         p_msg_name     => G_UNEXPECTED_ERROR,
4028                         p_token1       => G_SQLCODE_TOKEN,
4029                         p_token1_value => SQLCODE,
4030                         p_token2       => G_SQLERRM_TOKEN,
4031                         p_token2_value => SQLERRM);
4032     -- If the cursor is open then it has to be closed
4033     IF c_lty_code_validate%ISOPEN THEN
4034        CLOSE c_lty_code_validate;
4035     END IF;
4036     -- If the cursor is open then it has to be closed
4037     IF c_sub_sub_line_sts_code%ISOPEN THEN
4038        CLOSE c_sub_sub_line_sts_code;
4039     END IF;
4040     -- If the cursor is open then it has to be closed
4041     IF c_sub_line_sts_code%ISOPEN THEN
4042        CLOSE c_sub_line_sts_code;
4043     END IF;
4044     -- If the cursor is open then it has to be closed
4045     IF c_top_line_sts_code%ISOPEN THEN
4046        CLOSE c_top_line_sts_code;
4047     END IF;
4048     -- notify caller of an error as UNEXPETED error
4049     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
4050   END validate_sts_code;
4051 ----------------------------------------------------------------------------------------------------------
4052   PROCEDURE Create_asset_header(
4053             p_api_version    IN  NUMBER,
4054             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
4055             x_return_status  OUT NOCOPY VARCHAR2,
4056             x_msg_count      OUT NOCOPY NUMBER,
4057             x_msg_data       OUT NOCOPY VARCHAR2,
4058             p_trxv_rec       IN  trxv_rec_type,
4059             x_trxv_rec       OUT NOCOPY trxv_rec_type) IS
4060     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_TRX_ASSET_HEADER';
4061   BEGIN
4062     x_return_status      := OKL_API.G_RET_STS_SUCCESS;
4063     -- Call start_activity to create savepoint, check compatibility
4064     -- and initialize message list
4065     x_return_status := OKL_API.START_ACTIVITY (
4066                                l_api_name
4067                                ,p_init_msg_list
4068                                ,'_PVT'
4069                                ,x_return_status);
4070     -- Check if activity started successfully
4071     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4072        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4073     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4074        RAISE OKL_API.G_EXCEPTION_ERROR;
4075     END IF;
4076     -- evaluate conditions, build outcomes for true conditions and
4077     -- put them on outcome queue
4078     OKL_TRX_ASSETS_PUB.create_trx_ass_h_def(
4079                        p_api_version    => p_api_version,
4080                        p_init_msg_list  => p_init_msg_list,
4081                        x_return_status  => x_return_status,
4082                        x_msg_count      => x_msg_count,
4083                        x_msg_data       => x_msg_data,
4084                        p_thpv_rec       => p_trxv_rec,
4085                        x_thpv_rec       => x_trxv_rec);
4086     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4087        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4088     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4089        RAISE OKL_API.G_EXCEPTION_ERROR;
4090     END IF;
4091     OKL_API.END_ACTIVITY (x_msg_count,
4092                           x_msg_data );
4093   EXCEPTION
4094     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4095     OKL_API.set_message(p_app_name     => G_APP_NAME,
4096                         p_msg_name     => G_TRX_ID);
4097     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4098                                l_api_name,
4099                                G_PKG_NAME,
4100                                'OKL_API.G_RET_STS_ERROR',
4101                                x_msg_count,
4102                                x_msg_data,
4103                                '_PVT');
4104     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4105     OKL_API.set_message(p_app_name     => G_APP_NAME,
4106                         p_msg_name     => G_TRX_ID);
4107     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4108                               l_api_name,
4109                               G_PKG_NAME,
4110                               'OKL_API.G_RET_STS_UNEXP_ERROR',
4111                               x_msg_count,
4112                               x_msg_data,
4113                               '_PVT');
4114     WHEN OTHERS THEN
4115     OKL_API.set_message(p_app_name     => G_APP_NAME,
4116                         p_msg_name     => G_TRX_ID);
4117     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4118                               l_api_name,
4119                               G_PKG_NAME,
4120                               'OTHERS',
4121                               x_msg_count,
4122                               x_msg_data,
4123                               '_PVT');
4124   END Create_asset_header;
4125 --------------------------------------------------------------------------------------------------
4126 -- Local Procedures for Update of Header record
4127 -- Incase where the error condition should be updated
4128   PROCEDURE Update_asset_header(
4129             p_api_version    IN  NUMBER,
4130             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
4131             x_return_status  OUT NOCOPY VARCHAR2,
4132             x_msg_count      OUT NOCOPY NUMBER,
4133             x_msg_data       OUT NOCOPY VARCHAR2,
4134             p_trxv_rec       IN  trxv_rec_type,
4135             x_trxv_rec       OUT NOCOPY trxv_rec_type) IS
4136     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_TRX_ASSET_HEADER';
4137   BEGIN
4138     x_return_status        := OKL_API.G_RET_STS_SUCCESS;
4139     -- Call start_activity to create savepoint, check compatibility
4140     -- and initialize message list
4141     x_return_status := OKL_API.START_ACTIVITY (
4142                                l_api_name
4143                                ,p_init_msg_list
4144                                ,'_PVT'
4145                                ,x_return_status);
4146     -- Check if activity started successfully
4147     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4148        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4149     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4150        RAISE OKL_API.G_EXCEPTION_ERROR;
4151     END IF;
4152     -- evaluate conditions, build outcomes for true conditions and
4153     -- put them on outcome queue
4154     OKL_TRX_ASSETS_PUB.update_trx_ass_h_def(
4155                        p_api_version    => p_api_version,
4156                        p_init_msg_list  => p_init_msg_list,
4157                        x_return_status  => x_return_status,
4158                        x_msg_count      => x_msg_count,
4159                        x_msg_data       => x_msg_data,
4160                        p_thpv_rec       => p_trxv_rec,
4161                        x_thpv_rec       => x_trxv_rec);
4162     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4163        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4164     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4165        RAISE OKL_API.G_EXCEPTION_ERROR;
4166     END IF;
4167     OKL_API.END_ACTIVITY (x_msg_count,
4168                           x_msg_data );
4169   EXCEPTION
4170     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4171     OKL_API.set_message(p_app_name     => G_APP_NAME,
4172                         p_msg_name     => G_TRX_ID);
4173     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4174                                l_api_name,
4175                                G_PKG_NAME,
4176                                'OKL_API.G_RET_STS_ERROR',
4177                                x_msg_count,
4178                                x_msg_data,
4179                                '_PVT');
4180     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4181     OKL_API.set_message(p_app_name     => G_APP_NAME,
4182                         p_msg_name     => G_TRX_ID);
4183     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4184                               l_api_name,
4185                               G_PKG_NAME,
4186                               'OKL_API.G_RET_STS_UNEXP_ERROR',
4187                               x_msg_count,
4188                               x_msg_data,
4189                               '_PVT');
4190     WHEN OTHERS THEN
4191     OKL_API.set_message(p_app_name     => G_APP_NAME,
4192                         p_msg_name     => G_TRX_ID);
4193     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4194                               l_api_name,
4195                               G_PKG_NAME,
4196                               'OTHERS',
4197                               x_msg_count,
4198                               x_msg_data,
4199                               '_PVT');
4200   END Update_asset_header;
4201 ------------------------------------------------------------------------------------------------------
4202   PROCEDURE Create_asset_lines(
4203             p_api_version    IN  NUMBER,
4204             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
4205             x_return_status  OUT NOCOPY VARCHAR2,
4206             x_msg_count      OUT NOCOPY NUMBER,
4207             x_msg_data       OUT NOCOPY VARCHAR2,
4208             p_talv_rec       IN  talv_rec_type,
4209             x_trxv_rec       OUT NOCOPY trxv_rec_type,
4210             x_talv_rec       OUT NOCOPY talv_rec_type) IS
4211     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_TXL_ASSET_LINE';
4212     l_trxv_rec               trxv_rec_type;
4213     l_talv_rec               talv_rec_type;
4214 
4215     --Added by dpsingh for LE uptake
4216     l_cntrct_number          OKC_K_HEADERS_B.CONTRACT_NUMBER%TYPE;
4217     l_legal_entity_id          NUMBER;
4218 
4219   BEGIN
4220     x_return_status  := OKL_API.G_RET_STS_SUCCESS;
4221     -- Call start_activity to create savepoint, check compatibility
4222     -- and initialize message list
4223     x_return_status := OKL_API.START_ACTIVITY (
4224                                l_api_name
4225                                ,p_init_msg_list
4226                                ,'_PVT'
4227                                ,x_return_status);
4228     -- Check if activity started successfully
4229     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4230        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4231     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4232        RAISE OKL_API.G_EXCEPTION_ERROR;
4233     END IF;
4234     -- Create New Header record and new Line record
4235     -- Before creating Header record
4236     -- we should make sure atleast the required record is given
4237     l_trxv_rec.tas_type            := 'CFA';
4238     x_return_status := get_try_id(p_try_name => G_TRY_NAME,
4239                                   x_try_id   => l_trxv_rec.try_id);
4240     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4241        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4242     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4243        RAISE OKL_API.G_EXCEPTION_ERROR;
4244     END IF;
4245     l_trxv_rec.tsu_code            := 'ENTERED';
4246     l_trxv_rec.date_trans_occurred := sysdate;
4247 
4248     --Added by dpsingh for LE Uptake
4249 
4250     l_legal_entity_id  := OKL_LEGAL_ENTITY_UTIL.get_khr_le_id(p_talv_rec.dnz_khr_id) ;
4251     IF  l_legal_entity_id IS NOT NULL THEN
4252        l_trxv_rec.legal_entity_id :=  l_legal_entity_id;
4253     ELSE
4254         -- get the contract number
4255        OPEN contract_num_csr(p_talv_rec.dnz_khr_id);
4256        FETCH contract_num_csr INTO l_cntrct_number;
4257        CLOSE contract_num_csr;
4258 	Okl_Api.set_message(p_app_name     => g_app_name,
4259                              p_msg_name     => 'OKL_LE_NOT_EXIST_CNTRCT',
4260 			     p_token1           =>  'CONTRACT_NUMBER',
4261 			     p_token1_value  =>  l_cntrct_number);
4262          RAISE OKL_API.G_EXCEPTION_ERROR;
4263     END IF;
4264     -- Now creating the new header record
4265     Create_asset_header(p_api_version    => p_api_version,
4266                         p_init_msg_list  => p_init_msg_list,
4267                         x_return_status  => x_return_status,
4268                         x_msg_count      => x_msg_count,
4269                         x_msg_data       => x_msg_data,
4270                         p_trxv_rec       => l_trxv_rec,
4271                         x_trxv_rec       => x_trxv_rec);
4272     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4273        l_trxv_rec                     :=  x_trxv_rec;
4274        l_trxv_rec.tsu_code            := 'ERROR';
4275        Update_asset_header(p_api_version    => p_api_version,
4276                            p_init_msg_list  => p_init_msg_list,
4277                            x_return_status  => x_return_status,
4278                            x_msg_count      => x_msg_count,
4279                            x_msg_data       => x_msg_data,
4280                            p_trxv_rec       => l_trxv_rec,
4281                            x_trxv_rec       => x_trxv_rec);
4282        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4283            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4284        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4285            RAISE OKL_API.G_EXCEPTION_ERROR;
4286        END IF;
4287        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4288     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4289        l_trxv_rec                     :=  x_trxv_rec;
4290        l_trxv_rec.tsu_code            := 'ERROR';
4291        Update_asset_header(p_api_version    => p_api_version,
4292                            p_init_msg_list  => p_init_msg_list,
4293                            x_return_status  => x_return_status,
4294                            x_msg_count      => x_msg_count,
4295                            x_msg_data       => x_msg_data,
4296                            p_trxv_rec       => l_trxv_rec,
4297                            x_trxv_rec       => x_trxv_rec);
4298        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4299           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4300        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4301           RAISE OKL_API.G_EXCEPTION_ERROR;
4302        END IF;
4303        RAISE OKL_API.G_EXCEPTION_ERROR;
4304     END IF;
4305     -- Now we are creating the new line record
4306     l_talv_rec                 := p_talv_rec;
4307     l_talv_rec.tas_id          := x_trxv_rec.id;
4308     IF (l_talv_rec.tal_type = OKL_API.G_MISS_CHAR OR
4309        l_talv_rec.tal_type IS NUll) THEN
4310        l_talv_rec.tal_type       := 'CFA';
4311     END IF;
4312     IF (l_talv_rec.line_number = OKL_API.G_MISS_NUM OR
4313        l_talv_rec.line_number IS NUll) THEN
4314        l_talv_rec.line_number       := 1;
4315     ELSE
4316        l_talv_rec.line_number       := l_talv_rec.line_number + 1;
4317     END IF;
4318     IF (l_talv_rec.description = OKL_API.G_MISS_CHAR OR
4319         l_talv_rec.description IS NUll) THEN
4320         l_talv_rec.description := 'CREATION OF FIXED ASSETS' ;
4321     END IF;
4322     -- evaluate conditions, build outcomes for true conditions and
4323     -- put them on outcome queue
4324     OKL_TXL_ASSETS_PUB.create_txl_asset_def(
4325                        p_api_version    => p_api_version,
4326                        p_init_msg_list  => p_init_msg_list,
4327                        x_return_status  => x_return_status,
4328                        x_msg_count      => x_msg_count,
4329                        x_msg_data       => x_msg_data,
4330                        p_tlpv_rec       => l_talv_rec,
4331                        x_tlpv_rec       => x_talv_rec);
4332     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4333        OKL_API.set_message(p_app_name     => G_APP_NAME,
4334                            p_msg_name     => G_KLE_ID);
4335        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4336     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4337        OKL_API.set_message(p_app_name     => G_APP_NAME,
4338                            p_msg_name     => G_KLE_ID);
4339        RAISE OKL_API.G_EXCEPTION_ERROR;
4340     END IF;
4341     OKL_API.END_ACTIVITY (x_msg_count,
4342                           x_msg_data );
4343   EXCEPTION
4344     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4345     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4346                                l_api_name,
4347                                G_PKG_NAME,
4348                                'OKL_API.G_RET_STS_ERROR',
4349                                x_msg_count,
4350                                x_msg_data,
4351                                '_PVT');
4352     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4353     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4354                               l_api_name,
4355                               G_PKG_NAME,
4356                               'OKL_API.G_RET_STS_UNEXP_ERROR',
4357                               x_msg_count,
4358                               x_msg_data,
4359                               '_PVT');
4360     WHEN OTHERS THEN
4361     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4362                               l_api_name,
4363                               G_PKG_NAME,
4364                               'OTHERS',
4365                               x_msg_count,
4366                               x_msg_data,
4367                               '_PVT');
4368   END Create_asset_lines;
4369 -------------------------------------------------------------------------------------------------------------------
4370 -- Local Procedures for update of line record
4371   PROCEDURE Update_asset_lines(
4372             p_api_version    IN  NUMBER,
4373             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
4374             x_return_status  OUT NOCOPY VARCHAR2,
4375             x_msg_count      OUT NOCOPY NUMBER,
4376             x_msg_data       OUT NOCOPY VARCHAR2,
4377             p_talv_rec       IN  talv_rec_type,
4378             x_talv_rec       OUT NOCOPY talv_rec_type) IS
4379     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_TXL_ASSET_LINE';
4380   BEGIN
4381     x_return_status   := OKL_API.G_RET_STS_SUCCESS;
4382     -- Call start_activity to create savepoint, check compatibility
4383     -- and initialize message list
4384     x_return_status := OKL_API.START_ACTIVITY (
4385                                l_api_name
4386                                ,p_init_msg_list
4387                                ,'_PVT'
4388                                ,x_return_status);
4389     -- Check if activity started successfully
4390     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4391        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4392     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4393        RAISE OKL_API.G_EXCEPTION_ERROR;
4394     END IF;
4395     -- evaluate conditions, build outcomes for true conditions and
4396     -- put them on outcome queue
4397     OKL_TXL_ASSETS_PUB.update_txl_asset_def(
4398                        p_api_version    => p_api_version,
4399                        p_init_msg_list  => p_init_msg_list,
4400                        x_return_status  => x_return_status,
4401                        x_msg_count      => x_msg_count,
4402                        x_msg_data       => x_msg_data,
4403                        p_tlpv_rec       => p_talv_rec,
4404                        x_tlpv_rec       => x_talv_rec);
4405     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4406        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4407     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4408        RAISE OKL_API.G_EXCEPTION_ERROR;
4409     END IF;
4410     OKL_API.END_ACTIVITY (x_msg_count,
4411                           x_msg_data );
4412   EXCEPTION
4413     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4414     OKL_API.set_message(p_app_name     => G_APP_NAME,
4415                         p_msg_name     => G_KLE_ID);
4416     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4417                                l_api_name,
4418                                G_PKG_NAME,
4419                                'OKL_API.G_RET_STS_ERROR',
4420                                x_msg_count,
4421                                x_msg_data,
4422                                '_PVT');
4423     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4424     OKL_API.set_message(p_app_name     => G_APP_NAME,
4425                         p_msg_name     => G_KLE_ID);
4426     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4427                               l_api_name,
4428                               G_PKG_NAME,
4429                               'OKL_API.G_RET_STS_UNEXP_ERROR',
4430                               x_msg_count,
4431                               x_msg_data,
4432                               '_PVT');
4433     WHEN OTHERS THEN
4434     OKL_API.set_message(p_app_name     => G_APP_NAME,
4435                         p_msg_name     => G_KLE_ID);
4436     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4437                               l_api_name,
4438                               G_PKG_NAME,
4439                               'OTHERS',
4440                               x_msg_count,
4441                               x_msg_data,
4442                               '_PVT');
4443   END Update_asset_lines;
4444 
4445 -------------------------------------------------------------------------------------------------
4446 -- Start of Commnets
4447 -- Badrinath Kuchibholta
4448 -- Procedure Name       : Create_asset_line_details
4449 -- Description          : Creation of asset_line_details
4450 -- Business Rules       :
4451 -- Parameters           :
4452 -- Version              :
4453 -- End of Commnets
4454   PROCEDURE Create_asset_line_details(
4455             p_api_version    IN  NUMBER,
4456             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
4457             x_return_status  OUT NOCOPY VARCHAR2,
4458             x_msg_count      OUT NOCOPY NUMBER,
4459             x_msg_data       OUT NOCOPY VARCHAR2,
4460             p_txdv_tbl       IN  txdv_tbl_type,
4461             x_txdv_tbl       OUT NOCOPY txdv_tbl_type)
4462   IS
4463     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_TXD_ASSET_DTL';
4464     i                        NUMBER := 0;
4465     l_txdv_tbl               txdv_tbl_type := p_txdv_tbl;
4466   BEGIN
4467     x_return_status  := OKL_API.G_RET_STS_SUCCESS;
4468     -- Call start_activity to create savepoint, check compatibility
4469     -- and initialize message list
4470     x_return_status := OKL_API.START_ACTIVITY (
4471                                l_api_name
4472                                ,p_init_msg_list
4473                                ,'_PVT'
4474                                ,x_return_status);
4475     -- Check if activity started successfully
4476     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4477        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4478     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4479        RAISE OKL_API.G_EXCEPTION_ERROR;
4480     END IF;
4481     IF (p_txdv_tbl.COUNT > 0) THEN
4482       i := p_txdv_tbl.FIRST;
4483       LOOP
4484         Validate_asset_tax_book(x_return_status => x_return_status,
4485                                 p_asset_number  => l_txdv_tbl(i).asset_number,
4486                                 p_tax_book      => l_txdv_tbl(i).tax_book,
4487                                 p_tal_id        => l_txdv_tbl(i).tal_id);
4488         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4489           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
4490         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4491           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
4492         END IF;
4493         OKL_TXD_ASSETS_PUB.create_txd_asset_def(
4494                            p_api_version    => p_api_version,
4495                            p_init_msg_list  => p_init_msg_list,
4496                            x_return_status  => x_return_status,
4497                            x_msg_count      => x_msg_count,
4498                            x_msg_data       => x_msg_data,
4499                            p_adpv_rec       => p_txdv_tbl(i),
4500                            x_adpv_rec       => x_txdv_tbl(i));
4501         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4502           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
4503         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4504           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
4505         END IF;
4506         EXIT WHEN (i = p_txdv_tbl.LAST);
4507         i := p_txdv_tbl.NEXT(i);
4508       END LOOP;
4509       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4510         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4511       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4512         RAISE OKL_API.G_EXCEPTION_ERROR;
4513       END IF;
4514     END IF;
4515     OKL_API.END_ACTIVITY (x_msg_count,
4516                           x_msg_data );
4517   EXCEPTION
4518     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4519       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4520                                  l_api_name,
4521                                  G_PKG_NAME,
4522                                  'OKL_API.G_RET_STS_ERROR',
4523                                  x_msg_count,
4524                                  x_msg_data,
4525                                  '_PVT');
4526     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4527       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4528                                 l_api_name,
4529                                 G_PKG_NAME,
4530                                 'OKL_API.G_RET_STS_UNEXP_ERROR',
4531                                  x_msg_count,
4532                                  x_msg_data,
4533                                  '_PVT');
4534     WHEN OTHERS THEN
4535       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4536                                 l_api_name,
4537                                 G_PKG_NAME,
4538                                 'OTHERS',
4539                                 x_msg_count,
4540                                 x_msg_data,
4541                                 '_PVT');
4542   END Create_asset_line_details;
4543 
4544 -------------------------------------------------------------------------------------------------
4545 -- Start of Commnets
4546 -- Badrinath Kuchibholta
4547 -- Procedure Name       : update_asset_line_details
4548 -- Description          : Updating of asset_line_details
4549 -- Business Rules       :
4550 -- Parameters           :
4551 -- Version              :
4552 -- End of Commnets
4553   PROCEDURE update_asset_line_details(
4554             p_api_version    IN  NUMBER,
4555             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
4556             x_return_status  OUT NOCOPY VARCHAR2,
4557             x_msg_count      OUT NOCOPY NUMBER,
4558             x_msg_data       OUT NOCOPY VARCHAR2,
4559             p_txdv_tbl       IN  txdv_tbl_type,
4560             x_txdv_tbl       OUT NOCOPY txdv_tbl_type)
4561   IS
4562     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_TXD_ASSET_DTL';
4563     i                        NUMBER := 0;
4564     l_txdv_tbl               txdv_tbl_type := p_txdv_tbl;
4565   BEGIN
4566     x_return_status  := OKL_API.G_RET_STS_SUCCESS;
4567     -- Call start_activity to create savepoint, check compatibility
4568     -- and initialize message list
4569     x_return_status := OKL_API.START_ACTIVITY (
4570                                l_api_name
4571                                ,p_init_msg_list
4572                                ,'_PVT'
4573                                ,x_return_status);
4574     -- Check if activity started successfully
4575     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4576        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4577     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4578        RAISE OKL_API.G_EXCEPTION_ERROR;
4579     END IF;
4580     IF (p_txdv_tbl.COUNT > 0) THEN
4581       i := p_txdv_tbl.FIRST;
4582       LOOP
4583         Validate_asset_tax_book(x_return_status => x_return_status,
4584                                 p_asset_number  => l_txdv_tbl(i).asset_number,
4585                                 p_tax_book      => l_txdv_tbl(i).tax_book,
4586                                 p_tal_id        => l_txdv_tbl(i).tal_id);
4587         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4588           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
4589         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4590           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
4591         END IF;
4592         OKL_TXD_ASSETS_PUB.update_txd_asset_def(
4593                            p_api_version    => p_api_version,
4594                            p_init_msg_list  => p_init_msg_list,
4595                            x_return_status  => x_return_status,
4596                            x_msg_count      => x_msg_count,
4597                            x_msg_data       => x_msg_data,
4598                            p_adpv_rec       => p_txdv_tbl(i),
4599                            x_adpv_rec       => x_txdv_tbl(i));
4600         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4601           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
4602         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4603           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
4604         END IF;
4605         EXIT WHEN (i = p_txdv_tbl.LAST);
4606         i := p_txdv_tbl.NEXT(i);
4607       END LOOP;
4608       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4609         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4610       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4611         RAISE OKL_API.G_EXCEPTION_ERROR;
4612       END IF;
4613     END IF;
4614     OKL_API.END_ACTIVITY (x_msg_count,
4615                           x_msg_data );
4616   EXCEPTION
4617     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4618       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4619                                  l_api_name,
4620                                  G_PKG_NAME,
4621                                  'OKL_API.G_RET_STS_ERROR',
4622                                  x_msg_count,
4623                                  x_msg_data,
4624                                  '_PVT');
4625     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4626       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4627                                 l_api_name,
4628                                 G_PKG_NAME,
4629                                 'OKL_API.G_RET_STS_UNEXP_ERROR',
4630                                  x_msg_count,
4631                                  x_msg_data,
4632                                  '_PVT');
4633     WHEN OTHERS THEN
4634       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4635                                 l_api_name,
4636                                 G_PKG_NAME,
4637                                 'OTHERS',
4638                                 x_msg_count,
4639                                 x_msg_data,
4640                                 '_PVT');
4641   END update_asset_line_details;
4642 
4643 -------------------------------------------------------------------------------------------------
4644 -- Start of Commnets
4645 -- Badrinath Kuchibholta
4646 -- Procedure Name       : update_asset_line_details
4647 -- Description          : Updating of asset_line_details
4648 -- Business Rules       : To keep the Asset Number unique all through
4649 -- Parameters           :
4650 -- Version              :
4651 -- End of Commnets
4652   PROCEDURE update_asset_line_details(
4653             p_api_version    IN  NUMBER,
4654             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
4655             x_return_status  OUT NOCOPY VARCHAR2,
4656             x_msg_count      OUT NOCOPY NUMBER,
4657             x_msg_data       OUT NOCOPY VARCHAR2,
4658             p_asset_number   IN  OKL_TXL_ASSETS_B.ASSET_NUMBER%TYPE,
4659             p_original_cost  IN  OKL_TXL_ASSETS_B.ORIGINAL_COST%TYPE,
4660             p_tal_id         IN  OKL_TXL_ASSETS_B.ID%TYPE)
4661   IS
4662     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_TXD_ASSET_DTL';
4663     i                        NUMBER := 0;
4664     l_txdv_tbl               txdv_tbl_type;
4665     lx_txdv_tbl               txdv_tbl_type;
4666     lv_to_update             VARCHAR2(3);
4667   BEGIN
4668     x_return_status  := OKL_API.G_RET_STS_SUCCESS;
4669     -- Call start_activity to create savepoint, check compatibility
4670     -- and initialize message list
4671     x_return_status := OKL_API.START_ACTIVITY (
4672                                l_api_name
4673                                ,p_init_msg_list
4674                                ,'_PVT'
4675                                ,x_return_status);
4676     -- Check if activity started successfully
4677     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4678        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4679     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4680        RAISE OKL_API.G_EXCEPTION_ERROR;
4681     END IF;
4682     x_return_status := get_txdv_tbl(p_tal_id        => p_tal_id,
4683                                     p_asset_number  => p_asset_number,
4684                                     p_original_cost => p_original_cost,
4685                                     x_to_update     => lv_to_update,
4686                                     x_txdv_tbl      => l_txdv_tbl);
4687     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4688        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4689     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4690        RAISE OKL_API.G_EXCEPTION_ERROR;
4691     END IF;
4692     IF lv_to_update = 'Y' THEN
4693         OKL_TXD_ASSETS_PUB.update_txd_asset_def(
4694                            p_api_version    => p_api_version,
4695                            p_init_msg_list  => p_init_msg_list,
4696                            x_return_status  => x_return_status,
4697                            x_msg_count      => x_msg_count,
4698                            x_msg_data       => x_msg_data,
4699                            p_adpv_tbl       => l_txdv_tbl,
4700                            x_adpv_tbl       => lx_txdv_tbl);
4701         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4702           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4703         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4704           RAISE OKL_API.G_EXCEPTION_ERROR;
4705         END IF;
4706     END IF;
4707     OKL_API.END_ACTIVITY (x_msg_count,
4708                           x_msg_data );
4709   EXCEPTION
4710     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4711       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4712                                  l_api_name,
4713                                  G_PKG_NAME,
4714                                  'OKL_API.G_RET_STS_ERROR',
4715                                  x_msg_count,
4716                                  x_msg_data,
4717                                  '_PVT');
4718     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4719       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4720                                 l_api_name,
4721                                 G_PKG_NAME,
4722                                 'OKL_API.G_RET_STS_UNEXP_ERROR',
4723                                  x_msg_count,
4724                                  x_msg_data,
4725                                  '_PVT');
4726     WHEN OTHERS THEN
4727       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4728                                 l_api_name,
4729                                 G_PKG_NAME,
4730                                 'OTHERS',
4731                                 x_msg_count,
4732                                 x_msg_data,
4733                                 '_PVT');
4734   END update_asset_line_details;
4735 
4736   -- 5530990
4737   PROCEDURE Update_Asset_Cost(
4738             p_api_version    IN  NUMBER,
4739             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
4740             x_return_status  OUT NOCOPY VARCHAR2,
4741             x_msg_count      OUT NOCOPY NUMBER,
4742             x_msg_data       OUT NOCOPY VARCHAR2,
4743             p_cleb_fin_id    IN  NUMBER,
4744             p_chr_id         IN  NUMBER,
4745             p_oec            IN  NUMBER) IS
4746 
4747     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_ASSET_COST';
4748 
4749     CURSOR l_chk_rbk_csr(p_chr_id IN NUMBER) is
4750     SELECT '!'
4751     FROM   okc_k_headers_b CHR,
4752            okl_trx_contracts ktrx
4753     WHERE  ktrx.khr_id_new = chr.id
4754     AND    ktrx.tsu_code = 'ENTERED'
4755     AND    ktrx.rbr_code is NOT NULL
4756     AND    ktrx.tcn_type = 'TRBK'
4757     --rkuttiya added for 12.1.1 Multi GAAP
4758     AND    ktrx.representation_type = 'PRIMARY'
4759     --
4760     AND    chr.id = p_chr_id
4761     AND    chr.orig_system_source_code = 'OKL_REBOOK';
4762 
4763     l_rbk_khr      VARCHAR2(1) DEFAULT '?';
4764 
4765     CURSOR l_talv_csr(p_cleb_fin_id IN NUMBER,
4766                       p_chr_id      IN NUMBER) IS
4767     SELECT tal.id,
4768            tal.asset_number
4769     FROM okl_txl_assets_b tal,
4770          okc_k_lines_b cleb_fa
4771     WHERE cleb_fa.cle_id = p_cleb_fin_id
4772     AND   cleb_fa.dnz_chr_id = p_chr_id
4773     AND   cleb_fa.lse_id = 42
4774     AND   tal.kle_id = cleb_fa.id;
4775 
4776     l_tal_id       OKL_TXL_ASSETS_B.id%TYPE;
4777     l_asset_number OKL_TXL_ASSETS_B.asset_number%TYPE;
4778 
4779     l_talv_rec talv_rec_type;
4780     x_talv_rec talv_rec_type;
4781 
4782   BEGIN
4783     x_return_status   := OKL_API.G_RET_STS_SUCCESS;
4784     -- Call start_activity to create savepoint, check compatibility
4785     -- and initialize message list
4786     x_return_status := OKL_API.START_ACTIVITY (
4787                                l_api_name
4788                                ,p_init_msg_list
4789                                ,'_PVT'
4790                                ,x_return_status);
4791     -- Check if activity started successfully
4792     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4793        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4794     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4795        RAISE OKL_API.G_EXCEPTION_ERROR;
4796     END IF;
4797 
4798     l_rbk_khr := '?';
4799     OPEN l_chk_rbk_csr (p_chr_id => p_chr_id);
4800     FETCH l_chk_rbk_csr INTO l_rbk_khr;
4801     CLOSE l_chk_rbk_csr;
4802 
4803     IF l_rbk_khr = '!' Then
4804 
4805       OKL_ACTIVATE_ASSET_PVT.recalculate_asset_cost
4806         (p_api_version   => p_api_version,
4807          p_init_msg_list => p_init_msg_list,
4808          x_return_status => x_return_status,
4809          x_msg_count     => x_msg_count,
4810          x_msg_data      => x_msg_data,
4811          p_chr_id        => p_chr_id,
4812          p_cle_id        => p_cleb_fin_id
4813         );
4814 
4815       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4816         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4817       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4818         RAISE OKL_API.G_EXCEPTION_ERROR;
4819       END IF;
4820 
4821     ELSE
4822 
4823       OPEN l_talv_csr(p_cleb_fin_id => p_cleb_fin_id,
4824                       p_chr_id      => p_chr_id);
4825       FETCH l_talv_csr INTO l_tal_id, l_asset_number;
4826       CLOSE l_talv_csr;
4827 
4828       IF l_tal_id IS NOT NULL THEN
4829 
4830         l_talv_rec.id := l_tal_id;
4831         l_talv_rec.original_cost := p_oec;
4832         l_talv_rec.depreciation_cost := p_oec;
4833 
4834         update_asset_lines(p_api_version    => p_api_version,
4835                            p_init_msg_list  => p_init_msg_list,
4836                            x_return_status  => x_return_status,
4837                            x_msg_count      => x_msg_count,
4838                            x_msg_data       => x_msg_data,
4839                            p_talv_rec       => l_talv_rec,
4840                            x_talv_rec       => x_talv_rec);
4841         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4842           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4843         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4844           RAISE OKL_API.G_EXCEPTION_ERROR;
4845         END IF;
4846 
4847         update_asset_line_details(p_api_version   => p_api_version,
4848                                   p_init_msg_list => p_init_msg_list,
4849                                   x_return_status => x_return_status,
4850                                   x_msg_count     => x_msg_count,
4851                                   x_msg_data      => x_msg_data,
4852                                   p_asset_number  => l_asset_number,
4853                                   p_original_cost => l_talv_rec.original_cost,
4854                                   p_tal_id        => l_talv_rec.id);
4855         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4856           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4857         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4858           RAISE OKL_API.G_EXCEPTION_ERROR;
4859         END IF;
4860 
4861       END IF;
4862 
4863     END IF;
4864 
4865     OKL_API.END_ACTIVITY (x_msg_count,
4866                           x_msg_data);
4867   EXCEPTION
4868     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4869       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4870                                l_api_name,
4871                                G_PKG_NAME,
4872                                'OKL_API.G_RET_STS_ERROR',
4873                                x_msg_count,
4874                                x_msg_data,
4875                                '_PVT');
4876     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4877       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4878                               l_api_name,
4879                               G_PKG_NAME,
4880                               'OKL_API.G_RET_STS_UNEXP_ERROR',
4881                               x_msg_count,
4882                               x_msg_data,
4883                               '_PVT');
4884     WHEN OTHERS THEN
4885       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4886                               l_api_name,
4887                               G_PKG_NAME,
4888                               'OTHERS',
4889                               x_msg_count,
4890                               x_msg_data,
4891                               '_PVT');
4892 END Update_Asset_Cost;
4893 --Bug# 5530990
4894 
4895 --------------------------------------------------------------------------------------------------------------
4896 -- Local Procedures for creation of Txl Item Instance record
4897   PROCEDURE create_txl_itm_insts(
4898     p_api_version                  IN NUMBER,
4899     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4900     x_return_status                OUT NOCOPY VARCHAR2,
4901     x_msg_count                    OUT NOCOPY NUMBER,
4902     x_msg_data                     OUT NOCOPY VARCHAR2,
4903     p_itiv_rec                     IN itiv_rec_type,
4904     x_trxv_rec                     OUT NOCOPY trxv_rec_type,
4905     x_itiv_rec                     OUT NOCOPY itiv_rec_type) IS
4906 
4907     l_trxv_rec               trxv_rec_type;
4908     l_itiv_rec               itiv_rec_type;
4909     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_TXL_ITM_INSTS';
4910 
4911     --Added by dpsingh for LE uptake
4912     CURSOR get_chr_id_csr(p_kle_id1 NUMBER) IS
4913     SELECT  DNZ_CHR_ID
4914     FROM OKC_K_LINES_B
4915     WHERE  ID = p_kle_id1;
4916 
4917     l_chr_id NUMBER;
4918     l_cntrct_number          OKC_K_HEADERS_B.CONTRACT_NUMBER%TYPE;
4919     l_legal_entity_id          NUMBER;
4920 
4921   BEGIN
4922     x_return_status   := OKL_API.G_RET_STS_SUCCESS;
4923     -- Call start_activity to create savepoint, check compatibility
4924     -- and initialize message list
4925     x_return_status := OKL_API.START_ACTIVITY (
4926                                l_api_name
4927                                ,p_init_msg_list
4928                                ,'_PVT'
4929                                ,x_return_status);
4930     -- Check if activity started successfully
4931     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4932        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4933     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4934        RAISE OKL_API.G_EXCEPTION_ERROR;
4935     END IF;
4936     -- Create New Header record and new Line record
4937     -- Before creating Header record
4938     -- we should make sure atleast the required record is given
4939     l_trxv_rec.tas_type            := 'CFA';
4940     x_return_status := get_try_id(p_try_name => G_TRY_NAME,
4941                                   x_try_id   => l_trxv_rec.try_id);
4942     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4943        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4944     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4945        RAISE OKL_API.G_EXCEPTION_ERROR;
4946     END IF;
4947     l_trxv_rec.tsu_code            := 'ENTERED';
4948     l_trxv_rec.date_trans_occurred := sysdate;
4949 
4950     --Added by dpsingh for LE Uptake
4951     OPEN get_chr_id_csr(p_itiv_rec.kle_id);
4952     FETCH get_chr_id_csr INTO l_chr_id;
4953     CLOSE get_chr_id_csr;
4954 
4955     l_legal_entity_id  := OKL_LEGAL_ENTITY_UTIL.get_khr_le_id( l_chr_id) ;
4956     IF  l_legal_entity_id IS NOT NULL THEN
4957        l_trxv_rec.legal_entity_id :=  l_legal_entity_id;
4958     ELSE
4959         -- get the contract number
4960        OPEN contract_num_csr(l_chr_id);
4961        FETCH contract_num_csr INTO l_cntrct_number;
4962        CLOSE contract_num_csr;
4963 	Okl_Api.set_message(p_app_name     => g_app_name,
4964                              p_msg_name     => 'OKL_LE_NOT_EXIST_CNTRCT',
4965 			     p_token1           =>  'CONTRACT_NUMBER',
4966 			     p_token1_value  =>  l_cntrct_number);
4967          RAISE OKL_API.G_EXCEPTION_ERROR;
4968     END IF;
4969     -- Now creating the new header record
4970     Create_asset_header(p_api_version    => p_api_version,
4971                         p_init_msg_list  => p_init_msg_list,
4972                         x_return_status  => x_return_status,
4973                         x_msg_count      => x_msg_count,
4974                         x_msg_data       => x_msg_data,
4975                         p_trxv_rec       => l_trxv_rec,
4976                         x_trxv_rec       => x_trxv_rec);
4977     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4978        l_trxv_rec                     :=  x_trxv_rec;
4979        l_trxv_rec.tsu_code            := 'ERROR';
4980        Update_asset_header(p_api_version    => p_api_version,
4981                            p_init_msg_list  => p_init_msg_list,
4982                            x_return_status  => x_return_status,
4983                            x_msg_count      => x_msg_count,
4984                            x_msg_data       => x_msg_data,
4985                            p_trxv_rec       => l_trxv_rec,
4986                            x_trxv_rec       => x_trxv_rec);
4987        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4988            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4989        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4990            RAISE OKL_API.G_EXCEPTION_ERROR;
4991        END IF;
4992        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4993     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4994        l_trxv_rec                     :=  x_trxv_rec;
4995        l_trxv_rec.tsu_code            := 'ERROR';
4996        Update_asset_header(p_api_version    => p_api_version,
4997                            p_init_msg_list  => p_init_msg_list,
4998                            x_return_status  => x_return_status,
4999                            x_msg_count      => x_msg_count,
5000                            x_msg_data       => x_msg_data,
5001                            p_trxv_rec       => l_trxv_rec,
5002                            x_trxv_rec       => x_trxv_rec);
5003        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5004           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5005        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5006           RAISE OKL_API.G_EXCEPTION_ERROR;
5007        END IF;
5008        RAISE OKL_API.G_EXCEPTION_ERROR;
5009     END IF;
5010     -- Now we are creating the new line record
5011     l_itiv_rec                 := p_itiv_rec;
5012     l_itiv_rec.tas_id          := x_trxv_rec.id;
5013     IF (l_itiv_rec.tal_type = OKL_API.G_MISS_CHAR OR
5014        l_itiv_rec.tal_type IS NUll) THEN
5015        l_itiv_rec.tal_type       := 'CFA';
5016     END IF;
5017     -- evaluate conditions, build outcomes for true conditions and
5018     -- put them on outcome queue
5019     OKL_TXL_ITM_INSTS_PUB.create_txl_itm_insts(
5020                        p_api_version    => p_api_version,
5021                        p_init_msg_list  => p_init_msg_list,
5022                        x_return_status  => x_return_status,
5023                        x_msg_count      => x_msg_count,
5024                        x_msg_data       => x_msg_data,
5025                        p_iipv_rec       => l_itiv_rec,
5026                        x_iipv_rec       => x_itiv_rec);
5027     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5028       OKL_API.set_message(p_app_name     => G_APP_NAME,
5029                           p_msg_name     => G_ITI_ID);
5030        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5031     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5032       OKL_API.set_message(p_app_name     => G_APP_NAME,
5033                           p_msg_name     => G_ITI_ID);
5034        RAISE OKL_API.G_EXCEPTION_ERROR;
5035     END IF;
5036     OKL_API.END_ACTIVITY (x_msg_count,
5037                           x_msg_data );
5038   EXCEPTION
5039     WHEN OKL_API.G_EXCEPTION_ERROR THEN
5040     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5041                                l_api_name,
5042                                G_PKG_NAME,
5043                                'OKL_API.G_RET_STS_ERROR',
5044                                x_msg_count,
5045                                x_msg_data,
5046                                '_PVT');
5047     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5048     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5049                               l_api_name,
5050                               G_PKG_NAME,
5051                               'OKL_API.G_RET_STS_UNEXP_ERROR',
5052                               x_msg_count,
5053                               x_msg_data,
5054                               '_PVT');
5055     WHEN OTHERS THEN
5056       OKL_API.set_message(p_app_name     => G_APP_NAME,
5057                           p_msg_name     => G_ITI_ID);
5058     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5059                               l_api_name,
5060                               G_PKG_NAME,
5061                               'OTHERS',
5062                               x_msg_count,
5063                               x_msg_data,
5064                               '_PVT');
5065   END create_txl_itm_insts;
5066 --------------------------------------------------------------------------------------------------------------
5067 -- Local Procedures for update of Txl Item Instance record
5068   PROCEDURE update_txl_itm_insts(
5069     p_api_version                  IN NUMBER,
5070     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
5071     x_return_status                OUT NOCOPY VARCHAR2,
5072     x_msg_count                    OUT NOCOPY NUMBER,
5073     x_msg_data                     OUT NOCOPY VARCHAR2,
5074     p_itiv_rec                     IN itiv_rec_type,
5075     x_itiv_rec                     OUT NOCOPY itiv_rec_type) IS
5076 
5077     l_api_name      CONSTANT VARCHAR2(30) := 'UPD_TXL_ITM_INSTS';
5078   BEGIN
5079     x_return_status     := OKL_API.G_RET_STS_SUCCESS;
5080     -- Call start_activity to create savepoint, check compatibility
5081     -- and initialize message list
5082     x_return_status := OKL_API.START_ACTIVITY (
5083                                l_api_name
5084                                ,p_init_msg_list
5085                                ,'_PVT'
5086                                ,x_return_status);
5087     -- Check if activity started successfully
5088     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5089        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5090     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5091        RAISE OKL_API.G_EXCEPTION_ERROR;
5092     END IF;
5093     -- evaluate conditions, build outcomes for true conditions and
5094     -- put them on outcome queue
5095     OKL_TXL_ITM_INSTS_PUB.update_txl_itm_insts(p_api_version    => p_api_version,
5096                                                p_init_msg_list  => p_init_msg_list,
5097                                                x_return_status  => x_return_status,
5098                                                x_msg_count      => x_msg_count,
5099                                                x_msg_data       => x_msg_data,
5100                                                p_iipv_rec       => p_itiv_rec,
5101                                                x_iipv_rec       => x_itiv_rec);
5102     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5103        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5104     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5105        RAISE OKL_API.G_EXCEPTION_ERROR;
5106     END IF;
5107     OKL_API.END_ACTIVITY (x_msg_count,
5108                           x_msg_data );
5109   EXCEPTION
5110     WHEN OKL_API.G_EXCEPTION_ERROR THEN
5111       OKL_API.set_message(p_app_name     => G_APP_NAME,
5112                           p_msg_name     => G_ITI_ID);
5113     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5114                                l_api_name,
5115                                G_PKG_NAME,
5116                                'OKL_API.G_RET_STS_ERROR',
5117                                x_msg_count,
5118                                x_msg_data,
5119                                '_PVT');
5120     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5121       OKL_API.set_message(p_app_name     => G_APP_NAME,
5122                           p_msg_name     => G_ITI_ID);
5123     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5124                               l_api_name,
5125                               G_PKG_NAME,
5126                               'OKL_API.G_RET_STS_UNEXP_ERROR',
5127                               x_msg_count,
5128                               x_msg_data,
5129                               '_PVT');
5130     WHEN OTHERS THEN
5131       OKL_API.set_message(p_app_name     => G_APP_NAME,
5132                           p_msg_name     => G_ITI_ID);
5133     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5134                               l_api_name,
5135                               G_PKG_NAME,
5136                               'OTHERS',
5137                               x_msg_count,
5138                               x_msg_data,
5139                               '_PVT');
5140   END update_txl_itm_insts;
5141 ---------------------------------------------------------------------------------------------
5142   PROCEDURE Create_financial_asset_line(
5143             p_api_version    IN  NUMBER,
5144             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
5145             x_return_status  OUT NOCOPY VARCHAR2,
5146             x_msg_count      OUT NOCOPY NUMBER,
5147             x_msg_data       OUT NOCOPY VARCHAR2,
5148             p_clev_rec       IN  clev_rec_type,
5149             p_klev_rec       IN  klev_rec_type,
5150             x_clev_rec       OUT NOCOPY clev_rec_type,
5151             x_klev_rec       OUT NOCOPY klev_rec_type) IS
5152     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_FIN_AST_LINES';
5153     l_clev_rec               clev_rec_type;
5154   BEGIN
5155     x_return_status  := OKL_API.G_RET_STS_SUCCESS;
5156     -- Call start_activity to create savepoint, check compatibility
5157     -- and initialize message list
5158     x_return_status := OKL_API.START_ACTIVITY (
5159                                l_api_name
5160                                ,p_init_msg_list
5161                                ,'_PVT'
5162                                ,x_return_status);
5163     -- Check if activity started successfully
5164     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5165        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5166     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5167        RAISE OKL_API.G_EXCEPTION_ERROR;
5168     END IF;
5169     l_clev_rec := p_clev_rec;
5170 -- # 4334903 use new function default_contract_line_values
5171 /*
5172     IF (p_clev_rec.sts_code IS NULL OR
5173        p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
5174       x_return_status := get_sts_code(p_dnz_chr_id => p_clev_rec.dnz_chr_id,
5175                                       p_cle_id     => null,
5176                                       x_sts_code   => l_clev_rec.sts_code);
5177       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5178          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5179       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5180          RAISE OKL_API.G_EXCEPTION_ERROR;
5181       END IF;
5182     END IF;
5183     IF l_clev_rec.sts_code NOT IN ('ENTERED',
5184                                    'SIGNED',
5185                                    'ACTIVE',
5186                                    'HOLD',
5187                                    'NEW',
5188                                    'PENDING_APPROVAL',
5189                                    'APPROVED',
5190                                    'COMPLETE',
5191                                    'INCOMPLETE',
5192                                    'PASSED') THEN
5193       OKL_API.set_message(p_app_name     => G_APP_NAME,
5194                           p_msg_name     => G_STATUS,
5195                           p_token1       => 'STATUS',
5196                           p_token1_value => l_clev_rec.sts_code);
5197        RAISE OKL_API.G_EXCEPTION_ERROR;
5198     END IF;
5199     IF (p_clev_rec.end_date IS NULL OR
5200        p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
5201       x_return_status := get_end_date(p_dnz_chr_id => p_clev_rec.dnz_chr_id,
5202                                       p_cle_id     => null,
5203                                       x_end_date   => l_clev_rec.end_date);
5204       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5205          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5206       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5207          RAISE OKL_API.G_EXCEPTION_ERROR;
5208       END IF;
5209     END IF;
5210     IF (p_clev_rec.start_date IS NULL OR
5211        p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
5212       x_return_status := get_start_date(p_dnz_chr_id => p_clev_rec.dnz_chr_id,
5213                                         p_cle_id     => null,
5214                                         x_start_date => l_clev_rec.start_date);
5215       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5216          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5217       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5218          RAISE OKL_API.G_EXCEPTION_ERROR;
5219       END IF;
5220     END IF;
5221     IF (p_clev_rec.currency_code IS NULL OR
5222        p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
5223       x_return_status := get_currency_code(p_dnz_chr_id    => p_clev_rec.dnz_chr_id,
5224                                            p_cle_id        => null,
5225                                            x_currency_code => l_clev_rec.currency_code);
5226       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5227          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5228       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5229          RAISE OKL_API.G_EXCEPTION_ERROR;
5230       END IF;
5231     END IF;
5232 */
5233     IF ((p_clev_rec.sts_code IS NULL OR
5234          p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) OR
5235         (p_clev_rec.end_date IS NULL OR
5236          p_clev_rec.end_date = OKL_API.G_MISS_DATE) OR
5237         (p_clev_rec.start_date IS NULL OR
5238          p_clev_rec.start_date = OKL_API.G_MISS_DATE) OR
5239         (p_clev_rec.currency_code IS NULL OR
5240          p_clev_rec.currency_code = OKL_API.G_MISS_CHAR)
5241        ) THEN
5242        x_return_status := default_contract_line_values(p_dnz_chr_id    => p_clev_rec.dnz_chr_id,
5243                                                        p_cle_id        => null,
5244                                                        p_clev_rec => l_clev_rec);
5245       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5246          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5247       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5248          RAISE OKL_API.G_EXCEPTION_ERROR;
5249       END IF;
5250     END IF;
5251     IF l_clev_rec.sts_code NOT IN ('ENTERED',
5252                                    'SIGNED',
5253                                    'ACTIVE',
5254                                    'HOLD',
5255                                    'NEW',
5256                                    'PENDING_APPROVAL',
5257                                    'APPROVED',
5258                                    'COMPLETE',
5259                                    'INCOMPLETE',
5260                                    'PASSED') THEN
5261       OKL_API.set_message(p_app_name     => G_APP_NAME,
5262                           p_msg_name     => G_STATUS,
5263                           p_token1       => 'STATUS',
5264                           p_token1_value => l_clev_rec.sts_code);
5265        RAISE OKL_API.G_EXCEPTION_ERROR;
5266     END IF;
5267 
5268     OKL_CONTRACT_PUB.create_contract_line(p_api_version   => p_api_version,
5269                                           p_init_msg_list => p_init_msg_list,
5270                                           x_return_status => x_return_status,
5271                                           x_msg_count     => x_msg_count,
5272                                           x_msg_data      => x_msg_data,
5273                                           p_clev_rec      => l_clev_rec,
5274                                           p_klev_rec      => p_klev_rec,
5275                                           x_clev_rec      => x_clev_rec,
5276                                           x_klev_rec      => x_klev_rec);
5277     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5278        OKL_API.set_message(p_app_name     => G_APP_NAME,
5279                            p_msg_name     => G_CREATION_FIN_LINE);
5280        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5281     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5282        OKL_API.set_message(p_app_name     => G_APP_NAME,
5283                            p_msg_name     => G_CREATION_FIN_LINE);
5284        RAISE OKL_API.G_EXCEPTION_ERROR;
5285     END IF;
5286     OKL_API.END_ACTIVITY (x_msg_count,
5287                           x_msg_data );
5288   EXCEPTION
5289     WHEN OKL_API.G_EXCEPTION_ERROR THEN
5290     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5291                                l_api_name,
5292                                G_PKG_NAME,
5293                                'OKL_API.G_RET_STS_ERROR',
5294                                x_msg_count,
5295                                x_msg_data,
5296                                '_PVT');
5297     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5298     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5299                               l_api_name,
5300                               G_PKG_NAME,
5301                               'OKL_API.G_RET_STS_UNEXP_ERROR',
5302                               x_msg_count,
5303                               x_msg_data,
5304                               '_PVT');
5305     WHEN OTHERS THEN
5306     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5307                               l_api_name,
5308                               G_PKG_NAME,
5309                               'OTHERS',
5310                               x_msg_count,
5311                               x_msg_data,
5312                               '_PVT');
5313   END Create_financial_asset_line;
5314 ---------------------------------------------------------------------------------------------
5315   PROCEDURE update_financial_asset_line(
5316             p_api_version    IN  NUMBER,
5317             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
5318             x_return_status  OUT NOCOPY VARCHAR2,
5319             x_msg_count      OUT NOCOPY NUMBER,
5320             x_msg_data       OUT NOCOPY VARCHAR2,
5321             p_clev_rec       IN  clev_rec_type,
5322             p_klev_rec       IN  klev_rec_type,
5323             x_clev_rec       OUT NOCOPY clev_rec_type,
5324             x_klev_rec       OUT NOCOPY klev_rec_type) IS
5325     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_FIN_AST_LINES';
5326     l_return_status          VARCHAR2(1)  := OKL_API.G_RET_STS_SUCCESS;
5327   BEGIN
5328     x_return_status  := OKL_API.G_RET_STS_SUCCESS;
5329     -- Call start_activity to create savepoint, check compatibility
5330     -- and initialize message list
5331     x_return_status := OKL_API.START_ACTIVITY (
5332                                l_api_name
5333                                ,p_init_msg_list
5334                                ,'_PVT'
5335                                ,x_return_status);
5336     -- Check if activity started successfully
5337     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5338        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5339     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5340        RAISE OKL_API.G_EXCEPTION_ERROR;
5341     END IF;
5342     -- Calling the Process
5343     OKL_CONTRACT_PUB.update_contract_line(p_api_version   => p_api_version,
5344                                           p_init_msg_list => p_init_msg_list,
5345                                           x_return_status => x_return_status,
5346                                           x_msg_count     => x_msg_count,
5347                                           x_msg_data      => x_msg_data,
5348                                           p_clev_rec      => p_clev_rec,
5349                                           p_klev_rec      => p_klev_rec,
5350                                           x_clev_rec      => x_clev_rec,
5351                                           x_klev_rec      => x_klev_rec);
5352     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5353        OKL_API.set_message(p_app_name     => G_APP_NAME,
5354                            p_msg_name     => G_UPDATING_FIN_LINE);
5355        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5356     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5357        OKL_API.set_message(p_app_name     => G_APP_NAME,
5358                            p_msg_name     => G_UPDATING_FIN_LINE);
5359        RAISE OKL_API.G_EXCEPTION_ERROR;
5360     END IF;
5361     OKL_API.END_ACTIVITY (x_msg_count,
5362                           x_msg_data );
5363   EXCEPTION
5364     WHEN OKL_API.G_EXCEPTION_ERROR THEN
5365     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5366                                l_api_name,
5367                                G_PKG_NAME,
5368                                'OKL_API.G_RET_STS_ERROR',
5369                                x_msg_count,
5370                                x_msg_data,
5371                                '_PVT');
5372     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5373     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5374                               l_api_name,
5375                               G_PKG_NAME,
5376                               'OKL_API.G_RET_STS_UNEXP_ERROR',
5377                               x_msg_count,
5378                               x_msg_data,
5379                               '_PVT');
5380     WHEN OTHERS THEN
5381     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5382                               l_api_name,
5383                               G_PKG_NAME,
5384                               'OTHERS',
5385                               x_msg_count,
5386                               x_msg_data,
5387                               '_PVT');
5388   END update_financial_asset_line;
5389 
5390 ---------------
5391 --Bug# 2994971
5392 ---------------
5393   PROCEDURE populate_insurance_category(p_api_version   IN NUMBER,
5394                                         p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
5395                                         x_return_status OUT NOCOPY VARCHAR2,
5396                                         x_msg_count     OUT NOCOPY NUMBER,
5397                                         x_msg_data      OUT NOCOPY VARCHAR2,
5398                                         p_cle_id        IN  NUMBER,
5399                                         p_inv_item_id   IN  NUMBER,
5400                                         p_inv_org_id    IN  NUMBER) IS
5401 
5402   l_api_name   CONSTANT VARCHAR2(30) := 'POPULATE_INS_CATEGORY';
5403 
5404   --cursor to get asset category
5405   cursor l_msi_csr(p_inv_item_id in number,
5406                    p_inv_org_id  in number) is
5407   select msi.asset_category_id
5408   from   mtl_system_items msi
5409   where  msi.organization_id   = p_inv_org_id
5410   and    msi.inventory_item_id = p_inv_item_id;
5411 
5412   l_asset_category_id mtl_system_items.asset_category_id%TYPE default NULL;
5413   l_clev_rec  okl_okc_migration_pvt.clev_rec_type;
5414   l_klev_rec  okl_contract_pub.klev_rec_type;
5415   lx_clev_rec  okl_okc_migration_pvt.clev_rec_type;
5416   lx_klev_rec  okl_contract_pub.klev_rec_type;
5417 
5418 
5419   BEGIN
5420 
5421     x_return_status          := OKL_API.G_RET_STS_SUCCESS;
5422     -- Call start_activity to create savepoint, check compatibility
5423     -- and initialize message list
5424     x_return_status := OKL_API.START_ACTIVITY (l_api_name
5425                                                ,p_init_msg_list
5426                                                ,'_PVT'
5427                                                ,x_return_status);
5428     -- Check if activity started successfully
5429     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5430        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5431     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5432        RAISE OKL_API.G_EXCEPTION_ERROR;
5433     END IF;
5434 
5435     --fetch asset category
5436     l_asset_category_id := NULL;
5437     open l_msi_csr (p_inv_item_id => p_inv_item_id,
5438                     p_inv_org_id  => p_inv_org_id);
5439     fetch l_msi_csr into l_asset_category_id;
5440     if l_msi_csr%NOTFOUND then
5441         null;
5442     end if;
5443     close l_msi_csr;
5444 
5445 
5446     l_clev_rec.id := p_cle_id;
5447     l_klev_rec.id := p_cle_id;
5448     l_klev_rec.item_insurance_category := l_asset_category_id;
5449 
5450     okl_contract_pub.update_contract_line(
5451                          p_api_version   => p_api_version,
5452                          p_init_msg_list => p_init_msg_list,
5453                          x_return_status => x_return_status,
5454                          x_msg_count     => x_msg_count,
5455                          x_msg_data      => x_msg_data,
5456                          p_clev_rec      => l_clev_rec,
5457                          p_klev_rec      => l_klev_rec,
5458                          x_clev_rec      => lx_clev_rec,
5459                          x_klev_rec      => lx_klev_rec
5460                          );
5461 
5462     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5463         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5464     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5465         RAISE OKL_API.G_EXCEPTION_ERROR;
5466     END IF;
5467 
5468     OKL_API.END_ACTIVITY (x_msg_count,
5469                           x_msg_data );
5470   EXCEPTION
5471     WHEN OKL_API.G_EXCEPTION_ERROR THEN
5472     if l_msi_csr%ISOPEN then
5473        close l_msi_csr;
5474     end if;
5475     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5476                                l_api_name,
5477                                G_PKG_NAME,
5478                                'OKL_API.G_RET_STS_ERROR',
5479                                x_msg_count,
5480                                x_msg_data,
5481                                '_PVT');
5482     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5483     if l_msi_csr%ISOPEN then
5484        close l_msi_csr;
5485     end if;
5486     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5487                                l_api_name,
5488                                G_PKG_NAME,
5489                                'OKL_API.G_RET_STS_UNEXP_ERROR',
5490                                x_msg_count,
5491                                x_msg_data,
5492                                '_PVT');
5493     WHEN OTHERS THEN
5494     if l_msi_csr%ISOPEN then
5495        close l_msi_csr;
5496     end if;
5497     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5498                               l_api_name,
5499                               G_PKG_NAME,
5500                               'OTHERS',
5501                               x_msg_count,
5502                               x_msg_data,
5503                               '_PVT');
5504 End POPULATE_INSURANCE_CATEGORY;
5505 -------------------
5506 --Bug# 2994971
5507 ------------------
5508 
5509 ---22------------------------------------------------------------------------------------------
5510   PROCEDURE Create_model_line_item(p_api_version    IN  NUMBER,
5511                                    p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
5512                                    x_return_status  OUT NOCOPY VARCHAR2,
5513                                    x_msg_count      OUT NOCOPY NUMBER,
5514                                    x_msg_data       OUT NOCOPY VARCHAR2,
5515 -- 4414408                                   p_lty_code       IN  OKC_LINE_STYLES_V.LTY_CODE%TYPE,
5516                                    p_clev_rec       IN  clev_rec_type,
5517                                    p_klev_rec       IN  klev_rec_type,
5518                                    p_cimv_rec       IN  cimv_rec_type,
5519                                    x_clev_rec       OUT NOCOPY clev_rec_type,
5520                                    x_klev_rec       OUT NOCOPY klev_rec_type,
5521                                    x_cimv_rec       OUT NOCOPY cimv_rec_type) IS
5522     l_clev_rec               clev_rec_type;
5523     r_clev_rec               clev_rec_type;
5524     l_talv_rec               talv_rec_type;
5525     l_cimv_rec               cimv_rec_type;
5526 --    l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
5527     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_MODEL_ITEM';
5528 
5529     ------------------
5530     --Bug# 2994971
5531     -----------------
5532     l_inv_item_id  number;
5533     l_inv_org_id   number;
5534     l_asset_cle_id number;
5535 
5536   BEGIN
5537     x_return_status          := OKL_API.G_RET_STS_SUCCESS;
5538     -- Call start_activity to create savepoint, check compatibility
5539     -- and initialize message list
5540     x_return_status := OKL_API.START_ACTIVITY (l_api_name
5541                                                ,p_init_msg_list
5542                                                ,'_PVT'
5543                                                ,x_return_status);
5544     -- Check if activity started successfully
5545     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5546        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5547     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5548        RAISE OKL_API.G_EXCEPTION_ERROR;
5549     END IF;
5550     -- 4414408 redundant validation
5551 /*
5552     -- Check the cle_id that is of the top Fin Asset line
5553     validate_cle_lse_id(p_clev_rec      => p_clev_rec,
5554                         p_lty_code      => p_lty_code,
5555                         x_lty_code      => l_lty_code,
5556                         x_return_status => x_return_status);
5557     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5558        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5559     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5560        RAISE OKL_API.G_EXCEPTION_ERROR;
5561     END IF;
5562 */
5563 -- 4414408
5564 --  IF l_lty_code = G_FIN_LINE_LTY_CODE THEN
5565        r_clev_rec := p_clev_rec;
5566 
5567 -- # 4334903 use new function default_contract_line_values
5568 /*
5569        IF (p_clev_rec.sts_code IS NULL OR
5570           p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
5571          x_return_status := get_sts_code(p_dnz_chr_id => null,
5572                                          p_cle_id     => p_clev_rec.cle_id,
5573                                          x_sts_code   => r_clev_rec.sts_code);
5574          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5575             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5576          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5577             RAISE OKL_API.G_EXCEPTION_ERROR;
5578          END IF;
5579        END IF;
5580        IF (p_clev_rec.end_date IS NULL OR
5581           p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
5582          x_return_status := get_end_date(p_dnz_chr_id => null,
5583                                          p_cle_id     => p_clev_rec.cle_id,
5584                                          x_end_date   => r_clev_rec.end_date);
5585          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5586             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5587          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5588             RAISE OKL_API.G_EXCEPTION_ERROR;
5589          END IF;
5590        END IF;
5591      IF (p_clev_rec.start_date IS NULL OR
5592           p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
5593          x_return_status := get_start_date(p_dnz_chr_id => null,
5594                                            p_cle_id     => p_clev_rec.cle_id,
5595                                            x_start_date => r_clev_rec.start_date);
5596          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5597             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5598          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5599             RAISE OKL_API.G_EXCEPTION_ERROR;
5600          END IF;
5601        END IF;
5602        IF (p_clev_rec.currency_code IS NULL OR
5603           p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
5604          x_return_status := get_currency_code(p_dnz_chr_id    => null,
5605                                               p_cle_id        => p_clev_rec.cle_id,
5606                                               x_currency_code => r_clev_rec.currency_code);
5607          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5608            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5609          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5610            RAISE OKL_API.G_EXCEPTION_ERROR;
5611          END IF;
5612        END IF;
5613 */
5614 
5615     IF ((p_clev_rec.sts_code IS NULL OR
5616          p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) OR
5617         (p_clev_rec.end_date IS NULL OR
5618          p_clev_rec.end_date = OKL_API.G_MISS_DATE) OR
5619         (p_clev_rec.start_date IS NULL OR
5620          p_clev_rec.start_date = OKL_API.G_MISS_DATE) OR
5621         (p_clev_rec.currency_code IS NULL OR
5622          p_clev_rec.currency_code = OKL_API.G_MISS_CHAR)
5623        ) THEN
5624        x_return_status := default_contract_line_values(p_dnz_chr_id    => null,
5625                                                        p_cle_id        => r_clev_rec.cle_id,
5626                                                        p_clev_rec      => r_clev_rec);
5627       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5628          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5629       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5630          RAISE OKL_API.G_EXCEPTION_ERROR;
5631       END IF;
5632     END IF;
5633 
5634        -- Now the all the records are there we can create Model Line
5635        OKL_CONTRACT_PUB.create_contract_line(p_api_version   => p_api_version,
5636                                              p_init_msg_list => p_init_msg_list,
5637                                              x_return_status => x_return_status,
5638                                              x_msg_count     => x_msg_count,
5639                                              x_msg_data      => x_msg_data,
5640                                              p_clev_rec      => r_clev_rec,
5641                                              p_klev_rec      => p_klev_rec,
5642                                              x_clev_rec      => x_clev_rec,
5643                                              x_klev_rec      => x_klev_rec);
5644        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5645           OKL_API.set_message(p_app_name     => G_APP_NAME,
5646                               p_msg_name     => G_CREATION_MODEL_LINE);
5647           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5648        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5649           OKL_API.set_message(p_app_name     => G_APP_NAME,
5650                               p_msg_name     => G_CREATION_MODEL_LINE);
5651           RAISE OKL_API.G_EXCEPTION_ERROR;
5652        END IF;
5653        l_cimv_rec                   := p_cimv_rec;
5654        l_cimv_rec.cle_id            := x_clev_rec.id;
5655        l_cimv_rec.dnz_chr_id        := x_clev_rec.dnz_chr_id;
5656        l_cimv_rec.jtot_object1_code := 'OKX_SYSITEM';
5657        l_cimv_rec.exception_yn      := 'N';
5658        -- Creation of Item Record for the above record information
5659        OKL_OKC_MIGRATION_PVT.create_contract_item(p_api_version   => p_api_version,
5660                                                   p_init_msg_list => p_init_msg_list,
5661                                                   x_return_status => x_return_status,
5662                                                   x_msg_count     => x_msg_count,
5663                                                   x_msg_data      => x_msg_data,
5664                                                   p_cimv_rec      => l_cimv_rec,
5665                                                   x_cimv_rec      => x_cimv_rec);
5666        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5667           OKL_API.set_message(p_app_name     => G_APP_NAME,
5668                               p_msg_name     => G_CREATION_MODEL_ITEM);
5669           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5670        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5671           OKL_API.set_message(p_app_name     => G_APP_NAME,
5672                               p_msg_name     => G_CREATION_MODEL_ITEM);
5673           RAISE OKL_API.G_EXCEPTION_ERROR;
5674        END IF;
5675 
5676        ---------------
5677        --Bug# 2994971
5678        ---------------
5679        If nvl(x_cimv_rec.object1_id1,okl_api.g_miss_char) <> OKL_API.G_MISS_CHAR and
5680           nvl(x_cimv_rec.object1_id2,okl_api.g_miss_char) <> OKL_API.G_MISS_CHAR then
5681 
5682            --Bug# 3438811 :
5683            --l_inv_item_id  := to_char(x_cimv_rec.object1_id1);
5684            --l_inv_org_id   := to_char(x_cimv_rec.object1_id2);
5685            l_inv_item_id  := to_number(x_cimv_rec.object1_id1);
5686            l_inv_org_id   := to_number(x_cimv_rec.object1_id2);
5687            l_asset_cle_id := x_clev_rec.cle_id;
5688 
5689            populate_insurance_category(p_api_version   => p_api_version,
5690                                        p_init_msg_list => p_init_msg_list,
5691                                        x_return_status => x_return_status,
5692                                        x_msg_count     => x_msg_count,
5693                                        x_msg_data      => x_msg_data,
5694                                        p_cle_id        => l_asset_cle_id,
5695                                        p_inv_item_id   => l_inv_item_id,
5696                                        p_inv_org_id    => l_inv_org_id);
5697            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5698                RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5699            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5700                RAISE OKL_API.G_EXCEPTION_ERROR;
5701            END IF;
5702         End If;
5703        ---------------
5704        --Bug# 2994971
5705        ---------------
5706 
5707 --   #4414408
5708 --  ELSE
5709 --     OKL_API.set_message(p_app_name     => G_APP_NAME,
5710 --                         p_msg_name     => G_LINE_STYLE);
5711 --     RAISE OKL_API.G_EXCEPTION_ERROR;
5712 --  END IF;
5713     OKL_API.END_ACTIVITY (x_msg_count,
5714                           x_msg_data );
5715   EXCEPTION
5716     WHEN OKL_API.G_EXCEPTION_ERROR THEN
5717     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5718                                l_api_name,
5719                                G_PKG_NAME,
5720                                'OKL_API.G_RET_STS_ERROR',
5721                                x_msg_count,
5722                                x_msg_data,
5723                                '_PVT');
5724     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5725     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5726                                l_api_name,
5727                                G_PKG_NAME,
5728                                'OKL_API.G_RET_STS_UNEXP_ERROR',
5729                                x_msg_count,
5730                                x_msg_data,
5731                                '_PVT');
5732     WHEN OTHERS THEN
5733     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5734                               l_api_name,
5735                               G_PKG_NAME,
5736                               'OTHERS',
5737                               x_msg_count,
5738                               x_msg_data,
5739                               '_PVT');
5740   END Create_model_line_item;
5741 ---------------------------------------------------------------------------------------------
5742   PROCEDURE update_model_line_item(p_api_version    IN  NUMBER,
5743                                    p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
5744                                    x_return_status  OUT NOCOPY VARCHAR2,
5745                                    x_msg_count      OUT NOCOPY NUMBER,
5746                                    x_msg_data       OUT NOCOPY VARCHAR2,
5747                                    p_lty_code       IN  OKC_LINE_STYLES_V.LTY_CODE%TYPE,
5748                                    p_clev_rec       IN  clev_rec_type,
5749                                    p_klev_rec       IN  klev_rec_type,
5750                                    p_cimv_rec       IN  cimv_rec_type,
5751                                    x_clev_rec       OUT NOCOPY clev_rec_type,
5752                                    x_klev_rec       OUT NOCOPY klev_rec_type,
5753                                    x_cimv_rec       OUT NOCOPY cimv_rec_type) IS
5754 
5755     l_clev_rec               clev_rec_type;
5756     l_talv_rec               talv_rec_type;
5757     l_cimv_rec               cimv_rec_type;
5758     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
5759     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_MODEL_ITEM';
5760 
5761     ------------------
5762     --Bug# 2994971
5763     -----------------
5764     l_inv_item_id  number;
5765     l_inv_org_id   number;
5766     l_asset_cle_id number;
5767 
5768   BEGIN
5769     x_return_status          := OKL_API.G_RET_STS_SUCCESS;
5770     -- Call start_activity to create savepoint, check compatibility
5771     -- and initialize message list
5772     x_return_status := OKL_API.START_ACTIVITY (l_api_name
5773                                                ,p_init_msg_list
5774                                                ,'_PVT'
5775                                                ,x_return_status);
5776     -- Check if activity started successfully
5777     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5778        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5779     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5780        RAISE OKL_API.G_EXCEPTION_ERROR;
5781     END IF;
5782     -- Check the cle_id that is of the top Fin Asset line
5783     validate_cle_lse_id(p_clev_rec      => p_clev_rec,
5784                         p_lty_code      => p_lty_code,
5785                         x_lty_code      => l_lty_code,
5786                         x_return_status => x_return_status);
5787     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5788        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5789     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5790        RAISE OKL_API.G_EXCEPTION_ERROR;
5791     END IF;
5792     IF l_lty_code = G_FIN_LINE_LTY_CODE THEN
5793        -- Now the all the records are there we can create Model Line
5794        OKL_CONTRACT_PUB.update_contract_line(p_api_version   => p_api_version,
5795                                              p_init_msg_list => p_init_msg_list,
5796                                              x_return_status => x_return_status,
5797                                              x_msg_count     => x_msg_count,
5798                                              x_msg_data      => x_msg_data,
5799                                              p_clev_rec      => p_clev_rec,
5800                                              p_klev_rec      => p_klev_rec,
5801                                              x_clev_rec      => x_clev_rec,
5802                                              x_klev_rec      => x_klev_rec);
5803        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5804           OKL_API.set_message(p_app_name     => G_APP_NAME,
5805                               p_msg_name     => G_UPDATING_MODEL_LINE);
5806           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5807        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5808           OKL_API.set_message(p_app_name     => G_APP_NAME,
5809                               p_msg_name     => G_UPDATING_MODEL_LINE);
5810           RAISE OKL_API.G_EXCEPTION_ERROR;
5811        END IF;
5812        l_cimv_rec                      := p_cimv_rec;
5813        IF l_cimv_rec.cle_id <> x_clev_rec.id THEN
5814           OKL_API.set_message(p_app_name     => G_APP_NAME,
5815                               p_msg_name     => G_ITEM_RECORD);
5816           RAISE OKL_API.G_EXCEPTION_ERROR;
5817        END IF;
5818        IF l_cimv_rec.dnz_chr_id <> x_clev_rec.dnz_chr_id THEN
5819           OKL_API.set_message(p_app_name     => G_APP_NAME,
5820                               p_msg_name     => G_ITEM_RECORD);
5821           RAISE OKL_API.G_EXCEPTION_ERROR;
5822        END IF;
5823        -- Creation of Item Record for the above record information
5824        OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version   => p_api_version,
5825                                                   p_init_msg_list => p_init_msg_list,
5826                                                   x_return_status => x_return_status,
5827                                                   x_msg_count     => x_msg_count,
5828                                                   x_msg_data      => x_msg_data,
5829                                                   p_cimv_rec      => l_cimv_rec,
5830                                                   x_cimv_rec      => x_cimv_rec);
5831        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5832           OKL_API.set_message(p_app_name     => G_APP_NAME,
5833                               p_msg_name     => G_UPDATING_MODEL_ITEM);
5834           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5835        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5836           OKL_API.set_message(p_app_name     => G_APP_NAME,
5837                               p_msg_name     => G_UPDATING_MODEL_ITEM);
5838           RAISE OKL_API.G_EXCEPTION_ERROR;
5839        END IF;
5840 
5841        ---------------
5842        --Bug# 2994971
5843        ---------------
5844        If nvl(x_cimv_rec.object1_id1,okl_api.g_miss_char) <> OKL_API.G_MISS_CHAR and
5845           nvl(x_cimv_rec.object1_id2,okl_api.g_miss_char) <> OKL_API.G_MISS_CHAR then
5846 
5847            --Bug# 3438811 :
5848            --l_inv_item_id  := to_char(x_cimv_rec.object1_id1);
5849            --l_inv_org_id   := to_char(x_cimv_rec.object1_id2);
5850            l_inv_item_id  := to_number(x_cimv_rec.object1_id1);
5851            l_inv_org_id   := to_number(x_cimv_rec.object1_id2);
5852            l_asset_cle_id := x_clev_rec.cle_id;
5853 
5854            populate_insurance_category(p_api_version   => p_api_version,
5855                                        p_init_msg_list => p_init_msg_list,
5856                                        x_return_status => x_return_status,
5857                                        x_msg_count     => x_msg_count,
5858                                        x_msg_data      => x_msg_data,
5859                                        p_cle_id        => l_asset_cle_id,
5860                                        p_inv_item_id   => l_inv_item_id,
5861                                        p_inv_org_id    => l_inv_org_id);
5862            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5863                RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5864            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5865                RAISE OKL_API.G_EXCEPTION_ERROR;
5866            END IF;
5867         End If;
5868        ---------------
5869        --Bug# 2994971
5870        ---------------
5871 
5872 
5873     ELSE
5874        OKL_API.set_message(p_app_name     => G_APP_NAME,
5875                            p_msg_name     => G_LINE_STYLE);
5876        RAISE OKL_API.G_EXCEPTION_ERROR;
5877     END IF;
5878     OKL_API.END_ACTIVITY (x_msg_count,
5879                           x_msg_data );
5880   EXCEPTION
5881     WHEN OKL_API.G_EXCEPTION_ERROR THEN
5882     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5883                                l_api_name,
5884                                G_PKG_NAME,
5885                                'OKL_API.G_RET_STS_ERROR',
5886                                x_msg_count,
5887                                x_msg_data,
5888                                '_PVT');
5889     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5890     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5891                                l_api_name,
5892                                G_PKG_NAME,
5893                                'OKL_API.G_RET_STS_UNEXP_ERROR',
5894                                x_msg_count,
5895                                x_msg_data,
5896                                '_PVT');
5897     WHEN OTHERS THEN
5898     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5899                               l_api_name,
5900                               G_PKG_NAME,
5901                               'OTHERS',
5902                               x_msg_count,
5903                               x_msg_data,
5904                               '_PVT');
5905   END update_model_line_item;
5906 --------------------------------------------------------------------------------------------------
5907   PROCEDURE create_fa_line_item(p_api_version    IN  NUMBER,
5908                                 p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
5909                                 x_return_status  OUT NOCOPY VARCHAR2,
5910                                 x_msg_count      OUT NOCOPY NUMBER,
5911                                 x_msg_data       OUT NOCOPY VARCHAR2,
5912 --                              p_lty_code       IN  OKC_LINE_STYLES_V.LTY_CODE%TYPE,
5913 -- 4414408
5914                                 p_clev_rec       IN  clev_rec_type,
5915                                 p_klev_rec       IN  klev_rec_type,
5916                                 p_cimv_rec       IN  cimv_rec_type,
5917                                 p_talv_rec       IN  talv_rec_type,
5918                                 x_clev_rec       OUT NOCOPY clev_rec_type,
5919                                 x_klev_rec       OUT NOCOPY klev_rec_type,
5920                                 x_cimv_rec       OUT NOCOPY cimv_rec_type,
5921                                 x_trxv_rec       OUT NOCOPY trxv_rec_type,
5922                                 x_talv_rec       OUT NOCOPY talv_rec_type) IS
5923     l_clev_rec               clev_rec_type;
5924     r_clev_rec               clev_rec_type;
5925     l_klev_rec               klev_rec_type;
5926     l_cimv_rec               cimv_rec_type;
5927     l_talv_rec               talv_rec_type;
5928     l_trxv_rec               trxv_rec_type;
5929     i                        NUMBER := 0;
5930 
5931 --  l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
5932     lv_id1                   OKC_K_ITEMS_V.OBJECT1_ID1%TYPE := OKL_API.G_MISS_CHAR;
5933     lv_id2                   OKC_K_ITEMS_V.OBJECT1_ID2%TYPE := OKL_API.G_MISS_CHAR;
5934     ln_dummy                 NUMBER := 0;
5935     lv_dummy                 VARCHAR2(3);
5936     ln_tas_id                OKL_TRX_ASSETS.ID%TYPE;
5937     ln_line_number           OKL_TXL_ASSETS_V.LINE_NUMBER%TYPE;
5938     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_FA_LINE_ITEM';
5939     CURSOR c_asset_exist_chr(p_id1   OKX_ASSETS_V.ID1%TYPE,
5940                              p_id2   OKX_ASSETS_V.ID2%TYPE,
5941                              p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE)
5942     IS
5943     SELECT 1
5944     --FROM DUAL
5945     --WHERE EXISTS (SELECT '1'
5946                   FROM OKX_ASSET_LINES_V
5947                   WHERE id1 = p_id1
5948                   AND id2 = p_id2
5949                   AND dnz_chr_id <> p_dnz_chr_id
5950                   AND line_status NOT IN ('EXPRIED','TERMINATED','ABANDONED'); --);
5951   BEGIN
5952     x_return_status     := OKL_API.G_RET_STS_SUCCESS;
5953     -- Call start_activity to create savepoint, check compatibility
5954     -- and initialize message list
5955     x_return_status := OKL_API.START_ACTIVITY (l_api_name,
5956                                                p_init_msg_list,
5957                                                '_PVT',
5958                                                x_return_status);
5959     -- Check if activity started successfully
5960     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5961        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5962     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5963        RAISE OKL_API.G_EXCEPTION_ERROR;
5964     END IF;
5965 -- #4414408
5966 /*
5967     -- Check the cle_id that is of the top Fin Asset line
5968     validate_cle_lse_id(p_clev_rec      => p_clev_rec,
5969                         p_lty_code      => p_lty_code,
5970                         x_lty_code      => l_lty_code,
5971                         x_return_status => x_return_status);
5972     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5973        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5974     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5975        RAISE OKL_API.G_EXCEPTION_ERROR;
5976     END IF;
5977 */
5978     -- since Fixed Assets Line  is a sub line of Fin Asset line we have to check weather
5979     -- which line are creating under which line
5980 --  IF l_lty_code = G_FIN_LINE_LTY_CODE THEN
5981 
5982        r_clev_rec := p_clev_rec;
5983 
5984 -- # 4414408 New function default_contract_line_values
5985 /*
5986        IF (p_clev_rec.sts_code IS NULL OR
5987           p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
5988          x_return_status := get_sts_code(p_dnz_chr_id => null,
5989                                          p_cle_id     => p_clev_rec.cle_id,
5990                                          x_sts_code   => r_clev_rec.sts_code);
5991          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5992             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5993          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5994             RAISE OKL_API.G_EXCEPTION_ERROR;
5995          END IF;
5996        END IF;
5997        IF (p_clev_rec.end_date IS NULL OR
5998           p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
5999          x_return_status := get_end_date(p_dnz_chr_id => null,
6000                                          p_cle_id     => p_clev_rec.cle_id,
6001                                          x_end_date   => r_clev_rec.end_date);
6002          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6003             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6004          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6005             RAISE OKL_API.G_EXCEPTION_ERROR;
6006          END IF;
6007        END IF;
6008        IF (p_clev_rec.start_date IS NULL OR
6009           p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
6010          x_return_status := get_start_date(p_dnz_chr_id => null,
6011                                            p_cle_id     => p_clev_rec.cle_id,
6012                                            x_start_date => r_clev_rec.start_date);
6013          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6014             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6015          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6016             RAISE OKL_API.G_EXCEPTION_ERROR;
6017          END IF;
6018        END IF;
6019        IF (p_clev_rec.currency_code IS NULL OR
6020           p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
6021          x_return_status := get_currency_code(p_dnz_chr_id    => null,
6022                                               p_cle_id        => p_clev_rec.cle_id,
6023                                               x_currency_code => r_clev_rec.currency_code);
6024          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6025            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6026          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6027            RAISE OKL_API.G_EXCEPTION_ERROR;
6028          END IF;
6029        END IF;
6030 */
6031     IF ((p_clev_rec.sts_code IS NULL OR
6032          p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) OR
6033         (p_clev_rec.end_date IS NULL OR
6034          p_clev_rec.end_date = OKL_API.G_MISS_DATE) OR
6035         (p_clev_rec.start_date IS NULL OR
6036          p_clev_rec.start_date = OKL_API.G_MISS_DATE) OR
6037         (p_clev_rec.currency_code IS NULL OR
6038          p_clev_rec.currency_code = OKL_API.G_MISS_CHAR)
6039        ) THEN
6040        x_return_status := default_contract_line_values(p_dnz_chr_id    => null,
6041                                                        p_cle_id        => r_clev_rec.cle_id,
6042                                                        p_clev_rec      => r_clev_rec);
6043       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6044          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6045       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6046          RAISE OKL_API.G_EXCEPTION_ERROR;
6047       END IF;
6048     END IF;
6049        -- Now the all the records are there we can create Fixed Asset Line
6050        OKL_CONTRACT_PUB.create_contract_line(p_api_version   => p_api_version,
6051                                              p_init_msg_list => p_init_msg_list,
6052                                              x_return_status => x_return_status,
6053                                              x_msg_count     => x_msg_count,
6054                                              x_msg_data      => x_msg_data,
6055                                              p_clev_rec      => r_clev_rec,
6056                                              p_klev_rec      => p_klev_rec,
6057                                              x_clev_rec      => x_clev_rec,
6058                                              x_klev_rec      => x_klev_rec);
6059        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6060          OKL_API.set_message(p_app_name     => G_APP_NAME,
6061                              p_msg_name     => G_CREATION_FA_LINE);
6062          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6063        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6064          OKL_API.set_message(p_app_name     => G_APP_NAME,
6065                              p_msg_name     => G_CREATION_FA_LINE);
6066          RAISE OKL_API.G_EXCEPTION_ERROR;
6067        END IF;
6068        l_cimv_rec                   := p_cimv_rec;
6069        l_cimv_rec.cle_id            := x_clev_rec.id;
6070        l_cimv_rec.dnz_chr_id        := x_clev_rec.dnz_chr_id;
6071        lv_id1                       := l_cimv_rec.object1_id1;
6072        lv_id2                       := l_cimv_rec.object1_id2;
6073        l_cimv_rec.jtot_object1_code := 'OKX_ASSET';
6074        -- Now we should check weather the associated id1,id2 for a given asset number is null or not
6075        IF (lv_id1 IS NOT NULL OR
6076           lv_id1 <> OKL_API.G_MISS_CHAR) AND
6077           (lv_id2 IS NOT NULL OR
6078           lv_id2 <> OKL_API.G_MISS_CHAR) THEN
6079           -- Check to See the Fixed asset is not already in another contract
6080           OPEN  c_asset_exist_chr(lv_id1,lv_id2,l_cimv_rec.dnz_chr_id);
6081           FETCH c_asset_exist_chr into ln_dummy;
6082           CLOSE c_asset_exist_chr;
6083           IF ln_dummy <> 1 THEN
6084              -- Creation of Item Record for the above record information
6085              OKL_OKC_MIGRATION_PVT.create_contract_item(p_api_version   => p_api_version,
6086                                                         p_init_msg_list => p_init_msg_list,
6087                                                         x_return_status => x_return_status,
6088                                                         x_msg_count     => x_msg_count,
6089                                                         x_msg_data      => x_msg_data,
6090                                                         p_cimv_rec      => l_cimv_rec,
6091                                                         x_cimv_rec      => x_cimv_rec);
6092              IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6093                OKL_API.set_message(p_app_name     => G_APP_NAME,
6094                                    p_msg_name     => G_CREATION_FA_ITEM);
6095                RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6096              ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6097                OKL_API.set_message(p_app_name     => G_APP_NAME,
6098                                    p_msg_name     => G_CREATION_FA_ITEM);
6099                 RAISE OKL_API.G_EXCEPTION_ERROR;
6100              END IF;
6101              -- We need to do this as part of Asset Release since the p_new_yn flag is N
6102              -- So that the adjustment will be done while activation of the re-lease asseted contract.
6103              -- We need to know if the kle_id is already there or not
6104              -- ideally it should be null since it is a new record
6105              validate_kle_id(p_klev_rec      => x_klev_rec,
6106                              x_record_exists => lv_dummy,
6107                              x_return_status => x_return_status);
6108              IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6109                RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6110              ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6111                RAISE OKL_API.G_EXCEPTION_ERROR;
6112              END IF;
6113              IF (lv_dummy = OKL_API.G_MISS_CHAR OR
6114                 lv_dummy IS NUll) THEN
6115                l_talv_rec                 := p_talv_rec;
6116                l_talv_rec.kle_id          := x_clev_rec.id;
6117                l_talv_rec.dnz_khr_id      := x_clev_rec.dnz_chr_id;
6118                l_talv_rec.line_number     := 1 ;
6119                -- Create another kle_id record for the same header
6120                Create_asset_lines(p_api_version    => p_api_version,
6121                                   p_init_msg_list  => p_init_msg_list,
6122                                   x_return_status  => x_return_status,
6123                                   x_msg_count      => x_msg_count,
6124                                   x_msg_data       => x_msg_data,
6125                                   p_talv_rec       => l_talv_rec,
6126                                   x_trxv_rec       => x_trxv_rec,
6127                                   x_talv_rec       => x_talv_rec);
6128                IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6129                   RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6130                ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6131                   RAISE OKL_API.G_EXCEPTION_ERROR;
6132                END IF;
6133              ELSE
6134                OKL_API.set_message(p_app_name     => G_APP_NAME,
6135                                   p_msg_name     => G_KLE_ID);
6136                RAISE OKL_API.G_EXCEPTION_ERROR;
6137              END IF;
6138           ELSE
6139             OKL_API.set_message(p_app_name    => G_APP_NAME,
6140                                p_msg_name     => G_CREATION_FA_ITEM);
6141              RAISE OKL_API.G_EXCEPTION_ERROR;
6142           END IF;
6143        ELSE
6144          -- Since id1,id12 are null , hence NO Asset Number we are creating a new asset Number
6145           -- Creation of Item Record for the above record information
6146           OKL_OKC_MIGRATION_PVT.create_contract_item(p_api_version   => p_api_version,
6147                                                      p_init_msg_list => p_init_msg_list,
6148                                                      x_return_status => x_return_status,
6149                                                      x_msg_count     => x_msg_count,
6150                                                      x_msg_data      => x_msg_data,
6151                                                      p_cimv_rec      => l_cimv_rec,
6152                                                      x_cimv_rec      => x_cimv_rec);
6153           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6154                OKL_API.set_message(p_app_name     => G_APP_NAME,
6155                                    p_msg_name     => G_CREATION_FA_ITEM);
6156              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6157           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6158                OKL_API.set_message(p_app_name     => G_APP_NAME,
6159                                    p_msg_name     => G_CREATION_FA_ITEM);
6160              RAISE OKL_API.G_EXCEPTION_ERROR;
6161           END IF;
6162           -- We need to know if the kle_id is already there or not
6163           -- ideally it should be null since it is a new record
6164           validate_kle_id(p_klev_rec      => x_klev_rec,
6165                           x_record_exists => lv_dummy,
6166                           x_return_status => x_return_status);
6167           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6168              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6169           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6170              RAISE OKL_API.G_EXCEPTION_ERROR;
6171           END IF;
6172           IF (lv_dummy = OKL_API.G_MISS_CHAR OR
6173              lv_dummy IS NUll) THEN
6174              l_talv_rec                 := p_talv_rec;
6175              l_talv_rec.kle_id          := x_clev_rec.id;
6176              l_talv_rec.dnz_khr_id      := x_clev_rec.dnz_chr_id;
6177              l_talv_rec.line_number     := 1 ;
6178              -- Create another kle_id record for the same header
6179              Create_asset_lines(p_api_version    => p_api_version,
6180                                 p_init_msg_list  => p_init_msg_list,
6181                                 x_return_status  => x_return_status,
6182                                 x_msg_count      => x_msg_count,
6183                                 x_msg_data       => x_msg_data,
6184                                 p_talv_rec       => l_talv_rec,
6185                                 x_trxv_rec       => x_trxv_rec,
6186                                 x_talv_rec       => x_talv_rec);
6187              IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6188                 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6189              ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6190                 RAISE OKL_API.G_EXCEPTION_ERROR;
6191              END IF;
6192           ELSE
6193             OKL_API.set_message(p_app_name     => G_APP_NAME,
6194                                 p_msg_name     => G_KLE_ID);
6195             RAISE OKL_API.G_EXCEPTION_ERROR;
6196           END IF;
6197        END IF;
6198 -- #4414408
6199 --    ELSE
6200 --       OKL_API.set_message(p_app_name     => G_APP_NAME,
6201 --                           p_msg_name     => G_LINE_STYLE);
6202 --        RAISE OKL_API.G_EXCEPTION_ERROR;
6203 --    END IF;
6204     OKL_API.END_ACTIVITY (x_msg_count,
6205                           x_msg_data );
6206   EXCEPTION
6207     WHEN OKL_API.G_EXCEPTION_ERROR THEN
6208     IF c_asset_exist_chr%ISOPEN THEN
6209        CLOSE c_asset_exist_chr;
6210     END IF;
6211     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6212                                l_api_name,
6213                                G_PKG_NAME,
6214                                'OKL_API.G_RET_STS_ERROR',
6215                                x_msg_count,
6216                                x_msg_data,
6217                                '_PVT');
6218     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6219     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6220                               l_api_name,
6221                               G_PKG_NAME,
6222                               'OKL_API.G_RET_STS_UNEXP_ERROR',
6223                               x_msg_count,
6224                               x_msg_data,
6225                               '_PVT');
6226     WHEN OTHERS THEN
6227     IF c_asset_exist_chr%ISOPEN THEN
6228        CLOSE c_asset_exist_chr;
6229     END IF;
6230     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6231                               l_api_name,
6232                               G_PKG_NAME,
6233                               'OTHERS',
6234                               x_msg_count,
6235                               x_msg_data,
6236                               '_PVT');
6237   END create_fa_line_item;
6238 -------------------------------------------------------------------------------------------------
6239   PROCEDURE update_fa_line_item(p_api_version    IN  NUMBER,
6240                                 p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
6241                                 x_return_status  OUT NOCOPY VARCHAR2,
6242                                 x_msg_count      OUT NOCOPY NUMBER,
6243                                 x_msg_data       OUT NOCOPY VARCHAR2,
6244                                 p_lty_code       IN  OKC_LINE_STYLES_V.LTY_CODE%TYPE,
6245                                 P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
6246                                 p_clev_rec       IN  clev_rec_type,
6247                                 p_klev_rec       IN  klev_rec_type,
6248                                 p_cimv_rec       IN  cimv_rec_type,
6249                                 p_talv_rec       IN  talv_rec_type,
6250                                 x_clev_rec       OUT NOCOPY clev_rec_type,
6251                                 x_klev_rec       OUT NOCOPY klev_rec_type,
6252                                 x_cimv_rec       OUT NOCOPY cimv_rec_type,
6253                                 x_talv_rec       OUT NOCOPY talv_rec_type) IS
6254     l_clev_rec               clev_rec_type;
6255     l_klev_rec               klev_rec_type;
6256     l_cimv_rec               cimv_rec_type;
6257     l_talv_rec               talv_rec_type;
6258     l_trxv_rec               trxv_rec_type;
6259     i                        NUMBER := 0;
6260     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
6261     ln_dummy                 NUMBER := 0;
6262     lv_dummy                 VARCHAR2(3);
6263     ln_tas_id                OKL_TRX_ASSETS.ID%TYPE;
6264     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_FA_LINE_ITEM';
6265   BEGIN
6266     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
6267     -- Call start_activity to create savepoint, check compatibility
6268     -- and initialize message list
6269     x_return_status := OKL_API.START_ACTIVITY (
6270                                l_api_name
6271                                ,p_init_msg_list
6272                                ,'_PVT'
6273                                ,x_return_status);
6274     -- Check if activity started successfully
6275     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6276        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6277     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6278        RAISE OKL_API.G_EXCEPTION_ERROR;
6279     END IF;
6280     -- Check the cle_id that is of the top Fin Asset line
6281     validate_cle_lse_id(p_clev_rec      => p_clev_rec,
6282                         p_lty_code      => p_lty_code,
6283                         x_lty_code      => l_lty_code,
6284                         x_return_status => x_return_status);
6285     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6286        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6287     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6288        RAISE OKL_API.G_EXCEPTION_ERROR;
6289     END IF;
6290     -- since Fixed Assets Line  is a sub line of Fin Asset line we have to check weather
6291     -- which line are creating under which line
6292     IF l_lty_code = G_FIN_LINE_LTY_CODE THEN
6293        OKL_CONTRACT_PUB.update_contract_line(p_api_version   => p_api_version,
6294                                              p_init_msg_list => p_init_msg_list,
6295                                              x_return_status => x_return_status,
6296                                              x_msg_count     => x_msg_count,
6297                                              x_msg_data      => x_msg_data,
6298                                              p_clev_rec      => p_clev_rec,
6299                                              p_klev_rec      => p_klev_rec,
6300                                              x_clev_rec      => x_clev_rec,
6301                                              x_klev_rec      => x_klev_rec);
6302        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6303          OKL_API.set_message(p_app_name     => G_APP_NAME,
6304                              p_msg_name     => G_UPDATING_FA_LINE);
6305          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6306        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6307          OKL_API.set_message(p_app_name     => G_APP_NAME,
6308                              p_msg_name     => G_UPDATING_FA_LINE);
6309          RAISE OKL_API.G_EXCEPTION_ERROR;
6310        END IF;
6311        l_cimv_rec                      := p_cimv_rec;
6312        IF l_cimv_rec.cle_id <> x_clev_rec.id THEN
6313          OKL_API.set_message(p_app_name     => G_APP_NAME,
6314                              p_msg_name     => G_ITEM_RECORD);
6315           RAISE OKL_API.G_EXCEPTION_ERROR;
6316        END IF;
6317        IF l_cimv_rec.dnz_chr_id <> x_clev_rec.dnz_chr_id THEN
6318          OKL_API.set_message(p_app_name     => G_APP_NAME,
6319                              p_msg_name     => G_ITEM_RECORD);
6320           RAISE OKL_API.G_EXCEPTION_ERROR;
6321        END IF;
6322        -- Creation of Item Record for the above record information
6323        OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version   => p_api_version,
6324                                                   p_init_msg_list => p_init_msg_list,
6325                                                   x_return_status => x_return_status,
6326                                                   x_msg_count     => x_msg_count,
6327                                                   x_msg_data      => x_msg_data,
6328                                                   p_cimv_rec      => l_cimv_rec,
6329                                                   x_cimv_rec      => x_cimv_rec);
6330        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6331          OKL_API.set_message(p_app_name     => G_APP_NAME,
6332                              p_msg_name     => G_UPDATING_FA_ITEM);
6333           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6334        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6335          OKL_API.set_message(p_app_name     => G_APP_NAME,
6336                              p_msg_name     => G_UPDATING_FA_ITEM);
6337           RAISE OKL_API.G_EXCEPTION_ERROR;
6338        END IF;
6339 --       x_clev_rec := l_clev_rec;
6340 -- We commented the same out because does not make sense
6341 -- because we are now populating the txl assets in both the cases
6342 -- i.e., when the OKC_K_ITEMS.OBJECT1_ID1 and OBJECT1_ID2 is null or not null
6343 --       IF (x_cimv_rec.object1_id1 IS NULL OR
6344 --           x_cimv_rec.object1_id1 = OKL_API.G_MISS_CHAR) AND
6345 --          (x_cimv_rec.object1_id2 IS NULL OR
6346 --           x_cimv_rec.object1_id2 = OKL_API.G_MISS_CHAR) THEN
6347          validate_kle_id(p_klev_rec      => x_klev_rec,
6348                         x_record_exists => lv_dummy,
6349                         x_return_status => x_return_status);
6350          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6351             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6352          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6353            RAISE OKL_API.G_EXCEPTION_ERROR;
6354          END IF;
6355          IF (lv_dummy IS NOT NUll OR
6356              lv_dummy <> OKL_API.G_MISS_CHAR) THEN
6357             IF p_talv_rec.kle_id <> x_klev_rec.id THEN
6358                OKL_API.set_message(p_app_name     => G_APP_NAME,
6359                                    p_msg_name     => G_KLE_ID);
6360                RAISE OKL_API.G_EXCEPTION_ERROR;
6361             END IF;
6362             update_asset_lines(p_api_version    => p_api_version,
6363                                p_init_msg_list  => p_init_msg_list,
6364                                x_return_status  => x_return_status,
6365                                x_msg_count      => x_msg_count,
6366                                x_msg_data       => x_msg_data,
6367                                p_talv_rec       => p_talv_rec,
6368                                x_talv_rec       => x_talv_rec);
6369             IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6370               RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6371             ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6372                RAISE OKL_API.G_EXCEPTION_ERROR;
6373             END IF;
6374          ELSE
6375             OKL_API.set_message(p_app_name     => G_APP_NAME,
6376                                 p_msg_name     => G_KLE_ID);
6377             RAISE OKL_API.G_EXCEPTION_ERROR;
6378          END IF;
6379 --       END IF;
6380     ELSE
6381        OKL_API.set_message(p_app_name     => G_APP_NAME,
6382                            p_msg_name     => G_LINE_STYLE);
6383        RAISE OKL_API.G_EXCEPTION_ERROR;
6384     END IF;
6385   --  x_clev_rec := l_clev_rec;
6386     OKL_API.END_ACTIVITY (x_msg_count,
6387                           x_msg_data );
6388   EXCEPTION
6389     WHEN OKL_API.G_EXCEPTION_ERROR THEN
6390     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6391                                l_api_name,
6392                                G_PKG_NAME,
6393                                'OKL_API.G_RET_STS_ERROR',
6394                                x_msg_count,
6395                                x_msg_data,
6396                                '_PVT');
6397     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6398     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6399                               l_api_name,
6400                               G_PKG_NAME,
6401                               'OKL_API.G_RET_STS_UNEXP_ERROR',
6402                               x_msg_count,
6403                               x_msg_data,
6404                               '_PVT');
6405     WHEN OTHERS THEN
6406     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6407                               l_api_name,
6408                               G_PKG_NAME,
6409                               'OTHERS',
6410                               x_msg_count,
6411                               x_msg_data,
6412                               '_PVT');
6413   END update_fa_line_item;
6414 -------------------------------------------------------------------------------------------------
6415   PROCEDURE create_addon_line_item_rec(p_api_version    IN  NUMBER,
6416                                        p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
6417                                        x_return_status  OUT NOCOPY VARCHAR2,
6418                                        x_msg_count      OUT NOCOPY NUMBER,
6419                                        x_msg_data       OUT NOCOPY VARCHAR2,
6420                                        p_lty_code       IN  OKC_LINE_STYLES_V.LTY_CODE%TYPE,
6421                                        p_clev_rec       IN  clev_rec_type,
6422                                        p_klev_rec       IN  klev_rec_type,
6423                                        p_cimv_rec       IN  cimv_rec_type,
6424                                        x_clev_rec       OUT NOCOPY clev_rec_type,
6425                                        x_klev_rec       OUT NOCOPY klev_rec_type,
6426                                        x_cimv_rec       OUT NOCOPY cimv_rec_type) IS
6427     l_clev_rec               clev_rec_type;
6428     r_clev_rec               clev_rec_type;
6429     l_cimv_rec               cimv_rec_type;
6430     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
6431     i                        NUMBER := 0;
6432     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_AO_LNE_ITEM';
6433     ln_display_sequence      OKC_K_LINES_V.DISPLAY_SEQUENCE%TYPE := 0;
6434     ln_num_of_items          OKC_K_ITEMS.NUMBER_OF_ITEMS%TYPE := 0;
6435 
6436     CURSOR get_dis_seq_qty(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
6437                            P_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
6438     SELECT cle.display_sequence,
6439            cim.number_of_items
6440     FROM okc_line_styles_b lse2,
6441          okc_line_styles_b lse1,
6442          okc_k_items cim,
6443          okc_k_lines_b cle
6444     WHERE cle.id = p_cle_id
6445     AND cle.dnz_chr_id = p_dnz_chr_id
6446     AND cle.id = cim.cle_id
6447     AND cim.dnz_chr_id = cle.dnz_chr_id
6448     AND lse1.id = cle.lse_id
6449     AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
6450     AND lse1.lse_parent_id = lse2.id
6451     AND lse2.lty_code = G_FIN_LINE_LTY_CODE;
6452   BEGIN
6453     x_return_status   := OKL_API.G_RET_STS_SUCCESS;
6454     -- Call start_activity to create savepoint, check compatibility
6455     -- and initialize message list
6456     x_return_status := OKL_API.START_ACTIVITY (l_api_name
6457                                                ,p_init_msg_list
6458                                                ,'_PVT'
6459                                                ,x_return_status);
6460     -- Check if activity started successfully
6461     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6462        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6463     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6464        RAISE OKL_API.G_EXCEPTION_ERROR;
6465     END IF;
6466     -- Check the cle_id that is of the top Model line
6467     validate_cle_lse_id(p_clev_rec      => p_clev_rec,
6468                         p_lty_code      => p_lty_code,
6469                         x_lty_code      => l_lty_code,
6470                         x_return_status => x_return_status);
6471     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6472        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6473     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6474        RAISE OKL_API.G_EXCEPTION_ERROR;
6475     END IF;
6476     -- since Add on is a sub line of Model line we have to check weather
6477     -- which line are creating under which line
6478     IF l_lty_code = G_MODEL_LINE_LTY_CODE THEN
6479        r_clev_rec := p_clev_rec;
6480        IF (p_clev_rec.sts_code IS NULL OR
6481            p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
6482          x_return_status := get_sts_code(p_dnz_chr_id => null,
6483                                          p_cle_id     => p_clev_rec.cle_id,
6484                                          x_sts_code   => r_clev_rec.sts_code);
6485          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6486             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6487          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6488             RAISE OKL_API.G_EXCEPTION_ERROR;
6489          END IF;
6490        END IF;
6491        IF (p_clev_rec.end_date IS NULL OR
6492            p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
6493          x_return_status := get_end_date(p_dnz_chr_id => null,
6494                                          p_cle_id     => p_clev_rec.cle_id,
6495                                          x_end_date   => r_clev_rec.end_date);
6496          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6497             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6498          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6499             RAISE OKL_API.G_EXCEPTION_ERROR;
6500          END IF;
6501        END IF;
6502        IF (p_clev_rec.start_date IS NULL OR
6503            p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
6504          x_return_status := get_start_date(p_dnz_chr_id => null,
6505                                            p_cle_id     => p_clev_rec.cle_id,
6506                                            x_start_date => r_clev_rec.start_date);
6507          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6508             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6509          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6510             RAISE OKL_API.G_EXCEPTION_ERROR;
6511          END IF;
6512        END IF;
6513        IF (p_clev_rec.currency_code IS NULL OR
6514           p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
6515          x_return_status := get_currency_code(p_dnz_chr_id    => null,
6516                                               p_cle_id        => p_clev_rec.cle_id,
6517                                               x_currency_code => r_clev_rec.currency_code);
6518          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6519            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6520          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6521            RAISE OKL_API.G_EXCEPTION_ERROR;
6522          END IF;
6523        END IF;
6524        OPEN get_dis_seq_qty(r_clev_rec.cle_id,
6525                             r_clev_rec.dnz_chr_id);
6526        IF get_dis_seq_qty%NOTFOUND THEN
6527          OKL_API.set_message(p_app_name => G_APP_NAME,
6528                              p_msg_name => G_LINE_RECORD);
6529           RAISE OKL_API.G_EXCEPTION_ERROR;
6530        END IF;
6531        FETCH get_dis_seq_qty INTO ln_display_sequence,
6532                                   ln_num_of_items;
6533        CLOSE get_dis_seq_qty;
6534        IF (p_clev_rec.display_sequence IS NULL OR
6535            p_clev_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
6536          r_clev_rec.display_sequence := ln_display_sequence + 1;
6537        END IF;
6538        -- Calling the Process
6539        OKL_CONTRACT_PUB.create_contract_line(p_api_version   => p_api_version,
6540                                              p_init_msg_list => p_init_msg_list,
6541                                              x_return_status => x_return_status,
6542                                              x_msg_count     => x_msg_count,
6543                                              x_msg_data      => x_msg_data,
6544                                              p_clev_rec      => r_clev_rec,
6545                                              p_klev_rec      => p_klev_rec,
6546                                              x_clev_rec      => x_clev_rec,
6547                                              x_klev_rec      => x_klev_rec);
6548        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6549          OKL_API.set_message(p_app_name     => G_APP_NAME,
6550                              p_msg_name     => G_CREATION_ADDON_LINE);
6551           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6552        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6553          OKL_API.set_message(p_app_name     => G_APP_NAME,
6554                              p_msg_name     => G_CREATION_ADDON_LINE);
6555           RAISE OKL_API.G_EXCEPTION_ERROR;
6556        END IF;
6557        l_cimv_rec                   := p_cimv_rec;
6558        l_cimv_rec.cle_id            := x_clev_rec.id;
6559        l_cimv_rec.dnz_chr_id        := x_clev_rec.dnz_chr_id;
6560        l_cimv_rec.jtot_object1_code := 'OKX_SYSITEM';
6561        -- Check the number of items
6562        IF l_cimv_rec.number_of_items <> ln_num_of_items THEN
6563            OKL_API.set_message(p_app_name => G_APP_NAME,
6564                                p_msg_name => G_ITEM_RECORD);
6565             RAISE OKL_API.G_EXCEPTION_ERROR;
6566        END IF;
6567        -- Creation of Item Record for the above record information
6568        OKL_OKC_MIGRATION_PVT.create_contract_item(p_api_version   => p_api_version,
6569                                                   p_init_msg_list => p_init_msg_list,
6570                                                   x_return_status => x_return_status,
6571                                                   x_msg_count     => x_msg_count,
6572                                                   x_msg_data      => x_msg_data,
6573                                                   p_cimv_rec      => l_cimv_rec,
6574                                                   x_cimv_rec      => x_cimv_rec);
6575        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6576          OKL_API.set_message(p_app_name     => G_APP_NAME,
6577                              p_msg_name     => G_CREATION_ADDON_ITEM);
6578            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6579        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6580          OKL_API.set_message(p_app_name     => G_APP_NAME,
6581                              p_msg_name     => G_CREATION_ADDON_ITEM);
6582            RAISE OKL_API.G_EXCEPTION_ERROR;
6583        END IF;
6584     ELSE
6585        OKL_API.set_message(p_app_name     => G_APP_NAME,
6586                            p_msg_name     => G_LINE_STYLE);
6587       RAISE OKL_API.G_EXCEPTION_ERROR;
6588     END IF;
6589     OKL_API.END_ACTIVITY (x_msg_count,
6590                           x_msg_data );
6591   EXCEPTION
6592     WHEN OKL_API.G_EXCEPTION_ERROR THEN
6593     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6594                                l_api_name,
6595                                G_PKG_NAME,
6596                                'OKL_API.G_RET_STS_ERROR',
6597                                x_msg_count,
6598                                x_msg_data,
6599                                '_PVT');
6600     IF get_dis_seq_qty%ISOPEN THEN
6601        CLOSE get_dis_seq_qty;
6602     END IF;
6603     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6604     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6605                               l_api_name,
6606                               G_PKG_NAME,
6607                               'OKL_API.G_RET_STS_UNEXP_ERROR',
6608                               x_msg_count,
6609                               x_msg_data,
6610                               '_PVT');
6611     WHEN OTHERS THEN
6612     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6613                               l_api_name,
6614                               G_PKG_NAME,
6615                               'OTHERS',
6616                               x_msg_count,
6617                               x_msg_data,
6618                               '_PVT');
6619     IF get_dis_seq_qty%ISOPEN THEN
6620        CLOSE get_dis_seq_qty;
6621     END IF;
6622   END create_addon_line_item_rec;
6623 -----------------------------------------------------------------------------------------------------------
6624   PROCEDURE Update_addon_line_item_rec(p_api_version    IN  NUMBER,
6625                                        p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
6626                                        x_return_status  OUT NOCOPY VARCHAR2,
6627                                        x_msg_count      OUT NOCOPY NUMBER,
6628                                        x_msg_data       OUT NOCOPY VARCHAR2,
6629                                        p_lty_code       IN  OKC_LINE_STYLES_V.LTY_CODE%TYPE,
6630                                        p_clev_rec       IN  clev_rec_type,
6631                                        p_klev_rec       IN  klev_rec_type,
6632                                        p_cimv_rec       IN  cimv_rec_type,
6633                                        x_clev_rec       OUT NOCOPY clev_rec_type,
6634                                        x_klev_rec       OUT NOCOPY klev_rec_type,
6635                                        x_cimv_rec       OUT NOCOPY cimv_rec_type) IS
6636     l_clev_rec               clev_rec_type;
6637     l_klev_rec               klev_rec_type;
6638     l_cimv_rec               cimv_rec_type;
6639     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
6640     i                        NUMBER;
6641     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_AO_LNE_ITEM';
6642     ln_display_sequence      OKC_K_LINES_V.DISPLAY_SEQUENCE%TYPE;
6643     ln_num_of_items          OKC_K_ITEMS.NUMBER_OF_ITEMS%TYPE;
6644 
6645     CURSOR get_dis_seq_qty(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
6646                            P_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
6647     SELECT cle.display_sequence,
6648            cim.number_of_items
6649     FROM okc_line_styles_b lse2,
6650          okc_line_styles_b lse1,
6651          okc_k_items cim,
6652          okc_k_lines_b cle
6653     WHERE cle.id = p_cle_id
6654     AND cle.dnz_chr_id = p_dnz_chr_id
6655     AND cle.id = cim.cle_id
6656     AND cim.dnz_chr_id = cle.dnz_chr_id
6657     AND lse1.id = cle.lse_id
6658     AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
6659     AND lse1.lse_parent_id = lse2.id
6660     AND lse2.lty_code = G_FIN_LINE_LTY_CODE;
6661 
6662   BEGIN
6663     x_return_status     := OKL_API.G_RET_STS_SUCCESS;
6664     -- Call start_activity to create savepoint, check compatibility
6665     -- and initialize message list
6666     x_return_status := OKL_API.START_ACTIVITY (l_api_name
6667                                                ,p_init_msg_list
6668                                                ,'_PVT'
6669                                                ,x_return_status);
6670     -- Check if activity started successfully
6671     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6672        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6673     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6674        RAISE OKL_API.G_EXCEPTION_ERROR;
6675     END IF;
6676     validate_cle_lse_id(p_clev_rec      => p_clev_rec,
6677                         p_lty_code      => p_lty_code,
6678                         x_lty_code      => l_lty_code,
6679                         x_return_status => x_return_status);
6680     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6681        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6682     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6683        RAISE OKL_API.G_EXCEPTION_ERROR;
6684     END IF;
6685     x_return_status := get_rec_klev(p_clev_rec.id,
6686                                     l_klev_rec);
6687     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6688        OKL_API.set_message(p_app_name     => G_APP_NAME,
6689                            p_msg_name     => G_FETCHING_INFO,
6690                            p_token1       => G_REC_NAME_TOKEN,
6691                            p_token1_value => 'OKL_K_LINES_V Record');
6692        RAISE G_EXCEPTION_HALT_VALIDATION;
6693     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6694        OKL_API.set_message(p_app_name     => G_APP_NAME,
6695                            p_msg_name     => G_FETCHING_INFO,
6696                            p_token1       => G_REC_NAME_TOKEN,
6697                            p_token1_value => 'OKL_K_LINES_V Record');
6698        RAISE G_EXCEPTION_HALT_VALIDATION;
6699     END IF;
6700     -- since Add on is a sub line of Model line we have to check weather
6701     -- which line are creating under which line
6702     IF l_lty_code = G_MODEL_LINE_LTY_CODE THEN
6703       -- Now the all the records are there we can create ADD on  Line
6704       -- Calling the Process
6705        l_clev_rec    := p_clev_rec;
6706        OPEN get_dis_seq_qty(l_clev_rec.cle_id,
6707                             l_clev_rec.dnz_chr_id);
6708        IF get_dis_seq_qty%NOTFOUND THEN
6709          OKL_API.set_message(p_app_name => G_APP_NAME,
6710                              p_msg_name => G_LINE_RECORD);
6711           RAISE OKL_API.G_EXCEPTION_ERROR;
6712        END IF;
6713        FETCH get_dis_seq_qty INTO ln_display_sequence,
6714                                   ln_num_of_items;
6715        CLOSE get_dis_seq_qty;
6716        IF (p_clev_rec.display_sequence IS NULL OR
6717            p_clev_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
6718          l_clev_rec.display_sequence := ln_display_sequence + 1;
6719        END IF;
6720       OKL_CONTRACT_PUB.update_contract_line(p_api_version   => p_api_version,
6721                                             p_init_msg_list => p_init_msg_list,
6722                                             x_return_status => x_return_status,
6723                                             x_msg_count     => x_msg_count,
6724                                             x_msg_data      => x_msg_data,
6725                                             p_clev_rec      => l_clev_rec,
6726                                             p_klev_rec      => l_klev_rec,
6727                                             x_clev_rec      => x_clev_rec,
6728                                             x_klev_rec      => x_klev_rec);
6729       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6730          OKL_API.set_message(p_app_name     => G_APP_NAME,
6731                              p_msg_name     => G_UPDATING_ADDON_LINE);
6732          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6733       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6734          OKL_API.set_message(p_app_name     => G_APP_NAME,
6735                              p_msg_name     => G_UPDATING_ADDON_LINE);
6736          RAISE OKL_API.G_EXCEPTION_ERROR;
6737       END IF;
6738       l_cimv_rec                      := p_cimv_rec;
6739       x_return_status := get_rec_cimv(x_clev_rec.id,
6740                                       x_clev_rec.dnz_chr_id,
6741                                       l_cimv_rec);
6742       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6743        OKL_API.set_message(p_app_name     => G_APP_NAME,
6744                            p_msg_name     => G_FETCHING_INFO,
6745                            p_token1       => G_REC_NAME_TOKEN,
6746                            p_token1_value => 'OKC_K_ITEMS_V Record');
6747          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6748       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6749        OKL_API.set_message(p_app_name     => G_APP_NAME,
6750                            p_msg_name     => G_FETCHING_INFO,
6751                            p_token1       => G_REC_NAME_TOKEN,
6752                            p_token1_value => 'OKC_K_ITEMS_V Record');
6753          RAISE OKL_API.G_EXCEPTION_ERROR;
6754       END IF;
6755       IF l_cimv_rec.cle_id <> x_clev_rec.id THEN
6756           OKL_API.set_message(p_app_name     => G_APP_NAME,
6757                               p_msg_name     => G_ITEM_RECORD);
6758           RAISE OKL_API.G_EXCEPTION_ERROR;
6759       END IF;
6760       IF l_cimv_rec.dnz_chr_id <> x_clev_rec.dnz_chr_id THEN
6761           OKL_API.set_message(p_app_name     => G_APP_NAME,
6762                               p_msg_name     => G_ITEM_RECORD);
6763           RAISE OKL_API.G_EXCEPTION_ERROR;
6764       END IF;
6765       -- We have the below has to been given from the screen
6766       l_cimv_rec.object1_id1     := p_cimv_rec.object1_id1;
6767       l_cimv_rec.object1_id2     := p_cimv_rec.object1_id2;
6768       l_cimv_rec.number_of_items := p_cimv_rec.number_of_items;
6769       -- Check the number of items
6770       IF l_cimv_rec.number_of_items <> ln_num_of_items THEN
6771           OKL_API.set_message(p_app_name => G_APP_NAME,
6772                               p_msg_name => G_ITEM_RECORD);
6773            RAISE OKL_API.G_EXCEPTION_ERROR;
6774       END IF;
6775       -- Creation of Item Record for the above record information
6776       OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version   => p_api_version,
6777                                                  p_init_msg_list => p_init_msg_list,
6778                                                  x_return_status => x_return_status,
6779                                                  x_msg_count     => x_msg_count,
6780                                                  x_msg_data      => x_msg_data,
6781                                                  p_cimv_rec      => l_cimv_rec,
6782                                                  x_cimv_rec      => x_cimv_rec);
6783       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6784           OKL_API.set_message(p_app_name     => G_APP_NAME,
6785                               p_msg_name     => G_UPDATING_ADDON_ITEM);
6786           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6787       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6788           OKL_API.set_message(p_app_name     => G_APP_NAME,
6789                               p_msg_name     => G_UPDATING_ADDON_ITEM);
6790           RAISE OKL_API.G_EXCEPTION_ERROR;
6791       END IF;
6792     ELSE
6793        OKL_API.set_message(p_app_name     => G_APP_NAME,
6794                            p_msg_name     => G_LINE_STYLE);
6795       RAISE OKL_API.G_EXCEPTION_ERROR;
6796     END IF;
6797     OKL_API.END_ACTIVITY (x_msg_count,
6798                           x_msg_data );
6799   EXCEPTION
6800     WHEN OKL_API.G_EXCEPTION_ERROR THEN
6801     IF get_dis_seq_qty%ISOPEN THEN
6802        CLOSE get_dis_seq_qty;
6803     END IF;
6804     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6805                                l_api_name,
6806                                G_PKG_NAME,
6807                                'OKL_API.G_RET_STS_ERROR',
6808                                x_msg_count,
6809                                x_msg_data,
6810                                '_PVT');
6811     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6812     IF get_dis_seq_qty%ISOPEN THEN
6813        CLOSE get_dis_seq_qty;
6814     END IF;
6815     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6816                               l_api_name,
6817                               G_PKG_NAME,
6818                               'OKL_API.G_RET_STS_UNEXP_ERROR',
6819                               x_msg_count,
6820                               x_msg_data,
6821                               '_PVT');
6822     WHEN OTHERS THEN
6823     IF get_dis_seq_qty%ISOPEN THEN
6824        CLOSE get_dis_seq_qty;
6825     END IF;
6826     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6827                               l_api_name,
6828                               G_PKG_NAME,
6829                               'OTHERS',
6830                               x_msg_count,
6831                               x_msg_data,
6832                               '_PVT');
6833   END Update_addon_line_item_rec;
6834 -------------------------------------------------------------------------------------------------------
6835   Procedure create_addon_line_rec(
6836             p_api_version     IN  NUMBER,
6837             p_init_msg_list   IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
6838             x_return_status   OUT NOCOPY VARCHAR2,
6839             x_msg_count       OUT NOCOPY NUMBER,
6840             x_msg_data        OUT NOCOPY VARCHAR2,
6841             P_new_yn          IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
6842             p_asset_number    IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
6843             p_clev_rec        IN  clev_rec_type,
6844             p_klev_rec        IN  klev_rec_type,
6845             p_cimv_rec        IN  cimv_rec_type,
6846             x_clev_rec        OUT NOCOPY clev_rec_type,
6847             x_klev_rec        OUT NOCOPY klev_rec_type,
6848             x_cimv_rec        OUT NOCOPY cimv_rec_type) IS
6849     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_AO_LNE_REC';
6850     l_clev_rec               clev_rec_type;
6851     -- Variables for validation of line style
6852     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
6853     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
6854     ln_fa_id                 OKC_K_LINES_V.ID%TYPE;
6855 
6856     CURSOR get_fa_id(p_top_line OKC_K_LINES_V.ID%TYPE,
6857                      p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE)
6858     IS
6859     SELECT cle.id
6860     FROM okc_subclass_top_line stl,
6861          okc_line_styles_b lse2,
6862          okc_line_styles_b lse1,
6863          okc_k_lines_b cle
6864     WHERE cle.dnz_chr_id = p_dnz_chr_id
6865     AND cle.lse_id = lse1.id
6866     AND lse1.lty_code = G_FA_LINE_LTY_CODE
6867     AND lse1.lse_parent_id = lse2.id
6868     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
6869     AND lse2.id = stl.lse_id
6870     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE)
6871     AND cle.cle_id in (SELECT distinct to_char(cle.cle_id)
6872                        FROM okc_subclass_top_line stl,
6873                             okc_line_styles_b lse2,
6874                             okc_line_styles_b lse1,
6875                             okc_k_lines_b cle
6876                        WHERE cle.id = p_top_line
6877                        AND cle.dnz_chr_id = p_dnz_chr_id
6878                        AND cle.lse_id = lse1.id
6879                        AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
6880                        AND lse1.lse_parent_id = lse2.id
6881                        AND lse2.lty_code = G_FIN_LINE_LTY_CODE
6882                        AND lse2.id = stl.lse_id
6883                        AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE));
6884   BEGIN
6885     x_return_status := OKL_API.G_RET_STS_SUCCESS;
6886     -- Call start_activity to create savepoint, check compatibility
6887     -- and initialize message list
6888     x_return_status := OKL_API.START_ACTIVITY (
6889                                l_api_name
6890                                ,p_init_msg_list
6891                                ,'_PVT'
6892                                ,x_return_status);
6893     -- Check if activity started successfully
6894     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6895        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6896     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6897        RAISE OKL_API.G_EXCEPTION_ERROR;
6898     END IF;
6899     -- To Check We Got the Valid info
6900     IF UPPER(p_new_yn) NOT IN ('Y','N') OR
6901        (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
6902        UPPER(p_new_yn) IS NULL) THEN
6903       OKL_API.set_message(p_app_name     => G_APP_NAME,
6904                           p_msg_name     => G_INVALID_YN,
6905                           p_token1       => G_COL_NAME_TOKEN,
6906                           p_token1_value => 'p_new_yn');
6907        -- Halt Validation
6908        RAISE OKL_API.G_EXCEPTION_ERROR;
6909     END IF;
6910     -- Validate to see if the asset_number given is not null
6911     -- and also Validate asset_number does not exists
6912     -- in OKL_TXL_ASSETS_V
6913     OPEN  get_fa_id(p_top_line =>   p_clev_rec.cle_id,
6914                     p_dnz_chr_id => p_clev_rec.dnz_chr_id);
6915     IF get_fa_id%NOTFOUND THEN
6916       OKL_API.set_message(p_app_name => G_APP_NAME,
6917                           p_msg_name => G_LINE_RECORD);
6918       RAISE OKL_API.G_EXCEPTION_ERROR;
6919     END IF;
6920     FETCH get_fa_id INTO ln_fa_id;
6921     CLOSE get_fa_id;
6922 
6923     IF UPPER(p_new_yn) = 'Y' THEN
6924        validate_new_ast_num_update(x_return_status  => x_return_status,
6925                                    p_asset_number   => p_asset_number,
6926                                    p_kle_id         => ln_fa_id,
6927                                    p_dnz_chr_id     => p_clev_rec.dnz_chr_id);
6928        -- Check if activity started successfully
6929        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6930           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6931        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6932           RAISE OKL_API.G_EXCEPTION_ERROR;
6933        END IF;
6934     END IF;
6935     -- Validate Line Style id and get the line type code
6936     -- and line style type for further processing
6937     validate_lse_id(p_clev_rec      => p_clev_rec,
6938                     x_return_status => x_return_status,
6939                     x_lty_code      => l_lty_code,
6940                     x_lse_type      => l_lse_type);
6941     -- Check if activity started successfully
6942     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6943        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6944     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6945        RAISE OKL_API.G_EXCEPTION_ERROR;
6946     END IF;
6947     -- Validate the Dnz_Chr_id
6948     validate_dnz_chr_id(p_clev_rec      => p_clev_rec,
6949                         x_return_status => x_return_status);
6950     -- Check if activity started successfully
6951     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6952       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6953     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6954       RAISE OKL_API.G_EXCEPTION_ERROR;
6955     END IF;
6956     -- Now we are creating Add on Line
6957     -- Here we have have Dnz_Chr_id ,lse_id and cle_id
6958     -- The Record Should have the cle_id
6959     -- if the given line style is Add on Line
6960     -- Since there could be mutilple records we have to accept
6961     l_clev_rec := p_clev_rec;
6962     IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
6963        l_clev_rec.chr_id IS NULL) AND
6964        (l_clev_rec.dnz_chr_id IS NOT NULL OR
6965        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
6966        (l_clev_rec.cle_id IS NOT NULL OR
6967        l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
6968        l_lty_code = G_ADDON_LINE_LTY_CODE AND
6969        l_lse_type = G_SLS_TYPE THEN
6970        create_addon_line_item_rec(p_api_version   => p_api_version,
6971                                   p_init_msg_list => p_init_msg_list,
6972                                   x_return_status => x_return_status,
6973                                   x_msg_count     => x_msg_count,
6974                                   x_msg_data      => x_msg_data,
6975                                   p_lty_code      => l_lty_code,
6976                                   p_clev_rec      => p_clev_rec,
6977                                   p_klev_rec      => p_klev_rec,
6978                                   p_cimv_rec      => p_cimv_rec,
6979                                   x_clev_rec      => x_clev_rec,
6980                                   x_klev_rec      => x_klev_rec,
6981                                   x_cimv_rec      => x_cimv_rec);
6982        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6983           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6984        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6985           RAISE OKL_API.G_EXCEPTION_ERROR;
6986        END IF;
6987     ELSE
6988       OKL_API.set_message(p_app_name     => G_APP_NAME,
6989                           p_msg_name     => G_INVALID_CRITERIA,
6990                           p_token1       => G_COL_NAME_TOKEN,
6991                           p_token1_value => 'Add on line');
6992        x_return_status := OKL_API.G_RET_STS_ERROR;
6993        RAISE OKL_API.G_EXCEPTION_ERROR;
6994     END IF;
6995     OKL_API.END_ACTIVITY (x_msg_count,
6996                           x_msg_data );
6997   EXCEPTION
6998     WHEN OKL_API.G_EXCEPTION_ERROR THEN
6999     IF get_fa_id%ISOPEN THEN
7000       CLOSE get_fa_id;
7001     END IF;
7002     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7003                                l_api_name,
7004                                G_PKG_NAME,
7005                                'OKL_API.G_RET_STS_ERROR',
7006                                x_msg_count,
7007                                x_msg_data,
7008                                '_PVT');
7009     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7010     IF get_fa_id%ISOPEN THEN
7011       CLOSE get_fa_id;
7012     END IF;
7013     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7014                               l_api_name,
7015                               G_PKG_NAME,
7016                               'OKL_API.G_RET_STS_UNEXP_ERROR',
7017                               x_msg_count,
7018                               x_msg_data,
7019                               '_PVT');
7020     WHEN OTHERS THEN
7021     IF get_fa_id%ISOPEN THEN
7022       CLOSE get_fa_id;
7023     END IF;
7024     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7025                               l_api_name,
7026                               G_PKG_NAME,
7027                               'OTHERS',
7028                               x_msg_count,
7029                               x_msg_data,
7030                               '_PVT');
7031   END create_addon_line_rec;
7032 -------------------------------------------------------------------------------------------------------
7033   Procedure Update_addon_line_rec(
7034             p_api_version     IN  NUMBER,
7035             p_init_msg_list   IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
7036             x_return_status   OUT NOCOPY VARCHAR2,
7037             x_msg_count       OUT NOCOPY NUMBER,
7038             x_msg_data        OUT NOCOPY VARCHAR2,
7039             P_new_yn          IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
7040             p_asset_number    IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
7041             p_clev_rec        IN  clev_rec_type,
7042             p_klev_rec        IN  klev_rec_type,
7043             p_cimv_rec        IN  cimv_rec_type,
7044             x_clev_rec        OUT NOCOPY clev_rec_type,
7045             x_klev_rec        OUT NOCOPY klev_rec_type,
7046             x_cimv_rec        OUT NOCOPY cimv_rec_type) IS
7047     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_AO_LNE_REC';
7048     l_clev_rec               clev_rec_type;
7049     -- Variables for validation of line style
7050     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
7051     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
7052     ln_fa_id                 OKC_K_LINES_V.ID%TYPE;
7053 
7054     CURSOR get_fa_id(p_top_line OKC_K_LINES_V.ID%TYPE,
7055                      p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE)
7056     IS
7057     SELECT cle.id
7058     FROM okc_subclass_top_line stl,
7059          okc_line_styles_b lse2,
7060          okc_line_styles_b lse1,
7061          okc_k_lines_b cle
7062     WHERE cle.dnz_chr_id = p_dnz_chr_id
7063     AND cle.lse_id = lse1.id
7064     AND lse1.lty_code = G_FA_LINE_LTY_CODE
7065     AND lse1.lse_parent_id = lse2.id
7066     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
7067     AND lse2.id = stl.lse_id
7068     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE)
7069     AND cle.cle_id in (SELECT distinct to_char(cle.cle_id)
7070                        FROM okc_subclass_top_line stl,
7071                             okc_line_styles_b lse2,
7072                             okc_line_styles_b lse1,
7073                             okc_k_lines_b cle
7074                        WHERE cle.id = p_top_line
7075                        AND cle.dnz_chr_id = p_dnz_chr_id
7076                        AND cle.lse_id = lse1.id
7077                        AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
7078                        AND lse1.lse_parent_id = lse2.id
7079                        AND lse2.lty_code = G_FIN_LINE_LTY_CODE
7080                        AND lse2.id = stl.lse_id
7081                        AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE));
7082   BEGIN
7083     x_return_status := OKL_API.G_RET_STS_SUCCESS;
7084     -- Call start_activity to create savepoint, check compatibility
7085     -- and initialize message list
7086     x_return_status := OKL_API.START_ACTIVITY (
7087                                l_api_name
7088                                ,p_init_msg_list
7089                                ,'_PVT'
7090                                ,x_return_status);
7091     -- Check if activity started successfully
7092     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7093        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7094     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7095        RAISE OKL_API.G_EXCEPTION_ERROR;
7096     END IF;
7097     l_clev_rec := p_clev_rec;
7098     x_return_status := get_sts_code(p_dnz_chr_id => null,
7099                                     p_cle_id     => l_clev_rec.cle_id,
7100                                     x_sts_code   => l_clev_rec.sts_code);
7101     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7102        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7103     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7104        RAISE OKL_API.G_EXCEPTION_ERROR;
7105     END IF;
7106     validate_sts_code(p_clev_rec       => l_clev_rec,
7107                       x_return_status  => x_return_status);
7108     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7109        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7110     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7111        RAISE OKL_API.G_EXCEPTION_ERROR;
7112     END IF;
7113     OPEN  get_fa_id(p_top_line =>   l_clev_rec.cle_id,
7114                     p_dnz_chr_id => l_clev_rec.dnz_chr_id);
7115     IF get_fa_id%NOTFOUND THEN
7116       OKL_API.set_message(p_app_name => G_APP_NAME,
7117                           p_msg_name => G_LINE_RECORD);
7118       RAISE OKL_API.G_EXCEPTION_ERROR;
7119     END IF;
7120     FETCH get_fa_id INTO ln_fa_id;
7121     CLOSE get_fa_id;
7122     -- To Check We Got the Valid info
7123     IF UPPER(p_new_yn) NOT IN ('Y','N') OR
7124        (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
7125        UPPER(p_new_yn) IS NULL) THEN
7126       OKL_API.set_message(p_app_name     => G_APP_NAME,
7127                           p_msg_name     => G_INVALID_YN,
7128                           p_token1       => G_COL_NAME_TOKEN,
7129                           p_token1_value => 'p_new_yn');
7130        -- Halt Validation
7131        RAISE OKL_API.G_EXCEPTION_ERROR;
7132     END IF;
7133     -- Validate to see if the asset_number given is not null
7134     -- and also Validate asset_number does not exists
7135     -- in OKL_TXL_ASSETS_V
7136     IF UPPER(p_new_yn) = 'Y' THEN
7137        validate_new_ast_num_update(x_return_status  => x_return_status,
7138                                    p_asset_number   => p_asset_number,
7139                                    p_kle_id         => ln_fa_id,
7140                                    p_dnz_chr_id     => l_clev_rec.dnz_chr_id);
7141        -- Check if activity started successfully
7142        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7143           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7144        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7145           RAISE OKL_API.G_EXCEPTION_ERROR;
7146        END IF;
7147     END IF;
7148     x_return_status := get_lse_id(p_lty_code => G_ADDON_LINE_LTY_CODE,
7149                                   x_lse_id   => l_clev_rec.lse_id);
7150     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7151       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7152     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7153       RAISE OKL_API.G_EXCEPTION_ERROR;
7154     END IF;
7155     -- Validate Line Style id and get the line type code
7156     -- and line style type for further processing
7157     validate_lse_id(p_clev_rec      => l_clev_rec,
7158                     x_return_status => x_return_status,
7159                     x_lty_code      => l_lty_code,
7160                     x_lse_type      => l_lse_type);
7161     -- Check if activity started successfully
7162     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7163        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7164     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7165        RAISE OKL_API.G_EXCEPTION_ERROR;
7166     END IF;
7167     -- Validate the Dnz_Chr_id
7168     validate_dnz_chr_id(p_clev_rec      => l_clev_rec,
7169                         x_return_status => x_return_status);
7170     -- Check if activity started successfully
7171     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7172       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7173     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7174       RAISE OKL_API.G_EXCEPTION_ERROR;
7175     END IF;
7176     -- Now we are updating Add on Line
7177     -- Here we have have Dnz_Chr_id ,lse_id and cle_id
7178     -- The Record Should have the cle_id
7179     -- if the given line style is Add on Line
7180     -- Since there could be mutilple records we have to accept
7181     IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
7182        l_clev_rec.chr_id IS NULL) AND
7183        (l_clev_rec.dnz_chr_id IS NOT NULL OR
7184        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
7185        (l_clev_rec.cle_id IS NOT NULL OR
7186        l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
7187        l_lty_code =  G_ADDON_LINE_LTY_CODE AND
7188        l_lse_type = G_SLS_TYPE THEN
7189        update_addon_line_item_rec(p_api_version   => p_api_version,
7190                                   p_init_msg_list => p_init_msg_list,
7191                                   x_return_status => x_return_status,
7192                                   x_msg_count     => x_msg_count,
7193                                   x_msg_data      => x_msg_data,
7194                                   p_lty_code      => l_lty_code,
7195                                   p_clev_rec      => l_clev_rec,
7196                                   p_klev_rec      => p_klev_rec,
7197                                   p_cimv_rec      => p_cimv_rec,
7198                                   x_clev_rec      => x_clev_rec,
7199                                   x_klev_rec      => x_klev_rec,
7200                                   x_cimv_rec      => x_cimv_rec);
7201        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7202           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7203        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7204           RAISE OKL_API.G_EXCEPTION_ERROR;
7205        END IF;
7206     ELSE
7207       OKL_API.set_message(p_app_name     => G_APP_NAME,
7208                           p_msg_name     => G_INVALID_CRITERIA,
7209                           p_token1       => G_COL_NAME_TOKEN,
7210                           p_token1_value => 'Add on line');
7211        x_return_status := OKL_API.G_RET_STS_ERROR;
7212        RAISE OKL_API.G_EXCEPTION_ERROR;
7213     END IF;
7214     OKL_API.END_ACTIVITY (x_msg_count,
7215                           x_msg_data );
7216   EXCEPTION
7217     WHEN OKL_API.G_EXCEPTION_ERROR THEN
7218     IF get_fa_id%ISOPEN THEN
7219       CLOSE get_fa_id;
7220     END IF;
7221     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7222                                l_api_name,
7223                                G_PKG_NAME,
7224                                'OKL_API.G_RET_STS_ERROR',
7225                                x_msg_count,
7226                                x_msg_data,
7227                                '_PVT');
7228     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7229     IF get_fa_id%ISOPEN THEN
7230       CLOSE get_fa_id;
7231     END IF;
7232     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7233                               l_api_name,
7234                               G_PKG_NAME,
7235                               'OKL_API.G_RET_STS_UNEXP_ERROR',
7236                               x_msg_count,
7237                               x_msg_data,
7238                               '_PVT');
7239     WHEN OTHERS THEN
7240     IF get_fa_id%ISOPEN THEN
7241       CLOSE get_fa_id;
7242     END IF;
7243     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7244                               l_api_name,
7245                               G_PKG_NAME,
7246                               'OTHERS',
7247                               x_msg_count,
7248                               x_msg_data,
7249                               '_PVT');
7250   END Update_addon_line_rec;
7251 -------------------------------------------------------------------------------------------------------
7252   PROCEDURE delete_addon_line_rec(
7253             p_api_version    IN  NUMBER,
7254             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
7255             x_return_status  OUT NOCOPY VARCHAR2,
7256             x_msg_count      OUT NOCOPY NUMBER,
7257             x_msg_data       OUT NOCOPY VARCHAR2,
7258             p_clev_rec       IN  clev_rec_type,
7259             p_klev_rec       IN  klev_rec_type,
7260             x_clev_rec       OUT NOCOPY clev_rec_type) IS
7261     l_api_name      CONSTANT VARCHAR2(30) := 'DEL_ADDON_REC';
7262     l_delete_clev_rec        clev_rec_type;
7263     l_delete_klev_rec        klev_rec_type;
7264     -- Variables for validation of line style
7265     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
7266     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
7267   BEGIN
7268     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
7269     -- Call start_activity to create savepoint, check compatibility
7270     -- and initialize message list
7271     x_return_status := OKL_API.START_ACTIVITY (
7272                                l_api_name
7273                                ,p_init_msg_list
7274                                ,'_PVT'
7275                                ,x_return_status);
7276     -- Check if activity started successfully
7277     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7278        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7279     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7280        RAISE OKL_API.G_EXCEPTION_ERROR;
7281     END IF;
7282     OKL_API.init_msg_list(p_init_msg_list);
7283     l_delete_clev_rec := p_clev_rec;
7284     -- To Get the cle top Line Record
7285     x_return_status := get_rec_clev(p_clev_rec.id,
7286                                     l_delete_clev_rec);
7287     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7288        OKL_API.set_message(p_app_name     => G_APP_NAME,
7289                            p_msg_name     => G_FETCHING_INFO,
7290                            p_token1       => G_REC_NAME_TOKEN,
7291                            p_token1_value => 'OKC_K_LINES_V Record');
7292        RAISE G_EXCEPTION_HALT_VALIDATION;
7293     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7294        OKL_API.set_message(p_app_name     => G_APP_NAME,
7295                            p_msg_name     => G_FETCHING_INFO,
7296                            p_token1       => G_REC_NAME_TOKEN,
7297                            p_token1_value => 'OKC_K_LINES_V Record');
7298        RAISE G_EXCEPTION_HALT_VALIDATION;
7299     END IF;
7300     -- To Get the kle top Line Record
7301     x_return_status := get_rec_klev(p_clev_rec.id,
7302                                     l_delete_klev_rec);
7303     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7304        OKL_API.set_message(p_app_name     => G_APP_NAME,
7305                            p_msg_name     => G_FETCHING_INFO,
7306                            p_token1       => G_REC_NAME_TOKEN,
7307                            p_token1_value => 'OKL_K_LINES_V Record');
7308        RAISE G_EXCEPTION_HALT_VALIDATION;
7309     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7310        OKL_API.set_message(p_app_name     => G_APP_NAME,
7311                            p_msg_name     => G_FETCHING_INFO,
7312                            p_token1       => G_REC_NAME_TOKEN,
7313                            p_token1_value => 'OKL_K_LINES_V Record');
7314        RAISE G_EXCEPTION_HALT_VALIDATION;
7315     END IF;
7316     IF l_delete_klev_rec.id <> l_delete_clev_rec.id THEN
7317        OKL_API.set_message(p_app_name     => G_APP_NAME,
7318                            p_msg_name     => G_LINE_RECORD);
7319        RAISE G_EXCEPTION_HALT_VALIDATION;
7320     END IF;
7321     validate_sts_code(p_clev_rec       => l_delete_clev_rec,
7322                       x_return_status  => x_return_status);
7323     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7324        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7325     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7326        RAISE OKL_API.G_EXCEPTION_ERROR;
7327     END IF;
7328     -- Validate Line Style id and get the line type code
7329     -- and line style type for further processing
7330     validate_lse_id(p_clev_rec      => l_delete_clev_rec,
7331                     x_return_status => x_return_status,
7332                     x_lty_code      => l_lty_code,
7333                     x_lse_type      => l_lse_type);
7334     -- Check if activity started successfully
7335     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7336        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7337     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7338        RAISE OKL_API.G_EXCEPTION_ERROR;
7339     END IF;
7340     -- Validate the Dnz_Chr_id
7341     validate_dnz_chr_id(p_clev_rec      => l_delete_clev_rec,
7342                         x_return_status => x_return_status);
7343     -- Check if activity started successfully
7344     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7345        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7346     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7347        RAISE OKL_API.G_EXCEPTION_ERROR;
7348     END IF;
7349     -- Now we are deleting Add on Line
7350     -- Here we have have Dnz_Chr_id ,lse_id and cle_id
7351     -- The Record Should have the cle_id
7352     -- if the given line style is Add on Line
7353     -- Since there could be mutilple records we have to accept
7354     IF (l_delete_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
7355        l_delete_clev_rec.chr_id IS NULL) AND
7356        (l_delete_clev_rec.dnz_chr_id IS NOT NULL OR
7357        l_delete_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
7358        (l_delete_clev_rec.cle_id IS NOT NULL OR
7359        l_delete_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
7360        l_lty_code = G_ADDON_LINE_LTY_CODE AND
7361        l_lse_type = G_SLS_TYPE THEN
7362        OKL_CONTRACT_PUB.delete_contract_line(
7363                         p_api_version   => p_api_version,
7364                         p_init_msg_list => p_init_msg_list,
7365                         x_return_status => x_return_status,
7366                         x_msg_count     => x_msg_count,
7367                         x_msg_data      => x_msg_data,
7368                         p_line_id       => l_delete_clev_rec.id);
7369        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7370          OKL_API.set_message(p_app_name     => G_APP_NAME,
7371                              p_msg_name     => G_DELETING_ADDON_LINE);
7372          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7373        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7374          OKL_API.set_message(p_app_name     => G_APP_NAME,
7375                              p_msg_name     => G_DELETING_ADDON_LINE);
7376          RAISE OKL_API.G_EXCEPTION_ERROR;
7377        END IF;
7378     ELSE
7379       OKL_API.set_message(p_app_name     => G_APP_NAME,
7380                           p_msg_name     => G_INVALID_CRITERIA,
7381                           p_token1       => G_COL_NAME_TOKEN,
7382                           p_token1_value => 'Add on line');
7383        x_return_status := OKL_API.G_RET_STS_ERROR;
7384        RAISE OKL_API.G_EXCEPTION_ERROR;
7385     END IF;
7386     -- We need to the below since we need to calculate the OEC again
7387     x_clev_rec := l_delete_clev_rec;
7388     OKL_API.END_ACTIVITY (x_msg_count,
7389                           x_msg_data );
7390   EXCEPTION
7391     WHEN OKL_API.G_EXCEPTION_ERROR THEN
7392     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7393                                l_api_name,
7394                                G_PKG_NAME,
7395                                'OKL_API.G_RET_STS_ERROR',
7396                                x_msg_count,
7397                                x_msg_data,
7398                                '_PVT');
7399     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7400     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7401                               l_api_name,
7402                               G_PKG_NAME,
7403                               'OKL_API.G_RET_STS_UNEXP_ERROR',
7404                               x_msg_count,
7405                               x_msg_data,
7406                               '_PVT');
7407     WHEN OTHERS THEN
7408     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7409                               l_api_name,
7410                               G_PKG_NAME,
7411                               'OTHERS',
7412                               x_msg_count,
7413                               x_msg_data,
7414                               '_PVT');
7415   END delete_addon_line_rec;
7416 -------------------------------------------------------------------------------------------------
7417   PROCEDURE Create_inst_line(p_api_version    IN  NUMBER,
7418                              p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
7419                              x_return_status  OUT NOCOPY VARCHAR2,
7420                              x_msg_count      OUT NOCOPY NUMBER,
7421                              x_msg_data       OUT NOCOPY VARCHAR2,
7422 -- #4414408                             p_lty_code       IN  OKC_LINE_STYLES_V.LTY_CODE%TYPE,
7423                              p_clev_rec       IN  clev_rec_type,
7424                              p_klev_rec       IN  klev_rec_type,
7425                              x_clev_rec       OUT NOCOPY clev_rec_type,
7426                              x_klev_rec       OUT NOCOPY klev_rec_type) IS
7427     l_clev_rec               clev_rec_type;
7428     r_clev_rec               clev_rec_type;
7429 --    l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
7430 
7431     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_INSTS_LINE';
7432   BEGIN
7433 
7434     x_return_status         := OKL_API.G_RET_STS_SUCCESS;
7435     -- Call start_activity to create savepoint, check compatibility
7436     -- and initialize message list
7437     x_return_status := OKL_API.START_ACTIVITY (l_api_name
7438                                                ,p_init_msg_list
7439                                                ,'_PVT'
7440                                                ,x_return_status);
7441     -- Check if activity started successfully
7442     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7443        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7444     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7445        RAISE OKL_API.G_EXCEPTION_ERROR;
7446     END IF;
7447     -- 4414408 redundant validation
7448 /*
7449     -- Check the cle_id that is of the top Fin Asset line
7450     validate_cle_lse_id(p_clev_rec      => p_clev_rec,
7451                         p_lty_code      => p_lty_code,
7452                         x_lty_code      => l_lty_code,
7453                         x_return_status => x_return_status);
7454     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7455        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7456     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7457        RAISE OKL_API.G_EXCEPTION_ERROR;
7458     END IF;
7459 */
7460     -- since Fixed Assets Line  is a sub line of Fin Asset line we have to check weather
7461     -- which line are creating under which line
7462 --    IF l_lty_code = G_FIN_LINE_LTY_CODE THEN
7463 
7464        r_clev_rec := p_clev_rec;
7465 
7466 -- # 4414408 use new function default_contract_line_values
7467 /*
7468        IF (p_clev_rec.sts_code IS NULL OR
7469           p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
7470          x_return_status := get_sts_code(p_dnz_chr_id => null,
7471                                          p_cle_id     => p_clev_rec.cle_id,
7472                                          x_sts_code   => r_clev_rec.sts_code);
7473          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7474             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7475          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7476             RAISE OKL_API.G_EXCEPTION_ERROR;
7477          END IF;
7478        END IF;
7479        IF (p_clev_rec.end_date IS NULL OR
7480           p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
7481          x_return_status := get_end_date(p_dnz_chr_id => null,
7482                                          p_cle_id     => p_clev_rec.cle_id,
7483                                          x_end_date   => r_clev_rec.end_date);
7484          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7485             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7486          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7487             RAISE OKL_API.G_EXCEPTION_ERROR;
7488          END IF;
7489        END IF;
7490        IF (p_clev_rec.start_date IS NULL OR
7491           p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
7492          x_return_status := get_start_date(p_dnz_chr_id => null,
7493                                            p_cle_id     => p_clev_rec.cle_id,
7494                                            x_start_date => r_clev_rec.start_date);
7495          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7496             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7497          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7498             RAISE OKL_API.G_EXCEPTION_ERROR;
7499          END IF;
7500        END IF;
7501        IF (p_clev_rec.currency_code IS NULL OR
7502           p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
7503          x_return_status := get_currency_code(p_dnz_chr_id    => null,
7504                                               p_cle_id        => p_clev_rec.cle_id,
7505                                               x_currency_code => r_clev_rec.currency_code);
7506          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7507            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7508          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7509            RAISE OKL_API.G_EXCEPTION_ERROR;
7510          END IF;
7511        END IF;
7512 */
7513     IF ((p_clev_rec.sts_code IS NULL OR
7514          p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) OR
7515         (p_clev_rec.end_date IS NULL OR
7516          p_clev_rec.end_date = OKL_API.G_MISS_DATE) OR
7517         (p_clev_rec.start_date IS NULL OR
7518          p_clev_rec.start_date = OKL_API.G_MISS_DATE) OR
7519         (p_clev_rec.currency_code IS NULL OR
7520          p_clev_rec.currency_code = OKL_API.G_MISS_CHAR)
7521        ) THEN
7522        x_return_status := default_contract_line_values(p_dnz_chr_id    => null,
7523                                                        p_cle_id        => r_clev_rec.cle_id,
7524                                                        p_clev_rec      => r_clev_rec);
7525       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7526          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7527       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7528          RAISE OKL_API.G_EXCEPTION_ERROR;
7529       END IF;
7530     END IF;
7531 
7532        -- Now the all the records are there we can create Instance Line
7533        OKL_CONTRACT_PUB.create_contract_line(p_api_version   => p_api_version,
7534                                              p_init_msg_list => p_init_msg_list,
7535                                              x_return_status => x_return_status,
7536                                              x_msg_count     => x_msg_count,
7537                                              x_msg_data      => x_msg_data,
7538                                              p_clev_rec      => r_clev_rec,
7539                                              p_klev_rec      => p_klev_rec,
7540                                              x_clev_rec      => x_clev_rec,
7541                                              x_klev_rec      => x_klev_rec);
7542        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7543           OKL_API.set_message(p_app_name     => G_APP_NAME,
7544                               p_msg_name     => G_CREATION_INSTS_LINE);
7545           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7546        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7547           OKL_API.set_message(p_app_name     => G_APP_NAME,
7548                               p_msg_name     => G_CREATION_INSTS_LINE);
7549           RAISE OKL_API.G_EXCEPTION_ERROR;
7550        END IF;
7551 --  #4414408
7552 --    ELSE
7553 --       OKL_API.set_message(p_app_name     => G_APP_NAME,
7554 --                           p_msg_name     => G_LINE_STYLE);
7555 --          RAISE OKL_API.G_EXCEPTION_ERROR;
7556 --    END IF;
7557     OKL_API.END_ACTIVITY (x_msg_count,
7558                           x_msg_data );
7559   EXCEPTION
7560     WHEN OKL_API.G_EXCEPTION_ERROR THEN
7561     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7562                                l_api_name,
7563                                G_PKG_NAME,
7564                                'OKL_API.G_RET_STS_ERROR',
7565                                x_msg_count,
7566                                x_msg_data,
7567                                '_PVT');
7568     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7569     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7570                               l_api_name,
7571                               G_PKG_NAME,
7572                               'OKL_API.G_RET_STS_UNEXP_ERROR',
7573                               x_msg_count,
7574                               x_msg_data,
7575                               '_PVT');
7576     WHEN OTHERS THEN
7577     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7578                               l_api_name,
7579                               G_PKG_NAME,
7580                               'OTHERS',
7581                               x_msg_count,
7582                               x_msg_data,
7583                               '_PVT');
7584   END Create_inst_line;
7585 -------------------------------------------------------------------------------------------------
7586   PROCEDURE update_inst_line(p_api_version    IN  NUMBER,
7587                              p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
7588                              x_return_status  OUT NOCOPY VARCHAR2,
7589                              x_msg_count      OUT NOCOPY NUMBER,
7590                              x_msg_data       OUT NOCOPY VARCHAR2,
7591                              p_lty_code       IN  OKC_LINE_STYLES_V.LTY_CODE%TYPE,
7592                              p_clev_rec       IN  clev_rec_type,
7593                              p_klev_rec       IN  klev_rec_type,
7594                              x_clev_rec       OUT NOCOPY clev_rec_type,
7595                              x_klev_rec       OUT NOCOPY klev_rec_type) IS
7596 
7597     l_clev_rec               clev_rec_type;
7598     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
7599 
7600     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_INSTS_LINE';
7601   BEGIN
7602     x_return_status         := OKL_API.G_RET_STS_SUCCESS;
7603     -- Call start_activity to create savepoint, check compatibility
7604     -- and initialize message list
7605     x_return_status := OKL_API.START_ACTIVITY (l_api_name
7606                                                ,p_init_msg_list
7607                                                ,'_PVT'
7608                                                ,x_return_status);
7609     -- Check if activity started successfully
7610     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7611        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7612     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7613        RAISE OKL_API.G_EXCEPTION_ERROR;
7614     END IF;
7615     -- Check the cle_id that is of the top Fin Asset line
7616     validate_cle_lse_id(p_clev_rec      => p_clev_rec,
7617                         p_lty_code      => p_lty_code,
7618                         x_lty_code      => l_lty_code,
7619                         x_return_status => x_return_status);
7620     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7621        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7622     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7623        RAISE OKL_API.G_EXCEPTION_ERROR;
7624     END IF;
7625     -- since Fixed Assets Line  is a sub line of Fin Asset line we have to check weather
7626     -- which line are creating under which line
7627     IF l_lty_code = G_FIN_LINE_LTY_CODE THEN
7628        -- Now the all the records are there we can create Instance Line
7629        OKL_CONTRACT_PUB.update_contract_line(p_api_version   => p_api_version,
7630                                              p_init_msg_list => p_init_msg_list,
7631                                              x_return_status => x_return_status,
7632                                              x_msg_count     => x_msg_count,
7633                                              x_msg_data      => x_msg_data,
7634                                              p_clev_rec      => p_clev_rec,
7635                                              p_klev_rec      => p_klev_rec,
7636                                              x_clev_rec      => x_clev_rec,
7637                                              x_klev_rec      => x_klev_rec);
7638        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7639           OKL_API.set_message(p_app_name     => G_APP_NAME,
7640                               p_msg_name     => G_UPDATING_INSTS_LINE);
7641           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7642        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7643           OKL_API.set_message(p_app_name     => G_APP_NAME,
7644                               p_msg_name     => G_UPDATING_INSTS_LINE);
7645           RAISE OKL_API.G_EXCEPTION_ERROR;
7646        END IF;
7647     ELSE
7648        OKL_API.set_message(p_app_name     => G_APP_NAME,
7649                            p_msg_name     => G_LINE_STYLE);
7650        RAISE OKL_API.G_EXCEPTION_ERROR;
7651     END IF;
7652     OKL_API.END_ACTIVITY (x_msg_count,
7653                           x_msg_data );
7654   EXCEPTION
7655     WHEN OKL_API.G_EXCEPTION_ERROR THEN
7656     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7657                                l_api_name,
7658                                G_PKG_NAME,
7659                                'OKL_API.G_RET_STS_ERROR',
7660                                x_msg_count,
7661                                x_msg_data,
7662                                '_PVT');
7663     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7664     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7665                               l_api_name,
7666                               G_PKG_NAME,
7667                               'OKL_API.G_RET_STS_UNEXP_ERROR',
7668                               x_msg_count,
7669                               x_msg_data,
7670                               '_PVT');
7671     WHEN OTHERS THEN
7672     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7673                               l_api_name,
7674                               G_PKG_NAME,
7675                               'OTHERS',
7676                               x_msg_count,
7677                               x_msg_data,
7678                               '_PVT');
7679   END update_inst_line;
7680 -------------------------------------------------------------------------------------------------
7681   PROCEDURE Create_installed_base_line(p_api_version    IN  NUMBER,
7682                                        p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
7683                                        x_return_status  OUT NOCOPY VARCHAR2,
7684                                        x_msg_count      OUT NOCOPY NUMBER,
7685                                        x_msg_data       OUT NOCOPY VARCHAR2,
7686 -- 4414408                                       p_lty_code       IN  OKC_LINE_STYLES_V.LTY_CODE%TYPE,
7687                                        p_clev_rec       IN  clev_rec_type,
7688                                        p_klev_rec       IN  klev_rec_type,
7689                                        p_cimv_rec       IN  cimv_rec_type,
7690                                        p_itiv_rec       IN  itiv_rec_type,
7691                                        x_clev_rec       OUT NOCOPY clev_rec_type,
7692                                        x_klev_rec       OUT NOCOPY klev_rec_type,
7693                                        x_cimv_rec       OUT NOCOPY cimv_rec_type,
7694                                        x_trxv_rec       OUT NOCOPY trxv_rec_type,
7695                                        x_itiv_rec       OUT NOCOPY itiv_rec_type) IS
7696     l_clev_rec               clev_rec_type;
7697     r_clev_rec               clev_rec_type;
7698     l_cimv_rec               cimv_rec_type;
7699     r_cimv_rec               cimv_rec_type;
7700     lv_dummy                 VARCHAR2(3) := OKL_API.G_MISS_CHAR ;
7701 --    l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
7702     l_itiv_rec               itiv_rec_type;
7703     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_IB_LINE';
7704   BEGIN
7705     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
7706     -- Call start_activity to create savepoint, check compatibility
7707     -- and initialize message list
7708     x_return_status := OKL_API.START_ACTIVITY (
7709                                l_api_name
7710                                ,p_init_msg_list
7711                                ,'_PVT'
7712                                ,x_return_status);
7713     -- Check if activity started successfully
7714     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7715        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7716     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7717        RAISE OKL_API.G_EXCEPTION_ERROR;
7718     END IF;
7719     -- 4414408 redundant validation
7720 /*
7721     -- Check the cle_id that is of the top Fin Asset line
7722     validate_cle_lse_id(p_clev_rec      => p_clev_rec,
7723                         p_lty_code      => p_lty_code,
7724                         x_lty_code      => l_lty_code,
7725                         x_return_status => x_return_status);
7726     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7727        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7728     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7729        RAISE OKL_API.G_EXCEPTION_ERROR;
7730     END IF;
7731 */
7732     -- since IB Line  is a sub line of instance line we have to check weather
7733     -- which line are creating under which line
7734 --    IF l_lty_code = G_INST_LINE_LTY_CODE THEN
7735 
7736        r_clev_rec := p_clev_rec;
7737 
7738 -- # 4414408 use new function default_contract_line_values
7739 /*
7740        IF (p_clev_rec.sts_code IS NULL OR
7741           p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
7742          x_return_status := get_sts_code(p_dnz_chr_id => null,
7743                                          p_cle_id     => p_clev_rec.cle_id,
7744                                          x_sts_code   => r_clev_rec.sts_code);
7745          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7746             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7747          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7748             RAISE OKL_API.G_EXCEPTION_ERROR;
7749          END IF;
7750        END IF;
7751        IF (p_clev_rec.end_date IS NULL OR
7752           p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
7753          x_return_status := get_end_date(p_dnz_chr_id => null,
7754                                          p_cle_id     => p_clev_rec.cle_id,
7755                                          x_end_date   => r_clev_rec.end_date);
7756          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7757             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7758          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7759             RAISE OKL_API.G_EXCEPTION_ERROR;
7760          END IF;
7761        END IF;
7762        IF (p_clev_rec.start_date IS NULL OR
7763           p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
7764          x_return_status := get_start_date(p_dnz_chr_id => null,
7765                                            p_cle_id     => p_clev_rec.cle_id,
7766                                            x_start_date => r_clev_rec.start_date);
7767          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7768             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7769          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7770             RAISE OKL_API.G_EXCEPTION_ERROR;
7771          END IF;
7772        END IF;
7773        IF (p_clev_rec.currency_code IS NULL OR
7774           p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
7775          x_return_status := get_currency_code(p_dnz_chr_id    => null,
7776                                               p_cle_id        => p_clev_rec.cle_id,
7777                                               x_currency_code => r_clev_rec.currency_code);
7778          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7779            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7780          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7781            RAISE OKL_API.G_EXCEPTION_ERROR;
7782          END IF;
7783        END IF;
7784 */
7785 
7786     IF ((p_clev_rec.sts_code IS NULL OR
7787          p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) OR
7788         (p_clev_rec.end_date IS NULL OR
7789          p_clev_rec.end_date = OKL_API.G_MISS_DATE) OR
7790         (p_clev_rec.start_date IS NULL OR
7791          p_clev_rec.start_date = OKL_API.G_MISS_DATE) OR
7792         (p_clev_rec.currency_code IS NULL OR
7793          p_clev_rec.currency_code = OKL_API.G_MISS_CHAR)
7794        ) THEN
7795        x_return_status := default_contract_line_values(p_dnz_chr_id    => null,
7796                                                        p_cle_id        => r_clev_rec.cle_id,
7797                                                        p_clev_rec      => r_clev_rec);
7798       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7799          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7800       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7801          RAISE OKL_API.G_EXCEPTION_ERROR;
7802       END IF;
7803     END IF;
7804        -- Now the all the records are there we can create Instance Line
7805        OKL_CONTRACT_PUB.create_contract_line(p_api_version   => p_api_version,
7806                                              p_init_msg_list => p_init_msg_list,
7807                                              x_return_status => x_return_status,
7808                                              x_msg_count     => x_msg_count,
7809                                              x_msg_data      => x_msg_data,
7810                                              p_clev_rec      => r_clev_rec,
7811                                              p_klev_rec      => p_klev_rec,
7812                                              x_clev_rec      => x_clev_rec,
7813                                              x_klev_rec      => x_klev_rec);
7814        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7815           OKL_API.set_message(p_app_name     => G_APP_NAME,
7816                               p_msg_name     => G_CREATION_IB_LINE);
7817           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7818        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7819           OKL_API.set_message(p_app_name     => G_APP_NAME,
7820                               p_msg_name     => G_CREATION_IB_LINE);
7821           RAISE OKL_API.G_EXCEPTION_ERROR;
7822        END IF;
7823        l_cimv_rec                   := p_cimv_rec;
7824        l_cimv_rec.cle_id            := x_clev_rec.id;
7825        l_cimv_rec.dnz_chr_id        := x_clev_rec.dnz_chr_id;
7826        l_cimv_rec.JTOT_OBJECT1_CODE := 'OKX_IB_ITEM';
7827        l_cimv_rec.exception_yn      := 'N';
7828        IF (l_cimv_rec.object1_id1 IS NULL OR
7829            l_cimv_rec.object1_id1 = OKL_API.G_MISS_CHAR) AND
7830           (l_cimv_rec.object1_id2 IS NULL OR
7831            l_cimv_rec.object1_id2 = OKL_API.G_MISS_CHAR) THEN
7832           -- We have create the item rec,tal rec,trx rec and also create the iti rec
7833           -- Creation of Item Record for the above record information
7834           OKL_OKC_MIGRATION_PVT.create_contract_item(p_api_version   => p_api_version,
7835                                                      p_init_msg_list => p_init_msg_list,
7836                                                      x_return_status => x_return_status,
7837                                                      x_msg_count     => x_msg_count,
7838                                                      x_msg_data      => x_msg_data,
7839                                                      p_cimv_rec      => l_cimv_rec,
7840                                                      x_cimv_rec      => x_cimv_rec);
7841           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7842           OKL_API.set_message(p_app_name     => G_APP_NAME,
7843                               p_msg_name     => G_CREATION_IB_ITEM);
7844              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7845           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7846           OKL_API.set_message(p_app_name     => G_APP_NAME,
7847                               p_msg_name     => G_CREATION_IB_ITEM);
7848              RAISE OKL_API.G_EXCEPTION_ERROR;
7849           END IF;
7850           -- Rest of the record Creation will Follow
7851           -- We need to know if the kle_id is already there or not
7852           -- ideally it should be null since it is a new record
7853           IF (x_klev_rec.id IS NOT NULL OR
7854              x_klev_rec.id <> OKL_API.G_MISS_NUM) THEN
7855              lv_dummy := null;
7856           END IF;
7857           IF (lv_dummy = OKL_API.G_MISS_CHAR OR
7858               lv_dummy IS NUll) THEN
7859               l_itiv_rec                   := p_itiv_rec;
7860              -- To the Item Info from model Line
7861              x_return_status := get_rec_ib_cimv(p_cle_id     => x_clev_rec.cle_id,
7862                                                 p_dnz_chr_id => x_cimv_rec.dnz_chr_id,
7863                                                 x_cimv_rec   => r_cimv_rec);
7864              IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7865                OKL_API.set_message(p_app_name     => G_APP_NAME,
7866                                    p_msg_name     => G_FETCHING_INFO,
7867                                    p_token1       => G_REC_NAME_TOKEN,
7868                                    p_token1_value => 'OKC_K_ITEMS_V Record');
7869                RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7870              ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7871                OKL_API.set_message(p_app_name     => G_APP_NAME,
7872                                    p_msg_name     => G_FETCHING_INFO,
7873                                    p_token1       => G_REC_NAME_TOKEN,
7874                                    p_token1_value => 'OKC_K_ITEMS_V Record');
7875                 RAISE OKL_API.G_EXCEPTION_ERROR;
7876              END IF;
7877               -- Creating iti record
7878               l_itiv_rec.inventory_item_id    := to_number(r_cimv_rec.object1_id1);
7879               l_itiv_rec.inventory_org_id     := to_number(r_cimv_rec.object1_id2);
7880               IF (l_itiv_rec.line_number IS NULL OR
7881                  l_itiv_rec.line_number = OKL_API.G_MISS_NUM) THEN
7882                  l_itiv_rec.line_number       := 1;
7883               END IF;
7884               l_itiv_rec.kle_id               := x_klev_rec.id;
7885               l_itiv_rec.jtot_object_code_new := 'OKX_PARTSITE';
7886               -- Create another iti_id record for the tas_id of the header
7887               create_txl_itm_insts(p_api_version    => p_api_version,
7888                                    p_init_msg_list  => p_init_msg_list,
7889                                    x_return_status  => x_return_status,
7890                                    x_msg_count      => x_msg_count,
7891                                    x_msg_data       => x_msg_data,
7892                                    p_itiv_rec       => l_itiv_rec,
7893                                    x_trxv_rec       => x_trxv_rec,
7894                                    x_itiv_rec       => x_itiv_rec);
7895               IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7896                 OKL_API.set_message(p_app_name     => G_APP_NAME,
7897                                     p_msg_name     => G_ITI_ID);
7898                 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7899               ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7900                 OKL_API.set_message(p_app_name     => G_APP_NAME,
7901                                     p_msg_name     => G_ITI_ID);
7902                 RAISE OKL_API.G_EXCEPTION_ERROR;
7903               END IF;
7904           ELSE
7905              OKL_API.set_message(p_app_name     => G_APP_NAME,
7906                                  p_msg_name     => G_ITI_ID);
7907              RAISE OKL_API.G_EXCEPTION_ERROR;
7908           END IF;
7909        ELSIF (l_cimv_rec.object1_id1 IS NOT NULL OR
7910              l_cimv_rec.object1_id1 <> OKL_API.G_MISS_CHAR) AND
7911              (l_cimv_rec.object1_id2 IS NOT NULL OR
7912              l_cimv_rec.object1_id2 <> OKL_API.G_MISS_CHAR)THEN
7913            -- Creation of Item Record for the above record information
7914            OKL_OKC_MIGRATION_PVT.create_contract_item(p_api_version   => p_api_version,
7915                                                       p_init_msg_list => p_init_msg_list,
7916                                                       x_return_status => x_return_status,
7917                                                       x_msg_count     => x_msg_count,
7918                                                       x_msg_data      => x_msg_data,
7919                                                       p_cimv_rec      => l_cimv_rec,
7920                                                       x_cimv_rec      => x_cimv_rec);
7921            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7922              OKL_API.set_message(p_app_name     => G_APP_NAME,
7923                                  p_msg_name     => G_CREATION_IB_ITEM);
7924               RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7925            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7926              OKL_API.set_message(p_app_name     => G_APP_NAME,
7927                                  p_msg_name     => G_CREATION_IB_ITEM);
7928               RAISE OKL_API.G_EXCEPTION_ERROR;
7929            END IF;
7930            -- Rest of the record Creation will Follow
7931            -- We need to know if the kle_id is already there or not
7932            -- ideally it should be null since it is a new record
7933            IF (x_klev_rec.id IS NOT NULL OR
7934               x_klev_rec.id <> OKL_API.G_MISS_NUM) THEN
7935               lv_dummy := null;
7936            END IF;
7937            IF (lv_dummy = OKL_API.G_MISS_CHAR OR
7938                lv_dummy IS NUll) THEN
7939                l_itiv_rec                   := p_itiv_rec;
7940               -- To the Item Info from model Line
7941               x_return_status := get_rec_ib_cimv(p_cle_id     => x_clev_rec.cle_id,
7942                                                  p_dnz_chr_id => x_cimv_rec.dnz_chr_id,
7943                                                  x_cimv_rec   => r_cimv_rec);
7944               IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7945                 OKL_API.set_message(p_app_name     => G_APP_NAME,
7946                                     p_msg_name     => G_FETCHING_INFO,
7947                                     p_token1       => G_REC_NAME_TOKEN,
7948                                     p_token1_value => 'OKC_K_ITEMS_V Record');
7949                 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7950               ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7951                 OKL_API.set_message(p_app_name     => G_APP_NAME,
7952                                     p_msg_name     => G_FETCHING_INFO,
7953                                     p_token1       => G_REC_NAME_TOKEN,
7954                                     p_token1_value => 'OKC_K_ITEMS_V Record');
7955                  RAISE OKL_API.G_EXCEPTION_ERROR;
7956               END IF;
7957               -- Creating iti record
7958               l_itiv_rec.inventory_item_id    := to_number(r_cimv_rec.object1_id1);
7959               l_itiv_rec.inventory_org_id     := to_number(r_cimv_rec.object1_id2);
7960               IF (l_itiv_rec.line_number IS NULL OR
7961                  l_itiv_rec.line_number = OKL_API.G_MISS_NUM) THEN
7962                  l_itiv_rec.line_number       := 1;
7963               END IF;
7964               l_itiv_rec.kle_id               := x_klev_rec.id;
7965               l_itiv_rec.jtot_object_code_new := 'OKX_PARTSITE';
7966               -- Create another iti_id record for the tas_id of the header
7967               create_txl_itm_insts(p_api_version    => p_api_version,
7968                                    p_init_msg_list  => p_init_msg_list,
7969                                    x_return_status  => x_return_status,
7970                                    x_msg_count      => x_msg_count,
7971                                    x_msg_data       => x_msg_data,
7972                                    p_itiv_rec       => l_itiv_rec,
7973                                    x_trxv_rec       => x_trxv_rec,
7974                                    x_itiv_rec       => x_itiv_rec);
7975               IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7976                 OKL_API.set_message(p_app_name     => G_APP_NAME,
7977                                     p_msg_name     => G_ITI_ID);
7978                 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7979               ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7980                 OKL_API.set_message(p_app_name     => G_APP_NAME,
7981                                     p_msg_name     => G_ITI_ID);
7982                 RAISE OKL_API.G_EXCEPTION_ERROR;
7983               END IF;
7984           ELSE
7985              OKL_API.set_message(p_app_name     => G_APP_NAME,
7986                                  p_msg_name     => G_ITI_ID);
7987              RAISE OKL_API.G_EXCEPTION_ERROR;
7988           END IF;
7989        ELSE
7990           OKL_API.set_message(p_app_name     => G_APP_NAME,
7991                               p_msg_name     => G_ITEM_RECORD);
7992            x_return_status := OKL_API.G_RET_STS_ERROR;
7993            RAISE OKL_API.G_EXCEPTION_ERROR;
7994        END IF;
7995 --    #4414408
7996 --    ELSE
7997 --       OKL_API.set_message(p_app_name     => G_APP_NAME,
7998 --                           p_msg_name     => G_LINE_STYLE);
7999 --       x_return_status := OKL_API.G_RET_STS_ERROR;
8000 --       RAISE OKL_API.G_EXCEPTION_ERROR;
8001 --    END IF;
8002     OKL_API.END_ACTIVITY (x_msg_count,
8003                           x_msg_data );
8004   EXCEPTION
8005     WHEN OKL_API.G_EXCEPTION_ERROR THEN
8006     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8007                                l_api_name,
8008                                G_PKG_NAME,
8009                                'OKL_API.G_RET_STS_ERROR',
8010                                x_msg_count,
8011                                x_msg_data,
8012                                '_PVT');
8013     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8014     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8015                               l_api_name,
8016                               G_PKG_NAME,
8017                               'OKL_API.G_RET_STS_UNEXP_ERROR',
8018                               x_msg_count,
8019                               x_msg_data,
8020                               '_PVT');
8021     WHEN OTHERS THEN
8022     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8023                               l_api_name,
8024                               G_PKG_NAME,
8025                               'OTHERS',
8026                               x_msg_count,
8027                               x_msg_data,
8028                               '_PVT');
8029   END Create_installed_base_line;
8030 ---34----------------------------------------------------------------------------------------------
8031   PROCEDURE update_installed_base_line(p_api_version    IN  NUMBER,
8032                                        p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
8033                                        x_return_status  OUT NOCOPY VARCHAR2,
8034                                        x_msg_count      OUT NOCOPY NUMBER,
8035                                        x_msg_data       OUT NOCOPY VARCHAR2,
8036                                        p_lty_code       IN  OKC_LINE_STYLES_V.LTY_CODE%TYPE,
8037                                        p_clev_rec       IN  clev_rec_type,
8038                                        p_klev_rec       IN  klev_rec_type,
8039                                        p_cimv_rec       IN  cimv_rec_type,
8040                                        p_itiv_rec       IN  itiv_rec_type,
8041                                        x_clev_rec       OUT NOCOPY clev_rec_type,
8042                                        x_klev_rec       OUT NOCOPY klev_rec_type,
8043                                        x_cimv_rec       OUT NOCOPY cimv_rec_type,
8044                                        x_itiv_rec       OUT NOCOPY itiv_rec_type) IS
8045 
8046     l_clev_rec               clev_rec_type;
8047     l_cimv_rec               cimv_rec_type;
8048     l_itiv_rec               itiv_rec_type;
8049     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
8050     ln_tas_id                OKL_TRX_ASSETS.ID%TYPE;
8051     lv_dummy                 VARCHAR2(3) := OKL_API.G_MISS_CHAR ;
8052     i                        NUMBER := 0;
8053     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_IB_LINE';
8054   BEGIN
8055     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
8056     -- Call start_activity to create savepoint, check compatibility
8057     -- and initialize message list
8058     x_return_status := OKL_API.START_ACTIVITY (
8059                                l_api_name
8060                                ,p_init_msg_list
8061                                ,'_PVT'
8062                                ,x_return_status);
8063     -- Check if activity started successfully
8064     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8065        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8066     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8067        RAISE OKL_API.G_EXCEPTION_ERROR;
8068     END IF;
8069     -- Check the cle_id that is of the top Fin Asset line
8070     validate_cle_lse_id(p_clev_rec      => p_clev_rec,
8071                         p_lty_code      => p_lty_code,
8072                         x_lty_code      => l_lty_code,
8073                         x_return_status => x_return_status);
8074     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8075        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8076     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8077        RAISE OKL_API.G_EXCEPTION_ERROR;
8078     END IF;
8079     -- since IB Line  is a sub line of instance line we have to check weather
8080     -- which line are creating under which line
8081     IF l_lty_code = G_INST_LINE_LTY_CODE THEN
8082        -- Now the all the records are there we can create Instance Line
8083        OKL_CONTRACT_PUB.update_contract_line(p_api_version   => p_api_version,
8084                                              p_init_msg_list => p_init_msg_list,
8085                                              x_return_status => x_return_status,
8086                                              x_msg_count     => x_msg_count,
8087                                              x_msg_data      => x_msg_data,
8088                                              p_clev_rec      => p_clev_rec,
8089                                              p_klev_rec      => p_klev_rec,
8090                                              x_clev_rec      => x_clev_rec,
8091                                              x_klev_rec      => x_klev_rec);
8092        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8093           OKL_API.set_message(p_app_name     => G_APP_NAME,
8094                               p_msg_name     => G_UPDATING_IB_LINE);
8095           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8096        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8097           OKL_API.set_message(p_app_name     => G_APP_NAME,
8098                               p_msg_name     => G_UPDATING_IB_LINE);
8099           RAISE OKL_API.G_EXCEPTION_ERROR;
8100        END IF;
8101        l_cimv_rec                   := p_cimv_rec;
8102        IF l_cimv_rec.cle_id <> x_clev_rec.id THEN
8103           OKL_API.set_message(p_app_name     => G_APP_NAME,
8104                               p_msg_name     => G_ITEM_RECORD);
8105           RAISE OKL_API.G_EXCEPTION_ERROR;
8106        END IF;
8107        IF l_cimv_rec.dnz_chr_id <> x_clev_rec.dnz_chr_id THEN
8108           OKL_API.set_message(p_app_name     => G_APP_NAME,
8109                               p_msg_name     => G_ITEM_RECORD);
8110           RAISE OKL_API.G_EXCEPTION_ERROR;
8111        END IF;
8112        IF (l_cimv_rec.object1_id1 IS NULL OR
8113            l_cimv_rec.object1_id1 = OKL_API.G_MISS_CHAR) AND
8114           (l_cimv_rec.object1_id2 IS NULL OR
8115            l_cimv_rec.object1_id2 = OKL_API.G_MISS_CHAR) THEN
8116           -- We have create the item rec,tal rec,trx rec and also create the iti rec
8117           -- Creation of Item Record for the above record information
8118           OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version   => p_api_version,
8119                                                      p_init_msg_list => p_init_msg_list,
8120                                                      x_return_status => x_return_status,
8121                                                      x_msg_count     => x_msg_count,
8122                                                      x_msg_data      => x_msg_data,
8123                                                      p_cimv_rec      => l_cimv_rec,
8124                                                      x_cimv_rec      => x_cimv_rec);
8125           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8126              OKL_API.set_message(p_app_name     => G_APP_NAME,
8127                                  p_msg_name     => G_UPDATING_IB_ITEM);
8128              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8129           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8130              OKL_API.set_message(p_app_name     => G_APP_NAME,
8131                                  p_msg_name     => G_UPDATING_IB_ITEM);
8132              RAISE OKL_API.G_EXCEPTION_ERROR;
8133           END IF;
8134           validate_iti_kle_id(p_klev_rec      => x_klev_rec,
8135                               x_record_exists => lv_dummy,
8136                               x_return_status => x_return_status);
8137           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8138             OKL_API.set_message(p_app_name     => G_APP_NAME,
8139                                p_msg_name     => G_ITI_ID);
8140             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8141           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8142             OKL_API.set_message(p_app_name     => G_APP_NAME,
8143                                p_msg_name     => G_ITI_ID);
8144             RAISE OKL_API.G_EXCEPTION_ERROR;
8145           END IF;
8146           IF (lv_dummy IS NOT NUll OR
8147              lv_dummy <> OKL_API.G_MISS_CHAR) THEN
8148              IF p_itiv_rec.kle_id <> x_klev_rec.id THEN
8149                OKL_API.set_message(p_app_name     => G_APP_NAME,
8150                                    p_msg_name     => G_ITI_ID);
8151                RAISE OKL_API.G_EXCEPTION_ERROR;
8152              END IF;
8153              update_txl_itm_insts(p_api_version    => p_api_version,
8154                                   p_init_msg_list  => p_init_msg_list,
8155                                   x_return_status  => x_return_status,
8156                                   x_msg_count      => x_msg_count,
8157                                   x_msg_data       => x_msg_data,
8158                                   p_itiv_rec       => p_itiv_rec,
8159                                   x_itiv_rec       => x_itiv_rec);
8160              IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8161                OKL_API.set_message(p_app_name     => G_APP_NAME,
8162                                    p_msg_name     => G_ITI_ID);
8163                RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8164              ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8165                OKL_API.set_message(p_app_name     => G_APP_NAME,
8166                                    p_msg_name     => G_ITI_ID);
8167                RAISE OKL_API.G_EXCEPTION_ERROR;
8168              END IF;
8169           ELSE
8170                OKL_API.set_message(p_app_name     => G_APP_NAME,
8171                                    p_msg_name     => G_ITI_ID);
8172             RAISE OKL_API.G_EXCEPTION_ERROR;
8173           END IF;
8174        ELSIF (l_cimv_rec.object1_id1 IS NOT NULL OR
8175               l_cimv_rec.object1_id1 <> OKL_API.G_MISS_CHAR) AND
8176              (l_cimv_rec.object1_id2 IS NOT NULL OR
8177              l_cimv_rec.object1_id2 <> OKL_API.G_MISS_CHAR) THEN
8178            -- Creation of Item Record for the above record information
8179            OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version   => p_api_version,
8180                                                       p_init_msg_list => p_init_msg_list,
8181                                                       x_return_status => x_return_status,
8182                                                       x_msg_count     => x_msg_count,
8183                                                       x_msg_data      => x_msg_data,
8184                                                       p_cimv_rec      => l_cimv_rec,
8185                                                       x_cimv_rec      => x_cimv_rec);
8186            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8187               OKL_API.set_message(p_app_name     => G_APP_NAME,
8188                                   p_msg_name     => G_UPDATING_IB_ITEM);
8189               RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8190            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8191               OKL_API.set_message(p_app_name     => G_APP_NAME,
8192                                   p_msg_name     => G_UPDATING_IB_ITEM);
8193               RAISE OKL_API.G_EXCEPTION_ERROR;
8194            END IF;
8195        ELSE
8196          OKL_API.set_message(p_app_name     => G_APP_NAME,
8197                              p_msg_name     => G_UPDATING_IB_ITEM);
8198          RAISE OKL_API.G_EXCEPTION_ERROR;
8199        END IF;
8200     ELSE
8201        OKL_API.set_message(p_app_name     => G_APP_NAME,
8202                            p_msg_name     => G_LINE_STYLE);
8203       RAISE OKL_API.G_EXCEPTION_ERROR;
8204     END IF;
8205     OKL_API.END_ACTIVITY (x_msg_count,
8206                           x_msg_data );
8207   EXCEPTION
8208     WHEN OKL_API.G_EXCEPTION_ERROR THEN
8209     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8210                                l_api_name,
8211                                G_PKG_NAME,
8212                                'OKL_API.G_RET_STS_ERROR',
8213                                x_msg_count,
8214                                x_msg_data,
8215                                '_PVT');
8216     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8217     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8218                               l_api_name,
8219                               G_PKG_NAME,
8220                               'OKL_API.G_RET_STS_UNEXP_ERROR',
8221                               x_msg_count,
8222                               x_msg_data,
8223                               '_PVT');
8224     WHEN OTHERS THEN
8225     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8226                               l_api_name,
8227                               G_PKG_NAME,
8228                               'OTHERS',
8229                               x_msg_count,
8230                               x_msg_data,
8231                               '_PVT');
8232   END update_installed_base_line;
8233 -------------------------------------------------------------------------------------------------------
8234 ---------------------------- Main Process for Creation of Financial Asset -------------------------------
8235 -------------------------------------------------------------------------------------------------------
8236   PROCEDURE create_fin_line(
8237             p_api_version    IN  NUMBER,
8238             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
8239             x_return_status  OUT NOCOPY VARCHAR2,
8240             x_msg_count      OUT NOCOPY NUMBER,
8241             x_msg_data       OUT NOCOPY VARCHAR2,
8242             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
8243             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
8244             p_clev_rec       IN  clev_rec_type,
8245             p_klev_rec       IN  klev_rec_type,
8246             x_clev_rec       OUT NOCOPY clev_rec_type,
8247             x_klev_rec       OUT NOCOPY klev_rec_type) IS
8248     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_FIN_AST_LINES';
8249     l_clev_rec               clev_rec_type;
8250     -- Variables for validation of line style
8251     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
8252     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
8253   BEGIN
8254     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
8255     -- Call start_activity to create savepoint, check compatibility
8256     -- and initialize message list
8257     x_return_status := OKL_API.START_ACTIVITY (
8258                                l_api_name
8259                                ,p_init_msg_list
8260                                ,'_PVT'
8261                                ,x_return_status);
8262     -- Check if activity started successfully
8263     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8264        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8265     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8266        RAISE OKL_API.G_EXCEPTION_ERROR;
8267     END IF;
8268 
8269 --  4414408 The validation is now performed in create_all_line procedure
8270 /*
8271     -- To Check We Got the Valid info
8272     IF UPPER(p_new_yn) NOT IN ('Y','N') OR
8273        (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
8274        UPPER(p_new_yn) IS NULL) THEN
8275       OKL_API.set_message(p_app_name     => G_APP_NAME,
8276                           p_msg_name     => G_INVALID_YN,
8277                           p_token1       => G_COL_NAME_TOKEN,
8278                           p_token1_value => 'p_new_yn');
8279        -- Halt Validation
8280       RAISE OKL_API.G_EXCEPTION_ERROR;
8281     END IF;
8282     -- Validate to see if the asset_number given is not null
8283     -- and also Validate asset_number does not exists
8284     -- in OKL_TXL_ASSETS_V
8285     IF UPPER(p_new_yn) = 'Y' THEN
8286        validate_new_asset_number(x_return_status  => x_return_status,
8287                                  p_asset_number   => p_asset_number,
8288                                  p_dnz_chr_id     => p_clev_rec.dnz_chr_id);
8289        -- Check if activity started successfully
8290        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8291           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8292        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8293           RAISE OKL_API.G_EXCEPTION_ERROR;
8294        END IF;
8295     ELSE
8296        validate_new_asset_number(x_return_status  => x_return_status,
8297                                  p_asset_number   => p_asset_number,
8298                                  p_dnz_chr_id     => p_clev_rec.dnz_chr_id);
8299        -- Check if activity ended successfully
8300        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8301           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8302        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8303           RAISE OKL_API.G_EXCEPTION_ERROR;
8304        END IF;
8305     END IF;
8306 */
8307 --  4414408 The validations in Validate_lse_id and Validate_dnz_chr_id are redundant
8308 /*
8309     -- Validate Line Style id and get the line type code
8310     -- and line style type for further processing
8311     validate_lse_id(p_clev_rec      => p_clev_rec,
8312                     x_return_status => x_return_status,
8313                     x_lty_code      => l_lty_code,
8314                     x_lse_type      => l_lse_type);
8315     -- Check if activity started successfully
8316     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8317        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8318     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8319        RAISE OKL_API.G_EXCEPTION_ERROR;
8320     END IF;
8321     -- Validate the Dnz_Chr_id
8322     validate_dnz_chr_id(p_clev_rec      => p_clev_rec,
8323                         x_return_status => x_return_status);
8324     -- Check if activity started successfully
8325     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8326       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8327     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8328       RAISE OKL_API.G_EXCEPTION_ERROR;
8329     END IF;
8330 */
8331     -- creating of finanical Asset Lines which is the top Line
8332     -- While createing the cle_id will be null, chr_id will be not null
8333     -- and also the dnz_chr_id will be not null.Lse_id given will also helps
8334     -- to decide that this line is finanical Asset Line
8335     l_clev_rec          := p_clev_rec;
8336     IF (l_clev_rec.cle_id = OKL_API.G_MISS_NUM OR
8337        l_clev_rec.cle_id IS NULL) AND
8338        (l_clev_rec.dnz_chr_id IS NOT NULL OR
8339        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
8340        (l_clev_rec.chr_id IS NOT NULL OR
8341        l_clev_rec.chr_id <> OKL_API.G_MISS_NUM) AND
8342 --     #4414408
8343 --       l_lty_code = G_FIN_LINE_LTY_CODE AND
8344 --       l_lse_type = G_TLS_TYPE THEN
8345          l_clev_rec.lse_id = G_FIN_LINE_LTY_ID THEN
8346        -- We need to do this because we wanted the asset number be unique
8347        -- both in the transaction level and the line levels
8348        l_clev_rec.name             := p_asset_number;
8349        -- Entering the Asset Description
8350        create_financial_asset_line(p_api_version   => p_api_version,
8351                                    p_init_msg_list => p_init_msg_list,
8352                                    x_return_status => x_return_status,
8353                                    x_msg_count     => x_msg_count,
8354                                    x_msg_data      => x_msg_data,
8355                                    p_clev_rec      => l_clev_rec,
8356                                    p_klev_rec      => p_klev_rec,
8357                                    x_clev_rec      => x_clev_rec,
8358                                    x_klev_rec      => x_klev_rec);
8359        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8360           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8361        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8362           RAISE OKL_API.G_EXCEPTION_ERROR;
8363        END IF;
8364     ELSE
8365       OKL_API.set_message(p_app_name     => G_APP_NAME,
8366                           p_msg_name     => G_INVALID_CRITERIA,
8367                           p_token1       => G_COL_NAME_TOKEN,
8368                           p_token1_value => 'Financial Asset line');
8369        x_return_status := OKL_API.G_RET_STS_ERROR;
8370        RAISE OKL_API.G_EXCEPTION_ERROR;
8371     END IF;
8372     OKL_API.END_ACTIVITY (x_msg_count,
8373                           x_msg_data );
8374   EXCEPTION
8375     WHEN OKL_API.G_EXCEPTION_ERROR THEN
8376     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8377                                l_api_name,
8378                                G_PKG_NAME,
8379                                'OKL_API.G_RET_STS_ERROR',
8380                                x_msg_count,
8381                                x_msg_data,
8382                                '_PVT');
8383     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8384     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8385                               l_api_name,
8386                               G_PKG_NAME,
8387                               'OKL_API.G_RET_STS_UNEXP_ERROR',
8388                               x_msg_count,
8389                               x_msg_data,
8390                               '_PVT');
8391     WHEN OTHERS THEN
8392     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8393                               l_api_name,
8394                               G_PKG_NAME,
8395                               'OTHERS',
8396                               x_msg_count,
8397                               x_msg_data,
8398                               '_PVT');
8399   END create_fin_line;
8400 -------------------------------------------------------------------------------------------------------
8401 ---------------------------- Main Process for update of Financial Asset -------------------------------
8402 -------------------------------------------------------------------------------------------------------
8403   PROCEDURE Update_fin_line(
8404             p_api_version    IN  NUMBER,
8405             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
8406             x_return_status  OUT NOCOPY VARCHAR2,
8407             x_msg_count      OUT NOCOPY NUMBER,
8408             x_msg_data       OUT NOCOPY VARCHAR2,
8409             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
8410             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
8411             p_clev_rec       IN  clev_rec_type,
8412             p_klev_rec       IN  klev_rec_type,
8413             x_clev_rec       OUT NOCOPY clev_rec_type,
8414             x_klev_rec       OUT NOCOPY klev_rec_type,
8415             p_validate_fin_line  IN  VARCHAR2 DEFAULT OKL_API.G_TRUE) IS
8416     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_FIN_AST_LINES';
8417     l_clev_rec               clev_rec_type := p_clev_rec;
8418     l_klev_rec               klev_rec_type := p_klev_rec;
8419     -- Variables for validation of line style
8420     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
8421     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
8422     ln_fa_id                 OKC_K_LINES_V.ID%TYPE;
8423 
8424     -- Temp variables for capital reduction and tradein amount
8425     tradein_amount           OKL_K_LINES.TRADEIN_AMOUNT%TYPE;
8426     capital_reduction        OKL_K_LINES.CAPITAL_REDUCTION%TYPE;
8427 
8428     CURSOR get_fa_id(p_top_line OKC_K_LINES_V.ID%TYPE,
8429                      p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE)
8430     IS
8431     -- #4414408
8432     SELECT cle.id
8433 --    FROM okc_subclass_top_line stl,
8434 --         okc_line_styles_b lse2,
8435 --         okc_line_styles_b lse1,
8436       FROM okc_k_lines_b cle
8437     WHERE cle.cle_id = p_top_line
8438     AND cle.dnz_chr_id = p_dnz_chr_id
8439 --    AND lse1.id = cle.lse_id
8440 --    AND lse1.lty_code = G_FA_LINE_LTY_CODE
8441 --    AND lse1.lse_parent_id = lse2.id
8442 --    AND lse2.lty_code = G_FIN_LINE_LTY_CODE
8443 --    AND lse2.id = stl.lse_id
8444 --    AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
8445     AND cle.lse_id = G_FA_LINE_LTY_ID;
8446 
8447   BEGIN
8448     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
8449     -- Call start_activity to create savepoint, check compatibility
8450     -- and initialize message list
8451     x_return_status := OKL_API.START_ACTIVITY (
8452                                l_api_name
8453                                ,p_init_msg_list
8454                                ,'_PVT'
8455                                ,x_return_status);
8456     -- Check if activity started successfully
8457     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8458        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8459     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8460        RAISE OKL_API.G_EXCEPTION_ERROR;
8461     END IF;
8462     IF (p_validate_fin_line = OKL_API.G_TRUE) THEN
8463        validate_sts_code(p_clev_rec      => l_clev_rec,
8464                          x_return_status => x_return_status);
8465        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8466           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8467        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8468           RAISE OKL_API.G_EXCEPTION_ERROR;
8469        END IF;
8470        OPEN  get_fa_id(p_top_line   => l_clev_rec.id,
8471                        p_dnz_chr_id => l_clev_rec.dnz_chr_id);
8472        FETCH get_fa_id INTO ln_fa_id;
8473        -- 4414408
8474        IF get_fa_id%NOTFOUND THEN
8475          OKL_API.set_message(p_app_name => G_APP_NAME,
8476                              p_msg_name => G_LINE_RECORD);
8477          RAISE OKL_API.G_EXCEPTION_ERROR;
8478        END IF;
8479        CLOSE get_fa_id;
8480        -- To Check We Got the Valid info
8481        IF UPPER(p_new_yn) NOT IN ('Y','N') OR
8482           (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
8483           UPPER(p_new_yn) IS NULL) THEN
8484          OKL_API.set_message(p_app_name     => G_APP_NAME,
8485                              p_msg_name     => G_INVALID_YN,
8486                              p_token1       => G_COL_NAME_TOKEN,
8487                              p_token1_value => 'p_new_yn');
8488           -- Halt Validation
8489           RAISE OKL_API.G_EXCEPTION_ERROR;
8490        END IF;
8491        -- Validate to see if the asset_number given is not null
8492        -- and also Validate asset_number does not exists
8493        -- in OKL_TXL_ASSETS_V
8494        IF UPPER(p_new_yn) = 'Y' THEN
8495           validate_new_ast_num_update(x_return_status  => x_return_status,
8496                                       p_asset_number   => p_asset_number,
8497                                       p_kle_id         => ln_fa_id,
8498                                       p_dnz_chr_id     => l_clev_rec.dnz_chr_id);
8499           -- Check if activity started successfully
8500           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8501              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8502           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8503              RAISE OKL_API.G_EXCEPTION_ERROR;
8504           END IF;
8505        ELSIF UPPER(p_new_yn) = 'N' THEN
8506           validate_new_ast_num_update(x_return_status  => x_return_status,
8507                                       p_asset_number   => p_asset_number,
8508                                       p_kle_id         => ln_fa_id,
8509                                       p_dnz_chr_id     => l_clev_rec.dnz_chr_id);
8510           -- Check if activity started successfully
8511           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8512              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8513           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8514              RAISE OKL_API.G_EXCEPTION_ERROR;
8515           END IF;
8516        END IF;
8517        -- Validate Line Style id and get the line type code
8518        -- and line style type for further processing
8519        validate_lse_id(p_clev_rec      => l_clev_rec,
8520                        x_return_status => x_return_status,
8521                        x_lty_code      => l_lty_code,
8522                        x_lse_type      => l_lse_type);
8523        -- Check if activity started successfully
8524        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8525           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8526        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8527           RAISE OKL_API.G_EXCEPTION_ERROR;
8528        END IF;
8529        -- Validate the Dnz_Chr_id
8530        validate_dnz_chr_id(p_clev_rec      => l_clev_rec,
8531                            x_return_status => x_return_status);
8532        -- Check if activity started successfully
8533        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8534          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8535        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8536          RAISE OKL_API.G_EXCEPTION_ERROR;
8537        END IF;
8538     END IF;
8539     -- Modified by rravikir
8540     -- Call to Accounting Util package to address Multi Currency requirement
8541     -- Start
8542 /*
8543     -- nnirnaka 12/24/02 commented this out as this already happens in
8544     -- contract line update
8545 
8546     IF (l_klev_rec.capital_reduction <> OKL_API.G_MISS_NUM AND
8547         l_klev_rec.capital_reduction IS NOT NULL) THEN
8548       capital_reduction := l_klev_rec.capital_reduction;
8549       l_klev_rec.capital_reduction :=
8550          OKL_ACCOUNTING_UTIL.CROSS_CURRENCY_ROUND_AMOUNT(l_klev_rec.capital_reduction,
8551                                                        l_clev_rec.currency_code);
8552 
8553       IF (capital_reduction <> 0 AND l_klev_rec.capital_reduction = 0) THEN
8554          OKL_API.set_message(p_app_name     => G_APP_NAME,
8555                              p_msg_name     => G_AMOUNT_ROUNDING,
8556                              p_token1       => 'AMT',
8557                              p_token1_value => to_char(capital_reduction));
8558          RAISE G_EXCEPTION_HALT_VALIDATION;
8559       END IF;
8560     END IF;
8561 
8562     IF (l_klev_rec.tradein_amount <> OKL_API.G_MISS_NUM AND
8563         l_klev_rec.tradein_amount IS NOT NULL) THEN
8564       tradein_amount := l_klev_rec.tradein_amount;
8565       l_klev_rec.tradein_amount :=
8566          OKL_ACCOUNTING_UTIL.CROSS_CURRENCY_ROUND_AMOUNT(l_klev_rec.tradein_amount,
8567                                                        l_clev_rec.currency_code);
8568 
8569       IF (tradein_amount <> 0 AND l_klev_rec.tradein_amount = 0) THEN
8570          OKL_API.set_message(p_app_name     => G_APP_NAME,
8571                              p_msg_name     => G_AMOUNT_ROUNDING,
8572                              p_token1       => 'AMT',
8573                              p_token1_value => to_char(tradein_amount));
8574          RAISE G_EXCEPTION_HALT_VALIDATION;
8575       END IF;
8576     END IF;
8577 
8578     -- End Modification for Multi Currency
8579 */
8580 
8581     -- Updating of finanical Asset Lines which is the top Line
8582     -- While Updating the cle_id will be null, chr_id will be not null
8583     -- and also the dnz_chr_id will be not null.Lse_id given will also helps
8584     -- to decide that this line is finanical Asset Line
8585     IF (l_clev_rec.cle_id = OKL_API.G_MISS_NUM OR
8586        l_clev_rec.cle_id IS NULL) AND
8587        (l_clev_rec.dnz_chr_id IS NOT NULL OR
8588        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
8589        (l_clev_rec.chr_id IS NOT NULL OR
8590        l_clev_rec.chr_id <> OKL_API.G_MISS_NUM) AND
8591 --       l_lty_code = G_FIN_LINE_LTY_CODE AND
8592 --       l_lse_type = G_TLS_TYPE THEN
8593           l_clev_rec.lse_id = G_FIN_LINE_LTY_ID THEN
8594 
8595        -- Calling the Process
8596        update_financial_asset_line(p_api_version   => p_api_version,
8597                                    p_init_msg_list => p_init_msg_list,
8598                                    x_return_status => x_return_status,
8599                                    x_msg_count     => x_msg_count,
8600                                    x_msg_data      => x_msg_data,
8601                                    p_clev_rec      => l_clev_rec,
8602                                    p_klev_rec      => l_klev_rec,
8603                                    x_clev_rec      => x_clev_rec,
8604                                    x_klev_rec      => x_klev_rec);
8605        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8606           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8607        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8608           RAISE OKL_API.G_EXCEPTION_ERROR;
8609        END IF;
8610     ELSE
8611       OKL_API.set_message(p_app_name     => G_APP_NAME,
8612                           p_msg_name     => G_INVALID_CRITERIA,
8613                           p_token1       => 'LINE_STYLE',
8614                           p_token1_value => 'Financial Asset line');
8615        x_return_status := OKL_API.G_RET_STS_ERROR;
8616        RAISE OKL_API.G_EXCEPTION_ERROR;
8617     END IF;
8618     OKL_API.END_ACTIVITY (x_msg_count,
8619                           x_msg_data );
8620   EXCEPTION
8621     WHEN OKL_API.G_EXCEPTION_ERROR THEN
8622     IF get_fa_id%ISOPEN THEN
8623       CLOSE get_fa_id;
8624     END IF;
8625     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8626                                l_api_name,
8627                                G_PKG_NAME,
8628                                'OKL_API.G_RET_STS_ERROR',
8629                                x_msg_count,
8630                                x_msg_data,
8631                                '_PVT');
8632     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8633     IF get_fa_id%ISOPEN THEN
8634       CLOSE get_fa_id;
8635     END IF;
8636     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8637                               l_api_name,
8638                               G_PKG_NAME,
8639                               'OKL_API.G_RET_STS_UNEXP_ERROR',
8640                               x_msg_count,
8641                               x_msg_data,
8642                               '_PVT');
8643     WHEN OTHERS THEN
8644     IF get_fa_id%ISOPEN THEN
8645       CLOSE get_fa_id;
8646     END IF;
8647     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8648                               l_api_name,
8649                               G_PKG_NAME,
8650                               'OTHERS',
8651                               x_msg_count,
8652                               x_msg_data,
8653                               '_PVT');
8654   END Update_fin_line;
8655 -------------------------------------------------------------------------------------------------------
8656 ----------------- Main Process for update of Financial Asset for Capital Cost -------------------------
8657 -------------------------------------------------------------------------------------------------------
8658   PROCEDURE Update_fin_cap_cost(
8659             p_api_version    IN  NUMBER,
8660             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
8661             x_return_status  OUT NOCOPY VARCHAR2,
8662             x_msg_count      OUT NOCOPY NUMBER,
8663             x_msg_data       OUT NOCOPY VARCHAR2,
8664             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
8665             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
8666             p_clev_rec       IN  clev_rec_type,
8667             p_klev_rec       IN  klev_rec_type,
8668             x_clev_rec       OUT NOCOPY clev_rec_type,
8669             x_klev_rec       OUT NOCOPY klev_rec_type) IS
8670     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_FIN_CAP_COST';
8671     l_clev_rec               clev_rec_type := p_clev_rec;
8672     l_klev_rec               klev_rec_type := p_klev_rec;
8673     lx_clev_rec              clev_rec_type;
8674     lx_klev_rec              klev_rec_type;
8675     CURSOR c_get_lse_id_sts(p_top_line_id OKC_K_LINES_V.ID%TYPE) IS
8676     SELECT lse.id,
8677            cle.sts_code
8678     FROM okc_subclass_top_line stl,
8679          okc_line_styles_b lse,
8680          okc_k_lines_v cle
8681     WHERE cle.id = p_top_line_id
8682     AND cle.lse_id = lse.id
8683     AND lse.lty_code = G_FIN_LINE_LTY_CODE
8684     AND lse.lse_parent_id is null
8685     AND lse.lse_type = G_TLS_TYPE
8686     AND lse.id = stl.lse_id
8687     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
8688 
8689     --Bug# 8652738
8690     CURSOR l_chk_rbk_csr(p_chr_id IN NUMBER) is
8691     SELECT '!'
8692     FROM   okc_k_headers_b CHR,
8693            okl_trx_contracts ktrx
8694     WHERE  ktrx.khr_id_new = chr.id
8695     AND    ktrx.tsu_code = 'ENTERED'
8696     AND    ktrx.rbr_code is NOT NULL
8697     AND    ktrx.tcn_type = 'TRBK'
8698     AND    ktrx.representation_type = 'PRIMARY'
8699     AND    chr.id = p_chr_id
8700     AND    chr.orig_system_source_code = 'OKL_REBOOK';
8701 
8702     l_rbk_khr      VARCHAR2(1) DEFAULT '?';
8703 
8704   BEGIN
8705     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
8706     -- Call start_activity to create savepoint, check compatibility
8707     -- and initialize message list
8708     x_return_status := OKL_API.START_ACTIVITY (
8709                                l_api_name
8710                                ,p_init_msg_list
8711                                ,'_PVT'
8712                                ,x_return_status);
8713     -- Check if activity started successfully
8714     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8715        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8716     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8717        RAISE OKL_API.G_EXCEPTION_ERROR;
8718     END IF;
8719     OPEN  c_get_lse_id_sts(p_top_line_id => l_clev_rec.id);
8720     FETCH c_get_lse_id_sts INTO l_clev_rec.lse_id,
8721                                 l_clev_rec.sts_code;
8722     -- 4414408
8723     IF c_get_lse_id_sts%NOTFOUND THEN
8724       OKL_API.set_message(p_app_name => G_APP_NAME,
8725                           p_msg_name => G_LINE_RECORD);
8726       RAISE OKL_API.G_EXCEPTION_ERROR;
8727     END IF;
8728     CLOSE c_get_lse_id_sts;
8729     -- Here we update the capital Amount for the Top line of klev_rec
8730     --Bug# 3877032 :
8731     --IF (l_klev_rec.capital_reduction_percent IS NULL OR
8732        --l_klev_rec.capital_reduction_percent = OKL_API.G_MISS_NUM ) AND
8733        --(l_klev_rec.capital_reduction IS NULL OR
8734        --l_klev_rec.capital_reduction = OKL_API.G_MISS_NUM ) AND
8735        --(l_klev_rec.tradein_amount IS NULL OR
8736        --l_klev_rec.tradein_amount = OKL_API.G_MISS_NUM ) THEN
8737 
8738      IF l_klev_rec.capital_reduction_percent = OKL_API.G_MISS_NUM  AND
8739        l_klev_rec.capital_reduction = OKL_API.G_MISS_NUM  AND
8740        l_klev_rec.tradein_amount = OKL_API.G_MISS_NUM  THEN
8741        -- Updating of finanical Asset Lines with all the values
8742        Update_fin_line(p_api_version        => p_api_version,
8743                        p_init_msg_list      => p_init_msg_list,
8744                        x_return_status      => x_return_status,
8745                        x_msg_count          => x_msg_count,
8746                        x_msg_data           => x_msg_data,
8747                        P_new_yn             => P_new_yn,
8748                        p_asset_number       => p_asset_number,
8749                        p_clev_rec           => l_clev_rec,
8750                        p_klev_rec           => l_klev_rec,
8751                        x_clev_rec           => x_clev_rec,
8752                        x_klev_rec           => x_klev_rec,
8753                        p_validate_fin_line  => OKL_API.G_TRUE); -- 4414408
8754        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8755          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8756        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8757          RAISE OKL_API.G_EXCEPTION_ERROR;
8758        END IF;
8759     ELSE
8760        -- Here we update the capital Amount for the Top line of klev_rec
8761        -- But further we first have to update the top line with values
8762        -- and then call the formula enigne which will calculat the capital amount
8763        -- and update the top line again, we have to take this route because we
8764        -- will have to depend on Formula engine which in turn will calculate
8765        -- by querying the data.
8766        Update_fin_line(p_api_version        => p_api_version,
8767                        p_init_msg_list      => p_init_msg_list,
8768                        x_return_status      => x_return_status,
8769                        x_msg_count          => x_msg_count,
8770                        x_msg_data           => x_msg_data,
8771                        P_new_yn             => P_new_yn,
8772                        p_asset_number       => p_asset_number,
8773                        p_clev_rec           => l_clev_rec,
8774                        p_klev_rec           => l_klev_rec,
8775                        x_clev_rec           => x_clev_rec,
8776                        x_klev_rec           => x_klev_rec,
8777                        p_validate_fin_line  => OKL_API.G_TRUE);
8778        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8779          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8780        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8781          RAISE OKL_API.G_EXCEPTION_ERROR;
8782        END IF;
8783        OKL_EXECUTE_FORMULA_PUB.execute(p_api_version   => p_api_version,
8784                                        p_init_msg_list => p_init_msg_list,
8785                                        x_return_status => x_return_status,
8786                                        x_msg_count     => x_msg_count,
8787                                        x_msg_data      => x_msg_data,
8788                                        p_formula_name  => G_FORMULA_CAP,
8789                                        p_contract_id   => x_clev_rec.dnz_chr_id,
8790                                        p_line_id       => x_clev_rec.id,
8791                                        x_value         => x_klev_rec.capital_amount);
8792        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8793          OKL_API.set_message(p_app_name     => G_APP_NAME,
8794                              p_msg_name     => G_CALC_AMOUNT,
8795                              p_token1       => G_AMT_TOKEN,
8796                              p_token1_value => 'Capital Amount');
8797          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8798        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8799          OKL_API.set_message(p_app_name     => G_APP_NAME,
8800                              p_msg_name     => G_CALC_AMOUNT,
8801                              p_token1       => G_AMT_TOKEN,
8802                              p_token1_value => 'Capital Amount');
8803          RAISE OKL_API.G_EXCEPTION_ERROR;
8804        END IF;
8805        -- Updating of finanical Asset Lines with all the values
8806        Update_fin_line(p_api_version        => p_api_version,
8807                        p_init_msg_list      => p_init_msg_list,
8808                        x_return_status      => x_return_status,
8809                        x_msg_count          => x_msg_count,
8810                        x_msg_data           => x_msg_data,
8811                        P_new_yn             => P_new_yn,
8812                        p_asset_number       => p_asset_number,
8813                        p_clev_rec           => x_clev_rec,
8814                        p_klev_rec           => x_klev_rec,
8815                        x_clev_rec           => lx_clev_rec,
8816                        x_klev_rec           => lx_klev_rec,
8817                        p_validate_fin_line  => OKL_API.G_TRUE);
8818        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8819          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8820        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8821          RAISE OKL_API.G_EXCEPTION_ERROR;
8822        END IF;
8823 
8824        --Bug# 8652738
8825        -- Recalculate Asset Depreciation cost when down payment is updated
8826        l_rbk_khr := '?';
8827        OPEN l_chk_rbk_csr (p_chr_id => x_clev_rec.dnz_chr_id);
8828        FETCH l_chk_rbk_csr INTO l_rbk_khr;
8829        CLOSE l_chk_rbk_csr;
8830 
8831        IF l_rbk_khr = '!' Then
8832 
8833          OKL_ACTIVATE_ASSET_PVT.recalculate_asset_cost
8834          (p_api_version   => p_api_version,
8835           p_init_msg_list => p_init_msg_list,
8836           x_return_status => x_return_status,
8837           x_msg_count     => x_msg_count,
8838           x_msg_data      => x_msg_data,
8839           p_chr_id        => x_clev_rec.dnz_chr_id,
8840           p_cle_id        => x_clev_rec.id
8841           );
8842 
8843          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8844            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8845          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8846            RAISE OKL_API.G_EXCEPTION_ERROR;
8847          END IF;
8848 
8849        END IF;
8850        --Bug# 8652738
8851 
8852        x_clev_rec    := lx_clev_rec;
8853        x_klev_rec    := lx_klev_rec;
8854     END IF;
8855     -- We need to change the status of the header whenever there is updating happening
8856     -- after the contract status is approved
8857     IF (x_clev_rec.dnz_chr_id is NOT NULL) AND
8858        (x_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
8859       --cascade edit status on to lines
8860       okl_contract_status_pub.cascade_lease_status_edit
8861                (p_api_version     => p_api_version,
8862                 p_init_msg_list   => p_init_msg_list,
8863                 x_return_status   => x_return_status,
8864                 x_msg_count       => x_msg_count,
8865                 x_msg_data        => x_msg_data,
8866                 p_chr_id          => x_clev_rec.dnz_chr_id);
8867       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8868         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8869       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8870         RAISE OKL_API.G_EXCEPTION_ERROR;
8871       END IF;
8872     END IF;
8873   EXCEPTION
8874     WHEN OKL_API.G_EXCEPTION_ERROR THEN
8875     IF c_get_lse_id_sts%ISOPEN THEN
8876       CLOSE c_get_lse_id_sts;
8877     END IF;
8878     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8879                                l_api_name,
8880                                G_PKG_NAME,
8881                                'OKL_API.G_RET_STS_ERROR',
8882                                x_msg_count,
8883                                x_msg_data,
8884                                '_PVT');
8885     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8886     IF c_get_lse_id_sts%ISOPEN THEN
8887       CLOSE c_get_lse_id_sts;
8888     END IF;
8889     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8890                               l_api_name,
8891                               G_PKG_NAME,
8892                               'OKL_API.G_RET_STS_UNEXP_ERROR',
8893                               x_msg_count,
8894                               x_msg_data,
8895                               '_PVT');
8896     WHEN OTHERS THEN
8897     IF c_get_lse_id_sts%ISOPEN THEN
8898       CLOSE c_get_lse_id_sts;
8899     END IF;
8900     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8901                               l_api_name,
8902                               G_PKG_NAME,
8903                               'OTHERS',
8904                               x_msg_count,
8905                               x_msg_data,
8906                               '_PVT');
8907   END Update_fin_cap_cost;
8908 -----------------------------------------------------------------------------------
8909 -- Start of Commnets
8910 -- Badrinath Kuchibholta
8911 -- Procedure Name       : oec_calc_upd_fin_rec
8912 -- Description          : oec_calc_upd_fin_rec
8913 -- Business Rules       :
8914 -- Parameters           :
8915 -- Version              : 1.0
8916 -- End of Commnets
8917 
8918   PROCEDURE oec_calc_upd_fin_rec(
8919             p_api_version    IN  NUMBER,
8920             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
8921             x_return_status  OUT NOCOPY VARCHAR2,
8922             x_msg_count      OUT NOCOPY NUMBER,
8923             x_msg_data       OUT NOCOPY VARCHAR2,
8924             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
8925             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
8926             p_top_line_id    IN  OKC_K_LINES_V.ID%TYPE,
8927             p_dnz_chr_id     IN  OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
8928             x_fin_clev_rec   OUT NOCOPY clev_rec_type,
8929             x_fin_klev_rec   OUT NOCOPY klev_rec_type,
8930             x_oec            OUT NOCOPY OKL_K_LINES_V.OEC%TYPE,
8931             p_validate_fin_line  IN  VARCHAR2 DEFAULT OKL_API.G_TRUE) IS
8932 
8933     ln_oec                   OKL_K_LINES_V.OEC%TYPE := 0;
8934 --    ln_top_line_id           OKC_K_LINES_V.CLE_ID%TYPE := 0;
8935     l_update_clev_rec        clev_rec_type;
8936     l_update_klev_rec        klev_rec_type;
8937 
8938 -- #4414408 Top line ID is now passed to the API
8939 /*
8940     -- To Find out the Top line ID
8941     CURSOR c_model_top_line(p_model_line_id OKC_K_LINES_V.ID%TYPE,
8942                             p_dnz_chr_id    OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
8943     SELECT cle.cle_id
8944     FROM okc_subclass_top_line stl,
8945          okc_line_styles_b lse2,
8946          okc_line_styles_b lse1,
8947          okc_k_items_v cim,
8948          okc_k_lines_v cle
8949     WHERE cle.id = p_model_line_id
8950     AND cle.dnz_chr_id = p_dnz_chr_id
8951     AND cle.id = cim.cle_id
8952     AND cle.dnz_chr_id = cim.dnz_chr_id
8953     AND cle.lse_id = lse1.id
8954     AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
8955     AND lse1.lse_parent_id = lse2.id
8956     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
8957     AND lse2.id = stl.lse_id
8958     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE,G_QUOTE_SCS_CODE);
8959 */
8960   BEGIN
8961     -- initialize return status
8962     x_return_status := OKL_API.G_RET_STS_SUCCESS;
8963 /*
8964     OPEN  c_model_top_line(p_model_line_id => p_model_line_id,
8965                            p_dnz_chr_id    => p_dnz_chr_id);
8966     FETCH c_model_top_line INTO ln_top_line_id;
8967 -- #4414408 Moved the IF statement  below fetch statement
8968     IF c_model_top_line%NOTFOUND THEN
8969        OKL_API.set_message(p_app_name     => G_APP_NAME,
8970                            p_msg_name     => G_NO_MATCHING_RECORD,
8971                            p_token1       => G_COL_NAME_TOKEN,
8972                            p_token1_value => 'cle_id');
8973        RAISE G_EXCEPTION_HALT_VALIDATION;
8974     END IF;
8975 --   #4414408 This condition will never be met
8976 --    IF (c_model_top_line%ROWCOUNT > 1) THEN
8977 --       OKL_API.set_message(p_app_name     => G_APP_NAME,
8978 --                           p_msg_name     => 'More than one',
8979 --                           p_token1       => 'Model line',
8980 --                           p_token1_value => 'cle_id');
8981 --       RAISE G_EXCEPTION_HALT_VALIDATION;
8982 --    END IF;
8983 
8984     CLOSE c_model_top_line;
8985 */
8986     -- to get the OEC
8987 /*
8988     x_oec := OKL_SEEDED_FUNCTIONS_PVT.LINE_OEC(p_dnz_chr_id => p_dnz_chr_id,
8989                                                p_cle_id     => ln_top_line_id);
8990 */
8991     OKL_EXECUTE_FORMULA_PUB.execute(p_api_version   => p_api_version,
8992                                     p_init_msg_list => p_init_msg_list,
8993                                     x_return_status => x_return_status,
8994                                     x_msg_count     => x_msg_count,
8995                                     x_msg_data      => x_msg_data,
8996                                     p_formula_name  => G_FORMULA_OEC,
8997                                     p_contract_id   => p_dnz_chr_id,
8998                                     p_line_id       => p_top_line_id,
8999                                     x_value         => x_oec);
9000 
9001    IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9002       OKL_API.set_message(p_app_name     => G_APP_NAME,
9003                           p_msg_name     => G_CALC_AMOUNT,
9004                           p_token1       => G_AMT_TOKEN,
9005                           p_token1_value => 'OEC');
9006        RAISE G_EXCEPTION_HALT_VALIDATION;
9007     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9008       OKL_API.set_message(p_app_name     => G_APP_NAME,
9009                           p_msg_name     => G_CALC_AMOUNT,
9010                           p_token1       => G_AMT_TOKEN,
9011                           p_token1_value => 'OEC');
9012        RAISE G_EXCEPTION_HALT_VALIDATION;
9013     END IF;
9014     -- To Get the cle top Line Record
9015     x_return_status := get_rec_clev(p_top_line_id, -- 4414408
9016                                     l_update_clev_rec);
9017     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9018        OKL_API.set_message(p_app_name     => G_APP_NAME,
9019                            p_msg_name     => G_FETCHING_INFO,
9020                            p_token1       => G_REC_NAME_TOKEN,
9021                            p_token1_value => 'OKC_K_LINES_V Record');
9022        RAISE G_EXCEPTION_HALT_VALIDATION;
9023     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9024        OKL_API.set_message(p_app_name     => G_APP_NAME,
9025                            p_msg_name     => G_FETCHING_INFO,
9026                            p_token1       => G_REC_NAME_TOKEN,
9027                            p_token1_value => 'OKC_K_LINES_V Record');
9028        RAISE G_EXCEPTION_HALT_VALIDATION;
9029     END IF;
9030     -- To Get the kle top Line Record
9031     x_return_status := get_rec_klev(p_top_line_id,  -- 4414408
9032                                     l_update_klev_rec);
9033     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9034        OKL_API.set_message(p_app_name     => G_APP_NAME,
9035                            p_msg_name     => G_FETCHING_INFO,
9036                            p_token1       => G_REC_NAME_TOKEN,
9037                            p_token1_value => 'OKL_K_LINES_V Record');
9038        RAISE G_EXCEPTION_HALT_VALIDATION;
9039     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9040        OKL_API.set_message(p_app_name     => G_APP_NAME,
9041                            p_msg_name     => G_FETCHING_INFO,
9042                            p_token1       => G_REC_NAME_TOKEN,
9043                            p_token1_value => 'OKL_K_LINES_V Record');
9044        RAISE G_EXCEPTION_HALT_VALIDATION;
9045     END IF;
9046     IF l_update_klev_rec.id <> l_update_clev_rec.id THEN
9047        OKL_API.set_message(p_app_name     => G_APP_NAME,
9048                            p_msg_name     => G_LINE_RECORD);
9049        RAISE G_EXCEPTION_HALT_VALIDATION;
9050     END IF;
9051     l_update_klev_rec.oec   := x_oec;
9052 
9053     -- Modified by rravikir
9054     -- Call to Accounting Util package to address Multi Currency requirement
9055     -- Start
9056     l_update_klev_rec.oec :=
9057         OKL_ACCOUNTING_UTIL.CROSS_CURRENCY_ROUND_AMOUNT(l_update_klev_rec.oec,
9058                                                         l_update_clev_rec.currency_code);
9059 
9060     IF (x_oec <> 0 AND l_update_klev_rec.oec = 0) THEN
9061       OKL_API.set_message(p_app_name     => G_APP_NAME,
9062                           p_msg_name     => G_AMOUNT_ROUNDING,
9063                           p_token1       => 'AMT',
9064                           p_token1_value => to_char(x_oec));
9065        RAISE G_EXCEPTION_HALT_VALIDATION;
9066     END IF;
9067 
9068     -- End Modification for Multi Currency
9069 
9070     Update_fin_line(p_api_version       => p_api_version,
9071                     p_init_msg_list     => p_init_msg_list,
9072                     x_return_status     => x_return_status,
9073                     x_msg_count         => x_msg_count,
9074                     x_msg_data          => x_msg_data,
9075                     P_new_yn            => P_new_yn,
9076                     p_asset_number      => p_asset_number,
9077                     p_clev_rec          => l_update_clev_rec,
9078                     p_klev_rec          => l_update_klev_rec,
9079                     x_clev_rec          => x_fin_clev_rec,
9080                     x_klev_rec          => x_fin_klev_rec,
9081                     p_validate_fin_line => p_validate_fin_line); -- 4414408
9082     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9083        RAISE G_EXCEPTION_HALT_VALIDATION;
9084     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9085        RAISE G_EXCEPTION_HALT_VALIDATION;
9086     END IF;
9087   EXCEPTION
9088     WHEN G_EXCEPTION_STOP_VALIDATION then
9089     -- Notify Error
9090     x_return_status := OKL_API.G_RET_STS_ERROR;
9091     WHEN G_EXCEPTION_HALT_VALIDATION then
9092     -- If the cursor is open then it has to be closed
9093     -- 4414408
9094 --    IF c_model_top_line%ISOPEN THEN
9095 --       CLOSE c_model_top_line;
9096 --    END IF;
9097     -- notify caller of an error
9098     x_return_status := OKL_API.G_RET_STS_ERROR;
9099     WHEN OTHERS THEN
9100     -- store SQL error message on message stack
9101     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
9102                         p_msg_name     => G_UNEXPECTED_ERROR,
9103                         p_token1       => G_SQLCODE_TOKEN,
9104                         p_token1_value => SQLCODE,
9105                         p_token2       => G_SQLERRM_TOKEN,
9106                         p_token2_value => SQLERRM);
9107     -- If the cursor is open then it has to be closed
9108     -- 4414408
9109 --    IF c_model_top_line%ISOPEN THEN
9110 --       CLOSE c_model_top_line;
9111 --    END IF;
9112     -- notify caller of an error as UNEXPETED error
9113     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
9114   END oec_calc_upd_fin_rec;
9115 -----------------------------------------------------------------------------------
9116 -- Start of Commnets
9117 -- Badrinath Kuchibholta
9118 -- Procedure Name       : cap_amt_calc_upd_fin_rec
9119 -- Description          : cap_amt_calc_upd_fin_rec
9120 -- Business Rules       :
9121 -- Parameters           :
9122 -- Version              : 1.0
9123 -- End of Commnets
9124 
9125   PROCEDURE cap_amt_calc_upd_fin_rec(
9126             p_api_version    IN  NUMBER,
9127             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
9128             x_return_status  OUT NOCOPY VARCHAR2,
9129             x_msg_count      OUT NOCOPY NUMBER,
9130             x_msg_data       OUT NOCOPY VARCHAR2,
9131             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
9132             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
9133             p_top_line_id    IN  OKC_K_LINES_V.ID%TYPE, -- 4414408
9134             p_dnz_chr_id     IN  OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
9135             x_fin_clev_rec   OUT NOCOPY clev_rec_type,
9136             x_fin_klev_rec   OUT NOCOPY klev_rec_type,
9137             x_cap_amt        OUT NOCOPY OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE,
9138             p_validate_fin_line IN VARCHAR2 DEFAULT OKL_API.G_TRUE) IS
9139 
9140     ln_cap_amt               OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
9141 --    ln_top_line_id           OKC_K_LINES_V.CLE_ID%TYPE := 0;
9142     l_update_clev_rec        clev_rec_type;
9143     l_update_klev_rec        klev_rec_type;
9144 -- #4414408 Top line ID is a parameter passed to the API
9145 /*
9146     -- To Find out the Top line ID
9147     CURSOR c_model_top_line(p_model_line_id OKC_K_LINES_V.ID%TYPE,
9148                             p_dnz_chr_id    OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
9149     SELECT cle.cle_id
9150     FROM okc_subclass_top_line stl,
9151          okc_line_styles_b lse2,
9152          okc_line_styles_b lse1,
9153          okc_k_items_v cim,
9154          okc_k_lines_v cle
9155     WHERE cle.id = p_model_line_id
9156     AND cle.dnz_chr_id = p_dnz_chr_id
9157     AND cle.id = cim.cle_id
9158     AND cle.dnz_chr_id = cim.dnz_chr_id
9159     AND cle.lse_id = lse1.id
9160     AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
9161     AND lse1.lse_parent_id = lse2.id
9162     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
9163     AND lse2.id = stl.lse_id
9164     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
9165 */
9166 
9167   BEGIN
9168     -- initialize return status
9169     x_return_status := OKL_API.G_RET_STS_SUCCESS;
9170 /*
9171     OPEN  c_model_top_line(p_model_line_id => p_model_line_id,
9172                            p_dnz_chr_id    => p_dnz_chr_id);
9173     FETCH c_model_top_line INTO ln_top_line_id;
9174 -- #4414408 Moved the IF statement  below fetch statement
9175     IF c_model_top_line%NOTFOUND THEN
9176        OKL_API.set_message(p_app_name     => G_APP_NAME,
9177                            p_msg_name     => G_NO_MATCHING_RECORD,
9178                            p_token1       => G_COL_NAME_TOKEN,
9179                            p_token1_value => 'cle_id');
9180        RAISE G_EXCEPTION_HALT_VALIDATION;
9181     END IF;
9182 --   #4414408 This condition will never be met
9183 --    IF (c_model_top_line%ROWCOUNT > 1) THEN
9184 --       OKL_API.set_message(p_app_name     => G_APP_NAME,
9185 --                           p_msg_name     => 'More than one',
9186 --                           p_token1       => 'Model line',
9187 --                           p_token1_value => 'cle_id');
9188 --       RAISE G_EXCEPTION_HALT_VALIDATION;
9189 --    END IF;
9190     CLOSE c_model_top_line;
9191 */
9192     -- to get the Capital Amount
9193 /*
9194     x_cap_amt := OKL_FORMULA_FUNCTION_PVT.line_capitalamount(p_chr_id  => p_dnz_chr_id,
9195                                                              p_line_id => ln_top_line_id);
9196 */
9197     OKL_EXECUTE_FORMULA_PUB.execute(p_api_version   => p_api_version,
9198                                     p_init_msg_list => p_init_msg_list,
9199                                     x_return_status => x_return_status,
9200                                     x_msg_count     => x_msg_count,
9201                                     x_msg_data      => x_msg_data,
9202                                     p_formula_name  => G_FORMULA_CAP,
9203                                     p_contract_id   => p_dnz_chr_id,
9204                                     p_line_id       => p_top_line_id, -- 4414408
9205                                     x_value         => x_cap_amt);
9206 
9207     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9208       OKL_API.set_message(p_app_name     => G_APP_NAME,
9209                           p_msg_name     => G_CALC_AMOUNT,
9210                           p_token1       => G_AMT_TOKEN,
9211                           p_token1_value => 'Capital Amount');
9212        RAISE G_EXCEPTION_HALT_VALIDATION;
9213     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9214       OKL_API.set_message(p_app_name     => G_APP_NAME,
9215                           p_msg_name     => G_CALC_AMOUNT,
9216                           p_token1       => G_AMT_TOKEN,
9217                           p_token1_value => 'Capital Amount');
9218        RAISE G_EXCEPTION_HALT_VALIDATION;
9219     END IF;
9220 
9221     -- To Get the cle top Line Record
9222     x_return_status := get_rec_clev(p_top_line_id, -- 4414408
9223                                     l_update_clev_rec);
9224     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9225        OKL_API.set_message(p_app_name     => G_APP_NAME,
9226                            p_msg_name     => G_FETCHING_INFO,
9227                            p_token1       => G_REC_NAME_TOKEN,
9228                            p_token1_value => 'OKC_K_LINES_V Record');
9229        RAISE G_EXCEPTION_HALT_VALIDATION;
9230     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9231        OKL_API.set_message(p_app_name     => G_APP_NAME,
9232                            p_msg_name     => G_FETCHING_INFO,
9233                            p_token1       => G_REC_NAME_TOKEN,
9234                            p_token1_value => 'OKC_K_LINES_V Record');
9235        RAISE G_EXCEPTION_HALT_VALIDATION;
9236     END IF;
9237     -- To Get the kle top Line Record
9238     x_return_status := get_rec_klev(p_top_line_id, -- 4414408
9239                                     l_update_klev_rec);
9240     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9241        OKL_API.set_message(p_app_name     => G_APP_NAME,
9242                            p_msg_name     => G_FETCHING_INFO,
9243                            p_token1       => G_REC_NAME_TOKEN,
9244                            p_token1_value => 'OKL_K_LINES_V Record');
9245        RAISE G_EXCEPTION_HALT_VALIDATION;
9246     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9247        OKL_API.set_message(p_app_name     => G_APP_NAME,
9248                            p_msg_name     => G_FETCHING_INFO,
9249                            p_token1       => G_REC_NAME_TOKEN,
9250                            p_token1_value => 'OKL_K_LINES_V Record');
9251        RAISE G_EXCEPTION_HALT_VALIDATION;
9252     END IF;
9253     IF l_update_klev_rec.id <> l_update_clev_rec.id THEN
9254        OKL_API.set_message(p_app_name     => G_APP_NAME,
9255                            p_msg_name     => G_LINE_RECORD);
9256        RAISE G_EXCEPTION_HALT_VALIDATION;
9257     END IF;
9258     l_update_klev_rec.capital_amount   := x_cap_amt;
9259 
9260     -- Modified by rravikir
9261     -- Call to Accounting Util package to address Multi Currency requirement
9262     -- Start
9263     l_update_klev_rec.capital_amount :=
9264         OKL_ACCOUNTING_UTIL.CROSS_CURRENCY_ROUND_AMOUNT(l_update_klev_rec.capital_amount,
9265                                                         l_update_clev_rec.currency_code);
9266 
9267     IF (x_cap_amt <> 0 AND l_update_klev_rec.capital_amount = 0) THEN
9268       OKL_API.set_message(p_app_name     => G_APP_NAME,
9269                           p_msg_name     => G_AMOUNT_ROUNDING,
9270                           p_token1       => 'AMT',
9271                           p_token1_value => to_char(x_cap_amt));
9272        RAISE G_EXCEPTION_HALT_VALIDATION;
9273     END IF;
9274 
9275     -- End Modification for Multi Currency
9276 
9277     Update_fin_line(p_api_version        => p_api_version,
9278                     p_init_msg_list      => p_init_msg_list,
9279                     x_return_status      => x_return_status,
9280                     x_msg_count          => x_msg_count,
9281                     x_msg_data           => x_msg_data,
9282                     P_new_yn             => P_new_yn,
9283                     p_asset_number       => p_asset_number,
9284                     p_clev_rec           => l_update_clev_rec,
9285                     p_klev_rec           => l_update_klev_rec,
9286                     x_clev_rec           => x_fin_clev_rec,
9287                     x_klev_rec           => x_fin_klev_rec,
9288                     p_validate_fin_line  => p_validate_fin_line); -- 4414408
9289     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9290        RAISE G_EXCEPTION_HALT_VALIDATION;
9291     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9292        RAISE G_EXCEPTION_HALT_VALIDATION;
9293     END IF;
9294   EXCEPTION
9295     WHEN G_EXCEPTION_STOP_VALIDATION then
9296     -- Notify Error
9297     x_return_status := OKL_API.G_RET_STS_ERROR;
9298     WHEN G_EXCEPTION_HALT_VALIDATION then
9299     -- If the cursor is open then it has to be closed
9300 --    IF c_model_top_line%ISOPEN THEN
9301 --       CLOSE c_model_top_line;
9302 --    END IF;
9303     -- notify caller of an error
9304     x_return_status := OKL_API.G_RET_STS_ERROR;
9305     WHEN OTHERS THEN
9306     -- store SQL error message on message stack
9307     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
9308                         p_msg_name     => G_UNEXPECTED_ERROR,
9309                         p_token1       => G_SQLCODE_TOKEN,
9310                         p_token1_value => SQLCODE,
9311                         p_token2       => G_SQLERRM_TOKEN,
9312                         p_token2_value => SQLERRM);
9313     -- If the cursor is open then it has to be closed
9314 --    IF c_model_top_line%ISOPEN THEN
9315 --       CLOSE c_model_top_line;
9316 --    END IF;
9317     -- notify caller of an error as UNEXPETED error
9318     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
9319   END cap_amt_calc_upd_fin_rec;
9320 -----------------------------------------------------------------------------------
9321 -- Start of Commnets
9322 -- Badrinath Kuchibholta
9323 -- Procedure Name       : res_value_calc_upd_fin_rec
9324 -- Description          : res_value_calc_upd_fin_rec
9325 -- Business Rules       :
9326 -- Parameters           :
9327 -- Version              : 1.0
9328 -- End of Commnets
9329 
9330   PROCEDURE res_value_calc_upd_fin_rec(
9331             p_api_version    IN  NUMBER,
9332             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
9333             x_return_status  OUT NOCOPY VARCHAR2,
9334             x_msg_count      OUT NOCOPY NUMBER,
9335             x_msg_data       OUT NOCOPY VARCHAR2,
9336             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
9337             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
9338             p_top_line_id    IN  OKC_K_LINES_V.ID%TYPE, -- 4414408
9339             p_dnz_chr_id     IN  OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
9340             x_fin_clev_rec   OUT NOCOPY clev_rec_type,
9341             x_fin_klev_rec   OUT NOCOPY klev_rec_type,
9342             x_res_value      OUT NOCOPY OKL_K_LINES_V.RESIDUAL_VALUE%TYPE,
9343             p_validate_fin_line IN VARCHAR2 DEFAULT OKL_API.G_TRUE) IS
9344 
9345     ln_res_value             OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
9346 --    ln_top_line_id           OKC_K_LINES_V.CLE_ID%TYPE := 0;
9347     l_update_clev_rec        clev_rec_type;
9348     l_update_klev_rec        klev_rec_type;
9349     -- 4414408
9350 /*
9351     -- To Find out the Top line ID
9352     CURSOR c_model_top_line(p_model_line_id OKC_K_LINES_V.ID%TYPE,
9353                             p_dnz_chr_id    OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
9354     SELECT cle.cle_id
9355     FROM okc_subclass_top_line stl,
9356          okc_line_styles_b lse2,
9357          okc_line_styles_b lse1,
9358          okc_k_items_v cim,
9359          okc_k_lines_v cle
9360     WHERE cle.id = p_model_line_id
9361     AND cle.dnz_chr_id = p_dnz_chr_id
9362     AND cle.id = cim.cle_id
9363     AND cle.dnz_chr_id = cim.dnz_chr_id
9364     AND cle.lse_id = lse1.id
9365     AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
9366     AND lse1.lse_parent_id = lse2.id
9367     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
9368     AND lse2.id = stl.lse_id
9369     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
9370 */
9371   BEGIN
9372     -- initialize return status
9373     x_return_status := OKL_API.G_RET_STS_SUCCESS;
9374 /*
9375     OPEN  c_model_top_line(p_model_line_id => p_model_line_id,
9376                            p_dnz_chr_id    => p_dnz_chr_id);
9377     FETCH c_model_top_line INTO ln_top_line_id;
9378 -- #4414408 Moved the IF statement  below fetch statement
9379     IF c_model_top_line%NOTFOUND THEN
9380        OKL_API.set_message(p_app_name     => G_APP_NAME,
9381                            p_msg_name     => G_NO_MATCHING_RECORD,
9382                            p_token1       => G_COL_NAME_TOKEN,
9383                            p_token1_value => 'cle_id');
9384        RAISE G_EXCEPTION_HALT_VALIDATION;
9385     END IF;
9386 --   #4414408 This condition will never be met
9387 --    IF (c_model_top_line%ROWCOUNT > 1) THEN
9388 --       OKL_API.set_message(p_app_name     => G_APP_NAME,
9389 --                           p_msg_name     => 'More than one',
9390 --                           p_token1       => 'Model line',
9391 --                           p_token1_value => 'cle_id');
9392 --       RAISE G_EXCEPTION_HALT_VALIDATION;
9393 --    END IF;
9394     CLOSE c_model_top_line;
9395 */
9396     -- to get the Residual value
9397 /*
9398     x_res_value := OKL_SEEDED_FUNCTIONS_PVT.line_residualvalue(p_chr_id  => p_dnz_chr_id,
9399                                                                p_line_id => ln_top_line_id);
9400 */
9401 
9402     OKL_EXECUTE_FORMULA_PUB.execute(p_api_version   => p_api_version,
9403                                     p_init_msg_list => p_init_msg_list,
9404                                     x_return_status => x_return_status,
9405                                     x_msg_count     => x_msg_count,
9406                                     x_msg_data      => x_msg_data,
9407                                     p_formula_name  => G_FORMULA_RES,
9408                                     p_contract_id   => p_dnz_chr_id,
9409                                     p_line_id       => p_top_line_id, -- 4414408
9410                                     x_value         => x_res_value);
9411     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9412       OKL_API.set_message(p_app_name     => G_APP_NAME,
9413                           p_msg_name     => G_CALC_AMOUNT,
9414                           p_token1       => G_AMT_TOKEN,
9415                           p_token1_value => 'Residual Value');
9416        RAISE G_EXCEPTION_HALT_VALIDATION;
9417     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9418       OKL_API.set_message(p_app_name     => G_APP_NAME,
9419                           p_msg_name     => G_CALC_AMOUNT,
9420                           p_token1       => G_AMT_TOKEN,
9421                           p_token1_value => 'Residual Value');
9422        RAISE G_EXCEPTION_HALT_VALIDATION;
9423     END IF;
9424     -- To Get the cle top Line Record
9425     x_return_status := get_rec_clev(p_top_line_id, -- 4414408
9426                                     l_update_clev_rec);
9427     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9428        OKL_API.set_message(p_app_name     => G_APP_NAME,
9429                            p_msg_name     => G_FETCHING_INFO,
9430                            p_token1       => G_REC_NAME_TOKEN,
9431                            p_token1_value => 'OKC_K_LINES_V Record');
9432        RAISE G_EXCEPTION_HALT_VALIDATION;
9433     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9434        OKL_API.set_message(p_app_name     => G_APP_NAME,
9435                            p_msg_name     => G_FETCHING_INFO,
9436                            p_token1       => G_REC_NAME_TOKEN,
9437                            p_token1_value => 'OKC_K_LINES_V Record');
9438        RAISE G_EXCEPTION_HALT_VALIDATION;
9439     END IF;
9440     -- To Get the kle top Line Record
9441     x_return_status := get_rec_klev(p_top_line_id, -- 4414408
9442                                     l_update_klev_rec);
9443     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9444        OKL_API.set_message(p_app_name     => G_APP_NAME,
9445                            p_msg_name     => G_FETCHING_INFO,
9446                            p_token1       => G_REC_NAME_TOKEN,
9447                            p_token1_value => 'OKL_K_LINES_V Record');
9448        RAISE G_EXCEPTION_HALT_VALIDATION;
9449     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9450        OKL_API.set_message(p_app_name     => G_APP_NAME,
9451                            p_msg_name     => G_FETCHING_INFO,
9452                            p_token1       => G_REC_NAME_TOKEN,
9453                            p_token1_value => 'OKL_K_LINES_V Record');
9454        RAISE G_EXCEPTION_HALT_VALIDATION;
9455     END IF;
9456     IF l_update_klev_rec.id <> l_update_clev_rec.id THEN
9457        OKL_API.set_message(p_app_name     => G_APP_NAME,
9458                            p_msg_name     => G_LINE_RECORD);
9459        RAISE G_EXCEPTION_HALT_VALIDATION;
9460     END IF;
9461     -- commented for multi currency requirement. No need to round the value, as
9462     -- it is taken care in the call to accounting util package called below.
9463 --    l_update_klev_rec.residual_value   := round(x_res_value,2);
9464     l_update_klev_rec.residual_value   := x_res_value;
9465 
9466     -- Modified by rravikir
9467     -- Call to Accounting Util package to address Multi Currency requirement
9468     -- Start
9469     l_update_klev_rec.residual_value :=
9470         OKL_ACCOUNTING_UTIL.CROSS_CURRENCY_ROUND_AMOUNT(l_update_klev_rec.residual_value,
9471                                                         l_update_clev_rec.currency_code);
9472 
9473     IF (x_res_value <> 0 AND l_update_klev_rec.residual_value = 0) THEN
9474       OKL_API.set_message(p_app_name     => G_APP_NAME,
9475                           p_msg_name     => G_AMOUNT_ROUNDING,
9476                           p_token1       => 'AMT',
9477                           p_token1_value => to_char(x_res_value));
9478        RAISE G_EXCEPTION_HALT_VALIDATION;
9479     END IF;
9480 
9481     -- End Modification for Multi Currency
9482 
9483     Update_fin_line(p_api_version        => p_api_version,
9484                     p_init_msg_list      => p_init_msg_list,
9485                     x_return_status      => x_return_status,
9486                     x_msg_count          => x_msg_count,
9487                     x_msg_data           => x_msg_data,
9488                     P_new_yn             => P_new_yn,
9489                     p_asset_number       => p_asset_number,
9490                     p_clev_rec           => l_update_clev_rec,
9491                     p_klev_rec           => l_update_klev_rec,
9492                     x_clev_rec           => x_fin_clev_rec,
9493                     x_klev_rec           => x_fin_klev_rec,
9494                     p_validate_fin_line  => p_validate_fin_line); -- 4414408
9495     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9496        RAISE G_EXCEPTION_HALT_VALIDATION;
9497     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9498        RAISE G_EXCEPTION_HALT_VALIDATION;
9499     END IF;
9500   EXCEPTION
9501     WHEN G_EXCEPTION_STOP_VALIDATION then
9502     -- Notify Error
9503     x_return_status := OKL_API.G_RET_STS_ERROR;
9504     WHEN G_EXCEPTION_HALT_VALIDATION then
9505     -- If the cursor is open then it has to be closed
9506 --    IF c_model_top_line%ISOPEN THEN
9507 --       CLOSE c_model_top_line;
9508 --    END IF;
9509     -- notify caller of an error
9510     x_return_status := OKL_API.G_RET_STS_ERROR;
9511     WHEN OTHERS THEN
9512     -- store SQL error message on message stack
9513     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
9514                         p_msg_name     => G_UNEXPECTED_ERROR,
9515                         p_token1       => G_SQLCODE_TOKEN,
9516                         p_token1_value => SQLCODE,
9517                         p_token2       => G_SQLERRM_TOKEN,
9518                         p_token2_value => SQLERRM);
9519     -- If the cursor is open then it has to be closed
9520 --    IF c_model_top_line%ISOPEN THEN
9521 --       CLOSE c_model_top_line;
9522 --    END IF;
9523     -- notify caller of an error as UNEXPETED error
9524     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
9525   END res_value_calc_upd_fin_rec;
9526 
9527 -----------------------------------------------------------------------------------
9528 -- Start of Commnets
9529 -- Badrinath Kuchibholta
9530 -- Procedure Name       : res_value_calc_upd_fin_rec
9531 -- Description          : res_value_calc_upd_fin_rec
9532 -- Business Rules       :
9533 -- Parameters           :
9534 -- Version              : 1.0
9535 -- End of Commnets
9536 
9537   PROCEDURE get_res_per_upd_fin_rec(
9538             p_api_version    IN  NUMBER,
9539             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
9540             x_return_status  OUT NOCOPY VARCHAR2,
9541             x_msg_count      OUT NOCOPY NUMBER,
9542             x_msg_data       OUT NOCOPY VARCHAR2,
9543             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
9544             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
9545             p_res_value      IN  OKL_K_LINES_V.RESIDUAL_VALUE%TYPE,
9546             p_oec            IN  OKL_K_LINES_V.OEC%TYPE,
9547             p_top_line_id    IN  OKC_K_LINES_V.ID%TYPE,
9548             p_dnz_chr_id     IN  OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
9549             x_fin_clev_rec   OUT NOCOPY clev_rec_type,
9550             x_fin_klev_rec   OUT NOCOPY klev_rec_type,
9551             p_validate_fin_line IN VARCHAR2 DEFAULT OKL_API.G_TRUE) IS
9552 
9553     ln_res_per               OKL_K_LINES_V.RESIDUAL_PERCENTAGE%TYPE := 0;
9554     ln_top_line_id           OKC_K_LINES_V.CLE_ID%TYPE := 0;
9555     l_update_clev_rec        clev_rec_type;
9556     l_update_klev_rec        klev_rec_type;
9557 
9558   BEGIN
9559     -- initialize return status
9560     x_return_status := OKL_API.G_RET_STS_SUCCESS;
9561 
9562     IF (p_dnz_chr_id IS NULL OR
9563        p_dnz_chr_id = OKL_API.G_MISS_NUM) OR
9564        (p_top_line_id IS NULL OR
9565        p_top_line_id = OKL_API.G_MISS_NUM) THEN
9566        OKL_API.set_message(p_app_name     => G_APP_NAME,
9567                            p_msg_name     => G_REQUIRED_VALUE,
9568                            p_token1       => G_COL_NAME_TOKEN,
9569                            p_token1_value => 'Chr_id,top_line');
9570        RAISE G_EXCEPTION_STOP_VALIDATION;
9571    END IF;
9572    -- gboomina bug 6139003 - Start
9573    -- Modified this condition to calculate residual percent
9574    -- only for valid values
9575    IF (p_oec IS NOT NULL AND
9576       p_oec <> OKL_API.G_MISS_NUM) AND
9577       (p_res_value IS NOT NULL AND
9578       p_res_value <> OKL_API.G_MISS_NUM) THEN
9579     -- gboomina bug 6139003 - End
9580       --Bug# 4631549
9581       If p_oec = 0 then
9582           ln_res_per := 0;
9583       else
9584           ln_res_per :=  ROUND(p_res_value * 100/p_oec,2);
9585       end if;
9586    END IF;
9587     -- To Get the cle top Line Record
9588     x_return_status := get_rec_clev(p_top_line_id,
9589                                     l_update_clev_rec);
9590     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9591        OKL_API.set_message(p_app_name     => G_APP_NAME,
9592                            p_msg_name     => G_FETCHING_INFO,
9593                            p_token1       => G_REC_NAME_TOKEN,
9594                            p_token1_value => 'OKC_K_LINES_V Record');
9595        RAISE G_EXCEPTION_HALT_VALIDATION;
9596     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9597        OKL_API.set_message(p_app_name     => G_APP_NAME,
9598                            p_msg_name     => G_FETCHING_INFO,
9599                            p_token1       => G_REC_NAME_TOKEN,
9600                            p_token1_value => 'OKC_K_LINES_V Record');
9601        RAISE G_EXCEPTION_HALT_VALIDATION;
9602     END IF;
9603     -- To Get the kle top Line Record
9604     x_return_status := get_rec_klev(p_top_line_id,
9605                                     l_update_klev_rec);
9606     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9607        OKL_API.set_message(p_app_name     => G_APP_NAME,
9608                            p_msg_name     => G_FETCHING_INFO,
9609                            p_token1       => G_REC_NAME_TOKEN,
9610                            p_token1_value => 'OKL_K_LINES_V Record');
9611        RAISE G_EXCEPTION_HALT_VALIDATION;
9612     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9613        OKL_API.set_message(p_app_name     => G_APP_NAME,
9614                            p_msg_name     => G_FETCHING_INFO,
9615                            p_token1       => G_REC_NAME_TOKEN,
9616                            p_token1_value => 'OKL_K_LINES_V Record');
9617        RAISE G_EXCEPTION_HALT_VALIDATION;
9618     END IF;
9619     IF l_update_klev_rec.id <> l_update_clev_rec.id THEN
9620        OKL_API.set_message(p_app_name     => G_APP_NAME,
9621                            p_msg_name     => G_LINE_RECORD);
9622        RAISE G_EXCEPTION_HALT_VALIDATION;
9623     END IF;
9624     l_update_klev_rec.residual_percentage   := ln_res_per;
9625     Update_fin_line(p_api_version        => p_api_version,
9626                     p_init_msg_list      => p_init_msg_list,
9627                     x_return_status      => x_return_status,
9628                     x_msg_count          => x_msg_count,
9629                     x_msg_data           => x_msg_data,
9630                     P_new_yn             => P_new_yn,
9631                     p_asset_number       => p_asset_number,
9632                     p_clev_rec           => l_update_clev_rec,
9633                     p_klev_rec           => l_update_klev_rec,
9634                     x_clev_rec           => x_fin_clev_rec,
9635                     x_klev_rec           => x_fin_klev_rec,
9636                     p_validate_fin_line  => p_validate_fin_line); -- 4414408
9637     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9638        RAISE G_EXCEPTION_HALT_VALIDATION;
9639     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9640        RAISE G_EXCEPTION_HALT_VALIDATION;
9641     END IF;
9642   EXCEPTION
9643     WHEN G_EXCEPTION_STOP_VALIDATION then
9644     -- Notify Error
9645     x_return_status := OKL_API.G_RET_STS_ERROR;
9646     WHEN G_EXCEPTION_HALT_VALIDATION then
9647     -- notify caller of an error
9648     x_return_status := OKL_API.G_RET_STS_ERROR;
9649     WHEN OTHERS THEN
9650     -- store SQL error message on message stack
9651     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
9652                         p_msg_name     => G_UNEXPECTED_ERROR,
9653                         p_token1       => G_SQLCODE_TOKEN,
9654                         p_token1_value => SQLCODE,
9655                         p_token2       => G_SQLERRM_TOKEN,
9656                         p_token2_value => SQLERRM);
9657     -- notify caller of an error as UNEXPETED error
9658     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
9659   END get_res_per_upd_fin_rec;
9660 -------------------------------------------------------------------------------------------------------
9661 ----------------------------- Main Process for Creation of model Line -----------------------------------
9662 -------------------------------------------------------------------------------------------------------
9663   PROCEDURE create_model_line(
9664             p_api_version    IN  NUMBER,
9665             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
9666             x_return_status  OUT NOCOPY VARCHAR2,
9667             x_msg_count      OUT NOCOPY NUMBER,
9668             x_msg_data       OUT NOCOPY VARCHAR2,
9669             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
9670             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
9671             p_clev_rec       IN  clev_rec_type,
9672             p_klev_rec       IN  klev_rec_type,
9673             p_cimv_rec       IN  cimv_rec_type,
9674             x_clev_rec       OUT NOCOPY clev_rec_type,
9675             x_klev_rec       OUT NOCOPY klev_rec_type,
9676             x_cimv_rec       OUT NOCOPY cimv_rec_type) IS
9677     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_MODEL_LINES';
9678     l_clev_rec               clev_rec_type;
9679     -- Variables for validation of line style
9680     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
9681     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
9682     l_update_clev_rec        clev_rec_type;
9683     l_update_klev_rec        klev_rec_type;
9684     ln_lse_id                OKC_LINE_STYLES_V.ID%TYPE := OKL_API.G_MISS_NUM;
9685     l_qty                    OKC_K_ITEMS_V.NUMBER_OF_ITEMS%TYPE := 0;
9686 
9687   BEGIN
9688     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
9689     -- Call start_activity to create savepoint, check compatibility
9690     -- and initialize message list
9691     x_return_status := OKL_API.START_ACTIVITY (
9692                                l_api_name
9693                                ,p_init_msg_list
9694                                ,'_PVT'
9695                                ,x_return_status);
9696     -- Check if activity started successfully
9697     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9698        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9699     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9700        RAISE OKL_API.G_EXCEPTION_ERROR;
9701     END IF;
9702 --  4414408 The validation is now performed in create_all_line procedure
9703 /*
9704     -- To Check We Got the Valid info
9705     IF UPPER(p_new_yn) NOT IN ('Y','N') OR
9706        (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
9707        UPPER(p_new_yn) IS NULL) THEN
9708       OKL_API.set_message(p_app_name     => G_APP_NAME,
9709                           p_msg_name     => G_INVALID_YN,
9710                           p_token1       => G_COL_NAME_TOKEN,
9711                           p_token1_value => 'p_new_yn');
9712        -- Halt Validation
9713        RAISE OKL_API.G_EXCEPTION_ERROR;
9714     END IF;
9715     -- Validate to see if the asset_number given is not null
9716     -- and also Validate asset_number does not exists
9717     -- in OKL_TXL_ASSETS_V
9718     IF UPPER(p_new_yn) = 'Y' THEN
9719        validate_new_asset_number(x_return_status  => x_return_status,
9720                                  p_asset_number   => p_asset_number,
9721                                  p_dnz_chr_id     => p_clev_rec.dnz_chr_id);
9722        -- Check if activity started successfully
9723        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9724           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9725        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9726           RAISE OKL_API.G_EXCEPTION_ERROR;
9727        END IF;
9728     ELSE
9729        validate_new_asset_number(x_return_status  => x_return_status,
9730                                  p_asset_number   => p_asset_number,
9731                                  p_dnz_chr_id     => p_clev_rec.dnz_chr_id);
9732        -- Check if activity ended successfully
9733        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9734           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9735        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9736           RAISE OKL_API.G_EXCEPTION_ERROR;
9737        END IF;
9738     END IF;
9739 */
9740 --  4414408 The validations in Validate_lse_id and Validate_dnz_chr_id are redundant
9741 /*
9742     -- Validate Line Style id and get the line type code
9743     -- and line style type for further processing
9744     validate_lse_id(p_clev_rec      => p_clev_rec,
9745                     x_return_status => x_return_status,
9746                     x_lty_code      => l_lty_code,
9747                     x_lse_type      => l_lse_type);
9748     -- Check if activity started successfully
9749     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9750        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9751     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9752        RAISE OKL_API.G_EXCEPTION_ERROR;
9753     END IF;
9754     -- Validate the Dnz_Chr_id
9755     validate_dnz_chr_id(p_clev_rec      => p_clev_rec,
9756                         x_return_status => x_return_status);
9757     -- Check if activity started successfully
9758     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9759       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9760     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9761       RAISE OKL_API.G_EXCEPTION_ERROR;
9762     END IF;
9763 */
9764     -- We have to Populate the Model Line Record
9765     l_clev_rec                   := p_clev_rec;
9766     -- Now we are Creating Model Line
9767     -- Here we have have Dnz_Chr_id ,lse_id and cle_id
9768     -- The Record Should have the cle_id
9769     -- if the given line style is Model Line
9770     IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
9771        l_clev_rec.chr_id IS NULL) AND
9772        (l_clev_rec.dnz_chr_id IS NOT NULL OR
9773        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
9774        (l_clev_rec.cle_id IS NOT NULL OR
9775        l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
9776 --  #414408
9777 --       l_lty_code = G_MODEL_LINE_LTY_CODE AND
9778 --       l_lse_type = G_SLS_TYPE THEN
9779        l_clev_rec.lse_id = G_MODEL_LINE_LTY_ID THEN
9780        create_model_line_item(p_api_version   => p_api_version,
9781                               p_init_msg_list => p_init_msg_list,
9782                               x_return_status => x_return_status,
9783                               x_msg_count     => x_msg_count,
9784                               x_msg_data      => x_msg_data,
9785 --                              p_lty_code      => l_lty_code,
9786 -- #4414408  redundant parameter
9787                               p_clev_rec      => l_clev_rec,
9788                               p_klev_rec      => p_klev_rec,
9789                               p_cimv_rec      => p_cimv_rec,
9790                               x_clev_rec      => x_clev_rec,
9791                               x_klev_rec      => x_klev_rec,
9792                               x_cimv_rec      => x_cimv_rec);
9793        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9794           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9795        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9796           RAISE OKL_API.G_EXCEPTION_ERROR;
9797        END IF;
9798     ELSE
9799       OKL_API.set_message(p_app_name     => G_APP_NAME,
9800                           p_msg_name     => G_INVALID_CRITERIA,
9801                           p_token1       => G_COL_NAME_TOKEN,
9802                           p_token1_value => 'Model Asset line');
9803        x_return_status := OKL_API.G_RET_STS_ERROR;
9804        RAISE OKL_API.G_EXCEPTION_ERROR;
9805     END IF;
9806     OKL_API.END_ACTIVITY (x_msg_count,
9807                           x_msg_data );
9808   EXCEPTION
9809     WHEN OKL_API.G_EXCEPTION_ERROR THEN
9810     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9811                                l_api_name,
9812                                G_PKG_NAME,
9813                                'OKL_API.G_RET_STS_ERROR',
9814                                x_msg_count,
9815                                x_msg_data,
9816                                '_PVT');
9817     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
9818     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
9819                               l_api_name,
9820                               G_PKG_NAME,
9821                               'OKL_API.G_RET_STS_UNEXP_ERROR',
9822                               x_msg_count,
9823                               x_msg_data,
9824                               '_PVT');
9825     WHEN OTHERS THEN
9826     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
9827                               l_api_name,
9828                               G_PKG_NAME,
9829                               'OTHERS',
9830                               x_msg_count,
9831                               x_msg_data,
9832                               '_PVT');
9833   END create_model_line;
9834 -------------------------------------------------------------------------------------------------------
9835 ----------------------------- Main Process for update of model Line -----------------------------------
9836 -------------------------------------------------------------------------------------------------------
9837   PROCEDURE Update_model_line(
9838             p_api_version    IN  NUMBER,
9839             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
9840             x_return_status  OUT NOCOPY VARCHAR2,
9841             x_msg_count      OUT NOCOPY NUMBER,
9842             x_msg_data       OUT NOCOPY VARCHAR2,
9843             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
9844             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
9845             p_clev_rec       IN  clev_rec_type,
9846             p_klev_rec       IN  klev_rec_type,
9847             p_cimv_rec       IN  cimv_rec_type,
9848             x_clev_rec       OUT NOCOPY clev_rec_type,
9849             x_klev_rec       OUT NOCOPY klev_rec_type,
9850             x_cimv_rec       OUT NOCOPY cimv_rec_type) IS
9851     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_MODEL_LINES';
9852     l_clev_rec               clev_rec_type;
9853     -- Variables for validation of line style
9854     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
9855     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
9856     ln_fa_id                 OKC_K_LINES_V.ID%TYPE;
9857 
9858     CURSOR get_fa_id(p_top_line OKC_K_LINES_V.ID%TYPE,
9859                      p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE)
9860     IS
9861     SELECT cle.id
9862     FROM okc_subclass_top_line stl,
9863          okc_line_styles_b lse2,
9864          okc_line_styles_b lse1,
9865          okc_k_lines_v cle
9866     WHERE cle.cle_id = p_top_line
9867     AND cle.dnz_chr_id = p_dnz_chr_id
9868     AND lse1.id = cle.lse_id
9869     AND lse1.lty_code = G_FA_LINE_LTY_CODE
9870     AND lse1.lse_parent_id = lse2.id
9871     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
9872     AND lse2.id = stl.lse_id
9873     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
9874 
9875   BEGIN
9876     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
9877     -- Call start_activity to create savepoint, check compatibility
9878     -- and initialize message list
9879     x_return_status := OKL_API.START_ACTIVITY (
9880                                l_api_name
9881                                ,p_init_msg_list
9882                                ,'_PVT'
9883                                ,x_return_status);
9884     -- Check if activity started successfully
9885     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9886        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9887     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9888        RAISE OKL_API.G_EXCEPTION_ERROR;
9889     END IF;
9890     validate_sts_code(p_clev_rec       => p_clev_rec,
9891                       x_return_status  => x_return_status);
9892     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9893        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9894     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9895        RAISE OKL_API.G_EXCEPTION_ERROR;
9896     END IF;
9897     -- To get the fixed asset line asset to see
9898     -- the asset number does not duplicate
9899     OPEN  get_fa_id(p_top_line => p_clev_rec.cle_id,
9900                     p_dnz_chr_id => p_clev_rec.dnz_chr_id);
9901     IF get_fa_id%NOTFOUND THEN
9902       OKL_API.set_message(p_app_name => G_APP_NAME,
9903                           p_msg_name => G_LINE_RECORD);
9904       RAISE OKL_API.G_EXCEPTION_ERROR;
9905     END IF;
9906     FETCH get_fa_id INTO ln_fa_id;
9907     CLOSE get_fa_id;
9908 
9909     -- To Check We Got the Valid info
9910     IF UPPER(p_new_yn) NOT IN ('Y','N') OR
9911        (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
9912        UPPER(p_new_yn) IS NULL) THEN
9913       OKL_API.set_message(p_app_name     => G_APP_NAME,
9914                           p_msg_name     => G_INVALID_YN,
9915                           p_token1       => G_COL_NAME_TOKEN,
9916                           p_token1_value => 'p_new_yn');
9917        -- Halt Validation
9918        RAISE OKL_API.G_EXCEPTION_ERROR;
9919     END IF;
9920     -- Validate to see if the asset_number given is not null
9921     -- and also Validate asset_number does not exists
9922     -- in OKL_TXL_ASSETS_V
9923     IF UPPER(p_new_yn) = 'Y' THEN
9924        validate_new_ast_num_update(x_return_status  => x_return_status,
9925                                    p_asset_number   => p_asset_number,
9926                                    p_kle_id         => ln_fa_id,
9927                                    p_dnz_chr_id     => p_clev_rec.dnz_chr_id);
9928        -- Check if activity started successfully
9929        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9930           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9931        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9932           RAISE OKL_API.G_EXCEPTION_ERROR;
9933        END IF;
9934     ELSIF UPPER(p_new_yn) = 'N' THEN
9935        validate_new_ast_num_update(x_return_status  => x_return_status,
9936                                    p_asset_number   => p_asset_number,
9937                                    p_kle_id         => ln_fa_id,
9938                                    p_dnz_chr_id     => p_clev_rec.dnz_chr_id);
9939        -- Check if activity started successfully
9940        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9941           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9942        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9943           RAISE OKL_API.G_EXCEPTION_ERROR;
9944        END IF;
9945     END IF;
9946     -- Validate Line Style id and get the line type code
9947     -- and line style type for further processing
9948     validate_lse_id(p_clev_rec      => p_clev_rec,
9949                     x_return_status => x_return_status,
9950                     x_lty_code      => l_lty_code,
9951                     x_lse_type      => l_lse_type);
9952     -- Check if activity started successfully
9953     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9954        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9955     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9956        RAISE OKL_API.G_EXCEPTION_ERROR;
9957     END IF;
9958     -- Validate the Dnz_Chr_id
9959     validate_dnz_chr_id(p_clev_rec      => p_clev_rec,
9960                         x_return_status => x_return_status);
9961     -- Check if activity started successfully
9962     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9963       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9964     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9965       RAISE OKL_API.G_EXCEPTION_ERROR;
9966     END IF;
9967     -- We have to Populate the Model Line Record
9968     l_clev_rec                   := p_clev_rec;
9969     -- Now we are updating Model Line
9970     -- Here we have have Dnz_Chr_id ,lse_id and cle_id
9971     -- The Record Should have the cle_id
9972     -- if the given line style is Model Line
9973     IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
9974        l_clev_rec.chr_id IS NULL) AND
9975        (l_clev_rec.dnz_chr_id IS NOT NULL OR
9976        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
9977        (l_clev_rec.cle_id IS NOT NULL OR
9978        l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
9979        l_lty_code = G_MODEL_LINE_LTY_CODE AND
9980        l_lse_type = G_SLS_TYPE THEN
9981        update_model_line_item(p_api_version   => p_api_version,
9982                               p_init_msg_list => p_init_msg_list,
9983                               x_return_status => x_return_status,
9984                               x_msg_count     => x_msg_count,
9985                               x_msg_data      => x_msg_data,
9986                               p_lty_code      => l_lty_code,
9987                               p_clev_rec      => l_clev_rec,
9988                               p_klev_rec      => p_klev_rec,
9989                               p_cimv_rec      => p_cimv_rec,
9990                               x_clev_rec      => x_clev_rec,
9991                               x_klev_rec      => x_klev_rec,
9992                               x_cimv_rec      => x_cimv_rec);
9993        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9994           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9995        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9996           RAISE OKL_API.G_EXCEPTION_ERROR;
9997        END IF;
9998     ELSE
9999       OKL_API.set_message(p_app_name     => G_APP_NAME,
10000                           p_msg_name     => G_INVALID_CRITERIA,
10001                           p_token1       => G_COL_NAME_TOKEN,
10002                           p_token1_value => 'Model Asset line');
10003        x_return_status := OKL_API.G_RET_STS_ERROR;
10004        RAISE OKL_API.G_EXCEPTION_ERROR;
10005     END IF;
10006     OKL_API.END_ACTIVITY (x_msg_count,
10007                           x_msg_data );
10008   EXCEPTION
10009     WHEN OKL_API.G_EXCEPTION_ERROR THEN
10010     IF get_fa_id%ISOPEN THEN
10011       CLOSE get_fa_id;
10012     END IF;
10013     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10014                                l_api_name,
10015                                G_PKG_NAME,
10016                                'OKL_API.G_RET_STS_ERROR',
10017                                x_msg_count,
10018                                x_msg_data,
10019                                '_PVT');
10020     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10021     IF get_fa_id%ISOPEN THEN
10022       CLOSE get_fa_id;
10023     END IF;
10024     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10025                               l_api_name,
10026                               G_PKG_NAME,
10027                               'OKL_API.G_RET_STS_UNEXP_ERROR',
10028                               x_msg_count,
10029                               x_msg_data,
10030                               '_PVT');
10031     WHEN OTHERS THEN
10032     IF get_fa_id%ISOPEN THEN
10033       CLOSE get_fa_id;
10034     END IF;
10035     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10036                               l_api_name,
10037                               G_PKG_NAME,
10038                               'OTHERS',
10039                               x_msg_count,
10040                               x_msg_data,
10041                               '_PVT');
10042   END Update_model_line;
10043 -----------------------------------------------------------------------------------------------
10044 ----------------- Main Process for Fixed Asset Line Creation-----------------------------------
10045 -----------------------------------------------------------------------------------------------
10046   PROCEDURE Create_fixed_asset_line(
10047             p_api_version    IN  NUMBER,
10048             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
10049             x_return_status  OUT NOCOPY VARCHAR2,
10050             x_msg_count      OUT NOCOPY NUMBER,
10051             x_msg_data       OUT NOCOPY VARCHAR2,
10052             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
10053             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
10054             p_clev_rec       IN  clev_rec_type,
10055             p_klev_rec       IN  klev_rec_type,
10056             p_cimv_rec       IN  cimv_rec_type,
10057             p_talv_rec       IN  talv_rec_type,
10058             x_clev_rec       OUT NOCOPY clev_rec_type,
10059             x_klev_rec       OUT NOCOPY klev_rec_type,
10060             x_cimv_rec       OUT NOCOPY cimv_rec_type,
10061             x_trxv_rec       OUT NOCOPY trxv_rec_type,
10062             x_talv_rec       OUT NOCOPY talv_rec_type) IS
10063 
10064     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_FXD_AST_LINES';
10065     l_clev_rec               clev_rec_type;
10066     -- Variables for validation of line style
10067     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
10068     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
10069   BEGIN
10070     x_return_status := OKL_API.G_RET_STS_SUCCESS;
10071     -- Call start_activity to create savepoint, check compatibility
10072     -- and initialize message list
10073     x_return_status := OKL_API.START_ACTIVITY (
10074                                l_api_name
10075                                ,p_init_msg_list
10076                                ,'_PVT'
10077                                ,x_return_status);
10078     -- Check if activity started successfully
10079     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10080        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10081     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10082        RAISE OKL_API.G_EXCEPTION_ERROR;
10083     END IF;
10084 --  4414408 The validation is now performed in create_all_line procedure
10085 /*
10086     -- To Check We Got the Valid info
10087     IF UPPER(p_new_yn) NOT IN ('Y','N') OR
10088        (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
10089        UPPER(p_new_yn) IS NULL) THEN
10090       OKL_API.set_message(p_app_name     => G_APP_NAME,
10091                           p_msg_name     => G_INVALID_YN,
10092                           p_token1       => G_COL_NAME_TOKEN,
10093                           p_token1_value => 'p_new_yn');
10094        -- Halt Validation
10095        RAISE OKL_API.G_EXCEPTION_ERROR;
10096     END IF;
10097     -- Validate to see if the asset_number given is not null
10098     -- and also Validate asset_number does not exists
10099     -- in OKL_TXL_ASSETS_V
10100     IF UPPER(p_new_yn) = 'Y' THEN
10101        validate_new_asset_number(x_return_status  => x_return_status,
10102                                  p_asset_number   => p_asset_number,
10103                                  p_dnz_chr_id     => p_clev_rec.dnz_chr_id);
10104        -- Check if activity started successfully
10105        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10106           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10107        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10108           RAISE OKL_API.G_EXCEPTION_ERROR;
10109        END IF;
10110     ELSE
10111        validate_new_asset_number(x_return_status  => x_return_status,
10112                                  p_asset_number   => p_asset_number,
10113                                  p_dnz_chr_id     => p_clev_rec.dnz_chr_id);
10114        -- Check if activity ended successfully
10115        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10116           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10117        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10118           RAISE OKL_API.G_EXCEPTION_ERROR;
10119        END IF;
10120     END IF;
10121 */
10122 --  4414408 The validations in Validate_lse_id and Validate_dnz_chr_id are redundant
10123 /*
10124     -- Validate Line Style id and get the line type code
10125     -- and line style type for further processing
10126     validate_lse_id(p_clev_rec      => p_clev_rec,
10127                     x_return_status => x_return_status,
10128                     x_lty_code      => l_lty_code,
10129                     x_lse_type      => l_lse_type);
10130     -- Check if activity started successfully
10131     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10132        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10133     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10134        RAISE OKL_API.G_EXCEPTION_ERROR;
10135     END IF;
10136     -- Validate the Dnz_Chr_id
10137     validate_dnz_chr_id(p_clev_rec      => p_clev_rec,
10138                         x_return_status => x_return_status);
10139     -- Check if activity started successfully
10140     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10141       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10142     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10143       RAISE OKL_API.G_EXCEPTION_ERROR;
10144     END IF;
10145 */
10146     -- Now we are going to create the Fixed Assets Line
10147     -- Here we have have Dnz_Chr_id ,lse_id and cle_id
10148     -- The Record Should have the cle_id
10149     -- if the given line style is Fixed Assets Line
10150     l_clev_rec := p_clev_rec;
10151     IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
10152        l_clev_rec.chr_id IS NULL) AND
10153        (l_clev_rec.dnz_chr_id IS NOT NULL OR
10154        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
10155        (l_clev_rec.cle_id IS NOT NULL OR
10156        l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
10157 -- #4414408
10158 --       l_lty_code = G_FA_LINE_LTY_CODE AND
10159 --       l_lse_type = G_SLS_TYPE THEN
10160        l_clev_rec.lse_id = G_FA_LINE_LTY_ID THEN
10161        create_fa_line_item(p_api_version   => p_api_version,
10162                            p_init_msg_list => p_init_msg_list,
10163                            x_return_status => x_return_status,
10164                            x_msg_count     => x_msg_count,
10165                            x_msg_data      => x_msg_data,
10166 --                           p_lty_code      => l_lty_code,
10167                            p_clev_rec      => p_clev_rec,
10168                            p_klev_rec      => p_klev_rec,
10169                            p_cimv_rec      => p_cimv_rec,
10170                            p_talv_rec      => p_talv_rec,
10171                            x_clev_rec      => x_clev_rec,
10172                            x_klev_rec      => x_klev_rec,
10173                            x_cimv_rec      => x_cimv_rec,
10174                            x_trxv_rec      => x_trxv_rec,
10175                            x_talv_rec      => x_talv_rec);
10176        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10177           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10178        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10179           RAISE OKL_API.G_EXCEPTION_ERROR;
10180        END IF;
10181     ELSE
10182       OKL_API.set_message(p_app_name     => G_APP_NAME,
10183                           p_msg_name     => G_INVALID_CRITERIA,
10184                           p_token1       => G_COL_NAME_TOKEN,
10185                           p_token1_value => 'Fixed Asset line');
10186        x_return_status := OKL_API.G_RET_STS_ERROR;
10187        RAISE OKL_API.G_EXCEPTION_ERROR;
10188     END IF;
10189     OKL_API.END_ACTIVITY (x_msg_count,
10190                           x_msg_data );
10191   EXCEPTION
10192     WHEN OKL_API.G_EXCEPTION_ERROR THEN
10193     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10194                                l_api_name,
10195                                G_PKG_NAME,
10196                                'OKL_API.G_RET_STS_ERROR',
10197                                x_msg_count,
10198                                x_msg_data,
10199                                '_PVT');
10200     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10201     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10202                               l_api_name,
10203                               G_PKG_NAME,
10204                               'OKL_API.G_RET_STS_UNEXP_ERROR',
10205                               x_msg_count,
10206                               x_msg_data,
10207                               '_PVT');
10208     WHEN OTHERS THEN
10209     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10210                               l_api_name,
10211                               G_PKG_NAME,
10212                               'OTHERS',
10213                               x_msg_count,
10214                               x_msg_data,
10215                               '_PVT');
10216   END Create_fixed_asset_line;
10217 -------------------------------------------------------------------------------------------------------
10218 ----------------------------- Main Process for update of fixed asset Line -----------------------------
10219 -------------------------------------------------------------------------------------------------------
10220   PROCEDURE Update_fixed_asset_line(
10221             p_api_version    IN  NUMBER,
10222             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
10223             x_return_status  OUT NOCOPY VARCHAR2,
10224             x_msg_count      OUT NOCOPY NUMBER,
10225             x_msg_data       OUT NOCOPY VARCHAR2,
10226             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
10227             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
10228             p_clev_rec       IN  clev_rec_type,
10229             p_klev_rec       IN  klev_rec_type,
10230             p_cimv_rec       IN  cimv_rec_type,
10231             p_talv_rec       IN  talv_rec_type,
10232             x_clev_rec       OUT NOCOPY clev_rec_type,
10233             x_klev_rec       OUT NOCOPY klev_rec_type,
10234             x_cimv_rec       OUT NOCOPY cimv_rec_type,
10235             x_talv_rec       OUT NOCOPY talv_rec_type) IS
10236     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_FXD_AST_LINES';
10237     l_clev_rec               clev_rec_type;
10238     -- Variables for validation of line style
10239     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
10240     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
10241   BEGIN
10242     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
10243     -- Call start_activity to create savepoint, check compatibility
10244     -- and initialize message list
10245     x_return_status := OKL_API.START_ACTIVITY (
10246                                l_api_name
10247                                ,p_init_msg_list
10248                                ,'_PVT'
10249                                ,x_return_status);
10250     -- Check if activity started successfully
10251     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10252        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10253     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10254        RAISE OKL_API.G_EXCEPTION_ERROR;
10255     END IF;
10256     validate_sts_code(p_clev_rec       => p_clev_rec,
10257                       x_return_status  => x_return_status);
10258     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10259        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10260     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10261        RAISE OKL_API.G_EXCEPTION_ERROR;
10262     END IF;
10263     -- To Check We Got the Valid info
10264     IF UPPER(p_new_yn) NOT IN ('Y','N') OR
10265        (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
10266        UPPER(p_new_yn) IS NULL) THEN
10267       OKL_API.set_message(p_app_name     => G_APP_NAME,
10268                           p_msg_name     => G_INVALID_YN,
10269                           p_token1       => G_COL_NAME_TOKEN,
10270                           p_token1_value => 'p_new_yn');
10271        -- Halt Validation
10272        RAISE OKL_API.G_EXCEPTION_ERROR;
10273     END IF;
10274     -- Validate to see if the asset_number given is not null
10275     -- and also Validate asset_number does not exists
10276     -- in OKL_TXL_ASSETS_V
10277     IF UPPER(p_new_yn) = 'Y' THEN
10278        validate_new_ast_num_update(x_return_status  => x_return_status,
10279                                    p_asset_number   => p_asset_number,
10280                                    p_kle_id         => p_talv_rec.kle_id,
10281                                    p_dnz_chr_id     => p_clev_rec.dnz_chr_id);
10282        -- Check if activity started successfully
10283        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10284           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10285        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10286           RAISE OKL_API.G_EXCEPTION_ERROR;
10287        END IF;
10288     ELSIF UPPER(p_new_yn) = 'N' THEN
10289        validate_new_ast_num_update(x_return_status  => x_return_status,
10290                                    p_asset_number   => p_asset_number,
10291                                    p_kle_id         => p_talv_rec.kle_id,
10292                                    p_dnz_chr_id     => p_clev_rec.dnz_chr_id);
10293        -- Check if activity started successfully
10294        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10295           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10296        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10297           RAISE OKL_API.G_EXCEPTION_ERROR;
10298        END IF;
10299     END IF;
10300     -- Validate Line Style id and get the line type code
10301     -- and line style type for further processing
10302     validate_lse_id(p_clev_rec      => p_clev_rec,
10303                     x_return_status => x_return_status,
10304                     x_lty_code      => l_lty_code,
10305                     x_lse_type      => l_lse_type);
10306     -- Check if activity started successfully
10307     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10308        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10309     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10310        RAISE OKL_API.G_EXCEPTION_ERROR;
10311     END IF;
10312     -- Validate the Dnz_Chr_id
10313     validate_dnz_chr_id(p_clev_rec      => p_clev_rec,
10314                         x_return_status => x_return_status);
10315     -- Check if activity started successfully
10316     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10317       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10318     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10319       RAISE OKL_API.G_EXCEPTION_ERROR;
10320     END IF;
10321     -- We have to Populate the Model Line Record
10322     l_clev_rec                   := p_clev_rec;
10323     -- Now we are updating Fixed Asset Line
10324     -- Here we have have Dnz_Chr_id ,lse_id and cle_id
10325     -- The Record Should have the cle_id
10326     -- if the given line style is Fixed Asset Line
10327     IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
10328        l_clev_rec.chr_id IS NULL) AND
10329        (l_clev_rec.dnz_chr_id IS NOT NULL OR
10330        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
10331        (l_clev_rec.cle_id IS NOT NULL OR
10332        l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
10333        l_lty_code = G_FA_LINE_LTY_CODE AND
10334        l_lse_type = G_SLS_TYPE THEN
10335        update_fa_line_item(p_api_version   => p_api_version,
10336                             p_init_msg_list => p_init_msg_list,
10337                             x_return_status => x_return_status,
10338                             x_msg_count     => x_msg_count,
10339                             x_msg_data      => x_msg_data,
10340                             p_lty_code      => l_lty_code,
10341                             P_new_yn        => p_new_yn,
10342                             p_clev_rec      => l_clev_rec,
10343                             p_klev_rec      => p_klev_rec,
10344                             p_cimv_rec      => p_cimv_rec,
10345                             p_talv_rec      => p_talv_rec,
10346                             x_clev_rec      => x_clev_rec,
10347                             x_klev_rec      => x_klev_rec,
10348                             x_cimv_rec      => x_cimv_rec,
10349                             x_talv_rec      => x_talv_rec);
10350        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10351           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10352        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10353           RAISE OKL_API.G_EXCEPTION_ERROR;
10354        END IF;
10355     ELSE
10356       OKL_API.set_message(p_app_name     => G_APP_NAME,
10357                           p_msg_name     => G_INVALID_CRITERIA,
10358                           p_token1       => G_COL_NAME_TOKEN,
10359                           p_token1_value => 'Fixed Asset line');
10360        x_return_status := OKL_API.G_RET_STS_ERROR;
10361        RAISE OKL_API.G_EXCEPTION_ERROR;
10362     END IF;
10363     OKL_API.END_ACTIVITY (x_msg_count,
10364                           x_msg_data );
10365   EXCEPTION
10366     WHEN OKL_API.G_EXCEPTION_ERROR THEN
10367     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10368                                l_api_name,
10369                                G_PKG_NAME,
10370                                'OKL_API.G_RET_STS_ERROR',
10371                                x_msg_count,
10372                                x_msg_data,
10373                                '_PVT');
10374     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10375     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10376                               l_api_name,
10377                               G_PKG_NAME,
10378                               'OKL_API.G_RET_STS_UNEXP_ERROR',
10379                               x_msg_count,
10380                               x_msg_data,
10381                               '_PVT');
10382     WHEN OTHERS THEN
10383     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10384                               l_api_name,
10385                               G_PKG_NAME,
10386                               'OTHERS',
10387                               x_msg_count,
10388                               x_msg_data,
10389                               '_PVT');
10390   END Update_fixed_asset_line;
10391 -------------------------------------------------------------------------------------------------------
10392 ---------------------------- Main Process for Creation of Add on Line ---------------------------------
10393 -------------------------------------------------------------------------------------------------------
10394   PROCEDURE create_add_on_line(p_api_version    IN  NUMBER,
10395                               p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
10396                               x_return_status  OUT NOCOPY VARCHAR2,
10397                               x_msg_count      OUT NOCOPY NUMBER,
10398                               x_msg_data       OUT NOCOPY VARCHAR2,
10399                               P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
10400                               p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
10401                               p_clev_tbl       IN  clev_tbl_type,
10402                               p_klev_tbl       IN  klev_tbl_type,
10403                               p_cimv_tbl       IN  cimv_tbl_type,
10404                               x_clev_tbl       OUT NOCOPY clev_tbl_type,
10405                               x_klev_tbl       OUT NOCOPY klev_tbl_type,
10406                               x_fin_clev_rec   OUT NOCOPY clev_rec_type,
10407                               x_fin_klev_rec   OUT NOCOPY klev_rec_type,
10408                               x_cimv_tbl       OUT NOCOPY cimv_tbl_type) IS
10409     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_ADD_LINE';
10410     i                        NUMBER := 0;
10411     j                        NUMBER := 0;
10412     k                        NUMBER := 0;
10413     l_klev_rec               klev_rec_type;
10414     l_clev_tbl               clev_tbl_type;
10415     x_klev_rec               klev_rec_type;
10416     ln_oec                   OKL_K_LINES_V.OEC%TYPE := 0;
10417     ln_add_cle_id            OKC_K_LINES_V.CLE_ID%TYPE := 0;
10418     ln_add_dnz_chr_id        OKC_K_LINES_V.DNZ_CHR_ID%TYPE := 0;
10419     ln_top_line_id           OKC_K_LINES_V.CLE_ID%TYPE := 0;
10420     ln_klev_fin_oec          OKL_K_LINES_V.OEC%TYPE := 0;
10421     ln_klev_fin_res          OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
10422     ln_klev_fin_cap          OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
10423 
10424     -- To Find out the Top line ID
10425     CURSOR c_model_top_line(p_model_line_id OKC_K_LINES_V.ID%TYPE,
10426                             p_dnz_chr_id    OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
10427 --  #4414408
10428     SELECT cle.cle_id
10429     FROM okc_k_lines_b cle
10430     WHERE cle.id = p_model_line_id
10431     AND cle.dnz_chr_id = p_dnz_chr_id
10432     AND cle.lse_id = G_MODEL_LINE_LTY_ID;
10433 
10434   BEGIN
10435     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
10436     -- Call start_activity to create savepoint, check compatibility
10437     -- and initialize message list
10438     x_return_status := OKL_API.START_ACTIVITY (
10439                                l_api_name
10440                                ,p_init_msg_list
10441                                ,'_PVT'
10442                                ,x_return_status);
10443     -- Check if activity started successfully
10444     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10445        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10446     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10447        RAISE OKL_API.G_EXCEPTION_ERROR;
10448     END IF;
10449     OKL_API.init_msg_list(p_init_msg_list);
10450     -- Make sure PL/SQL table has records in it before passing
10451     IF (p_clev_tbl.COUNT > 0) AND
10452        (p_cimv_tbl.COUNT > 0)THEN
10453        i := p_clev_tbl.FIRST;
10454        k := p_cimv_tbl.FIRST;
10455        IF (p_klev_tbl.COUNT = 0) THEN
10456        -- Since p_klev_tbl is not Mandtory we could get and give blank record
10457          l_clev_tbl := p_clev_tbl;
10458          LOOP
10459            x_return_status := get_lse_id(p_lty_code => G_ADDON_LINE_LTY_CODE,
10460                                          x_lse_id   => l_clev_tbl(i).lse_id);
10461            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10462               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
10463            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10464               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
10465            END IF;
10466            create_addon_line_rec(p_api_version   => p_api_version,
10467                                  p_init_msg_list => p_init_msg_list,
10468                                  x_return_status => x_return_status,
10469                                  x_msg_count     => x_msg_count,
10470                                  x_msg_data      => x_msg_data,
10471                                  P_new_yn        => P_new_yn,
10472                                  p_asset_number  => p_asset_number,
10473                                  p_clev_rec      => l_clev_tbl(i),
10474                                  p_klev_rec      => l_klev_rec,
10475                                  p_cimv_rec      => p_cimv_tbl(k),
10476                                  x_clev_rec      => x_clev_tbl(i),
10477                                  x_klev_rec      => x_klev_rec,
10478                                  x_cimv_rec      => x_cimv_tbl(k));
10479            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10480               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
10481            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10482               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
10483            END IF;
10484            ln_add_cle_id       := x_clev_tbl(i).cle_id;
10485            ln_add_dnz_chr_id   := x_clev_tbl(i).dnz_chr_id;
10486            -- Assume that there will be one to one for item and add on line
10487            EXIT WHEN (i = p_clev_tbl.LAST);
10488            i := l_clev_tbl.NEXT(i);
10489            k := p_cimv_tbl.NEXT(k);
10490            x_klev_tbl(i) :=  x_klev_rec;
10491          END LOOP;
10492        ELSE
10493          IF (p_clev_tbl.COUNT <> p_klev_tbl.COUNT) OR
10494             (p_clev_tbl.COUNT <> p_cimv_tbl.COUNT) OR
10495             (p_klev_tbl.COUNT <> p_cimv_tbl.COUNT) THEN
10496             OKL_API.set_message(p_app_name     => G_APP_NAME,
10497                                 p_msg_name     => G_CNT_REC);
10498            RAISE OKL_API.G_EXCEPTION_ERROR;
10499          END IF;
10500          j := p_klev_tbl.FIRST;
10501          l_clev_tbl := p_clev_tbl;
10502          LOOP
10503            x_return_status := get_lse_id(p_lty_code => G_ADDON_LINE_LTY_CODE,
10504                                          x_lse_id   => l_clev_tbl(i).lse_id);
10505            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10506               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
10507            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10508               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
10509            END IF;
10510            create_addon_line_rec(p_api_version   => p_api_version,
10511                                  p_init_msg_list => p_init_msg_list,
10512                                  x_return_status => x_return_status,
10513                                  x_msg_count     => x_msg_count,
10514                                  x_msg_data      => x_msg_data,
10515                                  P_new_yn        => P_new_yn,
10516                                  p_asset_number  => p_asset_number,
10517                                  p_clev_rec      => l_clev_tbl(i),
10518                                  p_klev_rec      => p_klev_tbl(j),
10519                                  p_cimv_rec      => p_cimv_tbl(k),
10520                                  x_clev_rec      => x_clev_tbl(i),
10521                                  x_klev_rec      => x_klev_tbl(j),
10522                                  x_cimv_rec      => x_cimv_tbl(k));
10523            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10524               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
10525            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10526               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
10527            END IF;
10528            ln_add_cle_id       := x_clev_tbl(i).cle_id;
10529            ln_add_dnz_chr_id   := x_clev_tbl(i).dnz_chr_id;
10530            -- Assume that there will be one to one for item and add on line
10531            EXIT WHEN (i = p_clev_tbl.LAST);
10532            i := l_clev_tbl.NEXT(i);
10533            j := p_klev_tbl.NEXT(j);
10534            k := p_cimv_tbl.NEXT(K);
10535          END LOOP;
10536        END IF;
10537        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10538          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10539        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10540          RAISE OKL_API.G_EXCEPTION_ERROR;
10541        END IF;
10542 
10543        OPEN  c_model_top_line(p_model_line_id => ln_add_cle_id,
10544                               p_dnz_chr_id    => ln_add_dnz_chr_id);
10545        FETCH c_model_top_line INTO ln_top_line_id;
10546 
10547        IF c_model_top_line%NOTFOUND THEN
10548           OKL_API.set_message(p_app_name     => G_APP_NAME,
10549                               p_msg_name     => G_NO_MATCHING_RECORD,
10550                               p_token1       => G_COL_NAME_TOKEN,
10551                               p_token1_value => 'cle_id');
10552           RAISE G_EXCEPTION_HALT_VALIDATION;
10553        END IF;
10554 
10555        CLOSE c_model_top_line;
10556 
10557        -- Calculate the OEC to Populate the OKL_K_LINES_V.OEC
10558        oec_calc_upd_fin_rec(p_api_version        => p_api_version,
10559                             p_init_msg_list      => p_init_msg_list,
10560                             x_return_status      => x_return_status,
10561                             x_msg_count          => x_msg_count,
10562                             x_msg_data           => x_msg_data,
10563                             P_new_yn             => P_new_yn,
10564                             p_asset_number       => p_asset_number,
10565 			    -- 4414408
10566                             p_top_line_id        => ln_top_line_id,
10567                             p_dnz_chr_id         => ln_add_dnz_chr_id,
10568                             x_fin_clev_rec       => x_fin_clev_rec,
10569                             x_fin_klev_rec       => x_fin_klev_rec,
10570                             x_oec                => ln_klev_fin_oec,
10571                             p_validate_fin_line  => OKL_API.G_TRUE);
10572        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10573          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10574        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10575         RAISE OKL_API.G_EXCEPTION_ERROR;
10576        END IF;
10577        -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
10578        cap_amt_calc_upd_fin_rec(p_api_version        => p_api_version,
10579                                 p_init_msg_list      => p_init_msg_list,
10580                                 x_return_status      => x_return_status,
10581                                 x_msg_count          => x_msg_count,
10582                                 x_msg_data           => x_msg_data,
10583                                 P_new_yn             => P_new_yn,
10584                                 p_asset_number       => p_asset_number,
10585 				-- 4414408
10586                                 p_top_line_id        => ln_top_line_id,
10587                                 p_dnz_chr_id         => ln_add_dnz_chr_id,
10588                                 x_fin_clev_rec       => x_fin_clev_rec,
10589                                 x_fin_klev_rec       => x_fin_klev_rec,
10590                                 x_cap_amt            => ln_klev_fin_cap,
10591                                 p_validate_fin_line  => OKL_API.G_TRUE);
10592        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10593          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10594        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10595          RAISE OKL_API.G_EXCEPTION_ERROR;
10596        END IF;
10597        -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
10598        res_value_calc_upd_fin_rec(p_api_version        => p_api_version,
10599                                   p_init_msg_list      => p_init_msg_list,
10600                                   x_return_status      => x_return_status,
10601                                   x_msg_count          => x_msg_count,
10602                                   x_msg_data           => x_msg_data,
10603                                   P_new_yn             => P_new_yn,
10604                                   p_asset_number       => p_asset_number,
10605 				  -- 4414408
10606                                   p_top_line_id        => ln_top_line_id,
10607                                   p_dnz_chr_id         => ln_add_dnz_chr_id,
10608                                   x_fin_clev_rec       => x_fin_clev_rec,
10609                                   x_fin_klev_rec       => x_fin_klev_rec,
10610                                   x_res_value          => ln_klev_fin_res,
10611                                   p_validate_fin_line  => OKL_API.G_TRUE);
10612        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10613          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10614        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10615          RAISE OKL_API.G_EXCEPTION_ERROR;
10616        END IF;
10617 
10618        --Bug# 5530990
10619        -- Update Original Cost and Depreciation Cost in
10620        -- OKL_TXL_ASSETS_B and OKL_TXD_ASSETS_B when
10621        -- Add on line is added
10622        update_asset_cost(p_api_version        => p_api_version,
10623                          p_init_msg_list      => p_init_msg_list,
10624                          x_return_status      => x_return_status,
10625                          x_msg_count          => x_msg_count,
10626                          x_msg_data           => x_msg_data,
10627                          p_cleb_fin_id        => ln_top_line_id,
10628                          p_chr_id             => ln_add_dnz_chr_id,
10629                          p_oec                => ln_klev_fin_oec);
10630        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10631          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10632        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10633          RAISE OKL_API.G_EXCEPTION_ERROR;
10634        END IF;
10635 
10636     ELSE
10637        OKL_API.set_message(p_app_name => G_APP_NAME,
10638                            p_msg_name => G_CNT_REC);
10639        x_return_status := OKL_API.G_RET_STS_ERROR;
10640        RAISE OKL_API.G_EXCEPTION_ERROR;
10641     END IF;
10642     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10643        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10644     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10645        RAISE OKL_API.G_EXCEPTION_ERROR;
10646     END IF;
10647     OKL_API.END_ACTIVITY (x_msg_count,
10648                           x_msg_data );
10649   EXCEPTION
10650     WHEN OKL_API.G_EXCEPTION_ERROR THEN
10651     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10652                                l_api_name,
10653                                G_PKG_NAME,
10654                                'OKL_API.G_RET_STS_ERROR',
10655                                x_msg_count,
10656                                x_msg_data,
10657                                '_PVT');
10658     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10659     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10660                               l_api_name,
10661                               G_PKG_NAME,
10662                               'OKL_API.G_RET_STS_UNEXP_ERROR',
10663                               x_msg_count,
10664                               x_msg_data,
10665                               '_PVT');
10666     WHEN OTHERS THEN
10667     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10668                               l_api_name,
10669                               G_PKG_NAME,
10670                               'OTHERS',
10671                               x_msg_count,
10672                               x_msg_data,
10673                               '_PVT');
10674   END create_add_on_line;
10675 -------------------------------------------------------------------------------------------------------
10676 ---------------------------- Main Process for Update of Add on Line ---------------------------------
10677 -------------------------------------------------------------------------------------------------------
10678   PROCEDURE update_add_on_line(
10679             p_api_version   IN NUMBER,
10680             p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
10681             x_return_status  OUT NOCOPY VARCHAR2,
10682             x_msg_count      OUT NOCOPY NUMBER,
10683             x_msg_data       OUT NOCOPY VARCHAR2,
10684             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
10685             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
10686             p_clev_tbl       IN  clev_tbl_type,
10687             p_klev_tbl       IN  klev_tbl_type,
10688             p_cimv_tbl       IN  cimv_tbl_type,
10689             x_clev_tbl       OUT NOCOPY clev_tbl_type,
10690             x_klev_tbl       OUT NOCOPY klev_tbl_type,
10691             x_cimv_tbl       OUT NOCOPY cimv_tbl_type,
10692             x_fin_clev_rec   OUT NOCOPY clev_rec_type,
10693             x_fin_klev_rec   OUT NOCOPY klev_rec_type) IS
10694 
10695     i                        NUMBER := 0;
10696     j                        NUMBER := 0;
10697     k                        NUMBER := 0;
10698     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_ADD_LINE';
10699     l_klev_rec               klev_rec_type;
10700     l_clev_tbl               clev_tbl_type;
10701     x_klev_rec               klev_rec_type;
10702     ln_add_cle_id            OKC_K_LINES_V.CLE_ID%TYPE := 0;
10703     ln_add_dnz_chr_id        OKC_K_LINES_V.DNZ_CHR_ID%TYPE := 0;
10704     ln_top_line_id           OKC_K_LINES_V.CLE_ID%TYPE := 0;
10705     ln_klev_fin_oec          OKL_K_LINES_V.OEC%TYPE := 0;
10706     ln_klev_fin_res          OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
10707     ln_klev_fin_cap          OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
10708 
10709     -- To Find out the Top line ID
10710     CURSOR c_model_top_line(p_model_line_id OKC_K_LINES_V.ID%TYPE,
10711                             p_dnz_chr_id    OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
10712     --  #4414408
10713     SELECT cle.cle_id
10714     FROM okc_k_lines_b cle
10715     WHERE cle.id = p_model_line_id
10716     AND cle.dnz_chr_id = p_dnz_chr_id
10717     AND cle.lse_id = G_MODEL_LINE_LTY_ID;
10718 
10719   BEGIN
10720     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
10721     -- Call start_activity to create savepoint, check compatibility
10722     -- and initialize message list
10723     x_return_status := OKL_API.START_ACTIVITY (
10724                                l_api_name
10725                                ,p_init_msg_list
10726                                ,'_PVT'
10727                                ,x_return_status);
10728     -- Check if activity started successfully
10729     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10730        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10731     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10732        RAISE OKL_API.G_EXCEPTION_ERROR;
10733     END IF;
10734     OKL_API.init_msg_list(p_init_msg_list);
10735     -- Make sure PL/SQL table has records in it before passing
10736     IF (p_clev_tbl.COUNT > 0) AND
10737        (p_klev_tbl.COUNT > 0) AND
10738        (p_cimv_tbl.COUNT > 0)THEN
10739        IF (p_clev_tbl.COUNT <> p_klev_tbl.COUNT) OR
10740           (p_clev_tbl.COUNT <> p_cimv_tbl.COUNT) OR
10741           (p_klev_tbl.COUNT <> p_cimv_tbl.COUNT) THEN
10742             OKL_API.set_message(p_app_name => G_APP_NAME,
10743                                 p_msg_name => G_CNT_REC);
10744           RAISE OKL_API.G_EXCEPTION_ERROR;
10745        END IF;
10746        i := p_clev_tbl.FIRST;
10747        j := p_klev_tbl.FIRST;
10748        k := p_cimv_tbl.FIRST;
10749        l_clev_tbl := p_clev_tbl;
10750        LOOP
10751          update_addon_line_rec(p_api_version   => p_api_version,
10752                                p_init_msg_list => p_init_msg_list,
10753                                x_return_status => x_return_status,
10754                                x_msg_count     => x_msg_count,
10755                                x_msg_data      => x_msg_data,
10756                                P_new_yn        => P_new_yn,
10757                                p_asset_number  => p_asset_number,
10758                                p_clev_rec      => l_clev_tbl(i),
10759                                p_klev_rec      => p_klev_tbl(j),
10760                                p_cimv_rec      => p_cimv_tbl(k),
10761                                x_clev_rec      => x_clev_tbl(i),
10762                                x_klev_rec      => x_klev_tbl(j),
10763                                x_cimv_rec      => x_cimv_tbl(k));
10764          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10765            EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
10766          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10767            EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
10768            RAISE OKL_API.G_EXCEPTION_ERROR;
10769          END IF;
10770          ln_add_cle_id       := x_clev_tbl(i).cle_id;
10771          ln_add_dnz_chr_id   := x_clev_tbl(i).dnz_chr_id;
10772          -- Assume that there will be one to one for item and add on line
10773          EXIT WHEN (i = p_clev_tbl.LAST);
10774          i := p_clev_tbl.NEXT(i);
10775          j := p_klev_tbl.NEXT(j);
10776          k := p_clev_tbl.NEXT(k);
10777        END LOOP;
10778     ELSE
10779        OKL_API.set_message(p_app_name => G_APP_NAME,
10780                            p_msg_name => G_CNT_REC);
10781        x_return_status := OKL_API.G_RET_STS_ERROR;
10782        RAISE OKL_API.G_EXCEPTION_ERROR;
10783     END IF;
10784     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10785        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10786     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10787        RAISE OKL_API.G_EXCEPTION_ERROR;
10788     END IF;
10789 
10790     OPEN  c_model_top_line(p_model_line_id => ln_add_cle_id,
10791                            p_dnz_chr_id    => ln_add_dnz_chr_id);
10792     FETCH c_model_top_line INTO ln_top_line_id;
10793 
10794     IF c_model_top_line%NOTFOUND THEN
10795        OKL_API.set_message(p_app_name     => G_APP_NAME,
10796                            p_msg_name     => G_NO_MATCHING_RECORD,
10797                            p_token1       => G_COL_NAME_TOKEN,
10798                            p_token1_value => 'cle_id');
10799        RAISE G_EXCEPTION_HALT_VALIDATION;
10800     END IF;
10801 
10802     CLOSE c_model_top_line;
10803 
10804     -- Calculate the OEC to Populate the OKL_K_LINES_V.OEC
10805     oec_calc_upd_fin_rec(p_api_version        => p_api_version,
10806                          p_init_msg_list      => p_init_msg_list,
10807                          x_return_status      => x_return_status,
10808                          x_msg_count          => x_msg_count,
10809                          x_msg_data           => x_msg_data,
10810                          P_new_yn             => P_new_yn,
10811                          p_asset_number       => p_asset_number,
10812 			 -- 4414408
10813                          p_top_line_id        => ln_top_line_id,
10814                          p_dnz_chr_id         => ln_add_dnz_chr_id,
10815                          x_fin_clev_rec       => x_fin_clev_rec,
10816                          x_fin_klev_rec       => x_fin_klev_rec,
10817                          x_oec                => ln_klev_fin_oec,
10818                          p_validate_fin_line  => OKL_API.G_TRUE);
10819     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10820       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10821     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10822       RAISE OKL_API.G_EXCEPTION_ERROR;
10823     END IF;
10824     -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
10825     cap_amt_calc_upd_fin_rec(p_api_version        => p_api_version,
10826                              p_init_msg_list      => p_init_msg_list,
10827                              x_return_status      => x_return_status,
10828                              x_msg_count          => x_msg_count,
10829                              x_msg_data           => x_msg_data,
10830                              P_new_yn             => P_new_yn,
10831                              p_asset_number       => p_asset_number,
10832 			     -- 4414408
10833                              p_top_line_id        => ln_top_line_id,
10834                              p_dnz_chr_id         => ln_add_dnz_chr_id,
10835                              x_fin_clev_rec       => x_fin_clev_rec,
10836                              x_fin_klev_rec       => x_fin_klev_rec,
10837                              x_cap_amt            => ln_klev_fin_cap,
10838                              p_validate_fin_line  => OKL_API.G_TRUE);
10839     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10840       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10841     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10842       RAISE OKL_API.G_EXCEPTION_ERROR;
10843     END IF;
10844     -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
10845     res_value_calc_upd_fin_rec(p_api_version        => p_api_version,
10846                                p_init_msg_list      => p_init_msg_list,
10847                                x_return_status      => x_return_status,
10848                                x_msg_count          => x_msg_count,
10849                                x_msg_data           => x_msg_data,
10850                                P_new_yn             => P_new_yn,
10851                                p_asset_number       => p_asset_number,
10852 			       -- 4414408
10853                                p_top_line_id        => ln_top_line_id,
10854                                p_dnz_chr_id         => ln_add_dnz_chr_id,
10855                                x_fin_clev_rec       => x_fin_clev_rec,
10856                                x_fin_klev_rec       => x_fin_klev_rec,
10857                                x_res_value          => ln_klev_fin_res,
10858                                p_validate_fin_line  => OKL_API.G_TRUE);
10859     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10860       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10861     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10862       RAISE OKL_API.G_EXCEPTION_ERROR;
10863     END IF;
10864 
10865     --Bug# 5530990
10866     -- Update Original Cost and Depreciation Cost in
10867     -- OKL_TXL_ASSETS_B and OKL_TXD_ASSETS_B when
10868     -- Add on line is updated
10869     update_asset_cost(p_api_version        => p_api_version,
10870                       p_init_msg_list      => p_init_msg_list,
10871                       x_return_status      => x_return_status,
10872                       x_msg_count          => x_msg_count,
10873                       x_msg_data           => x_msg_data,
10874                       p_cleb_fin_id        => ln_top_line_id,
10875                       p_chr_id             => ln_add_dnz_chr_id,
10876                       p_oec                => ln_klev_fin_oec);
10877     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10878      RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10879     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10880       RAISE OKL_API.G_EXCEPTION_ERROR;
10881     END IF;
10882 
10883     -- We need to change the status of the header whenever there is updating happening
10884     -- after the contract status is approved
10885     IF (x_fin_clev_rec.dnz_chr_id is NOT NULL) AND
10886        (x_fin_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
10887       --cascade edit status on to lines
10888       okl_contract_status_pub.cascade_lease_status_edit
10889                (p_api_version     => p_api_version,
10890                 p_init_msg_list   => p_init_msg_list,
10891                 x_return_status   => x_return_status,
10892                 x_msg_count       => x_msg_count,
10893                 x_msg_data        => x_msg_data,
10894                 p_chr_id          => x_fin_clev_rec.dnz_chr_id);
10895       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10896         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10897       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10898         RAISE OKL_API.G_EXCEPTION_ERROR;
10899       END IF;
10900     END IF;
10901     OKL_API.END_ACTIVITY (x_msg_count,
10902                           x_msg_data );
10903   EXCEPTION
10904     WHEN OKL_API.G_EXCEPTION_ERROR THEN
10905     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10906                                l_api_name,
10907                                G_PKG_NAME,
10908                                'OKL_API.G_RET_STS_ERROR',
10909                                x_msg_count,
10910                                x_msg_data,
10911                                '_PVT');
10912     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10913     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10914                               l_api_name,
10915                               G_PKG_NAME,
10916                               'OKL_API.G_RET_STS_UNEXP_ERROR',
10917                               x_msg_count,
10918                               x_msg_data,
10919                               '_PVT');
10920     WHEN OTHERS THEN
10921     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10922                               l_api_name,
10923                               G_PKG_NAME,
10924                               'OTHERS',
10925                               x_msg_count,
10926                               x_msg_data,
10927                               '_PVT');
10928   END update_add_on_line;
10929 -------------------------------------------------------------------------------------------------------
10930 ---------------------------- Main Process for Delete of Add on Line -----------------------------------
10931 -------------------------------------------------------------------------------------------------------
10932   PROCEDURE delete_add_on_line(
10933             p_api_version    IN  NUMBER,
10934             p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
10935             x_return_status  OUT NOCOPY VARCHAR2,
10936             x_msg_count      OUT NOCOPY NUMBER,
10937             x_msg_data       OUT NOCOPY VARCHAR2,
10938             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
10939             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
10940             p_clev_tbl       IN  clev_tbl_type,
10941             p_klev_tbl       IN  klev_tbl_type,
10942             x_fin_clev_rec   OUT NOCOPY clev_rec_type,
10943             x_fin_klev_rec   OUT NOCOPY klev_rec_type) IS
10944 
10945     i                        NUMBER := 0;
10946     j                        NUMBER := 0;
10947     l_api_name      CONSTANT VARCHAR2(30) := 'DELETE_ADDON_LN';
10948     ln_add_cle_id            OKC_K_LINES_V.CLE_ID%TYPE := 0;
10949     ln_add_dnz_chr_id        OKC_K_LINES_V.DNZ_CHR_ID%TYPE := 0;
10950     ln_top_line_id           OKC_K_LINES_V.CLE_ID%TYPE := 0;
10951     l_clev_tbl               clev_tbl_type;
10952     ln_klev_fin_oec              OKL_K_LINES_V.OEC%TYPE := 0;
10953     ln_klev_fin_res              OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
10954     ln_klev_fin_cap              OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
10955 
10956     -- To Find out the Top line ID
10957     CURSOR c_model_top_line(p_model_line_id OKC_K_LINES_V.ID%TYPE,
10958                             p_dnz_chr_id    OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
10959     --  #4414408
10960     SELECT cle.cle_id
10961     FROM okc_k_lines_b cle
10962     WHERE cle.id = p_model_line_id
10963     AND cle.dnz_chr_id = p_dnz_chr_id
10964     AND cle.lse_id = G_MODEL_LINE_LTY_ID;
10965 
10966   BEGIN
10967     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
10968     -- Call start_activity to create savepoint, check compatibility
10969     -- and initialize message list
10970     x_return_status := OKL_API.START_ACTIVITY (
10971                                l_api_name
10972                                ,p_init_msg_list
10973                                ,'_PVT'
10974                                ,x_return_status);
10975     -- Check if activity started successfully
10976     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10977        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10978     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10979        RAISE OKL_API.G_EXCEPTION_ERROR;
10980     END IF;
10981     OKL_API.init_msg_list(p_init_msg_list);
10982     -- Make sure PL/SQL table has records in it before passing
10983     IF (p_clev_tbl.COUNT > 0) AND
10984        (p_klev_tbl.COUNT > 0) THEN
10985        IF (p_clev_tbl.COUNT <> p_klev_tbl.COUNT) THEN
10986        OKL_API.set_message(p_app_name => G_APP_NAME,
10987                            p_msg_name => G_CNT_REC);
10988           RAISE OKL_API.G_EXCEPTION_ERROR;
10989        END IF;
10990        i := p_clev_tbl.FIRST;
10991        j := p_klev_tbl.FIRST;
10992        LOOP
10993          delete_addon_line_rec(p_api_version   => p_api_version,
10994                                p_init_msg_list => p_init_msg_list,
10995                                x_return_status => x_return_status,
10996                                x_msg_count     => x_msg_count,
10997                                x_msg_data      => x_msg_data,
10998                                p_clev_rec      => p_clev_tbl(i),
10999                                p_klev_rec      => p_klev_tbl(j),
11000                                x_clev_rec      => l_clev_tbl(i));
11001          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11002             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
11003          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11004             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
11005          END IF;
11006          ln_add_cle_id     := l_clev_tbl(i).cle_id;
11007          ln_add_dnz_chr_id := l_clev_tbl(i).dnz_chr_id;
11008          -- Assume that there will be one to one for item and add on line
11009          EXIT WHEN (i = p_clev_tbl.LAST);
11010          i := p_clev_tbl.NEXT(i);
11011          j := p_klev_tbl.NEXT(j);
11012        END LOOP;
11013     ELSE
11014        OKL_API.set_message(p_app_name => G_APP_NAME,
11015                            p_msg_name => G_CNT_REC);
11016        x_return_status := OKL_API.G_RET_STS_ERROR;
11017        RAISE OKL_API.G_EXCEPTION_ERROR;
11018     END IF;
11019     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11020        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11021     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11022        RAISE OKL_API.G_EXCEPTION_ERROR;
11023     END IF;
11024 
11025     OPEN  c_model_top_line(p_model_line_id => ln_add_cle_id,
11026                            p_dnz_chr_id    => ln_add_dnz_chr_id);
11027     FETCH c_model_top_line INTO ln_top_line_id;
11028 
11029     IF c_model_top_line%NOTFOUND THEN
11030        OKL_API.set_message(p_app_name     => G_APP_NAME,
11031                            p_msg_name     => G_NO_MATCHING_RECORD,
11032                            p_token1       => G_COL_NAME_TOKEN,
11033                            p_token1_value => 'cle_id');
11034        RAISE G_EXCEPTION_HALT_VALIDATION;
11035     END IF;
11036 
11037     CLOSE c_model_top_line;
11038 
11039     -- Calculate the OEC to Populate the OKL_K_LINES_V.OEC
11040     oec_calc_upd_fin_rec(p_api_version        => p_api_version,
11041                          p_init_msg_list      => p_init_msg_list,
11042                          x_return_status      => x_return_status,
11043                          x_msg_count          => x_msg_count,
11044                          x_msg_data           => x_msg_data,
11045                          P_new_yn             => P_new_yn,
11046                          p_asset_number       => p_asset_number,
11047 			 -- 4414408
11048                          p_top_line_id        => ln_top_line_id,
11049                          p_dnz_chr_id         => ln_add_dnz_chr_id,
11050                          x_fin_clev_rec       => x_fin_clev_rec,
11051                          x_fin_klev_rec       => x_fin_klev_rec,
11052                          x_oec                => ln_klev_fin_oec,
11053                          p_validate_fin_line  => OKL_API.G_TRUE);
11054     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11055       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11056     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11057       RAISE OKL_API.G_EXCEPTION_ERROR;
11058     END IF;
11059     -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
11060     cap_amt_calc_upd_fin_rec(p_api_version        => p_api_version,
11061                              p_init_msg_list      => p_init_msg_list,
11062                              x_return_status      => x_return_status,
11063                              x_msg_count          => x_msg_count,
11064                              x_msg_data           => x_msg_data,
11065                              P_new_yn             => P_new_yn,
11066                              p_asset_number       => p_asset_number,
11067 			     -- 4414408
11068                              p_top_line_id        => ln_top_line_id,
11069                              p_dnz_chr_id         => ln_add_dnz_chr_id,
11070                              x_fin_clev_rec       => x_fin_clev_rec,
11071                              x_fin_klev_rec       => x_fin_klev_rec,
11072                              x_cap_amt            => ln_klev_fin_cap,
11073                              p_validate_fin_line  => OKL_API.G_TRUE);
11074     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11075       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11076     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11077       RAISE OKL_API.G_EXCEPTION_ERROR;
11078     END IF;
11079     -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
11080     res_value_calc_upd_fin_rec(p_api_version        => p_api_version,
11081                                p_init_msg_list      => p_init_msg_list,
11082                                x_return_status      => x_return_status,
11083                                x_msg_count          => x_msg_count,
11084                                x_msg_data           => x_msg_data,
11085                                P_new_yn             => P_new_yn,
11086                                p_asset_number       => p_asset_number,
11087 			       -- 4414408
11088                                p_top_line_id        => ln_top_line_id,
11089                                p_dnz_chr_id         => ln_add_dnz_chr_id,
11090                                x_fin_clev_rec       => x_fin_clev_rec,
11091                                x_fin_klev_rec       => x_fin_klev_rec,
11092                                x_res_value          => ln_klev_fin_res,
11093                                p_validate_fin_line  => OKL_API.G_TRUE);
11094     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11095       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11096     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11097       RAISE OKL_API.G_EXCEPTION_ERROR;
11098     END IF;
11099 
11100     --Bug# 5530990
11101     -- Update Original Cost and Depreciation Cost in
11102     -- OKL_TXL_ASSETS_B and OKL_TXD_ASSETS_B when
11103     -- Add on line is deleted
11104     update_asset_cost(p_api_version        => p_api_version,
11105                       p_init_msg_list      => p_init_msg_list,
11106                       x_return_status      => x_return_status,
11107                       x_msg_count          => x_msg_count,
11108                       x_msg_data           => x_msg_data,
11109                       p_cleb_fin_id        => ln_top_line_id,
11110                       p_chr_id             => ln_add_dnz_chr_id,
11111                       p_oec                => ln_klev_fin_oec);
11112     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11113      RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11114     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11115       RAISE OKL_API.G_EXCEPTION_ERROR;
11116     END IF;
11117 
11118     -- We need to change the status of the header whenever there is updating happening
11119     -- after the contract status is approved
11120     IF (x_fin_clev_rec.dnz_chr_id is NOT NULL) AND
11121        (x_fin_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
11122       --cascade edit status on to lines
11123       okl_contract_status_pub.cascade_lease_status_edit
11124                (p_api_version     => p_api_version,
11125                 p_init_msg_list   => p_init_msg_list,
11126                 x_return_status   => x_return_status,
11127                 x_msg_count       => x_msg_count,
11128                 x_msg_data        => x_msg_data,
11129                 p_chr_id          => x_fin_clev_rec.dnz_chr_id);
11130       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11131         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11132       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11133         RAISE OKL_API.G_EXCEPTION_ERROR;
11134       END IF;
11135     END IF;
11136     OKL_API.END_ACTIVITY (x_msg_count,
11137                           x_msg_data );
11138   EXCEPTION
11139     WHEN OKL_API.G_EXCEPTION_ERROR THEN
11140     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11141                                l_api_name,
11142                                G_PKG_NAME,
11143                                'OKL_API.G_RET_STS_ERROR',
11144                                x_msg_count,
11145                                x_msg_data,
11146                                '_PVT');
11147     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11148     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11149                               l_api_name,
11150                               G_PKG_NAME,
11151                               'OKL_API.G_RET_STS_UNEXP_ERROR',
11152                               x_msg_count,
11153                               x_msg_data,
11154                               '_PVT');
11155     WHEN OTHERS THEN
11156     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11157                               l_api_name,
11158                               G_PKG_NAME,
11159                               'OTHERS',
11160                               x_msg_count,
11161                               x_msg_data,
11162                               '_PVT');
11163   END delete_add_on_line;
11164 -----------------------------------------------------------------------------------------------
11165 ------------------ Main Process for Instance Line Creation-------------------------------------
11166 -----------------------------------------------------------------------------------------------
11167   PROCEDURE Create_instance_line(
11168             p_api_version    IN  NUMBER,
11169             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
11170             x_return_status  OUT NOCOPY VARCHAR2,
11171             x_msg_count      OUT NOCOPY NUMBER,
11172             x_msg_data       OUT NOCOPY VARCHAR2,
11173             p_clev_rec       IN  clev_rec_type,
11174             p_klev_rec       IN  klev_rec_type,
11175             p_itiv_rec       IN  itiv_rec_type,
11176             x_clev_rec       OUT NOCOPY clev_rec_type,
11177             x_klev_rec       OUT NOCOPY klev_rec_type,
11178             x_itiv_rec       OUT NOCOPY itiv_rec_type) IS
11179 
11180     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_INSTANCE_LINES';
11181     l_clev_rec               clev_rec_type;
11182     ln_lse_id                OKC_LINE_STYLES_V.ID%TYPE := OKL_API.G_MISS_NUM;
11183     -- Variables for validation of line style
11184     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
11185     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
11186   BEGIN
11187     x_return_status := OKL_API.G_RET_STS_SUCCESS;
11188     -- Call start_activity to create savepoint, check compatibility
11189     -- and initialize message list
11190     x_return_status := OKL_API.START_ACTIVITY (
11191                                l_api_name
11192                                ,p_init_msg_list
11193                                ,'_PVT'
11194                                ,x_return_status);
11195     -- Check if activity started successfully
11196     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11197        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11198     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11199        RAISE OKL_API.G_EXCEPTION_ERROR;
11200     END IF;
11201 --  4414408 The validations in Validate_lse_id and Validate_dnz_chr_id are redundant
11202 /*
11203     -- Validate Line Style id and get the line type code
11204     -- and line style type for further processing
11205     validate_lse_id(p_clev_rec      => p_clev_rec,
11206                     x_return_status => x_return_status,
11207                     x_lty_code      => l_lty_code,
11208                     x_lse_type      => l_lse_type);
11209     -- Check if activity started successfully
11210     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11211        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11212     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11213        RAISE OKL_API.G_EXCEPTION_ERROR;
11214     END IF;
11215     -- Validate the Dnz_Chr_id
11216     validate_dnz_chr_id(p_clev_rec      => p_clev_rec,
11217                         x_return_status => x_return_status);
11218     -- Check if activity started successfully
11219     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11220       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11221     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11222       RAISE OKL_API.G_EXCEPTION_ERROR;
11223     END IF;
11224 */
11225     -- Now we are going to create the instance Line
11226     -- Here we have have Dnz_Chr_id ,lse_id and cle_id
11227     -- The Record Should have the cle_id
11228     -- if the given line style is instance Line
11229     l_clev_rec := p_clev_rec;
11230     IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
11231        l_clev_rec.chr_id IS NULL) AND
11232        (l_clev_rec.dnz_chr_id IS NOT NULL OR
11233        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
11234        (l_clev_rec.cle_id IS NOT NULL OR
11235        l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
11236 --     #4414408
11237 --       l_lty_code = G_INST_LINE_LTY_CODE AND
11238 --       l_lse_type = G_SLS_TYPE THEN
11239        l_clev_rec.lse_id = G_INST_LINE_LTY_ID THEN
11240        validate_instance_number_ib(x_return_status => x_return_status,
11241                                    p_inst_num_ib   => p_itiv_rec.instance_number_ib);
11242        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11243           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11244        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11245           RAISE OKL_API.G_EXCEPTION_ERROR;
11246        END IF;
11247        Create_inst_line(p_api_version   => p_api_version,
11248                         p_init_msg_list => p_init_msg_list,
11249                         x_return_status => x_return_status,
11250                         x_msg_count     => x_msg_count,
11251                         x_msg_data      => x_msg_data,
11252 -- 4414408              p_lty_code      => l_lty_code,
11253                         p_clev_rec      => l_clev_rec,
11254                         p_klev_rec      => p_klev_rec,
11255                         x_clev_rec      => x_clev_rec,
11256                         x_klev_rec      => x_klev_rec);
11257        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11258           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11259        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11260           RAISE OKL_API.G_EXCEPTION_ERROR;
11261        END IF;
11262     ELSE
11263       OKL_API.set_message(p_app_name     => G_APP_NAME,
11264                           p_msg_name     => G_INVALID_CRITERIA,
11265                           p_token1       => G_COL_NAME_TOKEN,
11266                           p_token1_value => 'Instance Asset line');
11267       x_return_status := OKL_API.G_RET_STS_ERROR;
11268       RAISE OKL_API.G_EXCEPTION_ERROR;
11269     END IF;
11270     OKL_API.END_ACTIVITY (x_msg_count,
11271                           x_msg_data );
11272   EXCEPTION
11273     WHEN OKL_API.G_EXCEPTION_ERROR THEN
11274     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11275                                l_api_name,
11276                                G_PKG_NAME,
11277                                'OKL_API.G_RET_STS_ERROR',
11278                                x_msg_count,
11279                                x_msg_data,
11280                                '_PVT');
11281     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11282     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11283                               l_api_name,
11284                               G_PKG_NAME,
11285                               'OKL_API.G_RET_STS_UNEXP_ERROR',
11286                               x_msg_count,
11287                               x_msg_data,
11288                               '_PVT');
11289     WHEN OTHERS THEN
11290     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11291                               l_api_name,
11292                               G_PKG_NAME,
11293                               'OTHERS',
11294                               x_msg_count,
11295                               x_msg_data,
11296                               '_PVT');
11297   END Create_instance_line;
11298 -----------------------------------------------------------------------------------------------
11299 ------------------ Main Process for Updating Instance Line ------------------------------------
11300 -----------------------------------------------------------------------------------------------
11301   PROCEDURE Update_instance_line(
11302             p_api_version    IN  NUMBER,
11303             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
11304             x_return_status  OUT NOCOPY VARCHAR2,
11305             x_msg_count      OUT NOCOPY NUMBER,
11306             x_msg_data       OUT NOCOPY VARCHAR2,
11307             p_clev_rec       IN  clev_rec_type,
11308             p_klev_rec       IN  klev_rec_type,
11309             p_itiv_rec       IN  itiv_rec_type,
11310             x_clev_rec       OUT NOCOPY clev_rec_type,
11311             x_klev_rec       OUT NOCOPY klev_rec_type,
11312             x_itiv_rec       OUT NOCOPY itiv_rec_type) IS
11313 
11314     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_INSTANCE_LINES';
11315     l_clev_rec               clev_rec_type;
11316     -- Variables for validation of line style
11317     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
11318     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
11319   BEGIN
11320     x_return_status := OKL_API.G_RET_STS_SUCCESS;
11321     -- Call start_activity to create savepoint, check compatibility
11322     -- and initialize message list
11323     x_return_status := OKL_API.START_ACTIVITY (
11324                                l_api_name
11325                                ,p_init_msg_list
11326                                ,'_PVT'
11327                                ,x_return_status);
11328     -- Check if activity started successfully
11329     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11330        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11331     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11332        RAISE OKL_API.G_EXCEPTION_ERROR;
11333     END IF;
11334     validate_sts_code(p_clev_rec       => p_clev_rec,
11335                       x_return_status  => x_return_status);
11336     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11337        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11338     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11339        RAISE OKL_API.G_EXCEPTION_ERROR;
11340     END IF;
11341     -- Validate Line Style id and get the line type code
11342     -- and line style type for further processing
11343     validate_lse_id(p_clev_rec      => p_clev_rec,
11344                     x_return_status => x_return_status,
11345                     x_lty_code      => l_lty_code,
11346                     x_lse_type      => l_lse_type);
11347     -- Check if activity started successfully
11348     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11349        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11350     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11351        RAISE OKL_API.G_EXCEPTION_ERROR;
11352     END IF;
11353     -- Validate the Dnz_Chr_id
11354     validate_dnz_chr_id(p_clev_rec      => p_clev_rec,
11355                         x_return_status => x_return_status);
11356     -- Check if activity started successfully
11357     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11358       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11359     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11360       RAISE OKL_API.G_EXCEPTION_ERROR;
11361     END IF;
11362     -- Now we are going to create the instance Line
11363     -- Here we have have Dnz_Chr_id ,lse_id and cle_id
11364     -- The Record Should have the cle_id
11365     -- if the given line style is instance Line
11366     l_clev_rec := p_clev_rec;
11367     IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
11368        l_clev_rec.chr_id IS NULL) AND
11369        (l_clev_rec.dnz_chr_id IS NOT NULL OR
11370        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
11371        (l_clev_rec.cle_id IS NOT NULL OR
11372        l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
11373        l_lty_code = G_INST_LINE_LTY_CODE AND
11374        l_lse_type = G_SLS_TYPE THEN
11375        IF (p_itiv_rec.instance_number_ib IS NOT NULL OR
11376           p_itiv_rec.instance_number_ib <> OKL_API.G_MISS_CHAR) THEN
11377           update_inst_line(p_api_version   => p_api_version,
11378                            p_init_msg_list => p_init_msg_list,
11379                            x_return_status => x_return_status,
11380                            x_msg_count     => x_msg_count,
11381                            x_msg_data      => x_msg_data,
11382                            p_lty_code      => l_lty_code,
11383                            p_clev_rec      => p_clev_rec,
11384                            p_klev_rec      => p_klev_rec,
11385                            x_clev_rec      => x_clev_rec,
11386                            x_klev_rec      => x_klev_rec);
11387           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11388              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11389           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11390              RAISE OKL_API.G_EXCEPTION_ERROR;
11391           END IF;
11392        ELSE
11393          OKL_API.set_message(p_app_name     => G_APP_NAME,
11394                              p_msg_name     => G_INVALID_CRITERIA,
11395                              p_token1       => G_COL_NAME_TOKEN,
11396                              p_token1_value => 'Instance Asset line');
11397          x_return_status := OKL_API.G_RET_STS_ERROR;
11398          RAISE OKL_API.G_EXCEPTION_ERROR;
11399        END IF;
11400     ELSE
11401          OKL_API.set_message(p_app_name     => G_APP_NAME,
11402                              p_msg_name     => G_INVALID_CRITERIA,
11403                              p_token1       => G_COL_NAME_TOKEN,
11404                              p_token1_value => 'Instance Asset line');
11405        x_return_status := OKL_API.G_RET_STS_ERROR;
11406        RAISE OKL_API.G_EXCEPTION_ERROR;
11407     END IF;
11408     OKL_API.END_ACTIVITY (x_msg_count,
11409                           x_msg_data );
11410   EXCEPTION
11411     WHEN OKL_API.G_EXCEPTION_ERROR THEN
11412     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11413                                l_api_name,
11414                                G_PKG_NAME,
11415                                'OKL_API.G_RET_STS_ERROR',
11416                                x_msg_count,
11417                                x_msg_data,
11418                                '_PVT');
11419     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11420     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11421                               l_api_name,
11422                               G_PKG_NAME,
11423                               'OKL_API.G_RET_STS_UNEXP_ERROR',
11424                               x_msg_count,
11425                               x_msg_data,
11426                               '_PVT');
11427     WHEN OTHERS THEN
11428     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11429                               l_api_name,
11430                               G_PKG_NAME,
11431                               'OTHERS',
11432                               x_msg_count,
11433                               x_msg_data,
11434                               '_PVT');
11435   END Update_instance_line;
11436 -----------------------------------------------------------------------------------------------
11437 ------------------ Main Process for Install Base Line Creation---------------------------------
11438 -----------------------------------------------------------------------------------------------
11439   PROCEDURE Create_instance_ib_line(
11440             p_api_version    IN  NUMBER,
11441             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
11442             x_return_status  OUT NOCOPY VARCHAR2,
11443             x_msg_count      OUT NOCOPY NUMBER,
11444             x_msg_data       OUT NOCOPY VARCHAR2,
11445             p_clev_rec       IN  clev_rec_type,
11446             p_klev_rec       IN  klev_rec_type,
11447             p_cimv_rec       IN  cimv_rec_type,
11448             p_itiv_rec       IN  itiv_rec_type,
11449             x_clev_rec       OUT NOCOPY clev_rec_type,
11450             x_klev_rec       OUT NOCOPY klev_rec_type,
11451             x_cimv_rec       OUT NOCOPY cimv_rec_type,
11452             x_trxv_rec       OUT NOCOPY trxv_rec_type,
11453             x_itiv_rec       OUT NOCOPY itiv_rec_type) IS
11454 
11455     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_INSTANCE_IB_LINES';
11456     l_clev_rec               clev_rec_type;
11457     l_cimv_rec               cimv_rec_type;
11458     ln_lse_id                OKC_LINE_STYLES_V.ID%TYPE := OKL_API.G_MISS_NUM;
11459     -- Variables for validation of line style
11460     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
11461     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
11462   BEGIN
11463     x_return_status := OKL_API.G_RET_STS_SUCCESS;
11464     -- Call start_activity to create savepoint, check compatibility
11465     -- and initialize message list
11466     x_return_status := OKL_API.START_ACTIVITY (
11467                                l_api_name
11468                                ,p_init_msg_list
11469                                ,'_PVT'
11470                                ,x_return_status);
11471     -- Check if activity started successfully
11472     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11473        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11474     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11475        RAISE OKL_API.G_EXCEPTION_ERROR;
11476     END IF;
11477 --  4414408 The validations in Validate_lse_id and Validate_dnz_chr_id are redundant
11478 /*
11479     -- Validate Line Style id and get the line type code
11480     -- and line style type for further processing
11481     validate_lse_id(p_clev_rec      => p_clev_rec,
11482                     x_return_status => x_return_status,
11483                     x_lty_code      => l_lty_code,
11484                     x_lse_type      => l_lse_type);
11485     -- Check if activity started successfully
11486     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11487        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11488     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11489        RAISE OKL_API.G_EXCEPTION_ERROR;
11490     END IF;
11491     -- Validate the Dnz_Chr_id
11492     validate_dnz_chr_id(p_clev_rec      => p_clev_rec,
11493                         x_return_status => x_return_status);
11494     -- Check if activity started successfully
11495     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11496       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11497     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11498       RAISE OKL_API.G_EXCEPTION_ERROR;
11499     END IF;
11500 */
11501     -- Now we are going to create the instance Line
11502     -- Here we have have Dnz_Chr_id ,lse_id and cle_id
11503     -- The Record Should have the cle_id
11504     -- if the given line style is instance Line
11505     l_clev_rec := p_clev_rec;
11506     IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
11507        l_clev_rec.chr_id IS NULL) AND
11508        (l_clev_rec.dnz_chr_id IS NOT NULL OR
11509        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
11510        (l_clev_rec.cle_id IS NOT NULL OR
11511        l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
11512 -- 4414408
11513 --       l_lty_code = G_IB_LINE_LTY_CODE AND
11514 --       l_lse_type = G_SLS_TYPE THEN
11515        l_clev_rec.lse_id = G_IB_LINE_LTY_ID THEN
11516        validate_instance_number_ib(x_return_status => x_return_status,
11517                                    p_inst_num_ib   => p_itiv_rec.instance_number_ib);
11518        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11519          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11520        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11521          RAISE OKL_API.G_EXCEPTION_ERROR;
11522        END IF;
11523        Create_installed_base_line(p_api_version   => p_api_version,
11524                                   p_init_msg_list => p_init_msg_list,
11525                                   x_return_status => x_return_status,
11526                                   x_msg_count     => x_msg_count,
11527                                   x_msg_data      => x_msg_data,
11528 -- 4414408                        p_lty_code      => l_lty_code,
11529                                   p_clev_rec      => l_clev_rec,
11530                                   p_klev_rec      => p_klev_rec,
11531                                   p_cimv_rec      => p_cimv_rec,
11532                                   p_itiv_rec      => p_itiv_rec,
11533                                   x_clev_rec      => x_clev_rec,
11534                                   x_klev_rec      => x_klev_rec,
11535                                   x_cimv_rec      => x_cimv_rec,
11536                                   x_trxv_rec      => x_trxv_rec,
11537                                   x_itiv_rec      => x_itiv_rec);
11538        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11539          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11540        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11541          RAISE OKL_API.G_EXCEPTION_ERROR;
11542        END IF;
11543     ELSE
11544       OKL_API.set_message(p_app_name     => G_APP_NAME,
11545                           p_msg_name     => G_INVALID_CRITERIA,
11546                           p_token1       => G_COL_NAME_TOKEN,
11547                           p_token1_value => 'Install Base Asset line');
11548       x_return_status := OKL_API.G_RET_STS_ERROR;
11549       RAISE OKL_API.G_EXCEPTION_ERROR;
11550     END IF;
11551     OKL_API.END_ACTIVITY (x_msg_count,
11552                           x_msg_data );
11553   EXCEPTION
11554     WHEN OKL_API.G_EXCEPTION_ERROR THEN
11555     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11556                                l_api_name,
11557                                G_PKG_NAME,
11558                                'OKL_API.G_RET_STS_ERROR',
11559                                x_msg_count,
11560                                x_msg_data,
11561                                '_PVT');
11562     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11563     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11564                               l_api_name,
11565                               G_PKG_NAME,
11566                               'OKL_API.G_RET_STS_UNEXP_ERROR',
11567                               x_msg_count,
11568                               x_msg_data,
11569                               '_PVT');
11570     WHEN OTHERS THEN
11571     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11572                               l_api_name,
11573                               G_PKG_NAME,
11574                               'OTHERS',
11575                               x_msg_count,
11576                               x_msg_data,
11577                               '_PVT');
11578   END Create_instance_ib_line;
11579 -----------------------------------------------------------------------------------------------
11580 ------------------ Main Process for Updating Instance IB Line ---------------------------------
11581 -----------------------------------------------------------------------------------------------
11582   PROCEDURE Update_instance_ib_line(
11583             p_api_version    IN  NUMBER,
11584             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
11585             x_return_status  OUT NOCOPY VARCHAR2,
11586             x_msg_count      OUT NOCOPY NUMBER,
11587             x_msg_data       OUT NOCOPY VARCHAR2,
11588             p_clev_rec       IN  clev_rec_type,
11589             p_klev_rec       IN  klev_rec_type,
11590             p_cimv_rec       IN  cimv_rec_type,
11591             p_itiv_rec       IN  itiv_rec_type,
11592             x_clev_rec       OUT NOCOPY clev_rec_type,
11593             x_klev_rec       OUT NOCOPY klev_rec_type,
11594             x_cimv_rec       OUT NOCOPY cimv_rec_type,
11595             x_itiv_rec       OUT NOCOPY itiv_rec_type) IS
11596 
11597     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_INSTANCE_IB_LINES';
11598     l_clev_rec               clev_rec_type;
11599     l_cimv_rec               cimv_rec_type;
11600     lv_dummy                 VARCHAR2(3);
11601     lv_ib_id1                OKX_INSTALL_ITEMS_V.ID1%TYPE;
11602     lv_ib_id2                OKX_INSTALL_ITEMS_V.ID2%TYPE;
11603     -- Variables for validation of line style
11604     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
11605     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
11606     l_talv_rec               talv_rec_type;
11607     l_trxv_rec               trxv_rec_type;
11608     l_itiv_rec               itiv_rec_type;
11609     ln_tas_id                OKL_TRX_ASSETS.ID%TYPE;
11610     ln_line_number           OKL_TXL_ASSETS_V.LINE_NUMBER%TYPE;
11611   BEGIN
11612     x_return_status := OKL_API.G_RET_STS_SUCCESS;
11613     -- Call start_activity to create savepoint, check compatibility
11614     -- and initialize message list
11615     x_return_status := OKL_API.START_ACTIVITY (
11616                                l_api_name
11617                                ,p_init_msg_list
11618                                ,'_PVT'
11619                                ,x_return_status);
11620     -- Check if activity started successfully
11621     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11622        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11623     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11624        RAISE OKL_API.G_EXCEPTION_ERROR;
11625     END IF;
11626     validate_sts_code(p_clev_rec       => p_clev_rec,
11627                       x_return_status  => x_return_status);
11628     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11629        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11630     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11631        RAISE OKL_API.G_EXCEPTION_ERROR;
11632     END IF;
11633     -- Validate Line Style id and get the line type code
11634     -- and line style type for further processing
11635     validate_lse_id(p_clev_rec      => p_clev_rec,
11636                     x_return_status => x_return_status,
11637                     x_lty_code      => l_lty_code,
11638                     x_lse_type      => l_lse_type);
11639     -- Check if activity started successfully
11640     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11641        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11642     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11643        RAISE OKL_API.G_EXCEPTION_ERROR;
11644     END IF;
11645     -- Validate the Dnz_Chr_id
11646     validate_dnz_chr_id(p_clev_rec      => p_clev_rec,
11647                         x_return_status => x_return_status);
11648     -- Check if activity started successfully
11649     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11650       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11651     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11652       RAISE OKL_API.G_EXCEPTION_ERROR;
11653     END IF;
11654     -- Now we are going to create the installed_base_Line
11655     -- Here we have have Dnz_Chr_id ,lse_id and cle_id
11656     -- The Record Should have the cle_id
11657     -- if the given line style is instance base Line
11658     l_clev_rec := p_clev_rec;
11659     IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
11660        l_clev_rec.chr_id IS NULL) AND
11661        (l_clev_rec.dnz_chr_id IS NOT NULL OR
11662        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
11663        (l_clev_rec.cle_id IS NOT NULL OR
11664        l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
11665        l_lty_code = G_IB_LINE_LTY_CODE AND
11666        l_lse_type = G_SLS_TYPE THEN
11667        IF (p_itiv_rec.instance_number_ib IS NOT NULL OR
11668           p_itiv_rec.instance_number_ib <> OKL_API.G_MISS_CHAR) THEN
11669           l_cimv_rec      := p_cimv_rec;
11670           update_installed_base_line(p_api_version   => p_api_version,
11671                                      p_init_msg_list => p_init_msg_list,
11672                                      x_return_status => x_return_status,
11673                                      x_msg_count     => x_msg_count,
11674                                      x_msg_data      => x_msg_data,
11675                                      p_lty_code      => l_lty_code,
11676                                      p_clev_rec      => p_clev_rec,
11677                                      p_klev_rec      => p_klev_rec,
11678                                      p_cimv_rec      => p_cimv_rec,
11679                                      p_itiv_rec      => p_itiv_rec,
11680                                      x_clev_rec      => x_clev_rec,
11681                                      x_klev_rec      => x_klev_rec,
11682                                      x_cimv_rec      => x_cimv_rec,
11683                                      x_itiv_rec      => x_itiv_rec);
11684           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11685              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11686           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11687              RAISE OKL_API.G_EXCEPTION_ERROR;
11688          END IF;
11689        ELSE
11690          OKL_API.set_message(p_app_name     => G_APP_NAME,
11691                              p_msg_name     => G_INVALID_CRITERIA,
11692                              p_token1       => G_COL_NAME_TOKEN,
11693                              p_token1_value => 'Install Base Asset line');
11694          x_return_status := OKL_API.G_RET_STS_ERROR;
11695          RAISE OKL_API.G_EXCEPTION_ERROR;
11696        END IF;
11697     ELSE
11698          OKL_API.set_message(p_app_name     => G_APP_NAME,
11699                              p_msg_name     => G_INVALID_CRITERIA,
11700                              p_token1       => G_COL_NAME_TOKEN,
11701                              p_token1_value => 'Instance Asset line');
11702        x_return_status := OKL_API.G_RET_STS_ERROR;
11703        RAISE OKL_API.G_EXCEPTION_ERROR;
11704     END IF;
11705     OKL_API.END_ACTIVITY (x_msg_count,
11706                           x_msg_data );
11707   EXCEPTION
11708     WHEN OKL_API.G_EXCEPTION_ERROR THEN
11709     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11710                                l_api_name,
11711                                G_PKG_NAME,
11712                                'OKL_API.G_RET_STS_ERROR',
11713                                x_msg_count,
11714                                x_msg_data,
11715                                '_PVT');
11716     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11717     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11718                               l_api_name,
11719                               G_PKG_NAME,
11720                               'OKL_API.G_RET_STS_UNEXP_ERROR',
11721                               x_msg_count,
11722                               x_msg_data,
11723                               '_PVT');
11724     WHEN OTHERS THEN
11725     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11726                               l_api_name,
11727                               G_PKG_NAME,
11728                               'OTHERS',
11729                               x_msg_count,
11730                               x_msg_data,
11731                               '_PVT');
11732   END Update_instance_ib_line;
11733 -----------------------------------------------------------------------------------------------
11734 ------------------------ Main Process for Create Party Roles-----------------------------------
11735 -----------------------------------------------------------------------------------------------
11736   PROCEDURE Create_party_roles_rec(
11737             p_api_version    IN  NUMBER,
11738             p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
11739             x_return_status  OUT NOCOPY VARCHAR2,
11740             x_msg_count      OUT NOCOPY NUMBER,
11741             x_msg_data       OUT NOCOPY VARCHAR2,
11742             p_cplv_rec       IN  cplv_rec_type,
11743             x_cplv_rec       OUT NOCOPY cplv_rec_type) IS
11744 
11745     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_PTY_RLE_LINES';
11746     l_clev_rec               clev_rec_type;
11747     l_cplv_rec               cplv_rec_type;
11748     l_klev_rec               klev_rec_type;
11749     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
11750     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
11751 
11752     --Bug# 4558486
11753     l_kplv_rec               OKL_K_PARTY_ROLES_PVT.kplv_rec_type;
11754     x_kplv_rec               OKL_K_PARTY_ROLES_PVT.kplv_rec_type;
11755   BEGIN
11756     x_return_status := OKL_API.G_RET_STS_SUCCESS;
11757     -- Call start_activity to create savepoint, check compatibility
11758     -- and initialize message list
11759     x_return_status := OKL_API.START_ACTIVITY (
11760                                l_api_name
11761                                ,p_init_msg_list
11762                                ,'_PVT'
11763                                ,x_return_status);
11764     -- Check if activity started successfully
11765     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11766        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11767     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11768        RAISE OKL_API.G_EXCEPTION_ERROR;
11769     END IF;
11770     x_return_status := get_rec_clev(p_id       => p_cplv_rec.cle_id,
11771                                     x_clev_rec => l_clev_rec);
11772     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11773        OKL_API.set_message(p_app_name     => G_APP_NAME,
11774                            p_msg_name     => G_FETCHING_INFO,
11775                            p_token1       => G_REC_NAME_TOKEN,
11776                            p_token1_value => 'OKC_K_LINES_V Record');
11777        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11778     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11779        OKL_API.set_message(p_app_name     => G_APP_NAME,
11780                            p_msg_name     => G_FETCHING_INFO,
11781                            p_token1       => G_REC_NAME_TOKEN,
11782                            p_token1_value => 'OKC_K_LINES_V Record');
11783        RAISE OKL_API.G_EXCEPTION_ERROR;
11784     END IF;
11785     x_return_status := get_rec_klev(p_id       => p_cplv_rec.cle_id,
11786                                     x_klev_rec => l_klev_rec);
11787     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11788        OKL_API.set_message(p_app_name     => G_APP_NAME,
11789                            p_msg_name     => G_FETCHING_INFO,
11790                            p_token1       => G_REC_NAME_TOKEN,
11791                            p_token1_value => 'OKL_K_LINES_V Record');
11792        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11793     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11794        OKL_API.set_message(p_app_name     => G_APP_NAME,
11795                            p_msg_name     => G_FETCHING_INFO,
11796                            p_token1       => G_REC_NAME_TOKEN,
11797                            p_token1_value => 'OKL_K_LINES_V Record');
11798        RAISE OKL_API.G_EXCEPTION_ERROR;
11799     END IF;
11800     IF l_clev_rec.id <> l_klev_rec.id THEN
11801        OKL_API.set_message(p_app_name     => G_APP_NAME,
11802                            p_msg_name     => G_LINE_RECORD);
11803        x_return_status := OKL_API.G_RET_STS_ERROR;
11804        RAISE OKL_API.G_EXCEPTION_ERROR;
11805     END IF;
11806     -- Validate Line Style id and get the line type code
11807     -- and line style type for further processing
11808     validate_lse_id(p_clev_rec      => l_clev_rec,
11809                     x_return_status => x_return_status,
11810                     x_lty_code      => l_lty_code,
11811                     x_lse_type      => l_lse_type);
11812     -- Check if activity started successfully
11813     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11814        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11815     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11816        RAISE OKL_API.G_EXCEPTION_ERROR;
11817     END IF;
11818     -- Validate the Dnz_Chr_id
11819     validate_dnz_chr_id(p_clev_rec      => l_clev_rec,
11820                         x_return_status => x_return_status);
11821     -- Check if activity started successfully
11822     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11823       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11824     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11825       RAISE OKL_API.G_EXCEPTION_ERROR;
11826     END IF;
11827     -- We can create a party item info only if the line is Model Line
11828     IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
11829        l_clev_rec.chr_id IS NULL) AND
11830        (l_clev_rec.dnz_chr_id IS NOT NULL OR
11831        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
11832        (l_clev_rec.cle_id IS NOT NULL OR
11833        l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
11834        (l_lty_code = G_MODEL_LINE_LTY_CODE OR
11835         l_lty_code = G_ADDON_LINE_LTY_CODE) AND
11836        l_lse_type = G_SLS_TYPE THEN
11837        x_return_status := get_rec_cplv(p_cplv_id  => p_cplv_rec.id,
11838                                        x_cplv_rec => l_cplv_rec);
11839        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11840          OKL_API.set_message(p_app_name     => G_APP_NAME,
11841                              p_msg_name     => G_FETCHING_INFO,
11842                              p_token1       => G_REC_NAME_TOKEN,
11843                              p_token1_value => 'OKC_K_PARTY_ROLES_V Record');
11844           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11845        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11846          OKL_API.set_message(p_app_name     => G_APP_NAME,
11847                              p_msg_name     => G_FETCHING_INFO,
11848                              p_token1       => G_REC_NAME_TOKEN,
11849                              p_token1_value => 'OKC_K_PARTY_ROLES_V Record');
11850           RAISE OKL_API.G_EXCEPTION_ERROR;
11851        END IF;
11852 
11853        IF (p_cplv_rec.cle_id IS NOT NULL OR
11854           p_cplv_rec.cle_id <> OKL_API.G_MISS_NUM) THEN
11855           l_cplv_rec.cle_id := p_cplv_rec.cle_id;
11856        ELSE
11857           OKL_API.set_message(p_app_name     => G_APP_NAME,
11858                               p_msg_name     => G_REQUIRED_VALUE,
11859                               p_token1       => G_COL_NAME_TOKEN,
11860                               p_token1_value => 'cle_id in creation party roles');
11861           RAISE OKL_API.G_EXCEPTION_ERROR;
11862        END IF;
11863        l_cplv_rec.chr_id := null;
11864        -- Creation of Party Item Record for the above record information
11865        --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
11866        --              to create records in tables
11867        --              okc_k_party_roles_b and okl_k_party_roles
11868        /*
11869        OKL_OKC_MIGRATION_PVT.create_k_party_role(p_api_version   => p_api_version,
11870                                                   p_init_msg_list => p_init_msg_list,
11871                                                   x_return_status => x_return_status,
11872                                                   x_msg_count     => x_msg_count,
11873                                                   x_msg_data      => x_msg_data,
11874                                                   p_cplv_rec      => l_cplv_rec,
11875                                                   x_cplv_rec      => x_cplv_rec);
11876        */
11877 
11878        OKL_K_PARTY_ROLES_PVT.create_k_party_role
11879          (p_api_version   => p_api_version,
11880           p_init_msg_list => p_init_msg_list,
11881           x_return_status => x_return_status,
11882           x_msg_count     => x_msg_count,
11883           x_msg_data      => x_msg_data,
11884           p_cplv_rec      => l_cplv_rec,
11885           x_cplv_rec      => x_cplv_rec,
11886           p_kplv_rec      => l_kplv_rec,
11887           x_kplv_rec      => x_kplv_rec);
11888 
11889        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11890           OKL_API.set_message(p_app_name     => G_APP_NAME,
11891                               p_msg_name     => G_CREATION_PARTY_ROLE);
11892           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11893        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11894           OKL_API.set_message(p_app_name     => G_APP_NAME,
11895                               p_msg_name     => G_CREATION_PARTY_ROLE);
11896          RAISE OKL_API.G_EXCEPTION_ERROR;
11897        END IF;
11898     ELSE
11899       OKL_API.set_message(p_app_name     => G_APP_NAME,
11900                           p_msg_name     => G_INVALID_CRITERIA,
11901                           p_token1       => 'LINE_STYLE',
11902                           p_token1_value => 'Model/Addon Line for Party Roles');
11903        x_return_status := OKL_API.G_RET_STS_ERROR;
11904        RAISE OKL_API.G_EXCEPTION_ERROR;
11905     END IF;
11906     OKL_API.END_ACTIVITY (x_msg_count,
11907                           x_msg_data );
11908   EXCEPTION
11909     WHEN OKL_API.G_EXCEPTION_ERROR THEN
11910     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11911                                l_api_name,
11912                                G_PKG_NAME,
11913                                'OKL_API.G_RET_STS_ERROR',
11914                                x_msg_count,
11915                                x_msg_data,
11916                                '_PVT');
11917     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11918     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11919                               l_api_name,
11920                               G_PKG_NAME,
11921                               'OKL_API.G_RET_STS_UNEXP_ERROR',
11922                               x_msg_count,
11923                               x_msg_data,
11924                               '_PVT');
11925     WHEN OTHERS THEN
11926     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11927                               l_api_name,
11928                               G_PKG_NAME,
11929                               'OTHERS',
11930                               x_msg_count,
11931                               x_msg_data,
11932                               '_PVT');
11933   END Create_party_roles_rec;
11934 -----------------------------------------------------------------------------------------------
11935 ------------------------ Main Process for Update Party Roles-----------------------------------
11936 -----------------------------------------------------------------------------------------------
11937   PROCEDURE Update_party_roles_rec(
11938             p_api_version    IN  NUMBER,
11939             p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
11940             x_return_status  OUT NOCOPY VARCHAR2,
11941             x_msg_count      OUT NOCOPY NUMBER,
11942             x_msg_data       OUT NOCOPY VARCHAR2,
11943             p_cplv_rec       IN  cplv_rec_type,
11944             x_cplv_rec       OUT NOCOPY cplv_rec_type) IS
11945 
11946     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_PTY_RLE_LINES';
11947     l_clev_rec               clev_rec_type;
11948     l_cplv_rec               cplv_rec_type;
11949     l_klev_rec               klev_rec_type;
11950     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
11951     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
11952 
11953     --Bug# 4558486
11954     l_kplv_rec               OKL_K_PARTY_ROLES_PVT.kplv_rec_type;
11955     x_kplv_rec               OKL_K_PARTY_ROLES_PVT.kplv_rec_type;
11956   BEGIN
11957     x_return_status := OKL_API.G_RET_STS_SUCCESS;
11958     -- Call start_activity to create savepoint, check compatibility
11959     -- and initialize message list
11960     x_return_status := OKL_API.START_ACTIVITY (
11961                                l_api_name
11962                                ,p_init_msg_list
11963                                ,'_PVT'
11964                                ,x_return_status);
11965     -- Check if activity started successfully
11966     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11967        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11968     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11969        RAISE OKL_API.G_EXCEPTION_ERROR;
11970     END IF;
11971     x_return_status := get_rec_cplv(p_cplv_id  => p_cplv_rec.id,
11972                                     x_cplv_rec => l_cplv_rec);
11973     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11974        OKL_API.set_message(p_app_name     => G_APP_NAME,
11975                            p_msg_name     => G_FETCHING_INFO,
11976                            p_token1       => G_REC_NAME_TOKEN,
11977                            p_token1_value => 'OKC_K_PARTY_ROLES_V Record');
11978        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11979     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11980        OKL_API.set_message(p_app_name     => G_APP_NAME,
11981                            p_msg_name     => G_FETCHING_INFO,
11982                            p_token1       => G_REC_NAME_TOKEN,
11983                            p_token1_value => 'OKC_K_PARTY_ROLES_V Record');
11984        RAISE OKL_API.G_EXCEPTION_ERROR;
11985     END IF;
11986     x_return_status := get_rec_clev(p_id       => l_cplv_rec.cle_id,
11987                                     x_clev_rec => l_clev_rec);
11988     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11989        OKL_API.set_message(p_app_name     => G_APP_NAME,
11990                            p_msg_name     => G_FETCHING_INFO,
11991                            p_token1       => G_REC_NAME_TOKEN,
11992                            p_token1_value => 'OKC_K_ITEMS_V Record');
11993        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11994     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11995        OKL_API.set_message(p_app_name     => G_APP_NAME,
11996                            p_msg_name     => G_FETCHING_INFO,
11997                            p_token1       => G_REC_NAME_TOKEN,
11998                            p_token1_value => 'OKC_K_ITEMS_V Record');
11999        RAISE OKL_API.G_EXCEPTION_ERROR;
12000     END IF;
12001     x_return_status := get_rec_klev(p_id       => l_cplv_rec.cle_id,
12002                                     x_klev_rec => l_klev_rec);
12003     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12004        OKL_API.set_message(p_app_name     => G_APP_NAME,
12005                            p_msg_name     => G_FETCHING_INFO,
12006                            p_token1       => G_REC_NAME_TOKEN,
12007                            p_token1_value => 'OKL_K_ITEMS_V Record');
12008        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12009     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12010        OKL_API.set_message(p_app_name     => G_APP_NAME,
12011                            p_msg_name     => G_FETCHING_INFO,
12012                            p_token1       => G_REC_NAME_TOKEN,
12013                            p_token1_value => 'OKL_K_ITEMS_V Record');
12014        RAISE OKL_API.G_EXCEPTION_ERROR;
12015     END IF;
12016     IF l_clev_rec.id <> l_klev_rec.id THEN
12017        OKL_API.set_message(p_app_name     => G_APP_NAME,
12018                            p_msg_name     => G_LINE_RECORD);
12019        x_return_status := OKL_API.G_RET_STS_ERROR;
12020        RAISE OKL_API.G_EXCEPTION_ERROR;
12021     END IF;
12022     -- Validate Line Style id and get the line type code
12023     -- and line style type for further processing
12024     validate_lse_id(p_clev_rec      => l_clev_rec,
12025                     x_return_status => x_return_status,
12026                     x_lty_code      => l_lty_code,
12027                     x_lse_type      => l_lse_type);
12028     -- Check if activity started successfully
12029     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12030        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12031     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12032        RAISE OKL_API.G_EXCEPTION_ERROR;
12033     END IF;
12034     -- Validate the Dnz_Chr_id
12035     validate_dnz_chr_id(p_clev_rec      => l_clev_rec,
12036                         x_return_status => x_return_status);
12037     -- Check if activity started successfully
12038     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12039       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12040     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12041       RAISE OKL_API.G_EXCEPTION_ERROR;
12042     END IF;
12043     -- We can create a party item info only if the line is Model Line
12044     IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
12045        l_clev_rec.chr_id IS NULL) AND
12046        (l_clev_rec.dnz_chr_id IS NOT NULL OR
12047        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
12048        (l_clev_rec.cle_id IS NOT NULL OR
12049        l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
12050        (l_lty_code = G_MODEL_LINE_LTY_CODE OR
12051         l_lty_code = G_ADDON_LINE_LTY_CODE) AND
12052        l_lse_type = G_SLS_TYPE THEN
12053        l_cplv_rec.object1_id1 := p_cplv_rec.object1_id1;
12054        l_cplv_rec.object1_id2 := p_cplv_rec.object1_id2;
12055        -- Creation of Party Item Record for the above record information
12056        --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
12057        --              to update records in tables
12058        --              okc_k_party_roles_b and okl_k_party_roles
12059        /*
12060        OKL_OKC_MIGRATION_PVT.update_k_party_role(p_api_version   => p_api_version,
12061                                                   p_init_msg_list => p_init_msg_list,
12062                                                   x_return_status => x_return_status,
12063                                                   x_msg_count     => x_msg_count,
12064                                                   x_msg_data      => x_msg_data,
12065                                                   p_cplv_rec      => l_cplv_rec,
12066                                                   x_cplv_rec      => x_cplv_rec);
12067        */
12068        l_kplv_rec.id := l_cplv_rec.id;
12069        OKL_K_PARTY_ROLES_PVT.update_k_party_role
12070          (p_api_version   => p_api_version,
12071           p_init_msg_list => p_init_msg_list,
12072           x_return_status => x_return_status,
12073           x_msg_count     => x_msg_count,
12074           x_msg_data      => x_msg_data,
12075           p_cplv_rec      => l_cplv_rec,
12076           x_cplv_rec      => x_cplv_rec,
12077           p_kplv_rec      => l_kplv_rec,
12078           x_kplv_rec      => x_kplv_rec);
12079 
12080        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12081           OKL_API.set_message(p_app_name     => G_APP_NAME,
12082                               p_msg_name     => G_UPDATING_PARTY_ROLE);
12083           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12084        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12085           OKL_API.set_message(p_app_name     => G_APP_NAME,
12086                               p_msg_name     => G_UPDATING_PARTY_ROLE);
12087          RAISE OKL_API.G_EXCEPTION_ERROR;
12088        END IF;
12089     ELSE
12090       OKL_API.set_message(p_app_name     => G_APP_NAME,
12091                           p_msg_name     => G_INVALID_CRITERIA,
12092                           p_token1       => G_COL_NAME_TOKEN,
12093                           p_token1_value => 'Model/Addon Line for Party Roles');
12094        x_return_status := OKL_API.G_RET_STS_ERROR;
12095        RAISE OKL_API.G_EXCEPTION_ERROR;
12096     END IF;
12097     -- We need to change the status of the header whenever there is updating happening
12098     -- after the contract status is approved
12099     IF (x_cplv_rec.dnz_chr_id is NOT NULL) AND
12100        (x_cplv_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
12101       --cascade edit status on to lines
12102       okl_contract_status_pub.cascade_lease_status_edit
12103                (p_api_version     => p_api_version,
12104                 p_init_msg_list   => p_init_msg_list,
12105                 x_return_status   => x_return_status,
12106                 x_msg_count       => x_msg_count,
12107                 x_msg_data        => x_msg_data,
12108                 p_chr_id          => x_cplv_rec.dnz_chr_id);
12109       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12110         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12111       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12112         RAISE OKL_API.G_EXCEPTION_ERROR;
12113       END IF;
12114     END IF;
12115     OKL_API.END_ACTIVITY (x_msg_count,
12116                           x_msg_data );
12117   EXCEPTION
12118     WHEN OKL_API.G_EXCEPTION_ERROR THEN
12119     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
12120                                l_api_name,
12121                                G_PKG_NAME,
12122                                'OKL_API.G_RET_STS_ERROR',
12123                                x_msg_count,
12124                                x_msg_data,
12125                                '_PVT');
12126     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
12127     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
12128                               l_api_name,
12129                               G_PKG_NAME,
12130                               'OKL_API.G_RET_STS_UNEXP_ERROR',
12131                               x_msg_count,
12132                               x_msg_data,
12133                               '_PVT');
12134     WHEN OTHERS THEN
12135     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
12136                               l_api_name,
12137                               G_PKG_NAME,
12138                               'OTHERS',
12139                               x_msg_count,
12140                               x_msg_data,
12141                               '_PVT');
12142   END update_party_roles_rec;
12143 
12144 --Bug# 3631094
12145 --------------------------------------------------------------------------------
12146 --Start of comments
12147 --Procedure Name : check_off_lease_trx (local)
12148 --Description    : procedure checks if off lease transaction
12149 --                 is under-way for this asset
12150 --History        : 21-May-2004  avsingh Created
12151 --Notes          : local procedure (this could change and get more complex
12152 --                 in future that is why a separate local proc)
12153 --                 IN Parameters-
12154 --                               p_asset_id - asset id
12155 --                 OUT Parameters -
12156 --                               x_pending_trx_yn  - 'Y' - pending off_lease trx
12157 --                                                   'N' - no pending off_lease trx
12158 --End of comments
12159 --------------------------------------------------------------------------------
12160 
12161   Procedure check_off_lease_trx
12162                             (p_api_version   IN  NUMBER,
12163                              p_init_msg_list IN  VARCHAR2,
12164                              x_return_status OUT NOCOPY VARCHAR2,
12165                              x_msg_count     OUT NOCOPY NUMBER,
12166                              x_msg_data      OUT NOCOPY VARCHAR2,
12167                              p_asset_id      IN  NUMBER,
12168                              x_pending_trx_yn OUT NOCOPY VARCHAR2) is
12169 
12170   l_return_status        VARCHAR2(1)  DEFAULT Okl_Api.G_RET_STS_SUCCESS;
12171   l_api_name             CONSTANT VARCHAR2(30) := 'CREATE_OFF_LEASE_TRX';
12172   l_api_version          CONSTANT NUMBER := 1.0;
12173 
12174   --cursor to find whether unprocessed off lease transaction exists
12175   cursor  l_off_lease_csr (p_asset_id in number) is
12176   select  'Y'
12177   from    fa_additions fa
12178   where   fa.asset_id   = p_asset_id
12179   and     exists
12180           (select '1'
12181            from    okl_trx_assets   h,
12182                    okl_txl_assets_b l
12183            where   h.id = l.tas_id
12184            and     h.TAS_TYPE in ('AMT','AUD','AUS')
12185            and     l.asset_number = fa.asset_number
12186            and     h.tsu_code     = 'ENTERED');
12187 
12188 
12189   l_off_lease_trx_exists   varchar2(1);
12190 
12191   Begin
12192       x_return_status := OKL_API.G_RET_STS_SUCCESS;
12193       -- Call start_activity to create savepoint, check compatibility
12194       -- and initialize message list
12195       x_return_status := Okl_Api.START_ACTIVITY(
12196                         p_api_name      => l_api_name,
12197                         p_pkg_name      => g_pkg_name,
12198                         p_init_msg_list => p_init_msg_list,
12199                         l_api_version   => l_api_version,
12200                         p_api_version   => p_api_version,
12201                         p_api_type      => '_PVT',
12202                         x_return_status => x_return_status);
12203       -- Check if activity started successfully
12204       IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
12205          RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
12206       ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
12207          RAISE Okc_Api.G_EXCEPTION_ERROR;
12208       END IF;
12209 
12210       --check with cursor
12211       l_off_lease_trx_exists := 'N';
12212       open l_off_lease_csr (p_asset_id => p_asset_id);
12213       fetch l_off_lease_csr into l_off_lease_trx_exists;
12214       if l_off_lease_csr%NOTFOUND then
12215           null;
12216       end if;
12217       close l_off_lease_csr;
12218 
12219       x_pending_trx_yn   := l_off_lease_trx_exists;
12220  EXCEPTION
12221     WHEN OKL_API.G_EXCEPTION_ERROR THEN
12222     if l_off_lease_csr%ISOPEN then
12223         close l_off_lease_csr;
12224     end if;
12225     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
12226                                l_api_name,
12227                                G_PKG_NAME,
12228                                'OKL_API.G_RET_STS_ERROR',
12229                                x_msg_count,
12230                                x_msg_data,
12231                                '_PVT');
12232     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
12233     if l_off_lease_csr%ISOPEN then
12234         close l_off_lease_csr;
12235     end if;
12236     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
12237                               l_api_name,
12238                               G_PKG_NAME,
12239                               'OKL_API.G_RET_STS_UNEXP_ERROR',
12240                               x_msg_count,
12241                               x_msg_data,
12242                               '_PVT');
12243     WHEN OTHERS THEN
12244     if l_off_lease_csr%ISOPEN then
12245         close l_off_lease_csr;
12246     end if;
12247     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
12248                               l_api_name,
12249                               G_PKG_NAME,
12250                               'OTHERS',
12251                               x_msg_count,
12252                               x_msg_data,
12253                               '_PVT');
12254   END check_off_lease_trx;
12255 
12256 --------------------------------------------------------------------------------
12257 --Start of comments
12258 --Procedure Name : Get_Pdt_Params (local)
12259 --Description    : Multi-GAAP - Calls product api to fetch
12260 --                 product specific parameters
12261 --History        : 21-May-2004  ashish.singh Created
12262 --Notes          : local procedure
12263 --                 IN Parameters-
12264 --                               p_chr_id   - contract id
12265 --                 OUT Parameters -
12266 --                               x_rep_pdt_id    - Reporting product id
12267 --                               x_tax_owner     - tax owner
12268 --                               x_deal_type     - local product deal type
12269 --                               x_rep_deal_type - Reporting product deal type
12270 --End of comments
12271 --------------------------------------------------------------------------------
12272   Procedure Get_Pdt_Params (p_api_version   IN  NUMBER,
12273                             p_init_msg_list IN  VARCHAR2,
12274                             x_return_status OUT NOCOPY VARCHAR2,
12275                             x_msg_count     OUT NOCOPY NUMBER,
12276                             x_msg_data      OUT NOCOPY VARCHAR2,
12277                             p_chr_id        IN  NUMBER,
12278                             x_rep_pdt_id    OUT NOCOPY NUMBER,
12279                             x_tax_owner     OUT NOCOPY VARCHAR2,
12280                             x_deal_type     OUT NOCOPY VARCHAR2,
12281                             x_rep_deal_type OUT NOCOPY VARCHAR2) is
12282 
12283   l_pdtv_rec                okl_setupproducts_pub.pdtv_rec_type;
12284   l_pdt_parameter_rec       okl_setupproducts_pub.pdt_parameters_rec_type;
12285   l_rep_pdt_parameter_rec   okl_setupproducts_pub.pdt_parameters_rec_type;
12286   l_pdt_date                DATE;
12287   l_no_data_found           BOOLEAN;
12288   l_error_condition         Exception;
12289   l_return_status           VARCHAR2(1) default OKL_API.G_RET_STS_SUCCESS;
12290 
12291   --cursor to get pdt_id and k_start date
12292   cursor l_chr_csr (p_chr_id in number) is
12293   SELECT chrb.start_date,
12294          khr.pdt_id
12295   FROM   OKC_K_HEADERS_B chrb,
12296          OKL_K_HEADERS   khr
12297   WHERE  khr.id          = chrb.id
12298   AND    chrb.id         = p_chr_id;
12299 
12300   l_chr_rec l_chr_csr%ROWTYPE;
12301 
12302   Begin
12303 
12304      --get pdt id and date from k header
12305      open l_chr_csr(p_chr_id => p_chr_id);
12306      Fetch l_chr_csr into l_chr_rec;
12307      If l_chr_csr%NOTFOUND then
12308          Null;
12309      End If;
12310      close l_chr_csr;
12311 
12312      l_pdtv_rec.id    := l_chr_rec.pdt_id;
12313      l_pdt_date       := l_chr_rec.start_date;
12314      l_no_data_found  := TRUE;
12315      x_return_status  := OKL_API.G_RET_STS_SUCCESS;
12316 
12317      okl_setupproducts_pub.Getpdt_parameters(p_api_version       => p_api_version,
12318                                              p_init_msg_list     => p_init_msg_list,
12319                       	                     x_return_status     => l_return_status,
12320             		                     x_no_data_found     => l_no_data_found,
12321                                              x_msg_count         => x_msg_count,
12322                               		     x_msg_data          => x_msg_data,
12323 					     p_pdtv_rec          => l_pdtv_rec,
12324 					     p_product_date      => l_pdt_date,
12325 					     p_pdt_parameter_rec => l_pdt_parameter_rec);
12326 
12327      IF l_return_status <> OKL_API.G_RET_STS_SUCCESS Then
12328          x_rep_pdt_id    := Null;
12329          x_tax_owner     := Null;
12330      Else
12331          x_rep_pdt_id    := l_pdt_parameter_rec.reporting_pdt_id;
12332          x_tax_owner     := l_pdt_parameter_rec.tax_owner;
12333          x_deal_type     := l_pdt_parameter_rec.deal_type;
12334          --get reporting product param values
12335          l_no_data_found := TRUE;
12336          l_pdtv_rec.id := x_rep_pdt_id;
12337          okl_setupproducts_pub.Getpdt_parameters(p_api_version      => p_api_version,
12338                                                  p_init_msg_list     => p_init_msg_list,
12339                                                  x_return_status     => l_return_status,
12340                                                  x_no_data_found     => l_no_data_found,
12341                               		         x_msg_count         => x_msg_count,
12342                                		         x_msg_data          => x_msg_data,
12343 			                         p_pdtv_rec          => l_pdtv_rec,
12344     			                         p_product_date      => l_pdt_date,
12345     			                         p_pdt_parameter_rec => l_rep_pdt_parameter_rec);
12346 
12347           IF l_return_status <> OKL_API.G_RET_STS_SUCCESS Then
12348              x_rep_deal_type := NULL;
12349           Else
12350              x_rep_deal_type :=  l_rep_pdt_parameter_rec.deal_type;
12351           End If;
12352      End If;
12353 
12354      Exception
12355      When l_error_condition Then
12356          If l_chr_csr%ISOPEN then
12357              close l_chr_csr;
12358          End If;
12359      When Others Then
12360          If l_chr_csr%ISOPEN then
12361              close l_chr_csr;
12362          End If;
12363          x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
12364   End Get_Pdt_Params;
12365 --Bug# 3631094
12366 
12367   --Bug# 3950089: start
12368   ------------------------------------------------------------------------------
12369   --Start of comments
12370   --
12371   --Procedure Name        : get_nbv
12372   --Purpose               : Get Net Book Value- used internally
12373   --Modification History  :
12374   --27-Jan-2005    rpillay   Created
12375   ------------------------------------------------------------------------------
12376   PROCEDURE get_nbv(p_api_version     IN  NUMBER,
12377                     p_init_msg_list   IN  VARCHAR2,
12378                     x_return_status   OUT NOCOPY VARCHAR2,
12379                     x_msg_count       OUT NOCOPY NUMBER,
12380                     x_msg_data        OUT NOCOPY VARCHAR2,
12381                     p_asset_id        IN  NUMBER,
12382                     p_book_type_code  IN  VARCHAR2,
12383                     p_chr_id          IN  NUMBER,
12384                     p_release_date    IN  DATE,
12385                     x_nbv             OUT NOCOPY Number) IS
12386 
12387     l_return_status   VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
12388     l_api_name        CONSTANT VARCHAR2(30) := 'GET_NBV';
12389     l_api_version	    CONSTANT NUMBER	:= 1.0;
12390 
12391     l_asset_hdr_rec            FA_API_TYPES.asset_hdr_rec_type;
12392     l_asset_fin_rec            FA_API_TYPES.asset_fin_rec_type;
12393     l_asset_deprn_rec          FA_API_TYPES.asset_deprn_rec_type;
12394 
12395     l_nbv                      NUMBER;
12396     l_converted_amount         NUMBER;
12397     l_contract_currency        OKL_K_HEADERS_FULL_V.currency_code%TYPE;
12398     l_currency_conversion_type OKL_K_HEADERS_FULL_V.currency_conversion_type%TYPE;
12399     l_currency_conversion_rate OKL_K_HEADERS_FULL_V.currency_conversion_rate%TYPE;
12400     l_currency_conversion_date OKL_K_HEADERS_FULL_V.currency_conversion_date%TYPE;
12401 
12402   BEGIN
12403      --call start activity to set savepoint
12404      l_return_status := OKL_API.START_ACTIVITY( substr(l_api_name,1,26),
12405                                                 p_init_msg_list,
12406                                                 '_PVT',
12407                                                 x_return_status);
12408      IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12409        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12410      ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
12411        RAISE OKL_API.G_EXCEPTION_ERROR;
12412      END IF;
12413 
12414      l_asset_hdr_rec.asset_id          := p_asset_id;
12415      l_asset_hdr_rec.book_type_code    := p_book_type_code;
12416 
12417      if NOT fa_cache_pkg.fazcbc(x_book => l_asset_hdr_rec.book_type_code) then
12418        OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
12419                            p_msg_name     => 'OKL_LLA_FA_CACHE_ERROR'
12420                           );
12421        Raise OKL_API.G_EXCEPTION_ERROR;
12422      end if;
12423 
12424      -- To fetch Asset Current Cost
12425      if not FA_UTIL_PVT.get_asset_fin_rec
12426               (p_asset_hdr_rec         => l_asset_hdr_rec,
12427                px_asset_fin_rec        => l_asset_fin_rec,
12428                p_transaction_header_id => NULL,
12429                p_mrc_sob_type_code     => 'P'
12430               ) then
12431 
12432        OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
12433                            p_msg_name     => 'OKL_LLA_FA_ASSET_FIN_REC_ERROR'
12434                           );
12435        Raise OKL_API.G_EXCEPTION_ERROR;
12436      end if;
12437 
12438      -- To fetch Depreciation Reserve
12439      if not FA_UTIL_PVT.get_asset_deprn_rec
12440                 (p_asset_hdr_rec         => l_asset_hdr_rec ,
12441                  px_asset_deprn_rec      => l_asset_deprn_rec,
12442                  p_period_counter        => NULL,
12443                  p_mrc_sob_type_code     => 'P'
12444                  ) then
12445        OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
12446                            p_msg_name     => 'OKL_LLA_FA_DEPRN_REC_ERROR'
12447                           );
12448        Raise OKL_API.G_EXCEPTION_ERROR;
12449      end if;
12450 
12451      l_nbv := l_asset_fin_rec.cost - l_asset_deprn_rec.deprn_reserve;
12452 
12453      l_converted_amount := 0;
12454      OKL_ACCOUNTING_UTIL.CONVERT_TO_CONTRACT_CURRENCY(
12455         p_khr_id                   => p_chr_id,
12456         p_from_currency            => NULL,
12457         p_transaction_date         => p_release_date,
12458         p_amount                   => l_nbv,
12459         x_return_status            => x_return_status,
12460         x_contract_currency        => l_contract_currency,
12461         x_currency_conversion_type => l_currency_conversion_type,
12462         x_currency_conversion_rate => l_currency_conversion_rate,
12463         x_currency_conversion_date => l_currency_conversion_date,
12464         x_converted_amount         => l_converted_amount);
12465 
12466       IF(x_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
12467         Okl_Api.Set_Message(p_app_name     => Okl_Api.G_APP_NAME,
12468                             p_msg_name     => 'OKL_CONV_TO_FUNC_CURRENCY_FAIL');
12469         RAISE Okl_Api.G_EXCEPTION_ERROR;
12470       END IF;
12471 
12472       x_nbv := l_converted_amount;
12473 
12474      --Call end Activity
12475      OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
12476   EXCEPTION
12477     WHEN OKL_API.G_EXCEPTION_ERROR Then
12478       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
12479       (
12480       l_api_name,
12481       G_PKG_NAME,
12482       'OKL_API.G_RET_STS_ERROR',
12483       x_msg_count,
12484       x_msg_data,
12485       '_PVT'
12486       );
12487     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
12488       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
12489       (
12490       l_api_name,
12491       G_PKG_NAME,
12492       'OKL_API.G_RET_STS_UNEXP_ERROR',
12493       x_msg_count,
12494       x_msg_data,
12495       '_PVT'
12496       );
12497     WHEN OTHERS THEN
12498       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
12499       (
12500       l_api_name,
12501       G_PKG_NAME,
12502       'OTHERS',
12503       x_msg_count,
12504       x_msg_data,
12505       '_PVT'
12506       );
12507   END get_nbv;
12508   --Bug# 3950089: end
12509 
12510   -------------------------------------------
12511   --Bug# 3533936 : Process for release Assets
12512   -------------------------------------------
12513   PROCEDURE Create_release_asset_line
12514             (p_api_version    IN  NUMBER,
12515              p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
12516              x_return_status  OUT NOCOPY VARCHAR2,
12517              x_msg_count      OUT NOCOPY NUMBER,
12518              x_msg_data       OUT NOCOPY VARCHAR2,
12519              p_asset_id       IN  VARCHAR2,
12520              p_chr_id         IN  NUMBER,
12521              x_cle_id         OUT NOCOPY NUMBER) IS
12522 
12523 
12524   l_return_status        VARCHAR2(1)  DEFAULT Okl_Api.G_RET_STS_SUCCESS;
12525   l_api_name             CONSTANT VARCHAR2(30) := 'CREATE_RELEASE_ASSET';
12526   l_api_version          CONSTANT NUMBER := 1.0;
12527 
12528   --cursor to fetch original financial asset line id
12529   CURSOR l_orig_ast_csr(p_asset_id  varchar2) IS
12530   SELECT cle_orig.cle_id   finasst_id,
12531          asr.id            asset_return_id,
12532          cle_orig.dnz_chr_id  dnz_chr_id,
12533          --Bug# 4869443
12534          --trunc(cle_orig.date_terminated) date_terminated
12535          trunc(decode(sign(cle_orig.end_date - cle_orig.date_terminated),-1,cle_orig.end_date,cle_orig.date_terminated)) date_terminated,
12536          --Bug# 6328924
12537          asr.legal_entity_id
12538   FROM   OKL_ASSET_RETURNS_B asr,
12539          OKC_K_LINES_B       cle_orig,
12540          OKC_LINE_STYLES_B   lse_orig,
12541          OKC_K_ITEMS         cim_orig
12542   WHERE  asr.kle_id                 =  cle_orig.cle_id
12543   AND    asr.ars_code               = 'RE_LEASE'
12544   AND    cim_orig.object1_id1       =  p_asset_id
12545   AND    cim_orig.object1_id2       = '#'
12546   AND    cim_orig.jtot_object1_code = 'OKX_ASSET'
12547   AND    cle_orig.id                =  cim_orig.cle_id
12548   AND    cle_orig.dnz_chr_id        =  cim_orig.dnz_chr_id
12549   AND    cle_orig.lse_id            =  lse_orig.id
12550   AND    lse_orig.lty_code          =  'FIXED_ASSET';
12551 
12552   l_orig_ast_rec     l_orig_ast_csr%ROWTYPE;
12553   l_new_finasst_id   NUMBER;
12554 
12555   --cursor to fetch all the lines
12556   CURSOR	l_lines_csr(p_from_cle_id in number) IS
12557     SELECT 	level,
12558 		id,
12559 		chr_id,
12560 		cle_id,
12561 		dnz_chr_id,
12562                 orig_system_id1,
12563                 lse_id -- Bug # 15992711 added the column
12564     FROM 	okc_k_lines_b
12565     CONNECT BY  PRIOR id = cle_id
12566     START WITH  id = p_from_cle_id;
12567 
12568   l_lines_rec l_lines_csr%ROWTYPE;
12569 
12570   --cursor to fetch rules linked to lines
12571   CURSOR l_rgp_csr(p_cle_id in number,
12572                    p_chr_id in number) IS
12573   SELECT rgpb.id
12574   FROM   OKC_RULE_GROUPS_B rgpb
12575   WHERE  rgpb.cle_id       = p_cle_id
12576   AND    rgpb.dnz_chr_id   = p_chr_id;
12577 
12578 
12579   l_rgp_id   OKC_RULE_GROUPS_B.ID%TYPE;
12580   l_rgpv_rec okl_okc_migration_pvt.rgpv_rec_type;
12581 
12582 
12583   --cursor to get cost and salvage value for corporate book
12584   CURSOR l_corpbook_csr (p_cle_id in number,
12585                          p_chr_id in number) IS
12586   select txlb.depreciation_cost,
12587          txlb.current_units,
12588          txlb.salvage_value,
12589          txlb.percent_salvage_value,
12590          --Bug : 3569441
12591          txlb.id,
12592          txlb.corporate_book,
12593          --Bug# 3631094
12594          txlb.in_service_date,
12595          txlb.deprn_method,
12596          txlb.life_in_months,
12597          txlb.deprn_rate,
12598          txlb.depreciation_id,
12599          txlb.asset_number
12600   from   okl_txl_assets_b txlb,
12601          okc_k_lines_b    fa_cleb,
12602          okc_line_styles_b fa_lseb
12603   where  txlb.kle_id        = fa_cleb.id
12604   and    txlb.tal_type      = 'CRL'
12605   and    fa_cleb.cle_id     = p_cle_id
12606   and    fa_cleb.dnz_chr_id = p_chr_id
12607   and    fa_cleb.lse_id     = fa_lseb.id
12608   and    fa_lseb.lty_code   = 'FIXED_ASSET';
12609 
12610   l_corpbook_rec   l_corpbook_csr%ROWTYPE;
12611 
12612   --cursor to get model line details
12613   CURSOR l_modelline_csr(p_cle_id   in number,
12614                          p_chr_id   in number) IS
12615   select model_cleb.id   model_cle_id,
12616          model_cim.id    model_cim_id
12617   from   okc_k_items       model_cim,
12618          okc_k_lines_b     model_cleb,
12619          okc_line_styles_b model_lseb
12620   where  model_cim.cle_id       =  model_cleb.id
12621   and    model_cim.dnz_chr_id   = model_cleb.dnz_chr_id
12622   and    model_cleb.cle_id      = p_cle_id
12623   and    model_cleb.dnz_chr_id  = p_chr_id
12624   and    model_cleb.lse_id      = model_lseb.id
12625   and    model_lseb.lty_code    = 'ITEM';
12626 
12627   l_modelline_rec l_modelline_csr%ROWTYPE;
12628 
12629   l_clev_rec      clev_rec_type;
12630   l_klev_rec      klev_rec_type;
12631   lx_clev_rec     clev_rec_type;
12632   lx_klev_rec     klev_rec_type;
12633   l_cimv_rec      cimv_rec_type;
12634   lx_cimv_rec     cimv_rec_type;
12635 
12636   l_dt_clev_rec      clev_rec_type;
12637   l_dt_klev_rec      klev_rec_type;
12638   lx_dt_clev_rec     clev_rec_type;
12639   lx_dt_klev_rec     klev_rec_type;
12640 
12641 
12642   --cursor to get any existing addons for deletion
12643   CURSOR l_addonline_csr (p_cle_id  in number,
12644                           p_chr_id  in number) IS
12645 
12646   select addon_cleb.id     addon_cle_id
12647   from   okc_k_lines_b     addon_cleb,
12648          okc_line_styles_b addon_lseb,
12649          okc_k_lines_b     model_cleb,
12650          okc_line_styles_b model_lseb
12651   where  addon_cleb.cle_id      = model_cleb.id
12652   and    addon_cleb.dnz_chr_id  = model_cleb.dnz_chr_id
12653   and    addon_cleb.lse_id      = addon_lseb.id
12654   and    addon_lseb.lty_code    = 'ADD_ITEM'
12655   and    model_cleb.cle_id      = p_cle_id
12656   and    model_cleb.dnz_chr_id  = p_chr_id
12657   and    model_cleb.lse_id      = model_lseb.id
12658   and    model_lseb.lty_code    = 'ITEM';
12659 
12660   l_addonline_id    OKC_K_LINES_B.ID%TYPE;
12661 
12662   --cursor to get any existing subsidies for deletion
12663   CURSOR l_subsidyline_csr (p_cle_id    in number,
12664                         p_chr_id    in number) IS
12665   select subsidy_cleb.id  subsidy_cle_id
12666   from   okc_k_lines_b    subsidy_cleb,
12667          okc_line_styles_b subsidy_lseb
12668   where  subsidy_cleb.cle_id   = p_cle_id
12669   and    subsidy_cleb.dnz_chr_id = p_chr_id
12670   and    subsidy_cleb.lse_id     = subsidy_lseb.id
12671   and    subsidy_lseb.lty_code   = 'SUBSIDY';
12672 
12673   l_subsidyline_id  OKC_K_LINES_B.ID%TYPE;
12674 
12675 
12676   --cursor to get party roles attached to copied line
12677   CURSOR l_cpl_csr (p_cle_id   in  number,
12678                     p_chr_id   in  number) IS
12679   select cplb.id
12680   from   okc_k_party_roles_b cplb
12681   where  cle_id             = p_cle_id
12682   and    dnz_chr_id         = p_chr_id;
12683 
12684   l_cpl_id       OKC_K_PARTY_ROLES_B.ID%TYPE;
12685   l_cplv_rec     OKL_OKC_MIGRATION_PVT.cplv_rec_type;
12686 
12687 
12688   --cursor to get supplier invoice details
12689   CURSOR l_sid_csr (p_cle_id in NUMBER) IS
12690   select sid.id
12691   from   okl_supp_invoice_dtls sid
12692   where  cle_id   = p_cle_id;
12693 
12694   l_sid_id       OKL_SUPP_INVOICE_DTLS.ID%TYPE;
12695   l_sidv_rec     OKL_SUPP_INVOICE_DTLS_PUB.sidv_rec_type;
12696 
12697   --cursor to get item sources for fa and ib lines
12698   CURSOR   l_orig_cim_csr(p_orig_cle_id in number) IS
12699   SELECT   object1_id1,
12700            object1_id2
12701   from     okc_k_items
12702   WHERE    cle_id     = p_orig_cle_id;
12703 
12704   l_orig_cim_rec   l_orig_cim_csr%ROWTYPE;
12705 
12706   --cursor to get corresponding cim record fro fa and ib lines
12707   CURSOR   l_cim_csr (p_cle_id in number, p_chr_id in number) IS
12708   SELECT   id
12709   from     okc_k_items
12710   WHERE    cle_id     = p_cle_id
12711   And      dnz_chr_id = p_chr_id;
12712 
12713   l_cim_id        OKC_K_ITEMS.ID%TYPE;
12714   l_upd_cimv_rec  OKL_OKC_MIGRATION_PVT.cimv_rec_type;
12715   lx_upd_cimv_rec OKL_OKC_MIGRATION_PVT.cimv_rec_type;
12716 
12717 
12718   --Cursor to get hdr date
12719   CURSOR l_hdr_csr (p_chr_id IN NUMBER) is
12720   SELECT chrb.start_date,
12721          chrb.end_date,
12722          chrb.sts_code,
12723          --Bug# 4869443
12724          chrb.orig_system_source_code,
12725          --Bug# 6328924
12726          khr.legal_entity_id
12727   FROM   okc_k_headers_b chrb,
12728          okl_k_headers khr
12729   WHERE  chrb.id  = p_chr_id
12730   AND    khr.id   = chrb.id;
12731 
12732   l_hdr_rec    l_hdr_csr%ROWTYPE;
12733 
12734   --Bug : 3569441
12735   --cursor to get all the tax books
12736   CURSOR l_taxbook_csr(p_tal_id in number) is
12737   select txdb.tax_book,
12738          txdb.id
12739   from   okl_txd_assets_b txdb
12740   where  txdb.tal_id      = p_tal_id;
12741 
12742   l_taxbook_rec l_taxbook_csr%ROWTYPE;
12743 
12744   --Bug# 3950089: Fetch NBV using FA apis
12745   /*
12746   --cursor to get nbv for each book
12747   CURSOR l_nbv_csr (p_book_type_code varchar2,
12748                     p_asset_id       number) IS
12749   Select (fb.cost - fds.deprn_reserve) nbv
12750   from   fa_books          fb,
12751          fa_deprn_periods  fdp,
12752          fa_deprn_summary  fds
12753   where  fb.book_type_code  = p_book_type_code
12754   and    fb.asset_id        = p_asset_id
12755   and    fb.transaction_header_id_out is null
12756   and    fdp.book_type_code = fb.book_type_code
12757   and    fdp.period_close_date is null
12758   and    fds.book_type_code = fb.book_type_code
12759   and    fds.asset_id       = fb.asset_id
12760   and    fds.period_counter = (fdp.period_counter - 1);
12761   */
12762 
12763   l_nbv NUMBER;
12764 
12765   l_talv_rec       talv_rec_type;
12766   lx_talv_rec      talv_rec_type;
12767   l_txdv_rec       txdv_rec_type;
12768   lx_txdv_rec      txdv_rec_type;
12769   --END BUG# : 3569441
12770 
12771   --Bug# 3631094 : cursor to get category book defaults
12772   Cursor l_defaults_csr (p_book in varchar2,
12773                          p_cat  in number,
12774                          p_date in date) is
12775   select fcb.LIFE_IN_MONTHS,
12776          fcb.DEPRN_METHOD,
12777          fcb.ADJUSTED_RATE,
12778          fcb.BASIC_RATE
12779   from   FA_CATEGORY_BOOK_DEFAULTS fcb
12780   where  fcb.book_type_code  = p_book
12781   and    fcb.category_id     = p_cat
12782   and    p_date between fcb.start_dpis and nvl(fcb.end_dpis,p_date);
12783 
12784   l_defaults_rec l_defaults_csr%ROWTYPE;
12785 
12786   Cursor town_rul_csr (pchrid number) is
12787   Select rule_information1 tax_owner,
12788          id
12789   From   okc_rules_b rul
12790   where  rul.dnz_chr_id = pchrid
12791   and    rul.rule_information_category = 'LATOWN'
12792   and    nvl(rul.STD_TEMPLATE_YN,'N')  = 'N';
12793 
12794   l_town_rul      okc_rules_b.rule_information1%TYPE;
12795   l_town_rul_id   okc_rules_b.id%TYPE;
12796 
12797   l_rep_asset_book       okl_txl_assets_b.corporate_book%TYPE;
12798   l_rep_asset_book_done  varchar2(1);
12799   l_rep_pdt_id           number;
12800   l_tax_owner            varchar2(30);
12801   l_rep_deal_type        okl_k_headers.deal_type%TYPE;
12802   l_multi_gaap_yn        varchar2(1);
12803   l_adjust_asset_to_zero varchar2(1);
12804   l_deal_type            okl_k_headers.deal_type%TYPE;
12805 
12806   l_mg_txdv_rec       txdv_rec_type;
12807   lx_mg_txdv_rec      txdv_rec_type;
12808   l_corp_nbv          number;
12809   l_pending_trx_yn    varchar2(1);
12810 
12811   --cursor to get asset number
12812   cursor l_Asset_no_csr(p_asset_id in number) is
12813   select asset_number
12814   from   fa_additions
12815   where  asset_id = p_asset_id;
12816 
12817   l_asset_number  fa_additions.asset_number%TYPE;
12818   l_mg_txd_id     okl_txd_assets_b.id%TYPE;
12819   --Bug# 3631094
12820 
12821     --Bug# 3783518 :
12822     CURSOR l_chk_rbk_csr (p_chr_id in NUMBER) is
12823     select 'Y'
12824     from   okc_k_headers_b chrb
12825     where  nvl(chrb.orig_system_source_code,'XXXX') = 'OKL_REBOOK'
12826     and    chrb.id   = p_chr_id;
12827 
12828     l_rbk_yn  varchar2(1);
12829     --Bug# 3783518 :
12830 
12831     --Bug# 4558486
12832     l_kplv_rec               OKL_K_PARTY_ROLES_PVT.kplv_rec_type;
12833 
12834     --Bug# 4869443
12835     l_icx_date_format  varchar2(240);
12836     l_termination_date varchar2(240);
12837     l_k_start_date     varchar2(240);
12838     --Bug# 4869443
12839   BEGIN
12840       x_return_status := Okl_Api.G_RET_STS_SUCCESS;
12841       -- Call start_activity to create savepoint, check compatibility
12842       -- and initialize message list
12843       x_return_status := Okl_Api.START_ACTIVITY(
12844                         p_api_name      => l_api_name,
12845                         p_pkg_name      => g_pkg_name,
12846                         p_init_msg_list => p_init_msg_list,
12847                         l_api_version   => l_api_version,
12848                         p_api_version   => p_api_version,
12849                         p_api_type      => '_PVT',
12850                         x_return_status => x_return_status);
12851       -- Check if activity started successfully
12852       IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
12853          RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
12854       ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
12855          RAISE Okc_Api.G_EXCEPTION_ERROR;
12856       END IF;
12857 
12858       --------------------------------
12859       --Bug# 3783518 : Check if it is a rebook. New asset should not be added on rebook of a rlease asset contract
12860       --------------------------------
12861       l_rbk_yn := 'N';
12862       open l_chk_rbk_csr(p_chr_id  => p_chr_id);
12863       fetch l_chk_rbk_csr into l_rbk_yn;
12864       if l_chk_rbk_csr%NOTFOUND then
12865          null;
12866       end if;
12867       close l_chk_rbk_csr;
12868 
12869 
12870       If l_rbk_yn = 'Y' then
12871            OKL_API.set_message(
12872                                 p_app_name     => G_APP_NAME,
12873                                 p_msg_name     => 'OKL_REL_ASSET_RBK_NEW_AST_ADD');
12874            x_return_status := OKC_API.G_RET_STS_ERROR;
12875            RAISE OKL_API.G_EXCEPTION_ERROR;
12876 
12877       End If;
12878 
12879       ------------------
12880       --end Bug# 3783518
12881       ------------------
12882       --------------------------------
12883       --0. Check if off-lease processing is not going on
12884       -------------------------------
12885 
12886       ---------------------
12887       --bug# 4869443
12888       ---------------------
12889       open l_hdr_csr (p_chr_id => p_chr_id);
12890       Fetch l_hdr_csr into l_hdr_rec;
12891       close l_hdr_csr;
12892 
12893       l_pending_trx_yn := 'N';
12894       check_off_lease_trx
12895                             (p_api_version   => p_api_version,
12896                              p_init_msg_list => p_init_msg_list,
12897                              x_return_status => x_return_status,
12898                              x_msg_count     => x_msg_count,
12899                              x_msg_data      => x_msg_data,
12900                              p_asset_id      => p_asset_id,
12901                              x_pending_trx_yn => l_pending_trx_yn);
12902       IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
12903          RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
12904       ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
12905          RAISE Okc_Api.G_EXCEPTION_ERROR;
12906       END IF;
12907 
12908       If l_pending_trx_yn = 'Y' then
12909 
12910           open l_asset_no_csr(p_asset_id => p_asset_id);
12911           fetch l_asset_no_csr into l_asset_number;
12912           if l_asset_no_csr%NOTFOUND then
12913               null;
12914           end if;
12915           close l_asset_no_csr;
12916 
12917           OKL_API.set_message(
12918                                 p_app_name     => G_APP_NAME,
12919                                 p_msg_name     => 'OKL_LA_OFF_LEASE_TRX',
12920                                 p_token1       => 'ASSET_NUMBER',
12921                                 p_token1_value => l_asset_number);
12922            x_return_status := OKC_API.G_RET_STS_ERROR;
12923            RAISE OKL_API.G_EXCEPTION_ERROR;
12924 
12925       End If;
12926 
12927 
12928       ------------------------
12929       --1. get the original asset id
12930       ------------------------
12931       Open l_orig_ast_csr (p_asset_id => p_asset_id);
12932       Fetch l_orig_ast_csr into l_orig_ast_rec;
12933       If l_orig_ast_csr%NOTFOUND then
12934           --raise error: Unable to fetch data for asset to release
12935           --from the old contract
12936          OKL_API.set_message(p_app_name     => G_APP_NAME,
12937                              p_msg_name     => 'OKL_LA_RELEASE_AST_DTLS');
12938          RAISE Okl_Api.G_EXCEPTION_ERROR; -- rmunjulu bug 6805958
12939       End If;
12940       Close l_orig_ast_csr;
12941 
12942 
12943       --Bug# 4869443
12944       If nvl(l_hdr_rec.orig_system_source_code,OKL_API.G_MISS_CHAR) <> 'OKL_RELEASE' then --is a release asset case
12945           If (l_hdr_rec.start_date <= l_orig_ast_rec.date_terminated) then
12946               -- Raise Error: start date of the contract should not be less than or equal to termination
12947               -- date of the asset.
12948               l_icx_date_format := nvl(fnd_profile.value('ICX_DATE_FORMAT_MASK'),'DD-MON-RRRR');
12949 
12950               l_termination_date := to_char(l_orig_ast_rec.date_terminated,l_icx_date_format);
12951               l_k_start_date := to_char(l_hdr_rec.start_date,l_icx_date_format);
12952 
12953               open l_asset_no_csr(p_asset_id => p_asset_id);
12954               fetch l_asset_no_csr into l_asset_number;
12955               if l_asset_no_csr%NOTFOUND then
12956                   null;
12957               end if;
12958               close l_asset_no_csr;
12959 
12960               OKL_API.set_message(p_app_name     => G_APP_NAME,
12961                                   p_msg_name     => 'OKL_LA_RELEASE_AST_TRMN_DATE',
12962                                   p_token1       => 'TERMINATION_DATE',
12963                                   p_token1_value => l_termination_date,
12964                                   p_token2       => 'ASSET_NUMBER',
12965                                   p_token2_value => l_asset_number,
12966                                   p_token3       => 'CONTRACT_START_DATE',
12967                                   p_token3_value => l_k_start_date);
12968               RAISE Okl_Api.G_EXCEPTION_ERROR; -- rmunjulu bug 6805958 changed to OKL_API from OKC_API
12969           End If;
12970 
12971           --Bug# 6328924
12972           If (l_hdr_rec.legal_entity_id <> l_orig_ast_rec.legal_entity_id) then
12973               -- Raise Error: The legal entity associated with Asset must be the same as
12974               --              the legal entity associated with the contract
12975 
12976               open l_asset_no_csr(p_asset_id => p_asset_id);
12977               fetch l_asset_no_csr into l_asset_number;
12978               if l_asset_no_csr%NOTFOUND then
12979                   null;
12980               end if;
12981               close l_asset_no_csr;
12982 
12983               OKL_API.set_message(p_app_name     => G_APP_NAME,
12984                                   p_msg_name     => 'OKL_LA_RELEASE_ASSET_LGL_ENTY',
12985                                   p_token1       => 'ASSET_NUMBER',
12986                                   p_token1_value => l_asset_number);
12987               RAISE Okl_Api.G_EXCEPTION_ERROR;
12988           End If;
12989 
12990       End If;
12991       --Bug# 4869443
12992 
12993       --------------------------
12994       --2. copy asset line
12995       -------------------------
12996       OKL_COPY_ASSET_PUB.copy_asset_lines
12997                           (p_api_version        => p_api_version,
12998                            p_init_msg_list      => p_init_msg_list,
12999                            x_return_status      => x_return_status,
13000                            x_msg_count          => x_msg_count,
13001                            x_msg_data           => x_msg_data,
13002                            p_from_cle_id        => l_orig_ast_rec.finasst_id,
13003                            p_to_cle_id          => OKL_API.G_MISS_NUM ,
13004                            p_to_chr_id          => p_chr_id,
13005                            p_to_template_yn     => 'N',
13006                            p_copy_reference     => 'COPY',
13007                            p_copy_line_party_yn => 'N',
13008                            p_renew_ref_yn       => 'N',
13009                            p_trans_type         => 'CRL',
13010                            x_cle_id             => l_new_finasst_id);
13011       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13012           RAISE OKL_API.G_EXCEPTION_ERROR;
13013       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13014           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13015       END IF;
13016 
13017       ---------------------------
13018       --3. delete addon lines
13019       --------------------------
13020       Open l_addonline_csr(p_cle_id => l_new_finasst_id,
13021                            p_chr_id => p_chr_id);
13022       Loop
13023           Fetch l_addonline_csr into l_addonline_id;
13024           Exit when l_addonline_csr%NOTFOUND;
13025           OKL_CONTRACT_PUB.delete_contract_line
13026                            (p_api_version        => p_api_version,
13027                             p_init_msg_list      => p_init_msg_list,
13028                             x_return_status      => x_return_status,
13029                             x_msg_count          => x_msg_count,
13030                             x_msg_data           => x_msg_data,
13031                             p_line_id            => l_addonline_id);
13032 
13033           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13034               RAISE OKL_API.G_EXCEPTION_ERROR;
13035           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13036               RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13037           END IF;
13038       End Loop;
13039       Close l_addonline_csr;
13040 
13041       -----------------------------
13042       --4.delete subsidy lines
13043       ----------------------------
13044       Open l_subsidyline_csr (p_cle_id => l_new_finasst_id,
13045                               p_chr_id => p_chr_id);
13046       Loop
13047            Fetch l_subsidyline_csr into l_subsidyline_id;
13048            Exit when l_subsidyline_csr%NOTFOUND;
13049            OKL_CONTRACT_PUB.delete_contract_line
13050                            (p_api_version        => p_api_version,
13051                             p_init_msg_list      => p_init_msg_list,
13052                             x_return_status      => x_return_status,
13053                             x_msg_count          => x_msg_count,
13054                             x_msg_data           => x_msg_data,
13055                             p_line_id            => l_subsidyline_id);
13056 
13057           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13058               RAISE OKL_API.G_EXCEPTION_ERROR;
13059           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13060               RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13061           END IF;
13062       End Loop;
13063       Close l_subsidyline_csr;
13064 
13065 
13066       ---------------------------------------------------
13067       --5. Delete the rules associated with original line
13068       --   Update contract header dates on to lines
13069       --   Plug in asset and ib ids
13070       --   Delete Parties
13071       --   Delete supplier invoice details
13072       --------------------------------------------------
13073       ---
13074       --Bug# 4869443 : cursor open moved up
13075       --
13076       --open l_hdr_csr (p_chr_id => p_chr_id);
13077       --Fetch l_hdr_csr into l_hdr_rec;
13078       --close l_hdr_csr;
13079 
13080       open l_lines_csr(p_from_cle_id => l_new_finasst_id);
13081       Loop
13082           Fetch l_lines_csr into l_lines_rec;
13083           Exit when l_lines_csr%NOTFOUND;
13084 
13085           --update line start and end dates
13086           l_dt_clev_rec.id         := l_lines_rec.id;
13087           l_dt_klev_rec.id         := l_lines_rec.id;
13088 
13089           -- Bug #15992711: Start of modifications
13090           -- Passing the re-lease asset flag as 'Y' for the asset line
13091           -- which has re lease assets.
13092           IF l_lines_rec.lse_id = 33 THEN
13093             l_dt_klev_rec.re_lease_yn := 'Y';
13094           ELSE
13095             l_dt_klev_rec.re_lease_yn := NULL;
13096           END IF;
13097           -- Bug #15992711: End of modifications
13098 
13099           l_dt_clev_rec.start_date := l_hdr_rec.start_date;
13100           l_dt_clev_rec.end_date   := l_hdr_rec.end_date;
13101           l_dt_clev_rec.sts_code   := l_hdr_rec.sts_code;
13102 
13103           okl_contract_pub.update_contract_line
13104                            (p_api_version    => p_api_version,
13105                             p_init_msg_list  => p_init_msg_list,
13106                             x_return_status  => x_return_status,
13107                             x_msg_count      => x_msg_count,
13108                             x_msg_data       => x_msg_data,
13109                             p_clev_rec       => l_dt_clev_rec,
13110                             p_klev_rec       => l_dt_klev_rec,
13111                             x_clev_rec       => lx_dt_clev_rec,
13112                             x_klev_rec       => lx_dt_klev_rec);
13113 
13114           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13115               RAISE OKL_API.G_EXCEPTION_ERROR;
13116           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13117               RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13118           END IF;
13119 
13120 
13121           --plug in asset and ib ids
13122           Open l_orig_cim_csr(p_orig_cle_id => l_lines_rec.orig_system_id1);
13123           Fetch l_orig_cim_csr into l_orig_cim_rec;
13124           If l_orig_cim_csr%NOTFOUND then
13125               Null;
13126           Else
13127               Open l_cim_csr(p_cle_id => l_lines_rec.id, p_chr_id => p_chr_id);
13128               Fetch l_cim_csr into l_cim_id;
13129               If l_cim_csr%NOTFOUND then
13130                   NULL;
13131               Else
13132 
13133                   l_upd_cimv_rec.id := l_cim_id;
13134                   l_upd_cimv_rec.object1_id1 := l_orig_cim_rec.object1_id1;
13135                   l_upd_cimv_rec.object1_id2 := l_orig_cim_rec.object1_id2;
13136 
13137                   OKL_OKC_MIGRATION_PVT.update_contract_item
13138                            (p_api_version        => p_api_version,
13139                             p_init_msg_list      => p_init_msg_list,
13140                             x_return_status      => x_return_status,
13141                             x_msg_count          => x_msg_count,
13142                             x_msg_data           => x_msg_data,
13143                             p_cimv_rec           => l_upd_cimv_rec,
13144                             x_cimv_rec           => lx_upd_cimv_rec);
13145 
13146                   IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13147                       RAISE OKL_API.G_EXCEPTION_ERROR;
13148                   ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13149                       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13150                   END IF;
13151               End If;
13152               Close l_cim_csr;
13153           End If;
13154           Close l_orig_cim_csr;
13155 
13156           --Get rule groups associated with each line
13157           Open l_rgp_csr(p_cle_id => l_lines_rec.id, p_chr_id => p_chr_id);
13158           Loop
13159               Fetch l_rgp_csr into l_rgp_id;
13160               Exit when l_rgp_csr%NOTFOUND;
13161               --delete the rule group instance
13162               l_rgpv_rec.id := l_rgp_id;
13163               OKL_RULE_PUB.delete_rule_group
13164                            (p_api_version    => p_api_version,
13165                             p_init_msg_list  => p_init_msg_list,
13166                             x_return_status  => x_return_status,
13167                             x_msg_count      => x_msg_count,
13168                             x_msg_data       => x_msg_data,
13169                             p_rgpv_rec       => l_rgpv_rec );
13170 
13171               IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13172                   RAISE OKL_API.G_EXCEPTION_ERROR;
13173               ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13174                   RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13175               END IF;
13176           End Loop;
13177           Close l_rgp_csr;
13178 
13179           --get supplier invoice details linked with each line
13180           Open  l_sid_csr (p_cle_id => l_lines_rec.id);
13181           Loop
13182               Fetch l_sid_csr into l_sid_id;
13183               Exit when l_sid_csr%NOTFOUND;
13184               --delete sidv rec
13185               l_sidv_rec.id := l_sid_id;
13186               OKL_SUPP_INVOICE_DTLS_PUB.delete_sup_inv_dtls
13187                           (p_api_version    => p_api_version,
13188                             p_init_msg_list  => p_init_msg_list,
13189                             x_return_status  => x_return_status,
13190                             x_msg_count      => x_msg_count,
13191                             x_msg_data       => x_msg_data,
13192                             p_sidv_rec       => l_sidv_rec );
13193 
13194               IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13195                   RAISE OKL_API.G_EXCEPTION_ERROR;
13196               ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13197                   RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13198               END IF;
13199           End Loop;
13200           Close l_sid_csr;
13201 
13202           --get party roles linked with each line
13203           Open  l_cpl_csr (p_cle_id => l_lines_rec.id, p_chr_id => p_chr_id);
13204           Loop
13205               Fetch l_cpl_csr into l_cpl_id;
13206               Exit when l_cpl_csr%NOTFOUND;
13207               --delete cplv rec
13208               l_cplv_rec.id := l_cpl_id;
13209               --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
13210               --              to delete records in tables
13211               --              okc_k_party_roles_b and okl_k_party_roles
13212               /*
13213               OKL_OKC_MIGRATION_PVT.delete_k_party_role
13214                           ( p_api_version    => p_api_version,
13215                             p_init_msg_list  => p_init_msg_list,
13216                             x_return_status  => x_return_status,
13217                             x_msg_count      => x_msg_count,
13218                             x_msg_data       => x_msg_data,
13219                             p_cplv_rec       => l_cplv_rec );
13220               */
13221               l_kplv_rec.id := l_cplv_rec.id;
13222               OKL_K_PARTY_ROLES_PVT.delete_k_party_role
13223                           ( p_api_version    => p_api_version,
13224                             p_init_msg_list  => p_init_msg_list,
13225                             x_return_status  => x_return_status,
13226                             x_msg_count      => x_msg_count,
13227                             x_msg_data       => x_msg_data,
13228                             p_cplv_rec       => l_cplv_rec,
13229                             p_kplv_rec       => l_kplv_rec);
13230 
13231               IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13232                   RAISE OKL_API.G_EXCEPTION_ERROR;
13233               ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13234                   RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13235               END IF;
13236           End Loop;
13237           Close l_cpl_csr;
13238       End Loop;
13239       close l_lines_csr;
13240 
13241       -------------------------------------------------------
13242       --6. Update the costs and salvage value from FA
13243       ------------------------------------------------------
13244       Open l_corpbook_csr(p_cle_id => l_new_finasst_id,
13245                           p_chr_id => p_chr_id);
13246       Fetch l_corpbook_csr into l_corpbook_rec;
13247       If l_corpbook_csr%NOTFOUND then
13248           --error
13249           NULL;
13250       End If;
13251       Close l_corpbook_csr;
13252 
13253       --Bug# 3950089: Fetch NBV using FA apis
13254       /*
13255       --BUG# : 3569441
13256       l_nbv := Null;
13257       Open l_nbv_csr(p_book_type_code => l_corpbook_rec.corporate_book,
13258                      p_asset_id       => p_asset_id);
13259       Fetch l_nbv_csr into l_nbv;
13260       If l_nbv_csr%NOTFOUND then
13261           null;
13262       End If;
13263       Close l_nbv_csr;
13264       */
13265 
13266       l_nbv := Null;
13267       get_nbv(p_api_version     => p_api_version,
13268               p_init_msg_list   => p_init_msg_list,
13269 	        x_return_status   => x_return_status,
13270               x_msg_count       => x_msg_count,
13271               x_msg_data        => x_msg_data,
13272               p_asset_id        => p_asset_id,
13273               p_book_type_code  => l_corpbook_rec.corporate_book,
13274               p_chr_id          => p_chr_id,
13275               p_release_date    => l_hdr_rec.start_date,
13276               x_nbv             => l_nbv);
13277 
13278       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13279         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13280       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13281         RAISE OKL_API.G_EXCEPTION_ERROR;
13282       END IF;
13283 
13284       IF l_nbv is not NULL then
13285           --update okl_txl_Assets
13286           l_talv_rec.id                    := l_corpbook_rec.id;
13287           l_talv_rec.DEPRECIATION_COST     := l_nbv;
13288           l_talv_rec.ORIGINAL_COST         := l_nbv;
13289           l_corp_nbv                       := l_nbv;
13290 
13291           Update_asset_lines(
13292             p_api_version    =>  p_api_version,
13293             p_init_msg_list  =>  p_init_msg_list,
13294             x_return_status  =>  x_return_status,
13295             x_msg_count      =>  x_msg_count,
13296             x_msg_data       =>  x_msg_data,
13297             p_talv_rec       =>  l_talv_rec,
13298             x_talv_rec       =>  lx_talv_rec);
13299 
13300           IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13301               RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13302           ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13303              RAISE Okc_Api.G_EXCEPTION_ERROR;
13304           END IF;
13305       END IF;
13306       --BUG# :END 3569441
13307 
13308       Open l_modelline_csr (p_cle_id => l_new_finasst_id,
13309                             p_chr_id => p_chr_id);
13310       Fetch l_modelline_csr into l_modelline_rec;
13311       If l_modelline_csr%NOTFOUND then
13312           --error
13313           NULL;
13314       End If;
13315       Close l_modelline_csr;
13316 
13317       l_clev_rec.id                  := l_modelline_rec.model_cle_id;
13318       l_klev_rec.id                  := l_modelline_rec.model_cle_id;
13319       --BUG# : 3569441
13320       If l_nbv is NULL then
13321           l_clev_rec.price_unit          := (l_corpbook_rec.depreciation_cost/l_corpbook_rec.current_units);
13322       ElsIf l_nbv is NOT NULL then
13323           l_clev_rec.price_unit          := (l_nbv/l_corpbook_rec.current_units);
13324       End If;
13325       --BUG# End : 3569441
13326       l_cimv_rec.id                  := l_modelline_rec.model_cim_id;
13327       l_cimv_rec.number_of_items     := l_corpbook_rec.current_units;
13328 
13329       okl_contract_pub.update_contract_line
13330                            (p_api_version    => p_api_version,
13331                             p_init_msg_list  => p_init_msg_list,
13332                             x_return_status  => x_return_status,
13333                             x_msg_count      => x_msg_count,
13334                             x_msg_data       => x_msg_data,
13335                             p_clev_rec       => l_clev_rec,
13336                             p_klev_rec       => l_klev_rec,
13337                             x_clev_rec       => lx_clev_rec,
13338                             x_klev_rec       => lx_klev_rec);
13339       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13340           RAISE OKL_API.G_EXCEPTION_ERROR;
13341       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13342           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13343       END IF;
13344 
13345       okl_okc_migration_pvt.update_contract_item
13346                            (p_api_version    => p_api_version,
13347                             p_init_msg_list  => p_init_msg_list,
13348                             x_return_status  => x_return_status,
13349                             x_msg_count      => x_msg_count,
13350                             x_msg_data       => x_msg_data,
13351                             p_cimv_rec       => l_cimv_rec,
13352                             x_cimv_rec       => lx_cimv_rec);
13353       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13354           RAISE OKL_API.G_EXCEPTION_ERROR;
13355       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13356           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13357       END IF;
13358 
13359       --update financial asset line for OEC and residual value
13360       l_clev_rec.id                  := l_new_finasst_id;
13361       l_klev_rec.id                  := l_new_finasst_id;
13362       l_clev_rec.price_unit          := OKL_API.G_MISS_NUM;
13363       l_klev_rec.residual_percentage := l_corpbook_rec.percent_salvage_value;
13364       l_klev_rec.residual_value      := l_corpbook_rec.salvage_value;
13365       --BUG : 3569441
13366       l_klev_rec.oec                 := l_nbv;
13367       --l_klev_rec.oec                 := l_corpbook_rec.depreciation_cost;
13368 
13369       okl_contract_pub.update_contract_line
13370                            (p_api_version    => p_api_version,
13371                             p_init_msg_list  => p_init_msg_list,
13372                             x_return_status  => x_return_status,
13373                             x_msg_count      => x_msg_count,
13374                             x_msg_data       => x_msg_data,
13375                             p_clev_rec       => l_clev_rec,
13376                             p_klev_rec       => l_klev_rec,
13377                             x_clev_rec       => lx_clev_rec,
13378                             x_klev_rec       => lx_klev_rec);
13379       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13380           RAISE OKL_API.G_EXCEPTION_ERROR;
13381       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13382           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13383       END IF;
13384 
13385       --Bug# 3631094 : Creation of reporting tax book
13386       l_rep_asset_book      :=  OKL_SYSTEM_PARAMS_ALL_PUB.get_system_param_value(OKL_SYSTEM_PARAMS_ALL_PUB.G_RPT_PROD_BOOK_TYPE_CODE);
13387       l_rep_Asset_book_done := 'N';
13388       --BUG# : 3569441
13389       OPEN l_taxbook_csr(p_tal_id => l_corpbook_rec.id);
13390       Loop
13391           Fetch l_taxbook_csr into l_taxbook_rec;
13392           Exit when l_taxbook_csr%NOTFOUND;
13393           If l_taxbook_rec.tax_book = nvl(l_rep_Asset_book,OKL_API.G_MISS_CHAR) then
13394               l_rep_Asset_book_done := 'Y';
13395               l_mg_txd_id           := l_taxbook_rec.id;
13396           End If;
13397           --Bug# 3950089: Fetch NBV using FA apis
13398           /*
13399           l_nbv := NULL;
13400           Open l_nbv_csr(p_book_type_code => l_taxbook_rec.tax_book,
13401                          p_asset_id       => p_asset_id);
13402           Fetch l_nbv_csr into l_nbv;
13403           If l_nbv_csr%NOTFOUND then
13404               NULL;
13405           End If;
13406           Close l_nbv_csr;
13407           */
13408 
13409           l_nbv := Null;
13410           get_nbv(p_api_version     => p_api_version,
13411                   p_init_msg_list   => p_init_msg_list,
13412 	            x_return_status   => x_return_status,
13413                   x_msg_count       => x_msg_count,
13414                   x_msg_data        => x_msg_data,
13415                   p_asset_id        => p_asset_id,
13416                   p_book_type_code  => l_taxbook_rec.tax_book,
13417                   p_chr_id          => p_chr_id,
13418                   p_release_date    => l_hdr_rec.start_date,
13419                   x_nbv             => l_nbv);
13420 
13421           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13422             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13423           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13424             RAISE OKL_API.G_EXCEPTION_ERROR;
13425           END IF;
13426 
13427           If l_nbv is NOT NULL then
13428               --update okl_txd_Assets_b
13429               l_txdv_rec.id      := l_taxbook_rec.id;
13430               l_txdv_rec.cost    := l_nbv;
13431               OKL_TXD_ASSETS_PUB.UPDATE_TXD_ASSET_DEF
13432                                  (
13433                                  p_api_version    =>  p_api_version,
13434                                  p_init_msg_list  =>  p_init_msg_list,
13435                                  x_return_status  =>  x_return_status,
13436                                  x_msg_count      =>  x_msg_count,
13437                                  x_msg_data       =>  x_msg_data,
13438                                  p_adpv_rec       =>  l_txdv_rec,
13439                                  x_adpv_rec       =>  lx_txdv_rec);
13440 
13441               IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13442                   RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13443               ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13444                   RAISE Okc_Api.G_EXCEPTION_ERROR;
13445               END IF;
13446           END IF;
13447       End Loop;
13448       Close l_taxbook_csr;
13449       --BUG# : END 3569441
13450 
13451       --Bug# 3631094 :
13452       Get_Pdt_Params (p_api_version   => p_api_version,
13453                       p_init_msg_list => p_init_msg_list,
13454                       x_return_status => x_return_status,
13455                       x_msg_count     => x_msg_count,
13456                       x_msg_data      => x_msg_data,
13457                       p_chr_id        => p_chr_id,
13458                       x_rep_pdt_id    => l_rep_pdt_id,
13459                       x_tax_owner     => l_tax_owner,
13460                       x_deal_type     => l_deal_type,
13461                       x_rep_deal_type => l_rep_deal_type);
13462 
13463       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13464           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13465       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13466           RAISE OKL_API.G_EXCEPTION_ERROR;
13467       END IF;
13468 
13469       If l_tax_owner is null then
13470          Open town_rul_csr(pchrid => p_chr_id);
13471          Fetch town_rul_csr into l_town_rul,
13472                                  l_town_rul_id;
13473          If town_rul_csr%NOTFOUND Then
13474             OKC_API.set_message(
13475                             p_app_name     => G_APP_NAME,
13476                             p_msg_name     => G_REQUIRED_VALUE,
13477                             p_token1       => G_COL_NAME_TOKEN,
13478                             p_token1_value => 'Tax Owner');
13479              x_return_status := OKC_API.G_RET_STS_ERROR;
13480              RAISE OKL_API.G_EXCEPTION_ERROR;
13481          Else
13482              l_tax_owner := rtrim(ltrim(l_town_rul,' '),' ');
13483           End If;
13484       Close town_rul_csr;
13485       End If;
13486 
13487       l_Multi_GAAP_YN := 'N';
13488       l_adjust_asset_to_zero := 'N';
13489       --checks wheter Multi-GAAP processing needs tobe done
13490       If l_rep_pdt_id is not NULL Then
13491       --Bug 7708944. SGIYER 01/15/2009.
13492       -- Implemented MG changes based on PM recommendation.
13493         l_Multi_GAAP_YN := 'Y';
13494 /*
13495          If l_deal_type = 'LEASEOP' and
13496          nvl(l_rep_deal_type,'X') = 'LEASEOP' and
13497          nvl(l_tax_owner,'X') = 'LESSOR' Then
13498              l_Multi_GAAP_YN := 'Y';
13499          End If;
13500 
13501          If l_deal_type in ('LEASEDF','LEASEST') and
13502          nvl(l_rep_deal_type,'X') = 'LEASEOP' and
13503          nvl(l_tax_owner,'X') = 'LESSOR' Then
13504              l_Multi_GAAP_YN := 'Y';
13505          End If;
13506 
13507          If l_deal_type in ('LEASEDF','LEASEST') and
13508          nvl(l_rep_deal_type,'X') = 'LEASEOP' and
13509          nvl(l_tax_owner,'X') = 'LESSEE' Then
13510              l_Multi_GAAP_YN := 'Y';
13511          End If;
13512 
13513          If l_deal_type = 'LOAN' and
13514          nvl(l_rep_deal_type,'X') = 'LEASEOP' and
13515          nvl(l_tax_owner,'X') = 'LESSEE' Then
13516              l_Multi_GAAP_YN := 'Y';
13517          End If;
13518 */
13519          -- If the reporting product is DF/ST lease, the asset should
13520          -- be created and written to zero in the reporting book.
13521 
13522       --Bug 7708944. SGIYER 01/15/2009.
13523       -- Implemented MG changes based on PM recommendation.
13524          If l_deal_type = 'LEASEOP' and
13525          nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
13526          nvl(l_tax_owner,'X') = 'LESSOR' Then
13527              --l_Multi_GAAP_YN := 'Y';
13528              l_adjust_asset_to_zero := 'Y';
13529          End If;
13530 
13531          If l_deal_type in ('LEASEDF','LEASEST') and
13532          nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
13533          nvl(l_tax_owner,'X') = 'LESSOR' Then
13534              --l_Multi_GAAP_YN := 'Y';
13535              l_adjust_asset_to_zero := 'Y';
13536          End If;
13537 
13538          If l_deal_type in ('LEASEDF','LEASEST') and
13539          nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
13540          nvl(l_tax_owner,'X') = 'LESSEE' Then
13541              --l_Multi_GAAP_YN := 'Y';
13542              l_adjust_asset_to_zero := 'Y';
13543          End If;
13544       End If;
13545 
13546       --Bug 7708944. SGIYER 01/15/2009.
13547       -- Implemented MG changes based on PM recommendation.
13548       If l_Multi_GAAP_YN = 'Y' and nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST','LEASEOP') then
13549           If nvl(l_rep_Asset_book_done,OKL_API.G_MISS_CHAR) = 'N' then
13550               l_mg_txdv_rec.tal_id       :=  l_corpbook_rec.id;
13551               l_mg_txdv_rec.asset_number :=  l_corpbook_rec.asset_number;
13552               l_mg_txdv_rec.tax_book     :=  l_rep_Asset_book;
13553               --If nvl(l_adjust_asset_to_zero,OKL_API.G_MISS_CHAR) = 'Y' then
13554               --l_mg_txdv_rec.cost := 0;
13555               --ElsIf nvl(l_adjust_asset_to_zero,OKL_API.G_MISS_CHAR) = 'N' then
13556               l_mg_txdv_rec.cost := l_corp_nbv;
13557               --End If;
13558               --get defaults from category books
13559               open l_defaults_csr (p_book => l_rep_asset_book,
13560                                    p_cat  => l_corpbook_rec.depreciation_id,
13561                                    p_date => l_corpbook_rec.in_service_date);
13562               Fetch l_defaults_csr into l_defaults_rec;
13563 
13564               -- Bug# 5028512 - Modified - Start
13565               If l_defaults_csr%NOTFOUND then
13566                   l_mg_txdv_rec.deprn_method_tax    := l_corpbook_rec.deprn_method;
13567                   l_mg_txdv_rec.life_in_months_tax  := l_corpbook_rec.life_in_months;
13568                    -- Depreciation Rates no longer needs to be adjusted by 100
13569                    --l_mg_txdv_rec.deprn_rate_tax      := (l_corpbook_rec.deprn_rate * 100);
13570                    l_mg_txdv_rec.deprn_rate_tax      := l_corpbook_rec.deprn_rate;
13571               Else
13572                   l_mg_txdv_rec.deprn_method_tax    := l_defaults_rec.deprn_method;
13573                   l_mg_txdv_rec.life_in_months_tax  := l_defaults_rec.life_in_months;
13574                   -- Depreciation Rates no longer needs to be adjusted by 100
13575                   -- l_mg_txdv_rec.deprn_rate_tax      := (l_defaults_rec.adjusted_rate * 100);
13576                   l_mg_txdv_rec.deprn_rate_tax      := l_defaults_rec.adjusted_rate;
13577               End If;
13578               -- Bug# 5028512 - Modified - End
13579 
13580               --Create transaction for Multi-Gaap Book
13581               OKL_TXD_ASSETS_PUB.CREATE_TXD_ASSET_DEF
13582                                  (
13583                                  p_api_version    =>  p_api_version,
13584                                  p_init_msg_list  =>  p_init_msg_list,
13585                                  x_return_status  =>  x_return_status,
13586                                  x_msg_count      =>  x_msg_count,
13587                                  x_msg_data       =>  x_msg_data,
13588                                  p_adpv_rec       =>  l_mg_txdv_rec,
13589                                  x_adpv_rec       =>  lx_mg_txdv_rec);
13590 
13591               IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13592                   RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13593               ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13594                   RAISE Okc_Api.G_EXCEPTION_ERROR;
13595               END IF;
13596            End If; -- if multi gaap asset book is not doen
13597        End If; --If l_mutigaap_yn
13598        x_cle_id:= l_new_finasst_id;
13599 
13600     OKL_API.END_ACTIVITY (x_msg_count,
13601                           x_msg_data );
13602     EXCEPTION
13603     WHEN OKL_API.G_EXCEPTION_ERROR THEN
13604     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
13605                                l_api_name,
13606                                G_PKG_NAME,
13607                                'OKL_API.G_RET_STS_ERROR',
13608                                x_msg_count,
13609                                x_msg_data,
13610                                '_PVT');
13611     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
13612     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
13613                               l_api_name,
13614                               G_PKG_NAME,
13615                               'OKL_API.G_RET_STS_UNEXP_ERROR',
13616                               x_msg_count,
13617                               x_msg_data,
13618                               '_PVT');
13619     WHEN OTHERS THEN
13620     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
13621                               l_api_name,
13622                               G_PKG_NAME,
13623                               'OTHERS',
13624                               x_msg_count,
13625                               x_msg_data,
13626                               '_PVT');
13627   END Create_Release_asset_Line;
13628 
13629   --Bug# 3533936:
13630   ----------------------------------------------------------
13631   --copy and sync line components from updated line with new
13632   --released asset id to new line
13633   --called from release asset line
13634   ---------------------------------------------------------
13635   PROCEDURE copy_updated_asset_components
13636             (p_api_version    IN  NUMBER,
13637              p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
13638              x_return_status  OUT NOCOPY VARCHAR2,
13639              x_msg_count      OUT NOCOPY NUMBER,
13640              x_msg_data       OUT NOCOPY VARCHAR2,
13641              p_cle_id         IN  NUMBER,
13642              p_orig_cle_id    IN  NUMBER,
13643              p_chr_id         IN  NUMBER) IS
13644 
13645   l_return_status        VARCHAR2(1)  DEFAULT Okl_Api.G_RET_STS_SUCCESS;
13646   l_api_name             CONSTANT VARCHAR2(30) := 'COPY_UPDATED_ASSET';
13647   l_api_version          CONSTANT NUMBER := 1.0;
13648 
13649   --cursor to get rule groups attached to old line
13650   CURSOR l_rgp_csr(p_orig_cle_id in number,
13651                    p_chr_id  in number) is
13652   SELECT rgpb.id
13653   FROM   okc_rule_groups_b rgpb
13654   WHERE  rgpb.cle_id     = p_cle_id
13655   AND    rgpb.dnz_chr_id = p_chr_id;
13656 
13657   l_rgp_id   OKC_RULE_GROUPS_B.ID%TYPE;
13658   lx_rgp_id   OKC_RULE_GROUPS_B.ID%TYPE;
13659 
13660   --cursor to get party roles attached to old line
13661   CURSOR l_cpl_csr (p_orig_cle_id in number,
13662                     p_chr_id in number) is
13663   SELECT cplb.id,
13664          cplb.rle_code
13665   FROM   okc_k_party_roles_b cplb
13666   WHERE  cplb.cle_id     = p_orig_cle_id
13667   AND    cplb.dnz_chr_id = p_chr_id;
13668 
13669   l_cpl_rec l_cpl_csr%ROWTYPE;
13670   lx_cpl_id OKC_K_PARTY_ROLES_B.ID%TYPE;
13671 
13672   --cursor to get any covered asset lines where old line was referenced
13673   CURSOR l_lnk_ast_csr (p_orig_cle_id in NUMBER,
13674                         p_chr_id in NUMBER) is
13675   SELECT cim.id
13676   FROM   okc_k_items cim,
13677          okc_k_lines_b cleb,
13678          okc_line_styles_b lseb
13679   WHERE  cim.object1_id1   = to_char(p_orig_cle_id)
13680   AND    cim.object1_id2   = '#'
13681   AND    cim.jtot_object1_code = 'OKX_COVASST'
13682   AND    cim.cle_id            = cleb.id
13683   AND    cim.dnz_chr_id        = cleb.dnz_chr_id
13684   AND    cleb.dnz_chr_id       = p_chr_id
13685   AND    cleb.chr_id           is NULL
13686   AND    cleb.lse_id           = lseb.id
13687   AND    lseb.lty_code         in ('LINK_SERV_ASSET','LINK_FEE_ASSET','LINK_USAGE_ASSET');
13688 
13689   l_cim_id OKC_K_ITEMS.ID%TYPE;
13690   l_cimv_rec OKL_OKC_MIGRATION_PVT.cimv_rec_type;
13691   lx_cimv_rec OKL_OKC_MIGRATION_PVT.cimv_rec_type;
13692 
13693   --cursor to get information about SLH/SLL to sync back
13694   CURSOR l_slh_csr(p_cle_id      in number,
13695                    p_orig_cle_id in number,
13696                    p_chr_id      in number) IS
13697   SELECT
13698 
13699          RULSLH.ID,
13700          RULSLL.ID
13701   FROM   OKC_RULES_B       RULSLL_OLD,
13702          OKC_RULES_B       RULSLH_OLD,
13703          OKC_RULE_GROUPS_B RGPB_OLD,
13704          OKC_RULES_B       RULSLL,
13705          OKC_RULES_B       RULSLH,
13706          OKC_RULE_GROUPS_B RGPB
13707   WHERE  TO_CHAR(RULSLH_OLD.ID)               = NVL(RULSLL.OBJECT2_ID1,-99) --the new sll has old slh's id
13708   AND    RULSLH_OLD.OBJECT1_ID1               = RULSLH.OBJECT1_ID1   --stream type ids are same for old and new slh
13709   AND    RULSLL_OLD.RULE_INFORMATION_CATEGORY = 'LASLL'
13710   AND    RULSLL_OLD.DNZ_CHR_ID                = RGPB_OLD.DNZ_CHR_ID
13711   AND    RULSLL_OLD.RGP_ID                    = RGPB_OLD.ID
13712   AND    RULSLH_OLD.RULE_INFORMATION_CATEGORY = 'LASLH'
13713   AND    RULSLH_OLD.DNZ_CHR_ID                = RGPB_OLD.DNZ_CHR_ID
13714   AND    RULSLH_OLD.RGP_ID                    = RGPB_OLD.ID
13715   AND    TO_CHAR(RULSLH_OLD.ID)               = RULSLL_OLD.OBJECT2_ID1
13716   AND    RGPB_OLD.RGD_CODE                    = 'LALEVL'
13717   AND    RGPB_OLD.CHR_ID                      IS NULL
13718   AND    RGPB_OLD.DNZ_CHR_ID                  = p_chr_id
13719   AND    RGPB_OLD.CLE_ID                      = p_orig_cle_id
13720   --
13721   AND    RULSLL.RULE_INFORMATION_CATEGORY = 'LASLL'
13722   AND    RULSLL.DNZ_CHR_ID                = RGPB.DNZ_CHR_ID
13723   AND    RULSLL.RGP_ID                    = RGPB.ID
13724   AND    RULSLH.RULE_INFORMATION_CATEGORY = 'LASLH'
13725   AND    RULSLH.DNZ_CHR_ID                = RGPB.DNZ_CHR_ID
13726   AND    RULSLH.RGP_ID                    = RGPB.ID
13727   AND    TO_CHAR(RULSLH.ID)              <> NVL(RULSLL.OBJECT2_ID1,-99)
13728   AND    RGPB.RGD_CODE                    = 'LALEVL'
13729   AND    RGPB.CHR_ID                      IS NULL
13730   AND    RGPB.DNZ_CHR_ID                  = p_chr_id
13731   AND    RGPB.CLE_ID                      = p_cle_id;
13732 
13733   l_slh_id     OKC_RULES_B.ID%TYPE;
13734   l_sll_id     OKC_RULES_B.ID%TYPE;
13735 
13736   l_rulv_rec   OKL_RULE_PUB.rulv_rec_type;
13737   lx_rulv_rec  OKL_RULE_PUB.rulv_rec_type;
13738 
13739   --Fetch any new subsidy associated to old line
13740   Cursor l_subsidy_csr (p_orig_cle_id in number,
13741                         p_chr_id      in number) IS
13742   Select sub_kle.subsidy_id              subsidy_id,
13743          sub_cleb.id                     subsidy_cle_id,
13744          subb.name                       name,
13745          subt.description                description,
13746          sub_kle.amount                  amount,
13747          sub_kle.subsidy_override_amount subsidy_override_amount,
13748          sub_cleb.dnz_chr_id             dnz_chr_id,
13749          sub_cleb.cle_id                 asset_cle_id,
13750          sub_cplb.id                     cpl_id,
13751          pov.vendor_id                   vendor_id,
13752          pov.vendor_name                 vendor_name
13753   from
13754          okl_subsidies_b        subb,
13755          okl_subsidies_tl       subt,
13756          po_vendors             pov,
13757          okc_k_party_roles_b    sub_cplb,
13758          okl_k_lines            sub_kle,
13759          okc_k_lines_b          sub_cleb,
13760          okc_line_styles_b      sub_lseb
13761   where  subt.id                     =  subb.id
13762   and    subt.language               = userenv('LANG')
13763   and    subb.id                     = sub_kle.subsidy_id
13764   and    pov.vendor_id               = to_number(sub_cplb.object1_id1)
13765   and    sub_cplb.object1_id2        =   '#'
13766   and    sub_cplb.jtot_object1_code  = 'OKX_VENDOR'
13767   and    sub_cplb.rle_code           = 'OKL_VENDOR'
13768   and    sub_cplb.cle_id             = sub_cleb.id
13769   and    sub_cplb.dnz_chr_id         = sub_cleb.dnz_chr_id
13770   and    sub_kle.id                  = sub_cleb.id
13771   and    sub_cleb.cle_id             = p_orig_cle_id
13772   and    sub_cleb.dnz_chr_id         = p_chr_id
13773   and    sub_cleb.sts_code           <> 'ABANDONED'
13774   and    sub_cleb.lse_id             = sub_lseb.id
13775   and    sub_lseb.lty_code           = 'SUBSIDY';
13776 
13777   l_subsidy_rec  l_subsidy_csr%ROWTYPE;
13778 
13779   l_asb_rec      okl_asset_subsidy_pvt.asb_rec_type;
13780   lx_asb_rec      okl_asset_subsidy_pvt.asb_rec_type;
13781 
13782   --Fetch refund details records against the old subsidy line
13783   Cursor l_subrfnd_csr (p_cpl_id in number) is
13784   Select ppyd.id
13785   from  okl_party_payment_dtls ppyd
13786   where ppyd.cpl_id  = p_cpl_id;
13787 
13788   l_ppyd_id       OKL_PARTY_PAYMENT_DTLS.ID%TYPE;
13789 
13790   l_srfvv_rec     OKL_SUBSIDY_RFND_DTLS_PVT.srfvv_rec_type;
13791   lx_srfvv_rec    OKL_SUBSIDY_RFND_DTLS_PVT.srfvv_rec_type;
13792 
13793   Begin
13794       x_return_status := Okl_Api.G_RET_STS_SUCCESS;
13795       -- Call start_activity to create savepoint, check compatibility
13796       -- and initialize message list
13797       x_return_status := Okl_Api.START_ACTIVITY(
13798                         p_api_name      => l_api_name,
13799                         p_pkg_name      => g_pkg_name,
13800                         p_init_msg_list => p_init_msg_list,
13801                         l_api_version   => l_api_version,
13802                         p_api_version   => p_api_version,
13803                         p_api_type      => '_PVT',
13804                         x_return_status => x_return_status);
13805       -- Check if activity started successfully
13806       IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13807          RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13808       ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13809          RAISE Okc_Api.G_EXCEPTION_ERROR;
13810       END IF;
13811 
13812       --1. Copy rules from old line to new line
13813       open l_rgp_csr(p_orig_cle_id => p_orig_cle_id,
13814                      p_chr_id      => p_chr_id);
13815       Loop
13816           Fetch l_rgp_csr into l_rgp_id;
13817           Exit when l_rgp_csr%NOTFOUND;
13818           okl_copy_contract_pub.Copy_Rules
13819                   (p_api_version    => p_api_version,
13820                    p_init_msg_list  => p_init_msg_list,
13821                    x_return_status  => x_return_status,
13822                    x_msg_count      => x_msg_count,
13823                    x_msg_data       => x_msg_data,
13824                    p_rgp_id         => l_rgp_id,
13825                    p_cle_id         => p_cle_id,
13826                    p_to_template_yn => 'N',
13827                    x_rgp_id         => lx_rgp_id);
13828           IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13829               RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13830           ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13831               RAISE Okc_Api.G_EXCEPTION_ERROR;
13832           END IF;
13833       End Loop;
13834       close l_rgp_csr;
13835 
13836       --2. Copy party roles from old line to new line
13837       open l_cpl_csr(p_orig_cle_id => p_orig_cle_id,
13838                      p_chr_id      => p_chr_id);
13839       Loop
13840           Fetch l_cpl_csr into l_cpl_rec;
13841           Exit when l_cpl_csr%NOTFOUND;
13842           okl_copy_contract_pub.copy_party_roles
13843                   (p_api_version    => p_api_version,
13844                    p_init_msg_list  => p_init_msg_list,
13845                    x_return_status  => x_return_status,
13846                    x_msg_count      => x_msg_count,
13847                    x_msg_data       => x_msg_data,
13848                    p_cpl_id         => l_cpl_rec.id,
13849                    p_cle_id         => p_cle_id,
13850                    p_rle_code       => l_cpl_rec.rle_code,
13851                    x_cpl_id         => lx_cpl_id);
13852           IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13853               RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13854           ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13855               RAISE Okc_Api.G_EXCEPTION_ERROR;
13856           END IF;
13857       End Loop;
13858       close l_cpl_csr;
13859 
13860       --3. Relink covered asset lines
13861       Open l_lnk_ast_csr (p_orig_cle_id => p_orig_cle_id,
13862                           p_chr_id      => p_chr_id);
13863       Loop
13864           Fetch l_lnk_ast_csr into l_cim_id;
13865           Exit when l_lnk_ast_csr%NOTFOUND;
13866           l_cimv_rec.id       := l_cim_id;
13867           l_cimv_rec.object1_id1 := to_char(p_cle_id);
13868           OKL_OKC_MIGRATION_PVT.update_contract_item
13869                                (p_api_version   => p_api_version,
13870                                 p_init_msg_list => p_init_msg_list,
13871                                 x_return_status => x_return_status,
13872                                 x_msg_count     => x_msg_count,
13873                                 x_msg_data      => x_msg_data,
13874                                 p_cimv_rec      => l_cimv_rec,
13875                                 x_cimv_rec      => lx_cimv_rec);
13876           IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13877               RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13878           ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13879               RAISE Okc_Api.G_EXCEPTION_ERROR;
13880           END IF;
13881       End Loop;
13882       Close l_lnk_ast_csr;
13883 
13884       --4. Relink SLH-SLL
13885       Open l_slh_csr (p_cle_id      => p_cle_id,
13886                       p_orig_cle_id => p_orig_cle_id,
13887                       p_chr_id      => p_chr_id
13888                      );
13889       Loop
13890           Fetch l_slh_csr into l_slh_id, l_sll_id;
13891           Exit when l_slh_csr%NOTFOUND;
13892           l_rulv_rec.id := l_sll_id;
13893           l_rulv_rec.object2_id1 := to_char(l_slh_id);
13894           OKL_RULE_PUB.update_rule
13895                  (p_api_version   => p_api_version,
13896                   p_init_msg_list => p_init_msg_list,
13897                   x_return_status => x_return_status,
13898                   x_msg_count     => x_msg_count,
13899                   x_msg_data      => x_msg_data,
13900                   p_rulv_rec      => l_rulv_rec,
13901                   x_rulv_rec      => lx_rulv_rec);
13902           IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13903               RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13904           ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13905               RAISE Okc_Api.G_EXCEPTION_ERROR;
13906           END IF;
13907       End Loop;
13908       Close l_slh_csr;
13909 
13910       --5. Sync back any new subsidy that has been added
13911       Open l_subsidy_csr(p_orig_cle_id => p_orig_cle_id,
13912                          p_chr_id      => p_chr_id);
13913       Loop
13914           Fetch l_subsidy_csr into l_subsidy_rec;
13915           Exit when l_subsidy_csr%NOTFOUND;
13916           l_asb_rec.subsidy_id              := l_subsidy_rec.subsidy_id;
13917           l_asb_rec.name                    := l_subsidy_rec.name;
13918           l_asb_rec.description             := l_subsidy_rec.description;
13919           l_asb_rec.amount                  := l_subsidy_rec.amount;
13920           l_asb_rec.subsidy_override_amount := l_subsidy_rec.subsidy_override_amount;
13921           l_asb_rec.dnz_chr_id              := l_subsidy_rec.dnz_chr_id;
13922           l_asb_rec.asset_cle_id            := p_cle_id;
13923           l_asb_rec.vendor_id               := l_subsidy_rec.vendor_id;
13924           l_asb_rec.vendor_name             := l_asb_rec.vendor_name;
13925 
13926           OKL_ASSET_SUBSIDY_PVT.create_asset_subsidy
13927                  (p_api_version   => p_api_version,
13928                   p_init_msg_list => p_init_msg_list,
13929                   x_return_status => x_return_status,
13930                   x_msg_count     => x_msg_count,
13931                   x_msg_data      => x_msg_data,
13932                   p_asb_rec       => l_asb_rec,
13933                   x_asb_rec       => lx_asb_rec);
13934           IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13935               RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13936           ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13937               RAISE Okc_Api.G_EXCEPTION_ERROR;
13938           END IF;
13939 
13940           --update link to party payment details
13941           Open l_subrfnd_csr(p_cpl_id  => l_subsidy_rec.cpl_id);
13942           Fetch l_subrfnd_csr into l_ppyd_id;
13943           If l_subrfnd_csr%NOTFOUND then
13944               NULL;
13945           Else
13946               l_srfvv_rec.id := l_ppyd_id;
13947               l_srfvv_rec.cpl_id := lx_asb_rec.cpl_id;
13948               OKL_SUBSIDY_RFND_DTLS_PVT.update_refund_dtls
13949                  (p_api_version   => p_api_version,
13950                   p_init_msg_list => p_init_msg_list,
13951                   x_return_status => x_return_status,
13952                   x_msg_count     => x_msg_count,
13953                   x_msg_data      => x_msg_data,
13954                   p_srfvv_rec     => l_srfvv_rec,
13955                   x_srfvv_rec     => lx_srfvv_rec);
13956               IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13957                   RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13958               ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13959                   RAISE Okc_Api.G_EXCEPTION_ERROR;
13960               END IF;
13961           End If;
13962           Close l_subrfnd_csr;
13963       End Loop;
13964       Close l_subsidy_csr;
13965 
13966 
13967     OKL_API.END_ACTIVITY (x_msg_count,
13968                           x_msg_data );
13969     EXCEPTION
13970     WHEN OKL_API.G_EXCEPTION_ERROR THEN
13971     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
13972                                l_api_name,
13973                                G_PKG_NAME,
13974                                'OKL_API.G_RET_STS_ERROR',
13975                                x_msg_count,
13976                                x_msg_data,
13977                                '_PVT');
13978     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
13979     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
13980                               l_api_name,
13981                               G_PKG_NAME,
13982                               'OKL_API.G_RET_STS_UNEXP_ERROR',
13983                               x_msg_count,
13984                               x_msg_data,
13985                               '_PVT');
13986     WHEN OTHERS THEN
13987     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
13988                               l_api_name,
13989                               G_PKG_NAME,
13990                               'OTHERS',
13991                               x_msg_count,
13992                               x_msg_data,
13993                               '_PVT');
13994   END copy_updated_asset_components;
13995 
13996   --Bug# 3533936:
13997   ------------------------------------------------------
13998   --update_release_asset_line called from
13999   --update_all_line
14000   -----------------------------------------------------
14001 
14002  PROCEDURE update_release_asset_line
14003             (p_api_version    IN  NUMBER,
14004              p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
14005              x_return_status  OUT NOCOPY VARCHAR2,
14006              x_msg_count      OUT NOCOPY NUMBER,
14007              x_msg_data       OUT NOCOPY VARCHAR2,
14008              p_asset_id       IN  VARCHAR2,
14009              p_chr_id         IN  NUMBER,
14010              p_clev_fin_id    IN  NUMBER,
14011              x_cle_id         OUT NOCOPY NUMBER) IS
14012 
14013 
14014   l_return_status        VARCHAR2(1)  DEFAULT Okl_Api.G_RET_STS_SUCCESS;
14015   l_api_name             CONSTANT VARCHAR2(30) := 'UPDATE_RELEASE_ASSET';
14016   l_api_version          CONSTANT NUMBER := 1.0;
14017 
14018   --cursor to find the existing asset id on release asset line
14019     cursor l_cim_fa_csr(p_fin_asst_id in number) is
14020     select
14021            fa_cim.object1_id1 asset_id,
14022            fa_cim.dnz_chr_id  chr_id
14023     from   okc_k_items fa_cim,
14024            okc_k_lines_b fa_cleb,
14025            okc_line_styles_b fa_lseb
14026     where  fa_cim.cle_id       = fa_cleb.id
14027     and    fa_cim.dnz_chr_id   = fa_cleb.dnz_chr_id
14028     and    fa_cleb.cle_id      = p_fin_asst_id
14029     and    fa_cleb.lse_id      = fa_lseb.id
14030     and    fa_lseb.lty_code    = 'FIXED_ASSET';
14031 
14032   l_asset_id okc_k_items.OBJECT1_ID1%TYPE;
14033   l_chr_id   okc_k_items.DNZ_CHR_ID%TYPE;
14034 
14035   --cursor to fetch all the lines
14036   CURSOR        l_lines_csr(p_from_cle_id in number) IS
14037     SELECT      level,
14038                 id,
14039                 chr_id,
14040                 cle_id,
14041                 dnz_chr_id,
14042                 orig_system_id1
14043     FROM        okc_k_lines_b
14044     CONNECT BY  PRIOR id = cle_id
14045     START WITH  id = p_from_cle_id;
14046 
14047   l_lines_rec l_lines_csr%ROWTYPE;
14048 
14049   --bug# 3783518 : is asset number equal in case of rebook
14050   cursor l_chk_rbk_ast(p_cle_id in number, p_chr_id in number, p_asset_id number) is
14051  select 'N' change_flag,
14052         chrb.orig_system_source_code
14053   from   fa_additions_b    fab,
14054          okl_txl_assets_b  txlb,
14055          okc_k_lines_b     fa_cleb,
14056          okc_line_styles_b fa_lseb,
14057          okc_k_headers_b   chrb
14058   where  fab.asset_number   = txlb.asset_number
14059   and    fab.asset_id       = p_asset_id
14060   and    txlb.kle_id        = fa_cleb.id
14061   and    fa_cleb.dnz_chr_id = chrb.id
14062   and    fa_cleb.cle_id     = p_cle_id
14063   and    fa_cleb.lse_id     = fa_lseb.id
14064   and    fa_lseb.lty_code   = 'FIXED_ASSET'
14065   and    chrb.id            = p_chr_id
14066   and    chrb.orig_system_source_code = 'OKL_REBOOK';
14067 
14068   l_rbk_ast_change_yn varchar2(1);
14069   l_k_source          okc_k_headers_b.orig_system_source_code%TYPE;
14070 
14071   BEGIN
14072       x_return_status := Okl_Api.G_RET_STS_SUCCESS;
14073       -- Call start_activity to create savepoint, check compatibility
14074       -- and initialize message list
14075       x_return_status := Okl_Api.START_ACTIVITY(
14076                         p_api_name      => l_api_name,
14077                         p_pkg_name      => g_pkg_name,
14078                         p_init_msg_list => p_init_msg_list,
14079                         l_api_version   => l_api_version,
14080                         p_api_version   => p_api_version,
14081                         p_api_type      => '_PVT',
14082                         x_return_status => x_return_status);
14083       -- Check if activity started successfully
14084       IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14085          RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14086       ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14087          RAISE Okc_Api.G_EXCEPTION_ERROR;
14088       END IF;
14089 
14090       --------------------
14091       --Bug# 3783518
14092       --------------------
14093       for l_chk_rbk_rec in l_chk_rbk_ast(p_cle_id => p_clev_fin_id,
14094                                          p_chr_id => p_chr_id,
14095                                          p_asset_id => p_asset_id)
14096       Loop
14097           l_rbk_ast_change_yn := l_chk_rbk_rec.change_flag;
14098           l_k_source          := l_chk_rbk_rec.orig_system_source_code;
14099       end loop;
14100 
14101 
14102 
14103       If nvl(l_k_source,OKL_API.G_MISS_CHAR) = 'OKL_REBOOK' then
14104 
14105          If l_rbk_ast_change_yn    = 'Y' then
14106           --raise error : can not add new asset on a rebook
14107               OKL_API.set_message(
14108                                     p_app_name     => G_APP_NAME,
14109                                     p_msg_name     => 'OKL_REL_ASSET_RBK_NEW_AST_ADD');
14110               x_return_status := OKC_API.G_RET_STS_ERROR;
14111               RAISE OKL_API.G_EXCEPTION_ERROR;
14112           ElsIf l_rbk_ast_change_yn = 'N' then
14113               x_cle_id  := p_clev_fin_id;
14114 
14115           End If;
14116 
14117       Else
14118 
14119       --------------------
14120       --End : Bug# 3783518
14121       --------------------
14122       If nvl(p_asset_id,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR then
14123           x_cle_id     := p_clev_fin_id;
14124       Else
14125           open l_cim_fa_csr(p_fin_asst_id => p_clev_fin_id);
14126           Fetch l_cim_fa_csr into l_asset_id, l_chr_id;
14127           If l_cim_fa_csr%NOTFOUND then
14128               --raise error : invalid line information
14129               OKL_API.set_message(p_app_name     => G_APP_NAME,
14130                                   p_msg_name     => 'OKL_LLA_LINE_RECORD');
14131               RAISE Okc_Api.G_EXCEPTION_ERROR;
14132           End If;
14133           close l_cim_fa_csr;
14134           If nvl(p_asset_id,OKL_API.G_MISS_CHAR) = nvl(l_asset_id,OKL_API.G_MISS_CHAR) then
14135               x_cle_id := p_clev_fin_id;
14136           Else
14137 
14138               --Create new release asset line
14139               Create_release_asset_line
14140                   (p_api_version    => p_api_version,
14141                    p_init_msg_list  => p_init_msg_list,
14142                    x_return_status  => x_return_status,
14143                    x_msg_count      => x_msg_count,
14144                    x_msg_data       => x_msg_data,
14145                    p_asset_id       => p_asset_id,
14146                    p_chr_id         => l_chr_id,
14147                    x_cle_id         => x_cle_id);
14148 
14149               IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14150                   RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14151               ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14152                   RAISE OKL_API.G_EXCEPTION_ERROR;
14153               END IF;
14154 
14155               --Copy rules, party roles, supplier invoice details
14156               Open l_lines_csr(p_from_cle_id => x_cle_id);
14157               Loop
14158                   fetch l_lines_csr into l_lines_rec;
14159                   Exit when l_lines_csr%NOTFOUND;
14160                   copy_updated_asset_components
14161                        (p_api_version    => p_api_version,
14162                         p_init_msg_list  => p_init_msg_list,
14163                         x_return_status  => x_return_status,
14164                         x_msg_count      => x_msg_count,
14165                         x_msg_data       => x_msg_data,
14166                         p_cle_id         => l_lines_rec.id,
14167                         p_orig_cle_id    => l_lines_rec.orig_system_id1,
14168                         p_chr_id         => l_chr_id);
14169                   IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14170                       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14171                   ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14172                       RAISE OKL_API.G_EXCEPTION_ERROR;
14173                   END IF;
14174               End Loop;
14175               Close l_lines_csr;
14176 
14177 
14178               --Delete old line
14179               OKL_CONTRACT_PUB.delete_contract_line(
14180                     p_api_version    => p_api_version,
14181                     p_init_msg_list  => p_init_msg_list,
14182                     x_return_status  => x_return_status,
14183                     x_msg_count      => x_msg_count,
14184                     x_msg_data       => x_msg_data,
14185                     p_line_id        =>  p_clev_fin_id
14186                      );
14187 
14188               IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14189                   RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14190               ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14191                   RAISE OKL_API.G_EXCEPTION_ERROR;
14192               END IF;
14193 
14194 
14195           End If;
14196       End If; --Bug# 3783518
14197 
14198       End If;
14199 
14200     OKL_API.END_ACTIVITY (x_msg_count,
14201                           x_msg_data );
14202     EXCEPTION
14203     WHEN OKL_API.G_EXCEPTION_ERROR THEN
14204     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
14205                                l_api_name,
14206                                G_PKG_NAME,
14207                                'OKL_API.G_RET_STS_ERROR',
14208                                x_msg_count,
14209                                x_msg_data,
14210                                '_PVT');
14211     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
14212     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
14213                               l_api_name,
14214                               G_PKG_NAME,
14215                               'OKL_API.G_RET_STS_UNEXP_ERROR',
14216                               x_msg_count,
14217                               x_msg_data,
14218                               '_PVT');
14219     WHEN OTHERS THEN
14220     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
14221                               l_api_name,
14222                               G_PKG_NAME,
14223                               'OTHERS',
14224                               x_msg_count,
14225                               x_msg_data,
14226                               '_PVT');
14227   END update_Release_asset_Line;
14228 
14229 
14230   --Bug# 3533936
14231   ---------------------------------------------------------
14232   --Local procedure to resolve residual value on release
14233   --asset line
14234   --------------------------------------------------------
14235   PROCEDURE Resolve_Residual_Value(
14236             p_api_version    IN  NUMBER,
14237             p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
14238             x_return_status  OUT NOCOPY VARCHAR2,
14239             x_msg_count      OUT NOCOPY NUMBER,
14240             x_msg_data       OUT NOCOPY VARCHAR2,
14241             p_asset_number   IN  VARCHAR2,
14242             p_clev_fin_rec   IN  clev_rec_type,
14243             p_klev_fin_rec   IN  klev_rec_type,
14244             --bug# 4631549
14245             p_call_mode      IN  Varchar2,
14246             x_clev_fin_rec   OUT NOCOPY clev_rec_type,
14247             x_klev_fin_rec   OUT NOCOPY klev_rec_type) IS
14248 
14249   l_return_status        VARCHAR2(1)  DEFAULT Okl_Api.G_RET_STS_SUCCESS;
14250   l_api_name             CONSTANT VARCHAR2(30) := 'RESOLVE_RESIDUL';
14251   l_api_version          CONSTANT NUMBER := 1.0;
14252 
14253 
14254   l_top_line_id     OKC_K_LINES_B.ID%TYPE;
14255   l_oec             OKL_K_LINES.OEC%TYPE;
14256   l_residual_value  OKL_K_LINES.RESIDUAL_VALUE%TYPE;
14257   lx_residual_value OKL_K_LINES.RESIDUAL_VALUE%TYPE;
14258 
14259 
14260   --cursor to get model line id
14261   CURSOR l_modelline_csr(p_cle_id IN NUMBER,
14262                          p_chr_id IN NUMBER) IS
14263   SELECT model_cleb.id
14264   FROM   OKC_K_LINES_B        model_cleb,
14265          OKC_LINE_STYLES_B    model_lseb
14266   WHERE  model_cleb.cle_id     = p_cle_id
14267   AND    model_cleb.dnz_chr_id = p_chr_id
14268   AND    model_cleb.lse_id     = model_lseb.id
14269   AND    model_lseb.lty_code   = 'ITEM';
14270 
14271   l_model_line_id   OKC_K_LINES_B.ID%TYPE;
14272 
14273   --Bug# 4631549
14274   cursor  l_exp_cost_csr (p_kle_id in number) is
14275   select  kle.expected_asset_cost
14276   from    okl_k_lines kle
14277   where   kle.id = p_kle_id;
14278 
14279   l_exp_cost_rec l_exp_cost_csr%ROWTYPE;
14280 
14281 Begin
14282 
14283       x_return_status := Okl_Api.G_RET_STS_SUCCESS;
14284       -- Call start_activity to create savepoint, check compatibility
14285       -- and initialize message list
14286       x_return_status := Okl_Api.START_ACTIVITY(
14287                         p_api_name      => l_api_name,
14288                         p_pkg_name      => g_pkg_name,
14289                         p_init_msg_list => p_init_msg_list,
14290                         l_api_version   => l_api_version,
14291                         p_api_version   => p_api_version,
14292                         p_api_type      => '_PVT',
14293                         x_return_status => x_return_status);
14294       -- Check if activity started successfully
14295       IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14296          RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14297       ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14298          RAISE Okc_Api.G_EXCEPTION_ERROR;
14299       END IF;
14300 
14301       --Bug# 4631549
14302       If nvl(p_call_mode,okl_api.g_miss_char) = 'RELEASE_CONTRACT' then
14303           open l_exp_cost_csr (p_kle_id => p_clev_fin_rec.id);
14304           fetch l_exp_cost_csr into l_exp_cost_rec;
14305           close l_exp_cost_csr;
14306       end if;
14307 
14308      Open l_modelline_csr(p_cle_id  => p_clev_fin_rec.id,
14309                          p_chr_id  => p_clev_fin_rec.dnz_chr_id);
14310      Fetch l_modelline_csr into l_model_line_id;
14311      If l_modelline_csr%NOTFOUND then
14312          --raise errorr: invliad line information
14313          OKL_API.set_message(p_app_name     => G_APP_NAME,
14314                              p_msg_name     => 'OKL_LLA_LINE_RECORD');
14315          RAISE Okc_Api.G_EXCEPTION_ERROR;
14316      End If;
14317      Close l_modelline_csr;
14318 
14319      IF (p_klev_fin_rec.residual_percentage IS NOT NULL OR
14320          p_klev_fin_rec.residual_percentage <> OKL_API.G_MISS_NUM) AND
14321          (p_klev_fin_rec.residual_value IS NOT NULL OR
14322           p_klev_fin_rec.residual_value <> OKL_API.G_MISS_NUM) THEN
14323 
14324       l_top_line_id    := p_clev_fin_rec.id;
14325       --Bug# 4631549
14326       If nvl(p_call_mode,okl_api.g_miss_char) = 'RELEASE_CONTRACT' then
14327           l_oec := l_exp_cost_rec.expected_asset_cost;
14328       else
14329           l_oec  := p_klev_fin_rec.oec;
14330       end if;
14331       l_residual_value := p_klev_fin_rec.residual_value;
14332 
14333       get_res_per_upd_fin_rec(p_api_version        => p_api_version,
14334                               p_init_msg_list      => p_init_msg_list,
14335                               x_return_status      => x_return_status,
14336                               x_msg_count          => x_msg_count,
14337                               x_msg_data           => x_msg_data,
14338                               P_new_yn             => 'N',
14339                               p_asset_number       => p_clev_fin_rec.name,
14340                               p_res_value          => l_residual_value,
14341                               p_oec                => l_oec,
14342                               p_top_line_id        => l_top_line_id,
14343                               p_dnz_chr_id         => p_clev_fin_rec.dnz_chr_id,
14344                               x_fin_clev_rec       => x_clev_fin_rec,
14345                               x_fin_klev_rec       => x_klev_fin_rec,
14346                               p_validate_fin_line  => OKL_API.G_TRUE); -- 4414408
14347 
14348       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14349         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14350       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14351         RAISE OKL_API.G_EXCEPTION_ERROR;
14352       END IF;
14353 
14354       res_value_calc_upd_fin_rec(p_api_version        => p_api_version,
14355                                  p_init_msg_list      => p_init_msg_list,
14356                                  x_return_status      => x_return_status,
14357                                  x_msg_count          => x_msg_count,
14358                                  x_msg_data           => x_msg_data,
14359                                  P_new_yn             => 'N',
14360                                  p_asset_number       => p_asset_number,
14361 				 -- 4414408
14362                                  p_top_line_id        => l_top_line_id,
14363                                  p_dnz_chr_id         => p_clev_fin_rec.dnz_chr_id,
14364                                  x_fin_clev_rec       => x_clev_fin_rec,
14365                                  x_fin_klev_rec       => x_klev_fin_rec,
14366                                  x_res_value          => lx_residual_value,
14367                                  p_validate_fin_line  => OKL_API.G_TRUE); -- 4414408
14368 
14369       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14370         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14371       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14372         RAISE OKL_API.G_EXCEPTION_ERROR;
14373       END IF;
14374 
14375     ELSIF (p_klev_fin_rec.residual_percentage IS NULL OR
14376        p_klev_fin_rec.residual_percentage = OKL_API.G_MISS_NUM) AND
14377        (p_klev_fin_rec.residual_value IS NOT NULL OR
14378        p_klev_fin_rec.residual_value <> OKL_API.G_MISS_NUM) THEN
14379 
14380       l_top_line_id    := p_clev_fin_rec.id;
14381       --Bug# 4631549
14382       If nvl(p_call_mode,okl_api.g_miss_char) = 'RELEASE_CONTRACT' then
14383           l_oec := l_exp_cost_rec.expected_asset_cost;
14384       else
14385           l_oec  := p_klev_fin_rec.oec;
14386       end if;
14387       l_residual_value := p_klev_fin_rec.residual_value;
14388 
14389 
14390       get_res_per_upd_fin_rec(p_api_version        => p_api_version,
14391                               p_init_msg_list      => p_init_msg_list,
14392                               x_return_status      => x_return_status,
14393                               x_msg_count          => x_msg_count,
14394                               x_msg_data           => x_msg_data,
14395                               P_new_yn             => 'N',
14396                               p_asset_number       => p_clev_fin_rec.name,
14397                               p_res_value          => l_residual_value,
14398                               p_oec                => l_oec,
14399                               p_top_line_id        => l_top_line_id,
14400                               p_dnz_chr_id         => p_clev_fin_rec.dnz_chr_id,
14401                               x_fin_clev_rec       => x_clev_fin_rec,
14402                               x_fin_klev_rec       => x_klev_fin_rec,
14403                               p_validate_fin_line  => OKL_API.G_TRUE);
14404 
14405       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14406         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14407       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14408         RAISE OKL_API.G_EXCEPTION_ERROR;
14409       END IF;
14410 
14411     ELSIF (p_klev_fin_rec.residual_percentage IS NOT NULL OR
14412        p_klev_fin_rec.residual_percentage <> OKL_API.G_MISS_NUM) AND
14413        (p_klev_fin_rec.residual_value IS NULL OR
14414        p_klev_fin_rec.residual_value = OKL_API.G_MISS_NUM) THEN
14415 
14416      --Bug# 4631549
14417      l_top_line_id    := p_clev_fin_rec.id;
14418 
14419       res_value_calc_upd_fin_rec(p_api_version   => p_api_version,
14420                                  p_init_msg_list => p_init_msg_list,
14421                                  x_return_status => x_return_status,
14422                                  x_msg_count     => x_msg_count,
14423                                  x_msg_data      => x_msg_data,
14424                                  P_new_yn        => 'N',
14425                                  p_asset_number  => p_asset_number,
14426 				 -- 4414408
14427                                  p_top_line_id   => p_clev_fin_rec.id,
14428                                  p_dnz_chr_id    => p_clev_fin_rec.dnz_chr_id,
14429                                  x_fin_clev_rec  => x_clev_fin_rec,
14430                                  x_fin_klev_rec  => x_klev_fin_rec,
14431                                  x_res_value     => lx_residual_value,
14432                                  p_validate_fin_line  => OKL_API.G_TRUE);
14433       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14434         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14435       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14436         RAISE OKL_API.G_EXCEPTION_ERROR;
14437       END IF;
14438     END IF;
14439 
14440    OKL_API.END_ACTIVITY (x_msg_count,
14441                           x_msg_data );
14442     EXCEPTION
14443     WHEN OKL_API.G_EXCEPTION_ERROR THEN
14444     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
14445                                l_api_name,
14446                                G_PKG_NAME,
14447                                'OKL_API.G_RET_STS_ERROR',
14448                                x_msg_count,
14449                                x_msg_data,
14450                                '_PVT');
14451     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
14452     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
14453                               l_api_name,
14454                               G_PKG_NAME,
14455                               'OKL_API.G_RET_STS_UNEXP_ERROR',
14456                               x_msg_count,
14457                               x_msg_data,
14458                               '_PVT');
14459     WHEN OTHERS THEN
14460     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
14461                               l_api_name,
14462                               G_PKG_NAME,
14463                               'OTHERS',
14464                               x_msg_count,
14465                               x_msg_data,
14466                               '_PVT');
14467   End Resolve_Residual_Value;
14468 
14469   --Bug# 3533936
14470   -----------------------------------------------------
14471   --Modify Release Asset line based on the user inputs
14472   --provided for modifiable columns during Release
14473   ----------------------------------------------------
14474    PROCEDURE Modify_Release_Asset_Line(
14475             p_api_version    IN  NUMBER,
14476             p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
14477             x_return_status  OUT NOCOPY VARCHAR2,
14478             x_msg_count      OUT NOCOPY NUMBER,
14479             x_msg_data       OUT NOCOPY VARCHAR2,
14480             p_clev_fin_rec   IN  clev_rec_type,
14481             p_klev_fin_rec   IN  klev_rec_type,
14482 	     --akrangan Bug# 5362977 start
14483             p_clev_model_rec IN  clev_rec_type,
14484 	     --akrangan Bug# 5362977 end
14485             p_cimv_model_rec IN  cimv_rec_type,
14486             p_clev_fa_rec    IN  clev_rec_type,
14487             p_cimv_fa_rec    IN  cimv_rec_type,
14488             p_talv_fa_rec    IN  talv_rec_type,
14489             p_itiv_ib_tbl    IN  itiv_tbl_type,
14490             p_cle_id         IN  NUMBER,
14491             --Bug# 4631549
14492             p_call_mode      IN  VARCHAR2,
14493             x_clev_fin_rec   OUT NOCOPY clev_rec_type,
14494             x_klev_fin_rec   OUT NOCOPY klev_rec_type,
14495             x_clev_model_rec OUT NOCOPY clev_rec_type,
14496             x_klev_model_rec OUT NOCOPY klev_rec_type,
14497             x_clev_fa_rec    OUT NOCOPY clev_rec_type,
14498             x_klev_fa_rec    OUT NOCOPY klev_rec_type,
14499             x_clev_ib_tbl    OUT NOCOPY clev_tbl_type,
14500             x_klev_ib_tbl    OUT NOCOPY klev_tbl_type
14501             ) IS
14502 
14503 
14504 
14505   l_return_status        VARCHAR2(1)  DEFAULT Okl_Api.G_RET_STS_SUCCESS;
14506   l_api_name             CONSTANT VARCHAR2(30) := 'MODIFY_RELEASE_ASSET';
14507   l_api_version          CONSTANT NUMBER := 1.0;
14508 
14509   --cursor to get fixed asset details
14510   cursor l_fa_csr (p_fin_cle_id in number,
14511                    p_chr_id     in number) is
14512   select txlb.id,
14513          txlb.depreciation_cost,
14514          txlb.current_units,
14515          txlb.percent_salvage_value,
14516          txlb.salvage_value,
14517          txlb.asset_number
14518   from   okl_trx_assets    trx,
14519          okl_txl_assets_b  txlb,
14520          okc_k_lines_b     cleb_fa,
14521          okc_line_styles_b lseb_fa
14522   where  trx.id             = txlb.tas_id
14523   and    trx.tsu_code       = 'ENTERED'
14524   --Bug# 3783518
14525   --and    trx.tas_type       = 'CRL'
14526   and    txlb.kle_id        = cleb_fa.id
14527   --Bug# 3783518
14528   --and    txlb.tal_type      = 'CRL'
14529   and    cleb_fa.cle_id     = p_fin_cle_id
14530   and    cleb_fa.dnz_chr_id = p_chr_id
14531   and    cleb_fa.lse_id     = lseb_fa.id
14532   and    lseb_fa.lty_code   = 'FIXED_ASSET';
14533 
14534 
14535   l_fa_rec l_fa_csr%ROWTYPE;
14536 
14537   --cursor to get install base details
14538   cursor l_ib_csr (p_fin_cle_id in number,
14539                    p_chr_id     in number) is
14540   select iti.id,
14541          iti.serial_number,
14542          iti.instance_number_ib,
14543          iti.object_id1_new,
14544          iti.object_id2_new
14545   from   okl_trx_assets    trx,
14546          okl_txl_itm_insts iti,
14547          okc_k_lines_b     cleb_ib,
14548          okc_line_styles_b lseb_ib,
14549          okc_k_lines_b     cleb_inst,
14550          okc_line_styles_b lseb_inst
14551   where  trx.id               = iti.tas_id
14552   and    trx.tsu_code         = 'ENTERED'
14553   --akrangan bug 5362977 start
14554    AND    trx.tas_type         IN  ('CRL','CFA','CRB')
14555   --akrangan bug 5362977 end
14556   and    iti.kle_id           = cleb_ib.id
14557   --akrangan bug 5362977 start
14558   AND    iti.tal_type         IN ('CRL','CFA','CRB')
14559   --akrangan bug 5362977 end
14560   and    cleb_ib.cle_id       = cleb_inst.id
14561   and    cleb_ib.dnz_chr_id   = cleb_inst.dnz_chr_id
14562   and    cleb_ib.lse_id       = lseb_ib.id
14563   and    lseb_ib.lty_code     = 'INST_ITEM'
14564   and    cleb_inst.cle_id     = p_fin_cle_id
14565   and    cleb_inst.dnz_chr_id = p_chr_id
14566   and    cleb_inst.lse_id     = lseb_inst.id
14567   and    lseb_inst.lty_code   = 'FREE_FORM2';
14568 
14569   l_ib_rec l_ib_csr%ROWTYPE;
14570 
14571   l_clev_fin_rec     clev_rec_type;
14572   l_klev_fin_rec     klev_rec_type;
14573   l_talv_fa_rec      talv_rec_type;
14574   l_itiv_ib_tbl      itiv_tbl_type;
14575 
14576   l_rel_ast_clev_fin_rec clev_rec_type;
14577   l_rel_ast_klev_fin_rec klev_rec_type;
14578   l_rel_ast_talv_rec     talv_rec_type;
14579   l_rel_ast_itiv_ib_tbl  itiv_tbl_type;
14580 
14581   i  Number;
14582   j  Number;
14583 
14584  --cursor to fetch all the lines
14585   CURSOR        l_lines_csr(p_from_cle_id in number) IS
14586     SELECT      level,
14587                 cleb.id,
14588                 cleb.chr_id,
14589                 cleb.cle_id,
14590                 cleb.dnz_chr_id,
14591                 cleb.lse_id
14592     FROM        okc_k_lines_b cleb
14593     CONNECT BY  PRIOR cleb.id = cle_id
14594     START WITH  cleb.id = p_from_cle_id;
14595 
14596   l_lines_rec l_lines_csr%ROWTYPE;
14597 
14598   --cursor to get lty_code
14599   CURSOR l_lty_csr (p_lse_id in number) is
14600   SELECT lty_code
14601   from   okc_line_styles_b
14602   where  id = p_lse_id;
14603 
14604   l_lty_code    OKC_LINE_STYLES_B.lty_code%TYPE;
14605 
14606   lx_clev_rec   clev_rec_type;
14607   lx_klev_rec   klev_rec_type;
14608 
14609   --BUG# NBV:
14610   --cursor to get model and fixed asset lines
14611   cursor l_cleb_csr (p_cle_id in number,
14612                      p_chr_id in number,
14613                      p_lty_code in varchar2) is
14614   select cleb.id,
14615          cleb.price_unit
14616   from   okc_k_lines_b cleb,
14617          okc_line_styles_b lseb
14618   where  cleb.cle_id      = p_cle_id
14619   and    cleb.dnz_chr_id  = p_chr_id
14620   and    cleb.lse_id      = lseb.id
14621   and    lseb.lty_code    = p_lty_code;
14622 
14623   l_cleb_rec  l_cleb_csr%ROWTYPE;
14624   rec_count   NUMBER;
14625 
14626   l_clev_price_tbl   clev_tbl_type;
14627   lx_clev_price_tbl  clev_tbl_type;
14628   l_klev_price_tbl   klev_tbl_type;
14629   lx_klev_price_tbl  klev_tbl_type;
14630  --akrangan Bug# 5362977 start
14631      l_clev_fa_rec     clev_rec_type;
14632      l_klev_fa_rec     klev_rec_type;
14633      lx_clev_fa_rec    clev_rec_type;
14634      lx_klev_fa_rec    klev_rec_type;
14635      l_cimv_model_rec  cimv_rec_type;
14636      x_cimv_model_rec  cimv_rec_type;
14637 
14638      --cursor to check if the contract is undergoing on-line rebook
14639      CURSOR l_chk_rbk_csr(p_chr_id IN NUMBER) is
14640      SELECT '!'
14641      FROM   okc_k_headers_b chr,
14642             okl_trx_contracts ktrx
14643      WHERE  ktrx.khr_id_new = chr.id
14644      AND    ktrx.tsu_code = 'ENTERED'
14645      AND    ktrx.rbr_code is NOT NULL
14646      AND    ktrx.tcn_type = 'TRBK'
14647      --rkuttiya added for 12.1.1 Multi GAAP
14648      AND   representation_type = 'PRIMARY'
14649      --
14650      AND    chr.id = p_chr_id
14651      AND    chr.orig_system_source_code = 'OKL_REBOOK';
14652 
14653      l_rbk_khr      VARCHAR2(1);
14654      --akrangan Bug# 5362977 end
14655 
14656   BEGIN
14657 
14658       x_return_status := Okl_Api.G_RET_STS_SUCCESS;
14659       -- Call start_activity to create savepoint, check compatibility
14660       -- and initialize message list
14661       x_return_status := Okl_Api.START_ACTIVITY(
14662                         p_api_name      => l_api_name,
14663                         p_pkg_name      => g_pkg_name,
14664                         p_init_msg_list => p_init_msg_list,
14665                         l_api_version   => l_api_version,
14666                         p_api_version   => p_api_version,
14667                         p_api_type      => '_PVT',
14668                         x_return_status => x_return_status);
14669       -- Check if activity started successfully
14670       IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14671          RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14672       ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14673          RAISE Okc_Api.G_EXCEPTION_ERROR;
14674       END IF;
14675          -- akrangan Bug# 5362977 start
14676          l_rbk_khr := '?';
14677          OPEN l_chk_rbk_csr (p_chr_id => p_clev_fin_rec.dnz_chr_id);
14678          FETCH l_chk_rbk_csr INTO l_rbk_khr;
14679          CLOSE l_chk_rbk_csr;
14680          -- akrangan Bug# 5176649 end
14681 
14682 
14683       --1. update modifiable parameters on financial asset line
14684 
14685       l_clev_fin_rec.id                    := p_cle_id;
14686       l_klev_fin_rec.id                    := p_cle_id;
14687       l_klev_fin_rec.PRESCRIBED_ASSET_YN   := p_klev_fin_rec.PRESCRIBED_ASSET_YN;
14688 
14689       l_klev_fin_rec.RESIDUAL_GRNTY_AMOUNT := p_klev_fin_rec.RESIDUAL_GRNTY_AMOUNT;
14690 
14691       l_klev_fin_rec.RESIDUAL_CODE         := p_klev_fin_rec.RESIDUAL_CODE;
14692 
14693       If nvl(p_klev_fin_rec.RESIDUAL_VALUE,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM and
14694          nvl(p_klev_fin_rec.RESIDUAL_PERCENTAGE,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM  then
14695           l_klev_fin_rec.RESIDUAL_VALUE        := p_klev_fin_rec.RESIDUAL_VALUE;
14696           l_klev_fin_rec.RESIDUAL_PERCENTAGE   := p_klev_fin_rec.RESIDUAL_PERCENTAGE;
14697       End If;
14698 
14699       If nvl(p_klev_fin_rec.RESIDUAL_PERCENTAGE,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM and
14700          nvl(p_klev_fin_rec.RESIDUAL_VALUE,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM then
14701           l_klev_fin_rec.RESIDUAL_PERCENTAGE   := p_klev_fin_rec.RESIDUAL_PERCENTAGE;
14702           l_klev_fin_rec.RESIDUAL_VALUE        := NULL;
14703       End If;
14704 
14705       If nvl(p_klev_fin_rec.RESIDUAL_PERCENTAGE,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM and
14706          nvl(p_klev_fin_rec.RESIDUAL_VALUE,OKL_API.G_MISS_NUM) <>  OKL_API.G_MISS_NUM then
14707           l_klev_fin_rec.RESIDUAL_VALUE        := p_klev_fin_rec.RESIDUAL_VALUE;
14708           l_klev_fin_rec.RESIDUAL_PERCENTAGE   := NULL;
14709       End If;
14710 
14711       --BUG# : NBV - update price unit on fixed asset and model lines
14712       rec_count := 0;
14713       open l_cleb_csr(p_cle_id   => p_cle_id,
14714                       p_chr_id   => p_clev_fin_rec.dnz_chr_id,
14715                       p_lty_code => 'FIXED_ASSET');
14716       fetch l_cleb_csr into l_cleb_rec;
14717       If l_cleb_csr%NOTFOUND then
14718           Null;
14719       Else
14720           rec_count                              := rec_count+1;
14721           l_clev_price_tbl(rec_count).id         := l_cleb_rec.id;
14722           l_klev_price_tbl(rec_count).id         := l_cleb_rec.id;
14723           l_clev_price_tbl(rec_count).price_unit := p_talv_fa_rec.original_cost;
14724       End If;
14725       close l_cleb_csr;
14726 
14727       open l_cleb_csr(p_cle_id   => p_cle_id,
14728                       p_chr_id   => p_clev_fin_rec.dnz_chr_id,
14729                       p_lty_code => 'ITEM');
14730       fetch l_cleb_csr into l_cleb_rec;
14731       If l_cleb_csr%NOTFOUND then
14732           Null;
14733       Else
14734           rec_count                              := rec_count+1;
14735           l_clev_price_tbl(rec_count).id         := l_cleb_rec.id;
14736           l_klev_price_tbl(rec_count).id         := l_cleb_rec.id;
14737           l_clev_price_tbl(rec_count).price_unit := p_talv_fa_rec.original_cost;
14738       End If;
14739       close l_cleb_csr;
14740 
14741       If l_clev_price_tbl.COUNT > 0 then
14742 
14743           OKL_CONTRACT_PUB.update_contract_line(
14744                   p_api_version    => p_api_version,
14745                   p_init_msg_list  => p_init_msg_list,
14746                   x_return_status  => x_return_status,
14747                   x_msg_count      => x_msg_count,
14748                   x_msg_data       => x_msg_data,
14749                   p_clev_tbl       => l_clev_price_tbl,
14750                   p_klev_tbl       => l_klev_price_tbl,
14751                   x_clev_tbl       => lx_clev_price_tbl,
14752                   x_klev_tbl       => lx_klev_price_tbl);
14753 
14754           IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14755               RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14756           ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14757               RAISE Okc_Api.G_EXCEPTION_ERROR;
14758           END IF;
14759 
14760           --Bug# 4631549
14761           If nvl(p_call_mode,okl_api.g_miss_char) = 'RELEASE_ASSET' then
14762               --Calculate oec
14763               OKL_EXECUTE_FORMULA_PUB.EXECUTE(p_api_version   => p_api_version,
14764                                               p_init_msg_list => p_init_msg_list,
14765                                               x_return_status => x_return_status,
14766                                               x_msg_count     => x_msg_count,
14767                                               x_msg_data      => x_msg_data,
14768                                               p_formula_name  => G_FORMULA_OEC,
14769                                               p_contract_id   => p_clev_fin_rec.dnz_chr_id,
14770                                               p_line_id       => p_cle_id,
14771                                               x_value         => l_klev_fin_rec.oec);
14772               IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14773                   OKL_API.set_message(p_app_name     => G_APP_NAME,
14774                                       p_msg_name     => G_CALC_AMOUNT,
14775                                       p_token1       => G_AMT_TOKEN,
14776                                       p_token1_value => 'OEC');
14777                   RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14778               ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14779                   OKL_API.set_message(p_app_name     => G_APP_NAME,
14780                                       p_msg_name     => G_CALC_AMOUNT,
14781                                       p_token1       => G_AMT_TOKEN,
14782                                       p_token1_value => 'OEC');
14783                   RAISE OKL_API.G_EXCEPTION_ERROR;
14784                END IF;
14785           End If;
14786       END IF;
14787       --END BUG: NBV
14788 
14789 
14790 
14791       --set adjustments to null
14792       l_klev_fin_rec.CAPITAL_REDUCTION_PERCENT := null;
14793       l_klev_fin_rec.CAPITAL_REDUCTION         := null;
14794       l_klev_fin_rec.TRADEIN_AMOUNT            := null;
14795 
14796       --Bug#5601721 -- start
14797       l_klev_fin_rec.DOWN_PAYMENT_RECEIVER_CODE := null;
14798       l_klev_fin_rec.CAPITALIZE_DOWN_PAYMENT_YN:= null;
14799       l_klev_fin_rec.CAPITALIZED_INTEREST  := null;
14800       update_financial_asset_line(
14801             p_api_version    => p_api_version,
14802             p_init_msg_list  => p_init_msg_list,
14803             x_return_status  => x_return_status,
14804             x_msg_count      => x_msg_count,
14805             x_msg_data       => x_msg_data,
14806             p_clev_rec       => l_clev_fin_rec,
14807             p_klev_rec       => l_klev_fin_rec,
14808             x_clev_rec       => l_rel_ast_clev_fin_rec,
14809             x_klev_rec       => l_rel_ast_klev_fin_rec);
14810 
14811       IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14812          RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14813       ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14814          RAISE Okc_Api.G_EXCEPTION_ERROR;
14815       END IF;
14816       --Bug#5601721 -- end
14817 
14818       --Bug# 4631549
14819       If nvl(p_call_mode,okl_api.g_miss_char) = 'RELEASE_ASSET' then
14820           --calculate capital_amount
14821           OKL_EXECUTE_FORMULA_PUB.EXECUTE(p_api_version   => p_api_version,
14822                                       p_init_msg_list => p_init_msg_list,
14823                                       x_return_status => x_return_status,
14824                                       x_msg_count     => x_msg_count,
14825                                       x_msg_data      => x_msg_data,
14826                                       p_formula_name  => G_FORMULA_CAP,
14827                                       p_contract_id   => p_clev_fin_rec.dnz_chr_id,
14828                                       p_line_id       => p_cle_id,
14829                                       x_value         => l_klev_fin_rec.capital_amount);
14830           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14831               OKL_API.set_message(p_app_name     => G_APP_NAME,
14832                             p_msg_name     => G_CALC_AMOUNT,
14833                             p_token1       => G_AMT_TOKEN,
14834                             p_token1_value => 'Capital Amount');
14835               RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14836           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14837               OKL_API.set_message(p_app_name     => G_APP_NAME,
14838                             p_msg_name     => G_CALC_AMOUNT,
14839                             p_token1       => G_AMT_TOKEN,
14840                             p_token1_value => 'Capital Amount');
14841               RAISE OKL_API.G_EXCEPTION_ERROR;
14842           END IF;
14843        End If;
14844 
14845   -- akrangan bug 5362977 start
14846          l_clev_fin_rec.item_description := p_talv_fa_rec.description;
14847   -- akrangan bug 5362977 end
14848       update_financial_asset_line(
14849             p_api_version    => p_api_version,
14850             p_init_msg_list  => p_init_msg_list,
14851             x_return_status  => x_return_status,
14852             x_msg_count      => x_msg_count,
14853             x_msg_data       => x_msg_data,
14854             p_clev_rec       => l_clev_fin_rec,
14855             p_klev_rec       => l_klev_fin_rec,
14856             x_clev_rec       => l_rel_ast_clev_fin_rec,
14857             x_klev_rec       => l_rel_ast_klev_fin_rec);
14858 
14859       IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14860          RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14861       ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14862          RAISE Okc_Api.G_EXCEPTION_ERROR;
14863       END IF;
14864 
14865 
14866         -- akrangan Bug# 5362977 start
14867          IF l_rbk_khr = '!' THEN
14868            l_clev_fa_rec.id := p_clev_fa_rec.id;
14869            l_klev_fa_rec.id := p_clev_fa_rec.id;
14870 
14871            l_clev_fa_rec.item_description := p_talv_fa_rec.description;
14872 
14873            l_klev_fa_rec.Year_Built       := p_talv_fa_rec.year_manufactured;
14874            OKL_CONTRACT_PUB.update_contract_line(p_api_version   => p_api_version,
14875                                                  p_init_msg_list => p_init_msg_list,
14876                                                  x_return_status => x_return_status,
14877                                                  x_msg_count     => x_msg_count,
14878                                                  x_msg_data      => x_msg_data,
14879                                                  p_clev_rec      => l_clev_fa_rec,
14880                                                  p_klev_rec      => l_klev_fa_rec,
14881                                                  x_clev_rec      => lx_clev_fa_rec,
14882                                                  x_klev_rec      => lx_klev_fa_rec);
14883 
14884            IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14885               RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14886            ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14887              RAISE Okc_Api.G_EXCEPTION_ERROR;
14888            END IF;
14889 
14890            x_return_status := get_rec_cimv(p_clev_model_rec.id,
14891                                            p_clev_fin_rec.dnz_chr_id,
14892                                            l_cimv_model_rec);
14893            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14894             OKL_API.set_message(p_app_name     => G_APP_NAME,
14895                               p_msg_name     => G_FETCHING_INFO,
14896                               p_token1       => G_REC_NAME_TOKEN,
14897                               p_token1_value => 'OKC_K_ITEMS_V Record');
14898               RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14899            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14900             OKL_API.set_message(p_app_name     => G_APP_NAME,
14901                               p_msg_name     => G_FETCHING_INFO,
14902                               p_token1       => G_REC_NAME_TOKEN,
14903                               p_token1_value => 'OKC_K_ITEMS_V Record');
14904               RAISE OKL_API.G_EXCEPTION_ERROR;
14905            END IF;
14906 
14907            l_cimv_model_rec.object1_id1 := p_cimv_model_rec.object1_id1;
14908            l_cimv_model_rec.object1_id2 := p_cimv_model_rec.object1_id2;
14909 
14910            OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version   => p_api_version,
14911                                                      p_init_msg_list => p_init_msg_list,
14912                                                      x_return_status => x_return_status,
14913                                                      x_msg_count     => x_msg_count,
14914                                                      x_msg_data      => x_msg_data,
14915                                                      p_cimv_rec      => l_cimv_model_rec,
14916                                                      x_cimv_rec      => x_cimv_model_rec);
14917 
14918            IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14919              RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14920            ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14921              RAISE Okc_Api.G_EXCEPTION_ERROR;
14922            END IF;
14923 
14924          END IF;
14925          --akrangan Bug# 5362977 end
14926 
14927 
14928       --2. update modifiable parameters on FA transaction line
14929       --get fixed asset details
14930       open l_fa_csr(p_fin_cle_id => p_cle_id,
14931                     p_chr_id     => p_clev_fin_rec.dnz_chr_id);
14932       fetch l_fa_csr into l_fa_rec;
14933       If l_fa_csr%NOTFOUND then
14934           --raise error:invalid line information
14935           OKL_API.set_message(p_app_name     => G_APP_NAME,
14936                               p_msg_name     => 'OKL_LLA_LINE_RECORD');
14937           RAISE Okc_Api.G_EXCEPTION_ERROR;
14938       End If;
14939       close l_fa_csr;
14940 
14941       l_talv_fa_rec.id                    := l_fa_rec.id;
14942       l_talv_fa_rec.DEPRN_METHOD          := p_talv_fa_rec.DEPRN_METHOD;
14943       l_talv_fa_rec.LIFE_IN_MONTHS        := p_talv_fa_rec.LIFE_IN_MONTHS;
14944       l_talv_fa_rec.DEPRN_RATE            := p_talv_fa_rec.DEPRN_RATE;
14945       l_talv_fa_rec.FA_LOCATION_ID        := p_talv_fa_rec.FA_LOCATION_ID;
14946       l_talv_fa_rec.SALVAGE_VALUE         := p_talv_fa_rec.SALVAGE_VALUE;
14947       l_talv_fa_rec.PERCENT_SALVAGE_VALUE := p_talv_fa_rec.PERCENT_SALVAGE_VALUE;
14948              -- akrangan Bug# 5362977 start
14949          IF l_rbk_khr = '!' THEN
14950            l_talv_fa_rec.year_manufactured     := p_talv_fa_rec.year_manufactured;
14951            l_talv_fa_rec.manufacturer_name     := p_talv_fa_rec.manufacturer_name;
14952            l_talv_fa_rec.model_number          := p_talv_fa_rec.model_number;
14953            l_talv_fa_rec.description           := p_talv_fa_rec.description;
14954          END IF;
14955              -- akrangan Bug# 5362977 end
14956       Update_asset_lines(
14957             p_api_version    =>  p_api_version,
14958             p_init_msg_list  =>  p_init_msg_list,
14959             x_return_status  =>  x_return_status,
14960             x_msg_count      =>  x_msg_count,
14961             x_msg_data       =>  x_msg_data,
14962             p_talv_rec       =>  l_talv_fa_rec,
14963             x_talv_rec       =>  l_rel_ast_talv_rec);
14964 
14965       IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14966          RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14967       ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14968          RAISE Okc_Api.G_EXCEPTION_ERROR;
14969       END IF;
14970 
14971       --3. update modifiable parameters on IB transaction line
14972       i := 0;
14973       open l_ib_csr(p_fin_cle_id => p_cle_id,
14974                     p_chr_id     => p_clev_fin_rec.dnz_chr_id);
14975       Loop
14976           fetch l_ib_csr into l_ib_rec;
14977           Exit when l_ib_csr%NOTFOUND;
14978           i := i+1;
14979           l_itiv_ib_tbl(i).id               := l_ib_rec.id;
14980           l_itiv_ib_tbl(i).SERIAL_NUMBER    := l_ib_rec.SERIAL_NUMBER;
14981           l_itiv_ib_tbl(i).OBJECT_ID1_NEW   := l_ib_rec.OBJECT_ID1_NEW;
14982           l_itiv_ib_tbl(i).OBJECT_ID2_NEW   := l_ib_rec.OBJECT_ID2_NEW;
14983       End Loop;
14984       Close l_ib_csr;
14985 
14986       If l_itiv_ib_tbl.COUNT > 0  and p_itiv_ib_tbl.COUNT > 0 Then
14987           For i in l_itiv_ib_tbl.FIRST..l_itiv_ib_tbl.LAST
14988           Loop
14989               --currently only one install site is possible for one serial number
14990               --therefor the if clause commented below is not required
14991               For j in p_itiv_ib_tbl.FIRST..p_itiv_ib_tbl.LAST
14992               Loop
14993                   --If (l_itiv_ib_tbl(i).SERIAL_NUMBER = p_itiv_ib_tbl(j).SERIAL_NUMBER) OR
14994                      --(nvl(l_itiv_ib_tbl(i).SERIAL_NUMBER,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR
14995                       --and nvl(p_itiv_ib_tbl(j).SERIAL_NUMBER,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR)  then
14996                      l_itiv_ib_tbl(i).OBJECT_ID1_OLD := l_itiv_ib_tbl(i).OBJECT_ID1_NEW;
14997                      l_itiv_ib_tbl(i).OBJECT_ID2_OLD := l_itiv_ib_tbl(i).OBJECT_ID2_NEW;
14998                      l_itiv_ib_tbl(i).OBJECT_ID1_NEW := p_itiv_ib_tbl(j).OBJECT_ID1_NEW;
14999                      l_itiv_ib_tbl(i).OBJECT_ID2_NEW := p_itiv_ib_tbl(j).OBJECT_ID2_NEW;
15000 		       --akrangan Bug# 5362977 start
15001                         IF l_rbk_khr = '!' THEN
15002                           l_itiv_ib_tbl(i).INVENTORY_ITEM_ID := p_cimv_model_rec.object1_id1;
15003                           l_itiv_ib_tbl(i).INVENTORY_ORG_ID  := p_cimv_model_rec.object1_id2;
15004                         END IF;
15005                         --akrangan Bug# 5362977 end
15006 
15007                   --End If;
15008               End Loop;
15009           End Loop;
15010           OKL_TXL_ITM_INSTS_PUB.update_txl_itm_insts(p_api_version    => p_api_version,
15011                                                p_init_msg_list  => p_init_msg_list,
15012                                                x_return_status  => x_return_status,
15013                                                x_msg_count      => x_msg_count,
15014                                                x_msg_data       => x_msg_data,
15015                                                p_iipv_tbl       => l_itiv_ib_tbl,
15016                                                x_iipv_tbl       => l_rel_ast_itiv_ib_tbl);
15017 
15018           IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
15019               RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
15020           ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
15021               RAISE Okc_Api.G_EXCEPTION_ERROR;
15022           END IF;
15023       End If;
15024 
15025       --------------------------------------------------
15026       --update residual value as per standard
15027       -------------------------------------------------
15028       Resolve_Residual_Value(
15029             p_api_version    => p_api_version,
15030             p_init_msg_list  => p_init_msg_list,
15031             x_return_status  => x_return_status,
15032             x_msg_count      => x_msg_count,
15033             x_msg_data       => x_msg_data,
15034             p_asset_number   => l_fa_rec.asset_number,
15035             p_clev_fin_rec   => l_rel_ast_clev_fin_rec,
15036             p_klev_fin_rec   => l_rel_ast_klev_fin_rec,
15037             --Bug# 4631549
15038             p_call_mode      => p_call_mode,
15039             x_clev_fin_rec   => x_clev_fin_rec,
15040             x_klev_fin_rec   => x_klev_fin_rec);
15041 
15042       IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
15043           RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
15044       ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
15045           RAISE Okc_Api.G_EXCEPTION_ERROR;
15046       END IF;
15047 
15048       -------------------------------------------
15049       --Get all the lines
15050       -------------------------------------------
15051       i := 1;
15052       Open l_lines_csr (p_from_cle_id => x_clev_fin_rec.id);
15053       loop
15054           Fetch l_lines_csr into l_lines_rec;
15055           Exit when l_lines_csr%NOTFOUND;
15056           x_return_status := get_rec_clev(l_lines_rec.id,
15057                                           lx_clev_rec);
15058           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15059               OKL_API.set_message(p_app_name     => G_APP_NAME,
15060                                   p_msg_name     => G_FETCHING_INFO,
15061                                   p_token1       => G_REC_NAME_TOKEN,
15062                                   p_token1_value => 'OKC_K_LINES_V Record');
15063               RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
15064           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15065               OKL_API.set_message(p_app_name     => G_APP_NAME,
15066                                   p_msg_name     => G_FETCHING_INFO,
15067                                   p_token1       => G_REC_NAME_TOKEN,
15068                                   p_token1_value => 'OKC_K_LINES_V Record');
15069               RAISE Okc_Api.G_EXCEPTION_ERROR;
15070           END IF;
15071           x_return_status := get_rec_klev(l_lines_rec.id,
15072                                           lx_klev_rec);
15073           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15074               OKL_API.set_message(p_app_name     => G_APP_NAME,
15075                                   p_msg_name     => G_FETCHING_INFO,
15076                                   p_token1       => G_REC_NAME_TOKEN,
15077                                   p_token1_value => 'OKL_K_LINES_V Record');
15078               RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
15079           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15080               OKL_API.set_message(p_app_name     => G_APP_NAME,
15081                                   p_msg_name     => G_FETCHING_INFO,
15082                                   p_token1       => G_REC_NAME_TOKEN,
15083                                   p_token1_value => 'OKL_K_LINES_V Record');
15084               RAISE Okc_Api.G_EXCEPTION_ERROR;
15085           END IF;
15086 
15087           Open l_lty_csr(p_lse_id => l_lines_rec.lse_id);
15088           Fetch l_lty_csr into l_lty_code;
15089           Close l_lty_csr;
15090 
15091           If l_lty_code = 'ITEM' then
15092               x_clev_model_rec := lx_clev_rec;
15093               x_klev_model_rec := lx_klev_rec;
15094           ElsIf l_lty_code = 'FIXED_ASSET' then
15095               x_clev_fa_rec  := lx_clev_rec;
15096               x_klev_fa_rec  := lx_klev_rec;
15097           ElsIf l_lty_code = 'INST_ITEM' then
15098               x_clev_ib_tbl(i) := lx_clev_rec;
15099               x_klev_ib_tbl(i) := lx_klev_rec;
15100               i := i+1;
15101           End If;
15102       End Loop;
15103       Close l_lines_csr;
15104 
15105 
15106 
15107     OKL_API.END_ACTIVITY (x_msg_count,
15108                           x_msg_data );
15109     EXCEPTION
15110     WHEN OKL_API.G_EXCEPTION_ERROR THEN
15111     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
15112                                l_api_name,
15113                                G_PKG_NAME,
15114                                'OKL_API.G_RET_STS_ERROR',
15115                                x_msg_count,
15116                                x_msg_data,
15117                                '_PVT');
15118     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
15119     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
15120                               l_api_name,
15121                               G_PKG_NAME,
15122                               'OKL_API.G_RET_STS_UNEXP_ERROR',
15123                               x_msg_count,
15124                               x_msg_data,
15125                               '_PVT');
15126     WHEN OTHERS THEN
15127     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
15128                               l_api_name,
15129                               G_PKG_NAME,
15130                               'OTHERS',
15131                               x_msg_count,
15132                               x_msg_data,
15133                               '_PVT');
15134   END Modify_Release_asset_Line;
15135 
15136 -----------------------------------------------------------------------------------------------
15137 --------------------- Main Process for All Lines Line Creation---------------------------------
15138 -----------------------------------------------------------------------------------------------
15139   PROCEDURE Create_all_line(
15140             p_api_version    IN  NUMBER,
15141             p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
15142             x_return_status  OUT NOCOPY VARCHAR2,
15143             x_msg_count      OUT NOCOPY NUMBER,
15144             x_msg_data       OUT NOCOPY VARCHAR2,
15145             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
15146             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
15147             p_clev_fin_rec   IN  clev_rec_type,
15148             p_klev_fin_rec   IN  klev_rec_type,
15149             p_cimv_model_rec IN  cimv_rec_type,
15150             p_clev_fa_rec    IN  clev_rec_type,
15151             p_cimv_fa_rec    IN  cimv_rec_type,
15152             p_talv_fa_rec    IN  talv_rec_type,
15153             p_itiv_ib_tbl    IN  itiv_tbl_type,
15154             x_clev_fin_rec   OUT NOCOPY clev_rec_type,
15155             x_clev_model_rec OUT NOCOPY clev_rec_type,
15156             x_clev_fa_rec    OUT NOCOPY clev_rec_type,
15157             x_clev_ib_rec    OUT NOCOPY clev_rec_type) IS
15158     l_api_name          CONSTANT VARCHAR2(30) := 'CREATE_ALL_LINES';
15159     l_asset_number               OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE;
15160     m_clev_fin_rec               clev_rec_type;
15161     m_klev_fin_rec               klev_rec_type;
15162     l_clev_fin_rec               clev_rec_type;
15163     l_klev_fin_rec               klev_rec_type;
15164     l_clev_fin_rec_out           clev_rec_type;
15165     l_klev_fin_rec_out           klev_rec_type;
15166     l_clev_model_rec             clev_rec_type;
15167     l_klev_model_rec             klev_rec_type;
15168     l_cimv_model_rec             cimv_rec_type;
15169     l_clev_model_rec_out         clev_rec_type;
15170     l_klev_model_rec_out         klev_rec_type;
15171     l_cimv_model_rec_out         cimv_rec_type;
15172     l_clev_fa_rec                clev_rec_type;
15173     l_klev_fa_rec                klev_rec_type;
15174     l_cimv_fa_rec                cimv_rec_type;
15175     l_trxv_fa_rec                trxv_rec_type;
15176     l_talv_fa_rec                talv_rec_type;
15177     l_clev_fa_rec_out            clev_rec_type;
15178     l_klev_fa_rec_out            klev_rec_type;
15179     l_cimv_fa_rec_out            cimv_rec_type;
15180     l_trxv_fa_rec_out            trxv_rec_type;
15181     l_talv_fa_rec_out            talv_rec_type;
15182     l_clev_inst_rec              clev_rec_type;
15183     l_klev_inst_rec              klev_rec_type;
15184     l_itiv_inst_tbl              itiv_tbl_type;
15185     l_clev_inst_rec_out          clev_rec_type;
15186     l_klev_inst_rec_out          klev_rec_type;
15187     l_itiv_inst_tbl_out          itiv_tbl_type;
15188     l_clev_ib_rec                clev_rec_type;
15189     l_klev_ib_rec                klev_rec_type;
15190     l_cimv_ib_rec                cimv_rec_type;
15191     l_trxv_ib_rec                trxv_rec_type;
15192     l_itiv_ib_tbl                itiv_tbl_type;
15193     r_itiv_ib_tbl                itiv_tbl_type;
15194     l_clev_ib_rec_out            clev_rec_type;
15195     l_klev_ib_rec_out            klev_rec_type;
15196     l_cimv_ib_rec_out            cimv_rec_type;
15197     l_trxv_ib_rec_out            trxv_rec_type;
15198     l_itiv_ib_tbl_out            itiv_tbl_type;
15199     ln_klev_fin_oec              OKL_K_LINES_V.OEC%TYPE := 0;
15200     ln_klev_fin_res              OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
15201     ln_klev_fin_cap              OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
15202     ln_clev_model_price_unit     OKC_K_LINES_V.PRICE_UNIT%TYPE := 0;
15203     ln_cimv_model_no_items       OKC_K_ITEMS_V.NUMBER_OF_ITEMS%TYPE := 0;
15204     lv_object_id1_new            OKL_TXL_ITM_INSTS_V.OBJECT_ID1_NEW%TYPE;
15205     lv_scs_code                  OKC_K_HEADERS_V.SCS_CODE%TYPE := null;
15206     ln_dummy                     NUMBER := 0;
15207     ln_dummy1                    NUMBER := 0;
15208     i                            NUMBER := 0;
15209     j                            NUMBER := 0;
15210     k                            NUMBER := 0;
15211     m                            NUMBER := 0;
15212     n                            NUMBER := 0;
15213     p                            NUMBER := 0;
15214 
15215     -- added by rravikir (Estimated property tax)
15216     ln_chr_id                    OKC_K_HEADERS_B.ID%TYPE;
15217     ln_cle_id                    OKL_K_LINES_V.ID%TYPE;
15218     -- end
15219     TYPE instance_id_tbl IS TABLE OF NUMBER
15220         INDEX BY BINARY_INTEGER;
15221     lt_instance_id_tbl           instance_id_tbl;
15222     CURSOR c_get_scs_code(p_dnz_chr_id OKC_K_HEADERS_B.ID%TYPE)
15223     IS
15224     SELECT scs_code,
15225            --Bug# 4419339
15226            orig_system_source_code
15227     FROM OKC_K_HEADERS_B
15228     WHERE id = p_dnz_chr_id;
15229 
15230 
15231     --Bug# 4419339
15232     l_orig_system_source_code okc_k_headers_b.orig_system_source_code%TYPE;
15233 
15234     CURSOR c_ib_sno_asset(p_asset_number OKL_TXL_ASSETS_B.ASSET_NUMBER%TYPE)
15235     IS
15236     SELECT CII.SERIAL_NUMBER IB_SERIAL_NUMBER,
15237            CII.INSTANCE_ID
15238     FROM
15239     OKC_K_HEADERS_V OKHV, OKC_K_LINES_V KLE_FA, OKC_LINE_STYLES_B LSE_FA, OKC_K_LINES_B KLE_IL,
15240     OKC_LINE_STYLES_B LSE_IL, OKC_K_LINES_B KLE_IB, OKC_LINE_STYLES_B LSE_IB, OKC_K_ITEMS ITE,
15241     CSI_ITEM_INSTANCES CII
15242     WHERE
15243     kle_fa.chr_id = okhv.id AND lse_fa.id = kle_fa.lse_id AND lse_fa.lty_code = 'FREE_FORM1'
15244     AND kle_il.cle_id = kle_fa.id AND lse_il.id = kle_il.lse_id AND lse_il.lty_code = 'FREE_FORM2'
15245     AND kle_ib.cle_id = kle_il.id AND lse_ib.id = kle_ib.lse_id AND lse_ib.lty_code = 'INST_ITEM'
15246     AND ite.cle_id = kle_ib.id AND ite.jtot_object1_code = 'OKX_IB_ITEM'
15247     AND cii.instance_id = ite.object1_id1 AND kle_fa.name = p_asset_number;
15248 
15249     l_top_line_id NUMBER;
15250     l_oec NUMBER;
15251     l_residual_value NUMBER;
15252 
15253     --Bug# 3533936:
15254     l_rel_ast_fin_cle_id   NUMBER;
15255 
15256     --cursor to check if contract has re-lease assets
15257     --Bug# 15992711 : The re-leased flag is no longer checked at contract header
15258     --                but needs to be validated at contract line
15259     --                Cursor modified to include validation at asset line level
15260     /*CURSOR l_chk_rel_ast_csr (p_chr_id IN Number) IS
15261     SELECT 'Y'
15262     FROM   okc_k_headers_b CHR
15263     WHERE   nvl(chr.orig_system_source_code,'XXXX') <> 'OKL_RELEASE'
15264     and     chr.ID = p_chr_id
15265     AND     exists (SELECT '1'
15266                   FROM   OKC_RULES_B rul
15267                   WHERE  rul.dnz_chr_id = chr.id
15268                   AND    rul.rule_information_category = 'LARLES'
15269                   AND    nvl(rule_information1,'N') = 'Y');*/
15270 
15271     CURSOR l_chk_rel_ast_csr (p_chr_id IN Number
15272                              ,p_asset_number IN OKX_ASSETS_V.ASSET_NUMBER%TYPE) IS
15273     SELECT 'Y'
15274     FROM   okc_k_headers_b CHR
15275     WHERE  nvl(chr.orig_system_source_code,'XXXX') <> 'OKL_RELEASE'
15276     and    chr.ID = p_chr_id
15277     AND    EXISTS (
15278 	SELECT '1'
15279 	FROM okl_asset_returns_all_b KAR
15280 	WHERE KAR.kle_id IN (SELECT KLE.cle_id
15281 	                     FROM okl_txl_assets_b TXL
15282                            ,okl_txd_assets_b TXD
15283                            ,okc_k_lines_b    KLE
15284 	                     WHERE TXD.asset_number = p_asset_number
15285                        AND   KLE.id = TXL.kle_id
15286                        AND   TXL.id = TXD.tal_id )
15287         AND KAR.ars_code = 'RE_LEASE');
15288     -- Bug# 15992711 : End of Modifications
15289 
15290     l_chk_rel_ast   Varchar2(1) default 'N';
15291 
15292     l_rel_ast_clev_fin_rec      clev_rec_type;
15293     l_rel_ast_klev_fin_rec      klev_rec_type;
15294     l_rel_ast_clev_model_rec    clev_rec_type;
15295     l_rel_ast_klev_model_rec    klev_rec_type;
15296     l_rel_ast_clev_fa_rec       clev_rec_type;
15297     l_rel_ast_klev_fa_rec       klev_rec_type;
15298     l_rel_ast_clev_ib_tbl       clev_tbl_type;
15299     l_rel_ast_klev_ib_tbl       klev_tbl_type;
15300     --End Bug# 3533936:
15301 
15302 --| start          29-Oct-2008 cklee Bug: 7492324  move code logic to               |
15303 --|                                OKL_TXL_ASSETS_PVT.CREATE_TXL_ASSET_DEF     |
15304     --Bug# 4186455 : Do not default SV for LOANS
15305     --cursor to check deal type of the contract
15306 /*    Cursor l_deal_type_csr (p_chr_id in number) is
15307     select khr.deal_type,
15308            khr.pdt_id,
15309            pdt.reporting_pdt_id
15310     from   okl_products pdt,
15311            okl_k_headers            khr
15312     where  pdt.id           =  khr.pdt_id
15313     and    khr.id           =  p_chr_id;
15314 
15315     l_deal_type_rec    l_deal_type_csr%ROWTYPE;
15316 
15317     --dkagrawa changed cursor to use view OKL_PROD_QLTY_VAL_UV than okl_product_parameters_v
15318     --cursor to get deal type corresponding to a product
15319     Cursor l_pdt_deal_csr (p_pdt_id in number) is
15320     SELECT ppv.quality_val deal_type
15321     FROM   okl_prod_qlty_val_uv ppv
15322     WHERE  ppv.quality_name IN ('LEASE','INVESTOR')
15323     AND    ppv.pdt_id = p_pdt_id;
15324 
15325     l_pdt_deal_rec l_pdt_deal_csr%ROWTYPE;*/
15326     --End Bug# 4186455 : Do not default SV for LOANS
15327  --| end         29-Oct-2008 cklee Bug: 7492324  move code logic to               |
15328 --|                                OKL_TXL_ASSETS_PVT.CREATE_TXL_ASSET_DEF     |
15329 
15330 
15331   BEGIN
15332 
15333     x_return_status := OKL_API.G_RET_STS_SUCCESS;
15334     -- Call start_activity to create savepoint, check compatibility
15335     -- and initialize message list
15336     x_return_status := OKL_API.START_ACTIVITY (
15337                                l_api_name
15338                                ,p_init_msg_list
15339                                ,'_PVT'
15340                                ,x_return_status);
15341     -- Check if activity started successfully
15342     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15343        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15344     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15345        RAISE OKL_API.G_EXCEPTION_ERROR;
15346     END IF;
15347 
15348 
15349     l_clev_fin_rec   := p_clev_fin_rec;
15350     l_klev_fin_rec   := p_klev_fin_rec;
15351     l_cimv_model_rec := p_cimv_model_rec;
15352     l_clev_fa_rec    := p_clev_fa_rec;
15353     l_cimv_fa_rec    := p_cimv_fa_rec;
15354     l_talv_fa_rec    := p_talv_fa_rec;
15355     l_itiv_inst_tbl  := p_itiv_ib_tbl;
15356     l_itiv_ib_tbl    := p_itiv_ib_tbl;
15357 
15358     IF (l_clev_fin_rec.dnz_chr_id IS NULL OR
15359        l_clev_fin_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
15360        OKL_API.set_message(p_app_name     => G_APP_NAME,
15361                            p_msg_name     => G_REQUIRED_VALUE,
15362                            p_token1       => G_COL_NAME_TOKEN,
15363                            p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID for All Lines');
15364        RAISE OKL_API.G_EXCEPTION_ERROR;
15365     END IF;
15366 --start:|           14-May-2008 cklee  Bug 6405415               				     |
15367     IF l_klev_fin_rec.residual_percentage <> OKL_API.G_MISS_NUM and
15368        l_klev_fin_rec.residual_percentage IS NOT NULL THEN
15369       IF NOT l_klev_fin_rec.residual_percentage between 0 and 100 THEN
15370         OKL_API.set_message(p_app_name => G_APP_NAME,
15371                             p_msg_name => 'OKL_VALID_RESIDUAL_PERCENT');
15372         RAISE OKL_API.G_EXCEPTION_ERROR;
15373       END IF;
15374     END IF;
15375 --end:|           14-May-2008 cklee  Bug 6405415               				     |
15376 
15377     OPEN  c_get_scs_code(p_dnz_chr_id => l_clev_fin_rec.dnz_chr_id);
15378     --Bug#4418339
15379     FETCH c_get_scs_code INTO lv_scs_code, l_orig_system_source_code;
15380     IF c_get_scs_code%NOTFOUND THEN
15381       OKL_API.set_message(p_app_name     => G_APP_NAME,
15382                           p_msg_name     => G_NO_MATCHING_RECORD,
15383                           p_token1       => G_COL_NAME_TOKEN,
15384                           p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID');
15385       RAISE G_EXCEPTION_HALT_VALIDATION;
15386     END IF;
15387     CLOSE c_get_scs_code;
15388 
15389 
15390     ------------------------------------------------------
15391     --Bug# 3533936 : Release Asset Case - all line details
15392     -- should default from exising asset
15393     ------------------------------------------------------
15394     l_chk_rel_ast := 'N';
15395 
15396     -- Bug# 15992711 : Change in number of parameters passed to new cursor
15397     -- Open l_chk_rel_ast_csr(p_chr_id => l_clev_fin_rec.dnz_chr_id);
15398     Open l_chk_rel_ast_csr(l_clev_fin_rec.dnz_chr_id,p_asset_number);
15399     -- Bug# 15992711 : End of Modifications
15400 
15401     Fetch l_chk_rel_ast_csr into l_chk_rel_ast;
15402     If l_chk_rel_ast_csr%NOTFOUND then
15403         null;
15404     end if;
15405     close l_chk_rel_ast_csr;
15406 
15407     If p_new_yn = 'N'  And l_chk_rel_ast = 'Y' Then
15408 
15409         Create_release_asset_line
15410             (p_api_version    => p_api_version,
15411              p_init_msg_list  => p_init_msg_list,
15412              x_return_status  => x_return_status,
15413              x_msg_count      => x_msg_count,
15414              x_msg_data       => x_msg_data,
15415              p_asset_id       => l_cimv_fa_rec.object1_id1,
15416              p_chr_id         => l_clev_fin_rec.dnz_chr_id,
15417              x_cle_id         => l_rel_ast_fin_cle_id);
15418 
15419         --ramurt Bug#4945190
15420         ln_chr_id := l_clev_fin_rec.dnz_chr_id;
15421         ln_cle_id := l_rel_ast_fin_cle_id;
15422 
15423 
15424         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15425            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15426         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15427            RAISE OKL_API.G_EXCEPTION_ERROR;
15428         END IF;
15429 
15430         Modify_Release_Asset_Line(
15431             p_api_version    =>  p_api_version,
15432             p_init_msg_list  => p_init_msg_list,
15433             x_return_status  => x_return_status,
15434             x_msg_count      => x_msg_count,
15435             x_msg_data       => x_msg_data,
15436             p_clev_fin_rec   => l_clev_fin_rec,
15437             p_klev_fin_rec   => l_klev_fin_rec,
15438 	    --akrangan Bug# 5362977 start
15439             p_clev_model_rec => l_clev_model_rec,
15440             --akrangan Bug# 5362977 end
15441             p_cimv_model_rec => l_cimv_model_rec,
15442             p_clev_fa_rec    => l_clev_fa_rec,
15443             p_cimv_fa_rec    => l_cimv_fa_rec,
15444             p_talv_fa_rec    => l_talv_fa_rec,
15445             p_itiv_ib_tbl    => l_itiv_ib_tbl,
15446             p_cle_id         => l_rel_ast_fin_cle_id,
15447             --Bug# 4631549
15448             p_call_mode      => 'RELEASE_ASSET',
15449             x_clev_fin_rec   => l_rel_ast_clev_fin_rec,
15450             x_klev_fin_rec   => l_rel_ast_klev_fin_rec,
15451             x_clev_model_rec => l_rel_ast_clev_model_rec,
15452             x_klev_model_rec => l_rel_ast_klev_model_rec,
15453             x_clev_fa_rec    => l_rel_ast_clev_fa_rec,
15454             x_klev_fa_rec    => l_rel_ast_klev_fa_rec,
15455             x_clev_ib_tbl    => l_rel_ast_clev_ib_tbl,
15456             x_klev_ib_tbl    => l_rel_ast_klev_ib_tbl);
15457 
15458 
15459         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15460            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15461         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15462            RAISE OKL_API.G_EXCEPTION_ERROR;
15463         END IF;
15464 
15465         x_clev_fin_rec   := l_rel_ast_clev_fin_rec;
15466         x_clev_model_rec := l_rel_ast_clev_model_rec;
15467         x_clev_fa_rec    := l_rel_ast_clev_fa_rec;
15468         If l_rel_ast_clev_ib_tbl.COUNT > 0 then
15469             x_clev_ib_rec    := l_rel_ast_clev_ib_tbl(1);
15470         End If;
15471     Else
15472     ----------------------------------------------------------
15473     --End Bug# 3533936
15474     ----------------------------------------------------------
15475 
15476 
15477 
15478 -- Code is commneted as per Nagen mail on 01/23/2002 10.11am
15479 -- code is put in place as per Manish on 09/16/2002
15480     IF (p_asset_number IS NULL OR
15481        p_asset_number = OKL_API.G_MISS_CHAR) AND
15482        (lv_scs_code IS NOT NULL OR
15483        lv_scs_code <> OKL_API.G_MISS_CHAR) AND
15484        --Bug#4419339
15485        --(lv_scs_code = 'QUOTE') AND
15486        --Bug# 4721141 : changed AND to OR
15487        (lv_scs_code = 'QUOTE') OR
15488        --Bug# 5098124 : Added 'OKL_QUOTE'
15489        (l_orig_system_source_code = 'OKL_LEASE_APP')  OR
15490        (l_orig_system_source_code = 'OKL_QUOTE')  THEN
15491        x_return_status := generate_asset_number(x_asset_number => l_asset_number);
15492        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15493          OKL_API.set_message(p_app_name     => G_APP_NAME,
15494                              p_msg_name     => G_GEN_ASSET_NUMBER);
15495          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15496        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15497          OKL_API.set_message(p_app_name     => G_APP_NAME,
15498                              p_msg_name     => G_GEN_ASSET_NUMBER);
15499          RAISE OKL_API.G_EXCEPTION_ERROR;
15500        END IF;
15501        l_talv_fa_rec.asset_number := l_asset_number;
15502     ELSE
15503        --Bug# 4053845:
15504        --l_asset_number := p_asset_number;
15505        l_asset_number := UPPER(p_asset_number);
15506     END IF;
15507 
15508     IF l_itiv_ib_tbl.COUNT > 0 THEN
15509       p := l_itiv_ib_tbl.FIRST;
15510       LOOP
15511         -- Check for Required Values
15512         x_return_status := check_required_values(p_item1    => l_cimv_model_rec.object1_id1,
15513                                                  p_item2    => l_cimv_model_rec.object1_id2,
15514                                                  p_ast_no   => l_talv_fa_rec.asset_number,
15515                                                  p_ast_desc => l_talv_fa_rec.description,
15516                                                  p_cost     => l_talv_fa_rec.original_cost,
15517                                                  p_units    => l_talv_fa_rec.current_units,
15518                                                  p_ib_loc1  => l_itiv_ib_tbl(p).object_id1_new,
15519                                                  p_ib_loc2  => l_itiv_ib_tbl(p).object_id2_new,
15520                                                  p_fa_loc   => l_talv_fa_rec.fa_location_id,
15521                                                  p_refinance_amount => l_klev_fin_rec.refinance_amount,
15522                                                  p_chr_id   => l_clev_fin_rec.dnz_chr_id);
15523         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15524           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
15525         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15526           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
15527         END IF;
15528         EXIT WHEN (p = l_itiv_ib_tbl.LAST);
15529         p := l_itiv_ib_tbl.NEXT(p);
15530       END LOOP;
15531     END IF;
15532     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15533        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15534     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15535        RAISE OKL_API.G_EXCEPTION_ERROR;
15536     END IF;
15537     IF P_new_yn = 'Y' THEN
15538        ln_clev_model_price_unit := abs(l_talv_fa_rec.original_cost);
15539        ln_cimv_model_no_items   := l_talv_fa_rec.current_units;
15540     ELSIF p_new_yn = 'N' THEN
15541        IF l_clev_model_rec.price_unit = OKL_API.G_MISS_NUM THEN
15542           l_clev_model_rec.price_unit := null;
15543        END IF;
15544        IF l_cimv_model_rec.number_of_items = OKL_API.G_MISS_NUM THEN
15545           l_cimv_model_rec.number_of_items := null;
15546        END IF;
15547        ln_clev_model_price_unit := abs(l_talv_fa_rec.original_cost);
15548        ln_cimv_model_no_items   := l_talv_fa_rec.current_units;
15549        -- we need to modify the code, let it go a temp
15550 	--       ln_clev_model_price_unit := nvl(l_clev_model_rec.price_unit,0);
15551 	--       ln_cimv_model_no_items   := nvl(l_cimv_model_rec.number_of_items,0);
15552     END IF;
15553 	    --Build the Top Line Record
15554 	    -- First get the Top line Style id
15555             -- 4414408 Assign the line style id directly
15556 /*
15557 	    x_return_status := get_lse_id(p_lty_code => G_FIN_LINE_LTY_CODE,
15558 					  x_lse_id   => l_clev_fin_rec.lse_id);
15559 	    IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15560 	      RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15561 	    ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15562 	      RAISE OKL_API.G_EXCEPTION_ERROR;
15563 	    END IF;
15564 */
15565             l_clev_fin_rec.lse_id           := G_FIN_LINE_LTY_ID;
15566 	    l_clev_fin_rec.chr_id           := l_clev_fin_rec.dnz_chr_id;
15567 	    l_clev_fin_rec.cle_id           := null;
15568 	--    l_clev_fin_rec.name             := l_asset_number;
15569             --Bug# 4053845
15570             l_clev_fin_rec.name             := upper(l_clev_fin_rec.name);
15571 	    l_clev_fin_rec.item_description := l_talv_fa_rec.description;
15572 	    l_clev_fin_rec.exception_yn     := 'N';
15573 	    IF (l_clev_fin_rec.display_sequence IS NUll OR
15574 	       l_clev_fin_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
15575 	       l_clev_fin_rec.display_sequence := 1;
15576 	    END IF;
15577     -- To Check We Got the Valid info
15578     IF UPPER(p_new_yn) NOT IN ('Y','N') OR
15579        (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
15580        UPPER(p_new_yn) IS NULL) THEN
15581       OKL_API.set_message(p_app_name     => G_APP_NAME,
15582                           p_msg_name     => G_INVALID_YN,
15583                           p_token1       => G_COL_NAME_TOKEN,
15584                           p_token1_value => 'p_new_yn');
15585        -- Halt Validation
15586       RAISE OKL_API.G_EXCEPTION_ERROR;
15587     END IF;
15588     -- 4414408 Validate the Asset Number
15589     -- Validate to see if the asset_number given is not null
15590     -- and also Validate asset_number does not exists
15591     -- in OKL_TXL_ASSETS_V
15592     IF UPPER(p_new_yn) = 'Y' THEN
15593        validate_new_asset_number(x_return_status  => x_return_status,
15594                                  p_asset_number   => l_asset_number,
15595                                  p_dnz_chr_id     => l_clev_fin_rec.dnz_chr_id);
15596        -- Check if activity started successfully
15597        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15598           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15599        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15600           RAISE OKL_API.G_EXCEPTION_ERROR;
15601        END IF;
15602     ELSE
15603        validate_new_asset_number(x_return_status  => x_return_status,
15604                                  p_asset_number   => l_asset_number,
15605                                  p_dnz_chr_id     => l_clev_fin_rec.dnz_chr_id);
15606        -- Check if activity ended successfully
15607        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15608           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15609        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15610           RAISE OKL_API.G_EXCEPTION_ERROR;
15611        END IF;
15612     END IF;
15613 
15614 	    -- Creation of the Financial Asset Line
15615 	    create_fin_line(p_api_version   => p_api_version,
15616 			    p_init_msg_list => p_init_msg_list,
15617 			    x_return_status => x_return_status,
15618 			    x_msg_count     => x_msg_count,
15619 			    x_msg_data      => x_msg_data,
15620 			    P_new_yn        => P_new_yn,
15621 			    p_asset_number  => l_asset_number,
15622 			    p_clev_rec      => l_clev_fin_rec,
15623 			    p_klev_rec      => l_klev_fin_rec,
15624 			    x_clev_rec      => x_clev_fin_rec,
15625 			    x_klev_rec      => l_klev_fin_rec_out);
15626 	    IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15627 	      RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15628 	    ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15629 	      RAISE OKL_API.G_EXCEPTION_ERROR;
15630 	    END IF;
15631 
15632         -- added by rravikir (Estimated property tax)
15633         ln_chr_id := x_clev_fin_rec.dnz_chr_id;
15634         ln_cle_id := x_clev_fin_rec.id;
15635         -- end
15636 
15637 	    -- We have to Populate the Model Line Record
15638 	    -- First get the Model line Style id
15639             -- 4414408 Assign the line style id directly
15640 /*
15641 	    x_return_status := get_lse_id(p_lty_code => G_MODEL_LINE_LTY_CODE,
15642 					  x_lse_id   => l_clev_model_rec.lse_id);
15643 	    IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15644 	      RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15645 	    ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15646 	      RAISE OKL_API.G_EXCEPTION_ERROR;
15647 	    END IF;
15648 */
15649 	    IF (l_clev_model_rec.display_sequence IS NUll OR
15650 	       l_clev_model_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
15651 	       l_clev_model_rec.display_sequence  := x_clev_fin_rec.display_sequence + 1;
15652 	    END IF;
15653 	    l_clev_model_rec.lse_id          := G_MODEL_LINE_LTY_ID;
15654 	    l_clev_model_rec.chr_id          := null;
15655 	    l_clev_model_rec.cle_id          := x_clev_fin_rec.id;
15656 	    l_clev_model_rec.exception_yn    := 'N';
15657 	    l_clev_model_rec.price_unit      := ln_clev_model_price_unit;
15658             l_clev_model_rec.dnz_chr_id      := x_clev_fin_rec.dnz_chr_id;
15659     --Build Model cimv rec
15660     l_cimv_model_rec.exception_yn    := 'N';
15661     l_cimv_model_rec.number_of_items := ln_cimv_model_no_items;
15662     -- Creation of the Model Line and Item Record
15663     create_model_line(p_api_version   => p_api_version,
15664                       p_init_msg_list => p_init_msg_list,
15665                       x_return_status => x_return_status,
15666                       x_msg_count     => x_msg_count,
15667                       x_msg_data      => x_msg_data,
15668                       P_new_yn        => P_new_yn,
15669                       p_asset_number  => l_asset_number,
15670                       p_clev_rec      => l_clev_model_rec,
15671                       p_klev_rec      => l_klev_model_rec,
15672                       p_cimv_rec      => l_cimv_model_rec,
15673                       x_clev_rec      => x_clev_model_rec,
15674                       x_klev_rec      => l_klev_model_rec_out,
15675                       x_cimv_rec      => l_cimv_model_rec_out);
15676     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15677       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15678     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15679       RAISE OKL_API.G_EXCEPTION_ERROR;
15680     END IF;
15681     -- Calculate the OEC to Populate the OKL_K_LINES_V.OEC
15682     oec_calc_upd_fin_rec(p_api_version        => p_api_version,
15683                          p_init_msg_list      => p_init_msg_list,
15684                          x_return_status      => x_return_status,
15685                          x_msg_count          => x_msg_count,
15686                          x_msg_data           => x_msg_data,
15687                          P_new_yn             => P_new_yn,
15688                          p_asset_number       => l_asset_number,
15689 			 -- 4414408
15690                          p_top_line_id        => x_clev_model_rec.cle_id,
15691                          p_dnz_chr_id         => x_clev_model_rec.dnz_chr_id,
15692                          x_fin_clev_rec       => x_clev_fin_rec,
15693                          x_fin_klev_rec       => l_klev_fin_rec_out,
15694                          x_oec                => ln_klev_fin_oec,
15695                          p_validate_fin_line  => OKL_API.G_FALSE);
15696     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15697       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15698     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15699       RAISE OKL_API.G_EXCEPTION_ERROR;
15700     END IF;
15701     -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
15702     cap_amt_calc_upd_fin_rec(p_api_version        => p_api_version,
15703                              p_init_msg_list      => p_init_msg_list,
15704                              x_return_status      => x_return_status,
15705                              x_msg_count          => x_msg_count,
15706                              x_msg_data           => x_msg_data,
15707                              P_new_yn             => P_new_yn,
15708                              p_asset_number       => l_asset_number,
15709 			     -- 4414408
15710                              p_top_line_id        => x_clev_model_rec.cle_id,
15711                              p_dnz_chr_id         => x_clev_model_rec.dnz_chr_id,
15712                              x_fin_clev_rec       => x_clev_fin_rec,
15713                              x_fin_klev_rec       => l_klev_fin_rec_out,
15714                              x_cap_amt            => ln_klev_fin_cap,
15715                              p_validate_fin_line  => OKL_API.G_FALSE);
15716     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15717       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15718     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15719       RAISE OKL_API.G_EXCEPTION_ERROR;
15720     END IF;
15721     -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
15722     -- We need to Back calculate the Residual Percentage if value not given
15723     -- or if given should be in sync with residual value
15724 
15725     IF  l_klev_fin_rec_out.residual_percentage = OKL_API.G_MISS_NUM THEN
15726       l_klev_fin_rec_out.residual_percentage := null;
15727     END IF;
15728 
15729     IF l_klev_fin_rec_out.residual_value = OKL_API.G_MISS_NUM THEN
15730       l_klev_fin_rec_out.residual_value := null;
15731     END IF;
15732 
15733     IF (l_klev_fin_rec_out.residual_percentage IS NOT NULL OR
15734        l_klev_fin_rec_out.residual_percentage <> OKL_API.G_MISS_NUM) AND
15735        (l_klev_fin_rec_out.residual_value IS NOT NULL OR
15736        l_klev_fin_rec_out.residual_value <> OKL_API.G_MISS_NUM) THEN
15737 
15738       l_top_line_id := x_clev_fin_rec.id;
15739       l_oec := l_klev_fin_rec_out.oec;
15740       l_residual_value := l_klev_fin_rec_out.residual_value;
15741 
15742       get_res_per_upd_fin_rec(p_api_version   => p_api_version,
15743                               p_init_msg_list => p_init_msg_list,
15744                               x_return_status => x_return_status,
15745                               x_msg_count     => x_msg_count,
15746                               x_msg_data      => x_msg_data,
15747                               P_new_yn        => P_new_yn,
15748                               p_asset_number  => l_asset_number,
15749                               p_res_value     => l_residual_value,  --l_klev_fin_rec_out.residual_value
15750                               p_oec           => l_oec,  --l_klev_fin_rec_out.oec
15751                               p_top_line_id   => l_top_line_id, --x_clev_fin_rec.id,
15752                               p_dnz_chr_id    => x_clev_model_rec.dnz_chr_id,
15753                               x_fin_clev_rec  => x_clev_fin_rec,
15754                               x_fin_klev_rec  => l_klev_fin_rec_out,
15755                               p_validate_fin_line  => OKL_API.G_FALSE); -- #4414408
15756       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15757         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15758       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15759         RAISE OKL_API.G_EXCEPTION_ERROR;
15760       END IF;
15761       res_value_calc_upd_fin_rec(p_api_version        => p_api_version,
15762                                  p_init_msg_list      => p_init_msg_list,
15763                                  x_return_status      => x_return_status,
15764                                  x_msg_count          => x_msg_count,
15765                                  x_msg_data           => x_msg_data,
15766                                  P_new_yn             => P_new_yn,
15767                                  p_asset_number       => l_asset_number,
15768 				 -- 4414408
15769                                  p_top_line_id        => l_top_line_id,
15770                                  p_dnz_chr_id         => x_clev_model_rec.dnz_chr_id,
15771                                  x_fin_clev_rec       => x_clev_fin_rec,
15772                                  x_fin_klev_rec       => l_klev_fin_rec_out,
15773                                  x_res_value          => ln_klev_fin_res,
15774                                  p_validate_fin_line  => OKL_API.G_FALSE); -- #4414408
15775       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15776         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15777       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15778         RAISE OKL_API.G_EXCEPTION_ERROR;
15779       END IF;
15780     ELSIF (l_klev_fin_rec_out.residual_percentage IS NULL OR
15781        l_klev_fin_rec_out.residual_percentage = OKL_API.G_MISS_NUM) AND
15782        (l_klev_fin_rec_out.residual_value IS NOT NULL OR
15783        l_klev_fin_rec_out.residual_value <> OKL_API.G_MISS_NUM) THEN
15784 
15785       l_top_line_id := x_clev_fin_rec.id;
15786       l_oec := l_klev_fin_rec_out.oec;
15787       l_residual_value := l_klev_fin_rec_out.residual_value;
15788 
15789       get_res_per_upd_fin_rec(p_api_version        => p_api_version,
15790                               p_init_msg_list      => p_init_msg_list,
15791                               x_return_status      => x_return_status,
15792                               x_msg_count          => x_msg_count,
15793                               x_msg_data           => x_msg_data,
15794                               P_new_yn             => P_new_yn,
15795                               p_asset_number       => l_asset_number,
15796                               p_res_value          => l_residual_value,  --l_klev_fin_rec_out.residual_value
15797                               p_oec                => l_oec,  --l_klev_fin_rec_out.oec
15798                               p_top_line_id        => l_top_line_id, --x_clev_fin_rec.id,
15799                               p_dnz_chr_id         => x_clev_model_rec.dnz_chr_id,
15800                               x_fin_clev_rec       => x_clev_fin_rec,
15801                               x_fin_klev_rec       => l_klev_fin_rec_out,
15802                               p_validate_fin_line  => OKL_API.G_FALSE); -- #4414408
15803       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15804         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15805       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15806         RAISE OKL_API.G_EXCEPTION_ERROR;
15807       END IF;
15808     ELSIF (l_klev_fin_rec_out.residual_percentage IS NOT NULL OR
15809        l_klev_fin_rec_out.residual_percentage <> OKL_API.G_MISS_NUM) AND
15810        (l_klev_fin_rec_out.residual_value IS NULL OR
15811        l_klev_fin_rec_out.residual_value = OKL_API.G_MISS_NUM) THEN
15812       res_value_calc_upd_fin_rec(p_api_version        => p_api_version,
15813                                  p_init_msg_list      => p_init_msg_list,
15814                                  x_return_status      => x_return_status,
15815                                  x_msg_count          => x_msg_count,
15816                                  x_msg_data           => x_msg_data,
15817                                  P_new_yn             => P_new_yn,
15818                                  p_asset_number       => l_asset_number,
15819 				 -- 4414408
15820                                  p_top_line_id        => x_clev_model_rec.cle_id,
15821                                  p_dnz_chr_id         => x_clev_model_rec.dnz_chr_id,
15822                                  x_fin_clev_rec       => x_clev_fin_rec,
15823                                  x_fin_klev_rec       => l_klev_fin_rec_out,
15824                                  x_res_value          => ln_klev_fin_res,
15825                                  p_validate_fin_line  => OKL_API.G_FALSE); -- #4414408
15826       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15827         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15828       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15829         RAISE OKL_API.G_EXCEPTION_ERROR;
15830       END IF;
15831     END IF;
15832     IF (l_klev_fin_rec_out.oec IS NOT NULL OR
15833        l_klev_fin_rec_out.oec <> OKL_API.G_MISS_NUM) AND
15834        (l_klev_fin_rec_out.residual_value IS NOT NULL OR
15835        l_klev_fin_rec_out.residual_value <> OKL_API.G_MISS_NUM) THEN
15836       IF l_klev_fin_rec_out.residual_value > l_klev_fin_rec_out.oec THEN
15837         OKL_API.set_message(p_app_name     => G_APP_NAME,
15838                             p_msg_name     => G_SALVAGE_VALUE);
15839         RAISE OKL_API.G_EXCEPTION_ERROR;
15840       END IF;
15841     END IF;
15842     -- Required cle Line Information
15843     -- Creation of the Fixed Asset Line Process
15844     -- Getting the Line style Info
15845     -- 4414408 Assign the line style ID directly
15846 /*
15847     x_return_status := get_lse_id(p_lty_code => G_FA_LINE_LTY_CODE,
15848                                   x_lse_id   => l_clev_fa_rec.lse_id);
15849     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15850       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15851     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15852       RAISE OKL_API.G_EXCEPTION_ERROR;
15853     END IF;
15854 */
15855     IF (l_clev_fa_rec.display_sequence IS NUll OR
15856        l_clev_fa_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
15857        l_clev_fa_rec.display_sequence  := x_clev_model_rec.display_sequence + 2;
15858     END IF;
15859     l_clev_fa_rec.lse_id               := G_FA_LINE_LTY_ID;
15860     l_clev_fa_rec.chr_id               := null;
15861     l_clev_fa_rec.cle_id               := x_clev_fin_rec.id;
15862     l_clev_fa_rec.dnz_chr_id           := x_clev_fin_rec.dnz_chr_id;
15863     l_clev_fa_rec.exception_yn         := 'N';
15864     l_clev_fa_rec.price_unit           := ln_clev_model_price_unit;
15865     l_clev_fa_rec.item_description     := l_talv_fa_rec.description;
15866     --Bug# 4053845
15867     l_clev_fa_rec.name                 := upper(l_clev_fa_rec.name);
15868     -- A Bug fix Since we populate the year manufactured into OKL_TXL_ASSETS_B only
15869     -- We cannot use the information after the assets have been put into FA
15870     -- So we decided to populate the year Manufactured into OKL_K_LINES.YEAR_BUILT
15871     -- As the Datatype matches for both.
15872     l_klev_fa_rec.Year_Built       := l_talv_fa_rec.year_manufactured;
15873     --start NISINHA Bug 6490572
15874     l_klev_fa_rec.model_number       := l_talv_fa_rec.model_number;
15875     l_klev_fa_rec.manufacturer_name  := l_talv_fa_rec.manufacturer_name;
15876     --end NISINHA Bug 6490572
15877     -- Required Item Information
15878     l_cimv_fa_rec.exception_yn         := 'N';
15879     IF p_new_yn = 'Y' THEN
15880       l_cimv_fa_rec.object1_id1          := null;
15881       l_cimv_fa_rec.object1_id2          := null;
15882     ELSIF p_new_yn = 'N' THEN
15883       l_cimv_fa_rec.object1_id2          := '#';
15884     END IF;
15885     l_cimv_fa_rec.number_of_items      := ln_cimv_model_no_items;
15886     -- Txl Asset Information
15887     IF (l_talv_fa_rec.asset_number IS NULL OR
15888        l_talv_fa_rec.asset_number = OKL_API.G_MISS_CHAR) THEN
15889        l_talv_fa_rec.asset_number := l_asset_number;
15890     --bug# 4053845
15891     ELSE
15892        l_talv_fa_rec.asset_number := UPPER(l_talv_fa_rec.asset_number);
15893     END IF;
15894     IF P_new_yn= 'Y' THEN
15895      --fix for #3481999
15896      IF ( l_talv_fa_rec.depreciation_cost IS NULL OR
15897           l_talv_fa_rec.depreciation_cost = OKL_API.G_MISS_NUM ) THEN
15898         l_talv_fa_rec.depreciation_cost := l_klev_fin_rec_out.oec;
15899      END IF;
15900 
15901       l_talv_fa_rec.original_cost := l_klev_fin_rec_out.oec;
15902       l_talv_fa_rec.tal_type := 'CFA';
15903       --------------
15904       --Bug# 4082635
15905       -------------
15906 --| start          29-Oct-2008 cklee Bug: 7492324  move code logic to               |
15907 --|                                OKL_TXL_ASSETS_PVT.CREATE_TXL_ASSET_DEF     |
15908 
15909 /*
15910       If nvl(l_talv_fa_rec.salvage_value,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM AND
15911          nvl(l_talv_fa_rec.percent_salvage_value, OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM  then
15912           --Bug# 4186455 : Do not populate salvage value for Loan and loan revolving deal types
15913           for l_deal_type_rec in l_deal_type_csr(p_chr_id => l_clev_fin_rec.dnz_chr_id)
15914           loop
15915               If l_deal_type_rec.deal_type = 'LOAN' then
15916                   If nvl(l_deal_type_rec.reporting_pdt_id,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
15917                       for l_pdt_deal_rec in l_pdt_deal_csr(p_pdt_id => l_deal_type_rec.reporting_pdt_id)
15918                       loop
15919                           If l_pdt_deal_rec.deal_type = 'LEASEOP' then -- reporting pdt is operating lease
15920                               l_talv_fa_rec.salvage_value := nvl(l_klev_fin_rec_out.residual_value,0);
15921 
15922                           End If;
15923                       End loop;
15924                   End If;
15925               Elsif l_deal_type_rec.deal_type = 'LOAN-REVOLVING' then
15926                   null;
15927               Else -- for LEASEOP, LEASEDF, LEASEST
15928                   l_talv_fa_rec.salvage_value := nvl(l_klev_fin_rec_out.residual_value,0);
15929               End If;
15930           End Loop;
15931       End If;*/
15932 --| end         29-Oct-2008 cklee Bug: 7492324  move code logic to               |
15933 --|                                OKL_TXL_ASSETS_PVT.CREATE_TXL_ASSET_DEF     |
15934       ------------------
15935       --End Bug# 4082635
15936       ------------------
15937     ELSIF p_new_yn = 'N' THEN
15938       l_talv_fa_rec.depreciation_cost := l_klev_fin_rec_out.oec;
15939       l_talv_fa_rec.original_cost := l_klev_fin_rec_out.oec;
15940       l_talv_fa_rec.tal_type := 'CRL';
15941     END IF;
15942     -- Creation of the Fixed Asset Line and item/Txl Asset Info
15943     Create_fixed_asset_line(p_api_version   => p_api_version,
15944                             p_init_msg_list => p_init_msg_list,
15945                             x_return_status => x_return_status,
15946                             x_msg_count     => x_msg_count,
15947                             x_msg_data      => x_msg_data,
15948                             P_new_yn        => P_new_yn,
15949                             p_asset_number  => l_asset_number,
15950                             p_clev_rec      => l_clev_fa_rec,
15951                             p_klev_rec      => l_klev_fa_rec,
15952                             p_cimv_rec      => l_cimv_fa_rec,
15953                             p_talv_rec      => l_talv_fa_rec,
15954                             x_clev_rec      => x_clev_fa_rec,
15955                             x_klev_rec      => l_klev_fa_rec_out,
15956                             x_cimv_rec      => l_cimv_fa_rec_out,
15957                             x_trxv_rec      => l_trxv_fa_rec_out,
15958                             x_talv_rec      => l_talv_fa_rec_out);
15959     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15960       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15961     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15962       RAISE OKL_API.G_EXCEPTION_ERROR;
15963     END IF;
15964     IF p_new_yn = 'N' THEN
15965       FOR r_ib_sno_asset IN c_ib_sno_asset(l_talv_fa_rec_out.asset_number) LOOP
15966         r_itiv_ib_tbl(k).serial_number := r_ib_sno_asset.ib_serial_number;
15967         IF r_ib_sno_asset.ib_serial_number IS NULL OR
15968            r_ib_sno_asset.ib_serial_number = OKL_API.G_MISS_CHAR THEN
15969           r_itiv_ib_tbl(k).mfg_serial_number_yn := 'N';
15970         ELSE
15971           r_itiv_ib_tbl(k).mfg_serial_number_yn := 'Y';
15972         END IF;
15973         r_itiv_ib_tbl(k).dnz_cle_id := x_clev_fa_rec.cle_id;
15974         IF l_itiv_ib_tbl.COUNT > 0 THEN
15975           m := l_itiv_ib_tbl.FIRST;
15976           LOOP
15977             r_itiv_ib_tbl(k).object_id1_new := l_itiv_ib_tbl(m).object_id1_new;
15978             EXIT WHEN (m = l_itiv_ib_tbl.LAST);
15979             m := l_itiv_ib_tbl.NEXT(m);
15980           END LOOP;
15981         END IF;
15982         lt_instance_id_tbl(k) := r_ib_sno_asset.instance_id;
15983         k := k + 1;
15984       END LOOP;
15985       l_itiv_ib_tbl   := r_itiv_ib_tbl;
15986       IF l_itiv_ib_tbl.COUNT > 0 THEN
15987          ln_dummy1 :=  l_itiv_ib_tbl.COUNT;
15988          -- We have intialize the J , since there could be any index integer
15989          j := l_itiv_ib_tbl.FIRST;
15990          LOOP
15991            IF (l_itiv_ib_tbl(j).mfg_serial_number_yn IS NULL OR
15992               l_itiv_ib_tbl(j).mfg_serial_number_yn = OKL_API.G_MISS_CHAR) THEN
15993               x_return_status := OKL_API.G_RET_STS_ERROR;
15994               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
15995            ELSIF l_itiv_ib_tbl(j).mfg_serial_number_yn = 'Y' THEN
15996               IF ln_dummy1 <> ln_cimv_model_no_items THEN
15997                 OKL_API.set_message(p_app_name     => G_APP_NAME,
15998                                     p_msg_name     => G_CNT_REC);
15999                 RAISE OKL_API.G_EXCEPTION_ERROR;
16000               END IF;
16001               ln_dummy := ln_cimv_model_no_items;
16002            ELSIF l_itiv_ib_tbl(j).mfg_serial_number_yn = 'N' THEN
16003               ln_dummy := 1;
16004            END IF;
16005            EXIT WHEN (j = l_itiv_ib_tbl.LAST);
16006            j := l_itiv_ib_tbl.NEXT(j);
16007          END LOOP;
16008       ELSE
16009         OKL_API.set_message(p_app_name => G_APP_NAME,
16010                             p_msg_name => G_CNT_REC);
16011         RAISE OKL_API.G_EXCEPTION_ERROR;
16012       END IF;
16013     ELSIF p_new_yn = 'Y' THEN
16014       -- We have to make sure the count of the itiv_tbl
16015       -- should be equal to qty of items
16016       -- Since inst tbl and ib inst are same
16017       -- it is Good enough to do one
16018       IF l_itiv_ib_tbl.COUNT > 0 THEN
16019          ln_dummy1 :=  l_itiv_ib_tbl.COUNT;
16020          -- We have intialize the J , since there could be any index integer
16021          j := l_itiv_ib_tbl.FIRST;
16022          LOOP
16023 
16024            l_itiv_ib_tbl(j).dnz_cle_id := x_clev_fa_rec.cle_id; -- For importing Serial Item fix
16025 
16026            IF (l_itiv_ib_tbl(j).mfg_serial_number_yn IS NULL OR
16027               l_itiv_ib_tbl(j).mfg_serial_number_yn = OKL_API.G_MISS_CHAR) THEN
16028               x_return_status := OKL_API.G_RET_STS_ERROR;
16029               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
16030            ELSIF l_itiv_ib_tbl(j).mfg_serial_number_yn = 'Y' THEN
16031               IF ln_dummy1 <> ln_cimv_model_no_items THEN
16032                 OKL_API.set_message(p_app_name     => G_APP_NAME,
16033                                     p_msg_name     => G_CNT_REC);
16034                 RAISE OKL_API.G_EXCEPTION_ERROR;
16035               END IF;
16036               ln_dummy := ln_cimv_model_no_items;
16037            ELSIF l_itiv_ib_tbl(j).mfg_serial_number_yn = 'N' THEN
16038               ln_dummy := 1;
16039            END IF;
16040            EXIT WHEN (j = l_itiv_ib_tbl.LAST);
16041            j := l_itiv_ib_tbl.NEXT(j);
16042          END LOOP;
16043       ELSE
16044         OKL_API.set_message(p_app_name => G_APP_NAME,
16045                             p_msg_name => G_CNT_REC);
16046         RAISE OKL_API.G_EXCEPTION_ERROR;
16047       END IF;
16048     END IF;
16049     -- Since we have to create the instance
16050     -- Depending of the qty in l_cimv_model_rec.number_of_items
16051     -- we have use loop
16052     j := l_itiv_ib_tbl.FIRST;
16053     FOR i IN 1..ln_dummy LOOP
16054       IF (l_itiv_ib_tbl(j).instance_number_ib IS NULL OR
16055          l_itiv_ib_tbl(j).instance_number_ib = OKL_API.G_MISS_CHAR) THEN
16056          x_return_status := generate_instance_number_ib(x_instance_number_ib => l_itiv_ib_tbl(j).instance_number_ib);
16057          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16058            OKL_API.set_message(p_app_name     => G_APP_NAME,
16059                                p_msg_name     => G_GEN_INST_NUM_IB);
16060            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16061          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16062            OKL_API.set_message(p_app_name     => G_APP_NAME,
16063                                p_msg_name     => G_GEN_INST_NUM_IB);
16064            RAISE OKL_API.G_EXCEPTION_ERROR;
16065          END IF;
16066          l_itiv_ib_tbl(j).instance_number_ib := l_asset_number||' '||l_itiv_ib_tbl(j).instance_number_ib;
16067          l_itiv_inst_tbl(j).instance_number_ib := l_itiv_ib_tbl(j).instance_number_ib;
16068       END IF;
16069       -- Creation of the Instance Line Process
16070       -- Getting the Line style Info
16071       -- 4414408 Assign the line style ID directly
16072 /*
16073       x_return_status := get_lse_id(p_lty_code => G_INST_LINE_LTY_CODE,
16074                                     x_lse_id   => l_clev_inst_rec.lse_id);
16075       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16076         EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
16077       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16078         EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
16079       END IF;
16080 */
16081       IF (l_clev_inst_rec.display_sequence IS NUll OR
16082          l_clev_inst_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
16083          l_clev_inst_rec.display_sequence  := x_clev_fa_rec.display_sequence + 3;
16084       END IF;
16085       -- Required cle Line Information
16086       l_clev_inst_rec.lse_id            := G_INST_LINE_LTY_ID;
16087       l_clev_inst_rec.chr_id            := null;
16088       l_clev_inst_rec.cle_id            := x_clev_fin_rec.id;
16089       l_clev_inst_rec.dnz_chr_id        := x_clev_fin_rec.dnz_chr_id;
16090       l_clev_inst_rec.exception_yn      := 'N';
16091       -- Creation of the Instance Line
16092       Create_instance_line(p_api_version   => p_api_version,
16093                            p_init_msg_list => p_init_msg_list,
16094                            x_return_status => x_return_status,
16095                            x_msg_count     => x_msg_count,
16096                            x_msg_data      => x_msg_data,
16097                            p_clev_rec      => l_clev_inst_rec,
16098                            p_klev_rec      => l_klev_inst_rec,
16099                            p_itiv_rec      => l_itiv_inst_tbl(j),
16100                            x_clev_rec      => l_clev_inst_rec_out,
16101                            x_klev_rec      => l_klev_inst_rec_out,
16102                            x_itiv_rec      => l_itiv_inst_tbl_out(j));
16103       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16104         EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
16105       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16106         EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
16107       END IF;
16108       -- Creation of the ib Line Process
16109       -- Getting the Line style Info
16110       -- 4414408 Assign the IB line style ID directly
16111 /*
16112       x_return_status := get_lse_id(p_lty_code => G_IB_LINE_LTY_CODE,
16113                                     x_lse_id   => l_clev_ib_rec.lse_id);
16114       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16115         EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
16116       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16117         EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
16118       END IF;
16119 */
16120       IF (l_clev_ib_rec.display_sequence IS NUll OR
16121          l_clev_ib_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
16122          l_clev_ib_rec.display_sequence  := l_clev_inst_rec_out.display_sequence + 4;
16123       END IF;
16124       -- Required cle Line Information
16125       l_clev_ib_rec.lse_id            := G_IB_LINE_LTY_ID;
16126       l_clev_ib_rec.chr_id            := null;
16127       l_clev_ib_rec.cle_id            := l_clev_inst_rec_out.id;
16128       l_clev_ib_rec.dnz_chr_id        := x_clev_fin_rec.dnz_chr_id;
16129       l_clev_ib_rec.exception_yn      := 'N';
16130       -- Required Item Information
16131       l_cimv_ib_rec.exception_yn      := 'N';
16132       l_cimv_ib_rec.object1_id1       := null;
16133       l_cimv_ib_rec.object1_id2       := null;
16134       -- Since the screen can give only party_site_id via l_itiv_tbl(j).object_id1_new
16135       -- We have to use the below function
16136       lv_object_id1_new := l_itiv_ib_tbl(j).object_id1_new;
16137       x_return_status := get_party_site_id(p_object_id1_new => lv_object_id1_new,
16138                                            x_object_id1_new => l_itiv_ib_tbl(j).object_id1_new,
16139                                            x_object_id2_new => l_itiv_ib_tbl(j).object_id2_new);
16140       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16141         EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
16142       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16143         EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
16144       END IF;
16145       IF P_new_yn= 'Y' THEN
16146         l_itiv_ib_tbl(j).tal_type := 'CFA';
16147       ELSIF p_new_yn = 'N' THEN
16148         l_itiv_ib_tbl(j).tal_type := 'CRL';
16149         m := lt_instance_id_tbl.FIRST;
16150         l_cimv_ib_rec.object1_id1 := lt_instance_id_tbl(m);
16151         l_cimv_ib_rec.object1_id2 := '#';
16152       END IF;
16153        -- Creation of the ib Line
16154       Create_instance_ib_line(p_api_version   => p_api_version,
16155                               p_init_msg_list => p_init_msg_list,
16156                               x_return_status => x_return_status,
16157                               x_msg_count     => x_msg_count,
16158                               x_msg_data      => x_msg_data,
16159                               p_clev_rec      => l_clev_ib_rec,
16160                               p_klev_rec      => l_klev_ib_rec,
16161                               p_cimv_rec      => l_cimv_ib_rec,
16162                               p_itiv_rec      => l_itiv_ib_tbl(j),
16163                               x_clev_rec      => x_clev_ib_rec,
16164                               x_klev_rec      => l_klev_ib_rec_out,
16165                               x_cimv_rec      => l_cimv_ib_rec_out,
16166                               x_trxv_rec      => l_trxv_ib_rec_out,
16167                               x_itiv_rec      => l_itiv_ib_tbl_out(j));
16168       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16169         EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
16170       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16171         EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
16172       END IF;
16173       EXIT WHEN (j = l_itiv_inst_tbl.LAST);
16174       j := l_itiv_inst_tbl.NEXT(j);
16175       m := m + 1;
16176     END LOOP;
16177     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16178        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16179     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16180        RAISE OKL_API.G_EXCEPTION_ERROR;
16181     END IF;
16182   END IF; --release asset --Bug# 3533936
16183 
16184   -- Added by rravikir (Estimated property tax) -- Bug 3947959
16185   -- Property tax rules are not created for Quotes, they are taken care in the
16186   -- respective API.
16187   IF (lv_scs_code IS NOT NULL AND lv_scs_code <> 'QUOTE') THEN
16188     OKL_LA_PROPERTY_TAX_PVT.create_est_prop_tax_rules(
16189             p_api_version        => p_api_version,
16190             p_init_msg_list      => p_init_msg_list,
16191             x_return_status      => x_return_status,
16192             x_msg_count          => x_msg_count,
16193             x_msg_data           => x_msg_data,
16194             p_chr_id             => ln_chr_id,
16195             p_cle_id             => ln_cle_id);
16196     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16197       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16198     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16199       RAISE OKL_API.G_EXCEPTION_ERROR;
16200     END IF;
16201     --Bug#4658856 ramurt
16202     OKL_LA_SALES_TAX_PVT.create_sales_tax_rules(
16203             p_api_version        => p_api_version,
16204             p_init_msg_list      => p_init_msg_list,
16205             x_return_status      => x_return_status,
16206             x_msg_count          => x_msg_count,
16207             x_msg_data           => x_msg_data,
16208             p_chr_id             => ln_chr_id,
16209             p_cle_id             => ln_cle_id);
16210 
16211     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16212       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16213     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16214       RAISE OKL_API.G_EXCEPTION_ERROR;
16215     END IF;
16216   END IF;
16217   -- end
16218 
16219   OKL_API.END_ACTIVITY (x_msg_count,
16220                         x_msg_data );
16221   EXCEPTION
16222     WHEN OKL_API.G_EXCEPTION_ERROR THEN
16223     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
16224                                l_api_name,
16225                                G_PKG_NAME,
16226                                'OKL_API.G_RET_STS_ERROR',
16227                                x_msg_count,
16228                                x_msg_data,
16229                                '_PVT');
16230     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
16231     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
16232                               l_api_name,
16233                               G_PKG_NAME,
16234                               'OKL_API.G_RET_STS_UNEXP_ERROR',
16235                               x_msg_count,
16236                               x_msg_data,
16237                               '_PVT');
16238     WHEN OTHERS THEN
16239     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
16240                               l_api_name,
16241                               G_PKG_NAME,
16242                               'OTHERS',
16243                               x_msg_count,
16244                               x_msg_data,
16245                               '_PVT');
16246   END Create_all_line;
16247 -----------------------------------------------------------------------------------------------
16248 --------------------- Main Process for All Lines Line Updating---------------------------------
16249 -----------------------------------------------------------------------------------------------
16250   PROCEDURE Update_all_line(
16251             p_api_version    IN  NUMBER,
16252             p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
16253             x_return_status  OUT NOCOPY VARCHAR2,
16254             x_msg_count      OUT NOCOPY NUMBER,
16255             x_msg_data       OUT NOCOPY VARCHAR2,
16256             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
16257             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
16258             p_clev_fin_rec   IN  clev_rec_type,
16259             p_klev_fin_rec   IN  klev_rec_type,
16260             p_clev_model_rec IN  clev_rec_type,
16261             p_cimv_model_rec IN  cimv_rec_type,
16262             p_clev_fa_rec    IN  clev_rec_type,
16263             p_cimv_fa_rec    IN  cimv_rec_type,
16264             p_talv_fa_rec    IN  talv_rec_type,
16265             p_clev_ib_rec    IN  clev_rec_type,
16266             p_itiv_ib_rec    IN  itiv_rec_type,
16267             x_clev_fin_rec   OUT NOCOPY clev_rec_type,
16268             x_clev_model_rec OUT NOCOPY clev_rec_type,
16269             x_clev_fa_rec    OUT NOCOPY clev_rec_type,
16270             x_clev_ib_rec    OUT NOCOPY clev_rec_type) IS
16271     l_api_name          CONSTANT VARCHAR2(30) := 'UPDATE_ALL_LINES';
16272     l_clev_fin_rec               clev_rec_type;
16273     l_klev_fin_rec               klev_rec_type;
16274     l_clev_fin_rec_out           clev_rec_type;
16275     l_klev_fin_rec_out           klev_rec_type;
16276     l_clev_model_rec             clev_rec_type;
16277     l_klev_model_rec             klev_rec_type;
16278     l_cimv_model_rec             cimv_rec_type;
16279     l_clev_model_rec_out         clev_rec_type;
16280     l_klev_model_rec_out         klev_rec_type;
16281     l_cimv_model_rec_out         cimv_rec_type;
16282     l_clev_fa_rec                clev_rec_type;
16283     l_klev_fa_rec                klev_rec_type;
16284     l_cimv_fa_rec                cimv_rec_type;
16285     l_trxv_fa_rec                trxv_rec_type;
16286     l_talv_fa_rec                talv_rec_type;
16287     l_clev_fa_rec_out            clev_rec_type;
16288     l_klev_fa_rec_out            klev_rec_type;
16289     l_cimv_fa_rec_out            cimv_rec_type;
16290     l_trxv_fa_rec_out            trxv_rec_type;
16291     l_talv_fa_rec_out            talv_rec_type;
16292     l_clev_inst_rec              clev_rec_type;
16293     l_klev_inst_rec              klev_rec_type;
16294     l_itiv_inst_rec              itiv_rec_type;
16295     l_clev_inst_rec_out          clev_rec_type;
16296     l_klev_inst_rec_out          klev_rec_type;
16297     l_itiv_inst_rec_out          itiv_rec_type;
16298     l_clev_ib_rec                clev_rec_type;
16299     l_klev_ib_rec                klev_rec_type;
16300     l_cimv_ib_rec                cimv_rec_type;
16301     l_trxv_ib_rec                trxv_rec_type;
16302     l_itiv_ib_rec                itiv_rec_type;
16303     l_clev_ib_rec_out            clev_rec_type;
16304     l_klev_ib_rec_out            klev_rec_type;
16305     l_cimv_ib_rec_out            cimv_rec_type;
16306     l_trxv_ib_rec_out            trxv_rec_type;
16307     l_itiv_ib_rec_out            itiv_rec_type;
16308     n_itiv_ib_rec                itiv_rec_type;
16309     nx_itiv_ib_rec               itiv_rec_type;
16310 
16311     r_clev_fin_rec               clev_rec_type;
16312     r_klev_fin_rec               klev_rec_type;
16313     r_clev_model_rec             clev_rec_type;
16314     r_klev_model_rec             klev_rec_type;
16315     r_cimv_model_rec             cimv_rec_type;
16316     r_clev_fa_rec                clev_rec_type;
16317     r_klev_fa_rec                klev_rec_type;
16318     r_cimv_fa_rec                cimv_rec_type;
16319     r_talv_fa_rec                talv_rec_type;
16320     r_clev_inst_rec              clev_rec_type;
16321     r_klev_inst_rec              klev_rec_type;
16322     r_itiv_inst_rec              itiv_rec_type;
16323     r_clev_ib_rec                clev_rec_type;
16324     r_klev_ib_rec                klev_rec_type;
16325     r_cimv_ib_rec                cimv_rec_type;
16326     r_itiv_ib_rec                itiv_rec_type;
16327     ln_addon_oec                 OKL_K_LINES_V.OEC%TYPE := 0;
16328     ln_klev_fin_oec              OKL_K_LINES_V.OEC%TYPE := 0;
16329     ln_klev_fin_res              OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
16330     ln_klev_fin_cap              OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
16331     ln_clev_model_price_unit     OKC_K_LINES_V.PRICE_UNIT%TYPE := 0;
16332     ln_cimv_model_no_items       OKC_K_ITEMS_V.NUMBER_OF_ITEMS%TYPE := 0;
16333     lv_object_id1_new            OKL_TXL_ITM_INSTS_V.OBJECT_ID1_NEW%TYPE;
16334     lv_model_object_id1          OKC_K_ITEMS_V.OBJECT1_ID1%TYPE;
16335     lv_model_object_id2          OKC_K_ITEMS_V.OBJECT1_ID2%TYPE;
16336     ln_dummy                     NUMBER := 0;
16337     ln_dummy1                    NUMBER := 0;
16338     i                            NUMBER := 0;
16339     j                            NUMBER := 0;
16340     l_new_yn                     VARCHAR2(3);
16341     l_go_for_calc                VARCHAR2(3):= 'Y';
16342 
16343     -- rravikir added
16344     ln_txl_itm_id                OKL_TXL_ITM_INSTS.ID%TYPE;
16345     k_itiv_ib_rec                itiv_rec_type;
16346     kx_itiv_ib_rec               itiv_rec_type;
16347     lv_object_id1                OKL_TXL_ITM_INSTS.OBJECT_ID1_NEW%TYPE;
16348     lv_object_id2                OKL_TXL_ITM_INSTS.OBJECT_ID2_NEW%TYPE;
16349     ln_inv_itm_id                OKL_TXL_ITM_INSTS.INVENTORY_ITEM_ID%TYPE;
16350     ln_inv_org_id                OKL_TXL_ITM_INSTS.INVENTORY_ORG_ID%TYPE;
16351     lv_jtot_object_code_new      OKL_TXL_ITM_INSTS.JTOT_OBJECT_CODE_NEW%TYPE;
16352     -- end rravikir
16353 
16354     CURSOR c_asset_iti(p_asset_number OKL_TXL_ASSETS_B.ASSET_NUMBER%TYPE,
16355                        p_dnz_chr_id   OKC_K_LINES_B.DNZ_CHR_ID%TYPE)
16356     IS
16357     select cle_ib.id id
16358     from okc_line_styles_b lse_ib,
16359         okc_k_lines_b cle_ib,
16360         okc_line_styles_b lse_inst,
16361         okc_k_lines_b cle_inst,
16362         okc_line_styles_b lse_tl,
16363         okc_k_lines_v cleb_tl
16364     where cleb_tl.name = P_asset_number
16365     and cleb_tl.dnz_chr_id = p_dnz_chr_id
16366     and cleb_tl.lse_id = lse_tl.id
16367     and lse_tl.lty_code = G_FIN_LINE_LTY_CODE
16368     and lse_tl.lse_type = G_TLS_TYPE
16369     and cle_inst.cle_id = cleb_tl.id
16370     and cle_inst.lse_id = lse_inst.id
16371     and lse_inst.lty_code = G_INST_LINE_LTY_CODE
16372     and cle_ib.cle_id = cle_inst.id
16373     and cle_ib.lse_id = lse_ib.id
16374     and lse_ib.lty_code = G_IB_LINE_LTY_CODE;
16375 
16376     -- rravikir added
16377     CURSOR c_get_txl_itm_insts(p_top_line_id  OKC_K_LINES_B.ID%TYPE,
16378                                p_txl_inst_id  OKL_TXL_ITM_INSTS.ID%TYPE)
16379     IS
16380     select iti.id, iti.inventory_item_id, iti.inventory_org_id,
16381            iti.object_id1_new, iti.object_id2_new, iti.jtot_object_code_new
16382     from okl_txl_itm_insts iti,
16383          okc_line_styles_b lse_ib,
16384          okc_k_lines_b cle_ib,
16385          okc_line_styles_b lse_inst,
16386          okc_k_lines_b cle_inst
16387     where cle_inst.cle_id =  p_top_line_id
16388     and   cle_inst.lse_id = lse_inst.id
16389     and   lse_inst.lty_code = G_INST_LINE_LTY_CODE
16390     and   cle_ib.cle_id = cle_inst.id
16391     and   cle_ib.lse_id = lse_ib.id
16392     and   lse_ib.lty_code = G_IB_LINE_LTY_CODE
16393     and   cle_ib.id = iti.kle_id
16394     and   cle_ib.id <> p_txl_inst_id;
16395     -- end rravikir
16396 
16397     l_top_line_id NUMBER;
16398     l_oec NUMBER;
16399 
16400     --Bug# 3533936: Enhancements for release assets
16401     l_rel_ast_fin_cle_id   NUMBER;
16402     l_itiv_ib_tbl          itiv_tbl_type;
16403 
16404     --cursor to get existing residual values
16405     --and down payment values Bug# 5192636
16406     cursor l_cle_csr          (p_cle_id in number,
16407                                p_chr_id in number) is
16408     select fin_kle.DOWN_PAYMENT_RECEIVER_CODE,
16409            fin_kle.CAPITALIZE_DOWN_PAYMENT_YN,
16410            fin_kle.residual_value,
16411            fin_kle.residual_percentage
16412     from
16413            okl_k_lines       fin_kle,
16414            okc_k_lines_b     fin_cleb
16415     where  fin_kle.id          = fin_cleb.id
16416     and    fin_cleb.id         = p_cle_id
16417     and    fin_cleb.chr_id     = p_chr_id
16418     and    fin_cleb.dnz_chr_id = p_chr_id;
16419 
16420     l_cle_rec     l_cle_csr%ROWTYPE;
16421 
16422     --cursor to get asset id from fa
16423     cursor l_fab_csr (p_asset_number in varchar2) is
16424     select asset_id
16425     from   fa_additions_b
16426     where  asset_number  = p_Asset_number;
16427 
16428     l_asset_id  fa_additions_b.asset_id%TYPE;
16429 
16430     --cursor to check if contract has re-lease assets
16431     --Bug# 15992711 : The re-leased flag is no longer checked at contract header
16432     --                but needs to be validated at contract line
16433     --                Cursor modified to include validation at asset line level
16434     /*CURSOR l_chk_rel_ast_csr (p_chr_id IN NUMBER) IS
16435     SELECT 'Y',
16436            --Bug# 4631549
16437            chr.orig_system_source_code,
16438            chr.orig_system_id1 orig_chr_id,
16439            chr.start_date
16440     FROM   okc_k_headers_b CHR,
16441            okc_rules_b     rul
16442     WHERE  CHR.ID = p_chr_id
16443     AND    rul.dnz_chr_id = CHR.id
16444     AND    rul.rule_information_category = 'LARLES'
16445     AND    NVL(rule_information1,'N') = 'Y';*/
16446 
16447     CURSOR l_chk_rel_ast_csr (p_chr_id IN NUMBER
16448                              ,p_asset_number IN OKX_ASSETS_V.ASSET_NUMBER%TYPE) IS
16449     SELECT 'Y',
16450            --Bug# 4631549
16451            chr.orig_system_source_code,
16452            chr.orig_system_id1 orig_chr_id,
16453            chr.start_date
16454     FROM   okc_k_headers_b CHR,
16455            okl_txl_assets_b  txlb,
16456            okc_line_styles_b lseb,
16457            okc_k_lines_b     cleb_top,
16458            okl_k_lines       kle_top
16459     WHERE  txlb.kle_id           =  cleb_top.id
16460     AND    cleb_top.lse_id       = lseb.id
16461     AND    lseb.lty_code         = 'FIXED_ASSET'
16462     AND    cleb_top.dnz_chr_id   = chr.id
16463     AND    kle_top.id            = cleb_top.id
16464     AND    txlb.asset_number     = p_asset_number
16465     AND    nvl(kle_top.re_lease_yn,'N') = 'Y';
16466     -- Bug# 15992711 : End of Modifications
16467 
16468     l_chk_rel_ast   Varchar2(1) default 'N';
16469     --Bug# 4631549
16470     l_orig_system_source_code OKC_K_HEADERS_B.orig_system_source_code%TYPE;
16471     l_orig_chr_id             OKC_K_HEADERS_B.ID%TYPE;
16472     l_start_date              OKC_K_HEADERS_B.START_DATE%TYPE;
16473 
16474     l_rel_ast_clev_fin_rec      clev_rec_type;
16475     l_rel_ast_klev_fin_rec      klev_rec_type;
16476     l_rel_ast_clev_model_rec    clev_rec_type;
16477     l_rel_ast_klev_model_rec    klev_rec_type;
16478     l_rel_ast_clev_fa_rec       clev_rec_type;
16479     l_rel_ast_klev_fa_rec       klev_rec_type;
16480     l_rel_ast_clev_ib_tbl       clev_tbl_type;
16481     l_rel_ast_klev_ib_tbl       klev_tbl_type;
16482     --End Bug# 3533936
16483 
16484     --Bug# 4161221: start
16485     CURSOR c_addon_line_id(p_model_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
16486                            p_chr_id       OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
16487     SELECT cle.id
16488     FROM  okc_k_lines_b cle,
16489           okc_line_styles_b lse
16490     WHERE cle.dnz_chr_id = p_chr_id
16491     AND cle.lse_id = lse.id
16492     AND lse.lty_code = G_ADDON_LINE_LTY_CODE
16493     AND cle.cle_id = p_model_cle_id;
16494 
16495     r_cimv_addon_rec             cimv_rec_type;
16496     rx_cimv_addon_rec            cimv_rec_type;
16497     --Bug# 4161221: end
16498 
16499 
16500     --Bug# 4899328
16501     --cursor to check if the contract is undergoing on-line rebook
16502       cursor l_chk_rbk_csr(p_chr_id IN NUMBER) is
16503       SELECT '!'
16504       FROM   okc_k_headers_b CHR,
16505              okl_trx_contracts ktrx
16506       WHERE  ktrx.khr_id_new = chr.id
16507       AND    ktrx.tsu_code = 'ENTERED'
16508       AND    ktrx.rbr_code is NOT NULL
16509       AND    ktrx.tcn_type = 'TRBK'
16510       --rkuttiya added for 12.1.1 Multi GAAP
16511       AND    ktrx.representation_type = 'PRIMARY'
16512       --
16513       AND    chr.id = p_chr_id
16514       AND    chr.orig_system_source_code = 'OKL_REBOOK';
16515 
16516     l_rbk_khr      VARCHAR2(1) DEFAULT '?';
16517 
16518     l_line_capital_amount  okl_k_lines.capital_amount%TYPE;
16519 
16520   --Bug# 4631549
16521   cursor l_orig_cle_csr (p_cle_id in number
16522                          ) is
16523   select cleb.orig_system_id1 orig_cle_id
16524   from   okc_k_lines_b cleb
16525   where  cleb.id   = p_cle_id;
16526 
16527   l_orig_cle_rec l_orig_cle_csr%ROWTYPE;
16528 
16529   cursor l_fbk_csr (p_asset_id in number) is
16530   select fab.book_type_code
16531   from   fa_books fab,
16532          fa_book_controls fbc
16533   where  fab.asset_id = p_asset_id
16534   and    fab.transaction_header_id_out is null
16535   and    fab.book_type_code = fbc.book_type_code
16536   and    fbc.book_class = 'CORPORATE';
16537 
16538   l_fbk_rec l_fbk_csr%ROWTYPE;
16539 
16540   l_corp_net_book_value number;
16541   l_expected_cost       number;
16542 
16543   l_clev_fin_rec2        okl_okc_migration_pvt.clev_rec_type;
16544   lx_clev_fin_rec2       okl_okc_migration_pvt.clev_rec_type;
16545   l_klev_fin_rec2        okl_contract_pub.klev_rec_type;
16546   lx_klev_fin_rec2       okl_contract_pub.klev_rec_type;
16547   --End Bug# 4631549
16548 
16549   --Added by bkatraga for bug 13717587
16550   l_db_num_of_items   NUMBER;
16551   l_db_price_unit     NUMBER;
16552 
16553   CURSOR c_get_line_details(p_dnz_chr_id NUMBER, p_clev_fin_id NUMBER) IS
16554     SELECT cim_mdl.number_of_items,
16555            cleb_mdl.price_unit
16556       FROM okc_k_lines_b cleb_mdl,
16557            okc_line_styles_b lse_mdl,
16558            okc_k_items cim_mdl
16559     WHERE  cim_mdl.cle_id = cleb_mdl.id
16560     AND    cim_mdl.dnz_chr_id = cleb_mdl.dnz_chr_id
16561     AND    cim_mdl.jtot_object1_code = 'OKX_SYSITEM'
16562     AND    lse_mdl.id = cleb_mdl.lse_id
16563     AND    lse_mdl.lty_code = 'ITEM'
16564     AND    cleb_mdl.dnz_chr_id = p_dnz_chr_id
16565     AND    cleb_mdl.cle_id = p_clev_fin_id;
16566   --end bkatraga
16567 
16568   BEGIN
16569 
16570     x_return_status := OKL_API.G_RET_STS_SUCCESS;
16571     -- Call start_activity to create savepoint, check compatibility
16572     -- and initialize message list
16573     x_return_status := OKL_API.START_ACTIVITY (
16574                                l_api_name
16575                                ,p_init_msg_list
16576                                ,'_PVT'
16577                                ,x_return_status);
16578     -- Check if activity started successfully
16579     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16580        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16581     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16582        RAISE OKL_API.G_EXCEPTION_ERROR;
16583     END IF;
16584 --start:|           14-May-2008 cklee  Bug 6405415               				     |
16585     IF p_klev_fin_rec.residual_percentage <> OKL_API.G_MISS_NUM and
16586        p_klev_fin_rec.residual_percentage IS NOT NULL THEN
16587       IF NOT p_klev_fin_rec.residual_percentage between 0 and 100 THEN
16588         OKL_API.set_message(p_app_name => G_APP_NAME,
16589                             p_msg_name => 'OKL_VALID_RESIDUAL_PERCENT');
16590         RAISE OKL_API.G_EXCEPTION_ERROR;
16591       END IF;
16592     END IF;
16593 --end:|           14-May-2008 cklee  Bug 6405415               				     |
16594 
16595     --Bug# 4959361
16596     OKL_LLA_UTIL_PVT.check_line_update_allowed
16597       (p_api_version     => p_api_version,
16598        p_init_msg_list   => p_init_msg_list,
16599        x_return_status   => x_return_status,
16600        x_msg_count       => x_msg_count,
16601        x_msg_data        => x_msg_data,
16602        p_cle_id          => p_clev_fin_rec.id);
16603 
16604     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16605        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16606     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16607        RAISE OKL_API.G_EXCEPTION_ERROR;
16608     END IF;
16609     --Bug# 4959361
16610 
16611     l_new_yn         := p_new_yn;
16612     l_clev_fin_rec   := p_clev_fin_rec;
16613     l_klev_fin_rec   := p_klev_fin_rec;
16614 
16615     --Bug# 6888733: start
16616 
16617     if l_klev_fin_rec.RESIDUAL_GRNTY_AMOUNT = fnd_api.g_miss_num then
16618       l_klev_fin_rec.RESIDUAL_GRNTY_AMOUNT := null;
16619     end if;
16620 
16621     --Bug# 6888733: end
16622 
16623     l_clev_model_rec := p_clev_model_rec;
16624     l_cimv_model_rec := p_cimv_model_rec;
16625     l_clev_fa_rec    := p_clev_fa_rec;
16626     l_cimv_fa_rec    := p_cimv_fa_rec;
16627     l_talv_fa_rec    := p_talv_fa_rec;
16628     l_itiv_inst_rec  := p_itiv_ib_rec;
16629     l_clev_ib_rec    := p_clev_ib_rec;
16630     l_itiv_ib_rec    := p_itiv_ib_rec;
16631     IF (l_clev_fin_rec.dnz_chr_id IS NULL OR
16632        l_clev_fin_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
16633        OKL_API.set_message(p_app_name     => G_APP_NAME,
16634                            p_msg_name     => G_REQUIRED_VALUE,
16635                            p_token1       => G_COL_NAME_TOKEN,
16636                            p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID for All Lines');
16637        RAISE OKL_API.G_EXCEPTION_ERROR;
16638     END IF;
16639 
16640 
16641     ------------------------------------------------------
16642     --Bug# 3533936 : Release Asset Case - all line details
16643     -- should default from exising asset
16644     ------------------------------------------------------
16645     l_chk_rel_ast := 'N';
16646 
16647     -- Bug# 15992711 : Change in number of parameters passed to new cursor
16648     -- Open l_chk_rel_ast_csr(p_chr_id => l_clev_fin_rec.dnz_chr_id);
16649     Open l_chk_rel_ast_csr(l_clev_fin_rec.dnz_chr_id
16650                           , p_asset_number);
16651     -- Bug# 15992711 : End of Modifications
16652 
16653     FETCH l_chk_rel_ast_csr INTO l_chk_rel_ast,
16654                                  --Bug# 4631549
16655                                  l_orig_system_source_code,
16656                                  l_orig_chr_id,
16657                                  l_start_date;
16658     If l_chk_rel_ast_csr%NOTFOUND then
16659         null;
16660     end if;
16661     close l_chk_rel_ast_csr;
16662 
16663     If l_new_yn   = 'N'  And l_chk_rel_ast = 'Y' Then
16664 
16665         open l_fab_csr(p_asset_number => p_asset_number );
16666         fetch l_fab_csr into l_asset_id;
16667         If l_fab_csr%NOTFOUND then
16668            --error invalid line
16669            NULL;
16670         End If;
16671         close l_fab_csr;
16672 
16673 
16674         If l_klev_fin_rec.id  = OKL_API.G_MISS_NUM then
16675             l_klev_fin_rec.id := l_clev_fin_rec.id;
16676         End If;
16677 
16678 
16679         l_itiv_ib_tbl(1) := l_itiv_ib_rec;
16680 
16681         --Bug# 4631549
16682         If nvl(l_orig_system_source_code,okl_api.g_miss_char) <> 'OKL_RELEASE' Then
16683         update_release_asset_line
16684             (p_api_version     => p_api_version,
16685              p_init_msg_list   => p_init_msg_list,
16686              x_return_status   => x_return_status,
16687              x_msg_count       => x_msg_count,
16688              x_msg_data        => x_msg_data,
16689              p_asset_id        => to_char(l_asset_id),
16690              p_chr_id          => l_clev_fin_rec.dnz_chr_id,
16691              p_clev_fin_id     => l_clev_fin_rec.id,
16692              x_cle_id          => l_rel_ast_fin_cle_id);
16693 
16694         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16695             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16696         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16697             RAISE OKL_API.G_EXCEPTION_ERROR;
16698         END IF;
16699 
16700 
16701 
16702         Modify_Release_Asset_Line(
16703             p_api_version    =>  p_api_version,
16704             p_init_msg_list  => p_init_msg_list,
16705             x_return_status  => x_return_status,
16706             x_msg_count      => x_msg_count,
16707             x_msg_data       => x_msg_data,
16708             p_clev_fin_rec   => l_clev_fin_rec,
16709             p_klev_fin_rec   => l_klev_fin_rec,
16710 	     --akrangan Bug# 5362977 start
16711             p_clev_model_rec => l_clev_model_rec,
16712             --akrangan Bug# 5362977 end
16713             p_cimv_model_rec => l_cimv_model_rec,
16714             p_clev_fa_rec    => l_clev_fa_rec,
16715             p_cimv_fa_rec    => l_cimv_fa_rec,
16716             p_talv_fa_rec    => l_talv_fa_rec,
16717             p_itiv_ib_tbl    => l_itiv_ib_tbl,
16718             p_cle_id         => l_rel_ast_fin_cle_id,
16719             --Bug# 4631549
16720             p_call_mode      => 'RELEASE_ASSET',
16721             x_clev_fin_rec   => l_rel_ast_clev_fin_rec,
16722             x_klev_fin_rec   => l_rel_ast_klev_fin_rec,
16723             x_clev_model_rec => l_rel_ast_clev_model_rec,
16724             x_klev_model_rec => l_rel_ast_klev_model_rec,
16725             x_clev_fa_rec    => l_rel_ast_clev_fa_rec,
16726             x_klev_fa_rec    => l_rel_ast_klev_fa_rec,
16727             x_clev_ib_tbl    => l_rel_ast_clev_ib_tbl,
16728             x_klev_ib_tbl    => l_rel_ast_klev_ib_tbl);
16729 
16730         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16731            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16732         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16733            RAISE OKL_API.G_EXCEPTION_ERROR;
16734         END IF;
16735 
16736         x_clev_fin_rec   := l_rel_ast_clev_fin_rec;
16737         x_clev_model_rec := l_rel_ast_clev_model_rec;
16738         x_clev_fa_rec    := l_rel_ast_clev_fa_rec;
16739         If l_rel_ast_clev_ib_tbl.COUNT > 0 then
16740             x_clev_ib_rec    := l_rel_ast_clev_ib_tbl(1);
16741         End If;
16742 
16743         --Bug# 4631549
16744         ElsIf nvl(l_orig_system_source_code,OKL_API.G_MISS_CHAR) = 'OKL_RELEASE' Then
16745 
16746            Modify_Release_Asset_Line(
16747             p_api_version    =>  p_api_version,
16748             p_init_msg_list  => p_init_msg_list,
16749             x_return_status  => x_return_status,
16750             x_msg_count      => x_msg_count,
16751             x_msg_data       => x_msg_data,
16752             p_clev_fin_rec   => l_clev_fin_rec,
16753             p_klev_fin_rec   => l_klev_fin_rec,
16754 	     --akrangan Bug# 5362977 start
16755             p_clev_model_rec => l_clev_model_rec,
16756             --akrangan Bug# 5362977 end
16757             p_cimv_model_rec => l_cimv_model_rec,
16758             p_clev_fa_rec    => l_clev_fa_rec,
16759             p_cimv_fa_rec    => l_cimv_fa_rec,
16760             p_talv_fa_rec    => l_talv_fa_rec,
16761             p_itiv_ib_tbl    => l_itiv_ib_tbl,
16762             p_cle_id         => l_clev_fin_rec.id,
16763             --Bug# 4631549
16764             p_call_mode      => 'RELEASE_CONTRACT',
16765             x_clev_fin_rec   => l_rel_ast_clev_fin_rec,
16766             x_klev_fin_rec   => l_rel_ast_klev_fin_rec,
16767             x_clev_model_rec => l_rel_ast_clev_model_rec,
16768             x_klev_model_rec => l_rel_ast_klev_model_rec,
16769             x_clev_fa_rec    => l_rel_ast_clev_fa_rec,
16770             x_klev_fa_rec    => l_rel_ast_klev_fa_rec,
16771             x_clev_ib_tbl    => l_rel_ast_clev_ib_tbl,
16772             x_klev_ib_tbl    => l_rel_ast_klev_ib_tbl);
16773 
16774         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16775            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16776         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16777            RAISE OKL_API.G_EXCEPTION_ERROR;
16778         END IF;
16779 
16780         x_clev_fin_rec   := l_rel_ast_clev_fin_rec;
16781         x_clev_model_rec := l_rel_ast_clev_model_rec;
16782         x_clev_fa_rec    := l_rel_ast_clev_fa_rec;
16783         IF l_rel_ast_clev_ib_tbl.COUNT > 0 THEN
16784             x_clev_ib_rec    := l_rel_ast_clev_ib_tbl(1);
16785         END IF;
16786             open l_orig_cle_csr (p_cle_id => x_clev_fin_rec.id);
16787             fetch l_orig_cle_csr into l_orig_cle_rec;
16788             close l_orig_cle_csr;
16789 
16790             open l_fbk_csr (p_asset_id => l_asset_id);
16791             fetch l_fbk_csr into l_fbk_rec;
16792             close l_fbk_csr;
16793 
16794             OKL_RELEASE_PVT.Calculate_Expected_Cost
16795                                (p_api_version    => p_api_version,
16796                                 p_init_msg_list  => p_init_msg_list,
16797                                 x_return_status  => x_return_status,
16798                                 x_msg_count      => x_msg_count,
16799                                 x_msg_data       => x_msg_data,
16800                                 p_new_chr_id     => x_clev_fin_rec.dnz_chr_id,
16801                                 p_orig_chr_id    => l_orig_chr_id,
16802                                 p_orig_cle_id    => l_orig_cle_rec.orig_cle_id,
16803                                 p_asset_id       => l_asset_id,
16804                                 p_book_type_code => l_fbk_rec.book_type_code,
16805                                 p_release_date   => l_start_date,
16806                                 p_nbv            => l_corp_net_book_value,
16807                                 x_expected_cost  => l_expected_cost);
16808 
16809             IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16810                 RAISE OKL_API.G_EXCEPTION_ERROR;
16811             ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16812                 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16813             END IF;
16814 
16815             l_clev_fin_rec2.id := x_clev_fin_rec.id;
16816             l_klev_fin_rec2.id := x_clev_fin_rec.id;
16817             l_klev_fin_rec2.expected_asset_cost := l_expected_cost;
16818 
16819             OKL_CONTRACT_PUB.update_contract_line
16820                                 (p_api_version    => p_api_version,
16821                                 p_init_msg_list  => p_init_msg_list,
16822                                 x_return_status  => x_return_status,
16823                                 x_msg_count      => x_msg_count,
16824                                 x_msg_data       => x_msg_data,
16825                                 p_clev_rec       => l_clev_fin_rec2,
16826                                 p_klev_rec       => l_klev_fin_rec2,
16827                                 x_clev_rec       => lx_clev_fin_rec2,
16828                                 x_klev_rec       => lx_klev_fin_rec2);
16829 
16830              IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16831                  RAISE OKL_API.G_EXCEPTION_ERROR;
16832              ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16833                  RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16834              END IF;
16835          End If;
16836          --End Bug# 4631549
16837 
16838     Else
16839     --End Bug# 3533936
16840 
16841 
16842 
16843     -- Check for Required Values
16844     x_return_status := check_required_values(p_item1    => l_cimv_model_rec.object1_id1,
16845                                              p_item2    => l_cimv_model_rec.object1_id2,
16846                                              p_ast_no   => l_talv_fa_rec.asset_number,
16847                                              p_ast_desc => l_talv_fa_rec.description,
16848                                              p_cost     => l_talv_fa_rec.original_cost,
16849                                              p_units    => l_talv_fa_rec.current_units,
16850                                              p_ib_loc1  => l_itiv_ib_rec.object_id1_new,
16851                                              p_ib_loc2  => l_itiv_ib_rec.object_id2_new,
16852                                              p_fa_loc   => l_talv_fa_rec.fa_location_id,
16853                                              p_refinance_amount => l_klev_fin_rec.refinance_amount,
16854                                              p_chr_id   => l_clev_fin_rec.dnz_chr_id);
16855     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16856        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16857     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16858        RAISE OKL_API.G_EXCEPTION_ERROR;
16859     END IF;
16860 
16861     --Added by bkatraga for bug 13717587
16862     OPEN c_get_line_details(p_dnz_chr_id => l_clev_fin_rec.dnz_chr_id, p_clev_fin_id => l_clev_fin_rec.id);
16863     FETCH c_get_line_details INTO l_db_num_of_items, l_db_price_unit;
16864     CLOSE c_get_line_details;
16865     --end bkatraga
16866 
16867     -- To Get the txlv fa Line Record
16868     x_return_status := get_rec_txlv(l_clev_fa_rec.id,
16869                                     r_talv_fa_rec);
16870     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16871        OKL_API.set_message(p_app_name     => G_APP_NAME,
16872                            p_msg_name     => G_FETCHING_INFO,
16873                            p_token1       => G_REC_NAME_TOKEN,
16874                            p_token1_value => 'OKL_TXL_ASSETS_V Record');
16875        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16876     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16877        OKL_API.set_message(p_app_name     => G_APP_NAME,
16878                            p_msg_name     => G_FETCHING_INFO,
16879                            p_token1       => G_REC_NAME_TOKEN,
16880                            p_token1_value => 'OKL_TXL_ASSETS_V Record');
16881        RAISE OKL_API.G_EXCEPTION_ERROR;
16882     END IF;
16883     IF (l_talv_fa_rec.asset_number IS NUll OR
16884         l_talv_fa_rec.asset_number = OKL_API.G_MISS_CHAR) THEN
16885         l_talv_fa_rec.asset_number  := r_talv_fa_rec.asset_number;
16886 --    ELSIF l_talv_fa_rec.asset_number = r_talv_fa_rec.asset_number THEN
16887 --        l_new_yn  := 'N';
16888     END IF;
16889     IF (l_talv_fa_rec.original_cost IS NUll OR
16890         l_talv_fa_rec.original_cost = OKL_API.G_MISS_NUM) THEN
16891        OKL_API.set_message(p_app_name     => G_APP_NAME,
16892                            p_msg_name     => G_REQUIRED_VALUE,
16893                            p_token1       => G_REC_NAME_TOKEN,
16894                            p_token1_value => 'OKL_TXL_ASSETS_V.ORIGINAL_COST');
16895        RAISE OKL_API.G_EXCEPTION_ERROR;
16896     END IF;
16897     IF (l_talv_fa_rec.current_units IS NUll OR
16898         l_talv_fa_rec.current_units = OKL_API.G_MISS_NUM) THEN
16899        OKL_API.set_message(p_app_name     => G_APP_NAME,
16900                            p_msg_name     => G_REQUIRED_VALUE,
16901                            p_token1       => G_COL_NAME_TOKEN,
16902                            p_token1_value => 'OKL_TXL_ASSETS_V.CURRENT_UNITS');
16903        RAISE OKL_API.G_EXCEPTION_ERROR;
16904     END IF;
16905     l_clev_model_rec.price_unit         := l_talv_fa_rec.original_cost;
16906     l_clev_fa_rec.price_unit            := l_talv_fa_rec.original_cost;
16907     l_cimv_model_rec.number_of_items    := l_talv_fa_rec.current_units;
16908     l_cimv_fa_rec.number_of_items       := l_talv_fa_rec.current_units;
16909     -- To Get the kle top Line Record
16910     x_return_status := get_rec_clev(l_clev_fin_rec.id,
16911                                     r_clev_fin_rec);
16912     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16913        OKL_API.set_message(p_app_name     => G_APP_NAME,
16914                            p_msg_name     => G_FETCHING_INFO,
16915                            p_token1       => G_REC_NAME_TOKEN,
16916                            p_token1_value => 'OKC_K_LINES_V Record');
16917        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16918     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16919        OKL_API.set_message(p_app_name     => G_APP_NAME,
16920                            p_msg_name     => G_FETCHING_INFO,
16921                            p_token1       => G_REC_NAME_TOKEN,
16922                            p_token1_value => 'OKC_K_LINES_V Record');
16923        RAISE OKL_API.G_EXCEPTION_ERROR;
16924     END IF;
16925     -- To Get the kle top Line Record
16926     x_return_status := get_rec_klev(l_clev_fin_rec.id,
16927                                     r_klev_fin_rec);
16928     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16929        OKL_API.set_message(p_app_name     => G_APP_NAME,
16930                            p_msg_name     => G_FETCHING_INFO,
16931                            p_token1       => G_REC_NAME_TOKEN,
16932                            p_token1_value => 'OKL_K_LINES_V Record');
16933        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16934     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16935        OKL_API.set_message(p_app_name     => G_APP_NAME,
16936                            p_msg_name     => G_FETCHING_INFO,
16937                            p_token1       => G_REC_NAME_TOKEN,
16938                            p_token1_value => 'OKL_K_LINES_V Record');
16939        RAISE OKL_API.G_EXCEPTION_ERROR;
16940     END IF;
16941     IF r_clev_fin_rec.id <> r_klev_fin_rec.id THEN
16942        OKL_API.set_message(p_app_name     => G_APP_NAME,
16943                            p_msg_name     => G_LINE_RECORD);
16944        RAISE OKL_API.G_EXCEPTION_ERROR;
16945     END IF;
16946     --Build the clev Top Line Record
16947     l_clev_fin_rec.cle_id           := null;
16948     IF (l_clev_fin_rec.chr_id IS NUll OR
16949        l_clev_fin_rec.chr_id = OKL_API.G_MISS_NUM) THEN
16950        l_clev_fin_rec.chr_id  := r_clev_fin_rec.chr_id;
16951     END IF;
16952     IF (l_clev_fin_rec.name IS NUll OR
16953        l_clev_fin_rec.name = OKL_API.G_MISS_CHAR) AND
16954        (r_clev_fin_rec.name <> p_asset_number) THEN
16955        l_clev_fin_rec.name  := p_asset_number;
16956     END IF;
16957     IF (l_clev_fin_rec.exception_yn IS NUll OR
16958        l_clev_fin_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
16959        l_clev_fin_rec.exception_yn  := r_clev_fin_rec.exception_yn;
16960     END IF;
16961     IF (l_clev_fin_rec.display_sequence IS NUll OR
16962        l_clev_fin_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
16963        l_clev_fin_rec.display_sequence := r_clev_fin_rec.display_sequence;
16964     END IF;
16965     IF (l_clev_fin_rec.lse_id IS NUll OR
16966        l_clev_fin_rec.lse_id = OKL_API.G_MISS_NUM) THEN
16967        l_clev_fin_rec.lse_id := r_clev_fin_rec.lse_id;
16968     END IF;
16969     IF (l_clev_fin_rec.line_number IS NUll OR
16970        l_clev_fin_rec.line_number = OKL_API.G_MISS_CHAR) THEN
16971        l_clev_fin_rec.line_number := r_clev_fin_rec.line_number;
16972     END IF;
16973     IF (l_clev_fin_rec.sts_code IS NUll OR
16974        l_clev_fin_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
16975        l_clev_fin_rec.sts_code  := r_clev_fin_rec.sts_code;
16976     END IF;
16977     --Build the klev Top Line Record
16978     IF l_new_yn = 'Y' THEN
16979        ln_clev_model_price_unit := abs(l_talv_fa_rec.original_cost);
16980        ln_cimv_model_no_items   := l_talv_fa_rec.current_units;
16981     ELSIF l_new_yn = 'N' THEN
16982        IF l_clev_model_rec.price_unit = OKL_API.G_MISS_NUM THEN
16983           l_clev_model_rec.price_unit := null;
16984        END IF;
16985        IF l_cimv_model_rec.number_of_items = OKL_API.G_MISS_NUM THEN
16986           l_cimv_model_rec.number_of_items := null;
16987        END IF;
16988        ln_clev_model_price_unit := abs(l_talv_fa_rec.original_cost);
16989        ln_cimv_model_no_items   := l_talv_fa_rec.current_units;
16990        -- we need to modify the code, let it go a temp
16991 --       ln_clev_model_price_unit := nvl(l_clev_model_rec.price_unit,0);
16992 --       ln_cimv_model_no_items   := nvl(l_cimv_model_rec.number_of_items,0);
16993     END IF;
16994     l_klev_fin_rec.id := r_klev_fin_rec.id;
16995 
16996     l_clev_fin_rec.item_description := l_talv_fa_rec.description;
16997     -- Update of the Financial Asset Line
16998     update_fin_line(p_api_version   => p_api_version,
16999                     p_init_msg_list => p_init_msg_list,
17000                     x_return_status => x_return_status,
17001                     x_msg_count     => x_msg_count,
17002                     x_msg_data      => x_msg_data,
17003                     P_new_yn        => l_new_yn,
17004                     p_asset_number  => p_asset_number,
17005                     p_clev_rec      => l_clev_fin_rec,
17006                     p_klev_rec      => l_klev_fin_rec,
17007                     x_clev_rec      => x_clev_fin_rec,
17008                     x_klev_rec      => l_klev_fin_rec_out);
17009     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17010       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17011     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17012       RAISE OKL_API.G_EXCEPTION_ERROR;
17013     END IF;
17014 
17015     --We have to build the Model Line Record for the calculations of the
17016     -- oec of the top line
17017     -- To Get the cle Model Line Record
17018     x_return_status := get_rec_clev(l_clev_model_rec.id,
17019                                     r_clev_model_rec);
17020     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17021        OKL_API.set_message(p_app_name     => G_APP_NAME,
17022                            p_msg_name     => G_FETCHING_INFO,
17023                            p_token1       => G_REC_NAME_TOKEN,
17024                            p_token1_value => 'OKC_K_LINES_V Record');
17025        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17026     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17027        OKL_API.set_message(p_app_name     => G_APP_NAME,
17028                            p_msg_name     => G_FETCHING_INFO,
17029                            p_token1       => G_REC_NAME_TOKEN,
17030                            p_token1_value => 'OKC_K_LINES_V Record');
17031        RAISE OKL_API.G_EXCEPTION_ERROR;
17032     END IF;
17033     -- To Get the kle Model Line Record
17034     x_return_status := get_rec_klev(l_clev_model_rec.id,
17035                                     r_klev_model_rec);
17036     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17037        OKL_API.set_message(p_app_name     => G_APP_NAME,
17038                            p_msg_name     => G_FETCHING_INFO,
17039                            p_token1       => G_REC_NAME_TOKEN,
17040                            p_token1_value => 'OKL_K_LINES_V Record');
17041        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17042     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17043        OKL_API.set_message(p_app_name     => G_APP_NAME,
17044                            p_msg_name     => G_FETCHING_INFO,
17045                            p_token1       => G_REC_NAME_TOKEN,
17046                            p_token1_value => 'OKL_K_LINES_V Record');
17047        RAISE OKL_API.G_EXCEPTION_ERROR;
17048     END IF;
17049     IF r_klev_model_rec.id <> r_clev_model_rec.id THEN
17050        OKL_API.set_message(p_app_name     => G_APP_NAME,
17051                            p_msg_name     => G_LINE_RECORD);
17052        RAISE OKL_API.G_EXCEPTION_ERROR;
17053     END IF;
17054     -- Build clev Model Line Record
17055     l_clev_model_rec.chr_id          := null;
17056     IF (l_clev_model_rec.cle_id IS NUll OR
17057         l_clev_model_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17058         l_clev_model_rec.cle_id  := r_clev_model_rec.cle_id;
17059     END IF;
17060     IF (l_clev_model_rec.dnz_chr_id IS NUll OR
17061         l_clev_model_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
17062         l_clev_model_rec.dnz_chr_id  := r_clev_model_rec.dnz_chr_id;
17063     END IF;
17064     IF (l_clev_model_rec.lse_id IS NUll OR
17065         l_clev_model_rec.lse_id = OKL_API.G_MISS_NUM) THEN
17066         l_clev_model_rec.lse_id  := r_clev_model_rec.lse_id;
17067     END IF;
17068     IF (l_clev_model_rec.display_sequence IS NUll OR
17069         l_clev_model_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
17070         l_clev_model_rec.display_sequence  := r_clev_model_rec.display_sequence;
17071     END IF;
17072     IF (l_clev_model_rec.exception_yn IS NUll OR
17073         l_clev_model_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
17074         l_clev_model_rec.exception_yn  := r_clev_model_rec.exception_yn;
17075     END IF;
17076     IF (l_clev_model_rec.line_number IS NUll OR
17077         l_clev_model_rec.line_number = OKL_API.G_MISS_CHAR) THEN
17078         l_clev_model_rec.line_number  := r_clev_model_rec.line_number;
17079     END IF;
17080     IF (l_clev_model_rec.sts_code IS NUll OR
17081         l_clev_model_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
17082         l_clev_model_rec.sts_code  := r_clev_model_rec.sts_code;
17083     END IF;
17084     -- Build klev Model Line Record
17085     l_klev_model_rec := r_klev_model_rec;
17086     -- To Get the cimv Model Line Record
17087     x_return_status := get_rec_cimv(l_clev_model_rec.id,
17088                                     l_clev_model_rec.dnz_chr_id,
17089                                     r_cimv_model_rec);
17090     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17091        OKL_API.set_message(p_app_name     => G_APP_NAME,
17092                            p_msg_name     => G_FETCHING_INFO,
17093                            p_token1       => G_REC_NAME_TOKEN,
17094                            p_token1_value => 'OKC_K_ITEMS_V Record');
17095        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17096     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17097        OKL_API.set_message(p_app_name     => G_APP_NAME,
17098                            p_msg_name     => G_FETCHING_INFO,
17099                            p_token1       => G_REC_NAME_TOKEN,
17100                            p_token1_value => 'OKC_K_ITEMS_V Record');
17101        RAISE OKL_API.G_EXCEPTION_ERROR;
17102     END IF;
17103     --Build Model cimv item rec
17104     l_cimv_model_rec.id  := r_cimv_model_rec.id;
17105     IF (l_cimv_model_rec.exception_yn IS NUll OR
17106         l_cimv_model_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
17107         l_cimv_model_rec.exception_yn  := r_cimv_model_rec.exception_yn;
17108     END IF;
17109     IF (l_cimv_model_rec.dnz_chr_id IS NUll OR
17110         l_cimv_model_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
17111         l_cimv_model_rec.dnz_chr_id  := r_cimv_model_rec.dnz_chr_id;
17112     END IF;
17113     IF (l_cimv_model_rec.cle_id IS NUll OR
17114         l_cimv_model_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17115         l_cimv_model_rec.cle_id := r_cimv_model_rec.cle_id;
17116     END IF;
17117     -- We need to check the below since we do not have to call the formula
17118     -- Engine avery time. Which means that we have to call the formula Engine
17119     -- only if the price unit and number of items change.
17120 /*
17121     IF l_clev_model_rec.price_unit      <> r_clev_model_rec.price_unit AND
17122        l_cimv_model_rec.number_of_items <> r_cimv_model_rec.number_of_items THEN
17123        l_klev_fin_rec.residual_percentage <> r_klev_fin_rec.residual_percentage AND
17124        l_klev_fin_rec.residual_value <> r_klev_fin_rec.residual_value THEN
17125        l_go_for_calc := 'Y';
17126     ELSIF l_clev_model_rec.price_unit   <> r_clev_model_rec.price_unit OR
17127        l_cimv_model_rec.number_of_items <> r_cimv_model_rec.number_of_items THEN
17128        l_klev_fin_rec.residual_percentage <> r_klev_fin_rec.residual_percentage OR
17129        l_klev_fin_rec.residual_value <> r_klev_fin_rec.residual_value THEN
17130        l_go_for_calc := 'Y';
17131     ELSE
17132        l_go_for_calc := 'N';
17133     END IF;
17134 */
17135     -- Updating of the Model Line and Item Record
17136     update_model_line(p_api_version   => p_api_version,
17137                       p_init_msg_list => p_init_msg_list,
17138                       x_return_status => x_return_status,
17139                       x_msg_count     => x_msg_count,
17140                       x_msg_data      => x_msg_data,
17141                       P_new_yn        => l_new_yn,
17142                       p_asset_number  => p_asset_number,
17143                       p_clev_rec      => l_clev_model_rec,
17144                       p_klev_rec      => l_klev_model_rec,
17145                       p_cimv_rec      => l_cimv_model_rec,
17146                       x_clev_rec      => x_clev_model_rec,
17147                       x_klev_rec      => l_klev_model_rec_out,
17148                       x_cimv_rec      => l_cimv_model_rec_out);
17149     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17150       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17151     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17152       RAISE OKL_API.G_EXCEPTION_ERROR;
17153     END IF;
17154 
17155     --Bug# 4161221: start
17156     -- Update No. of Units on Add-on line when there is a change in the
17157     -- No. of Units on Asset line.
17158     FOR r_addon_line_id IN c_addon_line_id(p_model_cle_id => x_clev_model_rec.id,
17159                                            p_chr_id => x_clev_model_rec.dnz_chr_id) LOOP
17160 
17161       -- To Get the cimv Addon Line Record
17162       x_return_status := get_rec_cimv(r_addon_line_id.id,
17163                                       x_clev_model_rec.dnz_chr_id,
17164                                       r_cimv_addon_rec);
17165       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17166          OKL_API.set_message(p_app_name     => G_APP_NAME,
17167                              p_msg_name     => G_FETCHING_INFO,
17168                              p_token1       => G_REC_NAME_TOKEN,
17169                              p_token1_value => 'OKC_K_ITEMS_V Record');
17170          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
17171       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17172          OKL_API.set_message(p_app_name     => G_APP_NAME,
17173                              p_msg_name     => G_FETCHING_INFO,
17174                              p_token1       => G_REC_NAME_TOKEN,
17175                              p_token1_value => 'OKC_K_ITEMS_V Record');
17176          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
17177       END IF;
17178 
17179       IF (NVL(r_cimv_addon_rec.number_of_items,0) <>
17180           NVL(l_cimv_model_rec_out.number_of_items,0)) THEN
17181 
17182         --Build addon cimv item rec
17183         r_cimv_addon_rec.number_of_items  := l_cimv_model_rec_out.number_of_items;
17184         -- Updating of the addon Item Record
17185 
17186         OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version   => p_api_version,
17187                                                    p_init_msg_list => p_init_msg_list,
17188                                                    x_return_status => x_return_status,
17189                                                    x_msg_count     => x_msg_count,
17190                                                    x_msg_data      => x_msg_data,
17191                                                    p_cimv_rec      => r_cimv_addon_rec,
17192                                                    x_cimv_rec      => rx_cimv_addon_rec);
17193         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17194             OKL_API.set_message(p_app_name     => G_APP_NAME,
17195                                 p_msg_name     => G_UPDATING_ADDON_ITEM);
17196             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17197         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17198             OKL_API.set_message(p_app_name     => G_APP_NAME,
17199                                 p_msg_name     => G_UPDATING_ADDON_ITEM);
17200             RAISE OKL_API.G_EXCEPTION_ERROR;
17201         END IF;
17202       END IF;
17203     END LOOP;
17204     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17205        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17206     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17207        RAISE OKL_API.G_EXCEPTION_ERROR;
17208     END IF;
17209     --Bug# 4161221: end
17210 
17211     lv_model_object_id1  := l_cimv_model_rec_out.object1_id1;
17212     lv_model_object_id2  := l_cimv_model_rec_out.object1_id2;
17213     IF l_go_for_calc = 'Y' THEN
17214       -- Calculate the OEC to Populate the OKL_K_LINES_V.OEC
17215       oec_calc_upd_fin_rec(p_api_version        => p_api_version,
17216                            p_init_msg_list      => p_init_msg_list,
17217                            x_return_status      => x_return_status,
17218                            x_msg_count          => x_msg_count,
17219                            x_msg_data           => x_msg_data,
17220                            P_new_yn             => P_new_yn,
17221                            p_asset_number       => p_asset_number,
17222 			   -- 4414408
17223                            p_top_line_id        => l_clev_fin_rec.id,
17224                            p_dnz_chr_id         => x_clev_model_rec.dnz_chr_id,
17225                            x_fin_clev_rec       => x_clev_fin_rec,
17226                            x_fin_klev_rec       => l_klev_fin_rec_out,
17227                            x_oec                => ln_klev_fin_oec,
17228                            p_validate_fin_line  => OKL_API.G_TRUE);
17229       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17230         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17231       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17232         RAISE OKL_API.G_EXCEPTION_ERROR;
17233       END IF;
17234       -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
17235       cap_amt_calc_upd_fin_rec(p_api_version        => p_api_version,
17236                                p_init_msg_list      => p_init_msg_list,
17237                                x_return_status      => x_return_status,
17238                                x_msg_count          => x_msg_count,
17239                                x_msg_data           => x_msg_data,
17240                                P_new_yn             => P_new_yn,
17241                                p_asset_number       => p_asset_number,
17242 			       -- 4414408
17243                                p_top_line_id        => l_clev_fin_rec.id,
17244                                p_dnz_chr_id         => x_clev_model_rec.dnz_chr_id,
17245                                x_fin_clev_rec       => x_clev_fin_rec,
17246                                x_fin_klev_rec       => l_klev_fin_rec_out,
17247                                x_cap_amt            => ln_klev_fin_cap,
17248                                p_validate_fin_line  => OKL_API.G_TRUE);
17249       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17250         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17251       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17252         RAISE OKL_API.G_EXCEPTION_ERROR;
17253       END IF;
17254       IF l_klev_fin_rec.residual_percentage = OKL_API.G_MISS_NUM THEN
17255         l_klev_fin_rec.residual_percentage := null;
17256       ELSIF l_klev_fin_rec.residual_value = OKL_API.G_MISS_NUM THEN
17257         l_klev_fin_rec.residual_value := null;
17258       END IF;
17259       -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
17260       IF (l_klev_fin_rec.residual_percentage IS NOT NULL OR
17261          l_klev_fin_rec.residual_percentage <> OKL_API.G_MISS_NUM) AND
17262          (l_klev_fin_rec.residual_value IS NOT NULL OR
17263          l_klev_fin_rec.residual_value <> OKL_API.G_MISS_NUM) THEN
17264          IF l_klev_fin_rec.residual_value <> r_klev_fin_rec.residual_value THEN
17265 
17266            l_top_line_id := x_clev_fin_rec.id;
17267            l_oec := l_klev_fin_rec_out.oec;
17268 
17269            get_res_per_upd_fin_rec(p_api_version        => p_api_version,
17270                                    p_init_msg_list      => p_init_msg_list,
17271                                    x_return_status      => x_return_status,
17272                                    x_msg_count          => x_msg_count,
17273                                    x_msg_data           => x_msg_data,
17274                                    P_new_yn             => P_new_yn,
17275                                    p_asset_number       => p_asset_number,
17276                                    p_res_value          => l_klev_fin_rec.residual_value,
17277                                    p_oec                => l_oec,  --l_klev_fin_rec_out.oec
17278                                    p_top_line_id        => l_top_line_id, --x_clev_fin_rec.id,
17279                                    p_dnz_chr_id         => x_clev_model_rec.dnz_chr_id,
17280                                    x_fin_clev_rec       => x_clev_fin_rec,
17281                                    x_fin_klev_rec       => l_klev_fin_rec_out,
17282                                    p_validate_fin_line  => OKL_API.G_TRUE);
17283            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17284              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17285            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17286              RAISE OKL_API.G_EXCEPTION_ERROR;
17287            END IF;
17288          ELSIF l_klev_fin_rec.residual_percentage <> r_klev_fin_rec.residual_percentage THEN
17289            res_value_calc_upd_fin_rec(p_api_version        => p_api_version,
17290                                       p_init_msg_list      => p_init_msg_list,
17291                                       x_return_status      => x_return_status,
17292                                       x_msg_count          => x_msg_count,
17293                                       x_msg_data           => x_msg_data,
17294                                       P_new_yn             => P_new_yn,
17295                                       p_asset_number       => p_asset_number,
17296 				      -- 4414408
17297                                       p_top_line_id        => x_clev_model_rec.cle_id,
17298                                       p_dnz_chr_id         => x_clev_model_rec.dnz_chr_id,
17299                                       x_fin_clev_rec       => x_clev_fin_rec,
17300                                       x_fin_klev_rec       => l_klev_fin_rec_out,
17301                                       x_res_value          => ln_klev_fin_res,
17302                                       p_validate_fin_line  => OKL_API.G_TRUE);
17303            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17304              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17305            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17306              RAISE OKL_API.G_EXCEPTION_ERROR;
17307            END IF;
17308          END IF;
17309       ELSIF (l_klev_fin_rec.residual_percentage IS NULL OR
17310         l_klev_fin_rec.residual_percentage = OKL_API.G_MISS_NUM) AND
17311         (l_klev_fin_rec.residual_value IS NOT NULL OR
17312         l_klev_fin_rec.residual_value <> OKL_API.G_MISS_NUM) THEN
17313 
17314         l_top_line_id := x_clev_fin_rec.id;
17315         l_oec := l_klev_fin_rec_out.oec;
17316 
17317         get_res_per_upd_fin_rec(p_api_version        => p_api_version,
17318                                 p_init_msg_list      => p_init_msg_list,
17319                                 x_return_status      => x_return_status,
17320                                 x_msg_count          => x_msg_count,
17321                                 x_msg_data           => x_msg_data,
17322                                 P_new_yn             => P_new_yn,
17323                                 p_asset_number       => p_asset_number,
17324                                 p_res_value          => l_klev_fin_rec.residual_value,
17325                                 p_oec                => l_oec,  --l_klev_fin_rec_out.oec
17326                                 p_top_line_id        => l_top_line_id, --x_clev_fin_rec.id,
17327                                 p_dnz_chr_id         => x_clev_model_rec.dnz_chr_id,
17328                                 x_fin_clev_rec       => x_clev_fin_rec,
17329                                 x_fin_klev_rec       => l_klev_fin_rec_out,
17330                                 p_validate_fin_line  => OKL_API.G_TRUE);
17331         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17332           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17333         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17334           RAISE OKL_API.G_EXCEPTION_ERROR;
17335         END IF;
17336       ELSIF (l_klev_fin_rec.residual_percentage IS NOT NULL OR
17337         l_klev_fin_rec.residual_percentage <> OKL_API.G_MISS_NUM) AND
17338         (l_klev_fin_rec.residual_value IS NULL OR
17339         l_klev_fin_rec.residual_value = OKL_API.G_MISS_NUM) THEN
17340         res_value_calc_upd_fin_rec(p_api_version        => p_api_version,
17341                                    p_init_msg_list      => p_init_msg_list,
17342                                    x_return_status      => x_return_status,
17343                                    x_msg_count          => x_msg_count,
17344                                    x_msg_data           => x_msg_data,
17345                                    P_new_yn             => P_new_yn,
17346                                    p_asset_number       => p_asset_number,
17347 				   -- 4414408
17348                                    p_top_line_id        => x_clev_model_rec.cle_id,
17349                                    p_dnz_chr_id         => x_clev_model_rec.dnz_chr_id,
17350                                    x_fin_clev_rec       => x_clev_fin_rec,
17351                                    x_fin_klev_rec       => l_klev_fin_rec_out,
17352                                    x_res_value          => ln_klev_fin_res,
17353                                    p_validate_fin_line  => OKL_API.G_TRUE);
17354         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17355           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17356         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17357           RAISE OKL_API.G_EXCEPTION_ERROR;
17358         END IF;
17359       END IF;
17360     END IF;
17361     IF (l_klev_fin_rec_out.oec IS NOT NULL OR
17362        l_klev_fin_rec_out.oec <> OKL_API.G_MISS_NUM) AND
17363        (l_klev_fin_rec_out.residual_value IS NOT NULL OR
17364        l_klev_fin_rec_out.residual_value <> OKL_API.G_MISS_NUM) THEN
17365       IF l_klev_fin_rec_out.residual_value > l_klev_fin_rec_out.oec THEN
17366         OKL_API.set_message(p_app_name     => G_APP_NAME,
17367                             p_msg_name     => G_SALVAGE_VALUE);
17368         RAISE OKL_API.G_EXCEPTION_ERROR;
17369       END IF;
17370     END IF;
17371     -- Updating of the Fixed Asset Line Process
17372     -- To Get the cle fa Line Record
17373     x_return_status := get_rec_clev(l_clev_fa_rec.id,
17374                                     r_clev_fa_rec);
17375     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17376        OKL_API.set_message(p_app_name     => G_APP_NAME,
17377                            p_msg_name     => G_FETCHING_INFO,
17378                            p_token1       => G_REC_NAME_TOKEN,
17379                            p_token1_value => 'OKC_K_LINES_V Record');
17380        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17381     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17382        OKL_API.set_message(p_app_name     => G_APP_NAME,
17383                            p_msg_name     => G_FETCHING_INFO,
17384                            p_token1       => G_REC_NAME_TOKEN,
17385                            p_token1_value => 'OKC_K_LINES_V Record');
17386        RAISE OKL_API.G_EXCEPTION_ERROR;
17387     END IF;
17388     -- To Get the kle fa Line Record
17389     x_return_status := get_rec_klev(l_clev_fa_rec.id,
17390                                     r_klev_fa_rec);
17391     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17392        OKL_API.set_message(p_app_name     => G_APP_NAME,
17393                            p_msg_name     => G_FETCHING_INFO,
17394                            p_token1       => G_REC_NAME_TOKEN,
17395                            p_token1_value => 'OKL_K_LINES_V Record');
17396        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17397     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17398        OKL_API.set_message(p_app_name     => G_APP_NAME,
17399                            p_msg_name     => G_FETCHING_INFO,
17400                            p_token1       => G_REC_NAME_TOKEN,
17401                            p_token1_value => 'OKL_K_LINES_V Record');
17402        RAISE OKL_API.G_EXCEPTION_ERROR;
17403     END IF;
17404     IF r_klev_fa_rec.id <> r_clev_fa_rec.id THEN
17405        OKL_API.set_message(p_app_name     => G_APP_NAME,
17406                            p_msg_name     => G_LINE_RECORD);
17407        RAISE OKL_API.G_EXCEPTION_ERROR;
17408     END IF;
17409     -- Build clev fa Line Record
17410     l_clev_fa_rec.chr_id          := null;
17411     IF (l_clev_fa_rec.cle_id IS NUll OR
17412         l_clev_fa_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17413         l_clev_fa_rec.cle_id  := r_clev_fa_rec.cle_id;
17414     END IF;
17415     IF (l_clev_fa_rec.dnz_chr_id IS NUll OR
17416         l_clev_fa_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
17417         l_clev_fa_rec.dnz_chr_id  := r_clev_fa_rec.dnz_chr_id;
17418     END IF;
17419     IF (l_clev_fa_rec.display_sequence IS NUll OR
17420         l_clev_fa_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
17421         l_clev_fa_rec.display_sequence  := r_clev_fa_rec.display_sequence;
17422     END IF;
17423     IF (l_clev_fa_rec.lse_id IS NUll OR
17424         l_clev_fa_rec.lse_id = OKL_API.G_MISS_NUM) THEN
17425         l_clev_fa_rec.lse_id  := r_clev_fa_rec.lse_id;
17426     END IF;
17427     IF (l_clev_fa_rec.exception_yn IS NUll OR
17428         l_clev_fa_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
17429         l_clev_fa_rec.exception_yn  := r_clev_fa_rec.exception_yn;
17430     END IF;
17431     IF (l_clev_fa_rec.line_number IS NUll OR
17432         l_clev_fa_rec.line_number = OKL_API.G_MISS_CHAR) THEN
17433         l_clev_fa_rec.line_number  := r_clev_fa_rec.line_number;
17434     END IF;
17435     IF (l_clev_fa_rec.sts_code IS NUll OR
17436         l_clev_fa_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
17437         l_clev_fa_rec.sts_code  := r_clev_fa_rec.sts_code;
17438     END IF;
17439     -- Build klev fa Line Record
17440     l_klev_fa_rec := r_klev_fa_rec;
17441     -- To Get the cimv fa Line Record
17442     x_return_status := get_rec_cimv(l_clev_fa_rec.id,
17443                                     l_clev_fa_rec.dnz_chr_id,
17444                                     r_cimv_fa_rec);
17445     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17446        OKL_API.set_message(p_app_name     => G_APP_NAME,
17447                            p_msg_name     => G_FETCHING_INFO,
17448                            p_token1       => G_REC_NAME_TOKEN,
17449                            p_token1_value => 'OKC_K_ITEMS_V Record');
17450        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17451     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17452        OKL_API.set_message(p_app_name     => G_APP_NAME,
17453                            p_msg_name     => G_FETCHING_INFO,
17454                            p_token1       => G_REC_NAME_TOKEN,
17455                            p_token1_value => 'OKC_K_ITEMS_V Record');
17456        RAISE OKL_API.G_EXCEPTION_ERROR;
17457     END IF;
17458     --Build cimv fa item rec
17459     l_cimv_fa_rec.id  := r_cimv_fa_rec.id;
17460     IF (l_cimv_fa_rec.exception_yn IS NUll OR
17461         l_cimv_fa_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
17462         l_cimv_fa_rec.exception_yn  := r_cimv_fa_rec.exception_yn;
17463     END IF;
17464     IF (l_cimv_fa_rec.dnz_chr_id IS NUll OR
17465         l_cimv_fa_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
17466         l_cimv_fa_rec.dnz_chr_id  := r_cimv_fa_rec.dnz_chr_id;
17467     END IF;
17468     IF (l_cimv_fa_rec.cle_id IS NUll OR
17469         l_cimv_fa_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17470         l_cimv_fa_rec.cle_id := r_cimv_fa_rec.cle_id;
17471     END IF;
17472     IF (l_cimv_fa_rec.object1_id1 IS NUll OR
17473         l_cimv_fa_rec.object1_id1 = OKL_API.G_MISS_CHAR) THEN
17474         l_cimv_fa_rec.object1_id1 := null;
17475     ELSE
17476         l_cimv_fa_rec.object1_id1 := r_cimv_ib_rec.cle_id;
17477     END IF;
17478     IF (l_cimv_fa_rec.object1_id2 IS NUll OR
17479         l_cimv_fa_rec.object1_id2 = OKL_API.G_MISS_CHAR) THEN
17480         l_cimv_fa_rec.object1_id2 := null;
17481     ELSE
17482         l_cimv_fa_rec.object1_id2 := r_cimv_ib_rec.cle_id;
17483     END IF;
17484     --Build talv fa item rec
17485     l_talv_fa_rec.id                    := r_talv_fa_rec.id;
17486     l_talv_fa_rec.object_version_number := r_talv_fa_rec.object_version_number;
17487     l_talv_fa_rec.tas_id                := r_talv_fa_rec.tas_id;
17488     l_talv_fa_rec.sfwt_flag             := r_talv_fa_rec.sfwt_flag;
17489     l_talv_fa_rec.tal_type              := r_talv_fa_rec.tal_type;
17490     l_talv_fa_rec.line_number           := r_talv_fa_rec.line_number;
17491     l_talv_fa_rec.asset_number          := p_asset_number;
17492     IF (l_talv_fa_rec.kle_id IS NUll OR
17493         l_talv_fa_rec.kle_id = OKL_API.G_MISS_NUM) THEN
17494         l_talv_fa_rec.kle_id  := r_talv_fa_rec.kle_id;
17495     END IF;
17496     IF (l_talv_fa_rec.original_cost IS NUll OR
17497         l_talv_fa_rec.original_cost = OKL_API.G_MISS_NUM) THEN
17498         l_talv_fa_rec.original_cost  := r_talv_fa_rec.original_cost;
17499     END IF;
17500     IF (l_talv_fa_rec.depreciation_cost IS NUll OR
17501         l_talv_fa_rec.depreciation_cost = OKL_API.G_MISS_NUM) THEN
17502         l_talv_fa_rec.depreciation_cost  := r_talv_fa_rec.depreciation_cost;
17503     END IF;
17504 
17505     IF (l_talv_fa_rec.description IS NUll OR
17506         l_talv_fa_rec.description = OKL_API.G_MISS_CHAR) THEN
17507         l_talv_fa_rec.description  := r_talv_fa_rec.description;
17508     END IF;
17509     IF (l_talv_fa_rec.current_units IS NUll OR
17510         l_talv_fa_rec.current_units = OKL_API.G_MISS_NUM) THEN
17511         l_talv_fa_rec.current_units  := r_talv_fa_rec.current_units;
17512     END IF;
17513 
17514     --Bug# 4899328: For online rebook, update depreciation_cost and
17515     -- original_cost to line capital amount instead of line oec
17516     --check for rebook contract
17517     l_rbk_khr := '?';
17518     OPEN l_chk_rbk_csr (p_chr_id => l_clev_fin_rec.dnz_chr_id);
17519     FETCH l_chk_rbk_csr INTO l_rbk_khr;
17520     CLOSE l_chk_rbk_csr;
17521 
17522     If l_rbk_khr = '!' Then
17523 
17524       l_line_capital_amount := NVL(l_klev_fin_rec_out.capital_amount,ln_klev_fin_cap);
17525 
17526       -- Bug 13867007: Start
17527       -- RGOOTY: Added IF clause
17528       IF(l_talv_fa_rec.current_units <> l_db_num_of_items OR
17529          l_talv_fa_rec.original_cost <> l_db_price_unit )
17530       THEN
17531          l_talv_fa_rec.depreciation_cost := NVL(l_line_capital_amount,l_talv_fa_rec.depreciation_cost);
17532       END IF;
17533       -- Bug 13867007: End
17534       l_talv_fa_rec.original_cost  := NVL(l_line_capital_amount,l_talv_fa_rec.original_cost);
17535 
17536     Else
17537       -- We are doing the below to make sure the oec is euqated to depreciation cost
17538       -- and the original cost.
17539       --Added IF clause by bkatraga for bug 13717587
17540       IF(l_talv_fa_rec.current_units <> l_db_num_of_items OR
17541          l_talv_fa_rec.original_cost <> l_db_price_unit) THEN
17542          l_talv_fa_rec.depreciation_cost := NVL(l_klev_fin_rec_out.oec,l_talv_fa_rec.depreciation_cost);
17543       END IF;
17544       l_talv_fa_rec.original_cost  := NVL(l_klev_fin_rec_out.oec,ln_klev_fin_oec);
17545     End If;
17546     --Bug# 4899328: End
17547 
17548     l_clev_fa_rec.item_description := l_talv_fa_rec.description;
17549     -- A Bug fix Since we populate the year manufactured into OKL_TXL_ASSETS_B only
17550     -- We cannot use the information after the assets have been put into FA
17551     -- So we decided to populate the year Manufactured into OKL_K_LINES.YEAR_BUILT
17552     -- As the Datatype matches for both.
17553     l_klev_fa_rec.Year_Built           := l_talv_fa_rec.year_manufactured;
17554     -- Updating of the Fixed Asset Line and item/Txl Asset Info
17555 
17556     -- start NISINHA Bug# 6490572
17557     l_klev_fa_rec.model_number         := l_talv_fa_rec.model_number;
17558     l_klev_fa_rec.manufacturer_name    := l_talv_fa_rec.manufacturer_name;
17559     --end  NISINHA Bug# 6490572
17560     update_fixed_asset_line(p_api_version   => p_api_version,
17561                             p_init_msg_list => p_init_msg_list,
17562                             x_return_status => x_return_status,
17563                             x_msg_count     => x_msg_count,
17564                             x_msg_data      => x_msg_data,
17565                             P_new_yn        => l_new_yn,
17566                             p_asset_number  => p_asset_number,
17567                             p_clev_rec      => l_clev_fa_rec,
17568                             p_klev_rec      => l_klev_fa_rec,
17569                             p_cimv_rec      => l_cimv_fa_rec,
17570                             p_talv_rec      => l_talv_fa_rec,
17571                             x_clev_rec      => x_clev_fa_rec,
17572                             x_klev_rec      => l_klev_fa_rec_out,
17573                             x_cimv_rec      => l_cimv_fa_rec_out,
17574                             x_talv_rec      => l_talv_fa_rec_out);
17575     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17576       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17577     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17578       RAISE OKL_API.G_EXCEPTION_ERROR;
17579     END IF;
17580     -- Updating Asset Lines Details Asset Number
17581     update_asset_line_details(p_api_version   => p_api_version,
17582                               p_init_msg_list => p_init_msg_list,
17583                               x_return_status => x_return_status,
17584                               x_msg_count     => x_msg_count,
17585                               x_msg_data      => x_msg_data,
17586                               p_asset_number  => p_asset_number,
17587                               p_original_cost => l_talv_fa_rec_out.original_cost,
17588                               p_tal_id        => l_talv_fa_rec_out.ID);
17589     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17590       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17591     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17592       RAISE OKL_API.G_EXCEPTION_ERROR;
17593     END IF;
17594     IF p_new_yn = 'Y' THEN
17595       -- Updating of the Install Base Line Process
17596       -- To Get the cle IB Line Record
17597       x_return_status := get_rec_clev(l_clev_ib_rec.id,
17598                                       r_clev_ib_rec);
17599       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17600          OKL_API.set_message(p_app_name     => G_APP_NAME,
17601                              p_msg_name     => G_FETCHING_INFO,
17602                              p_token1       => G_REC_NAME_TOKEN,
17603                              p_token1_value => 'OKC_K_LINES_V Record');
17604          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17605       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17606          OKL_API.set_message(p_app_name     => G_APP_NAME,
17607                              p_msg_name     => G_FETCHING_INFO,
17608                              p_token1       => G_REC_NAME_TOKEN,
17609                              p_token1_value => 'OKC_K_LINES_V Record');
17610          RAISE OKL_API.G_EXCEPTION_ERROR;
17611       END IF;
17612       -- To Get the kle IB Line Record
17613       x_return_status := get_rec_klev(l_clev_ib_rec.id,
17614                                       r_klev_ib_rec);
17615       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17616          OKL_API.set_message(p_app_name     => G_APP_NAME,
17617                              p_msg_name     => G_FETCHING_INFO,
17618                              p_token1       => G_REC_NAME_TOKEN,
17619                              p_token1_value => 'OKL_K_LINES_V Record');
17620          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17621       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17622          OKL_API.set_message(p_app_name     => G_APP_NAME,
17623                              p_msg_name     => G_FETCHING_INFO,
17624                              p_token1       => G_REC_NAME_TOKEN,
17625                              p_token1_value => 'OKL_K_LINES_V Record');
17626          RAISE OKL_API.G_EXCEPTION_ERROR;
17627       END IF;
17628       IF r_clev_ib_rec.id <> r_klev_ib_rec.id THEN
17629          OKL_API.set_message(p_app_name     => G_APP_NAME,
17630                              p_msg_name     => G_LINE_RECORD);
17631          RAISE OKL_API.G_EXCEPTION_ERROR;
17632       END IF;
17633       --Build the clev Top Line Record
17634       l_clev_ib_rec.chr_id := null;
17635       IF (l_clev_ib_rec.cle_id IS NUll OR
17636          l_clev_ib_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17637          l_clev_ib_rec.cle_id  := r_clev_ib_rec.cle_id;
17638       END IF;
17639       IF (l_clev_ib_rec.dnz_chr_id IS NUll OR
17640          l_clev_ib_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
17641          l_clev_ib_rec.dnz_chr_id  := r_clev_ib_rec.dnz_chr_id;
17642       END IF;
17643       IF (l_clev_ib_rec.lse_id IS NUll OR
17644          l_clev_ib_rec.lse_id = OKL_API.G_MISS_NUM) THEN
17645          l_clev_ib_rec.lse_id  := r_clev_ib_rec.lse_id;
17646       END IF;
17647       IF (l_clev_ib_rec.display_sequence IS NUll OR
17648          l_clev_ib_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
17649          l_clev_ib_rec.display_sequence := r_clev_ib_rec.display_sequence;
17650       END IF;
17651       IF (l_clev_ib_rec.exception_yn IS NUll OR
17652          l_clev_ib_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
17653          l_clev_ib_rec.exception_yn  := r_clev_ib_rec.exception_yn;
17654       END IF;
17655       IF (l_clev_ib_rec.line_number IS NUll OR
17656          l_clev_ib_rec.line_number = OKL_API.G_MISS_CHAR) THEN
17657          l_clev_ib_rec.line_number  := r_clev_ib_rec.line_number;
17658       END IF;
17659       IF (l_clev_ib_rec.sts_code IS NUll OR
17660          l_clev_ib_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
17661          l_clev_ib_rec.sts_code  := r_clev_ib_rec.sts_code;
17662       END IF;
17663       --Build the klev Top Line Record
17664       l_klev_ib_rec  := r_klev_ib_rec;
17665       -- To Get the cimv ib Line Record
17666       x_return_status := get_rec_cimv(l_clev_ib_rec.id,
17667                                       l_clev_fin_rec.dnz_chr_id,
17668                                       r_cimv_ib_rec);
17669       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17670          OKL_API.set_message(p_app_name     => G_APP_NAME,
17671                              p_msg_name     => G_FETCHING_INFO,
17672                              p_token1       => G_REC_NAME_TOKEN,
17673                              p_token1_value => 'OKC_K_ITEMS_V Record');
17674          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17675       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17676          OKL_API.set_message(p_app_name     => G_APP_NAME,
17677                              p_msg_name     => G_FETCHING_INFO,
17678                              p_token1       => G_REC_NAME_TOKEN,
17679                              p_token1_value => 'OKC_K_ITEMS_V Record');
17680          RAISE OKL_API.G_EXCEPTION_ERROR;
17681       END IF;
17682       --Build cimv ib item rec
17683       l_cimv_ib_rec.id  := r_cimv_ib_rec.id;
17684       IF (l_cimv_ib_rec.exception_yn IS NUll OR
17685           l_cimv_ib_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
17686           l_cimv_ib_rec.exception_yn  := r_cimv_ib_rec.exception_yn;
17687       END IF;
17688       IF (l_cimv_ib_rec.dnz_chr_id IS NUll OR
17689           l_cimv_ib_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
17690           l_cimv_ib_rec.dnz_chr_id  := r_cimv_ib_rec.dnz_chr_id;
17691       END IF;
17692       IF (l_cimv_ib_rec.cle_id IS NUll OR
17693           l_cimv_ib_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17694           l_cimv_ib_rec.cle_id := r_cimv_ib_rec.cle_id;
17695       END IF;
17696       IF (l_cimv_ib_rec.cle_id IS NUll OR
17697           l_cimv_ib_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17698           l_cimv_ib_rec.cle_id := r_cimv_ib_rec.cle_id;
17699       END IF;
17700       IF (l_cimv_ib_rec.cle_id IS NUll OR
17701           l_cimv_ib_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17702           l_cimv_ib_rec.cle_id := r_cimv_ib_rec.cle_id;
17703       END IF;
17704       IF (l_cimv_ib_rec.object1_id1 IS NUll OR
17705           l_cimv_ib_rec.object1_id1 = OKL_API.G_MISS_CHAR) THEN
17706           l_cimv_ib_rec.object1_id1 := null;
17707       ELSE
17708           l_cimv_ib_rec.object1_id1 := r_cimv_ib_rec.cle_id;
17709       END IF;
17710       IF (l_cimv_ib_rec.object1_id2 IS NUll OR
17711           l_cimv_ib_rec.object1_id2 = OKL_API.G_MISS_CHAR) THEN
17712           l_cimv_ib_rec.object1_id2 := null;
17713       ELSE
17714           l_cimv_ib_rec.object1_id2 := r_cimv_ib_rec.cle_id;
17715       END IF;
17716       -- To Get the itiv ib Line Record
17717       x_return_status := get_rec_itiv(l_clev_ib_rec.id,
17718                                       r_itiv_ib_rec);
17719       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17720          OKL_API.set_message(p_app_name     => G_APP_NAME,
17721                              p_msg_name     => G_FETCHING_INFO,
17722                              p_token1       => G_REC_NAME_TOKEN,
17723                              p_token1_value => 'OKL_TXL_ITM_INSTS_V Record');
17724          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17725       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17726          OKL_API.set_message(p_app_name     => G_APP_NAME,
17727                              p_msg_name     => G_FETCHING_INFO,
17728                              p_token1       => G_REC_NAME_TOKEN,
17729                              p_token1_value => 'OKL_TXL_ITM_INSTS_V Record');
17730          RAISE OKL_API.G_EXCEPTION_ERROR;
17731       END IF;
17732       --Build itiv ib item rec
17733       l_itiv_ib_rec.id                    := r_itiv_ib_rec.id;
17734       l_itiv_ib_rec.object_version_number := r_itiv_ib_rec.object_version_number;
17735       l_itiv_ib_rec.tas_id                := r_itiv_ib_rec.tas_id;
17736       l_itiv_ib_rec.line_number           := r_itiv_ib_rec.line_number;
17737       IF (l_itiv_ib_rec.kle_id IS NUll OR
17738           l_itiv_ib_rec.kle_id = OKL_API.G_MISS_NUM) THEN
17739           l_itiv_ib_rec.kle_id  := r_itiv_ib_rec.kle_id;
17740       END IF;
17741       IF (l_itiv_ib_rec.instance_number_ib IS NUll OR
17742           l_itiv_ib_rec.instance_number_ib = OKL_API.G_MISS_CHAR) THEN
17743           l_itiv_ib_rec.instance_number_ib  := r_itiv_ib_rec.instance_number_ib;
17744       END IF;
17745       -- Since the screen can give only party_site_id via l_itiv_tbl(j).object_id1_new
17746       -- We have to use the below function
17747       lv_object_id1_new := l_itiv_ib_rec.object_id1_new;
17748       x_return_status := get_party_site_id(p_object_id1_new => lv_object_id1_new,
17749                                            x_object_id1_new => l_itiv_ib_rec.object_id1_new,
17750                                            x_object_id2_new => l_itiv_ib_rec.object_id2_new);
17751       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17752          OKL_API.set_message(p_app_name     => G_APP_NAME,
17753                              p_msg_name     => G_NO_MATCHING_RECORD,
17754                              p_token1       => G_COL_NAME_TOKEN,
17755                              p_token1_value => 'Party_site_id');
17756          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17757       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17758          OKL_API.set_message(p_app_name     => G_APP_NAME,
17759                              p_msg_name     => G_NO_MATCHING_RECORD,
17760                              p_token1       => G_COL_NAME_TOKEN,
17761                              p_token1_value => 'Party_site_id');
17762          RAISE OKL_API.G_EXCEPTION_ERROR;
17763       END IF;
17764       IF (l_itiv_ib_rec.object_id1_new IS NUll OR
17765           l_itiv_ib_rec.object_id1_new = OKL_API.G_MISS_CHAR) THEN
17766           l_itiv_ib_rec.object_id1_new  := r_itiv_ib_rec.object_id1_new;
17767       END IF;
17768       IF (l_itiv_ib_rec.object_id2_new IS NUll OR
17769           l_itiv_ib_rec.object_id2_new = OKL_API.G_MISS_CHAR) THEN
17770           l_itiv_ib_rec.object_id2_new  := r_itiv_ib_rec.object_id2_new;
17771       END IF;
17772       IF (l_itiv_ib_rec.jtot_object_code_new IS NUll OR
17773           l_itiv_ib_rec.jtot_object_code_new = OKL_API.G_MISS_CHAR) THEN
17774           l_itiv_ib_rec.jtot_object_code_new  := r_itiv_ib_rec.jtot_object_code_new;
17775       END IF;
17776       IF (l_itiv_ib_rec.mfg_serial_number_yn IS NUll OR
17777           l_itiv_ib_rec.mfg_serial_number_yn = OKL_API.G_MISS_CHAR) THEN
17778           l_itiv_ib_rec.mfg_serial_number_yn  := r_itiv_ib_rec.mfg_serial_number_yn;
17779       END IF;
17780       IF (l_itiv_ib_rec.inventory_item_id IS NUll OR
17781           l_itiv_ib_rec.inventory_item_id = OKL_API.G_MISS_NUM) AND
17782           lv_model_object_id1 = r_itiv_ib_rec.inventory_item_id  THEN
17783           l_itiv_ib_rec.inventory_item_id  := r_itiv_ib_rec.inventory_item_id;
17784       ELSIF (l_itiv_ib_rec.inventory_item_id IS NOT NUll OR
17785           l_itiv_ib_rec.inventory_item_id <> OKL_API.G_MISS_NUM) AND
17786           lv_model_object_id1 <> r_itiv_ib_rec.inventory_item_id THEN
17787           l_itiv_ib_rec.inventory_item_id  := lv_model_object_id1;
17788       ELSIF (l_itiv_ib_rec.inventory_item_id IS NUll OR
17789           l_itiv_ib_rec.inventory_item_id = OKL_API.G_MISS_NUM) OR
17790           lv_model_object_id1 <> r_itiv_ib_rec.inventory_item_id THEN
17791           l_itiv_ib_rec.inventory_item_id  := lv_model_object_id1;
17792       END IF;
17793       IF (l_itiv_ib_rec.inventory_org_id IS NUll OR
17794           l_itiv_ib_rec.inventory_org_id = OKL_API.G_MISS_NUM) AND
17795           lv_model_object_id2 = r_itiv_ib_rec.inventory_org_id THEN
17796           l_itiv_ib_rec.inventory_org_id  := r_itiv_ib_rec.inventory_org_id;
17797       ELSIF (l_itiv_ib_rec.inventory_org_id IS NOT NUll OR
17798           l_itiv_ib_rec.inventory_org_id <> OKL_API.G_MISS_NUM) AND
17799           lv_model_object_id2 <> r_itiv_ib_rec.inventory_org_id THEN
17800           l_itiv_ib_rec.inventory_org_id  := lv_model_object_id2;
17801       ELSIF (l_itiv_ib_rec.inventory_org_id IS NUll OR
17802           l_itiv_ib_rec.inventory_org_id = OKL_API.G_MISS_NUM) OR
17803           lv_model_object_id2 <> r_itiv_ib_rec.inventory_org_id THEN
17804           l_itiv_ib_rec.inventory_org_id  := lv_model_object_id2;
17805       END IF;
17806       -- Updating of the ib Line
17807       update_instance_ib_line(p_api_version   => p_api_version,
17808                               p_init_msg_list => p_init_msg_list,
17809                               x_return_status => x_return_status,
17810                               x_msg_count     => x_msg_count,
17811                               x_msg_data      => x_msg_data,
17812                               p_clev_rec      => l_clev_ib_rec,
17813                               p_klev_rec      => l_klev_ib_rec,
17814                               p_cimv_rec      => l_cimv_ib_rec,
17815                               p_itiv_rec      => l_itiv_ib_rec,
17816                               x_clev_rec      => x_clev_ib_rec,
17817                               x_klev_rec      => l_klev_ib_rec_out,
17818                               x_cimv_rec      => l_cimv_ib_rec_out,
17819                               x_itiv_rec      => l_itiv_ib_rec_out);
17820       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17821         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17822       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17823         RAISE OKL_API.G_EXCEPTION_ERROR;
17824       END IF;
17825       -- Updating of the Instance Line
17826       -- To Get the cle IB Line Record
17827       x_return_status := get_rec_clev(l_clev_ib_rec.cle_id,
17828                                       r_clev_inst_rec);
17829       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17830          OKL_API.set_message(p_app_name     => G_APP_NAME,
17831                              p_msg_name     => G_FETCHING_INFO,
17832                              p_token1       => G_REC_NAME_TOKEN,
17833                              p_token1_value => 'OKC_K_LINES_V Record');
17834          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17835       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17836          OKL_API.set_message(p_app_name     => G_APP_NAME,
17837                              p_msg_name     => G_FETCHING_INFO,
17838                              p_token1       => G_REC_NAME_TOKEN,
17839                              p_token1_value => 'OKC_K_LINES_V Record');
17840          RAISE OKL_API.G_EXCEPTION_ERROR;
17841       END IF;
17842       -- To Get the kle IB Line Record
17843       x_return_status := get_rec_klev(l_clev_ib_rec.cle_id,
17844                                       r_klev_inst_rec);
17845       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17846          OKL_API.set_message(p_app_name     => G_APP_NAME,
17847                              p_msg_name     => G_FETCHING_INFO,
17848                              p_token1       => G_REC_NAME_TOKEN,
17849                              p_token1_value => 'OKL_K_LINES_V Record');
17850          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17851       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17852          OKL_API.set_message(p_app_name     => G_APP_NAME,
17853                              p_msg_name     => G_FETCHING_INFO,
17854                              p_token1       => G_REC_NAME_TOKEN,
17855                              p_token1_value => 'OKL_K_LINES_V Record');
17856          RAISE OKL_API.G_EXCEPTION_ERROR;
17857       END IF;
17858       IF r_clev_inst_rec.id <> r_klev_inst_rec.id THEN
17859          OKL_API.set_message(p_app_name     => G_APP_NAME,
17860                              p_msg_name     => G_LINE_RECORD);
17861          RAISE OKL_API.G_EXCEPTION_ERROR;
17862       END IF;
17863       l_clev_inst_rec := r_clev_inst_rec;
17864       l_klev_inst_rec := r_klev_inst_rec;
17865       -- upating of the Instance Line
17866       update_instance_line(p_api_version   => p_api_version,
17867                            p_init_msg_list => p_init_msg_list,
17868                            x_return_status => x_return_status,
17869                            x_msg_count     => x_msg_count,
17870                            x_msg_data      => x_msg_data,
17871                            p_clev_rec      => l_clev_inst_rec,
17872                            p_klev_rec      => l_klev_inst_rec,
17873                            p_itiv_rec      => l_itiv_inst_rec,
17874                            x_clev_rec      => l_clev_inst_rec_out,
17875                            x_klev_rec      => l_klev_inst_rec_out,
17876                            x_itiv_rec      => l_itiv_inst_rec_out);
17877       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17878         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17879       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17880         RAISE OKL_API.G_EXCEPTION_ERROR;
17881       END IF;
17882     ELSIF p_new_yn = 'N' THEN
17883       FOR r_asset_iti IN c_asset_iti(p_asset_number => p_asset_number,
17884                                      p_dnz_chr_id   => x_clev_fa_rec.dnz_chr_id)  LOOP
17885         -- To Get the itiv ib Line Record
17886         x_return_status := get_rec_itiv(r_asset_iti.id,
17887                                         n_itiv_ib_rec);
17888         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17889            OKL_API.set_message(p_app_name     => G_APP_NAME,
17890                                p_msg_name     => G_FETCHING_INFO,
17891                                p_token1       => G_REC_NAME_TOKEN,
17892                                p_token1_value => 'OKL_TXL_ITM_INSTS_V Record');
17893            EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
17894         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17895            OKL_API.set_message(p_app_name     => G_APP_NAME,
17896                                p_msg_name     => G_FETCHING_INFO,
17897                                p_token1       => G_REC_NAME_TOKEN,
17898                                p_token1_value => 'OKL_TXL_ITM_INSTS_V Record');
17899            EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
17900         END IF;
17901         n_itiv_ib_rec.object_id1_new := p_itiv_ib_rec.object_id1_new;
17902         n_itiv_ib_rec.object_id1_old := p_itiv_ib_rec.object_id1_new;
17903         OKL_TXL_ITM_INSTS_PUB.update_txl_itm_insts(p_api_version    => p_api_version,
17904                                                    p_init_msg_list  => p_init_msg_list,
17905                                                    x_return_status  => x_return_status,
17906                                                    x_msg_count      => x_msg_count,
17907                                                    x_msg_data       => x_msg_data,
17908                                                    p_iipv_rec       => n_itiv_ib_rec,
17909                                                    x_iipv_rec       => nx_itiv_ib_rec);
17910         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17911           OKL_API.set_message(p_app_name     => G_APP_NAME,
17912                               p_msg_name     => G_ITI_ID);
17913            EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
17914         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17915           OKL_API.set_message(p_app_name     => G_APP_NAME,
17916                               p_msg_name     => G_ITI_ID);
17917            EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
17918         END IF;
17919       END LOOP;
17920       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17921         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17922       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17923         RAISE OKL_API.G_EXCEPTION_ERROR;
17924       END IF;
17925     END IF;
17926 
17927     -- rravikir modified.
17928     -- Update the OKL_TXL_ITM_INSTS table, when the item or install site gets changed.
17929     ln_txl_itm_id           := l_itiv_ib_rec_out.id;
17930     lv_object_id1           := l_itiv_ib_rec_out.object_id1_new;
17931     lv_object_id2           := l_itiv_ib_rec_out.object_id2_new;
17932     ln_inv_itm_id           := l_itiv_ib_rec_out.inventory_item_id;
17933     ln_inv_org_id           := l_itiv_ib_rec_out.inventory_org_id;
17934     lv_jtot_object_code_new := l_itiv_ib_rec_out.jtot_object_code_new;
17935     l_top_line_id           := x_clev_fin_rec.id;
17936     FOR r_get_txl_itm_insts IN c_get_txl_itm_insts(p_top_line_id => l_top_line_id,
17937                                                    p_txl_inst_id => ln_txl_itm_id)  LOOP
17938       k_itiv_ib_rec.id                   :=  r_get_txl_itm_insts.id;
17939       k_itiv_ib_rec.object_id1_new       :=  lv_object_id1;
17940       k_itiv_ib_rec.object_id2_new       :=  lv_object_id2;
17941       k_itiv_ib_rec.inventory_item_id    :=  ln_inv_itm_id;
17942       k_itiv_ib_rec.inventory_org_id     :=  ln_inv_org_id;
17943       k_itiv_ib_rec.jtot_object_code_new :=  lv_jtot_object_code_new;
17944       OKL_TXL_ITM_INSTS_PUB.update_txl_itm_insts(p_api_version    => p_api_version,
17945                                                  p_init_msg_list  => p_init_msg_list,
17946                                                  x_return_status  => x_return_status,
17947                                                  x_msg_count      => x_msg_count,
17948                                                  x_msg_data       => x_msg_data,
17949                                                  p_iipv_rec       => k_itiv_ib_rec,
17950                                                  x_iipv_rec       => kx_itiv_ib_rec);
17951       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17952         OKL_API.set_message(p_app_name     => G_APP_NAME,
17953                             p_msg_name     => G_ITI_ID);
17954          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
17955       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17956         OKL_API.set_message(p_app_name     => G_APP_NAME,
17957                             p_msg_name     => G_ITI_ID);
17958          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
17959       END IF;
17960     END LOOP;
17961     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17962       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17963     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17964       RAISE OKL_API.G_EXCEPTION_ERROR;
17965     END IF;
17966     -- end rravikir
17967 
17968     -- We need to change the status of the header whenever there is updating happening
17969     -- after the contract status is approved
17970     IF (l_clev_inst_rec_out.dnz_chr_id is NOT NULL) AND
17971        (l_clev_inst_rec_out.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
17972       --cascade edit status on to lines
17973       okl_contract_status_pub.cascade_lease_status_edit
17974                (p_api_version     => p_api_version,
17975                 p_init_msg_list   => p_init_msg_list,
17976                 x_return_status   => x_return_status,
17977                 x_msg_count       => x_msg_count,
17978                 x_msg_data        => x_msg_data,
17979                 p_chr_id          => l_clev_inst_rec_out.dnz_chr_id);
17980       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17981         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17982       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17983         RAISE OKL_API.G_EXCEPTION_ERROR;
17984       END IF;
17985     END IF;
17986   End If; --release asset : Bug# 3533936
17987     OKL_API.END_ACTIVITY (x_msg_count,
17988                           x_msg_data );
17989   EXCEPTION
17990     WHEN OKL_API.G_EXCEPTION_ERROR THEN
17991     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
17992                                l_api_name,
17993                                G_PKG_NAME,
17994                                'OKL_API.G_RET_STS_ERROR',
17995                                x_msg_count,
17996                                x_msg_data,
17997                                '_PVT');
17998     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
17999     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
18000                               l_api_name,
18001                               G_PKG_NAME,
18002                               'OKL_API.G_RET_STS_UNEXP_ERROR',
18003                               x_msg_count,
18004                               x_msg_data,
18005                               '_PVT');
18006     WHEN OTHERS THEN
18007     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
18008                               l_api_name,
18009                               G_PKG_NAME,
18010                               'OTHERS',
18011                               x_msg_count,
18012                               x_msg_data,
18013                               '_PVT');
18014   END update_all_line;
18015 -------------------------------------------------------------------------------------------------------
18016 ----------------- Main Process for Creation of instance and Install base line  ------------------------
18017 -------------------------------------------------------------------------------------------------------
18018   PROCEDURE create_ints_ib_line(
18019             p_api_version    IN  NUMBER,
18020             p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
18021             x_return_status  OUT NOCOPY VARCHAR2,
18022             x_msg_count      OUT NOCOPY NUMBER,
18023             x_msg_data       OUT NOCOPY VARCHAR2,
18024             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
18025             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
18026             p_current_units  IN  OKL_TXL_ASSETS_V.CURRENT_UNITS%TYPE,
18027             p_clev_ib_rec    IN  clev_rec_type,
18028             p_itiv_ib_tbl    IN  itiv_tbl_type,
18029             x_clev_ib_tbl    OUT NOCOPY clev_tbl_type,
18030             x_itiv_ib_tbl    OUT NOCOPY itiv_tbl_type,
18031             x_clev_fin_rec   OUT NOCOPY clev_rec_type,
18032             x_klev_fin_rec   OUT NOCOPY klev_rec_type,
18033             x_cimv_model_rec OUT NOCOPY cimv_rec_type,
18034             x_cimv_fa_rec    OUT NOCOPY cimv_rec_type,
18035             x_talv_fa_rec    OUT NOCOPY talv_rec_type) IS
18036     l_api_name          CONSTANT VARCHAR2(30) := 'CREATE_INTS_IB_LINE';
18037     l_clev_ib_rec                clev_rec_type;
18038     l_klev_ib_rec                klev_rec_type;
18039     l_clev_inst_rec              clev_rec_type;
18040     l_klev_inst_rec              klev_rec_type;
18041     l_cimv_ib_rec                cimv_rec_type;
18042     l_itiv_ib_tbl                itiv_tbl_type := p_itiv_ib_tbl;
18043     l_clev_inst_rec_out          clev_rec_type;
18044     l_klev_inst_rec_out          klev_rec_type;
18045     l_itiv_inst_tbl_out          itiv_tbl_type;
18046     l_clev_ib_rec_out            clev_rec_type;
18047     l_cimv_ib_rec_out            cimv_rec_type;
18048     l_klev_ib_rec_out            klev_rec_type;
18049     l_itiv_ib_tbl_out            itiv_tbl_type;
18050     x_clev_ib_rec                clev_rec_type;
18051     l_trxv_ib_rec_out            trxv_rec_type;
18052     lv_object_id1_new            OKL_TXL_ITM_INSTS_V.OBJECT_ID1_NEW%TYPE;
18053     j                            NUMBER := 0;
18054     ln_dummy                     NUMBER := 0;
18055     ln_dummy1                    NUMBER := 0;
18056     -- rravikir added
18057     l_itiv_rec                   itiv_rec_type;
18058     lk_itiv_rec                  itiv_rec_type;
18059     lx_itiv_rec                  itiv_rec_type;
18060     k                            NUMBER := 0;
18061     ln_remain_inst               NUMBER := 0;
18062     lb_record_created            BOOLEAN := FALSE;
18063     lb_update_oec_required       BOOLEAN := FALSE;
18064     ln_item_id                   OKL_TXL_ITM_INSTS.INVENTORY_ITEM_ID%TYPE;
18065     -- end
18066     ln_final_current_units       OKC_K_ITEMS_V.NUMBER_OF_ITEMS%TYPE;
18067     ln_model_line_id             OKC_K_LINES_V.ID%TYPE := OKL_API.G_MISS_NUM;
18068     ln_fa_line_id                OKC_K_LINES_V.ID%TYPE := OKL_API.G_MISS_NUM;
18069     r_clev_model_rec             clev_rec_type;
18070     r_klev_model_rec             klev_rec_type;
18071     r_cimv_model_rec             cimv_rec_type;
18072     r_clev_addon_rec             clev_rec_type;
18073     r_klev_addon_rec             klev_rec_type;
18074     r_cimv_addon_rec             cimv_rec_type;
18075     rx_clev_addon_rec            clev_rec_type;
18076     rx_klev_addon_rec            klev_rec_type;
18077     rx_cimv_addon_rec            cimv_rec_type;
18078     r_clev_fa_rec                clev_rec_type;
18079     r_klev_fa_rec                klev_rec_type;
18080     r_cimv_fa_rec                cimv_rec_type;
18081     r_talv_fa_rec                talv_rec_type;
18082     l_clev_model_rec_out         clev_rec_type;
18083     l_klev_model_rec_out         klev_rec_type;
18084     l_clev_fa_rec_out            clev_rec_type;
18085     l_klev_fa_rec_out            klev_rec_type;
18086     ln_model_qty                 OKC_K_ITEMS_V.NUMBER_OF_ITEMS%TYPE := 0;
18087     ln_klev_fin_oec              OKL_K_LINES_V.OEC%TYPE := 0;
18088     ln_klev_fin_res              OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
18089     ln_klev_fin_cap              OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
18090 
18091     CURSOR c_remain_inst_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
18092                               p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
18093     SELECT count(cle.id)
18094     FROM okc_subclass_top_line stl,
18095          okc_line_styles_b lse2,
18096          okc_line_styles_b lse1,
18097          okc_k_lines_v cle
18098     WHERE cle.cle_id = p_cle_id
18099     AND cle.dnz_chr_id = p_chr_id
18100     AND cle.lse_id = lse1.id
18101     AND lse1.lty_code = G_INST_LINE_LTY_CODE
18102     AND lse1.lse_parent_id = lse2.id
18103     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
18104     AND lse2.id = stl.lse_id
18105     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
18106 
18107     CURSOR c_model_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
18108                         p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
18109     SELECT cle.id
18110     FROM okc_subclass_top_line stl,
18111          okc_line_styles_b lse2,
18112          okc_line_styles_b lse1,
18113          okc_k_lines_v cle
18114     WHERE cle.cle_id = p_cle_id
18115     AND cle.dnz_chr_id = p_chr_id
18116     AND cle.lse_id = lse1.id
18117     AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
18118     AND lse1.lse_parent_id = lse2.id
18119     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
18120     AND lse2.id = stl.lse_id
18121     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
18122 
18123     CURSOR c_fa_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
18124                      p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
18125     SELECT cle.id
18126     FROM okc_subclass_top_line stl,
18127          okc_line_styles_b lse2,
18128          okc_line_styles_b lse1,
18129          okc_k_lines_v cle
18130     WHERE cle.cle_id = p_cle_id
18131     AND cle.dnz_chr_id = p_chr_id
18132     AND cle.lse_id = lse1.id
18133     AND lse1.lty_code = G_FA_LINE_LTY_CODE
18134     AND lse1.lse_parent_id = lse2.id
18135     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
18136     AND lse2.id = stl.lse_id
18137     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
18138 
18139     CURSOR c_addon_line_id(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
18140                            p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
18141     SELECT cle.id
18142     FROM okc_subclass_top_line stl,
18143          okc_line_styles_b lse3,
18144          okc_line_styles_b lse2,
18145          okc_line_styles_b lse1,
18146          okc_k_lines_b cle
18147     WHERE cle.dnz_chr_id = p_chr_id
18148     AND cle.lse_id = lse1.id
18149     AND lse1.lty_code = G_ADDON_LINE_LTY_CODE
18150     AND lse1.lse_parent_id = lse2.id
18151     AND lse2.lty_code = G_MODEL_LINE_LTY_CODE
18152     AND lse2.lse_parent_id = lse3.id
18153     AND lse3.lty_code = G_FIN_LINE_LTY_CODE
18154     AND lse3.id = stl.lse_id
18155     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE)
18156     AND cle.cle_id in (SELECT cle.id
18157                        FROM okc_subclass_top_line stl,
18158                             okc_line_styles_b lse2,
18159                             okc_line_styles_b lse1,
18160                             okc_k_lines_b cle
18161                        WHERE cle.cle_id = p_cle_id
18162                        AND cle.dnz_chr_id = p_chr_id
18163                        AND cle.lse_id = lse1.id
18164                        AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
18165                        AND lse1.lse_parent_id = lse2.id
18166                        AND lse2.lty_code = G_FIN_LINE_LTY_CODE
18167                        AND lse2.id = stl.lse_id
18168                        AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE));
18169 
18170     CURSOR c_model_item(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
18171                         p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
18172     SELECT cim.number_of_items
18173     FROM okc_subclass_top_line stl,
18174          okc_line_styles_b lse2,
18175          okc_line_styles_b lse1,
18176          okc_k_items_v cim,
18177          okc_k_lines_v cle
18178     WHERE cle.cle_id = p_cle_id
18179     AND cle.dnz_chr_id = p_chr_id
18180     AND cle.id = cim.cle_id
18181     AND cim.dnz_chr_id = cle.dnz_chr_id
18182     AND cle.lse_id = lse1.id
18183     AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
18184     AND lse1.lse_parent_id = lse2.id
18185     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
18186     AND lse2.id = stl.lse_id
18187     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
18188 
18189         --akrangan Bug# 5362977 start
18190        --cursor to check if contract has re-lease assets
18191        --Bug# 15992711 : The re-leased flag is no longer checked at contract header
18192        --                but needs to be validated at contract line
18193        --                Cursor modified to include validation at asset line level
18194        /*CURSOR l_chk_rel_ast_csr (p_chr_id IN NUMBER) IS
18195        SELECT 'Y'
18196        FROM   OKC_RULES_B rul
18197        WHERE  rul.dnz_chr_id = p_chr_id
18198        AND    rul.rule_information_category = 'LARLES'
18199        AND    NVL(rule_information1,'N') = 'Y';*/
18200 
18201 	CURSOR l_chk_rel_ast_csr    (p_dnz_chr_id   IN OKC_K_LINES_V.DNZ_CHR_ID%TYPE
18202 				                      ,p_asset_num IN OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
18203 	SELECT NVL(kle_top.re_lease_yn,'N') release_flag
18204 	FROM   okl_txl_assets_b  txlb,
18205 	   okc_line_styles_b lseb,
18206 	   okc_k_lines_b     cleb_top,
18207 	   okl_k_lines       kle_top
18208 	WHERE  txlb.kle_id           =  cleb_top.id
18209 	AND    cleb_top.lse_id       = lseb.id
18210 	AND    lseb.lty_code         = 'FIXED_ASSET'
18211 	AND    cleb_top.dnz_chr_id   = p_dnz_chr_id
18212 	AND    kle_top.id            = cleb_top.id
18213 	AND    txlb.asset_number      = p_asset_num;
18214 	-- Bug# 15992711 : End of Modifications
18215 
18216        l_chk_rel_ast VARCHAR2(1);
18217 
18218        --cursor to check if the contract is undergoing on-line rebook
18219        cursor l_chk_rbk_csr(p_chr_id IN NUMBER) is
18220        SELECT '!'
18221        FROM   okc_k_headers_b chr,
18222               okl_trx_contracts ktrx
18223        WHERE  ktrx.khr_id_new = chr.id
18224        AND    ktrx.tsu_code = 'ENTERED'
18225        AND    ktrx.rbr_code is NOT NULL
18226        AND    ktrx.tcn_type = 'TRBK'
18227        --rkuttiya added for 12.1.1 multi GAAP
18228        AND    ktrx.representation_type = 'PRIMARY'
18229        --
18230        AND    chr.id = p_chr_id
18231        AND    chr.orig_system_source_code = 'OKL_REBOOK';
18232 
18233        l_rbk_khr      VARCHAR2(1);
18234        --akrangan Bug# 5362977 end
18235 
18236 
18237   BEGIN
18238     x_return_status := OKL_API.G_RET_STS_SUCCESS;
18239     -- Call start_activity to create savepoint, check compatibility
18240     -- and initialize message list
18241     x_return_status := OKL_API.START_ACTIVITY (
18242                                l_api_name
18243                                ,p_init_msg_list
18244                                ,'_PVT'
18245                                ,x_return_status);
18246     -- Check if activity started successfully
18247     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18248        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18249     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18250        RAISE OKL_API.G_EXCEPTION_ERROR;
18251     END IF;
18252     -- Get the Ib rec first and then we can get the instance line above the IB line
18253     x_return_status := get_rec_clev(p_clev_ib_rec.id,
18254                                     l_clev_ib_rec);
18255     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18256        OKL_API.set_message(p_app_name     => G_APP_NAME,
18257                            p_msg_name     => G_FETCHING_INFO,
18258                            p_token1       => G_REC_NAME_TOKEN,
18259                            p_token1_value => 'OKC_K_LINES_V Record');
18260        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18261     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18262        OKL_API.set_message(p_app_name     => G_APP_NAME,
18263                            p_msg_name     => G_FETCHING_INFO,
18264                            p_token1       => G_REC_NAME_TOKEN,
18265                            p_token1_value => 'OKC_K_LINES_V Record');
18266        RAISE OKL_API.G_EXCEPTION_ERROR;
18267     END IF;
18268     -- Now getting the inst line
18269     x_return_status := get_rec_clev(l_clev_ib_rec.cle_id,
18270                                     l_clev_inst_rec);
18271     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18272        OKL_API.set_message(p_app_name     => G_APP_NAME,
18273                            p_msg_name     => G_FETCHING_INFO,
18274                            p_token1       => G_REC_NAME_TOKEN,
18275                            p_token1_value => 'OKC_K_LINES_V Record');
18276        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18277     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18278        OKL_API.set_message(p_app_name     => G_APP_NAME,
18279                            p_msg_name     => G_FETCHING_INFO,
18280                            p_token1       => G_REC_NAME_TOKEN,
18281                            p_token1_value => 'OKC_K_LINES_V Record');
18282        RAISE OKL_API.G_EXCEPTION_ERROR;
18283     END IF;
18284 
18285     -- Since a record is already created in TXL_ITM_INSTS, we need to update this
18286     -- record, and create 'n-1' records.
18287     -- rravikir modified
18288     IF (l_clev_inst_rec.id IS NOT NULL OR
18289         l_clev_inst_rec.id <> OKL_API.G_MISS_NUM) THEN
18290       -- We are here b'cause we have to update the okl_txl_itm_inst rec
18291       -- So we are calling the update api for the okl_txl_itm_insts rec
18292 
18293       -- Now getting the item information OKL_TXL_ITM_INSTS
18294       x_return_status := get_rec_itiv(l_clev_ib_rec.id,
18295                                       l_itiv_rec);
18296       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18297          OKL_API.set_message(p_app_name     => G_APP_NAME,
18298                              p_msg_name     => G_FETCHING_INFO,
18299                              p_token1       => G_REC_NAME_TOKEN,
18300                              p_token1_value => 'OKC_K_LINES_V Record');
18301          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18302       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18303          OKL_API.set_message(p_app_name     => G_APP_NAME,
18304                              p_msg_name     => G_FETCHING_INFO,
18305                              p_token1       => G_REC_NAME_TOKEN,
18306                              p_token1_value => 'OKC_K_LINES_V Record');
18307          RAISE OKL_API.G_EXCEPTION_ERROR;
18308       END IF;
18309       -- checking for mfg_serial_number_yn flag
18310       k := l_itiv_ib_tbl.FIRST;
18311       IF l_itiv_ib_tbl(k).mfg_serial_number_yn <> 'Y' THEN
18312         OKL_API.set_message(p_app_name     => G_APP_NAME,
18313                             p_msg_name     => G_REQUIRED_VALUE,
18314                             p_token1       => G_COL_NAME_TOKEN,
18315                             p_token1_value => 'mfg_serial_number_yn cannot be N');
18316         x_return_status := OKL_API.G_RET_STS_ERROR;
18317         IF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18318           RAISE OKL_API.G_EXCEPTION_ERROR;
18319         END IF;
18320       END IF;
18321 
18322       l_itiv_rec.object_id1_new       := l_itiv_ib_tbl(k).object_id1_new;
18323       l_itiv_rec.object_id2_new       := l_itiv_ib_tbl(k).object_id2_new;
18324       l_itiv_rec.mfg_serial_number_yn := l_itiv_ib_tbl(k).mfg_serial_number_yn;
18325       l_itiv_rec.serial_number        := l_itiv_ib_tbl(k).serial_number;
18326       l_itiv_rec.dnz_cle_id           := l_itiv_ib_tbl(k).dnz_cle_id;
18327 
18328       ln_item_id := l_itiv_rec.inventory_item_id;
18329 
18330       -- Check for uniqueness of Serial number
18331       x_return_status := is_duplicate_serial_number(p_serial_number => l_itiv_rec.serial_number,
18332                                                     p_item_id       => l_itiv_rec.inventory_item_id);
18333       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18334         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18335       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18336         RAISE OKL_API.G_EXCEPTION_ERROR;
18337       END IF;
18338       l_itiv_rec.object_id2_new := '#';
18339 
18340       update_txl_itm_insts(p_api_version    => p_api_version,
18341                            p_init_msg_list  => p_init_msg_list,
18342                            x_return_status  => x_return_status,
18343                            x_msg_count      => x_msg_count,
18344                            x_msg_data       => x_msg_data,
18345                            p_itiv_rec       => l_itiv_rec,
18346                            x_itiv_rec       => lx_itiv_rec);
18347       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18348         OKL_API.set_message(p_app_name     => G_APP_NAME,
18349                             p_msg_name     => G_ITI_ID);
18350         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18351       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18352         OKL_API.set_message(p_app_name     => G_APP_NAME,
18353                             p_msg_name     => G_ITI_ID);
18354         RAISE OKL_API.G_EXCEPTION_ERROR;
18355       END IF;
18356       lb_record_created := TRUE;
18357     END IF;
18358     -- end rravikir modified
18359 
18360 
18361     -- We need to verify the p_current_units is same as the existing NUmber of items
18362     -- in the model line
18363 
18364     -- rravikir modified
18365     -- Should be able to create more # of serial numbers than the current units.
18366     OPEN c_model_item(l_clev_inst_rec.cle_id,
18367                       l_clev_inst_rec.dnz_chr_id);
18368     IF c_model_item%NOTFOUND THEN
18369        OKL_API.set_message(p_app_name => G_APP_NAME,
18370                            p_msg_name => G_ITEM_RECORD);
18371        RAISE OKL_API.G_EXCEPTION_ERROR;
18372     END IF;
18373     FETCH c_model_item INTO ln_model_qty;
18374     CLOSE c_model_item;
18375 
18376     -- If the serial #'s entered is not equal to the units in model line,
18377     -- we should update the fixed line , model line and also update the top line
18378     -- with latest OEC
18379     IF ln_model_qty <> l_itiv_ib_tbl.COUNT THEN
18380 
18381          --akrangan Bug# 5362977 start
18382          -- Do not allow update of units if the contract has Re-lease assets
18383          l_chk_rel_ast := 'N';
18384 
18385        -- Bug# 15992711 : Change in number of parameters passed to new cursor
18386        -- OPEN l_chk_rel_ast_csr(p_chr_id => l_clev_inst_rec.dnz_chr_id);
18387           OPEN l_chk_rel_ast_csr(l_clev_inst_rec.dnz_chr_id
18388                                 ,p_asset_number);
18389        -- Bug# 15992711 : End of Modifications
18390 
18391          FETCH l_chk_rel_ast_csr INTO l_chk_rel_ast;
18392          CLOSE l_chk_rel_ast_csr;
18393 
18394          IF l_chk_rel_ast = 'Y' THEN
18395            OKL_API.set_message(p_app_name     => G_APP_NAME,
18396                                p_msg_name     => 'OKL_LA_REL_UNITS_NO_UPDATE');
18397            RAISE OKL_API.G_EXCEPTION_ERROR;
18398          ELSE
18399 
18400       lb_update_oec_required := TRUE;
18401     END IF;
18402          --akrangan Bug# 5362977 end
18403        END IF;
18404 
18405     -- end modified
18406 
18407     -- We have to make sure the count of the itiv_tbl
18408     -- should be equal to qty of items
18409     -- Since inst tbl and ib inst are same
18410     -- it is Good enough to do one
18411     ln_dummy1 := l_itiv_ib_tbl.COUNT - 1;
18412     IF ln_dummy1 > 0 THEN
18413        --ln_dummy1 :=  l_itiv_ib_tbl.COUNT;
18414        -- We have intialize the J , since there could be any index integer
18415        j := l_itiv_ib_tbl.FIRST;
18416        j := l_itiv_ib_tbl.NEXT(j);
18417        LOOP
18418          IF (l_itiv_ib_tbl(j).mfg_serial_number_yn IS NULL OR
18419             l_itiv_ib_tbl(j).mfg_serial_number_yn = OKL_API.G_MISS_CHAR) THEN
18420             x_return_status := OKL_API.G_RET_STS_ERROR;
18421             OKL_API.set_message(p_app_name     => G_APP_NAME,
18422                                 p_msg_name     => G_REQUIRED_VALUE,
18423                                 p_token1       => G_COL_NAME_TOKEN,
18424                                 p_token1_value => 'mfg_serial_number_yn');
18425             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18426          ELSIF l_itiv_ib_tbl(j).mfg_serial_number_yn <> 'Y' THEN
18427             OKL_API.set_message(p_app_name     => G_APP_NAME,
18428                                 p_msg_name     => G_REQUIRED_VALUE,
18429                                 p_token1       => G_COL_NAME_TOKEN,
18430                                 p_token1_value => 'mfg_serial_number_yn cannot be N');
18431             x_return_status := OKL_API.G_RET_STS_ERROR;
18432             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18433          END IF;
18434          EXIT WHEN (j = l_itiv_ib_tbl.LAST);
18435          j := l_itiv_ib_tbl.NEXT(j);
18436        END LOOP;
18437        IF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18438          RAISE OKL_API.G_EXCEPTION_ERROR;
18439        END IF;
18440     ELSIF (NOT lb_record_created) THEN
18441       OKL_API.set_message(p_app_name     => G_APP_NAME,
18442                           p_msg_name     => G_CNT_REC);
18443       RAISE OKL_API.G_EXCEPTION_ERROR;
18444     END IF;
18445     -- Since we have to create the instance
18446     -- Depending of the qty in l_cimv_model_rec.number_of_items
18447     -- we have use loop
18448     ln_dummy := l_itiv_ib_tbl.COUNT - 1;
18449     IF (ln_dummy > 0) THEN
18450       j := l_itiv_ib_tbl.FIRST;
18451       j := l_itiv_ib_tbl.NEXT(j);
18452       FOR i IN 1..ln_dummy LOOP
18453       -- 4414408 Assign the line style ID directly
18454 /*
18455         -- Creation of the Instance Line Process
18456         -- Getting the Line style Info
18457         x_return_status := get_lse_id(p_lty_code => G_INST_LINE_LTY_CODE,
18458                                       x_lse_id   => l_clev_inst_rec.lse_id);
18459         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18460           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18461         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18462           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18463         END IF;
18464 */
18465         IF (l_clev_inst_rec.display_sequence IS NUll OR
18466           l_clev_inst_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
18467           l_clev_inst_rec.display_sequence  := l_clev_inst_rec.display_sequence + 1;
18468         END IF;
18469         -- Required cle Line Information
18470         -- Since we have a local Record of the Instance line
18471         -- We can you the same
18472         l_clev_inst_rec.lse_id            := G_INST_LINE_LTY_ID;
18473         l_clev_inst_rec.chr_id            := null;
18474         l_clev_inst_rec.cle_id            := l_clev_inst_rec.cle_id;
18475         l_clev_inst_rec.dnz_chr_id        := l_clev_inst_rec.dnz_chr_id;
18476         l_clev_inst_rec.exception_yn      := 'N';
18477         IF (l_itiv_ib_tbl(j).instance_number_ib IS NULL OR
18478           l_itiv_ib_tbl(j).instance_number_ib = OKL_API.G_MISS_CHAR)  THEN
18479           x_return_status := generate_instance_number_ib(x_instance_number_ib => l_itiv_ib_tbl(j).instance_number_ib);
18480           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18481             OKL_API.set_message(p_app_name     => G_APP_NAME,
18482                                 p_msg_name     => G_GEN_INST_NUM_IB);
18483             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18484           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18485             OKL_API.set_message(p_app_name     => G_APP_NAME,
18486                                 p_msg_name     => G_GEN_INST_NUM_IB);
18487             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18488           END IF;
18489           l_itiv_ib_tbl(j).instance_number_ib := p_asset_number||' '||l_itiv_ib_tbl(j).instance_number_ib;
18490         END IF;
18491 
18492         -- Creation of the Instance Line
18493         Create_instance_line(p_api_version   => p_api_version,
18494                              p_init_msg_list => p_init_msg_list,
18495                              x_return_status => x_return_status,
18496                              x_msg_count     => x_msg_count,
18497                              x_msg_data      => x_msg_data,
18498                              p_clev_rec      => l_clev_inst_rec,
18499                              p_klev_rec      => l_klev_inst_rec,
18500                              p_itiv_rec      => l_itiv_ib_tbl(j),
18501                              x_clev_rec      => l_clev_inst_rec_out,
18502                              x_klev_rec      => l_klev_inst_rec_out,
18503                              x_itiv_rec      => l_itiv_ib_tbl_out(j));
18504         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18505           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18506         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18507           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18508         END IF;
18509       -- 4414408 Assign the line style ID directly
18510 /*
18511         -- Creation of the ib Line Process
18512         -- Getting the Line style Info
18513         x_return_status := get_lse_id(p_lty_code => G_IB_LINE_LTY_CODE,
18514                                       x_lse_id   => l_clev_ib_rec.lse_id);
18515         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18516           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18517         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18518           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18519         END IF;
18520 */
18521         IF (l_clev_ib_rec.display_sequence IS NUll OR
18522            l_clev_ib_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
18523            l_clev_ib_rec.display_sequence  := l_clev_ib_rec_out.display_sequence + 1;
18524         END IF;
18525         -- Required cle Line Information
18526         l_clev_ib_rec.lse_id            := G_IB_LINE_LTY_ID;
18527         l_clev_ib_rec.chr_id            := null;
18528         l_clev_ib_rec.cle_id            := l_clev_inst_rec_out.id;
18529         l_clev_ib_rec.dnz_chr_id        := l_clev_inst_rec_out.dnz_chr_id;
18530         l_clev_ib_rec.exception_yn      := 'N';
18531         -- Required Item Information
18532         l_cimv_ib_rec.exception_yn      := 'N';
18533         l_cimv_ib_rec.object1_id1       := null;
18534         l_cimv_ib_rec.object1_id2       := null;
18535         -- Since the screen can give only party_site_id via l_itiv_tbl(j).object_id1_new
18536         -- We have to use the below function
18537         lv_object_id1_new := l_itiv_ib_tbl(j).object_id1_new;
18538         x_return_status := get_party_site_id(p_object_id1_new => lv_object_id1_new,
18539                                              x_object_id1_new => l_itiv_ib_tbl(j).object_id1_new,
18540                                              x_object_id2_new => l_itiv_ib_tbl(j).object_id2_new);
18541         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18542           OKL_API.set_message(p_app_name     => G_APP_NAME,
18543                              p_msg_name     => G_NO_MATCHING_RECORD,
18544                              p_token1       => G_COL_NAME_TOKEN,
18545                              p_token1_value => 'Party_site_id');
18546           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18547         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18548           OKL_API.set_message(p_app_name     => G_APP_NAME,
18549                               p_msg_name     => G_NO_MATCHING_RECORD,
18550                               p_token1       => G_COL_NAME_TOKEN,
18551                               p_token1_value => 'Party_site_id');
18552           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18553         END IF;
18554 
18555         -- Check for uniqueness of Serial number
18556         x_return_status := is_duplicate_serial_number(p_serial_number => l_itiv_ib_tbl(j).serial_number,
18557                                                       p_item_id       => ln_item_id);
18558         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18559           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18560         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18561           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18562         END IF;
18563 
18564         -- Creation of the ib Line
18565         Create_instance_ib_line(p_api_version   => p_api_version,
18566                                 p_init_msg_list => p_init_msg_list,
18567                                 x_return_status => x_return_status,
18568                                 x_msg_count     => x_msg_count,
18569                                 x_msg_data      => x_msg_data,
18570                                 p_clev_rec      => l_clev_ib_rec,
18571                                 p_klev_rec      => l_klev_ib_rec,
18572                                 p_cimv_rec      => l_cimv_ib_rec,
18573                                 p_itiv_rec      => l_itiv_ib_tbl(j),
18574                                 x_clev_rec      => x_clev_ib_rec,
18575                                 x_klev_rec      => l_klev_ib_rec_out,
18576                                 x_cimv_rec      => l_cimv_ib_rec_out,
18577                                 x_trxv_rec      => l_trxv_ib_rec_out,
18578                                 x_itiv_rec      => x_itiv_ib_tbl(j));
18579         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18580           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18581         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18582           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18583         END IF;
18584         EXIT WHEN (j = l_itiv_ib_tbl.LAST);
18585         x_clev_ib_tbl(i) := x_clev_ib_rec;
18586         j := l_itiv_ib_tbl.NEXT(j);
18587       END LOOP;
18588       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18589         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18590       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18591         RAISE OKL_API.G_EXCEPTION_ERROR;
18592       END IF;
18593     ELSIF (NOT lb_record_created) THEN
18594       OKL_API.set_message(p_app_name     => G_APP_NAME,
18595                           p_msg_name     => G_CNT_REC);
18596       RAISE OKL_API.G_EXCEPTION_ERROR;
18597     END IF; -- End if (ln_dummy > 0)
18598 
18599     -- We need to execute the following 'IF' loop, when the current units
18600     -- is changed, by editing more or less serial #'s.
18601     IF (lb_update_oec_required) THEN
18602     -- we should get the remaining inst line , so that we can update
18603     -- the fixed line , model line and also update the top line with latest OEC
18604     OPEN c_remain_inst_line(l_clev_inst_rec.cle_id,
18605                             l_clev_inst_rec.dnz_chr_id);
18606     IF c_remain_inst_line%NOTFOUND THEN
18607       OKL_API.set_message(p_app_name     => G_APP_NAME,
18608                           p_msg_name     => G_DELETING_INSTS_LINE);
18609       RAISE OKL_API.G_EXCEPTION_ERROR;
18610     END IF;
18611     FETCH c_remain_inst_line INTO ln_remain_inst;
18612     CLOSE c_remain_inst_line;
18613 
18614     -- To get the Model Line
18615     -- Since we have update the model line
18616     OPEN c_model_line(l_clev_inst_rec.cle_id,
18617                       l_clev_inst_rec.dnz_chr_id);
18618     IF c_model_line%NOTFOUND THEN
18619       OKL_API.set_message(p_app_name     => G_APP_NAME,
18620                           p_msg_name     => G_NO_MATCHING_RECORD,
18621                           p_token1       => G_COL_NAME_TOKEN,
18622                           p_token1_value => 'Model Asset Line record');
18623       RAISE OKL_API.G_EXCEPTION_ERROR;
18624     END IF;
18625     FETCH c_model_line INTO ln_model_line_id;
18626     CLOSE c_model_line;
18627 
18628     -- To get the Fixed Asset Line
18629     -- Since we have update the Fixed Asset Line
18630     OPEN c_fa_line(l_clev_inst_rec.cle_id,
18631                    l_clev_inst_rec.dnz_chr_id);
18632     IF c_fa_line%NOTFOUND THEN
18633        OKL_API.set_message(p_app_name     => G_APP_NAME,
18634                            p_msg_name     => G_NO_MATCHING_RECORD,
18635                            p_token1       => G_COL_NAME_TOKEN,
18636                            p_token1_value => 'Fixed Asset Line record');
18637        RAISE OKL_API.G_EXCEPTION_ERROR;
18638     END IF;
18639     FETCH c_fa_line INTO ln_fa_line_id;
18640     CLOSE c_fa_line;
18641 
18642     -- We have to build the Model Line Record for the calculations of the
18643     -- oec of the top line
18644 
18645     -- To Get the cle Model Line Record
18646     x_return_status := get_rec_clev(ln_model_line_id,
18647                                     r_clev_model_rec);
18648     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18649        OKL_API.set_message(p_app_name     => G_APP_NAME,
18650                            p_msg_name     => G_FETCHING_INFO,
18651                            p_token1       => G_REC_NAME_TOKEN,
18652                            p_token1_value => 'OKC_K_LINES_V Record');
18653        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18654     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18655        OKL_API.set_message(p_app_name     => G_APP_NAME,
18656                            p_msg_name     => G_FETCHING_INFO,
18657                            p_token1       => G_REC_NAME_TOKEN,
18658                            p_token1_value => 'OKC_K_LINES_V Record');
18659        RAISE OKL_API.G_EXCEPTION_ERROR;
18660     END IF;
18661 
18662     -- To Get the kle Model Line Record
18663     x_return_status := get_rec_klev(ln_model_line_id,
18664                                     r_klev_model_rec);
18665     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18666        OKL_API.set_message(p_app_name     => G_APP_NAME,
18667                            p_msg_name     => G_FETCHING_INFO,
18668                            p_token1       => G_REC_NAME_TOKEN,
18669                            p_token1_value => 'OKL_K_LINES_V Record');
18670        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18671     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18672        OKL_API.set_message(p_app_name     => G_APP_NAME,
18673                            p_msg_name     => G_FETCHING_INFO,
18674                            p_token1       => G_REC_NAME_TOKEN,
18675                            p_token1_value => 'OKL_K_LINES_V Record');
18676        RAISE OKL_API.G_EXCEPTION_ERROR;
18677     END IF;
18678 
18679     IF r_klev_model_rec.id <> r_clev_model_rec.id THEN
18680        OKL_API.set_message(p_app_name     => G_APP_NAME,
18681                            p_msg_name     => G_LINE_RECORD);
18682        RAISE OKL_API.G_EXCEPTION_ERROR;
18683     END IF;
18684 
18685     -- To Get the cimv Model Line Record
18686     x_return_status := get_rec_cimv(r_clev_model_rec.id,
18687                                     r_clev_model_rec.dnz_chr_id,
18688                                     r_cimv_model_rec);
18689     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18690        OKL_API.set_message(p_app_name     => G_APP_NAME,
18691                            p_msg_name     => G_FETCHING_INFO,
18692                            p_token1       => G_REC_NAME_TOKEN,
18693                            p_token1_value => 'OKC_K_ITEMS_V Record');
18694        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18695     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18696        OKL_API.set_message(p_app_name     => G_APP_NAME,
18697                            p_msg_name     => G_FETCHING_INFO,
18698                            p_token1       => G_REC_NAME_TOKEN,
18699                            p_token1_value => 'OKC_K_ITEMS_V Record');
18700        RAISE OKL_API.G_EXCEPTION_ERROR;
18701     END IF;
18702 
18703     --Build Model cimv item rec
18704     r_cimv_model_rec.number_of_items  := ln_remain_inst;
18705     -- Updating of the Model Line and Item Record
18706     update_model_line(p_api_version   => p_api_version,
18707                       p_init_msg_list => p_init_msg_list,
18708                       x_return_status => x_return_status,
18709                       x_msg_count     => x_msg_count,
18710                       x_msg_data      => x_msg_data,
18711                       P_new_yn        => P_new_yn,
18712                       p_asset_number  => p_asset_number,
18713                       p_clev_rec      => r_clev_model_rec,
18714                       p_klev_rec      => r_klev_model_rec,
18715                       p_cimv_rec      => r_cimv_model_rec,
18716                       x_clev_rec      => l_clev_model_rec_out,
18717                       x_klev_rec      => l_klev_model_rec_out,
18718                       x_cimv_rec      => x_cimv_model_rec);
18719     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18720       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18721     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18722       RAISE OKL_API.G_EXCEPTION_ERROR;
18723     END IF;
18724 
18725     -- We need to check if there are add on line and then we update the Addon number of items also
18726     -- Since there can be multiple Addo lines
18727     FOR r_addon_line_id IN c_addon_line_id(p_cle_id => l_clev_model_rec_out.cle_id,
18728                                            p_chr_id => l_clev_model_rec_out.dnz_chr_id) LOOP
18729       --We have to build the addon Line Record for the calculations of the
18730       -- oec of the top line
18731       -- To Get the cle addon Line Record
18732       x_return_status := get_rec_clev(r_addon_line_id.id,
18733                                       r_clev_addon_rec);
18734       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18735          OKL_API.set_message(p_app_name     => G_APP_NAME,
18736                              p_msg_name     => G_FETCHING_INFO,
18737                              p_token1       => G_REC_NAME_TOKEN,
18738                              p_token1_value => 'OKC_K_LINES_V Record');
18739          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18740       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18741          OKL_API.set_message(p_app_name     => G_APP_NAME,
18742                              p_msg_name     => G_FETCHING_INFO,
18743                              p_token1       => G_REC_NAME_TOKEN,
18744                              p_token1_value => 'OKC_K_LINES_V Record');
18745          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18746       END IF;
18747       -- To Get the kle Model Line Record
18748       x_return_status := get_rec_klev(r_addon_line_id.id,
18749                                       r_klev_addon_rec);
18750       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18751          OKL_API.set_message(p_app_name     => G_APP_NAME,
18752                              p_msg_name     => G_FETCHING_INFO,
18753                              p_token1       => G_REC_NAME_TOKEN,
18754                              p_token1_value => 'OKL_K_LINES_V Record');
18755          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18756       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18757          OKL_API.set_message(p_app_name     => G_APP_NAME,
18758                              p_msg_name     => G_FETCHING_INFO,
18759                              p_token1       => G_REC_NAME_TOKEN,
18760                              p_token1_value => 'OKL_K_LINES_V Record');
18761          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18762       END IF;
18763       IF r_klev_addon_rec.id <> r_clev_addon_rec.id THEN
18764          OKL_API.set_message(p_app_name     => G_APP_NAME,
18765                              p_msg_name     => G_LINE_RECORD);
18766          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18767       END IF;
18768       -- To Get the cimv Model Line Record
18769       x_return_status := get_rec_cimv(r_clev_addon_rec.id,
18770                                       r_clev_addon_rec.dnz_chr_id,
18771                                       r_cimv_addon_rec);
18772       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18773          OKL_API.set_message(p_app_name     => G_APP_NAME,
18774                              p_msg_name     => G_FETCHING_INFO,
18775                              p_token1       => G_REC_NAME_TOKEN,
18776                              p_token1_value => 'OKC_K_ITEMS_V Record');
18777          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18778       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18779          OKL_API.set_message(p_app_name     => G_APP_NAME,
18780                              p_msg_name     => G_FETCHING_INFO,
18781                              p_token1       => G_REC_NAME_TOKEN,
18782                              p_token1_value => 'OKC_K_ITEMS_V Record');
18783          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18784       END IF;
18785       --Build addon cimv item rec
18786       r_cimv_addon_rec.number_of_items  := ln_remain_inst;
18787       -- Updating of the addon Line and Item Record
18788       update_addon_line_rec(p_api_version   => p_api_version,
18789                             p_init_msg_list => p_init_msg_list,
18790                             x_return_status => x_return_status,
18791                             x_msg_count     => x_msg_count,
18792                             x_msg_data      => x_msg_data,
18793                             P_new_yn        => P_new_yn,
18794                             p_asset_number  => p_asset_number,
18795                             p_clev_rec      => r_clev_addon_rec,
18796                             p_klev_rec      => r_klev_addon_rec,
18797                             p_cimv_rec      => r_cimv_addon_rec,
18798                             x_clev_rec      => rx_clev_addon_rec,
18799                             x_klev_rec      => rx_klev_addon_rec,
18800                             x_cimv_rec      => rx_cimv_addon_rec);
18801       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18802          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18803       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18804          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18805       END IF;
18806     END LOOP;
18807     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18808        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18809     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18810        RAISE OKL_API.G_EXCEPTION_ERROR;
18811     END IF;
18812 
18813     -- Since we need to populate the OEC into fixed asset line also
18814     -- So we need to calcualte the same here it self
18815     oec_calc_upd_fin_rec(p_api_version        => p_api_version,
18816                          p_init_msg_list      => p_init_msg_list,
18817                          x_return_status      => x_return_status,
18818                          x_msg_count          => x_msg_count,
18819                          x_msg_data           => x_msg_data,
18820                          P_new_yn             => P_new_yn,
18821                          p_asset_number       => p_asset_number,
18822 			 -- 4414408
18823                          p_top_line_id        => l_clev_inst_rec.cle_id,
18824                          p_dnz_chr_id         => l_clev_model_rec_out.dnz_chr_id,
18825                          x_fin_clev_rec       => x_clev_fin_rec,
18826                          x_fin_klev_rec       => x_klev_fin_rec,
18827                          x_oec                => ln_klev_fin_oec,
18828                          p_validate_fin_line  => OKL_API.G_TRUE);
18829     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18830        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18831     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18832        RAISE OKL_API.G_EXCEPTION_ERROR;
18833     END IF;
18834 
18835     -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
18836     cap_amt_calc_upd_fin_rec(p_api_version        => p_api_version,
18837                              p_init_msg_list      => p_init_msg_list,
18838                              x_return_status      => x_return_status,
18839                              x_msg_count          => x_msg_count,
18840                              x_msg_data           => x_msg_data,
18841                              P_new_yn             => P_new_yn,
18842                              p_asset_number       => p_asset_number,
18843 			     -- 4414408
18844                              p_top_line_id        => l_clev_inst_rec.cle_id,
18845                              p_dnz_chr_id         => l_clev_model_rec_out.dnz_chr_id,
18846                              x_fin_clev_rec       => x_clev_fin_rec,
18847                              x_fin_klev_rec       => x_klev_fin_rec,
18848                              x_cap_amt            => ln_klev_fin_cap,
18849                              p_validate_fin_line  => OKL_API.G_TRUE);
18850     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18851       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18852     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18853       RAISE OKL_API.G_EXCEPTION_ERROR;
18854     END IF;
18855 
18856     -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
18857     res_value_calc_upd_fin_rec(p_api_version        => p_api_version,
18858                                p_init_msg_list      => p_init_msg_list,
18859                                x_return_status      => x_return_status,
18860                                x_msg_count          => x_msg_count,
18861                                x_msg_data           => x_msg_data,
18862                                P_new_yn             => P_new_yn,
18863                                p_asset_number       => p_asset_number,
18864 			       -- 4414408
18865                                p_top_line_id        => l_clev_inst_rec.cle_id,
18866                                p_dnz_chr_id         => l_clev_model_rec_out.dnz_chr_id,
18867                                x_fin_clev_rec       => x_clev_fin_rec,
18868                                x_fin_klev_rec       => x_klev_fin_rec,
18869                                x_res_value          => ln_klev_fin_res,
18870                                p_validate_fin_line  => OKL_API.G_TRUE);
18871     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18872       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18873     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18874       RAISE OKL_API.G_EXCEPTION_ERROR;
18875     END IF;
18876 
18877     -- Updating of the Fixed Asset Line Process
18878     -- To Get the cle fa Line Record
18879     x_return_status := get_rec_clev(ln_fa_line_id,
18880                                     r_clev_fa_rec);
18881     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18882        OKL_API.set_message(p_app_name     => G_APP_NAME,
18883                            p_msg_name     => G_FETCHING_INFO,
18884                            p_token1       => G_REC_NAME_TOKEN,
18885                            p_token1_value => 'OKC_K_LINES_V Record');
18886        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18887     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18888        OKL_API.set_message(p_app_name     => G_APP_NAME,
18889                            p_msg_name     => G_FETCHING_INFO,
18890                            p_token1       => G_REC_NAME_TOKEN,
18891                            p_token1_value => 'OKC_K_LINES_V Record');
18892        RAISE OKL_API.G_EXCEPTION_ERROR;
18893     END IF;
18894 
18895     -- To Get the kle fa Line Record
18896     x_return_status := get_rec_klev(ln_fa_line_id,
18897                                     r_klev_fa_rec);
18898     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18899        OKL_API.set_message(p_app_name     => G_APP_NAME,
18900                            p_msg_name     => G_FETCHING_INFO,
18901                            p_token1       => G_REC_NAME_TOKEN,
18902                            p_token1_value => 'OKL_K_LINES_V Record');
18903        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18904     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18905        OKL_API.set_message(p_app_name     => G_APP_NAME,
18906                            p_msg_name     => G_FETCHING_INFO,
18907                            p_token1       => G_REC_NAME_TOKEN,
18908                            p_token1_value => 'OKL_K_LINES_V Record');
18909        RAISE OKL_API.G_EXCEPTION_ERROR;
18910     END IF;
18911 
18912     IF r_klev_fa_rec.id <> r_clev_fa_rec.id THEN
18913        OKL_API.set_message(p_app_name     => G_APP_NAME,
18914                            p_msg_name     => G_LINE_RECORD);
18915        RAISE OKL_API.G_EXCEPTION_ERROR;
18916     END IF;
18917 
18918     -- To Get the cimv fa Line Record
18919     x_return_status := get_rec_cimv(r_clev_fa_rec.id,
18920                                     r_clev_fa_rec.dnz_chr_id,
18921                                     r_cimv_fa_rec);
18922     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18923        OKL_API.set_message(p_app_name     => G_APP_NAME,
18924                            p_msg_name     => G_FETCHING_INFO,
18925                            p_token1       => G_REC_NAME_TOKEN,
18926                            p_token1_value => 'OKC_K_ITEMS_V Record');
18927        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18928     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18929        OKL_API.set_message(p_app_name     => G_APP_NAME,
18930                            p_msg_name     => G_FETCHING_INFO,
18931                            p_token1       => G_REC_NAME_TOKEN,
18932                            p_token1_value => 'OKC_K_ITEMS_V Record');
18933        RAISE OKL_API.G_EXCEPTION_ERROR;
18934     END IF;
18935 
18936     --Build cimv fa item rec
18937     r_cimv_fa_rec.number_of_items  := ln_remain_inst;
18938     --Build talv fa item rec
18939     x_return_status := get_rec_txlv(r_clev_fa_rec.id,
18940                                     r_talv_fa_rec);
18941     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18942        OKL_API.set_message(p_app_name     => G_APP_NAME,
18943                            p_msg_name     => G_FETCHING_INFO,
18944                            p_token1       => G_REC_NAME_TOKEN,
18945                            p_token1_value => 'OKL_TXL_ASSETS_V Record');
18946        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18947     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18948        OKL_API.set_message(p_app_name     => G_APP_NAME,
18949                            p_msg_name     => G_FETCHING_INFO,
18950                            p_token1       => G_REC_NAME_TOKEN,
18951                            p_token1_value => 'OKL_TXL_ASSETS_V Record');
18952        RAISE OKL_API.G_EXCEPTION_ERROR;
18953     END IF;
18954 
18955     --Build talv fa item rec
18956     r_talv_fa_rec.current_units  := ln_remain_inst;
18957 
18958        --akrangan Bug# 5362977 start
18959        -- For online rebook, update depreciation_cost and
18960        -- original_cost to line capital amount instead of line oec
18961        --check for rebook contract
18962        l_rbk_khr := '?';
18963        OPEN l_chk_rbk_csr (p_chr_id => r_clev_fa_rec.dnz_chr_id);
18964        FETCH l_chk_rbk_csr INTO l_rbk_khr;
18965        CLOSE l_chk_rbk_csr;
18966 
18967        If l_rbk_khr = '!' Then
18968          r_talv_fa_rec.depreciation_cost := NVL(x_klev_fin_rec.capital_amount,ln_klev_fin_cap);
18969          r_talv_fa_rec.original_cost := NVL(x_klev_fin_rec.capital_amount,ln_klev_fin_cap);
18970        else
18971 
18972     r_talv_fa_rec.depreciation_cost := x_klev_fin_rec.oec;
18973        r_talv_fa_rec.original_cost := x_klev_fin_rec.oec;
18974        end if;
18975        --akrangan Bug# 5362977  end
18976 
18977     r_clev_fa_rec.item_description := r_talv_fa_rec.description;
18978     -- Updating of the Fixed Asset Line and item/Txl Asset Info
18979     update_fixed_asset_line(p_api_version   => p_api_version,
18980                             p_init_msg_list => p_init_msg_list,
18981                             x_return_status => x_return_status,
18982                             x_msg_count     => x_msg_count,
18983                             x_msg_data      => x_msg_data,
18984                             P_new_yn        => P_new_yn,
18985                             p_asset_number  => p_asset_number,
18986                             p_clev_rec      => r_clev_fa_rec,
18987                             p_klev_rec      => r_klev_fa_rec,
18988                             p_cimv_rec      => r_cimv_fa_rec,
18989                             p_talv_rec      => r_talv_fa_rec,
18990                             x_clev_rec      => l_clev_fa_rec_out,
18991                             x_klev_rec      => l_klev_fa_rec_out,
18992                             x_cimv_rec      => x_cimv_fa_rec,
18993                             x_talv_rec      => x_talv_fa_rec);
18994     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18995       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18996     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18997       RAISE OKL_API.G_EXCEPTION_ERROR;
18998     END IF;
18999          --akrangan Bug# 5362977 start
19000        -- Update Tax Book details - okl_txd_assets_b
19001        update_asset_line_details(p_api_version   => p_api_version,
19002                                  p_init_msg_list => p_init_msg_list,
19003                                  x_return_status => x_return_status,
19004                                  x_msg_count     => x_msg_count,
19005                                  x_msg_data      => x_msg_data,
19006                                  p_asset_number  => p_asset_number,
19007                                  p_original_cost => x_talv_fa_rec.original_cost,
19008                                  p_tal_id        => x_talv_fa_rec.ID);
19009        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19010          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19011        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19012          RAISE OKL_API.G_EXCEPTION_ERROR;
19013        END IF;
19014        --akrangan Bug# 5362977 end
19015 
19016     -- We need to change the status of the header whenever there is updating happening
19017     -- after the contract status is approved
19018     IF (l_clev_fa_rec_out.dnz_chr_id is NOT NULL) AND
19019        (l_clev_fa_rec_out.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
19020       --cascade edit status on to lines
19021       okl_contract_status_pub.cascade_lease_status_edit
19022                (p_api_version     => p_api_version,
19023                 p_init_msg_list   => p_init_msg_list,
19024                 x_return_status   => x_return_status,
19025                 x_msg_count       => x_msg_count,
19026                 x_msg_data        => x_msg_data,
19027                 p_chr_id          => l_clev_fa_rec_out.dnz_chr_id);
19028       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19029         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19030       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19031         RAISE OKL_API.G_EXCEPTION_ERROR;
19032       END IF;
19033     END IF;
19034 
19035     END IF;
19036 
19037     OKL_API.END_ACTIVITY (x_msg_count,
19038                           x_msg_data );
19039   EXCEPTION
19040     WHEN OKL_API.G_EXCEPTION_ERROR THEN
19041     IF c_model_item%ISOPEN THEN
19042       CLOSE c_model_item;
19043     END IF;
19044     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
19045                                l_api_name,
19046                                G_PKG_NAME,
19047                                'OKL_API.G_RET_STS_ERROR',
19048                                x_msg_count,
19049                                x_msg_data,
19050                                '_PVT');
19051     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
19052     IF c_model_item%ISOPEN THEN
19053       CLOSE c_model_item;
19054     END IF;
19055     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
19056                               l_api_name,
19057                               G_PKG_NAME,
19058                               'OKL_API.G_RET_STS_UNEXP_ERROR',
19059                               x_msg_count,
19060                               x_msg_data,
19061                               '_PVT');
19062     WHEN OTHERS THEN
19063     IF c_model_item%ISOPEN THEN
19064       CLOSE c_model_item;
19065     END IF;
19066     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
19067                               l_api_name,
19068                               G_PKG_NAME,
19069                               'OTHERS',
19070                               x_msg_count,
19071                               x_msg_data,
19072                               '_PVT');
19073   END create_ints_ib_line;
19074 -------------------------------------------------------------------------------------------------------
19075 ----------------- Main Process for Updating of instance and Install base line  ------------------------
19076 -------------------------------------------------------------------------------------------------------
19077   PROCEDURE update_ints_ib_line(
19078             p_api_version    IN  NUMBER,
19079             p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
19080             x_return_status  OUT NOCOPY VARCHAR2,
19081             x_msg_count      OUT NOCOPY NUMBER,
19082             x_msg_data       OUT NOCOPY VARCHAR2,
19083             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
19084             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
19085             p_top_line_id    IN  OKC_K_LINES_V.ID%TYPE,
19086             p_dnz_chr_id     IN  OKC_K_HEADERS_V.ID%TYPE,
19087             p_itiv_ib_tbl    IN  itiv_tbl_type,
19088             x_clev_ib_tbl    OUT NOCOPY clev_tbl_type,
19089             x_itiv_ib_tbl    OUT NOCOPY itiv_tbl_type) IS
19090     l_api_name          CONSTANT VARCHAR2(30) := 'UPDATE_INTS_IB_LINE';
19091     i                            NUMBER := 0;
19092     l_itiv_ib_tbl                itiv_tbl_type;
19093     l_clev_inst_rec              clev_rec_type;
19094     l_klev_inst_rec              klev_rec_type;
19095     l_clev_ib_rec                clev_rec_type;
19096     l_clev_inst_rec_out          clev_rec_type;
19097     l_klev_inst_rec_out          klev_rec_type;
19098     l_itiv_ib_tbl_out            itiv_tbl_type;
19099     l_klev_ib_rec                klev_rec_type;
19100     l_cimv_ib_rec                cimv_rec_type;
19101     l_klev_ib_rec_out            klev_rec_type;
19102     l_cimv_ib_rec_out            cimv_rec_type;
19103     l_trxv_ib_rec_out            trxv_rec_type;
19104     ln_remain_inst               NUMBER := 0;
19105     ln_model_line_id             OKC_K_LINES_V.ID%TYPE := OKL_API.G_MISS_NUM;
19106     lv_object_id1_new            OKL_TXL_ITM_INSTS.OBJECT_ID1_NEW%TYPE := OKL_API.G_MISS_CHAR;
19107     ln_fa_line_id                OKC_K_LINES_V.ID%TYPE := OKL_API.G_MISS_NUM;
19108     r_clev_model_rec             clev_rec_type;
19109     r_klev_model_rec             klev_rec_type;
19110     r_cimv_model_rec             cimv_rec_type;
19111     r_clev_fa_rec                clev_rec_type;
19112     r_klev_fa_rec                klev_rec_type;
19113     r_cimv_fa_rec                cimv_rec_type;
19114     r_talv_fa_rec                talv_rec_type;
19115     l_clev_model_rec_out         clev_rec_type;
19116     l_klev_model_rec_out         klev_rec_type;
19117     l_cimv_model_rec_out         cimv_rec_type;
19118     l_clev_fa_rec_out            clev_rec_type;
19119     l_klev_fa_rec_out            klev_rec_type;
19120     lx_cimv_fa_rec               cimv_rec_type;
19121     lx_talv_fa_rec               talv_rec_type;
19122     lx_clev_fin_rec              clev_rec_type;
19123     lx_klev_fin_rec              klev_rec_type;
19124     ln_klev_fin_oec              OKL_K_LINES_V.OEC%TYPE := 0;
19125     ln_klev_fin_res              OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
19126     ln_klev_fin_cap              OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
19127     r_clev_addon_rec             clev_rec_type;
19128     r_klev_addon_rec             klev_rec_type;
19129     r_cimv_addon_rec             cimv_rec_type;
19130     rx_clev_addon_rec            clev_rec_type;
19131     rx_klev_addon_rec            klev_rec_type;
19132     rx_cimv_addon_rec            cimv_rec_type;
19133     ln_model_item                OKL_TXL_ITM_INSTS.INVENTORY_ITEM_ID%TYPE;
19134 
19135     CURSOR c_remain_inst_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
19136                               p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
19137     SELECT count(cle.id)
19138     FROM okc_subclass_top_line stl,
19139          okc_line_styles_b lse2,
19140          okc_line_styles_b lse1,
19141          okc_k_lines_v cle
19142     WHERE cle.cle_id = p_cle_id
19143     AND cle.dnz_chr_id = p_chr_id
19144     AND cle.lse_id = lse1.id
19145     AND lse1.lty_code = G_INST_LINE_LTY_CODE
19146     AND lse1.lse_parent_id = lse2.id
19147     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
19148     AND lse2.id = stl.lse_id
19149     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
19150 
19151     CURSOR c_model_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
19152                         p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
19153     SELECT cle.id
19154     FROM okc_subclass_top_line stl,
19155          okc_line_styles_b lse2,
19156          okc_line_styles_b lse1,
19157          okc_k_lines_v cle
19158     WHERE cle.cle_id = p_cle_id
19159     AND cle.dnz_chr_id = p_chr_id
19160     AND cle.lse_id = lse1.id
19161     AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
19162     AND lse1.lse_parent_id = lse2.id
19163     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
19164     AND lse2.id = stl.lse_id
19165     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
19166 
19167     CURSOR c_model_item(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
19168                         p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
19169     SELECT cim.object1_id1
19170     FROM okc_subclass_top_line stl,
19171          okc_line_styles_b lse2,
19172          okc_line_styles_b lse1,
19173          okc_k_items cim,
19174          okc_k_lines_v cle
19175     WHERE cle.cle_id = p_cle_id
19176     AND cle.dnz_chr_id = p_chr_id
19177     AND cle.lse_id = lse1.id
19178     AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
19179     AND lse1.lse_parent_id = lse2.id
19180     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
19181     AND lse2.id = stl.lse_id
19182     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE)
19183     AND cle.id = cim.cle_id
19184     AND cim.dnz_chr_id = cle.dnz_chr_id
19185     AND cim.jtot_object1_code = 'OKX_SYSITEM';
19186 
19187     CURSOR c_fa_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
19188                      p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
19189     SELECT cle.id
19190     FROM okc_subclass_top_line stl,
19191          okc_line_styles_b lse2,
19192          okc_line_styles_b lse1,
19193          okc_k_lines_v cle
19194     WHERE cle.cle_id = p_cle_id
19195     AND cle.dnz_chr_id = p_chr_id
19196     AND cle.lse_id = lse1.id
19197     AND lse1.lty_code = G_FA_LINE_LTY_CODE
19198     AND lse1.lse_parent_id = lse2.id
19199     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
19200     AND lse2.id = stl.lse_id
19201     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
19202 
19203     CURSOR c_addon_line_id(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
19204                            p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
19205     SELECT cle.id
19206     FROM okc_subclass_top_line stl,
19207          okc_line_styles_b lse3,
19208          okc_line_styles_b lse2,
19209          okc_line_styles_b lse1,
19210          okc_k_lines_b cle
19211     WHERE cle.dnz_chr_id = p_chr_id
19212     AND cle.lse_id = lse1.id
19213     AND lse1.lty_code = G_ADDON_LINE_LTY_CODE
19214     AND lse1.lse_parent_id = lse2.id
19215     AND lse2.lty_code = G_MODEL_LINE_LTY_CODE
19216     AND lse2.lse_parent_id = lse3.id
19217     AND lse3.lty_code = G_FIN_LINE_LTY_CODE
19218     AND lse3.id = stl.lse_id
19219     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE)
19220     AND cle.cle_id in (SELECT cle.id
19221                        FROM okc_subclass_top_line stl,
19222                             okc_line_styles_b lse2,
19223                             okc_line_styles_b lse1,
19224                             okc_k_lines_b cle
19225                        WHERE cle.cle_id = p_cle_id
19226                        AND cle.dnz_chr_id = p_chr_id
19227                        AND cle.lse_id = lse1.id
19228                        AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
19229                        AND lse1.lse_parent_id = lse2.id
19230                        AND lse2.lty_code = G_FIN_LINE_LTY_CODE
19231                        AND lse2.id = stl.lse_id
19232                        AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE));
19233       --akrangan Bug# 5362977 start
19234        --cursor to check if contract has re-lease assets
19235     --Bug# 15992711 : The re-leased flag is no longer checked at contract header
19236     --                but needs to be validated at contract line
19237     --                Cursor modified to include validation at asset line level
19238       /* CURSOR l_chk_rel_ast_csr (p_chr_id IN NUMBER) IS
19239        SELECT 'Y'
19240        FROM   OKC_RULES_B rul
19241        WHERE  rul.dnz_chr_id = p_chr_id
19242        AND    rul.rule_information_category = 'LARLES'
19243        AND    NVL(rule_information1,'N') = 'Y';*/
19244 
19245 	CURSOR l_chk_rel_ast_csr    (p_dnz_chr_id   IN OKC_K_LINES_V.DNZ_CHR_ID%TYPE
19246 				,p_asset_num IN OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
19247 	SELECT NVL(kle_top.re_lease_yn,'N') release_flag
19248 	FROM   okl_txl_assets_b  txlb,
19249 	   okc_line_styles_b lseb,
19250 	   okc_k_lines_b     cleb_top,
19251 	   okl_k_lines       kle_top
19252 	WHERE  txlb.kle_id           =  cleb_top.id
19253 	AND    cleb_top.lse_id       = lseb.id
19254 	AND    lseb.lty_code         = 'FIXED_ASSET'
19255 	AND    cleb_top.dnz_chr_id   = p_dnz_chr_id
19256 	AND    kle_top.id            = cleb_top.id
19257 	AND    txlb.asset_number      = p_asset_num;
19258     -- Bug# 15992711 : End of Modifications
19259 
19260        l_chk_rel_ast VARCHAR2(1);
19261 
19262        --cursor to check if the contract is undergoing on-line rebook
19263        cursor l_chk_rbk_csr(p_chr_id IN NUMBER) is
19264        SELECT '!'
19265        FROM   okc_k_headers_b chr,
19266               okl_trx_contracts ktrx
19267        WHERE  ktrx.khr_id_new = chr.id
19268        AND    ktrx.tsu_code = 'ENTERED'
19269        AND    ktrx.rbr_code is NOT NULL
19270        AND    ktrx.tcn_type = 'TRBK'
19271        --rkuttiya added for 12.1.1 Multi GAAP
19272        AND    ktrx.representation_type = 'PRIMARY'
19273        --
19274        AND    chr.id = p_chr_id
19275        AND    chr.orig_system_source_code = 'OKL_REBOOK';
19276 
19277        l_rbk_khr      VARCHAR2(1);
19278        --akrangan Bug# 5362977 end
19279 
19280   BEGIN
19281     x_return_status := OKL_API.G_RET_STS_SUCCESS;
19282     -- Call start_activity to create savepoint, check compatibility
19283     -- and initialize message list
19284     x_return_status := OKL_API.START_ACTIVITY (
19285                                l_api_name
19286                                ,p_init_msg_list
19287                                ,'_PVT'
19288                                ,x_return_status);
19289     -- Check if activity started successfully
19290     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19291        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19292     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19293        RAISE OKL_API.G_EXCEPTION_ERROR;
19294     END IF;
19295     -- We must have top line id to go further
19296     IF (p_top_line_id IS NUll OR
19297        p_top_line_id = OKL_API.G_MISS_NUM) AND
19298        (p_dnz_chr_id IS NUll OR
19299        p_dnz_chr_id = OKL_API.G_MISS_NUM) THEN
19300       OKL_API.set_message(p_app_name     => G_APP_NAME,
19301                           p_msg_name     => G_REQUIRED_VALUE,
19302                           p_token1       => G_COL_NAME_TOKEN,
19303                           p_token1_value => 'Top Line and Dnz_chr_id');
19304       RAISE OKL_API.G_EXCEPTION_ERROR;
19305     END IF;
19306 
19307     -- Get the model item
19308     OPEN c_model_item(p_top_line_id,
19309                       p_dnz_chr_id);
19310     IF c_model_item%NOTFOUND THEN
19311       OKL_API.set_message(p_app_name     => G_APP_NAME,
19312                           p_msg_name     => G_NO_MATCHING_RECORD,
19313                           p_token1       => G_COL_NAME_TOKEN,
19314                           p_token1_value => 'Item_Id');
19315       RAISE OKL_API.G_EXCEPTION_ERROR;
19316     END IF;
19317     FETCH c_model_item INTO ln_model_item;
19318     CLOSE c_model_item;
19319 
19320     -- we have to update the txl_itm_insts table only if the p_itiv_ib_tbl(i).id is given
19321     -- otherwise we have to create instance line and install base line and then create
19322     -- okl_txl_itm_insts record
19323     l_itiv_ib_tbl := p_itiv_ib_tbl;
19324     IF l_itiv_ib_tbl.COUNT > 0 THEN
19325        -- We have intialize the I, since there could be any index integer
19326        i := l_itiv_ib_tbl.FIRST;
19327        LOOP
19328          IF l_itiv_ib_tbl(i).id IS NULL OR
19329             l_itiv_ib_tbl(i).id = OKL_API.G_MISS_NUM THEN
19330 
19331             -- 4334903 Assign the line style ID directly
19332 /*
19333            -- Creation of the Instance Line Process
19334            -- Getting the Line style Info
19335            x_return_status := get_lse_id(p_lty_code => G_INST_LINE_LTY_CODE,
19336                                          x_lse_id   => l_clev_inst_rec.lse_id);
19337            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19338              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19339            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19340              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19341            END IF;
19342 */
19343             --akrangan Bug# 5362977 start
19344               -- Do not allow update of units if the contract has Re-lease assets
19345               l_chk_rel_ast := 'N';
19346 
19347               -- Bug# 15992711 : Change in number of parameters passed to new cursor
19348               -- OPEN l_chk_rel_ast_csr(p_chr_id => p_dnz_chr_id);
19349               OPEN l_chk_rel_ast_csr( p_dnz_chr_id
19350                                ,p_asset_number);
19351               -- Bug# 15992711 : End of Modifications
19352 
19353               FETCH l_chk_rel_ast_csr INTO l_chk_rel_ast;
19354               CLOSE l_chk_rel_ast_csr;
19355 
19356               IF l_chk_rel_ast = 'Y' THEN
19357                 OKL_API.set_message(p_app_name     => G_APP_NAME,
19358                                     p_msg_name     => 'OKL_LA_REL_UNITS_NO_UPDATE');
19359                 RAISE OKL_API.G_EXCEPTION_ERROR;
19360               END IF;
19361               --akrangan Bug# 5362977 end
19362 
19363            l_clev_inst_rec.display_sequence  := 1;
19364            -- Required cle Line Information
19365            -- Since we have a local Record of the Instance line
19366            -- We can you the same
19367            l_clev_inst_rec.lse_id            := G_INST_LINE_LTY_ID;
19368            l_clev_inst_rec.chr_id            := null;
19369            l_clev_inst_rec.cle_id            := p_top_line_id;
19370            l_clev_inst_rec.dnz_chr_id        := p_dnz_chr_id;
19371            l_clev_inst_rec.exception_yn      := 'N';
19372            IF (l_itiv_ib_tbl(i).instance_number_ib IS NULL OR
19373              l_itiv_ib_tbl(i).instance_number_ib = OKL_API.G_MISS_CHAR)  THEN
19374              x_return_status := generate_instance_number_ib(x_instance_number_ib => l_itiv_ib_tbl(i).instance_number_ib);
19375              IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19376                OKL_API.set_message(p_app_name     => G_APP_NAME,
19377                                    p_msg_name     => G_GEN_INST_NUM_IB);
19378                EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19379              ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19380                OKL_API.set_message(p_app_name     => G_APP_NAME,
19381                                    p_msg_name     => G_GEN_INST_NUM_IB);
19382                EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19383              END IF;
19384              l_itiv_ib_tbl(i).instance_number_ib := p_asset_number||' '||l_itiv_ib_tbl(i).instance_number_ib;
19385            END IF;
19386            -- Creation of the Instance Line
19387            Create_instance_line(p_api_version   => p_api_version,
19388                                 p_init_msg_list => p_init_msg_list,
19389                                 x_return_status => x_return_status,
19390                                 x_msg_count     => x_msg_count,
19391                                 x_msg_data      => x_msg_data,
19392                                 p_clev_rec      => l_clev_inst_rec,
19393                                 p_klev_rec      => l_klev_inst_rec,
19394                                 p_itiv_rec      => l_itiv_ib_tbl(i),
19395                                 x_clev_rec      => l_clev_inst_rec_out,
19396                                 x_klev_rec      => l_klev_inst_rec_out,
19397                                 x_itiv_rec      => l_itiv_ib_tbl_out(i));
19398            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19399              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19400            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19401              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19402            END IF;
19403            -- 4414408 Assign the line style ID directly
19404 /*
19405            -- Creation of the ib Line Process
19406            -- Getting the Line style Info
19407            x_return_status := get_lse_id(p_lty_code => G_IB_LINE_LTY_CODE,
19408                                          x_lse_id   => l_clev_ib_rec.lse_id);
19409            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19410              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19411            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19412              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19413            END IF;
19414 */
19415            l_clev_ib_rec.lse_id            := G_IB_LINE_LTY_ID;
19416            l_clev_ib_rec.display_sequence  := 2;
19417            -- Required cle Line Information
19418            l_clev_ib_rec.chr_id            := null;
19419            l_clev_ib_rec.cle_id            := l_clev_inst_rec_out.id;
19420            l_clev_ib_rec.dnz_chr_id        := l_clev_inst_rec_out.dnz_chr_id;
19421            l_clev_ib_rec.exception_yn      := 'N';
19422            -- Required Item Information
19423            l_cimv_ib_rec.exception_yn      := 'N';
19424            l_cimv_ib_rec.object1_id1       := null;
19425            l_cimv_ib_rec.object1_id2       := null;
19426            -- Since the screen can give only party_site_id via l_itiv_ib_tbl(i).object_id1_new
19427            -- We have to use the below function
19428            lv_object_id1_new := l_itiv_ib_tbl(i).object_id1_new;
19429            x_return_status := get_party_site_id(p_object_id1_new => lv_object_id1_new,
19430                                                 x_object_id1_new => l_itiv_ib_tbl(i).object_id1_new,
19431                                                 x_object_id2_new => l_itiv_ib_tbl(i).object_id2_new);
19432            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19433              OKL_API.set_message(p_app_name     => G_APP_NAME,
19434                                 p_msg_name     => G_NO_MATCHING_RECORD,
19435                                 p_token1       => G_COL_NAME_TOKEN,
19436                                 p_token1_value => 'Party_site_id');
19437              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19438            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19439              OKL_API.set_message(p_app_name     => G_APP_NAME,
19440                                  p_msg_name     => G_NO_MATCHING_RECORD,
19441                                  p_token1       => G_COL_NAME_TOKEN,
19442                                  p_token1_value => 'Party_site_id');
19443              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19444            END IF;
19445 
19446            -- Check for uniqueness of Serial number
19447            x_return_status := is_duplicate_serial_number(p_serial_number => l_itiv_ib_tbl(i).serial_number,
19448                                                          p_item_id       => ln_model_item);
19449            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19450              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19451            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19452              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19453            END IF;
19454 
19455            -- Creation of the ib Line
19456            Create_instance_ib_line(p_api_version   => p_api_version,
19457                                    p_init_msg_list => p_init_msg_list,
19458                                    x_return_status => x_return_status,
19459                                    x_msg_count     => x_msg_count,
19460                                    x_msg_data      => x_msg_data,
19461                                    p_clev_rec      => l_clev_ib_rec,
19462                                    p_klev_rec      => l_klev_ib_rec,
19463                                    p_cimv_rec      => l_cimv_ib_rec,
19464                                    p_itiv_rec      => l_itiv_ib_tbl(i),
19465                                    x_clev_rec      => x_clev_ib_tbl(i),
19466                                    x_klev_rec      => l_klev_ib_rec_out,
19467                                    x_cimv_rec      => l_cimv_ib_rec_out,
19468                                    x_trxv_rec      => l_trxv_ib_rec_out,
19469                                    x_itiv_rec      => x_itiv_ib_tbl(i));
19470            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19471              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19472            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19473              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19474            END IF;
19475          ELSIF l_itiv_ib_tbl(i).id IS NOT NULL OR
19476                l_itiv_ib_tbl(i).id <> OKL_API.G_MISS_NUM THEN
19477 
19478            -- Check for uniqueness of Serial number
19479            x_return_status := is_duplicate_serial_number(p_serial_number => l_itiv_ib_tbl(i).serial_number,
19480                                                          p_item_id       => ln_model_item);
19481            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19482              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19483            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19484              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19485            END IF;
19486 
19487            -- We are here b'cause we have to update the okl_txl_itm_inst rec
19488            -- So we are calling the update api for the okl_txl_itm_insts rec
19489            l_itiv_ib_tbl(i).object_id2_new := '#';
19490            update_txl_itm_insts(p_api_version    => p_api_version,
19491                                 p_init_msg_list  => p_init_msg_list,
19492                                 x_return_status  => x_return_status,
19493                                 x_msg_count      => x_msg_count,
19494                                 x_msg_data       => x_msg_data,
19495                                 p_itiv_rec       => l_itiv_ib_tbl(i),
19496                                 x_itiv_rec       => x_itiv_ib_tbl(i));
19497            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19498              OKL_API.set_message(p_app_name     => G_APP_NAME,
19499                                  p_msg_name     => G_ITI_ID);
19500              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19501            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19502              OKL_API.set_message(p_app_name     => G_APP_NAME,
19503                                  p_msg_name     => G_ITI_ID);
19504              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19505            END IF;
19506          ELSE
19507            OKL_API.set_message(p_app_name => G_APP_NAME,
19508                                p_msg_name => G_LINE_RECORD);
19509            x_return_status := OKL_API.G_RET_STS_ERROR;
19510            EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19511          END IF;
19512          EXIT WHEN (i = l_itiv_ib_tbl.LAST);
19513          i := l_itiv_ib_tbl.NEXT(i);
19514        END LOOP;
19515        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19516          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19517        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19518          RAISE OKL_API.G_EXCEPTION_ERROR;
19519        END IF;
19520     ELSE
19521       OKL_API.set_message(p_app_name     => G_APP_NAME,
19522                           p_msg_name     => G_CNT_REC);
19523       RAISE OKL_API.G_EXCEPTION_ERROR;
19524     END IF;
19525     -- we should get the remaining inst line , so that we can update
19526     -- the fixed line , model line and also update the top line with latest OEC
19527     OPEN c_remain_inst_line(p_top_line_id,
19528                             p_dnz_chr_id);
19529     IF c_remain_inst_line%NOTFOUND THEN
19530       OKL_API.set_message(p_app_name     => G_APP_NAME,
19531                           p_msg_name     => G_DELETING_INSTS_LINE);
19532       RAISE OKL_API.G_EXCEPTION_ERROR;
19533     END IF;
19534     FETCH c_remain_inst_line INTO ln_remain_inst;
19535     CLOSE c_remain_inst_line;
19536     -- To get the Model Line
19537     -- Since we have update the model line
19538     OPEN c_model_line(p_top_line_id,
19539                       p_dnz_chr_id);
19540     IF c_model_line%NOTFOUND THEN
19541        OKL_API.set_message(p_app_name     => G_APP_NAME,
19542                            p_msg_name     => G_NO_MATCHING_RECORD,
19543                            p_token1       => G_COL_NAME_TOKEN,
19544                            p_token1_value => 'Model Asset Line record');
19545        RAISE OKL_API.G_EXCEPTION_ERROR;
19546     END IF;
19547     FETCH c_model_line INTO ln_model_line_id;
19548     CLOSE c_model_line;
19549     -- To get the Fixed Asset Line
19550     -- Since we have update the Fixed Asset Line
19551     OPEN c_fa_line(p_top_line_id,
19552                    p_dnz_chr_id);
19553     IF c_fa_line%NOTFOUND THEN
19554        OKL_API.set_message(p_app_name     => G_APP_NAME,
19555                            p_msg_name     => G_NO_MATCHING_RECORD,
19556                            p_token1       => G_COL_NAME_TOKEN,
19557                            p_token1_value => 'Fixed Asset Line record');
19558        RAISE OKL_API.G_EXCEPTION_ERROR;
19559     END IF;
19560     FETCH c_fa_line INTO ln_fa_line_id;
19561     CLOSE c_fa_line;
19562     --We have to build the Model Line Record for the calculations of the
19563     -- oec of the top line
19564     -- To Get the cle Model Line Record
19565     x_return_status := get_rec_clev(ln_model_line_id,
19566                                     r_clev_model_rec);
19567     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19568        OKL_API.set_message(p_app_name     => G_APP_NAME,
19569                            p_msg_name     => G_FETCHING_INFO,
19570                            p_token1       => G_REC_NAME_TOKEN,
19571                            p_token1_value => 'OKC_K_LINES_V Record');
19572        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19573     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19574        OKL_API.set_message(p_app_name     => G_APP_NAME,
19575                            p_msg_name     => G_FETCHING_INFO,
19576                            p_token1       => G_REC_NAME_TOKEN,
19577                            p_token1_value => 'OKC_K_LINES_V Record');
19578        RAISE OKL_API.G_EXCEPTION_ERROR;
19579     END IF;
19580     -- To Get the kle Model Line Record
19581     x_return_status := get_rec_klev(ln_model_line_id,
19582                                     r_klev_model_rec);
19583     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19584        OKL_API.set_message(p_app_name     => G_APP_NAME,
19585                            p_msg_name     => G_FETCHING_INFO,
19586                            p_token1       => G_REC_NAME_TOKEN,
19587                            p_token1_value => 'OKL_K_LINES_V Record');
19588        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19589     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19590        OKL_API.set_message(p_app_name     => G_APP_NAME,
19591                            p_msg_name     => G_FETCHING_INFO,
19592                            p_token1       => G_REC_NAME_TOKEN,
19593                            p_token1_value => 'OKL_K_LINES_V Record');
19594        RAISE OKL_API.G_EXCEPTION_ERROR;
19595     END IF;
19596     IF r_klev_model_rec.id <> r_clev_model_rec.id THEN
19597        OKL_API.set_message(p_app_name     => G_APP_NAME,
19598                            p_msg_name     => G_LINE_RECORD);
19599        RAISE OKL_API.G_EXCEPTION_ERROR;
19600     END IF;
19601     -- To Get the cimv Model Line Record
19602     x_return_status := get_rec_cimv(r_clev_model_rec.id,
19603                                     r_clev_model_rec.dnz_chr_id,
19604                                     r_cimv_model_rec);
19605     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19606        OKL_API.set_message(p_app_name     => G_APP_NAME,
19607                            p_msg_name     => G_FETCHING_INFO,
19608                            p_token1       => G_REC_NAME_TOKEN,
19609                            p_token1_value => 'OKC_K_ITEMS_V Record');
19610        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19611     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19612        OKL_API.set_message(p_app_name     => G_APP_NAME,
19613                            p_msg_name     => G_FETCHING_INFO,
19614                            p_token1       => G_REC_NAME_TOKEN,
19615                            p_token1_value => 'OKC_K_ITEMS_V Record');
19616        RAISE OKL_API.G_EXCEPTION_ERROR;
19617     END IF;
19618     --Build Model cimv item rec
19619     r_cimv_model_rec.number_of_items  := ln_remain_inst;
19620     -- Updating of the Model Line and Item Record
19621     update_model_line(p_api_version   => p_api_version,
19622                       p_init_msg_list => p_init_msg_list,
19623                       x_return_status => x_return_status,
19624                       x_msg_count     => x_msg_count,
19625                       x_msg_data      => x_msg_data,
19626                       P_new_yn        => P_new_yn,
19627                       p_asset_number  => p_asset_number,
19628                       p_clev_rec      => r_clev_model_rec,
19629                       p_klev_rec      => r_klev_model_rec,
19630                       p_cimv_rec      => r_cimv_model_rec,
19631                       x_clev_rec      => l_clev_model_rec_out,
19632                       x_klev_rec      => l_klev_model_rec_out,
19633                       x_cimv_rec      => l_cimv_model_rec_out);
19634     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19635       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19636     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19637       RAISE OKL_API.G_EXCEPTION_ERROR;
19638     END IF;
19639     -- We need to check if there are add on line and then we update the Addon number of items also
19640     -- Since there can be multiple Addo lines
19641     FOR r_addon_line_id IN c_addon_line_id(p_cle_id => p_top_line_id,
19642                                            p_chr_id => p_dnz_chr_id) LOOP
19643       --We have to build the addon Line Record for the calculations of the
19644       -- oec of the top line
19645       -- To Get the cle addon Line Record
19646       x_return_status := get_rec_clev(r_addon_line_id.id,
19647                                       r_clev_addon_rec);
19648       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19649          OKL_API.set_message(p_app_name     => G_APP_NAME,
19650                              p_msg_name     => G_FETCHING_INFO,
19651                              p_token1       => G_REC_NAME_TOKEN,
19652                              p_token1_value => 'OKC_K_LINES_V Record');
19653          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19654       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19655          OKL_API.set_message(p_app_name     => G_APP_NAME,
19656                              p_msg_name     => G_FETCHING_INFO,
19657                              p_token1       => G_REC_NAME_TOKEN,
19658                              p_token1_value => 'OKC_K_LINES_V Record');
19659          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19660       END IF;
19661       -- To Get the kle Model Line Record
19662       x_return_status := get_rec_klev(r_addon_line_id.id,
19663                                       r_klev_addon_rec);
19664       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19665          OKL_API.set_message(p_app_name     => G_APP_NAME,
19666                              p_msg_name     => G_FETCHING_INFO,
19667                              p_token1       => G_REC_NAME_TOKEN,
19668                              p_token1_value => 'OKL_K_LINES_V Record');
19669          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19670       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19671          OKL_API.set_message(p_app_name     => G_APP_NAME,
19672                              p_msg_name     => G_FETCHING_INFO,
19673                              p_token1       => G_REC_NAME_TOKEN,
19674                              p_token1_value => 'OKL_K_LINES_V Record');
19675          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19676       END IF;
19677       IF r_klev_addon_rec.id <> r_clev_addon_rec.id THEN
19678          OKL_API.set_message(p_app_name     => G_APP_NAME,
19679                              p_msg_name     => G_LINE_RECORD);
19680          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19681       END IF;
19682       -- To Get the cimv Model Line Record
19683       x_return_status := get_rec_cimv(r_clev_addon_rec.id,
19684                                       r_clev_addon_rec.dnz_chr_id,
19685                                       r_cimv_addon_rec);
19686       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19687          OKL_API.set_message(p_app_name     => G_APP_NAME,
19688                              p_msg_name     => G_FETCHING_INFO,
19689                              p_token1       => G_REC_NAME_TOKEN,
19690                              p_token1_value => 'OKC_K_ITEMS_V Record');
19691          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19692       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19693          OKL_API.set_message(p_app_name     => G_APP_NAME,
19694                              p_msg_name     => G_FETCHING_INFO,
19695                              p_token1       => G_REC_NAME_TOKEN,
19696                              p_token1_value => 'OKC_K_ITEMS_V Record');
19697          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19698       END IF;
19699       --Build addon cimv item rec
19700       r_cimv_addon_rec.number_of_items  := ln_remain_inst;
19701       -- Updating of the addon Line and Item Record
19702       update_addon_line_rec(p_api_version   => p_api_version,
19703                             p_init_msg_list => p_init_msg_list,
19704                             x_return_status => x_return_status,
19705                             x_msg_count     => x_msg_count,
19706                             x_msg_data      => x_msg_data,
19707                             P_new_yn        => P_new_yn,
19708                             p_asset_number  => p_asset_number,
19709                             p_clev_rec      => r_clev_addon_rec,
19710                             p_klev_rec      => r_klev_addon_rec,
19711                             p_cimv_rec      => r_cimv_addon_rec,
19712                             x_clev_rec      => rx_clev_addon_rec,
19713                             x_klev_rec      => rx_klev_addon_rec,
19714                             x_cimv_rec      => rx_cimv_addon_rec);
19715       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19716          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19717       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19718          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19719       END IF;
19720     END LOOP;
19721     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19722        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19723     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19724        RAISE OKL_API.G_EXCEPTION_ERROR;
19725     END IF;
19726     -- Since we need to populate the OEC into fixed asset line also
19727     -- So we need to calcualte the same here it self
19728     oec_calc_upd_fin_rec(p_api_version        => p_api_version,
19729                          p_init_msg_list      => p_init_msg_list,
19730                          x_return_status      => x_return_status,
19731                          x_msg_count          => x_msg_count,
19732                          x_msg_data           => x_msg_data,
19733                          P_new_yn             => P_new_yn,
19734                          p_asset_number       => p_asset_number,
19735 			 -- 4414408
19736                          p_top_line_id        => p_top_line_id,
19737                          p_dnz_chr_id         => l_clev_model_rec_out.dnz_chr_id,
19738                          x_fin_clev_rec       => lx_clev_fin_rec,
19739                          x_fin_klev_rec       => lx_klev_fin_rec,
19740                          x_oec                => ln_klev_fin_oec,
19741                          p_validate_fin_line  => OKL_API.G_TRUE);
19742     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19743        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19744     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19745        RAISE OKL_API.G_EXCEPTION_ERROR;
19746     END IF;
19747     -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
19748     cap_amt_calc_upd_fin_rec(p_api_version        => p_api_version,
19749                              p_init_msg_list      => p_init_msg_list,
19750                              x_return_status      => x_return_status,
19751                              x_msg_count          => x_msg_count,
19752                              x_msg_data           => x_msg_data,
19753                              P_new_yn             => P_new_yn,
19754                              p_asset_number       => p_asset_number,
19755 			     -- 4414408
19756                              p_top_line_id        => p_top_line_id,
19757                              p_dnz_chr_id         => l_clev_model_rec_out.dnz_chr_id,
19758                              x_fin_clev_rec       => lx_clev_fin_rec,
19759                              x_fin_klev_rec       => lx_klev_fin_rec,
19760                              x_cap_amt            => ln_klev_fin_cap,
19761                              p_validate_fin_line  => OKL_API.G_TRUE);
19762     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19763       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19764     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19765       RAISE OKL_API.G_EXCEPTION_ERROR;
19766     END IF;
19767     -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
19768     res_value_calc_upd_fin_rec(p_api_version        => p_api_version,
19769                                p_init_msg_list      => p_init_msg_list,
19770                                x_return_status      => x_return_status,
19771                                x_msg_count          => x_msg_count,
19772                                x_msg_data           => x_msg_data,
19773                                P_new_yn             => P_new_yn,
19774                                p_asset_number       => p_asset_number,
19775 			       -- 4414408
19776                                p_top_line_id        => p_top_line_id,
19777                                p_dnz_chr_id         => l_clev_model_rec_out.dnz_chr_id,
19778                                x_fin_clev_rec       => lx_clev_fin_rec,
19779                                x_fin_klev_rec       => lx_klev_fin_rec,
19780                                x_res_value          => ln_klev_fin_res,
19781                                p_validate_fin_line  => OKL_API.G_TRUE);
19782     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19783       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19784     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19785       RAISE OKL_API.G_EXCEPTION_ERROR;
19786     END IF;
19787     -- Updating of the Fixed Asset Line Process
19788     -- To Get the cle fa Line Record
19789     x_return_status := get_rec_clev(ln_fa_line_id,
19790                                     r_clev_fa_rec);
19791     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19792        OKL_API.set_message(p_app_name     => G_APP_NAME,
19793                            p_msg_name     => G_FETCHING_INFO,
19794                            p_token1       => G_REC_NAME_TOKEN,
19795                            p_token1_value => 'OKC_K_LINES_V Record');
19796        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19797     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19798        OKL_API.set_message(p_app_name     => G_APP_NAME,
19799                            p_msg_name     => G_FETCHING_INFO,
19800                            p_token1       => G_REC_NAME_TOKEN,
19801                            p_token1_value => 'OKC_K_LINES_V Record');
19802        RAISE OKL_API.G_EXCEPTION_ERROR;
19803     END IF;
19804     -- To Get the kle fa Line Record
19805     x_return_status := get_rec_klev(ln_fa_line_id,
19806                                     r_klev_fa_rec);
19807     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19808        OKL_API.set_message(p_app_name     => G_APP_NAME,
19809                            p_msg_name     => G_FETCHING_INFO,
19810                            p_token1       => G_REC_NAME_TOKEN,
19811                            p_token1_value => 'OKL_K_LINES_V Record');
19812        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19813     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19814        OKL_API.set_message(p_app_name     => G_APP_NAME,
19815                            p_msg_name     => G_FETCHING_INFO,
19816                            p_token1       => G_REC_NAME_TOKEN,
19817                            p_token1_value => 'OKL_K_LINES_V Record');
19818        RAISE OKL_API.G_EXCEPTION_ERROR;
19819     END IF;
19820     IF r_klev_fa_rec.id <> r_clev_fa_rec.id THEN
19821        OKL_API.set_message(p_app_name     => G_APP_NAME,
19822                            p_msg_name     => G_LINE_RECORD);
19823        RAISE OKL_API.G_EXCEPTION_ERROR;
19824     END IF;
19825     -- To Get the cimv fa Line Record
19826     x_return_status := get_rec_cimv(r_clev_fa_rec.id,
19827                                     r_clev_fa_rec.dnz_chr_id,
19828                                     r_cimv_fa_rec);
19829     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19830        OKL_API.set_message(p_app_name     => G_APP_NAME,
19831                            p_msg_name     => G_FETCHING_INFO,
19832                            p_token1       => G_REC_NAME_TOKEN,
19833                            p_token1_value => 'OKC_K_ITEMS_V Record');
19834        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19835     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19836        OKL_API.set_message(p_app_name     => G_APP_NAME,
19837                            p_msg_name     => G_FETCHING_INFO,
19838                            p_token1       => G_REC_NAME_TOKEN,
19839                            p_token1_value => 'OKC_K_ITEMS_V Record');
19840        RAISE OKL_API.G_EXCEPTION_ERROR;
19841     END IF;
19842     --Build cimv fa item rec
19843     r_cimv_fa_rec.number_of_items  := ln_remain_inst;
19844     --Build talv fa item rec
19845     x_return_status := get_rec_txlv(r_clev_fa_rec.id,
19846                                     r_talv_fa_rec);
19847     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19848        OKL_API.set_message(p_app_name     => G_APP_NAME,
19849                            p_msg_name     => G_FETCHING_INFO,
19850                            p_token1       => G_REC_NAME_TOKEN,
19851                            p_token1_value => 'OKL_TXL_ASSETS_V Record');
19852        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19853     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19854        OKL_API.set_message(p_app_name     => G_APP_NAME,
19855                            p_msg_name     => G_FETCHING_INFO,
19856                            p_token1       => G_REC_NAME_TOKEN,
19857                            p_token1_value => 'OKL_TXL_ASSETS_V Record');
19858        RAISE OKL_API.G_EXCEPTION_ERROR;
19859     END IF;
19860     --Build talv fa item rec
19861     r_talv_fa_rec.current_units  := ln_remain_inst;
19862         --akrangan Bug# 5362977 start
19863        -- For online rebook, update depreciation_cost and
19864        -- original_cost to line capital amount instead of line oec
19865        --check for rebook contract
19866        l_rbk_khr := '?';
19867        OPEN l_chk_rbk_csr (p_chr_id => r_clev_fa_rec.dnz_chr_id);
19868        FETCH l_chk_rbk_csr INTO l_rbk_khr;
19869        CLOSE l_chk_rbk_csr;
19870 
19871        If l_rbk_khr = '!' Then
19872          --Commented by bkatraga for bug 9770391
19873          --r_talv_fa_rec.depreciation_cost := NVL(lx_klev_fin_rec.capital_amount,ln_klev_fin_cap);
19874          r_talv_fa_rec.original_cost := NVL(lx_klev_fin_rec.capital_amount,ln_klev_fin_cap);
19875        else
19876            --Commented by bkatraga for bug 9770391
19877            --r_talv_fa_rec.depreciation_cost := lx_klev_fin_rec.oec;
19878            r_talv_fa_rec.original_cost := lx_klev_fin_rec.oec;
19879        end if;
19880        --akrangan Bug# 5362977 end
19881 
19882     r_clev_fa_rec.item_description := r_talv_fa_rec.description;
19883     -- Updating of the Fixed Asset Line and item/Txl Asset Info
19884     update_fixed_asset_line(p_api_version   => p_api_version,
19885                             p_init_msg_list => p_init_msg_list,
19886                             x_return_status => x_return_status,
19887                             x_msg_count     => x_msg_count,
19888                             x_msg_data      => x_msg_data,
19889                             P_new_yn        => P_new_yn,
19890                             p_asset_number  => p_asset_number,
19891                             p_clev_rec      => r_clev_fa_rec,
19892                             p_klev_rec      => r_klev_fa_rec,
19893                             p_cimv_rec      => r_cimv_fa_rec,
19894                             p_talv_rec      => r_talv_fa_rec,
19895                             x_clev_rec      => l_clev_fa_rec_out,
19896                             x_klev_rec      => l_klev_fa_rec_out,
19897                             x_cimv_rec      => lx_cimv_fa_rec,
19898                             x_talv_rec      => lx_talv_fa_rec);
19899     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19900       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19901     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19902       RAISE OKL_API.G_EXCEPTION_ERROR;
19903     END IF;
19904           --akrangan Bug# 5362977 start
19905        -- Update Tax Book details - okl_txd_assets_b
19906        update_asset_line_details(p_api_version   => p_api_version,
19907                                  p_init_msg_list => p_init_msg_list,
19908                                  x_return_status => x_return_status,
19909                                  x_msg_count     => x_msg_count,
19910                                  x_msg_data      => x_msg_data,
19911                                  p_asset_number  => p_asset_number,
19912                                  p_original_cost => lx_talv_fa_rec.original_cost,
19913                                  p_tal_id        => lx_talv_fa_rec.ID);
19914        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19915          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19916        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19917          RAISE OKL_API.G_EXCEPTION_ERROR;
19918        END IF;
19919        --akrangan Bug# 5362977 end
19920 
19921     -- We need to change the status of the header whenever there is updating happening
19922     -- after the contract status is approved
19923     IF (l_clev_fa_rec_out.dnz_chr_id is NOT NULL) AND
19924        (l_clev_fa_rec_out.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
19925       --cascade edit status on to lines
19926       okl_contract_status_pub.cascade_lease_status_edit
19927                (p_api_version     => p_api_version,
19928                 p_init_msg_list   => p_init_msg_list,
19929                 x_return_status   => x_return_status,
19930                 x_msg_count       => x_msg_count,
19931                 x_msg_data        => x_msg_data,
19932                 p_chr_id          => l_clev_fa_rec_out.dnz_chr_id);
19933       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19934         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19935       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19936         RAISE OKL_API.G_EXCEPTION_ERROR;
19937       END IF;
19938     END IF;
19939     OKL_API.END_ACTIVITY (x_msg_count,
19940                           x_msg_data );
19941   EXCEPTION
19942     WHEN OKL_API.G_EXCEPTION_ERROR THEN
19943     IF c_remain_inst_line%ISOPEN THEN
19944       CLOSE c_remain_inst_line;
19945     END IF;
19946     IF c_model_line%ISOPEN THEN
19947       CLOSE c_model_line;
19948     END IF;
19949     IF c_fa_line%ISOPEN THEN
19950       CLOSE c_fa_line;
19951     END IF;
19952     IF c_addon_line_id%ISOPEN THEN
19953       CLOSE c_addon_line_id;
19954     END IF;
19955     IF c_model_item%ISOPEN THEN
19956       CLOSE c_model_item;
19957     END IF;
19958     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
19959                                l_api_name,
19960                                G_PKG_NAME,
19961                                'OKL_API.G_RET_STS_ERROR',
19962                                x_msg_count,
19963                                x_msg_data,
19964                                '_PVT');
19965     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
19966     IF c_remain_inst_line%ISOPEN THEN
19967       CLOSE c_remain_inst_line;
19968     END IF;
19969     IF c_model_line%ISOPEN THEN
19970       CLOSE c_model_line;
19971     END IF;
19972     IF c_fa_line%ISOPEN THEN
19973       CLOSE c_fa_line;
19974     END IF;
19975     IF c_addon_line_id%ISOPEN THEN
19976       CLOSE c_addon_line_id;
19977     END IF;
19978     IF c_model_item%ISOPEN THEN
19979       CLOSE c_model_item;
19980     END IF;
19981     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
19982                               l_api_name,
19983                               G_PKG_NAME,
19984                               'OKL_API.G_RET_STS_UNEXP_ERROR',
19985                               x_msg_count,
19986                               x_msg_data,
19987                               '_PVT');
19988     WHEN OTHERS THEN
19989     IF c_remain_inst_line%ISOPEN THEN
19990       CLOSE c_remain_inst_line;
19991     END IF;
19992     IF c_model_line%ISOPEN THEN
19993       CLOSE c_model_line;
19994     END IF;
19995     IF c_fa_line%ISOPEN THEN
19996       CLOSE c_fa_line;
19997     END IF;
19998     IF c_addon_line_id%ISOPEN THEN
19999       CLOSE c_addon_line_id;
20000     END IF;
20001     IF c_model_item%ISOPEN THEN
20002       CLOSE c_model_item;
20003     END IF;
20004     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
20005                               l_api_name,
20006                               G_PKG_NAME,
20007                               'OTHERS',
20008                               x_msg_count,
20009                               x_msg_data,
20010                               '_PVT');
20011   END update_ints_ib_line;
20012 -------------------------------------------------------------------------------------------------------
20013 ----------------- Main Process for Deletion of instance and Install base line  ------------------------
20014 -------------------------------------------------------------------------------------------------------
20015   PROCEDURE delete_ints_ib_line(
20016             p_api_version         IN  NUMBER,
20017             p_init_msg_list       IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
20018             x_return_status       OUT NOCOPY VARCHAR2,
20019             x_msg_count           OUT NOCOPY NUMBER,
20020             x_msg_data            OUT NOCOPY VARCHAR2,
20021             P_new_yn              IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
20022             p_asset_number        IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
20023             p_clev_ib_tbl         IN  clev_tbl_type,
20024             x_clev_fin_rec        OUT NOCOPY clev_rec_type,
20025             x_klev_fin_rec        OUT NOCOPY klev_rec_type,
20026             x_cimv_model_rec      OUT NOCOPY cimv_rec_type,
20027             x_cimv_fa_rec         OUT NOCOPY cimv_rec_type,
20028             x_talv_fa_rec         OUT NOCOPY talv_rec_type) IS
20029     l_api_name          CONSTANT VARCHAR2(30) := 'DELETE_INTS_IB_LINE';
20030     l_clev_ib_tbl                clev_tbl_type := p_clev_ib_tbl;
20031     l_clev_ib_rec                clev_rec_type;
20032     l_clev_inst_rec              clev_rec_type;
20033     ln_remain_inst               NUMBER := 0;
20034     ln_model_line_id             OKC_K_LINES_V.ID%TYPE := OKL_API.G_MISS_NUM;
20035     ln_fa_line_id                OKC_K_LINES_V.ID%TYPE := OKL_API.G_MISS_NUM;
20036     r_clev_model_rec             clev_rec_type;
20037     r_klev_model_rec             klev_rec_type;
20038     r_cimv_model_rec             cimv_rec_type;
20039     r_clev_fa_rec                clev_rec_type;
20040     r_klev_fa_rec                klev_rec_type;
20041     r_cimv_fa_rec                cimv_rec_type;
20042     r_talv_fa_rec                talv_rec_type;
20043     l_clev_model_rec_out         clev_rec_type;
20044     l_klev_model_rec_out         klev_rec_type;
20045     l_clev_fa_rec_out            clev_rec_type;
20046     l_klev_fa_rec_out            klev_rec_type;
20047     ln_klev_fin_oec              OKL_K_LINES_V.OEC%TYPE := 0;
20048     ln_klev_fin_res              OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
20049     ln_klev_fin_cap              OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
20050     r_clev_addon_rec             clev_rec_type;
20051     r_klev_addon_rec             klev_rec_type;
20052     r_cimv_addon_rec             cimv_rec_type;
20053     rx_clev_addon_rec            clev_rec_type;
20054     rx_klev_addon_rec            klev_rec_type;
20055     rx_cimv_addon_rec            cimv_rec_type;
20056     j                            NUMBER := 0;
20057     lb_last_record_updated       BOOLEAN := FALSE;
20058 
20059     -- rravikir added
20060     l_itiv_rec                   itiv_rec_type;
20061     lx_itiv_rec                  itiv_rec_type;
20062     -- end
20063 
20064     CURSOR c_remain_inst_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
20065                               p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
20066     SELECT count(cle.id)
20067     FROM okc_line_styles_b lse2,
20068          okc_line_styles_b lse1,
20069          okc_k_lines_v cle
20070     WHERE cle.cle_id = p_cle_id
20071     AND cle.dnz_chr_id = p_chr_id
20072     AND cle.lse_id = lse1.id
20073     AND lse1.lty_code = G_INST_LINE_LTY_CODE
20074     AND lse1.lse_parent_id = lse2.id
20075     AND lse2.lty_code = G_FIN_LINE_LTY_CODE;
20076 
20077     CURSOR c_model_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
20078                         p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
20079     SELECT cle.id
20080     FROM okc_subclass_top_line stl,
20081          okc_line_styles_b lse2,
20082          okc_line_styles_b lse1,
20083          okc_k_lines_v cle
20084     WHERE cle.cle_id = p_cle_id
20085     AND cle.dnz_chr_id = p_chr_id
20086     AND cle.lse_id = lse1.id
20087     AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
20088     AND lse1.lse_parent_id = lse2.id
20089     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
20090     AND lse2.id = stl.lse_id
20091     AND stl.scs_code = 'LEASE';
20092 
20093     CURSOR c_fa_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
20094                      p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
20095     SELECT cle.id
20096     FROM okc_subclass_top_line stl,
20097          okc_line_styles_b lse2,
20098          okc_line_styles_b lse1,
20099          okc_k_lines_v cle
20100     WHERE cle.cle_id = p_cle_id
20101     AND cle.dnz_chr_id = p_chr_id
20102     AND cle.lse_id = lse1.id
20103     AND lse1.lty_code = G_FA_LINE_LTY_CODE
20104     AND lse1.lse_parent_id = lse2.id
20105     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
20106     AND lse2.id = stl.lse_id
20107     AND stl.scs_code = 'LEASE';
20108 
20109     CURSOR c_addon_line_id(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
20110                            p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
20111     SELECT cle.id
20112     FROM okc_subclass_top_line stl,
20113          okc_line_styles_b lse3,
20114          okc_line_styles_b lse2,
20115          okc_line_styles_b lse1,
20116          okc_k_lines_b cle
20117     WHERE cle.dnz_chr_id = p_chr_id
20118     AND cle.lse_id = lse1.id
20119     AND lse1.lty_code = G_ADDON_LINE_LTY_CODE
20120     AND lse1.lse_parent_id = lse2.id
20121     AND lse2.lty_code = G_MODEL_LINE_LTY_CODE
20122     AND lse2.lse_parent_id = lse3.id
20123     AND lse3.lty_code = G_FIN_LINE_LTY_CODE
20124     AND lse3.id = stl.lse_id
20125     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE)
20126     AND cle.cle_id in (SELECT cle.id
20127                        FROM okc_subclass_top_line stl,
20128                             okc_line_styles_b lse2,
20129                             okc_line_styles_b lse1,
20130                             okc_k_lines_b cle
20131                        WHERE cle.cle_id = p_cle_id
20132                        AND cle.dnz_chr_id = p_chr_id
20133                        AND cle.lse_id = lse1.id
20134                        AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
20135                        AND lse1.lse_parent_id = lse2.id
20136                        AND lse2.lty_code = G_FIN_LINE_LTY_CODE
20137                        AND lse2.id = stl.lse_id
20138                        AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE));
20139 		            --Bug# 5362977 start
20140         --cursor to check if contract has re-lease assets
20141 	--Bug# 15992711 : The re-leased flag is no longer checked at contract header
20142 	--                but needs to be validated at contract line
20143 	--                Cursor modified to include validation at asset line level
20144         /*CURSOR l_chk_rel_ast_csr (p_chr_id IN NUMBER) IS
20145           SELECT 'Y'
20146           FROM   OKC_RULES_B rul
20147           WHERE  rul.dnz_chr_id = p_chr_id
20148           AND    rul.rule_information_category = 'LARLES'
20149           AND    NVL(rule_information1,'N') = 'Y';
20150         */
20151 	CURSOR l_chk_rel_ast_csr    (p_dnz_chr_id   IN OKC_K_LINES_V.DNZ_CHR_ID%TYPE
20152 				,p_asset_number IN OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
20153 	SELECT NVL(kle_top.re_lease_yn,'N') release_flag
20154 	FROM   okl_txl_assets_b  txlb,
20155 	   okc_line_styles_b lseb,
20156 	   okc_k_lines_b     cleb_top,
20157 	   okl_k_lines       kle_top
20158 	WHERE  txlb.kle_id           =  cleb_top.id
20159 	AND    cleb_top.lse_id       = lseb.id
20160 	AND    lseb.lty_code         = 'FIXED_ASSET'
20161 	AND    cleb_top.dnz_chr_id   = p_dnz_chr_id
20162 	AND    kle_top.id            = cleb_top.id
20163 	AND    txlb.asset_number      = p_asset_number;
20164         -- Bug# 15992711 : End of Modifications
20165 
20166 
20167        l_chk_rel_ast VARCHAR2(1);
20168 
20169        --cursor to check if the contract is undergoing on-line rebook
20170        cursor l_chk_rbk_csr(p_chr_id IN NUMBER) is
20171        SELECT '!'
20172        FROM   okc_k_headers_b chr,
20173               okl_trx_contracts ktrx
20174        WHERE  ktrx.khr_id_new = chr.id
20175        AND    ktrx.tsu_code = 'ENTERED'
20176        AND    ktrx.rbr_code is NOT NULL
20177        AND    ktrx.tcn_type = 'TRBK'
20178        --rkuttiya added fopr 12.1.1 Multi GAAP
20179        AND    ktrx.representation_type = 'PRIMARY'
20180        --
20181        AND    chr.id = p_chr_id
20182        AND    chr.orig_system_source_code = 'OKL_REBOOK';
20183 
20184        l_rbk_khr      VARCHAR2(1);
20185        --Bug# 5362977 end
20186 
20187 
20188   BEGIN
20189     x_return_status := OKL_API.G_RET_STS_SUCCESS;
20190     -- Call start_activity to create savepoint, check compatibility
20191     -- and initialize message list
20192     x_return_status := OKL_API.START_ACTIVITY (
20193                                l_api_name
20194                                ,p_init_msg_list
20195                                ,'_PVT'
20196                                ,x_return_status);
20197     -- Check if activity started successfully
20198     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20199        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20200     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20201        RAISE OKL_API.G_EXCEPTION_ERROR;
20202     END IF;
20203     IF l_clev_ib_tbl.COUNT > 0 THEN
20204        -- We have intialize the J , since there could be any index integer
20205        j := l_clev_ib_tbl.FIRST;
20206        LOOP
20207          IF l_clev_ib_tbl(j).id IS NUll OR
20208             l_clev_ib_tbl(j).id = OKL_API.G_MISS_NUM THEN
20209            OKL_API.set_message(p_app_name     => G_APP_NAME,
20210                                p_msg_name     => G_REQUIRED_VALUE,
20211                                p_token1       => G_COL_NAME_TOKEN,
20212                                p_token1_value => 'IB OKC_K_LINES_B.ID');
20213             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20214          END IF;
20215          x_return_status := get_rec_clev(l_clev_ib_tbl(j).id,
20216                                          l_clev_ib_rec);
20217          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20218            OKL_API.set_message(p_app_name     => G_APP_NAME,
20219                                p_msg_name     => G_FETCHING_INFO,
20220                                p_token1       => G_REC_NAME_TOKEN,
20221                                p_token1_value => 'OKC_K_LINES_V Record');
20222             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20223          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20224            OKL_API.set_message(p_app_name     => G_APP_NAME,
20225                                p_msg_name     => G_FETCHING_INFO,
20226                                p_token1       => G_REC_NAME_TOKEN,
20227                                p_token1_value => 'OKC_K_LINES_V Record');
20228             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20229          END IF;
20230          x_return_status := get_rec_clev(l_clev_ib_rec.cle_id,
20231                                          l_clev_inst_rec);
20232          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20233            OKL_API.set_message(p_app_name     => G_APP_NAME,
20234                                p_msg_name     => G_FETCHING_INFO,
20235                                p_token1       => G_REC_NAME_TOKEN,
20236                                p_token1_value => 'OKC_K_LINES_V Record');
20237             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20238          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20239            OKL_API.set_message(p_app_name     => G_APP_NAME,
20240                                p_msg_name     => G_FETCHING_INFO,
20241                                p_token1       => G_REC_NAME_TOKEN,
20242                                p_token1_value => 'OKC_K_LINES_V Record');
20243             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20244          END IF;
20245 
20246          -- we should get the remaining inst line , so that we can update
20247          -- the fixed line , model line and also update the top line with latest OEC
20248          OPEN c_remain_inst_line(l_clev_inst_rec.cle_id,
20249                                  l_clev_inst_rec.dnz_chr_id);
20250          IF c_remain_inst_line%NOTFOUND THEN
20251            OKL_API.set_message(p_app_name     => G_APP_NAME,
20252                                p_msg_name     => G_DELETING_INSTS_LINE);
20253            x_return_status := OKL_API.G_RET_STS_ERROR;
20254            EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20255          END IF;
20256          FETCH c_remain_inst_line INTO ln_remain_inst;
20257         CLOSE c_remain_inst_line;
20258 
20259         -- Last record of the OKL_TXL_ITM_INSTS should not be deleted. It
20260         -- has to update the MFG_FLAG to 'N' and nullify the serial number.
20261         IF ln_remain_inst < 2 THEN
20262           x_return_status := get_rec_itiv(l_clev_ib_rec.id,
20263                                           l_itiv_rec);
20264           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20265              OKL_API.set_message(p_app_name     => G_APP_NAME,
20266                                  p_msg_name     => G_FETCHING_INFO,
20267                                  p_token1       => G_REC_NAME_TOKEN,
20268                                  p_token1_value => 'OKC_K_LINES_V Record');
20269              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20270           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20271              OKL_API.set_message(p_app_name     => G_APP_NAME,
20272                                  p_msg_name     => G_FETCHING_INFO,
20273                                  p_token1       => G_REC_NAME_TOKEN,
20274                                  p_token1_value => 'OKC_K_LINES_V Record');
20275              RAISE OKL_API.G_EXCEPTION_ERROR;
20276           END IF;
20277 
20278           l_itiv_rec.mfg_serial_number_yn := 'N';
20279           l_itiv_rec.serial_number        := null;
20280 
20281           update_txl_itm_insts(p_api_version    => p_api_version,
20282                                p_init_msg_list  => p_init_msg_list,
20283                                x_return_status  => x_return_status,
20284                                x_msg_count      => x_msg_count,
20285                                x_msg_data       => x_msg_data,
20286                                p_itiv_rec       => l_itiv_rec,
20287                                x_itiv_rec       => lx_itiv_rec);
20288           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20289             OKL_API.set_message(p_app_name     => G_APP_NAME,
20290                                 p_msg_name     => G_ITI_ID);
20291             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20292           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20293             OKL_API.set_message(p_app_name     => G_APP_NAME,
20294                                 p_msg_name     => G_ITI_ID);
20295             RAISE OKL_API.G_EXCEPTION_ERROR;
20296           END IF;
20297           lb_last_record_updated := TRUE;
20298 /*          OKL_API.set_message(p_app_name     => G_APP_NAME,
20299                               p_msg_name     => G_MIN_INST_LINE);
20300            x_return_status := OKL_API.G_RET_STS_ERROR;
20301            EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);*/
20302         END IF;
20303 
20304         IF (NOT lb_last_record_updated) THEN
20305           validate_sts_code(p_clev_rec       => l_clev_inst_rec,
20306                             x_return_status  => x_return_status);
20307           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20308              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20309           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20310              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20311           END IF;
20312 	     --Bug# 5362977 start
20313              -- Do not allow update of units if the contract has Re-lease assets
20314              l_chk_rel_ast := 'N';
20315 
20316              -- Bug# 15992711 : Change in number of parameters passed to new cursor
20317              -- OPEN l_chk_rel_ast_csr(p_chr_id => l_clev_inst_rec.dnz_chr_id);
20318              OPEN l_chk_rel_ast_csr(l_clev_inst_rec.dnz_chr_id
20319                                     ,p_asset_number);
20320              -- Bug# 15992711 : End of Modifications
20321 
20322              FETCH l_chk_rel_ast_csr INTO l_chk_rel_ast;
20323              CLOSE l_chk_rel_ast_csr;
20324 
20325              IF l_chk_rel_ast = 'Y' THEN
20326                OKL_API.set_message(p_app_name     => G_APP_NAME,
20327                                    p_msg_name     => 'OKL_LA_REL_UNITS_NO_UPDATE');
20328                RAISE OKL_API.G_EXCEPTION_ERROR;
20329              END IF;
20330              --Bug# 5362977 end
20331 
20332           OKL_CONTRACT_PUB.delete_contract_line(
20333                             p_api_version   => p_api_version,
20334                             p_init_msg_list => p_init_msg_list,
20335                             x_return_status => x_return_status,
20336                             x_msg_count     => x_msg_count,
20337                             x_msg_data      => x_msg_data,
20338                             p_line_id       => l_clev_inst_rec.id);
20339            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20340              OKL_API.set_message(p_app_name     => G_APP_NAME,
20341                                  p_msg_name     => G_DELETING_IB_LINE);
20342              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20343            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20344              OKL_API.set_message(p_app_name     => G_APP_NAME,
20345                                  p_msg_name     => G_DELETING_IB_LINE);
20346              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20347            END IF;
20348          END IF;
20349          EXIT WHEN (j = l_clev_ib_tbl.LAST);
20350          j := l_clev_ib_tbl.NEXT(j);
20351        END LOOP;
20352        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20353           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20354        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20355           RAISE OKL_API.G_EXCEPTION_ERROR;
20356        END IF;
20357     ELSE
20358        OKL_API.set_message(p_app_name     => G_APP_NAME,
20359                            p_msg_name     => G_CNT_REC);
20360        RAISE OKL_API.G_EXCEPTION_ERROR;
20361     END IF;
20362     -- we should get the remaining inst line , so that we can update
20363     -- the fixed line , model line and also update the top line with latest OEC
20364     OPEN c_remain_inst_line(l_clev_inst_rec.cle_id,
20365                             l_clev_inst_rec.dnz_chr_id);
20366     IF c_remain_inst_line%NOTFOUND THEN
20367       OKL_API.set_message(p_app_name     => G_APP_NAME,
20368                           p_msg_name     => G_DELETING_INSTS_LINE);
20369       RAISE OKL_API.G_EXCEPTION_ERROR;
20370     END IF;
20371     FETCH c_remain_inst_line INTO ln_remain_inst;
20372     CLOSE c_remain_inst_line;
20373     -- To get the Model Line
20374     -- Since we have update the model line
20375     OPEN c_model_line(l_clev_inst_rec.cle_id,
20376                       l_clev_inst_rec.dnz_chr_id);
20377     IF c_model_line%NOTFOUND THEN
20378        OKL_API.set_message(p_app_name     => G_APP_NAME,
20379                            p_msg_name     => G_NO_MATCHING_RECORD,
20380                            p_token1       => G_COL_NAME_TOKEN,
20381                            p_token1_value => 'Model Asset Line record');
20382        RAISE OKL_API.G_EXCEPTION_ERROR;
20383     END IF;
20384     FETCH c_model_line INTO ln_model_line_id;
20385     CLOSE c_model_line;
20386     -- To get the Fixed Asset Line
20387     -- Since we have update the Fixed Asset Line
20388     OPEN c_fa_line(l_clev_inst_rec.cle_id,
20389                   l_clev_inst_rec.dnz_chr_id);
20390     IF c_fa_line%NOTFOUND THEN
20391        OKL_API.set_message(p_app_name     => G_APP_NAME,
20392                            p_msg_name     => G_NO_MATCHING_RECORD,
20393                            p_token1       => G_COL_NAME_TOKEN,
20394                            p_token1_value => 'Fixed Asset Line record');
20395        RAISE OKL_API.G_EXCEPTION_ERROR;
20396     END IF;
20397     FETCH c_fa_line INTO ln_fa_line_id;
20398     CLOSE c_fa_line;
20399     --We have to build the Model Line Record for the calculations of the
20400     -- oec of the top line
20401     -- To Get the cle Model Line Record
20402     x_return_status := get_rec_clev(ln_model_line_id,
20403                                     r_clev_model_rec);
20404     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20405        OKL_API.set_message(p_app_name     => G_APP_NAME,
20406                            p_msg_name     => G_FETCHING_INFO,
20407                            p_token1       => G_REC_NAME_TOKEN,
20408                            p_token1_value => 'OKC_K_LINES_V Record');
20409        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20410     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20411        OKL_API.set_message(p_app_name     => G_APP_NAME,
20412                            p_msg_name     => G_FETCHING_INFO,
20413                            p_token1       => G_REC_NAME_TOKEN,
20414                            p_token1_value => 'OKC_K_LINES_V Record');
20415        RAISE OKL_API.G_EXCEPTION_ERROR;
20416     END IF;
20417     -- To Get the kle Model Line Record
20418     x_return_status := get_rec_klev(ln_model_line_id,
20419                                     r_klev_model_rec);
20420     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20421        OKL_API.set_message(p_app_name     => G_APP_NAME,
20422                            p_msg_name     => G_FETCHING_INFO,
20423                            p_token1       => G_REC_NAME_TOKEN,
20424                            p_token1_value => 'OKL_K_LINES_V Record');
20425        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20426     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20427        OKL_API.set_message(p_app_name     => G_APP_NAME,
20428                            p_msg_name     => G_FETCHING_INFO,
20429                            p_token1       => G_REC_NAME_TOKEN,
20430                            p_token1_value => 'OKL_K_LINES_V Record');
20431        RAISE OKL_API.G_EXCEPTION_ERROR;
20432     END IF;
20433     IF r_klev_model_rec.id <> r_clev_model_rec.id THEN
20434        OKL_API.set_message(p_app_name     => G_APP_NAME,
20435                            p_msg_name     => G_LINE_RECORD);
20436        RAISE OKL_API.G_EXCEPTION_ERROR;
20437     END IF;
20438     -- To Get the cimv Model Line Record
20439     x_return_status := get_rec_cimv(r_clev_model_rec.id,
20440                                     r_clev_model_rec.dnz_chr_id,
20441                                     r_cimv_model_rec);
20442     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20443        OKL_API.set_message(p_app_name     => G_APP_NAME,
20444                            p_msg_name     => G_FETCHING_INFO,
20445                            p_token1       => G_REC_NAME_TOKEN,
20446                            p_token1_value => 'OKC_K_ITEMS_V Record');
20447        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20448     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20449        OKL_API.set_message(p_app_name     => G_APP_NAME,
20450                            p_msg_name     => G_FETCHING_INFO,
20451                            p_token1       => G_REC_NAME_TOKEN,
20452                            p_token1_value => 'OKC_K_ITEMS_V Record');
20453        RAISE OKL_API.G_EXCEPTION_ERROR;
20454     END IF;
20455     --Build Model cimv item rec
20456     r_cimv_model_rec.number_of_items  := ln_remain_inst;
20457     -- Updating of the Model Line and Item Record
20458     update_model_line(p_api_version   => p_api_version,
20459                       p_init_msg_list => p_init_msg_list,
20460                       x_return_status => x_return_status,
20461                       x_msg_count     => x_msg_count,
20462                       x_msg_data      => x_msg_data,
20463                       P_new_yn        => P_new_yn,
20464                       p_asset_number  => p_asset_number,
20465                       p_clev_rec      => r_clev_model_rec,
20466                       p_klev_rec      => r_klev_model_rec,
20467                       p_cimv_rec      => r_cimv_model_rec,
20468                       x_clev_rec      => l_clev_model_rec_out,
20469                       x_klev_rec      => l_klev_model_rec_out,
20470                       x_cimv_rec      => x_cimv_model_rec);
20471     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20472       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20473     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20474       RAISE OKL_API.G_EXCEPTION_ERROR;
20475     END IF;
20476     -- We need to check if there are add on line and then we update the Addon number of items also
20477     -- Since there can be multiple Addo lines
20478     FOR r_addon_line_id IN c_addon_line_id(p_cle_id => l_clev_model_rec_out.cle_id,
20479                                            p_chr_id => l_clev_model_rec_out.dnz_chr_id) LOOP
20480       --We have to build the addon Line Record for the calculations of the
20481       -- oec of the top line
20482       -- To Get the cle addon Line Record
20483       x_return_status := get_rec_clev(r_addon_line_id.id,
20484                                       r_clev_addon_rec);
20485       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20486          OKL_API.set_message(p_app_name     => G_APP_NAME,
20487                              p_msg_name     => G_FETCHING_INFO,
20488                              p_token1       => G_REC_NAME_TOKEN,
20489                              p_token1_value => 'OKC_K_LINES_V Record');
20490          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20491       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20492          OKL_API.set_message(p_app_name     => G_APP_NAME,
20493                              p_msg_name     => G_FETCHING_INFO,
20494                              p_token1       => G_REC_NAME_TOKEN,
20495                              p_token1_value => 'OKC_K_LINES_V Record');
20496          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20497       END IF;
20498       -- To Get the kle Model Line Record
20499       x_return_status := get_rec_klev(r_addon_line_id.id,
20500                                       r_klev_addon_rec);
20501       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20502          OKL_API.set_message(p_app_name     => G_APP_NAME,
20503                              p_msg_name     => G_FETCHING_INFO,
20504                              p_token1       => G_REC_NAME_TOKEN,
20505                              p_token1_value => 'OKL_K_LINES_V Record');
20506          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20507       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20508          OKL_API.set_message(p_app_name     => G_APP_NAME,
20509                              p_msg_name     => G_FETCHING_INFO,
20510                              p_token1       => G_REC_NAME_TOKEN,
20511                              p_token1_value => 'OKL_K_LINES_V Record');
20512          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20513       END IF;
20514       IF r_klev_addon_rec.id <> r_clev_addon_rec.id THEN
20515          OKL_API.set_message(p_app_name     => G_APP_NAME,
20516                              p_msg_name     => G_LINE_RECORD);
20517          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20518       END IF;
20519       -- To Get the cimv Model Line Record
20520       x_return_status := get_rec_cimv(r_clev_addon_rec.id,
20521                                       r_clev_addon_rec.dnz_chr_id,
20522                                       r_cimv_addon_rec);
20523       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20524          OKL_API.set_message(p_app_name     => G_APP_NAME,
20525                              p_msg_name     => G_FETCHING_INFO,
20526                              p_token1       => G_REC_NAME_TOKEN,
20527                              p_token1_value => 'OKC_K_ITEMS_V Record');
20528          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20529       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20530          OKL_API.set_message(p_app_name     => G_APP_NAME,
20531                              p_msg_name     => G_FETCHING_INFO,
20532                              p_token1       => G_REC_NAME_TOKEN,
20533                              p_token1_value => 'OKC_K_ITEMS_V Record');
20534          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20535       END IF;
20536       --Build addon cimv item rec
20537       r_cimv_addon_rec.number_of_items  := ln_remain_inst;
20538       -- Updating of the addon Line and Item Record
20539       update_addon_line_rec(p_api_version   => p_api_version,
20540                             p_init_msg_list => p_init_msg_list,
20541                             x_return_status => x_return_status,
20542                             x_msg_count     => x_msg_count,
20543                             x_msg_data      => x_msg_data,
20544                             P_new_yn        => P_new_yn,
20545                             p_asset_number  => p_asset_number,
20546                             p_clev_rec      => r_clev_addon_rec,
20547                             p_klev_rec      => r_klev_addon_rec,
20548                             p_cimv_rec      => r_cimv_addon_rec,
20549                             x_clev_rec      => rx_clev_addon_rec,
20550                             x_klev_rec      => rx_klev_addon_rec,
20551                             x_cimv_rec      => rx_cimv_addon_rec);
20552       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20553          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20554       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20555          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20556       END IF;
20557     END LOOP;
20558     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20559        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20560     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20561        RAISE OKL_API.G_EXCEPTION_ERROR;
20562     END IF;
20563     -- Since we need to populate the OEC into fixed asset line also
20564     -- So we need to calcualte the same here it self
20565     oec_calc_upd_fin_rec(p_api_version        => p_api_version,
20566                          p_init_msg_list      => p_init_msg_list,
20567                          x_return_status      => x_return_status,
20568                          x_msg_count          => x_msg_count,
20569                          x_msg_data           => x_msg_data,
20570                          P_new_yn             => P_new_yn,
20571                          p_asset_number       => p_asset_number,
20572 			 -- 4414408
20573                          p_top_line_id        => l_clev_inst_rec.cle_id,
20574                          p_dnz_chr_id         => l_clev_model_rec_out.dnz_chr_id,
20575                          x_fin_clev_rec       => x_clev_fin_rec,
20576                          x_fin_klev_rec       => x_klev_fin_rec,
20577                          x_oec                => ln_klev_fin_oec,
20578                          p_validate_fin_line  => OKL_API.G_TRUE);
20579     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20580        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20581     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20582        RAISE OKL_API.G_EXCEPTION_ERROR;
20583     END IF;
20584     -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
20585     cap_amt_calc_upd_fin_rec(p_api_version        => p_api_version,
20586                              p_init_msg_list      => p_init_msg_list,
20587                              x_return_status      => x_return_status,
20588                              x_msg_count          => x_msg_count,
20589                              x_msg_data           => x_msg_data,
20590                              P_new_yn             => P_new_yn,
20591                              p_asset_number       => p_asset_number,
20592 			     -- 4414408
20593                              p_top_line_id        => l_clev_inst_rec.cle_id,
20594                              p_dnz_chr_id         => l_clev_model_rec_out.dnz_chr_id,
20595                              x_fin_clev_rec       => x_clev_fin_rec,
20596                              x_fin_klev_rec       => x_klev_fin_rec,
20597                              x_cap_amt            => ln_klev_fin_cap,
20598                              p_validate_fin_line  => OKL_API.G_TRUE);
20599     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20600       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20601     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20602       RAISE OKL_API.G_EXCEPTION_ERROR;
20603     END IF;
20604     -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
20605     res_value_calc_upd_fin_rec(p_api_version        => p_api_version,
20606                                p_init_msg_list      => p_init_msg_list,
20607                                x_return_status      => x_return_status,
20608                                x_msg_count          => x_msg_count,
20609                                x_msg_data           => x_msg_data,
20610                                P_new_yn             => P_new_yn,
20611                                p_asset_number       => p_asset_number,
20612 			       -- 4414408
20613                                p_top_line_id        => l_clev_inst_rec.cle_id,
20614                                p_dnz_chr_id         => l_clev_model_rec_out.dnz_chr_id,
20615                                x_fin_clev_rec       => x_clev_fin_rec,
20616                                x_fin_klev_rec       => x_klev_fin_rec,
20617                                x_res_value          => ln_klev_fin_res,
20618                                p_validate_fin_line  => OKL_API.G_TRUE);
20619     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20620       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20621     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20622       RAISE OKL_API.G_EXCEPTION_ERROR;
20623     END IF;
20624     -- Updating of the Fixed Asset Line Process
20625     -- To Get the cle fa Line Record
20626     x_return_status := get_rec_clev(ln_fa_line_id,
20627                                     r_clev_fa_rec);
20628     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20629        OKL_API.set_message(p_app_name     => G_APP_NAME,
20630                            p_msg_name     => G_FETCHING_INFO,
20631                            p_token1       => G_REC_NAME_TOKEN,
20632                            p_token1_value => 'OKC_K_LINES_V Record');
20633        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20634     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20635        OKL_API.set_message(p_app_name     => G_APP_NAME,
20636                            p_msg_name     => G_FETCHING_INFO,
20637                            p_token1       => G_REC_NAME_TOKEN,
20638                            p_token1_value => 'OKC_K_LINES_V Record');
20639        RAISE OKL_API.G_EXCEPTION_ERROR;
20640     END IF;
20641     -- To Get the kle fa Line Record
20642     x_return_status := get_rec_klev(ln_fa_line_id,
20643                                     r_klev_fa_rec);
20644     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20645        OKL_API.set_message(p_app_name     => G_APP_NAME,
20646                            p_msg_name     => G_FETCHING_INFO,
20647                            p_token1       => G_REC_NAME_TOKEN,
20648                            p_token1_value => 'OKL_K_LINES_V Record');
20649        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20650     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20651        OKL_API.set_message(p_app_name     => G_APP_NAME,
20652                            p_msg_name     => G_FETCHING_INFO,
20653                            p_token1       => G_REC_NAME_TOKEN,
20654                            p_token1_value => 'OKL_K_LINES_V Record');
20655        RAISE OKL_API.G_EXCEPTION_ERROR;
20656     END IF;
20657     IF r_klev_fa_rec.id <> r_clev_fa_rec.id THEN
20658        OKL_API.set_message(p_app_name     => G_APP_NAME,
20659                            p_msg_name     => G_LINE_RECORD);
20660        RAISE OKL_API.G_EXCEPTION_ERROR;
20661     END IF;
20662     -- To Get the cimv fa Line Record
20663     x_return_status := get_rec_cimv(r_clev_fa_rec.id,
20664                                     r_clev_fa_rec.dnz_chr_id,
20665                                     r_cimv_fa_rec);
20666     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20667        OKL_API.set_message(p_app_name     => G_APP_NAME,
20668                            p_msg_name     => G_FETCHING_INFO,
20669                            p_token1       => G_REC_NAME_TOKEN,
20670                            p_token1_value => 'OKC_K_ITEMS_V Record');
20671        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20672     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20673        OKL_API.set_message(p_app_name     => G_APP_NAME,
20674                            p_msg_name     => G_FETCHING_INFO,
20675                            p_token1       => G_REC_NAME_TOKEN,
20676                            p_token1_value => 'OKC_K_ITEMS_V Record');
20677        RAISE OKL_API.G_EXCEPTION_ERROR;
20678     END IF;
20679     --Build cimv fa item rec
20680     r_cimv_fa_rec.number_of_items  := ln_remain_inst;
20681     --Build talv fa item rec
20682     x_return_status := get_rec_txlv(r_clev_fa_rec.id,
20683                                     r_talv_fa_rec);
20684     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20685        OKL_API.set_message(p_app_name     => G_APP_NAME,
20686                            p_msg_name     => G_FETCHING_INFO,
20687                            p_token1       => G_REC_NAME_TOKEN,
20688                            p_token1_value => 'OKL_TXL_ASSETS_V Record');
20689        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20690     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20691        OKL_API.set_message(p_app_name     => G_APP_NAME,
20692                            p_msg_name     => G_FETCHING_INFO,
20693                            p_token1       => G_REC_NAME_TOKEN,
20694                            p_token1_value => 'OKL_TXL_ASSETS_V Record');
20695        RAISE OKL_API.G_EXCEPTION_ERROR;
20696     END IF;
20697     --Build talv fa item rec
20698     r_talv_fa_rec.current_units  := ln_remain_inst;
20699 
20700        --Bug# 5362977 start
20701        -- For online rebook, update depreciation_cost and
20702        -- original_cost to line capital amount instead of line oec
20703        --check for rebook contract
20704        l_rbk_khr := '?';
20705        OPEN l_chk_rbk_csr (p_chr_id => r_clev_fa_rec.dnz_chr_id);
20706        FETCH l_chk_rbk_csr INTO l_rbk_khr;
20707        CLOSE l_chk_rbk_csr;
20708 
20709        If l_rbk_khr = '!' Then
20710          --Commented by bkatraga for bug 9770391
20711          --r_talv_fa_rec.depreciation_cost := NVL(x_klev_fin_rec.capital_amount,ln_klev_fin_cap);
20712          r_talv_fa_rec.original_cost := NVL(x_klev_fin_rec.capital_amount,ln_klev_fin_cap);
20713        else
20714           --Commented by bkatraga for bug 9770391
20715           --r_talv_fa_rec.depreciation_cost := x_klev_fin_rec.oec;
20716           r_talv_fa_rec.original_cost := x_klev_fin_rec.oec;
20717        end if;
20718        --Bug# 5362977 end
20719 
20720 
20721     r_clev_fa_rec.item_description := r_talv_fa_rec.description;
20722     -- Updating of the Fixed Asset Line and item/Txl Asset Info
20723     update_fixed_asset_line(p_api_version   => p_api_version,
20724                             p_init_msg_list => p_init_msg_list,
20725                             x_return_status => x_return_status,
20726                             x_msg_count     => x_msg_count,
20727                             x_msg_data      => x_msg_data,
20728                             P_new_yn        => P_new_yn,
20729                             p_asset_number  => p_asset_number,
20730                             p_clev_rec      => r_clev_fa_rec,
20731                             p_klev_rec      => r_klev_fa_rec,
20732                             p_cimv_rec      => r_cimv_fa_rec,
20733                             p_talv_rec      => r_talv_fa_rec,
20734                             x_clev_rec      => l_clev_fa_rec_out,
20735                             x_klev_rec      => l_klev_fa_rec_out,
20736                             x_cimv_rec      => x_cimv_fa_rec,
20737                             x_talv_rec      => x_talv_fa_rec);
20738     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20739       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20740     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20741       RAISE OKL_API.G_EXCEPTION_ERROR;
20742     END IF;
20743         --Bug# 5176649 start
20744        -- Update Tax Book details - okl_txd_assets_b
20745        update_asset_line_details(p_api_version   => p_api_version,
20746                                  p_init_msg_list => p_init_msg_list,
20747                                  x_return_status => x_return_status,
20748                                  x_msg_count     => x_msg_count,
20749                                  x_msg_data      => x_msg_data,
20750                                  p_asset_number  => p_asset_number,
20751                                  p_original_cost => x_talv_fa_rec.original_cost,
20752                                  p_tal_id        => x_talv_fa_rec.ID);
20753        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20754          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20755        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20756          RAISE OKL_API.G_EXCEPTION_ERROR;
20757        END IF;
20758        --Bug# 5176649 end
20759 
20760     -- We need to change the status of the header whenever there is updating happening
20761     -- after the contract status is approved
20762     IF (l_clev_fa_rec_out.dnz_chr_id is NOT NULL) AND
20763        (l_clev_fa_rec_out.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
20764       --cascade edit status on to lines
20765       okl_contract_status_pub.cascade_lease_status_edit
20766                (p_api_version     => p_api_version,
20767                 p_init_msg_list   => p_init_msg_list,
20768                 x_return_status   => x_return_status,
20769                 x_msg_count       => x_msg_count,
20770                 x_msg_data        => x_msg_data,
20771                 p_chr_id          => l_clev_fa_rec_out.dnz_chr_id);
20772       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20773         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20774       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20775         RAISE OKL_API.G_EXCEPTION_ERROR;
20776       END IF;
20777     END IF;
20778     OKL_API.END_ACTIVITY (x_msg_count,
20779                           x_msg_data );
20780   EXCEPTION
20781     WHEN OKL_API.G_EXCEPTION_ERROR THEN
20782     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
20783                                l_api_name,
20784                                G_PKG_NAME,
20785                                'OKL_API.G_RET_STS_ERROR',
20786                                x_msg_count,
20787                                x_msg_data,
20788                                '_PVT');
20789     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
20790     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
20791                               l_api_name,
20792                               G_PKG_NAME,
20793                               'OKL_API.G_RET_STS_UNEXP_ERROR',
20794                               x_msg_count,
20795                               x_msg_data,
20796                               '_PVT');
20797     WHEN OTHERS THEN
20798     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
20799                               l_api_name,
20800                               G_PKG_NAME,
20801                               'OTHERS',
20802                               x_msg_count,
20803                               x_msg_data,
20804                               '_PVT');
20805   END delete_ints_ib_line;
20806 
20807 End OKL_CREATE_KLE_PVT;