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.56.12010000.6 2009/01/15 20:49:24 smereddy ship $ */
3 -------------------------------------------------------------------------------------------------
4 -- GLOBAL MESSAGE CONSTANTS
5 -------------------------------------------------------------------------------------------------
6   G_FND_APP                 CONSTANT  VARCHAR2(200) := OKL_API.G_FND_APP;
7   G_COL_NAME_TOKEN          CONSTANT  VARCHAR2(200) := OKL_API.G_COL_NAME_TOKEN;
8   G_AMT_TOKEN               CONSTANT  VARCHAR2(200) := 'AMOUNT';
9   G_REC_NAME_TOKEN          CONSTANT  VARCHAR2(200) := 'REC_INFO';
10   G_PARENT_TABLE_TOKEN	    CONSTANT  VARCHAR2(200) := OKL_API.G_PARENT_TABLE_TOKEN;
11   G_CHILD_TABLE_TOKEN	    CONSTANT  VARCHAR2(200) := OKL_API.G_CHILD_TABLE_TOKEN;
12   G_UNEXPECTED_ERROR        CONSTANT  VARCHAR2(200) := 'OKL_UNEXPECTED_ERROR';
13   G_SQLERRM_TOKEN           CONSTANT  VARCHAR2(200) := 'SQLerrm';
14   G_SQLCODE_TOKEN           CONSTANT  VARCHAR2(200) := 'SQLcode';
15 ------------------------------------------------------------------------------------
16 -- GLOBAL OKL MESSAGES
17 ------------------------------------------------------------------------------------
18   G_INVALID_YN              CONSTANT  VARCHAR2(200) := 'OKL_INVALID_YN';
19   G_INVALID_VALUE           CONSTANT  VARCHAR2(200) := 'OKL_LLA_NEGATIVE';
20   G_DECIMAL_VALUE           CONSTANT  VARCHAR2(200) := 'OKL_LLA_DECIMAL_VAL';
21   G_NO_PARENT_RECORD        CONSTANT  VARCHAR2(200) := 'OKL_NO_PARENT_RECORD';
22   G_REQUIRED_VALUE          CONSTANT  VARCHAR2(200) := 'OKL_REQUIRED_VALUE';
23   G_NO_MATCHING_RECORD      CONSTANT  VARCHAR2(200) := 'OKL_LLA_NO_MATCHING_RECORD';
24   G_CALC_AMOUNT             CONSTANT  VARCHAR2(200) := 'OKL_LLA_CALC_AMOUNT';
25   G_CREATION_FIN_LINE       CONSTANT  VARCHAR2(200) := 'OKL_LLA_CREATION_FIN_LINE';
26   G_UPDATING_FIN_LINE       CONSTANT  VARCHAR2(200) := 'OKL_LLA_UPDATING_FIN_LINE';
27   G_CREATION_MODEL_LINE     CONSTANT  VARCHAR2(200) := 'OKL_LLA_CREATION_MODEL_LINE';
28   G_UPDATING_MODEL_LINE     CONSTANT  VARCHAR2(200) := 'OKL_LLA_UPDATING_MODEL_LINE';
29   G_CREATION_MODEL_ITEM     CONSTANT  VARCHAR2(200) := 'OKL_LLA_CREATION_MODEL_ITEM';
30   G_UPDATING_MODEL_ITEM     CONSTANT  VARCHAR2(200) := 'OKL_LLA_UPDATING_MODEL_ITEM';
31   G_CREATION_FA_LINE        CONSTANT  VARCHAR2(200) := 'OKL_LLA_CREATION_FA_LINE';
32   G_UPDATING_FA_LINE        CONSTANT  VARCHAR2(200) := 'OKL_LLA_UPDATING_FA_LINE';
33   G_CREATION_FA_ITEM        CONSTANT  VARCHAR2(200) := 'OKL_LLA_CREATION_FA_ITEM';
34   G_UPDATING_FA_ITEM        CONSTANT  VARCHAR2(200) := 'OKL_LLA_UPDATING_FA_ITEM';
35   G_CREATION_ADDON_LINE     CONSTANT  VARCHAR2(200) := 'OKL_LLA_CREATION_ADDON_LINE';
36   G_UPDATING_ADDON_LINE     CONSTANT  VARCHAR2(200) := 'OKL_LLA_UPDATING_ADDON_LINE';
37   G_DELETING_ADDON_LINE     CONSTANT  VARCHAR2(200) := 'OKL_LLA_DELETING_ADDON_LINE';
38   G_CREATION_ADDON_ITEM     CONSTANT  VARCHAR2(200) := 'OKL_LLA_CREATION_ADDON_ITEM';
39   G_UPDATING_ADDON_ITEM     CONSTANT  VARCHAR2(200) := 'OKL_LLA_UPDATING_ADDON_ITEM';
40   G_CREATION_INSTS_LINE     CONSTANT  VARCHAR2(200) := 'OKL_LLA_CREATION_INSTS_LINE';
41   G_UPDATING_INSTS_LINE     CONSTANT  VARCHAR2(200) := 'OKL_LLA_UPDATING_INSTS_LINE';
42   G_DELETING_INSTS_LINE     CONSTANT  VARCHAR2(200) := 'OKL_LLA_DELETING_INSTS_LINE';
43   G_MIN_INST_LINE           CONSTANT  VARCHAR2(200) := 'OKL_LLA_MIN_INST_LINE';
44   G_CREATION_IB_LINE        CONSTANT  VARCHAR2(200) := 'OKL_LLA_CREATION_IB_LINE';
45   G_UPDATING_IB_LINE        CONSTANT  VARCHAR2(200) := 'OKL_LLA_UPDATING_IB_LINE';
46   G_DELETING_IB_LINE        CONSTANT  VARCHAR2(200) := 'OKL_LLA_DELETING_IB_LINE';
47   G_CREATION_IB_ITEM        CONSTANT  VARCHAR2(200) := 'OKL_LLA_CREATION_IB_ITEM';
48   G_UPDATING_IB_ITEM        CONSTANT  VARCHAR2(200) := 'OKL_LLA_UPDATING_IB_ITEM';
49   G_CREATION_PARTY_ROLE     CONSTANT  VARCHAR2(200) := 'OKL_LLA_CREATION_PARTY_ROLE';
50   G_UPDATING_PARTY_ROLE     CONSTANT  VARCHAR2(200) := 'OKL_LLA_UPDATING_PARTY_ROLE';
51   G_ASSET_NUMBER            CONSTANT  VARCHAR2(200) := 'OKL_LLA_ASSET_NUMBER';
52   G_DUPLICATE_SERIAL_NUM    CONSTANT  VARCHAR2(200) := 'OKL_LLA_SERIAL_NUM_DUP';
53   G_GEN_INST_NUM_IB         CONSTANT  VARCHAR2(200) := 'OKL_LLA_GEN_INST_NUM_IB';
54   G_GEN_ASSET_NUMBER        CONSTANT  VARCHAR2(200) := 'OKL_LLA_GEN_ASSET_NUMBER';
55   G_LINE_STYLE              CONSTANT  VARCHAR2(200) := 'OKL_LLA_LINE_STYLE';
56   G_CNT_REC                 CONSTANT  VARCHAR2(200) := 'OKL_LLA_CNT_REC';
57   G_ITEM_RECORD             CONSTANT  VARCHAR2(200) := 'OKL_LLA_ITEM_RECORD';
58   G_LINE_RECORD             CONSTANT  VARCHAR2(200) := 'OKL_LLA_LINE_RECORD';
59   G_INSTALL_BASE_NUMBER     CONSTANT  VARCHAR2(200) := 'OKL_LLA_INSTALL_BASE_NUMBER';
60   G_FETCHING_INFO           CONSTANT  VARCHAR2(200) := 'OKL_LLA_FETCHING_INFO';
61   G_INVALID_CRITERIA        CONSTANT  VARCHAR2(200) := 'OKL_LLA_INVALID_CRITERIA';
62   G_SALVAGE_VALUE           CONSTANT  VARCHAR2(200) := 'OKL_LLA_SALVAGE_VALUE';
63   G_STATUS                  CONSTANT  VARCHAR2(200) := 'OKL_LLA_STATUS';
64   G_CHR_ID                  CONSTANT  VARCHAR2(200) := 'OKL_LLA_CHR_ID';
65   G_LSE_ID                  CONSTANT  VARCHAR2(200) := 'OKL_LLA_LSE_ID';
66   G_KLE_ID                  CONSTANT  VARCHAR2(200) := 'OKL_LLA_KLE_ID';
67   G_TRX_ID                  CONSTANT  VARCHAR2(200) := 'OKL_LLA_TRX_ID';
68   G_ITI_ID                  CONSTANT  VARCHAR2(200) := 'OKL_LLA_ITI_ID';
69   G_AMOUNT_ROUNDING         CONSTANT  VARCHAR2(200) := 'OKL_LA_ROUNDING_ERROR';
70 ------------------------------------------------------------------------------------
71 -- GLOBAL EXCEPTION
72 ------------------------------------------------------------------------------------
73   G_EXCEPTION_HALT_VALIDATION             EXCEPTION;
74   G_EXCEPTION_STOP_VALIDATION             EXCEPTION;
75   G_API_TYPE                    CONSTANT  VARCHAR2(4) := '_PVT';
76   G_API_VERSION                 CONSTANT  NUMBER := 1.0;
77   G_SCOPE                       CONSTANT  VARCHAR2(4) := '_PVT';
78 
79  -- GLOBAL VARIABLES
80 -----------------------------------------------------------------------------------
81   G_PKG_NAME                    CONSTANT  VARCHAR2(200) := 'OKL_CREATE_ASSET_PVT';
82   G_APP_NAME                    CONSTANT  VARCHAR2(3)   :=  OKL_API.G_APP_NAME;
83   G_TRY_NAME                              OKL_TRX_TYPES_TL.NAME%TYPE     := 'Internal Asset Creation';
84   G_LANGUAGE                              OKL_TRX_TYPES_TL.LANGUAGE%TYPE := 'US';
85 --  G_FA_TRY_NAME                           OKL_TRX_TYPES_V.NAME%TYPE       := 'CREATE ASSET LINES';
86 --  G_IB_TRY_NAME                           OKL_TRX_TYPES_V.NAME%TYPE       := 'CREATE_IB_LINES';
87 --  G_TRY_TYPE                              OKL_TRX_TYPES_V.TRY_TYPE%TYPE   := 'TIE';
88   G_FORMULA_OEC                           OKL_FORMULAE_V.NAME%TYPE := 'LINE_OEC';
89   G_FORMULA_CAP                           OKL_FORMULAE_V.NAME%TYPE := 'LINE_CAP_AMNT';
90   G_FORMULA_RES                           OKL_FORMULAE_V.NAME%TYPE := 'LINE_RESIDUAL_VALUE';
91   G_ID2                         CONSTANT  VARCHAR2(200) := '#';
92   G_TLS_TYPE                              OKC_LINE_STYLES_V.LSE_TYPE%TYPE := 'TLS';
93   G_SLS_TYPE                              OKC_LINE_STYLES_V.LSE_TYPE%TYPE := 'SLS';
94   G_LEASE_SCS_CODE                        OKC_K_HEADERS_V.SCS_CODE%TYPE := 'LEASE';
95   G_LOAN_SCS_CODE                         OKC_K_HEADERS_V.SCS_CODE%TYPE := 'LOAN';
96   G_QUOTE_SCS_CODE                        OKC_K_HEADERS_V.SCS_CODE%TYPE := 'QUOTE';
97 ---------------------------------------------------------------------------------------------------------------
98   --Added by dpsingh for LE uptake
99   CURSOR contract_num_csr (p_ctr_id1 NUMBER) IS
100   SELECT  contract_number
101   FROM OKC_K_HEADERS_B
102   WHERE id = p_ctr_id1;
103 
104   FUNCTION is_duplicate_serial_number(p_serial_number  OKL_TXL_ITM_INSTS.SERIAL_NUMBER%TYPE,
105                                       p_item_id        OKL_TXL_ITM_INSTS.INVENTORY_ITEM_ID%TYPE)
106   RETURN VARCHAR2 IS
107     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
108     ln_serial_number           NUMBER      := 0;
109     -- cursor to get sequence number for asset number
110     -- Bug 4698117
111 
112 
113     CURSOR c_check_dup_serial_num IS
114     SELECT 1 FROM OKL_TXL_ITM_INSTS
115 	  WHERE INVENTORY_ITEM_ID = p_item_id
116 	  AND SERIAL_NUMBER = p_serial_number
117         AND NOT EXISTS (
118         select 1 From okc_k_lines_b cleb
119         where cleb.id=OKL_TXL_ITM_INSTS.kle_id
120         and cleb.STS_CODE = 'ABANDONED'
121     );
122    --Bug# 4698117: End
123   BEGIN
124     OPEN  c_check_dup_serial_num;
125     FETCH c_check_dup_serial_num INTO ln_serial_number;
126     IF (c_check_dup_serial_num%NOTFOUND) Then
127       x_return_status := OKL_API.G_RET_STS_SUCCESS;
128     END IF;
129     CLOSE c_check_dup_serial_num;
130     IF (ln_serial_number = 1) THEN
131        OKL_API.set_message(p_app_name     => G_APP_NAME,
132                            p_msg_name     => G_DUPLICATE_SERIAL_NUM,
133                            p_token1	      => 'COL_NAME',
134                            p_token1_value => p_serial_number);
135        RAISE G_EXCEPTION_HALT_VALIDATION;
136     END IF;
137     RETURN x_return_status;
138   EXCEPTION
139     WHEN G_EXCEPTION_HALT_VALIDATION then
140       IF c_check_dup_serial_num%ISOPEN THEN
141         CLOSE c_check_dup_serial_num;
142       END IF;
143      -- notify caller of an error
144      x_return_status := OKL_API.G_RET_STS_ERROR;
145      RETURN x_return_status;
146     WHEN OTHERS THEN
147       IF c_check_dup_serial_num%ISOPEN THEN
148         CLOSE c_check_dup_serial_num;
149       END IF;
150       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
151       OKL_API.SET_MESSAGE(p_app_name 	 => g_app_name,
152                           p_msg_name	 => g_unexpected_error,
153                           p_token1	 => g_sqlcode_token,
154                           p_token1_value => sqlcode,
155 			  p_token2	 => g_sqlerrm_token,
156 			  p_token2_value => sqlerrm);
157     RETURN x_return_status;
158   END is_duplicate_serial_number;
159 ---------------------------------------------------------------------------------------------------------------
160   FUNCTION generate_instance_number_ib(x_instance_number_ib  OUT NOCOPY OKL_TXL_ITM_INSTS_V.INSTANCE_NUMBER_IB%TYPE)
161   RETURN VARCHAR2 IS
162     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
163     -- cursor to get sequence number for asset number
164     Cursor c_instance_no_ib IS
165     select TO_CHAR(OKL_IBN_SEQ.NEXTVAL)
166     FROM dual;
167   BEGIN
168     OPEN  c_instance_no_ib;
169     FETCH c_instance_no_ib INTO x_instance_number_ib;
170     IF (c_instance_no_ib%NOTFOUND) Then
171       x_return_status := OKC_API.G_RET_STS_ERROR;
172       OKL_API.SET_MESSAGE(p_app_name 	 => g_app_name,
173                           p_msg_name	 => g_unexpected_error,
174                           p_token1	 => g_sqlcode_token,
175                           p_token1_value => sqlcode,
176 			  p_token2	 => g_sqlerrm_token,
177 			  p_token2_value => sqlerrm);
178     END IF;
179     CLOSE c_instance_no_ib;
180     RETURN x_return_status;
181   EXCEPTION
182     WHEN OTHERS THEN
183       IF c_instance_no_ib%ISOPEN THEN
184         CLOSE c_instance_no_ib;
185       END IF;
186       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
187       OKL_API.SET_MESSAGE(p_app_name 	 => g_app_name,
188                           p_msg_name	 => g_unexpected_error,
189                           p_token1	 => g_sqlcode_token,
190                           p_token1_value => sqlcode,
191 			  p_token2	 => g_sqlerrm_token,
192 			  p_token2_value => sqlerrm);
193     RETURN x_return_status;
194   END generate_instance_number_ib;
195 ---------------------------------------------------------------------------------------------------------------
196   FUNCTION generate_asset_number(x_asset_number OUT NOCOPY OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE)
197   RETURN VARCHAR2 IS
198     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
199     ln_dummy1                  NUMBER := 0;
200     ln_dummy2                  NUMBER := 0;
201     ln_dummy3                  NUMBER := 0;
202     lv_asset_number            OKX_ASSETS_V.ASSET_NUMBER%TYPE;
203     -- cursor to get sequence number for asset number
204     Cursor c_asset_no IS
205     select 'OKL'||OKL_FAN_SEQ.NEXTVAL
206     FROM dual;
207 
208     -- cursor to get check the existence of asset number
209     CURSOR c_txl_asset_number(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE)
210     IS
211     SELECT 1
212     --FROM DUAL
213     --WHERE EXISTS (SELECT '1'
214                   FROM OKL_TXL_ASSETS_B
215                   WHERE asset_number = p_asset_number; --);
216 
217     /*CURSOR c_okx_asset_lines_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
218     SELECT 1
219     --FROM DUAL
220     --WHERE EXISTS (SELECT '1'
221                   FROM OKX_ASSET_LINES_V
222                   WHERE asset_number = p_asset_number; --); */
223 
224     CURSOR c_okx_asset_lines_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
225     SELECT 1
226     FROM fa_additions a
227     WHERE a.asset_number = p_asset_number
228     and exists
229      (
230        select 1 from okc_k_items b
231        where b.jtot_object1_code = 'OKX_ASSET'
232        and   b.object1_id1 = to_char(a.asset_id)
233      );
234 
235 
236     CURSOR c_okx_assets_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
237     SELECT 1
238     --FROM DUAL
239     --WHERE EXISTS (SELECT '1'
240                   FROM OKX_ASSETS_V
241                   WHERE asset_number = p_asset_number; --);
242 
243   BEGIN
244     OPEN  c_asset_no;
245     FETCH c_asset_no INTO x_asset_number;
246     IF (c_asset_no%NOTFOUND) THEN
247       x_return_status := OKC_API.G_RET_STS_ERROR;
248       OKL_API.SET_MESSAGE(p_app_name 	   => g_app_name,
249                           p_msg_name	   => g_unexpected_error,
250                           p_token1	   => g_sqlcode_token,
251                           p_token1_value => sqlcode,
252            			      p_token2	   => g_sqlerrm_token,
253               			  p_token2_value => sqlerrm);
254     END IF;
255     CLOSE c_asset_no;
256 
257     LOOP
258       lv_asset_number := x_asset_number;
259 
260       OPEN  c_txl_asset_number(lv_asset_number);
261       FETCH c_txl_asset_number INTO ln_dummy1;
262       IF c_txl_asset_number%NOTFOUND THEN
263         ln_dummy1 := 0;
264       END IF;
265       CLOSE c_txl_asset_number;
266 
267       OPEN c_okx_asset_lines_v(lv_asset_number);
268       FETCH c_okx_asset_lines_v INTO ln_dummy2;
269       IF c_okx_asset_lines_v%NOTFOUND THEN
270         ln_dummy2 := 0;
271       END IF;
272       CLOSE c_okx_asset_lines_v;
273 
274       OPEN c_okx_assets_v(lv_asset_number);
275       FETCH c_okx_assets_v INTO ln_dummy3;
276       IF c_okx_assets_v%NOTFOUND THEN
277         ln_dummy3 := 0;
278       END IF;
279       CLOSE c_okx_assets_v;
280 
281       IF ln_dummy1 = 1 OR
282          ln_dummy2 = 1 OR
283          ln_dummy3 = 1 THEN
284         OPEN  c_asset_no;
285         FETCH c_asset_no INTO x_asset_number;
286         IF (c_asset_no%NOTFOUND) THEN
287           x_return_status := OKC_API.G_RET_STS_ERROR;
288           OKL_API.SET_MESSAGE(p_app_name 	   => g_app_name,
289                               p_msg_name	   => g_unexpected_error,
290                               p_token1	   => g_sqlcode_token,
291                               p_token1_value => sqlcode,
292            			          p_token2	   => g_sqlerrm_token,
293                  			  p_token2_value => sqlerrm);
294         END IF;
295         CLOSE c_asset_no;
296       ELSE
297         EXIT;
298       END IF;
299     END LOOP;
300 
301     RETURN x_return_status;
302   EXCEPTION
303     WHEN OTHERS THEN
304       IF c_asset_no%ISOPEN THEN
305         CLOSE c_asset_no;
306       END IF;
307       IF c_txl_asset_number%ISOPEN THEN
308         CLOSE c_txl_asset_number;
309       END IF;
310       IF c_okx_asset_lines_v%ISOPEN THEN
311         CLOSE c_okx_asset_lines_v;
312       END IF;
313       IF c_okx_assets_v%ISOPEN THEN
314         CLOSE c_okx_assets_v;
315       END IF;
316       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
317       OKL_API.SET_MESSAGE(p_app_name 	 => g_app_name,
318                           p_msg_name	 => g_unexpected_error,
319                           p_token1	     => g_sqlcode_token,
320                           p_token1_value => sqlcode,
321             			  p_token2	     => g_sqlerrm_token,
322             			  p_token2_value => sqlerrm);
323     RETURN x_return_status;
324   END generate_asset_number;
325 ----------------------------------------------------------------------------------------------------------
326   FUNCTION get_sts_code(p_dnz_chr_id IN  OKC_K_LINES_B.DNZ_CHR_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
327                         p_cle_id     IN  OKC_K_LINES_B.CLE_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
328                         x_sts_code   OUT NOCOPY OKC_K_HEADERS_B.STS_CODE%TYPE)
329   RETURN VARCHAR2 IS
330     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
331     CURSOR c_get_tls_sts_code(p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE) IS
332     SELECT chrv.sts_code
333     FROM OKC_K_HEADERS_V chrv
334     WHERE chrv.id = p_dnz_chr_id;
335 
336     CURSOR c_get_sls_sts_code(p_cle_id OKC_K_LINES_B.CLE_ID%TYPE) IS
337     SELECT cle.sts_code
338     FROM OKC_K_LINES_V cle
339     WHERE cle.id = p_cle_id;
340   BEGIN
341     -- Both p_dnz_chr_id and p_cle_id are not to be given
342     IF (p_dnz_chr_id IS NOT NULL OR
343        p_dnz_chr_id <> OKL_API.G_MISS_NUM) AND
344        (p_cle_id IS NOT NULL OR
345        p_cle_id <> OKL_API.G_MISS_NUM) THEN
346        -- store SQL error message on message stack
347        -- Notify Error
348        OKL_API.set_message(p_app_name     => G_APP_NAME,
349                            p_msg_name     => G_REQUIRED_VALUE,
350                            p_token1       => G_COL_NAME_TOKEN,
351                            p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID and CLE_ID');
352        RAISE G_EXCEPTION_STOP_VALIDATION;
353     END IF;
354     --  Getting the TOP Line STS CODE
355     IF (p_dnz_chr_id IS NOT NULL OR
356        p_dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
357        OPEN c_get_tls_sts_code(p_dnz_chr_id);
358        FETCH c_get_tls_sts_code INTO x_sts_code;
359        IF c_get_tls_sts_code%NOTFOUND THEN
360           -- store SQL error message on message stack
361           OKL_API.set_message(p_app_name     => G_APP_NAME,
362                               p_msg_name     => G_NO_MATCHING_RECORD,
363                               p_token1       => G_COL_NAME_TOKEN,
364                               p_token1_value => 'OKC_K_HEADERS_V.STS_CODE');
365           RAISE G_EXCEPTION_HALT_VALIDATION;
366        END IF;
367        CLOSE c_get_tls_sts_code;
368        IF (x_sts_code IS NULL OR
369           x_sts_code = OKL_API.G_MISS_CHAR) THEN
370          OKL_API.set_message(p_app_name     => G_APP_NAME,
371                              p_msg_name     => G_REQUIRED_VALUE,
372                              p_token1       => G_COL_NAME_TOKEN,
373                              p_token1_value => 'sts_code');
374           RAISE G_EXCEPTION_STOP_VALIDATION;
375        END IF;
376     END IF;
377     --  Getting the SUB Line STS CODE
378     IF (p_cle_id IS NOT NULL OR
379        p_cle_id <> OKL_API.G_MISS_NUM) THEN
380        OPEN c_get_sls_sts_code(p_cle_id);
381        FETCH c_get_sls_sts_code INTO x_sts_code;
382        IF c_get_sls_sts_code%NOTFOUND THEN
383           -- store SQL error message on message stack
384           OKL_API.set_message(p_app_name     => G_APP_NAME,
385                               p_msg_name     => G_NO_MATCHING_RECORD,
386                               p_token1       => G_COL_NAME_TOKEN,
387                               p_token1_value => 'OKC_K_HEADERS_V.STS_CODE');
388           RAISE G_EXCEPTION_HALT_VALIDATION;
389        END IF;
390        CLOSE c_get_sls_sts_code;
391        IF (x_sts_code IS NULL OR
392           x_sts_code = OKL_API.G_MISS_CHAR) THEN
393          OKL_API.set_message(p_app_name     => G_APP_NAME,
394                              p_msg_name     => G_REQUIRED_VALUE,
395                              p_token1       => G_COL_NAME_TOKEN,
396                              p_token1_value => 'sts_code');
397           RAISE G_EXCEPTION_STOP_VALIDATION;
398        END IF;
399     END IF;
400     RETURN x_return_status;
401   EXCEPTION
402     WHEN G_EXCEPTION_STOP_VALIDATION then
403     -- We are here since the field is required
404     x_return_status := OKL_API.G_RET_STS_ERROR;
405     WHEN G_EXCEPTION_HALT_VALIDATION then
406       -- We are here b'cause we have no parent record
407       -- If the cursor is open then it has to be closed
408      IF c_get_tls_sts_code%ISOPEN THEN
409         CLOSE c_get_tls_sts_code;
410      END IF;
411      -- if the cursor is open
412      IF c_get_sls_sts_code%ISOPEN THEN
413         CLOSE c_get_sls_sts_code;
414      END IF;
415      -- notify caller of an error
416      x_return_status := OKL_API.G_RET_STS_ERROR;
417     WHEN OTHERS THEN
418       -- store SQL error message on message stack for caller
419       OKL_API.set_message(G_APP_NAME,
420                           G_UNEXPECTED_ERROR,
421                           G_SQLCODE_TOKEN,
422                           SQLCODE,
423                           G_SQLERRM_TOKEN,
424                           SQLERRM);
425      -- notify caller of an UNEXPECTED error
426      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
427      -- if the cursor is open
428      IF c_get_tls_sts_code%ISOPEN THEN
429         CLOSE c_get_tls_sts_code;
430      END IF;
431      -- if the cursor is open
432      IF c_get_sls_sts_code%ISOPEN THEN
433         CLOSE c_get_sls_sts_code;
434      END IF;
435      RETURN(x_return_status);
436   END get_sts_code;
437 ----------------------------------------------------------------------------------------------------------------
438   FUNCTION get_end_date(p_dnz_chr_id IN  OKC_K_LINES_B.DNZ_CHR_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
439                         p_cle_id     IN  OKC_K_LINES_B.CLE_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
440                         x_end_date   OUT NOCOPY OKC_K_HEADERS_B.END_DATE%TYPE)
441   RETURN VARCHAR2 IS
442     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
443     CURSOR c_get_tls_end_date(p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE) IS
444     SELECT chrv.end_Date
445     FROM OKC_K_HEADERS_V chrv
446     WHERE chrv.id = p_dnz_chr_id;
447 
448     CURSOR c_get_sls_end_date(p_cle_id OKC_K_LINES_B.CLE_ID%TYPE) IS
449     SELECT cle.end_date
450     FROM OKC_K_LINES_V cle
451     WHERE cle.id = p_cle_id;
452   BEGIN
453     -- Both p_dnz_chr_id and p_cle_id are not to be given
454     IF (p_dnz_chr_id IS NOT NULL OR
455        p_dnz_chr_id <> OKL_API.G_MISS_NUM) AND
456        (p_cle_id IS NOT NULL OR
457        p_cle_id <> OKL_API.G_MISS_NUM) THEN
458        -- store SQL error message on message stack
459        -- Notify Error
460        OKL_API.set_message(p_app_name     => G_APP_NAME,
461                            p_msg_name     => G_REQUIRED_VALUE,
462                            p_token1       => G_COL_NAME_TOKEN,
463                            p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID and CLE_ID');
464        RAISE G_EXCEPTION_STOP_VALIDATION;
465     END IF;
466     --  Getting the TOP Line STS CODE
467     IF (p_dnz_chr_id IS NOT NULL OR
468        p_dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
469        OPEN c_get_tls_end_date(p_dnz_chr_id);
470        FETCH c_get_tls_end_date INTO x_end_date;
471        IF c_get_tls_end_date%NOTFOUND THEN
472           -- store SQL error message on message stack
473           OKL_API.set_message(p_app_name     => G_APP_NAME,
474                               p_msg_name     => G_NO_MATCHING_RECORD,
475                               p_token1       => G_COL_NAME_TOKEN,
476                               p_token1_value => 'OKC_K_HEADERS_V.END_DATE');
477           RAISE G_EXCEPTION_HALT_VALIDATION;
478        END IF;
479        CLOSE c_get_tls_end_date;
480     END IF;
481     --  Getting the SUB Line STS CODE
482     IF (p_cle_id IS NOT NULL OR
483        p_cle_id <> OKL_API.G_MISS_NUM) THEN
484        OPEN c_get_sls_end_date(p_cle_id);
485        FETCH c_get_sls_end_date INTO x_end_date;
486        IF c_get_sls_end_date%NOTFOUND THEN
487           -- store SQL error message on message stack
488           OKL_API.set_message(p_app_name     => G_APP_NAME,
489                               p_msg_name     => G_NO_MATCHING_RECORD,
490                               p_token1       => G_COL_NAME_TOKEN,
491                               p_token1_value => 'OKC_K_HEADERS_V.END_DATE');
492           RAISE G_EXCEPTION_HALT_VALIDATION;
493        END IF;
494        CLOSE c_get_sls_end_date;
495     END IF;
496     RETURN x_return_status;
497   EXCEPTION
498     WHEN G_EXCEPTION_STOP_VALIDATION then
499     -- We are here since the field is required
500     x_return_status := OKL_API.G_RET_STS_ERROR;
501     WHEN G_EXCEPTION_HALT_VALIDATION then
502       -- We are here b'cause we have no parent record
503       -- If the cursor is open then it has to be closed
504      IF c_get_tls_end_date%ISOPEN THEN
505         CLOSE c_get_tls_end_date;
506      END IF;
507      -- if the cursor is open
508      IF c_get_sls_end_date%ISOPEN THEN
509         CLOSE c_get_sls_end_date;
510      END IF;
511      -- notify caller of an error
512      x_return_status := OKL_API.G_RET_STS_ERROR;
513     WHEN OTHERS THEN
514       -- store SQL error message on message stack for caller
515       OKL_API.set_message(G_APP_NAME,
516                           G_UNEXPECTED_ERROR,
517                           G_SQLCODE_TOKEN,
518                           SQLCODE,
519                           G_SQLERRM_TOKEN,
520                           SQLERRM);
521      -- notify caller of an UNEXPECTED error
522      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
523      -- if the cursor is open
524      IF c_get_tls_end_date%ISOPEN THEN
525         CLOSE c_get_tls_end_date;
526      END IF;
527      -- if the cursor is open
528      IF c_get_sls_end_date%ISOPEN THEN
529         CLOSE c_get_sls_end_date;
530      END IF;
531      RETURN(x_return_status);
532   END get_end_date;
533 ----------------------------------------------------------------------------------------------------------------
534   FUNCTION get_start_date(p_dnz_chr_id IN  OKC_K_LINES_B.DNZ_CHR_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
535                         p_cle_id     IN  OKC_K_LINES_B.CLE_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
536                         x_start_date   OUT NOCOPY OKC_K_HEADERS_B.START_DATE%TYPE)
537   RETURN VARCHAR2 IS
538     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
539     lv_orig_sys_source_code    OKC_K_HEADERS_B.ORIG_SYSTEM_SOURCE_CODE%TYPE;
540     ln_orig_system_id1         OKC_K_HEADERS_B.ORIG_SYSTEM_ID1%TYPE;
541     ld_start_date              OKC_K_LINES_B.START_DATE%TYPE;
542     CURSOR c_get_tls_start_date(p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE) IS
543     SELECT chrv.start_Date,
544            chrv.orig_system_source_code,
545            chrv.orig_system_id1
546     FROM OKC_K_HEADERS_V chrv
547     WHERE chrv.id = p_dnz_chr_id;
548 
549     CURSOR c_get_sls_start_date(p_cle_id OKC_K_LINES_B.CLE_ID%TYPE) IS
550     SELECT cle.start_date
551     FROM OKC_K_LINES_V cle
552     WHERE cle.id = p_cle_id;
553 
554     CURSOR c_get_trx_date_trans_occ(p_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE) IS
555     SELECT date_transaction_occurred
556     FROM okl_trx_contracts
557     WHERE khr_id = p_chr_id
558     AND tcn_type = 'TRBK'
559     AND tsu_code = 'ENTERED'
560     --rkuttiya added for 12.1.1 Multi GAAP
561     AND representation_type = 'PRIMARY';
562     --
563   BEGIN
564     -- Both p_dnz_chr_id and p_cle_id are not to be given
565     IF (p_dnz_chr_id IS NOT NULL OR
566        p_dnz_chr_id <> OKL_API.G_MISS_NUM) AND
567        (p_cle_id IS NOT NULL OR
568        p_cle_id <> OKL_API.G_MISS_NUM) THEN
569        -- store SQL error message on message stack
570        -- Notify Error
571        OKL_API.set_message(p_app_name     => G_APP_NAME,
572                            p_msg_name     => G_REQUIRED_VALUE,
573                            p_token1       => G_COL_NAME_TOKEN,
574                            p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID and CLE_ID');
575        RAISE G_EXCEPTION_STOP_VALIDATION;
576     END IF;
577     --  Getting the TOP Line STS CODE
578     IF (p_dnz_chr_id IS NOT NULL OR
579        p_dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
580        OPEN c_get_tls_start_date(p_dnz_chr_id);
581        FETCH c_get_tls_start_date INTO x_start_date,
582                                        lv_orig_sys_source_code,
583                                        ln_orig_system_id1;
584        IF c_get_tls_start_date%NOTFOUND THEN
585           -- store SQL error message on message stack
586           OKL_API.set_message(p_app_name     => G_APP_NAME,
587                               p_msg_name     => G_NO_MATCHING_RECORD,
588                               p_token1       => G_COL_NAME_TOKEN,
589                               p_token1_value => 'OKC_K_HEADERS_V.START_DATE');
590           RAISE G_EXCEPTION_HALT_VALIDATION;
591        END IF;
592        CLOSE c_get_tls_start_date;
593        IF lv_orig_sys_source_code = 'OKL_REBOOK' THEN
594          OPEN  c_get_trx_date_trans_occ(p_chr_id => ln_orig_system_id1);
595          FETCH c_get_trx_date_trans_occ INTO ld_start_date;
596          CLOSE c_get_trx_date_trans_occ;
597          x_start_date :=  nvl(ld_start_date,sysdate);
598        END IF;
599     END IF;
600     --  Getting the SUB Line STS CODE
601     IF (p_cle_id IS NOT NULL OR
602        p_cle_id <> OKL_API.G_MISS_NUM) THEN
603        OPEN c_get_sls_start_date(p_cle_id);
604        FETCH c_get_sls_start_date INTO x_start_date;
605        IF c_get_sls_start_date%NOTFOUND THEN
606           -- store SQL error message on message stack
607           OKL_API.set_message(p_app_name     => G_APP_NAME,
608                               p_msg_name     => G_NO_MATCHING_RECORD,
609                               p_token1       => G_COL_NAME_TOKEN,
610                               p_token1_value => 'OKC_K_HEADERS_V.START_DATE');
611           RAISE G_EXCEPTION_HALT_VALIDATION;
612        END IF;
613        CLOSE c_get_sls_start_date;
614     END IF;
615     RETURN x_return_status;
616   EXCEPTION
617     WHEN G_EXCEPTION_STOP_VALIDATION then
618     -- We are here since the field is required
619     x_return_status := OKL_API.G_RET_STS_ERROR;
620     WHEN G_EXCEPTION_HALT_VALIDATION then
621       -- We are here b'cause we have no parent record
622       -- If the cursor is open then it has to be closed
623      IF c_get_tls_start_date%ISOPEN THEN
624         CLOSE c_get_tls_start_date;
625      END IF;
626      -- if the cursor is open
627      IF c_get_sls_start_date%ISOPEN THEN
628         CLOSE c_get_sls_start_date;
629      END IF;
630      -- notify caller of an error
631      x_return_status := OKL_API.G_RET_STS_ERROR;
632     WHEN OTHERS THEN
633       -- store SQL error message on message stack for caller
634       OKL_API.set_message(G_APP_NAME,
635                           G_UNEXPECTED_ERROR,
636                           G_SQLCODE_TOKEN,
637                           SQLCODE,
638                           G_SQLERRM_TOKEN,
639                           SQLERRM);
640      -- notify caller of an UNEXPECTED error
641      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
642      -- if the cursor is open
643      IF c_get_tls_start_date%ISOPEN THEN
644         CLOSE c_get_tls_start_date;
645      END IF;
646      -- if the cursor is open
647      IF c_get_sls_start_date%ISOPEN THEN
648         CLOSE c_get_sls_start_date;
649      END IF;
650      RETURN(x_return_status);
651   END get_start_date;
652 ----------------------------------------------------------------------------------------------------------------
653   FUNCTION get_currency_code(p_dnz_chr_id    IN  OKC_K_LINES_B.DNZ_CHR_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
654                              p_cle_id        IN  OKC_K_LINES_B.CLE_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
655                              x_currency_code OUT NOCOPY OKC_K_HEADERS_B.CURRENCY_CODE%TYPE)
656   RETURN VARCHAR2 IS
657     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
658     CURSOR c_get_tls_currency_code(p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE) IS
659     SELECT chrv.currency_code
660     FROM OKC_K_HEADERS_V chrv
661     WHERE chrv.id = p_dnz_chr_id;
662 
663     CURSOR c_get_sls_currency_code(p_cle_id OKC_K_LINES_B.CLE_ID%TYPE) IS
664     SELECT cle.currency_code
665     FROM OKC_K_LINES_V cle
666     WHERE cle.id = p_cle_id;
667   BEGIN
668     -- Both p_dnz_chr_id and p_cle_id are not to be given
669     IF (p_dnz_chr_id IS NOT NULL OR
670        p_dnz_chr_id <> OKL_API.G_MISS_NUM) AND
671        (p_cle_id IS NOT NULL OR
672        p_cle_id <> OKL_API.G_MISS_NUM) THEN
673        -- store SQL error message on message stack
674        -- Notify Error
675        OKL_API.set_message(p_app_name     => G_APP_NAME,
676                            p_msg_name     => G_REQUIRED_VALUE,
677                            p_token1       => G_COL_NAME_TOKEN,
678                            p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID and CLE_ID');
679        RAISE G_EXCEPTION_STOP_VALIDATION;
680     END IF;
681     --  Getting the TOP Line STS CODE
682     IF (p_dnz_chr_id IS NOT NULL OR
683        p_dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
684        OPEN c_get_tls_currency_code(p_dnz_chr_id);
685        FETCH c_get_tls_currency_code INTO x_currency_code;
686        IF c_get_tls_currency_code%NOTFOUND THEN
687           -- store SQL error message on message stack
688           OKL_API.set_message(p_app_name     => G_APP_NAME,
689                               p_msg_name     => G_NO_MATCHING_RECORD,
690                               p_token1       => G_COL_NAME_TOKEN,
691                               p_token1_value => 'OKC_K_HEADERS_V.CURRENCY_CODE');
692           RAISE G_EXCEPTION_HALT_VALIDATION;
693        END IF;
694        CLOSE c_get_tls_currency_code;
695     END IF;
696     --  Getting the SUB Line STS CODE
697     IF (p_cle_id IS NOT NULL OR
698        p_cle_id <> OKL_API.G_MISS_NUM) THEN
699        OPEN c_get_sls_currency_code(p_cle_id);
700        FETCH c_get_sls_currency_code INTO x_currency_code;
701        IF c_get_sls_currency_code%NOTFOUND THEN
702           -- store SQL error message on message stack
703           OKL_API.set_message(p_app_name     => G_APP_NAME,
704                               p_msg_name     => G_NO_MATCHING_RECORD,
705                               p_token1       => G_COL_NAME_TOKEN,
706                               p_token1_value => 'OKC_K_HEADERS_V.CURRENCY_CODE');
707           RAISE G_EXCEPTION_HALT_VALIDATION;
708        END IF;
709        CLOSE c_get_sls_currency_code;
710     END IF;
711     RETURN x_return_status;
712   EXCEPTION
713     WHEN G_EXCEPTION_STOP_VALIDATION then
714     -- We are here since the field is required
715     x_return_status := OKL_API.G_RET_STS_ERROR;
716     WHEN G_EXCEPTION_HALT_VALIDATION then
717       -- We are here b'cause we have no parent record
718       -- If the cursor is open then it has to be closed
719      IF c_get_tls_currency_code%ISOPEN THEN
720         CLOSE c_get_tls_currency_code;
721      END IF;
722      -- if the cursor is open
723      IF c_get_sls_currency_code%ISOPEN THEN
724         CLOSE c_get_sls_currency_code;
725      END IF;
726      -- notify caller of an error
727      x_return_status := OKL_API.G_RET_STS_ERROR;
728     WHEN OTHERS THEN
729       -- store SQL error message on message stack for caller
730       OKL_API.set_message(G_APP_NAME,
731                           G_UNEXPECTED_ERROR,
732                           G_SQLCODE_TOKEN,
733                           SQLCODE,
734                           G_SQLERRM_TOKEN,
735                           SQLERRM);
736      -- notify caller of an UNEXPECTED error
737      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
738      -- if the cursor is open
739      IF c_get_tls_currency_code%ISOPEN THEN
740         CLOSE c_get_tls_currency_code;
741      END IF;
742      -- if the cursor is open
743      IF c_get_sls_currency_code%ISOPEN THEN
744         CLOSE c_get_sls_currency_code;
745      END IF;
746      RETURN(x_return_status);
747   END get_currency_code;
748 ----------------------------------------------------------------------------------------------------------------
749 -- Start of Commnets
750 -- Ramesh Seela
751 -- Function Name        : default_contract_line_values
752 -- Description          : Default the values of start_date, end_date, sts_code, and currency_code on the line
753 -- Business Rules       :
754 -- Parameters           :
755 -- Version              :
756 -- End of Commnets
757 
758   FUNCTION default_contract_line_values(p_dnz_chr_id IN  OKC_K_LINES_B.DNZ_CHR_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
759                         p_cle_id     IN  OKC_K_LINES_B.CLE_ID%TYPE DEFAULT OKL_API.G_MISS_NUM,
760                         p_clev_rec   IN OUT  NOCOPY clev_rec_type)
761   RETURN VARCHAR2 IS
762     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
763     lv_orig_sys_source_code    OKC_K_HEADERS_B.ORIG_SYSTEM_SOURCE_CODE%TYPE;
764     ln_orig_system_id1         OKC_K_HEADERS_B.ORIG_SYSTEM_ID1%TYPE;
765     ld_start_date              OKC_K_LINES_B.START_DATE%TYPE;
766     ld_end_date                OKC_K_LINES_B.END_DATE%TYPE;
767     lv_currency_code           OKC_K_HEADERS_B.CURRENCY_CODE%TYPE;
768     lv_sts_code                OKC_K_HEADERS_B.STS_CODE%TYPE;
769 
770     CURSOR c_get_contract_header_details(p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE) IS
771     SELECT chrv.sts_code,
772            chrv.end_date,
773            chrv.currency_code,
774            chrv.start_Date,
775            chrv.orig_system_source_code,
776            chrv.orig_system_id1
777     FROM OKC_K_HEADERS_V chrv
778     WHERE chrv.id = p_dnz_chr_id;
779 
780     CURSOR c_get_contract_line_details(p_cle_id OKC_K_LINES_B.CLE_ID%TYPE) IS
781     SELECT cle.sts_code,
782            cle.end_date,
783            cle.currency_code,
784            cle.start_date
785     FROM OKC_K_LINES_V cle
786     WHERE cle.id = p_cle_id;
787 
788     CURSOR c_get_trx_date_trans_occ(p_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE) IS
789     SELECT date_transaction_occurred
790     FROM okl_trx_contracts
791     WHERE khr_id = p_chr_id
792     AND tcn_type = 'TRBK'
793     AND tsu_code = 'ENTERED'
794     --rkuttiya added for 12.1.1 Multi GAAP
795     AND representation_type = 'PRIMARY';
796     --
797   BEGIN
798     -- Both p_dnz_chr_id and p_cle_id are not to be given
799     IF (p_dnz_chr_id IS NOT NULL OR
800        p_dnz_chr_id <> OKL_API.G_MISS_NUM) AND
801        (p_cle_id IS NOT NULL OR
802        p_cle_id <> OKL_API.G_MISS_NUM) THEN
803        -- store SQL error message on message stack
804        -- Notify Error
805        OKL_API.set_message(p_app_name     => G_APP_NAME,
806                            p_msg_name     => G_REQUIRED_VALUE,
807                            p_token1       => G_COL_NAME_TOKEN,
808                            p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID and CLE_ID');
809        RAISE G_EXCEPTION_STOP_VALIDATION;
810     END IF;
811     --  Getting the TOP Line STS CODE
812     IF (p_dnz_chr_id IS NOT NULL OR
813        p_dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
814        OPEN c_get_contract_header_details(p_dnz_chr_id);
815        FETCH c_get_contract_header_details
816        INTO lv_sts_code,
817             ld_end_date,
818             lv_currency_code,
819             ld_start_date,
820             lv_orig_sys_source_code,
821             ln_orig_system_id1;
822        IF c_get_contract_header_details%NOTFOUND THEN
823           -- store SQL error message on message stack
824           OKL_API.set_message(p_app_name     => G_APP_NAME,
825                               p_msg_name     => G_NO_MATCHING_RECORD,
826                               p_token1       => G_COL_NAME_TOKEN,
827                               p_token1_value => 'OKC_K_HEADERS_V.START_DATE');
828           RAISE G_EXCEPTION_HALT_VALIDATION;
829        END IF;
830        CLOSE c_get_contract_header_details;
831        IF lv_orig_sys_source_code = 'OKL_REBOOK' THEN
832          OPEN  c_get_trx_date_trans_occ(p_chr_id => ln_orig_system_id1);
833          FETCH c_get_trx_date_trans_occ INTO ld_start_date;
834          CLOSE c_get_trx_date_trans_occ;
835          ld_start_date :=  nvl(ld_start_date,sysdate);
836        END IF;
837     END IF;
838     --  Getting the SUB Line STS CODE
839     IF (p_cle_id IS NOT NULL OR
840        p_cle_id <> OKL_API.G_MISS_NUM) THEN
841        OPEN c_get_contract_line_details(p_cle_id);
842        FETCH c_get_contract_line_details
843        INTO lv_sts_code,
844             ld_end_date,
845             lv_currency_code,
846             ld_start_date;
847        IF c_get_contract_line_details%NOTFOUND THEN
848           -- store SQL error message on message stack
849           OKL_API.set_message(p_app_name     => G_APP_NAME,
850                               p_msg_name     => G_NO_MATCHING_RECORD,
851                               p_token1       => G_COL_NAME_TOKEN,
852                               p_token1_value => 'OKC_K_HEADERS_V.START_DATE');
853           RAISE G_EXCEPTION_HALT_VALIDATION;
854        END IF;
855        CLOSE c_get_contract_line_details;
856     END IF;
857     IF (p_clev_rec.sts_code IS NULL OR
858         p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
859        p_clev_rec.sts_code := lv_sts_code;
860     END IF;
861     IF (p_clev_rec.end_date IS NULL OR
862         p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
863        p_clev_rec.end_date := ld_end_date;
864     END IF;
865     IF (p_clev_rec.start_date IS NULL OR
866         p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
867        p_clev_rec.start_date := ld_start_date;
868     END IF;
869     IF (p_clev_rec.currency_code IS NULL OR
870         p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
871        p_clev_rec.currency_code := lv_currency_code;
872     END IF;
873     RETURN x_return_status;
874   EXCEPTION
875     WHEN G_EXCEPTION_STOP_VALIDATION then
876     -- We are here since the field is required
877     x_return_status := OKL_API.G_RET_STS_ERROR;
878     WHEN G_EXCEPTION_HALT_VALIDATION then
879       -- We are here b'cause we have no parent record
880       -- If the cursor is open then it has to be closed
881      IF c_get_contract_header_details%ISOPEN THEN
882         CLOSE c_get_contract_header_details;
883      END IF;
884      -- if the cursor is open
885      IF c_get_contract_line_details%ISOPEN THEN
886         CLOSE c_get_contract_line_details;
887      END IF;
888      -- notify caller of an error
889      x_return_status := OKL_API.G_RET_STS_ERROR;
890     WHEN OTHERS THEN
891       -- store SQL error message on message stack for caller
892       OKL_API.set_message(G_APP_NAME,
893                           G_UNEXPECTED_ERROR,
894                           G_SQLCODE_TOKEN,
895                           SQLCODE,
896                           G_SQLERRM_TOKEN,
897                           SQLERRM);
898      -- notify caller of an UNEXPECTED error
899      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
900      -- if the cursor is open
901      IF c_get_contract_header_details%ISOPEN THEN
902         CLOSE c_get_contract_header_details;
903      END IF;
904      -- if the cursor is open
905      IF c_get_contract_line_details%ISOPEN THEN
906         CLOSE c_get_contract_line_details;
907      END IF;
908      RETURN(x_return_status);
909   END default_contract_line_values;
910 -------------------------------------------------------------------------------------------------
911   FUNCTION get_rec_txlv(p_txlv_id   IN  OKL_TXL_ASSETS_V.KLE_ID%TYPE,
912                         x_txlv_rec  OUT NOCOPY talv_rec_type)
913   RETURN VARCHAR2 IS
914     CURSOR okl_talv_pk_csr (p_kle_id  IN NUMBER) IS
915     SELECT ID,
916            OBJECT_VERSION_NUMBER,
917            SFWT_FLAG,
918            TAS_ID,
919            ILO_ID,
920            ILO_ID_OLD,
921            IAY_ID,
922            IAY_ID_NEW,
923            KLE_ID,
924            DNZ_KHR_ID,
925            LINE_NUMBER,
926            ORG_ID,
927            TAL_TYPE,
928            ASSET_NUMBER,
929            DESCRIPTION,
930            FA_LOCATION_ID,
931            ORIGINAL_COST,
932            CURRENT_UNITS,
933            MANUFACTURER_NAME,
934            YEAR_MANUFACTURED,
935            SUPPLIER_ID,
936            USED_ASSET_YN,
937            TAG_NUMBER,
938            MODEL_NUMBER,
939            CORPORATE_BOOK,
940            DATE_PURCHASED,
941            DATE_DELIVERY,
942            IN_SERVICE_DATE,
943            LIFE_IN_MONTHS,
944            DEPRECIATION_ID,
945            DEPRECIATION_COST,
946            DEPRN_METHOD,
947            DEPRN_RATE,
948            SALVAGE_VALUE,
949            PERCENT_SALVAGE_VALUE,
950 --Bug# 2981308
951            ASSET_KEY_ID,
952            ATTRIBUTE_CATEGORY,
953            ATTRIBUTE1,
954            ATTRIBUTE2,
955            ATTRIBUTE3,
956            ATTRIBUTE4,
957            ATTRIBUTE5,
958            ATTRIBUTE6,
959            ATTRIBUTE7,
960            ATTRIBUTE8,
961            ATTRIBUTE9,
962            ATTRIBUTE10,
963            ATTRIBUTE11,
964            ATTRIBUTE12,
965            ATTRIBUTE13,
966            ATTRIBUTE14,
967            ATTRIBUTE15,
968            CREATED_BY,
969            CREATION_DATE,
970            LAST_UPDATED_BY,
971            LAST_UPDATE_DATE,
972            LAST_UPDATE_LOGIN,
973            DEPRECIATE_YN,
974            HOLD_PERIOD_DAYS,
975            OLD_SALVAGE_VALUE,
976            NEW_RESIDUAL_VALUE,
977            OLD_RESIDUAL_VALUE,
978            UNITS_RETIRED,
979            COST_RETIRED,
980            SALE_PROCEEDS,
981            REMOVAL_COST,
982            DNZ_ASSET_ID,
983            DATE_DUE,
984            REP_ASSET_ID,
985            LKE_ASSET_ID,
986            MATCH_AMOUNT,
987            SPLIT_INTO_SINGLES_FLAG,
988            SPLIT_INTO_UNITS,
989            CURRENCY_CODE,
990            CURRENCY_CONVERSION_TYPE,
991            CURRENCY_CONVERSION_RATE,
992            CURRENCY_CONVERSION_DATE
993       FROM Okl_Txl_Assets_V
994      WHERE okl_txl_assets_v.kle_id  = p_kle_id;
995     l_okl_talv_pk                  okl_talv_pk_csr%ROWTYPE;
996     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
997   BEGIN
998     OPEN okl_talv_pk_csr (p_txlv_id);
999     FETCH okl_talv_pk_csr INTO
1000               x_txlv_rec.ID,
1001               x_txlv_rec.OBJECT_VERSION_NUMBER,
1002               x_txlv_rec.SFWT_FLAG,
1003               x_txlv_rec.TAS_ID,
1004               x_txlv_rec.ILO_ID,
1005               x_txlv_rec.ILO_ID_OLD,
1006               x_txlv_rec.IAY_ID,
1007               x_txlv_rec.IAY_ID_NEW,
1008               x_txlv_rec.KLE_ID,
1009               x_txlv_rec.DNZ_KHR_ID,
1010               x_txlv_rec.LINE_NUMBER,
1011               x_txlv_rec.ORG_ID,
1012               x_txlv_rec.TAL_TYPE,
1013               x_txlv_rec.ASSET_NUMBER,
1014               x_txlv_rec.DESCRIPTION,
1015               x_txlv_rec.FA_LOCATION_ID,
1016               x_txlv_rec.ORIGINAL_COST,
1017               x_txlv_rec.CURRENT_UNITS,
1018               x_txlv_rec.MANUFACTURER_NAME,
1019               x_txlv_rec.YEAR_MANUFACTURED,
1020               x_txlv_rec.SUPPLIER_ID,
1021               x_txlv_rec.USED_ASSET_YN,
1022               x_txlv_rec.TAG_NUMBER,
1023               x_txlv_rec.MODEL_NUMBER,
1024               x_txlv_rec.CORPORATE_BOOK,
1025               x_txlv_rec.DATE_PURCHASED,
1026               x_txlv_rec.DATE_DELIVERY,
1027               x_txlv_rec.IN_SERVICE_DATE,
1028               x_txlv_rec.LIFE_IN_MONTHS,
1029               x_txlv_rec.DEPRECIATION_ID,
1030               x_txlv_rec.DEPRECIATION_COST,
1031               x_txlv_rec.DEPRN_METHOD,
1032               x_txlv_rec.DEPRN_RATE,
1033               x_txlv_rec.SALVAGE_VALUE,
1034               x_txlv_rec.PERCENT_SALVAGE_VALUE,
1035 --Bug# 2981308
1036               x_txlv_rec.ASSET_KEY_ID,
1037               x_txlv_rec.ATTRIBUTE_CATEGORY,
1038               x_txlv_rec.ATTRIBUTE1,
1039               x_txlv_rec.ATTRIBUTE2,
1040               x_txlv_rec.ATTRIBUTE3,
1041               x_txlv_rec.ATTRIBUTE4,
1042               x_txlv_rec.ATTRIBUTE5,
1043               x_txlv_rec.ATTRIBUTE6,
1044               x_txlv_rec.ATTRIBUTE7,
1045               x_txlv_rec.ATTRIBUTE8,
1046               x_txlv_rec.ATTRIBUTE9,
1047               x_txlv_rec.ATTRIBUTE10,
1048               x_txlv_rec.ATTRIBUTE11,
1049               x_txlv_rec.ATTRIBUTE12,
1050               x_txlv_rec.ATTRIBUTE13,
1051               x_txlv_rec.ATTRIBUTE14,
1052               x_txlv_rec.ATTRIBUTE15,
1053               x_txlv_rec.CREATED_BY,
1054               x_txlv_rec.CREATION_DATE,
1055               x_txlv_rec.LAST_UPDATED_BY,
1056               x_txlv_rec.LAST_UPDATE_DATE,
1057               x_txlv_rec.LAST_UPDATE_LOGIN,
1058               x_txlv_rec.DEPRECIATE_YN,
1059               x_txlv_rec.HOLD_PERIOD_DAYS,
1060               x_txlv_rec.OLD_SALVAGE_VALUE,
1061               x_txlv_rec.NEW_RESIDUAL_VALUE,
1062               x_txlv_rec.OLD_RESIDUAL_VALUE,
1063               x_txlv_rec.UNITS_RETIRED,
1064               x_txlv_rec.COST_RETIRED,
1065               x_txlv_rec.SALE_PROCEEDS,
1066               x_txlv_rec.REMOVAL_COST,
1067               x_txlv_rec.DNZ_ASSET_ID,
1068               x_txlv_rec.DATE_DUE,
1069               x_txlv_rec.REP_ASSET_ID,
1070               x_txlv_rec.LKE_ASSET_ID,
1071               x_txlv_rec.MATCH_AMOUNT,
1072               x_txlv_rec.SPLIT_INTO_SINGLES_FLAG,
1073               x_txlv_rec.SPLIT_INTO_UNITS,
1074               x_txlv_rec.CURRENCY_CODE,
1075               x_txlv_rec.CURRENCY_CONVERSION_TYPE,
1076               x_txlv_rec.CURRENCY_CONVERSION_RATE,
1077               x_txlv_rec.CURRENCY_CONVERSION_DATE;
1078     IF okl_talv_pk_csr%NOTFOUND THEN
1079        x_return_status := OKL_API.G_RET_STS_ERROR;
1080     END IF;
1081     CLOSE okl_talv_pk_csr;
1082     RETURN(x_return_status);
1083   EXCEPTION
1084     WHEN OTHERS THEN
1085       -- store SQL error message on message stack for caller
1086       OKL_API.set_message(G_APP_NAME,
1087                           G_UNEXPECTED_ERROR,
1088                           G_SQLCODE_TOKEN,
1089                           SQLCODE,
1090                           G_SQLERRM_TOKEN,
1091                           SQLERRM);
1092      -- notify caller of an UNEXPECTED error
1093      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1094      -- if the cursor is open
1095      IF okl_talv_pk_csr%ISOPEN THEN
1096         CLOSE okl_talv_pk_csr;
1097      END IF;
1098      RETURN(x_return_status);
1099   END get_rec_txlv;
1100 ----------------------------------------------------------------------------
1101 -- Start of Commnets
1102 -- Badrinath Kuchibholta
1103 -- Function Name        : get_txdv_rec
1104 -- Description          : Get Transaction Detail Line Record
1105 -- Business Rules       :
1106 -- Parameters           :
1107 -- Version              :
1108 -- End of Commnets
1109   FUNCTION get_txdv_tbl(p_tal_id        IN NUMBER,
1110                         p_asset_number  IN OKL_TXL_ASSETS_B.ASSET_NUMBER%TYPE,
1111                         p_original_cost IN OKL_TXL_ASSETS_B.ORIGINAL_COST%TYPE,
1112                         x_to_update     OUT NOCOPY VARCHAR2,
1113                         x_txdv_tbl      OUT NOCOPY txdv_tbl_type)
1114   RETURN  VARCHAR2
1115   IS
1116     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1117     i                          NUMBER := 0;
1118     lv_to_update               VARCHAR2(3) := 'N';
1119     CURSOR c_okl_asdv_pk_csr (p_tal_id  IN NUMBER) IS
1120     SELECT id,
1121            object_version_number,
1122            tal_id,
1123            target_kle_id,
1124            line_detail_number,
1125            asset_number,
1126            description,
1127            quantity,
1128            cost,
1129            tax_book,
1130            life_in_months_tax,
1131            deprn_method_tax,
1132            deprn_rate_tax,
1133            salvage_value,
1134            attribute_category,
1135            attribute1,
1136            attribute2,
1137            attribute3,
1138            attribute4,
1139            attribute5,
1140            attribute6,
1141            attribute7,
1142            attribute8,
1143            attribute9,
1144            attribute10,
1145            attribute11,
1146            attribute12,
1147            attribute13,
1148            attribute14,
1149            attribute15,
1150            created_by,
1151            creation_date,
1152            last_updated_by,
1153            last_update_date,
1154            last_update_login,
1155            split_percent,
1156            inventory_item_id
1157     FROM Okl_Txd_Assets_V txd
1158     WHERE txd.tal_id  = p_tal_id;
1159   BEGIN
1160     FOR r_okl_asdv_pk_csr IN c_okl_asdv_pk_csr(p_tal_id) LOOP
1161         x_txdv_tbl(i).ID                     := r_okl_asdv_pk_csr.ID;
1162         x_txdv_tbl(i).OBJECT_VERSION_NUMBER  := r_okl_asdv_pk_csr.OBJECT_VERSION_NUMBER;
1163         x_txdv_tbl(i).TAL_ID                 := r_okl_asdv_pk_csr.TAL_ID;
1164         x_txdv_tbl(i).TARGET_KLE_ID          := r_okl_asdv_pk_csr.TARGET_KLE_ID;
1165         x_txdv_tbl(i).LINE_DETAIL_NUMBER     := r_okl_asdv_pk_csr.LINE_DETAIL_NUMBER;
1166         x_txdv_tbl(i).DESCRIPTION            := r_okl_asdv_pk_csr.DESCRIPTION;
1167         IF (p_asset_number <> r_okl_asdv_pk_csr.ASSET_NUMBER) OR
1168            (p_original_cost <> r_okl_asdv_pk_csr.COST) THEN
1169           x_txdv_tbl(i).COST                   := p_original_cost;
1170           x_txdv_tbl(i).ASSET_NUMBER           := p_asset_number;
1171           lv_to_update := 'Y';
1172         ELSE
1173           x_txdv_tbl(i).COST                   := r_okl_asdv_pk_csr.COST;
1174           x_txdv_tbl(i).ASSET_NUMBER           := r_okl_asdv_pk_csr.ASSET_NUMBER;
1175           lv_to_update := 'N';
1176         END IF;
1177         x_txdv_tbl(i).QUANTITY               := r_okl_asdv_pk_csr.QUANTITY;
1178         x_txdv_tbl(i).TAX_BOOK               := r_okl_asdv_pk_csr.TAX_BOOK;
1179         x_txdv_tbl(i).LIFE_IN_MONTHS_TAX     := r_okl_asdv_pk_csr.LIFE_IN_MONTHS_TAX;
1180         x_txdv_tbl(i).DEPRN_METHOD_TAX       := r_okl_asdv_pk_csr.DEPRN_METHOD_TAX;
1181         x_txdv_tbl(i).DEPRN_RATE_TAX         := r_okl_asdv_pk_csr.DEPRN_RATE_TAX;
1182         x_txdv_tbl(i).SALVAGE_VALUE          := r_okl_asdv_pk_csr.SALVAGE_VALUE;
1183         x_txdv_tbl(i).ATTRIBUTE_CATEGORY     := r_okl_asdv_pk_csr.ATTRIBUTE_CATEGORY;
1184         x_txdv_tbl(i).ATTRIBUTE1             := r_okl_asdv_pk_csr.ATTRIBUTE1;
1185         x_txdv_tbl(i).ATTRIBUTE2             := r_okl_asdv_pk_csr.ATTRIBUTE2;
1186         x_txdv_tbl(i).ATTRIBUTE3             := r_okl_asdv_pk_csr.ATTRIBUTE3;
1187         x_txdv_tbl(i).ATTRIBUTE4             := r_okl_asdv_pk_csr.ATTRIBUTE4;
1188         x_txdv_tbl(i).ATTRIBUTE5             := r_okl_asdv_pk_csr.ATTRIBUTE5;
1189         x_txdv_tbl(i).ATTRIBUTE6             := r_okl_asdv_pk_csr.ATTRIBUTE6;
1190         x_txdv_tbl(i).ATTRIBUTE7             := r_okl_asdv_pk_csr.ATTRIBUTE7;
1191         x_txdv_tbl(i).ATTRIBUTE8             := r_okl_asdv_pk_csr.ATTRIBUTE8;
1192         x_txdv_tbl(i).ATTRIBUTE9             := r_okl_asdv_pk_csr.ATTRIBUTE9;
1193         x_txdv_tbl(i).ATTRIBUTE10            := r_okl_asdv_pk_csr.ATTRIBUTE10;
1194         x_txdv_tbl(i).ATTRIBUTE11            := r_okl_asdv_pk_csr.ATTRIBUTE11;
1195         x_txdv_tbl(i).ATTRIBUTE12            := r_okl_asdv_pk_csr.ATTRIBUTE12;
1196         x_txdv_tbl(i).ATTRIBUTE13            := r_okl_asdv_pk_csr.ATTRIBUTE13;
1197         x_txdv_tbl(i).ATTRIBUTE14            := r_okl_asdv_pk_csr.ATTRIBUTE14;
1198         x_txdv_tbl(i).ATTRIBUTE15            := r_okl_asdv_pk_csr.ATTRIBUTE15;
1199         x_txdv_tbl(i).CREATED_BY             := r_okl_asdv_pk_csr.CREATED_BY;
1200         x_txdv_tbl(i).CREATION_DATE          := r_okl_asdv_pk_csr.CREATION_DATE;
1201         x_txdv_tbl(i).LAST_UPDATED_BY        := r_okl_asdv_pk_csr.LAST_UPDATED_BY;
1202         x_txdv_tbl(i).LAST_UPDATE_DATE       := r_okl_asdv_pk_csr.LAST_UPDATE_DATE;
1203         x_txdv_tbl(i).LAST_UPDATE_LOGIN      := r_okl_asdv_pk_csr.LAST_UPDATE_LOGIN;
1204         x_txdv_tbl(i).SPLIT_PERCENT          := r_okl_asdv_pk_csr.split_percent;
1205         x_txdv_tbl(i).INVENTORY_ITEM_ID      := r_okl_asdv_pk_csr.inventory_item_id;
1206         i := i + 1;
1207 --       IF c_okl_asdv_pk_csr%NOTFOUND THEN
1208 --          x_return_status := OKL_API.G_RET_STS_ERROR;
1209 --          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
1210 --       END IF;
1211     END LOOP;
1212     x_to_update := lv_to_update;
1213     RETURN(x_return_status);
1214   EXCEPTION
1215     WHEN OTHERS THEN
1216       -- store SQL error message on message stack for caller
1217       OKL_API.set_message(
1218               G_APP_NAME,
1219               G_UNEXPECTED_ERROR,
1220               G_SQLCODE_TOKEN,
1221               SQLCODE,
1222               G_SQLERRM_TOKEN,
1223               SQLERRM);
1224        IF c_okl_asdv_pk_csr%ISOPEN THEN
1225           CLOSE c_okl_asdv_pk_csr;
1226        END IF;
1227       -- notify caller of an UNEXPECTED error
1228       x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1229       return(x_return_status);
1230   END get_txdv_tbl;
1231 -----------------------------------------------------------------------------------------------
1232   FUNCTION get_rec_itiv(p_itiv_id   IN  OKL_TXL_ITM_INSTS_V.KLE_ID%TYPE,
1233                         x_itiv_rec  OUT NOCOPY itiv_rec_type)
1234   RETURN VARCHAR2 IS
1235 
1236     CURSOR okl_itiv_pk_csr (p_kle_id  IN NUMBER) IS
1237     SELECT ID,
1238            OBJECT_VERSION_NUMBER,
1239            TAS_ID,
1240            TAL_ID,
1241            KLE_ID,
1242            TAL_TYPE,
1243            LINE_NUMBER,
1244            INSTANCE_NUMBER_IB,
1245            OBJECT_ID1_NEW,
1246            OBJECT_ID2_NEW,
1247            JTOT_OBJECT_CODE_NEW,
1248            OBJECT_ID1_OLD,
1249            OBJECT_ID2_OLD,
1250            JTOT_OBJECT_CODE_OLD,
1251            INVENTORY_ORG_ID,
1252            SERIAL_NUMBER,
1253            MFG_SERIAL_NUMBER_YN,
1254            INVENTORY_ITEM_ID,
1255            INV_MASTER_ORG_ID,
1256            ATTRIBUTE_CATEGORY,
1257            ATTRIBUTE1,
1258            ATTRIBUTE2,
1259            ATTRIBUTE3,
1260            ATTRIBUTE4,
1261            ATTRIBUTE5,
1262            ATTRIBUTE6,
1263            ATTRIBUTE7,
1264            ATTRIBUTE8,
1265            ATTRIBUTE9,
1266            ATTRIBUTE10,
1267            ATTRIBUTE11,
1268            ATTRIBUTE12,
1269            ATTRIBUTE13,
1270            ATTRIBUTE14,
1271            ATTRIBUTE15,
1272            CREATED_BY,
1273            CREATION_DATE,
1274            LAST_UPDATED_BY,
1275            LAST_UPDATE_DATE,
1276            LAST_UPDATE_LOGIN
1277     FROM OKL_TXL_ITM_INSTS iti
1278     WHERE iti.kle_id  = p_kle_id;
1279     l_okl_itiv_pk                  okl_itiv_pk_csr%ROWTYPE;
1280     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1281   BEGIN
1282     OPEN okl_itiv_pk_csr (p_itiv_id);
1283     FETCH okl_itiv_pk_csr INTO
1284               x_itiv_rec.ID,
1285               x_itiv_rec.OBJECT_VERSION_NUMBER,
1286               x_itiv_rec.TAS_ID,
1287               x_itiv_rec.TAL_ID,
1288               x_itiv_rec.KLE_ID,
1289               x_itiv_rec.TAL_TYPE,
1290               x_itiv_rec.LINE_NUMBER,
1291               x_itiv_rec.INSTANCE_NUMBER_IB,
1292               x_itiv_rec.OBJECT_ID1_NEW,
1293               x_itiv_rec.OBJECT_ID2_NEW,
1294               x_itiv_rec.JTOT_OBJECT_CODE_NEW,
1295               x_itiv_rec.OBJECT_ID1_OLD,
1296               x_itiv_rec.OBJECT_ID2_OLD,
1297               x_itiv_rec.JTOT_OBJECT_CODE_OLD,
1298               x_itiv_rec.INVENTORY_ORG_ID,
1299               x_itiv_rec.SERIAL_NUMBER,
1300               x_itiv_rec.MFG_SERIAL_NUMBER_YN,
1301               x_itiv_rec.INVENTORY_ITEM_ID,
1302               x_itiv_rec.INV_MASTER_ORG_ID,
1303               x_itiv_rec.ATTRIBUTE_CATEGORY,
1304               x_itiv_rec.ATTRIBUTE1,
1305               x_itiv_rec.ATTRIBUTE2,
1306               x_itiv_rec.ATTRIBUTE3,
1307               x_itiv_rec.ATTRIBUTE4,
1308               x_itiv_rec.ATTRIBUTE5,
1309               x_itiv_rec.ATTRIBUTE6,
1310               x_itiv_rec.ATTRIBUTE7,
1311               x_itiv_rec.ATTRIBUTE8,
1312               x_itiv_rec.ATTRIBUTE9,
1313               x_itiv_rec.ATTRIBUTE10,
1314               x_itiv_rec.ATTRIBUTE11,
1315               x_itiv_rec.ATTRIBUTE12,
1316               x_itiv_rec.ATTRIBUTE13,
1317               x_itiv_rec.ATTRIBUTE14,
1318               x_itiv_rec.ATTRIBUTE15,
1319               x_itiv_rec.CREATED_BY,
1320               x_itiv_rec.CREATION_DATE,
1321               x_itiv_rec.LAST_UPDATED_BY,
1322               x_itiv_rec.LAST_UPDATE_DATE,
1323               x_itiv_rec.LAST_UPDATE_LOGIN;
1324     IF okl_itiv_pk_csr%NOTFOUND THEN
1325        x_return_status := OKL_API.G_RET_STS_ERROR;
1326     END IF;
1327     CLOSE okl_itiv_pk_csr;
1328     RETURN(x_return_status);
1329   EXCEPTION
1330     WHEN OTHERS THEN
1331       -- store SQL error message on message stack for caller
1332       OKL_API.set_message(G_APP_NAME,
1333                           G_UNEXPECTED_ERROR,
1334                           G_SQLCODE_TOKEN,
1335                           SQLCODE,
1336                           G_SQLERRM_TOKEN,
1337                           SQLERRM);
1338      -- notify caller of an UNEXPECTED error
1339      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1340      -- if the cursor is open
1341      IF okl_itiv_pk_csr%ISOPEN THEN
1342         CLOSE okl_itiv_pk_csr;
1343      END IF;
1344      RETURN(x_return_status);
1345   END get_rec_itiv;
1346 -----------------------------------------------------------------------------------------------------
1347   FUNCTION get_rec_cplv(p_cplv_id   IN  OKC_K_PARTY_ROLES_B.ID%TYPE,
1348                         x_cplv_rec  OUT NOCOPY cplv_rec_type)
1349   RETURN VARCHAR2 IS
1350   CURSOR okc_cplv_pk_csr (p_cplv_id  OKC_K_PARTY_ROLES_B.ID%TYPE) IS
1351   SELECT ID,
1352          OBJECT_VERSION_NUMBER,
1353          SFWT_FLAG,
1354          CPL_ID,
1355          CHR_ID,
1356          CLE_ID,
1357          RLE_CODE,
1358          DNZ_CHR_ID,
1359          OBJECT1_ID1,
1360          OBJECT1_ID2,
1361          JTOT_OBJECT1_CODE,
1362          COGNOMEN,
1363          CODE,
1364          FACILITY,
1365          MINORITY_GROUP_LOOKUP_CODE,
1366          SMALL_BUSINESS_FLAG,
1367          WOMEN_OWNED_FLAG,
1368          ALIAS,
1369          ATTRIBUTE_CATEGORY,
1370          ATTRIBUTE1,
1371          ATTRIBUTE2,
1372          ATTRIBUTE3,
1373          ATTRIBUTE4,
1374          ATTRIBUTE5,
1375          ATTRIBUTE6,
1376          ATTRIBUTE7,
1377          ATTRIBUTE8,
1378          ATTRIBUTE9,
1379          ATTRIBUTE10,
1380          ATTRIBUTE11,
1381          ATTRIBUTE12,
1382          ATTRIBUTE13,
1383          ATTRIBUTE14,
1384          ATTRIBUTE15,
1385          CREATED_BY,
1386          CREATION_DATE,
1387          LAST_UPDATED_BY,
1388          LAST_UPDATE_DATE,
1389          LAST_UPDATE_LOGIN
1390       FROM Okc_K_Party_Roles_V cpr
1391      WHERE cpr.id = p_cplv_id;
1392     l_okc_cplv_pk                  okc_cplv_pk_csr%ROWTYPE;
1393     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1394   BEGIN
1395     OPEN okc_cplv_pk_csr (p_cplv_id);
1396     FETCH okc_cplv_pk_csr INTO
1397               x_cplv_rec.ID,
1398               x_cplv_rec.OBJECT_VERSION_NUMBER,
1399               x_cplv_rec.SFWT_FLAG,
1400               x_cplv_rec.CPL_ID,
1401               x_cplv_rec.CHR_ID,
1402               x_cplv_rec.CLE_ID,
1403               x_cplv_rec.RLE_CODE,
1404               x_cplv_rec.DNZ_CHR_ID,
1405               x_cplv_rec.OBJECT1_ID1,
1406               x_cplv_rec.OBJECT1_ID2,
1407               x_cplv_rec.JTOT_OBJECT1_CODE,
1408               x_cplv_rec.COGNOMEN,
1409               x_cplv_rec.CODE,
1410               x_cplv_rec.FACILITY,
1411               x_cplv_rec.MINORITY_GROUP_LOOKUP_CODE,
1412               x_cplv_rec.SMALL_BUSINESS_FLAG,
1413               x_cplv_rec.WOMEN_OWNED_FLAG,
1414               x_cplv_rec.ALIAS,
1415               x_cplv_rec.ATTRIBUTE_CATEGORY,
1416               x_cplv_rec.ATTRIBUTE1,
1417               x_cplv_rec.ATTRIBUTE2,
1418               x_cplv_rec.ATTRIBUTE3,
1419               x_cplv_rec.ATTRIBUTE4,
1420               x_cplv_rec.ATTRIBUTE5,
1421               x_cplv_rec.ATTRIBUTE6,
1422               x_cplv_rec.ATTRIBUTE7,
1423               x_cplv_rec.ATTRIBUTE8,
1424               x_cplv_rec.ATTRIBUTE9,
1425               x_cplv_rec.ATTRIBUTE10,
1426               x_cplv_rec.ATTRIBUTE11,
1427               x_cplv_rec.ATTRIBUTE12,
1428               x_cplv_rec.ATTRIBUTE13,
1429               x_cplv_rec.ATTRIBUTE14,
1430               x_cplv_rec.ATTRIBUTE15,
1431               x_cplv_rec.CREATED_BY,
1432               x_cplv_rec.CREATION_DATE,
1433               x_cplv_rec.LAST_UPDATED_BY,
1434               x_cplv_rec.LAST_UPDATE_DATE,
1435               x_cplv_rec.LAST_UPDATE_LOGIN;
1436     IF okc_cplv_pk_csr%NOTFOUND THEN
1437        x_return_status := OKL_API.G_RET_STS_ERROR;
1438     END IF;
1439     CLOSE okc_cplv_pk_csr;
1440     RETURN(x_return_status);
1441   EXCEPTION
1442     WHEN OTHERS THEN
1443       -- store SQL error message on message stack for caller
1444       OKL_API.set_message(G_APP_NAME,
1445                           G_UNEXPECTED_ERROR,
1446                           G_SQLCODE_TOKEN,
1447                           SQLCODE,
1448                           G_SQLERRM_TOKEN,
1449                           SQLERRM);
1450      -- notify caller of an UNEXPECTED error
1451      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1452      -- if the cursor is open
1453      IF okc_cplv_pk_csr%ISOPEN THEN
1454         CLOSE okc_cplv_pk_csr;
1455      END IF;
1456      RETURN(x_return_status);
1457   END get_rec_cplv;
1458 --------------------------------------------------------------------------------------------------
1459   FUNCTION get_rec_ib_cimv(p_cle_id      IN  OKC_K_ITEMS_V.CLE_ID%TYPE,
1460                            p_dnz_chr_id  IN  OKC_K_ITEMS_V.DNZ_CHR_ID%TYPE,
1461                            x_cimv_rec OUT NOCOPY cimv_rec_type)
1462   RETURN VARCHAR2 IS
1463     CURSOR okc_cimv_pk_csr(p_cle_id     OKC_K_ITEMS_V.CLE_ID%TYPE,
1464                            p_dnz_chr_id OKC_K_ITEMS_V.DNZ_CHR_ID%TYPE) IS
1465     SELECT CIM.ID,
1466            CIM.OBJECT_VERSION_NUMBER,
1467            CIM.CLE_ID,
1468            CIM.CHR_ID,
1469            CIM.CLE_ID_FOR,
1470            CIM.DNZ_CHR_ID,
1471            CIM.OBJECT1_ID1,
1472            CIM.OBJECT1_ID2,
1473            CIM.JTOT_OBJECT1_CODE,
1474            CIM.UOM_CODE,
1475            CIM.EXCEPTION_YN,
1476            CIM.NUMBER_OF_ITEMS,
1477            CIM.UPG_ORIG_SYSTEM_REF,
1478            CIM.UPG_ORIG_SYSTEM_REF_ID,
1479            CIM.PRICED_ITEM_YN,
1480            CIM.CREATED_BY,
1481            CIM.CREATION_DATE,
1482            CIM.LAST_UPDATED_BY,
1483            CIM.LAST_UPDATE_DATE,
1484            CIM.LAST_UPDATE_LOGIN
1485     FROM okc_k_items_v cim,
1486     okc_k_lines_b cle,
1487     okc_line_styles_b lse,
1488     okc_k_lines_b cle1
1489     WHERE cim.dnz_chr_id = p_dnz_chr_id
1490     AND   cim.cle_id = cle.id
1491     AND   cle.lse_id = lse.id
1492     AND   lse.lty_code = 'ITEM'
1493     AND   cle.dnz_chr_id = p_dnz_chr_id --cim.dnz_chr_id
1494     AND   cle.cle_id = cle1.cle_id
1495     AND   cle1.id = p_cle_id
1496     AND   cle1.dnz_chr_id = p_dnz_chr_id; --cim.dnz_chr_id
1497 
1498     /*FROM okc_k_items_v cim
1499     WHERE cim.dnz_chr_id = p_dnz_chr_id
1500     AND cim.cle_id in (SELECT cle.id
1501                        FROM okc_k_lines_v cle,
1502                             okc_line_styles_v lse
1503                        WHERE cle.lse_id = lse.id
1504                        AND lse.lty_code = 'ITEM'
1505                        AND cle.dnz_chr_id = cim.dnz_chr_id
1506                        AND cle.cle_id in (SELECT cle1.cle_id
1507                                           FROM okc_k_lines_v cle1
1508                                           WHERE cle1.id = p_cle_id
1509                                           AND cle1.dnz_chr_id = cim.dnz_chr_id));*/
1510     l_okc_cimv_pk              okc_cimv_pk_csr%ROWTYPE;
1511     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1512   BEGIN
1513     OPEN okc_cimv_pk_csr(p_cle_id,
1514                          p_dnz_chr_id);
1515     FETCH okc_cimv_pk_csr INTO
1516               x_cimv_rec.ID,
1517               x_cimv_rec.OBJECT_VERSION_NUMBER,
1518               x_cimv_rec.CLE_ID,
1519               x_cimv_rec.CHR_ID,
1520               x_cimv_rec.CLE_ID_FOR,
1521               x_cimv_rec.DNZ_CHR_ID,
1522               x_cimv_rec.OBJECT1_ID1,
1523               x_cimv_rec.OBJECT1_ID2,
1524               x_cimv_rec.JTOT_OBJECT1_CODE,
1525               x_cimv_rec.UOM_CODE,
1526               x_cimv_rec.EXCEPTION_YN,
1527               x_cimv_rec.NUMBER_OF_ITEMS,
1528               x_cimv_rec.UPG_ORIG_SYSTEM_REF,
1529               x_cimv_rec.UPG_ORIG_SYSTEM_REF_ID,
1530               x_cimv_rec.PRICED_ITEM_YN,
1531               x_cimv_rec.CREATED_BY,
1532               x_cimv_rec.CREATION_DATE,
1533               x_cimv_rec.LAST_UPDATED_BY,
1534               x_cimv_rec.LAST_UPDATE_DATE,
1535               x_cimv_rec.LAST_UPDATE_LOGIN;
1536     IF okc_cimv_pk_csr%NOTFOUND THEN
1537        x_return_status := OKL_API.G_RET_STS_ERROR;
1538     END IF;
1539     IF (okc_cimv_pk_csr%ROWCOUNT > 1) THEN
1540        x_return_status := OKL_API.G_RET_STS_ERROR;
1541     END IF;
1542     CLOSE okc_cimv_pk_csr;
1543     RETURN(x_return_status);
1544   EXCEPTION
1545     WHEN OTHERS THEN
1546       -- store SQL error message on message stack for caller
1547       OKL_API.set_message(G_APP_NAME,
1548                           G_UNEXPECTED_ERROR,
1549                           G_SQLCODE_TOKEN,
1550                           SQLCODE,
1551                           G_SQLERRM_TOKEN,
1552                           SQLERRM);
1553      -- notify caller of an UNEXPECTED error
1554      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1555      -- if the cursor is open
1556      IF okc_cimv_pk_csr%ISOPEN THEN
1557         CLOSE okc_cimv_pk_csr;
1558      END IF;
1559      RETURN(x_return_status);
1560   END get_rec_ib_cimv;
1561 ----------------------------------------------------------------------------------------------------
1562   FUNCTION get_rec_cimv(p_cle_id      IN  OKC_K_ITEMS_V.CLE_ID%TYPE,
1563                         p_dnz_chr_id  IN  OKC_K_ITEMS_V.DNZ_CHR_ID%TYPE,
1564                         x_cimv_rec OUT NOCOPY cimv_rec_type)
1565   RETURN VARCHAR2 IS
1566     CURSOR okc_cimv_pk_csr(p_cle_id     OKC_K_ITEMS_V.CLE_ID%TYPE,
1567                            p_dnz_chr_id OKC_K_ITEMS_V.DNZ_CHR_ID%TYPE) IS
1568     SELECT CIM.ID,
1569            CIM.OBJECT_VERSION_NUMBER,
1570            CIM.CLE_ID,
1571            CIM.CHR_ID,
1572            CIM.CLE_ID_FOR,
1573            CIM.DNZ_CHR_ID,
1574            CIM.OBJECT1_ID1,
1575            CIM.OBJECT1_ID2,
1576            CIM.JTOT_OBJECT1_CODE,
1577            CIM.UOM_CODE,
1578            CIM.EXCEPTION_YN,
1579            CIM.NUMBER_OF_ITEMS,
1580            CIM.UPG_ORIG_SYSTEM_REF,
1581            CIM.UPG_ORIG_SYSTEM_REF_ID,
1582            CIM.PRICED_ITEM_YN,
1583            CIM.CREATED_BY,
1584            CIM.CREATION_DATE,
1585            CIM.LAST_UPDATED_BY,
1586            CIM.LAST_UPDATE_DATE,
1587            CIM.LAST_UPDATE_LOGIN
1588     FROM okc_k_items_v cim
1589     WHERE cim.dnz_chr_id = p_dnz_chr_id
1590     AND cim.cle_id = p_cle_id;
1591     l_okc_cimv_pk              okc_cimv_pk_csr%ROWTYPE;
1592     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1593   BEGIN
1594     OPEN okc_cimv_pk_csr(p_cle_id,
1595                          p_dnz_chr_id);
1596     FETCH okc_cimv_pk_csr INTO
1597               x_cimv_rec.ID,
1598               x_cimv_rec.OBJECT_VERSION_NUMBER,
1599               x_cimv_rec.CLE_ID,
1600               x_cimv_rec.CHR_ID,
1601               x_cimv_rec.CLE_ID_FOR,
1602               x_cimv_rec.DNZ_CHR_ID,
1603               x_cimv_rec.OBJECT1_ID1,
1604               x_cimv_rec.OBJECT1_ID2,
1605               x_cimv_rec.JTOT_OBJECT1_CODE,
1606               x_cimv_rec.UOM_CODE,
1607               x_cimv_rec.EXCEPTION_YN,
1608               x_cimv_rec.NUMBER_OF_ITEMS,
1609               x_cimv_rec.UPG_ORIG_SYSTEM_REF,
1610               x_cimv_rec.UPG_ORIG_SYSTEM_REF_ID,
1611               x_cimv_rec.PRICED_ITEM_YN,
1612               x_cimv_rec.CREATED_BY,
1613               x_cimv_rec.CREATION_DATE,
1614               x_cimv_rec.LAST_UPDATED_BY,
1615               x_cimv_rec.LAST_UPDATE_DATE,
1616               x_cimv_rec.LAST_UPDATE_LOGIN;
1617     IF okc_cimv_pk_csr%NOTFOUND THEN
1618        x_return_status := OKL_API.G_RET_STS_ERROR;
1619     END IF;
1620     IF (okc_cimv_pk_csr%ROWCOUNT > 1) THEN
1621        x_return_status := OKL_API.G_RET_STS_ERROR;
1622     END IF;
1623     CLOSE okc_cimv_pk_csr;
1624     RETURN(x_return_status);
1625   EXCEPTION
1626     WHEN OTHERS THEN
1627       -- store SQL error message on message stack for caller
1628       OKL_API.set_message(G_APP_NAME,
1629                           G_UNEXPECTED_ERROR,
1630                           G_SQLCODE_TOKEN,
1631                           SQLCODE,
1632                           G_SQLERRM_TOKEN,
1633                           SQLERRM);
1634      -- notify caller of an UNEXPECTED error
1635      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1636      -- if the cursor is open
1637      IF okc_cimv_pk_csr%ISOPEN THEN
1638         CLOSE okc_cimv_pk_csr;
1639      END IF;
1640      RETURN(x_return_status);
1641   END get_rec_cimv;
1642 -------------------------------------------------------------------------------------------------
1643   FUNCTION get_rec_update_cimv(p_cimv_id      IN  OKC_K_ITEMS_V.ID%TYPE,
1644                                x_cimv_rec OUT NOCOPY cimv_rec_type)
1645   RETURN VARCHAR2 IS
1646     CURSOR okc_cimv_pk_csr(p_cimv_id     OKC_K_ITEMS_V.ID%TYPE) IS
1647     SELECT  ID,
1648             OBJECT_VERSION_NUMBER,
1649             CLE_ID,
1650             CHR_ID,
1651             CLE_ID_FOR,
1652             DNZ_CHR_ID,
1653             OBJECT1_ID1,
1654             OBJECT1_ID2,
1655             JTOT_OBJECT1_CODE,
1656             UOM_CODE,
1657             EXCEPTION_YN,
1658             NUMBER_OF_ITEMS,
1659             UPG_ORIG_SYSTEM_REF,
1660             UPG_ORIG_SYSTEM_REF_ID,
1661             PRICED_ITEM_YN,
1662             CREATED_BY,
1663             CREATION_DATE,
1664             LAST_UPDATED_BY,
1665             LAST_UPDATE_DATE,
1666             LAST_UPDATE_LOGIN
1667       FROM okc_k_items_V cim
1668      WHERE cim.id = p_cimv_id;
1669     l_okc_cimv_pk              okc_cimv_pk_csr%ROWTYPE;
1670     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1671   BEGIN
1672     OPEN okc_cimv_pk_csr(p_cimv_id);
1673     FETCH okc_cimv_pk_csr INTO
1674               x_cimv_rec.ID,
1675               x_cimv_rec.OBJECT_VERSION_NUMBER,
1676               x_cimv_rec.CLE_ID,
1677               x_cimv_rec.CHR_ID,
1678               x_cimv_rec.CLE_ID_FOR,
1679               x_cimv_rec.DNZ_CHR_ID,
1680               x_cimv_rec.OBJECT1_ID1,
1681               x_cimv_rec.OBJECT1_ID2,
1682               x_cimv_rec.JTOT_OBJECT1_CODE,
1683               x_cimv_rec.UOM_CODE,
1684               x_cimv_rec.EXCEPTION_YN,
1685               x_cimv_rec.NUMBER_OF_ITEMS,
1686               x_cimv_rec.UPG_ORIG_SYSTEM_REF,
1687               x_cimv_rec.UPG_ORIG_SYSTEM_REF_ID,
1688               x_cimv_rec.PRICED_ITEM_YN,
1689               x_cimv_rec.CREATED_BY,
1690               x_cimv_rec.CREATION_DATE,
1691               x_cimv_rec.LAST_UPDATED_BY,
1692               x_cimv_rec.LAST_UPDATE_DATE,
1693               x_cimv_rec.LAST_UPDATE_LOGIN;
1694     IF okc_cimv_pk_csr%NOTFOUND THEN
1695        x_return_status := OKL_API.G_RET_STS_ERROR;
1696     END IF;
1697     CLOSE okc_cimv_pk_csr;
1698     RETURN(x_return_status);
1699   EXCEPTION
1700     WHEN OTHERS THEN
1701       -- store SQL error message on message stack for caller
1702       OKL_API.set_message(G_APP_NAME,
1703                           G_UNEXPECTED_ERROR,
1704                           G_SQLCODE_TOKEN,
1705                           SQLCODE,
1706                           G_SQLERRM_TOKEN,
1707                           SQLERRM);
1708      -- notify caller of an UNEXPECTED error
1709      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1710      -- if the cursor is open
1711      IF okc_cimv_pk_csr%ISOPEN THEN
1712         CLOSE okc_cimv_pk_csr;
1713      END IF;
1714      RETURN(x_return_status);
1715   END get_rec_update_cimv;
1716 ---------------------------------------------------------------------------------------------------------
1717   FUNCTION get_party_site_id(p_object_id1_new IN  OKL_TXL_ITM_INSTS_V.OBJECT_ID1_NEW%TYPE,
1718                              x_object_id1_new OUT NOCOPY OKL_TXL_ITM_INSTS_V.OBJECT_ID1_NEW%TYPE,
1719                              x_object_id2_new OUT NOCOPY OKL_TXL_ITM_INSTS_V.OBJECT_ID2_NEW%TYPE)
1720   RETURN VARCHAR2 IS
1721     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1722 
1723     CURSOR c_get_id1_id2(p_id1 OKL_TXL_ITM_INSTS_V.OBJECT_ID1_NEW%TYPE) IS
1724     SELECT id1
1725            ,id2
1726     FROM OKX_PARTY_SITE_USES_V
1727     WHERE id1 = p_id1
1728     AND id2 = G_ID2
1729     AND site_use_type = 'INSTALL_AT';
1730 
1731   BEGIN
1732     IF (p_object_id1_new IS NULL OR
1733        p_object_id1_new = OKL_API.G_MISS_NUM) THEN
1734       OKL_API.set_message(p_app_name     => G_APP_NAME,
1735                           p_msg_name     => G_REQUIRED_VALUE,
1736                           p_token1       => G_COL_NAME_TOKEN,
1737                           p_token1_value => 'OKX_PARTY_SITE_USES_V.ID1');
1738       RAISE G_EXCEPTION_HALT_VALIDATION;
1739     END IF;
1740     OPEN c_get_id1_id2(p_object_id1_new);
1741     FETCH c_get_id1_id2 INTO x_object_id1_new,
1742                              x_object_id2_new;
1743     IF c_get_id1_id2%NOTFOUND THEN
1744       OKL_API.set_message(p_app_name     => G_APP_NAME,
1745                           p_msg_name     => G_NO_MATCHING_RECORD,
1746                           p_token1       => G_COL_NAME_TOKEN,
1747                           p_token1_value => 'OKX_PARTY_SITE_USES_V.ID1 and ID2');
1748       RAISE G_EXCEPTION_HALT_VALIDATION;
1749     END IF;
1750     CLOSE c_get_id1_id2;
1751     IF (x_object_id1_new IS NULL OR
1752        x_object_id1_new = OKL_API.G_MISS_CHAR) AND
1753        (x_object_id2_new IS NULL OR
1754        x_object_id2_new = OKL_API.G_MISS_CHAR) THEN
1755       OKL_API.set_message(p_app_name     => G_APP_NAME,
1756                           p_msg_name     => G_NO_MATCHING_RECORD,
1757                           p_token1       => G_COL_NAME_TOKEN,
1758                           p_token1_value => 'OKX_PARTY_SITE_USES_V.ID1 and ID2');
1759       RAISE G_EXCEPTION_HALT_VALIDATION;
1760     ELSIF (x_object_id1_new IS NULL OR
1761        x_object_id1_new = OKL_API.G_MISS_CHAR) OR
1762        (x_object_id2_new IS NULL OR
1763        x_object_id2_new = OKL_API.G_MISS_CHAR) THEN
1764       OKL_API.set_message(p_app_name     => G_APP_NAME,
1765                           p_msg_name     => G_NO_MATCHING_RECORD,
1766                           p_token1       => G_COL_NAME_TOKEN,
1767                           p_token1_value => 'OKX_PARTY_SITE_USES_V.ID1 and ID2');
1768       RAISE G_EXCEPTION_HALT_VALIDATION;
1769     END IF;
1770     RETURN x_return_status;
1771   EXCEPTION
1772     WHEN G_EXCEPTION_HALT_VALIDATION then
1773     -- If the cursor is open then it has to be closed
1774     x_return_status := OKL_API.G_RET_STS_ERROR;
1775     IF c_get_id1_id2%ISOPEN THEN
1776        CLOSE c_get_id1_id2;
1777     END IF;
1778     RETURN(x_return_status);
1779     WHEN OTHERS THEN
1780       -- store SQL error message on message stack for caller
1781       OKL_API.set_message(G_APP_NAME,
1782                           G_UNEXPECTED_ERROR,
1783                           G_SQLCODE_TOKEN,
1784                           SQLCODE,
1785                           G_SQLERRM_TOKEN,
1786                           SQLERRM);
1787      -- notify caller of an UNEXPECTED error
1788      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1789      -- if the cursor is open
1790      IF c_get_id1_id2%ISOPEN THEN
1791         CLOSE c_get_id1_id2;
1792      END IF;
1793      RETURN(x_return_status);
1794   END get_party_site_id;
1795 ---------------------------------------------------------------------------------------------
1796   FUNCTION get_lse_id(p_lty_code  IN  OKC_LINE_STYLES_V.LTY_CODE%TYPE,
1797                       x_lse_id    OUT NOCOPY OKC_LINE_STYLES_V.ID%TYPE)
1798   RETURN VARCHAR2 IS
1799     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1800 
1801     CURSOR c_get_lse_id1(p_code OKC_LINE_STYLES_V.LTY_CODE%TYPE) IS
1802     SELECT lse.id
1803     FROM okc_subclass_top_line stl,
1804          okc_line_styles_b lse
1805     WHERE lse.lty_code = G_FIN_LINE_LTY_CODE
1806     AND lse.lse_parent_id is null
1807     AND lse.lse_type = G_TLS_TYPE
1808     AND lse.id = stl.lse_id
1809     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
1810 
1811     CURSOR c_get_lse_id2(p_code OKC_LINE_STYLES_V.LTY_CODE%TYPE) IS
1812     SELECT lse1.id
1813     FROM okc_subclass_top_line stl,
1814          okc_line_styles_b lse2,
1815          okc_line_styles_b lse1
1816     WHERE lse1.lty_code = p_code
1817     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
1818     AND lse1.lse_parent_id = lse2.id
1819     AND lse2.id = stl.lse_id
1820     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
1821 
1822     CURSOR c_get_lse_id3(p_code  OKC_LINE_STYLES_V.LTY_CODE%TYPE,
1823                          p_code2 OKC_LINE_STYLES_V.LTY_CODE%TYPE) IS
1824     SELECT lse1.id
1825     FROM okc_subclass_top_line stl,
1826          okc_line_styles_b lse3,
1827          okc_line_styles_b lse2,
1828          okc_line_styles_b lse1
1829     WHERE lse1.lty_code = p_code
1830     AND lse1.lse_parent_id = lse2.id
1831     AND lse2.lty_code = p_code2
1832     AND lse2.lse_parent_id = lse3.id
1833     AND lse3.lty_code = G_FIN_LINE_LTY_CODE
1834     AND lse3.id = stl.lse_id
1835     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
1836   BEGIN
1837     IF (p_lty_code IS NULL OR
1838        p_lty_code = OKL_API.G_MISS_CHAR) THEN
1839        OKL_API.set_message(p_app_name     => G_APP_NAME,
1840                            p_msg_name     => G_REQUIRED_VALUE,
1841                            p_token1       => G_COL_NAME_TOKEN,
1842                            p_token1_value => 'OKC_LINE_STYLES_V.LSE_TYPE');
1843        x_return_status := OKL_API.G_RET_STS_ERROR;
1844     END IF;
1845     -- Top Line Line Style
1846     IF p_lty_code = G_FIN_LINE_LTY_CODE THEN
1847       OPEN  c_get_lse_id1(p_lty_code);
1848       FETCH c_get_lse_id1 INTO x_lse_id;
1849       IF c_get_lse_id1%NOTFOUND THEN
1850         OKL_API.set_message(p_app_name     => G_APP_NAME,
1851                             p_msg_name     => G_NO_MATCHING_RECORD,
1852                             p_token1       => G_COL_NAME_TOKEN,
1853                             p_token1_value => 'OKC_LINE_STYLES_V.ID');
1854         x_return_status := OKL_API.G_RET_STS_ERROR;
1855       END IF;
1856       CLOSE c_get_lse_id1;
1857     -- Model Line, Fixed Asset line and Instance line
1858     ELSIF p_lty_code IN (G_MODEL_LINE_LTY_CODE,G_FA_LINE_LTY_CODE,G_INST_LINE_LTY_CODE) THEN
1859       OPEN c_get_lse_id2(p_lty_code);
1860       FETCH c_get_lse_id2 INTO x_lse_id;
1861       IF c_get_lse_id2%NOTFOUND THEN
1862         OKL_API.set_message(p_app_name     => G_APP_NAME,
1863                             p_msg_name     => G_NO_MATCHING_RECORD,
1864                             p_token1       => G_COL_NAME_TOKEN,
1865                             p_token1_value => 'OKC_LINE_STYLES_V.ID');
1866         x_return_status := OKL_API.G_RET_STS_ERROR;
1867       END IF;
1868       CLOSE c_get_lse_id2;
1869     -- Addon line and Install Base line
1870     ELSIF p_lty_code IN (G_IB_LINE_LTY_CODE,G_ADDON_LINE_LTY_CODE) THEN
1871       IF p_lty_code = G_IB_LINE_LTY_CODE THEN
1872         OPEN c_get_lse_id3(p_lty_code,
1873                            G_INST_LINE_LTY_CODE);
1874         FETCH c_get_lse_id3 INTO x_lse_id;
1875         IF c_get_lse_id3%NOTFOUND THEN
1876           OKL_API.set_message(p_app_name     => G_APP_NAME,
1877                               p_msg_name     => G_NO_MATCHING_RECORD,
1878                               p_token1       => G_COL_NAME_TOKEN,
1879                               p_token1_value => 'OKC_LINE_STYLES_V.ID');
1880           x_return_status := OKL_API.G_RET_STS_ERROR;
1881         END IF;
1882         CLOSE c_get_lse_id3;
1883       ELSIF p_lty_code = G_ADDON_LINE_LTY_CODE THEN
1884         OPEN c_get_lse_id3(p_lty_code,
1885                            G_MODEL_LINE_LTY_CODE);
1886         FETCH c_get_lse_id3 INTO x_lse_id;
1887         IF c_get_lse_id3%NOTFOUND THEN
1888           OKL_API.set_message(p_app_name     => G_APP_NAME,
1889                               p_msg_name     => G_NO_MATCHING_RECORD,
1890                               p_token1       => G_COL_NAME_TOKEN,
1891                               p_token1_value => 'OKC_LINE_STYLES_V.ID');
1892            x_return_status := OKL_API.G_RET_STS_ERROR;
1893         END IF;
1894         CLOSE c_get_lse_id3;
1895       END IF;
1896     ELSE
1897       x_return_status := OKL_API.G_RET_STS_ERROR;
1898     END IF;
1899     RETURN x_return_status;
1900   EXCEPTION
1901     WHEN OTHERS THEN
1902       -- store SQL error message on message stack for caller
1903       OKL_API.set_message(G_APP_NAME,
1904                           G_UNEXPECTED_ERROR,
1905                           G_SQLCODE_TOKEN,
1906                           SQLCODE,
1907                           G_SQLERRM_TOKEN,
1908                           SQLERRM);
1909      -- notify caller of an UNEXPECTED error
1910      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1911      -- if the cursor is open
1912      IF c_get_lse_id1%ISOPEN THEN
1913         CLOSE c_get_lse_id1;
1914      END IF;
1915      IF c_get_lse_id2%ISOPEN THEN
1916         CLOSE c_get_lse_id2;
1917      END IF;
1918      IF c_get_lse_id3%ISOPEN THEN
1919         CLOSE c_get_lse_id3;
1920      END IF;
1921      RETURN(x_return_status);
1922   END get_lse_id;
1923 --------------------------------------------------------------------------------------------------
1924   FUNCTION get_try_id(p_try_name  IN  OKL_TRX_TYPES_V.NAME%TYPE,
1925                       x_try_id    OUT NOCOPY OKC_LINE_STYLES_V.ID%TYPE)
1926   RETURN VARCHAR2 IS
1927     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
1928     CURSOR c_get_try_id(p_try_name  OKL_TRX_TYPES_V.NAME%TYPE) IS
1929     SELECT id
1930     FROM OKL_TRX_TYPES_tl
1931     WHERE upper(name) = upper(p_try_name)
1932     AND language = G_LANGUAGE;
1933   BEGIN
1934     IF (p_try_name = OKL_API.G_MISS_CHAR) OR
1935        (p_try_name IS NULL) THEN
1936        -- store SQL error message on message stack
1937        OKL_API.set_message(p_app_name     => G_APP_NAME,
1938                            p_msg_name     => G_REQUIRED_VALUE,
1939                            p_token1       => G_COL_NAME_TOKEN,
1940                            p_token1_value => 'OKL_TRX_TYPES_V.NAME');
1941        -- halt validation as it is a required field
1942        RAISE G_EXCEPTION_STOP_VALIDATION;
1943      END IF;
1944      OPEN c_get_try_id(p_try_name);
1945      FETCH c_get_try_id INTO x_try_id;
1946      IF c_get_try_id%NOTFOUND THEN
1947        OKL_API.set_message(p_app_name     => G_APP_NAME,
1948                            p_msg_name     => G_NO_MATCHING_RECORD,
1949                            p_token1       => G_COL_NAME_TOKEN,
1950                            p_token1_value => 'OKL_TRX_TYPES_V.ID');
1951        RAISE G_EXCEPTION_HALT_VALIDATION;
1952      END IF;
1953      CLOSE c_get_try_id;
1954      RETURN x_return_status;
1955   EXCEPTION
1956     WHEN G_EXCEPTION_STOP_VALIDATION then
1957     -- We are here since the field is required
1958     -- Notify Error
1959     x_return_status := OKL_API.G_RET_STS_ERROR;
1960     WHEN G_EXCEPTION_HALT_VALIDATION then
1961     -- We are here b'cause we have no parent record
1962     -- If the cursor is open then it has to be closed
1963      IF c_get_try_id%ISOPEN THEN
1964         CLOSE c_get_try_id;
1965      END IF;
1966     -- notify caller of an error
1967     x_return_status := OKL_API.G_RET_STS_ERROR;
1968     WHEN OTHERS THEN
1969       -- store SQL error message on message stack for caller
1970       OKL_API.set_message(G_APP_NAME,
1971                           G_UNEXPECTED_ERROR,
1972                           G_SQLCODE_TOKEN,
1973                           SQLCODE,
1974                           G_SQLERRM_TOKEN,
1975                           SQLERRM);
1976      -- notify caller of an UNEXPECTED error
1977      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1978      -- if the cursor is open
1979      IF c_get_try_id%ISOPEN THEN
1980         CLOSE c_get_try_id;
1981      END IF;
1982      RETURN(x_return_status);
1983   END get_try_id;
1984 ------------------------------------------------------------------------------------------------------
1985   FUNCTION get_rec_clev(p_id       IN OKC_K_LINES_V.ID%TYPE,
1986                         x_clev_rec OUT NOCOPY clev_rec_type)
1987   RETURN VARCHAR2 IS
1988     CURSOR okc_clev_pk_csr (p_cle_id NUMBER) IS
1989     SELECT ID,
1990            OBJECT_VERSION_NUMBER,
1991            SFWT_FLAG,
1992            CHR_ID,
1993            CLE_ID,
1994            LSE_ID,
1995            LINE_NUMBER,
1996            STS_CODE,
1997            DISPLAY_SEQUENCE,
1998            TRN_CODE,
1999            DNZ_CHR_ID,
2000            COMMENTS,
2001            ITEM_DESCRIPTION,
2002            OKE_BOE_DESCRIPTION,
2003            COGNOMEN,
2004            HIDDEN_IND,
2005            PRICE_UNIT,
2006            PRICE_UNIT_PERCENT,
2007            PRICE_NEGOTIATED,
2008            PRICE_NEGOTIATED_RENEWED,
2009            PRICE_LEVEL_IND,
2010            INVOICE_LINE_LEVEL_IND,
2011            DPAS_RATING,
2012            BLOCK23TEXT,
2013            EXCEPTION_YN,
2014            TEMPLATE_USED,
2015            DATE_TERMINATED,
2016            NAME,
2017            START_DATE,
2018            END_DATE,
2019            DATE_RENEWED,
2020            UPG_ORIG_SYSTEM_REF,
2021            UPG_ORIG_SYSTEM_REF_ID,
2022            ORIG_SYSTEM_SOURCE_CODE,
2023            ORIG_SYSTEM_ID1,
2024            ORIG_SYSTEM_REFERENCE1,
2025            REQUEST_ID,
2026            PROGRAM_APPLICATION_ID,
2027            PROGRAM_ID,
2028            PROGRAM_UPDATE_DATE,
2029            PRICE_LIST_ID,
2030            PRICING_DATE,
2031            PRICE_LIST_LINE_ID,
2032            LINE_LIST_PRICE,
2033            ITEM_TO_PRICE_YN,
2034            PRICE_BASIS_YN,
2035            CONFIG_HEADER_ID,
2036            CONFIG_REVISION_NUMBER,
2037            CONFIG_COMPLETE_YN,
2038            CONFIG_VALID_YN,
2039            CONFIG_TOP_MODEL_LINE_ID,
2040            CONFIG_ITEM_TYPE,
2041            CONFIG_ITEM_ID ,
2042            ATTRIBUTE_CATEGORY,
2043            ATTRIBUTE1,
2044            ATTRIBUTE2,
2045            ATTRIBUTE3,
2046            ATTRIBUTE4,
2047            ATTRIBUTE5,
2048            ATTRIBUTE6,
2049            ATTRIBUTE7,
2050            ATTRIBUTE8,
2051            ATTRIBUTE9,
2052            ATTRIBUTE10,
2053            ATTRIBUTE11,
2054            ATTRIBUTE12,
2055            ATTRIBUTE13,
2056            ATTRIBUTE14,
2057            ATTRIBUTE15,
2058            CREATED_BY,
2059            CREATION_DATE,
2060            LAST_UPDATED_BY,
2061            LAST_UPDATE_DATE,
2062            PRICE_TYPE,
2063            CURRENCY_CODE,
2064 	   CURRENCY_CODE_RENEWED,
2065            LAST_UPDATE_LOGIN
2066     FROM Okc_K_Lines_V
2067     WHERE okc_k_lines_v.id  = p_cle_id;
2068     l_okc_clev_pk              okc_clev_pk_csr%ROWTYPE;
2069     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
2070   BEGIN
2071     -- Get current database values
2072     OPEN okc_clev_pk_csr (p_id);
2073     FETCH okc_clev_pk_csr INTO
2074               x_clev_rec.ID,
2075               x_clev_rec.OBJECT_VERSION_NUMBER,
2076               x_clev_rec.SFWT_FLAG,
2077               x_clev_rec.CHR_ID,
2078               x_clev_rec.CLE_ID,
2079               x_clev_rec.LSE_ID,
2080               x_clev_rec.LINE_NUMBER,
2081               x_clev_rec.STS_CODE,
2082               x_clev_rec.DISPLAY_SEQUENCE,
2083               x_clev_rec.TRN_CODE,
2084               x_clev_rec.DNZ_CHR_ID,
2085               x_clev_rec.COMMENTS,
2086               x_clev_rec.ITEM_DESCRIPTION,
2087               x_clev_rec.OKE_BOE_DESCRIPTION,
2088 	      x_clev_rec.COGNOMEN,
2089               x_clev_rec.HIDDEN_IND,
2090 	      x_clev_rec.PRICE_UNIT,
2091 	      x_clev_rec.PRICE_UNIT_PERCENT,
2092               x_clev_rec.PRICE_NEGOTIATED,
2093 	      x_clev_rec.PRICE_NEGOTIATED_RENEWED,
2094               x_clev_rec.PRICE_LEVEL_IND,
2095               x_clev_rec.INVOICE_LINE_LEVEL_IND,
2096               x_clev_rec.DPAS_RATING,
2097               x_clev_rec.BLOCK23TEXT,
2098               x_clev_rec.EXCEPTION_YN,
2099               x_clev_rec.TEMPLATE_USED,
2100               x_clev_rec.DATE_TERMINATED,
2101               x_clev_rec.NAME,
2102               x_clev_rec.START_DATE,
2103               x_clev_rec.END_DATE,
2104 	      x_clev_rec.DATE_RENEWED,
2105               x_clev_rec.UPG_ORIG_SYSTEM_REF,
2106               x_clev_rec.UPG_ORIG_SYSTEM_REF_ID,
2107               x_clev_rec.ORIG_SYSTEM_SOURCE_CODE,
2108               x_clev_rec.ORIG_SYSTEM_ID1,
2109               x_clev_rec.ORIG_SYSTEM_REFERENCE1,
2110               x_clev_rec.request_id,
2111               x_clev_rec.program_application_id,
2112               x_clev_rec.program_id,
2113               x_clev_rec.program_update_date,
2114               x_clev_rec.price_list_id,
2115               x_clev_rec.pricing_date,
2116               x_clev_rec.price_list_line_id,
2117               x_clev_rec.line_list_price,
2118               x_clev_rec.item_to_price_yn,
2119               x_clev_rec.price_basis_yn,
2120               x_clev_rec.config_header_id,
2121               x_clev_rec.config_revision_number,
2122               x_clev_rec.config_complete_yn,
2123               x_clev_rec.config_valid_yn,
2124               x_clev_rec.config_top_model_line_id,
2125               x_clev_rec.config_item_type,
2126               x_clev_rec.CONFIG_ITEM_ID ,
2127               x_clev_rec.ATTRIBUTE_CATEGORY,
2128               x_clev_rec.ATTRIBUTE1,
2129               x_clev_rec.ATTRIBUTE2,
2130               x_clev_rec.ATTRIBUTE3,
2131               x_clev_rec.ATTRIBUTE4,
2132               x_clev_rec.ATTRIBUTE5,
2133               x_clev_rec.ATTRIBUTE6,
2134               x_clev_rec.ATTRIBUTE7,
2135               x_clev_rec.ATTRIBUTE8,
2136               x_clev_rec.ATTRIBUTE9,
2137               x_clev_rec.ATTRIBUTE10,
2138               x_clev_rec.ATTRIBUTE11,
2139               x_clev_rec.ATTRIBUTE12,
2140               x_clev_rec.ATTRIBUTE13,
2141               x_clev_rec.ATTRIBUTE14,
2142               x_clev_rec.ATTRIBUTE15,
2143               x_clev_rec.CREATED_BY,
2144               x_clev_rec.CREATION_DATE,
2145               x_clev_rec.LAST_UPDATED_BY,
2146               x_clev_rec.LAST_UPDATE_DATE,
2147               x_clev_rec.PRICE_TYPE,
2148               x_clev_rec.CURRENCY_CODE,
2149 	      x_clev_rec.CURRENCY_CODE_RENEWED,
2150               x_clev_rec.LAST_UPDATE_LOGIN;
2151     IF  okc_clev_pk_csr%NOTFOUND THEN
2152         x_return_status := OKL_API.G_RET_STS_ERROR;
2153     END IF;
2154     CLOSE okc_clev_pk_csr;
2155     RETURN(x_return_status);
2156   EXCEPTION
2157     WHEN OTHERS THEN
2158       -- store SQL error message on message stack for caller
2159       OKL_API.set_message(G_APP_NAME,
2160                           G_UNEXPECTED_ERROR,
2161                           G_SQLCODE_TOKEN,
2162                           SQLCODE,
2163                           G_SQLERRM_TOKEN,
2164                           SQLERRM);
2165      -- notify caller of an UNEXPECTED error
2166      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2167      -- if the cursor is open
2168      IF okc_clev_pk_csr%ISOPEN THEN
2169         CLOSE okc_clev_pk_csr;
2170      END IF;
2171      RETURN(x_return_status);
2172   END get_rec_clev;
2173 -----------------------------------------------------------------------------------------------
2174   FUNCTION get_rec_klev(p_id       IN  OKL_K_LINES_V.ID%TYPE,
2175                         x_klev_rec OUT NOCOPY klev_rec_type)
2176   RETURN VARCHAR2 IS
2177     CURSOR okl_k_lines_v_pk_csr (p_kle_id  OKL_K_LINES_V.ID%TYPE) IS
2178       SELECT ID,
2179              OBJECT_VERSION_NUMBER,
2180              KLE_ID,
2181              STY_ID,
2182              PRC_CODE,
2183              FCG_CODE,
2184              NTY_CODE,
2185              ESTIMATED_OEC,
2186              LAO_AMOUNT,
2187              TITLE_DATE,
2188              FEE_CHARGE,
2189              LRS_PERCENT,
2190              INITIAL_DIRECT_COST,
2191              PERCENT_STAKE,
2192              PERCENT,
2193              EVERGREEN_PERCENT,
2194              AMOUNT_STAKE,
2195              OCCUPANCY,
2196              COVERAGE,
2197              RESIDUAL_PERCENTAGE,
2198              DATE_LAST_INSPECTION,
2199              DATE_SOLD,
2200              LRV_AMOUNT,
2201              CAPITAL_REDUCTION,
2202              DATE_NEXT_INSPECTION_DUE,
2203              DATE_RESIDUAL_LAST_REVIEW,
2204              DATE_LAST_REAMORTISATION,
2205              VENDOR_ADVANCE_PAID,
2206              WEIGHTED_AVERAGE_LIFE,
2207              TRADEIN_AMOUNT,
2208              BOND_EQUIVALENT_YIELD,
2209              TERMINATION_PURCHASE_AMOUNT,
2210              REFINANCE_AMOUNT,
2211              YEAR_BUILT,
2212              DELIVERED_DATE,
2213              CREDIT_TENANT_YN,
2214              DATE_LAST_CLEANUP,
2215              YEAR_OF_MANUFACTURE,
2216              COVERAGE_RATIO,
2217              REMARKETED_AMOUNT,
2218              GROSS_SQUARE_FOOTAGE,
2219              PRESCRIBED_ASSET_YN,
2220              DATE_REMARKETED,
2221              NET_RENTABLE,
2222              REMARKET_MARGIN,
2223              DATE_LETTER_ACCEPTANCE,
2224              REPURCHASED_AMOUNT,
2225              DATE_COMMITMENT_EXPIRATION,
2226              DATE_REPURCHASED,
2227              DATE_APPRAISAL,
2228              RESIDUAL_VALUE,
2229              APPRAISAL_VALUE,
2230              SECURED_DEAL_YN,
2231              GAIN_LOSS,
2232              FLOOR_AMOUNT,
2233              RE_LEASE_YN,
2234              PREVIOUS_CONTRACT,
2235              TRACKED_RESIDUAL,
2236              DATE_TITLE_RECEIVED,
2237              AMOUNT,
2238              ATTRIBUTE_CATEGORY,
2239              ATTRIBUTE1,
2240              ATTRIBUTE2,
2241              ATTRIBUTE3,
2242              ATTRIBUTE4,
2243              ATTRIBUTE5,
2244              ATTRIBUTE6,
2245              ATTRIBUTE7,
2246              ATTRIBUTE8,
2247              ATTRIBUTE9,
2248              ATTRIBUTE10,
2249              ATTRIBUTE11,
2250              ATTRIBUTE12,
2251              ATTRIBUTE13,
2252              ATTRIBUTE14,
2253              ATTRIBUTE15,
2254              STY_ID_FOR,
2255              CLG_ID,
2256              CREATED_BY,
2257              CREATION_DATE,
2258              LAST_UPDATED_BY,
2259              LAST_UPDATE_DATE,
2260              LAST_UPDATE_LOGIN,
2261              DATE_FUNDING,
2262              DATE_FUNDING_REQUIRED,
2263              DATE_ACCEPTED,
2264              DATE_DELIVERY_EXPECTED,
2265              OEC,
2266              CAPITAL_AMOUNT,
2267              RESIDUAL_GRNTY_AMOUNT,
2268              RESIDUAL_CODE,
2269              RVI_PREMIUM,
2270              CREDIT_NATURE,
2271              CAPITALIZED_INTEREST,
2272              CAPITAL_REDUCTION_PERCENT,
2273              DATE_PAY_INVESTOR_START,
2274              PAY_INVESTOR_FREQUENCY,
2275              PAY_INVESTOR_EVENT,
2276              PAY_INVESTOR_REMITTANCE_DAYS,
2277              FEE_TYPE,
2278              SUBSIDY_ID,
2279 /* subsidy columns removed later, 09/26/2003
2280              SUBSIDIZED_OEC,
2281              SUBSIDIZED_CAP_AMOUNT,
2282 */
2283              PRE_TAX_YIELD,
2284              AFTER_TAX_YIELD,
2285              IMPLICIT_INTEREST_RATE,
2286              IMPLICIT_NON_IDC_INTEREST_RATE,
2287              PRE_TAX_IRR,
2288              AFTER_TAX_IRR,
2289              SUBSIDY_OVERRIDE_AMOUNT,
2290              SUB_PRE_TAX_YIELD,
2291              SUB_AFTER_TAX_YIELD,
2292              SUB_IMPL_INTEREST_RATE,
2293              SUB_IMPL_NON_IDC_INT_RATE,
2294              SUB_PRE_TAX_IRR,
2295              SUB_AFTER_TAX_IRR,
2296 --Bug# 2994971 :
2297              ITEM_INSURANCE_CATEGORY,
2298              --Bug# 3973640: 11.5.10 Schema changes
2299              QTE_ID,
2300              FUNDING_DATE,
2301              STREAM_TYPE_SUBCLASS
2302 -- ramurt Bug#4552772
2303              ,FEE_PURPOSE_CODE
2304 --Bug# 4631549
2305    ,EXPECTED_ASSET_COST
2306 --Bug# 5192636
2307    ,DOWN_PAYMENT_RECEIVER_CODE
2308    ,CAPITALIZE_DOWN_PAYMENT_YN
2309    --start NISINHA bug # 6490572
2310    ,MODEL_NUMBER
2311    ,MANUFACTURER_NAME
2312    --end NISINHA bug # 6490572
2313    FROM OKL_K_LINES_V
2314     WHERE OKL_K_LINES_V.id     = p_kle_id;
2315     l_okl_k_lines_v_pk         okl_k_lines_v_pk_csr%ROWTYPE;
2316     x_return_status            VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
2317   BEGIN
2318     -- Get current database values
2319     OPEN okl_k_lines_v_pk_csr (p_id);
2320     FETCH okl_k_lines_v_pk_csr INTO
2321         x_klev_rec.ID,
2322         x_klev_rec.OBJECT_VERSION_NUMBER,
2323         x_klev_rec.KLE_ID,
2324         x_klev_rec.STY_ID,
2325         x_klev_rec.PRC_CODE,
2326         x_klev_rec.FCG_CODE,
2327         x_klev_rec.NTY_CODE,
2328         x_klev_rec.ESTIMATED_OEC,
2329         x_klev_rec.LAO_AMOUNT,
2330         x_klev_rec.TITLE_DATE,
2331         x_klev_rec.FEE_CHARGE,
2332         x_klev_rec.LRS_PERCENT,
2333         x_klev_rec.INITIAL_DIRECT_COST,
2334         x_klev_rec.PERCENT_STAKE,
2335         x_klev_rec.PERCENT,
2336         x_klev_rec.EVERGREEN_PERCENT,
2337         x_klev_rec.AMOUNT_STAKE,
2338         x_klev_rec.OCCUPANCY,
2339         x_klev_rec.COVERAGE,
2340         x_klev_rec.RESIDUAL_PERCENTAGE,
2341         x_klev_rec.DATE_LAST_INSPECTION,
2342         x_klev_rec.DATE_SOLD,
2343         x_klev_rec.LRV_AMOUNT,
2344         x_klev_rec.CAPITAL_REDUCTION,
2345         x_klev_rec.DATE_NEXT_INSPECTION_DUE,
2346         x_klev_rec.DATE_RESIDUAL_LAST_REVIEW,
2347         x_klev_rec.DATE_LAST_REAMORTISATION,
2348         x_klev_rec.VENDOR_ADVANCE_PAID,
2349         x_klev_rec.WEIGHTED_AVERAGE_LIFE,
2350         x_klev_rec.TRADEIN_AMOUNT,
2351         x_klev_rec.BOND_EQUIVALENT_YIELD,
2352         x_klev_rec.TERMINATION_PURCHASE_AMOUNT,
2353         x_klev_rec.REFINANCE_AMOUNT,
2354         x_klev_rec.YEAR_BUILT,
2355         x_klev_rec.DELIVERED_DATE,
2356         x_klev_rec.CREDIT_TENANT_YN,
2357         x_klev_rec.DATE_LAST_CLEANUP,
2358         x_klev_rec.YEAR_OF_MANUFACTURE,
2359         x_klev_rec.COVERAGE_RATIO,
2360         x_klev_rec.REMARKETED_AMOUNT,
2361         x_klev_rec.GROSS_SQUARE_FOOTAGE,
2362         x_klev_rec.PRESCRIBED_ASSET_YN,
2363         x_klev_rec.DATE_REMARKETED,
2364         x_klev_rec.NET_RENTABLE,
2365         x_klev_rec.REMARKET_MARGIN,
2366         x_klev_rec.DATE_LETTER_ACCEPTANCE,
2367         x_klev_rec.REPURCHASED_AMOUNT,
2368         x_klev_rec.DATE_COMMITMENT_EXPIRATION,
2369         x_klev_rec.DATE_REPURCHASED,
2370         x_klev_rec.DATE_APPRAISAL,
2371         x_klev_rec.RESIDUAL_VALUE,
2372         x_klev_rec.APPRAISAL_VALUE,
2373         x_klev_rec.SECURED_DEAL_YN,
2374         x_klev_rec.GAIN_LOSS,
2375         x_klev_rec.FLOOR_AMOUNT,
2376         x_klev_rec.RE_LEASE_YN,
2377         x_klev_rec.PREVIOUS_CONTRACT,
2378         x_klev_rec.TRACKED_RESIDUAL,
2379         x_klev_rec.DATE_TITLE_RECEIVED,
2380         x_klev_rec.AMOUNT,
2381         x_klev_rec.ATTRIBUTE_CATEGORY,
2382         x_klev_rec.ATTRIBUTE1,
2383         x_klev_rec.ATTRIBUTE2,
2384         x_klev_rec.ATTRIBUTE3,
2385         x_klev_rec.ATTRIBUTE4,
2386         x_klev_rec.ATTRIBUTE5,
2387         x_klev_rec.ATTRIBUTE6,
2388         x_klev_rec.ATTRIBUTE7,
2389         x_klev_rec.ATTRIBUTE8,
2390         x_klev_rec.ATTRIBUTE9,
2391         x_klev_rec.ATTRIBUTE10,
2392         x_klev_rec.ATTRIBUTE11,
2393         x_klev_rec.ATTRIBUTE12,
2394         x_klev_rec.ATTRIBUTE13,
2395         x_klev_rec.ATTRIBUTE14,
2396         x_klev_rec.ATTRIBUTE15,
2397         x_klev_rec.STY_ID_FOR,
2398         x_klev_rec.CLG_ID,
2399         x_klev_rec.CREATED_BY,
2400         x_klev_rec.CREATION_DATE,
2401         x_klev_rec.LAST_UPDATED_BY,
2402         x_klev_rec.LAST_UPDATE_DATE,
2403         x_klev_rec.LAST_UPDATE_LOGIN,
2404         x_klev_rec.DATE_FUNDING,
2405         x_klev_rec.DATE_FUNDING_REQUIRED,
2406         x_klev_rec.DATE_ACCEPTED,
2407         x_klev_rec.DATE_DELIVERY_EXPECTED,
2408         x_klev_rec.OEC,
2409         x_klev_rec.CAPITAL_AMOUNT,
2410         x_klev_rec.RESIDUAL_GRNTY_AMOUNT,
2411         x_klev_rec.RESIDUAL_CODE,
2412         x_klev_rec.RVI_PREMIUM,
2413         x_klev_rec.CREDIT_NATURE,
2414         x_klev_rec.CAPITALIZED_INTEREST,
2415         x_klev_rec.CAPITAL_REDUCTION_PERCENT,
2416         x_klev_rec.DATE_PAY_INVESTOR_START,
2417         x_klev_rec.PAY_INVESTOR_FREQUENCY,
2418         x_klev_rec.PAY_INVESTOR_EVENT,
2419         x_klev_rec.PAY_INVESTOR_REMITTANCE_DAYS,
2420         x_klev_rec.FEE_TYPE,
2421         x_klev_rec.SUBSIDY_ID,
2422 /* subsidy colymns removed later, 09/26/2003
2423         x_klev_rec.SUBSIDIZED_OEC,
2424         x_klev_rec.SUBSIDIZED_CAP_AMOUNT,
2425 */
2426         x_klev_rec.PRE_TAX_YIELD,
2427         x_klev_rec.AFTER_TAX_YIELD,
2428         x_klev_rec.IMPLICIT_INTEREST_RATE,
2429         x_klev_rec.IMPLICIT_NON_IDC_INTEREST_RATE,
2430         x_klev_rec.PRE_TAX_IRR,
2431         x_klev_rec.AFTER_TAX_IRR,
2432         x_klev_rec.SUBSIDY_OVERRIDE_AMOUNT,
2433         x_klev_rec.SUB_PRE_TAX_YIELD,
2434         x_klev_rec.SUB_AFTER_TAX_YIELD,
2435         x_klev_rec.SUB_IMPL_INTEREST_RATE,
2436         x_klev_rec.SUB_IMPL_NON_IDC_INT_RATE,
2437         x_klev_rec.SUB_PRE_TAX_IRR,
2438         x_klev_rec.SUB_AFTER_TAX_IRR,
2439 --Bug# 2994971 :
2440         x_klev_rec.ITEM_INSURANCE_CATEGORY,
2441         --Bug# 3973640: 11.5.10 Schema changes
2442         x_klev_rec.QTE_ID,
2443         x_klev_rec.FUNDING_DATE,
2444         x_klev_rec.STREAM_TYPE_SUBCLASS
2445 --ramurt Bug#4552772
2446    ,x_klev_rec.FEE_PURPOSE_CODE
2447 --Bug# 4631549
2448    ,x_klev_rec.EXPECTED_ASSET_COST
2449 --Bug# 5192636
2450    ,x_klev_rec.DOWN_PAYMENT_RECEIVER_CODE
2451    ,x_klev_rec.CAPITALIZE_DOWN_PAYMENT_YN
2452 -- start NISINHA Bug# 6490572
2453    ,x_klev_rec.MODEL_NUMBER
2454    ,x_klev_rec.MANUFACTURER_NAME;
2455 --end NISINHA Bug # 6490572
2456 
2457     IF  okl_k_lines_v_pk_csr%NOTFOUND THEN
2458         x_return_status := OKL_API.G_RET_STS_ERROR;
2459     END IF;
2460     CLOSE okl_k_lines_v_pk_csr;
2461     RETURN(x_return_status);
2462   EXCEPTION
2463     WHEN OTHERS THEN
2464       -- store SQL error message on message stack for caller
2465       OKL_API.set_message(G_APP_NAME,
2466                           G_UNEXPECTED_ERROR,
2467                           G_SQLCODE_TOKEN,
2468                           SQLCODE,
2469                           G_SQLERRM_TOKEN,
2470                           SQLERRM);
2471      -- notify caller of an UNEXPECTED error
2472      x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2473      -- if the cursor is open
2474      IF okl_k_lines_v_pk_csr%ISOPEN THEN
2475         CLOSE okl_k_lines_v_pk_csr;
2476      END IF;
2477      RETURN(x_return_status);
2478   END get_rec_klev;
2479 -------------------------------------------------------------------------------------------------
2480 -- Start of Commnets
2481 -- Badrinath Kuchibholta
2482 -- Procedure Name       : Validate_new_Ast_Num_update
2483 -- Description          : Validate_new_Ast_Num_update
2484 -- Business Rules       : Validate Asset_Number against OKL_TXL_ASSETS_B.ASSET_NUMBER
2485 --                        ,as same should not exists in table
2486 -- Parameters           : OUT Return Status, IN Rec Info
2487 -- Version              : 1.0
2488 -- End of Commnets
2489   PROCEDURE validate_new_ast_num_update(x_return_status OUT NOCOPY VARCHAR2,
2490                                         p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
2491                                         p_kle_Id       IN OKL_TXL_ASSETS_V.KLE_ID%TYPE,
2492                                         p_dnz_chr_id   IN OKC_K_HEADERS_B.ID%TYPE) IS
2493     ln_okl_txl_assets_v           NUMBER := 0;
2494     ln_okx_assets_v               NUMBER := 0;
2495     ln_okx_asset_lines_v          NUMBER := 0;
2496     ln_okl_txd_assets_v           NUMBER := 0;
2497     lv_source_code                OKC_K_HEADERS_B.ORIG_SYSTEM_SOURCE_CODE%TYPE;
2498     lv_asset_source_code          OKC_K_LINES_B.ORIG_SYSTEM_SOURCE_CODE%TYPE;
2499     lv_asset_number               OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE;
2500     lv_release_asset              OKC_RULES_V.RULE_INFORMATION1%TYPE := 'N';
2501     x_msg_count                   NUMBER;
2502     x_msg_data                    VARCHAR2(100);
2503 
2504     CURSOR c_get_asset_number(p_kle_Id       OKL_TXL_ASSETS_V.KLE_ID%TYPE)
2505     IS
2506     SELECT NAME
2507     FROM OKC_K_LINES_TL
2508     WHERE ID = (SELECT CLE_ID
2509                 FROM OKC_K_LINES_B
2510                 WHERE ID = p_kle_Id)
2511     AND language = USERENV('lang');
2512 
2513     CURSOR c_txl_asset_number(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE,
2514                               p_kle_Id       OKL_TXL_ASSETS_V.KLE_ID%TYPE)
2515     IS
2516     SELECT 1
2517     --FROM DUAL
2518     --WHERE EXISTS (SELECT '1'
2519                   FROM OKL_TXL_ASSETS_B
2520                   WHERE asset_number = p_asset_number
2521                   AND kle_id <> p_kle_id; --);
2522 
2523     CURSOR c_okx_asset_lines_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2524     SELECT 1
2525     --FROM DUAL
2526     --WHERE EXISTS (SELECT '1'
2527                   FROM OKX_ASSET_LINES_V
2528                   WHERE asset_number = p_asset_number; --);
2529 
2530     CURSOR c_okx_assets_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2531     SELECT 1
2532     --FROM DUAL
2533     --WHERE EXISTS (SELECT '1'
2534                   FROM OKX_ASSETS_V
2535                   WHERE asset_number = p_asset_number; --);
2536 
2537     CURSOR c_txd_assets_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2538     SELECT 1
2539     --FROM DUAL
2540     --WHERE EXISTS (SELECT '1'
2541                   FROM OKL_TRX_ASSETS TAS,
2542                        OKL_TXL_ASSETS_V TXL,
2543                        OKL_TXD_ASSETS_V TXD
2544                   WHERE TXD.asset_number = p_asset_number
2545                   AND   TXD.TAL_ID       = TXL.ID
2546                   AND   TXL.TAL_TYPE     = 'ALI'
2547                   AND   TXL.TAS_ID       =  TAS.ID
2548                   AND   TAS.TSU_CODE     = 'ENTERED'; --);
2549 
2550     CURSOR c_source_code(p_kle_Id OKL_TXL_ASSETS_V.KLE_ID%TYPE) is
2551     SELECT nvl(chr.orig_system_source_code,'x')
2552     FROM okc_k_headers_b chr,
2553          okc_k_lines_b cle
2554     WHERE cle.id = p_kle_Id
2555     AND cle.dnz_chr_id = chr.id;
2556 
2557     CURSOR c_check_release_asset(p_dnz_chr_id OKC_K_HEADERS_B.ID%TYPE) is
2558     SELECT RULE_INFORMATION1
2559     FROM   OKC_RULES_V
2560     WHERE  DNZ_CHR_ID = p_dnz_chr_id
2561     AND    RULE_INFORMATION_CATEGORY = 'LARLES';
2562 
2563   BEGIN
2564     -- initialize return status
2565     x_return_status := OKL_API.G_RET_STS_SUCCESS;
2566     -- data is required
2567     IF (p_asset_number = OKL_API.G_MISS_CHAR) OR
2568       (p_asset_number IS NULL) THEN
2569        -- store SQL error message on message stack
2570       OKL_API.set_message(p_app_name     => G_APP_NAME,
2571                           p_msg_name     => G_REQUIRED_VALUE,
2572                           p_token1       => G_COL_NAME_TOKEN,
2573                           p_token1_value => 'ASSET_NUMBER');
2574       -- halt validation as it is a required field
2575       RAISE G_EXCEPTION_STOP_VALIDATION;
2576     END IF;
2577 
2578     -- Get the Release asset code from OKC_RULES_V
2579     OPEN  c_check_release_asset(p_dnz_chr_id);
2580     FETCH c_check_release_asset into lv_release_asset;
2581     IF c_check_release_asset%NOTFOUND THEN
2582       lv_release_asset := 'N';
2583 /*      x_return_status := OKL_API.G_RET_STS_ERROR;
2584       OKL_API.set_message(p_app_name     => G_APP_NAME,
2585                           p_msg_name     => G_NO_MATCHING_RECORD,
2586                           p_token1       => G_COL_NAME_TOKEN,
2587                           p_token1_value => 'OKC_RULES_V.RULE_INFORMATION1');
2588       RAISE G_EXCEPTION_HALT_VALIDATION;*/
2589     END IF;
2590     CLOSE c_check_release_asset;
2591 
2592     --
2593     -- Check whether asset residual value is securitized
2594     -- If so, do not allow release of the asset
2595     --
2596     IF (upper(lv_release_asset) = 'Y') THEN
2597        okl_transaction_pvt.check_contract_securitized(
2598                                  p_api_version        => 1.0,
2599                                  p_init_msg_list      => OKL_API.G_FALSE,
2600                                  x_return_status      => x_return_status,
2601                                  x_msg_count          => x_msg_count,
2602                                  x_msg_data           => x_msg_data,
2603                                  p_chr_id             => p_dnz_chr_id,
2604                                  p_cle_id             => p_kle_id,
2605                                  p_stream_type_class  => 'RESIDUAL',
2606                                  p_trx_date           => SYSDATE
2607                                 );
2608 
2609        IF (x_return_status <> OKL_API.G_RET_STS_SUCCESS) THEN
2610           OKL_API.set_message(p_app_name     => G_APP_NAME,
2611                               p_msg_name     => 'OKL_LLA_ASSET_SECU_ERROR',
2612                               p_token1       => 'ASSET_NUM',
2613                               p_token1_value => p_asset_number
2614                              );
2615 
2616           x_return_status := OKL_API.G_RET_STS_ERROR;
2617           RETURN; -- no further processing
2618        END IF;
2619     END IF;
2620 
2621     -- For released assets, we should not handle asset number validation.
2622     IF (upper(lv_release_asset) = 'N') THEN -- Start of release asset check
2623 
2624       -- Get the asset number from the system
2625       OPEN  c_get_asset_number(p_kle_id);
2626       FETCH c_get_asset_number into lv_asset_number;
2627       IF c_get_asset_number%NOTFOUND THEN
2628          x_return_status := OKL_API.G_RET_STS_SUCCESS;
2629       END IF;
2630       CLOSE c_get_asset_number;
2631 
2632       -- Check the asset number being changed
2633       IF (p_asset_number <> lv_asset_number) THEN -- Start of Asset number equality check
2634 
2635         OPEN  c_source_code(p_kle_id);
2636         FETCH c_source_code into lv_source_code;
2637         CLOSE c_source_code;
2638 
2639         IF lv_source_code NOT IN ('OKL_REBOOK') THEN
2640           -- Enforce validation
2641           -- Validate if the Asset Number exists in OKL_TXL_ASSETS_B
2642           OPEN  c_txl_asset_number(p_asset_number,
2643                                    p_kle_id);
2644           FETCH c_txl_asset_number into ln_okl_txl_assets_v;
2645           IF c_txl_asset_number%NOTFOUND THEN
2646             x_return_status := OKL_API.G_RET_STS_SUCCESS;
2647           END IF;
2648           CLOSE c_txl_asset_number;
2649 
2650           -- Validate if the Asset Number exists in OKX_ASSETS_V
2651           OPEN  c_okx_assets_v(p_asset_number);
2652           FETCH c_okx_assets_v into ln_okx_assets_v;
2653           IF c_okx_assets_v%NOTFOUND THEN
2654             x_return_status := OKL_API.G_RET_STS_SUCCESS;
2655           END IF;
2656           CLOSE c_okx_assets_v;
2657 
2658           -- Validate if the Asset Number exists in OKX_ASSET_LINES_V
2659           OPEN  c_okx_asset_lines_v(p_asset_number);
2660           FETCH c_okx_asset_lines_v into ln_okx_asset_lines_v;
2661           IF c_okx_asset_lines_v%NOTFOUND THEN
2662             x_return_status := OKL_API.G_RET_STS_SUCCESS;
2663           END IF;
2664           CLOSE c_okx_asset_lines_v;
2665 
2666           -- Validate if the Asset Number exists in OKL_TXD_ASSETS_V
2667           -- for Split Asset scenario.
2668           OPEN  c_txd_assets_v(p_asset_number);
2669           FETCH c_txd_assets_v into ln_okl_txd_assets_v;
2670           IF c_txd_assets_v%NOTFOUND THEN
2671             x_return_status := OKL_API.G_RET_STS_SUCCESS;
2672           END IF;
2673           CLOSE c_txd_assets_v;
2674 
2675         ELSIF (lv_source_code = 'x'  OR lv_source_code = OKL_API.G_MISS_CHAR)THEN
2676           -- Enforce validation
2677           -- Validate if the Asset Number exists in OKL_TXL_ASSETS_B
2678           OPEN  c_txl_asset_number(p_asset_number,
2679                                    p_kle_id);
2680           FETCH c_txl_asset_number into ln_okl_txl_assets_v;
2681           IF c_txl_asset_number%NOTFOUND THEN
2682             x_return_status := OKL_API.G_RET_STS_SUCCESS;
2683           END IF;
2684           CLOSE c_txl_asset_number;
2685 
2686           -- Validate if the Asset Number exists in OKX_ASSETS_V
2687           OPEN  c_okx_assets_v(p_asset_number);
2688           FETCH c_okx_assets_v into ln_okx_assets_v;
2689           IF c_okx_assets_v%NOTFOUND THEN
2690             x_return_status := OKL_API.G_RET_STS_SUCCESS;
2691           END IF;
2692           CLOSE c_okx_assets_v;
2693 
2694           -- Validate if the Asset Number exists in OKX_ASSET_LINES_V
2695           OPEN  c_okx_asset_lines_v(p_asset_number);
2696           FETCH c_okx_asset_lines_v into ln_okx_asset_lines_v;
2697           IF c_okx_asset_lines_v%NOTFOUND THEN
2698             x_return_status := OKL_API.G_RET_STS_SUCCESS;
2699           END IF;
2700           CLOSE c_okx_asset_lines_v;
2701 
2702           -- Validate if the Asset Number exists in OKL_TXD_ASSETS_V
2703           -- for Split Asset scenario.
2704           OPEN  c_txd_assets_v(p_asset_number);
2705           FETCH c_txd_assets_v into ln_okl_txd_assets_v;
2706           IF c_txd_assets_v%NOTFOUND THEN
2707             x_return_status := OKL_API.G_RET_STS_SUCCESS;
2708           END IF;
2709           CLOSE c_txd_assets_v;
2710 
2711           -- Since we have add this check only the cases if the asset number
2712           -- cannot be duplicate  when created new fo re_book scenario
2713         ELSIF lv_source_code = 'OKL_REBOOK' THEN
2714           -- Validate if the Asset Number exists in OKL_TXL_ASSETS_V
2715           OPEN  c_txl_asset_number(p_asset_number,
2716                                    p_kle_Id);
2717           FETCH c_txl_asset_number into ln_okl_txl_assets_v;
2718           IF c_txl_asset_number%NOTFOUND THEN
2719             x_return_status := OKL_API.G_RET_STS_SUCCESS;
2720           END IF;
2721           CLOSE c_txl_asset_number;
2722 
2723           -- Validate if the Asset Number exists in OKX_ASSETS_V
2724           OPEN  c_okx_assets_v(p_asset_number);
2725           FETCH c_okx_assets_v into ln_okx_assets_v;
2726           IF c_okx_assets_v%NOTFOUND THEN
2727             x_return_status := OKL_API.G_RET_STS_SUCCESS;
2728           END IF;
2729           CLOSE c_okx_assets_v;
2730 
2731           -- Validate if the Asset Number exists in OKX_ASSET_LINES_V
2732           OPEN  c_okx_asset_lines_v(p_asset_number);
2733           FETCH c_okx_asset_lines_v into ln_okx_asset_lines_v;
2734           IF c_okx_asset_lines_v%NOTFOUND THEN
2735             x_return_status := OKL_API.G_RET_STS_SUCCESS;
2736           END IF;
2737           CLOSE c_okx_asset_lines_v;
2738 
2739           -- Validate if the Asset Number exists in OKL_TXD_ASSETS_V
2740           -- for Split Asset scenario.
2741           OPEN  c_txd_assets_v(p_asset_number);
2742           FETCH c_txd_assets_v into ln_okl_txd_assets_v;
2743           IF c_txd_assets_v%NOTFOUND THEN
2744             x_return_status := OKL_API.G_RET_STS_SUCCESS;
2745           END IF;
2746           CLOSE c_txd_assets_v;
2747         END IF;
2748 
2749         IF (ln_okl_txl_assets_v = 1)  OR (ln_okx_assets_v = 1) OR
2750            (ln_okx_asset_lines_v = 1) OR (ln_okl_txd_assets_v = 1) THEN
2751           -- store SQL error message on message stack
2752           OKL_API.set_message(p_app_name     => G_APP_NAME,
2753                               p_msg_name     => G_ASSET_NUMBER);
2754           RAISE G_EXCEPTION_HALT_VALIDATION;
2755         ELSIF (ln_okl_txl_assets_v = 1) AND (ln_okx_assets_v = 1) AND
2756               (ln_okx_asset_lines_v = 1) AND (ln_okl_txd_assets_v = 1) THEN
2757           -- store SQL error message on message stack
2758           OKL_API.set_message(p_app_name     => G_APP_NAME,
2759                               p_msg_name     => G_ASSET_NUMBER);
2760           RAISE G_EXCEPTION_HALT_VALIDATION;
2761         END IF;
2762       END IF; -- End of Asset number equality check
2763     END IF; -- End of release asset check
2764   EXCEPTION
2765     WHEN G_EXCEPTION_STOP_VALIDATION then
2766     -- We are here since the field is required
2767     -- Notify Error
2768     -- We are here b'cause we have no parent record
2769     -- If the cursor is open then it has to be closed
2770     IF c_txl_asset_number%ISOPEN THEN
2771        CLOSE c_txl_asset_number;
2772     END IF;
2773     IF c_source_code%ISOPEN THEN
2774       CLOSE c_source_code;
2775     END IF;
2776     IF c_okx_assets_v%ISOPEN THEN
2777        CLOSE c_okx_assets_v;
2778     END IF;
2779     IF c_okx_asset_lines_v%ISOPEN THEN
2780        CLOSE c_okx_asset_lines_v;
2781     END IF;
2782     IF c_check_release_asset%ISOPEN THEN
2783        CLOSE c_check_release_asset;
2784     END IF;
2785 
2786     x_return_status := OKL_API.G_RET_STS_ERROR;
2787     WHEN G_EXCEPTION_HALT_VALIDATION then
2788     -- We are here b'cause we have no parent record
2789     -- If the cursor is open then it has to be closed
2790     IF c_txl_asset_number%ISOPEN THEN
2791        CLOSE c_txl_asset_number;
2792     END IF;
2793     IF c_source_code%ISOPEN THEN
2794       CLOSE c_source_code;
2795     END IF;
2796     IF c_okx_assets_v%ISOPEN THEN
2797        CLOSE c_okx_assets_v;
2798     END IF;
2799     IF c_okx_asset_lines_v%ISOPEN THEN
2800        CLOSE c_okx_asset_lines_v;
2801     END IF;
2802     IF c_check_release_asset%ISOPEN THEN
2803        CLOSE c_check_release_asset;
2804     END IF;
2805 
2806     -- notify caller of an error
2807     x_return_status := OKL_API.G_RET_STS_ERROR;
2808     WHEN OTHERS THEN
2809     -- store SQL error message on message stack
2810     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
2811                         p_msg_name     => G_UNEXPECTED_ERROR,
2812                         p_token1       => G_SQLCODE_TOKEN,
2813                         p_token1_value => SQLCODE,
2814                         p_token2       => G_SQLERRM_TOKEN,
2815                         p_token2_value => SQLERRM);
2816     -- If the cursor is open then it has to be closed
2817     IF c_txl_asset_number%ISOPEN THEN
2818        CLOSE c_txl_asset_number;
2819     END IF;
2820     IF c_source_code%ISOPEN THEN
2821       CLOSE c_source_code;
2822     END IF;
2823     IF c_okx_assets_v%ISOPEN THEN
2824        CLOSE c_okx_assets_v;
2825     END IF;
2826     IF c_okx_asset_lines_v%ISOPEN THEN
2827        CLOSE c_okx_asset_lines_v;
2828     END IF;
2829     IF c_check_release_asset%ISOPEN THEN
2830        CLOSE c_check_release_asset;
2831     END IF;
2832 
2833     -- notify caller of an error as UNEXPETED error
2834     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
2835   END validate_new_ast_num_update;
2836 -------------------------------------------------------------------------------------------------
2837 -- Start of Commnets
2838 -- Badrinath Kuchibholta
2839 -- Procedure Name       : Validate_new_Asset_Number
2840 -- Description          : Validation for new Asset Number
2841 -- Business Rules       : Validate Asset_Number against OKL_TXL_ASSETS_B.ASSET_NUMBER
2842 --                        ,as same should not exists in table
2843 -- Parameters           : OUT Return Status, IN Rec Info
2844 -- Version              : 1.0
2845 -- End of Commnets
2846   PROCEDURE validate_new_asset_number(x_return_status OUT NOCOPY VARCHAR2,
2847                                       p_asset_number IN OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
2848                                       p_dnz_chr_id   IN OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
2849     ln_okl_txl_assets_v           NUMBER := 0;
2850     ln_okx_assets_v               NUMBER := 0;
2851     ln_okx_asset_lines_v          NUMBER := 0;
2852     ln_okl_txd_assets_v           NUMBER := 0;
2853     lv_release_asset              OKC_RULES_V.RULE_INFORMATION1%TYPE := 'N';
2854 
2855     CURSOR c_txl_asset_number(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2856     SELECT 1
2857     --FROM DUAL
2858     --WHERE EXISTS (SELECT '1'
2859                   FROM OKL_TXL_ASSETS_B
2860                   WHERE asset_number = p_asset_number; --);
2861     /*CURSOR c_okx_asset_lines_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2862     SELECT 1
2863     --FROM DUAL
2864     --WHERE EXISTS (SELECT '1'
2865                   FROM OKX_ASSET_LINES_V
2866                   WHERE asset_number = p_asset_number; --); */
2867     CURSOR c_okx_asset_lines_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2868     SELECT 1
2869     FROM fa_additions a
2870     WHERE a.asset_number = p_asset_number
2871     and exists
2872      (
2873        select 1 from okc_k_items b
2874        where b.jtot_object1_code = 'OKX_ASSET'
2875        and   b.object1_id1 = to_char(a.asset_id)
2876      );
2877 
2878     CURSOR c_okx_assets_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2879     SELECT 1
2880     --FROM DUAL
2881     --WHERE EXISTS (SELECT '1'
2882                   FROM OKX_ASSETS_V
2883                   WHERE asset_number = p_asset_number; --);
2884 
2885     CURSOR c_txd_assets_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE) is
2886     SELECT 1
2887     --FROM DUAL
2888     --WHERE EXISTS (SELECT '1'
2889                   FROM OKL_TRX_ASSETS TAS,
2890                        OKL_TXL_ASSETS_V TXL,
2891                        OKL_TXD_ASSETS_V TXD
2892                   WHERE TXD.asset_number = p_asset_number
2893                   AND   TXD.TAL_ID       = TXL.ID
2894                   AND   TXL.TAL_TYPE     = 'ALI'
2895                   AND   TXL.TAS_ID       =  TAS.ID
2896                   AND   TAS.TSU_CODE     = 'ENTERED'; --);
2897 
2898     CURSOR c_check_release_asset(p_dnz_chr_id   IN OKC_K_LINES_V.DNZ_CHR_ID%TYPE) is
2899     SELECT RULE_INFORMATION1
2900     FROM   OKC_RULES_V
2901     WHERE  DNZ_CHR_ID = p_dnz_chr_id
2902     AND    RULE_INFORMATION_CATEGORY = 'LARLES';
2903 
2904   BEGIN
2905     -- initialize return status
2906     x_return_status := OKL_API.G_RET_STS_SUCCESS;
2907     -- data is required
2908     IF (p_asset_number = OKL_API.G_MISS_CHAR) OR (p_asset_number IS NULL) THEN
2909       -- store SQL error message on message stack
2910       OKL_API.set_message(p_app_name     => G_APP_NAME,
2911                           p_msg_name     => G_REQUIRED_VALUE,
2912                           p_token1       => G_COL_NAME_TOKEN,
2913                           p_token1_value => 'ASSET_NUMBER');
2914       -- halt validation as it is a required field
2915       RAISE G_EXCEPTION_STOP_VALIDATION;
2916     END IF;
2917 
2918     IF (p_dnz_chr_id = OKL_API.G_MISS_NUM) OR (p_dnz_chr_id IS NULL) THEN
2919       -- store SQL error message on message stack
2920       OKL_API.set_message(p_app_name     => G_APP_NAME,
2921                           p_msg_name     => G_REQUIRED_VALUE,
2922                           p_token1       => G_COL_NAME_TOKEN,
2923                           p_token1_value => 'DNZ_CHR_ID');
2924       -- halt validation as it is a required field
2925       RAISE G_EXCEPTION_STOP_VALIDATION;
2926     END IF;
2927 
2928     -- Get the Release asset code from OKC_RULES_V
2929     OPEN  c_check_release_asset(p_dnz_chr_id);
2930     FETCH c_check_release_asset into lv_release_asset;
2931     IF c_check_release_asset%NOTFOUND THEN
2932       lv_release_asset := 'N';
2933 /*      x_return_status := OKL_API.G_RET_STS_ERROR;
2934       OKL_API.set_message(p_app_name     => G_APP_NAME,
2935                           p_msg_name     => G_NO_MATCHING_RECORD,
2936                           p_token1       => G_COL_NAME_TOKEN,
2937                           p_token1_value => 'OKC_RULES_V.RULE_INFORMATION1');
2938       RAISE G_EXCEPTION_HALT_VALIDATION;*/
2939     END IF;
2940     CLOSE c_check_release_asset;
2941 
2942     -- For released assets, we should not handle asset number validation.
2943     IF (upper(lv_release_asset) = 'N') THEN -- Start of release asset check
2944       -- Enforce validation
2945       -- Validate if the Asset Number exists in OKL_TXL_ASSETS_B
2946       OPEN  c_txl_asset_number(p_asset_number);
2947       FETCH c_txl_asset_number into ln_okl_txl_assets_v;
2948       IF c_txl_asset_number%NOTFOUND THEN
2949          x_return_status := OKL_API.G_RET_STS_SUCCESS;
2950       END IF;
2951       CLOSE c_txl_asset_number;
2952 
2953       -- Validate if the Asset Number exists in OKX_ASSETS_V
2954       OPEN  c_okx_assets_v(p_asset_number);
2955       FETCH c_okx_assets_v into ln_okx_assets_v;
2956       IF c_okx_assets_v%NOTFOUND THEN
2957         x_return_status := OKL_API.G_RET_STS_SUCCESS;
2958       END IF;
2959       CLOSE c_okx_assets_v;
2960 
2961       -- Validate if the Asset Number exists in OKX_ASSET_LINES_V
2962       OPEN  c_okx_asset_lines_v(p_asset_number);
2963       FETCH c_okx_asset_lines_v into ln_okx_asset_lines_v;
2964       IF c_okx_asset_lines_v%NOTFOUND THEN
2965         x_return_status := OKL_API.G_RET_STS_SUCCESS;
2966       END IF;
2967       CLOSE c_okx_asset_lines_v;
2968 
2969       -- Validate if the Asset Number exists in OKL_TXD_ASSETS_V
2970       -- for Split Asset scenario.
2971       OPEN  c_txd_assets_v(p_asset_number);
2972       FETCH c_txd_assets_v into ln_okl_txd_assets_v;
2973       IF c_txd_assets_v%NOTFOUND THEN
2974         x_return_status := OKL_API.G_RET_STS_SUCCESS;
2975       END IF;
2976       CLOSE c_txd_assets_v;
2977 
2978       IF (ln_okl_txl_assets_v = 1) OR (ln_okx_assets_v = 1) OR
2979          (ln_okx_asset_lines_v = 1) OR (ln_okl_txd_assets_v = 1) THEN
2980         -- store SQL error message on message stack
2981          OKL_API.set_message(p_app_name     => G_APP_NAME,
2982                              p_msg_name     => G_ASSET_NUMBER);
2983          RAISE G_EXCEPTION_HALT_VALIDATION;
2984       ELSIF (ln_okl_txl_assets_v = 1) AND (ln_okx_assets_v = 1) AND
2985             (ln_okx_asset_lines_v = 1) AND (ln_okl_txd_assets_v = 1) THEN
2986         -- store SQL error message on message stack
2987         OKL_API.set_message(p_app_name     => G_APP_NAME,
2988                             p_msg_name     => G_ASSET_NUMBER);
2989         RAISE G_EXCEPTION_HALT_VALIDATION;
2990       END IF;
2991     END IF;
2992   EXCEPTION
2993     WHEN G_EXCEPTION_STOP_VALIDATION then
2994     -- We are here since the field is required
2995     -- Notify Error
2996     x_return_status := OKL_API.G_RET_STS_ERROR;
2997     WHEN G_EXCEPTION_HALT_VALIDATION then
2998     -- We are here b'cause we have no parent record
2999     -- If the cursor is open then it has to be closed
3000     IF c_txl_asset_number%ISOPEN THEN
3001        CLOSE c_txl_asset_number;
3002     END IF;
3003     IF c_okx_assets_v%ISOPEN THEN
3004        CLOSE c_okx_assets_v;
3005     END IF;
3006     IF c_okx_asset_lines_v%ISOPEN THEN
3007        CLOSE c_okx_asset_lines_v;
3008     END IF;
3009     IF c_txd_assets_v%ISOPEN THEN
3010        CLOSE c_txd_assets_v;
3011     END IF;
3012     IF c_check_release_asset%ISOPEN THEN
3013        CLOSE c_check_release_asset;
3014     END IF;
3015 
3016     -- notify caller of an error
3017     x_return_status := OKL_API.G_RET_STS_ERROR;
3018     WHEN OTHERS THEN
3019     -- store SQL error message on message stack
3020     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
3021                         p_msg_name     => G_UNEXPECTED_ERROR,
3022                         p_token1       => G_SQLCODE_TOKEN,
3023                         p_token1_value => SQLCODE,
3024                         p_token2       => G_SQLERRM_TOKEN,
3025                         p_token2_value => SQLERRM);
3026     -- If the cursor is open then it has to be closed
3027     IF c_txl_asset_number%ISOPEN THEN
3028        CLOSE c_txl_asset_number;
3029     END IF;
3030     IF c_okx_assets_v%ISOPEN THEN
3031        CLOSE c_okx_assets_v;
3032     END IF;
3033     IF c_okx_asset_lines_v%ISOPEN THEN
3034        CLOSE c_okx_asset_lines_v;
3035     END IF;
3036     IF c_txd_assets_v%ISOPEN THEN
3037        CLOSE c_txd_assets_v;
3038     END IF;
3039     IF c_check_release_asset%ISOPEN THEN
3040        CLOSE c_check_release_asset;
3041     END IF;
3042     -- notify caller of an error as UNEXPETED error
3043     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3044   END validate_new_asset_number;
3045 -------------------------------------------------------------------------------------------------
3046 -- Start of Commnets
3047 -- Badrinath Kuchibholta
3048 -- Procedure Name       : Validate_asset_tax_book
3049 -- Description          : Validation Asset tax Book
3050 -- Business Rules       : Validate Asset_Number, tax_book and tal type should be unique
3051 -- Parameters           : OUT Return Status, IN Rec Info
3052 -- Version              : 1.0
3053 -- End of Commnets
3054   PROCEDURE Validate_asset_tax_book(x_return_status OUT NOCOPY VARCHAR2,
3055                                     p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE,
3056                                     p_tax_book     OKL_TXD_ASSETS_B.TAX_BOOK%TYPE,
3057                                     p_tal_id       OKL_TXL_ASSETS_B.ID%TYPE) IS
3058     ln_asset_lines_dtls           NUMBER := 0;
3059     CURSOR c_asset_lines_dtls_v(p_asset_number OKX_ASSETS_V.ASSET_NUMBER%TYPE,
3060                                 p_tax_book     OKL_TXD_ASSETS_B.TAX_BOOK%TYPE,
3061                                 p_tal_id       OKL_TXL_ASSETS_B.ID%TYPE) is
3062     SELECT 1
3063     --FROM DUAL
3064     --WHERE EXISTS (SELECT '1'
3065                   FROM OKL_TXD_ASSETS_B txd,
3066                        OKL_TXL_ASSETS_B txl
3067                   WHERE txl.asset_number = p_asset_number
3068                   AND txl.asset_number = txd.asset_number
3069                   AND txl.tal_type IN ('CFA','CIB','CRB','CRL','CSP','CRV')
3070                   AND txd.tal_id = txl.id
3071                   AND txd.tal_id = p_tal_id
3072                   AND txd.tax_book = p_tax_book; --);
3073   BEGIN
3074     -- initialize return status
3075     x_return_status := OKL_API.G_RET_STS_SUCCESS;
3076     -- data is required
3077     IF (p_asset_number = OKL_API.G_MISS_CHAR OR
3078        p_asset_number IS NULL) OR
3079        (p_tal_id = OKL_API.G_MISS_NUM OR
3080        p_tal_id IS NULL) OR
3081        (p_tax_book = OKL_API.G_MISS_CHAR OR
3082        p_tax_book IS NULL) THEN
3083        -- store SQL error message on message stack
3084       OKL_API.set_message(p_app_name     => G_APP_NAME,
3085                           p_msg_name     => G_REQUIRED_VALUE,
3086                           p_token1       => G_COL_NAME_TOKEN,
3087                           p_token1_value => 'ASSET_NUMBER ,TAX BOOK and TAL ID');
3088       -- halt validation as it is a required field
3089       RAISE G_EXCEPTION_STOP_VALIDATION;
3090     END IF;
3091     -- Enforce validation
3092     -- Validate if the Asset Number exists in OKX_ASSET_LINES_V
3093     OPEN  c_asset_lines_dtls_v(p_asset_number => p_asset_number,
3094                                p_tax_book => p_tax_book,
3095                                p_tal_id => p_tal_id);
3096     FETCH c_asset_lines_dtls_v into ln_asset_lines_dtls;
3097     IF c_asset_lines_dtls_v%NOTFOUND THEN
3098        x_return_status := OKL_API.G_RET_STS_SUCCESS;
3099     END IF;
3100     CLOSE c_asset_lines_dtls_v;
3101     IF (ln_asset_lines_dtls = 1) THEN
3102        -- store SQL error message on message stack
3103        OKL_API.set_message(p_app_name     => G_APP_NAME,
3104                            p_msg_name     => G_ASSET_NUMBER);
3105        RAISE G_EXCEPTION_HALT_VALIDATION;
3106     END IF;
3107   EXCEPTION
3108     WHEN G_EXCEPTION_STOP_VALIDATION then
3109     -- We are here since the field is required
3110     -- Notify Error
3111     x_return_status := OKL_API.G_RET_STS_ERROR;
3112     WHEN G_EXCEPTION_HALT_VALIDATION then
3113     -- We are here b'cause we have no parent record
3114     -- If the cursor is open then it has to be closed
3115     IF c_asset_lines_dtls_v%ISOPEN THEN
3116        CLOSE c_asset_lines_dtls_v;
3117     END IF;
3118     -- notify caller of an error
3119     x_return_status := OKL_API.G_RET_STS_ERROR;
3120     WHEN OTHERS THEN
3121     -- store SQL error message on message stack
3122     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
3123                         p_msg_name     => G_UNEXPECTED_ERROR,
3124                         p_token1       => G_SQLCODE_TOKEN,
3125                         p_token1_value => SQLCODE,
3126                         p_token2       => G_SQLERRM_TOKEN,
3127                         p_token2_value => SQLERRM);
3128     -- If the cursor is open then it has to be closed
3129     IF c_asset_lines_dtls_v%ISOPEN THEN
3130        CLOSE c_asset_lines_dtls_v;
3131     END IF;
3132     -- notify caller of an error as UNEXPETED error
3133     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3134   END Validate_asset_tax_book;
3135 ----------------------------------------------------------------------------------------
3136 -- Start of Commnets
3137 -- Badrinath Kuchibholta
3138 -- Procedure Name       : validate_instance_number_ib
3139 -- Description          : validate_instance_number_ib
3140 -- Business Rules       : Validate instance_number_ib against OKL_TXL_ITM_INSTS.INSTANCE_NUMBER_IB
3141 --                        ,as same should not exists in table
3142 -- Parameters           : OUT Return Status, IN Rec Info
3143 -- Version              : 1.0
3144 -- End of Commnets
3145 
3146   PROCEDURE validate_instance_number_ib(x_return_status OUT NOCOPY VARCHAR2,
3147                                         p_inst_num_ib IN OKL_TXL_ITM_INSTS.INSTANCE_NUMBER_IB%TYPE) IS
3148     ln_dummy number := 0;
3149     CURSOR c_inst_num_ib_validate(p_inst_ib  OKL_TXL_ITM_INSTS.INSTANCE_NUMBER_IB%TYPE) is
3150     SELECT 1
3151     --FROM DUAL
3152     --WHERE EXISTS (SELECT '1'
3153                   FROM OKL_TXL_ITM_INSTS
3154                   WHERE instance_number_ib = p_inst_ib; --);
3155 
3156   BEGIN
3157     -- initialize return status
3158     x_return_status := OKL_API.G_RET_STS_SUCCESS;
3159     -- data is required
3160     IF (p_inst_num_ib = OKL_API.G_MISS_CHAR OR
3161        p_inst_num_ib IS NULL) THEN
3162        -- store SQL error message on message stack
3163       OKL_API.set_message(p_app_name     => G_APP_NAME,
3164                           p_msg_name     => G_REQUIRED_VALUE,
3165                           p_token1       => G_COL_NAME_TOKEN,
3166                           p_token1_value => 'INSTANCE_NUMBER_IB');
3167        RAISE G_EXCEPTION_STOP_VALIDATION;
3168     END IF;
3169     -- Enforce validation
3170     OPEN  c_inst_num_ib_validate(p_inst_num_ib);
3171     FETCH c_inst_num_ib_validate into ln_dummy;
3172     IF c_inst_num_ib_validate%NOTFOUND THEN
3173        -- Since no parent record existing in OKL_TXL_ITM_INSTS
3174        x_return_status := OKL_API.G_RET_STS_SUCCESS;
3175     END IF;
3176     CLOSE c_inst_num_ib_validate;
3177     IF (ln_dummy = 1) THEN
3178        -- store SQL error message on message stack
3179        OKL_API.set_message(p_app_name     => G_APP_NAME,
3180                            p_msg_name     => G_INSTALL_BASE_NUMBER);
3181        RAISE G_EXCEPTION_HALT_VALIDATION;
3182     END IF;
3183   EXCEPTION
3184     WHEN G_EXCEPTION_STOP_VALIDATION then
3185     -- We are here since the field is required
3186     -- Notify Error
3187     x_return_status := OKL_API.G_RET_STS_ERROR;
3188     WHEN G_EXCEPTION_HALT_VALIDATION then
3189     -- We are here b'cause we have no parent record
3190     -- store SQL error message on message stack
3191     -- If the cursor is open then it has to be closed
3192     IF c_inst_num_ib_validate%ISOPEN THEN
3193        CLOSE c_inst_num_ib_validate;
3194     END IF;
3195     -- notify caller of an error
3196     x_return_status := OKL_API.G_RET_STS_ERROR;
3197     WHEN OTHERS THEN
3198      -- store SQL error message on message stack
3199      OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
3200                          p_msg_name     => G_UNEXPECTED_ERROR,
3201                          p_token1       => G_SQLCODE_TOKEN,
3202                          p_token1_value => SQLCODE,
3203                          p_token2       => G_SQLERRM_TOKEN,
3204                          p_token2_value => SQLERRM);
3205     -- If the cursor is open then it has to be closed
3206     IF c_inst_num_ib_validate%ISOPEN THEN
3207        CLOSE c_inst_num_ib_validate;
3208     END IF;
3209     -- notify caller of an error as UNEXPETED error
3210     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3211   END validate_instance_number_ib;
3212 ------------------------------------------------------------------------------------------------------------
3213 -- Start of Commnets
3214 -- Badrinath Kuchibholta
3215 -- Procedure Name       : validate_lse_id
3216 -- Description          : validation and get the lty_code
3217 --                        with OKC_LINE_STYLES_V
3218 -- Business Rules       :
3219 -- Parameters           :
3220 -- Version              : 1.0
3221 -- End of Commnets
3222   PROCEDURE validate_lse_id(p_clev_rec      IN clev_rec_type,
3223                             x_return_status OUT NOCOPY VARCHAR2,
3224                             x_lty_code      OUT NOCOPY OKC_LINE_STYLES_V.LTY_CODE%TYPE,
3225                             x_lse_type      OUT NOCOPY OKC_LINE_STYLES_V.LSE_TYPE%TYPE) IS
3226     CURSOR c_lse_id_validate(p_lse_id     OKC_LINE_STYLES_V.ID%TYPE) IS
3227     SELECT lty_code,
3228            lse_type
3229     FROM OKC_LINE_STYLES_V
3230     WHERE id = p_lse_id;
3231   BEGIN
3232     -- initialize return status
3233     x_return_status := OKL_API.G_RET_STS_SUCCESS;
3234     -- data is required
3235     IF (p_clev_rec.lse_id = OKL_API.G_MISS_NUM) OR
3236        (p_clev_rec.lse_id IS NULL) THEN
3237        -- store SQL error message on message stack
3238       OKL_API.set_message(p_app_name     => G_APP_NAME,
3239                           p_msg_name     => G_REQUIRED_VALUE,
3240                           p_token1       => G_COL_NAME_TOKEN,
3241                           p_token1_value => 'OKC_K_LINES_V.LSE_ID');
3242        -- halt validation as it is a required field
3243        RAISE G_EXCEPTION_STOP_VALIDATION;
3244     END IF;
3245     -- Enforce Foreign Key
3246     OPEN  c_lse_id_validate(p_clev_rec.lse_id);
3247     FETCH c_lse_id_validate into x_lty_code,
3248                                  x_lse_type;
3249             -- If there are no records then
3250     IF c_lse_id_validate%NOTFOUND THEN
3251          OKL_API.set_message(p_app_name     => G_APP_NAME,
3252                              p_msg_name     => G_NO_MATCHING_RECORD,
3253                              p_token1       => G_COL_NAME_TOKEN,
3254                              p_token1_value => 'OKC_K_LINES_V.LSE_ID');
3255        -- halt validation as it has no parent record
3256        RAISE G_EXCEPTION_HALT_VALIDATION;
3257     END IF;
3258     CLOSE c_lse_id_validate;
3259     -- If we have null records coming up
3260     IF (x_lty_code = OKL_API.G_MISS_CHAR OR
3261        x_lty_code IS NULL) AND
3262        (x_lse_type =  OKL_API.G_MISS_CHAR OR
3263        x_lse_type IS NULL) THEN
3264          OKL_API.set_message(p_app_name     => G_APP_NAME,
3265                              p_msg_name     => G_NO_MATCHING_RECORD,
3266                              p_token1       => G_COL_NAME_TOKEN,
3267                              p_token1_value => 'OKC_K_LINES_V.LSE_ID');
3268        -- halt validation as it has no parent record
3269        RAISE G_EXCEPTION_HALT_VALIDATION;
3270     END IF;
3271   EXCEPTION
3272     WHEN G_EXCEPTION_STOP_VALIDATION then
3273     -- We are here since the field is required
3274     -- Notify Error
3275     x_return_status := OKL_API.G_RET_STS_ERROR;
3276     WHEN G_EXCEPTION_HALT_VALIDATION then
3277     -- If the cursor is open then it has to be closed
3278     IF c_lse_id_validate%ISOPEN THEN
3279        CLOSE c_lse_id_validate;
3280     END IF;
3281     x_return_status := OKL_API.G_RET_STS_ERROR;
3282     WHEN OTHERS THEN
3283     -- store SQL error message on message stack
3284     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
3285                         p_msg_name     => G_UNEXPECTED_ERROR,
3286                         p_token1       => G_SQLCODE_TOKEN,
3287                         p_token1_value => SQLCODE,
3288                         p_token2       => G_SQLERRM_TOKEN,
3289                         p_token2_value => SQLERRM);
3290     -- If the cursor is open then it has to be closed
3291     IF c_lse_id_validate%ISOPEN THEN
3292        CLOSE c_lse_id_validate;
3293     END IF;
3294     -- notify caller of an error as UNEXPETED error
3295     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3296   END validate_lse_id;
3297 ---------------------------------------------------------------------------------------------------
3298 -- Start of Commnets
3299 -- Badrinath Kuchibholta
3300 -- Procedure Name       : validate_cle_lse_id
3301 -- Description          : validation of the cle_id
3302 --                        with OKC_k_LINES_V and Check if the line style is TLS
3303 -- Business Rules       :
3304 -- Parameters           :
3305 -- Version              : 1.0
3306 -- End of Commnets
3307 
3308   PROCEDURE validate_cle_lse_id(p_clev_rec      IN clev_rec_type,
3309                                 p_lty_code      IN OKC_LINE_STYLES_V.LTY_CODE%TYPE,
3310                                 x_lty_code      OUT NOCOPY OKC_LINE_STYLES_V.LTY_CODE%TYPE,
3311                                 x_return_status OUT NOCOPY VARCHAR2) IS
3312     ln_cle_id          OKC_K_LINES_V.ID%TYPE := 0;
3313     lv_lse_type        OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
3314     lv_lty_code        OKC_LINE_STYLES_V.LTY_CODE%TYPE;
3315 
3316     CURSOR c_cle_id_validate(p_cle_id     OKC_K_LINES_V.CLE_ID%TYPE) IS
3317     SELECT lse.lty_code
3318     FROM OKC_K_LINES_V cle,
3319          OKC_LINE_STYLES_V lse
3320     WHERE cle.id = p_cle_id
3321     AND lse.id = cle.lse_id;
3322 
3323   BEGIN
3324     -- initialize return status
3325     x_return_status := OKL_API.G_RET_STS_SUCCESS;
3326     -- data is required
3327     IF (p_clev_rec.cle_id = OKL_API.G_MISS_NUM OR
3328        p_clev_rec.cle_id IS NULL) THEN
3329       OKL_API.set_message(p_app_name     => G_APP_NAME,
3330                           p_msg_name     => G_REQUIRED_VALUE,
3331                           p_token1       => G_COL_NAME_TOKEN,
3332                           p_token1_value => 'OKC_K_LINES_V.CLE_ID');
3333        -- halt validation as it is a required field
3334        RAISE G_EXCEPTION_STOP_VALIDATION;
3335     END IF;
3336     -- check the valid id is there
3337     OPEN  c_cle_id_validate(p_clev_rec.cle_id);
3338     IF c_cle_id_validate%NOTFOUND THEN
3339          OKL_API.set_message(p_app_name     => G_APP_NAME,
3340                              p_msg_name     => G_NO_MATCHING_RECORD,
3341                              p_token1       => G_COL_NAME_TOKEN,
3342                              p_token1_value => 'OKC_K_LINES_V.CLE_ID');
3343        -- halt validation as it has no parent record
3344        RAISE G_EXCEPTION_HALT_VALIDATION;
3345     END IF;
3346     FETCH c_cle_id_validate into lv_lty_code;
3347     CLOSE c_cle_id_validate;
3348     --Business Rules
3349     IF p_lty_code  = G_MODEL_LINE_LTY_CODE AND
3350        lv_lty_code = G_FIN_LINE_LTY_CODE THEN
3351        x_lty_code  := lv_lty_code;
3352     ELSIF p_lty_code = G_ADDON_LINE_LTY_CODE AND
3353        lv_lty_code   = G_MODEL_LINE_LTY_CODE THEN
3354        x_lty_code  := lv_lty_code;
3355     ELSIF p_lty_code = G_FA_LINE_LTY_CODE AND
3356        lv_lty_code   = G_FIN_LINE_LTY_CODE THEN
3357        x_lty_code  := lv_lty_code;
3358     ELSIF p_lty_code = G_INST_LINE_LTY_CODE AND
3359        lv_lty_code   = G_FIN_LINE_LTY_CODE THEN
3360        x_lty_code  := lv_lty_code;
3361     ELSIF p_lty_code = G_IB_LINE_LTY_CODE AND
3362        lv_lty_code   = G_INST_LINE_LTY_CODE THEN
3363        x_lty_code  := lv_lty_code;
3364     ELSE
3365        OKL_API.set_message(p_app_name     => G_APP_NAME,
3366                            p_msg_name     => G_LINE_STYLE);
3367        -- halt validation as it has invalid Value
3368        RAISE G_EXCEPTION_HALT_VALIDATION;
3369     END IF;
3370   EXCEPTION
3371     WHEN G_EXCEPTION_STOP_VALIDATION then
3372     -- We are here since the field is required
3373     -- store SQL error message on message stack
3374     -- Notify Error
3375     x_return_status := OKL_API.G_RET_STS_ERROR;
3376     WHEN G_EXCEPTION_HALT_VALIDATION then
3377     IF c_cle_id_validate%ISOPEN THEN
3378        -- halt validation as it has no parent record
3379        RAISE G_EXCEPTION_HALT_VALIDATION;
3380     END IF;
3381     x_return_status := OKL_API.G_RET_STS_ERROR;
3382     WHEN OTHERS THEN
3383     -- store SQL error message on message stack
3384     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
3385                         p_msg_name     => G_UNEXPECTED_ERROR,
3386                         p_token1       => G_SQLCODE_TOKEN,
3387                         p_token1_value => SQLCODE,
3388                         p_token2       => G_SQLERRM_TOKEN,
3389                         p_token2_value => SQLERRM);
3390     IF c_cle_id_validate%ISOPEN THEN
3391        -- halt validation as it has no parent record
3392        RAISE G_EXCEPTION_HALT_VALIDATION;
3393     END IF;
3394     -- notify caller of an error as UNEXPETED error
3395     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3396   END validate_cle_lse_id;
3397 ----------------------------------------------------------------------------------------------------
3398 -- Start of Commnets
3399 -- Badrinath Kuchibholta
3400 -- Procedure Name       : validate_dnz_chr_id
3401 -- Description          : validation with OKC_K_LINES_V
3402 -- Business Rules       :
3403 -- Parameters           :
3404 -- Version              : 1.0
3405 -- End of Commnets
3406 
3407   PROCEDURE validate_dnz_chr_id(p_clev_rec IN clev_rec_type,
3408                                 x_return_status OUT NOCOPY VARCHAR2) IS
3409     ln_dummy      NUMBER := 0;
3410     CURSOR c_dnz_chr_id_validate(p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
3411     SELECT 1
3412     --FROM DUAL
3413     --WHERE EXISTS (SELECT 1
3414                   FROM OKC_K_HEADERS_B chrv
3415                   WHERE chrv.id = p_dnz_chr_id; --);
3416   BEGIN
3417     -- initialize return status
3418     x_return_status := OKL_API.G_RET_STS_SUCCESS;
3419     -- data is required
3420     IF (p_clev_rec.dnz_chr_id = OKL_API.G_MISS_NUM) OR
3421        (p_clev_rec.dnz_chr_id IS NULL) THEN
3422        -- store SQL error message on message stack
3423       OKL_API.set_message(p_app_name     => G_APP_NAME,
3424                           p_msg_name     => G_REQUIRED_VALUE,
3425                           p_token1       => G_COL_NAME_TOKEN,
3426                           p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID');
3427        -- halt validation as it is a required field
3428        RAISE G_EXCEPTION_STOP_VALIDATION;
3429     END IF;
3430     -- Enforce Foreign Key
3431     -- since we are creating a asset line
3432     -- we assume the cle_id will not null
3433     -- as the same is not top line and it will be sub line
3434     OPEN  c_dnz_chr_id_validate(p_clev_rec.dnz_chr_id);
3435     IF c_dnz_chr_id_validate%NOTFOUND THEN
3436       OKL_API.set_message(p_app_name     => G_APP_NAME,
3437                           p_msg_name     => G_NO_MATCHING_RECORD,
3438                           p_token1       => G_COL_NAME_TOKEN,
3439                           p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID');
3440       -- halt validation as it has no parent record
3441       RAISE G_EXCEPTION_HALT_VALIDATION;
3442     END IF;
3443     FETCH c_dnz_chr_id_validate into ln_dummy;
3444     CLOSE c_dnz_chr_id_validate;
3445     IF (ln_dummy = 0) THEN
3446       OKL_API.set_message(p_app_name     => G_APP_NAME,
3447                           p_msg_name     => G_NO_MATCHING_RECORD,
3448                           p_token1       => G_COL_NAME_TOKEN,
3449                           p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID');
3450        -- halt validation as it has no parent record
3451        RAISE G_EXCEPTION_HALT_VALIDATION;
3452     END IF;
3453   EXCEPTION
3454     WHEN G_EXCEPTION_STOP_VALIDATION then
3455     -- We are here since the field is required
3456     -- Notify Error
3457     x_return_status := OKL_API.G_RET_STS_ERROR;
3458     WHEN G_EXCEPTION_HALT_VALIDATION then
3459     -- If the cursor is open then it has to be closed
3460     IF c_dnz_chr_id_validate%ISOPEN THEN
3461        CLOSE c_dnz_chr_id_validate;
3462     END IF;
3463     x_return_status := OKL_API.G_RET_STS_ERROR;
3464     WHEN OTHERS THEN
3465     -- store SQL error message on message stack
3466     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
3467                         p_msg_name     => G_UNEXPECTED_ERROR,
3468                         p_token1       => G_SQLCODE_TOKEN,
3469                         p_token1_value => SQLCODE,
3470                         p_token2       => G_SQLERRM_TOKEN,
3471                         p_token2_value => SQLERRM);
3472     -- If the cursor is open then it has to be closed
3473     IF c_dnz_chr_id_validate%ISOPEN THEN
3474        CLOSE c_dnz_chr_id_validate;
3475     END IF;
3476     -- notify caller of an error as UNEXPETED error
3477     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3478   END validate_dnz_chr_id;
3479 --------------------------------------------------------------------------------------------
3480 -- Start of Commnets
3481 -- Badrinath Kuchibholta
3482 -- Procedure Name       : check_required_values
3483 -- Description          : check_required_values
3484 -- Business Rules       :
3485 -- Parameters           :
3486 -- Version              : 1.0
3487 -- End of Commnets
3488 
3489   FUNCTION check_required_values(p_item1    IN OKC_K_ITEMS_V.OBJECT1_ID1%TYPE,
3490                                  p_item2    IN OKC_K_ITEMS_V.OBJECT1_ID2%TYPE,
3491                                  p_ast_no   IN OKL_TXL_ASSETS_B.ASSET_NUMBER%TYPE,
3492                                  p_ast_desc IN OKL_TXL_ASSETS_TL.DESCRIPTION%TYPE,
3493                                  p_cost     IN OKL_TXL_ASSETS_B.ORIGINAL_COST%TYPE,
3494                                  p_units    IN OKC_K_ITEMS_V.NUMBER_OF_ITEMS%TYPE,
3495                                  p_ib_loc1  IN OKL_TXL_ITM_INSTS_V.OBJECT_ID1_NEW%TYPE,
3496                                  p_ib_loc2  IN OKL_TXL_ITM_INSTS_V.OBJECT_ID2_NEW%TYPE,
3497                                  p_fa_loc   IN OKL_TXL_ASSETS_B.FA_LOCATION_ID%TYPE,
3498                                  p_refinance_amount IN OKL_K_LINES.REFINANCE_AMOUNT%TYPE,
3499                                  p_chr_id   IN OKC_K_LINES_B.DNZ_CHR_ID%TYPE)
3500   RETURN VARCHAR2 IS
3501     x_return_status          VARCHAR2(3) := OKL_API.G_RET_STS_SUCCESS;
3502     ln_dummy                 NUMBER := 0;
3503     ln1_dummy                NUMBER := 0;
3504     ln2_dummy                NUMBER := 0;
3505     ln3_dummy                NUMBER := p_units;
3506     lv_deal_type             OKL_K_HEADERS_V.DEAL_TYPE%TYPE := null;
3507     lv_scs_code              OKC_K_HEADERS_V.SCS_CODE%TYPE := null;
3508     --Bug# 4419339
3509     l_orig_system_source_code   okc_k_headers_b.orig_system_source_code%TYPE;
3510     CURSOR get_deal_type(p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE)
3511     IS
3512     SELECT khr.deal_type,
3513            chr.scs_code,
3514            --Bug# 4419339
3515            chr.orig_system_source_code
3516     FROM OKL_K_HEADERS_V khr,
3517          OKC_K_HEADERS_B chr
3518     WHERE khr.id = p_dnz_chr_id
3519     AND chr.id = khr.id;
3520   BEGIN
3521     IF (p_chr_id <> OKL_API.G_MISS_NUM OR
3522        p_chr_id IS NOT NULL) THEN
3523     OPEN  get_deal_type(p_dnz_chr_id => p_chr_id);
3524     FETCH get_deal_type into lv_deal_type,
3525                              lv_scs_code,
3526                              --Bug# 4419339
3527                              l_orig_system_source_code;
3528     CLOSE get_deal_type;
3529     END IF;
3530     -- data is required
3531     IF (p_item1 = OKL_API.G_MISS_CHAR OR
3532        p_item1 IS NULL) THEN
3533        -- store SQL error message on message stack
3534       OKL_API.set_message(p_app_name     => G_APP_NAME,
3535                           p_msg_name     => G_REQUIRED_VALUE,
3536                           p_token1       => G_COL_NAME_TOKEN,
3537                           p_token1_value => 'Item');
3538        -- halt validation as it is a required field
3539        RAISE G_EXCEPTION_STOP_VALIDATION;
3540     END IF;
3541     IF (p_item2 = OKL_API.G_MISS_CHAR OR
3542        p_item2 IS NULL) THEN
3543        -- store SQL error message on message stack
3544       OKL_API.set_message(p_app_name     => G_APP_NAME,
3545                           p_msg_name     => G_REQUIRED_VALUE,
3546                           p_token1       => G_COL_NAME_TOKEN,
3547                           p_token1_value => 'Item');
3548        -- halt validation as it is a required field
3549        RAISE G_EXCEPTION_STOP_VALIDATION;
3550     END IF;
3551     IF (p_ast_no = OKL_API.G_MISS_CHAR OR
3552        p_ast_no IS NULL) THEN
3553        -- store SQL error message on message stack
3554       OKL_API.set_message(p_app_name     => G_APP_NAME,
3555                           p_msg_name     => G_REQUIRED_VALUE,
3556                           p_token1       => G_COL_NAME_TOKEN,
3557                           p_token1_value => 'Asset Number');
3558        -- halt validation as it is a required field
3559        RAISE G_EXCEPTION_STOP_VALIDATION;
3560     END IF;
3561     IF (p_ast_desc = OKL_API.G_MISS_CHAR OR
3562        p_ast_desc IS NULL) THEN
3563        -- store SQL error message on message stack
3564       OKL_API.set_message(p_app_name     => G_APP_NAME,
3565                           p_msg_name     => G_REQUIRED_VALUE,
3566                           p_token1       => G_COL_NAME_TOKEN,
3567                           p_token1_value => 'Description');
3568        -- halt validation as it is a required field
3569        RAISE G_EXCEPTION_STOP_VALIDATION;
3570     END IF;
3571     IF (p_cost = OKL_API.G_MISS_NUM OR
3572        p_cost IS NULL) THEN
3573        -- store SQL error message on message stack
3574       OKL_API.set_message(p_app_name     => G_APP_NAME,
3575                           p_msg_name     => G_REQUIRED_VALUE,
3576                           p_token1       => G_COL_NAME_TOKEN,
3577                           p_token1_value => 'Unit Cost');
3578        -- halt validation as it is a required field
3579        RAISE G_EXCEPTION_STOP_VALIDATION;
3580     ELSE
3581       ln_dummy := sign(p_cost);
3582       IF ln_dummy = -1 THEN
3583         OKL_API.set_message(p_app_name     => G_APP_NAME,
3584                             p_msg_name     => G_INVALID_VALUE,
3585                             p_token1       => G_COL_NAME_TOKEN,
3586                             p_token1_value => 'Unit Cost');
3587          -- halt validation as it is a required field
3588          RAISE G_EXCEPTION_STOP_VALIDATION;
3589       END IF;
3590     END IF;
3591     IF (ln3_dummy = OKL_API.G_MISS_NUM OR
3592        ln3_dummy IS NULL) THEN
3593        -- store SQL error message on message stack
3594       OKL_API.set_message(p_app_name     => G_APP_NAME,
3595                           p_msg_name     => G_REQUIRED_VALUE,
3596                           p_token1       => G_COL_NAME_TOKEN,
3597                           p_token1_value => 'Units');
3598        -- halt validation as it is a required field
3599        RAISE G_EXCEPTION_STOP_VALIDATION;
3600     ELSE
3601       ln1_dummy := sign(p_units);
3602       IF ln1_dummy = -1 THEN
3603         OKL_API.set_message(p_app_name     => G_APP_NAME,
3604                             p_msg_name     => G_INVALID_VALUE,
3605                             p_token1       => G_COL_NAME_TOKEN,
3606                             p_token1_value => 'Units');
3607          -- halt validation as it is a required field
3608          RAISE G_EXCEPTION_STOP_VALIDATION;
3609       END IF;
3610       ln2_dummy := instr(to_char(p_units),'.');
3611       IF ln2_dummy <> 0 THEN
3612         OKL_API.set_message(p_app_name     => G_APP_NAME,
3613                             p_msg_name     => G_DECIMAL_VALUE,
3614                             p_token1       => G_COL_NAME_TOKEN,
3615                             p_token1_value => 'Units');
3616          -- halt validation as it is a required field
3617          RAISE G_EXCEPTION_STOP_VALIDATION;
3618       END IF;
3619     END IF;
3620     IF (p_ib_loc1 = OKL_API.G_MISS_CHAR OR
3621        p_ib_loc1 IS NULL) THEN
3622        -- store SQL error message on message stack
3623       OKL_API.set_message(p_app_name     => G_APP_NAME,
3624                           p_msg_name     => G_REQUIRED_VALUE,
3625                           p_token1       => G_COL_NAME_TOKEN,
3626                           p_token1_value => 'Installed Site');
3627        -- halt validation as it is a required field
3628        RAISE G_EXCEPTION_STOP_VALIDATION;
3629     END IF;
3630     IF (p_ib_loc2 = OKL_API.G_MISS_CHAR OR
3631        p_ib_loc2 IS NULL) THEN
3632        -- store SQL error message on message stack
3633       OKL_API.set_message(p_app_name     => G_APP_NAME,
3634                           p_msg_name     => G_REQUIRED_VALUE,
3635                           p_token1       => G_COL_NAME_TOKEN,
3636                           p_token1_value => 'Installed Site');
3637        -- halt validation as it is a required field
3638        RAISE G_EXCEPTION_STOP_VALIDATION;
3639     END IF;
3640     IF (p_fa_loc = OKL_API.G_MISS_NUM OR
3641        p_fa_loc IS NULL) AND lv_scs_code <> 'QUOTE'  AND
3642        --Bug# 4419339
3643        nvl(l_orig_system_source_code,okl_api.g_miss_char) <> 'OKL_LEASE_APP' AND
3644        --Bug# 5098124 : Added condition for 'OKL_QUOTE'
3645        nvl(l_orig_system_source_code,okl_api.g_miss_char) <> 'OKL_QUOTE' THEN
3646       IF (lv_deal_type <> 'LOAN' AND (p_refinance_amount IS NULL OR
3647           p_refinance_amount = OKL_API.G_MISS_NUM)) THEN
3648         -- store SQL error message on message stack
3649         OKL_API.set_message(p_app_name     => G_APP_NAME,
3650                             p_msg_name     => G_REQUIRED_VALUE,
3651                             p_token1       => G_COL_NAME_TOKEN,
3652                             p_token1_value => 'Fixed Asset Location');
3653          -- halt validation as it is a required field
3654          RAISE G_EXCEPTION_STOP_VALIDATION;
3655       END IF;
3656     END IF;
3657     RETURN(x_return_status);
3658   EXCEPTION
3659     WHEN G_EXCEPTION_STOP_VALIDATION then
3660     -- We are here since the field is required
3661     -- Notify Error
3662     x_return_status := OKL_API.G_RET_STS_ERROR;
3663     RETURN(x_return_status);
3664     WHEN OTHERS THEN
3665       OKL_API.set_message(p_app_name     => G_APP_NAME,
3666                           p_msg_name     => 'Error Message from Required values');
3667     -- store SQL error message on message stack
3668     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
3669                         p_msg_name     => G_UNEXPECTED_ERROR,
3670                         p_token1       => G_SQLCODE_TOKEN,
3671                         p_token1_value => SQLCODE,
3672                         p_token2       => G_SQLERRM_TOKEN,
3673                         p_token2_value => SQLERRM);
3674     -- notify caller of an error as UNEXPETED error
3675     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3676     RETURN(x_return_status);
3677   END check_required_values;
3678 --------------------------------------------------------------------------------------------
3679 -- Start of Commnets
3680 -- Badrinath Kuchibholta
3681 -- Procedure Name       : validate_kle_id
3682 -- Description          : validation with OKL_TXL_ASSETS_V
3683 -- Business Rules       :
3684 -- Parameters           :
3685 -- Version              : 1.0
3686 -- End of Commnets
3687 
3688   PROCEDURE validate_kle_id(p_klev_rec      IN klev_rec_type,
3689                             x_record_exists OUT NOCOPY VARCHAR2,
3690                             x_return_status OUT NOCOPY VARCHAR2) IS
3691     ln_dummy      NUMBER := 0;
3692     CURSOR c_kle_id_validate(p_kle_id OKL_TXL_ASSETS_V.KLE_ID%TYPE) IS
3693     SELECT 1
3694     --FROM dual
3695     --WHERE EXISTS (SELECT '1'
3696                   FROM OKL_TXL_ASSETS_V
3697                   WHERE kle_id = p_kle_id; --);
3698   BEGIN
3699     -- initialize return status
3700     x_return_status := OKL_API.G_RET_STS_SUCCESS;
3701     -- data is required
3702     IF (p_klev_rec.id = OKL_API.G_MISS_NUM) OR
3703        (p_klev_rec.id IS NULL) THEN
3704        -- store SQL error message on message stack
3705       OKL_API.set_message(p_app_name     => G_APP_NAME,
3706                           p_msg_name     => G_REQUIRED_VALUE,
3707                           p_token1       => G_COL_NAME_TOKEN,
3708                           p_token1_value => 'OKL_TXL_ASSETS_V.KLE_ID');
3709        -- halt validation as it is a required field
3710        RAISE G_EXCEPTION_STOP_VALIDATION;
3711     END IF;
3712     -- Enforce Foreign Key
3713     OPEN  c_kle_id_validate(p_klev_rec.id);
3714     FETCH c_kle_id_validate into ln_dummy;
3715     IF c_kle_id_validate%NOTFOUND THEN
3716        x_record_exists := null;
3717     END IF;
3718     CLOSE c_kle_id_validate;
3719     -- If there are no records then
3720     IF ln_dummy = 0 THEN
3721        x_record_exists := null;
3722     ELSE
3723        x_record_exists := 'X';
3724     END IF;
3725   EXCEPTION
3726     WHEN G_EXCEPTION_STOP_VALIDATION then
3727     -- We are here since the field is required
3728     -- Notify Error
3729     x_return_status := OKL_API.G_RET_STS_ERROR;
3730     WHEN OTHERS THEN
3731     -- store SQL error message on message stack
3732     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
3733                         p_msg_name     => G_UNEXPECTED_ERROR,
3734                         p_token1       => G_SQLCODE_TOKEN,
3735                         p_token1_value => SQLCODE,
3736                         p_token2       => G_SQLERRM_TOKEN,
3737                         p_token2_value => SQLERRM);
3738     -- If the cursor is open then it has to be closed
3739     IF c_kle_id_validate%ISOPEN THEN
3740        CLOSE c_kle_id_validate;
3741     END IF;
3742     -- notify caller of an error as UNEXPETED error
3743     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3744   END validate_kle_id;
3745 --------------------------------------------------------------------------------------------------
3746 -- Start of Commnets
3747 -- Badrinath Kuchibholta
3748 -- Procedure Name       : validate_iti_kle_id
3749 -- Description          : validation with OKL_TXL_ITM_INSTS_V
3750 -- Business Rules       :
3751 -- Parameters           :
3752 -- Version              : 1.0
3753 -- End of Commnets
3754 
3755   PROCEDURE validate_iti_kle_id(p_klev_rec      IN klev_rec_type,
3756                             x_record_exists OUT NOCOPY VARCHAR2,
3757                             x_return_status OUT NOCOPY VARCHAR2) IS
3758     ln_dummy      NUMBER := 0;
3759     CURSOR c_iti_kle_id_validate(p_kle_id OKL_TXL_ITM_INSTS_V.KLE_ID%TYPE) IS
3760     SELECT 1
3761     --FROM dual
3762     --WHERE EXISTS (SELECT '1'
3763                   FROM OKL_TXL_ITM_INSTS_V
3764                   WHERE kle_id = p_kle_id; --);
3765   BEGIN
3766     -- initialize return status
3767     x_return_status := OKL_API.G_RET_STS_SUCCESS;
3768     -- data is required
3769     IF (p_klev_rec.id = OKL_API.G_MISS_NUM) OR
3770        (p_klev_rec.id IS NULL) THEN
3771        -- store SQL error message on message stack
3772       OKL_API.set_message(p_app_name     => G_APP_NAME,
3773                           p_msg_name     => G_REQUIRED_VALUE,
3774                           p_token1       => G_COL_NAME_TOKEN,
3775                           p_token1_value => 'OKL_TXL_ITM_INSTS_V.KLE_ID');
3776        -- halt validation as it is a required field
3777        RAISE G_EXCEPTION_STOP_VALIDATION;
3778     END IF;
3779     -- Enforce Foreign Key
3780     OPEN  c_iti_kle_id_validate(p_klev_rec.id);
3781     FETCH c_iti_kle_id_validate into ln_dummy;
3782     IF c_iti_kle_id_validate%NOTFOUND THEN
3783        x_record_exists := null;
3784     END IF;
3785     CLOSE c_iti_kle_id_validate;
3786     -- If there are no records then
3787     IF ln_dummy = 0 THEN
3788        x_record_exists := null;
3789     ELSE
3790        x_record_exists := 'X';
3791     END IF;
3792   EXCEPTION
3793     WHEN G_EXCEPTION_STOP_VALIDATION then
3794     -- We are here since the field is required
3795     -- Notify Error
3796     x_return_status := OKL_API.G_RET_STS_ERROR;
3797     WHEN OTHERS THEN
3798     -- store SQL error message on message stack
3799     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
3800                         p_msg_name     => G_UNEXPECTED_ERROR,
3801                         p_token1       => G_SQLCODE_TOKEN,
3802                         p_token1_value => SQLCODE,
3803                         p_token2       => G_SQLERRM_TOKEN,
3804                         p_token2_value => SQLERRM);
3805     -- If the cursor is open then it has to be closed
3806     IF c_iti_kle_id_validate%ISOPEN THEN
3807        CLOSE c_iti_kle_id_validate;
3808     END IF;
3809     -- notify caller of an error as UNEXPETED error
3810     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
3811   END validate_iti_kle_id;
3812 ----------------------------------------------------------------------------------------------------
3813 -- Start of Commnets
3814 -- Badrinath Kuchibholta
3815 -- Procedure Name       : validate_sts_code
3816 -- Description          : validation with OKC_K_LINES_V
3817 -- Business Rules       :
3818 -- Parameters           :
3819 -- Version              : 1.0
3820 -- End of Commnets
3821 
3822   PROCEDURE validate_sts_code(p_clev_rec IN clev_rec_type,
3823                               x_return_status OUT NOCOPY VARCHAR2) IS
3824 
3825     lv_sts_code       OKC_K_LINES_V.STS_CODE%TYPE;
3826     lv_lty_code       OKC_LINE_STYLES_V.lty_CODE%TYPE;
3827 
3828     CURSOR c_lty_code_validate(p_lse_id       OKC_LINE_STYLES_B.ID%TYPE) IS
3829     SELECT lse.lty_code
3830     FROM OKC_LINE_STYLES_V lse
3831     WHERE lse.id = p_lse_id;
3832 
3833     CURSOR c_sub_sub_line_sts_code(p_dnz_chr_id   OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
3834                                    p_cle_id       OKC_K_LINES_V.ID%TYPE,
3835                                    p_lty_code     OKC_LINE_STYLES_V.lty_CODE%TYPE) IS
3836     SELECT cle.sts_code
3837     FROM OKC_K_LINES_V cle
3838     WHERE cle.id in (SELECT cle.cle_id
3839                      FROM OKC_K_LINES_V cle
3840                      WHERE id in (SELECT cle.cle_id
3841                                   FROM OKC_LINE_STYLES_V lse,
3842                                        OKC_K_LINES_V cle
3843                                   WHERE dnz_chr_id = p_dnz_chr_id
3844                                   AND cle.lse_id = lse.id
3845                                   AND cle.id = p_cle_id
3846                                   AND lse.lty_code = p_lty_code));
3847 
3848     CURSOR c_sub_line_sts_code(p_dnz_chr_id   OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
3849                                p_cle_id       OKC_K_LINES_V.ID%TYPE,
3850                                p_lty_code     OKC_LINE_STYLES_V.lty_CODE%TYPE) IS
3851     SELECT cle.sts_code
3852     FROM OKC_K_LINES_V cle
3853     WHERE id in (SELECT cle.cle_id
3854                  FROM OKC_LINE_STYLES_V lse,
3855                       OKC_K_LINES_V cle
3856                  WHERE dnz_chr_id = p_dnz_chr_id
3857                  AND cle.lse_id = lse.id
3858                  AND cle.id = p_cle_id
3859                  AND lse.lty_code = p_lty_code);
3860 
3861     CURSOR c_top_line_sts_code(p_dnz_chr_id   OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
3862                                p_cle_id       OKC_K_LINES_V.ID%TYPE,
3863                                p_chr_id   OKC_K_LINES_V.CHR_ID%TYPE) IS
3864     SELECT cle.sts_code
3865     FROM OKC_K_LINES_V cle
3866     WHERE cle.dnz_chr_id = p_dnz_chr_id
3867     AND cle.cle_id is null
3868     AND cle.id = p_cle_id
3869     AND cle.chr_id = p_chr_id;
3870   BEGIN
3871     -- initialize return status
3872     x_return_status := OKL_API.G_RET_STS_SUCCESS;
3873     IF (p_clev_rec.sts_code = OKL_API.G_MISS_CHAR OR
3874        p_clev_rec.sts_code IS NULL) THEN
3875        -- store SQL error message on message stack
3876       OKL_API.set_message(p_app_name     => G_APP_NAME,
3877                           p_msg_name     => G_REQUIRED_VALUE,
3878                           p_token1       => G_COL_NAME_TOKEN,
3879                           p_token1_value => 'OKC_K_LINES_V.STS_CODE');
3880        -- halt validation as it is a required field
3881        RAISE G_EXCEPTION_STOP_VALIDATION;
3882     END IF;
3883     -- First Get the Lty _code we are going to validate
3884     OPEN c_lty_code_validate(p_clev_rec.lse_id);
3885     IF c_lty_code_validate%NOTFOUND THEN
3886          OKL_API.set_message(p_app_name     => G_APP_NAME,
3887                              p_msg_name     => G_NO_MATCHING_RECORD,
3888                              p_token1       => G_COL_NAME_TOKEN,
3889                              p_token1_value => 'OKC_LINE_STYLE_V.LTY_CODE');
3890        -- halt validation as it is a required field
3891        RAISE G_EXCEPTION_HALT_VALIDATION;
3892     END IF;
3893     FETCH c_lty_code_validate INTO lv_lty_code;
3894     CLOSE c_lty_code_validate;
3895     -- Depending on the lty code query the appropriate query
3896     IF lv_lty_code = G_ADDON_LINE_LTY_CODE OR
3897        lv_lty_code = G_IB_LINE_LTY_CODE THEN
3898        OPEN c_sub_sub_line_sts_code(p_clev_rec.dnz_chr_id,
3899                                     p_clev_rec.id,
3900                                     lv_lty_code);
3901         IF c_sub_sub_line_sts_code%NOTFOUND THEN
3902          OKL_API.set_message(p_app_name     => G_APP_NAME,
3903                              p_msg_name     => G_NO_MATCHING_RECORD,
3904                              p_token1       => G_COL_NAME_TOKEN,
3905                              p_token1_value => 'OKC_K_LINES_V.STS_CODE');
3906          -- halt validation as it is a required field
3907          RAISE G_EXCEPTION_HALT_VALIDATION;
3908        END IF;
3909        FETCH c_sub_sub_line_sts_code INTO lv_sts_code;
3910        CLOSE c_sub_sub_line_sts_code;
3911     ELSIF lv_lty_code = G_MODEL_LINE_LTY_CODE OR
3912           lv_lty_code = G_FA_LINE_LTY_CODE OR
3913           lv_lty_code = G_INST_LINE_LTY_CODE THEN
3914        OPEN c_sub_line_sts_code(p_clev_rec.dnz_chr_id,
3915                                 p_clev_rec.id,
3916                                 lv_lty_code);
3917        IF c_sub_line_sts_code%NOTFOUND THEN
3918          OKL_API.set_message(p_app_name     => G_APP_NAME,
3919                              p_msg_name     => G_NO_MATCHING_RECORD,
3920                              p_token1       => G_COL_NAME_TOKEN,
3921                              p_token1_value => 'OKC_K_LINES_V.STS_CODE');
3922          -- halt validation as it is a required field
3923          RAISE G_EXCEPTION_HALT_VALIDATION;
3924        END IF;
3925        FETCH c_sub_line_sts_code INTO lv_sts_code;
3926        CLOSE c_sub_line_sts_code;
3927     ELSIF lv_lty_code = G_FIN_LINE_LTY_CODE THEN
3928        OPEN c_top_line_sts_code(p_clev_rec.dnz_chr_id,
3929                                 p_clev_rec.id,
3930                                 p_clev_rec.chr_id);
3931        IF c_top_line_sts_code%NOTFOUND THEN
3932          OKL_API.set_message(p_app_name     => G_APP_NAME,
3933                              p_msg_name     => G_NO_MATCHING_RECORD,
3934                              p_token1       => G_COL_NAME_TOKEN,
3935                              p_token1_value => 'OKC_K_LINES_V.STS_CODE');
3936          -- halt validation as it is a required field
3937          RAISE G_EXCEPTION_HALT_VALIDATION;
3938        END IF;
3939        FETCH c_top_line_sts_code INTO lv_sts_code;
3940        CLOSE c_top_line_sts_code;
3941     END IF;
3942     -- Check the Sts code is entered only
3943     IF lv_sts_code NOT IN ('ENTERED',
3944                            'SIGNED',
3945                            'ACTIVE',
3946                            'HOLD',
3947                            'NEW',
3948                            'PENDING_APPROVAL',
3949                            'APPROVED',
3950                            'COMPLETE',
3951                            'INCOMPLETE',
3952                            'PASSED') THEN
3953       OKL_API.set_message(p_app_name     => G_APP_NAME,
3954                           p_msg_name     => G_STATUS,
3955                           p_token1       => 'STATUS',
3956                           p_token1_value => lv_sts_code);
3957       -- halt validation as it is a required field
3958       RAISE G_EXCEPTION_HALT_VALIDATION;
3959     END IF;
3960   EXCEPTION
3961     WHEN G_EXCEPTION_STOP_VALIDATION then
3962     -- We are here since the field is required
3963     -- Notify Error
3964     x_return_status := OKL_API.G_RET_STS_ERROR;
3965     WHEN G_EXCEPTION_HALT_VALIDATION then
3966     -- If the cursor is open then it has to be closed
3967     IF c_lty_code_validate%ISOPEN THEN
3968        CLOSE c_lty_code_validate;
3969     END IF;
3970     -- If the cursor is open then it has to be closed
3971     IF c_sub_sub_line_sts_code%ISOPEN THEN
3972        CLOSE c_sub_sub_line_sts_code;
3973     END IF;
3974     -- If the cursor is open then it has to be closed
3975     IF c_sub_line_sts_code%ISOPEN THEN
3976        CLOSE c_sub_line_sts_code;
3977     END IF;
3978     -- If the cursor is open then it has to be closed
3979     IF c_top_line_sts_code%ISOPEN THEN
3980        CLOSE c_top_line_sts_code;
3981     END IF;
3982     x_return_status := OKL_API.G_RET_STS_ERROR;
3983     WHEN OTHERS THEN
3984     -- store SQL error message on message stack
3985     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
3986                         p_msg_name     => G_UNEXPECTED_ERROR,
3987                         p_token1       => G_SQLCODE_TOKEN,
3988                         p_token1_value => SQLCODE,
3989                         p_token2       => G_SQLERRM_TOKEN,
3990                         p_token2_value => SQLERRM);
3991     -- If the cursor is open then it has to be closed
3992     IF c_lty_code_validate%ISOPEN THEN
3993        CLOSE c_lty_code_validate;
3994     END IF;
3995     -- If the cursor is open then it has to be closed
3996     IF c_sub_sub_line_sts_code%ISOPEN THEN
3997        CLOSE c_sub_sub_line_sts_code;
3998     END IF;
3999     -- If the cursor is open then it has to be closed
4000     IF c_sub_line_sts_code%ISOPEN THEN
4001        CLOSE c_sub_line_sts_code;
4002     END IF;
4003     -- If the cursor is open then it has to be closed
4004     IF c_top_line_sts_code%ISOPEN THEN
4005        CLOSE c_top_line_sts_code;
4006     END IF;
4007     -- notify caller of an error as UNEXPETED error
4008     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
4009   END validate_sts_code;
4010 ----------------------------------------------------------------------------------------------------------
4011   PROCEDURE Create_asset_header(
4012             p_api_version    IN  NUMBER,
4013             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
4014             x_return_status  OUT NOCOPY VARCHAR2,
4015             x_msg_count      OUT NOCOPY NUMBER,
4016             x_msg_data       OUT NOCOPY VARCHAR2,
4017             p_trxv_rec       IN  trxv_rec_type,
4018             x_trxv_rec       OUT NOCOPY trxv_rec_type) IS
4019     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_TRX_ASSET_HEADER';
4020   BEGIN
4021     x_return_status      := OKL_API.G_RET_STS_SUCCESS;
4022     -- Call start_activity to create savepoint, check compatibility
4023     -- and initialize message list
4024     x_return_status := OKL_API.START_ACTIVITY (
4025                                l_api_name
4026                                ,p_init_msg_list
4027                                ,'_PVT'
4028                                ,x_return_status);
4029     -- Check if activity started successfully
4030     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4031        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4032     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4033        RAISE OKL_API.G_EXCEPTION_ERROR;
4034     END IF;
4035     -- evaluate conditions, build outcomes for true conditions and
4036     -- put them on outcome queue
4037     OKL_TRX_ASSETS_PUB.create_trx_ass_h_def(
4038                        p_api_version    => p_api_version,
4039                        p_init_msg_list  => p_init_msg_list,
4040                        x_return_status  => x_return_status,
4041                        x_msg_count      => x_msg_count,
4042                        x_msg_data       => x_msg_data,
4043                        p_thpv_rec       => p_trxv_rec,
4044                        x_thpv_rec       => x_trxv_rec);
4045     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4046        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4047     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4048        RAISE OKL_API.G_EXCEPTION_ERROR;
4049     END IF;
4050     OKL_API.END_ACTIVITY (x_msg_count,
4051                           x_msg_data );
4052   EXCEPTION
4053     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4054     OKL_API.set_message(p_app_name     => G_APP_NAME,
4055                         p_msg_name     => G_TRX_ID);
4056     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4057                                l_api_name,
4058                                G_PKG_NAME,
4059                                'OKL_API.G_RET_STS_ERROR',
4060                                x_msg_count,
4061                                x_msg_data,
4062                                '_PVT');
4063     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4064     OKL_API.set_message(p_app_name     => G_APP_NAME,
4065                         p_msg_name     => G_TRX_ID);
4066     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4067                               l_api_name,
4068                               G_PKG_NAME,
4069                               'OKL_API.G_RET_STS_UNEXP_ERROR',
4070                               x_msg_count,
4071                               x_msg_data,
4072                               '_PVT');
4073     WHEN OTHERS THEN
4074     OKL_API.set_message(p_app_name     => G_APP_NAME,
4075                         p_msg_name     => G_TRX_ID);
4076     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4077                               l_api_name,
4078                               G_PKG_NAME,
4079                               'OTHERS',
4080                               x_msg_count,
4081                               x_msg_data,
4082                               '_PVT');
4083   END Create_asset_header;
4084 --------------------------------------------------------------------------------------------------
4085 -- Local Procedures for Update of Header record
4086 -- Incase where the error condition should be updated
4087   PROCEDURE Update_asset_header(
4088             p_api_version    IN  NUMBER,
4089             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
4090             x_return_status  OUT NOCOPY VARCHAR2,
4091             x_msg_count      OUT NOCOPY NUMBER,
4092             x_msg_data       OUT NOCOPY VARCHAR2,
4093             p_trxv_rec       IN  trxv_rec_type,
4094             x_trxv_rec       OUT NOCOPY trxv_rec_type) IS
4095     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_TRX_ASSET_HEADER';
4096   BEGIN
4097     x_return_status        := OKL_API.G_RET_STS_SUCCESS;
4098     -- Call start_activity to create savepoint, check compatibility
4099     -- and initialize message list
4100     x_return_status := OKL_API.START_ACTIVITY (
4101                                l_api_name
4102                                ,p_init_msg_list
4103                                ,'_PVT'
4104                                ,x_return_status);
4105     -- Check if activity started successfully
4106     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4107        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4108     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4109        RAISE OKL_API.G_EXCEPTION_ERROR;
4110     END IF;
4111     -- evaluate conditions, build outcomes for true conditions and
4112     -- put them on outcome queue
4113     OKL_TRX_ASSETS_PUB.update_trx_ass_h_def(
4114                        p_api_version    => p_api_version,
4115                        p_init_msg_list  => p_init_msg_list,
4116                        x_return_status  => x_return_status,
4117                        x_msg_count      => x_msg_count,
4118                        x_msg_data       => x_msg_data,
4119                        p_thpv_rec       => p_trxv_rec,
4120                        x_thpv_rec       => x_trxv_rec);
4121     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4122        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4123     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4124        RAISE OKL_API.G_EXCEPTION_ERROR;
4125     END IF;
4126     OKL_API.END_ACTIVITY (x_msg_count,
4127                           x_msg_data );
4128   EXCEPTION
4129     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4130     OKL_API.set_message(p_app_name     => G_APP_NAME,
4131                         p_msg_name     => G_TRX_ID);
4132     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4133                                l_api_name,
4134                                G_PKG_NAME,
4135                                'OKL_API.G_RET_STS_ERROR',
4136                                x_msg_count,
4137                                x_msg_data,
4138                                '_PVT');
4139     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4140     OKL_API.set_message(p_app_name     => G_APP_NAME,
4141                         p_msg_name     => G_TRX_ID);
4142     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4143                               l_api_name,
4144                               G_PKG_NAME,
4145                               'OKL_API.G_RET_STS_UNEXP_ERROR',
4146                               x_msg_count,
4147                               x_msg_data,
4148                               '_PVT');
4149     WHEN OTHERS THEN
4150     OKL_API.set_message(p_app_name     => G_APP_NAME,
4151                         p_msg_name     => G_TRX_ID);
4152     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4153                               l_api_name,
4154                               G_PKG_NAME,
4155                               'OTHERS',
4156                               x_msg_count,
4157                               x_msg_data,
4158                               '_PVT');
4159   END Update_asset_header;
4160 ------------------------------------------------------------------------------------------------------
4161   PROCEDURE Create_asset_lines(
4162             p_api_version    IN  NUMBER,
4163             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
4164             x_return_status  OUT NOCOPY VARCHAR2,
4165             x_msg_count      OUT NOCOPY NUMBER,
4166             x_msg_data       OUT NOCOPY VARCHAR2,
4167             p_talv_rec       IN  talv_rec_type,
4168             x_trxv_rec       OUT NOCOPY trxv_rec_type,
4169             x_talv_rec       OUT NOCOPY talv_rec_type) IS
4170     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_TXL_ASSET_LINE';
4171     l_trxv_rec               trxv_rec_type;
4172     l_talv_rec               talv_rec_type;
4173 
4174     --Added by dpsingh for LE uptake
4175     l_cntrct_number          OKC_K_HEADERS_B.CONTRACT_NUMBER%TYPE;
4176     l_legal_entity_id          NUMBER;
4177 
4178   BEGIN
4179     x_return_status  := OKL_API.G_RET_STS_SUCCESS;
4180     -- Call start_activity to create savepoint, check compatibility
4181     -- and initialize message list
4182     x_return_status := OKL_API.START_ACTIVITY (
4183                                l_api_name
4184                                ,p_init_msg_list
4185                                ,'_PVT'
4186                                ,x_return_status);
4187     -- Check if activity started successfully
4188     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4189        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4190     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4191        RAISE OKL_API.G_EXCEPTION_ERROR;
4192     END IF;
4193     -- Create New Header record and new Line record
4194     -- Before creating Header record
4195     -- we should make sure atleast the required record is given
4196     l_trxv_rec.tas_type            := 'CFA';
4197     x_return_status := get_try_id(p_try_name => G_TRY_NAME,
4198                                   x_try_id   => l_trxv_rec.try_id);
4199     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4200        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4201     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4202        RAISE OKL_API.G_EXCEPTION_ERROR;
4203     END IF;
4204     l_trxv_rec.tsu_code            := 'ENTERED';
4205     l_trxv_rec.date_trans_occurred := sysdate;
4206 
4207     --Added by dpsingh for LE Uptake
4208 
4209     l_legal_entity_id  := OKL_LEGAL_ENTITY_UTIL.get_khr_le_id(p_talv_rec.dnz_khr_id) ;
4210     IF  l_legal_entity_id IS NOT NULL THEN
4211        l_trxv_rec.legal_entity_id :=  l_legal_entity_id;
4212     ELSE
4213         -- get the contract number
4214        OPEN contract_num_csr(p_talv_rec.dnz_khr_id);
4215        FETCH contract_num_csr INTO l_cntrct_number;
4216        CLOSE contract_num_csr;
4217 	Okl_Api.set_message(p_app_name     => g_app_name,
4218                              p_msg_name     => 'OKL_LE_NOT_EXIST_CNTRCT',
4219 			     p_token1           =>  'CONTRACT_NUMBER',
4220 			     p_token1_value  =>  l_cntrct_number);
4221          RAISE OKL_API.G_EXCEPTION_ERROR;
4222     END IF;
4223     -- Now creating the new header record
4224     Create_asset_header(p_api_version    => p_api_version,
4225                         p_init_msg_list  => p_init_msg_list,
4226                         x_return_status  => x_return_status,
4227                         x_msg_count      => x_msg_count,
4228                         x_msg_data       => x_msg_data,
4229                         p_trxv_rec       => l_trxv_rec,
4230                         x_trxv_rec       => x_trxv_rec);
4231     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4232        l_trxv_rec                     :=  x_trxv_rec;
4233        l_trxv_rec.tsu_code            := 'ERROR';
4234        Update_asset_header(p_api_version    => p_api_version,
4235                            p_init_msg_list  => p_init_msg_list,
4236                            x_return_status  => x_return_status,
4237                            x_msg_count      => x_msg_count,
4238                            x_msg_data       => x_msg_data,
4239                            p_trxv_rec       => l_trxv_rec,
4240                            x_trxv_rec       => x_trxv_rec);
4241        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4242            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4243        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4244            RAISE OKL_API.G_EXCEPTION_ERROR;
4245        END IF;
4246        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4247     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4248        l_trxv_rec                     :=  x_trxv_rec;
4249        l_trxv_rec.tsu_code            := 'ERROR';
4250        Update_asset_header(p_api_version    => p_api_version,
4251                            p_init_msg_list  => p_init_msg_list,
4252                            x_return_status  => x_return_status,
4253                            x_msg_count      => x_msg_count,
4254                            x_msg_data       => x_msg_data,
4255                            p_trxv_rec       => l_trxv_rec,
4256                            x_trxv_rec       => x_trxv_rec);
4257        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4258           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4259        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4260           RAISE OKL_API.G_EXCEPTION_ERROR;
4261        END IF;
4262        RAISE OKL_API.G_EXCEPTION_ERROR;
4263     END IF;
4264     -- Now we are creating the new line record
4265     l_talv_rec                 := p_talv_rec;
4266     l_talv_rec.tas_id          := x_trxv_rec.id;
4267     IF (l_talv_rec.tal_type = OKL_API.G_MISS_CHAR OR
4268        l_talv_rec.tal_type IS NUll) THEN
4269        l_talv_rec.tal_type       := 'CFA';
4270     END IF;
4271     IF (l_talv_rec.line_number = OKL_API.G_MISS_NUM OR
4272        l_talv_rec.line_number IS NUll) THEN
4273        l_talv_rec.line_number       := 1;
4274     ELSE
4275        l_talv_rec.line_number       := l_talv_rec.line_number + 1;
4276     END IF;
4277     IF (l_talv_rec.description = OKL_API.G_MISS_CHAR OR
4278         l_talv_rec.description IS NUll) THEN
4279         l_talv_rec.description := 'CREATION OF FIXED ASSETS' ;
4280     END IF;
4281     -- evaluate conditions, build outcomes for true conditions and
4282     -- put them on outcome queue
4283     OKL_TXL_ASSETS_PUB.create_txl_asset_def(
4284                        p_api_version    => p_api_version,
4285                        p_init_msg_list  => p_init_msg_list,
4286                        x_return_status  => x_return_status,
4287                        x_msg_count      => x_msg_count,
4288                        x_msg_data       => x_msg_data,
4289                        p_tlpv_rec       => l_talv_rec,
4290                        x_tlpv_rec       => x_talv_rec);
4291     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4292        OKL_API.set_message(p_app_name     => G_APP_NAME,
4293                            p_msg_name     => G_KLE_ID);
4294        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4295     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4296        OKL_API.set_message(p_app_name     => G_APP_NAME,
4297                            p_msg_name     => G_KLE_ID);
4298        RAISE OKL_API.G_EXCEPTION_ERROR;
4299     END IF;
4300     OKL_API.END_ACTIVITY (x_msg_count,
4301                           x_msg_data );
4302   EXCEPTION
4303     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4304     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4305                                l_api_name,
4306                                G_PKG_NAME,
4307                                'OKL_API.G_RET_STS_ERROR',
4308                                x_msg_count,
4309                                x_msg_data,
4310                                '_PVT');
4311     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4312     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4313                               l_api_name,
4314                               G_PKG_NAME,
4315                               'OKL_API.G_RET_STS_UNEXP_ERROR',
4316                               x_msg_count,
4317                               x_msg_data,
4318                               '_PVT');
4319     WHEN OTHERS THEN
4320     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4321                               l_api_name,
4322                               G_PKG_NAME,
4323                               'OTHERS',
4324                               x_msg_count,
4325                               x_msg_data,
4326                               '_PVT');
4327   END Create_asset_lines;
4328 -------------------------------------------------------------------------------------------------------------------
4329 -- Local Procedures for update of line record
4330   PROCEDURE Update_asset_lines(
4331             p_api_version    IN  NUMBER,
4332             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
4333             x_return_status  OUT NOCOPY VARCHAR2,
4334             x_msg_count      OUT NOCOPY NUMBER,
4335             x_msg_data       OUT NOCOPY VARCHAR2,
4336             p_talv_rec       IN  talv_rec_type,
4337             x_talv_rec       OUT NOCOPY talv_rec_type) IS
4338     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_TXL_ASSET_LINE';
4339   BEGIN
4340     x_return_status   := OKL_API.G_RET_STS_SUCCESS;
4341     -- Call start_activity to create savepoint, check compatibility
4342     -- and initialize message list
4343     x_return_status := OKL_API.START_ACTIVITY (
4344                                l_api_name
4345                                ,p_init_msg_list
4346                                ,'_PVT'
4347                                ,x_return_status);
4348     -- Check if activity started successfully
4349     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4350        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4351     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4352        RAISE OKL_API.G_EXCEPTION_ERROR;
4353     END IF;
4354     -- evaluate conditions, build outcomes for true conditions and
4355     -- put them on outcome queue
4356     OKL_TXL_ASSETS_PUB.update_txl_asset_def(
4357                        p_api_version    => p_api_version,
4358                        p_init_msg_list  => p_init_msg_list,
4359                        x_return_status  => x_return_status,
4360                        x_msg_count      => x_msg_count,
4361                        x_msg_data       => x_msg_data,
4362                        p_tlpv_rec       => p_talv_rec,
4363                        x_tlpv_rec       => x_talv_rec);
4364     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4365        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4366     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4367        RAISE OKL_API.G_EXCEPTION_ERROR;
4368     END IF;
4369     OKL_API.END_ACTIVITY (x_msg_count,
4370                           x_msg_data );
4371   EXCEPTION
4372     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4373     OKL_API.set_message(p_app_name     => G_APP_NAME,
4374                         p_msg_name     => G_KLE_ID);
4375     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4376                                l_api_name,
4377                                G_PKG_NAME,
4378                                'OKL_API.G_RET_STS_ERROR',
4379                                x_msg_count,
4380                                x_msg_data,
4381                                '_PVT');
4382     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4383     OKL_API.set_message(p_app_name     => G_APP_NAME,
4384                         p_msg_name     => G_KLE_ID);
4385     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4386                               l_api_name,
4387                               G_PKG_NAME,
4388                               'OKL_API.G_RET_STS_UNEXP_ERROR',
4389                               x_msg_count,
4390                               x_msg_data,
4391                               '_PVT');
4392     WHEN OTHERS THEN
4393     OKL_API.set_message(p_app_name     => G_APP_NAME,
4394                         p_msg_name     => G_KLE_ID);
4395     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4396                               l_api_name,
4397                               G_PKG_NAME,
4398                               'OTHERS',
4399                               x_msg_count,
4400                               x_msg_data,
4401                               '_PVT');
4402   END Update_asset_lines;
4403 
4404 -------------------------------------------------------------------------------------------------
4405 -- Start of Commnets
4406 -- Badrinath Kuchibholta
4407 -- Procedure Name       : Create_asset_line_details
4408 -- Description          : Creation of asset_line_details
4409 -- Business Rules       :
4410 -- Parameters           :
4411 -- Version              :
4412 -- End of Commnets
4413   PROCEDURE Create_asset_line_details(
4414             p_api_version    IN  NUMBER,
4415             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
4416             x_return_status  OUT NOCOPY VARCHAR2,
4417             x_msg_count      OUT NOCOPY NUMBER,
4418             x_msg_data       OUT NOCOPY VARCHAR2,
4419             p_txdv_tbl       IN  txdv_tbl_type,
4420             x_txdv_tbl       OUT NOCOPY txdv_tbl_type)
4421   IS
4422     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_TXD_ASSET_DTL';
4423     i                        NUMBER := 0;
4424     l_txdv_tbl               txdv_tbl_type := p_txdv_tbl;
4425   BEGIN
4426     x_return_status  := OKL_API.G_RET_STS_SUCCESS;
4427     -- Call start_activity to create savepoint, check compatibility
4428     -- and initialize message list
4429     x_return_status := OKL_API.START_ACTIVITY (
4430                                l_api_name
4431                                ,p_init_msg_list
4432                                ,'_PVT'
4433                                ,x_return_status);
4434     -- Check if activity started successfully
4435     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4436        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4437     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4438        RAISE OKL_API.G_EXCEPTION_ERROR;
4439     END IF;
4440     IF (p_txdv_tbl.COUNT > 0) THEN
4441       i := p_txdv_tbl.FIRST;
4442       LOOP
4443         Validate_asset_tax_book(x_return_status => x_return_status,
4444                                 p_asset_number  => l_txdv_tbl(i).asset_number,
4445                                 p_tax_book      => l_txdv_tbl(i).tax_book,
4446                                 p_tal_id        => l_txdv_tbl(i).tal_id);
4447         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4448           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
4449         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4450           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
4451         END IF;
4452         OKL_TXD_ASSETS_PUB.create_txd_asset_def(
4453                            p_api_version    => p_api_version,
4454                            p_init_msg_list  => p_init_msg_list,
4455                            x_return_status  => x_return_status,
4456                            x_msg_count      => x_msg_count,
4457                            x_msg_data       => x_msg_data,
4458                            p_adpv_rec       => p_txdv_tbl(i),
4459                            x_adpv_rec       => x_txdv_tbl(i));
4460         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4461           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
4462         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4463           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
4464         END IF;
4465         EXIT WHEN (i = p_txdv_tbl.LAST);
4466         i := p_txdv_tbl.NEXT(i);
4467       END LOOP;
4468       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4469         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4470       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4471         RAISE OKL_API.G_EXCEPTION_ERROR;
4472       END IF;
4473     END IF;
4474     OKL_API.END_ACTIVITY (x_msg_count,
4475                           x_msg_data );
4476   EXCEPTION
4477     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4478       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4479                                  l_api_name,
4480                                  G_PKG_NAME,
4481                                  'OKL_API.G_RET_STS_ERROR',
4482                                  x_msg_count,
4483                                  x_msg_data,
4484                                  '_PVT');
4485     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4486       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4487                                 l_api_name,
4488                                 G_PKG_NAME,
4489                                 'OKL_API.G_RET_STS_UNEXP_ERROR',
4490                                  x_msg_count,
4491                                  x_msg_data,
4492                                  '_PVT');
4493     WHEN OTHERS THEN
4494       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4495                                 l_api_name,
4496                                 G_PKG_NAME,
4497                                 'OTHERS',
4498                                 x_msg_count,
4499                                 x_msg_data,
4500                                 '_PVT');
4501   END Create_asset_line_details;
4502 
4503 -------------------------------------------------------------------------------------------------
4504 -- Start of Commnets
4505 -- Badrinath Kuchibholta
4506 -- Procedure Name       : update_asset_line_details
4507 -- Description          : Updating of asset_line_details
4508 -- Business Rules       :
4509 -- Parameters           :
4510 -- Version              :
4511 -- End of Commnets
4512   PROCEDURE update_asset_line_details(
4513             p_api_version    IN  NUMBER,
4514             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
4515             x_return_status  OUT NOCOPY VARCHAR2,
4516             x_msg_count      OUT NOCOPY NUMBER,
4517             x_msg_data       OUT NOCOPY VARCHAR2,
4518             p_txdv_tbl       IN  txdv_tbl_type,
4519             x_txdv_tbl       OUT NOCOPY txdv_tbl_type)
4520   IS
4521     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_TXD_ASSET_DTL';
4522     i                        NUMBER := 0;
4523     l_txdv_tbl               txdv_tbl_type := p_txdv_tbl;
4524   BEGIN
4525     x_return_status  := OKL_API.G_RET_STS_SUCCESS;
4526     -- Call start_activity to create savepoint, check compatibility
4527     -- and initialize message list
4528     x_return_status := OKL_API.START_ACTIVITY (
4529                                l_api_name
4530                                ,p_init_msg_list
4531                                ,'_PVT'
4532                                ,x_return_status);
4533     -- Check if activity started successfully
4534     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4535        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4536     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4537        RAISE OKL_API.G_EXCEPTION_ERROR;
4538     END IF;
4539     IF (p_txdv_tbl.COUNT > 0) THEN
4540       i := p_txdv_tbl.FIRST;
4541       LOOP
4542         Validate_asset_tax_book(x_return_status => x_return_status,
4543                                 p_asset_number  => l_txdv_tbl(i).asset_number,
4544                                 p_tax_book      => l_txdv_tbl(i).tax_book,
4545                                 p_tal_id        => l_txdv_tbl(i).tal_id);
4546         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4547           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
4548         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4549           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
4550         END IF;
4551         OKL_TXD_ASSETS_PUB.update_txd_asset_def(
4552                            p_api_version    => p_api_version,
4553                            p_init_msg_list  => p_init_msg_list,
4554                            x_return_status  => x_return_status,
4555                            x_msg_count      => x_msg_count,
4556                            x_msg_data       => x_msg_data,
4557                            p_adpv_rec       => p_txdv_tbl(i),
4558                            x_adpv_rec       => x_txdv_tbl(i));
4559         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4560           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
4561         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4562           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
4563         END IF;
4564         EXIT WHEN (i = p_txdv_tbl.LAST);
4565         i := p_txdv_tbl.NEXT(i);
4566       END LOOP;
4567       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4568         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4569       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4570         RAISE OKL_API.G_EXCEPTION_ERROR;
4571       END IF;
4572     END IF;
4573     OKL_API.END_ACTIVITY (x_msg_count,
4574                           x_msg_data );
4575   EXCEPTION
4576     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4577       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4578                                  l_api_name,
4579                                  G_PKG_NAME,
4580                                  'OKL_API.G_RET_STS_ERROR',
4581                                  x_msg_count,
4582                                  x_msg_data,
4583                                  '_PVT');
4584     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4585       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4586                                 l_api_name,
4587                                 G_PKG_NAME,
4588                                 'OKL_API.G_RET_STS_UNEXP_ERROR',
4589                                  x_msg_count,
4590                                  x_msg_data,
4591                                  '_PVT');
4592     WHEN OTHERS THEN
4593       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4594                                 l_api_name,
4595                                 G_PKG_NAME,
4596                                 'OTHERS',
4597                                 x_msg_count,
4598                                 x_msg_data,
4599                                 '_PVT');
4600   END update_asset_line_details;
4601 
4602 -------------------------------------------------------------------------------------------------
4603 -- Start of Commnets
4604 -- Badrinath Kuchibholta
4605 -- Procedure Name       : update_asset_line_details
4606 -- Description          : Updating of asset_line_details
4607 -- Business Rules       : To keep the Asset Number unique all through
4608 -- Parameters           :
4609 -- Version              :
4610 -- End of Commnets
4611   PROCEDURE update_asset_line_details(
4612             p_api_version    IN  NUMBER,
4613             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
4614             x_return_status  OUT NOCOPY VARCHAR2,
4615             x_msg_count      OUT NOCOPY NUMBER,
4616             x_msg_data       OUT NOCOPY VARCHAR2,
4617             p_asset_number   IN  OKL_TXL_ASSETS_B.ASSET_NUMBER%TYPE,
4618             p_original_cost  IN  OKL_TXL_ASSETS_B.ORIGINAL_COST%TYPE,
4619             p_tal_id         IN  OKL_TXL_ASSETS_B.ID%TYPE)
4620   IS
4621     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_TXD_ASSET_DTL';
4622     i                        NUMBER := 0;
4623     l_txdv_tbl               txdv_tbl_type;
4624     lx_txdv_tbl               txdv_tbl_type;
4625     lv_to_update             VARCHAR2(3);
4626   BEGIN
4627     x_return_status  := OKL_API.G_RET_STS_SUCCESS;
4628     -- Call start_activity to create savepoint, check compatibility
4629     -- and initialize message list
4630     x_return_status := OKL_API.START_ACTIVITY (
4631                                l_api_name
4632                                ,p_init_msg_list
4633                                ,'_PVT'
4634                                ,x_return_status);
4635     -- Check if activity started successfully
4636     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4637        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4638     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4639        RAISE OKL_API.G_EXCEPTION_ERROR;
4640     END IF;
4641     x_return_status := get_txdv_tbl(p_tal_id        => p_tal_id,
4642                                     p_asset_number  => p_asset_number,
4643                                     p_original_cost => p_original_cost,
4644                                     x_to_update     => lv_to_update,
4645                                     x_txdv_tbl      => l_txdv_tbl);
4646     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4647        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4648     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4649        RAISE OKL_API.G_EXCEPTION_ERROR;
4650     END IF;
4651     IF lv_to_update = 'Y' THEN
4652         OKL_TXD_ASSETS_PUB.update_txd_asset_def(
4653                            p_api_version    => p_api_version,
4654                            p_init_msg_list  => p_init_msg_list,
4655                            x_return_status  => x_return_status,
4656                            x_msg_count      => x_msg_count,
4657                            x_msg_data       => x_msg_data,
4658                            p_adpv_tbl       => l_txdv_tbl,
4659                            x_adpv_tbl       => lx_txdv_tbl);
4660         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4661           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4662         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4663           RAISE OKL_API.G_EXCEPTION_ERROR;
4664         END IF;
4665     END IF;
4666     OKL_API.END_ACTIVITY (x_msg_count,
4667                           x_msg_data );
4668   EXCEPTION
4669     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4670       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4671                                  l_api_name,
4672                                  G_PKG_NAME,
4673                                  'OKL_API.G_RET_STS_ERROR',
4674                                  x_msg_count,
4675                                  x_msg_data,
4676                                  '_PVT');
4677     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4678       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4679                                 l_api_name,
4680                                 G_PKG_NAME,
4681                                 'OKL_API.G_RET_STS_UNEXP_ERROR',
4682                                  x_msg_count,
4683                                  x_msg_data,
4684                                  '_PVT');
4685     WHEN OTHERS THEN
4686       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4687                                 l_api_name,
4688                                 G_PKG_NAME,
4689                                 'OTHERS',
4690                                 x_msg_count,
4691                                 x_msg_data,
4692                                 '_PVT');
4693   END update_asset_line_details;
4694 
4695   -- 5530990
4696   PROCEDURE Update_Asset_Cost(
4697             p_api_version    IN  NUMBER,
4698             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
4699             x_return_status  OUT NOCOPY VARCHAR2,
4700             x_msg_count      OUT NOCOPY NUMBER,
4701             x_msg_data       OUT NOCOPY VARCHAR2,
4702             p_cleb_fin_id    IN  NUMBER,
4703             p_chr_id         IN  NUMBER,
4704             p_oec            IN  NUMBER) IS
4705 
4706     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_ASSET_COST';
4707 
4708     CURSOR l_chk_rbk_csr(p_chr_id IN NUMBER) is
4709     SELECT '!'
4710     FROM   okc_k_headers_b CHR,
4711            okl_trx_contracts ktrx
4712     WHERE  ktrx.khr_id_new = chr.id
4713     AND    ktrx.tsu_code = 'ENTERED'
4714     AND    ktrx.rbr_code is NOT NULL
4715     AND    ktrx.tcn_type = 'TRBK'
4716     --rkuttiya added for 12.1.1 Multi GAAP
4717     AND    ktrx.representation_type = 'PRIMARY'
4718     --
4719     AND    chr.id = p_chr_id
4720     AND    chr.orig_system_source_code = 'OKL_REBOOK';
4721 
4722     l_rbk_khr      VARCHAR2(1) DEFAULT '?';
4723 
4724     CURSOR l_talv_csr(p_cleb_fin_id IN NUMBER,
4725                       p_chr_id      IN NUMBER) IS
4726     SELECT tal.id,
4727            tal.asset_number
4728     FROM okl_txl_assets_b tal,
4729          okc_k_lines_b cleb_fa
4730     WHERE cleb_fa.cle_id = p_cleb_fin_id
4731     AND   cleb_fa.dnz_chr_id = p_chr_id
4732     AND   cleb_fa.lse_id = 42
4733     AND   tal.kle_id = cleb_fa.id;
4734 
4735     l_tal_id       OKL_TXL_ASSETS_B.id%TYPE;
4736     l_asset_number OKL_TXL_ASSETS_B.asset_number%TYPE;
4737 
4738     l_talv_rec talv_rec_type;
4739     x_talv_rec talv_rec_type;
4740 
4741   BEGIN
4742     x_return_status   := OKL_API.G_RET_STS_SUCCESS;
4743     -- Call start_activity to create savepoint, check compatibility
4744     -- and initialize message list
4745     x_return_status := OKL_API.START_ACTIVITY (
4746                                l_api_name
4747                                ,p_init_msg_list
4748                                ,'_PVT'
4749                                ,x_return_status);
4750     -- Check if activity started successfully
4751     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4752        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4753     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4754        RAISE OKL_API.G_EXCEPTION_ERROR;
4755     END IF;
4756 
4757     l_rbk_khr := '?';
4758     OPEN l_chk_rbk_csr (p_chr_id => p_chr_id);
4759     FETCH l_chk_rbk_csr INTO l_rbk_khr;
4760     CLOSE l_chk_rbk_csr;
4761 
4762     IF l_rbk_khr = '!' Then
4763 
4764       OKL_ACTIVATE_ASSET_PVT.recalculate_asset_cost
4765         (p_api_version   => p_api_version,
4766          p_init_msg_list => p_init_msg_list,
4767          x_return_status => x_return_status,
4768          x_msg_count     => x_msg_count,
4769          x_msg_data      => x_msg_data,
4770          p_chr_id        => p_chr_id,
4771          p_cle_id        => p_cleb_fin_id
4772         );
4773 
4774       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4775         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4776       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4777         RAISE OKL_API.G_EXCEPTION_ERROR;
4778       END IF;
4779 
4780     ELSE
4781 
4782       OPEN l_talv_csr(p_cleb_fin_id => p_cleb_fin_id,
4783                       p_chr_id      => p_chr_id);
4784       FETCH l_talv_csr INTO l_tal_id, l_asset_number;
4785       CLOSE l_talv_csr;
4786 
4787       IF l_tal_id IS NOT NULL THEN
4788 
4789         l_talv_rec.id := l_tal_id;
4790         l_talv_rec.original_cost := p_oec;
4791         l_talv_rec.depreciation_cost := p_oec;
4792 
4793         update_asset_lines(p_api_version    => p_api_version,
4794                            p_init_msg_list  => p_init_msg_list,
4795                            x_return_status  => x_return_status,
4796                            x_msg_count      => x_msg_count,
4797                            x_msg_data       => x_msg_data,
4798                            p_talv_rec       => l_talv_rec,
4799                            x_talv_rec       => x_talv_rec);
4800         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4801           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4802         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4803           RAISE OKL_API.G_EXCEPTION_ERROR;
4804         END IF;
4805 
4806         update_asset_line_details(p_api_version   => p_api_version,
4807                                   p_init_msg_list => p_init_msg_list,
4808                                   x_return_status => x_return_status,
4809                                   x_msg_count     => x_msg_count,
4810                                   x_msg_data      => x_msg_data,
4811                                   p_asset_number  => l_asset_number,
4812                                   p_original_cost => l_talv_rec.original_cost,
4813                                   p_tal_id        => l_talv_rec.id);
4814         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4815           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4816         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4817           RAISE OKL_API.G_EXCEPTION_ERROR;
4818         END IF;
4819 
4820       END IF;
4821 
4822     END IF;
4823 
4824     OKL_API.END_ACTIVITY (x_msg_count,
4825                           x_msg_data);
4826   EXCEPTION
4827     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4828       x_return_status := OKL_API.HANDLE_EXCEPTIONS(
4829                                l_api_name,
4830                                G_PKG_NAME,
4831                                'OKL_API.G_RET_STS_ERROR',
4832                                x_msg_count,
4833                                x_msg_data,
4834                                '_PVT');
4835     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4836       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4837                               l_api_name,
4838                               G_PKG_NAME,
4839                               'OKL_API.G_RET_STS_UNEXP_ERROR',
4840                               x_msg_count,
4841                               x_msg_data,
4842                               '_PVT');
4843     WHEN OTHERS THEN
4844       x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
4845                               l_api_name,
4846                               G_PKG_NAME,
4847                               'OTHERS',
4848                               x_msg_count,
4849                               x_msg_data,
4850                               '_PVT');
4851 END Update_Asset_Cost;
4852 --Bug# 5530990
4853 
4854 --------------------------------------------------------------------------------------------------------------
4855 -- Local Procedures for creation of Txl Item Instance record
4856   PROCEDURE create_txl_itm_insts(
4857     p_api_version                  IN NUMBER,
4858     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
4859     x_return_status                OUT NOCOPY VARCHAR2,
4860     x_msg_count                    OUT NOCOPY NUMBER,
4861     x_msg_data                     OUT NOCOPY VARCHAR2,
4862     p_itiv_rec                     IN itiv_rec_type,
4863     x_trxv_rec                     OUT NOCOPY trxv_rec_type,
4864     x_itiv_rec                     OUT NOCOPY itiv_rec_type) IS
4865 
4866     l_trxv_rec               trxv_rec_type;
4867     l_itiv_rec               itiv_rec_type;
4868     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_TXL_ITM_INSTS';
4869 
4870     --Added by dpsingh for LE uptake
4871     CURSOR get_chr_id_csr(p_kle_id1 NUMBER) IS
4872     SELECT  DNZ_CHR_ID
4873     FROM OKC_K_LINES_B
4874     WHERE  ID = p_kle_id1;
4875 
4876     l_chr_id NUMBER;
4877     l_cntrct_number          OKC_K_HEADERS_B.CONTRACT_NUMBER%TYPE;
4878     l_legal_entity_id          NUMBER;
4879 
4880   BEGIN
4881     x_return_status   := OKL_API.G_RET_STS_SUCCESS;
4882     -- Call start_activity to create savepoint, check compatibility
4883     -- and initialize message list
4884     x_return_status := OKL_API.START_ACTIVITY (
4885                                l_api_name
4886                                ,p_init_msg_list
4887                                ,'_PVT'
4888                                ,x_return_status);
4889     -- Check if activity started successfully
4890     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4891        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4892     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4893        RAISE OKL_API.G_EXCEPTION_ERROR;
4894     END IF;
4895     -- Create New Header record and new Line record
4896     -- Before creating Header record
4897     -- we should make sure atleast the required record is given
4898     l_trxv_rec.tas_type            := 'CFA';
4899     x_return_status := get_try_id(p_try_name => G_TRY_NAME,
4900                                   x_try_id   => l_trxv_rec.try_id);
4901     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4902        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4903     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4904        RAISE OKL_API.G_EXCEPTION_ERROR;
4905     END IF;
4906     l_trxv_rec.tsu_code            := 'ENTERED';
4907     l_trxv_rec.date_trans_occurred := sysdate;
4908 
4909     --Added by dpsingh for LE Uptake
4910     OPEN get_chr_id_csr(p_itiv_rec.kle_id);
4911     FETCH get_chr_id_csr INTO l_chr_id;
4912     CLOSE get_chr_id_csr;
4913 
4914     l_legal_entity_id  := OKL_LEGAL_ENTITY_UTIL.get_khr_le_id( l_chr_id) ;
4915     IF  l_legal_entity_id IS NOT NULL THEN
4916        l_trxv_rec.legal_entity_id :=  l_legal_entity_id;
4917     ELSE
4918         -- get the contract number
4919        OPEN contract_num_csr(l_chr_id);
4920        FETCH contract_num_csr INTO l_cntrct_number;
4921        CLOSE contract_num_csr;
4922 	Okl_Api.set_message(p_app_name     => g_app_name,
4923                              p_msg_name     => 'OKL_LE_NOT_EXIST_CNTRCT',
4924 			     p_token1           =>  'CONTRACT_NUMBER',
4925 			     p_token1_value  =>  l_cntrct_number);
4926          RAISE OKL_API.G_EXCEPTION_ERROR;
4927     END IF;
4928     -- Now creating the new header record
4929     Create_asset_header(p_api_version    => p_api_version,
4930                         p_init_msg_list  => p_init_msg_list,
4931                         x_return_status  => x_return_status,
4932                         x_msg_count      => x_msg_count,
4933                         x_msg_data       => x_msg_data,
4934                         p_trxv_rec       => l_trxv_rec,
4935                         x_trxv_rec       => x_trxv_rec);
4936     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4937        l_trxv_rec                     :=  x_trxv_rec;
4938        l_trxv_rec.tsu_code            := 'ERROR';
4939        Update_asset_header(p_api_version    => p_api_version,
4940                            p_init_msg_list  => p_init_msg_list,
4941                            x_return_status  => x_return_status,
4942                            x_msg_count      => x_msg_count,
4943                            x_msg_data       => x_msg_data,
4944                            p_trxv_rec       => l_trxv_rec,
4945                            x_trxv_rec       => x_trxv_rec);
4946        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4947            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4948        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4949            RAISE OKL_API.G_EXCEPTION_ERROR;
4950        END IF;
4951        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4952     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4953        l_trxv_rec                     :=  x_trxv_rec;
4954        l_trxv_rec.tsu_code            := 'ERROR';
4955        Update_asset_header(p_api_version    => p_api_version,
4956                            p_init_msg_list  => p_init_msg_list,
4957                            x_return_status  => x_return_status,
4958                            x_msg_count      => x_msg_count,
4959                            x_msg_data       => x_msg_data,
4960                            p_trxv_rec       => l_trxv_rec,
4961                            x_trxv_rec       => x_trxv_rec);
4962        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4963           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4964        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4965           RAISE OKL_API.G_EXCEPTION_ERROR;
4966        END IF;
4967        RAISE OKL_API.G_EXCEPTION_ERROR;
4968     END IF;
4969     -- Now we are creating the new line record
4970     l_itiv_rec                 := p_itiv_rec;
4971     l_itiv_rec.tas_id          := x_trxv_rec.id;
4972     IF (l_itiv_rec.tal_type = OKL_API.G_MISS_CHAR OR
4973        l_itiv_rec.tal_type IS NUll) THEN
4974        l_itiv_rec.tal_type       := 'CFA';
4975     END IF;
4976     -- evaluate conditions, build outcomes for true conditions and
4977     -- put them on outcome queue
4978     OKL_TXL_ITM_INSTS_PUB.create_txl_itm_insts(
4979                        p_api_version    => p_api_version,
4980                        p_init_msg_list  => p_init_msg_list,
4981                        x_return_status  => x_return_status,
4982                        x_msg_count      => x_msg_count,
4983                        x_msg_data       => x_msg_data,
4984                        p_iipv_rec       => l_itiv_rec,
4985                        x_iipv_rec       => x_itiv_rec);
4986     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
4987       OKL_API.set_message(p_app_name     => G_APP_NAME,
4988                           p_msg_name     => G_ITI_ID);
4989        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
4990     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
4991       OKL_API.set_message(p_app_name     => G_APP_NAME,
4992                           p_msg_name     => G_ITI_ID);
4993        RAISE OKL_API.G_EXCEPTION_ERROR;
4994     END IF;
4995     OKL_API.END_ACTIVITY (x_msg_count,
4996                           x_msg_data );
4997   EXCEPTION
4998     WHEN OKL_API.G_EXCEPTION_ERROR THEN
4999     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5000                                l_api_name,
5001                                G_PKG_NAME,
5002                                'OKL_API.G_RET_STS_ERROR',
5003                                x_msg_count,
5004                                x_msg_data,
5005                                '_PVT');
5006     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5007     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5008                               l_api_name,
5009                               G_PKG_NAME,
5010                               'OKL_API.G_RET_STS_UNEXP_ERROR',
5011                               x_msg_count,
5012                               x_msg_data,
5013                               '_PVT');
5014     WHEN OTHERS THEN
5015       OKL_API.set_message(p_app_name     => G_APP_NAME,
5016                           p_msg_name     => G_ITI_ID);
5017     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5018                               l_api_name,
5019                               G_PKG_NAME,
5020                               'OTHERS',
5021                               x_msg_count,
5022                               x_msg_data,
5023                               '_PVT');
5024   END create_txl_itm_insts;
5025 --------------------------------------------------------------------------------------------------------------
5026 -- Local Procedures for update of Txl Item Instance record
5027   PROCEDURE update_txl_itm_insts(
5028     p_api_version                  IN NUMBER,
5029     p_init_msg_list                IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
5030     x_return_status                OUT NOCOPY VARCHAR2,
5031     x_msg_count                    OUT NOCOPY NUMBER,
5032     x_msg_data                     OUT NOCOPY VARCHAR2,
5033     p_itiv_rec                     IN itiv_rec_type,
5034     x_itiv_rec                     OUT NOCOPY itiv_rec_type) IS
5035 
5036     l_api_name      CONSTANT VARCHAR2(30) := 'UPD_TXL_ITM_INSTS';
5037   BEGIN
5038     x_return_status     := OKL_API.G_RET_STS_SUCCESS;
5039     -- Call start_activity to create savepoint, check compatibility
5040     -- and initialize message list
5041     x_return_status := OKL_API.START_ACTIVITY (
5042                                l_api_name
5043                                ,p_init_msg_list
5044                                ,'_PVT'
5045                                ,x_return_status);
5046     -- Check if activity started successfully
5047     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5048        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5049     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5050        RAISE OKL_API.G_EXCEPTION_ERROR;
5051     END IF;
5052     -- evaluate conditions, build outcomes for true conditions and
5053     -- put them on outcome queue
5054     OKL_TXL_ITM_INSTS_PUB.update_txl_itm_insts(p_api_version    => p_api_version,
5055                                                p_init_msg_list  => p_init_msg_list,
5056                                                x_return_status  => x_return_status,
5057                                                x_msg_count      => x_msg_count,
5058                                                x_msg_data       => x_msg_data,
5059                                                p_iipv_rec       => p_itiv_rec,
5060                                                x_iipv_rec       => x_itiv_rec);
5061     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5062        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5063     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5064        RAISE OKL_API.G_EXCEPTION_ERROR;
5065     END IF;
5066     OKL_API.END_ACTIVITY (x_msg_count,
5067                           x_msg_data );
5068   EXCEPTION
5069     WHEN OKL_API.G_EXCEPTION_ERROR THEN
5070       OKL_API.set_message(p_app_name     => G_APP_NAME,
5071                           p_msg_name     => G_ITI_ID);
5072     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5073                                l_api_name,
5074                                G_PKG_NAME,
5075                                'OKL_API.G_RET_STS_ERROR',
5076                                x_msg_count,
5077                                x_msg_data,
5078                                '_PVT');
5079     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5080       OKL_API.set_message(p_app_name     => G_APP_NAME,
5081                           p_msg_name     => G_ITI_ID);
5082     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5083                               l_api_name,
5084                               G_PKG_NAME,
5085                               'OKL_API.G_RET_STS_UNEXP_ERROR',
5086                               x_msg_count,
5087                               x_msg_data,
5088                               '_PVT');
5089     WHEN OTHERS THEN
5090       OKL_API.set_message(p_app_name     => G_APP_NAME,
5091                           p_msg_name     => G_ITI_ID);
5092     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5093                               l_api_name,
5094                               G_PKG_NAME,
5095                               'OTHERS',
5096                               x_msg_count,
5097                               x_msg_data,
5098                               '_PVT');
5099   END update_txl_itm_insts;
5100 ---------------------------------------------------------------------------------------------
5101   PROCEDURE Create_financial_asset_line(
5102             p_api_version    IN  NUMBER,
5103             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
5104             x_return_status  OUT NOCOPY VARCHAR2,
5105             x_msg_count      OUT NOCOPY NUMBER,
5106             x_msg_data       OUT NOCOPY VARCHAR2,
5107             p_clev_rec       IN  clev_rec_type,
5108             p_klev_rec       IN  klev_rec_type,
5109             x_clev_rec       OUT NOCOPY clev_rec_type,
5110             x_klev_rec       OUT NOCOPY klev_rec_type) IS
5111     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_FIN_AST_LINES';
5112     l_clev_rec               clev_rec_type;
5113   BEGIN
5114     x_return_status  := OKL_API.G_RET_STS_SUCCESS;
5115     -- Call start_activity to create savepoint, check compatibility
5116     -- and initialize message list
5117     x_return_status := OKL_API.START_ACTIVITY (
5118                                l_api_name
5119                                ,p_init_msg_list
5120                                ,'_PVT'
5121                                ,x_return_status);
5122     -- Check if activity started successfully
5123     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5124        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5125     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5126        RAISE OKL_API.G_EXCEPTION_ERROR;
5127     END IF;
5128     l_clev_rec := p_clev_rec;
5129 -- # 4334903 use new function default_contract_line_values
5130 /*
5131     IF (p_clev_rec.sts_code IS NULL OR
5132        p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
5133       x_return_status := get_sts_code(p_dnz_chr_id => p_clev_rec.dnz_chr_id,
5134                                       p_cle_id     => null,
5135                                       x_sts_code   => l_clev_rec.sts_code);
5136       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5137          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5138       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5139          RAISE OKL_API.G_EXCEPTION_ERROR;
5140       END IF;
5141     END IF;
5142     IF l_clev_rec.sts_code NOT IN ('ENTERED',
5143                                    'SIGNED',
5144                                    'ACTIVE',
5145                                    'HOLD',
5146                                    'NEW',
5147                                    'PENDING_APPROVAL',
5148                                    'APPROVED',
5149                                    'COMPLETE',
5150                                    'INCOMPLETE',
5151                                    'PASSED') THEN
5152       OKL_API.set_message(p_app_name     => G_APP_NAME,
5153                           p_msg_name     => G_STATUS,
5154                           p_token1       => 'STATUS',
5155                           p_token1_value => l_clev_rec.sts_code);
5156        RAISE OKL_API.G_EXCEPTION_ERROR;
5157     END IF;
5158     IF (p_clev_rec.end_date IS NULL OR
5159        p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
5160       x_return_status := get_end_date(p_dnz_chr_id => p_clev_rec.dnz_chr_id,
5161                                       p_cle_id     => null,
5162                                       x_end_date   => l_clev_rec.end_date);
5163       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5164          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5165       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5166          RAISE OKL_API.G_EXCEPTION_ERROR;
5167       END IF;
5168     END IF;
5169     IF (p_clev_rec.start_date IS NULL OR
5170        p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
5171       x_return_status := get_start_date(p_dnz_chr_id => p_clev_rec.dnz_chr_id,
5172                                         p_cle_id     => null,
5173                                         x_start_date => l_clev_rec.start_date);
5174       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5175          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5176       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5177          RAISE OKL_API.G_EXCEPTION_ERROR;
5178       END IF;
5179     END IF;
5180     IF (p_clev_rec.currency_code IS NULL OR
5181        p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
5182       x_return_status := get_currency_code(p_dnz_chr_id    => p_clev_rec.dnz_chr_id,
5183                                            p_cle_id        => null,
5184                                            x_currency_code => l_clev_rec.currency_code);
5185       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5186          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5187       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5188          RAISE OKL_API.G_EXCEPTION_ERROR;
5189       END IF;
5190     END IF;
5191 */
5192     IF ((p_clev_rec.sts_code IS NULL OR
5193          p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) OR
5194         (p_clev_rec.end_date IS NULL OR
5195          p_clev_rec.end_date = OKL_API.G_MISS_DATE) OR
5196         (p_clev_rec.start_date IS NULL OR
5197          p_clev_rec.start_date = OKL_API.G_MISS_DATE) OR
5198         (p_clev_rec.currency_code IS NULL OR
5199          p_clev_rec.currency_code = OKL_API.G_MISS_CHAR)
5200        ) THEN
5201        x_return_status := default_contract_line_values(p_dnz_chr_id    => p_clev_rec.dnz_chr_id,
5202                                                        p_cle_id        => null,
5203                                                        p_clev_rec => l_clev_rec);
5204       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5205          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5206       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5207          RAISE OKL_API.G_EXCEPTION_ERROR;
5208       END IF;
5209     END IF;
5210     IF l_clev_rec.sts_code NOT IN ('ENTERED',
5211                                    'SIGNED',
5212                                    'ACTIVE',
5213                                    'HOLD',
5214                                    'NEW',
5215                                    'PENDING_APPROVAL',
5216                                    'APPROVED',
5217                                    'COMPLETE',
5218                                    'INCOMPLETE',
5219                                    'PASSED') THEN
5220       OKL_API.set_message(p_app_name     => G_APP_NAME,
5221                           p_msg_name     => G_STATUS,
5222                           p_token1       => 'STATUS',
5223                           p_token1_value => l_clev_rec.sts_code);
5224        RAISE OKL_API.G_EXCEPTION_ERROR;
5225     END IF;
5226 
5227     OKL_CONTRACT_PUB.create_contract_line(p_api_version   => p_api_version,
5228                                           p_init_msg_list => p_init_msg_list,
5229                                           x_return_status => x_return_status,
5230                                           x_msg_count     => x_msg_count,
5231                                           x_msg_data      => x_msg_data,
5232                                           p_clev_rec      => l_clev_rec,
5233                                           p_klev_rec      => p_klev_rec,
5234                                           x_clev_rec      => x_clev_rec,
5235                                           x_klev_rec      => x_klev_rec);
5236     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5237        OKL_API.set_message(p_app_name     => G_APP_NAME,
5238                            p_msg_name     => G_CREATION_FIN_LINE);
5239        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5240     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5241        OKL_API.set_message(p_app_name     => G_APP_NAME,
5242                            p_msg_name     => G_CREATION_FIN_LINE);
5243        RAISE OKL_API.G_EXCEPTION_ERROR;
5244     END IF;
5245     OKL_API.END_ACTIVITY (x_msg_count,
5246                           x_msg_data );
5247   EXCEPTION
5248     WHEN OKL_API.G_EXCEPTION_ERROR THEN
5249     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5250                                l_api_name,
5251                                G_PKG_NAME,
5252                                'OKL_API.G_RET_STS_ERROR',
5253                                x_msg_count,
5254                                x_msg_data,
5255                                '_PVT');
5256     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5257     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5258                               l_api_name,
5259                               G_PKG_NAME,
5260                               'OKL_API.G_RET_STS_UNEXP_ERROR',
5261                               x_msg_count,
5262                               x_msg_data,
5263                               '_PVT');
5264     WHEN OTHERS THEN
5265     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5266                               l_api_name,
5267                               G_PKG_NAME,
5268                               'OTHERS',
5269                               x_msg_count,
5270                               x_msg_data,
5271                               '_PVT');
5272   END Create_financial_asset_line;
5273 ---------------------------------------------------------------------------------------------
5274   PROCEDURE update_financial_asset_line(
5275             p_api_version    IN  NUMBER,
5276             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
5277             x_return_status  OUT NOCOPY VARCHAR2,
5278             x_msg_count      OUT NOCOPY NUMBER,
5279             x_msg_data       OUT NOCOPY VARCHAR2,
5280             p_clev_rec       IN  clev_rec_type,
5281             p_klev_rec       IN  klev_rec_type,
5282             x_clev_rec       OUT NOCOPY clev_rec_type,
5283             x_klev_rec       OUT NOCOPY klev_rec_type) IS
5284     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_FIN_AST_LINES';
5285     l_return_status          VARCHAR2(1)  := OKL_API.G_RET_STS_SUCCESS;
5286   BEGIN
5287     x_return_status  := OKL_API.G_RET_STS_SUCCESS;
5288     -- Call start_activity to create savepoint, check compatibility
5289     -- and initialize message list
5290     x_return_status := OKL_API.START_ACTIVITY (
5291                                l_api_name
5292                                ,p_init_msg_list
5293                                ,'_PVT'
5294                                ,x_return_status);
5295     -- Check if activity started successfully
5296     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5297        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5298     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5299        RAISE OKL_API.G_EXCEPTION_ERROR;
5300     END IF;
5301     -- Calling the Process
5302     OKL_CONTRACT_PUB.update_contract_line(p_api_version   => p_api_version,
5303                                           p_init_msg_list => p_init_msg_list,
5304                                           x_return_status => x_return_status,
5305                                           x_msg_count     => x_msg_count,
5306                                           x_msg_data      => x_msg_data,
5307                                           p_clev_rec      => p_clev_rec,
5308                                           p_klev_rec      => p_klev_rec,
5309                                           x_clev_rec      => x_clev_rec,
5310                                           x_klev_rec      => x_klev_rec);
5311     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5312        OKL_API.set_message(p_app_name     => G_APP_NAME,
5313                            p_msg_name     => G_UPDATING_FIN_LINE);
5314        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5315     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5316        OKL_API.set_message(p_app_name     => G_APP_NAME,
5317                            p_msg_name     => G_UPDATING_FIN_LINE);
5318        RAISE OKL_API.G_EXCEPTION_ERROR;
5319     END IF;
5320     OKL_API.END_ACTIVITY (x_msg_count,
5321                           x_msg_data );
5322   EXCEPTION
5323     WHEN OKL_API.G_EXCEPTION_ERROR THEN
5324     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5325                                l_api_name,
5326                                G_PKG_NAME,
5327                                'OKL_API.G_RET_STS_ERROR',
5328                                x_msg_count,
5329                                x_msg_data,
5330                                '_PVT');
5331     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5332     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5333                               l_api_name,
5334                               G_PKG_NAME,
5335                               'OKL_API.G_RET_STS_UNEXP_ERROR',
5336                               x_msg_count,
5337                               x_msg_data,
5338                               '_PVT');
5339     WHEN OTHERS THEN
5340     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5341                               l_api_name,
5342                               G_PKG_NAME,
5343                               'OTHERS',
5344                               x_msg_count,
5345                               x_msg_data,
5346                               '_PVT');
5347   END update_financial_asset_line;
5348 
5349 ---------------
5350 --Bug# 2994971
5351 ---------------
5352   PROCEDURE populate_insurance_category(p_api_version   IN NUMBER,
5353                                         p_init_msg_list IN VARCHAR2 DEFAULT OKL_API.G_FALSE,
5354                                         x_return_status OUT NOCOPY VARCHAR2,
5355                                         x_msg_count     OUT NOCOPY NUMBER,
5356                                         x_msg_data      OUT NOCOPY VARCHAR2,
5357                                         p_cle_id        IN  NUMBER,
5358                                         p_inv_item_id   IN  NUMBER,
5359                                         p_inv_org_id    IN  NUMBER) IS
5360 
5361   l_api_name   CONSTANT VARCHAR2(30) := 'POPULATE_INS_CATEGORY';
5362 
5363   --cursor to get asset category
5364   cursor l_msi_csr(p_inv_item_id in number,
5365                    p_inv_org_id  in number) is
5366   select msi.asset_category_id
5367   from   mtl_system_items msi
5368   where  msi.organization_id   = p_inv_org_id
5369   and    msi.inventory_item_id = p_inv_item_id;
5370 
5371   l_asset_category_id mtl_system_items.asset_category_id%TYPE default NULL;
5372   l_clev_rec  okl_okc_migration_pvt.clev_rec_type;
5373   l_klev_rec  okl_contract_pub.klev_rec_type;
5374   lx_clev_rec  okl_okc_migration_pvt.clev_rec_type;
5375   lx_klev_rec  okl_contract_pub.klev_rec_type;
5376 
5377 
5378   BEGIN
5379 
5380     x_return_status          := OKL_API.G_RET_STS_SUCCESS;
5381     -- Call start_activity to create savepoint, check compatibility
5382     -- and initialize message list
5383     x_return_status := OKL_API.START_ACTIVITY (l_api_name
5384                                                ,p_init_msg_list
5385                                                ,'_PVT'
5386                                                ,x_return_status);
5387     -- Check if activity started successfully
5388     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5389        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5390     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5391        RAISE OKL_API.G_EXCEPTION_ERROR;
5392     END IF;
5393 
5394     --fetch asset category
5395     l_asset_category_id := NULL;
5396     open l_msi_csr (p_inv_item_id => p_inv_item_id,
5397                     p_inv_org_id  => p_inv_org_id);
5398     fetch l_msi_csr into l_asset_category_id;
5399     if l_msi_csr%NOTFOUND then
5400         null;
5401     end if;
5402     close l_msi_csr;
5403 
5404 
5405     l_clev_rec.id := p_cle_id;
5406     l_klev_rec.id := p_cle_id;
5407     l_klev_rec.item_insurance_category := l_asset_category_id;
5408 
5409     okl_contract_pub.update_contract_line(
5410                          p_api_version   => p_api_version,
5411                          p_init_msg_list => p_init_msg_list,
5412                          x_return_status => x_return_status,
5413                          x_msg_count     => x_msg_count,
5414                          x_msg_data      => x_msg_data,
5415                          p_clev_rec      => l_clev_rec,
5416                          p_klev_rec      => l_klev_rec,
5417                          x_clev_rec      => lx_clev_rec,
5418                          x_klev_rec      => lx_klev_rec
5419                          );
5420 
5421     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5422         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5423     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5424         RAISE OKL_API.G_EXCEPTION_ERROR;
5425     END IF;
5426 
5427     OKL_API.END_ACTIVITY (x_msg_count,
5428                           x_msg_data );
5429   EXCEPTION
5430     WHEN OKL_API.G_EXCEPTION_ERROR THEN
5431     if l_msi_csr%ISOPEN then
5432        close l_msi_csr;
5433     end if;
5434     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5435                                l_api_name,
5436                                G_PKG_NAME,
5437                                'OKL_API.G_RET_STS_ERROR',
5438                                x_msg_count,
5439                                x_msg_data,
5440                                '_PVT');
5441     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5442     if l_msi_csr%ISOPEN then
5443        close l_msi_csr;
5444     end if;
5445     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5446                                l_api_name,
5447                                G_PKG_NAME,
5448                                'OKL_API.G_RET_STS_UNEXP_ERROR',
5449                                x_msg_count,
5450                                x_msg_data,
5451                                '_PVT');
5452     WHEN OTHERS THEN
5453     if l_msi_csr%ISOPEN then
5454        close l_msi_csr;
5455     end if;
5456     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5457                               l_api_name,
5458                               G_PKG_NAME,
5459                               'OTHERS',
5460                               x_msg_count,
5461                               x_msg_data,
5462                               '_PVT');
5463 End POPULATE_INSURANCE_CATEGORY;
5464 -------------------
5465 --Bug# 2994971
5466 ------------------
5467 
5468 ---22------------------------------------------------------------------------------------------
5469   PROCEDURE Create_model_line_item(p_api_version    IN  NUMBER,
5470                                    p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
5471                                    x_return_status  OUT NOCOPY VARCHAR2,
5472                                    x_msg_count      OUT NOCOPY NUMBER,
5473                                    x_msg_data       OUT NOCOPY VARCHAR2,
5474 -- 4414408                                   p_lty_code       IN  OKC_LINE_STYLES_V.LTY_CODE%TYPE,
5475                                    p_clev_rec       IN  clev_rec_type,
5476                                    p_klev_rec       IN  klev_rec_type,
5477                                    p_cimv_rec       IN  cimv_rec_type,
5478                                    x_clev_rec       OUT NOCOPY clev_rec_type,
5479                                    x_klev_rec       OUT NOCOPY klev_rec_type,
5480                                    x_cimv_rec       OUT NOCOPY cimv_rec_type) IS
5481     l_clev_rec               clev_rec_type;
5482     r_clev_rec               clev_rec_type;
5483     l_talv_rec               talv_rec_type;
5484     l_cimv_rec               cimv_rec_type;
5485 --    l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
5486     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_MODEL_ITEM';
5487 
5488     ------------------
5489     --Bug# 2994971
5490     -----------------
5491     l_inv_item_id  number;
5492     l_inv_org_id   number;
5493     l_asset_cle_id number;
5494 
5495   BEGIN
5496     x_return_status          := OKL_API.G_RET_STS_SUCCESS;
5497     -- Call start_activity to create savepoint, check compatibility
5498     -- and initialize message list
5499     x_return_status := OKL_API.START_ACTIVITY (l_api_name
5500                                                ,p_init_msg_list
5501                                                ,'_PVT'
5502                                                ,x_return_status);
5503     -- Check if activity started successfully
5504     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5505        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5506     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5507        RAISE OKL_API.G_EXCEPTION_ERROR;
5508     END IF;
5509     -- 4414408 redundant validation
5510 /*
5511     -- Check the cle_id that is of the top Fin Asset line
5512     validate_cle_lse_id(p_clev_rec      => p_clev_rec,
5513                         p_lty_code      => p_lty_code,
5514                         x_lty_code      => l_lty_code,
5515                         x_return_status => x_return_status);
5516     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5517        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5518     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5519        RAISE OKL_API.G_EXCEPTION_ERROR;
5520     END IF;
5521 */
5522 -- 4414408
5523 --  IF l_lty_code = G_FIN_LINE_LTY_CODE THEN
5524        r_clev_rec := p_clev_rec;
5525 
5526 -- # 4334903 use new function default_contract_line_values
5527 /*
5528        IF (p_clev_rec.sts_code IS NULL OR
5529           p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
5530          x_return_status := get_sts_code(p_dnz_chr_id => null,
5531                                          p_cle_id     => p_clev_rec.cle_id,
5532                                          x_sts_code   => r_clev_rec.sts_code);
5533          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5534             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5535          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5536             RAISE OKL_API.G_EXCEPTION_ERROR;
5537          END IF;
5538        END IF;
5539        IF (p_clev_rec.end_date IS NULL OR
5540           p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
5541          x_return_status := get_end_date(p_dnz_chr_id => null,
5542                                          p_cle_id     => p_clev_rec.cle_id,
5543                                          x_end_date   => r_clev_rec.end_date);
5544          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5545             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5546          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5547             RAISE OKL_API.G_EXCEPTION_ERROR;
5548          END IF;
5549        END IF;
5550      IF (p_clev_rec.start_date IS NULL OR
5551           p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
5552          x_return_status := get_start_date(p_dnz_chr_id => null,
5553                                            p_cle_id     => p_clev_rec.cle_id,
5554                                            x_start_date => r_clev_rec.start_date);
5555          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5556             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5557          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5558             RAISE OKL_API.G_EXCEPTION_ERROR;
5559          END IF;
5560        END IF;
5561        IF (p_clev_rec.currency_code IS NULL OR
5562           p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
5563          x_return_status := get_currency_code(p_dnz_chr_id    => null,
5564                                               p_cle_id        => p_clev_rec.cle_id,
5565                                               x_currency_code => r_clev_rec.currency_code);
5566          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5567            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5568          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5569            RAISE OKL_API.G_EXCEPTION_ERROR;
5570          END IF;
5571        END IF;
5572 */
5573 
5574     IF ((p_clev_rec.sts_code IS NULL OR
5575          p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) OR
5576         (p_clev_rec.end_date IS NULL OR
5577          p_clev_rec.end_date = OKL_API.G_MISS_DATE) OR
5578         (p_clev_rec.start_date IS NULL OR
5579          p_clev_rec.start_date = OKL_API.G_MISS_DATE) OR
5580         (p_clev_rec.currency_code IS NULL OR
5581          p_clev_rec.currency_code = OKL_API.G_MISS_CHAR)
5582        ) THEN
5583        x_return_status := default_contract_line_values(p_dnz_chr_id    => null,
5584                                                        p_cle_id        => r_clev_rec.cle_id,
5585                                                        p_clev_rec      => r_clev_rec);
5586       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5587          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5588       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5589          RAISE OKL_API.G_EXCEPTION_ERROR;
5590       END IF;
5591     END IF;
5592 
5593        -- Now the all the records are there we can create Model Line
5594        OKL_CONTRACT_PUB.create_contract_line(p_api_version   => p_api_version,
5595                                              p_init_msg_list => p_init_msg_list,
5596                                              x_return_status => x_return_status,
5597                                              x_msg_count     => x_msg_count,
5598                                              x_msg_data      => x_msg_data,
5599                                              p_clev_rec      => r_clev_rec,
5600                                              p_klev_rec      => p_klev_rec,
5601                                              x_clev_rec      => x_clev_rec,
5602                                              x_klev_rec      => x_klev_rec);
5603        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5604           OKL_API.set_message(p_app_name     => G_APP_NAME,
5605                               p_msg_name     => G_CREATION_MODEL_LINE);
5606           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5607        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5608           OKL_API.set_message(p_app_name     => G_APP_NAME,
5609                               p_msg_name     => G_CREATION_MODEL_LINE);
5610           RAISE OKL_API.G_EXCEPTION_ERROR;
5611        END IF;
5612        l_cimv_rec                   := p_cimv_rec;
5613        l_cimv_rec.cle_id            := x_clev_rec.id;
5614        l_cimv_rec.dnz_chr_id        := x_clev_rec.dnz_chr_id;
5615        l_cimv_rec.jtot_object1_code := 'OKX_SYSITEM';
5616        l_cimv_rec.exception_yn      := 'N';
5617        -- Creation of Item Record for the above record information
5618        OKL_OKC_MIGRATION_PVT.create_contract_item(p_api_version   => p_api_version,
5619                                                   p_init_msg_list => p_init_msg_list,
5620                                                   x_return_status => x_return_status,
5621                                                   x_msg_count     => x_msg_count,
5622                                                   x_msg_data      => x_msg_data,
5623                                                   p_cimv_rec      => l_cimv_rec,
5624                                                   x_cimv_rec      => x_cimv_rec);
5625        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5626           OKL_API.set_message(p_app_name     => G_APP_NAME,
5627                               p_msg_name     => G_CREATION_MODEL_ITEM);
5628           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5629        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5630           OKL_API.set_message(p_app_name     => G_APP_NAME,
5631                               p_msg_name     => G_CREATION_MODEL_ITEM);
5632           RAISE OKL_API.G_EXCEPTION_ERROR;
5633        END IF;
5634 
5635        ---------------
5636        --Bug# 2994971
5637        ---------------
5638        If nvl(x_cimv_rec.object1_id1,okl_api.g_miss_char) <> OKL_API.G_MISS_CHAR and
5639           nvl(x_cimv_rec.object1_id2,okl_api.g_miss_char) <> OKL_API.G_MISS_CHAR then
5640 
5641            --Bug# 3438811 :
5642            --l_inv_item_id  := to_char(x_cimv_rec.object1_id1);
5643            --l_inv_org_id   := to_char(x_cimv_rec.object1_id2);
5644            l_inv_item_id  := to_number(x_cimv_rec.object1_id1);
5645            l_inv_org_id   := to_number(x_cimv_rec.object1_id2);
5646            l_asset_cle_id := x_clev_rec.cle_id;
5647 
5648            populate_insurance_category(p_api_version   => p_api_version,
5649                                        p_init_msg_list => p_init_msg_list,
5650                                        x_return_status => x_return_status,
5651                                        x_msg_count     => x_msg_count,
5652                                        x_msg_data      => x_msg_data,
5653                                        p_cle_id        => l_asset_cle_id,
5654                                        p_inv_item_id   => l_inv_item_id,
5655                                        p_inv_org_id    => l_inv_org_id);
5656            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5657                RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5658            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5659                RAISE OKL_API.G_EXCEPTION_ERROR;
5660            END IF;
5661         End If;
5662        ---------------
5663        --Bug# 2994971
5664        ---------------
5665 
5666 --   #4414408
5667 --  ELSE
5668 --     OKL_API.set_message(p_app_name     => G_APP_NAME,
5669 --                         p_msg_name     => G_LINE_STYLE);
5670 --     RAISE OKL_API.G_EXCEPTION_ERROR;
5671 --  END IF;
5672     OKL_API.END_ACTIVITY (x_msg_count,
5673                           x_msg_data );
5674   EXCEPTION
5675     WHEN OKL_API.G_EXCEPTION_ERROR THEN
5676     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5677                                l_api_name,
5678                                G_PKG_NAME,
5679                                'OKL_API.G_RET_STS_ERROR',
5680                                x_msg_count,
5681                                x_msg_data,
5682                                '_PVT');
5683     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5684     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5685                                l_api_name,
5686                                G_PKG_NAME,
5687                                'OKL_API.G_RET_STS_UNEXP_ERROR',
5688                                x_msg_count,
5689                                x_msg_data,
5690                                '_PVT');
5691     WHEN OTHERS THEN
5692     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5693                               l_api_name,
5694                               G_PKG_NAME,
5695                               'OTHERS',
5696                               x_msg_count,
5697                               x_msg_data,
5698                               '_PVT');
5699   END Create_model_line_item;
5700 ---------------------------------------------------------------------------------------------
5701   PROCEDURE update_model_line_item(p_api_version    IN  NUMBER,
5702                                    p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
5703                                    x_return_status  OUT NOCOPY VARCHAR2,
5704                                    x_msg_count      OUT NOCOPY NUMBER,
5705                                    x_msg_data       OUT NOCOPY VARCHAR2,
5706                                    p_lty_code       IN  OKC_LINE_STYLES_V.LTY_CODE%TYPE,
5707                                    p_clev_rec       IN  clev_rec_type,
5708                                    p_klev_rec       IN  klev_rec_type,
5709                                    p_cimv_rec       IN  cimv_rec_type,
5710                                    x_clev_rec       OUT NOCOPY clev_rec_type,
5711                                    x_klev_rec       OUT NOCOPY klev_rec_type,
5712                                    x_cimv_rec       OUT NOCOPY cimv_rec_type) IS
5713 
5714     l_clev_rec               clev_rec_type;
5715     l_talv_rec               talv_rec_type;
5716     l_cimv_rec               cimv_rec_type;
5717     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
5718     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_MODEL_ITEM';
5719 
5720     ------------------
5721     --Bug# 2994971
5722     -----------------
5723     l_inv_item_id  number;
5724     l_inv_org_id   number;
5725     l_asset_cle_id number;
5726 
5727   BEGIN
5728     x_return_status          := OKL_API.G_RET_STS_SUCCESS;
5729     -- Call start_activity to create savepoint, check compatibility
5730     -- and initialize message list
5731     x_return_status := OKL_API.START_ACTIVITY (l_api_name
5732                                                ,p_init_msg_list
5733                                                ,'_PVT'
5734                                                ,x_return_status);
5735     -- Check if activity started successfully
5736     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5737        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5738     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5739        RAISE OKL_API.G_EXCEPTION_ERROR;
5740     END IF;
5741     -- Check the cle_id that is of the top Fin Asset line
5742     validate_cle_lse_id(p_clev_rec      => p_clev_rec,
5743                         p_lty_code      => p_lty_code,
5744                         x_lty_code      => l_lty_code,
5745                         x_return_status => x_return_status);
5746     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5747        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5748     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5749        RAISE OKL_API.G_EXCEPTION_ERROR;
5750     END IF;
5751     IF l_lty_code = G_FIN_LINE_LTY_CODE THEN
5752        -- Now the all the records are there we can create Model Line
5753        OKL_CONTRACT_PUB.update_contract_line(p_api_version   => p_api_version,
5754                                              p_init_msg_list => p_init_msg_list,
5755                                              x_return_status => x_return_status,
5756                                              x_msg_count     => x_msg_count,
5757                                              x_msg_data      => x_msg_data,
5758                                              p_clev_rec      => p_clev_rec,
5759                                              p_klev_rec      => p_klev_rec,
5760                                              x_clev_rec      => x_clev_rec,
5761                                              x_klev_rec      => x_klev_rec);
5762        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5763           OKL_API.set_message(p_app_name     => G_APP_NAME,
5764                               p_msg_name     => G_UPDATING_MODEL_LINE);
5765           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5766        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5767           OKL_API.set_message(p_app_name     => G_APP_NAME,
5768                               p_msg_name     => G_UPDATING_MODEL_LINE);
5769           RAISE OKL_API.G_EXCEPTION_ERROR;
5770        END IF;
5771        l_cimv_rec                      := p_cimv_rec;
5772        IF l_cimv_rec.cle_id <> x_clev_rec.id THEN
5773           OKL_API.set_message(p_app_name     => G_APP_NAME,
5774                               p_msg_name     => G_ITEM_RECORD);
5775           RAISE OKL_API.G_EXCEPTION_ERROR;
5776        END IF;
5777        IF l_cimv_rec.dnz_chr_id <> x_clev_rec.dnz_chr_id THEN
5778           OKL_API.set_message(p_app_name     => G_APP_NAME,
5779                               p_msg_name     => G_ITEM_RECORD);
5780           RAISE OKL_API.G_EXCEPTION_ERROR;
5781        END IF;
5782        -- Creation of Item Record for the above record information
5783        OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version   => p_api_version,
5784                                                   p_init_msg_list => p_init_msg_list,
5785                                                   x_return_status => x_return_status,
5786                                                   x_msg_count     => x_msg_count,
5787                                                   x_msg_data      => x_msg_data,
5788                                                   p_cimv_rec      => l_cimv_rec,
5789                                                   x_cimv_rec      => x_cimv_rec);
5790        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5791           OKL_API.set_message(p_app_name     => G_APP_NAME,
5792                               p_msg_name     => G_UPDATING_MODEL_ITEM);
5793           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5794        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5795           OKL_API.set_message(p_app_name     => G_APP_NAME,
5796                               p_msg_name     => G_UPDATING_MODEL_ITEM);
5797           RAISE OKL_API.G_EXCEPTION_ERROR;
5798        END IF;
5799 
5800        ---------------
5801        --Bug# 2994971
5802        ---------------
5803        If nvl(x_cimv_rec.object1_id1,okl_api.g_miss_char) <> OKL_API.G_MISS_CHAR and
5804           nvl(x_cimv_rec.object1_id2,okl_api.g_miss_char) <> OKL_API.G_MISS_CHAR then
5805 
5806            --Bug# 3438811 :
5807            --l_inv_item_id  := to_char(x_cimv_rec.object1_id1);
5808            --l_inv_org_id   := to_char(x_cimv_rec.object1_id2);
5809            l_inv_item_id  := to_number(x_cimv_rec.object1_id1);
5810            l_inv_org_id   := to_number(x_cimv_rec.object1_id2);
5811            l_asset_cle_id := x_clev_rec.cle_id;
5812 
5813            populate_insurance_category(p_api_version   => p_api_version,
5814                                        p_init_msg_list => p_init_msg_list,
5815                                        x_return_status => x_return_status,
5816                                        x_msg_count     => x_msg_count,
5817                                        x_msg_data      => x_msg_data,
5818                                        p_cle_id        => l_asset_cle_id,
5819                                        p_inv_item_id   => l_inv_item_id,
5820                                        p_inv_org_id    => l_inv_org_id);
5821            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5822                RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5823            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5824                RAISE OKL_API.G_EXCEPTION_ERROR;
5825            END IF;
5826         End If;
5827        ---------------
5828        --Bug# 2994971
5829        ---------------
5830 
5831 
5832     ELSE
5833        OKL_API.set_message(p_app_name     => G_APP_NAME,
5834                            p_msg_name     => G_LINE_STYLE);
5835        RAISE OKL_API.G_EXCEPTION_ERROR;
5836     END IF;
5837     OKL_API.END_ACTIVITY (x_msg_count,
5838                           x_msg_data );
5839   EXCEPTION
5840     WHEN OKL_API.G_EXCEPTION_ERROR THEN
5841     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
5842                                l_api_name,
5843                                G_PKG_NAME,
5844                                'OKL_API.G_RET_STS_ERROR',
5845                                x_msg_count,
5846                                x_msg_data,
5847                                '_PVT');
5848     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5849     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5850                                l_api_name,
5851                                G_PKG_NAME,
5852                                'OKL_API.G_RET_STS_UNEXP_ERROR',
5853                                x_msg_count,
5854                                x_msg_data,
5855                                '_PVT');
5856     WHEN OTHERS THEN
5857     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
5858                               l_api_name,
5859                               G_PKG_NAME,
5860                               'OTHERS',
5861                               x_msg_count,
5862                               x_msg_data,
5863                               '_PVT');
5864   END update_model_line_item;
5865 --------------------------------------------------------------------------------------------------
5866   PROCEDURE create_fa_line_item(p_api_version    IN  NUMBER,
5867                                 p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
5868                                 x_return_status  OUT NOCOPY VARCHAR2,
5869                                 x_msg_count      OUT NOCOPY NUMBER,
5870                                 x_msg_data       OUT NOCOPY VARCHAR2,
5871 --                              p_lty_code       IN  OKC_LINE_STYLES_V.LTY_CODE%TYPE,
5872 -- 4414408
5873                                 p_clev_rec       IN  clev_rec_type,
5874                                 p_klev_rec       IN  klev_rec_type,
5875                                 p_cimv_rec       IN  cimv_rec_type,
5876                                 p_talv_rec       IN  talv_rec_type,
5877                                 x_clev_rec       OUT NOCOPY clev_rec_type,
5878                                 x_klev_rec       OUT NOCOPY klev_rec_type,
5879                                 x_cimv_rec       OUT NOCOPY cimv_rec_type,
5880                                 x_trxv_rec       OUT NOCOPY trxv_rec_type,
5881                                 x_talv_rec       OUT NOCOPY talv_rec_type) IS
5882     l_clev_rec               clev_rec_type;
5883     r_clev_rec               clev_rec_type;
5884     l_klev_rec               klev_rec_type;
5885     l_cimv_rec               cimv_rec_type;
5886     l_talv_rec               talv_rec_type;
5887     l_trxv_rec               trxv_rec_type;
5888     i                        NUMBER := 0;
5889 
5890 --  l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
5891     lv_id1                   OKC_K_ITEMS_V.OBJECT1_ID1%TYPE := OKL_API.G_MISS_CHAR;
5892     lv_id2                   OKC_K_ITEMS_V.OBJECT1_ID2%TYPE := OKL_API.G_MISS_CHAR;
5893     ln_dummy                 NUMBER := 0;
5894     lv_dummy                 VARCHAR2(3);
5895     ln_tas_id                OKL_TRX_ASSETS.ID%TYPE;
5896     ln_line_number           OKL_TXL_ASSETS_V.LINE_NUMBER%TYPE;
5897     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_FA_LINE_ITEM';
5898     CURSOR c_asset_exist_chr(p_id1   OKX_ASSETS_V.ID1%TYPE,
5899                              p_id2   OKX_ASSETS_V.ID2%TYPE,
5900                              p_dnz_chr_id OKC_K_LINES_B.DNZ_CHR_ID%TYPE)
5901     IS
5902     SELECT 1
5903     --FROM DUAL
5904     --WHERE EXISTS (SELECT '1'
5905                   FROM OKX_ASSET_LINES_V
5906                   WHERE id1 = p_id1
5907                   AND id2 = p_id2
5908                   AND dnz_chr_id <> p_dnz_chr_id
5909                   AND line_status NOT IN ('EXPRIED','TERMINATED','ABANDONED'); --);
5910   BEGIN
5911     x_return_status     := OKL_API.G_RET_STS_SUCCESS;
5912     -- Call start_activity to create savepoint, check compatibility
5913     -- and initialize message list
5914     x_return_status := OKL_API.START_ACTIVITY (l_api_name,
5915                                                p_init_msg_list,
5916                                                '_PVT',
5917                                                x_return_status);
5918     -- Check if activity started successfully
5919     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5920        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5921     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5922        RAISE OKL_API.G_EXCEPTION_ERROR;
5923     END IF;
5924 -- #4414408
5925 /*
5926     -- Check the cle_id that is of the top Fin Asset line
5927     validate_cle_lse_id(p_clev_rec      => p_clev_rec,
5928                         p_lty_code      => p_lty_code,
5929                         x_lty_code      => l_lty_code,
5930                         x_return_status => x_return_status);
5931     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5932        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5933     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5934        RAISE OKL_API.G_EXCEPTION_ERROR;
5935     END IF;
5936 */
5937     -- since Fixed Assets Line  is a sub line of Fin Asset line we have to check weather
5938     -- which line are creating under which line
5939 --  IF l_lty_code = G_FIN_LINE_LTY_CODE THEN
5940 
5941        r_clev_rec := p_clev_rec;
5942 
5943 -- # 4414408 New function default_contract_line_values
5944 /*
5945        IF (p_clev_rec.sts_code IS NULL OR
5946           p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
5947          x_return_status := get_sts_code(p_dnz_chr_id => null,
5948                                          p_cle_id     => p_clev_rec.cle_id,
5949                                          x_sts_code   => r_clev_rec.sts_code);
5950          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5951             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5952          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5953             RAISE OKL_API.G_EXCEPTION_ERROR;
5954          END IF;
5955        END IF;
5956        IF (p_clev_rec.end_date IS NULL OR
5957           p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
5958          x_return_status := get_end_date(p_dnz_chr_id => null,
5959                                          p_cle_id     => p_clev_rec.cle_id,
5960                                          x_end_date   => r_clev_rec.end_date);
5961          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5962             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5963          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5964             RAISE OKL_API.G_EXCEPTION_ERROR;
5965          END IF;
5966        END IF;
5967        IF (p_clev_rec.start_date IS NULL OR
5968           p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
5969          x_return_status := get_start_date(p_dnz_chr_id => null,
5970                                            p_cle_id     => p_clev_rec.cle_id,
5971                                            x_start_date => r_clev_rec.start_date);
5972          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5973             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5974          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5975             RAISE OKL_API.G_EXCEPTION_ERROR;
5976          END IF;
5977        END IF;
5978        IF (p_clev_rec.currency_code IS NULL OR
5979           p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
5980          x_return_status := get_currency_code(p_dnz_chr_id    => null,
5981                                               p_cle_id        => p_clev_rec.cle_id,
5982                                               x_currency_code => r_clev_rec.currency_code);
5983          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
5984            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
5985          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
5986            RAISE OKL_API.G_EXCEPTION_ERROR;
5987          END IF;
5988        END IF;
5989 */
5990     IF ((p_clev_rec.sts_code IS NULL OR
5991          p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) OR
5992         (p_clev_rec.end_date IS NULL OR
5993          p_clev_rec.end_date = OKL_API.G_MISS_DATE) OR
5994         (p_clev_rec.start_date IS NULL OR
5995          p_clev_rec.start_date = OKL_API.G_MISS_DATE) OR
5996         (p_clev_rec.currency_code IS NULL OR
5997          p_clev_rec.currency_code = OKL_API.G_MISS_CHAR)
5998        ) THEN
5999        x_return_status := default_contract_line_values(p_dnz_chr_id    => null,
6000                                                        p_cle_id        => r_clev_rec.cle_id,
6001                                                        p_clev_rec      => r_clev_rec);
6002       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6003          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6004       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6005          RAISE OKL_API.G_EXCEPTION_ERROR;
6006       END IF;
6007     END IF;
6008        -- Now the all the records are there we can create Fixed Asset Line
6009        OKL_CONTRACT_PUB.create_contract_line(p_api_version   => p_api_version,
6010                                              p_init_msg_list => p_init_msg_list,
6011                                              x_return_status => x_return_status,
6012                                              x_msg_count     => x_msg_count,
6013                                              x_msg_data      => x_msg_data,
6014                                              p_clev_rec      => r_clev_rec,
6015                                              p_klev_rec      => p_klev_rec,
6016                                              x_clev_rec      => x_clev_rec,
6017                                              x_klev_rec      => x_klev_rec);
6018        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6019          OKL_API.set_message(p_app_name     => G_APP_NAME,
6020                              p_msg_name     => G_CREATION_FA_LINE);
6021          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6022        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6023          OKL_API.set_message(p_app_name     => G_APP_NAME,
6024                              p_msg_name     => G_CREATION_FA_LINE);
6025          RAISE OKL_API.G_EXCEPTION_ERROR;
6026        END IF;
6027        l_cimv_rec                   := p_cimv_rec;
6028        l_cimv_rec.cle_id            := x_clev_rec.id;
6029        l_cimv_rec.dnz_chr_id        := x_clev_rec.dnz_chr_id;
6030        lv_id1                       := l_cimv_rec.object1_id1;
6031        lv_id2                       := l_cimv_rec.object1_id2;
6032        l_cimv_rec.jtot_object1_code := 'OKX_ASSET';
6033        -- Now we should check weather the associated id1,id2 for a given asset number is null or not
6034        IF (lv_id1 IS NOT NULL OR
6035           lv_id1 <> OKL_API.G_MISS_CHAR) AND
6036           (lv_id2 IS NOT NULL OR
6037           lv_id2 <> OKL_API.G_MISS_CHAR) THEN
6038           -- Check to See the Fixed asset is not already in another contract
6039           OPEN  c_asset_exist_chr(lv_id1,lv_id2,l_cimv_rec.dnz_chr_id);
6040           FETCH c_asset_exist_chr into ln_dummy;
6041           CLOSE c_asset_exist_chr;
6042           IF ln_dummy <> 1 THEN
6043              -- Creation of Item Record for the above record information
6044              OKL_OKC_MIGRATION_PVT.create_contract_item(p_api_version   => p_api_version,
6045                                                         p_init_msg_list => p_init_msg_list,
6046                                                         x_return_status => x_return_status,
6047                                                         x_msg_count     => x_msg_count,
6048                                                         x_msg_data      => x_msg_data,
6049                                                         p_cimv_rec      => l_cimv_rec,
6050                                                         x_cimv_rec      => x_cimv_rec);
6051              IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6052                OKL_API.set_message(p_app_name     => G_APP_NAME,
6053                                    p_msg_name     => G_CREATION_FA_ITEM);
6054                RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6055              ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6056                OKL_API.set_message(p_app_name     => G_APP_NAME,
6057                                    p_msg_name     => G_CREATION_FA_ITEM);
6058                 RAISE OKL_API.G_EXCEPTION_ERROR;
6059              END IF;
6060              -- We need to do this as part of Asset Release since the p_new_yn flag is N
6061              -- So that the adjustment will be done while activation of the re-lease asseted contract.
6062              -- We need to know if the kle_id is already there or not
6063              -- ideally it should be null since it is a new record
6064              validate_kle_id(p_klev_rec      => x_klev_rec,
6065                              x_record_exists => lv_dummy,
6066                              x_return_status => x_return_status);
6067              IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6068                RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6069              ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6070                RAISE OKL_API.G_EXCEPTION_ERROR;
6071              END IF;
6072              IF (lv_dummy = OKL_API.G_MISS_CHAR OR
6073                 lv_dummy IS NUll) THEN
6074                l_talv_rec                 := p_talv_rec;
6075                l_talv_rec.kle_id          := x_clev_rec.id;
6076                l_talv_rec.dnz_khr_id      := x_clev_rec.dnz_chr_id;
6077                l_talv_rec.line_number     := 1 ;
6078                -- Create another kle_id record for the same header
6079                Create_asset_lines(p_api_version    => p_api_version,
6080                                   p_init_msg_list  => p_init_msg_list,
6081                                   x_return_status  => x_return_status,
6082                                   x_msg_count      => x_msg_count,
6083                                   x_msg_data       => x_msg_data,
6084                                   p_talv_rec       => l_talv_rec,
6085                                   x_trxv_rec       => x_trxv_rec,
6086                                   x_talv_rec       => x_talv_rec);
6087                IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6088                   RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6089                ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6090                   RAISE OKL_API.G_EXCEPTION_ERROR;
6091                END IF;
6092              ELSE
6093                OKL_API.set_message(p_app_name     => G_APP_NAME,
6094                                   p_msg_name     => G_KLE_ID);
6095                RAISE OKL_API.G_EXCEPTION_ERROR;
6096              END IF;
6097           ELSE
6098             OKL_API.set_message(p_app_name    => G_APP_NAME,
6099                                p_msg_name     => G_CREATION_FA_ITEM);
6100              RAISE OKL_API.G_EXCEPTION_ERROR;
6101           END IF;
6102        ELSE
6103          -- Since id1,id12 are null , hence NO Asset Number we are creating a new asset Number
6104           -- Creation of Item Record for the above record information
6105           OKL_OKC_MIGRATION_PVT.create_contract_item(p_api_version   => p_api_version,
6106                                                      p_init_msg_list => p_init_msg_list,
6107                                                      x_return_status => x_return_status,
6108                                                      x_msg_count     => x_msg_count,
6109                                                      x_msg_data      => x_msg_data,
6110                                                      p_cimv_rec      => l_cimv_rec,
6111                                                      x_cimv_rec      => x_cimv_rec);
6112           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6113                OKL_API.set_message(p_app_name     => G_APP_NAME,
6114                                    p_msg_name     => G_CREATION_FA_ITEM);
6115              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6116           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6117                OKL_API.set_message(p_app_name     => G_APP_NAME,
6118                                    p_msg_name     => G_CREATION_FA_ITEM);
6119              RAISE OKL_API.G_EXCEPTION_ERROR;
6120           END IF;
6121           -- We need to know if the kle_id is already there or not
6122           -- ideally it should be null since it is a new record
6123           validate_kle_id(p_klev_rec      => x_klev_rec,
6124                           x_record_exists => lv_dummy,
6125                           x_return_status => x_return_status);
6126           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6127              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6128           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6129              RAISE OKL_API.G_EXCEPTION_ERROR;
6130           END IF;
6131           IF (lv_dummy = OKL_API.G_MISS_CHAR OR
6132              lv_dummy IS NUll) THEN
6133              l_talv_rec                 := p_talv_rec;
6134              l_talv_rec.kle_id          := x_clev_rec.id;
6135              l_talv_rec.dnz_khr_id      := x_clev_rec.dnz_chr_id;
6136              l_talv_rec.line_number     := 1 ;
6137              -- Create another kle_id record for the same header
6138              Create_asset_lines(p_api_version    => p_api_version,
6139                                 p_init_msg_list  => p_init_msg_list,
6140                                 x_return_status  => x_return_status,
6141                                 x_msg_count      => x_msg_count,
6142                                 x_msg_data       => x_msg_data,
6143                                 p_talv_rec       => l_talv_rec,
6144                                 x_trxv_rec       => x_trxv_rec,
6145                                 x_talv_rec       => x_talv_rec);
6146              IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6147                 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6148              ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6149                 RAISE OKL_API.G_EXCEPTION_ERROR;
6150              END IF;
6151           ELSE
6152             OKL_API.set_message(p_app_name     => G_APP_NAME,
6153                                 p_msg_name     => G_KLE_ID);
6154             RAISE OKL_API.G_EXCEPTION_ERROR;
6155           END IF;
6156        END IF;
6157 -- #4414408
6158 --    ELSE
6159 --       OKL_API.set_message(p_app_name     => G_APP_NAME,
6160 --                           p_msg_name     => G_LINE_STYLE);
6161 --        RAISE OKL_API.G_EXCEPTION_ERROR;
6162 --    END IF;
6163     OKL_API.END_ACTIVITY (x_msg_count,
6164                           x_msg_data );
6165   EXCEPTION
6166     WHEN OKL_API.G_EXCEPTION_ERROR THEN
6167     IF c_asset_exist_chr%ISOPEN THEN
6168        CLOSE c_asset_exist_chr;
6169     END IF;
6170     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6171                                l_api_name,
6172                                G_PKG_NAME,
6173                                'OKL_API.G_RET_STS_ERROR',
6174                                x_msg_count,
6175                                x_msg_data,
6176                                '_PVT');
6177     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6178     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6179                               l_api_name,
6180                               G_PKG_NAME,
6181                               'OKL_API.G_RET_STS_UNEXP_ERROR',
6182                               x_msg_count,
6183                               x_msg_data,
6184                               '_PVT');
6185     WHEN OTHERS THEN
6186     IF c_asset_exist_chr%ISOPEN THEN
6187        CLOSE c_asset_exist_chr;
6188     END IF;
6189     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6190                               l_api_name,
6191                               G_PKG_NAME,
6192                               'OTHERS',
6193                               x_msg_count,
6194                               x_msg_data,
6195                               '_PVT');
6196   END create_fa_line_item;
6197 -------------------------------------------------------------------------------------------------
6198   PROCEDURE update_fa_line_item(p_api_version    IN  NUMBER,
6199                                 p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
6200                                 x_return_status  OUT NOCOPY VARCHAR2,
6201                                 x_msg_count      OUT NOCOPY NUMBER,
6202                                 x_msg_data       OUT NOCOPY VARCHAR2,
6203                                 p_lty_code       IN  OKC_LINE_STYLES_V.LTY_CODE%TYPE,
6204                                 P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
6205                                 p_clev_rec       IN  clev_rec_type,
6206                                 p_klev_rec       IN  klev_rec_type,
6207                                 p_cimv_rec       IN  cimv_rec_type,
6208                                 p_talv_rec       IN  talv_rec_type,
6209                                 x_clev_rec       OUT NOCOPY clev_rec_type,
6210                                 x_klev_rec       OUT NOCOPY klev_rec_type,
6211                                 x_cimv_rec       OUT NOCOPY cimv_rec_type,
6212                                 x_talv_rec       OUT NOCOPY talv_rec_type) IS
6213     l_clev_rec               clev_rec_type;
6214     l_klev_rec               klev_rec_type;
6215     l_cimv_rec               cimv_rec_type;
6216     l_talv_rec               talv_rec_type;
6217     l_trxv_rec               trxv_rec_type;
6218     i                        NUMBER := 0;
6219     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
6220     ln_dummy                 NUMBER := 0;
6221     lv_dummy                 VARCHAR2(3);
6222     ln_tas_id                OKL_TRX_ASSETS.ID%TYPE;
6223     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_FA_LINE_ITEM';
6224   BEGIN
6225     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
6226     -- Call start_activity to create savepoint, check compatibility
6227     -- and initialize message list
6228     x_return_status := OKL_API.START_ACTIVITY (
6229                                l_api_name
6230                                ,p_init_msg_list
6231                                ,'_PVT'
6232                                ,x_return_status);
6233     -- Check if activity started successfully
6234     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6235        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6236     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6237        RAISE OKL_API.G_EXCEPTION_ERROR;
6238     END IF;
6239     -- Check the cle_id that is of the top Fin Asset line
6240     validate_cle_lse_id(p_clev_rec      => p_clev_rec,
6241                         p_lty_code      => p_lty_code,
6242                         x_lty_code      => l_lty_code,
6243                         x_return_status => x_return_status);
6244     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6245        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6246     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6247        RAISE OKL_API.G_EXCEPTION_ERROR;
6248     END IF;
6249     -- since Fixed Assets Line  is a sub line of Fin Asset line we have to check weather
6250     -- which line are creating under which line
6251     IF l_lty_code = G_FIN_LINE_LTY_CODE THEN
6252        OKL_CONTRACT_PUB.update_contract_line(p_api_version   => p_api_version,
6253                                              p_init_msg_list => p_init_msg_list,
6254                                              x_return_status => x_return_status,
6255                                              x_msg_count     => x_msg_count,
6256                                              x_msg_data      => x_msg_data,
6257                                              p_clev_rec      => p_clev_rec,
6258                                              p_klev_rec      => p_klev_rec,
6259                                              x_clev_rec      => x_clev_rec,
6260                                              x_klev_rec      => x_klev_rec);
6261        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6262          OKL_API.set_message(p_app_name     => G_APP_NAME,
6263                              p_msg_name     => G_UPDATING_FA_LINE);
6264          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6265        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6266          OKL_API.set_message(p_app_name     => G_APP_NAME,
6267                              p_msg_name     => G_UPDATING_FA_LINE);
6268          RAISE OKL_API.G_EXCEPTION_ERROR;
6269        END IF;
6270        l_cimv_rec                      := p_cimv_rec;
6271        IF l_cimv_rec.cle_id <> x_clev_rec.id THEN
6272          OKL_API.set_message(p_app_name     => G_APP_NAME,
6273                              p_msg_name     => G_ITEM_RECORD);
6274           RAISE OKL_API.G_EXCEPTION_ERROR;
6275        END IF;
6276        IF l_cimv_rec.dnz_chr_id <> x_clev_rec.dnz_chr_id THEN
6277          OKL_API.set_message(p_app_name     => G_APP_NAME,
6278                              p_msg_name     => G_ITEM_RECORD);
6279           RAISE OKL_API.G_EXCEPTION_ERROR;
6280        END IF;
6281        -- Creation of Item Record for the above record information
6282        OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version   => p_api_version,
6283                                                   p_init_msg_list => p_init_msg_list,
6284                                                   x_return_status => x_return_status,
6285                                                   x_msg_count     => x_msg_count,
6286                                                   x_msg_data      => x_msg_data,
6287                                                   p_cimv_rec      => l_cimv_rec,
6288                                                   x_cimv_rec      => x_cimv_rec);
6289        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6290          OKL_API.set_message(p_app_name     => G_APP_NAME,
6291                              p_msg_name     => G_UPDATING_FA_ITEM);
6292           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6293        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6294          OKL_API.set_message(p_app_name     => G_APP_NAME,
6295                              p_msg_name     => G_UPDATING_FA_ITEM);
6296           RAISE OKL_API.G_EXCEPTION_ERROR;
6297        END IF;
6298 --       x_clev_rec := l_clev_rec;
6299 -- We commented the same out because does not make sense
6300 -- because we are now populating the txl assets in both the cases
6301 -- i.e., when the OKC_K_ITEMS.OBJECT1_ID1 and OBJECT1_ID2 is null or not null
6302 --       IF (x_cimv_rec.object1_id1 IS NULL OR
6303 --           x_cimv_rec.object1_id1 = OKL_API.G_MISS_CHAR) AND
6304 --          (x_cimv_rec.object1_id2 IS NULL OR
6305 --           x_cimv_rec.object1_id2 = OKL_API.G_MISS_CHAR) THEN
6306          validate_kle_id(p_klev_rec      => x_klev_rec,
6307                         x_record_exists => lv_dummy,
6308                         x_return_status => x_return_status);
6309          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6310             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6311          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6312            RAISE OKL_API.G_EXCEPTION_ERROR;
6313          END IF;
6314          IF (lv_dummy IS NOT NUll OR
6315              lv_dummy <> OKL_API.G_MISS_CHAR) THEN
6316             IF p_talv_rec.kle_id <> x_klev_rec.id THEN
6317                OKL_API.set_message(p_app_name     => G_APP_NAME,
6318                                    p_msg_name     => G_KLE_ID);
6319                RAISE OKL_API.G_EXCEPTION_ERROR;
6320             END IF;
6321             update_asset_lines(p_api_version    => p_api_version,
6322                                p_init_msg_list  => p_init_msg_list,
6323                                x_return_status  => x_return_status,
6324                                x_msg_count      => x_msg_count,
6325                                x_msg_data       => x_msg_data,
6326                                p_talv_rec       => p_talv_rec,
6327                                x_talv_rec       => x_talv_rec);
6328             IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6329               RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6330             ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6331                RAISE OKL_API.G_EXCEPTION_ERROR;
6332             END IF;
6333          ELSE
6334             OKL_API.set_message(p_app_name     => G_APP_NAME,
6335                                 p_msg_name     => G_KLE_ID);
6336             RAISE OKL_API.G_EXCEPTION_ERROR;
6337          END IF;
6338 --       END IF;
6339     ELSE
6340        OKL_API.set_message(p_app_name     => G_APP_NAME,
6341                            p_msg_name     => G_LINE_STYLE);
6342        RAISE OKL_API.G_EXCEPTION_ERROR;
6343     END IF;
6344   --  x_clev_rec := l_clev_rec;
6345     OKL_API.END_ACTIVITY (x_msg_count,
6346                           x_msg_data );
6347   EXCEPTION
6348     WHEN OKL_API.G_EXCEPTION_ERROR THEN
6349     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6350                                l_api_name,
6351                                G_PKG_NAME,
6352                                'OKL_API.G_RET_STS_ERROR',
6353                                x_msg_count,
6354                                x_msg_data,
6355                                '_PVT');
6356     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6357     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6358                               l_api_name,
6359                               G_PKG_NAME,
6360                               'OKL_API.G_RET_STS_UNEXP_ERROR',
6361                               x_msg_count,
6362                               x_msg_data,
6363                               '_PVT');
6364     WHEN OTHERS THEN
6365     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6366                               l_api_name,
6367                               G_PKG_NAME,
6368                               'OTHERS',
6369                               x_msg_count,
6370                               x_msg_data,
6371                               '_PVT');
6372   END update_fa_line_item;
6373 -------------------------------------------------------------------------------------------------
6374   PROCEDURE create_addon_line_item_rec(p_api_version    IN  NUMBER,
6375                                        p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
6376                                        x_return_status  OUT NOCOPY VARCHAR2,
6377                                        x_msg_count      OUT NOCOPY NUMBER,
6378                                        x_msg_data       OUT NOCOPY VARCHAR2,
6379                                        p_lty_code       IN  OKC_LINE_STYLES_V.LTY_CODE%TYPE,
6380                                        p_clev_rec       IN  clev_rec_type,
6381                                        p_klev_rec       IN  klev_rec_type,
6382                                        p_cimv_rec       IN  cimv_rec_type,
6383                                        x_clev_rec       OUT NOCOPY clev_rec_type,
6384                                        x_klev_rec       OUT NOCOPY klev_rec_type,
6385                                        x_cimv_rec       OUT NOCOPY cimv_rec_type) IS
6386     l_clev_rec               clev_rec_type;
6387     r_clev_rec               clev_rec_type;
6388     l_cimv_rec               cimv_rec_type;
6389     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
6390     i                        NUMBER := 0;
6391     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_AO_LNE_ITEM';
6392     ln_display_sequence      OKC_K_LINES_V.DISPLAY_SEQUENCE%TYPE := 0;
6393     ln_num_of_items          OKC_K_ITEMS.NUMBER_OF_ITEMS%TYPE := 0;
6394 
6395     CURSOR get_dis_seq_qty(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
6396                            P_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
6397     SELECT cle.display_sequence,
6398            cim.number_of_items
6399     FROM okc_line_styles_b lse2,
6400          okc_line_styles_b lse1,
6401          okc_k_items cim,
6402          okc_k_lines_b cle
6403     WHERE cle.id = p_cle_id
6404     AND cle.dnz_chr_id = p_dnz_chr_id
6405     AND cle.id = cim.cle_id
6406     AND cim.dnz_chr_id = cle.dnz_chr_id
6407     AND lse1.id = cle.lse_id
6408     AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
6409     AND lse1.lse_parent_id = lse2.id
6410     AND lse2.lty_code = G_FIN_LINE_LTY_CODE;
6411   BEGIN
6412     x_return_status   := OKL_API.G_RET_STS_SUCCESS;
6413     -- Call start_activity to create savepoint, check compatibility
6414     -- and initialize message list
6415     x_return_status := OKL_API.START_ACTIVITY (l_api_name
6416                                                ,p_init_msg_list
6417                                                ,'_PVT'
6418                                                ,x_return_status);
6419     -- Check if activity started successfully
6420     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6421        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6422     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6423        RAISE OKL_API.G_EXCEPTION_ERROR;
6424     END IF;
6425     -- Check the cle_id that is of the top Model line
6426     validate_cle_lse_id(p_clev_rec      => p_clev_rec,
6427                         p_lty_code      => p_lty_code,
6428                         x_lty_code      => l_lty_code,
6429                         x_return_status => x_return_status);
6430     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6431        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6432     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6433        RAISE OKL_API.G_EXCEPTION_ERROR;
6434     END IF;
6435     -- since Add on is a sub line of Model line we have to check weather
6436     -- which line are creating under which line
6437     IF l_lty_code = G_MODEL_LINE_LTY_CODE THEN
6438        r_clev_rec := p_clev_rec;
6439        IF (p_clev_rec.sts_code IS NULL OR
6440            p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
6441          x_return_status := get_sts_code(p_dnz_chr_id => null,
6442                                          p_cle_id     => p_clev_rec.cle_id,
6443                                          x_sts_code   => r_clev_rec.sts_code);
6444          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6445             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6446          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6447             RAISE OKL_API.G_EXCEPTION_ERROR;
6448          END IF;
6449        END IF;
6450        IF (p_clev_rec.end_date IS NULL OR
6451            p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
6452          x_return_status := get_end_date(p_dnz_chr_id => null,
6453                                          p_cle_id     => p_clev_rec.cle_id,
6454                                          x_end_date   => r_clev_rec.end_date);
6455          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6456             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6457          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6458             RAISE OKL_API.G_EXCEPTION_ERROR;
6459          END IF;
6460        END IF;
6461        IF (p_clev_rec.start_date IS NULL OR
6462            p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
6463          x_return_status := get_start_date(p_dnz_chr_id => null,
6464                                            p_cle_id     => p_clev_rec.cle_id,
6465                                            x_start_date => r_clev_rec.start_date);
6466          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6467             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6468          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6469             RAISE OKL_API.G_EXCEPTION_ERROR;
6470          END IF;
6471        END IF;
6472        IF (p_clev_rec.currency_code IS NULL OR
6473           p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
6474          x_return_status := get_currency_code(p_dnz_chr_id    => null,
6475                                               p_cle_id        => p_clev_rec.cle_id,
6476                                               x_currency_code => r_clev_rec.currency_code);
6477          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6478            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6479          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6480            RAISE OKL_API.G_EXCEPTION_ERROR;
6481          END IF;
6482        END IF;
6483        OPEN get_dis_seq_qty(r_clev_rec.cle_id,
6484                             r_clev_rec.dnz_chr_id);
6485        IF get_dis_seq_qty%NOTFOUND THEN
6486          OKL_API.set_message(p_app_name => G_APP_NAME,
6487                              p_msg_name => G_LINE_RECORD);
6488           RAISE OKL_API.G_EXCEPTION_ERROR;
6489        END IF;
6490        FETCH get_dis_seq_qty INTO ln_display_sequence,
6491                                   ln_num_of_items;
6492        CLOSE get_dis_seq_qty;
6493        IF (p_clev_rec.display_sequence IS NULL OR
6494            p_clev_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
6495          r_clev_rec.display_sequence := ln_display_sequence + 1;
6496        END IF;
6497        -- Calling the Process
6498        OKL_CONTRACT_PUB.create_contract_line(p_api_version   => p_api_version,
6499                                              p_init_msg_list => p_init_msg_list,
6500                                              x_return_status => x_return_status,
6501                                              x_msg_count     => x_msg_count,
6502                                              x_msg_data      => x_msg_data,
6503                                              p_clev_rec      => r_clev_rec,
6504                                              p_klev_rec      => p_klev_rec,
6505                                              x_clev_rec      => x_clev_rec,
6506                                              x_klev_rec      => x_klev_rec);
6507        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6508          OKL_API.set_message(p_app_name     => G_APP_NAME,
6509                              p_msg_name     => G_CREATION_ADDON_LINE);
6510           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6511        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6512          OKL_API.set_message(p_app_name     => G_APP_NAME,
6513                              p_msg_name     => G_CREATION_ADDON_LINE);
6514           RAISE OKL_API.G_EXCEPTION_ERROR;
6515        END IF;
6516        l_cimv_rec                   := p_cimv_rec;
6517        l_cimv_rec.cle_id            := x_clev_rec.id;
6518        l_cimv_rec.dnz_chr_id        := x_clev_rec.dnz_chr_id;
6519        l_cimv_rec.jtot_object1_code := 'OKX_SYSITEM';
6520        -- Check the number of items
6521        IF l_cimv_rec.number_of_items <> ln_num_of_items THEN
6522            OKL_API.set_message(p_app_name => G_APP_NAME,
6523                                p_msg_name => G_ITEM_RECORD);
6524             RAISE OKL_API.G_EXCEPTION_ERROR;
6525        END IF;
6526        -- Creation of Item Record for the above record information
6527        OKL_OKC_MIGRATION_PVT.create_contract_item(p_api_version   => p_api_version,
6528                                                   p_init_msg_list => p_init_msg_list,
6529                                                   x_return_status => x_return_status,
6530                                                   x_msg_count     => x_msg_count,
6531                                                   x_msg_data      => x_msg_data,
6532                                                   p_cimv_rec      => l_cimv_rec,
6533                                                   x_cimv_rec      => x_cimv_rec);
6534        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6535          OKL_API.set_message(p_app_name     => G_APP_NAME,
6536                              p_msg_name     => G_CREATION_ADDON_ITEM);
6537            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6538        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6539          OKL_API.set_message(p_app_name     => G_APP_NAME,
6540                              p_msg_name     => G_CREATION_ADDON_ITEM);
6541            RAISE OKL_API.G_EXCEPTION_ERROR;
6542        END IF;
6543     ELSE
6544        OKL_API.set_message(p_app_name     => G_APP_NAME,
6545                            p_msg_name     => G_LINE_STYLE);
6546       RAISE OKL_API.G_EXCEPTION_ERROR;
6547     END IF;
6548     OKL_API.END_ACTIVITY (x_msg_count,
6549                           x_msg_data );
6550   EXCEPTION
6551     WHEN OKL_API.G_EXCEPTION_ERROR THEN
6552     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6553                                l_api_name,
6554                                G_PKG_NAME,
6555                                'OKL_API.G_RET_STS_ERROR',
6556                                x_msg_count,
6557                                x_msg_data,
6558                                '_PVT');
6559     IF get_dis_seq_qty%ISOPEN THEN
6560        CLOSE get_dis_seq_qty;
6561     END IF;
6562     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6563     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6564                               l_api_name,
6565                               G_PKG_NAME,
6566                               'OKL_API.G_RET_STS_UNEXP_ERROR',
6567                               x_msg_count,
6568                               x_msg_data,
6569                               '_PVT');
6570     WHEN OTHERS THEN
6571     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6572                               l_api_name,
6573                               G_PKG_NAME,
6574                               'OTHERS',
6575                               x_msg_count,
6576                               x_msg_data,
6577                               '_PVT');
6578     IF get_dis_seq_qty%ISOPEN THEN
6579        CLOSE get_dis_seq_qty;
6580     END IF;
6581   END create_addon_line_item_rec;
6582 -----------------------------------------------------------------------------------------------------------
6583   PROCEDURE Update_addon_line_item_rec(p_api_version    IN  NUMBER,
6584                                        p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
6585                                        x_return_status  OUT NOCOPY VARCHAR2,
6586                                        x_msg_count      OUT NOCOPY NUMBER,
6587                                        x_msg_data       OUT NOCOPY VARCHAR2,
6588                                        p_lty_code       IN  OKC_LINE_STYLES_V.LTY_CODE%TYPE,
6589                                        p_clev_rec       IN  clev_rec_type,
6590                                        p_klev_rec       IN  klev_rec_type,
6591                                        p_cimv_rec       IN  cimv_rec_type,
6592                                        x_clev_rec       OUT NOCOPY clev_rec_type,
6593                                        x_klev_rec       OUT NOCOPY klev_rec_type,
6594                                        x_cimv_rec       OUT NOCOPY cimv_rec_type) IS
6595     l_clev_rec               clev_rec_type;
6596     l_klev_rec               klev_rec_type;
6597     l_cimv_rec               cimv_rec_type;
6598     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
6599     i                        NUMBER;
6600     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_AO_LNE_ITEM';
6601     ln_display_sequence      OKC_K_LINES_V.DISPLAY_SEQUENCE%TYPE;
6602     ln_num_of_items          OKC_K_ITEMS.NUMBER_OF_ITEMS%TYPE;
6603 
6604     CURSOR get_dis_seq_qty(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
6605                            P_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
6606     SELECT cle.display_sequence,
6607            cim.number_of_items
6608     FROM okc_line_styles_b lse2,
6609          okc_line_styles_b lse1,
6610          okc_k_items cim,
6611          okc_k_lines_b cle
6612     WHERE cle.id = p_cle_id
6613     AND cle.dnz_chr_id = p_dnz_chr_id
6614     AND cle.id = cim.cle_id
6615     AND cim.dnz_chr_id = cle.dnz_chr_id
6616     AND lse1.id = cle.lse_id
6617     AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
6618     AND lse1.lse_parent_id = lse2.id
6619     AND lse2.lty_code = G_FIN_LINE_LTY_CODE;
6620 
6621   BEGIN
6622     x_return_status     := OKL_API.G_RET_STS_SUCCESS;
6623     -- Call start_activity to create savepoint, check compatibility
6624     -- and initialize message list
6625     x_return_status := OKL_API.START_ACTIVITY (l_api_name
6626                                                ,p_init_msg_list
6627                                                ,'_PVT'
6628                                                ,x_return_status);
6629     -- Check if activity started successfully
6630     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6631        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6632     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6633        RAISE OKL_API.G_EXCEPTION_ERROR;
6634     END IF;
6635     validate_cle_lse_id(p_clev_rec      => p_clev_rec,
6636                         p_lty_code      => p_lty_code,
6637                         x_lty_code      => l_lty_code,
6638                         x_return_status => x_return_status);
6639     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6640        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6641     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6642        RAISE OKL_API.G_EXCEPTION_ERROR;
6643     END IF;
6644     x_return_status := get_rec_klev(p_clev_rec.id,
6645                                     l_klev_rec);
6646     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6647        OKL_API.set_message(p_app_name     => G_APP_NAME,
6648                            p_msg_name     => G_FETCHING_INFO,
6649                            p_token1       => G_REC_NAME_TOKEN,
6650                            p_token1_value => 'OKL_K_LINES_V Record');
6651        RAISE G_EXCEPTION_HALT_VALIDATION;
6652     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6653        OKL_API.set_message(p_app_name     => G_APP_NAME,
6654                            p_msg_name     => G_FETCHING_INFO,
6655                            p_token1       => G_REC_NAME_TOKEN,
6656                            p_token1_value => 'OKL_K_LINES_V Record');
6657        RAISE G_EXCEPTION_HALT_VALIDATION;
6658     END IF;
6659     -- since Add on is a sub line of Model line we have to check weather
6660     -- which line are creating under which line
6661     IF l_lty_code = G_MODEL_LINE_LTY_CODE THEN
6662       -- Now the all the records are there we can create ADD on  Line
6663       -- Calling the Process
6664        l_clev_rec    := p_clev_rec;
6665        OPEN get_dis_seq_qty(l_clev_rec.cle_id,
6666                             l_clev_rec.dnz_chr_id);
6667        IF get_dis_seq_qty%NOTFOUND THEN
6668          OKL_API.set_message(p_app_name => G_APP_NAME,
6669                              p_msg_name => G_LINE_RECORD);
6670           RAISE OKL_API.G_EXCEPTION_ERROR;
6671        END IF;
6672        FETCH get_dis_seq_qty INTO ln_display_sequence,
6673                                   ln_num_of_items;
6674        CLOSE get_dis_seq_qty;
6675        IF (p_clev_rec.display_sequence IS NULL OR
6676            p_clev_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
6677          l_clev_rec.display_sequence := ln_display_sequence + 1;
6678        END IF;
6679       OKL_CONTRACT_PUB.update_contract_line(p_api_version   => p_api_version,
6680                                             p_init_msg_list => p_init_msg_list,
6681                                             x_return_status => x_return_status,
6682                                             x_msg_count     => x_msg_count,
6683                                             x_msg_data      => x_msg_data,
6684                                             p_clev_rec      => l_clev_rec,
6685                                             p_klev_rec      => l_klev_rec,
6686                                             x_clev_rec      => x_clev_rec,
6687                                             x_klev_rec      => x_klev_rec);
6688       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6689          OKL_API.set_message(p_app_name     => G_APP_NAME,
6690                              p_msg_name     => G_UPDATING_ADDON_LINE);
6691          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6692       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6693          OKL_API.set_message(p_app_name     => G_APP_NAME,
6694                              p_msg_name     => G_UPDATING_ADDON_LINE);
6695          RAISE OKL_API.G_EXCEPTION_ERROR;
6696       END IF;
6697       l_cimv_rec                      := p_cimv_rec;
6698       x_return_status := get_rec_cimv(x_clev_rec.id,
6699                                       x_clev_rec.dnz_chr_id,
6700                                       l_cimv_rec);
6701       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6702        OKL_API.set_message(p_app_name     => G_APP_NAME,
6703                            p_msg_name     => G_FETCHING_INFO,
6704                            p_token1       => G_REC_NAME_TOKEN,
6705                            p_token1_value => 'OKC_K_ITEMS_V Record');
6706          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6707       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6708        OKL_API.set_message(p_app_name     => G_APP_NAME,
6709                            p_msg_name     => G_FETCHING_INFO,
6710                            p_token1       => G_REC_NAME_TOKEN,
6711                            p_token1_value => 'OKC_K_ITEMS_V Record');
6712          RAISE OKL_API.G_EXCEPTION_ERROR;
6713       END IF;
6714       IF l_cimv_rec.cle_id <> x_clev_rec.id THEN
6715           OKL_API.set_message(p_app_name     => G_APP_NAME,
6716                               p_msg_name     => G_ITEM_RECORD);
6717           RAISE OKL_API.G_EXCEPTION_ERROR;
6718       END IF;
6719       IF l_cimv_rec.dnz_chr_id <> x_clev_rec.dnz_chr_id THEN
6720           OKL_API.set_message(p_app_name     => G_APP_NAME,
6721                               p_msg_name     => G_ITEM_RECORD);
6722           RAISE OKL_API.G_EXCEPTION_ERROR;
6723       END IF;
6724       -- We have the below has to been given from the screen
6725       l_cimv_rec.object1_id1     := p_cimv_rec.object1_id1;
6726       l_cimv_rec.object1_id2     := p_cimv_rec.object1_id2;
6727       l_cimv_rec.number_of_items := p_cimv_rec.number_of_items;
6728       -- Check the number of items
6729       IF l_cimv_rec.number_of_items <> ln_num_of_items THEN
6730           OKL_API.set_message(p_app_name => G_APP_NAME,
6731                               p_msg_name => G_ITEM_RECORD);
6732            RAISE OKL_API.G_EXCEPTION_ERROR;
6733       END IF;
6734       -- Creation of Item Record for the above record information
6735       OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version   => p_api_version,
6736                                                  p_init_msg_list => p_init_msg_list,
6737                                                  x_return_status => x_return_status,
6738                                                  x_msg_count     => x_msg_count,
6739                                                  x_msg_data      => x_msg_data,
6740                                                  p_cimv_rec      => l_cimv_rec,
6741                                                  x_cimv_rec      => x_cimv_rec);
6742       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6743           OKL_API.set_message(p_app_name     => G_APP_NAME,
6744                               p_msg_name     => G_UPDATING_ADDON_ITEM);
6745           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6746       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6747           OKL_API.set_message(p_app_name     => G_APP_NAME,
6748                               p_msg_name     => G_UPDATING_ADDON_ITEM);
6749           RAISE OKL_API.G_EXCEPTION_ERROR;
6750       END IF;
6751     ELSE
6752        OKL_API.set_message(p_app_name     => G_APP_NAME,
6753                            p_msg_name     => G_LINE_STYLE);
6754       RAISE OKL_API.G_EXCEPTION_ERROR;
6755     END IF;
6756     OKL_API.END_ACTIVITY (x_msg_count,
6757                           x_msg_data );
6758   EXCEPTION
6759     WHEN OKL_API.G_EXCEPTION_ERROR THEN
6760     IF get_dis_seq_qty%ISOPEN THEN
6761        CLOSE get_dis_seq_qty;
6762     END IF;
6763     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6764                                l_api_name,
6765                                G_PKG_NAME,
6766                                'OKL_API.G_RET_STS_ERROR',
6767                                x_msg_count,
6768                                x_msg_data,
6769                                '_PVT');
6770     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6771     IF get_dis_seq_qty%ISOPEN THEN
6772        CLOSE get_dis_seq_qty;
6773     END IF;
6774     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6775                               l_api_name,
6776                               G_PKG_NAME,
6777                               'OKL_API.G_RET_STS_UNEXP_ERROR',
6778                               x_msg_count,
6779                               x_msg_data,
6780                               '_PVT');
6781     WHEN OTHERS THEN
6782     IF get_dis_seq_qty%ISOPEN THEN
6783        CLOSE get_dis_seq_qty;
6784     END IF;
6785     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6786                               l_api_name,
6787                               G_PKG_NAME,
6788                               'OTHERS',
6789                               x_msg_count,
6790                               x_msg_data,
6791                               '_PVT');
6792   END Update_addon_line_item_rec;
6793 -------------------------------------------------------------------------------------------------------
6794   Procedure create_addon_line_rec(
6795             p_api_version     IN  NUMBER,
6796             p_init_msg_list   IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
6797             x_return_status   OUT NOCOPY VARCHAR2,
6798             x_msg_count       OUT NOCOPY NUMBER,
6799             x_msg_data        OUT NOCOPY VARCHAR2,
6800             P_new_yn          IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
6801             p_asset_number    IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
6802             p_clev_rec        IN  clev_rec_type,
6803             p_klev_rec        IN  klev_rec_type,
6804             p_cimv_rec        IN  cimv_rec_type,
6805             x_clev_rec        OUT NOCOPY clev_rec_type,
6806             x_klev_rec        OUT NOCOPY klev_rec_type,
6807             x_cimv_rec        OUT NOCOPY cimv_rec_type) IS
6808     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_AO_LNE_REC';
6809     l_clev_rec               clev_rec_type;
6810     -- Variables for validation of line style
6811     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
6812     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
6813     ln_fa_id                 OKC_K_LINES_V.ID%TYPE;
6814 
6815     CURSOR get_fa_id(p_top_line OKC_K_LINES_V.ID%TYPE,
6816                      p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE)
6817     IS
6818     SELECT cle.id
6819     FROM okc_subclass_top_line stl,
6820          okc_line_styles_b lse2,
6821          okc_line_styles_b lse1,
6822          okc_k_lines_b cle
6823     WHERE cle.dnz_chr_id = p_dnz_chr_id
6824     AND cle.lse_id = lse1.id
6825     AND lse1.lty_code = G_FA_LINE_LTY_CODE
6826     AND lse1.lse_parent_id = lse2.id
6827     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
6828     AND lse2.id = stl.lse_id
6829     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE)
6830     AND cle.cle_id in (SELECT distinct to_char(cle.cle_id)
6831                        FROM okc_subclass_top_line stl,
6832                             okc_line_styles_b lse2,
6833                             okc_line_styles_b lse1,
6834                             okc_k_lines_b cle
6835                        WHERE cle.id = p_top_line
6836                        AND cle.dnz_chr_id = p_dnz_chr_id
6837                        AND cle.lse_id = lse1.id
6838                        AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
6839                        AND lse1.lse_parent_id = lse2.id
6840                        AND lse2.lty_code = G_FIN_LINE_LTY_CODE
6841                        AND lse2.id = stl.lse_id
6842                        AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE));
6843   BEGIN
6844     x_return_status := OKL_API.G_RET_STS_SUCCESS;
6845     -- Call start_activity to create savepoint, check compatibility
6846     -- and initialize message list
6847     x_return_status := OKL_API.START_ACTIVITY (
6848                                l_api_name
6849                                ,p_init_msg_list
6850                                ,'_PVT'
6851                                ,x_return_status);
6852     -- Check if activity started successfully
6853     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6854        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6855     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6856        RAISE OKL_API.G_EXCEPTION_ERROR;
6857     END IF;
6858     -- To Check We Got the Valid info
6859     IF UPPER(p_new_yn) NOT IN ('Y','N') OR
6860        (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
6861        UPPER(p_new_yn) IS NULL) THEN
6862       OKL_API.set_message(p_app_name     => G_APP_NAME,
6863                           p_msg_name     => G_INVALID_YN,
6864                           p_token1       => G_COL_NAME_TOKEN,
6865                           p_token1_value => 'p_new_yn');
6866        -- Halt Validation
6867        RAISE OKL_API.G_EXCEPTION_ERROR;
6868     END IF;
6869     -- Validate to see if the asset_number given is not null
6870     -- and also Validate asset_number does not exists
6871     -- in OKL_TXL_ASSETS_V
6872     OPEN  get_fa_id(p_top_line =>   p_clev_rec.cle_id,
6873                     p_dnz_chr_id => p_clev_rec.dnz_chr_id);
6874     IF get_fa_id%NOTFOUND THEN
6875       OKL_API.set_message(p_app_name => G_APP_NAME,
6876                           p_msg_name => G_LINE_RECORD);
6877       RAISE OKL_API.G_EXCEPTION_ERROR;
6878     END IF;
6879     FETCH get_fa_id INTO ln_fa_id;
6880     CLOSE get_fa_id;
6881 
6882     IF UPPER(p_new_yn) = 'Y' THEN
6883        validate_new_ast_num_update(x_return_status  => x_return_status,
6884                                    p_asset_number   => p_asset_number,
6885                                    p_kle_id         => ln_fa_id,
6886                                    p_dnz_chr_id     => p_clev_rec.dnz_chr_id);
6887        -- Check if activity started successfully
6888        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6889           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6890        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6891           RAISE OKL_API.G_EXCEPTION_ERROR;
6892        END IF;
6893     END IF;
6894     -- Validate Line Style id and get the line type code
6895     -- and line style type for further processing
6896     validate_lse_id(p_clev_rec      => p_clev_rec,
6897                     x_return_status => x_return_status,
6898                     x_lty_code      => l_lty_code,
6899                     x_lse_type      => l_lse_type);
6900     -- Check if activity started successfully
6901     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6902        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6903     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6904        RAISE OKL_API.G_EXCEPTION_ERROR;
6905     END IF;
6906     -- Validate the Dnz_Chr_id
6907     validate_dnz_chr_id(p_clev_rec      => p_clev_rec,
6908                         x_return_status => x_return_status);
6909     -- Check if activity started successfully
6910     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6911       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6912     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6913       RAISE OKL_API.G_EXCEPTION_ERROR;
6914     END IF;
6915     -- Now we are creating Add on Line
6916     -- Here we have have Dnz_Chr_id ,lse_id and cle_id
6917     -- The Record Should have the cle_id
6918     -- if the given line style is Add on Line
6919     -- Since there could be mutilple records we have to accept
6920     l_clev_rec := p_clev_rec;
6921     IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
6922        l_clev_rec.chr_id IS NULL) AND
6923        (l_clev_rec.dnz_chr_id IS NOT NULL OR
6924        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
6925        (l_clev_rec.cle_id IS NOT NULL OR
6926        l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
6927        l_lty_code = G_ADDON_LINE_LTY_CODE AND
6928        l_lse_type = G_SLS_TYPE THEN
6929        create_addon_line_item_rec(p_api_version   => p_api_version,
6930                                   p_init_msg_list => p_init_msg_list,
6931                                   x_return_status => x_return_status,
6932                                   x_msg_count     => x_msg_count,
6933                                   x_msg_data      => x_msg_data,
6934                                   p_lty_code      => l_lty_code,
6935                                   p_clev_rec      => p_clev_rec,
6936                                   p_klev_rec      => p_klev_rec,
6937                                   p_cimv_rec      => p_cimv_rec,
6938                                   x_clev_rec      => x_clev_rec,
6939                                   x_klev_rec      => x_klev_rec,
6940                                   x_cimv_rec      => x_cimv_rec);
6941        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
6942           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
6943        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
6944           RAISE OKL_API.G_EXCEPTION_ERROR;
6945        END IF;
6946     ELSE
6947       OKL_API.set_message(p_app_name     => G_APP_NAME,
6948                           p_msg_name     => G_INVALID_CRITERIA,
6949                           p_token1       => G_COL_NAME_TOKEN,
6950                           p_token1_value => 'Add on line');
6951        x_return_status := OKL_API.G_RET_STS_ERROR;
6952        RAISE OKL_API.G_EXCEPTION_ERROR;
6953     END IF;
6954     OKL_API.END_ACTIVITY (x_msg_count,
6955                           x_msg_data );
6956   EXCEPTION
6957     WHEN OKL_API.G_EXCEPTION_ERROR THEN
6958     IF get_fa_id%ISOPEN THEN
6959       CLOSE get_fa_id;
6960     END IF;
6961     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
6962                                l_api_name,
6963                                G_PKG_NAME,
6964                                'OKL_API.G_RET_STS_ERROR',
6965                                x_msg_count,
6966                                x_msg_data,
6967                                '_PVT');
6968     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
6969     IF get_fa_id%ISOPEN THEN
6970       CLOSE get_fa_id;
6971     END IF;
6972     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6973                               l_api_name,
6974                               G_PKG_NAME,
6975                               'OKL_API.G_RET_STS_UNEXP_ERROR',
6976                               x_msg_count,
6977                               x_msg_data,
6978                               '_PVT');
6979     WHEN OTHERS THEN
6980     IF get_fa_id%ISOPEN THEN
6981       CLOSE get_fa_id;
6982     END IF;
6983     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
6984                               l_api_name,
6985                               G_PKG_NAME,
6986                               'OTHERS',
6987                               x_msg_count,
6988                               x_msg_data,
6989                               '_PVT');
6990   END create_addon_line_rec;
6991 -------------------------------------------------------------------------------------------------------
6992   Procedure Update_addon_line_rec(
6993             p_api_version     IN  NUMBER,
6994             p_init_msg_list   IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
6995             x_return_status   OUT NOCOPY VARCHAR2,
6996             x_msg_count       OUT NOCOPY NUMBER,
6997             x_msg_data        OUT NOCOPY VARCHAR2,
6998             P_new_yn          IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
6999             p_asset_number    IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
7000             p_clev_rec        IN  clev_rec_type,
7001             p_klev_rec        IN  klev_rec_type,
7002             p_cimv_rec        IN  cimv_rec_type,
7003             x_clev_rec        OUT NOCOPY clev_rec_type,
7004             x_klev_rec        OUT NOCOPY klev_rec_type,
7005             x_cimv_rec        OUT NOCOPY cimv_rec_type) IS
7006     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_AO_LNE_REC';
7007     l_clev_rec               clev_rec_type;
7008     -- Variables for validation of line style
7009     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
7010     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
7011     ln_fa_id                 OKC_K_LINES_V.ID%TYPE;
7012 
7013     CURSOR get_fa_id(p_top_line OKC_K_LINES_V.ID%TYPE,
7014                      p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE)
7015     IS
7016     SELECT cle.id
7017     FROM okc_subclass_top_line stl,
7018          okc_line_styles_b lse2,
7019          okc_line_styles_b lse1,
7020          okc_k_lines_b cle
7021     WHERE cle.dnz_chr_id = p_dnz_chr_id
7022     AND cle.lse_id = lse1.id
7023     AND lse1.lty_code = G_FA_LINE_LTY_CODE
7024     AND lse1.lse_parent_id = lse2.id
7025     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
7026     AND lse2.id = stl.lse_id
7027     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE)
7028     AND cle.cle_id in (SELECT distinct to_char(cle.cle_id)
7029                        FROM okc_subclass_top_line stl,
7030                             okc_line_styles_b lse2,
7031                             okc_line_styles_b lse1,
7032                             okc_k_lines_b cle
7033                        WHERE cle.id = p_top_line
7034                        AND cle.dnz_chr_id = p_dnz_chr_id
7035                        AND cle.lse_id = lse1.id
7036                        AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
7037                        AND lse1.lse_parent_id = lse2.id
7038                        AND lse2.lty_code = G_FIN_LINE_LTY_CODE
7039                        AND lse2.id = stl.lse_id
7040                        AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE));
7041   BEGIN
7042     x_return_status := OKL_API.G_RET_STS_SUCCESS;
7043     -- Call start_activity to create savepoint, check compatibility
7044     -- and initialize message list
7045     x_return_status := OKL_API.START_ACTIVITY (
7046                                l_api_name
7047                                ,p_init_msg_list
7048                                ,'_PVT'
7049                                ,x_return_status);
7050     -- Check if activity started successfully
7051     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7052        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7053     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7054        RAISE OKL_API.G_EXCEPTION_ERROR;
7055     END IF;
7056     l_clev_rec := p_clev_rec;
7057     x_return_status := get_sts_code(p_dnz_chr_id => null,
7058                                     p_cle_id     => l_clev_rec.cle_id,
7059                                     x_sts_code   => l_clev_rec.sts_code);
7060     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7061        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7062     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7063        RAISE OKL_API.G_EXCEPTION_ERROR;
7064     END IF;
7065     validate_sts_code(p_clev_rec       => l_clev_rec,
7066                       x_return_status  => x_return_status);
7067     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7068        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7069     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7070        RAISE OKL_API.G_EXCEPTION_ERROR;
7071     END IF;
7072     OPEN  get_fa_id(p_top_line =>   l_clev_rec.cle_id,
7073                     p_dnz_chr_id => l_clev_rec.dnz_chr_id);
7074     IF get_fa_id%NOTFOUND THEN
7075       OKL_API.set_message(p_app_name => G_APP_NAME,
7076                           p_msg_name => G_LINE_RECORD);
7077       RAISE OKL_API.G_EXCEPTION_ERROR;
7078     END IF;
7079     FETCH get_fa_id INTO ln_fa_id;
7080     CLOSE get_fa_id;
7081     -- To Check We Got the Valid info
7082     IF UPPER(p_new_yn) NOT IN ('Y','N') OR
7083        (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
7084        UPPER(p_new_yn) IS NULL) THEN
7085       OKL_API.set_message(p_app_name     => G_APP_NAME,
7086                           p_msg_name     => G_INVALID_YN,
7087                           p_token1       => G_COL_NAME_TOKEN,
7088                           p_token1_value => 'p_new_yn');
7089        -- Halt Validation
7090        RAISE OKL_API.G_EXCEPTION_ERROR;
7091     END IF;
7092     -- Validate to see if the asset_number given is not null
7093     -- and also Validate asset_number does not exists
7094     -- in OKL_TXL_ASSETS_V
7095     IF UPPER(p_new_yn) = 'Y' THEN
7096        validate_new_ast_num_update(x_return_status  => x_return_status,
7097                                    p_asset_number   => p_asset_number,
7098                                    p_kle_id         => ln_fa_id,
7099                                    p_dnz_chr_id     => l_clev_rec.dnz_chr_id);
7100        -- Check if activity started successfully
7101        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7102           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7103        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7104           RAISE OKL_API.G_EXCEPTION_ERROR;
7105        END IF;
7106     END IF;
7107     x_return_status := get_lse_id(p_lty_code => G_ADDON_LINE_LTY_CODE,
7108                                   x_lse_id   => l_clev_rec.lse_id);
7109     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7110       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7111     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7112       RAISE OKL_API.G_EXCEPTION_ERROR;
7113     END IF;
7114     -- Validate Line Style id and get the line type code
7115     -- and line style type for further processing
7116     validate_lse_id(p_clev_rec      => l_clev_rec,
7117                     x_return_status => x_return_status,
7118                     x_lty_code      => l_lty_code,
7119                     x_lse_type      => l_lse_type);
7120     -- Check if activity started successfully
7121     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7122        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7123     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7124        RAISE OKL_API.G_EXCEPTION_ERROR;
7125     END IF;
7126     -- Validate the Dnz_Chr_id
7127     validate_dnz_chr_id(p_clev_rec      => l_clev_rec,
7128                         x_return_status => x_return_status);
7129     -- Check if activity started successfully
7130     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7131       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7132     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7133       RAISE OKL_API.G_EXCEPTION_ERROR;
7134     END IF;
7135     -- Now we are updating Add on Line
7136     -- Here we have have Dnz_Chr_id ,lse_id and cle_id
7137     -- The Record Should have the cle_id
7138     -- if the given line style is Add on Line
7139     -- Since there could be mutilple records we have to accept
7140     IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
7141        l_clev_rec.chr_id IS NULL) AND
7142        (l_clev_rec.dnz_chr_id IS NOT NULL OR
7143        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
7144        (l_clev_rec.cle_id IS NOT NULL OR
7145        l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
7146        l_lty_code =  G_ADDON_LINE_LTY_CODE AND
7147        l_lse_type = G_SLS_TYPE THEN
7148        update_addon_line_item_rec(p_api_version   => p_api_version,
7149                                   p_init_msg_list => p_init_msg_list,
7150                                   x_return_status => x_return_status,
7151                                   x_msg_count     => x_msg_count,
7152                                   x_msg_data      => x_msg_data,
7153                                   p_lty_code      => l_lty_code,
7154                                   p_clev_rec      => l_clev_rec,
7155                                   p_klev_rec      => p_klev_rec,
7156                                   p_cimv_rec      => p_cimv_rec,
7157                                   x_clev_rec      => x_clev_rec,
7158                                   x_klev_rec      => x_klev_rec,
7159                                   x_cimv_rec      => x_cimv_rec);
7160        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7161           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7162        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7163           RAISE OKL_API.G_EXCEPTION_ERROR;
7164        END IF;
7165     ELSE
7166       OKL_API.set_message(p_app_name     => G_APP_NAME,
7167                           p_msg_name     => G_INVALID_CRITERIA,
7168                           p_token1       => G_COL_NAME_TOKEN,
7169                           p_token1_value => 'Add on line');
7170        x_return_status := OKL_API.G_RET_STS_ERROR;
7171        RAISE OKL_API.G_EXCEPTION_ERROR;
7172     END IF;
7173     OKL_API.END_ACTIVITY (x_msg_count,
7174                           x_msg_data );
7175   EXCEPTION
7176     WHEN OKL_API.G_EXCEPTION_ERROR THEN
7177     IF get_fa_id%ISOPEN THEN
7178       CLOSE get_fa_id;
7179     END IF;
7180     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7181                                l_api_name,
7182                                G_PKG_NAME,
7183                                'OKL_API.G_RET_STS_ERROR',
7184                                x_msg_count,
7185                                x_msg_data,
7186                                '_PVT');
7187     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7188     IF get_fa_id%ISOPEN THEN
7189       CLOSE get_fa_id;
7190     END IF;
7191     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7192                               l_api_name,
7193                               G_PKG_NAME,
7194                               'OKL_API.G_RET_STS_UNEXP_ERROR',
7195                               x_msg_count,
7196                               x_msg_data,
7197                               '_PVT');
7198     WHEN OTHERS THEN
7199     IF get_fa_id%ISOPEN THEN
7200       CLOSE get_fa_id;
7201     END IF;
7202     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7203                               l_api_name,
7204                               G_PKG_NAME,
7205                               'OTHERS',
7206                               x_msg_count,
7207                               x_msg_data,
7208                               '_PVT');
7209   END Update_addon_line_rec;
7210 -------------------------------------------------------------------------------------------------------
7211   PROCEDURE delete_addon_line_rec(
7212             p_api_version    IN  NUMBER,
7213             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
7214             x_return_status  OUT NOCOPY VARCHAR2,
7215             x_msg_count      OUT NOCOPY NUMBER,
7216             x_msg_data       OUT NOCOPY VARCHAR2,
7217             p_clev_rec       IN  clev_rec_type,
7218             p_klev_rec       IN  klev_rec_type,
7219             x_clev_rec       OUT NOCOPY clev_rec_type) IS
7220     l_api_name      CONSTANT VARCHAR2(30) := 'DEL_ADDON_REC';
7221     l_delete_clev_rec        clev_rec_type;
7222     l_delete_klev_rec        klev_rec_type;
7223     -- Variables for validation of line style
7224     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
7225     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
7226   BEGIN
7227     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
7228     -- Call start_activity to create savepoint, check compatibility
7229     -- and initialize message list
7230     x_return_status := OKL_API.START_ACTIVITY (
7231                                l_api_name
7232                                ,p_init_msg_list
7233                                ,'_PVT'
7234                                ,x_return_status);
7235     -- Check if activity started successfully
7236     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7237        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7238     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7239        RAISE OKL_API.G_EXCEPTION_ERROR;
7240     END IF;
7241     OKL_API.init_msg_list(p_init_msg_list);
7242     l_delete_clev_rec := p_clev_rec;
7243     -- To Get the cle top Line Record
7244     x_return_status := get_rec_clev(p_clev_rec.id,
7245                                     l_delete_clev_rec);
7246     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7247        OKL_API.set_message(p_app_name     => G_APP_NAME,
7248                            p_msg_name     => G_FETCHING_INFO,
7249                            p_token1       => G_REC_NAME_TOKEN,
7250                            p_token1_value => 'OKC_K_LINES_V Record');
7251        RAISE G_EXCEPTION_HALT_VALIDATION;
7252     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7253        OKL_API.set_message(p_app_name     => G_APP_NAME,
7254                            p_msg_name     => G_FETCHING_INFO,
7255                            p_token1       => G_REC_NAME_TOKEN,
7256                            p_token1_value => 'OKC_K_LINES_V Record');
7257        RAISE G_EXCEPTION_HALT_VALIDATION;
7258     END IF;
7259     -- To Get the kle top Line Record
7260     x_return_status := get_rec_klev(p_clev_rec.id,
7261                                     l_delete_klev_rec);
7262     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7263        OKL_API.set_message(p_app_name     => G_APP_NAME,
7264                            p_msg_name     => G_FETCHING_INFO,
7265                            p_token1       => G_REC_NAME_TOKEN,
7266                            p_token1_value => 'OKL_K_LINES_V Record');
7267        RAISE G_EXCEPTION_HALT_VALIDATION;
7268     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7269        OKL_API.set_message(p_app_name     => G_APP_NAME,
7270                            p_msg_name     => G_FETCHING_INFO,
7271                            p_token1       => G_REC_NAME_TOKEN,
7272                            p_token1_value => 'OKL_K_LINES_V Record');
7273        RAISE G_EXCEPTION_HALT_VALIDATION;
7274     END IF;
7275     IF l_delete_klev_rec.id <> l_delete_clev_rec.id THEN
7276        OKL_API.set_message(p_app_name     => G_APP_NAME,
7277                            p_msg_name     => G_LINE_RECORD);
7278        RAISE G_EXCEPTION_HALT_VALIDATION;
7279     END IF;
7280     validate_sts_code(p_clev_rec       => l_delete_clev_rec,
7281                       x_return_status  => x_return_status);
7282     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7283        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7284     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7285        RAISE OKL_API.G_EXCEPTION_ERROR;
7286     END IF;
7287     -- Validate Line Style id and get the line type code
7288     -- and line style type for further processing
7289     validate_lse_id(p_clev_rec      => l_delete_clev_rec,
7290                     x_return_status => x_return_status,
7291                     x_lty_code      => l_lty_code,
7292                     x_lse_type      => l_lse_type);
7293     -- Check if activity started successfully
7294     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7295        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7296     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7297        RAISE OKL_API.G_EXCEPTION_ERROR;
7298     END IF;
7299     -- Validate the Dnz_Chr_id
7300     validate_dnz_chr_id(p_clev_rec      => l_delete_clev_rec,
7301                         x_return_status => x_return_status);
7302     -- Check if activity started successfully
7303     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7304        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7305     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7306        RAISE OKL_API.G_EXCEPTION_ERROR;
7307     END IF;
7308     -- Now we are deleting Add on Line
7309     -- Here we have have Dnz_Chr_id ,lse_id and cle_id
7310     -- The Record Should have the cle_id
7311     -- if the given line style is Add on Line
7312     -- Since there could be mutilple records we have to accept
7313     IF (l_delete_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
7314        l_delete_clev_rec.chr_id IS NULL) AND
7315        (l_delete_clev_rec.dnz_chr_id IS NOT NULL OR
7316        l_delete_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
7317        (l_delete_clev_rec.cle_id IS NOT NULL OR
7318        l_delete_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
7319        l_lty_code = G_ADDON_LINE_LTY_CODE AND
7320        l_lse_type = G_SLS_TYPE THEN
7321        OKL_CONTRACT_PUB.delete_contract_line(
7322                         p_api_version   => p_api_version,
7323                         p_init_msg_list => p_init_msg_list,
7324                         x_return_status => x_return_status,
7325                         x_msg_count     => x_msg_count,
7326                         x_msg_data      => x_msg_data,
7327                         p_line_id       => l_delete_clev_rec.id);
7328        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7329          OKL_API.set_message(p_app_name     => G_APP_NAME,
7330                              p_msg_name     => G_DELETING_ADDON_LINE);
7331          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7332        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7333          OKL_API.set_message(p_app_name     => G_APP_NAME,
7334                              p_msg_name     => G_DELETING_ADDON_LINE);
7335          RAISE OKL_API.G_EXCEPTION_ERROR;
7336        END IF;
7337     ELSE
7338       OKL_API.set_message(p_app_name     => G_APP_NAME,
7339                           p_msg_name     => G_INVALID_CRITERIA,
7340                           p_token1       => G_COL_NAME_TOKEN,
7341                           p_token1_value => 'Add on line');
7342        x_return_status := OKL_API.G_RET_STS_ERROR;
7343        RAISE OKL_API.G_EXCEPTION_ERROR;
7344     END IF;
7345     -- We need to the below since we need to calculate the OEC again
7346     x_clev_rec := l_delete_clev_rec;
7347     OKL_API.END_ACTIVITY (x_msg_count,
7348                           x_msg_data );
7349   EXCEPTION
7350     WHEN OKL_API.G_EXCEPTION_ERROR THEN
7351     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7352                                l_api_name,
7353                                G_PKG_NAME,
7354                                'OKL_API.G_RET_STS_ERROR',
7355                                x_msg_count,
7356                                x_msg_data,
7357                                '_PVT');
7358     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7359     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7360                               l_api_name,
7361                               G_PKG_NAME,
7362                               'OKL_API.G_RET_STS_UNEXP_ERROR',
7363                               x_msg_count,
7364                               x_msg_data,
7365                               '_PVT');
7366     WHEN OTHERS THEN
7367     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7368                               l_api_name,
7369                               G_PKG_NAME,
7370                               'OTHERS',
7371                               x_msg_count,
7372                               x_msg_data,
7373                               '_PVT');
7374   END delete_addon_line_rec;
7375 -------------------------------------------------------------------------------------------------
7376   PROCEDURE Create_inst_line(p_api_version    IN  NUMBER,
7377                              p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
7378                              x_return_status  OUT NOCOPY VARCHAR2,
7379                              x_msg_count      OUT NOCOPY NUMBER,
7380                              x_msg_data       OUT NOCOPY VARCHAR2,
7381 -- #4414408                             p_lty_code       IN  OKC_LINE_STYLES_V.LTY_CODE%TYPE,
7382                              p_clev_rec       IN  clev_rec_type,
7383                              p_klev_rec       IN  klev_rec_type,
7384                              x_clev_rec       OUT NOCOPY clev_rec_type,
7385                              x_klev_rec       OUT NOCOPY klev_rec_type) IS
7386     l_clev_rec               clev_rec_type;
7387     r_clev_rec               clev_rec_type;
7388 --    l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
7389 
7390     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_INSTS_LINE';
7391   BEGIN
7392 
7393     x_return_status         := OKL_API.G_RET_STS_SUCCESS;
7394     -- Call start_activity to create savepoint, check compatibility
7395     -- and initialize message list
7396     x_return_status := OKL_API.START_ACTIVITY (l_api_name
7397                                                ,p_init_msg_list
7398                                                ,'_PVT'
7399                                                ,x_return_status);
7400     -- Check if activity started successfully
7401     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7402        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7403     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7404        RAISE OKL_API.G_EXCEPTION_ERROR;
7405     END IF;
7406     -- 4414408 redundant validation
7407 /*
7408     -- Check the cle_id that is of the top Fin Asset line
7409     validate_cle_lse_id(p_clev_rec      => p_clev_rec,
7410                         p_lty_code      => p_lty_code,
7411                         x_lty_code      => l_lty_code,
7412                         x_return_status => x_return_status);
7413     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7414        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7415     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7416        RAISE OKL_API.G_EXCEPTION_ERROR;
7417     END IF;
7418 */
7419     -- since Fixed Assets Line  is a sub line of Fin Asset line we have to check weather
7420     -- which line are creating under which line
7421 --    IF l_lty_code = G_FIN_LINE_LTY_CODE THEN
7422 
7423        r_clev_rec := p_clev_rec;
7424 
7425 -- # 4414408 use new function default_contract_line_values
7426 /*
7427        IF (p_clev_rec.sts_code IS NULL OR
7428           p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
7429          x_return_status := get_sts_code(p_dnz_chr_id => null,
7430                                          p_cle_id     => p_clev_rec.cle_id,
7431                                          x_sts_code   => r_clev_rec.sts_code);
7432          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7433             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7434          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7435             RAISE OKL_API.G_EXCEPTION_ERROR;
7436          END IF;
7437        END IF;
7438        IF (p_clev_rec.end_date IS NULL OR
7439           p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
7440          x_return_status := get_end_date(p_dnz_chr_id => null,
7441                                          p_cle_id     => p_clev_rec.cle_id,
7442                                          x_end_date   => r_clev_rec.end_date);
7443          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7444             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7445          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7446             RAISE OKL_API.G_EXCEPTION_ERROR;
7447          END IF;
7448        END IF;
7449        IF (p_clev_rec.start_date IS NULL OR
7450           p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
7451          x_return_status := get_start_date(p_dnz_chr_id => null,
7452                                            p_cle_id     => p_clev_rec.cle_id,
7453                                            x_start_date => r_clev_rec.start_date);
7454          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7455             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7456          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7457             RAISE OKL_API.G_EXCEPTION_ERROR;
7458          END IF;
7459        END IF;
7460        IF (p_clev_rec.currency_code IS NULL OR
7461           p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
7462          x_return_status := get_currency_code(p_dnz_chr_id    => null,
7463                                               p_cle_id        => p_clev_rec.cle_id,
7464                                               x_currency_code => r_clev_rec.currency_code);
7465          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7466            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7467          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7468            RAISE OKL_API.G_EXCEPTION_ERROR;
7469          END IF;
7470        END IF;
7471 */
7472     IF ((p_clev_rec.sts_code IS NULL OR
7473          p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) OR
7474         (p_clev_rec.end_date IS NULL OR
7475          p_clev_rec.end_date = OKL_API.G_MISS_DATE) OR
7476         (p_clev_rec.start_date IS NULL OR
7477          p_clev_rec.start_date = OKL_API.G_MISS_DATE) OR
7478         (p_clev_rec.currency_code IS NULL OR
7479          p_clev_rec.currency_code = OKL_API.G_MISS_CHAR)
7480        ) THEN
7481        x_return_status := default_contract_line_values(p_dnz_chr_id    => null,
7482                                                        p_cle_id        => r_clev_rec.cle_id,
7483                                                        p_clev_rec      => r_clev_rec);
7484       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7485          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7486       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7487          RAISE OKL_API.G_EXCEPTION_ERROR;
7488       END IF;
7489     END IF;
7490 
7491        -- Now the all the records are there we can create Instance Line
7492        OKL_CONTRACT_PUB.create_contract_line(p_api_version   => p_api_version,
7493                                              p_init_msg_list => p_init_msg_list,
7494                                              x_return_status => x_return_status,
7495                                              x_msg_count     => x_msg_count,
7496                                              x_msg_data      => x_msg_data,
7497                                              p_clev_rec      => r_clev_rec,
7498                                              p_klev_rec      => p_klev_rec,
7499                                              x_clev_rec      => x_clev_rec,
7500                                              x_klev_rec      => x_klev_rec);
7501        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7502           OKL_API.set_message(p_app_name     => G_APP_NAME,
7503                               p_msg_name     => G_CREATION_INSTS_LINE);
7504           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7505        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7506           OKL_API.set_message(p_app_name     => G_APP_NAME,
7507                               p_msg_name     => G_CREATION_INSTS_LINE);
7508           RAISE OKL_API.G_EXCEPTION_ERROR;
7509        END IF;
7510 --  #4414408
7511 --    ELSE
7512 --       OKL_API.set_message(p_app_name     => G_APP_NAME,
7513 --                           p_msg_name     => G_LINE_STYLE);
7514 --          RAISE OKL_API.G_EXCEPTION_ERROR;
7515 --    END IF;
7516     OKL_API.END_ACTIVITY (x_msg_count,
7517                           x_msg_data );
7518   EXCEPTION
7519     WHEN OKL_API.G_EXCEPTION_ERROR THEN
7520     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7521                                l_api_name,
7522                                G_PKG_NAME,
7523                                'OKL_API.G_RET_STS_ERROR',
7524                                x_msg_count,
7525                                x_msg_data,
7526                                '_PVT');
7527     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7528     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7529                               l_api_name,
7530                               G_PKG_NAME,
7531                               'OKL_API.G_RET_STS_UNEXP_ERROR',
7532                               x_msg_count,
7533                               x_msg_data,
7534                               '_PVT');
7535     WHEN OTHERS THEN
7536     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7537                               l_api_name,
7538                               G_PKG_NAME,
7539                               'OTHERS',
7540                               x_msg_count,
7541                               x_msg_data,
7542                               '_PVT');
7543   END Create_inst_line;
7544 -------------------------------------------------------------------------------------------------
7545   PROCEDURE update_inst_line(p_api_version    IN  NUMBER,
7546                              p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
7547                              x_return_status  OUT NOCOPY VARCHAR2,
7548                              x_msg_count      OUT NOCOPY NUMBER,
7549                              x_msg_data       OUT NOCOPY VARCHAR2,
7550                              p_lty_code       IN  OKC_LINE_STYLES_V.LTY_CODE%TYPE,
7551                              p_clev_rec       IN  clev_rec_type,
7552                              p_klev_rec       IN  klev_rec_type,
7553                              x_clev_rec       OUT NOCOPY clev_rec_type,
7554                              x_klev_rec       OUT NOCOPY klev_rec_type) IS
7555 
7556     l_clev_rec               clev_rec_type;
7557     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
7558 
7559     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_INSTS_LINE';
7560   BEGIN
7561     x_return_status         := OKL_API.G_RET_STS_SUCCESS;
7562     -- Call start_activity to create savepoint, check compatibility
7563     -- and initialize message list
7564     x_return_status := OKL_API.START_ACTIVITY (l_api_name
7565                                                ,p_init_msg_list
7566                                                ,'_PVT'
7567                                                ,x_return_status);
7568     -- Check if activity started successfully
7569     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7570        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7571     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7572        RAISE OKL_API.G_EXCEPTION_ERROR;
7573     END IF;
7574     -- Check the cle_id that is of the top Fin Asset line
7575     validate_cle_lse_id(p_clev_rec      => p_clev_rec,
7576                         p_lty_code      => p_lty_code,
7577                         x_lty_code      => l_lty_code,
7578                         x_return_status => x_return_status);
7579     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7580        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7581     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7582        RAISE OKL_API.G_EXCEPTION_ERROR;
7583     END IF;
7584     -- since Fixed Assets Line  is a sub line of Fin Asset line we have to check weather
7585     -- which line are creating under which line
7586     IF l_lty_code = G_FIN_LINE_LTY_CODE THEN
7587        -- Now the all the records are there we can create Instance Line
7588        OKL_CONTRACT_PUB.update_contract_line(p_api_version   => p_api_version,
7589                                              p_init_msg_list => p_init_msg_list,
7590                                              x_return_status => x_return_status,
7591                                              x_msg_count     => x_msg_count,
7592                                              x_msg_data      => x_msg_data,
7593                                              p_clev_rec      => p_clev_rec,
7594                                              p_klev_rec      => p_klev_rec,
7595                                              x_clev_rec      => x_clev_rec,
7596                                              x_klev_rec      => x_klev_rec);
7597        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7598           OKL_API.set_message(p_app_name     => G_APP_NAME,
7599                               p_msg_name     => G_UPDATING_INSTS_LINE);
7600           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7601        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7602           OKL_API.set_message(p_app_name     => G_APP_NAME,
7603                               p_msg_name     => G_UPDATING_INSTS_LINE);
7604           RAISE OKL_API.G_EXCEPTION_ERROR;
7605        END IF;
7606     ELSE
7607        OKL_API.set_message(p_app_name     => G_APP_NAME,
7608                            p_msg_name     => G_LINE_STYLE);
7609        RAISE OKL_API.G_EXCEPTION_ERROR;
7610     END IF;
7611     OKL_API.END_ACTIVITY (x_msg_count,
7612                           x_msg_data );
7613   EXCEPTION
7614     WHEN OKL_API.G_EXCEPTION_ERROR THEN
7615     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7616                                l_api_name,
7617                                G_PKG_NAME,
7618                                'OKL_API.G_RET_STS_ERROR',
7619                                x_msg_count,
7620                                x_msg_data,
7621                                '_PVT');
7622     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7623     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7624                               l_api_name,
7625                               G_PKG_NAME,
7626                               'OKL_API.G_RET_STS_UNEXP_ERROR',
7627                               x_msg_count,
7628                               x_msg_data,
7629                               '_PVT');
7630     WHEN OTHERS THEN
7631     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7632                               l_api_name,
7633                               G_PKG_NAME,
7634                               'OTHERS',
7635                               x_msg_count,
7636                               x_msg_data,
7637                               '_PVT');
7638   END update_inst_line;
7639 -------------------------------------------------------------------------------------------------
7640   PROCEDURE Create_installed_base_line(p_api_version    IN  NUMBER,
7641                                        p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
7642                                        x_return_status  OUT NOCOPY VARCHAR2,
7643                                        x_msg_count      OUT NOCOPY NUMBER,
7644                                        x_msg_data       OUT NOCOPY VARCHAR2,
7645 -- 4414408                                       p_lty_code       IN  OKC_LINE_STYLES_V.LTY_CODE%TYPE,
7646                                        p_clev_rec       IN  clev_rec_type,
7647                                        p_klev_rec       IN  klev_rec_type,
7648                                        p_cimv_rec       IN  cimv_rec_type,
7649                                        p_itiv_rec       IN  itiv_rec_type,
7650                                        x_clev_rec       OUT NOCOPY clev_rec_type,
7651                                        x_klev_rec       OUT NOCOPY klev_rec_type,
7652                                        x_cimv_rec       OUT NOCOPY cimv_rec_type,
7653                                        x_trxv_rec       OUT NOCOPY trxv_rec_type,
7654                                        x_itiv_rec       OUT NOCOPY itiv_rec_type) IS
7655     l_clev_rec               clev_rec_type;
7656     r_clev_rec               clev_rec_type;
7657     l_cimv_rec               cimv_rec_type;
7658     r_cimv_rec               cimv_rec_type;
7659     lv_dummy                 VARCHAR2(3) := OKL_API.G_MISS_CHAR ;
7660 --    l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
7661     l_itiv_rec               itiv_rec_type;
7662     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_IB_LINE';
7663   BEGIN
7664     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
7665     -- Call start_activity to create savepoint, check compatibility
7666     -- and initialize message list
7667     x_return_status := OKL_API.START_ACTIVITY (
7668                                l_api_name
7669                                ,p_init_msg_list
7670                                ,'_PVT'
7671                                ,x_return_status);
7672     -- Check if activity started successfully
7673     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7674        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7675     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7676        RAISE OKL_API.G_EXCEPTION_ERROR;
7677     END IF;
7678     -- 4414408 redundant validation
7679 /*
7680     -- Check the cle_id that is of the top Fin Asset line
7681     validate_cle_lse_id(p_clev_rec      => p_clev_rec,
7682                         p_lty_code      => p_lty_code,
7683                         x_lty_code      => l_lty_code,
7684                         x_return_status => x_return_status);
7685     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7686        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7687     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7688        RAISE OKL_API.G_EXCEPTION_ERROR;
7689     END IF;
7690 */
7691     -- since IB Line  is a sub line of instance line we have to check weather
7692     -- which line are creating under which line
7693 --    IF l_lty_code = G_INST_LINE_LTY_CODE THEN
7694 
7695        r_clev_rec := p_clev_rec;
7696 
7697 -- # 4414408 use new function default_contract_line_values
7698 /*
7699        IF (p_clev_rec.sts_code IS NULL OR
7700           p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
7701          x_return_status := get_sts_code(p_dnz_chr_id => null,
7702                                          p_cle_id     => p_clev_rec.cle_id,
7703                                          x_sts_code   => r_clev_rec.sts_code);
7704          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7705             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7706          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7707             RAISE OKL_API.G_EXCEPTION_ERROR;
7708          END IF;
7709        END IF;
7710        IF (p_clev_rec.end_date IS NULL OR
7711           p_clev_rec.end_date = OKL_API.G_MISS_DATE) THEN
7712          x_return_status := get_end_date(p_dnz_chr_id => null,
7713                                          p_cle_id     => p_clev_rec.cle_id,
7714                                          x_end_date   => r_clev_rec.end_date);
7715          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7716             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7717          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7718             RAISE OKL_API.G_EXCEPTION_ERROR;
7719          END IF;
7720        END IF;
7721        IF (p_clev_rec.start_date IS NULL OR
7722           p_clev_rec.start_date = OKL_API.G_MISS_DATE) THEN
7723          x_return_status := get_start_date(p_dnz_chr_id => null,
7724                                            p_cle_id     => p_clev_rec.cle_id,
7725                                            x_start_date => r_clev_rec.start_date);
7726          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7727             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7728          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7729             RAISE OKL_API.G_EXCEPTION_ERROR;
7730          END IF;
7731        END IF;
7732        IF (p_clev_rec.currency_code IS NULL OR
7733           p_clev_rec.currency_code = OKL_API.G_MISS_CHAR) THEN
7734          x_return_status := get_currency_code(p_dnz_chr_id    => null,
7735                                               p_cle_id        => p_clev_rec.cle_id,
7736                                               x_currency_code => r_clev_rec.currency_code);
7737          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7738            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7739          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7740            RAISE OKL_API.G_EXCEPTION_ERROR;
7741          END IF;
7742        END IF;
7743 */
7744 
7745     IF ((p_clev_rec.sts_code IS NULL OR
7746          p_clev_rec.sts_code = OKL_API.G_MISS_CHAR) OR
7747         (p_clev_rec.end_date IS NULL OR
7748          p_clev_rec.end_date = OKL_API.G_MISS_DATE) OR
7749         (p_clev_rec.start_date IS NULL OR
7750          p_clev_rec.start_date = OKL_API.G_MISS_DATE) OR
7751         (p_clev_rec.currency_code IS NULL OR
7752          p_clev_rec.currency_code = OKL_API.G_MISS_CHAR)
7753        ) THEN
7754        x_return_status := default_contract_line_values(p_dnz_chr_id    => null,
7755                                                        p_cle_id        => r_clev_rec.cle_id,
7756                                                        p_clev_rec      => r_clev_rec);
7757       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7758          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7759       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7760          RAISE OKL_API.G_EXCEPTION_ERROR;
7761       END IF;
7762     END IF;
7763        -- Now the all the records are there we can create Instance Line
7764        OKL_CONTRACT_PUB.create_contract_line(p_api_version   => p_api_version,
7765                                              p_init_msg_list => p_init_msg_list,
7766                                              x_return_status => x_return_status,
7767                                              x_msg_count     => x_msg_count,
7768                                              x_msg_data      => x_msg_data,
7769                                              p_clev_rec      => r_clev_rec,
7770                                              p_klev_rec      => p_klev_rec,
7771                                              x_clev_rec      => x_clev_rec,
7772                                              x_klev_rec      => x_klev_rec);
7773        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7774           OKL_API.set_message(p_app_name     => G_APP_NAME,
7775                               p_msg_name     => G_CREATION_IB_LINE);
7776           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7777        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7778           OKL_API.set_message(p_app_name     => G_APP_NAME,
7779                               p_msg_name     => G_CREATION_IB_LINE);
7780           RAISE OKL_API.G_EXCEPTION_ERROR;
7781        END IF;
7782        l_cimv_rec                   := p_cimv_rec;
7783        l_cimv_rec.cle_id            := x_clev_rec.id;
7784        l_cimv_rec.dnz_chr_id        := x_clev_rec.dnz_chr_id;
7785        l_cimv_rec.JTOT_OBJECT1_CODE := 'OKX_IB_ITEM';
7786        l_cimv_rec.exception_yn      := 'N';
7787        IF (l_cimv_rec.object1_id1 IS NULL OR
7788            l_cimv_rec.object1_id1 = OKL_API.G_MISS_CHAR) AND
7789           (l_cimv_rec.object1_id2 IS NULL OR
7790            l_cimv_rec.object1_id2 = OKL_API.G_MISS_CHAR) THEN
7791           -- We have create the item rec,tal rec,trx rec and also create the iti rec
7792           -- Creation of Item Record for the above record information
7793           OKL_OKC_MIGRATION_PVT.create_contract_item(p_api_version   => p_api_version,
7794                                                      p_init_msg_list => p_init_msg_list,
7795                                                      x_return_status => x_return_status,
7796                                                      x_msg_count     => x_msg_count,
7797                                                      x_msg_data      => x_msg_data,
7798                                                      p_cimv_rec      => l_cimv_rec,
7799                                                      x_cimv_rec      => x_cimv_rec);
7800           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7801           OKL_API.set_message(p_app_name     => G_APP_NAME,
7802                               p_msg_name     => G_CREATION_IB_ITEM);
7803              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7804           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7805           OKL_API.set_message(p_app_name     => G_APP_NAME,
7806                               p_msg_name     => G_CREATION_IB_ITEM);
7807              RAISE OKL_API.G_EXCEPTION_ERROR;
7808           END IF;
7809           -- Rest of the record Creation will Follow
7810           -- We need to know if the kle_id is already there or not
7811           -- ideally it should be null since it is a new record
7812           IF (x_klev_rec.id IS NOT NULL OR
7813              x_klev_rec.id <> OKL_API.G_MISS_NUM) THEN
7814              lv_dummy := null;
7815           END IF;
7816           IF (lv_dummy = OKL_API.G_MISS_CHAR OR
7817               lv_dummy IS NUll) THEN
7818               l_itiv_rec                   := p_itiv_rec;
7819              -- To the Item Info from model Line
7820              x_return_status := get_rec_ib_cimv(p_cle_id     => x_clev_rec.cle_id,
7821                                                 p_dnz_chr_id => x_cimv_rec.dnz_chr_id,
7822                                                 x_cimv_rec   => r_cimv_rec);
7823              IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7824                OKL_API.set_message(p_app_name     => G_APP_NAME,
7825                                    p_msg_name     => G_FETCHING_INFO,
7826                                    p_token1       => G_REC_NAME_TOKEN,
7827                                    p_token1_value => 'OKC_K_ITEMS_V Record');
7828                RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7829              ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7830                OKL_API.set_message(p_app_name     => G_APP_NAME,
7831                                    p_msg_name     => G_FETCHING_INFO,
7832                                    p_token1       => G_REC_NAME_TOKEN,
7833                                    p_token1_value => 'OKC_K_ITEMS_V Record');
7834                 RAISE OKL_API.G_EXCEPTION_ERROR;
7835              END IF;
7836               -- Creating iti record
7837               l_itiv_rec.inventory_item_id    := to_number(r_cimv_rec.object1_id1);
7838               l_itiv_rec.inventory_org_id     := to_number(r_cimv_rec.object1_id2);
7839               IF (l_itiv_rec.line_number IS NULL OR
7840                  l_itiv_rec.line_number = OKL_API.G_MISS_NUM) THEN
7841                  l_itiv_rec.line_number       := 1;
7842               END IF;
7843               l_itiv_rec.kle_id               := x_klev_rec.id;
7844               l_itiv_rec.jtot_object_code_new := 'OKX_PARTSITE';
7845               -- Create another iti_id record for the tas_id of the header
7846               create_txl_itm_insts(p_api_version    => p_api_version,
7847                                    p_init_msg_list  => p_init_msg_list,
7848                                    x_return_status  => x_return_status,
7849                                    x_msg_count      => x_msg_count,
7850                                    x_msg_data       => x_msg_data,
7851                                    p_itiv_rec       => l_itiv_rec,
7852                                    x_trxv_rec       => x_trxv_rec,
7853                                    x_itiv_rec       => x_itiv_rec);
7854               IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7855                 OKL_API.set_message(p_app_name     => G_APP_NAME,
7856                                     p_msg_name     => G_ITI_ID);
7857                 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7858               ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7859                 OKL_API.set_message(p_app_name     => G_APP_NAME,
7860                                     p_msg_name     => G_ITI_ID);
7861                 RAISE OKL_API.G_EXCEPTION_ERROR;
7862               END IF;
7863           ELSE
7864              OKL_API.set_message(p_app_name     => G_APP_NAME,
7865                                  p_msg_name     => G_ITI_ID);
7866              RAISE OKL_API.G_EXCEPTION_ERROR;
7867           END IF;
7868        ELSIF (l_cimv_rec.object1_id1 IS NOT NULL OR
7869              l_cimv_rec.object1_id1 <> OKL_API.G_MISS_CHAR) AND
7870              (l_cimv_rec.object1_id2 IS NOT NULL OR
7871              l_cimv_rec.object1_id2 <> OKL_API.G_MISS_CHAR)THEN
7872            -- Creation of Item Record for the above record information
7873            OKL_OKC_MIGRATION_PVT.create_contract_item(p_api_version   => p_api_version,
7874                                                       p_init_msg_list => p_init_msg_list,
7875                                                       x_return_status => x_return_status,
7876                                                       x_msg_count     => x_msg_count,
7877                                                       x_msg_data      => x_msg_data,
7878                                                       p_cimv_rec      => l_cimv_rec,
7879                                                       x_cimv_rec      => x_cimv_rec);
7880            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7881              OKL_API.set_message(p_app_name     => G_APP_NAME,
7882                                  p_msg_name     => G_CREATION_IB_ITEM);
7883               RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7884            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7885              OKL_API.set_message(p_app_name     => G_APP_NAME,
7886                                  p_msg_name     => G_CREATION_IB_ITEM);
7887               RAISE OKL_API.G_EXCEPTION_ERROR;
7888            END IF;
7889            -- Rest of the record Creation will Follow
7890            -- We need to know if the kle_id is already there or not
7891            -- ideally it should be null since it is a new record
7892            IF (x_klev_rec.id IS NOT NULL OR
7893               x_klev_rec.id <> OKL_API.G_MISS_NUM) THEN
7894               lv_dummy := null;
7895            END IF;
7896            IF (lv_dummy = OKL_API.G_MISS_CHAR OR
7897                lv_dummy IS NUll) THEN
7898                l_itiv_rec                   := p_itiv_rec;
7899               -- To the Item Info from model Line
7900               x_return_status := get_rec_ib_cimv(p_cle_id     => x_clev_rec.cle_id,
7901                                                  p_dnz_chr_id => x_cimv_rec.dnz_chr_id,
7902                                                  x_cimv_rec   => r_cimv_rec);
7903               IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7904                 OKL_API.set_message(p_app_name     => G_APP_NAME,
7905                                     p_msg_name     => G_FETCHING_INFO,
7906                                     p_token1       => G_REC_NAME_TOKEN,
7907                                     p_token1_value => 'OKC_K_ITEMS_V Record');
7908                 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7909               ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7910                 OKL_API.set_message(p_app_name     => G_APP_NAME,
7911                                     p_msg_name     => G_FETCHING_INFO,
7912                                     p_token1       => G_REC_NAME_TOKEN,
7913                                     p_token1_value => 'OKC_K_ITEMS_V Record');
7914                  RAISE OKL_API.G_EXCEPTION_ERROR;
7915               END IF;
7916               -- Creating iti record
7917               l_itiv_rec.inventory_item_id    := to_number(r_cimv_rec.object1_id1);
7918               l_itiv_rec.inventory_org_id     := to_number(r_cimv_rec.object1_id2);
7919               IF (l_itiv_rec.line_number IS NULL OR
7920                  l_itiv_rec.line_number = OKL_API.G_MISS_NUM) THEN
7921                  l_itiv_rec.line_number       := 1;
7922               END IF;
7923               l_itiv_rec.kle_id               := x_klev_rec.id;
7924               l_itiv_rec.jtot_object_code_new := 'OKX_PARTSITE';
7925               -- Create another iti_id record for the tas_id of the header
7926               create_txl_itm_insts(p_api_version    => p_api_version,
7927                                    p_init_msg_list  => p_init_msg_list,
7928                                    x_return_status  => x_return_status,
7929                                    x_msg_count      => x_msg_count,
7930                                    x_msg_data       => x_msg_data,
7931                                    p_itiv_rec       => l_itiv_rec,
7932                                    x_trxv_rec       => x_trxv_rec,
7933                                    x_itiv_rec       => x_itiv_rec);
7934               IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
7935                 OKL_API.set_message(p_app_name     => G_APP_NAME,
7936                                     p_msg_name     => G_ITI_ID);
7937                 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
7938               ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
7939                 OKL_API.set_message(p_app_name     => G_APP_NAME,
7940                                     p_msg_name     => G_ITI_ID);
7941                 RAISE OKL_API.G_EXCEPTION_ERROR;
7942               END IF;
7943           ELSE
7944              OKL_API.set_message(p_app_name     => G_APP_NAME,
7945                                  p_msg_name     => G_ITI_ID);
7946              RAISE OKL_API.G_EXCEPTION_ERROR;
7947           END IF;
7948        ELSE
7949           OKL_API.set_message(p_app_name     => G_APP_NAME,
7950                               p_msg_name     => G_ITEM_RECORD);
7951            x_return_status := OKL_API.G_RET_STS_ERROR;
7952            RAISE OKL_API.G_EXCEPTION_ERROR;
7953        END IF;
7954 --    #4414408
7955 --    ELSE
7956 --       OKL_API.set_message(p_app_name     => G_APP_NAME,
7957 --                           p_msg_name     => G_LINE_STYLE);
7958 --       x_return_status := OKL_API.G_RET_STS_ERROR;
7959 --       RAISE OKL_API.G_EXCEPTION_ERROR;
7960 --    END IF;
7961     OKL_API.END_ACTIVITY (x_msg_count,
7962                           x_msg_data );
7963   EXCEPTION
7964     WHEN OKL_API.G_EXCEPTION_ERROR THEN
7965     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
7966                                l_api_name,
7967                                G_PKG_NAME,
7968                                'OKL_API.G_RET_STS_ERROR',
7969                                x_msg_count,
7970                                x_msg_data,
7971                                '_PVT');
7972     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
7973     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7974                               l_api_name,
7975                               G_PKG_NAME,
7976                               'OKL_API.G_RET_STS_UNEXP_ERROR',
7977                               x_msg_count,
7978                               x_msg_data,
7979                               '_PVT');
7980     WHEN OTHERS THEN
7981     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
7982                               l_api_name,
7983                               G_PKG_NAME,
7984                               'OTHERS',
7985                               x_msg_count,
7986                               x_msg_data,
7987                               '_PVT');
7988   END Create_installed_base_line;
7989 ---34----------------------------------------------------------------------------------------------
7990   PROCEDURE update_installed_base_line(p_api_version    IN  NUMBER,
7991                                        p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
7992                                        x_return_status  OUT NOCOPY VARCHAR2,
7993                                        x_msg_count      OUT NOCOPY NUMBER,
7994                                        x_msg_data       OUT NOCOPY VARCHAR2,
7995                                        p_lty_code       IN  OKC_LINE_STYLES_V.LTY_CODE%TYPE,
7996                                        p_clev_rec       IN  clev_rec_type,
7997                                        p_klev_rec       IN  klev_rec_type,
7998                                        p_cimv_rec       IN  cimv_rec_type,
7999                                        p_itiv_rec       IN  itiv_rec_type,
8000                                        x_clev_rec       OUT NOCOPY clev_rec_type,
8001                                        x_klev_rec       OUT NOCOPY klev_rec_type,
8002                                        x_cimv_rec       OUT NOCOPY cimv_rec_type,
8003                                        x_itiv_rec       OUT NOCOPY itiv_rec_type) IS
8004 
8005     l_clev_rec               clev_rec_type;
8006     l_cimv_rec               cimv_rec_type;
8007     l_itiv_rec               itiv_rec_type;
8008     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
8009     ln_tas_id                OKL_TRX_ASSETS.ID%TYPE;
8010     lv_dummy                 VARCHAR2(3) := OKL_API.G_MISS_CHAR ;
8011     i                        NUMBER := 0;
8012     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_IB_LINE';
8013   BEGIN
8014     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
8015     -- Call start_activity to create savepoint, check compatibility
8016     -- and initialize message list
8017     x_return_status := OKL_API.START_ACTIVITY (
8018                                l_api_name
8019                                ,p_init_msg_list
8020                                ,'_PVT'
8021                                ,x_return_status);
8022     -- Check if activity started successfully
8023     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8024        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8025     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8026        RAISE OKL_API.G_EXCEPTION_ERROR;
8027     END IF;
8028     -- Check the cle_id that is of the top Fin Asset line
8029     validate_cle_lse_id(p_clev_rec      => p_clev_rec,
8030                         p_lty_code      => p_lty_code,
8031                         x_lty_code      => l_lty_code,
8032                         x_return_status => x_return_status);
8033     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8034        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8035     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8036        RAISE OKL_API.G_EXCEPTION_ERROR;
8037     END IF;
8038     -- since IB Line  is a sub line of instance line we have to check weather
8039     -- which line are creating under which line
8040     IF l_lty_code = G_INST_LINE_LTY_CODE THEN
8041        -- Now the all the records are there we can create Instance Line
8042        OKL_CONTRACT_PUB.update_contract_line(p_api_version   => p_api_version,
8043                                              p_init_msg_list => p_init_msg_list,
8044                                              x_return_status => x_return_status,
8045                                              x_msg_count     => x_msg_count,
8046                                              x_msg_data      => x_msg_data,
8047                                              p_clev_rec      => p_clev_rec,
8048                                              p_klev_rec      => p_klev_rec,
8049                                              x_clev_rec      => x_clev_rec,
8050                                              x_klev_rec      => x_klev_rec);
8051        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8052           OKL_API.set_message(p_app_name     => G_APP_NAME,
8053                               p_msg_name     => G_UPDATING_IB_LINE);
8054           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8055        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8056           OKL_API.set_message(p_app_name     => G_APP_NAME,
8057                               p_msg_name     => G_UPDATING_IB_LINE);
8058           RAISE OKL_API.G_EXCEPTION_ERROR;
8059        END IF;
8060        l_cimv_rec                   := p_cimv_rec;
8061        IF l_cimv_rec.cle_id <> x_clev_rec.id THEN
8062           OKL_API.set_message(p_app_name     => G_APP_NAME,
8063                               p_msg_name     => G_ITEM_RECORD);
8064           RAISE OKL_API.G_EXCEPTION_ERROR;
8065        END IF;
8066        IF l_cimv_rec.dnz_chr_id <> x_clev_rec.dnz_chr_id THEN
8067           OKL_API.set_message(p_app_name     => G_APP_NAME,
8068                               p_msg_name     => G_ITEM_RECORD);
8069           RAISE OKL_API.G_EXCEPTION_ERROR;
8070        END IF;
8071        IF (l_cimv_rec.object1_id1 IS NULL OR
8072            l_cimv_rec.object1_id1 = OKL_API.G_MISS_CHAR) AND
8073           (l_cimv_rec.object1_id2 IS NULL OR
8074            l_cimv_rec.object1_id2 = OKL_API.G_MISS_CHAR) THEN
8075           -- We have create the item rec,tal rec,trx rec and also create the iti rec
8076           -- Creation of Item Record for the above record information
8077           OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version   => p_api_version,
8078                                                      p_init_msg_list => p_init_msg_list,
8079                                                      x_return_status => x_return_status,
8080                                                      x_msg_count     => x_msg_count,
8081                                                      x_msg_data      => x_msg_data,
8082                                                      p_cimv_rec      => l_cimv_rec,
8083                                                      x_cimv_rec      => x_cimv_rec);
8084           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8085              OKL_API.set_message(p_app_name     => G_APP_NAME,
8086                                  p_msg_name     => G_UPDATING_IB_ITEM);
8087              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8088           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8089              OKL_API.set_message(p_app_name     => G_APP_NAME,
8090                                  p_msg_name     => G_UPDATING_IB_ITEM);
8091              RAISE OKL_API.G_EXCEPTION_ERROR;
8092           END IF;
8093           validate_iti_kle_id(p_klev_rec      => x_klev_rec,
8094                               x_record_exists => lv_dummy,
8095                               x_return_status => x_return_status);
8096           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8097             OKL_API.set_message(p_app_name     => G_APP_NAME,
8098                                p_msg_name     => G_ITI_ID);
8099             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8100           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8101             OKL_API.set_message(p_app_name     => G_APP_NAME,
8102                                p_msg_name     => G_ITI_ID);
8103             RAISE OKL_API.G_EXCEPTION_ERROR;
8104           END IF;
8105           IF (lv_dummy IS NOT NUll OR
8106              lv_dummy <> OKL_API.G_MISS_CHAR) THEN
8107              IF p_itiv_rec.kle_id <> x_klev_rec.id THEN
8108                OKL_API.set_message(p_app_name     => G_APP_NAME,
8109                                    p_msg_name     => G_ITI_ID);
8110                RAISE OKL_API.G_EXCEPTION_ERROR;
8111              END IF;
8112              update_txl_itm_insts(p_api_version    => p_api_version,
8113                                   p_init_msg_list  => p_init_msg_list,
8114                                   x_return_status  => x_return_status,
8115                                   x_msg_count      => x_msg_count,
8116                                   x_msg_data       => x_msg_data,
8117                                   p_itiv_rec       => p_itiv_rec,
8118                                   x_itiv_rec       => x_itiv_rec);
8119              IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8120                OKL_API.set_message(p_app_name     => G_APP_NAME,
8121                                    p_msg_name     => G_ITI_ID);
8122                RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8123              ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8124                OKL_API.set_message(p_app_name     => G_APP_NAME,
8125                                    p_msg_name     => G_ITI_ID);
8126                RAISE OKL_API.G_EXCEPTION_ERROR;
8127              END IF;
8128           ELSE
8129                OKL_API.set_message(p_app_name     => G_APP_NAME,
8130                                    p_msg_name     => G_ITI_ID);
8131             RAISE OKL_API.G_EXCEPTION_ERROR;
8132           END IF;
8133        ELSIF (l_cimv_rec.object1_id1 IS NOT NULL OR
8134               l_cimv_rec.object1_id1 <> OKL_API.G_MISS_CHAR) AND
8135              (l_cimv_rec.object1_id2 IS NOT NULL OR
8136              l_cimv_rec.object1_id2 <> OKL_API.G_MISS_CHAR) THEN
8137            -- Creation of Item Record for the above record information
8138            OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version   => p_api_version,
8139                                                       p_init_msg_list => p_init_msg_list,
8140                                                       x_return_status => x_return_status,
8141                                                       x_msg_count     => x_msg_count,
8142                                                       x_msg_data      => x_msg_data,
8143                                                       p_cimv_rec      => l_cimv_rec,
8144                                                       x_cimv_rec      => x_cimv_rec);
8145            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8146               OKL_API.set_message(p_app_name     => G_APP_NAME,
8147                                   p_msg_name     => G_UPDATING_IB_ITEM);
8148               RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8149            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8150               OKL_API.set_message(p_app_name     => G_APP_NAME,
8151                                   p_msg_name     => G_UPDATING_IB_ITEM);
8152               RAISE OKL_API.G_EXCEPTION_ERROR;
8153            END IF;
8154        ELSE
8155          OKL_API.set_message(p_app_name     => G_APP_NAME,
8156                              p_msg_name     => G_UPDATING_IB_ITEM);
8157          RAISE OKL_API.G_EXCEPTION_ERROR;
8158        END IF;
8159     ELSE
8160        OKL_API.set_message(p_app_name     => G_APP_NAME,
8161                            p_msg_name     => G_LINE_STYLE);
8162       RAISE OKL_API.G_EXCEPTION_ERROR;
8163     END IF;
8164     OKL_API.END_ACTIVITY (x_msg_count,
8165                           x_msg_data );
8166   EXCEPTION
8167     WHEN OKL_API.G_EXCEPTION_ERROR THEN
8168     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8169                                l_api_name,
8170                                G_PKG_NAME,
8171                                'OKL_API.G_RET_STS_ERROR',
8172                                x_msg_count,
8173                                x_msg_data,
8174                                '_PVT');
8175     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8176     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8177                               l_api_name,
8178                               G_PKG_NAME,
8179                               'OKL_API.G_RET_STS_UNEXP_ERROR',
8180                               x_msg_count,
8181                               x_msg_data,
8182                               '_PVT');
8183     WHEN OTHERS THEN
8184     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8185                               l_api_name,
8186                               G_PKG_NAME,
8187                               'OTHERS',
8188                               x_msg_count,
8189                               x_msg_data,
8190                               '_PVT');
8191   END update_installed_base_line;
8192 -------------------------------------------------------------------------------------------------------
8193 ---------------------------- Main Process for Creation of Financial Asset -------------------------------
8194 -------------------------------------------------------------------------------------------------------
8195   PROCEDURE create_fin_line(
8196             p_api_version    IN  NUMBER,
8197             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
8198             x_return_status  OUT NOCOPY VARCHAR2,
8199             x_msg_count      OUT NOCOPY NUMBER,
8200             x_msg_data       OUT NOCOPY VARCHAR2,
8201             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
8202             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
8203             p_clev_rec       IN  clev_rec_type,
8204             p_klev_rec       IN  klev_rec_type,
8205             x_clev_rec       OUT NOCOPY clev_rec_type,
8206             x_klev_rec       OUT NOCOPY klev_rec_type) IS
8207     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_FIN_AST_LINES';
8208     l_clev_rec               clev_rec_type;
8209     -- Variables for validation of line style
8210     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
8211     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
8212   BEGIN
8213     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
8214     -- Call start_activity to create savepoint, check compatibility
8215     -- and initialize message list
8216     x_return_status := OKL_API.START_ACTIVITY (
8217                                l_api_name
8218                                ,p_init_msg_list
8219                                ,'_PVT'
8220                                ,x_return_status);
8221     -- Check if activity started successfully
8222     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8223        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8224     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8225        RAISE OKL_API.G_EXCEPTION_ERROR;
8226     END IF;
8227 
8228 --  4414408 The validation is now performed in create_all_line procedure
8229 /*
8230     -- To Check We Got the Valid info
8231     IF UPPER(p_new_yn) NOT IN ('Y','N') OR
8232        (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
8233        UPPER(p_new_yn) IS NULL) THEN
8234       OKL_API.set_message(p_app_name     => G_APP_NAME,
8235                           p_msg_name     => G_INVALID_YN,
8236                           p_token1       => G_COL_NAME_TOKEN,
8237                           p_token1_value => 'p_new_yn');
8238        -- Halt Validation
8239       RAISE OKL_API.G_EXCEPTION_ERROR;
8240     END IF;
8241     -- Validate to see if the asset_number given is not null
8242     -- and also Validate asset_number does not exists
8243     -- in OKL_TXL_ASSETS_V
8244     IF UPPER(p_new_yn) = 'Y' THEN
8245        validate_new_asset_number(x_return_status  => x_return_status,
8246                                  p_asset_number   => p_asset_number,
8247                                  p_dnz_chr_id     => p_clev_rec.dnz_chr_id);
8248        -- Check if activity started successfully
8249        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8250           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8251        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8252           RAISE OKL_API.G_EXCEPTION_ERROR;
8253        END IF;
8254     ELSE
8255        validate_new_asset_number(x_return_status  => x_return_status,
8256                                  p_asset_number   => p_asset_number,
8257                                  p_dnz_chr_id     => p_clev_rec.dnz_chr_id);
8258        -- Check if activity ended successfully
8259        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8260           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8261        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8262           RAISE OKL_API.G_EXCEPTION_ERROR;
8263        END IF;
8264     END IF;
8265 */
8266 --  4414408 The validations in Validate_lse_id and Validate_dnz_chr_id are redundant
8267 /*
8268     -- Validate Line Style id and get the line type code
8269     -- and line style type for further processing
8270     validate_lse_id(p_clev_rec      => p_clev_rec,
8271                     x_return_status => x_return_status,
8272                     x_lty_code      => l_lty_code,
8273                     x_lse_type      => l_lse_type);
8274     -- Check if activity started successfully
8275     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8276        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8277     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8278        RAISE OKL_API.G_EXCEPTION_ERROR;
8279     END IF;
8280     -- Validate the Dnz_Chr_id
8281     validate_dnz_chr_id(p_clev_rec      => p_clev_rec,
8282                         x_return_status => x_return_status);
8283     -- Check if activity started successfully
8284     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8285       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8286     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8287       RAISE OKL_API.G_EXCEPTION_ERROR;
8288     END IF;
8289 */
8290     -- creating of finanical Asset Lines which is the top Line
8291     -- While createing the cle_id will be null, chr_id will be not null
8292     -- and also the dnz_chr_id will be not null.Lse_id given will also helps
8293     -- to decide that this line is finanical Asset Line
8294     l_clev_rec          := p_clev_rec;
8295     IF (l_clev_rec.cle_id = OKL_API.G_MISS_NUM OR
8296        l_clev_rec.cle_id IS NULL) AND
8297        (l_clev_rec.dnz_chr_id IS NOT NULL OR
8298        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
8299        (l_clev_rec.chr_id IS NOT NULL OR
8300        l_clev_rec.chr_id <> OKL_API.G_MISS_NUM) AND
8301 --     #4414408
8302 --       l_lty_code = G_FIN_LINE_LTY_CODE AND
8303 --       l_lse_type = G_TLS_TYPE THEN
8304          l_clev_rec.lse_id = G_FIN_LINE_LTY_ID THEN
8305        -- We need to do this because we wanted the asset number be unique
8306        -- both in the transaction level and the line levels
8307        l_clev_rec.name             := p_asset_number;
8308        -- Entering the Asset Description
8309        create_financial_asset_line(p_api_version   => p_api_version,
8310                                    p_init_msg_list => p_init_msg_list,
8311                                    x_return_status => x_return_status,
8312                                    x_msg_count     => x_msg_count,
8313                                    x_msg_data      => x_msg_data,
8314                                    p_clev_rec      => l_clev_rec,
8315                                    p_klev_rec      => p_klev_rec,
8316                                    x_clev_rec      => x_clev_rec,
8317                                    x_klev_rec      => x_klev_rec);
8318        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8319           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8320        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8321           RAISE OKL_API.G_EXCEPTION_ERROR;
8322        END IF;
8323     ELSE
8324       OKL_API.set_message(p_app_name     => G_APP_NAME,
8325                           p_msg_name     => G_INVALID_CRITERIA,
8326                           p_token1       => G_COL_NAME_TOKEN,
8327                           p_token1_value => 'Financial Asset line');
8328        x_return_status := OKL_API.G_RET_STS_ERROR;
8329        RAISE OKL_API.G_EXCEPTION_ERROR;
8330     END IF;
8331     OKL_API.END_ACTIVITY (x_msg_count,
8332                           x_msg_data );
8333   EXCEPTION
8334     WHEN OKL_API.G_EXCEPTION_ERROR THEN
8335     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8336                                l_api_name,
8337                                G_PKG_NAME,
8338                                'OKL_API.G_RET_STS_ERROR',
8339                                x_msg_count,
8340                                x_msg_data,
8341                                '_PVT');
8342     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8343     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8344                               l_api_name,
8345                               G_PKG_NAME,
8346                               'OKL_API.G_RET_STS_UNEXP_ERROR',
8347                               x_msg_count,
8348                               x_msg_data,
8349                               '_PVT');
8350     WHEN OTHERS THEN
8351     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8352                               l_api_name,
8353                               G_PKG_NAME,
8354                               'OTHERS',
8355                               x_msg_count,
8356                               x_msg_data,
8357                               '_PVT');
8358   END create_fin_line;
8359 -------------------------------------------------------------------------------------------------------
8360 ---------------------------- Main Process for update of Financial Asset -------------------------------
8361 -------------------------------------------------------------------------------------------------------
8362   PROCEDURE Update_fin_line(
8363             p_api_version    IN  NUMBER,
8364             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
8365             x_return_status  OUT NOCOPY VARCHAR2,
8366             x_msg_count      OUT NOCOPY NUMBER,
8367             x_msg_data       OUT NOCOPY VARCHAR2,
8368             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
8369             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
8370             p_clev_rec       IN  clev_rec_type,
8371             p_klev_rec       IN  klev_rec_type,
8372             x_clev_rec       OUT NOCOPY clev_rec_type,
8373             x_klev_rec       OUT NOCOPY klev_rec_type,
8374             p_validate_fin_line  IN  VARCHAR2 DEFAULT OKL_API.G_TRUE) IS
8375     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_FIN_AST_LINES';
8376     l_clev_rec               clev_rec_type := p_clev_rec;
8377     l_klev_rec               klev_rec_type := p_klev_rec;
8378     -- Variables for validation of line style
8379     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
8380     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
8381     ln_fa_id                 OKC_K_LINES_V.ID%TYPE;
8382 
8383     -- Temp variables for capital reduction and tradein amount
8384     tradein_amount           OKL_K_LINES.TRADEIN_AMOUNT%TYPE;
8385     capital_reduction        OKL_K_LINES.CAPITAL_REDUCTION%TYPE;
8386 
8387     CURSOR get_fa_id(p_top_line OKC_K_LINES_V.ID%TYPE,
8388                      p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE)
8389     IS
8390     -- #4414408
8391     SELECT cle.id
8392 --    FROM okc_subclass_top_line stl,
8393 --         okc_line_styles_b lse2,
8394 --         okc_line_styles_b lse1,
8395       FROM okc_k_lines_b cle
8396     WHERE cle.cle_id = p_top_line
8397     AND cle.dnz_chr_id = p_dnz_chr_id
8398 --    AND lse1.id = cle.lse_id
8399 --    AND lse1.lty_code = G_FA_LINE_LTY_CODE
8400 --    AND lse1.lse_parent_id = lse2.id
8401 --    AND lse2.lty_code = G_FIN_LINE_LTY_CODE
8402 --    AND lse2.id = stl.lse_id
8403 --    AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
8404     AND cle.lse_id = G_FA_LINE_LTY_ID;
8405 
8406   BEGIN
8407     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
8408     -- Call start_activity to create savepoint, check compatibility
8409     -- and initialize message list
8410     x_return_status := OKL_API.START_ACTIVITY (
8411                                l_api_name
8412                                ,p_init_msg_list
8413                                ,'_PVT'
8414                                ,x_return_status);
8415     -- Check if activity started successfully
8416     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8417        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8418     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8419        RAISE OKL_API.G_EXCEPTION_ERROR;
8420     END IF;
8421     IF (p_validate_fin_line = OKL_API.G_TRUE) THEN
8422        validate_sts_code(p_clev_rec      => l_clev_rec,
8423                          x_return_status => x_return_status);
8424        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8425           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8426        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8427           RAISE OKL_API.G_EXCEPTION_ERROR;
8428        END IF;
8429        OPEN  get_fa_id(p_top_line   => l_clev_rec.id,
8430                        p_dnz_chr_id => l_clev_rec.dnz_chr_id);
8431        FETCH get_fa_id INTO ln_fa_id;
8432        -- 4414408
8433        IF get_fa_id%NOTFOUND THEN
8434          OKL_API.set_message(p_app_name => G_APP_NAME,
8435                              p_msg_name => G_LINE_RECORD);
8436          RAISE OKL_API.G_EXCEPTION_ERROR;
8437        END IF;
8438        CLOSE get_fa_id;
8439        -- To Check We Got the Valid info
8440        IF UPPER(p_new_yn) NOT IN ('Y','N') OR
8441           (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
8442           UPPER(p_new_yn) IS NULL) THEN
8443          OKL_API.set_message(p_app_name     => G_APP_NAME,
8444                              p_msg_name     => G_INVALID_YN,
8445                              p_token1       => G_COL_NAME_TOKEN,
8446                              p_token1_value => 'p_new_yn');
8447           -- Halt Validation
8448           RAISE OKL_API.G_EXCEPTION_ERROR;
8449        END IF;
8450        -- Validate to see if the asset_number given is not null
8451        -- and also Validate asset_number does not exists
8452        -- in OKL_TXL_ASSETS_V
8453        IF UPPER(p_new_yn) = 'Y' THEN
8454           validate_new_ast_num_update(x_return_status  => x_return_status,
8455                                       p_asset_number   => p_asset_number,
8456                                       p_kle_id         => ln_fa_id,
8457                                       p_dnz_chr_id     => l_clev_rec.dnz_chr_id);
8458           -- Check if activity started successfully
8459           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8460              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8461           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8462              RAISE OKL_API.G_EXCEPTION_ERROR;
8463           END IF;
8464        ELSIF UPPER(p_new_yn) = 'N' THEN
8465           validate_new_ast_num_update(x_return_status  => x_return_status,
8466                                       p_asset_number   => p_asset_number,
8467                                       p_kle_id         => ln_fa_id,
8468                                       p_dnz_chr_id     => l_clev_rec.dnz_chr_id);
8469           -- Check if activity started successfully
8470           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8471              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8472           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8473              RAISE OKL_API.G_EXCEPTION_ERROR;
8474           END IF;
8475        END IF;
8476        -- Validate Line Style id and get the line type code
8477        -- and line style type for further processing
8478        validate_lse_id(p_clev_rec      => l_clev_rec,
8479                        x_return_status => x_return_status,
8480                        x_lty_code      => l_lty_code,
8481                        x_lse_type      => l_lse_type);
8482        -- Check if activity started successfully
8483        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8484           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8485        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8486           RAISE OKL_API.G_EXCEPTION_ERROR;
8487        END IF;
8488        -- Validate the Dnz_Chr_id
8489        validate_dnz_chr_id(p_clev_rec      => l_clev_rec,
8490                            x_return_status => x_return_status);
8491        -- Check if activity started successfully
8492        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8493          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8494        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8495          RAISE OKL_API.G_EXCEPTION_ERROR;
8496        END IF;
8497     END IF;
8498     -- Modified by rravikir
8499     -- Call to Accounting Util package to address Multi Currency requirement
8500     -- Start
8501 /*
8502     -- nnirnaka 12/24/02 commented this out as this already happens in
8503     -- contract line update
8504 
8505     IF (l_klev_rec.capital_reduction <> OKL_API.G_MISS_NUM AND
8506         l_klev_rec.capital_reduction IS NOT NULL) THEN
8507       capital_reduction := l_klev_rec.capital_reduction;
8508       l_klev_rec.capital_reduction :=
8509          OKL_ACCOUNTING_UTIL.CROSS_CURRENCY_ROUND_AMOUNT(l_klev_rec.capital_reduction,
8510                                                        l_clev_rec.currency_code);
8511 
8512       IF (capital_reduction <> 0 AND l_klev_rec.capital_reduction = 0) THEN
8513          OKL_API.set_message(p_app_name     => G_APP_NAME,
8514                              p_msg_name     => G_AMOUNT_ROUNDING,
8515                              p_token1       => 'AMT',
8516                              p_token1_value => to_char(capital_reduction));
8517          RAISE G_EXCEPTION_HALT_VALIDATION;
8518       END IF;
8519     END IF;
8520 
8521     IF (l_klev_rec.tradein_amount <> OKL_API.G_MISS_NUM AND
8522         l_klev_rec.tradein_amount IS NOT NULL) THEN
8523       tradein_amount := l_klev_rec.tradein_amount;
8524       l_klev_rec.tradein_amount :=
8525          OKL_ACCOUNTING_UTIL.CROSS_CURRENCY_ROUND_AMOUNT(l_klev_rec.tradein_amount,
8526                                                        l_clev_rec.currency_code);
8527 
8528       IF (tradein_amount <> 0 AND l_klev_rec.tradein_amount = 0) THEN
8529          OKL_API.set_message(p_app_name     => G_APP_NAME,
8530                              p_msg_name     => G_AMOUNT_ROUNDING,
8531                              p_token1       => 'AMT',
8532                              p_token1_value => to_char(tradein_amount));
8533          RAISE G_EXCEPTION_HALT_VALIDATION;
8534       END IF;
8535     END IF;
8536 
8537     -- End Modification for Multi Currency
8538 */
8539 
8540     -- Updating of finanical Asset Lines which is the top Line
8541     -- While Updating the cle_id will be null, chr_id will be not null
8542     -- and also the dnz_chr_id will be not null.Lse_id given will also helps
8543     -- to decide that this line is finanical Asset Line
8544     IF (l_clev_rec.cle_id = OKL_API.G_MISS_NUM OR
8545        l_clev_rec.cle_id IS NULL) AND
8546        (l_clev_rec.dnz_chr_id IS NOT NULL OR
8547        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
8548        (l_clev_rec.chr_id IS NOT NULL OR
8549        l_clev_rec.chr_id <> OKL_API.G_MISS_NUM) AND
8550 --       l_lty_code = G_FIN_LINE_LTY_CODE AND
8551 --       l_lse_type = G_TLS_TYPE THEN
8552           l_clev_rec.lse_id = G_FIN_LINE_LTY_ID THEN
8553 
8554        -- Calling the Process
8555        update_financial_asset_line(p_api_version   => p_api_version,
8556                                    p_init_msg_list => p_init_msg_list,
8557                                    x_return_status => x_return_status,
8558                                    x_msg_count     => x_msg_count,
8559                                    x_msg_data      => x_msg_data,
8560                                    p_clev_rec      => l_clev_rec,
8561                                    p_klev_rec      => l_klev_rec,
8562                                    x_clev_rec      => x_clev_rec,
8563                                    x_klev_rec      => x_klev_rec);
8564        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8565           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8566        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8567           RAISE OKL_API.G_EXCEPTION_ERROR;
8568        END IF;
8569     ELSE
8570       OKL_API.set_message(p_app_name     => G_APP_NAME,
8571                           p_msg_name     => G_INVALID_CRITERIA,
8572                           p_token1       => 'LINE_STYLE',
8573                           p_token1_value => 'Financial Asset line');
8574        x_return_status := OKL_API.G_RET_STS_ERROR;
8575        RAISE OKL_API.G_EXCEPTION_ERROR;
8576     END IF;
8577     OKL_API.END_ACTIVITY (x_msg_count,
8578                           x_msg_data );
8579   EXCEPTION
8580     WHEN OKL_API.G_EXCEPTION_ERROR THEN
8581     IF get_fa_id%ISOPEN THEN
8582       CLOSE get_fa_id;
8583     END IF;
8584     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8585                                l_api_name,
8586                                G_PKG_NAME,
8587                                'OKL_API.G_RET_STS_ERROR',
8588                                x_msg_count,
8589                                x_msg_data,
8590                                '_PVT');
8591     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8592     IF get_fa_id%ISOPEN THEN
8593       CLOSE get_fa_id;
8594     END IF;
8595     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8596                               l_api_name,
8597                               G_PKG_NAME,
8598                               'OKL_API.G_RET_STS_UNEXP_ERROR',
8599                               x_msg_count,
8600                               x_msg_data,
8601                               '_PVT');
8602     WHEN OTHERS THEN
8603     IF get_fa_id%ISOPEN THEN
8604       CLOSE get_fa_id;
8605     END IF;
8606     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8607                               l_api_name,
8608                               G_PKG_NAME,
8609                               'OTHERS',
8610                               x_msg_count,
8611                               x_msg_data,
8612                               '_PVT');
8613   END Update_fin_line;
8614 -------------------------------------------------------------------------------------------------------
8615 ----------------- Main Process for update of Financial Asset for Capital Cost -------------------------
8616 -------------------------------------------------------------------------------------------------------
8617   PROCEDURE Update_fin_cap_cost(
8618             p_api_version    IN  NUMBER,
8619             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
8620             x_return_status  OUT NOCOPY VARCHAR2,
8621             x_msg_count      OUT NOCOPY NUMBER,
8622             x_msg_data       OUT NOCOPY VARCHAR2,
8623             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
8624             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
8625             p_clev_rec       IN  clev_rec_type,
8626             p_klev_rec       IN  klev_rec_type,
8627             x_clev_rec       OUT NOCOPY clev_rec_type,
8628             x_klev_rec       OUT NOCOPY klev_rec_type) IS
8629     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_FIN_CAP_COST';
8630     l_clev_rec               clev_rec_type := p_clev_rec;
8631     l_klev_rec               klev_rec_type := p_klev_rec;
8632     lx_clev_rec              clev_rec_type;
8633     lx_klev_rec              klev_rec_type;
8634     CURSOR c_get_lse_id_sts(p_top_line_id OKC_K_LINES_V.ID%TYPE) IS
8635     SELECT lse.id,
8636            cle.sts_code
8637     FROM okc_subclass_top_line stl,
8638          okc_line_styles_b lse,
8639          okc_k_lines_v cle
8640     WHERE cle.id = p_top_line_id
8641     AND cle.lse_id = lse.id
8642     AND lse.lty_code = G_FIN_LINE_LTY_CODE
8643     AND lse.lse_parent_id is null
8644     AND lse.lse_type = G_TLS_TYPE
8645     AND lse.id = stl.lse_id
8646     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
8647 
8648   BEGIN
8649     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
8650     -- Call start_activity to create savepoint, check compatibility
8651     -- and initialize message list
8652     x_return_status := OKL_API.START_ACTIVITY (
8653                                l_api_name
8654                                ,p_init_msg_list
8655                                ,'_PVT'
8656                                ,x_return_status);
8657     -- Check if activity started successfully
8658     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8659        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8660     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8661        RAISE OKL_API.G_EXCEPTION_ERROR;
8662     END IF;
8663     OPEN  c_get_lse_id_sts(p_top_line_id => l_clev_rec.id);
8664     FETCH c_get_lse_id_sts INTO l_clev_rec.lse_id,
8665                                 l_clev_rec.sts_code;
8666     -- 4414408
8667     IF c_get_lse_id_sts%NOTFOUND THEN
8668       OKL_API.set_message(p_app_name => G_APP_NAME,
8669                           p_msg_name => G_LINE_RECORD);
8670       RAISE OKL_API.G_EXCEPTION_ERROR;
8671     END IF;
8672     CLOSE c_get_lse_id_sts;
8673     -- Here we update the capital Amount for the Top line of klev_rec
8674     --Bug# 3877032 :
8675     --IF (l_klev_rec.capital_reduction_percent IS NULL OR
8676        --l_klev_rec.capital_reduction_percent = OKL_API.G_MISS_NUM ) AND
8677        --(l_klev_rec.capital_reduction IS NULL OR
8678        --l_klev_rec.capital_reduction = OKL_API.G_MISS_NUM ) AND
8679        --(l_klev_rec.tradein_amount IS NULL OR
8680        --l_klev_rec.tradein_amount = OKL_API.G_MISS_NUM ) THEN
8681 
8682      IF l_klev_rec.capital_reduction_percent = OKL_API.G_MISS_NUM  AND
8683        l_klev_rec.capital_reduction = OKL_API.G_MISS_NUM  AND
8684        l_klev_rec.tradein_amount = OKL_API.G_MISS_NUM  THEN
8685        -- Updating of finanical Asset Lines with all the values
8686        Update_fin_line(p_api_version        => p_api_version,
8687                        p_init_msg_list      => p_init_msg_list,
8688                        x_return_status      => x_return_status,
8689                        x_msg_count          => x_msg_count,
8690                        x_msg_data           => x_msg_data,
8691                        P_new_yn             => P_new_yn,
8692                        p_asset_number       => p_asset_number,
8693                        p_clev_rec           => l_clev_rec,
8694                        p_klev_rec           => l_klev_rec,
8695                        x_clev_rec           => x_clev_rec,
8696                        x_klev_rec           => x_klev_rec,
8697                        p_validate_fin_line  => OKL_API.G_TRUE); -- 4414408
8698        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8699          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8700        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8701          RAISE OKL_API.G_EXCEPTION_ERROR;
8702        END IF;
8703     ELSE
8704        -- Here we update the capital Amount for the Top line of klev_rec
8705        -- But further we first have to update the top line with values
8706        -- and then call the formula enigne which will calculat the capital amount
8707        -- and update the top line again, we have to take this route because we
8708        -- will have to depend on Formula engine which in turn will calculate
8709        -- by querying the data.
8710        Update_fin_line(p_api_version        => p_api_version,
8711                        p_init_msg_list      => p_init_msg_list,
8712                        x_return_status      => x_return_status,
8713                        x_msg_count          => x_msg_count,
8714                        x_msg_data           => x_msg_data,
8715                        P_new_yn             => P_new_yn,
8716                        p_asset_number       => p_asset_number,
8717                        p_clev_rec           => l_clev_rec,
8718                        p_klev_rec           => l_klev_rec,
8719                        x_clev_rec           => x_clev_rec,
8720                        x_klev_rec           => x_klev_rec,
8721                        p_validate_fin_line  => OKL_API.G_TRUE);
8722        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8723          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8724        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8725          RAISE OKL_API.G_EXCEPTION_ERROR;
8726        END IF;
8727        OKL_EXECUTE_FORMULA_PUB.execute(p_api_version   => p_api_version,
8728                                        p_init_msg_list => p_init_msg_list,
8729                                        x_return_status => x_return_status,
8730                                        x_msg_count     => x_msg_count,
8731                                        x_msg_data      => x_msg_data,
8732                                        p_formula_name  => G_FORMULA_CAP,
8733                                        p_contract_id   => x_clev_rec.dnz_chr_id,
8734                                        p_line_id       => x_clev_rec.id,
8735                                        x_value         => x_klev_rec.capital_amount);
8736        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8737          OKL_API.set_message(p_app_name     => G_APP_NAME,
8738                              p_msg_name     => G_CALC_AMOUNT,
8739                              p_token1       => G_AMT_TOKEN,
8740                              p_token1_value => 'Capital Amount');
8741          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8742        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8743          OKL_API.set_message(p_app_name     => G_APP_NAME,
8744                              p_msg_name     => G_CALC_AMOUNT,
8745                              p_token1       => G_AMT_TOKEN,
8746                              p_token1_value => 'Capital Amount');
8747          RAISE OKL_API.G_EXCEPTION_ERROR;
8748        END IF;
8749        -- Updating of finanical Asset Lines with all the values
8750        Update_fin_line(p_api_version        => p_api_version,
8751                        p_init_msg_list      => p_init_msg_list,
8752                        x_return_status      => x_return_status,
8753                        x_msg_count          => x_msg_count,
8754                        x_msg_data           => x_msg_data,
8755                        P_new_yn             => P_new_yn,
8756                        p_asset_number       => p_asset_number,
8757                        p_clev_rec           => x_clev_rec,
8758                        p_klev_rec           => x_klev_rec,
8759                        x_clev_rec           => lx_clev_rec,
8760                        x_klev_rec           => lx_klev_rec,
8761                        p_validate_fin_line  => OKL_API.G_TRUE);
8762        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8763          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8764        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8765          RAISE OKL_API.G_EXCEPTION_ERROR;
8766        END IF;
8767        x_clev_rec    := lx_clev_rec;
8768        x_klev_rec    := lx_klev_rec;
8769     END IF;
8770     -- We need to change the status of the header whenever there is updating happening
8771     -- after the contract status is approved
8772     IF (x_clev_rec.dnz_chr_id is NOT NULL) AND
8773        (x_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
8774       --cascade edit status on to lines
8775       okl_contract_status_pub.cascade_lease_status_edit
8776                (p_api_version     => p_api_version,
8777                 p_init_msg_list   => p_init_msg_list,
8778                 x_return_status   => x_return_status,
8779                 x_msg_count       => x_msg_count,
8780                 x_msg_data        => x_msg_data,
8781                 p_chr_id          => x_clev_rec.dnz_chr_id);
8782       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8783         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
8784       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8785         RAISE OKL_API.G_EXCEPTION_ERROR;
8786       END IF;
8787     END IF;
8788   EXCEPTION
8789     WHEN OKL_API.G_EXCEPTION_ERROR THEN
8790     IF c_get_lse_id_sts%ISOPEN THEN
8791       CLOSE c_get_lse_id_sts;
8792     END IF;
8793     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
8794                                l_api_name,
8795                                G_PKG_NAME,
8796                                'OKL_API.G_RET_STS_ERROR',
8797                                x_msg_count,
8798                                x_msg_data,
8799                                '_PVT');
8800     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
8801     IF c_get_lse_id_sts%ISOPEN THEN
8802       CLOSE c_get_lse_id_sts;
8803     END IF;
8804     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8805                               l_api_name,
8806                               G_PKG_NAME,
8807                               'OKL_API.G_RET_STS_UNEXP_ERROR',
8808                               x_msg_count,
8809                               x_msg_data,
8810                               '_PVT');
8811     WHEN OTHERS THEN
8812     IF c_get_lse_id_sts%ISOPEN THEN
8813       CLOSE c_get_lse_id_sts;
8814     END IF;
8815     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
8816                               l_api_name,
8817                               G_PKG_NAME,
8818                               'OTHERS',
8819                               x_msg_count,
8820                               x_msg_data,
8821                               '_PVT');
8822   END Update_fin_cap_cost;
8823 -----------------------------------------------------------------------------------
8824 -- Start of Commnets
8825 -- Badrinath Kuchibholta
8826 -- Procedure Name       : oec_calc_upd_fin_rec
8827 -- Description          : oec_calc_upd_fin_rec
8828 -- Business Rules       :
8829 -- Parameters           :
8830 -- Version              : 1.0
8831 -- End of Commnets
8832 
8833   PROCEDURE oec_calc_upd_fin_rec(
8834             p_api_version    IN  NUMBER,
8835             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
8836             x_return_status  OUT NOCOPY VARCHAR2,
8837             x_msg_count      OUT NOCOPY NUMBER,
8838             x_msg_data       OUT NOCOPY VARCHAR2,
8839             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
8840             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
8841             p_top_line_id    IN  OKC_K_LINES_V.ID%TYPE,
8842             p_dnz_chr_id     IN  OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
8843             x_fin_clev_rec   OUT NOCOPY clev_rec_type,
8844             x_fin_klev_rec   OUT NOCOPY klev_rec_type,
8845             x_oec            OUT NOCOPY OKL_K_LINES_V.OEC%TYPE,
8846             p_validate_fin_line  IN  VARCHAR2 DEFAULT OKL_API.G_TRUE) IS
8847 
8848     ln_oec                   OKL_K_LINES_V.OEC%TYPE := 0;
8849 --    ln_top_line_id           OKC_K_LINES_V.CLE_ID%TYPE := 0;
8850     l_update_clev_rec        clev_rec_type;
8851     l_update_klev_rec        klev_rec_type;
8852 
8853 -- #4414408 Top line ID is now passed to the API
8854 /*
8855     -- To Find out the Top line ID
8856     CURSOR c_model_top_line(p_model_line_id OKC_K_LINES_V.ID%TYPE,
8857                             p_dnz_chr_id    OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
8858     SELECT cle.cle_id
8859     FROM okc_subclass_top_line stl,
8860          okc_line_styles_b lse2,
8861          okc_line_styles_b lse1,
8862          okc_k_items_v cim,
8863          okc_k_lines_v cle
8864     WHERE cle.id = p_model_line_id
8865     AND cle.dnz_chr_id = p_dnz_chr_id
8866     AND cle.id = cim.cle_id
8867     AND cle.dnz_chr_id = cim.dnz_chr_id
8868     AND cle.lse_id = lse1.id
8869     AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
8870     AND lse1.lse_parent_id = lse2.id
8871     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
8872     AND lse2.id = stl.lse_id
8873     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE,G_QUOTE_SCS_CODE);
8874 */
8875   BEGIN
8876     -- initialize return status
8877     x_return_status := OKL_API.G_RET_STS_SUCCESS;
8878 /*
8879     OPEN  c_model_top_line(p_model_line_id => p_model_line_id,
8880                            p_dnz_chr_id    => p_dnz_chr_id);
8881     FETCH c_model_top_line INTO ln_top_line_id;
8882 -- #4414408 Moved the IF statement  below fetch statement
8883     IF c_model_top_line%NOTFOUND THEN
8884        OKL_API.set_message(p_app_name     => G_APP_NAME,
8885                            p_msg_name     => G_NO_MATCHING_RECORD,
8886                            p_token1       => G_COL_NAME_TOKEN,
8887                            p_token1_value => 'cle_id');
8888        RAISE G_EXCEPTION_HALT_VALIDATION;
8889     END IF;
8890 --   #4414408 This condition will never be met
8891 --    IF (c_model_top_line%ROWCOUNT > 1) THEN
8892 --       OKL_API.set_message(p_app_name     => G_APP_NAME,
8893 --                           p_msg_name     => 'More than one',
8894 --                           p_token1       => 'Model line',
8895 --                           p_token1_value => 'cle_id');
8896 --       RAISE G_EXCEPTION_HALT_VALIDATION;
8897 --    END IF;
8898 
8899     CLOSE c_model_top_line;
8900 */
8901     -- to get the OEC
8902 /*
8903     x_oec := OKL_SEEDED_FUNCTIONS_PVT.LINE_OEC(p_dnz_chr_id => p_dnz_chr_id,
8904                                                p_cle_id     => ln_top_line_id);
8905 */
8906     OKL_EXECUTE_FORMULA_PUB.execute(p_api_version   => p_api_version,
8907                                     p_init_msg_list => p_init_msg_list,
8908                                     x_return_status => x_return_status,
8909                                     x_msg_count     => x_msg_count,
8910                                     x_msg_data      => x_msg_data,
8911                                     p_formula_name  => G_FORMULA_OEC,
8912                                     p_contract_id   => p_dnz_chr_id,
8913                                     p_line_id       => p_top_line_id,
8914                                     x_value         => x_oec);
8915 
8916    IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8917       OKL_API.set_message(p_app_name     => G_APP_NAME,
8918                           p_msg_name     => G_CALC_AMOUNT,
8919                           p_token1       => G_AMT_TOKEN,
8920                           p_token1_value => 'OEC');
8921        RAISE G_EXCEPTION_HALT_VALIDATION;
8922     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8923       OKL_API.set_message(p_app_name     => G_APP_NAME,
8924                           p_msg_name     => G_CALC_AMOUNT,
8925                           p_token1       => G_AMT_TOKEN,
8926                           p_token1_value => 'OEC');
8927        RAISE G_EXCEPTION_HALT_VALIDATION;
8928     END IF;
8929     -- To Get the cle top Line Record
8930     x_return_status := get_rec_clev(p_top_line_id, -- 4414408
8931                                     l_update_clev_rec);
8932     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8933        OKL_API.set_message(p_app_name     => G_APP_NAME,
8934                            p_msg_name     => G_FETCHING_INFO,
8935                            p_token1       => G_REC_NAME_TOKEN,
8936                            p_token1_value => 'OKC_K_LINES_V Record');
8937        RAISE G_EXCEPTION_HALT_VALIDATION;
8938     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8939        OKL_API.set_message(p_app_name     => G_APP_NAME,
8940                            p_msg_name     => G_FETCHING_INFO,
8941                            p_token1       => G_REC_NAME_TOKEN,
8942                            p_token1_value => 'OKC_K_LINES_V Record');
8943        RAISE G_EXCEPTION_HALT_VALIDATION;
8944     END IF;
8945     -- To Get the kle top Line Record
8946     x_return_status := get_rec_klev(p_top_line_id,  -- 4414408
8947                                     l_update_klev_rec);
8948     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8949        OKL_API.set_message(p_app_name     => G_APP_NAME,
8950                            p_msg_name     => G_FETCHING_INFO,
8951                            p_token1       => G_REC_NAME_TOKEN,
8952                            p_token1_value => 'OKL_K_LINES_V Record');
8953        RAISE G_EXCEPTION_HALT_VALIDATION;
8954     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
8955        OKL_API.set_message(p_app_name     => G_APP_NAME,
8956                            p_msg_name     => G_FETCHING_INFO,
8957                            p_token1       => G_REC_NAME_TOKEN,
8958                            p_token1_value => 'OKL_K_LINES_V Record');
8959        RAISE G_EXCEPTION_HALT_VALIDATION;
8960     END IF;
8961     IF l_update_klev_rec.id <> l_update_clev_rec.id THEN
8962        OKL_API.set_message(p_app_name     => G_APP_NAME,
8963                            p_msg_name     => G_LINE_RECORD);
8964        RAISE G_EXCEPTION_HALT_VALIDATION;
8965     END IF;
8966     l_update_klev_rec.oec   := x_oec;
8967 
8968     -- Modified by rravikir
8969     -- Call to Accounting Util package to address Multi Currency requirement
8970     -- Start
8971     l_update_klev_rec.oec :=
8972         OKL_ACCOUNTING_UTIL.CROSS_CURRENCY_ROUND_AMOUNT(l_update_klev_rec.oec,
8973                                                         l_update_clev_rec.currency_code);
8974 
8975     IF (x_oec <> 0 AND l_update_klev_rec.oec = 0) THEN
8976       OKL_API.set_message(p_app_name     => G_APP_NAME,
8977                           p_msg_name     => G_AMOUNT_ROUNDING,
8978                           p_token1       => 'AMT',
8979                           p_token1_value => to_char(x_oec));
8980        RAISE G_EXCEPTION_HALT_VALIDATION;
8981     END IF;
8982 
8983     -- End Modification for Multi Currency
8984 
8985     Update_fin_line(p_api_version       => p_api_version,
8986                     p_init_msg_list     => p_init_msg_list,
8987                     x_return_status     => x_return_status,
8988                     x_msg_count         => x_msg_count,
8989                     x_msg_data          => x_msg_data,
8990                     P_new_yn            => P_new_yn,
8991                     p_asset_number      => p_asset_number,
8992                     p_clev_rec          => l_update_clev_rec,
8993                     p_klev_rec          => l_update_klev_rec,
8994                     x_clev_rec          => x_fin_clev_rec,
8995                     x_klev_rec          => x_fin_klev_rec,
8996                     p_validate_fin_line => p_validate_fin_line); -- 4414408
8997     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
8998        RAISE G_EXCEPTION_HALT_VALIDATION;
8999     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9000        RAISE G_EXCEPTION_HALT_VALIDATION;
9001     END IF;
9002   EXCEPTION
9003     WHEN G_EXCEPTION_STOP_VALIDATION then
9004     -- Notify Error
9005     x_return_status := OKL_API.G_RET_STS_ERROR;
9006     WHEN G_EXCEPTION_HALT_VALIDATION then
9007     -- If the cursor is open then it has to be closed
9008     -- 4414408
9009 --    IF c_model_top_line%ISOPEN THEN
9010 --       CLOSE c_model_top_line;
9011 --    END IF;
9012     -- notify caller of an error
9013     x_return_status := OKL_API.G_RET_STS_ERROR;
9014     WHEN OTHERS THEN
9015     -- store SQL error message on message stack
9016     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
9017                         p_msg_name     => G_UNEXPECTED_ERROR,
9018                         p_token1       => G_SQLCODE_TOKEN,
9019                         p_token1_value => SQLCODE,
9020                         p_token2       => G_SQLERRM_TOKEN,
9021                         p_token2_value => SQLERRM);
9022     -- If the cursor is open then it has to be closed
9023     -- 4414408
9024 --    IF c_model_top_line%ISOPEN THEN
9025 --       CLOSE c_model_top_line;
9026 --    END IF;
9027     -- notify caller of an error as UNEXPETED error
9028     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
9029   END oec_calc_upd_fin_rec;
9030 -----------------------------------------------------------------------------------
9031 -- Start of Commnets
9032 -- Badrinath Kuchibholta
9033 -- Procedure Name       : cap_amt_calc_upd_fin_rec
9034 -- Description          : cap_amt_calc_upd_fin_rec
9035 -- Business Rules       :
9036 -- Parameters           :
9037 -- Version              : 1.0
9038 -- End of Commnets
9039 
9040   PROCEDURE cap_amt_calc_upd_fin_rec(
9041             p_api_version    IN  NUMBER,
9042             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
9043             x_return_status  OUT NOCOPY VARCHAR2,
9044             x_msg_count      OUT NOCOPY NUMBER,
9045             x_msg_data       OUT NOCOPY VARCHAR2,
9046             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
9047             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
9048             p_top_line_id    IN  OKC_K_LINES_V.ID%TYPE, -- 4414408
9049             p_dnz_chr_id     IN  OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
9050             x_fin_clev_rec   OUT NOCOPY clev_rec_type,
9051             x_fin_klev_rec   OUT NOCOPY klev_rec_type,
9052             x_cap_amt        OUT NOCOPY OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE,
9053             p_validate_fin_line IN VARCHAR2 DEFAULT OKL_API.G_TRUE) IS
9054 
9055     ln_cap_amt               OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
9056 --    ln_top_line_id           OKC_K_LINES_V.CLE_ID%TYPE := 0;
9057     l_update_clev_rec        clev_rec_type;
9058     l_update_klev_rec        klev_rec_type;
9059 -- #4414408 Top line ID is a parameter passed to the API
9060 /*
9061     -- To Find out the Top line ID
9062     CURSOR c_model_top_line(p_model_line_id OKC_K_LINES_V.ID%TYPE,
9063                             p_dnz_chr_id    OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
9064     SELECT cle.cle_id
9065     FROM okc_subclass_top_line stl,
9066          okc_line_styles_b lse2,
9067          okc_line_styles_b lse1,
9068          okc_k_items_v cim,
9069          okc_k_lines_v cle
9070     WHERE cle.id = p_model_line_id
9071     AND cle.dnz_chr_id = p_dnz_chr_id
9072     AND cle.id = cim.cle_id
9073     AND cle.dnz_chr_id = cim.dnz_chr_id
9074     AND cle.lse_id = lse1.id
9075     AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
9076     AND lse1.lse_parent_id = lse2.id
9077     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
9078     AND lse2.id = stl.lse_id
9079     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
9080 */
9081 
9082   BEGIN
9083     -- initialize return status
9084     x_return_status := OKL_API.G_RET_STS_SUCCESS;
9085 /*
9086     OPEN  c_model_top_line(p_model_line_id => p_model_line_id,
9087                            p_dnz_chr_id    => p_dnz_chr_id);
9088     FETCH c_model_top_line INTO ln_top_line_id;
9089 -- #4414408 Moved the IF statement  below fetch statement
9090     IF c_model_top_line%NOTFOUND THEN
9091        OKL_API.set_message(p_app_name     => G_APP_NAME,
9092                            p_msg_name     => G_NO_MATCHING_RECORD,
9093                            p_token1       => G_COL_NAME_TOKEN,
9094                            p_token1_value => 'cle_id');
9095        RAISE G_EXCEPTION_HALT_VALIDATION;
9096     END IF;
9097 --   #4414408 This condition will never be met
9098 --    IF (c_model_top_line%ROWCOUNT > 1) THEN
9099 --       OKL_API.set_message(p_app_name     => G_APP_NAME,
9100 --                           p_msg_name     => 'More than one',
9101 --                           p_token1       => 'Model line',
9102 --                           p_token1_value => 'cle_id');
9103 --       RAISE G_EXCEPTION_HALT_VALIDATION;
9104 --    END IF;
9105     CLOSE c_model_top_line;
9106 */
9107     -- to get the Capital Amount
9108 /*
9109     x_cap_amt := OKL_FORMULA_FUNCTION_PVT.line_capitalamount(p_chr_id  => p_dnz_chr_id,
9110                                                              p_line_id => ln_top_line_id);
9111 */
9112     OKL_EXECUTE_FORMULA_PUB.execute(p_api_version   => p_api_version,
9113                                     p_init_msg_list => p_init_msg_list,
9114                                     x_return_status => x_return_status,
9115                                     x_msg_count     => x_msg_count,
9116                                     x_msg_data      => x_msg_data,
9117                                     p_formula_name  => G_FORMULA_CAP,
9118                                     p_contract_id   => p_dnz_chr_id,
9119                                     p_line_id       => p_top_line_id, -- 4414408
9120                                     x_value         => x_cap_amt);
9121 
9122     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9123       OKL_API.set_message(p_app_name     => G_APP_NAME,
9124                           p_msg_name     => G_CALC_AMOUNT,
9125                           p_token1       => G_AMT_TOKEN,
9126                           p_token1_value => 'Capital Amount');
9127        RAISE G_EXCEPTION_HALT_VALIDATION;
9128     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9129       OKL_API.set_message(p_app_name     => G_APP_NAME,
9130                           p_msg_name     => G_CALC_AMOUNT,
9131                           p_token1       => G_AMT_TOKEN,
9132                           p_token1_value => 'Capital Amount');
9133        RAISE G_EXCEPTION_HALT_VALIDATION;
9134     END IF;
9135 
9136     -- To Get the cle top Line Record
9137     x_return_status := get_rec_clev(p_top_line_id, -- 4414408
9138                                     l_update_clev_rec);
9139     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9140        OKL_API.set_message(p_app_name     => G_APP_NAME,
9141                            p_msg_name     => G_FETCHING_INFO,
9142                            p_token1       => G_REC_NAME_TOKEN,
9143                            p_token1_value => 'OKC_K_LINES_V Record');
9144        RAISE G_EXCEPTION_HALT_VALIDATION;
9145     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9146        OKL_API.set_message(p_app_name     => G_APP_NAME,
9147                            p_msg_name     => G_FETCHING_INFO,
9148                            p_token1       => G_REC_NAME_TOKEN,
9149                            p_token1_value => 'OKC_K_LINES_V Record');
9150        RAISE G_EXCEPTION_HALT_VALIDATION;
9151     END IF;
9152     -- To Get the kle top Line Record
9153     x_return_status := get_rec_klev(p_top_line_id, -- 4414408
9154                                     l_update_klev_rec);
9155     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9156        OKL_API.set_message(p_app_name     => G_APP_NAME,
9157                            p_msg_name     => G_FETCHING_INFO,
9158                            p_token1       => G_REC_NAME_TOKEN,
9159                            p_token1_value => 'OKL_K_LINES_V Record');
9160        RAISE G_EXCEPTION_HALT_VALIDATION;
9161     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9162        OKL_API.set_message(p_app_name     => G_APP_NAME,
9163                            p_msg_name     => G_FETCHING_INFO,
9164                            p_token1       => G_REC_NAME_TOKEN,
9165                            p_token1_value => 'OKL_K_LINES_V Record');
9166        RAISE G_EXCEPTION_HALT_VALIDATION;
9167     END IF;
9168     IF l_update_klev_rec.id <> l_update_clev_rec.id THEN
9169        OKL_API.set_message(p_app_name     => G_APP_NAME,
9170                            p_msg_name     => G_LINE_RECORD);
9171        RAISE G_EXCEPTION_HALT_VALIDATION;
9172     END IF;
9173     l_update_klev_rec.capital_amount   := x_cap_amt;
9174 
9175     -- Modified by rravikir
9176     -- Call to Accounting Util package to address Multi Currency requirement
9177     -- Start
9178     l_update_klev_rec.capital_amount :=
9179         OKL_ACCOUNTING_UTIL.CROSS_CURRENCY_ROUND_AMOUNT(l_update_klev_rec.capital_amount,
9180                                                         l_update_clev_rec.currency_code);
9181 
9182     IF (x_cap_amt <> 0 AND l_update_klev_rec.capital_amount = 0) THEN
9183       OKL_API.set_message(p_app_name     => G_APP_NAME,
9184                           p_msg_name     => G_AMOUNT_ROUNDING,
9185                           p_token1       => 'AMT',
9186                           p_token1_value => to_char(x_cap_amt));
9187        RAISE G_EXCEPTION_HALT_VALIDATION;
9188     END IF;
9189 
9190     -- End Modification for Multi Currency
9191 
9192     Update_fin_line(p_api_version        => p_api_version,
9193                     p_init_msg_list      => p_init_msg_list,
9194                     x_return_status      => x_return_status,
9195                     x_msg_count          => x_msg_count,
9196                     x_msg_data           => x_msg_data,
9197                     P_new_yn             => P_new_yn,
9198                     p_asset_number       => p_asset_number,
9199                     p_clev_rec           => l_update_clev_rec,
9200                     p_klev_rec           => l_update_klev_rec,
9201                     x_clev_rec           => x_fin_clev_rec,
9202                     x_klev_rec           => x_fin_klev_rec,
9203                     p_validate_fin_line  => p_validate_fin_line); -- 4414408
9204     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9205        RAISE G_EXCEPTION_HALT_VALIDATION;
9206     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9207        RAISE G_EXCEPTION_HALT_VALIDATION;
9208     END IF;
9209   EXCEPTION
9210     WHEN G_EXCEPTION_STOP_VALIDATION then
9211     -- Notify Error
9212     x_return_status := OKL_API.G_RET_STS_ERROR;
9213     WHEN G_EXCEPTION_HALT_VALIDATION then
9214     -- If the cursor is open then it has to be closed
9215 --    IF c_model_top_line%ISOPEN THEN
9216 --       CLOSE c_model_top_line;
9217 --    END IF;
9218     -- notify caller of an error
9219     x_return_status := OKL_API.G_RET_STS_ERROR;
9220     WHEN OTHERS THEN
9221     -- store SQL error message on message stack
9222     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
9223                         p_msg_name     => G_UNEXPECTED_ERROR,
9224                         p_token1       => G_SQLCODE_TOKEN,
9225                         p_token1_value => SQLCODE,
9226                         p_token2       => G_SQLERRM_TOKEN,
9227                         p_token2_value => SQLERRM);
9228     -- If the cursor is open then it has to be closed
9229 --    IF c_model_top_line%ISOPEN THEN
9230 --       CLOSE c_model_top_line;
9231 --    END IF;
9232     -- notify caller of an error as UNEXPETED error
9233     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
9234   END cap_amt_calc_upd_fin_rec;
9235 -----------------------------------------------------------------------------------
9236 -- Start of Commnets
9237 -- Badrinath Kuchibholta
9238 -- Procedure Name       : res_value_calc_upd_fin_rec
9239 -- Description          : res_value_calc_upd_fin_rec
9240 -- Business Rules       :
9241 -- Parameters           :
9242 -- Version              : 1.0
9243 -- End of Commnets
9244 
9245   PROCEDURE res_value_calc_upd_fin_rec(
9246             p_api_version    IN  NUMBER,
9247             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
9248             x_return_status  OUT NOCOPY VARCHAR2,
9249             x_msg_count      OUT NOCOPY NUMBER,
9250             x_msg_data       OUT NOCOPY VARCHAR2,
9251             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
9252             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
9253             p_top_line_id    IN  OKC_K_LINES_V.ID%TYPE, -- 4414408
9254             p_dnz_chr_id     IN  OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
9255             x_fin_clev_rec   OUT NOCOPY clev_rec_type,
9256             x_fin_klev_rec   OUT NOCOPY klev_rec_type,
9257             x_res_value      OUT NOCOPY OKL_K_LINES_V.RESIDUAL_VALUE%TYPE,
9258             p_validate_fin_line IN VARCHAR2 DEFAULT OKL_API.G_TRUE) IS
9259 
9260     ln_res_value             OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
9261 --    ln_top_line_id           OKC_K_LINES_V.CLE_ID%TYPE := 0;
9262     l_update_clev_rec        clev_rec_type;
9263     l_update_klev_rec        klev_rec_type;
9264     -- 4414408
9265 /*
9266     -- To Find out the Top line ID
9267     CURSOR c_model_top_line(p_model_line_id OKC_K_LINES_V.ID%TYPE,
9268                             p_dnz_chr_id    OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
9269     SELECT cle.cle_id
9270     FROM okc_subclass_top_line stl,
9271          okc_line_styles_b lse2,
9272          okc_line_styles_b lse1,
9273          okc_k_items_v cim,
9274          okc_k_lines_v cle
9275     WHERE cle.id = p_model_line_id
9276     AND cle.dnz_chr_id = p_dnz_chr_id
9277     AND cle.id = cim.cle_id
9278     AND cle.dnz_chr_id = cim.dnz_chr_id
9279     AND cle.lse_id = lse1.id
9280     AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
9281     AND lse1.lse_parent_id = lse2.id
9282     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
9283     AND lse2.id = stl.lse_id
9284     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
9285 */
9286   BEGIN
9287     -- initialize return status
9288     x_return_status := OKL_API.G_RET_STS_SUCCESS;
9289 /*
9290     OPEN  c_model_top_line(p_model_line_id => p_model_line_id,
9291                            p_dnz_chr_id    => p_dnz_chr_id);
9292     FETCH c_model_top_line INTO ln_top_line_id;
9293 -- #4414408 Moved the IF statement  below fetch statement
9294     IF c_model_top_line%NOTFOUND THEN
9295        OKL_API.set_message(p_app_name     => G_APP_NAME,
9296                            p_msg_name     => G_NO_MATCHING_RECORD,
9297                            p_token1       => G_COL_NAME_TOKEN,
9298                            p_token1_value => 'cle_id');
9299        RAISE G_EXCEPTION_HALT_VALIDATION;
9300     END IF;
9301 --   #4414408 This condition will never be met
9302 --    IF (c_model_top_line%ROWCOUNT > 1) THEN
9303 --       OKL_API.set_message(p_app_name     => G_APP_NAME,
9304 --                           p_msg_name     => 'More than one',
9305 --                           p_token1       => 'Model line',
9306 --                           p_token1_value => 'cle_id');
9307 --       RAISE G_EXCEPTION_HALT_VALIDATION;
9308 --    END IF;
9309     CLOSE c_model_top_line;
9310 */
9311     -- to get the Residual value
9312 /*
9313     x_res_value := OKL_SEEDED_FUNCTIONS_PVT.line_residualvalue(p_chr_id  => p_dnz_chr_id,
9314                                                                p_line_id => ln_top_line_id);
9315 */
9316 
9317     OKL_EXECUTE_FORMULA_PUB.execute(p_api_version   => p_api_version,
9318                                     p_init_msg_list => p_init_msg_list,
9319                                     x_return_status => x_return_status,
9320                                     x_msg_count     => x_msg_count,
9321                                     x_msg_data      => x_msg_data,
9322                                     p_formula_name  => G_FORMULA_RES,
9323                                     p_contract_id   => p_dnz_chr_id,
9324                                     p_line_id       => p_top_line_id, -- 4414408
9325                                     x_value         => x_res_value);
9326     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9327       OKL_API.set_message(p_app_name     => G_APP_NAME,
9328                           p_msg_name     => G_CALC_AMOUNT,
9329                           p_token1       => G_AMT_TOKEN,
9330                           p_token1_value => 'Residual Value');
9331        RAISE G_EXCEPTION_HALT_VALIDATION;
9332     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9333       OKL_API.set_message(p_app_name     => G_APP_NAME,
9334                           p_msg_name     => G_CALC_AMOUNT,
9335                           p_token1       => G_AMT_TOKEN,
9336                           p_token1_value => 'Residual Value');
9337        RAISE G_EXCEPTION_HALT_VALIDATION;
9338     END IF;
9339     -- To Get the cle top Line Record
9340     x_return_status := get_rec_clev(p_top_line_id, -- 4414408
9341                                     l_update_clev_rec);
9342     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9343        OKL_API.set_message(p_app_name     => G_APP_NAME,
9344                            p_msg_name     => G_FETCHING_INFO,
9345                            p_token1       => G_REC_NAME_TOKEN,
9346                            p_token1_value => 'OKC_K_LINES_V Record');
9347        RAISE G_EXCEPTION_HALT_VALIDATION;
9348     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9349        OKL_API.set_message(p_app_name     => G_APP_NAME,
9350                            p_msg_name     => G_FETCHING_INFO,
9351                            p_token1       => G_REC_NAME_TOKEN,
9352                            p_token1_value => 'OKC_K_LINES_V Record');
9353        RAISE G_EXCEPTION_HALT_VALIDATION;
9354     END IF;
9355     -- To Get the kle top Line Record
9356     x_return_status := get_rec_klev(p_top_line_id, -- 4414408
9357                                     l_update_klev_rec);
9358     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9359        OKL_API.set_message(p_app_name     => G_APP_NAME,
9360                            p_msg_name     => G_FETCHING_INFO,
9361                            p_token1       => G_REC_NAME_TOKEN,
9362                            p_token1_value => 'OKL_K_LINES_V Record');
9363        RAISE G_EXCEPTION_HALT_VALIDATION;
9364     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9365        OKL_API.set_message(p_app_name     => G_APP_NAME,
9366                            p_msg_name     => G_FETCHING_INFO,
9367                            p_token1       => G_REC_NAME_TOKEN,
9368                            p_token1_value => 'OKL_K_LINES_V Record');
9369        RAISE G_EXCEPTION_HALT_VALIDATION;
9370     END IF;
9371     IF l_update_klev_rec.id <> l_update_clev_rec.id THEN
9372        OKL_API.set_message(p_app_name     => G_APP_NAME,
9373                            p_msg_name     => G_LINE_RECORD);
9374        RAISE G_EXCEPTION_HALT_VALIDATION;
9375     END IF;
9376     -- commented for multi currency requirement. No need to round the value, as
9377     -- it is taken care in the call to accounting util package called below.
9378 --    l_update_klev_rec.residual_value   := round(x_res_value,2);
9379     l_update_klev_rec.residual_value   := x_res_value;
9380 
9381     -- Modified by rravikir
9382     -- Call to Accounting Util package to address Multi Currency requirement
9383     -- Start
9384     l_update_klev_rec.residual_value :=
9385         OKL_ACCOUNTING_UTIL.CROSS_CURRENCY_ROUND_AMOUNT(l_update_klev_rec.residual_value,
9386                                                         l_update_clev_rec.currency_code);
9387 
9388     IF (x_res_value <> 0 AND l_update_klev_rec.residual_value = 0) THEN
9389       OKL_API.set_message(p_app_name     => G_APP_NAME,
9390                           p_msg_name     => G_AMOUNT_ROUNDING,
9391                           p_token1       => 'AMT',
9392                           p_token1_value => to_char(x_res_value));
9393        RAISE G_EXCEPTION_HALT_VALIDATION;
9394     END IF;
9395 
9396     -- End Modification for Multi Currency
9397 
9398     Update_fin_line(p_api_version        => p_api_version,
9399                     p_init_msg_list      => p_init_msg_list,
9400                     x_return_status      => x_return_status,
9401                     x_msg_count          => x_msg_count,
9402                     x_msg_data           => x_msg_data,
9403                     P_new_yn             => P_new_yn,
9404                     p_asset_number       => p_asset_number,
9405                     p_clev_rec           => l_update_clev_rec,
9406                     p_klev_rec           => l_update_klev_rec,
9407                     x_clev_rec           => x_fin_clev_rec,
9408                     x_klev_rec           => x_fin_klev_rec,
9409                     p_validate_fin_line  => p_validate_fin_line); -- 4414408
9410     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9411        RAISE G_EXCEPTION_HALT_VALIDATION;
9412     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9413        RAISE G_EXCEPTION_HALT_VALIDATION;
9414     END IF;
9415   EXCEPTION
9416     WHEN G_EXCEPTION_STOP_VALIDATION then
9417     -- Notify Error
9418     x_return_status := OKL_API.G_RET_STS_ERROR;
9419     WHEN G_EXCEPTION_HALT_VALIDATION then
9420     -- If the cursor is open then it has to be closed
9421 --    IF c_model_top_line%ISOPEN THEN
9422 --       CLOSE c_model_top_line;
9423 --    END IF;
9424     -- notify caller of an error
9425     x_return_status := OKL_API.G_RET_STS_ERROR;
9426     WHEN OTHERS THEN
9427     -- store SQL error message on message stack
9428     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
9429                         p_msg_name     => G_UNEXPECTED_ERROR,
9430                         p_token1       => G_SQLCODE_TOKEN,
9431                         p_token1_value => SQLCODE,
9432                         p_token2       => G_SQLERRM_TOKEN,
9433                         p_token2_value => SQLERRM);
9434     -- If the cursor is open then it has to be closed
9435 --    IF c_model_top_line%ISOPEN THEN
9436 --       CLOSE c_model_top_line;
9437 --    END IF;
9438     -- notify caller of an error as UNEXPETED error
9439     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
9440   END res_value_calc_upd_fin_rec;
9441 
9442 -----------------------------------------------------------------------------------
9443 -- Start of Commnets
9444 -- Badrinath Kuchibholta
9445 -- Procedure Name       : res_value_calc_upd_fin_rec
9446 -- Description          : res_value_calc_upd_fin_rec
9447 -- Business Rules       :
9448 -- Parameters           :
9449 -- Version              : 1.0
9450 -- End of Commnets
9451 
9452   PROCEDURE get_res_per_upd_fin_rec(
9453             p_api_version    IN  NUMBER,
9454             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
9455             x_return_status  OUT NOCOPY VARCHAR2,
9456             x_msg_count      OUT NOCOPY NUMBER,
9457             x_msg_data       OUT NOCOPY VARCHAR2,
9458             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
9459             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
9460             p_res_value      IN  OKL_K_LINES_V.RESIDUAL_VALUE%TYPE,
9461             p_oec            IN  OKL_K_LINES_V.OEC%TYPE,
9462             p_top_line_id    IN  OKC_K_LINES_V.ID%TYPE,
9463             p_dnz_chr_id     IN  OKC_K_LINES_V.DNZ_CHR_ID%TYPE,
9464             x_fin_clev_rec   OUT NOCOPY clev_rec_type,
9465             x_fin_klev_rec   OUT NOCOPY klev_rec_type,
9466             p_validate_fin_line IN VARCHAR2 DEFAULT OKL_API.G_TRUE) IS
9467 
9468     ln_res_per               OKL_K_LINES_V.RESIDUAL_PERCENTAGE%TYPE := 0;
9469     ln_top_line_id           OKC_K_LINES_V.CLE_ID%TYPE := 0;
9470     l_update_clev_rec        clev_rec_type;
9471     l_update_klev_rec        klev_rec_type;
9472 
9473   BEGIN
9474     -- initialize return status
9475     x_return_status := OKL_API.G_RET_STS_SUCCESS;
9476 
9477     IF (p_dnz_chr_id IS NULL OR
9478        p_dnz_chr_id = OKL_API.G_MISS_NUM) OR
9479        (p_top_line_id IS NULL OR
9480        p_top_line_id = OKL_API.G_MISS_NUM) THEN
9481        OKL_API.set_message(p_app_name     => G_APP_NAME,
9482                            p_msg_name     => G_REQUIRED_VALUE,
9483                            p_token1       => G_COL_NAME_TOKEN,
9484                            p_token1_value => 'Chr_id,top_line');
9485        RAISE G_EXCEPTION_STOP_VALIDATION;
9486    END IF;
9487    -- gboomina bug 6139003 - Start
9488    -- Modified this condition to calculate residual percent
9489    -- only for valid values
9490    IF (p_oec IS NOT NULL AND
9491       p_oec <> OKL_API.G_MISS_NUM) AND
9492       (p_res_value IS NOT NULL AND
9493       p_res_value <> OKL_API.G_MISS_NUM) THEN
9494     -- gboomina bug 6139003 - End
9495       --Bug# 4631549
9496       If p_oec = 0 then
9497           ln_res_per := 0;
9498       else
9499           ln_res_per :=  ROUND(p_res_value * 100/p_oec,2);
9500       end if;
9501    END IF;
9502     -- To Get the cle top Line Record
9503     x_return_status := get_rec_clev(p_top_line_id,
9504                                     l_update_clev_rec);
9505     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9506        OKL_API.set_message(p_app_name     => G_APP_NAME,
9507                            p_msg_name     => G_FETCHING_INFO,
9508                            p_token1       => G_REC_NAME_TOKEN,
9509                            p_token1_value => 'OKC_K_LINES_V Record');
9510        RAISE G_EXCEPTION_HALT_VALIDATION;
9511     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9512        OKL_API.set_message(p_app_name     => G_APP_NAME,
9513                            p_msg_name     => G_FETCHING_INFO,
9514                            p_token1       => G_REC_NAME_TOKEN,
9515                            p_token1_value => 'OKC_K_LINES_V Record');
9516        RAISE G_EXCEPTION_HALT_VALIDATION;
9517     END IF;
9518     -- To Get the kle top Line Record
9519     x_return_status := get_rec_klev(p_top_line_id,
9520                                     l_update_klev_rec);
9521     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9522        OKL_API.set_message(p_app_name     => G_APP_NAME,
9523                            p_msg_name     => G_FETCHING_INFO,
9524                            p_token1       => G_REC_NAME_TOKEN,
9525                            p_token1_value => 'OKL_K_LINES_V Record');
9526        RAISE G_EXCEPTION_HALT_VALIDATION;
9527     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9528        OKL_API.set_message(p_app_name     => G_APP_NAME,
9529                            p_msg_name     => G_FETCHING_INFO,
9530                            p_token1       => G_REC_NAME_TOKEN,
9531                            p_token1_value => 'OKL_K_LINES_V Record');
9532        RAISE G_EXCEPTION_HALT_VALIDATION;
9533     END IF;
9534     IF l_update_klev_rec.id <> l_update_clev_rec.id THEN
9535        OKL_API.set_message(p_app_name     => G_APP_NAME,
9536                            p_msg_name     => G_LINE_RECORD);
9537        RAISE G_EXCEPTION_HALT_VALIDATION;
9538     END IF;
9539     l_update_klev_rec.residual_percentage   := ln_res_per;
9540     Update_fin_line(p_api_version        => p_api_version,
9541                     p_init_msg_list      => p_init_msg_list,
9542                     x_return_status      => x_return_status,
9543                     x_msg_count          => x_msg_count,
9544                     x_msg_data           => x_msg_data,
9545                     P_new_yn             => P_new_yn,
9546                     p_asset_number       => p_asset_number,
9547                     p_clev_rec           => l_update_clev_rec,
9548                     p_klev_rec           => l_update_klev_rec,
9549                     x_clev_rec           => x_fin_clev_rec,
9550                     x_klev_rec           => x_fin_klev_rec,
9551                     p_validate_fin_line  => p_validate_fin_line); -- 4414408
9552     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9553        RAISE G_EXCEPTION_HALT_VALIDATION;
9554     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9555        RAISE G_EXCEPTION_HALT_VALIDATION;
9556     END IF;
9557   EXCEPTION
9558     WHEN G_EXCEPTION_STOP_VALIDATION then
9559     -- Notify Error
9560     x_return_status := OKL_API.G_RET_STS_ERROR;
9561     WHEN G_EXCEPTION_HALT_VALIDATION then
9562     -- notify caller of an error
9563     x_return_status := OKL_API.G_RET_STS_ERROR;
9564     WHEN OTHERS THEN
9565     -- store SQL error message on message stack
9566     OKL_API.SET_MESSAGE(p_app_name     => G_APP_NAME,
9567                         p_msg_name     => G_UNEXPECTED_ERROR,
9568                         p_token1       => G_SQLCODE_TOKEN,
9569                         p_token1_value => SQLCODE,
9570                         p_token2       => G_SQLERRM_TOKEN,
9571                         p_token2_value => SQLERRM);
9572     -- notify caller of an error as UNEXPETED error
9573     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
9574   END get_res_per_upd_fin_rec;
9575 -------------------------------------------------------------------------------------------------------
9576 ----------------------------- Main Process for Creation of model Line -----------------------------------
9577 -------------------------------------------------------------------------------------------------------
9578   PROCEDURE create_model_line(
9579             p_api_version    IN  NUMBER,
9580             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
9581             x_return_status  OUT NOCOPY VARCHAR2,
9582             x_msg_count      OUT NOCOPY NUMBER,
9583             x_msg_data       OUT NOCOPY VARCHAR2,
9584             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
9585             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
9586             p_clev_rec       IN  clev_rec_type,
9587             p_klev_rec       IN  klev_rec_type,
9588             p_cimv_rec       IN  cimv_rec_type,
9589             x_clev_rec       OUT NOCOPY clev_rec_type,
9590             x_klev_rec       OUT NOCOPY klev_rec_type,
9591             x_cimv_rec       OUT NOCOPY cimv_rec_type) IS
9592     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_MODEL_LINES';
9593     l_clev_rec               clev_rec_type;
9594     -- Variables for validation of line style
9595     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
9596     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
9597     l_update_clev_rec        clev_rec_type;
9598     l_update_klev_rec        klev_rec_type;
9599     ln_lse_id                OKC_LINE_STYLES_V.ID%TYPE := OKL_API.G_MISS_NUM;
9600     l_qty                    OKC_K_ITEMS_V.NUMBER_OF_ITEMS%TYPE := 0;
9601 
9602   BEGIN
9603     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
9604     -- Call start_activity to create savepoint, check compatibility
9605     -- and initialize message list
9606     x_return_status := OKL_API.START_ACTIVITY (
9607                                l_api_name
9608                                ,p_init_msg_list
9609                                ,'_PVT'
9610                                ,x_return_status);
9611     -- Check if activity started successfully
9612     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9613        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9614     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9615        RAISE OKL_API.G_EXCEPTION_ERROR;
9616     END IF;
9617 --  4414408 The validation is now performed in create_all_line procedure
9618 /*
9619     -- To Check We Got the Valid info
9620     IF UPPER(p_new_yn) NOT IN ('Y','N') OR
9621        (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
9622        UPPER(p_new_yn) IS NULL) THEN
9623       OKL_API.set_message(p_app_name     => G_APP_NAME,
9624                           p_msg_name     => G_INVALID_YN,
9625                           p_token1       => G_COL_NAME_TOKEN,
9626                           p_token1_value => 'p_new_yn');
9627        -- Halt Validation
9628        RAISE OKL_API.G_EXCEPTION_ERROR;
9629     END IF;
9630     -- Validate to see if the asset_number given is not null
9631     -- and also Validate asset_number does not exists
9632     -- in OKL_TXL_ASSETS_V
9633     IF UPPER(p_new_yn) = 'Y' THEN
9634        validate_new_asset_number(x_return_status  => x_return_status,
9635                                  p_asset_number   => p_asset_number,
9636                                  p_dnz_chr_id     => p_clev_rec.dnz_chr_id);
9637        -- Check if activity started successfully
9638        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9639           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9640        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9641           RAISE OKL_API.G_EXCEPTION_ERROR;
9642        END IF;
9643     ELSE
9644        validate_new_asset_number(x_return_status  => x_return_status,
9645                                  p_asset_number   => p_asset_number,
9646                                  p_dnz_chr_id     => p_clev_rec.dnz_chr_id);
9647        -- Check if activity ended successfully
9648        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9649           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9650        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9651           RAISE OKL_API.G_EXCEPTION_ERROR;
9652        END IF;
9653     END IF;
9654 */
9655 --  4414408 The validations in Validate_lse_id and Validate_dnz_chr_id are redundant
9656 /*
9657     -- Validate Line Style id and get the line type code
9658     -- and line style type for further processing
9659     validate_lse_id(p_clev_rec      => p_clev_rec,
9660                     x_return_status => x_return_status,
9661                     x_lty_code      => l_lty_code,
9662                     x_lse_type      => l_lse_type);
9663     -- Check if activity started successfully
9664     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9665        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9666     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9667        RAISE OKL_API.G_EXCEPTION_ERROR;
9668     END IF;
9669     -- Validate the Dnz_Chr_id
9670     validate_dnz_chr_id(p_clev_rec      => p_clev_rec,
9671                         x_return_status => x_return_status);
9672     -- Check if activity started successfully
9673     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9674       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9675     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9676       RAISE OKL_API.G_EXCEPTION_ERROR;
9677     END IF;
9678 */
9679     -- We have to Populate the Model Line Record
9680     l_clev_rec                   := p_clev_rec;
9681     -- Now we are Creating Model Line
9682     -- Here we have have Dnz_Chr_id ,lse_id and cle_id
9683     -- The Record Should have the cle_id
9684     -- if the given line style is Model Line
9685     IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
9686        l_clev_rec.chr_id IS NULL) AND
9687        (l_clev_rec.dnz_chr_id IS NOT NULL OR
9688        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
9689        (l_clev_rec.cle_id IS NOT NULL OR
9690        l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
9691 --  #414408
9692 --       l_lty_code = G_MODEL_LINE_LTY_CODE AND
9693 --       l_lse_type = G_SLS_TYPE THEN
9694        l_clev_rec.lse_id = G_MODEL_LINE_LTY_ID THEN
9695        create_model_line_item(p_api_version   => p_api_version,
9696                               p_init_msg_list => p_init_msg_list,
9697                               x_return_status => x_return_status,
9698                               x_msg_count     => x_msg_count,
9699                               x_msg_data      => x_msg_data,
9700 --                              p_lty_code      => l_lty_code,
9701 -- #4414408  redundant parameter
9702                               p_clev_rec      => l_clev_rec,
9703                               p_klev_rec      => p_klev_rec,
9704                               p_cimv_rec      => p_cimv_rec,
9705                               x_clev_rec      => x_clev_rec,
9706                               x_klev_rec      => x_klev_rec,
9707                               x_cimv_rec      => x_cimv_rec);
9708        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9709           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9710        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9711           RAISE OKL_API.G_EXCEPTION_ERROR;
9712        END IF;
9713     ELSE
9714       OKL_API.set_message(p_app_name     => G_APP_NAME,
9715                           p_msg_name     => G_INVALID_CRITERIA,
9716                           p_token1       => G_COL_NAME_TOKEN,
9717                           p_token1_value => 'Model Asset line');
9718        x_return_status := OKL_API.G_RET_STS_ERROR;
9719        RAISE OKL_API.G_EXCEPTION_ERROR;
9720     END IF;
9721     OKL_API.END_ACTIVITY (x_msg_count,
9722                           x_msg_data );
9723   EXCEPTION
9724     WHEN OKL_API.G_EXCEPTION_ERROR THEN
9725     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9726                                l_api_name,
9727                                G_PKG_NAME,
9728                                'OKL_API.G_RET_STS_ERROR',
9729                                x_msg_count,
9730                                x_msg_data,
9731                                '_PVT');
9732     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
9733     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
9734                               l_api_name,
9735                               G_PKG_NAME,
9736                               'OKL_API.G_RET_STS_UNEXP_ERROR',
9737                               x_msg_count,
9738                               x_msg_data,
9739                               '_PVT');
9740     WHEN OTHERS THEN
9741     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
9742                               l_api_name,
9743                               G_PKG_NAME,
9744                               'OTHERS',
9745                               x_msg_count,
9746                               x_msg_data,
9747                               '_PVT');
9748   END create_model_line;
9749 -------------------------------------------------------------------------------------------------------
9750 ----------------------------- Main Process for update of model Line -----------------------------------
9751 -------------------------------------------------------------------------------------------------------
9752   PROCEDURE Update_model_line(
9753             p_api_version    IN  NUMBER,
9754             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
9755             x_return_status  OUT NOCOPY VARCHAR2,
9756             x_msg_count      OUT NOCOPY NUMBER,
9757             x_msg_data       OUT NOCOPY VARCHAR2,
9758             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
9759             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
9760             p_clev_rec       IN  clev_rec_type,
9761             p_klev_rec       IN  klev_rec_type,
9762             p_cimv_rec       IN  cimv_rec_type,
9763             x_clev_rec       OUT NOCOPY clev_rec_type,
9764             x_klev_rec       OUT NOCOPY klev_rec_type,
9765             x_cimv_rec       OUT NOCOPY cimv_rec_type) IS
9766     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_MODEL_LINES';
9767     l_clev_rec               clev_rec_type;
9768     -- Variables for validation of line style
9769     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
9770     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
9771     ln_fa_id                 OKC_K_LINES_V.ID%TYPE;
9772 
9773     CURSOR get_fa_id(p_top_line OKC_K_LINES_V.ID%TYPE,
9774                      p_dnz_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE)
9775     IS
9776     SELECT cle.id
9777     FROM okc_subclass_top_line stl,
9778          okc_line_styles_b lse2,
9779          okc_line_styles_b lse1,
9780          okc_k_lines_v cle
9781     WHERE cle.cle_id = p_top_line
9782     AND cle.dnz_chr_id = p_dnz_chr_id
9783     AND lse1.id = cle.lse_id
9784     AND lse1.lty_code = G_FA_LINE_LTY_CODE
9785     AND lse1.lse_parent_id = lse2.id
9786     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
9787     AND lse2.id = stl.lse_id
9788     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
9789 
9790   BEGIN
9791     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
9792     -- Call start_activity to create savepoint, check compatibility
9793     -- and initialize message list
9794     x_return_status := OKL_API.START_ACTIVITY (
9795                                l_api_name
9796                                ,p_init_msg_list
9797                                ,'_PVT'
9798                                ,x_return_status);
9799     -- Check if activity started successfully
9800     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9801        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9802     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9803        RAISE OKL_API.G_EXCEPTION_ERROR;
9804     END IF;
9805     validate_sts_code(p_clev_rec       => p_clev_rec,
9806                       x_return_status  => x_return_status);
9807     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9808        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9809     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9810        RAISE OKL_API.G_EXCEPTION_ERROR;
9811     END IF;
9812     -- To get the fixed asset line asset to see
9813     -- the asset number does not duplicate
9814     OPEN  get_fa_id(p_top_line => p_clev_rec.cle_id,
9815                     p_dnz_chr_id => p_clev_rec.dnz_chr_id);
9816     IF get_fa_id%NOTFOUND THEN
9817       OKL_API.set_message(p_app_name => G_APP_NAME,
9818                           p_msg_name => G_LINE_RECORD);
9819       RAISE OKL_API.G_EXCEPTION_ERROR;
9820     END IF;
9821     FETCH get_fa_id INTO ln_fa_id;
9822     CLOSE get_fa_id;
9823 
9824     -- To Check We Got the Valid info
9825     IF UPPER(p_new_yn) NOT IN ('Y','N') OR
9826        (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
9827        UPPER(p_new_yn) IS NULL) THEN
9828       OKL_API.set_message(p_app_name     => G_APP_NAME,
9829                           p_msg_name     => G_INVALID_YN,
9830                           p_token1       => G_COL_NAME_TOKEN,
9831                           p_token1_value => 'p_new_yn');
9832        -- Halt Validation
9833        RAISE OKL_API.G_EXCEPTION_ERROR;
9834     END IF;
9835     -- Validate to see if the asset_number given is not null
9836     -- and also Validate asset_number does not exists
9837     -- in OKL_TXL_ASSETS_V
9838     IF UPPER(p_new_yn) = 'Y' THEN
9839        validate_new_ast_num_update(x_return_status  => x_return_status,
9840                                    p_asset_number   => p_asset_number,
9841                                    p_kle_id         => ln_fa_id,
9842                                    p_dnz_chr_id     => p_clev_rec.dnz_chr_id);
9843        -- Check if activity started successfully
9844        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9845           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9846        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9847           RAISE OKL_API.G_EXCEPTION_ERROR;
9848        END IF;
9849     ELSIF UPPER(p_new_yn) = 'N' THEN
9850        validate_new_ast_num_update(x_return_status  => x_return_status,
9851                                    p_asset_number   => p_asset_number,
9852                                    p_kle_id         => ln_fa_id,
9853                                    p_dnz_chr_id     => p_clev_rec.dnz_chr_id);
9854        -- Check if activity started successfully
9855        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9856           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9857        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9858           RAISE OKL_API.G_EXCEPTION_ERROR;
9859        END IF;
9860     END IF;
9861     -- Validate Line Style id and get the line type code
9862     -- and line style type for further processing
9863     validate_lse_id(p_clev_rec      => p_clev_rec,
9864                     x_return_status => x_return_status,
9865                     x_lty_code      => l_lty_code,
9866                     x_lse_type      => l_lse_type);
9867     -- Check if activity started successfully
9868     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9869        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9870     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9871        RAISE OKL_API.G_EXCEPTION_ERROR;
9872     END IF;
9873     -- Validate the Dnz_Chr_id
9874     validate_dnz_chr_id(p_clev_rec      => p_clev_rec,
9875                         x_return_status => x_return_status);
9876     -- Check if activity started successfully
9877     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9878       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9879     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9880       RAISE OKL_API.G_EXCEPTION_ERROR;
9881     END IF;
9882     -- We have to Populate the Model Line Record
9883     l_clev_rec                   := p_clev_rec;
9884     -- Now we are updating Model Line
9885     -- Here we have have Dnz_Chr_id ,lse_id and cle_id
9886     -- The Record Should have the cle_id
9887     -- if the given line style is Model Line
9888     IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
9889        l_clev_rec.chr_id IS NULL) AND
9890        (l_clev_rec.dnz_chr_id IS NOT NULL OR
9891        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
9892        (l_clev_rec.cle_id IS NOT NULL OR
9893        l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
9894        l_lty_code = G_MODEL_LINE_LTY_CODE AND
9895        l_lse_type = G_SLS_TYPE THEN
9896        update_model_line_item(p_api_version   => p_api_version,
9897                               p_init_msg_list => p_init_msg_list,
9898                               x_return_status => x_return_status,
9899                               x_msg_count     => x_msg_count,
9900                               x_msg_data      => x_msg_data,
9901                               p_lty_code      => l_lty_code,
9902                               p_clev_rec      => l_clev_rec,
9903                               p_klev_rec      => p_klev_rec,
9904                               p_cimv_rec      => p_cimv_rec,
9905                               x_clev_rec      => x_clev_rec,
9906                               x_klev_rec      => x_klev_rec,
9907                               x_cimv_rec      => x_cimv_rec);
9908        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9909           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9910        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9911           RAISE OKL_API.G_EXCEPTION_ERROR;
9912        END IF;
9913     ELSE
9914       OKL_API.set_message(p_app_name     => G_APP_NAME,
9915                           p_msg_name     => G_INVALID_CRITERIA,
9916                           p_token1       => G_COL_NAME_TOKEN,
9917                           p_token1_value => 'Model Asset line');
9918        x_return_status := OKL_API.G_RET_STS_ERROR;
9919        RAISE OKL_API.G_EXCEPTION_ERROR;
9920     END IF;
9921     OKL_API.END_ACTIVITY (x_msg_count,
9922                           x_msg_data );
9923   EXCEPTION
9924     WHEN OKL_API.G_EXCEPTION_ERROR THEN
9925     IF get_fa_id%ISOPEN THEN
9926       CLOSE get_fa_id;
9927     END IF;
9928     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
9929                                l_api_name,
9930                                G_PKG_NAME,
9931                                'OKL_API.G_RET_STS_ERROR',
9932                                x_msg_count,
9933                                x_msg_data,
9934                                '_PVT');
9935     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
9936     IF get_fa_id%ISOPEN THEN
9937       CLOSE get_fa_id;
9938     END IF;
9939     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
9940                               l_api_name,
9941                               G_PKG_NAME,
9942                               'OKL_API.G_RET_STS_UNEXP_ERROR',
9943                               x_msg_count,
9944                               x_msg_data,
9945                               '_PVT');
9946     WHEN OTHERS THEN
9947     IF get_fa_id%ISOPEN THEN
9948       CLOSE get_fa_id;
9949     END IF;
9950     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
9951                               l_api_name,
9952                               G_PKG_NAME,
9953                               'OTHERS',
9954                               x_msg_count,
9955                               x_msg_data,
9956                               '_PVT');
9957   END Update_model_line;
9958 -----------------------------------------------------------------------------------------------
9959 ----------------- Main Process for Fixed Asset Line Creation-----------------------------------
9960 -----------------------------------------------------------------------------------------------
9961   PROCEDURE Create_fixed_asset_line(
9962             p_api_version    IN  NUMBER,
9963             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
9964             x_return_status  OUT NOCOPY VARCHAR2,
9965             x_msg_count      OUT NOCOPY NUMBER,
9966             x_msg_data       OUT NOCOPY VARCHAR2,
9967             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
9968             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
9969             p_clev_rec       IN  clev_rec_type,
9970             p_klev_rec       IN  klev_rec_type,
9971             p_cimv_rec       IN  cimv_rec_type,
9972             p_talv_rec       IN  talv_rec_type,
9973             x_clev_rec       OUT NOCOPY clev_rec_type,
9974             x_klev_rec       OUT NOCOPY klev_rec_type,
9975             x_cimv_rec       OUT NOCOPY cimv_rec_type,
9976             x_trxv_rec       OUT NOCOPY trxv_rec_type,
9977             x_talv_rec       OUT NOCOPY talv_rec_type) IS
9978 
9979     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_FXD_AST_LINES';
9980     l_clev_rec               clev_rec_type;
9981     -- Variables for validation of line style
9982     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
9983     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
9984   BEGIN
9985     x_return_status := OKL_API.G_RET_STS_SUCCESS;
9986     -- Call start_activity to create savepoint, check compatibility
9987     -- and initialize message list
9988     x_return_status := OKL_API.START_ACTIVITY (
9989                                l_api_name
9990                                ,p_init_msg_list
9991                                ,'_PVT'
9992                                ,x_return_status);
9993     -- Check if activity started successfully
9994     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
9995        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
9996     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
9997        RAISE OKL_API.G_EXCEPTION_ERROR;
9998     END IF;
9999 --  4414408 The validation is now performed in create_all_line procedure
10000 /*
10001     -- To Check We Got the Valid info
10002     IF UPPER(p_new_yn) NOT IN ('Y','N') OR
10003        (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
10004        UPPER(p_new_yn) IS NULL) THEN
10005       OKL_API.set_message(p_app_name     => G_APP_NAME,
10006                           p_msg_name     => G_INVALID_YN,
10007                           p_token1       => G_COL_NAME_TOKEN,
10008                           p_token1_value => 'p_new_yn');
10009        -- Halt Validation
10010        RAISE OKL_API.G_EXCEPTION_ERROR;
10011     END IF;
10012     -- Validate to see if the asset_number given is not null
10013     -- and also Validate asset_number does not exists
10014     -- in OKL_TXL_ASSETS_V
10015     IF UPPER(p_new_yn) = 'Y' THEN
10016        validate_new_asset_number(x_return_status  => x_return_status,
10017                                  p_asset_number   => p_asset_number,
10018                                  p_dnz_chr_id     => p_clev_rec.dnz_chr_id);
10019        -- Check if activity started successfully
10020        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10021           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10022        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10023           RAISE OKL_API.G_EXCEPTION_ERROR;
10024        END IF;
10025     ELSE
10026        validate_new_asset_number(x_return_status  => x_return_status,
10027                                  p_asset_number   => p_asset_number,
10028                                  p_dnz_chr_id     => p_clev_rec.dnz_chr_id);
10029        -- Check if activity ended successfully
10030        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10031           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10032        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10033           RAISE OKL_API.G_EXCEPTION_ERROR;
10034        END IF;
10035     END IF;
10036 */
10037 --  4414408 The validations in Validate_lse_id and Validate_dnz_chr_id are redundant
10038 /*
10039     -- Validate Line Style id and get the line type code
10040     -- and line style type for further processing
10041     validate_lse_id(p_clev_rec      => p_clev_rec,
10042                     x_return_status => x_return_status,
10043                     x_lty_code      => l_lty_code,
10044                     x_lse_type      => l_lse_type);
10045     -- Check if activity started successfully
10046     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10047        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10048     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10049        RAISE OKL_API.G_EXCEPTION_ERROR;
10050     END IF;
10051     -- Validate the Dnz_Chr_id
10052     validate_dnz_chr_id(p_clev_rec      => p_clev_rec,
10053                         x_return_status => x_return_status);
10054     -- Check if activity started successfully
10055     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10056       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10057     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10058       RAISE OKL_API.G_EXCEPTION_ERROR;
10059     END IF;
10060 */
10061     -- Now we are going to create the Fixed Assets Line
10062     -- Here we have have Dnz_Chr_id ,lse_id and cle_id
10063     -- The Record Should have the cle_id
10064     -- if the given line style is Fixed Assets Line
10065     l_clev_rec := p_clev_rec;
10066     IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
10067        l_clev_rec.chr_id IS NULL) AND
10068        (l_clev_rec.dnz_chr_id IS NOT NULL OR
10069        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
10070        (l_clev_rec.cle_id IS NOT NULL OR
10071        l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
10072 -- #4414408
10073 --       l_lty_code = G_FA_LINE_LTY_CODE AND
10074 --       l_lse_type = G_SLS_TYPE THEN
10075        l_clev_rec.lse_id = G_FA_LINE_LTY_ID THEN
10076        create_fa_line_item(p_api_version   => p_api_version,
10077                            p_init_msg_list => p_init_msg_list,
10078                            x_return_status => x_return_status,
10079                            x_msg_count     => x_msg_count,
10080                            x_msg_data      => x_msg_data,
10081 --                           p_lty_code      => l_lty_code,
10082                            p_clev_rec      => p_clev_rec,
10083                            p_klev_rec      => p_klev_rec,
10084                            p_cimv_rec      => p_cimv_rec,
10085                            p_talv_rec      => p_talv_rec,
10086                            x_clev_rec      => x_clev_rec,
10087                            x_klev_rec      => x_klev_rec,
10088                            x_cimv_rec      => x_cimv_rec,
10089                            x_trxv_rec      => x_trxv_rec,
10090                            x_talv_rec      => x_talv_rec);
10091        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10092           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10093        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10094           RAISE OKL_API.G_EXCEPTION_ERROR;
10095        END IF;
10096     ELSE
10097       OKL_API.set_message(p_app_name     => G_APP_NAME,
10098                           p_msg_name     => G_INVALID_CRITERIA,
10099                           p_token1       => G_COL_NAME_TOKEN,
10100                           p_token1_value => 'Fixed Asset line');
10101        x_return_status := OKL_API.G_RET_STS_ERROR;
10102        RAISE OKL_API.G_EXCEPTION_ERROR;
10103     END IF;
10104     OKL_API.END_ACTIVITY (x_msg_count,
10105                           x_msg_data );
10106   EXCEPTION
10107     WHEN OKL_API.G_EXCEPTION_ERROR THEN
10108     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10109                                l_api_name,
10110                                G_PKG_NAME,
10111                                'OKL_API.G_RET_STS_ERROR',
10112                                x_msg_count,
10113                                x_msg_data,
10114                                '_PVT');
10115     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10116     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10117                               l_api_name,
10118                               G_PKG_NAME,
10119                               'OKL_API.G_RET_STS_UNEXP_ERROR',
10120                               x_msg_count,
10121                               x_msg_data,
10122                               '_PVT');
10123     WHEN OTHERS THEN
10124     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10125                               l_api_name,
10126                               G_PKG_NAME,
10127                               'OTHERS',
10128                               x_msg_count,
10129                               x_msg_data,
10130                               '_PVT');
10131   END Create_fixed_asset_line;
10132 -------------------------------------------------------------------------------------------------------
10133 ----------------------------- Main Process for update of fixed asset Line -----------------------------
10134 -------------------------------------------------------------------------------------------------------
10135   PROCEDURE Update_fixed_asset_line(
10136             p_api_version    IN  NUMBER,
10137             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
10138             x_return_status  OUT NOCOPY VARCHAR2,
10139             x_msg_count      OUT NOCOPY NUMBER,
10140             x_msg_data       OUT NOCOPY VARCHAR2,
10141             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
10142             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
10143             p_clev_rec       IN  clev_rec_type,
10144             p_klev_rec       IN  klev_rec_type,
10145             p_cimv_rec       IN  cimv_rec_type,
10146             p_talv_rec       IN  talv_rec_type,
10147             x_clev_rec       OUT NOCOPY clev_rec_type,
10148             x_klev_rec       OUT NOCOPY klev_rec_type,
10149             x_cimv_rec       OUT NOCOPY cimv_rec_type,
10150             x_talv_rec       OUT NOCOPY talv_rec_type) IS
10151     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_FXD_AST_LINES';
10152     l_clev_rec               clev_rec_type;
10153     -- Variables for validation of line style
10154     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
10155     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
10156   BEGIN
10157     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
10158     -- Call start_activity to create savepoint, check compatibility
10159     -- and initialize message list
10160     x_return_status := OKL_API.START_ACTIVITY (
10161                                l_api_name
10162                                ,p_init_msg_list
10163                                ,'_PVT'
10164                                ,x_return_status);
10165     -- Check if activity started successfully
10166     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10167        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10168     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10169        RAISE OKL_API.G_EXCEPTION_ERROR;
10170     END IF;
10171     validate_sts_code(p_clev_rec       => p_clev_rec,
10172                       x_return_status  => x_return_status);
10173     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10174        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10175     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10176        RAISE OKL_API.G_EXCEPTION_ERROR;
10177     END IF;
10178     -- To Check We Got the Valid info
10179     IF UPPER(p_new_yn) NOT IN ('Y','N') OR
10180        (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
10181        UPPER(p_new_yn) IS NULL) THEN
10182       OKL_API.set_message(p_app_name     => G_APP_NAME,
10183                           p_msg_name     => G_INVALID_YN,
10184                           p_token1       => G_COL_NAME_TOKEN,
10185                           p_token1_value => 'p_new_yn');
10186        -- Halt Validation
10187        RAISE OKL_API.G_EXCEPTION_ERROR;
10188     END IF;
10189     -- Validate to see if the asset_number given is not null
10190     -- and also Validate asset_number does not exists
10191     -- in OKL_TXL_ASSETS_V
10192     IF UPPER(p_new_yn) = 'Y' THEN
10193        validate_new_ast_num_update(x_return_status  => x_return_status,
10194                                    p_asset_number   => p_asset_number,
10195                                    p_kle_id         => p_talv_rec.kle_id,
10196                                    p_dnz_chr_id     => p_clev_rec.dnz_chr_id);
10197        -- Check if activity started successfully
10198        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10199           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10200        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10201           RAISE OKL_API.G_EXCEPTION_ERROR;
10202        END IF;
10203     ELSIF UPPER(p_new_yn) = 'N' THEN
10204        validate_new_ast_num_update(x_return_status  => x_return_status,
10205                                    p_asset_number   => p_asset_number,
10206                                    p_kle_id         => p_talv_rec.kle_id,
10207                                    p_dnz_chr_id     => p_clev_rec.dnz_chr_id);
10208        -- Check if activity started successfully
10209        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10210           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10211        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10212           RAISE OKL_API.G_EXCEPTION_ERROR;
10213        END IF;
10214     END IF;
10215     -- Validate Line Style id and get the line type code
10216     -- and line style type for further processing
10217     validate_lse_id(p_clev_rec      => p_clev_rec,
10218                     x_return_status => x_return_status,
10219                     x_lty_code      => l_lty_code,
10220                     x_lse_type      => l_lse_type);
10221     -- Check if activity started successfully
10222     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10223        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10224     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10225        RAISE OKL_API.G_EXCEPTION_ERROR;
10226     END IF;
10227     -- Validate the Dnz_Chr_id
10228     validate_dnz_chr_id(p_clev_rec      => p_clev_rec,
10229                         x_return_status => x_return_status);
10230     -- Check if activity started successfully
10231     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10232       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10233     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10234       RAISE OKL_API.G_EXCEPTION_ERROR;
10235     END IF;
10236     -- We have to Populate the Model Line Record
10237     l_clev_rec                   := p_clev_rec;
10238     -- Now we are updating Fixed Asset Line
10239     -- Here we have have Dnz_Chr_id ,lse_id and cle_id
10240     -- The Record Should have the cle_id
10241     -- if the given line style is Fixed Asset Line
10242     IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
10243        l_clev_rec.chr_id IS NULL) AND
10244        (l_clev_rec.dnz_chr_id IS NOT NULL OR
10245        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
10246        (l_clev_rec.cle_id IS NOT NULL OR
10247        l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
10248        l_lty_code = G_FA_LINE_LTY_CODE AND
10249        l_lse_type = G_SLS_TYPE THEN
10250        update_fa_line_item(p_api_version   => p_api_version,
10251                             p_init_msg_list => p_init_msg_list,
10252                             x_return_status => x_return_status,
10253                             x_msg_count     => x_msg_count,
10254                             x_msg_data      => x_msg_data,
10255                             p_lty_code      => l_lty_code,
10256                             P_new_yn        => p_new_yn,
10257                             p_clev_rec      => l_clev_rec,
10258                             p_klev_rec      => p_klev_rec,
10259                             p_cimv_rec      => p_cimv_rec,
10260                             p_talv_rec      => p_talv_rec,
10261                             x_clev_rec      => x_clev_rec,
10262                             x_klev_rec      => x_klev_rec,
10263                             x_cimv_rec      => x_cimv_rec,
10264                             x_talv_rec      => x_talv_rec);
10265        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10266           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10267        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10268           RAISE OKL_API.G_EXCEPTION_ERROR;
10269        END IF;
10270     ELSE
10271       OKL_API.set_message(p_app_name     => G_APP_NAME,
10272                           p_msg_name     => G_INVALID_CRITERIA,
10273                           p_token1       => G_COL_NAME_TOKEN,
10274                           p_token1_value => 'Fixed Asset line');
10275        x_return_status := OKL_API.G_RET_STS_ERROR;
10276        RAISE OKL_API.G_EXCEPTION_ERROR;
10277     END IF;
10278     OKL_API.END_ACTIVITY (x_msg_count,
10279                           x_msg_data );
10280   EXCEPTION
10281     WHEN OKL_API.G_EXCEPTION_ERROR THEN
10282     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10283                                l_api_name,
10284                                G_PKG_NAME,
10285                                'OKL_API.G_RET_STS_ERROR',
10286                                x_msg_count,
10287                                x_msg_data,
10288                                '_PVT');
10289     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10290     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10291                               l_api_name,
10292                               G_PKG_NAME,
10293                               'OKL_API.G_RET_STS_UNEXP_ERROR',
10294                               x_msg_count,
10295                               x_msg_data,
10296                               '_PVT');
10297     WHEN OTHERS THEN
10298     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10299                               l_api_name,
10300                               G_PKG_NAME,
10301                               'OTHERS',
10302                               x_msg_count,
10303                               x_msg_data,
10304                               '_PVT');
10305   END Update_fixed_asset_line;
10306 -------------------------------------------------------------------------------------------------------
10307 ---------------------------- Main Process for Creation of Add on Line ---------------------------------
10308 -------------------------------------------------------------------------------------------------------
10309   PROCEDURE create_add_on_line(p_api_version    IN  NUMBER,
10310                               p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
10311                               x_return_status  OUT NOCOPY VARCHAR2,
10312                               x_msg_count      OUT NOCOPY NUMBER,
10313                               x_msg_data       OUT NOCOPY VARCHAR2,
10314                               P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
10315                               p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
10316                               p_clev_tbl       IN  clev_tbl_type,
10317                               p_klev_tbl       IN  klev_tbl_type,
10318                               p_cimv_tbl       IN  cimv_tbl_type,
10319                               x_clev_tbl       OUT NOCOPY clev_tbl_type,
10320                               x_klev_tbl       OUT NOCOPY klev_tbl_type,
10321                               x_fin_clev_rec   OUT NOCOPY clev_rec_type,
10322                               x_fin_klev_rec   OUT NOCOPY klev_rec_type,
10323                               x_cimv_tbl       OUT NOCOPY cimv_tbl_type) IS
10324     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_ADD_LINE';
10325     i                        NUMBER := 0;
10326     j                        NUMBER := 0;
10327     k                        NUMBER := 0;
10328     l_klev_rec               klev_rec_type;
10329     l_clev_tbl               clev_tbl_type;
10330     x_klev_rec               klev_rec_type;
10331     ln_oec                   OKL_K_LINES_V.OEC%TYPE := 0;
10332     ln_add_cle_id            OKC_K_LINES_V.CLE_ID%TYPE := 0;
10333     ln_add_dnz_chr_id        OKC_K_LINES_V.DNZ_CHR_ID%TYPE := 0;
10334     ln_top_line_id           OKC_K_LINES_V.CLE_ID%TYPE := 0;
10335     ln_klev_fin_oec          OKL_K_LINES_V.OEC%TYPE := 0;
10336     ln_klev_fin_res          OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
10337     ln_klev_fin_cap          OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
10338 
10339     -- To Find out the Top line ID
10340     CURSOR c_model_top_line(p_model_line_id OKC_K_LINES_V.ID%TYPE,
10341                             p_dnz_chr_id    OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
10342 --  #4414408
10343     SELECT cle.cle_id
10344     FROM okc_k_lines_b cle
10345     WHERE cle.id = p_model_line_id
10346     AND cle.dnz_chr_id = p_dnz_chr_id
10347     AND cle.lse_id = G_MODEL_LINE_LTY_ID;
10348 
10349   BEGIN
10350     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
10351     -- Call start_activity to create savepoint, check compatibility
10352     -- and initialize message list
10353     x_return_status := OKL_API.START_ACTIVITY (
10354                                l_api_name
10355                                ,p_init_msg_list
10356                                ,'_PVT'
10357                                ,x_return_status);
10358     -- Check if activity started successfully
10359     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10360        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10361     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10362        RAISE OKL_API.G_EXCEPTION_ERROR;
10363     END IF;
10364     OKL_API.init_msg_list(p_init_msg_list);
10365     -- Make sure PL/SQL table has records in it before passing
10366     IF (p_clev_tbl.COUNT > 0) AND
10367        (p_cimv_tbl.COUNT > 0)THEN
10368        i := p_clev_tbl.FIRST;
10369        k := p_cimv_tbl.FIRST;
10370        IF (p_klev_tbl.COUNT = 0) THEN
10371        -- Since p_klev_tbl is not Mandtory we could get and give blank record
10372          l_clev_tbl := p_clev_tbl;
10373          LOOP
10374            x_return_status := get_lse_id(p_lty_code => G_ADDON_LINE_LTY_CODE,
10375                                          x_lse_id   => l_clev_tbl(i).lse_id);
10376            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10377               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
10378            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10379               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
10380            END IF;
10381            create_addon_line_rec(p_api_version   => p_api_version,
10382                                  p_init_msg_list => p_init_msg_list,
10383                                  x_return_status => x_return_status,
10384                                  x_msg_count     => x_msg_count,
10385                                  x_msg_data      => x_msg_data,
10386                                  P_new_yn        => P_new_yn,
10387                                  p_asset_number  => p_asset_number,
10388                                  p_clev_rec      => l_clev_tbl(i),
10389                                  p_klev_rec      => l_klev_rec,
10390                                  p_cimv_rec      => p_cimv_tbl(k),
10391                                  x_clev_rec      => x_clev_tbl(i),
10392                                  x_klev_rec      => x_klev_rec,
10393                                  x_cimv_rec      => x_cimv_tbl(k));
10394            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10395               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
10396            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10397               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
10398            END IF;
10399            ln_add_cle_id       := x_clev_tbl(i).cle_id;
10400            ln_add_dnz_chr_id   := x_clev_tbl(i).dnz_chr_id;
10401            -- Assume that there will be one to one for item and add on line
10402            EXIT WHEN (i = p_clev_tbl.LAST);
10403            i := l_clev_tbl.NEXT(i);
10404            k := p_cimv_tbl.NEXT(k);
10405            x_klev_tbl(i) :=  x_klev_rec;
10406          END LOOP;
10407        ELSE
10408          IF (p_clev_tbl.COUNT <> p_klev_tbl.COUNT) OR
10409             (p_clev_tbl.COUNT <> p_cimv_tbl.COUNT) OR
10410             (p_klev_tbl.COUNT <> p_cimv_tbl.COUNT) THEN
10411             OKL_API.set_message(p_app_name     => G_APP_NAME,
10412                                 p_msg_name     => G_CNT_REC);
10413            RAISE OKL_API.G_EXCEPTION_ERROR;
10414          END IF;
10415          j := p_klev_tbl.FIRST;
10416          l_clev_tbl := p_clev_tbl;
10417          LOOP
10418            x_return_status := get_lse_id(p_lty_code => G_ADDON_LINE_LTY_CODE,
10419                                          x_lse_id   => l_clev_tbl(i).lse_id);
10420            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10421               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
10422            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10423               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
10424            END IF;
10425            create_addon_line_rec(p_api_version   => p_api_version,
10426                                  p_init_msg_list => p_init_msg_list,
10427                                  x_return_status => x_return_status,
10428                                  x_msg_count     => x_msg_count,
10429                                  x_msg_data      => x_msg_data,
10430                                  P_new_yn        => P_new_yn,
10431                                  p_asset_number  => p_asset_number,
10432                                  p_clev_rec      => l_clev_tbl(i),
10433                                  p_klev_rec      => p_klev_tbl(j),
10434                                  p_cimv_rec      => p_cimv_tbl(k),
10435                                  x_clev_rec      => x_clev_tbl(i),
10436                                  x_klev_rec      => x_klev_tbl(j),
10437                                  x_cimv_rec      => x_cimv_tbl(k));
10438            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10439               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
10440            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10441               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
10442            END IF;
10443            ln_add_cle_id       := x_clev_tbl(i).cle_id;
10444            ln_add_dnz_chr_id   := x_clev_tbl(i).dnz_chr_id;
10445            -- Assume that there will be one to one for item and add on line
10446            EXIT WHEN (i = p_clev_tbl.LAST);
10447            i := l_clev_tbl.NEXT(i);
10448            j := p_klev_tbl.NEXT(j);
10449            k := p_cimv_tbl.NEXT(K);
10450          END LOOP;
10451        END IF;
10452        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10453          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10454        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10455          RAISE OKL_API.G_EXCEPTION_ERROR;
10456        END IF;
10457 
10458        OPEN  c_model_top_line(p_model_line_id => ln_add_cle_id,
10459                               p_dnz_chr_id    => ln_add_dnz_chr_id);
10460        FETCH c_model_top_line INTO ln_top_line_id;
10461 
10462        IF c_model_top_line%NOTFOUND THEN
10463           OKL_API.set_message(p_app_name     => G_APP_NAME,
10464                               p_msg_name     => G_NO_MATCHING_RECORD,
10465                               p_token1       => G_COL_NAME_TOKEN,
10466                               p_token1_value => 'cle_id');
10467           RAISE G_EXCEPTION_HALT_VALIDATION;
10468        END IF;
10469 
10470        CLOSE c_model_top_line;
10471 
10472        -- Calculate the OEC to Populate the OKL_K_LINES_V.OEC
10473        oec_calc_upd_fin_rec(p_api_version        => p_api_version,
10474                             p_init_msg_list      => p_init_msg_list,
10475                             x_return_status      => x_return_status,
10476                             x_msg_count          => x_msg_count,
10477                             x_msg_data           => x_msg_data,
10478                             P_new_yn             => P_new_yn,
10479                             p_asset_number       => p_asset_number,
10480 			    -- 4414408
10481                             p_top_line_id        => ln_top_line_id,
10482                             p_dnz_chr_id         => ln_add_dnz_chr_id,
10483                             x_fin_clev_rec       => x_fin_clev_rec,
10484                             x_fin_klev_rec       => x_fin_klev_rec,
10485                             x_oec                => ln_klev_fin_oec,
10486                             p_validate_fin_line  => OKL_API.G_TRUE);
10487        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10488          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10489        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10490         RAISE OKL_API.G_EXCEPTION_ERROR;
10491        END IF;
10492        -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
10493        cap_amt_calc_upd_fin_rec(p_api_version        => p_api_version,
10494                                 p_init_msg_list      => p_init_msg_list,
10495                                 x_return_status      => x_return_status,
10496                                 x_msg_count          => x_msg_count,
10497                                 x_msg_data           => x_msg_data,
10498                                 P_new_yn             => P_new_yn,
10499                                 p_asset_number       => p_asset_number,
10500 				-- 4414408
10501                                 p_top_line_id        => ln_top_line_id,
10502                                 p_dnz_chr_id         => ln_add_dnz_chr_id,
10503                                 x_fin_clev_rec       => x_fin_clev_rec,
10504                                 x_fin_klev_rec       => x_fin_klev_rec,
10505                                 x_cap_amt            => ln_klev_fin_cap,
10506                                 p_validate_fin_line  => OKL_API.G_TRUE);
10507        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10508          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10509        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10510          RAISE OKL_API.G_EXCEPTION_ERROR;
10511        END IF;
10512        -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
10513        res_value_calc_upd_fin_rec(p_api_version        => p_api_version,
10514                                   p_init_msg_list      => p_init_msg_list,
10515                                   x_return_status      => x_return_status,
10516                                   x_msg_count          => x_msg_count,
10517                                   x_msg_data           => x_msg_data,
10518                                   P_new_yn             => P_new_yn,
10519                                   p_asset_number       => p_asset_number,
10520 				  -- 4414408
10521                                   p_top_line_id        => ln_top_line_id,
10522                                   p_dnz_chr_id         => ln_add_dnz_chr_id,
10523                                   x_fin_clev_rec       => x_fin_clev_rec,
10524                                   x_fin_klev_rec       => x_fin_klev_rec,
10525                                   x_res_value          => ln_klev_fin_res,
10526                                   p_validate_fin_line  => OKL_API.G_TRUE);
10527        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10528          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10529        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10530          RAISE OKL_API.G_EXCEPTION_ERROR;
10531        END IF;
10532 
10533        --Bug# 5530990
10534        -- Update Original Cost and Depreciation Cost in
10535        -- OKL_TXL_ASSETS_B and OKL_TXD_ASSETS_B when
10536        -- Add on line is added
10537        update_asset_cost(p_api_version        => p_api_version,
10538                          p_init_msg_list      => p_init_msg_list,
10539                          x_return_status      => x_return_status,
10540                          x_msg_count          => x_msg_count,
10541                          x_msg_data           => x_msg_data,
10542                          p_cleb_fin_id        => ln_top_line_id,
10543                          p_chr_id             => ln_add_dnz_chr_id,
10544                          p_oec                => ln_klev_fin_oec);
10545        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10546          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10547        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10548          RAISE OKL_API.G_EXCEPTION_ERROR;
10549        END IF;
10550 
10551     ELSE
10552        OKL_API.set_message(p_app_name => G_APP_NAME,
10553                            p_msg_name => G_CNT_REC);
10554        x_return_status := OKL_API.G_RET_STS_ERROR;
10555        RAISE OKL_API.G_EXCEPTION_ERROR;
10556     END IF;
10557     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10558        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10559     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10560        RAISE OKL_API.G_EXCEPTION_ERROR;
10561     END IF;
10562     OKL_API.END_ACTIVITY (x_msg_count,
10563                           x_msg_data );
10564   EXCEPTION
10565     WHEN OKL_API.G_EXCEPTION_ERROR THEN
10566     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10567                                l_api_name,
10568                                G_PKG_NAME,
10569                                'OKL_API.G_RET_STS_ERROR',
10570                                x_msg_count,
10571                                x_msg_data,
10572                                '_PVT');
10573     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10574     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10575                               l_api_name,
10576                               G_PKG_NAME,
10577                               'OKL_API.G_RET_STS_UNEXP_ERROR',
10578                               x_msg_count,
10579                               x_msg_data,
10580                               '_PVT');
10581     WHEN OTHERS THEN
10582     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10583                               l_api_name,
10584                               G_PKG_NAME,
10585                               'OTHERS',
10586                               x_msg_count,
10587                               x_msg_data,
10588                               '_PVT');
10589   END create_add_on_line;
10590 -------------------------------------------------------------------------------------------------------
10591 ---------------------------- Main Process for Update of Add on Line ---------------------------------
10592 -------------------------------------------------------------------------------------------------------
10593   PROCEDURE update_add_on_line(
10594             p_api_version   IN NUMBER,
10595             p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
10596             x_return_status  OUT NOCOPY VARCHAR2,
10597             x_msg_count      OUT NOCOPY NUMBER,
10598             x_msg_data       OUT NOCOPY VARCHAR2,
10599             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
10600             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
10601             p_clev_tbl       IN  clev_tbl_type,
10602             p_klev_tbl       IN  klev_tbl_type,
10603             p_cimv_tbl       IN  cimv_tbl_type,
10604             x_clev_tbl       OUT NOCOPY clev_tbl_type,
10605             x_klev_tbl       OUT NOCOPY klev_tbl_type,
10606             x_cimv_tbl       OUT NOCOPY cimv_tbl_type,
10607             x_fin_clev_rec   OUT NOCOPY clev_rec_type,
10608             x_fin_klev_rec   OUT NOCOPY klev_rec_type) IS
10609 
10610     i                        NUMBER := 0;
10611     j                        NUMBER := 0;
10612     k                        NUMBER := 0;
10613     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_ADD_LINE';
10614     l_klev_rec               klev_rec_type;
10615     l_clev_tbl               clev_tbl_type;
10616     x_klev_rec               klev_rec_type;
10617     ln_add_cle_id            OKC_K_LINES_V.CLE_ID%TYPE := 0;
10618     ln_add_dnz_chr_id        OKC_K_LINES_V.DNZ_CHR_ID%TYPE := 0;
10619     ln_top_line_id           OKC_K_LINES_V.CLE_ID%TYPE := 0;
10620     ln_klev_fin_oec          OKL_K_LINES_V.OEC%TYPE := 0;
10621     ln_klev_fin_res          OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
10622     ln_klev_fin_cap          OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
10623 
10624     -- To Find out the Top line ID
10625     CURSOR c_model_top_line(p_model_line_id OKC_K_LINES_V.ID%TYPE,
10626                             p_dnz_chr_id    OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
10627     --  #4414408
10628     SELECT cle.cle_id
10629     FROM okc_k_lines_b cle
10630     WHERE cle.id = p_model_line_id
10631     AND cle.dnz_chr_id = p_dnz_chr_id
10632     AND cle.lse_id = G_MODEL_LINE_LTY_ID;
10633 
10634   BEGIN
10635     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
10636     -- Call start_activity to create savepoint, check compatibility
10637     -- and initialize message list
10638     x_return_status := OKL_API.START_ACTIVITY (
10639                                l_api_name
10640                                ,p_init_msg_list
10641                                ,'_PVT'
10642                                ,x_return_status);
10643     -- Check if activity started successfully
10644     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10645        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10646     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10647        RAISE OKL_API.G_EXCEPTION_ERROR;
10648     END IF;
10649     OKL_API.init_msg_list(p_init_msg_list);
10650     -- Make sure PL/SQL table has records in it before passing
10651     IF (p_clev_tbl.COUNT > 0) AND
10652        (p_klev_tbl.COUNT > 0) AND
10653        (p_cimv_tbl.COUNT > 0)THEN
10654        IF (p_clev_tbl.COUNT <> p_klev_tbl.COUNT) OR
10655           (p_clev_tbl.COUNT <> p_cimv_tbl.COUNT) OR
10656           (p_klev_tbl.COUNT <> p_cimv_tbl.COUNT) THEN
10657             OKL_API.set_message(p_app_name => G_APP_NAME,
10658                                 p_msg_name => G_CNT_REC);
10659           RAISE OKL_API.G_EXCEPTION_ERROR;
10660        END IF;
10661        i := p_clev_tbl.FIRST;
10662        j := p_klev_tbl.FIRST;
10663        k := p_cimv_tbl.FIRST;
10664        l_clev_tbl := p_clev_tbl;
10665        LOOP
10666          update_addon_line_rec(p_api_version   => p_api_version,
10667                                p_init_msg_list => p_init_msg_list,
10668                                x_return_status => x_return_status,
10669                                x_msg_count     => x_msg_count,
10670                                x_msg_data      => x_msg_data,
10671                                P_new_yn        => P_new_yn,
10672                                p_asset_number  => p_asset_number,
10673                                p_clev_rec      => l_clev_tbl(i),
10674                                p_klev_rec      => p_klev_tbl(j),
10675                                p_cimv_rec      => p_cimv_tbl(k),
10676                                x_clev_rec      => x_clev_tbl(i),
10677                                x_klev_rec      => x_klev_tbl(j),
10678                                x_cimv_rec      => x_cimv_tbl(k));
10679          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10680            EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
10681          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10682            EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
10683            RAISE OKL_API.G_EXCEPTION_ERROR;
10684          END IF;
10685          ln_add_cle_id       := x_clev_tbl(i).cle_id;
10686          ln_add_dnz_chr_id   := x_clev_tbl(i).dnz_chr_id;
10687          -- Assume that there will be one to one for item and add on line
10688          EXIT WHEN (i = p_clev_tbl.LAST);
10689          i := p_clev_tbl.NEXT(i);
10690          j := p_klev_tbl.NEXT(j);
10691          k := p_clev_tbl.NEXT(k);
10692        END LOOP;
10693     ELSE
10694        OKL_API.set_message(p_app_name => G_APP_NAME,
10695                            p_msg_name => G_CNT_REC);
10696        x_return_status := OKL_API.G_RET_STS_ERROR;
10697        RAISE OKL_API.G_EXCEPTION_ERROR;
10698     END IF;
10699     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10700        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10701     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10702        RAISE OKL_API.G_EXCEPTION_ERROR;
10703     END IF;
10704 
10705     OPEN  c_model_top_line(p_model_line_id => ln_add_cle_id,
10706                            p_dnz_chr_id    => ln_add_dnz_chr_id);
10707     FETCH c_model_top_line INTO ln_top_line_id;
10708 
10709     IF c_model_top_line%NOTFOUND THEN
10710        OKL_API.set_message(p_app_name     => G_APP_NAME,
10711                            p_msg_name     => G_NO_MATCHING_RECORD,
10712                            p_token1       => G_COL_NAME_TOKEN,
10713                            p_token1_value => 'cle_id');
10714        RAISE G_EXCEPTION_HALT_VALIDATION;
10715     END IF;
10716 
10717     CLOSE c_model_top_line;
10718 
10719     -- Calculate the OEC to Populate the OKL_K_LINES_V.OEC
10720     oec_calc_upd_fin_rec(p_api_version        => p_api_version,
10721                          p_init_msg_list      => p_init_msg_list,
10722                          x_return_status      => x_return_status,
10723                          x_msg_count          => x_msg_count,
10724                          x_msg_data           => x_msg_data,
10725                          P_new_yn             => P_new_yn,
10726                          p_asset_number       => p_asset_number,
10727 			 -- 4414408
10728                          p_top_line_id        => ln_top_line_id,
10729                          p_dnz_chr_id         => ln_add_dnz_chr_id,
10730                          x_fin_clev_rec       => x_fin_clev_rec,
10731                          x_fin_klev_rec       => x_fin_klev_rec,
10732                          x_oec                => ln_klev_fin_oec,
10733                          p_validate_fin_line  => OKL_API.G_TRUE);
10734     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10735       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10736     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10737       RAISE OKL_API.G_EXCEPTION_ERROR;
10738     END IF;
10739     -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
10740     cap_amt_calc_upd_fin_rec(p_api_version        => p_api_version,
10741                              p_init_msg_list      => p_init_msg_list,
10742                              x_return_status      => x_return_status,
10743                              x_msg_count          => x_msg_count,
10744                              x_msg_data           => x_msg_data,
10745                              P_new_yn             => P_new_yn,
10746                              p_asset_number       => p_asset_number,
10747 			     -- 4414408
10748                              p_top_line_id        => ln_top_line_id,
10749                              p_dnz_chr_id         => ln_add_dnz_chr_id,
10750                              x_fin_clev_rec       => x_fin_clev_rec,
10751                              x_fin_klev_rec       => x_fin_klev_rec,
10752                              x_cap_amt            => ln_klev_fin_cap,
10753                              p_validate_fin_line  => OKL_API.G_TRUE);
10754     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10755       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10756     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10757       RAISE OKL_API.G_EXCEPTION_ERROR;
10758     END IF;
10759     -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
10760     res_value_calc_upd_fin_rec(p_api_version        => p_api_version,
10761                                p_init_msg_list      => p_init_msg_list,
10762                                x_return_status      => x_return_status,
10763                                x_msg_count          => x_msg_count,
10764                                x_msg_data           => x_msg_data,
10765                                P_new_yn             => P_new_yn,
10766                                p_asset_number       => p_asset_number,
10767 			       -- 4414408
10768                                p_top_line_id        => ln_top_line_id,
10769                                p_dnz_chr_id         => ln_add_dnz_chr_id,
10770                                x_fin_clev_rec       => x_fin_clev_rec,
10771                                x_fin_klev_rec       => x_fin_klev_rec,
10772                                x_res_value          => ln_klev_fin_res,
10773                                p_validate_fin_line  => OKL_API.G_TRUE);
10774     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10775       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10776     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10777       RAISE OKL_API.G_EXCEPTION_ERROR;
10778     END IF;
10779 
10780     --Bug# 5530990
10781     -- Update Original Cost and Depreciation Cost in
10782     -- OKL_TXL_ASSETS_B and OKL_TXD_ASSETS_B when
10783     -- Add on line is updated
10784     update_asset_cost(p_api_version        => p_api_version,
10785                       p_init_msg_list      => p_init_msg_list,
10786                       x_return_status      => x_return_status,
10787                       x_msg_count          => x_msg_count,
10788                       x_msg_data           => x_msg_data,
10789                       p_cleb_fin_id        => ln_top_line_id,
10790                       p_chr_id             => ln_add_dnz_chr_id,
10791                       p_oec                => ln_klev_fin_oec);
10792     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10793      RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10794     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10795       RAISE OKL_API.G_EXCEPTION_ERROR;
10796     END IF;
10797 
10798     -- We need to change the status of the header whenever there is updating happening
10799     -- after the contract status is approved
10800     IF (x_fin_clev_rec.dnz_chr_id is NOT NULL) AND
10801        (x_fin_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
10802       --cascade edit status on to lines
10803       okl_contract_status_pub.cascade_lease_status_edit
10804                (p_api_version     => p_api_version,
10805                 p_init_msg_list   => p_init_msg_list,
10806                 x_return_status   => x_return_status,
10807                 x_msg_count       => x_msg_count,
10808                 x_msg_data        => x_msg_data,
10809                 p_chr_id          => x_fin_clev_rec.dnz_chr_id);
10810       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10811         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10812       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10813         RAISE OKL_API.G_EXCEPTION_ERROR;
10814       END IF;
10815     END IF;
10816     OKL_API.END_ACTIVITY (x_msg_count,
10817                           x_msg_data );
10818   EXCEPTION
10819     WHEN OKL_API.G_EXCEPTION_ERROR THEN
10820     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
10821                                l_api_name,
10822                                G_PKG_NAME,
10823                                'OKL_API.G_RET_STS_ERROR',
10824                                x_msg_count,
10825                                x_msg_data,
10826                                '_PVT');
10827     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
10828     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10829                               l_api_name,
10830                               G_PKG_NAME,
10831                               'OKL_API.G_RET_STS_UNEXP_ERROR',
10832                               x_msg_count,
10833                               x_msg_data,
10834                               '_PVT');
10835     WHEN OTHERS THEN
10836     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
10837                               l_api_name,
10838                               G_PKG_NAME,
10839                               'OTHERS',
10840                               x_msg_count,
10841                               x_msg_data,
10842                               '_PVT');
10843   END update_add_on_line;
10844 -------------------------------------------------------------------------------------------------------
10845 ---------------------------- Main Process for Delete of Add on Line -----------------------------------
10846 -------------------------------------------------------------------------------------------------------
10847   PROCEDURE delete_add_on_line(
10848             p_api_version    IN  NUMBER,
10849             p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
10850             x_return_status  OUT NOCOPY VARCHAR2,
10851             x_msg_count      OUT NOCOPY NUMBER,
10852             x_msg_data       OUT NOCOPY VARCHAR2,
10853             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
10854             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
10855             p_clev_tbl       IN  clev_tbl_type,
10856             p_klev_tbl       IN  klev_tbl_type,
10857             x_fin_clev_rec   OUT NOCOPY clev_rec_type,
10858             x_fin_klev_rec   OUT NOCOPY klev_rec_type) IS
10859 
10860     i                        NUMBER := 0;
10861     j                        NUMBER := 0;
10862     l_api_name      CONSTANT VARCHAR2(30) := 'DELETE_ADDON_LN';
10863     ln_add_cle_id            OKC_K_LINES_V.CLE_ID%TYPE := 0;
10864     ln_add_dnz_chr_id        OKC_K_LINES_V.DNZ_CHR_ID%TYPE := 0;
10865     ln_top_line_id           OKC_K_LINES_V.CLE_ID%TYPE := 0;
10866     l_clev_tbl               clev_tbl_type;
10867     ln_klev_fin_oec              OKL_K_LINES_V.OEC%TYPE := 0;
10868     ln_klev_fin_res              OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
10869     ln_klev_fin_cap              OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
10870 
10871     -- To Find out the Top line ID
10872     CURSOR c_model_top_line(p_model_line_id OKC_K_LINES_V.ID%TYPE,
10873                             p_dnz_chr_id    OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
10874     --  #4414408
10875     SELECT cle.cle_id
10876     FROM okc_k_lines_b cle
10877     WHERE cle.id = p_model_line_id
10878     AND cle.dnz_chr_id = p_dnz_chr_id
10879     AND cle.lse_id = G_MODEL_LINE_LTY_ID;
10880 
10881   BEGIN
10882     x_return_status       := OKL_API.G_RET_STS_SUCCESS;
10883     -- Call start_activity to create savepoint, check compatibility
10884     -- and initialize message list
10885     x_return_status := OKL_API.START_ACTIVITY (
10886                                l_api_name
10887                                ,p_init_msg_list
10888                                ,'_PVT'
10889                                ,x_return_status);
10890     -- Check if activity started successfully
10891     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10892        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10893     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10894        RAISE OKL_API.G_EXCEPTION_ERROR;
10895     END IF;
10896     OKL_API.init_msg_list(p_init_msg_list);
10897     -- Make sure PL/SQL table has records in it before passing
10898     IF (p_clev_tbl.COUNT > 0) AND
10899        (p_klev_tbl.COUNT > 0) THEN
10900        IF (p_clev_tbl.COUNT <> p_klev_tbl.COUNT) THEN
10901        OKL_API.set_message(p_app_name => G_APP_NAME,
10902                            p_msg_name => G_CNT_REC);
10903           RAISE OKL_API.G_EXCEPTION_ERROR;
10904        END IF;
10905        i := p_clev_tbl.FIRST;
10906        j := p_klev_tbl.FIRST;
10907        LOOP
10908          delete_addon_line_rec(p_api_version   => p_api_version,
10909                                p_init_msg_list => p_init_msg_list,
10910                                x_return_status => x_return_status,
10911                                x_msg_count     => x_msg_count,
10912                                x_msg_data      => x_msg_data,
10913                                p_clev_rec      => p_clev_tbl(i),
10914                                p_klev_rec      => p_klev_tbl(j),
10915                                x_clev_rec      => l_clev_tbl(i));
10916          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10917             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
10918          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10919             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
10920          END IF;
10921          ln_add_cle_id     := l_clev_tbl(i).cle_id;
10922          ln_add_dnz_chr_id := l_clev_tbl(i).dnz_chr_id;
10923          -- Assume that there will be one to one for item and add on line
10924          EXIT WHEN (i = p_clev_tbl.LAST);
10925          i := p_clev_tbl.NEXT(i);
10926          j := p_klev_tbl.NEXT(j);
10927        END LOOP;
10928     ELSE
10929        OKL_API.set_message(p_app_name => G_APP_NAME,
10930                            p_msg_name => G_CNT_REC);
10931        x_return_status := OKL_API.G_RET_STS_ERROR;
10932        RAISE OKL_API.G_EXCEPTION_ERROR;
10933     END IF;
10934     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10935        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10936     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10937        RAISE OKL_API.G_EXCEPTION_ERROR;
10938     END IF;
10939 
10940     OPEN  c_model_top_line(p_model_line_id => ln_add_cle_id,
10941                            p_dnz_chr_id    => ln_add_dnz_chr_id);
10942     FETCH c_model_top_line INTO ln_top_line_id;
10943 
10944     IF c_model_top_line%NOTFOUND THEN
10945        OKL_API.set_message(p_app_name     => G_APP_NAME,
10946                            p_msg_name     => G_NO_MATCHING_RECORD,
10947                            p_token1       => G_COL_NAME_TOKEN,
10948                            p_token1_value => 'cle_id');
10949        RAISE G_EXCEPTION_HALT_VALIDATION;
10950     END IF;
10951 
10952     CLOSE c_model_top_line;
10953 
10954     -- Calculate the OEC to Populate the OKL_K_LINES_V.OEC
10955     oec_calc_upd_fin_rec(p_api_version        => p_api_version,
10956                          p_init_msg_list      => p_init_msg_list,
10957                          x_return_status      => x_return_status,
10958                          x_msg_count          => x_msg_count,
10959                          x_msg_data           => x_msg_data,
10960                          P_new_yn             => P_new_yn,
10961                          p_asset_number       => p_asset_number,
10962 			 -- 4414408
10963                          p_top_line_id        => ln_top_line_id,
10964                          p_dnz_chr_id         => ln_add_dnz_chr_id,
10965                          x_fin_clev_rec       => x_fin_clev_rec,
10966                          x_fin_klev_rec       => x_fin_klev_rec,
10967                          x_oec                => ln_klev_fin_oec,
10968                          p_validate_fin_line  => OKL_API.G_TRUE);
10969     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10970       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10971     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10972       RAISE OKL_API.G_EXCEPTION_ERROR;
10973     END IF;
10974     -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
10975     cap_amt_calc_upd_fin_rec(p_api_version        => p_api_version,
10976                              p_init_msg_list      => p_init_msg_list,
10977                              x_return_status      => x_return_status,
10978                              x_msg_count          => x_msg_count,
10979                              x_msg_data           => x_msg_data,
10980                              P_new_yn             => P_new_yn,
10981                              p_asset_number       => p_asset_number,
10982 			     -- 4414408
10983                              p_top_line_id        => ln_top_line_id,
10984                              p_dnz_chr_id         => ln_add_dnz_chr_id,
10985                              x_fin_clev_rec       => x_fin_clev_rec,
10986                              x_fin_klev_rec       => x_fin_klev_rec,
10987                              x_cap_amt            => ln_klev_fin_cap,
10988                              p_validate_fin_line  => OKL_API.G_TRUE);
10989     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
10990       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
10991     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
10992       RAISE OKL_API.G_EXCEPTION_ERROR;
10993     END IF;
10994     -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
10995     res_value_calc_upd_fin_rec(p_api_version        => p_api_version,
10996                                p_init_msg_list      => p_init_msg_list,
10997                                x_return_status      => x_return_status,
10998                                x_msg_count          => x_msg_count,
10999                                x_msg_data           => x_msg_data,
11000                                P_new_yn             => P_new_yn,
11001                                p_asset_number       => p_asset_number,
11002 			       -- 4414408
11003                                p_top_line_id        => ln_top_line_id,
11004                                p_dnz_chr_id         => ln_add_dnz_chr_id,
11005                                x_fin_clev_rec       => x_fin_clev_rec,
11006                                x_fin_klev_rec       => x_fin_klev_rec,
11007                                x_res_value          => ln_klev_fin_res,
11008                                p_validate_fin_line  => OKL_API.G_TRUE);
11009     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11010       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11011     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11012       RAISE OKL_API.G_EXCEPTION_ERROR;
11013     END IF;
11014 
11015     --Bug# 5530990
11016     -- Update Original Cost and Depreciation Cost in
11017     -- OKL_TXL_ASSETS_B and OKL_TXD_ASSETS_B when
11018     -- Add on line is deleted
11019     update_asset_cost(p_api_version        => p_api_version,
11020                       p_init_msg_list      => p_init_msg_list,
11021                       x_return_status      => x_return_status,
11022                       x_msg_count          => x_msg_count,
11023                       x_msg_data           => x_msg_data,
11024                       p_cleb_fin_id        => ln_top_line_id,
11025                       p_chr_id             => ln_add_dnz_chr_id,
11026                       p_oec                => ln_klev_fin_oec);
11027     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11028      RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11029     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11030       RAISE OKL_API.G_EXCEPTION_ERROR;
11031     END IF;
11032 
11033     -- We need to change the status of the header whenever there is updating happening
11034     -- after the contract status is approved
11035     IF (x_fin_clev_rec.dnz_chr_id is NOT NULL) AND
11036        (x_fin_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
11037       --cascade edit status on to lines
11038       okl_contract_status_pub.cascade_lease_status_edit
11039                (p_api_version     => p_api_version,
11040                 p_init_msg_list   => p_init_msg_list,
11041                 x_return_status   => x_return_status,
11042                 x_msg_count       => x_msg_count,
11043                 x_msg_data        => x_msg_data,
11044                 p_chr_id          => x_fin_clev_rec.dnz_chr_id);
11045       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11046         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11047       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11048         RAISE OKL_API.G_EXCEPTION_ERROR;
11049       END IF;
11050     END IF;
11051     OKL_API.END_ACTIVITY (x_msg_count,
11052                           x_msg_data );
11053   EXCEPTION
11054     WHEN OKL_API.G_EXCEPTION_ERROR THEN
11055     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11056                                l_api_name,
11057                                G_PKG_NAME,
11058                                'OKL_API.G_RET_STS_ERROR',
11059                                x_msg_count,
11060                                x_msg_data,
11061                                '_PVT');
11062     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11063     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11064                               l_api_name,
11065                               G_PKG_NAME,
11066                               'OKL_API.G_RET_STS_UNEXP_ERROR',
11067                               x_msg_count,
11068                               x_msg_data,
11069                               '_PVT');
11070     WHEN OTHERS THEN
11071     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11072                               l_api_name,
11073                               G_PKG_NAME,
11074                               'OTHERS',
11075                               x_msg_count,
11076                               x_msg_data,
11077                               '_PVT');
11078   END delete_add_on_line;
11079 -----------------------------------------------------------------------------------------------
11080 ------------------ Main Process for Instance Line Creation-------------------------------------
11081 -----------------------------------------------------------------------------------------------
11082   PROCEDURE Create_instance_line(
11083             p_api_version    IN  NUMBER,
11084             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
11085             x_return_status  OUT NOCOPY VARCHAR2,
11086             x_msg_count      OUT NOCOPY NUMBER,
11087             x_msg_data       OUT NOCOPY VARCHAR2,
11088             p_clev_rec       IN  clev_rec_type,
11089             p_klev_rec       IN  klev_rec_type,
11090             p_itiv_rec       IN  itiv_rec_type,
11091             x_clev_rec       OUT NOCOPY clev_rec_type,
11092             x_klev_rec       OUT NOCOPY klev_rec_type,
11093             x_itiv_rec       OUT NOCOPY itiv_rec_type) IS
11094 
11095     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_INSTANCE_LINES';
11096     l_clev_rec               clev_rec_type;
11097     ln_lse_id                OKC_LINE_STYLES_V.ID%TYPE := OKL_API.G_MISS_NUM;
11098     -- Variables for validation of line style
11099     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
11100     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
11101   BEGIN
11102     x_return_status := OKL_API.G_RET_STS_SUCCESS;
11103     -- Call start_activity to create savepoint, check compatibility
11104     -- and initialize message list
11105     x_return_status := OKL_API.START_ACTIVITY (
11106                                l_api_name
11107                                ,p_init_msg_list
11108                                ,'_PVT'
11109                                ,x_return_status);
11110     -- Check if activity started successfully
11111     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11112        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11113     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11114        RAISE OKL_API.G_EXCEPTION_ERROR;
11115     END IF;
11116 --  4414408 The validations in Validate_lse_id and Validate_dnz_chr_id are redundant
11117 /*
11118     -- Validate Line Style id and get the line type code
11119     -- and line style type for further processing
11120     validate_lse_id(p_clev_rec      => p_clev_rec,
11121                     x_return_status => x_return_status,
11122                     x_lty_code      => l_lty_code,
11123                     x_lse_type      => l_lse_type);
11124     -- Check if activity started successfully
11125     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11126        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11127     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11128        RAISE OKL_API.G_EXCEPTION_ERROR;
11129     END IF;
11130     -- Validate the Dnz_Chr_id
11131     validate_dnz_chr_id(p_clev_rec      => p_clev_rec,
11132                         x_return_status => x_return_status);
11133     -- Check if activity started successfully
11134     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11135       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11136     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11137       RAISE OKL_API.G_EXCEPTION_ERROR;
11138     END IF;
11139 */
11140     -- Now we are going to create the instance Line
11141     -- Here we have have Dnz_Chr_id ,lse_id and cle_id
11142     -- The Record Should have the cle_id
11143     -- if the given line style is instance Line
11144     l_clev_rec := p_clev_rec;
11145     IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
11146        l_clev_rec.chr_id IS NULL) AND
11147        (l_clev_rec.dnz_chr_id IS NOT NULL OR
11148        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
11149        (l_clev_rec.cle_id IS NOT NULL OR
11150        l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
11151 --     #4414408
11152 --       l_lty_code = G_INST_LINE_LTY_CODE AND
11153 --       l_lse_type = G_SLS_TYPE THEN
11154        l_clev_rec.lse_id = G_INST_LINE_LTY_ID THEN
11155        validate_instance_number_ib(x_return_status => x_return_status,
11156                                    p_inst_num_ib   => p_itiv_rec.instance_number_ib);
11157        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11158           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11159        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11160           RAISE OKL_API.G_EXCEPTION_ERROR;
11161        END IF;
11162        Create_inst_line(p_api_version   => p_api_version,
11163                         p_init_msg_list => p_init_msg_list,
11164                         x_return_status => x_return_status,
11165                         x_msg_count     => x_msg_count,
11166                         x_msg_data      => x_msg_data,
11167 -- 4414408              p_lty_code      => l_lty_code,
11168                         p_clev_rec      => l_clev_rec,
11169                         p_klev_rec      => p_klev_rec,
11170                         x_clev_rec      => x_clev_rec,
11171                         x_klev_rec      => x_klev_rec);
11172        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11173           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11174        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11175           RAISE OKL_API.G_EXCEPTION_ERROR;
11176        END IF;
11177     ELSE
11178       OKL_API.set_message(p_app_name     => G_APP_NAME,
11179                           p_msg_name     => G_INVALID_CRITERIA,
11180                           p_token1       => G_COL_NAME_TOKEN,
11181                           p_token1_value => 'Instance Asset line');
11182       x_return_status := OKL_API.G_RET_STS_ERROR;
11183       RAISE OKL_API.G_EXCEPTION_ERROR;
11184     END IF;
11185     OKL_API.END_ACTIVITY (x_msg_count,
11186                           x_msg_data );
11187   EXCEPTION
11188     WHEN OKL_API.G_EXCEPTION_ERROR THEN
11189     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11190                                l_api_name,
11191                                G_PKG_NAME,
11192                                'OKL_API.G_RET_STS_ERROR',
11193                                x_msg_count,
11194                                x_msg_data,
11195                                '_PVT');
11196     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11197     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11198                               l_api_name,
11199                               G_PKG_NAME,
11200                               'OKL_API.G_RET_STS_UNEXP_ERROR',
11201                               x_msg_count,
11202                               x_msg_data,
11203                               '_PVT');
11204     WHEN OTHERS THEN
11205     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11206                               l_api_name,
11207                               G_PKG_NAME,
11208                               'OTHERS',
11209                               x_msg_count,
11210                               x_msg_data,
11211                               '_PVT');
11212   END Create_instance_line;
11213 -----------------------------------------------------------------------------------------------
11214 ------------------ Main Process for Updating Instance Line ------------------------------------
11215 -----------------------------------------------------------------------------------------------
11216   PROCEDURE Update_instance_line(
11217             p_api_version    IN  NUMBER,
11218             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
11219             x_return_status  OUT NOCOPY VARCHAR2,
11220             x_msg_count      OUT NOCOPY NUMBER,
11221             x_msg_data       OUT NOCOPY VARCHAR2,
11222             p_clev_rec       IN  clev_rec_type,
11223             p_klev_rec       IN  klev_rec_type,
11224             p_itiv_rec       IN  itiv_rec_type,
11225             x_clev_rec       OUT NOCOPY clev_rec_type,
11226             x_klev_rec       OUT NOCOPY klev_rec_type,
11227             x_itiv_rec       OUT NOCOPY itiv_rec_type) IS
11228 
11229     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_INSTANCE_LINES';
11230     l_clev_rec               clev_rec_type;
11231     -- Variables for validation of line style
11232     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
11233     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
11234   BEGIN
11235     x_return_status := OKL_API.G_RET_STS_SUCCESS;
11236     -- Call start_activity to create savepoint, check compatibility
11237     -- and initialize message list
11238     x_return_status := OKL_API.START_ACTIVITY (
11239                                l_api_name
11240                                ,p_init_msg_list
11241                                ,'_PVT'
11242                                ,x_return_status);
11243     -- Check if activity started successfully
11244     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11245        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11246     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11247        RAISE OKL_API.G_EXCEPTION_ERROR;
11248     END IF;
11249     validate_sts_code(p_clev_rec       => p_clev_rec,
11250                       x_return_status  => x_return_status);
11251     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11252        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11253     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11254        RAISE OKL_API.G_EXCEPTION_ERROR;
11255     END IF;
11256     -- Validate Line Style id and get the line type code
11257     -- and line style type for further processing
11258     validate_lse_id(p_clev_rec      => p_clev_rec,
11259                     x_return_status => x_return_status,
11260                     x_lty_code      => l_lty_code,
11261                     x_lse_type      => l_lse_type);
11262     -- Check if activity started successfully
11263     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11264        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11265     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11266        RAISE OKL_API.G_EXCEPTION_ERROR;
11267     END IF;
11268     -- Validate the Dnz_Chr_id
11269     validate_dnz_chr_id(p_clev_rec      => p_clev_rec,
11270                         x_return_status => x_return_status);
11271     -- Check if activity started successfully
11272     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11273       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11274     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11275       RAISE OKL_API.G_EXCEPTION_ERROR;
11276     END IF;
11277     -- Now we are going to create the instance Line
11278     -- Here we have have Dnz_Chr_id ,lse_id and cle_id
11279     -- The Record Should have the cle_id
11280     -- if the given line style is instance Line
11281     l_clev_rec := p_clev_rec;
11282     IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
11283        l_clev_rec.chr_id IS NULL) AND
11284        (l_clev_rec.dnz_chr_id IS NOT NULL OR
11285        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
11286        (l_clev_rec.cle_id IS NOT NULL OR
11287        l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
11288        l_lty_code = G_INST_LINE_LTY_CODE AND
11289        l_lse_type = G_SLS_TYPE THEN
11290        IF (p_itiv_rec.instance_number_ib IS NOT NULL OR
11291           p_itiv_rec.instance_number_ib <> OKL_API.G_MISS_CHAR) THEN
11292           update_inst_line(p_api_version   => p_api_version,
11293                            p_init_msg_list => p_init_msg_list,
11294                            x_return_status => x_return_status,
11295                            x_msg_count     => x_msg_count,
11296                            x_msg_data      => x_msg_data,
11297                            p_lty_code      => l_lty_code,
11298                            p_clev_rec      => p_clev_rec,
11299                            p_klev_rec      => p_klev_rec,
11300                            x_clev_rec      => x_clev_rec,
11301                            x_klev_rec      => x_klev_rec);
11302           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11303              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11304           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11305              RAISE OKL_API.G_EXCEPTION_ERROR;
11306           END IF;
11307        ELSE
11308          OKL_API.set_message(p_app_name     => G_APP_NAME,
11309                              p_msg_name     => G_INVALID_CRITERIA,
11310                              p_token1       => G_COL_NAME_TOKEN,
11311                              p_token1_value => 'Instance Asset line');
11312          x_return_status := OKL_API.G_RET_STS_ERROR;
11313          RAISE OKL_API.G_EXCEPTION_ERROR;
11314        END IF;
11315     ELSE
11316          OKL_API.set_message(p_app_name     => G_APP_NAME,
11317                              p_msg_name     => G_INVALID_CRITERIA,
11318                              p_token1       => G_COL_NAME_TOKEN,
11319                              p_token1_value => 'Instance Asset line');
11320        x_return_status := OKL_API.G_RET_STS_ERROR;
11321        RAISE OKL_API.G_EXCEPTION_ERROR;
11322     END IF;
11323     OKL_API.END_ACTIVITY (x_msg_count,
11324                           x_msg_data );
11325   EXCEPTION
11326     WHEN OKL_API.G_EXCEPTION_ERROR THEN
11327     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11328                                l_api_name,
11329                                G_PKG_NAME,
11330                                'OKL_API.G_RET_STS_ERROR',
11331                                x_msg_count,
11332                                x_msg_data,
11333                                '_PVT');
11334     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11335     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11336                               l_api_name,
11337                               G_PKG_NAME,
11338                               'OKL_API.G_RET_STS_UNEXP_ERROR',
11339                               x_msg_count,
11340                               x_msg_data,
11341                               '_PVT');
11342     WHEN OTHERS THEN
11343     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11344                               l_api_name,
11345                               G_PKG_NAME,
11346                               'OTHERS',
11347                               x_msg_count,
11348                               x_msg_data,
11349                               '_PVT');
11350   END Update_instance_line;
11351 -----------------------------------------------------------------------------------------------
11352 ------------------ Main Process for Install Base Line Creation---------------------------------
11353 -----------------------------------------------------------------------------------------------
11354   PROCEDURE Create_instance_ib_line(
11355             p_api_version    IN  NUMBER,
11356             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
11357             x_return_status  OUT NOCOPY VARCHAR2,
11358             x_msg_count      OUT NOCOPY NUMBER,
11359             x_msg_data       OUT NOCOPY VARCHAR2,
11360             p_clev_rec       IN  clev_rec_type,
11361             p_klev_rec       IN  klev_rec_type,
11362             p_cimv_rec       IN  cimv_rec_type,
11363             p_itiv_rec       IN  itiv_rec_type,
11364             x_clev_rec       OUT NOCOPY clev_rec_type,
11365             x_klev_rec       OUT NOCOPY klev_rec_type,
11366             x_cimv_rec       OUT NOCOPY cimv_rec_type,
11367             x_trxv_rec       OUT NOCOPY trxv_rec_type,
11368             x_itiv_rec       OUT NOCOPY itiv_rec_type) IS
11369 
11370     l_api_name      CONSTANT VARCHAR2(30) := 'CREATE_INSTANCE_IB_LINES';
11371     l_clev_rec               clev_rec_type;
11372     l_cimv_rec               cimv_rec_type;
11373     ln_lse_id                OKC_LINE_STYLES_V.ID%TYPE := OKL_API.G_MISS_NUM;
11374     -- Variables for validation of line style
11375     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
11376     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
11377   BEGIN
11378     x_return_status := OKL_API.G_RET_STS_SUCCESS;
11379     -- Call start_activity to create savepoint, check compatibility
11380     -- and initialize message list
11381     x_return_status := OKL_API.START_ACTIVITY (
11382                                l_api_name
11383                                ,p_init_msg_list
11384                                ,'_PVT'
11385                                ,x_return_status);
11386     -- Check if activity started successfully
11387     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11388        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11389     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11390        RAISE OKL_API.G_EXCEPTION_ERROR;
11391     END IF;
11392 --  4414408 The validations in Validate_lse_id and Validate_dnz_chr_id are redundant
11393 /*
11394     -- Validate Line Style id and get the line type code
11395     -- and line style type for further processing
11396     validate_lse_id(p_clev_rec      => p_clev_rec,
11397                     x_return_status => x_return_status,
11398                     x_lty_code      => l_lty_code,
11399                     x_lse_type      => l_lse_type);
11400     -- Check if activity started successfully
11401     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11402        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11403     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11404        RAISE OKL_API.G_EXCEPTION_ERROR;
11405     END IF;
11406     -- Validate the Dnz_Chr_id
11407     validate_dnz_chr_id(p_clev_rec      => p_clev_rec,
11408                         x_return_status => x_return_status);
11409     -- Check if activity started successfully
11410     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11411       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11412     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11413       RAISE OKL_API.G_EXCEPTION_ERROR;
11414     END IF;
11415 */
11416     -- Now we are going to create the instance Line
11417     -- Here we have have Dnz_Chr_id ,lse_id and cle_id
11418     -- The Record Should have the cle_id
11419     -- if the given line style is instance Line
11420     l_clev_rec := p_clev_rec;
11421     IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
11422        l_clev_rec.chr_id IS NULL) AND
11423        (l_clev_rec.dnz_chr_id IS NOT NULL OR
11424        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
11425        (l_clev_rec.cle_id IS NOT NULL OR
11426        l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
11427 -- 4414408
11428 --       l_lty_code = G_IB_LINE_LTY_CODE AND
11429 --       l_lse_type = G_SLS_TYPE THEN
11430        l_clev_rec.lse_id = G_IB_LINE_LTY_ID THEN
11431        validate_instance_number_ib(x_return_status => x_return_status,
11432                                    p_inst_num_ib   => p_itiv_rec.instance_number_ib);
11433        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11434          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11435        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11436          RAISE OKL_API.G_EXCEPTION_ERROR;
11437        END IF;
11438        Create_installed_base_line(p_api_version   => p_api_version,
11439                                   p_init_msg_list => p_init_msg_list,
11440                                   x_return_status => x_return_status,
11441                                   x_msg_count     => x_msg_count,
11442                                   x_msg_data      => x_msg_data,
11443 -- 4414408                        p_lty_code      => l_lty_code,
11444                                   p_clev_rec      => l_clev_rec,
11445                                   p_klev_rec      => p_klev_rec,
11446                                   p_cimv_rec      => p_cimv_rec,
11447                                   p_itiv_rec      => p_itiv_rec,
11448                                   x_clev_rec      => x_clev_rec,
11449                                   x_klev_rec      => x_klev_rec,
11450                                   x_cimv_rec      => x_cimv_rec,
11451                                   x_trxv_rec      => x_trxv_rec,
11452                                   x_itiv_rec      => x_itiv_rec);
11453        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11454          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11455        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11456          RAISE OKL_API.G_EXCEPTION_ERROR;
11457        END IF;
11458     ELSE
11459       OKL_API.set_message(p_app_name     => G_APP_NAME,
11460                           p_msg_name     => G_INVALID_CRITERIA,
11461                           p_token1       => G_COL_NAME_TOKEN,
11462                           p_token1_value => 'Install Base Asset line');
11463       x_return_status := OKL_API.G_RET_STS_ERROR;
11464       RAISE OKL_API.G_EXCEPTION_ERROR;
11465     END IF;
11466     OKL_API.END_ACTIVITY (x_msg_count,
11467                           x_msg_data );
11468   EXCEPTION
11469     WHEN OKL_API.G_EXCEPTION_ERROR THEN
11470     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11471                                l_api_name,
11472                                G_PKG_NAME,
11473                                'OKL_API.G_RET_STS_ERROR',
11474                                x_msg_count,
11475                                x_msg_data,
11476                                '_PVT');
11477     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11478     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11479                               l_api_name,
11480                               G_PKG_NAME,
11481                               'OKL_API.G_RET_STS_UNEXP_ERROR',
11482                               x_msg_count,
11483                               x_msg_data,
11484                               '_PVT');
11485     WHEN OTHERS THEN
11486     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11487                               l_api_name,
11488                               G_PKG_NAME,
11489                               'OTHERS',
11490                               x_msg_count,
11491                               x_msg_data,
11492                               '_PVT');
11493   END Create_instance_ib_line;
11494 -----------------------------------------------------------------------------------------------
11495 ------------------ Main Process for Updating Instance IB Line ---------------------------------
11496 -----------------------------------------------------------------------------------------------
11497   PROCEDURE Update_instance_ib_line(
11498             p_api_version    IN  NUMBER,
11499             p_init_msg_list  IN  VARCHAR2 DEFAULT OKL_API.G_FALSE,
11500             x_return_status  OUT NOCOPY VARCHAR2,
11501             x_msg_count      OUT NOCOPY NUMBER,
11502             x_msg_data       OUT NOCOPY VARCHAR2,
11503             p_clev_rec       IN  clev_rec_type,
11504             p_klev_rec       IN  klev_rec_type,
11505             p_cimv_rec       IN  cimv_rec_type,
11506             p_itiv_rec       IN  itiv_rec_type,
11507             x_clev_rec       OUT NOCOPY clev_rec_type,
11508             x_klev_rec       OUT NOCOPY klev_rec_type,
11509             x_cimv_rec       OUT NOCOPY cimv_rec_type,
11510             x_itiv_rec       OUT NOCOPY itiv_rec_type) IS
11511 
11512     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_INSTANCE_IB_LINES';
11513     l_clev_rec               clev_rec_type;
11514     l_cimv_rec               cimv_rec_type;
11515     lv_dummy                 VARCHAR2(3);
11516     lv_ib_id1                OKX_INSTALL_ITEMS_V.ID1%TYPE;
11517     lv_ib_id2                OKX_INSTALL_ITEMS_V.ID2%TYPE;
11518     -- Variables for validation of line style
11519     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
11520     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
11521     l_talv_rec               talv_rec_type;
11522     l_trxv_rec               trxv_rec_type;
11523     l_itiv_rec               itiv_rec_type;
11524     ln_tas_id                OKL_TRX_ASSETS.ID%TYPE;
11525     ln_line_number           OKL_TXL_ASSETS_V.LINE_NUMBER%TYPE;
11526   BEGIN
11527     x_return_status := OKL_API.G_RET_STS_SUCCESS;
11528     -- Call start_activity to create savepoint, check compatibility
11529     -- and initialize message list
11530     x_return_status := OKL_API.START_ACTIVITY (
11531                                l_api_name
11532                                ,p_init_msg_list
11533                                ,'_PVT'
11534                                ,x_return_status);
11535     -- Check if activity started successfully
11536     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11537        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11538     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11539        RAISE OKL_API.G_EXCEPTION_ERROR;
11540     END IF;
11541     validate_sts_code(p_clev_rec       => p_clev_rec,
11542                       x_return_status  => x_return_status);
11543     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11544        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11545     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11546        RAISE OKL_API.G_EXCEPTION_ERROR;
11547     END IF;
11548     -- Validate Line Style id and get the line type code
11549     -- and line style type for further processing
11550     validate_lse_id(p_clev_rec      => p_clev_rec,
11551                     x_return_status => x_return_status,
11552                     x_lty_code      => l_lty_code,
11553                     x_lse_type      => l_lse_type);
11554     -- Check if activity started successfully
11555     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11556        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11557     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11558        RAISE OKL_API.G_EXCEPTION_ERROR;
11559     END IF;
11560     -- Validate the Dnz_Chr_id
11561     validate_dnz_chr_id(p_clev_rec      => p_clev_rec,
11562                         x_return_status => x_return_status);
11563     -- Check if activity started successfully
11564     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11565       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11566     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11567       RAISE OKL_API.G_EXCEPTION_ERROR;
11568     END IF;
11569     -- Now we are going to create the installed_base_Line
11570     -- Here we have have Dnz_Chr_id ,lse_id and cle_id
11571     -- The Record Should have the cle_id
11572     -- if the given line style is instance base Line
11573     l_clev_rec := p_clev_rec;
11574     IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
11575        l_clev_rec.chr_id IS NULL) AND
11576        (l_clev_rec.dnz_chr_id IS NOT NULL OR
11577        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
11578        (l_clev_rec.cle_id IS NOT NULL OR
11579        l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
11580        l_lty_code = G_IB_LINE_LTY_CODE AND
11581        l_lse_type = G_SLS_TYPE THEN
11582        IF (p_itiv_rec.instance_number_ib IS NOT NULL OR
11583           p_itiv_rec.instance_number_ib <> OKL_API.G_MISS_CHAR) THEN
11584           l_cimv_rec      := p_cimv_rec;
11585           update_installed_base_line(p_api_version   => p_api_version,
11586                                      p_init_msg_list => p_init_msg_list,
11587                                      x_return_status => x_return_status,
11588                                      x_msg_count     => x_msg_count,
11589                                      x_msg_data      => x_msg_data,
11590                                      p_lty_code      => l_lty_code,
11591                                      p_clev_rec      => p_clev_rec,
11592                                      p_klev_rec      => p_klev_rec,
11593                                      p_cimv_rec      => p_cimv_rec,
11594                                      p_itiv_rec      => p_itiv_rec,
11595                                      x_clev_rec      => x_clev_rec,
11596                                      x_klev_rec      => x_klev_rec,
11597                                      x_cimv_rec      => x_cimv_rec,
11598                                      x_itiv_rec      => x_itiv_rec);
11599           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11600              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11601           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11602              RAISE OKL_API.G_EXCEPTION_ERROR;
11603          END IF;
11604        ELSE
11605          OKL_API.set_message(p_app_name     => G_APP_NAME,
11606                              p_msg_name     => G_INVALID_CRITERIA,
11607                              p_token1       => G_COL_NAME_TOKEN,
11608                              p_token1_value => 'Install Base Asset line');
11609          x_return_status := OKL_API.G_RET_STS_ERROR;
11610          RAISE OKL_API.G_EXCEPTION_ERROR;
11611        END IF;
11612     ELSE
11613          OKL_API.set_message(p_app_name     => G_APP_NAME,
11614                              p_msg_name     => G_INVALID_CRITERIA,
11615                              p_token1       => G_COL_NAME_TOKEN,
11616                              p_token1_value => 'Instance Asset line');
11617        x_return_status := OKL_API.G_RET_STS_ERROR;
11618        RAISE OKL_API.G_EXCEPTION_ERROR;
11619     END IF;
11620     OKL_API.END_ACTIVITY (x_msg_count,
11621                           x_msg_data );
11622   EXCEPTION
11623     WHEN OKL_API.G_EXCEPTION_ERROR THEN
11624     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11625                                l_api_name,
11626                                G_PKG_NAME,
11627                                'OKL_API.G_RET_STS_ERROR',
11628                                x_msg_count,
11629                                x_msg_data,
11630                                '_PVT');
11631     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11632     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11633                               l_api_name,
11634                               G_PKG_NAME,
11635                               'OKL_API.G_RET_STS_UNEXP_ERROR',
11636                               x_msg_count,
11637                               x_msg_data,
11638                               '_PVT');
11639     WHEN OTHERS THEN
11640     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11641                               l_api_name,
11642                               G_PKG_NAME,
11643                               'OTHERS',
11644                               x_msg_count,
11645                               x_msg_data,
11646                               '_PVT');
11647   END Update_instance_ib_line;
11648 -----------------------------------------------------------------------------------------------
11649 ------------------------ Main Process for Create Party Roles-----------------------------------
11650 -----------------------------------------------------------------------------------------------
11651   PROCEDURE Create_party_roles_rec(
11652             p_api_version    IN  NUMBER,
11653             p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
11654             x_return_status  OUT NOCOPY VARCHAR2,
11655             x_msg_count      OUT NOCOPY NUMBER,
11656             x_msg_data       OUT NOCOPY VARCHAR2,
11657             p_cplv_rec       IN  cplv_rec_type,
11658             x_cplv_rec       OUT NOCOPY cplv_rec_type) IS
11659 
11660     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_PTY_RLE_LINES';
11661     l_clev_rec               clev_rec_type;
11662     l_cplv_rec               cplv_rec_type;
11663     l_klev_rec               klev_rec_type;
11664     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
11665     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
11666 
11667     --Bug# 4558486
11668     l_kplv_rec               OKL_K_PARTY_ROLES_PVT.kplv_rec_type;
11669     x_kplv_rec               OKL_K_PARTY_ROLES_PVT.kplv_rec_type;
11670   BEGIN
11671     x_return_status := OKL_API.G_RET_STS_SUCCESS;
11672     -- Call start_activity to create savepoint, check compatibility
11673     -- and initialize message list
11674     x_return_status := OKL_API.START_ACTIVITY (
11675                                l_api_name
11676                                ,p_init_msg_list
11677                                ,'_PVT'
11678                                ,x_return_status);
11679     -- Check if activity started successfully
11680     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11681        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11682     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11683        RAISE OKL_API.G_EXCEPTION_ERROR;
11684     END IF;
11685     x_return_status := get_rec_clev(p_id       => p_cplv_rec.cle_id,
11686                                     x_clev_rec => l_clev_rec);
11687     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11688        OKL_API.set_message(p_app_name     => G_APP_NAME,
11689                            p_msg_name     => G_FETCHING_INFO,
11690                            p_token1       => G_REC_NAME_TOKEN,
11691                            p_token1_value => 'OKC_K_LINES_V Record');
11692        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11693     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11694        OKL_API.set_message(p_app_name     => G_APP_NAME,
11695                            p_msg_name     => G_FETCHING_INFO,
11696                            p_token1       => G_REC_NAME_TOKEN,
11697                            p_token1_value => 'OKC_K_LINES_V Record');
11698        RAISE OKL_API.G_EXCEPTION_ERROR;
11699     END IF;
11700     x_return_status := get_rec_klev(p_id       => p_cplv_rec.cle_id,
11701                                     x_klev_rec => l_klev_rec);
11702     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11703        OKL_API.set_message(p_app_name     => G_APP_NAME,
11704                            p_msg_name     => G_FETCHING_INFO,
11705                            p_token1       => G_REC_NAME_TOKEN,
11706                            p_token1_value => 'OKL_K_LINES_V Record');
11707        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11708     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11709        OKL_API.set_message(p_app_name     => G_APP_NAME,
11710                            p_msg_name     => G_FETCHING_INFO,
11711                            p_token1       => G_REC_NAME_TOKEN,
11712                            p_token1_value => 'OKL_K_LINES_V Record');
11713        RAISE OKL_API.G_EXCEPTION_ERROR;
11714     END IF;
11715     IF l_clev_rec.id <> l_klev_rec.id THEN
11716        OKL_API.set_message(p_app_name     => G_APP_NAME,
11717                            p_msg_name     => G_LINE_RECORD);
11718        x_return_status := OKL_API.G_RET_STS_ERROR;
11719        RAISE OKL_API.G_EXCEPTION_ERROR;
11720     END IF;
11721     -- Validate Line Style id and get the line type code
11722     -- and line style type for further processing
11723     validate_lse_id(p_clev_rec      => l_clev_rec,
11724                     x_return_status => x_return_status,
11725                     x_lty_code      => l_lty_code,
11726                     x_lse_type      => l_lse_type);
11727     -- Check if activity started successfully
11728     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11729        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11730     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11731        RAISE OKL_API.G_EXCEPTION_ERROR;
11732     END IF;
11733     -- Validate the Dnz_Chr_id
11734     validate_dnz_chr_id(p_clev_rec      => l_clev_rec,
11735                         x_return_status => x_return_status);
11736     -- Check if activity started successfully
11737     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11738       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11739     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11740       RAISE OKL_API.G_EXCEPTION_ERROR;
11741     END IF;
11742     -- We can create a party item info only if the line is Model Line
11743     IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
11744        l_clev_rec.chr_id IS NULL) AND
11745        (l_clev_rec.dnz_chr_id IS NOT NULL OR
11746        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
11747        (l_clev_rec.cle_id IS NOT NULL OR
11748        l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
11749        (l_lty_code = G_MODEL_LINE_LTY_CODE OR
11750         l_lty_code = G_ADDON_LINE_LTY_CODE) AND
11751        l_lse_type = G_SLS_TYPE THEN
11752        x_return_status := get_rec_cplv(p_cplv_id  => p_cplv_rec.id,
11753                                        x_cplv_rec => l_cplv_rec);
11754        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11755          OKL_API.set_message(p_app_name     => G_APP_NAME,
11756                              p_msg_name     => G_FETCHING_INFO,
11757                              p_token1       => G_REC_NAME_TOKEN,
11758                              p_token1_value => 'OKC_K_PARTY_ROLES_V Record');
11759           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11760        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11761          OKL_API.set_message(p_app_name     => G_APP_NAME,
11762                              p_msg_name     => G_FETCHING_INFO,
11763                              p_token1       => G_REC_NAME_TOKEN,
11764                              p_token1_value => 'OKC_K_PARTY_ROLES_V Record');
11765           RAISE OKL_API.G_EXCEPTION_ERROR;
11766        END IF;
11767 
11768        IF (p_cplv_rec.cle_id IS NOT NULL OR
11769           p_cplv_rec.cle_id <> OKL_API.G_MISS_NUM) THEN
11770           l_cplv_rec.cle_id := p_cplv_rec.cle_id;
11771        ELSE
11772           OKL_API.set_message(p_app_name     => G_APP_NAME,
11773                               p_msg_name     => G_REQUIRED_VALUE,
11774                               p_token1       => G_COL_NAME_TOKEN,
11775                               p_token1_value => 'cle_id in creation party roles');
11776           RAISE OKL_API.G_EXCEPTION_ERROR;
11777        END IF;
11778        l_cplv_rec.chr_id := null;
11779        -- Creation of Party Item Record for the above record information
11780        --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
11781        --              to create records in tables
11782        --              okc_k_party_roles_b and okl_k_party_roles
11783        /*
11784        OKL_OKC_MIGRATION_PVT.create_k_party_role(p_api_version   => p_api_version,
11785                                                   p_init_msg_list => p_init_msg_list,
11786                                                   x_return_status => x_return_status,
11787                                                   x_msg_count     => x_msg_count,
11788                                                   x_msg_data      => x_msg_data,
11789                                                   p_cplv_rec      => l_cplv_rec,
11790                                                   x_cplv_rec      => x_cplv_rec);
11791        */
11792 
11793        OKL_K_PARTY_ROLES_PVT.create_k_party_role
11794          (p_api_version   => p_api_version,
11795           p_init_msg_list => p_init_msg_list,
11796           x_return_status => x_return_status,
11797           x_msg_count     => x_msg_count,
11798           x_msg_data      => x_msg_data,
11799           p_cplv_rec      => l_cplv_rec,
11800           x_cplv_rec      => x_cplv_rec,
11801           p_kplv_rec      => l_kplv_rec,
11802           x_kplv_rec      => x_kplv_rec);
11803 
11804        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11805           OKL_API.set_message(p_app_name     => G_APP_NAME,
11806                               p_msg_name     => G_CREATION_PARTY_ROLE);
11807           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11808        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11809           OKL_API.set_message(p_app_name     => G_APP_NAME,
11810                               p_msg_name     => G_CREATION_PARTY_ROLE);
11811          RAISE OKL_API.G_EXCEPTION_ERROR;
11812        END IF;
11813     ELSE
11814       OKL_API.set_message(p_app_name     => G_APP_NAME,
11815                           p_msg_name     => G_INVALID_CRITERIA,
11816                           p_token1       => 'LINE_STYLE',
11817                           p_token1_value => 'Model/Addon Line for Party Roles');
11818        x_return_status := OKL_API.G_RET_STS_ERROR;
11819        RAISE OKL_API.G_EXCEPTION_ERROR;
11820     END IF;
11821     OKL_API.END_ACTIVITY (x_msg_count,
11822                           x_msg_data );
11823   EXCEPTION
11824     WHEN OKL_API.G_EXCEPTION_ERROR THEN
11825     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
11826                                l_api_name,
11827                                G_PKG_NAME,
11828                                'OKL_API.G_RET_STS_ERROR',
11829                                x_msg_count,
11830                                x_msg_data,
11831                                '_PVT');
11832     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
11833     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11834                               l_api_name,
11835                               G_PKG_NAME,
11836                               'OKL_API.G_RET_STS_UNEXP_ERROR',
11837                               x_msg_count,
11838                               x_msg_data,
11839                               '_PVT');
11840     WHEN OTHERS THEN
11841     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
11842                               l_api_name,
11843                               G_PKG_NAME,
11844                               'OTHERS',
11845                               x_msg_count,
11846                               x_msg_data,
11847                               '_PVT');
11848   END Create_party_roles_rec;
11849 -----------------------------------------------------------------------------------------------
11850 ------------------------ Main Process for Update Party Roles-----------------------------------
11851 -----------------------------------------------------------------------------------------------
11852   PROCEDURE Update_party_roles_rec(
11853             p_api_version    IN  NUMBER,
11854             p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
11855             x_return_status  OUT NOCOPY VARCHAR2,
11856             x_msg_count      OUT NOCOPY NUMBER,
11857             x_msg_data       OUT NOCOPY VARCHAR2,
11858             p_cplv_rec       IN  cplv_rec_type,
11859             x_cplv_rec       OUT NOCOPY cplv_rec_type) IS
11860 
11861     l_api_name      CONSTANT VARCHAR2(30) := 'UPDATE_PTY_RLE_LINES';
11862     l_clev_rec               clev_rec_type;
11863     l_cplv_rec               cplv_rec_type;
11864     l_klev_rec               klev_rec_type;
11865     l_lty_code               OKC_LINE_STYLES_V.LTY_CODE%TYPE;
11866     l_lse_type               OKC_LINE_STYLES_V.LSE_TYPE%TYPE;
11867 
11868     --Bug# 4558486
11869     l_kplv_rec               OKL_K_PARTY_ROLES_PVT.kplv_rec_type;
11870     x_kplv_rec               OKL_K_PARTY_ROLES_PVT.kplv_rec_type;
11871   BEGIN
11872     x_return_status := OKL_API.G_RET_STS_SUCCESS;
11873     -- Call start_activity to create savepoint, check compatibility
11874     -- and initialize message list
11875     x_return_status := OKL_API.START_ACTIVITY (
11876                                l_api_name
11877                                ,p_init_msg_list
11878                                ,'_PVT'
11879                                ,x_return_status);
11880     -- Check if activity started successfully
11881     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11882        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11883     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11884        RAISE OKL_API.G_EXCEPTION_ERROR;
11885     END IF;
11886     x_return_status := get_rec_cplv(p_cplv_id  => p_cplv_rec.id,
11887                                     x_cplv_rec => l_cplv_rec);
11888     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11889        OKL_API.set_message(p_app_name     => G_APP_NAME,
11890                            p_msg_name     => G_FETCHING_INFO,
11891                            p_token1       => G_REC_NAME_TOKEN,
11892                            p_token1_value => 'OKC_K_PARTY_ROLES_V Record');
11893        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11894     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11895        OKL_API.set_message(p_app_name     => G_APP_NAME,
11896                            p_msg_name     => G_FETCHING_INFO,
11897                            p_token1       => G_REC_NAME_TOKEN,
11898                            p_token1_value => 'OKC_K_PARTY_ROLES_V Record');
11899        RAISE OKL_API.G_EXCEPTION_ERROR;
11900     END IF;
11901     x_return_status := get_rec_clev(p_id       => l_cplv_rec.cle_id,
11902                                     x_clev_rec => l_clev_rec);
11903     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11904        OKL_API.set_message(p_app_name     => G_APP_NAME,
11905                            p_msg_name     => G_FETCHING_INFO,
11906                            p_token1       => G_REC_NAME_TOKEN,
11907                            p_token1_value => 'OKC_K_ITEMS_V Record');
11908        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11909     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11910        OKL_API.set_message(p_app_name     => G_APP_NAME,
11911                            p_msg_name     => G_FETCHING_INFO,
11912                            p_token1       => G_REC_NAME_TOKEN,
11913                            p_token1_value => 'OKC_K_ITEMS_V Record');
11914        RAISE OKL_API.G_EXCEPTION_ERROR;
11915     END IF;
11916     x_return_status := get_rec_klev(p_id       => l_cplv_rec.cle_id,
11917                                     x_klev_rec => l_klev_rec);
11918     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11919        OKL_API.set_message(p_app_name     => G_APP_NAME,
11920                            p_msg_name     => G_FETCHING_INFO,
11921                            p_token1       => G_REC_NAME_TOKEN,
11922                            p_token1_value => 'OKL_K_ITEMS_V Record');
11923        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11924     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11925        OKL_API.set_message(p_app_name     => G_APP_NAME,
11926                            p_msg_name     => G_FETCHING_INFO,
11927                            p_token1       => G_REC_NAME_TOKEN,
11928                            p_token1_value => 'OKL_K_ITEMS_V Record');
11929        RAISE OKL_API.G_EXCEPTION_ERROR;
11930     END IF;
11931     IF l_clev_rec.id <> l_klev_rec.id THEN
11932        OKL_API.set_message(p_app_name     => G_APP_NAME,
11933                            p_msg_name     => G_LINE_RECORD);
11934        x_return_status := OKL_API.G_RET_STS_ERROR;
11935        RAISE OKL_API.G_EXCEPTION_ERROR;
11936     END IF;
11937     -- Validate Line Style id and get the line type code
11938     -- and line style type for further processing
11939     validate_lse_id(p_clev_rec      => l_clev_rec,
11940                     x_return_status => x_return_status,
11941                     x_lty_code      => l_lty_code,
11942                     x_lse_type      => l_lse_type);
11943     -- Check if activity started successfully
11944     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11945        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11946     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11947        RAISE OKL_API.G_EXCEPTION_ERROR;
11948     END IF;
11949     -- Validate the Dnz_Chr_id
11950     validate_dnz_chr_id(p_clev_rec      => l_clev_rec,
11951                         x_return_status => x_return_status);
11952     -- Check if activity started successfully
11953     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11954       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11955     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
11956       RAISE OKL_API.G_EXCEPTION_ERROR;
11957     END IF;
11958     -- We can create a party item info only if the line is Model Line
11959     IF (l_clev_rec.chr_id = OKL_API.G_MISS_NUM OR
11960        l_clev_rec.chr_id IS NULL) AND
11961        (l_clev_rec.dnz_chr_id IS NOT NULL OR
11962        l_clev_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) AND
11963        (l_clev_rec.cle_id IS NOT NULL OR
11964        l_clev_rec.cle_id <> OKL_API.G_MISS_NUM) AND
11965        (l_lty_code = G_MODEL_LINE_LTY_CODE OR
11966         l_lty_code = G_ADDON_LINE_LTY_CODE) AND
11967        l_lse_type = G_SLS_TYPE THEN
11968        l_cplv_rec.object1_id1 := p_cplv_rec.object1_id1;
11969        l_cplv_rec.object1_id2 := p_cplv_rec.object1_id2;
11970        -- Creation of Party Item Record for the above record information
11971        --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
11972        --              to update records in tables
11973        --              okc_k_party_roles_b and okl_k_party_roles
11974        /*
11975        OKL_OKC_MIGRATION_PVT.update_k_party_role(p_api_version   => p_api_version,
11976                                                   p_init_msg_list => p_init_msg_list,
11977                                                   x_return_status => x_return_status,
11978                                                   x_msg_count     => x_msg_count,
11979                                                   x_msg_data      => x_msg_data,
11980                                                   p_cplv_rec      => l_cplv_rec,
11981                                                   x_cplv_rec      => x_cplv_rec);
11982        */
11983        l_kplv_rec.id := l_cplv_rec.id;
11984        OKL_K_PARTY_ROLES_PVT.update_k_party_role
11985          (p_api_version   => p_api_version,
11986           p_init_msg_list => p_init_msg_list,
11987           x_return_status => x_return_status,
11988           x_msg_count     => x_msg_count,
11989           x_msg_data      => x_msg_data,
11990           p_cplv_rec      => l_cplv_rec,
11991           x_cplv_rec      => x_cplv_rec,
11992           p_kplv_rec      => l_kplv_rec,
11993           x_kplv_rec      => x_kplv_rec);
11994 
11995        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
11996           OKL_API.set_message(p_app_name     => G_APP_NAME,
11997                               p_msg_name     => G_UPDATING_PARTY_ROLE);
11998           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
11999        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12000           OKL_API.set_message(p_app_name     => G_APP_NAME,
12001                               p_msg_name     => G_UPDATING_PARTY_ROLE);
12002          RAISE OKL_API.G_EXCEPTION_ERROR;
12003        END IF;
12004     ELSE
12005       OKL_API.set_message(p_app_name     => G_APP_NAME,
12006                           p_msg_name     => G_INVALID_CRITERIA,
12007                           p_token1       => G_COL_NAME_TOKEN,
12008                           p_token1_value => 'Model/Addon Line for Party Roles');
12009        x_return_status := OKL_API.G_RET_STS_ERROR;
12010        RAISE OKL_API.G_EXCEPTION_ERROR;
12011     END IF;
12012     -- We need to change the status of the header whenever there is updating happening
12013     -- after the contract status is approved
12014     IF (x_cplv_rec.dnz_chr_id is NOT NULL) AND
12015        (x_cplv_rec.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
12016       --cascade edit status on to lines
12017       okl_contract_status_pub.cascade_lease_status_edit
12018                (p_api_version     => p_api_version,
12019                 p_init_msg_list   => p_init_msg_list,
12020                 x_return_status   => x_return_status,
12021                 x_msg_count       => x_msg_count,
12022                 x_msg_data        => x_msg_data,
12023                 p_chr_id          => x_cplv_rec.dnz_chr_id);
12024       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12025         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12026       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12027         RAISE OKL_API.G_EXCEPTION_ERROR;
12028       END IF;
12029     END IF;
12030     OKL_API.END_ACTIVITY (x_msg_count,
12031                           x_msg_data );
12032   EXCEPTION
12033     WHEN OKL_API.G_EXCEPTION_ERROR THEN
12034     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
12035                                l_api_name,
12036                                G_PKG_NAME,
12037                                'OKL_API.G_RET_STS_ERROR',
12038                                x_msg_count,
12039                                x_msg_data,
12040                                '_PVT');
12041     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
12042     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
12043                               l_api_name,
12044                               G_PKG_NAME,
12045                               'OKL_API.G_RET_STS_UNEXP_ERROR',
12046                               x_msg_count,
12047                               x_msg_data,
12048                               '_PVT');
12049     WHEN OTHERS THEN
12050     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
12051                               l_api_name,
12052                               G_PKG_NAME,
12053                               'OTHERS',
12054                               x_msg_count,
12055                               x_msg_data,
12056                               '_PVT');
12057   END update_party_roles_rec;
12058 
12059 --Bug# 3631094
12060 --------------------------------------------------------------------------------
12061 --Start of comments
12062 --Procedure Name : check_off_lease_trx (local)
12063 --Description    : procedure checks if off lease transaction
12064 --                 is under-way for this asset
12065 --History        : 21-May-2004  avsingh Created
12066 --Notes          : local procedure (this could change and get more complex
12067 --                 in future that is why a separate local proc)
12068 --                 IN Parameters-
12069 --                               p_asset_id - asset id
12070 --                 OUT Parameters -
12071 --                               x_pending_trx_yn  - 'Y' - pending off_lease trx
12072 --                                                   'N' - no pending off_lease trx
12073 --End of comments
12074 --------------------------------------------------------------------------------
12075 
12076   Procedure check_off_lease_trx
12077                             (p_api_version   IN  NUMBER,
12078                              p_init_msg_list IN  VARCHAR2,
12079                              x_return_status OUT NOCOPY VARCHAR2,
12080                              x_msg_count     OUT NOCOPY NUMBER,
12081                              x_msg_data      OUT NOCOPY VARCHAR2,
12082                              p_asset_id      IN  NUMBER,
12083                              x_pending_trx_yn OUT NOCOPY VARCHAR2) is
12084 
12085   l_return_status        VARCHAR2(1)  DEFAULT Okl_Api.G_RET_STS_SUCCESS;
12086   l_api_name             CONSTANT VARCHAR2(30) := 'CREATE_OFF_LEASE_TRX';
12087   l_api_version          CONSTANT NUMBER := 1.0;
12088 
12089   --cursor to find whether unprocessed off lease transaction exists
12090   cursor  l_off_lease_csr (p_asset_id in number) is
12091   select  'Y'
12092   from    fa_additions fa
12093   where   fa.asset_id   = p_asset_id
12094   and     exists
12095           (select '1'
12096            from    okl_trx_assets   h,
12097                    okl_txl_assets_b l
12098            where   h.id = l.tas_id
12099            and     h.TAS_TYPE in ('AMT','AUD','AUS')
12100            and     l.asset_number = fa.asset_number
12101            and     h.tsu_code     = 'ENTERED');
12102 
12103 
12104   l_off_lease_trx_exists   varchar2(1);
12105 
12106   Begin
12107       x_return_status := OKL_API.G_RET_STS_SUCCESS;
12108       -- Call start_activity to create savepoint, check compatibility
12109       -- and initialize message list
12110       x_return_status := Okl_Api.START_ACTIVITY(
12111                         p_api_name      => l_api_name,
12112                         p_pkg_name      => g_pkg_name,
12113                         p_init_msg_list => p_init_msg_list,
12114                         l_api_version   => l_api_version,
12115                         p_api_version   => p_api_version,
12116                         p_api_type      => '_PVT',
12117                         x_return_status => x_return_status);
12118       -- Check if activity started successfully
12119       IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
12120          RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
12121       ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
12122          RAISE Okc_Api.G_EXCEPTION_ERROR;
12123       END IF;
12124 
12125       --check with cursor
12126       l_off_lease_trx_exists := 'N';
12127       open l_off_lease_csr (p_asset_id => p_asset_id);
12128       fetch l_off_lease_csr into l_off_lease_trx_exists;
12129       if l_off_lease_csr%NOTFOUND then
12130           null;
12131       end if;
12132       close l_off_lease_csr;
12133 
12134       x_pending_trx_yn   := l_off_lease_trx_exists;
12135  EXCEPTION
12136     WHEN OKL_API.G_EXCEPTION_ERROR THEN
12137     if l_off_lease_csr%ISOPEN then
12138         close l_off_lease_csr;
12139     end if;
12140     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
12141                                l_api_name,
12142                                G_PKG_NAME,
12143                                'OKL_API.G_RET_STS_ERROR',
12144                                x_msg_count,
12145                                x_msg_data,
12146                                '_PVT');
12147     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
12148     if l_off_lease_csr%ISOPEN then
12149         close l_off_lease_csr;
12150     end if;
12151     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
12152                               l_api_name,
12153                               G_PKG_NAME,
12154                               'OKL_API.G_RET_STS_UNEXP_ERROR',
12155                               x_msg_count,
12156                               x_msg_data,
12157                               '_PVT');
12158     WHEN OTHERS THEN
12159     if l_off_lease_csr%ISOPEN then
12160         close l_off_lease_csr;
12161     end if;
12162     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
12163                               l_api_name,
12164                               G_PKG_NAME,
12165                               'OTHERS',
12166                               x_msg_count,
12167                               x_msg_data,
12168                               '_PVT');
12169   END check_off_lease_trx;
12170 
12171 --------------------------------------------------------------------------------
12172 --Start of comments
12173 --Procedure Name : Get_Pdt_Params (local)
12174 --Description    : Multi-GAAP - Calls product api to fetch
12175 --                 product specific parameters
12176 --History        : 21-May-2004  ashish.singh Created
12177 --Notes          : local procedure
12178 --                 IN Parameters-
12179 --                               p_chr_id   - contract id
12180 --                 OUT Parameters -
12181 --                               x_rep_pdt_id    - Reporting product id
12182 --                               x_tax_owner     - tax owner
12183 --                               x_deal_type     - local product deal type
12184 --                               x_rep_deal_type - Reporting product deal type
12185 --End of comments
12186 --------------------------------------------------------------------------------
12187   Procedure Get_Pdt_Params (p_api_version   IN  NUMBER,
12188                             p_init_msg_list IN  VARCHAR2,
12189                             x_return_status OUT NOCOPY VARCHAR2,
12190                             x_msg_count     OUT NOCOPY NUMBER,
12191                             x_msg_data      OUT NOCOPY VARCHAR2,
12192                             p_chr_id        IN  NUMBER,
12193                             x_rep_pdt_id    OUT NOCOPY NUMBER,
12194                             x_tax_owner     OUT NOCOPY VARCHAR2,
12195                             x_deal_type     OUT NOCOPY VARCHAR2,
12196                             x_rep_deal_type OUT NOCOPY VARCHAR2) is
12197 
12198   l_pdtv_rec                okl_setupproducts_pub.pdtv_rec_type;
12199   l_pdt_parameter_rec       okl_setupproducts_pub.pdt_parameters_rec_type;
12200   l_rep_pdt_parameter_rec   okl_setupproducts_pub.pdt_parameters_rec_type;
12201   l_pdt_date                DATE;
12202   l_no_data_found           BOOLEAN;
12203   l_error_condition         Exception;
12204   l_return_status           VARCHAR2(1) default OKL_API.G_RET_STS_SUCCESS;
12205 
12206   --cursor to get pdt_id and k_start date
12207   cursor l_chr_csr (p_chr_id in number) is
12208   SELECT chrb.start_date,
12209          khr.pdt_id
12210   FROM   OKC_K_HEADERS_B chrb,
12211          OKL_K_HEADERS   khr
12212   WHERE  khr.id          = chrb.id
12213   AND    chrb.id         = p_chr_id;
12214 
12215   l_chr_rec l_chr_csr%ROWTYPE;
12216 
12217   Begin
12218 
12219      --get pdt id and date from k header
12220      open l_chr_csr(p_chr_id => p_chr_id);
12221      Fetch l_chr_csr into l_chr_rec;
12222      If l_chr_csr%NOTFOUND then
12223          Null;
12224      End If;
12225      close l_chr_csr;
12226 
12227      l_pdtv_rec.id    := l_chr_rec.pdt_id;
12228      l_pdt_date       := l_chr_rec.start_date;
12229      l_no_data_found  := TRUE;
12230      x_return_status  := OKL_API.G_RET_STS_SUCCESS;
12231 
12232      okl_setupproducts_pub.Getpdt_parameters(p_api_version       => p_api_version,
12233                                              p_init_msg_list     => p_init_msg_list,
12234                       	                     x_return_status     => l_return_status,
12235             		                     x_no_data_found     => l_no_data_found,
12236                                              x_msg_count         => x_msg_count,
12237                               		     x_msg_data          => x_msg_data,
12238 					     p_pdtv_rec          => l_pdtv_rec,
12239 					     p_product_date      => l_pdt_date,
12240 					     p_pdt_parameter_rec => l_pdt_parameter_rec);
12241 
12242      IF l_return_status <> OKL_API.G_RET_STS_SUCCESS Then
12243          x_rep_pdt_id    := Null;
12244          x_tax_owner     := Null;
12245      Else
12246          x_rep_pdt_id    := l_pdt_parameter_rec.reporting_pdt_id;
12247          x_tax_owner     := l_pdt_parameter_rec.tax_owner;
12248          x_deal_type     := l_pdt_parameter_rec.deal_type;
12249          --get reporting product param values
12250          l_no_data_found := TRUE;
12251          l_pdtv_rec.id := x_rep_pdt_id;
12252          okl_setupproducts_pub.Getpdt_parameters(p_api_version      => p_api_version,
12253                                                  p_init_msg_list     => p_init_msg_list,
12254                                                  x_return_status     => l_return_status,
12255                                                  x_no_data_found     => l_no_data_found,
12256                               		         x_msg_count         => x_msg_count,
12257                                		         x_msg_data          => x_msg_data,
12258 			                         p_pdtv_rec          => l_pdtv_rec,
12259     			                         p_product_date      => l_pdt_date,
12260     			                         p_pdt_parameter_rec => l_rep_pdt_parameter_rec);
12261 
12262           IF l_return_status <> OKL_API.G_RET_STS_SUCCESS Then
12263              x_rep_deal_type := NULL;
12264           Else
12265              x_rep_deal_type :=  l_rep_pdt_parameter_rec.deal_type;
12266           End If;
12267      End If;
12268 
12269      Exception
12270      When l_error_condition Then
12271          If l_chr_csr%ISOPEN then
12272              close l_chr_csr;
12273          End If;
12274      When Others Then
12275          If l_chr_csr%ISOPEN then
12276              close l_chr_csr;
12277          End If;
12278          x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
12279   End Get_Pdt_Params;
12280 --Bug# 3631094
12281 
12282   --Bug# 3950089: start
12283   ------------------------------------------------------------------------------
12284   --Start of comments
12285   --
12286   --Procedure Name        : get_nbv
12287   --Purpose               : Get Net Book Value- used internally
12288   --Modification History  :
12289   --27-Jan-2005    rpillay   Created
12290   ------------------------------------------------------------------------------
12291   PROCEDURE get_nbv(p_api_version     IN  NUMBER,
12292                     p_init_msg_list   IN  VARCHAR2,
12293                     x_return_status   OUT NOCOPY VARCHAR2,
12294                     x_msg_count       OUT NOCOPY NUMBER,
12295                     x_msg_data        OUT NOCOPY VARCHAR2,
12296                     p_asset_id        IN  NUMBER,
12297                     p_book_type_code  IN  VARCHAR2,
12298                     p_chr_id          IN  NUMBER,
12299                     p_release_date    IN  DATE,
12300                     x_nbv             OUT NOCOPY Number) IS
12301 
12302     l_return_status   VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
12303     l_api_name        CONSTANT VARCHAR2(30) := 'GET_NBV';
12304     l_api_version	    CONSTANT NUMBER	:= 1.0;
12305 
12306     l_asset_hdr_rec            FA_API_TYPES.asset_hdr_rec_type;
12307     l_asset_fin_rec            FA_API_TYPES.asset_fin_rec_type;
12308     l_asset_deprn_rec          FA_API_TYPES.asset_deprn_rec_type;
12309 
12310     l_nbv                      NUMBER;
12311     l_converted_amount         NUMBER;
12312     l_contract_currency        OKL_K_HEADERS_FULL_V.currency_code%TYPE;
12313     l_currency_conversion_type OKL_K_HEADERS_FULL_V.currency_conversion_type%TYPE;
12314     l_currency_conversion_rate OKL_K_HEADERS_FULL_V.currency_conversion_rate%TYPE;
12315     l_currency_conversion_date OKL_K_HEADERS_FULL_V.currency_conversion_date%TYPE;
12316 
12317   BEGIN
12318      --call start activity to set savepoint
12319      l_return_status := OKL_API.START_ACTIVITY( substr(l_api_name,1,26),
12320                                                 p_init_msg_list,
12321                                                 '_PVT',
12322                                                 x_return_status);
12323      IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12324        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12325      ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
12326        RAISE OKL_API.G_EXCEPTION_ERROR;
12327      END IF;
12328 
12329      l_asset_hdr_rec.asset_id          := p_asset_id;
12330      l_asset_hdr_rec.book_type_code    := p_book_type_code;
12331 
12332      if NOT fa_cache_pkg.fazcbc(x_book => l_asset_hdr_rec.book_type_code) then
12333        OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
12334                            p_msg_name     => 'OKL_LLA_FA_CACHE_ERROR'
12335                           );
12336        Raise OKL_API.G_EXCEPTION_ERROR;
12337      end if;
12338 
12339      -- To fetch Asset Current Cost
12340      if not FA_UTIL_PVT.get_asset_fin_rec
12341               (p_asset_hdr_rec         => l_asset_hdr_rec,
12342                px_asset_fin_rec        => l_asset_fin_rec,
12343                p_transaction_header_id => NULL,
12344                p_mrc_sob_type_code     => 'P'
12345               ) then
12346 
12347        OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
12348                            p_msg_name     => 'OKL_LLA_FA_ASSET_FIN_REC_ERROR'
12349                           );
12350        Raise OKL_API.G_EXCEPTION_ERROR;
12351      end if;
12352 
12353      -- To fetch Depreciation Reserve
12354      if not FA_UTIL_PVT.get_asset_deprn_rec
12355                 (p_asset_hdr_rec         => l_asset_hdr_rec ,
12356                  px_asset_deprn_rec      => l_asset_deprn_rec,
12357                  p_period_counter        => NULL,
12358                  p_mrc_sob_type_code     => 'P'
12359                  ) then
12360        OKL_API.SET_MESSAGE(p_app_name     => g_app_name,
12361                            p_msg_name     => 'OKL_LLA_FA_DEPRN_REC_ERROR'
12362                           );
12363        Raise OKL_API.G_EXCEPTION_ERROR;
12364      end if;
12365 
12366      l_nbv := l_asset_fin_rec.cost - l_asset_deprn_rec.deprn_reserve;
12367 
12368      l_converted_amount := 0;
12369      OKL_ACCOUNTING_UTIL.CONVERT_TO_CONTRACT_CURRENCY(
12370         p_khr_id                   => p_chr_id,
12371         p_from_currency            => NULL,
12372         p_transaction_date         => p_release_date,
12373         p_amount                   => l_nbv,
12374         x_return_status            => x_return_status,
12375         x_contract_currency        => l_contract_currency,
12376         x_currency_conversion_type => l_currency_conversion_type,
12377         x_currency_conversion_rate => l_currency_conversion_rate,
12378         x_currency_conversion_date => l_currency_conversion_date,
12379         x_converted_amount         => l_converted_amount);
12380 
12381       IF(x_return_status <> Okl_Api.G_RET_STS_SUCCESS) THEN
12382         Okl_Api.Set_Message(p_app_name     => Okl_Api.G_APP_NAME,
12383                             p_msg_name     => 'OKL_CONV_TO_FUNC_CURRENCY_FAIL');
12384         RAISE Okl_Api.G_EXCEPTION_ERROR;
12385       END IF;
12386 
12387       x_nbv := l_converted_amount;
12388 
12389      --Call end Activity
12390      OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
12391   EXCEPTION
12392     WHEN OKL_API.G_EXCEPTION_ERROR Then
12393       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
12394       (
12395       l_api_name,
12396       G_PKG_NAME,
12397       'OKL_API.G_RET_STS_ERROR',
12398       x_msg_count,
12399       x_msg_data,
12400       '_PVT'
12401       );
12402     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
12403       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
12404       (
12405       l_api_name,
12406       G_PKG_NAME,
12407       'OKL_API.G_RET_STS_UNEXP_ERROR',
12408       x_msg_count,
12409       x_msg_data,
12410       '_PVT'
12411       );
12412     WHEN OTHERS THEN
12413       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
12414       (
12415       l_api_name,
12416       G_PKG_NAME,
12417       'OTHERS',
12418       x_msg_count,
12419       x_msg_data,
12420       '_PVT'
12421       );
12422   END get_nbv;
12423   --Bug# 3950089: end
12424 
12425   -------------------------------------------
12426   --Bug# 3533936 : Process for release Assets
12427   -------------------------------------------
12428   PROCEDURE Create_release_asset_line
12429             (p_api_version    IN  NUMBER,
12430              p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
12431              x_return_status  OUT NOCOPY VARCHAR2,
12432              x_msg_count      OUT NOCOPY NUMBER,
12433              x_msg_data       OUT NOCOPY VARCHAR2,
12434              p_asset_id       IN  VARCHAR2,
12435              p_chr_id         IN  NUMBER,
12436              x_cle_id         OUT NOCOPY NUMBER) IS
12437 
12438 
12439   l_return_status        VARCHAR2(1)  DEFAULT Okl_Api.G_RET_STS_SUCCESS;
12440   l_api_name             CONSTANT VARCHAR2(30) := 'CREATE_RELEASE_ASSET';
12441   l_api_version          CONSTANT NUMBER := 1.0;
12442 
12443   --cursor to fetch original financial asset line id
12444   CURSOR l_orig_ast_csr(p_asset_id  varchar2) IS
12445   SELECT cle_orig.cle_id   finasst_id,
12446          asr.id            asset_return_id,
12447          cle_orig.dnz_chr_id  dnz_chr_id,
12448          --Bug# 4869443
12449          --trunc(cle_orig.date_terminated) date_terminated
12450          trunc(decode(sign(cle_orig.end_date - cle_orig.date_terminated),-1,cle_orig.end_date,cle_orig.date_terminated)) date_terminated,
12451          --Bug# 6328924
12452          asr.legal_entity_id
12453   FROM   OKL_ASSET_RETURNS_B asr,
12454          OKC_K_LINES_B       cle_orig,
12455          OKC_LINE_STYLES_B   lse_orig,
12456          OKC_K_ITEMS         cim_orig
12457   WHERE  asr.kle_id                 =  cle_orig.cle_id
12458   AND    asr.ars_code               = 'RE_LEASE'
12459   AND    cim_orig.object1_id1       =  p_asset_id
12460   AND    cim_orig.object1_id2       = '#'
12461   AND    cim_orig.jtot_object1_code = 'OKX_ASSET'
12462   AND    cle_orig.id                =  cim_orig.cle_id
12463   AND    cle_orig.dnz_chr_id        =  cim_orig.dnz_chr_id
12464   AND    cle_orig.lse_id            =  lse_orig.id
12465   AND    lse_orig.lty_code          =  'FIXED_ASSET';
12466 
12467   l_orig_ast_rec     l_orig_ast_csr%ROWTYPE;
12468   l_new_finasst_id   NUMBER;
12469 
12470   --cursor to fetch all the lines
12471   CURSOR	l_lines_csr(p_from_cle_id in number) IS
12472     SELECT 	level,
12473 		id,
12474 		chr_id,
12475 		cle_id,
12476 		dnz_chr_id,
12477                 orig_system_id1
12478     FROM 	okc_k_lines_b
12479     CONNECT BY  PRIOR id = cle_id
12480     START WITH  id = p_from_cle_id;
12481 
12482   l_lines_rec l_lines_csr%ROWTYPE;
12483 
12484   --cursor to fetch rules linked to lines
12485   CURSOR l_rgp_csr(p_cle_id in number,
12486                    p_chr_id in number) IS
12487   SELECT rgpb.id
12488   FROM   OKC_RULE_GROUPS_B rgpb
12489   WHERE  rgpb.cle_id       = p_cle_id
12490   AND    rgpb.dnz_chr_id   = p_chr_id;
12491 
12492 
12493   l_rgp_id   OKC_RULE_GROUPS_B.ID%TYPE;
12494   l_rgpv_rec okl_okc_migration_pvt.rgpv_rec_type;
12495 
12496 
12497   --cursor to get cost and salvage value for corporate book
12498   CURSOR l_corpbook_csr (p_cle_id in number,
12499                          p_chr_id in number) IS
12500   select txlb.depreciation_cost,
12501          txlb.current_units,
12502          txlb.salvage_value,
12503          txlb.percent_salvage_value,
12504          --Bug : 3569441
12505          txlb.id,
12506          txlb.corporate_book,
12507          --Bug# 3631094
12508          txlb.in_service_date,
12509          txlb.deprn_method,
12510          txlb.life_in_months,
12511          txlb.deprn_rate,
12512          txlb.depreciation_id,
12513          txlb.asset_number
12514   from   okl_txl_assets_b txlb,
12515          okc_k_lines_b    fa_cleb,
12516          okc_line_styles_b fa_lseb
12517   where  txlb.kle_id        = fa_cleb.id
12518   and    txlb.tal_type      = 'CRL'
12519   and    fa_cleb.cle_id     = p_cle_id
12520   and    fa_cleb.dnz_chr_id = p_chr_id
12521   and    fa_cleb.lse_id     = fa_lseb.id
12522   and    fa_lseb.lty_code   = 'FIXED_ASSET';
12523 
12524   l_corpbook_rec   l_corpbook_csr%ROWTYPE;
12525 
12526   --cursor to get model line details
12527   CURSOR l_modelline_csr(p_cle_id   in number,
12528                          p_chr_id   in number) IS
12529   select model_cleb.id   model_cle_id,
12530          model_cim.id    model_cim_id
12531   from   okc_k_items       model_cim,
12532          okc_k_lines_b     model_cleb,
12533          okc_line_styles_b model_lseb
12534   where  model_cim.cle_id       =  model_cleb.id
12535   and    model_cim.dnz_chr_id   = model_cleb.dnz_chr_id
12536   and    model_cleb.cle_id      = p_cle_id
12537   and    model_cleb.dnz_chr_id  = p_chr_id
12538   and    model_cleb.lse_id      = model_lseb.id
12539   and    model_lseb.lty_code    = 'ITEM';
12540 
12541   l_modelline_rec l_modelline_csr%ROWTYPE;
12542 
12543   l_clev_rec      clev_rec_type;
12544   l_klev_rec      klev_rec_type;
12545   lx_clev_rec     clev_rec_type;
12546   lx_klev_rec     klev_rec_type;
12547   l_cimv_rec      cimv_rec_type;
12548   lx_cimv_rec     cimv_rec_type;
12549 
12550   l_dt_clev_rec      clev_rec_type;
12551   l_dt_klev_rec      klev_rec_type;
12552   lx_dt_clev_rec     clev_rec_type;
12553   lx_dt_klev_rec     klev_rec_type;
12554 
12555 
12556   --cursor to get any existing addons for deletion
12557   CURSOR l_addonline_csr (p_cle_id  in number,
12558                           p_chr_id  in number) IS
12559 
12560   select addon_cleb.id     addon_cle_id
12561   from   okc_k_lines_b     addon_cleb,
12562          okc_line_styles_b addon_lseb,
12563          okc_k_lines_b     model_cleb,
12564          okc_line_styles_b model_lseb
12565   where  addon_cleb.cle_id      = model_cleb.id
12566   and    addon_cleb.dnz_chr_id  = model_cleb.dnz_chr_id
12567   and    addon_cleb.lse_id      = addon_lseb.id
12568   and    addon_lseb.lty_code    = 'ADD_ITEM'
12569   and    model_cleb.cle_id      = p_cle_id
12570   and    model_cleb.dnz_chr_id  = p_chr_id
12571   and    model_cleb.lse_id      = model_lseb.id
12572   and    model_lseb.lty_code    = 'ITEM';
12573 
12574   l_addonline_id    OKC_K_LINES_B.ID%TYPE;
12575 
12576   --cursor to get any existing subsidies for deletion
12577   CURSOR l_subsidyline_csr (p_cle_id    in number,
12578                         p_chr_id    in number) IS
12579   select subsidy_cleb.id  subsidy_cle_id
12580   from   okc_k_lines_b    subsidy_cleb,
12581          okc_line_styles_b subsidy_lseb
12582   where  subsidy_cleb.cle_id   = p_cle_id
12583   and    subsidy_cleb.dnz_chr_id = p_chr_id
12584   and    subsidy_cleb.lse_id     = subsidy_lseb.id
12585   and    subsidy_lseb.lty_code   = 'SUBSIDY';
12586 
12587   l_subsidyline_id  OKC_K_LINES_B.ID%TYPE;
12588 
12589 
12590   --cursor to get party roles attached to copied line
12591   CURSOR l_cpl_csr (p_cle_id   in  number,
12592                     p_chr_id   in  number) IS
12593   select cplb.id
12594   from   okc_k_party_roles_b cplb
12595   where  cle_id             = p_cle_id
12596   and    dnz_chr_id         = p_chr_id;
12597 
12598   l_cpl_id       OKC_K_PARTY_ROLES_B.ID%TYPE;
12599   l_cplv_rec     OKL_OKC_MIGRATION_PVT.cplv_rec_type;
12600 
12601 
12602   --cursor to get supplier invoice details
12603   CURSOR l_sid_csr (p_cle_id in NUMBER) IS
12604   select sid.id
12605   from   okl_supp_invoice_dtls sid
12606   where  cle_id   = p_cle_id;
12607 
12608   l_sid_id       OKL_SUPP_INVOICE_DTLS.ID%TYPE;
12609   l_sidv_rec     OKL_SUPP_INVOICE_DTLS_PUB.sidv_rec_type;
12610 
12611   --cursor to get item sources for fa and ib lines
12612   CURSOR   l_orig_cim_csr(p_orig_cle_id in number) IS
12613   SELECT   object1_id1,
12614            object1_id2
12615   from     okc_k_items
12616   WHERE    cle_id     = p_orig_cle_id;
12617 
12618   l_orig_cim_rec   l_orig_cim_csr%ROWTYPE;
12619 
12620   --cursor to get corresponding cim record fro fa and ib lines
12621   CURSOR   l_cim_csr (p_cle_id in number, p_chr_id in number) IS
12622   SELECT   id
12623   from     okc_k_items
12624   WHERE    cle_id     = p_cle_id
12625   And      dnz_chr_id = p_chr_id;
12626 
12627   l_cim_id        OKC_K_ITEMS.ID%TYPE;
12628   l_upd_cimv_rec  OKL_OKC_MIGRATION_PVT.cimv_rec_type;
12629   lx_upd_cimv_rec OKL_OKC_MIGRATION_PVT.cimv_rec_type;
12630 
12631 
12632   --Cursor to get hdr date
12633   CURSOR l_hdr_csr (p_chr_id IN NUMBER) is
12634   SELECT chrb.start_date,
12635          chrb.end_date,
12636          chrb.sts_code,
12637          --Bug# 4869443
12638          chrb.orig_system_source_code,
12639          --Bug# 6328924
12640          khr.legal_entity_id
12641   FROM   okc_k_headers_b chrb,
12642          okl_k_headers khr
12643   WHERE  chrb.id  = p_chr_id
12644   AND    khr.id   = chrb.id;
12645 
12646   l_hdr_rec    l_hdr_csr%ROWTYPE;
12647 
12648   --Bug : 3569441
12649   --cursor to get all the tax books
12650   CURSOR l_taxbook_csr(p_tal_id in number) is
12651   select txdb.tax_book,
12652          txdb.id
12653   from   okl_txd_assets_b txdb
12654   where  txdb.tal_id      = p_tal_id;
12655 
12656   l_taxbook_rec l_taxbook_csr%ROWTYPE;
12657 
12658   --Bug# 3950089: Fetch NBV using FA apis
12659   /*
12660   --cursor to get nbv for each book
12661   CURSOR l_nbv_csr (p_book_type_code varchar2,
12662                     p_asset_id       number) IS
12663   Select (fb.cost - fds.deprn_reserve) nbv
12664   from   fa_books          fb,
12665          fa_deprn_periods  fdp,
12666          fa_deprn_summary  fds
12667   where  fb.book_type_code  = p_book_type_code
12668   and    fb.asset_id        = p_asset_id
12669   and    fb.transaction_header_id_out is null
12670   and    fdp.book_type_code = fb.book_type_code
12671   and    fdp.period_close_date is null
12672   and    fds.book_type_code = fb.book_type_code
12673   and    fds.asset_id       = fb.asset_id
12674   and    fds.period_counter = (fdp.period_counter - 1);
12675   */
12676 
12677   l_nbv NUMBER;
12678 
12679   l_talv_rec       talv_rec_type;
12680   lx_talv_rec      talv_rec_type;
12681   l_txdv_rec       txdv_rec_type;
12682   lx_txdv_rec      txdv_rec_type;
12683   --END BUG# : 3569441
12684 
12685   --Bug# 3631094 : cursor to get category book defaults
12686   Cursor l_defaults_csr (p_book in varchar2,
12687                          p_cat  in number,
12688                          p_date in date) is
12689   select fcb.LIFE_IN_MONTHS,
12690          fcb.DEPRN_METHOD,
12691          fcb.ADJUSTED_RATE,
12692          fcb.BASIC_RATE
12693   from   FA_CATEGORY_BOOK_DEFAULTS fcb
12694   where  fcb.book_type_code  = p_book
12695   and    fcb.category_id     = p_cat
12696   and    p_date between fcb.start_dpis and nvl(fcb.end_dpis,p_date);
12697 
12698   l_defaults_rec l_defaults_csr%ROWTYPE;
12699 
12700   Cursor town_rul_csr (pchrid number) is
12701   Select rule_information1 tax_owner,
12702          id
12703   From   okc_rules_b rul
12704   where  rul.dnz_chr_id = pchrid
12705   and    rul.rule_information_category = 'LATOWN'
12706   and    nvl(rul.STD_TEMPLATE_YN,'N')  = 'N';
12707 
12708   l_town_rul      okc_rules_b.rule_information1%TYPE;
12709   l_town_rul_id   okc_rules_b.id%TYPE;
12710 
12711   l_rep_asset_book       okl_txl_assets_b.corporate_book%TYPE;
12712   l_rep_asset_book_done  varchar2(1);
12713   l_rep_pdt_id           number;
12714   l_tax_owner            varchar2(30);
12715   l_rep_deal_type        okl_k_headers.deal_type%TYPE;
12716   l_multi_gaap_yn        varchar2(1);
12717   l_adjust_asset_to_zero varchar2(1);
12718   l_deal_type            okl_k_headers.deal_type%TYPE;
12719 
12720   l_mg_txdv_rec       txdv_rec_type;
12721   lx_mg_txdv_rec      txdv_rec_type;
12722   l_corp_nbv          number;
12723   l_pending_trx_yn    varchar2(1);
12724 
12725   --cursor to get asset number
12726   cursor l_Asset_no_csr(p_asset_id in number) is
12727   select asset_number
12728   from   fa_additions
12729   where  asset_id = p_asset_id;
12730 
12731   l_asset_number  fa_additions.asset_number%TYPE;
12732   l_mg_txd_id     okl_txd_assets_b.id%TYPE;
12733   --Bug# 3631094
12734 
12735     --Bug# 3783518 :
12736     CURSOR l_chk_rbk_csr (p_chr_id in NUMBER) is
12737     select 'Y'
12738     from   okc_k_headers_b chrb
12739     where  nvl(chrb.orig_system_source_code,'XXXX') = 'OKL_REBOOK'
12740     and    chrb.id   = p_chr_id;
12741 
12742     l_rbk_yn  varchar2(1);
12743     --Bug# 3783518 :
12744 
12745     --Bug# 4558486
12746     l_kplv_rec               OKL_K_PARTY_ROLES_PVT.kplv_rec_type;
12747 
12748     --Bug# 4869443
12749     l_icx_date_format  varchar2(240);
12750     l_termination_date varchar2(240);
12751     l_k_start_date     varchar2(240);
12752     --Bug# 4869443
12753   BEGIN
12754       x_return_status := Okl_Api.G_RET_STS_SUCCESS;
12755       -- Call start_activity to create savepoint, check compatibility
12756       -- and initialize message list
12757       x_return_status := Okl_Api.START_ACTIVITY(
12758                         p_api_name      => l_api_name,
12759                         p_pkg_name      => g_pkg_name,
12760                         p_init_msg_list => p_init_msg_list,
12761                         l_api_version   => l_api_version,
12762                         p_api_version   => p_api_version,
12763                         p_api_type      => '_PVT',
12764                         x_return_status => x_return_status);
12765       -- Check if activity started successfully
12766       IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
12767          RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
12768       ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
12769          RAISE Okc_Api.G_EXCEPTION_ERROR;
12770       END IF;
12771 
12772       --------------------------------
12773       --Bug# 3783518 : Check if it is a rebook. New asset should not be added on rebook of a rlease asset contract
12774       --------------------------------
12775       l_rbk_yn := 'N';
12776       open l_chk_rbk_csr(p_chr_id  => p_chr_id);
12777       fetch l_chk_rbk_csr into l_rbk_yn;
12778       if l_chk_rbk_csr%NOTFOUND then
12779          null;
12780       end if;
12781       close l_chk_rbk_csr;
12782 
12783       If l_rbk_yn = 'Y' then
12784            OKL_API.set_message(
12785                                 p_app_name     => G_APP_NAME,
12786                                 p_msg_name     => 'OKL_REL_ASSET_RBK_NEW_AST_ADD');
12787            x_return_status := OKC_API.G_RET_STS_ERROR;
12788            RAISE OKL_API.G_EXCEPTION_ERROR;
12789 
12790       End If;
12791       ------------------
12792       --end Bug# 3783518
12793       ------------------
12794       --------------------------------
12795       --0. Check if off-lease processing is not going on
12796       -------------------------------
12797 
12798       ---------------------
12799       --bug# 4869443
12800       ---------------------
12801       open l_hdr_csr (p_chr_id => p_chr_id);
12802       Fetch l_hdr_csr into l_hdr_rec;
12803       close l_hdr_csr;
12804 
12805       l_pending_trx_yn := 'N';
12806       check_off_lease_trx
12807                             (p_api_version   => p_api_version,
12808                              p_init_msg_list => p_init_msg_list,
12809                              x_return_status => x_return_status,
12810                              x_msg_count     => x_msg_count,
12811                              x_msg_data      => x_msg_data,
12812                              p_asset_id      => p_asset_id,
12813                              x_pending_trx_yn => l_pending_trx_yn);
12814       IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
12815          RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
12816       ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
12817          RAISE Okc_Api.G_EXCEPTION_ERROR;
12818       END IF;
12819 
12820       If l_pending_trx_yn = 'Y' then
12821 
12822           open l_asset_no_csr(p_asset_id => p_asset_id);
12823           fetch l_asset_no_csr into l_asset_number;
12824           if l_asset_no_csr%NOTFOUND then
12825               null;
12826           end if;
12827           close l_asset_no_csr;
12828 
12829           OKL_API.set_message(
12830                                 p_app_name     => G_APP_NAME,
12831                                 p_msg_name     => 'OKL_LA_OFF_LEASE_TRX',
12832                                 p_token1       => 'ASSET_NUMBER',
12833                                 p_token1_value => l_asset_number);
12834            x_return_status := OKC_API.G_RET_STS_ERROR;
12835            RAISE OKL_API.G_EXCEPTION_ERROR;
12836 
12837       End If;
12838 
12839 
12840       ------------------------
12841       --1. get the original asset id
12842       ------------------------
12843       Open l_orig_ast_csr (p_asset_id => p_asset_id);
12844       Fetch l_orig_ast_csr into l_orig_ast_rec;
12845       If l_orig_ast_csr%NOTFOUND then
12846           --raise error: Unable to fetch data for asset to release
12847           --from the old contract
12848          OKL_API.set_message(p_app_name     => G_APP_NAME,
12849                              p_msg_name     => 'OKL_LA_RELEASE_AST_DTLS');
12850          RAISE Okl_Api.G_EXCEPTION_ERROR; -- rmunjulu bug 6805958
12851       End If;
12852       Close l_orig_ast_csr;
12853 
12854 
12855       --Bug# 4869443
12856       If nvl(l_hdr_rec.orig_system_source_code,OKL_API.G_MISS_CHAR) <> 'OKL_RELEASE' then --is a release asset case
12857           If (l_hdr_rec.start_date <= l_orig_ast_rec.date_terminated) then
12858               -- Raise Error: start date of the contract should not be less than or equal to termination
12859               -- date of the asset.
12860               l_icx_date_format := nvl(fnd_profile.value('ICX_DATE_FORMAT_MASK'),'DD-MON-RRRR');
12861 
12862               l_termination_date := to_char(l_orig_ast_rec.date_terminated,l_icx_date_format);
12863               l_k_start_date := to_char(l_hdr_rec.start_date,l_icx_date_format);
12864 
12865               open l_asset_no_csr(p_asset_id => p_asset_id);
12866               fetch l_asset_no_csr into l_asset_number;
12867               if l_asset_no_csr%NOTFOUND then
12868                   null;
12869               end if;
12870               close l_asset_no_csr;
12871 
12872               OKL_API.set_message(p_app_name     => G_APP_NAME,
12873                                   p_msg_name     => 'OKL_LA_RELEASE_AST_TRMN_DATE',
12874                                   p_token1       => 'TERMINATION_DATE',
12875                                   p_token1_value => l_termination_date,
12876                                   p_token2       => 'ASSET_NUMBER',
12877                                   p_token2_value => l_asset_number,
12878                                   p_token3       => 'CONTRACT_START_DATE',
12879                                   p_token3_value => l_k_start_date);
12880               RAISE Okl_Api.G_EXCEPTION_ERROR; -- rmunjulu bug 6805958 changed to OKL_API from OKC_API
12881           End If;
12882 
12883           --Bug# 6328924
12884           If (l_hdr_rec.legal_entity_id <> l_orig_ast_rec.legal_entity_id) then
12885               -- Raise Error: The legal entity associated with Asset must be the same as
12886               --              the legal entity associated with the contract
12887 
12888               open l_asset_no_csr(p_asset_id => p_asset_id);
12889               fetch l_asset_no_csr into l_asset_number;
12890               if l_asset_no_csr%NOTFOUND then
12891                   null;
12892               end if;
12893               close l_asset_no_csr;
12894 
12895               OKL_API.set_message(p_app_name     => G_APP_NAME,
12896                                   p_msg_name     => 'OKL_LA_RELEASE_ASSET_LGL_ENTY',
12897                                   p_token1       => 'ASSET_NUMBER',
12898                                   p_token1_value => l_asset_number);
12899               RAISE Okl_Api.G_EXCEPTION_ERROR;
12900           End If;
12901 
12902       End If;
12903       --Bug# 4869443
12904 
12905       --------------------------
12906       --2. copy asset line
12907       -------------------------
12908       OKL_COPY_ASSET_PUB.copy_asset_lines
12909                           (p_api_version        => p_api_version,
12910                            p_init_msg_list      => p_init_msg_list,
12911                            x_return_status      => x_return_status,
12912                            x_msg_count          => x_msg_count,
12913                            x_msg_data           => x_msg_data,
12914                            p_from_cle_id        => l_orig_ast_rec.finasst_id,
12915                            p_to_cle_id          => OKL_API.G_MISS_NUM ,
12916                            p_to_chr_id          => p_chr_id,
12917                            p_to_template_yn     => 'N',
12918                            p_copy_reference     => 'COPY',
12919                            p_copy_line_party_yn => 'N',
12920                            p_renew_ref_yn       => 'N',
12921                            p_trans_type         => 'CRL',
12922                            x_cle_id             => l_new_finasst_id);
12923       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12924           RAISE OKL_API.G_EXCEPTION_ERROR;
12925       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12926           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12927       END IF;
12928 
12929       ---------------------------
12930       --3. delete addon lines
12931       --------------------------
12932       Open l_addonline_csr(p_cle_id => l_new_finasst_id,
12933                            p_chr_id => p_chr_id);
12934       Loop
12935           Fetch l_addonline_csr into l_addonline_id;
12936           Exit when l_addonline_csr%NOTFOUND;
12937           OKL_CONTRACT_PUB.delete_contract_line
12938                            (p_api_version        => p_api_version,
12939                             p_init_msg_list      => p_init_msg_list,
12940                             x_return_status      => x_return_status,
12941                             x_msg_count          => x_msg_count,
12942                             x_msg_data           => x_msg_data,
12943                             p_line_id            => l_addonline_id);
12944 
12945           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12946               RAISE OKL_API.G_EXCEPTION_ERROR;
12947           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12948               RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12949           END IF;
12950       End Loop;
12951       Close l_addonline_csr;
12952 
12953       -----------------------------
12954       --4.delete subsidy lines
12955       ----------------------------
12956       Open l_subsidyline_csr (p_cle_id => l_new_finasst_id,
12957                               p_chr_id => p_chr_id);
12958       Loop
12959            Fetch l_subsidyline_csr into l_subsidyline_id;
12960            Exit when l_subsidyline_csr%NOTFOUND;
12961            OKL_CONTRACT_PUB.delete_contract_line
12962                            (p_api_version        => p_api_version,
12963                             p_init_msg_list      => p_init_msg_list,
12964                             x_return_status      => x_return_status,
12965                             x_msg_count          => x_msg_count,
12966                             x_msg_data           => x_msg_data,
12967                             p_line_id            => l_subsidyline_id);
12968 
12969           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
12970               RAISE OKL_API.G_EXCEPTION_ERROR;
12971           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
12972               RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
12973           END IF;
12974       End Loop;
12975       Close l_subsidyline_csr;
12976 
12977 
12978       ---------------------------------------------------
12979       --5. Delete the rules associated with original line
12980       --   Update contract header dates on to lines
12981       --   Plug in asset and ib ids
12982       --   Delete Parties
12983       --   Delete supplier invoice details
12984       --------------------------------------------------
12985       ---
12986       --Bug# 4869443 : cursor open moved up
12987       --
12988       --open l_hdr_csr (p_chr_id => p_chr_id);
12989       --Fetch l_hdr_csr into l_hdr_rec;
12990       --close l_hdr_csr;
12991 
12992       open l_lines_csr(p_from_cle_id => l_new_finasst_id);
12993       Loop
12994           Fetch l_lines_csr into l_lines_rec;
12995           Exit when l_lines_csr%NOTFOUND;
12996 
12997           --update line start and end dates
12998           l_dt_clev_rec.id         := l_lines_rec.id;
12999           l_dt_klev_rec.id         := l_lines_rec.id;
13000           l_dt_clev_rec.start_date := l_hdr_rec.start_date;
13001           l_dt_clev_rec.end_date   := l_hdr_rec.end_date;
13002           l_dt_clev_rec.sts_code   := l_hdr_rec.sts_code;
13003 
13004           okl_contract_pub.update_contract_line
13005                            (p_api_version    => p_api_version,
13006                             p_init_msg_list  => p_init_msg_list,
13007                             x_return_status  => x_return_status,
13008                             x_msg_count      => x_msg_count,
13009                             x_msg_data       => x_msg_data,
13010                             p_clev_rec       => l_dt_clev_rec,
13011                             p_klev_rec       => l_dt_klev_rec,
13012                             x_clev_rec       => lx_dt_clev_rec,
13013                             x_klev_rec       => lx_dt_klev_rec);
13014 
13015           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13016               RAISE OKL_API.G_EXCEPTION_ERROR;
13017           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13018               RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13019           END IF;
13020 
13021 
13022           --plug in asset and ib ids
13023           Open l_orig_cim_csr(p_orig_cle_id => l_lines_rec.orig_system_id1);
13024           Fetch l_orig_cim_csr into l_orig_cim_rec;
13025           If l_orig_cim_csr%NOTFOUND then
13026               Null;
13027           Else
13028               Open l_cim_csr(p_cle_id => l_lines_rec.id, p_chr_id => p_chr_id);
13029               Fetch l_cim_csr into l_cim_id;
13030               If l_cim_csr%NOTFOUND then
13031                   NULL;
13032               Else
13033 
13034                   l_upd_cimv_rec.id := l_cim_id;
13035                   l_upd_cimv_rec.object1_id1 := l_orig_cim_rec.object1_id1;
13036                   l_upd_cimv_rec.object1_id2 := l_orig_cim_rec.object1_id2;
13037 
13038                   OKL_OKC_MIGRATION_PVT.update_contract_item
13039                            (p_api_version        => p_api_version,
13040                             p_init_msg_list      => p_init_msg_list,
13041                             x_return_status      => x_return_status,
13042                             x_msg_count          => x_msg_count,
13043                             x_msg_data           => x_msg_data,
13044                             p_cimv_rec           => l_upd_cimv_rec,
13045                             x_cimv_rec           => lx_upd_cimv_rec);
13046 
13047                   IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13048                       RAISE OKL_API.G_EXCEPTION_ERROR;
13049                   ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13050                       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13051                   END IF;
13052               End If;
13053               Close l_cim_csr;
13054           End If;
13055           Close l_orig_cim_csr;
13056 
13057           --Get rule groups associated with each line
13058           Open l_rgp_csr(p_cle_id => l_lines_rec.id, p_chr_id => p_chr_id);
13059           Loop
13060               Fetch l_rgp_csr into l_rgp_id;
13061               Exit when l_rgp_csr%NOTFOUND;
13062               --delete the rule group instance
13063               l_rgpv_rec.id := l_rgp_id;
13064               OKL_RULE_PUB.delete_rule_group
13065                            (p_api_version    => p_api_version,
13066                             p_init_msg_list  => p_init_msg_list,
13067                             x_return_status  => x_return_status,
13068                             x_msg_count      => x_msg_count,
13069                             x_msg_data       => x_msg_data,
13070                             p_rgpv_rec       => l_rgpv_rec );
13071 
13072               IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13073                   RAISE OKL_API.G_EXCEPTION_ERROR;
13074               ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13075                   RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13076               END IF;
13077           End Loop;
13078           Close l_rgp_csr;
13079 
13080           --get supplier invoice details linked with each line
13081           Open  l_sid_csr (p_cle_id => l_lines_rec.id);
13082           Loop
13083               Fetch l_sid_csr into l_sid_id;
13084               Exit when l_sid_csr%NOTFOUND;
13085               --delete sidv rec
13086               l_sidv_rec.id := l_sid_id;
13087               OKL_SUPP_INVOICE_DTLS_PUB.delete_sup_inv_dtls
13088                           (p_api_version    => p_api_version,
13089                             p_init_msg_list  => p_init_msg_list,
13090                             x_return_status  => x_return_status,
13091                             x_msg_count      => x_msg_count,
13092                             x_msg_data       => x_msg_data,
13093                             p_sidv_rec       => l_sidv_rec );
13094 
13095               IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13096                   RAISE OKL_API.G_EXCEPTION_ERROR;
13097               ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13098                   RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13099               END IF;
13100           End Loop;
13101           Close l_sid_csr;
13102 
13103           --get party roles linked with each line
13104           Open  l_cpl_csr (p_cle_id => l_lines_rec.id, p_chr_id => p_chr_id);
13105           Loop
13106               Fetch l_cpl_csr into l_cpl_id;
13107               Exit when l_cpl_csr%NOTFOUND;
13108               --delete cplv rec
13109               l_cplv_rec.id := l_cpl_id;
13110               --Bug# 4558486: Changed call to okl_k_party_roles_pvt api
13111               --              to delete records in tables
13112               --              okc_k_party_roles_b and okl_k_party_roles
13113               /*
13114               OKL_OKC_MIGRATION_PVT.delete_k_party_role
13115                           ( p_api_version    => p_api_version,
13116                             p_init_msg_list  => p_init_msg_list,
13117                             x_return_status  => x_return_status,
13118                             x_msg_count      => x_msg_count,
13119                             x_msg_data       => x_msg_data,
13120                             p_cplv_rec       => l_cplv_rec );
13121               */
13122               l_kplv_rec.id := l_cplv_rec.id;
13123               OKL_K_PARTY_ROLES_PVT.delete_k_party_role
13124                           ( p_api_version    => p_api_version,
13125                             p_init_msg_list  => p_init_msg_list,
13126                             x_return_status  => x_return_status,
13127                             x_msg_count      => x_msg_count,
13128                             x_msg_data       => x_msg_data,
13129                             p_cplv_rec       => l_cplv_rec,
13130                             p_kplv_rec       => l_kplv_rec);
13131 
13132               IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13133                   RAISE OKL_API.G_EXCEPTION_ERROR;
13134               ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13135                   RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13136               END IF;
13137           End Loop;
13138           Close l_cpl_csr;
13139       End Loop;
13140       close l_lines_csr;
13141 
13142       -------------------------------------------------------
13143       --6. Update the costs and salvage value from FA
13144       ------------------------------------------------------
13145       Open l_corpbook_csr(p_cle_id => l_new_finasst_id,
13146                           p_chr_id => p_chr_id);
13147       Fetch l_corpbook_csr into l_corpbook_rec;
13148       If l_corpbook_csr%NOTFOUND then
13149           --error
13150           NULL;
13151       End If;
13152       Close l_corpbook_csr;
13153 
13154       --Bug# 3950089: Fetch NBV using FA apis
13155       /*
13156       --BUG# : 3569441
13157       l_nbv := Null;
13158       Open l_nbv_csr(p_book_type_code => l_corpbook_rec.corporate_book,
13159                      p_asset_id       => p_asset_id);
13160       Fetch l_nbv_csr into l_nbv;
13161       If l_nbv_csr%NOTFOUND then
13162           null;
13163       End If;
13164       Close l_nbv_csr;
13165       */
13166 
13167       l_nbv := Null;
13168       get_nbv(p_api_version     => p_api_version,
13169               p_init_msg_list   => p_init_msg_list,
13170 	        x_return_status   => x_return_status,
13171               x_msg_count       => x_msg_count,
13172               x_msg_data        => x_msg_data,
13173               p_asset_id        => p_asset_id,
13174               p_book_type_code  => l_corpbook_rec.corporate_book,
13175               p_chr_id          => p_chr_id,
13176               p_release_date    => l_hdr_rec.start_date,
13177               x_nbv             => l_nbv);
13178 
13179       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13180         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13181       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13182         RAISE OKL_API.G_EXCEPTION_ERROR;
13183       END IF;
13184 
13185       IF l_nbv is not NULL then
13186           --update okl_txl_Assets
13187           l_talv_rec.id                    := l_corpbook_rec.id;
13188           l_talv_rec.DEPRECIATION_COST     := l_nbv;
13189           l_talv_rec.ORIGINAL_COST         := l_nbv;
13190           l_corp_nbv                       := l_nbv;
13191 
13192           Update_asset_lines(
13193             p_api_version    =>  p_api_version,
13194             p_init_msg_list  =>  p_init_msg_list,
13195             x_return_status  =>  x_return_status,
13196             x_msg_count      =>  x_msg_count,
13197             x_msg_data       =>  x_msg_data,
13198             p_talv_rec       =>  l_talv_rec,
13199             x_talv_rec       =>  lx_talv_rec);
13200 
13201           IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13202               RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13203           ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13204              RAISE Okc_Api.G_EXCEPTION_ERROR;
13205           END IF;
13206       END IF;
13207       --BUG# :END 3569441
13208 
13209       Open l_modelline_csr (p_cle_id => l_new_finasst_id,
13210                             p_chr_id => p_chr_id);
13211       Fetch l_modelline_csr into l_modelline_rec;
13212       If l_modelline_csr%NOTFOUND then
13213           --error
13214           NULL;
13215       End If;
13216       Close l_modelline_csr;
13217 
13218       l_clev_rec.id                  := l_modelline_rec.model_cle_id;
13219       l_klev_rec.id                  := l_modelline_rec.model_cle_id;
13220       --BUG# : 3569441
13221       If l_nbv is NULL then
13222           l_clev_rec.price_unit          := (l_corpbook_rec.depreciation_cost/l_corpbook_rec.current_units);
13223       ElsIf l_nbv is NOT NULL then
13224           l_clev_rec.price_unit          := (l_nbv/l_corpbook_rec.current_units);
13225       End If;
13226       --BUG# End : 3569441
13227       l_cimv_rec.id                  := l_modelline_rec.model_cim_id;
13228       l_cimv_rec.number_of_items     := l_corpbook_rec.current_units;
13229 
13230       okl_contract_pub.update_contract_line
13231                            (p_api_version    => p_api_version,
13232                             p_init_msg_list  => p_init_msg_list,
13233                             x_return_status  => x_return_status,
13234                             x_msg_count      => x_msg_count,
13235                             x_msg_data       => x_msg_data,
13236                             p_clev_rec       => l_clev_rec,
13237                             p_klev_rec       => l_klev_rec,
13238                             x_clev_rec       => lx_clev_rec,
13239                             x_klev_rec       => lx_klev_rec);
13240       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13241           RAISE OKL_API.G_EXCEPTION_ERROR;
13242       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13243           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13244       END IF;
13245 
13246       okl_okc_migration_pvt.update_contract_item
13247                            (p_api_version    => p_api_version,
13248                             p_init_msg_list  => p_init_msg_list,
13249                             x_return_status  => x_return_status,
13250                             x_msg_count      => x_msg_count,
13251                             x_msg_data       => x_msg_data,
13252                             p_cimv_rec       => l_cimv_rec,
13253                             x_cimv_rec       => lx_cimv_rec);
13254       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13255           RAISE OKL_API.G_EXCEPTION_ERROR;
13256       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13257           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13258       END IF;
13259 
13260       --update financial asset line for OEC and residual value
13261       l_clev_rec.id                  := l_new_finasst_id;
13262       l_klev_rec.id                  := l_new_finasst_id;
13263       l_clev_rec.price_unit          := OKL_API.G_MISS_NUM;
13264       l_klev_rec.residual_percentage := l_corpbook_rec.percent_salvage_value;
13265       l_klev_rec.residual_value      := l_corpbook_rec.salvage_value;
13266       --BUG : 3569441
13267       l_klev_rec.oec                 := l_nbv;
13268       --l_klev_rec.oec                 := l_corpbook_rec.depreciation_cost;
13269 
13270       okl_contract_pub.update_contract_line
13271                            (p_api_version    => p_api_version,
13272                             p_init_msg_list  => p_init_msg_list,
13273                             x_return_status  => x_return_status,
13274                             x_msg_count      => x_msg_count,
13275                             x_msg_data       => x_msg_data,
13276                             p_clev_rec       => l_clev_rec,
13277                             p_klev_rec       => l_klev_rec,
13278                             x_clev_rec       => lx_clev_rec,
13279                             x_klev_rec       => lx_klev_rec);
13280       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13281           RAISE OKL_API.G_EXCEPTION_ERROR;
13282       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13283           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13284       END IF;
13285 
13286       --Bug# 3631094 : Creation of reporting tax book
13287       l_rep_asset_book      :=  OKL_SYSTEM_PARAMS_ALL_PUB.get_system_param_value(OKL_SYSTEM_PARAMS_ALL_PUB.G_RPT_PROD_BOOK_TYPE_CODE);
13288       l_rep_Asset_book_done := 'N';
13289       --BUG# : 3569441
13290       OPEN l_taxbook_csr(p_tal_id => l_corpbook_rec.id);
13291       Loop
13292           Fetch l_taxbook_csr into l_taxbook_rec;
13293           Exit when l_taxbook_csr%NOTFOUND;
13294           If l_taxbook_rec.tax_book = nvl(l_rep_Asset_book,OKL_API.G_MISS_CHAR) then
13295               l_rep_Asset_book_done := 'Y';
13296               l_mg_txd_id           := l_taxbook_rec.id;
13297           End If;
13298           --Bug# 3950089: Fetch NBV using FA apis
13299           /*
13300           l_nbv := NULL;
13301           Open l_nbv_csr(p_book_type_code => l_taxbook_rec.tax_book,
13302                          p_asset_id       => p_asset_id);
13303           Fetch l_nbv_csr into l_nbv;
13304           If l_nbv_csr%NOTFOUND then
13305               NULL;
13306           End If;
13307           Close l_nbv_csr;
13308           */
13309 
13310           l_nbv := Null;
13311           get_nbv(p_api_version     => p_api_version,
13312                   p_init_msg_list   => p_init_msg_list,
13313 	            x_return_status   => x_return_status,
13314                   x_msg_count       => x_msg_count,
13315                   x_msg_data        => x_msg_data,
13316                   p_asset_id        => p_asset_id,
13317                   p_book_type_code  => l_taxbook_rec.tax_book,
13318                   p_chr_id          => p_chr_id,
13319                   p_release_date    => l_hdr_rec.start_date,
13320                   x_nbv             => l_nbv);
13321 
13322           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13323             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13324           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13325             RAISE OKL_API.G_EXCEPTION_ERROR;
13326           END IF;
13327 
13328           If l_nbv is NOT NULL then
13329               --update okl_txd_Assets_b
13330               l_txdv_rec.id      := l_taxbook_rec.id;
13331               l_txdv_rec.cost    := l_nbv;
13332               OKL_TXD_ASSETS_PUB.UPDATE_TXD_ASSET_DEF
13333                                  (
13334                                  p_api_version    =>  p_api_version,
13335                                  p_init_msg_list  =>  p_init_msg_list,
13336                                  x_return_status  =>  x_return_status,
13337                                  x_msg_count      =>  x_msg_count,
13338                                  x_msg_data       =>  x_msg_data,
13339                                  p_adpv_rec       =>  l_txdv_rec,
13340                                  x_adpv_rec       =>  lx_txdv_rec);
13341 
13342               IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13343                   RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13344               ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13345                   RAISE Okc_Api.G_EXCEPTION_ERROR;
13346               END IF;
13347           END IF;
13348       End Loop;
13349       Close l_taxbook_csr;
13350       --BUG# : END 3569441
13351 
13352       --Bug# 3631094 :
13353       Get_Pdt_Params (p_api_version   => p_api_version,
13354                       p_init_msg_list => p_init_msg_list,
13355                       x_return_status => x_return_status,
13356                       x_msg_count     => x_msg_count,
13357                       x_msg_data      => x_msg_data,
13358                       p_chr_id        => p_chr_id,
13359                       x_rep_pdt_id    => l_rep_pdt_id,
13360                       x_tax_owner     => l_tax_owner,
13361                       x_deal_type     => l_deal_type,
13362                       x_rep_deal_type => l_rep_deal_type);
13363 
13364       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
13365           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
13366       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
13367           RAISE OKL_API.G_EXCEPTION_ERROR;
13368       END IF;
13369 
13370       If l_tax_owner is null then
13371          Open town_rul_csr(pchrid => p_chr_id);
13372          Fetch town_rul_csr into l_town_rul,
13373                                  l_town_rul_id;
13374          If town_rul_csr%NOTFOUND Then
13375             OKC_API.set_message(
13376                             p_app_name     => G_APP_NAME,
13377                             p_msg_name     => G_REQUIRED_VALUE,
13378                             p_token1       => G_COL_NAME_TOKEN,
13379                             p_token1_value => 'Tax Owner');
13380              x_return_status := OKC_API.G_RET_STS_ERROR;
13381              RAISE OKL_API.G_EXCEPTION_ERROR;
13382          Else
13383              l_tax_owner := rtrim(ltrim(l_town_rul,' '),' ');
13384           End If;
13385       Close town_rul_csr;
13386       End If;
13387 
13388       l_Multi_GAAP_YN := 'N';
13389       l_adjust_asset_to_zero := 'N';
13390       --checks wheter Multi-GAAP processing needs tobe done
13391       If l_rep_pdt_id is not NULL Then
13392       --Bug 7708944. SGIYER 01/15/2009.
13393       -- Implemented MG changes based on PM recommendation.
13394         l_Multi_GAAP_YN := 'Y';
13395 /*
13396          If l_deal_type = 'LEASEOP' and
13397          nvl(l_rep_deal_type,'X') = 'LEASEOP' and
13398          nvl(l_tax_owner,'X') = 'LESSOR' Then
13399              l_Multi_GAAP_YN := 'Y';
13400          End If;
13401 
13402          If l_deal_type in ('LEASEDF','LEASEST') and
13403          nvl(l_rep_deal_type,'X') = 'LEASEOP' and
13404          nvl(l_tax_owner,'X') = 'LESSOR' Then
13405              l_Multi_GAAP_YN := 'Y';
13406          End If;
13407 
13408          If l_deal_type in ('LEASEDF','LEASEST') and
13409          nvl(l_rep_deal_type,'X') = 'LEASEOP' and
13410          nvl(l_tax_owner,'X') = 'LESSEE' Then
13411              l_Multi_GAAP_YN := 'Y';
13412          End If;
13413 
13414          If l_deal_type = 'LOAN' and
13415          nvl(l_rep_deal_type,'X') = 'LEASEOP' and
13416          nvl(l_tax_owner,'X') = 'LESSEE' Then
13417              l_Multi_GAAP_YN := 'Y';
13418          End If;
13419 */
13420          -- If the reporting product is DF/ST lease, the asset should
13421          -- be created and written to zero in the reporting book.
13422 
13423       --Bug 7708944. SGIYER 01/15/2009.
13424       -- Implemented MG changes based on PM recommendation.
13425          If l_deal_type = 'LEASEOP' and
13426          nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
13427          nvl(l_tax_owner,'X') = 'LESSOR' Then
13428              --l_Multi_GAAP_YN := 'Y';
13429              l_adjust_asset_to_zero := 'Y';
13430          End If;
13431 
13432          If l_deal_type in ('LEASEDF','LEASEST') and
13433          nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
13434          nvl(l_tax_owner,'X') = 'LESSOR' Then
13435              --l_Multi_GAAP_YN := 'Y';
13436              l_adjust_asset_to_zero := 'Y';
13437          End If;
13438 
13439          If l_deal_type in ('LEASEDF','LEASEST') and
13440          nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST') and
13441          nvl(l_tax_owner,'X') = 'LESSEE' Then
13442              --l_Multi_GAAP_YN := 'Y';
13443              l_adjust_asset_to_zero := 'Y';
13444          End If;
13445       End If;
13446 
13447       --Bug 7708944. SGIYER 01/15/2009.
13448       -- Implemented MG changes based on PM recommendation.
13449       If l_Multi_GAAP_YN = 'Y' and nvl(l_rep_deal_type,'X') in ('LEASEDF','LEASEST','LEASEOP') then
13450           If nvl(l_rep_Asset_book_done,OKL_API.G_MISS_CHAR) = 'N' then
13451               l_mg_txdv_rec.tal_id       :=  l_corpbook_rec.id;
13452               l_mg_txdv_rec.asset_number :=  l_corpbook_rec.asset_number;
13453               l_mg_txdv_rec.tax_book     :=  l_rep_Asset_book;
13454               --If nvl(l_adjust_asset_to_zero,OKL_API.G_MISS_CHAR) = 'Y' then
13455               --l_mg_txdv_rec.cost := 0;
13456               --ElsIf nvl(l_adjust_asset_to_zero,OKL_API.G_MISS_CHAR) = 'N' then
13457               l_mg_txdv_rec.cost := l_corp_nbv;
13458               --End If;
13459               --get defaults from category books
13460               open l_defaults_csr (p_book => l_rep_asset_book,
13461                                    p_cat  => l_corpbook_rec.depreciation_id,
13462                                    p_date => l_corpbook_rec.in_service_date);
13463               Fetch l_defaults_csr into l_defaults_rec;
13464 
13465               -- Bug# 5028512 - Modified - Start
13466               If l_defaults_csr%NOTFOUND then
13467                   l_mg_txdv_rec.deprn_method_tax    := l_corpbook_rec.deprn_method;
13468                   l_mg_txdv_rec.life_in_months_tax  := l_corpbook_rec.life_in_months;
13469                    -- Depreciation Rates no longer needs to be adjusted by 100
13470                    --l_mg_txdv_rec.deprn_rate_tax      := (l_corpbook_rec.deprn_rate * 100);
13471                    l_mg_txdv_rec.deprn_rate_tax      := l_corpbook_rec.deprn_rate;
13472               Else
13473                   l_mg_txdv_rec.deprn_method_tax    := l_defaults_rec.deprn_method;
13474                   l_mg_txdv_rec.life_in_months_tax  := l_defaults_rec.life_in_months;
13475                   -- Depreciation Rates no longer needs to be adjusted by 100
13476                   -- l_mg_txdv_rec.deprn_rate_tax      := (l_defaults_rec.adjusted_rate * 100);
13477                   l_mg_txdv_rec.deprn_rate_tax      := l_defaults_rec.adjusted_rate;
13478               End If;
13479               -- Bug# 5028512 - Modified - End
13480 
13481               --Create transaction for Multi-Gaap Book
13482               OKL_TXD_ASSETS_PUB.CREATE_TXD_ASSET_DEF
13483                                  (
13484                                  p_api_version    =>  p_api_version,
13485                                  p_init_msg_list  =>  p_init_msg_list,
13486                                  x_return_status  =>  x_return_status,
13487                                  x_msg_count      =>  x_msg_count,
13488                                  x_msg_data       =>  x_msg_data,
13489                                  p_adpv_rec       =>  l_mg_txdv_rec,
13490                                  x_adpv_rec       =>  lx_mg_txdv_rec);
13491 
13492               IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13493                   RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13494               ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13495                   RAISE Okc_Api.G_EXCEPTION_ERROR;
13496               END IF;
13497            End If; -- if multi gaap asset book is not doen
13498        End If; --If l_mutigaap_yn
13499        x_cle_id:= l_new_finasst_id;
13500 
13501     OKL_API.END_ACTIVITY (x_msg_count,
13502                           x_msg_data );
13503     EXCEPTION
13504     WHEN OKL_API.G_EXCEPTION_ERROR THEN
13505     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
13506                                l_api_name,
13507                                G_PKG_NAME,
13508                                'OKL_API.G_RET_STS_ERROR',
13509                                x_msg_count,
13510                                x_msg_data,
13511                                '_PVT');
13512     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
13513     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
13514                               l_api_name,
13515                               G_PKG_NAME,
13516                               'OKL_API.G_RET_STS_UNEXP_ERROR',
13517                               x_msg_count,
13518                               x_msg_data,
13519                               '_PVT');
13520     WHEN OTHERS THEN
13521     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
13522                               l_api_name,
13523                               G_PKG_NAME,
13524                               'OTHERS',
13525                               x_msg_count,
13526                               x_msg_data,
13527                               '_PVT');
13528   END Create_Release_asset_Line;
13529 
13530   --Bug# 3533936:
13531   ----------------------------------------------------------
13532   --copy and sync line components from updated line with new
13533   --released asset id to new line
13534   --called from release asset line
13535   ---------------------------------------------------------
13536   PROCEDURE copy_updated_asset_components
13537             (p_api_version    IN  NUMBER,
13538              p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
13539              x_return_status  OUT NOCOPY VARCHAR2,
13540              x_msg_count      OUT NOCOPY NUMBER,
13541              x_msg_data       OUT NOCOPY VARCHAR2,
13542              p_cle_id         IN  NUMBER,
13543              p_orig_cle_id    IN  NUMBER,
13544              p_chr_id         IN  NUMBER) IS
13545 
13546   l_return_status        VARCHAR2(1)  DEFAULT Okl_Api.G_RET_STS_SUCCESS;
13547   l_api_name             CONSTANT VARCHAR2(30) := 'COPY_UPDATED_ASSET';
13548   l_api_version          CONSTANT NUMBER := 1.0;
13549 
13550   --cursor to get rule groups attached to old line
13551   CURSOR l_rgp_csr(p_orig_cle_id in number,
13552                    p_chr_id  in number) is
13553   SELECT rgpb.id
13554   FROM   okc_rule_groups_b rgpb
13555   WHERE  rgpb.cle_id     = p_cle_id
13556   AND    rgpb.dnz_chr_id = p_chr_id;
13557 
13558   l_rgp_id   OKC_RULE_GROUPS_B.ID%TYPE;
13559   lx_rgp_id   OKC_RULE_GROUPS_B.ID%TYPE;
13560 
13561   --cursor to get party roles attached to old line
13562   CURSOR l_cpl_csr (p_orig_cle_id in number,
13563                     p_chr_id in number) is
13564   SELECT cplb.id,
13565          cplb.rle_code
13566   FROM   okc_k_party_roles_b cplb
13567   WHERE  cplb.cle_id     = p_orig_cle_id
13568   AND    cplb.dnz_chr_id = p_chr_id;
13569 
13570   l_cpl_rec l_cpl_csr%ROWTYPE;
13571   lx_cpl_id OKC_K_PARTY_ROLES_B.ID%TYPE;
13572 
13573   --cursor to get any covered asset lines where old line was referenced
13574   CURSOR l_lnk_ast_csr (p_orig_cle_id in NUMBER,
13575                         p_chr_id in NUMBER) is
13576   SELECT cim.id
13577   FROM   okc_k_items cim,
13578          okc_k_lines_b cleb,
13579          okc_line_styles_b lseb
13580   WHERE  cim.object1_id1   = to_char(p_orig_cle_id)
13581   AND    cim.object1_id2   = '#'
13582   AND    cim.jtot_object1_code = 'OKX_COVASST'
13583   AND    cim.cle_id            = cleb.id
13584   AND    cim.dnz_chr_id        = cleb.dnz_chr_id
13585   AND    cleb.dnz_chr_id       = p_chr_id
13586   AND    cleb.chr_id           is NULL
13587   AND    cleb.lse_id           = lseb.id
13588   AND    lseb.lty_code         in ('LINK_SERV_ASSET','LINK_FEE_ASSET','LINK_USAGE_ASSET');
13589 
13590   l_cim_id OKC_K_ITEMS.ID%TYPE;
13591   l_cimv_rec OKL_OKC_MIGRATION_PVT.cimv_rec_type;
13592   lx_cimv_rec OKL_OKC_MIGRATION_PVT.cimv_rec_type;
13593 
13594   --cursor to get information about SLH/SLL to sync back
13595   CURSOR l_slh_csr(p_cle_id      in number,
13596                    p_orig_cle_id in number,
13597                    p_chr_id      in number) IS
13598   SELECT
13599 
13600          RULSLH.ID,
13601          RULSLL.ID
13602   FROM   OKC_RULES_B       RULSLL_OLD,
13603          OKC_RULES_B       RULSLH_OLD,
13604          OKC_RULE_GROUPS_B RGPB_OLD,
13605          OKC_RULES_B       RULSLL,
13606          OKC_RULES_B       RULSLH,
13607          OKC_RULE_GROUPS_B RGPB
13608   WHERE  TO_CHAR(RULSLH_OLD.ID)               = NVL(RULSLL.OBJECT2_ID1,-99) --the new sll has old slh's id
13609   AND    RULSLH_OLD.OBJECT1_ID1               = RULSLH.OBJECT1_ID1   --stream type ids are same for old and new slh
13610   AND    RULSLL_OLD.RULE_INFORMATION_CATEGORY = 'LASLL'
13611   AND    RULSLL_OLD.DNZ_CHR_ID                = RGPB_OLD.DNZ_CHR_ID
13612   AND    RULSLL_OLD.RGP_ID                    = RGPB_OLD.ID
13613   AND    RULSLH_OLD.RULE_INFORMATION_CATEGORY = 'LASLH'
13614   AND    RULSLH_OLD.DNZ_CHR_ID                = RGPB_OLD.DNZ_CHR_ID
13615   AND    RULSLH_OLD.RGP_ID                    = RGPB_OLD.ID
13616   AND    TO_CHAR(RULSLH_OLD.ID)               = RULSLL_OLD.OBJECT2_ID1
13617   AND    RGPB_OLD.RGD_CODE                    = 'LALEVL'
13618   AND    RGPB_OLD.CHR_ID                      IS NULL
13619   AND    RGPB_OLD.DNZ_CHR_ID                  = p_chr_id
13620   AND    RGPB_OLD.CLE_ID                      = p_orig_cle_id
13621   --
13622   AND    RULSLL.RULE_INFORMATION_CATEGORY = 'LASLL'
13623   AND    RULSLL.DNZ_CHR_ID                = RGPB.DNZ_CHR_ID
13624   AND    RULSLL.RGP_ID                    = RGPB.ID
13625   AND    RULSLH.RULE_INFORMATION_CATEGORY = 'LASLH'
13626   AND    RULSLH.DNZ_CHR_ID                = RGPB.DNZ_CHR_ID
13627   AND    RULSLH.RGP_ID                    = RGPB.ID
13628   AND    TO_CHAR(RULSLH.ID)              <> NVL(RULSLL.OBJECT2_ID1,-99)
13629   AND    RGPB.RGD_CODE                    = 'LALEVL'
13630   AND    RGPB.CHR_ID                      IS NULL
13631   AND    RGPB.DNZ_CHR_ID                  = p_chr_id
13632   AND    RGPB.CLE_ID                      = p_cle_id;
13633 
13634   l_slh_id     OKC_RULES_B.ID%TYPE;
13635   l_sll_id     OKC_RULES_B.ID%TYPE;
13636 
13637   l_rulv_rec   OKL_RULE_PUB.rulv_rec_type;
13638   lx_rulv_rec  OKL_RULE_PUB.rulv_rec_type;
13639 
13640   --Fetch any new subsidy associated to old line
13641   Cursor l_subsidy_csr (p_orig_cle_id in number,
13642                         p_chr_id      in number) IS
13643   Select sub_kle.subsidy_id              subsidy_id,
13644          sub_cleb.id                     subsidy_cle_id,
13645          subb.name                       name,
13646          subt.description                description,
13647          sub_kle.amount                  amount,
13648          sub_kle.subsidy_override_amount subsidy_override_amount,
13649          sub_cleb.dnz_chr_id             dnz_chr_id,
13650          sub_cleb.cle_id                 asset_cle_id,
13651          sub_cplb.id                     cpl_id,
13652          pov.vendor_id                   vendor_id,
13653          pov.vendor_name                 vendor_name
13654   from
13655          okl_subsidies_b        subb,
13656          okl_subsidies_tl       subt,
13657          po_vendors             pov,
13658          okc_k_party_roles_b    sub_cplb,
13659          okl_k_lines            sub_kle,
13660          okc_k_lines_b          sub_cleb,
13661          okc_line_styles_b      sub_lseb
13662   where  subt.id                     =  subb.id
13663   and    subt.language               = userenv('LANG')
13664   and    subb.id                     = sub_kle.subsidy_id
13665   and    pov.vendor_id               = to_number(sub_cplb.object1_id1)
13666   and    sub_cplb.object1_id2        =   '#'
13667   and    sub_cplb.jtot_object1_code  = 'OKX_VENDOR'
13668   and    sub_cplb.rle_code           = 'OKL_VENDOR'
13669   and    sub_cplb.cle_id             = sub_cleb.id
13670   and    sub_cplb.dnz_chr_id         = sub_cleb.dnz_chr_id
13671   and    sub_kle.id                  = sub_cleb.id
13672   and    sub_cleb.cle_id             = p_orig_cle_id
13673   and    sub_cleb.dnz_chr_id         = p_chr_id
13674   and    sub_cleb.sts_code           <> 'ABANDONED'
13675   and    sub_cleb.lse_id             = sub_lseb.id
13676   and    sub_lseb.lty_code           = 'SUBSIDY';
13677 
13678   l_subsidy_rec  l_subsidy_csr%ROWTYPE;
13679 
13680   l_asb_rec      okl_asset_subsidy_pvt.asb_rec_type;
13681   lx_asb_rec      okl_asset_subsidy_pvt.asb_rec_type;
13682 
13683   --Fetch refund details records against the old subsidy line
13684   Cursor l_subrfnd_csr (p_cpl_id in number) is
13685   Select ppyd.id
13686   from  okl_party_payment_dtls ppyd
13687   where ppyd.cpl_id  = p_cpl_id;
13688 
13689   l_ppyd_id       OKL_PARTY_PAYMENT_DTLS.ID%TYPE;
13690 
13691   l_srfvv_rec     OKL_SUBSIDY_RFND_DTLS_PVT.srfvv_rec_type;
13692   lx_srfvv_rec    OKL_SUBSIDY_RFND_DTLS_PVT.srfvv_rec_type;
13693 
13694   Begin
13695       x_return_status := Okl_Api.G_RET_STS_SUCCESS;
13696       -- Call start_activity to create savepoint, check compatibility
13697       -- and initialize message list
13698       x_return_status := Okl_Api.START_ACTIVITY(
13699                         p_api_name      => l_api_name,
13700                         p_pkg_name      => g_pkg_name,
13701                         p_init_msg_list => p_init_msg_list,
13702                         l_api_version   => l_api_version,
13703                         p_api_version   => p_api_version,
13704                         p_api_type      => '_PVT',
13705                         x_return_status => x_return_status);
13706       -- Check if activity started successfully
13707       IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13708          RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13709       ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13710          RAISE Okc_Api.G_EXCEPTION_ERROR;
13711       END IF;
13712 
13713       --1. Copy rules from old line to new line
13714       open l_rgp_csr(p_orig_cle_id => p_orig_cle_id,
13715                      p_chr_id      => p_chr_id);
13716       Loop
13717           Fetch l_rgp_csr into l_rgp_id;
13718           Exit when l_rgp_csr%NOTFOUND;
13719           okl_copy_contract_pub.Copy_Rules
13720                   (p_api_version    => p_api_version,
13721                    p_init_msg_list  => p_init_msg_list,
13722                    x_return_status  => x_return_status,
13723                    x_msg_count      => x_msg_count,
13724                    x_msg_data       => x_msg_data,
13725                    p_rgp_id         => l_rgp_id,
13726                    p_cle_id         => p_cle_id,
13727                    p_to_template_yn => 'N',
13728                    x_rgp_id         => lx_rgp_id);
13729           IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13730               RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13731           ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13732               RAISE Okc_Api.G_EXCEPTION_ERROR;
13733           END IF;
13734       End Loop;
13735       close l_rgp_csr;
13736 
13737       --2. Copy party roles from old line to new line
13738       open l_cpl_csr(p_orig_cle_id => p_orig_cle_id,
13739                      p_chr_id      => p_chr_id);
13740       Loop
13741           Fetch l_cpl_csr into l_cpl_rec;
13742           Exit when l_cpl_csr%NOTFOUND;
13743           okl_copy_contract_pub.copy_party_roles
13744                   (p_api_version    => p_api_version,
13745                    p_init_msg_list  => p_init_msg_list,
13746                    x_return_status  => x_return_status,
13747                    x_msg_count      => x_msg_count,
13748                    x_msg_data       => x_msg_data,
13749                    p_cpl_id         => l_cpl_rec.id,
13750                    p_cle_id         => p_cle_id,
13751                    p_rle_code       => l_cpl_rec.rle_code,
13752                    x_cpl_id         => lx_cpl_id);
13753           IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13754               RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13755           ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13756               RAISE Okc_Api.G_EXCEPTION_ERROR;
13757           END IF;
13758       End Loop;
13759       close l_cpl_csr;
13760 
13761       --3. Relink covered asset lines
13762       Open l_lnk_ast_csr (p_orig_cle_id => p_orig_cle_id,
13763                           p_chr_id      => p_chr_id);
13764       Loop
13765           Fetch l_lnk_ast_csr into l_cim_id;
13766           Exit when l_lnk_ast_csr%NOTFOUND;
13767           l_cimv_rec.id       := l_cim_id;
13768           l_cimv_rec.object1_id1 := to_char(p_cle_id);
13769           OKL_OKC_MIGRATION_PVT.update_contract_item
13770                                (p_api_version   => p_api_version,
13771                                 p_init_msg_list => p_init_msg_list,
13772                                 x_return_status => x_return_status,
13773                                 x_msg_count     => x_msg_count,
13774                                 x_msg_data      => x_msg_data,
13775                                 p_cimv_rec      => l_cimv_rec,
13776                                 x_cimv_rec      => lx_cimv_rec);
13777           IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13778               RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13779           ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13780               RAISE Okc_Api.G_EXCEPTION_ERROR;
13781           END IF;
13782       End Loop;
13783       Close l_lnk_ast_csr;
13784 
13785       --4. Relink SLH-SLL
13786       Open l_slh_csr (p_cle_id      => p_cle_id,
13787                       p_orig_cle_id => p_orig_cle_id,
13788                       p_chr_id      => p_chr_id
13789                      );
13790       Loop
13791           Fetch l_slh_csr into l_slh_id, l_sll_id;
13792           Exit when l_slh_csr%NOTFOUND;
13793           l_rulv_rec.id := l_sll_id;
13794           l_rulv_rec.object2_id1 := to_char(l_slh_id);
13795           OKL_RULE_PUB.update_rule
13796                  (p_api_version   => p_api_version,
13797                   p_init_msg_list => p_init_msg_list,
13798                   x_return_status => x_return_status,
13799                   x_msg_count     => x_msg_count,
13800                   x_msg_data      => x_msg_data,
13801                   p_rulv_rec      => l_rulv_rec,
13802                   x_rulv_rec      => lx_rulv_rec);
13803           IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13804               RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13805           ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13806               RAISE Okc_Api.G_EXCEPTION_ERROR;
13807           END IF;
13808       End Loop;
13809       Close l_slh_csr;
13810 
13811       --5. Sync back any new subsidy that has been added
13812       Open l_subsidy_csr(p_orig_cle_id => p_orig_cle_id,
13813                          p_chr_id      => p_chr_id);
13814       Loop
13815           Fetch l_subsidy_csr into l_subsidy_rec;
13816           Exit when l_subsidy_csr%NOTFOUND;
13817           l_asb_rec.subsidy_id              := l_subsidy_rec.subsidy_id;
13818           l_asb_rec.name                    := l_subsidy_rec.name;
13819           l_asb_rec.description             := l_subsidy_rec.description;
13820           l_asb_rec.amount                  := l_subsidy_rec.amount;
13821           l_asb_rec.subsidy_override_amount := l_subsidy_rec.subsidy_override_amount;
13822           l_asb_rec.dnz_chr_id              := l_subsidy_rec.dnz_chr_id;
13823           l_asb_rec.asset_cle_id            := p_cle_id;
13824           l_asb_rec.vendor_id               := l_subsidy_rec.vendor_id;
13825           l_asb_rec.vendor_name             := l_asb_rec.vendor_name;
13826 
13827           OKL_ASSET_SUBSIDY_PVT.create_asset_subsidy
13828                  (p_api_version   => p_api_version,
13829                   p_init_msg_list => p_init_msg_list,
13830                   x_return_status => x_return_status,
13831                   x_msg_count     => x_msg_count,
13832                   x_msg_data      => x_msg_data,
13833                   p_asb_rec       => l_asb_rec,
13834                   x_asb_rec       => lx_asb_rec);
13835           IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13836               RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13837           ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13838               RAISE Okc_Api.G_EXCEPTION_ERROR;
13839           END IF;
13840 
13841           --update link to party payment details
13842           Open l_subrfnd_csr(p_cpl_id  => l_subsidy_rec.cpl_id);
13843           Fetch l_subrfnd_csr into l_ppyd_id;
13844           If l_subrfnd_csr%NOTFOUND then
13845               NULL;
13846           Else
13847               l_srfvv_rec.id := l_ppyd_id;
13848               l_srfvv_rec.cpl_id := lx_asb_rec.cpl_id;
13849               OKL_SUBSIDY_RFND_DTLS_PVT.update_refund_dtls
13850                  (p_api_version   => p_api_version,
13851                   p_init_msg_list => p_init_msg_list,
13852                   x_return_status => x_return_status,
13853                   x_msg_count     => x_msg_count,
13854                   x_msg_data      => x_msg_data,
13855                   p_srfvv_rec     => l_srfvv_rec,
13856                   x_srfvv_rec     => lx_srfvv_rec);
13857               IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13858                   RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13859               ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13860                   RAISE Okc_Api.G_EXCEPTION_ERROR;
13861               END IF;
13862           End If;
13863           Close l_subrfnd_csr;
13864       End Loop;
13865       Close l_subsidy_csr;
13866 
13867 
13868     OKL_API.END_ACTIVITY (x_msg_count,
13869                           x_msg_data );
13870     EXCEPTION
13871     WHEN OKL_API.G_EXCEPTION_ERROR THEN
13872     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
13873                                l_api_name,
13874                                G_PKG_NAME,
13875                                'OKL_API.G_RET_STS_ERROR',
13876                                x_msg_count,
13877                                x_msg_data,
13878                                '_PVT');
13879     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
13880     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
13881                               l_api_name,
13882                               G_PKG_NAME,
13883                               'OKL_API.G_RET_STS_UNEXP_ERROR',
13884                               x_msg_count,
13885                               x_msg_data,
13886                               '_PVT');
13887     WHEN OTHERS THEN
13888     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
13889                               l_api_name,
13890                               G_PKG_NAME,
13891                               'OTHERS',
13892                               x_msg_count,
13893                               x_msg_data,
13894                               '_PVT');
13895   END copy_updated_asset_components;
13896 
13897   --Bug# 3533936:
13898   ------------------------------------------------------
13899   --update_release_asset_line called from
13900   --update_all_line
13901   -----------------------------------------------------
13902 
13903  PROCEDURE update_release_asset_line
13904             (p_api_version    IN  NUMBER,
13905              p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
13906              x_return_status  OUT NOCOPY VARCHAR2,
13907              x_msg_count      OUT NOCOPY NUMBER,
13908              x_msg_data       OUT NOCOPY VARCHAR2,
13909              p_asset_id       IN  VARCHAR2,
13910              p_chr_id         IN  NUMBER,
13911              p_clev_fin_id    IN  NUMBER,
13912              x_cle_id         OUT NOCOPY NUMBER) IS
13913 
13914 
13915   l_return_status        VARCHAR2(1)  DEFAULT Okl_Api.G_RET_STS_SUCCESS;
13916   l_api_name             CONSTANT VARCHAR2(30) := 'UPDATE_RELEASE_ASSET';
13917   l_api_version          CONSTANT NUMBER := 1.0;
13918 
13919   --cursor to find the existing asset id on release asset line
13920     cursor l_cim_fa_csr(p_fin_asst_id in number) is
13921     select
13922            fa_cim.object1_id1 asset_id,
13923            fa_cim.dnz_chr_id  chr_id
13924     from   okc_k_items fa_cim,
13925            okc_k_lines_b fa_cleb,
13926            okc_line_styles_b fa_lseb
13927     where  fa_cim.cle_id       = fa_cleb.id
13928     and    fa_cim.dnz_chr_id   = fa_cleb.dnz_chr_id
13929     and    fa_cleb.cle_id      = p_fin_asst_id
13930     and    fa_cleb.lse_id      = fa_lseb.id
13931     and    fa_lseb.lty_code    = 'FIXED_ASSET';
13932 
13933   l_asset_id okc_k_items.OBJECT1_ID1%TYPE;
13934   l_chr_id   okc_k_items.DNZ_CHR_ID%TYPE;
13935 
13936   --cursor to fetch all the lines
13937   CURSOR        l_lines_csr(p_from_cle_id in number) IS
13938     SELECT      level,
13939                 id,
13940                 chr_id,
13941                 cle_id,
13942                 dnz_chr_id,
13943                 orig_system_id1
13944     FROM        okc_k_lines_b
13945     CONNECT BY  PRIOR id = cle_id
13946     START WITH  id = p_from_cle_id;
13947 
13948   l_lines_rec l_lines_csr%ROWTYPE;
13949 
13950   --bug# 3783518 : is asset number equal in case of rebook
13951   cursor l_chk_rbk_ast(p_cle_id in number, p_chr_id in number, p_asset_id number) is
13952  select 'N' change_flag,
13953         chrb.orig_system_source_code
13954   from   fa_additions_b    fab,
13955          okl_txl_assets_b  txlb,
13956          okc_k_lines_b     fa_cleb,
13957          okc_line_styles_b fa_lseb,
13958          okc_k_headers_b   chrb
13959   where  fab.asset_number   = txlb.asset_number
13960   and    fab.asset_id       = p_asset_id
13961   and    txlb.kle_id        = fa_cleb.id
13962   and    fa_cleb.dnz_chr_id = chrb.id
13963   and    fa_cleb.cle_id     = p_cle_id
13964   and    fa_cleb.lse_id     = fa_lseb.id
13965   and    fa_lseb.lty_code   = 'FIXED_ASSET'
13966   and    chrb.id            = p_chr_id
13967   and    chrb.orig_system_source_code = 'OKL_REBOOK';
13968 
13969   l_rbk_ast_change_yn varchar2(1);
13970   l_k_source          okc_k_headers_b.orig_system_source_code%TYPE;
13971 
13972   BEGIN
13973       x_return_status := Okl_Api.G_RET_STS_SUCCESS;
13974       -- Call start_activity to create savepoint, check compatibility
13975       -- and initialize message list
13976       x_return_status := Okl_Api.START_ACTIVITY(
13977                         p_api_name      => l_api_name,
13978                         p_pkg_name      => g_pkg_name,
13979                         p_init_msg_list => p_init_msg_list,
13980                         l_api_version   => l_api_version,
13981                         p_api_version   => p_api_version,
13982                         p_api_type      => '_PVT',
13983                         x_return_status => x_return_status);
13984       -- Check if activity started successfully
13985       IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
13986          RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
13987       ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
13988          RAISE Okc_Api.G_EXCEPTION_ERROR;
13989       END IF;
13990 
13991       --------------------
13992       --Bug# 3783518
13993       --------------------
13994       for l_chk_rbk_rec in l_chk_rbk_ast(p_cle_id => p_clev_fin_id,
13995                                          p_chr_id => p_chr_id,
13996                                          p_asset_id => p_asset_id)
13997       Loop
13998           l_rbk_ast_change_yn := l_chk_rbk_rec.change_flag;
13999           l_k_source          := l_chk_rbk_rec.orig_system_source_code;
14000       end loop;
14001 
14002       If nvl(l_k_source,OKL_API.G_MISS_CHAR) = 'OKL_REBOOK' then
14003           If l_rbk_ast_change_yn    = 'Y' then
14004           --raise error : can not add new asset on a rebook
14005               OKL_API.set_message(
14006                                     p_app_name     => G_APP_NAME,
14007                                     p_msg_name     => 'OKL_REL_ASSET_RBK_NEW_AST_ADD');
14008               x_return_status := OKC_API.G_RET_STS_ERROR;
14009               RAISE OKL_API.G_EXCEPTION_ERROR;
14010           ElsIf l_rbk_ast_change_yn = 'N' then
14011               x_cle_id  := p_clev_fin_id;
14012 
14013           End If;
14014       Else
14015       --------------------
14016       --End : Bug# 3783518
14017       --------------------
14018       If nvl(p_asset_id,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR then
14019           x_cle_id     := p_clev_fin_id;
14020       Else
14021           open l_cim_fa_csr(p_fin_asst_id => p_clev_fin_id);
14022           Fetch l_cim_fa_csr into l_asset_id, l_chr_id;
14023           If l_cim_fa_csr%NOTFOUND then
14024               --raise error : invalid line information
14025               OKL_API.set_message(p_app_name     => G_APP_NAME,
14026                                   p_msg_name     => 'OKL_LLA_LINE_RECORD');
14027               RAISE Okc_Api.G_EXCEPTION_ERROR;
14028           End If;
14029           close l_cim_fa_csr;
14030           If nvl(p_asset_id,OKL_API.G_MISS_CHAR) = nvl(l_asset_id,OKL_API.G_MISS_CHAR) then
14031               x_cle_id := p_clev_fin_id;
14032           Else
14033 
14034               --Create new release asset line
14035               Create_release_asset_line
14036                   (p_api_version    => p_api_version,
14037                    p_init_msg_list  => p_init_msg_list,
14038                    x_return_status  => x_return_status,
14039                    x_msg_count      => x_msg_count,
14040                    x_msg_data       => x_msg_data,
14041                    p_asset_id       => p_asset_id,
14042                    p_chr_id         => l_chr_id,
14043                    x_cle_id         => x_cle_id);
14044 
14045               IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14046                   RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14047               ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14048                   RAISE OKL_API.G_EXCEPTION_ERROR;
14049               END IF;
14050 
14051               --Copy rules, party roles, supplier invoice details
14052               Open l_lines_csr(p_from_cle_id => x_cle_id);
14053               Loop
14054                   fetch l_lines_csr into l_lines_rec;
14055                   Exit when l_lines_csr%NOTFOUND;
14056                   copy_updated_asset_components
14057                        (p_api_version    => p_api_version,
14058                         p_init_msg_list  => p_init_msg_list,
14059                         x_return_status  => x_return_status,
14060                         x_msg_count      => x_msg_count,
14061                         x_msg_data       => x_msg_data,
14062                         p_cle_id         => l_lines_rec.id,
14063                         p_orig_cle_id    => l_lines_rec.orig_system_id1,
14064                         p_chr_id         => l_chr_id);
14065                   IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14066                       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14067                   ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14068                       RAISE OKL_API.G_EXCEPTION_ERROR;
14069                   END IF;
14070               End Loop;
14071               Close l_lines_csr;
14072 
14073 
14074               --Delete old line
14075               OKL_CONTRACT_PUB.delete_contract_line(
14076                     p_api_version    => p_api_version,
14077                     p_init_msg_list  => p_init_msg_list,
14078                     x_return_status  => x_return_status,
14079                     x_msg_count      => x_msg_count,
14080                     x_msg_data       => x_msg_data,
14081                     p_line_id        =>  p_clev_fin_id
14082                      );
14083 
14084               IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14085                   RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14086               ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14087                   RAISE OKL_API.G_EXCEPTION_ERROR;
14088               END IF;
14089 
14090 
14091           End If;
14092       End If; --Bug# 3783518
14093       End If;
14094     OKL_API.END_ACTIVITY (x_msg_count,
14095                           x_msg_data );
14096     EXCEPTION
14097     WHEN OKL_API.G_EXCEPTION_ERROR THEN
14098     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
14099                                l_api_name,
14100                                G_PKG_NAME,
14101                                'OKL_API.G_RET_STS_ERROR',
14102                                x_msg_count,
14103                                x_msg_data,
14104                                '_PVT');
14105     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
14106     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
14107                               l_api_name,
14108                               G_PKG_NAME,
14109                               'OKL_API.G_RET_STS_UNEXP_ERROR',
14110                               x_msg_count,
14111                               x_msg_data,
14112                               '_PVT');
14113     WHEN OTHERS THEN
14114     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
14115                               l_api_name,
14116                               G_PKG_NAME,
14117                               'OTHERS',
14118                               x_msg_count,
14119                               x_msg_data,
14120                               '_PVT');
14121   END update_Release_asset_Line;
14122 
14123 
14124   --Bug# 3533936
14125   ---------------------------------------------------------
14126   --Local procedure to resolve residual value on release
14127   --asset line
14128   --------------------------------------------------------
14129   PROCEDURE Resolve_Residual_Value(
14130             p_api_version    IN  NUMBER,
14131             p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
14132             x_return_status  OUT NOCOPY VARCHAR2,
14133             x_msg_count      OUT NOCOPY NUMBER,
14134             x_msg_data       OUT NOCOPY VARCHAR2,
14135             p_asset_number   IN  VARCHAR2,
14136             p_clev_fin_rec   IN  clev_rec_type,
14137             p_klev_fin_rec   IN  klev_rec_type,
14138             --bug# 4631549
14139             p_call_mode      IN  Varchar2,
14140             x_clev_fin_rec   OUT NOCOPY clev_rec_type,
14141             x_klev_fin_rec   OUT NOCOPY klev_rec_type) IS
14142 
14143   l_return_status        VARCHAR2(1)  DEFAULT Okl_Api.G_RET_STS_SUCCESS;
14144   l_api_name             CONSTANT VARCHAR2(30) := 'RESOLVE_RESIDUL';
14145   l_api_version          CONSTANT NUMBER := 1.0;
14146 
14147 
14148   l_top_line_id     OKC_K_LINES_B.ID%TYPE;
14149   l_oec             OKL_K_LINES.OEC%TYPE;
14150   l_residual_value  OKL_K_LINES.RESIDUAL_VALUE%TYPE;
14151   lx_residual_value OKL_K_LINES.RESIDUAL_VALUE%TYPE;
14152 
14153 
14154   --cursor to get model line id
14155   CURSOR l_modelline_csr(p_cle_id IN NUMBER,
14156                          p_chr_id IN NUMBER) IS
14157   SELECT model_cleb.id
14158   FROM   OKC_K_LINES_B        model_cleb,
14159          OKC_LINE_STYLES_B    model_lseb
14160   WHERE  model_cleb.cle_id     = p_cle_id
14161   AND    model_cleb.dnz_chr_id = p_chr_id
14162   AND    model_cleb.lse_id     = model_lseb.id
14163   AND    model_lseb.lty_code   = 'ITEM';
14164 
14165   l_model_line_id   OKC_K_LINES_B.ID%TYPE;
14166 
14167   --Bug# 4631549
14168   cursor  l_exp_cost_csr (p_kle_id in number) is
14169   select  kle.expected_asset_cost
14170   from    okl_k_lines kle
14171   where   kle.id = p_kle_id;
14172 
14173   l_exp_cost_rec l_exp_cost_csr%ROWTYPE;
14174 
14175 Begin
14176 
14177       x_return_status := Okl_Api.G_RET_STS_SUCCESS;
14178       -- Call start_activity to create savepoint, check compatibility
14179       -- and initialize message list
14180       x_return_status := Okl_Api.START_ACTIVITY(
14181                         p_api_name      => l_api_name,
14182                         p_pkg_name      => g_pkg_name,
14183                         p_init_msg_list => p_init_msg_list,
14184                         l_api_version   => l_api_version,
14185                         p_api_version   => p_api_version,
14186                         p_api_type      => '_PVT',
14187                         x_return_status => x_return_status);
14188       -- Check if activity started successfully
14189       IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14190          RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14191       ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14192          RAISE Okc_Api.G_EXCEPTION_ERROR;
14193       END IF;
14194 
14195       --Bug# 4631549
14196       If nvl(p_call_mode,okl_api.g_miss_char) = 'RELEASE_CONTRACT' then
14197           open l_exp_cost_csr (p_kle_id => p_clev_fin_rec.id);
14198           fetch l_exp_cost_csr into l_exp_cost_rec;
14199           close l_exp_cost_csr;
14200       end if;
14201 
14202      Open l_modelline_csr(p_cle_id  => p_clev_fin_rec.id,
14203                          p_chr_id  => p_clev_fin_rec.dnz_chr_id);
14204      Fetch l_modelline_csr into l_model_line_id;
14205      If l_modelline_csr%NOTFOUND then
14206          --raise errorr: invliad line information
14207          OKL_API.set_message(p_app_name     => G_APP_NAME,
14208                              p_msg_name     => 'OKL_LLA_LINE_RECORD');
14209          RAISE Okc_Api.G_EXCEPTION_ERROR;
14210      End If;
14211      Close l_modelline_csr;
14212 
14213      IF (p_klev_fin_rec.residual_percentage IS NOT NULL OR
14214          p_klev_fin_rec.residual_percentage <> OKL_API.G_MISS_NUM) AND
14215          (p_klev_fin_rec.residual_value IS NOT NULL OR
14216           p_klev_fin_rec.residual_value <> OKL_API.G_MISS_NUM) THEN
14217 
14218       l_top_line_id    := p_clev_fin_rec.id;
14219       --Bug# 4631549
14220       If nvl(p_call_mode,okl_api.g_miss_char) = 'RELEASE_CONTRACT' then
14221           l_oec := l_exp_cost_rec.expected_asset_cost;
14222       else
14223           l_oec  := p_klev_fin_rec.oec;
14224       end if;
14225       l_residual_value := p_klev_fin_rec.residual_value;
14226 
14227       get_res_per_upd_fin_rec(p_api_version        => p_api_version,
14228                               p_init_msg_list      => p_init_msg_list,
14229                               x_return_status      => x_return_status,
14230                               x_msg_count          => x_msg_count,
14231                               x_msg_data           => x_msg_data,
14232                               P_new_yn             => 'N',
14233                               p_asset_number       => p_clev_fin_rec.name,
14234                               p_res_value          => l_residual_value,
14235                               p_oec                => l_oec,
14236                               p_top_line_id        => l_top_line_id,
14237                               p_dnz_chr_id         => p_clev_fin_rec.dnz_chr_id,
14238                               x_fin_clev_rec       => x_clev_fin_rec,
14239                               x_fin_klev_rec       => x_klev_fin_rec,
14240                               p_validate_fin_line  => OKL_API.G_TRUE); -- 4414408
14241 
14242       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14243         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14244       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14245         RAISE OKL_API.G_EXCEPTION_ERROR;
14246       END IF;
14247 
14248       res_value_calc_upd_fin_rec(p_api_version        => p_api_version,
14249                                  p_init_msg_list      => p_init_msg_list,
14250                                  x_return_status      => x_return_status,
14251                                  x_msg_count          => x_msg_count,
14252                                  x_msg_data           => x_msg_data,
14253                                  P_new_yn             => 'N',
14254                                  p_asset_number       => p_asset_number,
14255 				 -- 4414408
14256                                  p_top_line_id        => l_top_line_id,
14257                                  p_dnz_chr_id         => p_clev_fin_rec.dnz_chr_id,
14258                                  x_fin_clev_rec       => x_clev_fin_rec,
14259                                  x_fin_klev_rec       => x_klev_fin_rec,
14260                                  x_res_value          => lx_residual_value,
14261                                  p_validate_fin_line  => OKL_API.G_TRUE); -- 4414408
14262 
14263       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14264         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14265       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14266         RAISE OKL_API.G_EXCEPTION_ERROR;
14267       END IF;
14268 
14269     ELSIF (p_klev_fin_rec.residual_percentage IS NULL OR
14270        p_klev_fin_rec.residual_percentage = OKL_API.G_MISS_NUM) AND
14271        (p_klev_fin_rec.residual_value IS NOT NULL OR
14272        p_klev_fin_rec.residual_value <> OKL_API.G_MISS_NUM) THEN
14273 
14274       l_top_line_id    := p_clev_fin_rec.id;
14275       --Bug# 4631549
14276       If nvl(p_call_mode,okl_api.g_miss_char) = 'RELEASE_CONTRACT' then
14277           l_oec := l_exp_cost_rec.expected_asset_cost;
14278       else
14279           l_oec  := p_klev_fin_rec.oec;
14280       end if;
14281       l_residual_value := p_klev_fin_rec.residual_value;
14282 
14283 
14284       get_res_per_upd_fin_rec(p_api_version        => p_api_version,
14285                               p_init_msg_list      => p_init_msg_list,
14286                               x_return_status      => x_return_status,
14287                               x_msg_count          => x_msg_count,
14288                               x_msg_data           => x_msg_data,
14289                               P_new_yn             => 'N',
14290                               p_asset_number       => p_clev_fin_rec.name,
14291                               p_res_value          => l_residual_value,
14292                               p_oec                => l_oec,
14293                               p_top_line_id        => l_top_line_id,
14294                               p_dnz_chr_id         => p_clev_fin_rec.dnz_chr_id,
14295                               x_fin_clev_rec       => x_clev_fin_rec,
14296                               x_fin_klev_rec       => x_klev_fin_rec,
14297                               p_validate_fin_line  => OKL_API.G_TRUE);
14298 
14299       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14300         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14301       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14302         RAISE OKL_API.G_EXCEPTION_ERROR;
14303       END IF;
14304 
14305     ELSIF (p_klev_fin_rec.residual_percentage IS NOT NULL OR
14306        p_klev_fin_rec.residual_percentage <> OKL_API.G_MISS_NUM) AND
14307        (p_klev_fin_rec.residual_value IS NULL OR
14308        p_klev_fin_rec.residual_value = OKL_API.G_MISS_NUM) THEN
14309 
14310      --Bug# 4631549
14311      l_top_line_id    := p_clev_fin_rec.id;
14312 
14313       res_value_calc_upd_fin_rec(p_api_version   => p_api_version,
14314                                  p_init_msg_list => p_init_msg_list,
14315                                  x_return_status => x_return_status,
14316                                  x_msg_count     => x_msg_count,
14317                                  x_msg_data      => x_msg_data,
14318                                  P_new_yn        => 'N',
14319                                  p_asset_number  => p_asset_number,
14320 				 -- 4414408
14321                                  p_top_line_id   => p_clev_fin_rec.id,
14322                                  p_dnz_chr_id    => p_clev_fin_rec.dnz_chr_id,
14323                                  x_fin_clev_rec  => x_clev_fin_rec,
14324                                  x_fin_klev_rec  => x_klev_fin_rec,
14325                                  x_res_value     => lx_residual_value,
14326                                  p_validate_fin_line  => OKL_API.G_TRUE);
14327       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14328         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14329       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14330         RAISE OKL_API.G_EXCEPTION_ERROR;
14331       END IF;
14332     END IF;
14333 
14334    OKL_API.END_ACTIVITY (x_msg_count,
14335                           x_msg_data );
14336     EXCEPTION
14337     WHEN OKL_API.G_EXCEPTION_ERROR THEN
14338     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
14339                                l_api_name,
14340                                G_PKG_NAME,
14341                                'OKL_API.G_RET_STS_ERROR',
14342                                x_msg_count,
14343                                x_msg_data,
14344                                '_PVT');
14345     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
14346     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
14347                               l_api_name,
14348                               G_PKG_NAME,
14349                               'OKL_API.G_RET_STS_UNEXP_ERROR',
14350                               x_msg_count,
14351                               x_msg_data,
14352                               '_PVT');
14353     WHEN OTHERS THEN
14354     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
14355                               l_api_name,
14356                               G_PKG_NAME,
14357                               'OTHERS',
14358                               x_msg_count,
14359                               x_msg_data,
14360                               '_PVT');
14361   End Resolve_Residual_Value;
14362 
14363   --Bug# 3533936
14364   -----------------------------------------------------
14365   --Modify Release Asset line based on the user inputs
14366   --provided for modifiable columns during Release
14367   ----------------------------------------------------
14368    PROCEDURE Modify_Release_Asset_Line(
14369             p_api_version    IN  NUMBER,
14370             p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
14371             x_return_status  OUT NOCOPY VARCHAR2,
14372             x_msg_count      OUT NOCOPY NUMBER,
14373             x_msg_data       OUT NOCOPY VARCHAR2,
14374             p_clev_fin_rec   IN  clev_rec_type,
14375             p_klev_fin_rec   IN  klev_rec_type,
14376 	     --akrangan Bug# 5362977 start
14377             p_clev_model_rec IN  clev_rec_type,
14378 	     --akrangan Bug# 5362977 end
14379             p_cimv_model_rec IN  cimv_rec_type,
14380             p_clev_fa_rec    IN  clev_rec_type,
14381             p_cimv_fa_rec    IN  cimv_rec_type,
14382             p_talv_fa_rec    IN  talv_rec_type,
14383             p_itiv_ib_tbl    IN  itiv_tbl_type,
14384             p_cle_id         IN  NUMBER,
14385             --Bug# 4631549
14386             p_call_mode      IN  VARCHAR2,
14387             x_clev_fin_rec   OUT NOCOPY clev_rec_type,
14388             x_klev_fin_rec   OUT NOCOPY klev_rec_type,
14389             x_clev_model_rec OUT NOCOPY clev_rec_type,
14390             x_klev_model_rec OUT NOCOPY klev_rec_type,
14391             x_clev_fa_rec    OUT NOCOPY clev_rec_type,
14392             x_klev_fa_rec    OUT NOCOPY klev_rec_type,
14393             x_clev_ib_tbl    OUT NOCOPY clev_tbl_type,
14394             x_klev_ib_tbl    OUT NOCOPY klev_tbl_type
14395             ) IS
14396 
14397 
14398 
14399   l_return_status        VARCHAR2(1)  DEFAULT Okl_Api.G_RET_STS_SUCCESS;
14400   l_api_name             CONSTANT VARCHAR2(30) := 'MODIFY_RELEASE_ASSET';
14401   l_api_version          CONSTANT NUMBER := 1.0;
14402 
14403   --cursor to get fixed asset details
14404   cursor l_fa_csr (p_fin_cle_id in number,
14405                    p_chr_id     in number) is
14406   select txlb.id,
14407          txlb.depreciation_cost,
14408          txlb.current_units,
14409          txlb.percent_salvage_value,
14410          txlb.salvage_value,
14411          txlb.asset_number
14412   from   okl_trx_assets    trx,
14413          okl_txl_assets_b  txlb,
14414          okc_k_lines_b     cleb_fa,
14415          okc_line_styles_b lseb_fa
14416   where  trx.id             = txlb.tas_id
14417   and    trx.tsu_code       = 'ENTERED'
14418   --Bug# 3783518
14419   --and    trx.tas_type       = 'CRL'
14420   and    txlb.kle_id        = cleb_fa.id
14421   --Bug# 3783518
14422   --and    txlb.tal_type      = 'CRL'
14423   and    cleb_fa.cle_id     = p_fin_cle_id
14424   and    cleb_fa.dnz_chr_id = p_chr_id
14425   and    cleb_fa.lse_id     = lseb_fa.id
14426   and    lseb_fa.lty_code   = 'FIXED_ASSET';
14427 
14428 
14429   l_fa_rec l_fa_csr%ROWTYPE;
14430 
14431   --cursor to get install base details
14432   cursor l_ib_csr (p_fin_cle_id in number,
14433                    p_chr_id     in number) is
14434   select iti.id,
14435          iti.serial_number,
14436          iti.instance_number_ib,
14437          iti.object_id1_new,
14438          iti.object_id2_new
14439   from   okl_trx_assets    trx,
14440          okl_txl_itm_insts iti,
14441          okc_k_lines_b     cleb_ib,
14442          okc_line_styles_b lseb_ib,
14443          okc_k_lines_b     cleb_inst,
14444          okc_line_styles_b lseb_inst
14445   where  trx.id               = iti.tas_id
14446   and    trx.tsu_code         = 'ENTERED'
14447   --akrangan bug 5362977 start
14448    AND    trx.tas_type         IN  ('CRL','CFA','CRB')
14449   --akrangan bug 5362977 end
14450   and    iti.kle_id           = cleb_ib.id
14451   --akrangan bug 5362977 start
14452   AND    iti.tal_type         IN ('CRL','CFA','CRB')
14453   --akrangan bug 5362977 end
14454   and    cleb_ib.cle_id       = cleb_inst.id
14455   and    cleb_ib.dnz_chr_id   = cleb_inst.dnz_chr_id
14456   and    cleb_ib.lse_id       = lseb_ib.id
14457   and    lseb_ib.lty_code     = 'INST_ITEM'
14458   and    cleb_inst.cle_id     = p_fin_cle_id
14459   and    cleb_inst.dnz_chr_id = p_chr_id
14460   and    cleb_inst.lse_id     = lseb_inst.id
14461   and    lseb_inst.lty_code   = 'FREE_FORM2';
14462 
14463   l_ib_rec l_ib_csr%ROWTYPE;
14464 
14465   l_clev_fin_rec     clev_rec_type;
14466   l_klev_fin_rec     klev_rec_type;
14467   l_talv_fa_rec      talv_rec_type;
14468   l_itiv_ib_tbl      itiv_tbl_type;
14469 
14470   l_rel_ast_clev_fin_rec clev_rec_type;
14471   l_rel_ast_klev_fin_rec klev_rec_type;
14472   l_rel_ast_talv_rec     talv_rec_type;
14473   l_rel_ast_itiv_ib_tbl  itiv_tbl_type;
14474 
14475   i  Number;
14476   j  Number;
14477 
14478  --cursor to fetch all the lines
14479   CURSOR        l_lines_csr(p_from_cle_id in number) IS
14480     SELECT      level,
14481                 cleb.id,
14482                 cleb.chr_id,
14483                 cleb.cle_id,
14484                 cleb.dnz_chr_id,
14485                 cleb.lse_id
14486     FROM        okc_k_lines_b cleb
14487     CONNECT BY  PRIOR cleb.id = cle_id
14488     START WITH  cleb.id = p_from_cle_id;
14489 
14490   l_lines_rec l_lines_csr%ROWTYPE;
14491 
14492   --cursor to get lty_code
14493   CURSOR l_lty_csr (p_lse_id in number) is
14494   SELECT lty_code
14495   from   okc_line_styles_b
14496   where  id = p_lse_id;
14497 
14498   l_lty_code    OKC_LINE_STYLES_B.lty_code%TYPE;
14499 
14500   lx_clev_rec   clev_rec_type;
14501   lx_klev_rec   klev_rec_type;
14502 
14503   --BUG# NBV:
14504   --cursor to get model and fixed asset lines
14505   cursor l_cleb_csr (p_cle_id in number,
14506                      p_chr_id in number,
14507                      p_lty_code in varchar2) is
14508   select cleb.id,
14509          cleb.price_unit
14510   from   okc_k_lines_b cleb,
14511          okc_line_styles_b lseb
14512   where  cleb.cle_id      = p_cle_id
14513   and    cleb.dnz_chr_id  = p_chr_id
14514   and    cleb.lse_id      = lseb.id
14515   and    lseb.lty_code    = p_lty_code;
14516 
14517   l_cleb_rec  l_cleb_csr%ROWTYPE;
14518   rec_count   NUMBER;
14519 
14520   l_clev_price_tbl   clev_tbl_type;
14521   lx_clev_price_tbl  clev_tbl_type;
14522   l_klev_price_tbl   klev_tbl_type;
14523   lx_klev_price_tbl  klev_tbl_type;
14524  --akrangan Bug# 5362977 start
14525      l_clev_fa_rec     clev_rec_type;
14526      l_klev_fa_rec     klev_rec_type;
14527      lx_clev_fa_rec    clev_rec_type;
14528      lx_klev_fa_rec    klev_rec_type;
14529      l_cimv_model_rec  cimv_rec_type;
14530      x_cimv_model_rec  cimv_rec_type;
14531 
14532      --cursor to check if the contract is undergoing on-line rebook
14533      CURSOR l_chk_rbk_csr(p_chr_id IN NUMBER) is
14534      SELECT '!'
14535      FROM   okc_k_headers_b chr,
14536             okl_trx_contracts ktrx
14537      WHERE  ktrx.khr_id_new = chr.id
14538      AND    ktrx.tsu_code = 'ENTERED'
14539      AND    ktrx.rbr_code is NOT NULL
14540      AND    ktrx.tcn_type = 'TRBK'
14541      --rkuttiya added for 12.1.1 Multi GAAP
14542      AND   representation_type = 'PRIMARY'
14543      --
14544      AND    chr.id = p_chr_id
14545      AND    chr.orig_system_source_code = 'OKL_REBOOK';
14546 
14547      l_rbk_khr      VARCHAR2(1);
14548      --akrangan Bug# 5362977 end
14549 
14550   BEGIN
14551 
14552       x_return_status := Okl_Api.G_RET_STS_SUCCESS;
14553       -- Call start_activity to create savepoint, check compatibility
14554       -- and initialize message list
14555       x_return_status := Okl_Api.START_ACTIVITY(
14556                         p_api_name      => l_api_name,
14557                         p_pkg_name      => g_pkg_name,
14558                         p_init_msg_list => p_init_msg_list,
14559                         l_api_version   => l_api_version,
14560                         p_api_version   => p_api_version,
14561                         p_api_type      => '_PVT',
14562                         x_return_status => x_return_status);
14563       -- Check if activity started successfully
14564       IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14565          RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14566       ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14567          RAISE Okc_Api.G_EXCEPTION_ERROR;
14568       END IF;
14569          -- akrangan Bug# 5362977 start
14570          l_rbk_khr := '?';
14571          OPEN l_chk_rbk_csr (p_chr_id => p_clev_fin_rec.dnz_chr_id);
14572          FETCH l_chk_rbk_csr INTO l_rbk_khr;
14573          CLOSE l_chk_rbk_csr;
14574          -- akrangan Bug# 5176649 end
14575 
14576 
14577       --1. update modifiable parameters on financial asset line
14578 
14579       l_clev_fin_rec.id                    := p_cle_id;
14580       l_klev_fin_rec.id                    := p_cle_id;
14581       l_klev_fin_rec.PRESCRIBED_ASSET_YN   := p_klev_fin_rec.PRESCRIBED_ASSET_YN;
14582 
14583       l_klev_fin_rec.RESIDUAL_GRNTY_AMOUNT := p_klev_fin_rec.RESIDUAL_GRNTY_AMOUNT;
14584 
14585       l_klev_fin_rec.RESIDUAL_CODE         := p_klev_fin_rec.RESIDUAL_CODE;
14586 
14587       If nvl(p_klev_fin_rec.RESIDUAL_VALUE,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM and
14588          nvl(p_klev_fin_rec.RESIDUAL_PERCENTAGE,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM  then
14589           l_klev_fin_rec.RESIDUAL_VALUE        := p_klev_fin_rec.RESIDUAL_VALUE;
14590           l_klev_fin_rec.RESIDUAL_PERCENTAGE   := p_klev_fin_rec.RESIDUAL_PERCENTAGE;
14591       End If;
14592 
14593       If nvl(p_klev_fin_rec.RESIDUAL_PERCENTAGE,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM and
14594          nvl(p_klev_fin_rec.RESIDUAL_VALUE,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM then
14595           l_klev_fin_rec.RESIDUAL_PERCENTAGE   := p_klev_fin_rec.RESIDUAL_PERCENTAGE;
14596           l_klev_fin_rec.RESIDUAL_VALUE        := NULL;
14597       End If;
14598 
14599       If nvl(p_klev_fin_rec.RESIDUAL_PERCENTAGE,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM and
14600          nvl(p_klev_fin_rec.RESIDUAL_VALUE,OKL_API.G_MISS_NUM) <>  OKL_API.G_MISS_NUM then
14601           l_klev_fin_rec.RESIDUAL_VALUE        := p_klev_fin_rec.RESIDUAL_VALUE;
14602           l_klev_fin_rec.RESIDUAL_PERCENTAGE   := NULL;
14603       End If;
14604 
14605       --BUG# : NBV - update price unit on fixed asset and model lines
14606       rec_count := 0;
14607       open l_cleb_csr(p_cle_id   => p_cle_id,
14608                       p_chr_id   => p_clev_fin_rec.dnz_chr_id,
14609                       p_lty_code => 'FIXED_ASSET');
14610       fetch l_cleb_csr into l_cleb_rec;
14611       If l_cleb_csr%NOTFOUND then
14612           Null;
14613       Else
14614           rec_count                              := rec_count+1;
14615           l_clev_price_tbl(rec_count).id         := l_cleb_rec.id;
14616           l_klev_price_tbl(rec_count).id         := l_cleb_rec.id;
14617           l_clev_price_tbl(rec_count).price_unit := p_talv_fa_rec.original_cost;
14618       End If;
14619       close l_cleb_csr;
14620 
14621       open l_cleb_csr(p_cle_id   => p_cle_id,
14622                       p_chr_id   => p_clev_fin_rec.dnz_chr_id,
14623                       p_lty_code => 'ITEM');
14624       fetch l_cleb_csr into l_cleb_rec;
14625       If l_cleb_csr%NOTFOUND then
14626           Null;
14627       Else
14628           rec_count                              := rec_count+1;
14629           l_clev_price_tbl(rec_count).id         := l_cleb_rec.id;
14630           l_klev_price_tbl(rec_count).id         := l_cleb_rec.id;
14631           l_clev_price_tbl(rec_count).price_unit := p_talv_fa_rec.original_cost;
14632       End If;
14633       close l_cleb_csr;
14634 
14635       If l_clev_price_tbl.COUNT > 0 then
14636 
14637           OKL_CONTRACT_PUB.update_contract_line(
14638                   p_api_version    => p_api_version,
14639                   p_init_msg_list  => p_init_msg_list,
14640                   x_return_status  => x_return_status,
14641                   x_msg_count      => x_msg_count,
14642                   x_msg_data       => x_msg_data,
14643                   p_clev_tbl       => l_clev_price_tbl,
14644                   p_klev_tbl       => l_klev_price_tbl,
14645                   x_clev_tbl       => lx_clev_price_tbl,
14646                   x_klev_tbl       => lx_klev_price_tbl);
14647 
14648           IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14649               RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14650           ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14651               RAISE Okc_Api.G_EXCEPTION_ERROR;
14652           END IF;
14653 
14654           --Bug# 4631549
14655           If nvl(p_call_mode,okl_api.g_miss_char) = 'RELEASE_ASSET' then
14656               --Calculate oec
14657               OKL_EXECUTE_FORMULA_PUB.EXECUTE(p_api_version   => p_api_version,
14658                                               p_init_msg_list => p_init_msg_list,
14659                                               x_return_status => x_return_status,
14660                                               x_msg_count     => x_msg_count,
14661                                               x_msg_data      => x_msg_data,
14662                                               p_formula_name  => G_FORMULA_OEC,
14663                                               p_contract_id   => p_clev_fin_rec.dnz_chr_id,
14664                                               p_line_id       => p_cle_id,
14665                                               x_value         => l_klev_fin_rec.oec);
14666               IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14667                   OKL_API.set_message(p_app_name     => G_APP_NAME,
14668                                       p_msg_name     => G_CALC_AMOUNT,
14669                                       p_token1       => G_AMT_TOKEN,
14670                                       p_token1_value => 'OEC');
14671                   RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14672               ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14673                   OKL_API.set_message(p_app_name     => G_APP_NAME,
14674                                       p_msg_name     => G_CALC_AMOUNT,
14675                                       p_token1       => G_AMT_TOKEN,
14676                                       p_token1_value => 'OEC');
14677                   RAISE OKL_API.G_EXCEPTION_ERROR;
14678                END IF;
14679           End If;
14680       END IF;
14681       --END BUG: NBV
14682 
14683 
14684 
14685       --set adjustments to null
14686       l_klev_fin_rec.CAPITAL_REDUCTION_PERCENT := null;
14687       l_klev_fin_rec.CAPITAL_REDUCTION         := null;
14688       l_klev_fin_rec.TRADEIN_AMOUNT            := null;
14689 
14690       --Bug#5601721 -- start
14691       l_klev_fin_rec.DOWN_PAYMENT_RECEIVER_CODE := null;
14692       l_klev_fin_rec.CAPITALIZE_DOWN_PAYMENT_YN:= null;
14693       l_klev_fin_rec.CAPITALIZED_INTEREST  := null;
14694       update_financial_asset_line(
14695             p_api_version    => p_api_version,
14696             p_init_msg_list  => p_init_msg_list,
14697             x_return_status  => x_return_status,
14698             x_msg_count      => x_msg_count,
14699             x_msg_data       => x_msg_data,
14700             p_clev_rec       => l_clev_fin_rec,
14701             p_klev_rec       => l_klev_fin_rec,
14702             x_clev_rec       => l_rel_ast_clev_fin_rec,
14703             x_klev_rec       => l_rel_ast_klev_fin_rec);
14704 
14705       IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14706          RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14707       ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14708          RAISE Okc_Api.G_EXCEPTION_ERROR;
14709       END IF;
14710       --Bug#5601721 -- end
14711 
14712       --Bug# 4631549
14713       If nvl(p_call_mode,okl_api.g_miss_char) = 'RELEASE_ASSET' then
14714           --calculate capital_amount
14715           OKL_EXECUTE_FORMULA_PUB.EXECUTE(p_api_version   => p_api_version,
14716                                       p_init_msg_list => p_init_msg_list,
14717                                       x_return_status => x_return_status,
14718                                       x_msg_count     => x_msg_count,
14719                                       x_msg_data      => x_msg_data,
14720                                       p_formula_name  => G_FORMULA_CAP,
14721                                       p_contract_id   => p_clev_fin_rec.dnz_chr_id,
14722                                       p_line_id       => p_cle_id,
14723                                       x_value         => l_klev_fin_rec.capital_amount);
14724           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14725               OKL_API.set_message(p_app_name     => G_APP_NAME,
14726                             p_msg_name     => G_CALC_AMOUNT,
14727                             p_token1       => G_AMT_TOKEN,
14728                             p_token1_value => 'Capital Amount');
14729               RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14730           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14731               OKL_API.set_message(p_app_name     => G_APP_NAME,
14732                             p_msg_name     => G_CALC_AMOUNT,
14733                             p_token1       => G_AMT_TOKEN,
14734                             p_token1_value => 'Capital Amount');
14735               RAISE OKL_API.G_EXCEPTION_ERROR;
14736           END IF;
14737        End If;
14738 
14739   -- akrangan bug 5362977 start
14740          l_clev_fin_rec.item_description := p_talv_fa_rec.description;
14741   -- akrangan bug 5362977 end
14742       update_financial_asset_line(
14743             p_api_version    => p_api_version,
14744             p_init_msg_list  => p_init_msg_list,
14745             x_return_status  => x_return_status,
14746             x_msg_count      => x_msg_count,
14747             x_msg_data       => x_msg_data,
14748             p_clev_rec       => l_clev_fin_rec,
14749             p_klev_rec       => l_klev_fin_rec,
14750             x_clev_rec       => l_rel_ast_clev_fin_rec,
14751             x_klev_rec       => l_rel_ast_klev_fin_rec);
14752 
14753       IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14754          RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14755       ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14756          RAISE Okc_Api.G_EXCEPTION_ERROR;
14757       END IF;
14758         -- akrangan Bug# 5362977 start
14759          IF l_rbk_khr = '!' THEN
14760            l_clev_fa_rec.id := p_clev_fa_rec.id;
14761            l_klev_fa_rec.id := p_clev_fa_rec.id;
14762 
14763            l_clev_fa_rec.item_description := p_talv_fa_rec.description;
14764 
14765            l_klev_fa_rec.Year_Built       := p_talv_fa_rec.year_manufactured;
14766            OKL_CONTRACT_PUB.update_contract_line(p_api_version   => p_api_version,
14767                                                  p_init_msg_list => p_init_msg_list,
14768                                                  x_return_status => x_return_status,
14769                                                  x_msg_count     => x_msg_count,
14770                                                  x_msg_data      => x_msg_data,
14771                                                  p_clev_rec      => l_clev_fa_rec,
14772                                                  p_klev_rec      => l_klev_fa_rec,
14773                                                  x_clev_rec      => lx_clev_fa_rec,
14774                                                  x_klev_rec      => lx_klev_fa_rec);
14775 
14776            IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14777               RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14778            ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14779              RAISE Okc_Api.G_EXCEPTION_ERROR;
14780            END IF;
14781 
14782            x_return_status := get_rec_cimv(p_clev_model_rec.id,
14783                                            p_clev_fin_rec.dnz_chr_id,
14784                                            l_cimv_model_rec);
14785            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14786             OKL_API.set_message(p_app_name     => G_APP_NAME,
14787                               p_msg_name     => G_FETCHING_INFO,
14788                               p_token1       => G_REC_NAME_TOKEN,
14789                               p_token1_value => 'OKC_K_ITEMS_V Record');
14790               RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
14791            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14792             OKL_API.set_message(p_app_name     => G_APP_NAME,
14793                               p_msg_name     => G_FETCHING_INFO,
14794                               p_token1       => G_REC_NAME_TOKEN,
14795                               p_token1_value => 'OKC_K_ITEMS_V Record');
14796               RAISE OKL_API.G_EXCEPTION_ERROR;
14797            END IF;
14798 
14799            l_cimv_model_rec.object1_id1 := p_cimv_model_rec.object1_id1;
14800            l_cimv_model_rec.object1_id2 := p_cimv_model_rec.object1_id2;
14801 
14802            OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version   => p_api_version,
14803                                                      p_init_msg_list => p_init_msg_list,
14804                                                      x_return_status => x_return_status,
14805                                                      x_msg_count     => x_msg_count,
14806                                                      x_msg_data      => x_msg_data,
14807                                                      p_cimv_rec      => l_cimv_model_rec,
14808                                                      x_cimv_rec      => x_cimv_model_rec);
14809 
14810            IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14811              RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14812            ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14813              RAISE Okc_Api.G_EXCEPTION_ERROR;
14814            END IF;
14815 
14816          END IF;
14817          --akrangan Bug# 5362977 end
14818 
14819       --2. update modifiable parameters on FA transaction line
14820       --get fixed asset details
14821       open l_fa_csr(p_fin_cle_id => p_cle_id,
14822                     p_chr_id     => p_clev_fin_rec.dnz_chr_id);
14823       fetch l_fa_csr into l_fa_rec;
14824       If l_fa_csr%NOTFOUND then
14825           --raise error:invalid line information
14826           OKL_API.set_message(p_app_name     => G_APP_NAME,
14827                               p_msg_name     => 'OKL_LLA_LINE_RECORD');
14828           RAISE Okc_Api.G_EXCEPTION_ERROR;
14829       End If;
14830       close l_fa_csr;
14831 
14832       l_talv_fa_rec.id                    := l_fa_rec.id;
14833       l_talv_fa_rec.DEPRN_METHOD          := p_talv_fa_rec.DEPRN_METHOD;
14834       l_talv_fa_rec.LIFE_IN_MONTHS        := p_talv_fa_rec.LIFE_IN_MONTHS;
14835       l_talv_fa_rec.DEPRN_RATE            := p_talv_fa_rec.DEPRN_RATE;
14836       l_talv_fa_rec.FA_LOCATION_ID        := p_talv_fa_rec.FA_LOCATION_ID;
14837       l_talv_fa_rec.SALVAGE_VALUE         := p_talv_fa_rec.SALVAGE_VALUE;
14838       l_talv_fa_rec.PERCENT_SALVAGE_VALUE := p_talv_fa_rec.PERCENT_SALVAGE_VALUE;
14839              -- akrangan Bug# 5362977 start
14840          IF l_rbk_khr = '!' THEN
14841            l_talv_fa_rec.year_manufactured     := p_talv_fa_rec.year_manufactured;
14842            l_talv_fa_rec.manufacturer_name     := p_talv_fa_rec.manufacturer_name;
14843            l_talv_fa_rec.model_number          := p_talv_fa_rec.model_number;
14844            l_talv_fa_rec.description           := p_talv_fa_rec.description;
14845          END IF;
14846              -- akrangan Bug# 5362977 end
14847       Update_asset_lines(
14848             p_api_version    =>  p_api_version,
14849             p_init_msg_list  =>  p_init_msg_list,
14850             x_return_status  =>  x_return_status,
14851             x_msg_count      =>  x_msg_count,
14852             x_msg_data       =>  x_msg_data,
14853             p_talv_rec       =>  l_talv_fa_rec,
14854             x_talv_rec       =>  l_rel_ast_talv_rec);
14855 
14856       IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14857          RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14858       ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14859          RAISE Okc_Api.G_EXCEPTION_ERROR;
14860       END IF;
14861 
14862       --3. update modifiable parameters on IB transaction line
14863       i := 0;
14864       open l_ib_csr(p_fin_cle_id => p_cle_id,
14865                     p_chr_id     => p_clev_fin_rec.dnz_chr_id);
14866       Loop
14867           fetch l_ib_csr into l_ib_rec;
14868           Exit when l_ib_csr%NOTFOUND;
14869           i := i+1;
14870           l_itiv_ib_tbl(i).id               := l_ib_rec.id;
14871           l_itiv_ib_tbl(i).SERIAL_NUMBER    := l_ib_rec.SERIAL_NUMBER;
14872           l_itiv_ib_tbl(i).OBJECT_ID1_NEW   := l_ib_rec.OBJECT_ID1_NEW;
14873           l_itiv_ib_tbl(i).OBJECT_ID2_NEW   := l_ib_rec.OBJECT_ID2_NEW;
14874       End Loop;
14875       Close l_ib_csr;
14876 
14877       If l_itiv_ib_tbl.COUNT > 0  and p_itiv_ib_tbl.COUNT > 0 Then
14878           For i in l_itiv_ib_tbl.FIRST..l_itiv_ib_tbl.LAST
14879           Loop
14880               --currently only one install site is possible for one serial number
14881               --therefor the if clause commented below is not required
14882               For j in p_itiv_ib_tbl.FIRST..p_itiv_ib_tbl.LAST
14883               Loop
14884                   --If (l_itiv_ib_tbl(i).SERIAL_NUMBER = p_itiv_ib_tbl(j).SERIAL_NUMBER) OR
14885                      --(nvl(l_itiv_ib_tbl(i).SERIAL_NUMBER,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR
14886                       --and nvl(p_itiv_ib_tbl(j).SERIAL_NUMBER,OKL_API.G_MISS_CHAR) = OKL_API.G_MISS_CHAR)  then
14887                      l_itiv_ib_tbl(i).OBJECT_ID1_OLD := l_itiv_ib_tbl(i).OBJECT_ID1_NEW;
14888                      l_itiv_ib_tbl(i).OBJECT_ID2_OLD := l_itiv_ib_tbl(i).OBJECT_ID2_NEW;
14889                      l_itiv_ib_tbl(i).OBJECT_ID1_NEW := p_itiv_ib_tbl(j).OBJECT_ID1_NEW;
14890                      l_itiv_ib_tbl(i).OBJECT_ID2_NEW := p_itiv_ib_tbl(j).OBJECT_ID2_NEW;
14891 		       --akrangan Bug# 5362977 start
14892                         IF l_rbk_khr = '!' THEN
14893                           l_itiv_ib_tbl(i).INVENTORY_ITEM_ID := p_cimv_model_rec.object1_id1;
14894                           l_itiv_ib_tbl(i).INVENTORY_ORG_ID  := p_cimv_model_rec.object1_id2;
14895                         END IF;
14896                         --akrangan Bug# 5362977 end
14897 
14898                   --End If;
14899               End Loop;
14900           End Loop;
14901           OKL_TXL_ITM_INSTS_PUB.update_txl_itm_insts(p_api_version    => p_api_version,
14902                                                p_init_msg_list  => p_init_msg_list,
14903                                                x_return_status  => x_return_status,
14904                                                x_msg_count      => x_msg_count,
14905                                                x_msg_data       => x_msg_data,
14906                                                p_iipv_tbl       => l_itiv_ib_tbl,
14907                                                x_iipv_tbl       => l_rel_ast_itiv_ib_tbl);
14908 
14909           IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14910               RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14911           ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14912               RAISE Okc_Api.G_EXCEPTION_ERROR;
14913           END IF;
14914       End If;
14915 
14916       --------------------------------------------------
14917       --update residual value as per standard
14918       -------------------------------------------------
14919       Resolve_Residual_Value(
14920             p_api_version    => p_api_version,
14921             p_init_msg_list  => p_init_msg_list,
14922             x_return_status  => x_return_status,
14923             x_msg_count      => x_msg_count,
14924             x_msg_data       => x_msg_data,
14925             p_asset_number   => l_fa_rec.asset_number,
14926             p_clev_fin_rec   => l_rel_ast_clev_fin_rec,
14927             p_klev_fin_rec   => l_rel_ast_klev_fin_rec,
14928             --Bug# 4631549
14929             p_call_mode      => p_call_mode,
14930             x_clev_fin_rec   => x_clev_fin_rec,
14931             x_klev_fin_rec   => x_klev_fin_rec);
14932 
14933       IF (x_return_status = Okc_Api.G_RET_STS_UNEXP_ERROR) THEN
14934           RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14935       ELSIF (x_return_status = Okl_Api.G_RET_STS_ERROR) THEN
14936           RAISE Okc_Api.G_EXCEPTION_ERROR;
14937       END IF;
14938 
14939       -------------------------------------------
14940       --Get all the lines
14941       -------------------------------------------
14942       i := 1;
14943       Open l_lines_csr (p_from_cle_id => x_clev_fin_rec.id);
14944       loop
14945           Fetch l_lines_csr into l_lines_rec;
14946           Exit when l_lines_csr%NOTFOUND;
14947           x_return_status := get_rec_clev(l_lines_rec.id,
14948                                           lx_clev_rec);
14949           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14950               OKL_API.set_message(p_app_name     => G_APP_NAME,
14951                                   p_msg_name     => G_FETCHING_INFO,
14952                                   p_token1       => G_REC_NAME_TOKEN,
14953                                   p_token1_value => 'OKC_K_LINES_V Record');
14954               RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14955           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14956               OKL_API.set_message(p_app_name     => G_APP_NAME,
14957                                   p_msg_name     => G_FETCHING_INFO,
14958                                   p_token1       => G_REC_NAME_TOKEN,
14959                                   p_token1_value => 'OKC_K_LINES_V Record');
14960               RAISE Okc_Api.G_EXCEPTION_ERROR;
14961           END IF;
14962           x_return_status := get_rec_klev(l_lines_rec.id,
14963                                           lx_klev_rec);
14964           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
14965               OKL_API.set_message(p_app_name     => G_APP_NAME,
14966                                   p_msg_name     => G_FETCHING_INFO,
14967                                   p_token1       => G_REC_NAME_TOKEN,
14968                                   p_token1_value => 'OKL_K_LINES_V Record');
14969               RAISE Okc_Api.G_EXCEPTION_UNEXPECTED_ERROR;
14970           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
14971               OKL_API.set_message(p_app_name     => G_APP_NAME,
14972                                   p_msg_name     => G_FETCHING_INFO,
14973                                   p_token1       => G_REC_NAME_TOKEN,
14974                                   p_token1_value => 'OKL_K_LINES_V Record');
14975               RAISE Okc_Api.G_EXCEPTION_ERROR;
14976           END IF;
14977 
14978           Open l_lty_csr(p_lse_id => l_lines_rec.lse_id);
14979           Fetch l_lty_csr into l_lty_code;
14980           Close l_lty_csr;
14981 
14982           If l_lty_code = 'ITEM' then
14983               x_clev_model_rec := lx_clev_rec;
14984               x_klev_model_rec := lx_klev_rec;
14985           ElsIf l_lty_code = 'FIXED_ASSET' then
14986               x_clev_fa_rec  := lx_clev_rec;
14987               x_klev_fa_rec  := lx_klev_rec;
14988           ElsIf l_lty_code = 'INST_ITEM' then
14989               x_clev_ib_tbl(i) := lx_clev_rec;
14990               x_klev_ib_tbl(i) := lx_klev_rec;
14991               i := i+1;
14992           End If;
14993       End Loop;
14994       Close l_lines_csr;
14995 
14996 
14997 
14998     OKL_API.END_ACTIVITY (x_msg_count,
14999                           x_msg_data );
15000     EXCEPTION
15001     WHEN OKL_API.G_EXCEPTION_ERROR THEN
15002     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
15003                                l_api_name,
15004                                G_PKG_NAME,
15005                                'OKL_API.G_RET_STS_ERROR',
15006                                x_msg_count,
15007                                x_msg_data,
15008                                '_PVT');
15009     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
15010     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
15011                               l_api_name,
15012                               G_PKG_NAME,
15013                               'OKL_API.G_RET_STS_UNEXP_ERROR',
15014                               x_msg_count,
15015                               x_msg_data,
15016                               '_PVT');
15017     WHEN OTHERS THEN
15018     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
15019                               l_api_name,
15020                               G_PKG_NAME,
15021                               'OTHERS',
15022                               x_msg_count,
15023                               x_msg_data,
15024                               '_PVT');
15025   END Modify_Release_asset_Line;
15026 
15027 -----------------------------------------------------------------------------------------------
15028 --------------------- Main Process for All Lines Line Creation---------------------------------
15029 -----------------------------------------------------------------------------------------------
15030   PROCEDURE Create_all_line(
15031             p_api_version    IN  NUMBER,
15032             p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
15033             x_return_status  OUT NOCOPY VARCHAR2,
15034             x_msg_count      OUT NOCOPY NUMBER,
15035             x_msg_data       OUT NOCOPY VARCHAR2,
15036             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
15037             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
15038             p_clev_fin_rec   IN  clev_rec_type,
15039             p_klev_fin_rec   IN  klev_rec_type,
15040             p_cimv_model_rec IN  cimv_rec_type,
15041             p_clev_fa_rec    IN  clev_rec_type,
15042             p_cimv_fa_rec    IN  cimv_rec_type,
15043             p_talv_fa_rec    IN  talv_rec_type,
15044             p_itiv_ib_tbl    IN  itiv_tbl_type,
15045             x_clev_fin_rec   OUT NOCOPY clev_rec_type,
15046             x_clev_model_rec OUT NOCOPY clev_rec_type,
15047             x_clev_fa_rec    OUT NOCOPY clev_rec_type,
15048             x_clev_ib_rec    OUT NOCOPY clev_rec_type) IS
15049     l_api_name          CONSTANT VARCHAR2(30) := 'CREATE_ALL_LINES';
15050     l_asset_number               OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE;
15051     m_clev_fin_rec               clev_rec_type;
15052     m_klev_fin_rec               klev_rec_type;
15053     l_clev_fin_rec               clev_rec_type;
15054     l_klev_fin_rec               klev_rec_type;
15055     l_clev_fin_rec_out           clev_rec_type;
15056     l_klev_fin_rec_out           klev_rec_type;
15057     l_clev_model_rec             clev_rec_type;
15058     l_klev_model_rec             klev_rec_type;
15059     l_cimv_model_rec             cimv_rec_type;
15060     l_clev_model_rec_out         clev_rec_type;
15061     l_klev_model_rec_out         klev_rec_type;
15062     l_cimv_model_rec_out         cimv_rec_type;
15063     l_clev_fa_rec                clev_rec_type;
15064     l_klev_fa_rec                klev_rec_type;
15065     l_cimv_fa_rec                cimv_rec_type;
15066     l_trxv_fa_rec                trxv_rec_type;
15067     l_talv_fa_rec                talv_rec_type;
15068     l_clev_fa_rec_out            clev_rec_type;
15069     l_klev_fa_rec_out            klev_rec_type;
15070     l_cimv_fa_rec_out            cimv_rec_type;
15071     l_trxv_fa_rec_out            trxv_rec_type;
15072     l_talv_fa_rec_out            talv_rec_type;
15073     l_clev_inst_rec              clev_rec_type;
15074     l_klev_inst_rec              klev_rec_type;
15075     l_itiv_inst_tbl              itiv_tbl_type;
15076     l_clev_inst_rec_out          clev_rec_type;
15077     l_klev_inst_rec_out          klev_rec_type;
15078     l_itiv_inst_tbl_out          itiv_tbl_type;
15079     l_clev_ib_rec                clev_rec_type;
15080     l_klev_ib_rec                klev_rec_type;
15081     l_cimv_ib_rec                cimv_rec_type;
15082     l_trxv_ib_rec                trxv_rec_type;
15083     l_itiv_ib_tbl                itiv_tbl_type;
15084     r_itiv_ib_tbl                itiv_tbl_type;
15085     l_clev_ib_rec_out            clev_rec_type;
15086     l_klev_ib_rec_out            klev_rec_type;
15087     l_cimv_ib_rec_out            cimv_rec_type;
15088     l_trxv_ib_rec_out            trxv_rec_type;
15089     l_itiv_ib_tbl_out            itiv_tbl_type;
15090     ln_klev_fin_oec              OKL_K_LINES_V.OEC%TYPE := 0;
15091     ln_klev_fin_res              OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
15092     ln_klev_fin_cap              OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
15093     ln_clev_model_price_unit     OKC_K_LINES_V.PRICE_UNIT%TYPE := 0;
15094     ln_cimv_model_no_items       OKC_K_ITEMS_V.NUMBER_OF_ITEMS%TYPE := 0;
15095     lv_object_id1_new            OKL_TXL_ITM_INSTS_V.OBJECT_ID1_NEW%TYPE;
15096     lv_scs_code                  OKC_K_HEADERS_V.SCS_CODE%TYPE := null;
15097     ln_dummy                     NUMBER := 0;
15098     ln_dummy1                    NUMBER := 0;
15099     i                            NUMBER := 0;
15100     j                            NUMBER := 0;
15101     k                            NUMBER := 0;
15102     m                            NUMBER := 0;
15103     n                            NUMBER := 0;
15104     p                            NUMBER := 0;
15105 
15106     -- added by rravikir (Estimated property tax)
15107     ln_chr_id                    OKC_K_HEADERS_B.ID%TYPE;
15108     ln_cle_id                    OKL_K_LINES_V.ID%TYPE;
15109     -- end
15110     TYPE instance_id_tbl IS TABLE OF NUMBER
15111         INDEX BY BINARY_INTEGER;
15112     lt_instance_id_tbl           instance_id_tbl;
15113     CURSOR c_get_scs_code(p_dnz_chr_id OKC_K_HEADERS_B.ID%TYPE)
15114     IS
15115     SELECT scs_code,
15116            --Bug# 4419339
15117            orig_system_source_code
15118     FROM OKC_K_HEADERS_B
15119     WHERE id = p_dnz_chr_id;
15120 
15121 
15122     --Bug# 4419339
15123     l_orig_system_source_code okc_k_headers_b.orig_system_source_code%TYPE;
15124 
15125     CURSOR c_ib_sno_asset(p_asset_number OKL_TXL_ASSETS_B.ASSET_NUMBER%TYPE)
15126     IS
15127     SELECT CII.SERIAL_NUMBER IB_SERIAL_NUMBER,
15128            CII.INSTANCE_ID
15129     FROM
15130     OKC_K_HEADERS_V OKHV, OKC_K_LINES_V KLE_FA, OKC_LINE_STYLES_B LSE_FA, OKC_K_LINES_B KLE_IL,
15131     OKC_LINE_STYLES_B LSE_IL, OKC_K_LINES_B KLE_IB, OKC_LINE_STYLES_B LSE_IB, OKC_K_ITEMS ITE,
15132     CSI_ITEM_INSTANCES CII
15133     WHERE
15134     kle_fa.chr_id = okhv.id AND lse_fa.id = kle_fa.lse_id AND lse_fa.lty_code = 'FREE_FORM1'
15135     AND kle_il.cle_id = kle_fa.id AND lse_il.id = kle_il.lse_id AND lse_il.lty_code = 'FREE_FORM2'
15136     AND kle_ib.cle_id = kle_il.id AND lse_ib.id = kle_ib.lse_id AND lse_ib.lty_code = 'INST_ITEM'
15137     AND ite.cle_id = kle_ib.id AND ite.jtot_object1_code = 'OKX_IB_ITEM'
15138     AND cii.instance_id = ite.object1_id1 AND kle_fa.name = p_asset_number;
15139 
15140     l_top_line_id NUMBER;
15141     l_oec NUMBER;
15142     l_residual_value NUMBER;
15143 
15144     --Bug# 3533936:
15145     l_rel_ast_fin_cle_id   NUMBER;
15146 
15147     --cursor to check if contract has re-lease assets
15148     CURSOR l_chk_rel_ast_csr (p_chr_id IN Number) IS
15149     SELECT 'Y'
15150     FROM   okc_k_headers_b CHR
15151     WHERE   nvl(chr.orig_system_source_code,'XXXX') <> 'OKL_RELEASE'
15152     and     chr.ID = p_chr_id
15153     AND     exists (SELECT '1'
15154                   FROM   OKC_RULES_B rul
15155                   WHERE  rul.dnz_chr_id = chr.id
15156                   AND    rul.rule_information_category = 'LARLES'
15157                   AND    nvl(rule_information1,'N') = 'Y');
15158 
15159     l_chk_rel_ast   Varchar2(1) default 'N';
15160 
15161     l_rel_ast_clev_fin_rec      clev_rec_type;
15162     l_rel_ast_klev_fin_rec      klev_rec_type;
15163     l_rel_ast_clev_model_rec    clev_rec_type;
15164     l_rel_ast_klev_model_rec    klev_rec_type;
15165     l_rel_ast_clev_fa_rec       clev_rec_type;
15166     l_rel_ast_klev_fa_rec       klev_rec_type;
15167     l_rel_ast_clev_ib_tbl       clev_tbl_type;
15168     l_rel_ast_klev_ib_tbl       klev_tbl_type;
15169     --End Bug# 3533936:
15170 
15171 --| start          29-Oct-2008 cklee Bug: 7492324  move code logic to               |
15172 --|                                OKL_TXL_ASSETS_PVT.CREATE_TXL_ASSET_DEF     |
15173     --Bug# 4186455 : Do not default SV for LOANS
15174     --cursor to check deal type of the contract
15175 /*    Cursor l_deal_type_csr (p_chr_id in number) is
15176     select khr.deal_type,
15177            khr.pdt_id,
15178            pdt.reporting_pdt_id
15179     from   okl_products pdt,
15180            okl_k_headers            khr
15181     where  pdt.id           =  khr.pdt_id
15182     and    khr.id           =  p_chr_id;
15183 
15184     l_deal_type_rec    l_deal_type_csr%ROWTYPE;
15185 
15186     --dkagrawa changed cursor to use view OKL_PROD_QLTY_VAL_UV than okl_product_parameters_v
15187     --cursor to get deal type corresponding to a product
15188     Cursor l_pdt_deal_csr (p_pdt_id in number) is
15189     SELECT ppv.quality_val deal_type
15190     FROM   okl_prod_qlty_val_uv ppv
15191     WHERE  ppv.quality_name IN ('LEASE','INVESTOR')
15192     AND    ppv.pdt_id = p_pdt_id;
15193 
15194     l_pdt_deal_rec l_pdt_deal_csr%ROWTYPE;*/
15195     --End Bug# 4186455 : Do not default SV for LOANS
15196  --| end         29-Oct-2008 cklee Bug: 7492324  move code logic to               |
15197 --|                                OKL_TXL_ASSETS_PVT.CREATE_TXL_ASSET_DEF     |
15198 
15199 
15200   BEGIN
15201 
15202     x_return_status := OKL_API.G_RET_STS_SUCCESS;
15203     -- Call start_activity to create savepoint, check compatibility
15204     -- and initialize message list
15205     x_return_status := OKL_API.START_ACTIVITY (
15206                                l_api_name
15207                                ,p_init_msg_list
15208                                ,'_PVT'
15209                                ,x_return_status);
15210     -- Check if activity started successfully
15211     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15212        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15213     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15214        RAISE OKL_API.G_EXCEPTION_ERROR;
15215     END IF;
15216 
15217 
15218     l_clev_fin_rec   := p_clev_fin_rec;
15219     l_klev_fin_rec   := p_klev_fin_rec;
15220     l_cimv_model_rec := p_cimv_model_rec;
15221     l_clev_fa_rec    := p_clev_fa_rec;
15222     l_cimv_fa_rec    := p_cimv_fa_rec;
15223     l_talv_fa_rec    := p_talv_fa_rec;
15224     l_itiv_inst_tbl  := p_itiv_ib_tbl;
15225     l_itiv_ib_tbl    := p_itiv_ib_tbl;
15226 
15227     IF (l_clev_fin_rec.dnz_chr_id IS NULL OR
15228        l_clev_fin_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
15229        OKL_API.set_message(p_app_name     => G_APP_NAME,
15230                            p_msg_name     => G_REQUIRED_VALUE,
15231                            p_token1       => G_COL_NAME_TOKEN,
15232                            p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID for All Lines');
15233        RAISE OKL_API.G_EXCEPTION_ERROR;
15234     END IF;
15235 --start:|           14-May-2008 cklee  Bug 6405415               				     |
15236     IF l_klev_fin_rec.residual_percentage <> OKL_API.G_MISS_NUM and
15237        l_klev_fin_rec.residual_percentage IS NOT NULL THEN
15238       IF NOT l_klev_fin_rec.residual_percentage between 0 and 100 THEN
15239         OKL_API.set_message(p_app_name => G_APP_NAME,
15240                             p_msg_name => 'OKL_VALID_RESIDUAL_PERCENT');
15241         RAISE OKL_API.G_EXCEPTION_ERROR;
15242       END IF;
15243     END IF;
15244 --end:|           14-May-2008 cklee  Bug 6405415               				     |
15245 
15246     OPEN  c_get_scs_code(p_dnz_chr_id => l_clev_fin_rec.dnz_chr_id);
15247     --Bug#4418339
15248     FETCH c_get_scs_code INTO lv_scs_code, l_orig_system_source_code;
15249     IF c_get_scs_code%NOTFOUND THEN
15250       OKL_API.set_message(p_app_name     => G_APP_NAME,
15251                           p_msg_name     => G_NO_MATCHING_RECORD,
15252                           p_token1       => G_COL_NAME_TOKEN,
15253                           p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID');
15254       RAISE G_EXCEPTION_HALT_VALIDATION;
15255     END IF;
15256     CLOSE c_get_scs_code;
15257 
15258     ------------------------------------------------------
15259     --Bug# 3533936 : Release Asset Case - all line details
15260     -- should default from exising asset
15261     ------------------------------------------------------
15262     l_chk_rel_ast := 'N';
15263     Open l_chk_rel_ast_csr(p_chr_id => l_clev_fin_rec.dnz_chr_id);
15264     Fetch l_chk_rel_ast_csr into l_chk_rel_ast;
15265     If l_chk_rel_ast_csr%NOTFOUND then
15266         null;
15267     end if;
15268     close l_chk_rel_ast_csr;
15269 
15270 
15271     If p_new_yn = 'N'  And l_chk_rel_ast = 'Y' Then
15272 
15273         Create_release_asset_line
15274             (p_api_version    => p_api_version,
15275              p_init_msg_list  => p_init_msg_list,
15276              x_return_status  => x_return_status,
15277              x_msg_count      => x_msg_count,
15278              x_msg_data       => x_msg_data,
15279              p_asset_id       => l_cimv_fa_rec.object1_id1,
15280              p_chr_id         => l_clev_fin_rec.dnz_chr_id,
15281              x_cle_id         => l_rel_ast_fin_cle_id);
15282 
15283         --ramurt Bug#4945190
15284         ln_chr_id := l_clev_fin_rec.dnz_chr_id;
15285         ln_cle_id := l_rel_ast_fin_cle_id;
15286 
15287         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15288            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15289         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15290            RAISE OKL_API.G_EXCEPTION_ERROR;
15291         END IF;
15292 
15293         Modify_Release_Asset_Line(
15294             p_api_version    =>  p_api_version,
15295             p_init_msg_list  => p_init_msg_list,
15296             x_return_status  => x_return_status,
15297             x_msg_count      => x_msg_count,
15298             x_msg_data       => x_msg_data,
15299             p_clev_fin_rec   => l_clev_fin_rec,
15300             p_klev_fin_rec   => l_klev_fin_rec,
15301 	    --akrangan Bug# 5362977 start
15302             p_clev_model_rec => l_clev_model_rec,
15303             --akrangan Bug# 5362977 end
15304             p_cimv_model_rec => l_cimv_model_rec,
15305             p_clev_fa_rec    => l_clev_fa_rec,
15306             p_cimv_fa_rec    => l_cimv_fa_rec,
15307             p_talv_fa_rec    => l_talv_fa_rec,
15308             p_itiv_ib_tbl    => l_itiv_ib_tbl,
15309             p_cle_id         => l_rel_ast_fin_cle_id,
15310             --Bug# 4631549
15311             p_call_mode      => 'RELEASE_ASSET',
15312             x_clev_fin_rec   => l_rel_ast_clev_fin_rec,
15313             x_klev_fin_rec   => l_rel_ast_klev_fin_rec,
15314             x_clev_model_rec => l_rel_ast_clev_model_rec,
15315             x_klev_model_rec => l_rel_ast_klev_model_rec,
15316             x_clev_fa_rec    => l_rel_ast_clev_fa_rec,
15317             x_klev_fa_rec    => l_rel_ast_klev_fa_rec,
15318             x_clev_ib_tbl    => l_rel_ast_clev_ib_tbl,
15319             x_klev_ib_tbl    => l_rel_ast_klev_ib_tbl);
15320 
15321         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15322            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15323         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15324            RAISE OKL_API.G_EXCEPTION_ERROR;
15325         END IF;
15326 
15327         x_clev_fin_rec   := l_rel_ast_clev_fin_rec;
15328         x_clev_model_rec := l_rel_ast_clev_model_rec;
15329         x_clev_fa_rec    := l_rel_ast_clev_fa_rec;
15330         If l_rel_ast_clev_ib_tbl.COUNT > 0 then
15331             x_clev_ib_rec    := l_rel_ast_clev_ib_tbl(1);
15332         End If;
15333     Else
15334     ----------------------------------------------------------
15335     --End Bug# 3533936
15336     ----------------------------------------------------------
15337 
15338 
15339 
15340 -- Code is commneted as per Nagen mail on 01/23/2002 10.11am
15341 -- code is put in place as per Manish on 09/16/2002
15342     IF (p_asset_number IS NULL OR
15343        p_asset_number = OKL_API.G_MISS_CHAR) AND
15344        (lv_scs_code IS NOT NULL OR
15345        lv_scs_code <> OKL_API.G_MISS_CHAR) AND
15346        --Bug#4419339
15347        --(lv_scs_code = 'QUOTE') AND
15348        --Bug# 4721141 : changed AND to OR
15349        (lv_scs_code = 'QUOTE') OR
15350        --Bug# 5098124 : Added 'OKL_QUOTE'
15351        (l_orig_system_source_code = 'OKL_LEASE_APP')  OR
15352        (l_orig_system_source_code = 'OKL_QUOTE')  THEN
15353        x_return_status := generate_asset_number(x_asset_number => l_asset_number);
15354        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15355          OKL_API.set_message(p_app_name     => G_APP_NAME,
15356                              p_msg_name     => G_GEN_ASSET_NUMBER);
15357          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15358        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15359          OKL_API.set_message(p_app_name     => G_APP_NAME,
15360                              p_msg_name     => G_GEN_ASSET_NUMBER);
15361          RAISE OKL_API.G_EXCEPTION_ERROR;
15362        END IF;
15363        l_talv_fa_rec.asset_number := l_asset_number;
15364     ELSE
15365        --Bug# 4053845:
15366        --l_asset_number := p_asset_number;
15367        l_asset_number := UPPER(p_asset_number);
15368     END IF;
15369 
15370     IF l_itiv_ib_tbl.COUNT > 0 THEN
15371       p := l_itiv_ib_tbl.FIRST;
15372       LOOP
15373         -- Check for Required Values
15374         x_return_status := check_required_values(p_item1    => l_cimv_model_rec.object1_id1,
15375                                                  p_item2    => l_cimv_model_rec.object1_id2,
15376                                                  p_ast_no   => l_talv_fa_rec.asset_number,
15377                                                  p_ast_desc => l_talv_fa_rec.description,
15378                                                  p_cost     => l_talv_fa_rec.original_cost,
15379                                                  p_units    => l_talv_fa_rec.current_units,
15380                                                  p_ib_loc1  => l_itiv_ib_tbl(p).object_id1_new,
15381                                                  p_ib_loc2  => l_itiv_ib_tbl(p).object_id2_new,
15382                                                  p_fa_loc   => l_talv_fa_rec.fa_location_id,
15383                                                  p_refinance_amount => l_klev_fin_rec.refinance_amount,
15384                                                  p_chr_id   => l_clev_fin_rec.dnz_chr_id);
15385         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15386           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
15387         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15388           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
15389         END IF;
15390         EXIT WHEN (p = l_itiv_ib_tbl.LAST);
15391         p := l_itiv_ib_tbl.NEXT(p);
15392       END LOOP;
15393     END IF;
15394     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15395        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15396     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15397        RAISE OKL_API.G_EXCEPTION_ERROR;
15398     END IF;
15399     IF P_new_yn = 'Y' THEN
15400        ln_clev_model_price_unit := abs(l_talv_fa_rec.original_cost);
15401        ln_cimv_model_no_items   := l_talv_fa_rec.current_units;
15402     ELSIF p_new_yn = 'N' THEN
15403        IF l_clev_model_rec.price_unit = OKL_API.G_MISS_NUM THEN
15404           l_clev_model_rec.price_unit := null;
15405        END IF;
15406        IF l_cimv_model_rec.number_of_items = OKL_API.G_MISS_NUM THEN
15407           l_cimv_model_rec.number_of_items := null;
15408        END IF;
15409        ln_clev_model_price_unit := abs(l_talv_fa_rec.original_cost);
15410        ln_cimv_model_no_items   := l_talv_fa_rec.current_units;
15411        -- we need to modify the code, let it go a temp
15412 	--       ln_clev_model_price_unit := nvl(l_clev_model_rec.price_unit,0);
15413 	--       ln_cimv_model_no_items   := nvl(l_cimv_model_rec.number_of_items,0);
15414 	    END IF;
15415 	    --Build the Top Line Record
15416 	    -- First get the Top line Style id
15417             -- 4414408 Assign the line style id directly
15418 /*
15419 	    x_return_status := get_lse_id(p_lty_code => G_FIN_LINE_LTY_CODE,
15420 					  x_lse_id   => l_clev_fin_rec.lse_id);
15421 	    IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15422 	      RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15423 	    ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15424 	      RAISE OKL_API.G_EXCEPTION_ERROR;
15425 	    END IF;
15426 */
15427             l_clev_fin_rec.lse_id           := G_FIN_LINE_LTY_ID;
15428 	    l_clev_fin_rec.chr_id           := l_clev_fin_rec.dnz_chr_id;
15429 	    l_clev_fin_rec.cle_id           := null;
15430 	--    l_clev_fin_rec.name             := l_asset_number;
15431             --Bug# 4053845
15432             l_clev_fin_rec.name             := upper(l_clev_fin_rec.name);
15433 	    l_clev_fin_rec.item_description := l_talv_fa_rec.description;
15434 	    l_clev_fin_rec.exception_yn     := 'N';
15435 	    IF (l_clev_fin_rec.display_sequence IS NUll OR
15436 	       l_clev_fin_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
15437 	       l_clev_fin_rec.display_sequence := 1;
15438 	    END IF;
15439     -- To Check We Got the Valid info
15440     IF UPPER(p_new_yn) NOT IN ('Y','N') OR
15441        (UPPER(p_new_yn) = OKL_API.G_MISS_CHAR OR
15442        UPPER(p_new_yn) IS NULL) THEN
15443       OKL_API.set_message(p_app_name     => G_APP_NAME,
15444                           p_msg_name     => G_INVALID_YN,
15445                           p_token1       => G_COL_NAME_TOKEN,
15446                           p_token1_value => 'p_new_yn');
15447        -- Halt Validation
15448       RAISE OKL_API.G_EXCEPTION_ERROR;
15449     END IF;
15450     -- 4414408 Validate the Asset Number
15451     -- Validate to see if the asset_number given is not null
15452     -- and also Validate asset_number does not exists
15453     -- in OKL_TXL_ASSETS_V
15454     IF UPPER(p_new_yn) = 'Y' THEN
15455        validate_new_asset_number(x_return_status  => x_return_status,
15456                                  p_asset_number   => l_asset_number,
15457                                  p_dnz_chr_id     => l_clev_fin_rec.dnz_chr_id);
15458        -- Check if activity started successfully
15459        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15460           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15461        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15462           RAISE OKL_API.G_EXCEPTION_ERROR;
15463        END IF;
15464     ELSE
15465        validate_new_asset_number(x_return_status  => x_return_status,
15466                                  p_asset_number   => l_asset_number,
15467                                  p_dnz_chr_id     => l_clev_fin_rec.dnz_chr_id);
15468        -- Check if activity ended successfully
15469        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15470           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15471        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15472           RAISE OKL_API.G_EXCEPTION_ERROR;
15473        END IF;
15474     END IF;
15475 
15476 	    -- Creation of the Financial Asset Line
15477 	    create_fin_line(p_api_version   => p_api_version,
15478 			    p_init_msg_list => p_init_msg_list,
15479 			    x_return_status => x_return_status,
15480 			    x_msg_count     => x_msg_count,
15481 			    x_msg_data      => x_msg_data,
15482 			    P_new_yn        => P_new_yn,
15483 			    p_asset_number  => l_asset_number,
15484 			    p_clev_rec      => l_clev_fin_rec,
15485 			    p_klev_rec      => l_klev_fin_rec,
15486 			    x_clev_rec      => x_clev_fin_rec,
15487 			    x_klev_rec      => l_klev_fin_rec_out);
15488 	    IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15489 	      RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15490 	    ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15491 	      RAISE OKL_API.G_EXCEPTION_ERROR;
15492 	    END IF;
15493 
15494         -- added by rravikir (Estimated property tax)
15495         ln_chr_id := x_clev_fin_rec.dnz_chr_id;
15496         ln_cle_id := x_clev_fin_rec.id;
15497         -- end
15498 
15499 	    -- We have to Populate the Model Line Record
15500 	    -- First get the Model line Style id
15501             -- 4414408 Assign the line style id directly
15502 /*
15503 	    x_return_status := get_lse_id(p_lty_code => G_MODEL_LINE_LTY_CODE,
15504 					  x_lse_id   => l_clev_model_rec.lse_id);
15505 	    IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15506 	      RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15507 	    ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15508 	      RAISE OKL_API.G_EXCEPTION_ERROR;
15509 	    END IF;
15510 */
15511 	    IF (l_clev_model_rec.display_sequence IS NUll OR
15512 	       l_clev_model_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
15513 	       l_clev_model_rec.display_sequence  := x_clev_fin_rec.display_sequence + 1;
15514 	    END IF;
15515 	    l_clev_model_rec.lse_id          := G_MODEL_LINE_LTY_ID;
15516 	    l_clev_model_rec.chr_id          := null;
15517 	    l_clev_model_rec.cle_id          := x_clev_fin_rec.id;
15518 	    l_clev_model_rec.exception_yn    := 'N';
15519 	    l_clev_model_rec.price_unit      := ln_clev_model_price_unit;
15520             l_clev_model_rec.dnz_chr_id      := x_clev_fin_rec.dnz_chr_id;
15521     --Build Model cimv rec
15522     l_cimv_model_rec.exception_yn    := 'N';
15523     l_cimv_model_rec.number_of_items := ln_cimv_model_no_items;
15524     -- Creation of the Model Line and Item Record
15525     create_model_line(p_api_version   => p_api_version,
15526                       p_init_msg_list => p_init_msg_list,
15527                       x_return_status => x_return_status,
15528                       x_msg_count     => x_msg_count,
15529                       x_msg_data      => x_msg_data,
15530                       P_new_yn        => P_new_yn,
15531                       p_asset_number  => l_asset_number,
15532                       p_clev_rec      => l_clev_model_rec,
15533                       p_klev_rec      => l_klev_model_rec,
15534                       p_cimv_rec      => l_cimv_model_rec,
15535                       x_clev_rec      => x_clev_model_rec,
15536                       x_klev_rec      => l_klev_model_rec_out,
15537                       x_cimv_rec      => l_cimv_model_rec_out);
15538     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15539       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15540     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15541       RAISE OKL_API.G_EXCEPTION_ERROR;
15542     END IF;
15543     -- Calculate the OEC to Populate the OKL_K_LINES_V.OEC
15544     oec_calc_upd_fin_rec(p_api_version        => p_api_version,
15545                          p_init_msg_list      => p_init_msg_list,
15546                          x_return_status      => x_return_status,
15547                          x_msg_count          => x_msg_count,
15548                          x_msg_data           => x_msg_data,
15549                          P_new_yn             => P_new_yn,
15550                          p_asset_number       => l_asset_number,
15551 			 -- 4414408
15552                          p_top_line_id        => x_clev_model_rec.cle_id,
15553                          p_dnz_chr_id         => x_clev_model_rec.dnz_chr_id,
15554                          x_fin_clev_rec       => x_clev_fin_rec,
15555                          x_fin_klev_rec       => l_klev_fin_rec_out,
15556                          x_oec                => ln_klev_fin_oec,
15557                          p_validate_fin_line  => OKL_API.G_FALSE);
15558     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15559       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15560     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15561       RAISE OKL_API.G_EXCEPTION_ERROR;
15562     END IF;
15563     -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
15564     cap_amt_calc_upd_fin_rec(p_api_version        => p_api_version,
15565                              p_init_msg_list      => p_init_msg_list,
15566                              x_return_status      => x_return_status,
15567                              x_msg_count          => x_msg_count,
15568                              x_msg_data           => x_msg_data,
15569                              P_new_yn             => P_new_yn,
15570                              p_asset_number       => l_asset_number,
15571 			     -- 4414408
15572                              p_top_line_id        => x_clev_model_rec.cle_id,
15573                              p_dnz_chr_id         => x_clev_model_rec.dnz_chr_id,
15574                              x_fin_clev_rec       => x_clev_fin_rec,
15575                              x_fin_klev_rec       => l_klev_fin_rec_out,
15576                              x_cap_amt            => ln_klev_fin_cap,
15577                              p_validate_fin_line  => OKL_API.G_FALSE);
15578     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15579       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15580     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15581       RAISE OKL_API.G_EXCEPTION_ERROR;
15582     END IF;
15583     -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
15584     -- We need to Back calculate the Residual Percentage if value not given
15585     -- or if given should be in sync with residual value
15586 
15587     IF  l_klev_fin_rec_out.residual_percentage = OKL_API.G_MISS_NUM THEN
15588       l_klev_fin_rec_out.residual_percentage := null;
15589     END IF;
15590 
15591     IF l_klev_fin_rec_out.residual_value = OKL_API.G_MISS_NUM THEN
15592       l_klev_fin_rec_out.residual_value := null;
15593     END IF;
15594 
15595     IF (l_klev_fin_rec_out.residual_percentage IS NOT NULL OR
15596        l_klev_fin_rec_out.residual_percentage <> OKL_API.G_MISS_NUM) AND
15597        (l_klev_fin_rec_out.residual_value IS NOT NULL OR
15598        l_klev_fin_rec_out.residual_value <> OKL_API.G_MISS_NUM) THEN
15599 
15600       l_top_line_id := x_clev_fin_rec.id;
15601       l_oec := l_klev_fin_rec_out.oec;
15602       l_residual_value := l_klev_fin_rec_out.residual_value;
15603 
15604       get_res_per_upd_fin_rec(p_api_version   => p_api_version,
15605                               p_init_msg_list => p_init_msg_list,
15606                               x_return_status => x_return_status,
15607                               x_msg_count     => x_msg_count,
15608                               x_msg_data      => x_msg_data,
15609                               P_new_yn        => P_new_yn,
15610                               p_asset_number  => l_asset_number,
15611                               p_res_value     => l_residual_value,  --l_klev_fin_rec_out.residual_value
15612                               p_oec           => l_oec,  --l_klev_fin_rec_out.oec
15613                               p_top_line_id   => l_top_line_id, --x_clev_fin_rec.id,
15614                               p_dnz_chr_id    => x_clev_model_rec.dnz_chr_id,
15615                               x_fin_clev_rec  => x_clev_fin_rec,
15616                               x_fin_klev_rec  => l_klev_fin_rec_out,
15617                               p_validate_fin_line  => OKL_API.G_FALSE); -- #4414408
15618       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15619         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15620       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15621         RAISE OKL_API.G_EXCEPTION_ERROR;
15622       END IF;
15623       res_value_calc_upd_fin_rec(p_api_version        => p_api_version,
15624                                  p_init_msg_list      => p_init_msg_list,
15625                                  x_return_status      => x_return_status,
15626                                  x_msg_count          => x_msg_count,
15627                                  x_msg_data           => x_msg_data,
15628                                  P_new_yn             => P_new_yn,
15629                                  p_asset_number       => l_asset_number,
15630 				 -- 4414408
15631                                  p_top_line_id        => l_top_line_id,
15632                                  p_dnz_chr_id         => x_clev_model_rec.dnz_chr_id,
15633                                  x_fin_clev_rec       => x_clev_fin_rec,
15634                                  x_fin_klev_rec       => l_klev_fin_rec_out,
15635                                  x_res_value          => ln_klev_fin_res,
15636                                  p_validate_fin_line  => OKL_API.G_FALSE); -- #4414408
15637       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15638         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15639       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15640         RAISE OKL_API.G_EXCEPTION_ERROR;
15641       END IF;
15642     ELSIF (l_klev_fin_rec_out.residual_percentage IS NULL OR
15643        l_klev_fin_rec_out.residual_percentage = OKL_API.G_MISS_NUM) AND
15644        (l_klev_fin_rec_out.residual_value IS NOT NULL OR
15645        l_klev_fin_rec_out.residual_value <> OKL_API.G_MISS_NUM) THEN
15646 
15647       l_top_line_id := x_clev_fin_rec.id;
15648       l_oec := l_klev_fin_rec_out.oec;
15649       l_residual_value := l_klev_fin_rec_out.residual_value;
15650 
15651       get_res_per_upd_fin_rec(p_api_version        => p_api_version,
15652                               p_init_msg_list      => p_init_msg_list,
15653                               x_return_status      => x_return_status,
15654                               x_msg_count          => x_msg_count,
15655                               x_msg_data           => x_msg_data,
15656                               P_new_yn             => P_new_yn,
15657                               p_asset_number       => l_asset_number,
15658                               p_res_value          => l_residual_value,  --l_klev_fin_rec_out.residual_value
15659                               p_oec                => l_oec,  --l_klev_fin_rec_out.oec
15660                               p_top_line_id        => l_top_line_id, --x_clev_fin_rec.id,
15661                               p_dnz_chr_id         => x_clev_model_rec.dnz_chr_id,
15662                               x_fin_clev_rec       => x_clev_fin_rec,
15663                               x_fin_klev_rec       => l_klev_fin_rec_out,
15664                               p_validate_fin_line  => OKL_API.G_FALSE); -- #4414408
15665       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15666         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15667       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15668         RAISE OKL_API.G_EXCEPTION_ERROR;
15669       END IF;
15670     ELSIF (l_klev_fin_rec_out.residual_percentage IS NOT NULL OR
15671        l_klev_fin_rec_out.residual_percentage <> OKL_API.G_MISS_NUM) AND
15672        (l_klev_fin_rec_out.residual_value IS NULL OR
15673        l_klev_fin_rec_out.residual_value = OKL_API.G_MISS_NUM) THEN
15674       res_value_calc_upd_fin_rec(p_api_version        => p_api_version,
15675                                  p_init_msg_list      => p_init_msg_list,
15676                                  x_return_status      => x_return_status,
15677                                  x_msg_count          => x_msg_count,
15678                                  x_msg_data           => x_msg_data,
15679                                  P_new_yn             => P_new_yn,
15680                                  p_asset_number       => l_asset_number,
15681 				 -- 4414408
15682                                  p_top_line_id        => x_clev_model_rec.cle_id,
15683                                  p_dnz_chr_id         => x_clev_model_rec.dnz_chr_id,
15684                                  x_fin_clev_rec       => x_clev_fin_rec,
15685                                  x_fin_klev_rec       => l_klev_fin_rec_out,
15686                                  x_res_value          => ln_klev_fin_res,
15687                                  p_validate_fin_line  => OKL_API.G_FALSE); -- #4414408
15688       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15689         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15690       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15691         RAISE OKL_API.G_EXCEPTION_ERROR;
15692       END IF;
15693     END IF;
15694     IF (l_klev_fin_rec_out.oec IS NOT NULL OR
15695        l_klev_fin_rec_out.oec <> OKL_API.G_MISS_NUM) AND
15696        (l_klev_fin_rec_out.residual_value IS NOT NULL OR
15697        l_klev_fin_rec_out.residual_value <> OKL_API.G_MISS_NUM) THEN
15698       IF l_klev_fin_rec_out.residual_value > l_klev_fin_rec_out.oec THEN
15699         OKL_API.set_message(p_app_name     => G_APP_NAME,
15700                             p_msg_name     => G_SALVAGE_VALUE);
15701         RAISE OKL_API.G_EXCEPTION_ERROR;
15702       END IF;
15703     END IF;
15704     -- Required cle Line Information
15705     -- Creation of the Fixed Asset Line Process
15706     -- Getting the Line style Info
15707     -- 4414408 Assign the line style ID directly
15708 /*
15709     x_return_status := get_lse_id(p_lty_code => G_FA_LINE_LTY_CODE,
15710                                   x_lse_id   => l_clev_fa_rec.lse_id);
15711     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15712       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15713     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15714       RAISE OKL_API.G_EXCEPTION_ERROR;
15715     END IF;
15716 */
15717     IF (l_clev_fa_rec.display_sequence IS NUll OR
15718        l_clev_fa_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
15719        l_clev_fa_rec.display_sequence  := x_clev_model_rec.display_sequence + 2;
15720     END IF;
15721     l_clev_fa_rec.lse_id               := G_FA_LINE_LTY_ID;
15722     l_clev_fa_rec.chr_id               := null;
15723     l_clev_fa_rec.cle_id               := x_clev_fin_rec.id;
15724     l_clev_fa_rec.dnz_chr_id           := x_clev_fin_rec.dnz_chr_id;
15725     l_clev_fa_rec.exception_yn         := 'N';
15726     l_clev_fa_rec.price_unit           := ln_clev_model_price_unit;
15727     l_clev_fa_rec.item_description     := l_talv_fa_rec.description;
15728     --Bug# 4053845
15729     l_clev_fa_rec.name                 := upper(l_clev_fa_rec.name);
15730     -- A Bug fix Since we populate the year manufactured into OKL_TXL_ASSETS_B only
15731     -- We cannot use the information after the assets have been put into FA
15732     -- So we decided to populate the year Manufactured into OKL_K_LINES.YEAR_BUILT
15733     -- As the Datatype matches for both.
15734     l_klev_fa_rec.Year_Built       := l_talv_fa_rec.year_manufactured;
15735     --start NISINHA Bug 6490572
15736     l_klev_fa_rec.model_number       := l_talv_fa_rec.model_number;
15737     l_klev_fa_rec.manufacturer_name  := l_talv_fa_rec.manufacturer_name;
15738     --end NISINHA Bug 6490572
15739     -- Required Item Information
15740     l_cimv_fa_rec.exception_yn         := 'N';
15741     IF p_new_yn = 'Y' THEN
15742       l_cimv_fa_rec.object1_id1          := null;
15743       l_cimv_fa_rec.object1_id2          := null;
15744     ELSIF p_new_yn = 'N' THEN
15745       l_cimv_fa_rec.object1_id2          := '#';
15746     END IF;
15747     l_cimv_fa_rec.number_of_items      := ln_cimv_model_no_items;
15748     -- Txl Asset Information
15749     IF (l_talv_fa_rec.asset_number IS NULL OR
15750        l_talv_fa_rec.asset_number = OKL_API.G_MISS_CHAR) THEN
15751        l_talv_fa_rec.asset_number := l_asset_number;
15752     --bug# 4053845
15753     ELSE
15754        l_talv_fa_rec.asset_number := UPPER(l_talv_fa_rec.asset_number);
15755     END IF;
15756     IF P_new_yn= 'Y' THEN
15757      --fix for #3481999
15758      IF ( l_talv_fa_rec.depreciation_cost IS NULL OR
15759           l_talv_fa_rec.depreciation_cost = OKL_API.G_MISS_NUM ) THEN
15760         l_talv_fa_rec.depreciation_cost := l_klev_fin_rec_out.oec;
15761      END IF;
15762 
15763       l_talv_fa_rec.original_cost := l_klev_fin_rec_out.oec;
15764       l_talv_fa_rec.tal_type := 'CFA';
15765       --------------
15766       --Bug# 4082635
15767       -------------
15768 --| start          29-Oct-2008 cklee Bug: 7492324  move code logic to               |
15769 --|                                OKL_TXL_ASSETS_PVT.CREATE_TXL_ASSET_DEF     |
15770 
15771 /*
15772       If nvl(l_talv_fa_rec.salvage_value,OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM AND
15773          nvl(l_talv_fa_rec.percent_salvage_value, OKL_API.G_MISS_NUM) = OKL_API.G_MISS_NUM  then
15774           --Bug# 4186455 : Do not populate salvage value for Loan and loan revolving deal types
15775           for l_deal_type_rec in l_deal_type_csr(p_chr_id => l_clev_fin_rec.dnz_chr_id)
15776           loop
15777               If l_deal_type_rec.deal_type = 'LOAN' then
15778                   If nvl(l_deal_type_rec.reporting_pdt_id,OKL_API.G_MISS_NUM) <> OKL_API.G_MISS_NUM then
15779                       for l_pdt_deal_rec in l_pdt_deal_csr(p_pdt_id => l_deal_type_rec.reporting_pdt_id)
15780                       loop
15781                           If l_pdt_deal_rec.deal_type = 'LEASEOP' then -- reporting pdt is operating lease
15782                               l_talv_fa_rec.salvage_value := nvl(l_klev_fin_rec_out.residual_value,0);
15783 
15784                           End If;
15785                       End loop;
15786                   End If;
15787               Elsif l_deal_type_rec.deal_type = 'LOAN-REVOLVING' then
15788                   null;
15789               Else -- for LEASEOP, LEASEDF, LEASEST
15790                   l_talv_fa_rec.salvage_value := nvl(l_klev_fin_rec_out.residual_value,0);
15791               End If;
15792           End Loop;
15793       End If;*/
15794 --| end         29-Oct-2008 cklee Bug: 7492324  move code logic to               |
15795 --|                                OKL_TXL_ASSETS_PVT.CREATE_TXL_ASSET_DEF     |
15796       ------------------
15797       --End Bug# 4082635
15798       ------------------
15799     ELSIF p_new_yn = 'N' THEN
15800       l_talv_fa_rec.depreciation_cost := l_klev_fin_rec_out.oec;
15801       l_talv_fa_rec.original_cost := l_klev_fin_rec_out.oec;
15802       l_talv_fa_rec.tal_type := 'CRL';
15803     END IF;
15804     -- Creation of the Fixed Asset Line and item/Txl Asset Info
15805     Create_fixed_asset_line(p_api_version   => p_api_version,
15806                             p_init_msg_list => p_init_msg_list,
15807                             x_return_status => x_return_status,
15808                             x_msg_count     => x_msg_count,
15809                             x_msg_data      => x_msg_data,
15810                             P_new_yn        => P_new_yn,
15811                             p_asset_number  => l_asset_number,
15812                             p_clev_rec      => l_clev_fa_rec,
15813                             p_klev_rec      => l_klev_fa_rec,
15814                             p_cimv_rec      => l_cimv_fa_rec,
15815                             p_talv_rec      => l_talv_fa_rec,
15816                             x_clev_rec      => x_clev_fa_rec,
15817                             x_klev_rec      => l_klev_fa_rec_out,
15818                             x_cimv_rec      => l_cimv_fa_rec_out,
15819                             x_trxv_rec      => l_trxv_fa_rec_out,
15820                             x_talv_rec      => l_talv_fa_rec_out);
15821     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15822       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15823     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15824       RAISE OKL_API.G_EXCEPTION_ERROR;
15825     END IF;
15826     IF p_new_yn = 'N' THEN
15827       FOR r_ib_sno_asset IN c_ib_sno_asset(l_talv_fa_rec_out.asset_number) LOOP
15828         r_itiv_ib_tbl(k).serial_number := r_ib_sno_asset.ib_serial_number;
15829         IF r_ib_sno_asset.ib_serial_number IS NULL OR
15830            r_ib_sno_asset.ib_serial_number = OKL_API.G_MISS_CHAR THEN
15831           r_itiv_ib_tbl(k).mfg_serial_number_yn := 'N';
15832         ELSE
15833           r_itiv_ib_tbl(k).mfg_serial_number_yn := 'Y';
15834         END IF;
15835         r_itiv_ib_tbl(k).dnz_cle_id := x_clev_fa_rec.cle_id;
15836         IF l_itiv_ib_tbl.COUNT > 0 THEN
15837           m := l_itiv_ib_tbl.FIRST;
15838           LOOP
15839             r_itiv_ib_tbl(k).object_id1_new := l_itiv_ib_tbl(m).object_id1_new;
15840             EXIT WHEN (m = l_itiv_ib_tbl.LAST);
15841             m := l_itiv_ib_tbl.NEXT(m);
15842           END LOOP;
15843         END IF;
15844         lt_instance_id_tbl(k) := r_ib_sno_asset.instance_id;
15845         k := k + 1;
15846       END LOOP;
15847       l_itiv_ib_tbl   := r_itiv_ib_tbl;
15848       IF l_itiv_ib_tbl.COUNT > 0 THEN
15849          ln_dummy1 :=  l_itiv_ib_tbl.COUNT;
15850          -- We have intialize the J , since there could be any index integer
15851          j := l_itiv_ib_tbl.FIRST;
15852          LOOP
15853            IF (l_itiv_ib_tbl(j).mfg_serial_number_yn IS NULL OR
15854               l_itiv_ib_tbl(j).mfg_serial_number_yn = OKL_API.G_MISS_CHAR) THEN
15855               x_return_status := OKL_API.G_RET_STS_ERROR;
15856               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
15857            ELSIF l_itiv_ib_tbl(j).mfg_serial_number_yn = 'Y' THEN
15858               IF ln_dummy1 <> ln_cimv_model_no_items THEN
15859                 OKL_API.set_message(p_app_name     => G_APP_NAME,
15860                                     p_msg_name     => G_CNT_REC);
15861                 RAISE OKL_API.G_EXCEPTION_ERROR;
15862               END IF;
15863               ln_dummy := ln_cimv_model_no_items;
15864            ELSIF l_itiv_ib_tbl(j).mfg_serial_number_yn = 'N' THEN
15865               ln_dummy := 1;
15866            END IF;
15867            EXIT WHEN (j = l_itiv_ib_tbl.LAST);
15868            j := l_itiv_ib_tbl.NEXT(j);
15869          END LOOP;
15870       ELSE
15871         OKL_API.set_message(p_app_name => G_APP_NAME,
15872                             p_msg_name => G_CNT_REC);
15873         RAISE OKL_API.G_EXCEPTION_ERROR;
15874       END IF;
15875     ELSIF p_new_yn = 'Y' THEN
15876       -- We have to make sure the count of the itiv_tbl
15877       -- should be equal to qty of items
15878       -- Since inst tbl and ib inst are same
15879       -- it is Good enough to do one
15880       IF l_itiv_ib_tbl.COUNT > 0 THEN
15881          ln_dummy1 :=  l_itiv_ib_tbl.COUNT;
15882          -- We have intialize the J , since there could be any index integer
15883          j := l_itiv_ib_tbl.FIRST;
15884          LOOP
15885 
15886            l_itiv_ib_tbl(j).dnz_cle_id := x_clev_fa_rec.cle_id; -- For importing Serial Item fix
15887 
15888            IF (l_itiv_ib_tbl(j).mfg_serial_number_yn IS NULL OR
15889               l_itiv_ib_tbl(j).mfg_serial_number_yn = OKL_API.G_MISS_CHAR) THEN
15890               x_return_status := OKL_API.G_RET_STS_ERROR;
15891               EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
15892            ELSIF l_itiv_ib_tbl(j).mfg_serial_number_yn = 'Y' THEN
15893               IF ln_dummy1 <> ln_cimv_model_no_items THEN
15894                 OKL_API.set_message(p_app_name     => G_APP_NAME,
15895                                     p_msg_name     => G_CNT_REC);
15896                 RAISE OKL_API.G_EXCEPTION_ERROR;
15897               END IF;
15898               ln_dummy := ln_cimv_model_no_items;
15899            ELSIF l_itiv_ib_tbl(j).mfg_serial_number_yn = 'N' THEN
15900               ln_dummy := 1;
15901            END IF;
15902            EXIT WHEN (j = l_itiv_ib_tbl.LAST);
15903            j := l_itiv_ib_tbl.NEXT(j);
15904          END LOOP;
15905       ELSE
15906         OKL_API.set_message(p_app_name => G_APP_NAME,
15907                             p_msg_name => G_CNT_REC);
15908         RAISE OKL_API.G_EXCEPTION_ERROR;
15909       END IF;
15910     END IF;
15911     -- Since we have to create the instance
15912     -- Depending of the qty in l_cimv_model_rec.number_of_items
15913     -- we have use loop
15914     j := l_itiv_ib_tbl.FIRST;
15915     FOR i IN 1..ln_dummy LOOP
15916       IF (l_itiv_ib_tbl(j).instance_number_ib IS NULL OR
15917          l_itiv_ib_tbl(j).instance_number_ib = OKL_API.G_MISS_CHAR) THEN
15918          x_return_status := generate_instance_number_ib(x_instance_number_ib => l_itiv_ib_tbl(j).instance_number_ib);
15919          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15920            OKL_API.set_message(p_app_name     => G_APP_NAME,
15921                                p_msg_name     => G_GEN_INST_NUM_IB);
15922            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
15923          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15924            OKL_API.set_message(p_app_name     => G_APP_NAME,
15925                                p_msg_name     => G_GEN_INST_NUM_IB);
15926            RAISE OKL_API.G_EXCEPTION_ERROR;
15927          END IF;
15928          l_itiv_ib_tbl(j).instance_number_ib := l_asset_number||' '||l_itiv_ib_tbl(j).instance_number_ib;
15929          l_itiv_inst_tbl(j).instance_number_ib := l_itiv_ib_tbl(j).instance_number_ib;
15930       END IF;
15931       -- Creation of the Instance Line Process
15932       -- Getting the Line style Info
15933       -- 4414408 Assign the line style ID directly
15934 /*
15935       x_return_status := get_lse_id(p_lty_code => G_INST_LINE_LTY_CODE,
15936                                     x_lse_id   => l_clev_inst_rec.lse_id);
15937       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15938         EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
15939       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15940         EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
15941       END IF;
15942 */
15943       IF (l_clev_inst_rec.display_sequence IS NUll OR
15944          l_clev_inst_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
15945          l_clev_inst_rec.display_sequence  := x_clev_fa_rec.display_sequence + 3;
15946       END IF;
15947       -- Required cle Line Information
15948       l_clev_inst_rec.lse_id            := G_INST_LINE_LTY_ID;
15949       l_clev_inst_rec.chr_id            := null;
15950       l_clev_inst_rec.cle_id            := x_clev_fin_rec.id;
15951       l_clev_inst_rec.dnz_chr_id        := x_clev_fin_rec.dnz_chr_id;
15952       l_clev_inst_rec.exception_yn      := 'N';
15953       -- Creation of the Instance Line
15954       Create_instance_line(p_api_version   => p_api_version,
15955                            p_init_msg_list => p_init_msg_list,
15956                            x_return_status => x_return_status,
15957                            x_msg_count     => x_msg_count,
15958                            x_msg_data      => x_msg_data,
15959                            p_clev_rec      => l_clev_inst_rec,
15960                            p_klev_rec      => l_klev_inst_rec,
15961                            p_itiv_rec      => l_itiv_inst_tbl(j),
15962                            x_clev_rec      => l_clev_inst_rec_out,
15963                            x_klev_rec      => l_klev_inst_rec_out,
15964                            x_itiv_rec      => l_itiv_inst_tbl_out(j));
15965       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15966         EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
15967       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15968         EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
15969       END IF;
15970       -- Creation of the ib Line Process
15971       -- Getting the Line style Info
15972       -- 4414408 Assign the IB line style ID directly
15973 /*
15974       x_return_status := get_lse_id(p_lty_code => G_IB_LINE_LTY_CODE,
15975                                     x_lse_id   => l_clev_ib_rec.lse_id);
15976       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
15977         EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
15978       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
15979         EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
15980       END IF;
15981 */
15982       IF (l_clev_ib_rec.display_sequence IS NUll OR
15983          l_clev_ib_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
15984          l_clev_ib_rec.display_sequence  := l_clev_inst_rec_out.display_sequence + 4;
15985       END IF;
15986       -- Required cle Line Information
15987       l_clev_ib_rec.lse_id            := G_IB_LINE_LTY_ID;
15988       l_clev_ib_rec.chr_id            := null;
15989       l_clev_ib_rec.cle_id            := l_clev_inst_rec_out.id;
15990       l_clev_ib_rec.dnz_chr_id        := x_clev_fin_rec.dnz_chr_id;
15991       l_clev_ib_rec.exception_yn      := 'N';
15992       -- Required Item Information
15993       l_cimv_ib_rec.exception_yn      := 'N';
15994       l_cimv_ib_rec.object1_id1       := null;
15995       l_cimv_ib_rec.object1_id2       := null;
15996       -- Since the screen can give only party_site_id via l_itiv_tbl(j).object_id1_new
15997       -- We have to use the below function
15998       lv_object_id1_new := l_itiv_ib_tbl(j).object_id1_new;
15999       x_return_status := get_party_site_id(p_object_id1_new => lv_object_id1_new,
16000                                            x_object_id1_new => l_itiv_ib_tbl(j).object_id1_new,
16001                                            x_object_id2_new => l_itiv_ib_tbl(j).object_id2_new);
16002       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16003         EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
16004       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16005         EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
16006       END IF;
16007       IF P_new_yn= 'Y' THEN
16008         l_itiv_ib_tbl(j).tal_type := 'CFA';
16009       ELSIF p_new_yn = 'N' THEN
16010         l_itiv_ib_tbl(j).tal_type := 'CRL';
16011         m := lt_instance_id_tbl.FIRST;
16012         l_cimv_ib_rec.object1_id1 := lt_instance_id_tbl(m);
16013         l_cimv_ib_rec.object1_id2 := '#';
16014       END IF;
16015        -- Creation of the ib Line
16016       Create_instance_ib_line(p_api_version   => p_api_version,
16017                               p_init_msg_list => p_init_msg_list,
16018                               x_return_status => x_return_status,
16019                               x_msg_count     => x_msg_count,
16020                               x_msg_data      => x_msg_data,
16021                               p_clev_rec      => l_clev_ib_rec,
16022                               p_klev_rec      => l_klev_ib_rec,
16023                               p_cimv_rec      => l_cimv_ib_rec,
16024                               p_itiv_rec      => l_itiv_ib_tbl(j),
16025                               x_clev_rec      => x_clev_ib_rec,
16026                               x_klev_rec      => l_klev_ib_rec_out,
16027                               x_cimv_rec      => l_cimv_ib_rec_out,
16028                               x_trxv_rec      => l_trxv_ib_rec_out,
16029                               x_itiv_rec      => l_itiv_ib_tbl_out(j));
16030       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16031         EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
16032       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16033         EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
16034       END IF;
16035       EXIT WHEN (j = l_itiv_inst_tbl.LAST);
16036       j := l_itiv_inst_tbl.NEXT(j);
16037       m := m + 1;
16038     END LOOP;
16039     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16040        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16041     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16042        RAISE OKL_API.G_EXCEPTION_ERROR;
16043     END IF;
16044   END IF; --release asset --Bug# 3533936
16045 
16046   -- Added by rravikir (Estimated property tax) -- Bug 3947959
16047   -- Property tax rules are not created for Quotes, they are taken care in the
16048   -- respective API.
16049   IF (lv_scs_code IS NOT NULL AND lv_scs_code <> 'QUOTE') THEN
16050     OKL_LA_PROPERTY_TAX_PVT.create_est_prop_tax_rules(
16051             p_api_version        => p_api_version,
16052             p_init_msg_list      => p_init_msg_list,
16053             x_return_status      => x_return_status,
16054             x_msg_count          => x_msg_count,
16055             x_msg_data           => x_msg_data,
16056             p_chr_id             => ln_chr_id,
16057             p_cle_id             => ln_cle_id);
16058     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16059       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16060     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16061       RAISE OKL_API.G_EXCEPTION_ERROR;
16062     END IF;
16063     --Bug#4658856 ramurt
16064     OKL_LA_SALES_TAX_PVT.create_sales_tax_rules(
16065             p_api_version        => p_api_version,
16066             p_init_msg_list      => p_init_msg_list,
16067             x_return_status      => x_return_status,
16068             x_msg_count          => x_msg_count,
16069             x_msg_data           => x_msg_data,
16070             p_chr_id             => ln_chr_id,
16071             p_cle_id             => ln_cle_id);
16072 
16073     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16074       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16075     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16076       RAISE OKL_API.G_EXCEPTION_ERROR;
16077     END IF;
16078   END IF;
16079   -- end
16080 
16081   OKL_API.END_ACTIVITY (x_msg_count,
16082                         x_msg_data );
16083   EXCEPTION
16084     WHEN OKL_API.G_EXCEPTION_ERROR THEN
16085     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
16086                                l_api_name,
16087                                G_PKG_NAME,
16088                                'OKL_API.G_RET_STS_ERROR',
16089                                x_msg_count,
16090                                x_msg_data,
16091                                '_PVT');
16092     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
16093     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
16094                               l_api_name,
16095                               G_PKG_NAME,
16096                               'OKL_API.G_RET_STS_UNEXP_ERROR',
16097                               x_msg_count,
16098                               x_msg_data,
16099                               '_PVT');
16100     WHEN OTHERS THEN
16101     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
16102                               l_api_name,
16103                               G_PKG_NAME,
16104                               'OTHERS',
16105                               x_msg_count,
16106                               x_msg_data,
16107                               '_PVT');
16108   END Create_all_line;
16109 -----------------------------------------------------------------------------------------------
16110 --------------------- Main Process for All Lines Line Updating---------------------------------
16111 -----------------------------------------------------------------------------------------------
16112   PROCEDURE Update_all_line(
16113             p_api_version    IN  NUMBER,
16114             p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
16115             x_return_status  OUT NOCOPY VARCHAR2,
16116             x_msg_count      OUT NOCOPY NUMBER,
16117             x_msg_data       OUT NOCOPY VARCHAR2,
16118             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
16119             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
16120             p_clev_fin_rec   IN  clev_rec_type,
16121             p_klev_fin_rec   IN  klev_rec_type,
16122             p_clev_model_rec IN  clev_rec_type,
16123             p_cimv_model_rec IN  cimv_rec_type,
16124             p_clev_fa_rec    IN  clev_rec_type,
16125             p_cimv_fa_rec    IN  cimv_rec_type,
16126             p_talv_fa_rec    IN  talv_rec_type,
16127             p_clev_ib_rec    IN  clev_rec_type,
16128             p_itiv_ib_rec    IN  itiv_rec_type,
16129             x_clev_fin_rec   OUT NOCOPY clev_rec_type,
16130             x_clev_model_rec OUT NOCOPY clev_rec_type,
16131             x_clev_fa_rec    OUT NOCOPY clev_rec_type,
16132             x_clev_ib_rec    OUT NOCOPY clev_rec_type) IS
16133     l_api_name          CONSTANT VARCHAR2(30) := 'UPDATE_ALL_LINES';
16134     l_clev_fin_rec               clev_rec_type;
16135     l_klev_fin_rec               klev_rec_type;
16136     l_clev_fin_rec_out           clev_rec_type;
16137     l_klev_fin_rec_out           klev_rec_type;
16138     l_clev_model_rec             clev_rec_type;
16139     l_klev_model_rec             klev_rec_type;
16140     l_cimv_model_rec             cimv_rec_type;
16141     l_clev_model_rec_out         clev_rec_type;
16142     l_klev_model_rec_out         klev_rec_type;
16143     l_cimv_model_rec_out         cimv_rec_type;
16144     l_clev_fa_rec                clev_rec_type;
16145     l_klev_fa_rec                klev_rec_type;
16146     l_cimv_fa_rec                cimv_rec_type;
16147     l_trxv_fa_rec                trxv_rec_type;
16148     l_talv_fa_rec                talv_rec_type;
16149     l_clev_fa_rec_out            clev_rec_type;
16150     l_klev_fa_rec_out            klev_rec_type;
16151     l_cimv_fa_rec_out            cimv_rec_type;
16152     l_trxv_fa_rec_out            trxv_rec_type;
16153     l_talv_fa_rec_out            talv_rec_type;
16154     l_clev_inst_rec              clev_rec_type;
16155     l_klev_inst_rec              klev_rec_type;
16156     l_itiv_inst_rec              itiv_rec_type;
16157     l_clev_inst_rec_out          clev_rec_type;
16158     l_klev_inst_rec_out          klev_rec_type;
16159     l_itiv_inst_rec_out          itiv_rec_type;
16160     l_clev_ib_rec                clev_rec_type;
16161     l_klev_ib_rec                klev_rec_type;
16162     l_cimv_ib_rec                cimv_rec_type;
16163     l_trxv_ib_rec                trxv_rec_type;
16164     l_itiv_ib_rec                itiv_rec_type;
16165     l_clev_ib_rec_out            clev_rec_type;
16166     l_klev_ib_rec_out            klev_rec_type;
16167     l_cimv_ib_rec_out            cimv_rec_type;
16168     l_trxv_ib_rec_out            trxv_rec_type;
16169     l_itiv_ib_rec_out            itiv_rec_type;
16170     n_itiv_ib_rec                itiv_rec_type;
16171     nx_itiv_ib_rec               itiv_rec_type;
16172 
16173     r_clev_fin_rec               clev_rec_type;
16174     r_klev_fin_rec               klev_rec_type;
16175     r_clev_model_rec             clev_rec_type;
16176     r_klev_model_rec             klev_rec_type;
16177     r_cimv_model_rec             cimv_rec_type;
16178     r_clev_fa_rec                clev_rec_type;
16179     r_klev_fa_rec                klev_rec_type;
16180     r_cimv_fa_rec                cimv_rec_type;
16181     r_talv_fa_rec                talv_rec_type;
16182     r_clev_inst_rec              clev_rec_type;
16183     r_klev_inst_rec              klev_rec_type;
16184     r_itiv_inst_rec              itiv_rec_type;
16185     r_clev_ib_rec                clev_rec_type;
16186     r_klev_ib_rec                klev_rec_type;
16187     r_cimv_ib_rec                cimv_rec_type;
16188     r_itiv_ib_rec                itiv_rec_type;
16189     ln_addon_oec                 OKL_K_LINES_V.OEC%TYPE := 0;
16190     ln_klev_fin_oec              OKL_K_LINES_V.OEC%TYPE := 0;
16191     ln_klev_fin_res              OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
16192     ln_klev_fin_cap              OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
16193     ln_clev_model_price_unit     OKC_K_LINES_V.PRICE_UNIT%TYPE := 0;
16194     ln_cimv_model_no_items       OKC_K_ITEMS_V.NUMBER_OF_ITEMS%TYPE := 0;
16195     lv_object_id1_new            OKL_TXL_ITM_INSTS_V.OBJECT_ID1_NEW%TYPE;
16196     lv_model_object_id1          OKC_K_ITEMS_V.OBJECT1_ID1%TYPE;
16197     lv_model_object_id2          OKC_K_ITEMS_V.OBJECT1_ID2%TYPE;
16198     ln_dummy                     NUMBER := 0;
16199     ln_dummy1                    NUMBER := 0;
16200     i                            NUMBER := 0;
16201     j                            NUMBER := 0;
16202     l_new_yn                     VARCHAR2(3);
16203     l_go_for_calc                VARCHAR2(3):= 'Y';
16204 
16205     -- rravikir added
16206     ln_txl_itm_id                OKL_TXL_ITM_INSTS.ID%TYPE;
16207     k_itiv_ib_rec                itiv_rec_type;
16208     kx_itiv_ib_rec               itiv_rec_type;
16209     lv_object_id1                OKL_TXL_ITM_INSTS.OBJECT_ID1_NEW%TYPE;
16210     lv_object_id2                OKL_TXL_ITM_INSTS.OBJECT_ID2_NEW%TYPE;
16211     ln_inv_itm_id                OKL_TXL_ITM_INSTS.INVENTORY_ITEM_ID%TYPE;
16212     ln_inv_org_id                OKL_TXL_ITM_INSTS.INVENTORY_ORG_ID%TYPE;
16213     lv_jtot_object_code_new      OKL_TXL_ITM_INSTS.JTOT_OBJECT_CODE_NEW%TYPE;
16214     -- end rravikir
16215 
16216     CURSOR c_asset_iti(p_asset_number OKL_TXL_ASSETS_B.ASSET_NUMBER%TYPE,
16217                        p_dnz_chr_id   OKC_K_LINES_B.DNZ_CHR_ID%TYPE)
16218     IS
16219     select cle_ib.id id
16220     from okc_line_styles_b lse_ib,
16221         okc_k_lines_b cle_ib,
16222         okc_line_styles_b lse_inst,
16223         okc_k_lines_b cle_inst,
16224         okc_line_styles_b lse_tl,
16225         okc_k_lines_v cleb_tl
16226     where cleb_tl.name = P_asset_number
16227     and cleb_tl.dnz_chr_id = p_dnz_chr_id
16228     and cleb_tl.lse_id = lse_tl.id
16229     and lse_tl.lty_code = G_FIN_LINE_LTY_CODE
16230     and lse_tl.lse_type = G_TLS_TYPE
16231     and cle_inst.cle_id = cleb_tl.id
16232     and cle_inst.lse_id = lse_inst.id
16233     and lse_inst.lty_code = G_INST_LINE_LTY_CODE
16234     and cle_ib.cle_id = cle_inst.id
16235     and cle_ib.lse_id = lse_ib.id
16236     and lse_ib.lty_code = G_IB_LINE_LTY_CODE;
16237 
16238     -- rravikir added
16239     CURSOR c_get_txl_itm_insts(p_top_line_id  OKC_K_LINES_B.ID%TYPE,
16240                                p_txl_inst_id  OKL_TXL_ITM_INSTS.ID%TYPE)
16241     IS
16242     select iti.id, iti.inventory_item_id, iti.inventory_org_id,
16243            iti.object_id1_new, iti.object_id2_new, iti.jtot_object_code_new
16244     from okl_txl_itm_insts iti,
16245          okc_line_styles_b lse_ib,
16246          okc_k_lines_b cle_ib,
16247          okc_line_styles_b lse_inst,
16248          okc_k_lines_b cle_inst
16249     where cle_inst.cle_id =  p_top_line_id
16250     and   cle_inst.lse_id = lse_inst.id
16251     and   lse_inst.lty_code = G_INST_LINE_LTY_CODE
16252     and   cle_ib.cle_id = cle_inst.id
16253     and   cle_ib.lse_id = lse_ib.id
16254     and   lse_ib.lty_code = G_IB_LINE_LTY_CODE
16255     and   cle_ib.id = iti.kle_id
16256     and   cle_ib.id <> p_txl_inst_id;
16257     -- end rravikir
16258 
16259     l_top_line_id NUMBER;
16260     l_oec NUMBER;
16261 
16262     --Bug# 3533936: Enhancements for release assets
16263     l_rel_ast_fin_cle_id   NUMBER;
16264     l_itiv_ib_tbl          itiv_tbl_type;
16265 
16266     --cursor to get existing residual values
16267     --and down payment values Bug# 5192636
16268     cursor l_cle_csr          (p_cle_id in number,
16269                                p_chr_id in number) is
16270     select fin_kle.DOWN_PAYMENT_RECEIVER_CODE,
16271            fin_kle.CAPITALIZE_DOWN_PAYMENT_YN,
16272            fin_kle.residual_value,
16273            fin_kle.residual_percentage
16274     from
16275            okl_k_lines       fin_kle,
16276            okc_k_lines_b     fin_cleb
16277     where  fin_kle.id          = fin_cleb.id
16278     and    fin_cleb.id         = p_cle_id
16279     and    fin_cleb.chr_id     = p_chr_id
16280     and    fin_cleb.dnz_chr_id = p_chr_id;
16281 
16282     l_cle_rec     l_cle_csr%ROWTYPE;
16283 
16284     --cursor to get asset id from fa
16285     cursor l_fab_csr (p_asset_number in varchar2) is
16286     select asset_id
16287     from   fa_additions_b
16288     where  asset_number  = p_Asset_number;
16289 
16290     l_asset_id  fa_additions_b.asset_id%TYPE;
16291 
16292     --cursor to check if contract has re-lease assets
16293     CURSOR l_chk_rel_ast_csr (p_chr_id IN NUMBER) IS
16294     SELECT 'Y',
16295            --Bug# 4631549
16296            chr.orig_system_source_code,
16297            chr.orig_system_id1 orig_chr_id,
16298            chr.start_date
16299     FROM   okc_k_headers_b CHR,
16300            okc_rules_b     rul
16301     WHERE  CHR.ID = p_chr_id
16302     AND    rul.dnz_chr_id = CHR.id
16303     AND    rul.rule_information_category = 'LARLES'
16304     AND    NVL(rule_information1,'N') = 'Y';
16305 
16306     l_chk_rel_ast   Varchar2(1) default 'N';
16307     --Bug# 4631549
16308     l_orig_system_source_code OKC_K_HEADERS_B.orig_system_source_code%TYPE;
16309     l_orig_chr_id             OKC_K_HEADERS_B.ID%TYPE;
16310     l_start_date              OKC_K_HEADERS_B.START_DATE%TYPE;
16311 
16312     l_rel_ast_clev_fin_rec      clev_rec_type;
16313     l_rel_ast_klev_fin_rec      klev_rec_type;
16314     l_rel_ast_clev_model_rec    clev_rec_type;
16315     l_rel_ast_klev_model_rec    klev_rec_type;
16316     l_rel_ast_clev_fa_rec       clev_rec_type;
16317     l_rel_ast_klev_fa_rec       klev_rec_type;
16318     l_rel_ast_clev_ib_tbl       clev_tbl_type;
16319     l_rel_ast_klev_ib_tbl       klev_tbl_type;
16320     --End Bug# 3533936
16321 
16322     --Bug# 4161221: start
16323     CURSOR c_addon_line_id(p_model_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
16324                            p_chr_id       OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
16325     SELECT cle.id
16326     FROM  okc_k_lines_b cle,
16327           okc_line_styles_b lse
16328     WHERE cle.dnz_chr_id = p_chr_id
16329     AND cle.lse_id = lse.id
16330     AND lse.lty_code = G_ADDON_LINE_LTY_CODE
16331     AND cle.cle_id = p_model_cle_id;
16332 
16333     r_cimv_addon_rec             cimv_rec_type;
16334     rx_cimv_addon_rec            cimv_rec_type;
16335     --Bug# 4161221: end
16336 
16337 
16338     --Bug# 4899328
16339     --cursor to check if the contract is undergoing on-line rebook
16340       cursor l_chk_rbk_csr(p_chr_id IN NUMBER) is
16341       SELECT '!'
16342       FROM   okc_k_headers_b CHR,
16343              okl_trx_contracts ktrx
16344       WHERE  ktrx.khr_id_new = chr.id
16345       AND    ktrx.tsu_code = 'ENTERED'
16346       AND    ktrx.rbr_code is NOT NULL
16347       AND    ktrx.tcn_type = 'TRBK'
16348       --rkuttiya added for 12.1.1 Multi GAAP
16349       AND    ktrx.representation_type = 'PRIMARY'
16350       --
16351       AND    chr.id = p_chr_id
16352       AND    chr.orig_system_source_code = 'OKL_REBOOK';
16353 
16354     l_rbk_khr      VARCHAR2(1) DEFAULT '?';
16355 
16356     l_line_capital_amount  okl_k_lines.capital_amount%TYPE;
16357 
16358   --Bug# 4631549
16359   cursor l_orig_cle_csr (p_cle_id in number
16360                          ) is
16361   select cleb.orig_system_id1 orig_cle_id
16362   from   okc_k_lines_b cleb
16363   where  cleb.id   = p_cle_id;
16364 
16365   l_orig_cle_rec l_orig_cle_csr%ROWTYPE;
16366 
16367   cursor l_fbk_csr (p_asset_id in number) is
16368   select fab.book_type_code
16369   from   fa_books fab,
16370          fa_book_controls fbc
16371   where  fab.asset_id = p_asset_id
16372   and    fab.transaction_header_id_out is null
16373   and    fab.book_type_code = fbc.book_type_code
16374   and    fbc.book_class = 'CORPORATE';
16375 
16376   l_fbk_rec l_fbk_csr%ROWTYPE;
16377 
16378   l_corp_net_book_value number;
16379   l_expected_cost       number;
16380 
16381   l_clev_fin_rec2        okl_okc_migration_pvt.clev_rec_type;
16382   lx_clev_fin_rec2       okl_okc_migration_pvt.clev_rec_type;
16383   l_klev_fin_rec2        okl_contract_pub.klev_rec_type;
16384   lx_klev_fin_rec2       okl_contract_pub.klev_rec_type;
16385   --End Bug# 4631549
16386   BEGIN
16387 
16388     x_return_status := OKL_API.G_RET_STS_SUCCESS;
16389     -- Call start_activity to create savepoint, check compatibility
16390     -- and initialize message list
16391     x_return_status := OKL_API.START_ACTIVITY (
16392                                l_api_name
16393                                ,p_init_msg_list
16394                                ,'_PVT'
16395                                ,x_return_status);
16396     -- Check if activity started successfully
16397     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16398        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16399     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16400        RAISE OKL_API.G_EXCEPTION_ERROR;
16401     END IF;
16402 --start:|           14-May-2008 cklee  Bug 6405415               				     |
16403     IF p_klev_fin_rec.residual_percentage <> OKL_API.G_MISS_NUM and
16404        p_klev_fin_rec.residual_percentage IS NOT NULL THEN
16405       IF NOT p_klev_fin_rec.residual_percentage between 0 and 100 THEN
16406         OKL_API.set_message(p_app_name => G_APP_NAME,
16407                             p_msg_name => 'OKL_VALID_RESIDUAL_PERCENT');
16408         RAISE OKL_API.G_EXCEPTION_ERROR;
16409       END IF;
16410     END IF;
16411 --end:|           14-May-2008 cklee  Bug 6405415               				     |
16412 
16413     --Bug# 4959361
16414     OKL_LLA_UTIL_PVT.check_line_update_allowed
16415       (p_api_version     => p_api_version,
16416        p_init_msg_list   => p_init_msg_list,
16417        x_return_status   => x_return_status,
16418        x_msg_count       => x_msg_count,
16419        x_msg_data        => x_msg_data,
16420        p_cle_id          => p_clev_fin_rec.id);
16421 
16422     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16423        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16424     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16425        RAISE OKL_API.G_EXCEPTION_ERROR;
16426     END IF;
16427     --Bug# 4959361
16428 
16429     l_new_yn         := p_new_yn;
16430     l_clev_fin_rec   := p_clev_fin_rec;
16431     l_klev_fin_rec   := p_klev_fin_rec;
16432 
16433     --Bug# 6888733: start
16434 
16435     if l_klev_fin_rec.RESIDUAL_GRNTY_AMOUNT = fnd_api.g_miss_num then
16436       l_klev_fin_rec.RESIDUAL_GRNTY_AMOUNT := null;
16437     end if;
16438 
16439     --Bug# 6888733: end
16440 
16441     l_clev_model_rec := p_clev_model_rec;
16442     l_cimv_model_rec := p_cimv_model_rec;
16443     l_clev_fa_rec    := p_clev_fa_rec;
16444     l_cimv_fa_rec    := p_cimv_fa_rec;
16445     l_talv_fa_rec    := p_talv_fa_rec;
16446     l_itiv_inst_rec  := p_itiv_ib_rec;
16447     l_clev_ib_rec    := p_clev_ib_rec;
16448     l_itiv_ib_rec    := p_itiv_ib_rec;
16449     IF (l_clev_fin_rec.dnz_chr_id IS NULL OR
16450        l_clev_fin_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
16451        OKL_API.set_message(p_app_name     => G_APP_NAME,
16452                            p_msg_name     => G_REQUIRED_VALUE,
16453                            p_token1       => G_COL_NAME_TOKEN,
16454                            p_token1_value => 'OKC_K_LINES_V.DNZ_CHR_ID for All Lines');
16455        RAISE OKL_API.G_EXCEPTION_ERROR;
16456     END IF;
16457 
16458 
16459     ------------------------------------------------------
16460     --Bug# 3533936 : Release Asset Case - all line details
16461     -- should default from exising asset
16462     ------------------------------------------------------
16463     l_chk_rel_ast := 'N';
16464     Open l_chk_rel_ast_csr(p_chr_id => l_clev_fin_rec.dnz_chr_id);
16465     FETCH l_chk_rel_ast_csr INTO l_chk_rel_ast,
16466                                  --Bug# 4631549
16467                                  l_orig_system_source_code,
16468                                  l_orig_chr_id,
16469                                  l_start_date;
16470     If l_chk_rel_ast_csr%NOTFOUND then
16471         null;
16472     end if;
16473     close l_chk_rel_ast_csr;
16474 
16475     If l_new_yn   = 'N'  And l_chk_rel_ast = 'Y' Then
16476 
16477         open l_fab_csr(p_asset_number => p_asset_number );
16478         fetch l_fab_csr into l_asset_id;
16479         If l_fab_csr%NOTFOUND then
16480            --error invalid line
16481            NULL;
16482         End If;
16483         close l_fab_csr;
16484 
16485 
16486         If l_klev_fin_rec.id  = OKL_API.G_MISS_NUM then
16487             l_klev_fin_rec.id := l_clev_fin_rec.id;
16488         End If;
16489 
16490 
16491         l_itiv_ib_tbl(1) := l_itiv_ib_rec;
16492 
16493         --Bug# 4631549
16494         If nvl(l_orig_system_source_code,okl_api.g_miss_char) <> 'OKL_RELEASE' Then
16495         update_release_asset_line
16496             (p_api_version     => p_api_version,
16497              p_init_msg_list   => p_init_msg_list,
16498              x_return_status   => x_return_status,
16499              x_msg_count       => x_msg_count,
16500              x_msg_data        => x_msg_data,
16501              p_asset_id        => to_char(l_asset_id),
16502              p_chr_id          => l_clev_fin_rec.dnz_chr_id,
16503              p_clev_fin_id     => l_clev_fin_rec.id,
16504              x_cle_id          => l_rel_ast_fin_cle_id);
16505 
16506         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16507             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16508         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16509             RAISE OKL_API.G_EXCEPTION_ERROR;
16510         END IF;
16511 
16512 
16513 
16514         Modify_Release_Asset_Line(
16515             p_api_version    =>  p_api_version,
16516             p_init_msg_list  => p_init_msg_list,
16517             x_return_status  => x_return_status,
16518             x_msg_count      => x_msg_count,
16519             x_msg_data       => x_msg_data,
16520             p_clev_fin_rec   => l_clev_fin_rec,
16521             p_klev_fin_rec   => l_klev_fin_rec,
16522 	     --akrangan Bug# 5362977 start
16523             p_clev_model_rec => l_clev_model_rec,
16524             --akrangan Bug# 5362977 end
16525             p_cimv_model_rec => l_cimv_model_rec,
16526             p_clev_fa_rec    => l_clev_fa_rec,
16527             p_cimv_fa_rec    => l_cimv_fa_rec,
16528             p_talv_fa_rec    => l_talv_fa_rec,
16529             p_itiv_ib_tbl    => l_itiv_ib_tbl,
16530             p_cle_id         => l_rel_ast_fin_cle_id,
16531             --Bug# 4631549
16532             p_call_mode      => 'RELEASE_ASSET',
16533             x_clev_fin_rec   => l_rel_ast_clev_fin_rec,
16534             x_klev_fin_rec   => l_rel_ast_klev_fin_rec,
16535             x_clev_model_rec => l_rel_ast_clev_model_rec,
16536             x_klev_model_rec => l_rel_ast_klev_model_rec,
16537             x_clev_fa_rec    => l_rel_ast_clev_fa_rec,
16538             x_klev_fa_rec    => l_rel_ast_klev_fa_rec,
16539             x_clev_ib_tbl    => l_rel_ast_clev_ib_tbl,
16540             x_klev_ib_tbl    => l_rel_ast_klev_ib_tbl);
16541 
16542         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16543            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16544         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16545            RAISE OKL_API.G_EXCEPTION_ERROR;
16546         END IF;
16547 
16548         x_clev_fin_rec   := l_rel_ast_clev_fin_rec;
16549         x_clev_model_rec := l_rel_ast_clev_model_rec;
16550         x_clev_fa_rec    := l_rel_ast_clev_fa_rec;
16551         If l_rel_ast_clev_ib_tbl.COUNT > 0 then
16552             x_clev_ib_rec    := l_rel_ast_clev_ib_tbl(1);
16553         End If;
16554 
16555         --Bug# 4631549
16556         ElsIf nvl(l_orig_system_source_code,OKL_API.G_MISS_CHAR) = 'OKL_RELEASE' Then
16557 
16558            Modify_Release_Asset_Line(
16559             p_api_version    =>  p_api_version,
16560             p_init_msg_list  => p_init_msg_list,
16561             x_return_status  => x_return_status,
16562             x_msg_count      => x_msg_count,
16563             x_msg_data       => x_msg_data,
16564             p_clev_fin_rec   => l_clev_fin_rec,
16565             p_klev_fin_rec   => l_klev_fin_rec,
16566 	     --akrangan Bug# 5362977 start
16567             p_clev_model_rec => l_clev_model_rec,
16568             --akrangan Bug# 5362977 end
16569             p_cimv_model_rec => l_cimv_model_rec,
16570             p_clev_fa_rec    => l_clev_fa_rec,
16571             p_cimv_fa_rec    => l_cimv_fa_rec,
16572             p_talv_fa_rec    => l_talv_fa_rec,
16573             p_itiv_ib_tbl    => l_itiv_ib_tbl,
16574             p_cle_id         => l_clev_fin_rec.id,
16575             --Bug# 4631549
16576             p_call_mode      => 'RELEASE_CONTRACT',
16577             x_clev_fin_rec   => l_rel_ast_clev_fin_rec,
16578             x_klev_fin_rec   => l_rel_ast_klev_fin_rec,
16579             x_clev_model_rec => l_rel_ast_clev_model_rec,
16580             x_klev_model_rec => l_rel_ast_klev_model_rec,
16581             x_clev_fa_rec    => l_rel_ast_clev_fa_rec,
16582             x_klev_fa_rec    => l_rel_ast_klev_fa_rec,
16583             x_clev_ib_tbl    => l_rel_ast_clev_ib_tbl,
16584             x_klev_ib_tbl    => l_rel_ast_klev_ib_tbl);
16585 
16586         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16587            RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16588         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16589            RAISE OKL_API.G_EXCEPTION_ERROR;
16590         END IF;
16591 
16592         x_clev_fin_rec   := l_rel_ast_clev_fin_rec;
16593         x_clev_model_rec := l_rel_ast_clev_model_rec;
16594         x_clev_fa_rec    := l_rel_ast_clev_fa_rec;
16595         IF l_rel_ast_clev_ib_tbl.COUNT > 0 THEN
16596             x_clev_ib_rec    := l_rel_ast_clev_ib_tbl(1);
16597         END IF;
16598             open l_orig_cle_csr (p_cle_id => x_clev_fin_rec.id);
16599             fetch l_orig_cle_csr into l_orig_cle_rec;
16600             close l_orig_cle_csr;
16601 
16602             open l_fbk_csr (p_asset_id => l_asset_id);
16603             fetch l_fbk_csr into l_fbk_rec;
16604             close l_fbk_csr;
16605 
16606             OKL_RELEASE_PVT.Calculate_Expected_Cost
16607                                (p_api_version    => p_api_version,
16608                                 p_init_msg_list  => p_init_msg_list,
16609                                 x_return_status  => x_return_status,
16610                                 x_msg_count      => x_msg_count,
16611                                 x_msg_data       => x_msg_data,
16612                                 p_new_chr_id     => x_clev_fin_rec.dnz_chr_id,
16613                                 p_orig_chr_id    => l_orig_chr_id,
16614                                 p_orig_cle_id    => l_orig_cle_rec.orig_cle_id,
16615                                 p_asset_id       => l_asset_id,
16616                                 p_book_type_code => l_fbk_rec.book_type_code,
16617                                 p_release_date   => l_start_date,
16618                                 p_nbv            => l_corp_net_book_value,
16619                                 x_expected_cost  => l_expected_cost);
16620 
16621             IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16622                 RAISE OKL_API.G_EXCEPTION_ERROR;
16623             ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16624                 RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16625             END IF;
16626 
16627             l_clev_fin_rec2.id := x_clev_fin_rec.id;
16628             l_klev_fin_rec2.id := x_clev_fin_rec.id;
16629             l_klev_fin_rec2.expected_asset_cost := l_expected_cost;
16630 
16631             OKL_CONTRACT_PUB.update_contract_line
16632                                 (p_api_version    => p_api_version,
16633                                 p_init_msg_list  => p_init_msg_list,
16634                                 x_return_status  => x_return_status,
16635                                 x_msg_count      => x_msg_count,
16636                                 x_msg_data       => x_msg_data,
16637                                 p_clev_rec       => l_clev_fin_rec2,
16638                                 p_klev_rec       => l_klev_fin_rec2,
16639                                 x_clev_rec       => lx_clev_fin_rec2,
16640                                 x_klev_rec       => lx_klev_fin_rec2);
16641 
16642              IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16643                  RAISE OKL_API.G_EXCEPTION_ERROR;
16644              ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16645                  RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16646              END IF;
16647          End If;
16648          --End Bug# 4631549
16649 
16650     Else
16651     --End Bug# 3533936
16652 
16653 
16654 
16655     -- Check for Required Values
16656     x_return_status := check_required_values(p_item1    => l_cimv_model_rec.object1_id1,
16657                                              p_item2    => l_cimv_model_rec.object1_id2,
16658                                              p_ast_no   => l_talv_fa_rec.asset_number,
16659                                              p_ast_desc => l_talv_fa_rec.description,
16660                                              p_cost     => l_talv_fa_rec.original_cost,
16661                                              p_units    => l_talv_fa_rec.current_units,
16662                                              p_ib_loc1  => l_itiv_ib_rec.object_id1_new,
16663                                              p_ib_loc2  => l_itiv_ib_rec.object_id2_new,
16664                                              p_fa_loc   => l_talv_fa_rec.fa_location_id,
16665                                              p_refinance_amount => l_klev_fin_rec.refinance_amount,
16666                                              p_chr_id   => l_clev_fin_rec.dnz_chr_id);
16667     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16668        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16669     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16670        RAISE OKL_API.G_EXCEPTION_ERROR;
16671     END IF;
16672     -- To Get the txlv fa Line Record
16673     x_return_status := get_rec_txlv(l_clev_fa_rec.id,
16674                                     r_talv_fa_rec);
16675     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16676        OKL_API.set_message(p_app_name     => G_APP_NAME,
16677                            p_msg_name     => G_FETCHING_INFO,
16678                            p_token1       => G_REC_NAME_TOKEN,
16679                            p_token1_value => 'OKL_TXL_ASSETS_V Record');
16680        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16681     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16682        OKL_API.set_message(p_app_name     => G_APP_NAME,
16683                            p_msg_name     => G_FETCHING_INFO,
16684                            p_token1       => G_REC_NAME_TOKEN,
16685                            p_token1_value => 'OKL_TXL_ASSETS_V Record');
16686        RAISE OKL_API.G_EXCEPTION_ERROR;
16687     END IF;
16688     IF (l_talv_fa_rec.asset_number IS NUll OR
16689         l_talv_fa_rec.asset_number = OKL_API.G_MISS_CHAR) THEN
16690         l_talv_fa_rec.asset_number  := r_talv_fa_rec.asset_number;
16691 --    ELSIF l_talv_fa_rec.asset_number = r_talv_fa_rec.asset_number THEN
16692 --        l_new_yn  := 'N';
16693     END IF;
16694     IF (l_talv_fa_rec.original_cost IS NUll OR
16695         l_talv_fa_rec.original_cost = OKL_API.G_MISS_NUM) THEN
16696        OKL_API.set_message(p_app_name     => G_APP_NAME,
16697                            p_msg_name     => G_REQUIRED_VALUE,
16698                            p_token1       => G_REC_NAME_TOKEN,
16699                            p_token1_value => 'OKL_TXL_ASSETS_V.ORIGINAL_COST');
16700        RAISE OKL_API.G_EXCEPTION_ERROR;
16701     END IF;
16702     IF (l_talv_fa_rec.current_units IS NUll OR
16703         l_talv_fa_rec.current_units = OKL_API.G_MISS_NUM) THEN
16704        OKL_API.set_message(p_app_name     => G_APP_NAME,
16705                            p_msg_name     => G_REQUIRED_VALUE,
16706                            p_token1       => G_COL_NAME_TOKEN,
16707                            p_token1_value => 'OKL_TXL_ASSETS_V.CURRENT_UNITS');
16708        RAISE OKL_API.G_EXCEPTION_ERROR;
16709     END IF;
16710     l_clev_model_rec.price_unit         := l_talv_fa_rec.original_cost;
16711     l_clev_fa_rec.price_unit            := l_talv_fa_rec.original_cost;
16712     l_cimv_model_rec.number_of_items    := l_talv_fa_rec.current_units;
16713     l_cimv_fa_rec.number_of_items       := l_talv_fa_rec.current_units;
16714     -- To Get the kle top Line Record
16715     x_return_status := get_rec_clev(l_clev_fin_rec.id,
16716                                     r_clev_fin_rec);
16717     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16718        OKL_API.set_message(p_app_name     => G_APP_NAME,
16719                            p_msg_name     => G_FETCHING_INFO,
16720                            p_token1       => G_REC_NAME_TOKEN,
16721                            p_token1_value => 'OKC_K_LINES_V Record');
16722        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16723     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16724        OKL_API.set_message(p_app_name     => G_APP_NAME,
16725                            p_msg_name     => G_FETCHING_INFO,
16726                            p_token1       => G_REC_NAME_TOKEN,
16727                            p_token1_value => 'OKC_K_LINES_V Record');
16728        RAISE OKL_API.G_EXCEPTION_ERROR;
16729     END IF;
16730     -- To Get the kle top Line Record
16731     x_return_status := get_rec_klev(l_clev_fin_rec.id,
16732                                     r_klev_fin_rec);
16733     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16734        OKL_API.set_message(p_app_name     => G_APP_NAME,
16735                            p_msg_name     => G_FETCHING_INFO,
16736                            p_token1       => G_REC_NAME_TOKEN,
16737                            p_token1_value => 'OKL_K_LINES_V Record');
16738        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16739     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16740        OKL_API.set_message(p_app_name     => G_APP_NAME,
16741                            p_msg_name     => G_FETCHING_INFO,
16742                            p_token1       => G_REC_NAME_TOKEN,
16743                            p_token1_value => 'OKL_K_LINES_V Record');
16744        RAISE OKL_API.G_EXCEPTION_ERROR;
16745     END IF;
16746     IF r_clev_fin_rec.id <> r_klev_fin_rec.id THEN
16747        OKL_API.set_message(p_app_name     => G_APP_NAME,
16748                            p_msg_name     => G_LINE_RECORD);
16749        RAISE OKL_API.G_EXCEPTION_ERROR;
16750     END IF;
16751     --Build the clev Top Line Record
16752     l_clev_fin_rec.cle_id           := null;
16753     IF (l_clev_fin_rec.chr_id IS NUll OR
16754        l_clev_fin_rec.chr_id = OKL_API.G_MISS_NUM) THEN
16755        l_clev_fin_rec.chr_id  := r_clev_fin_rec.chr_id;
16756     END IF;
16757     IF (l_clev_fin_rec.name IS NUll OR
16758        l_clev_fin_rec.name = OKL_API.G_MISS_CHAR) AND
16759        (r_clev_fin_rec.name <> p_asset_number) THEN
16760        l_clev_fin_rec.name  := p_asset_number;
16761     END IF;
16762     IF (l_clev_fin_rec.exception_yn IS NUll OR
16763        l_clev_fin_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
16764        l_clev_fin_rec.exception_yn  := r_clev_fin_rec.exception_yn;
16765     END IF;
16766     IF (l_clev_fin_rec.display_sequence IS NUll OR
16767        l_clev_fin_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
16768        l_clev_fin_rec.display_sequence := r_clev_fin_rec.display_sequence;
16769     END IF;
16770     IF (l_clev_fin_rec.lse_id IS NUll OR
16771        l_clev_fin_rec.lse_id = OKL_API.G_MISS_NUM) THEN
16772        l_clev_fin_rec.lse_id := r_clev_fin_rec.lse_id;
16773     END IF;
16774     IF (l_clev_fin_rec.line_number IS NUll OR
16775        l_clev_fin_rec.line_number = OKL_API.G_MISS_CHAR) THEN
16776        l_clev_fin_rec.line_number := r_clev_fin_rec.line_number;
16777     END IF;
16778     IF (l_clev_fin_rec.sts_code IS NUll OR
16779        l_clev_fin_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
16780        l_clev_fin_rec.sts_code  := r_clev_fin_rec.sts_code;
16781     END IF;
16782     --Build the klev Top Line Record
16783     IF l_new_yn = 'Y' THEN
16784        ln_clev_model_price_unit := abs(l_talv_fa_rec.original_cost);
16785        ln_cimv_model_no_items   := l_talv_fa_rec.current_units;
16786     ELSIF l_new_yn = 'N' THEN
16787        IF l_clev_model_rec.price_unit = OKL_API.G_MISS_NUM THEN
16788           l_clev_model_rec.price_unit := null;
16789        END IF;
16790        IF l_cimv_model_rec.number_of_items = OKL_API.G_MISS_NUM THEN
16791           l_cimv_model_rec.number_of_items := null;
16792        END IF;
16793        ln_clev_model_price_unit := abs(l_talv_fa_rec.original_cost);
16794        ln_cimv_model_no_items   := l_talv_fa_rec.current_units;
16795        -- we need to modify the code, let it go a temp
16796 --       ln_clev_model_price_unit := nvl(l_clev_model_rec.price_unit,0);
16797 --       ln_cimv_model_no_items   := nvl(l_cimv_model_rec.number_of_items,0);
16798     END IF;
16799     l_klev_fin_rec.id := r_klev_fin_rec.id;
16800 
16801     l_clev_fin_rec.item_description := l_talv_fa_rec.description;
16802     -- Update of the Financial Asset Line
16803     update_fin_line(p_api_version   => p_api_version,
16804                     p_init_msg_list => p_init_msg_list,
16805                     x_return_status => x_return_status,
16806                     x_msg_count     => x_msg_count,
16807                     x_msg_data      => x_msg_data,
16808                     P_new_yn        => l_new_yn,
16809                     p_asset_number  => p_asset_number,
16810                     p_clev_rec      => l_clev_fin_rec,
16811                     p_klev_rec      => l_klev_fin_rec,
16812                     x_clev_rec      => x_clev_fin_rec,
16813                     x_klev_rec      => l_klev_fin_rec_out);
16814     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16815       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16816     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16817       RAISE OKL_API.G_EXCEPTION_ERROR;
16818     END IF;
16819 
16820     --We have to build the Model Line Record for the calculations of the
16821     -- oec of the top line
16822     -- To Get the cle Model Line Record
16823     x_return_status := get_rec_clev(l_clev_model_rec.id,
16824                                     r_clev_model_rec);
16825     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16826        OKL_API.set_message(p_app_name     => G_APP_NAME,
16827                            p_msg_name     => G_FETCHING_INFO,
16828                            p_token1       => G_REC_NAME_TOKEN,
16829                            p_token1_value => 'OKC_K_LINES_V Record');
16830        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16831     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16832        OKL_API.set_message(p_app_name     => G_APP_NAME,
16833                            p_msg_name     => G_FETCHING_INFO,
16834                            p_token1       => G_REC_NAME_TOKEN,
16835                            p_token1_value => 'OKC_K_LINES_V Record');
16836        RAISE OKL_API.G_EXCEPTION_ERROR;
16837     END IF;
16838     -- To Get the kle Model Line Record
16839     x_return_status := get_rec_klev(l_clev_model_rec.id,
16840                                     r_klev_model_rec);
16841     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16842        OKL_API.set_message(p_app_name     => G_APP_NAME,
16843                            p_msg_name     => G_FETCHING_INFO,
16844                            p_token1       => G_REC_NAME_TOKEN,
16845                            p_token1_value => 'OKL_K_LINES_V Record');
16846        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16847     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16848        OKL_API.set_message(p_app_name     => G_APP_NAME,
16849                            p_msg_name     => G_FETCHING_INFO,
16850                            p_token1       => G_REC_NAME_TOKEN,
16851                            p_token1_value => 'OKL_K_LINES_V Record');
16852        RAISE OKL_API.G_EXCEPTION_ERROR;
16853     END IF;
16854     IF r_klev_model_rec.id <> r_clev_model_rec.id THEN
16855        OKL_API.set_message(p_app_name     => G_APP_NAME,
16856                            p_msg_name     => G_LINE_RECORD);
16857        RAISE OKL_API.G_EXCEPTION_ERROR;
16858     END IF;
16859     -- Build clev Model Line Record
16860     l_clev_model_rec.chr_id          := null;
16861     IF (l_clev_model_rec.cle_id IS NUll OR
16862         l_clev_model_rec.cle_id = OKL_API.G_MISS_NUM) THEN
16863         l_clev_model_rec.cle_id  := r_clev_model_rec.cle_id;
16864     END IF;
16865     IF (l_clev_model_rec.dnz_chr_id IS NUll OR
16866         l_clev_model_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
16867         l_clev_model_rec.dnz_chr_id  := r_clev_model_rec.dnz_chr_id;
16868     END IF;
16869     IF (l_clev_model_rec.lse_id IS NUll OR
16870         l_clev_model_rec.lse_id = OKL_API.G_MISS_NUM) THEN
16871         l_clev_model_rec.lse_id  := r_clev_model_rec.lse_id;
16872     END IF;
16873     IF (l_clev_model_rec.display_sequence IS NUll OR
16874         l_clev_model_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
16875         l_clev_model_rec.display_sequence  := r_clev_model_rec.display_sequence;
16876     END IF;
16877     IF (l_clev_model_rec.exception_yn IS NUll OR
16878         l_clev_model_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
16879         l_clev_model_rec.exception_yn  := r_clev_model_rec.exception_yn;
16880     END IF;
16881     IF (l_clev_model_rec.line_number IS NUll OR
16882         l_clev_model_rec.line_number = OKL_API.G_MISS_CHAR) THEN
16883         l_clev_model_rec.line_number  := r_clev_model_rec.line_number;
16884     END IF;
16885     IF (l_clev_model_rec.sts_code IS NUll OR
16886         l_clev_model_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
16887         l_clev_model_rec.sts_code  := r_clev_model_rec.sts_code;
16888     END IF;
16889     -- Build klev Model Line Record
16890     l_klev_model_rec := r_klev_model_rec;
16891     -- To Get the cimv Model Line Record
16892     x_return_status := get_rec_cimv(l_clev_model_rec.id,
16893                                     l_clev_model_rec.dnz_chr_id,
16894                                     r_cimv_model_rec);
16895     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16896        OKL_API.set_message(p_app_name     => G_APP_NAME,
16897                            p_msg_name     => G_FETCHING_INFO,
16898                            p_token1       => G_REC_NAME_TOKEN,
16899                            p_token1_value => 'OKC_K_ITEMS_V Record');
16900        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16901     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16902        OKL_API.set_message(p_app_name     => G_APP_NAME,
16903                            p_msg_name     => G_FETCHING_INFO,
16904                            p_token1       => G_REC_NAME_TOKEN,
16905                            p_token1_value => 'OKC_K_ITEMS_V Record');
16906        RAISE OKL_API.G_EXCEPTION_ERROR;
16907     END IF;
16908     --Build Model cimv item rec
16909     l_cimv_model_rec.id  := r_cimv_model_rec.id;
16910     IF (l_cimv_model_rec.exception_yn IS NUll OR
16911         l_cimv_model_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
16912         l_cimv_model_rec.exception_yn  := r_cimv_model_rec.exception_yn;
16913     END IF;
16914     IF (l_cimv_model_rec.dnz_chr_id IS NUll OR
16915         l_cimv_model_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
16916         l_cimv_model_rec.dnz_chr_id  := r_cimv_model_rec.dnz_chr_id;
16917     END IF;
16918     IF (l_cimv_model_rec.cle_id IS NUll OR
16919         l_cimv_model_rec.cle_id = OKL_API.G_MISS_NUM) THEN
16920         l_cimv_model_rec.cle_id := r_cimv_model_rec.cle_id;
16921     END IF;
16922     -- We need to check the below since we do not have to call the formula
16923     -- Engine avery time. Which means that we have to call the formula Engine
16924     -- only if the price unit and number of items change.
16925 /*
16926     IF l_clev_model_rec.price_unit      <> r_clev_model_rec.price_unit AND
16927        l_cimv_model_rec.number_of_items <> r_cimv_model_rec.number_of_items THEN
16928        l_klev_fin_rec.residual_percentage <> r_klev_fin_rec.residual_percentage AND
16929        l_klev_fin_rec.residual_value <> r_klev_fin_rec.residual_value THEN
16930        l_go_for_calc := 'Y';
16931     ELSIF l_clev_model_rec.price_unit   <> r_clev_model_rec.price_unit OR
16932        l_cimv_model_rec.number_of_items <> r_cimv_model_rec.number_of_items THEN
16933        l_klev_fin_rec.residual_percentage <> r_klev_fin_rec.residual_percentage OR
16934        l_klev_fin_rec.residual_value <> r_klev_fin_rec.residual_value THEN
16935        l_go_for_calc := 'Y';
16936     ELSE
16937        l_go_for_calc := 'N';
16938     END IF;
16939 */
16940     -- Updating of the Model Line and Item Record
16941     update_model_line(p_api_version   => p_api_version,
16942                       p_init_msg_list => p_init_msg_list,
16943                       x_return_status => x_return_status,
16944                       x_msg_count     => x_msg_count,
16945                       x_msg_data      => x_msg_data,
16946                       P_new_yn        => l_new_yn,
16947                       p_asset_number  => p_asset_number,
16948                       p_clev_rec      => l_clev_model_rec,
16949                       p_klev_rec      => l_klev_model_rec,
16950                       p_cimv_rec      => l_cimv_model_rec,
16951                       x_clev_rec      => x_clev_model_rec,
16952                       x_klev_rec      => l_klev_model_rec_out,
16953                       x_cimv_rec      => l_cimv_model_rec_out);
16954     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16955       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
16956     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16957       RAISE OKL_API.G_EXCEPTION_ERROR;
16958     END IF;
16959 
16960     --Bug# 4161221: start
16961     -- Update No. of Units on Add-on line when there is a change in the
16962     -- No. of Units on Asset line.
16963     FOR r_addon_line_id IN c_addon_line_id(p_model_cle_id => x_clev_model_rec.id,
16964                                            p_chr_id => x_clev_model_rec.dnz_chr_id) LOOP
16965 
16966       -- To Get the cimv Addon Line Record
16967       x_return_status := get_rec_cimv(r_addon_line_id.id,
16968                                       x_clev_model_rec.dnz_chr_id,
16969                                       r_cimv_addon_rec);
16970       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16971          OKL_API.set_message(p_app_name     => G_APP_NAME,
16972                              p_msg_name     => G_FETCHING_INFO,
16973                              p_token1       => G_REC_NAME_TOKEN,
16974                              p_token1_value => 'OKC_K_ITEMS_V Record');
16975          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
16976       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
16977          OKL_API.set_message(p_app_name     => G_APP_NAME,
16978                              p_msg_name     => G_FETCHING_INFO,
16979                              p_token1       => G_REC_NAME_TOKEN,
16980                              p_token1_value => 'OKC_K_ITEMS_V Record');
16981          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
16982       END IF;
16983 
16984       IF (NVL(r_cimv_addon_rec.number_of_items,0) <>
16985           NVL(l_cimv_model_rec_out.number_of_items,0)) THEN
16986 
16987         --Build addon cimv item rec
16988         r_cimv_addon_rec.number_of_items  := l_cimv_model_rec_out.number_of_items;
16989         -- Updating of the addon Item Record
16990 
16991         OKL_OKC_MIGRATION_PVT.update_contract_item(p_api_version   => p_api_version,
16992                                                    p_init_msg_list => p_init_msg_list,
16993                                                    x_return_status => x_return_status,
16994                                                    x_msg_count     => x_msg_count,
16995                                                    x_msg_data      => x_msg_data,
16996                                                    p_cimv_rec      => r_cimv_addon_rec,
16997                                                    x_cimv_rec      => rx_cimv_addon_rec);
16998         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
16999             OKL_API.set_message(p_app_name     => G_APP_NAME,
17000                                 p_msg_name     => G_UPDATING_ADDON_ITEM);
17001             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17002         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17003             OKL_API.set_message(p_app_name     => G_APP_NAME,
17004                                 p_msg_name     => G_UPDATING_ADDON_ITEM);
17005             RAISE OKL_API.G_EXCEPTION_ERROR;
17006         END IF;
17007       END IF;
17008     END LOOP;
17009     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17010        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17011     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17012        RAISE OKL_API.G_EXCEPTION_ERROR;
17013     END IF;
17014     --Bug# 4161221: end
17015 
17016     lv_model_object_id1  := l_cimv_model_rec_out.object1_id1;
17017     lv_model_object_id2  := l_cimv_model_rec_out.object1_id2;
17018     IF l_go_for_calc = 'Y' THEN
17019       -- Calculate the OEC to Populate the OKL_K_LINES_V.OEC
17020       oec_calc_upd_fin_rec(p_api_version        => p_api_version,
17021                            p_init_msg_list      => p_init_msg_list,
17022                            x_return_status      => x_return_status,
17023                            x_msg_count          => x_msg_count,
17024                            x_msg_data           => x_msg_data,
17025                            P_new_yn             => P_new_yn,
17026                            p_asset_number       => p_asset_number,
17027 			   -- 4414408
17028                            p_top_line_id        => l_clev_fin_rec.id,
17029                            p_dnz_chr_id         => x_clev_model_rec.dnz_chr_id,
17030                            x_fin_clev_rec       => x_clev_fin_rec,
17031                            x_fin_klev_rec       => l_klev_fin_rec_out,
17032                            x_oec                => ln_klev_fin_oec,
17033                            p_validate_fin_line  => OKL_API.G_TRUE);
17034       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17035         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17036       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17037         RAISE OKL_API.G_EXCEPTION_ERROR;
17038       END IF;
17039       -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
17040       cap_amt_calc_upd_fin_rec(p_api_version        => p_api_version,
17041                                p_init_msg_list      => p_init_msg_list,
17042                                x_return_status      => x_return_status,
17043                                x_msg_count          => x_msg_count,
17044                                x_msg_data           => x_msg_data,
17045                                P_new_yn             => P_new_yn,
17046                                p_asset_number       => p_asset_number,
17047 			       -- 4414408
17048                                p_top_line_id        => l_clev_fin_rec.id,
17049                                p_dnz_chr_id         => x_clev_model_rec.dnz_chr_id,
17050                                x_fin_clev_rec       => x_clev_fin_rec,
17051                                x_fin_klev_rec       => l_klev_fin_rec_out,
17052                                x_cap_amt            => ln_klev_fin_cap,
17053                                p_validate_fin_line  => OKL_API.G_TRUE);
17054       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17055         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17056       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17057         RAISE OKL_API.G_EXCEPTION_ERROR;
17058       END IF;
17059       IF l_klev_fin_rec.residual_percentage = OKL_API.G_MISS_NUM THEN
17060         l_klev_fin_rec.residual_percentage := null;
17061       ELSIF l_klev_fin_rec.residual_value = OKL_API.G_MISS_NUM THEN
17062         l_klev_fin_rec.residual_value := null;
17063       END IF;
17064       -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
17065       IF (l_klev_fin_rec.residual_percentage IS NOT NULL OR
17066          l_klev_fin_rec.residual_percentage <> OKL_API.G_MISS_NUM) AND
17067          (l_klev_fin_rec.residual_value IS NOT NULL OR
17068          l_klev_fin_rec.residual_value <> OKL_API.G_MISS_NUM) THEN
17069          IF l_klev_fin_rec.residual_value <> r_klev_fin_rec.residual_value THEN
17070 
17071            l_top_line_id := x_clev_fin_rec.id;
17072            l_oec := l_klev_fin_rec_out.oec;
17073 
17074            get_res_per_upd_fin_rec(p_api_version        => p_api_version,
17075                                    p_init_msg_list      => p_init_msg_list,
17076                                    x_return_status      => x_return_status,
17077                                    x_msg_count          => x_msg_count,
17078                                    x_msg_data           => x_msg_data,
17079                                    P_new_yn             => P_new_yn,
17080                                    p_asset_number       => p_asset_number,
17081                                    p_res_value          => l_klev_fin_rec.residual_value,
17082                                    p_oec                => l_oec,  --l_klev_fin_rec_out.oec
17083                                    p_top_line_id        => l_top_line_id, --x_clev_fin_rec.id,
17084                                    p_dnz_chr_id         => x_clev_model_rec.dnz_chr_id,
17085                                    x_fin_clev_rec       => x_clev_fin_rec,
17086                                    x_fin_klev_rec       => l_klev_fin_rec_out,
17087                                    p_validate_fin_line  => OKL_API.G_TRUE);
17088            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17089              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17090            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17091              RAISE OKL_API.G_EXCEPTION_ERROR;
17092            END IF;
17093          ELSIF l_klev_fin_rec.residual_percentage <> r_klev_fin_rec.residual_percentage THEN
17094            res_value_calc_upd_fin_rec(p_api_version        => p_api_version,
17095                                       p_init_msg_list      => p_init_msg_list,
17096                                       x_return_status      => x_return_status,
17097                                       x_msg_count          => x_msg_count,
17098                                       x_msg_data           => x_msg_data,
17099                                       P_new_yn             => P_new_yn,
17100                                       p_asset_number       => p_asset_number,
17101 				      -- 4414408
17102                                       p_top_line_id        => x_clev_model_rec.cle_id,
17103                                       p_dnz_chr_id         => x_clev_model_rec.dnz_chr_id,
17104                                       x_fin_clev_rec       => x_clev_fin_rec,
17105                                       x_fin_klev_rec       => l_klev_fin_rec_out,
17106                                       x_res_value          => ln_klev_fin_res,
17107                                       p_validate_fin_line  => OKL_API.G_TRUE);
17108            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17109              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17110            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17111              RAISE OKL_API.G_EXCEPTION_ERROR;
17112            END IF;
17113          END IF;
17114       ELSIF (l_klev_fin_rec.residual_percentage IS NULL OR
17115         l_klev_fin_rec.residual_percentage = OKL_API.G_MISS_NUM) AND
17116         (l_klev_fin_rec.residual_value IS NOT NULL OR
17117         l_klev_fin_rec.residual_value <> OKL_API.G_MISS_NUM) THEN
17118 
17119         l_top_line_id := x_clev_fin_rec.id;
17120         l_oec := l_klev_fin_rec_out.oec;
17121 
17122         get_res_per_upd_fin_rec(p_api_version        => p_api_version,
17123                                 p_init_msg_list      => p_init_msg_list,
17124                                 x_return_status      => x_return_status,
17125                                 x_msg_count          => x_msg_count,
17126                                 x_msg_data           => x_msg_data,
17127                                 P_new_yn             => P_new_yn,
17128                                 p_asset_number       => p_asset_number,
17129                                 p_res_value          => l_klev_fin_rec.residual_value,
17130                                 p_oec                => l_oec,  --l_klev_fin_rec_out.oec
17131                                 p_top_line_id        => l_top_line_id, --x_clev_fin_rec.id,
17132                                 p_dnz_chr_id         => x_clev_model_rec.dnz_chr_id,
17133                                 x_fin_clev_rec       => x_clev_fin_rec,
17134                                 x_fin_klev_rec       => l_klev_fin_rec_out,
17135                                 p_validate_fin_line  => OKL_API.G_TRUE);
17136         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17137           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17138         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17139           RAISE OKL_API.G_EXCEPTION_ERROR;
17140         END IF;
17141       ELSIF (l_klev_fin_rec.residual_percentage IS NOT NULL OR
17142         l_klev_fin_rec.residual_percentage <> OKL_API.G_MISS_NUM) AND
17143         (l_klev_fin_rec.residual_value IS NULL OR
17144         l_klev_fin_rec.residual_value = OKL_API.G_MISS_NUM) THEN
17145         res_value_calc_upd_fin_rec(p_api_version        => p_api_version,
17146                                    p_init_msg_list      => p_init_msg_list,
17147                                    x_return_status      => x_return_status,
17148                                    x_msg_count          => x_msg_count,
17149                                    x_msg_data           => x_msg_data,
17150                                    P_new_yn             => P_new_yn,
17151                                    p_asset_number       => p_asset_number,
17152 				   -- 4414408
17153                                    p_top_line_id        => x_clev_model_rec.cle_id,
17154                                    p_dnz_chr_id         => x_clev_model_rec.dnz_chr_id,
17155                                    x_fin_clev_rec       => x_clev_fin_rec,
17156                                    x_fin_klev_rec       => l_klev_fin_rec_out,
17157                                    x_res_value          => ln_klev_fin_res,
17158                                    p_validate_fin_line  => OKL_API.G_TRUE);
17159         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17160           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17161         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17162           RAISE OKL_API.G_EXCEPTION_ERROR;
17163         END IF;
17164       END IF;
17165     END IF;
17166     IF (l_klev_fin_rec_out.oec IS NOT NULL OR
17167        l_klev_fin_rec_out.oec <> OKL_API.G_MISS_NUM) AND
17168        (l_klev_fin_rec_out.residual_value IS NOT NULL OR
17169        l_klev_fin_rec_out.residual_value <> OKL_API.G_MISS_NUM) THEN
17170       IF l_klev_fin_rec_out.residual_value > l_klev_fin_rec_out.oec THEN
17171         OKL_API.set_message(p_app_name     => G_APP_NAME,
17172                             p_msg_name     => G_SALVAGE_VALUE);
17173         RAISE OKL_API.G_EXCEPTION_ERROR;
17174       END IF;
17175     END IF;
17176     -- Updating of the Fixed Asset Line Process
17177     -- To Get the cle fa Line Record
17178     x_return_status := get_rec_clev(l_clev_fa_rec.id,
17179                                     r_clev_fa_rec);
17180     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17181        OKL_API.set_message(p_app_name     => G_APP_NAME,
17182                            p_msg_name     => G_FETCHING_INFO,
17183                            p_token1       => G_REC_NAME_TOKEN,
17184                            p_token1_value => 'OKC_K_LINES_V Record');
17185        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17186     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17187        OKL_API.set_message(p_app_name     => G_APP_NAME,
17188                            p_msg_name     => G_FETCHING_INFO,
17189                            p_token1       => G_REC_NAME_TOKEN,
17190                            p_token1_value => 'OKC_K_LINES_V Record');
17191        RAISE OKL_API.G_EXCEPTION_ERROR;
17192     END IF;
17193     -- To Get the kle fa Line Record
17194     x_return_status := get_rec_klev(l_clev_fa_rec.id,
17195                                     r_klev_fa_rec);
17196     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17197        OKL_API.set_message(p_app_name     => G_APP_NAME,
17198                            p_msg_name     => G_FETCHING_INFO,
17199                            p_token1       => G_REC_NAME_TOKEN,
17200                            p_token1_value => 'OKL_K_LINES_V Record');
17201        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17202     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17203        OKL_API.set_message(p_app_name     => G_APP_NAME,
17204                            p_msg_name     => G_FETCHING_INFO,
17205                            p_token1       => G_REC_NAME_TOKEN,
17206                            p_token1_value => 'OKL_K_LINES_V Record');
17207        RAISE OKL_API.G_EXCEPTION_ERROR;
17208     END IF;
17209     IF r_klev_fa_rec.id <> r_clev_fa_rec.id THEN
17210        OKL_API.set_message(p_app_name     => G_APP_NAME,
17211                            p_msg_name     => G_LINE_RECORD);
17212        RAISE OKL_API.G_EXCEPTION_ERROR;
17213     END IF;
17214     -- Build clev fa Line Record
17215     l_clev_fa_rec.chr_id          := null;
17216     IF (l_clev_fa_rec.cle_id IS NUll OR
17217         l_clev_fa_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17218         l_clev_fa_rec.cle_id  := r_clev_fa_rec.cle_id;
17219     END IF;
17220     IF (l_clev_fa_rec.dnz_chr_id IS NUll OR
17221         l_clev_fa_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
17222         l_clev_fa_rec.dnz_chr_id  := r_clev_fa_rec.dnz_chr_id;
17223     END IF;
17224     IF (l_clev_fa_rec.display_sequence IS NUll OR
17225         l_clev_fa_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
17226         l_clev_fa_rec.display_sequence  := r_clev_fa_rec.display_sequence;
17227     END IF;
17228     IF (l_clev_fa_rec.lse_id IS NUll OR
17229         l_clev_fa_rec.lse_id = OKL_API.G_MISS_NUM) THEN
17230         l_clev_fa_rec.lse_id  := r_clev_fa_rec.lse_id;
17231     END IF;
17232     IF (l_clev_fa_rec.exception_yn IS NUll OR
17233         l_clev_fa_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
17234         l_clev_fa_rec.exception_yn  := r_clev_fa_rec.exception_yn;
17235     END IF;
17236     IF (l_clev_fa_rec.line_number IS NUll OR
17237         l_clev_fa_rec.line_number = OKL_API.G_MISS_CHAR) THEN
17238         l_clev_fa_rec.line_number  := r_clev_fa_rec.line_number;
17239     END IF;
17240     IF (l_clev_fa_rec.sts_code IS NUll OR
17241         l_clev_fa_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
17242         l_clev_fa_rec.sts_code  := r_clev_fa_rec.sts_code;
17243     END IF;
17244     -- Build klev fa Line Record
17245     l_klev_fa_rec := r_klev_fa_rec;
17246     -- To Get the cimv fa Line Record
17247     x_return_status := get_rec_cimv(l_clev_fa_rec.id,
17248                                     l_clev_fa_rec.dnz_chr_id,
17249                                     r_cimv_fa_rec);
17250     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17251        OKL_API.set_message(p_app_name     => G_APP_NAME,
17252                            p_msg_name     => G_FETCHING_INFO,
17253                            p_token1       => G_REC_NAME_TOKEN,
17254                            p_token1_value => 'OKC_K_ITEMS_V Record');
17255        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17256     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17257        OKL_API.set_message(p_app_name     => G_APP_NAME,
17258                            p_msg_name     => G_FETCHING_INFO,
17259                            p_token1       => G_REC_NAME_TOKEN,
17260                            p_token1_value => 'OKC_K_ITEMS_V Record');
17261        RAISE OKL_API.G_EXCEPTION_ERROR;
17262     END IF;
17263     --Build cimv fa item rec
17264     l_cimv_fa_rec.id  := r_cimv_fa_rec.id;
17265     IF (l_cimv_fa_rec.exception_yn IS NUll OR
17266         l_cimv_fa_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
17267         l_cimv_fa_rec.exception_yn  := r_cimv_fa_rec.exception_yn;
17268     END IF;
17269     IF (l_cimv_fa_rec.dnz_chr_id IS NUll OR
17270         l_cimv_fa_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
17271         l_cimv_fa_rec.dnz_chr_id  := r_cimv_fa_rec.dnz_chr_id;
17272     END IF;
17273     IF (l_cimv_fa_rec.cle_id IS NUll OR
17274         l_cimv_fa_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17275         l_cimv_fa_rec.cle_id := r_cimv_fa_rec.cle_id;
17276     END IF;
17277     IF (l_cimv_fa_rec.object1_id1 IS NUll OR
17278         l_cimv_fa_rec.object1_id1 = OKL_API.G_MISS_CHAR) THEN
17279         l_cimv_fa_rec.object1_id1 := null;
17280     ELSE
17281         l_cimv_fa_rec.object1_id1 := r_cimv_ib_rec.cle_id;
17282     END IF;
17283     IF (l_cimv_fa_rec.object1_id2 IS NUll OR
17284         l_cimv_fa_rec.object1_id2 = OKL_API.G_MISS_CHAR) THEN
17285         l_cimv_fa_rec.object1_id2 := null;
17286     ELSE
17287         l_cimv_fa_rec.object1_id2 := r_cimv_ib_rec.cle_id;
17288     END IF;
17289     --Build talv fa item rec
17290     l_talv_fa_rec.id                    := r_talv_fa_rec.id;
17291     l_talv_fa_rec.object_version_number := r_talv_fa_rec.object_version_number;
17292     l_talv_fa_rec.tas_id                := r_talv_fa_rec.tas_id;
17293     l_talv_fa_rec.sfwt_flag             := r_talv_fa_rec.sfwt_flag;
17294     l_talv_fa_rec.tal_type              := r_talv_fa_rec.tal_type;
17295     l_talv_fa_rec.line_number           := r_talv_fa_rec.line_number;
17296     l_talv_fa_rec.asset_number          := p_asset_number;
17297     IF (l_talv_fa_rec.kle_id IS NUll OR
17298         l_talv_fa_rec.kle_id = OKL_API.G_MISS_NUM) THEN
17299         l_talv_fa_rec.kle_id  := r_talv_fa_rec.kle_id;
17300     END IF;
17301     IF (l_talv_fa_rec.original_cost IS NUll OR
17302         l_talv_fa_rec.original_cost = OKL_API.G_MISS_NUM) THEN
17303         l_talv_fa_rec.original_cost  := r_talv_fa_rec.original_cost;
17304     END IF;
17305     IF (l_talv_fa_rec.depreciation_cost IS NUll OR
17306         l_talv_fa_rec.depreciation_cost = OKL_API.G_MISS_NUM) THEN
17307         l_talv_fa_rec.depreciation_cost  := r_talv_fa_rec.depreciation_cost;
17308     END IF;
17309 
17310     IF (l_talv_fa_rec.description IS NUll OR
17311         l_talv_fa_rec.description = OKL_API.G_MISS_CHAR) THEN
17312         l_talv_fa_rec.description  := r_talv_fa_rec.description;
17313     END IF;
17314     IF (l_talv_fa_rec.current_units IS NUll OR
17315         l_talv_fa_rec.current_units = OKL_API.G_MISS_NUM) THEN
17316         l_talv_fa_rec.current_units  := r_talv_fa_rec.current_units;
17317     END IF;
17318 
17319     --Bug# 4899328: For online rebook, update depreciation_cost and
17320     -- original_cost to line capital amount instead of line oec
17321     --check for rebook contract
17322     l_rbk_khr := '?';
17323     OPEN l_chk_rbk_csr (p_chr_id => l_clev_fin_rec.dnz_chr_id);
17324     FETCH l_chk_rbk_csr INTO l_rbk_khr;
17325     CLOSE l_chk_rbk_csr;
17326 
17327     If l_rbk_khr = '!' Then
17328 
17329       l_line_capital_amount := NVL(l_klev_fin_rec_out.capital_amount,ln_klev_fin_cap);
17330       l_talv_fa_rec.depreciation_cost := NVL(l_line_capital_amount,l_talv_fa_rec.depreciation_cost);
17331       l_talv_fa_rec.original_cost  := NVL(l_line_capital_amount,l_talv_fa_rec.original_cost);
17332 
17333     Else
17334       -- We are doing the below to make sure the oec is euqated to depreciation cost
17335       -- and the original cost.
17336       l_talv_fa_rec.depreciation_cost := NVL(l_klev_fin_rec_out.oec,l_talv_fa_rec.depreciation_cost);
17337       l_talv_fa_rec.original_cost  := NVL(l_klev_fin_rec_out.oec,ln_klev_fin_oec);
17338     End If;
17339     --Bug# 4899328: End
17340 
17341     l_clev_fa_rec.item_description := l_talv_fa_rec.description;
17342     -- A Bug fix Since we populate the year manufactured into OKL_TXL_ASSETS_B only
17343     -- We cannot use the information after the assets have been put into FA
17344     -- So we decided to populate the year Manufactured into OKL_K_LINES.YEAR_BUILT
17345     -- As the Datatype matches for both.
17346     l_klev_fa_rec.Year_Built           := l_talv_fa_rec.year_manufactured;
17347     -- Updating of the Fixed Asset Line and item/Txl Asset Info
17348 
17349     -- start NISINHA Bug# 6490572
17350     l_klev_fa_rec.model_number         := l_talv_fa_rec.model_number;
17351     l_klev_fa_rec.manufacturer_name    := l_talv_fa_rec.manufacturer_name;
17352     --end  NISINHA Bug# 6490572
17353     update_fixed_asset_line(p_api_version   => p_api_version,
17354                             p_init_msg_list => p_init_msg_list,
17355                             x_return_status => x_return_status,
17356                             x_msg_count     => x_msg_count,
17357                             x_msg_data      => x_msg_data,
17358                             P_new_yn        => l_new_yn,
17359                             p_asset_number  => p_asset_number,
17360                             p_clev_rec      => l_clev_fa_rec,
17361                             p_klev_rec      => l_klev_fa_rec,
17362                             p_cimv_rec      => l_cimv_fa_rec,
17363                             p_talv_rec      => l_talv_fa_rec,
17364                             x_clev_rec      => x_clev_fa_rec,
17365                             x_klev_rec      => l_klev_fa_rec_out,
17366                             x_cimv_rec      => l_cimv_fa_rec_out,
17367                             x_talv_rec      => l_talv_fa_rec_out);
17368     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17369       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17370     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17371       RAISE OKL_API.G_EXCEPTION_ERROR;
17372     END IF;
17373     -- Updating Asset Lines Details Asset Number
17374     update_asset_line_details(p_api_version   => p_api_version,
17375                               p_init_msg_list => p_init_msg_list,
17376                               x_return_status => x_return_status,
17377                               x_msg_count     => x_msg_count,
17378                               x_msg_data      => x_msg_data,
17379                               p_asset_number  => p_asset_number,
17380                               p_original_cost => l_talv_fa_rec_out.original_cost,
17381                               p_tal_id        => l_talv_fa_rec_out.ID);
17382     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17383       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17384     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17385       RAISE OKL_API.G_EXCEPTION_ERROR;
17386     END IF;
17387     IF p_new_yn = 'Y' THEN
17388       -- Updating of the Install Base Line Process
17389       -- To Get the cle IB Line Record
17390       x_return_status := get_rec_clev(l_clev_ib_rec.id,
17391                                       r_clev_ib_rec);
17392       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17393          OKL_API.set_message(p_app_name     => G_APP_NAME,
17394                              p_msg_name     => G_FETCHING_INFO,
17395                              p_token1       => G_REC_NAME_TOKEN,
17396                              p_token1_value => 'OKC_K_LINES_V Record');
17397          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17398       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17399          OKL_API.set_message(p_app_name     => G_APP_NAME,
17400                              p_msg_name     => G_FETCHING_INFO,
17401                              p_token1       => G_REC_NAME_TOKEN,
17402                              p_token1_value => 'OKC_K_LINES_V Record');
17403          RAISE OKL_API.G_EXCEPTION_ERROR;
17404       END IF;
17405       -- To Get the kle IB Line Record
17406       x_return_status := get_rec_klev(l_clev_ib_rec.id,
17407                                       r_klev_ib_rec);
17408       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17409          OKL_API.set_message(p_app_name     => G_APP_NAME,
17410                              p_msg_name     => G_FETCHING_INFO,
17411                              p_token1       => G_REC_NAME_TOKEN,
17412                              p_token1_value => 'OKL_K_LINES_V Record');
17413          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17414       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17415          OKL_API.set_message(p_app_name     => G_APP_NAME,
17416                              p_msg_name     => G_FETCHING_INFO,
17417                              p_token1       => G_REC_NAME_TOKEN,
17418                              p_token1_value => 'OKL_K_LINES_V Record');
17419          RAISE OKL_API.G_EXCEPTION_ERROR;
17420       END IF;
17421       IF r_clev_ib_rec.id <> r_klev_ib_rec.id THEN
17422          OKL_API.set_message(p_app_name     => G_APP_NAME,
17423                              p_msg_name     => G_LINE_RECORD);
17424          RAISE OKL_API.G_EXCEPTION_ERROR;
17425       END IF;
17426       --Build the clev Top Line Record
17427       l_clev_ib_rec.chr_id := null;
17428       IF (l_clev_ib_rec.cle_id IS NUll OR
17429          l_clev_ib_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17430          l_clev_ib_rec.cle_id  := r_clev_ib_rec.cle_id;
17431       END IF;
17432       IF (l_clev_ib_rec.dnz_chr_id IS NUll OR
17433          l_clev_ib_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
17434          l_clev_ib_rec.dnz_chr_id  := r_clev_ib_rec.dnz_chr_id;
17435       END IF;
17436       IF (l_clev_ib_rec.lse_id IS NUll OR
17437          l_clev_ib_rec.lse_id = OKL_API.G_MISS_NUM) THEN
17438          l_clev_ib_rec.lse_id  := r_clev_ib_rec.lse_id;
17439       END IF;
17440       IF (l_clev_ib_rec.display_sequence IS NUll OR
17441          l_clev_ib_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
17442          l_clev_ib_rec.display_sequence := r_clev_ib_rec.display_sequence;
17443       END IF;
17444       IF (l_clev_ib_rec.exception_yn IS NUll OR
17445          l_clev_ib_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
17446          l_clev_ib_rec.exception_yn  := r_clev_ib_rec.exception_yn;
17447       END IF;
17448       IF (l_clev_ib_rec.line_number IS NUll OR
17449          l_clev_ib_rec.line_number = OKL_API.G_MISS_CHAR) THEN
17450          l_clev_ib_rec.line_number  := r_clev_ib_rec.line_number;
17451       END IF;
17452       IF (l_clev_ib_rec.sts_code IS NUll OR
17453          l_clev_ib_rec.sts_code = OKL_API.G_MISS_CHAR) THEN
17454          l_clev_ib_rec.sts_code  := r_clev_ib_rec.sts_code;
17455       END IF;
17456       --Build the klev Top Line Record
17457       l_klev_ib_rec  := r_klev_ib_rec;
17458       -- To Get the cimv ib Line Record
17459       x_return_status := get_rec_cimv(l_clev_ib_rec.id,
17460                                       l_clev_fin_rec.dnz_chr_id,
17461                                       r_cimv_ib_rec);
17462       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17463          OKL_API.set_message(p_app_name     => G_APP_NAME,
17464                              p_msg_name     => G_FETCHING_INFO,
17465                              p_token1       => G_REC_NAME_TOKEN,
17466                              p_token1_value => 'OKC_K_ITEMS_V Record');
17467          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17468       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17469          OKL_API.set_message(p_app_name     => G_APP_NAME,
17470                              p_msg_name     => G_FETCHING_INFO,
17471                              p_token1       => G_REC_NAME_TOKEN,
17472                              p_token1_value => 'OKC_K_ITEMS_V Record');
17473          RAISE OKL_API.G_EXCEPTION_ERROR;
17474       END IF;
17475       --Build cimv ib item rec
17476       l_cimv_ib_rec.id  := r_cimv_ib_rec.id;
17477       IF (l_cimv_ib_rec.exception_yn IS NUll OR
17478           l_cimv_ib_rec.exception_yn = OKL_API.G_MISS_CHAR) THEN
17479           l_cimv_ib_rec.exception_yn  := r_cimv_ib_rec.exception_yn;
17480       END IF;
17481       IF (l_cimv_ib_rec.dnz_chr_id IS NUll OR
17482           l_cimv_ib_rec.dnz_chr_id = OKL_API.G_MISS_NUM) THEN
17483           l_cimv_ib_rec.dnz_chr_id  := r_cimv_ib_rec.dnz_chr_id;
17484       END IF;
17485       IF (l_cimv_ib_rec.cle_id IS NUll OR
17486           l_cimv_ib_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17487           l_cimv_ib_rec.cle_id := r_cimv_ib_rec.cle_id;
17488       END IF;
17489       IF (l_cimv_ib_rec.cle_id IS NUll OR
17490           l_cimv_ib_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17491           l_cimv_ib_rec.cle_id := r_cimv_ib_rec.cle_id;
17492       END IF;
17493       IF (l_cimv_ib_rec.cle_id IS NUll OR
17494           l_cimv_ib_rec.cle_id = OKL_API.G_MISS_NUM) THEN
17495           l_cimv_ib_rec.cle_id := r_cimv_ib_rec.cle_id;
17496       END IF;
17497       IF (l_cimv_ib_rec.object1_id1 IS NUll OR
17498           l_cimv_ib_rec.object1_id1 = OKL_API.G_MISS_CHAR) THEN
17499           l_cimv_ib_rec.object1_id1 := null;
17500       ELSE
17501           l_cimv_ib_rec.object1_id1 := r_cimv_ib_rec.cle_id;
17502       END IF;
17503       IF (l_cimv_ib_rec.object1_id2 IS NUll OR
17504           l_cimv_ib_rec.object1_id2 = OKL_API.G_MISS_CHAR) THEN
17505           l_cimv_ib_rec.object1_id2 := null;
17506       ELSE
17507           l_cimv_ib_rec.object1_id2 := r_cimv_ib_rec.cle_id;
17508       END IF;
17509       -- To Get the itiv ib Line Record
17510       x_return_status := get_rec_itiv(l_clev_ib_rec.id,
17511                                       r_itiv_ib_rec);
17512       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17513          OKL_API.set_message(p_app_name     => G_APP_NAME,
17514                              p_msg_name     => G_FETCHING_INFO,
17515                              p_token1       => G_REC_NAME_TOKEN,
17516                              p_token1_value => 'OKL_TXL_ITM_INSTS_V Record');
17517          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17518       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17519          OKL_API.set_message(p_app_name     => G_APP_NAME,
17520                              p_msg_name     => G_FETCHING_INFO,
17521                              p_token1       => G_REC_NAME_TOKEN,
17522                              p_token1_value => 'OKL_TXL_ITM_INSTS_V Record');
17523          RAISE OKL_API.G_EXCEPTION_ERROR;
17524       END IF;
17525       --Build itiv ib item rec
17526       l_itiv_ib_rec.id                    := r_itiv_ib_rec.id;
17527       l_itiv_ib_rec.object_version_number := r_itiv_ib_rec.object_version_number;
17528       l_itiv_ib_rec.tas_id                := r_itiv_ib_rec.tas_id;
17529       l_itiv_ib_rec.line_number           := r_itiv_ib_rec.line_number;
17530       IF (l_itiv_ib_rec.kle_id IS NUll OR
17531           l_itiv_ib_rec.kle_id = OKL_API.G_MISS_NUM) THEN
17532           l_itiv_ib_rec.kle_id  := r_itiv_ib_rec.kle_id;
17533       END IF;
17534       IF (l_itiv_ib_rec.instance_number_ib IS NUll OR
17535           l_itiv_ib_rec.instance_number_ib = OKL_API.G_MISS_CHAR) THEN
17536           l_itiv_ib_rec.instance_number_ib  := r_itiv_ib_rec.instance_number_ib;
17537       END IF;
17538       -- Since the screen can give only party_site_id via l_itiv_tbl(j).object_id1_new
17539       -- We have to use the below function
17540       lv_object_id1_new := l_itiv_ib_rec.object_id1_new;
17541       x_return_status := get_party_site_id(p_object_id1_new => lv_object_id1_new,
17542                                            x_object_id1_new => l_itiv_ib_rec.object_id1_new,
17543                                            x_object_id2_new => l_itiv_ib_rec.object_id2_new);
17544       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17545          OKL_API.set_message(p_app_name     => G_APP_NAME,
17546                              p_msg_name     => G_NO_MATCHING_RECORD,
17547                              p_token1       => G_COL_NAME_TOKEN,
17548                              p_token1_value => 'Party_site_id');
17549          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17550       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17551          OKL_API.set_message(p_app_name     => G_APP_NAME,
17552                              p_msg_name     => G_NO_MATCHING_RECORD,
17553                              p_token1       => G_COL_NAME_TOKEN,
17554                              p_token1_value => 'Party_site_id');
17555          RAISE OKL_API.G_EXCEPTION_ERROR;
17556       END IF;
17557       IF (l_itiv_ib_rec.object_id1_new IS NUll OR
17558           l_itiv_ib_rec.object_id1_new = OKL_API.G_MISS_CHAR) THEN
17559           l_itiv_ib_rec.object_id1_new  := r_itiv_ib_rec.object_id1_new;
17560       END IF;
17561       IF (l_itiv_ib_rec.object_id2_new IS NUll OR
17562           l_itiv_ib_rec.object_id2_new = OKL_API.G_MISS_CHAR) THEN
17563           l_itiv_ib_rec.object_id2_new  := r_itiv_ib_rec.object_id2_new;
17564       END IF;
17565       IF (l_itiv_ib_rec.jtot_object_code_new IS NUll OR
17566           l_itiv_ib_rec.jtot_object_code_new = OKL_API.G_MISS_CHAR) THEN
17567           l_itiv_ib_rec.jtot_object_code_new  := r_itiv_ib_rec.jtot_object_code_new;
17568       END IF;
17569       IF (l_itiv_ib_rec.mfg_serial_number_yn IS NUll OR
17570           l_itiv_ib_rec.mfg_serial_number_yn = OKL_API.G_MISS_CHAR) THEN
17571           l_itiv_ib_rec.mfg_serial_number_yn  := r_itiv_ib_rec.mfg_serial_number_yn;
17572       END IF;
17573       IF (l_itiv_ib_rec.inventory_item_id IS NUll OR
17574           l_itiv_ib_rec.inventory_item_id = OKL_API.G_MISS_NUM) AND
17575           lv_model_object_id1 = r_itiv_ib_rec.inventory_item_id  THEN
17576           l_itiv_ib_rec.inventory_item_id  := r_itiv_ib_rec.inventory_item_id;
17577       ELSIF (l_itiv_ib_rec.inventory_item_id IS NOT NUll OR
17578           l_itiv_ib_rec.inventory_item_id <> OKL_API.G_MISS_NUM) AND
17579           lv_model_object_id1 <> r_itiv_ib_rec.inventory_item_id THEN
17580           l_itiv_ib_rec.inventory_item_id  := lv_model_object_id1;
17581       ELSIF (l_itiv_ib_rec.inventory_item_id IS NUll OR
17582           l_itiv_ib_rec.inventory_item_id = OKL_API.G_MISS_NUM) OR
17583           lv_model_object_id1 <> r_itiv_ib_rec.inventory_item_id THEN
17584           l_itiv_ib_rec.inventory_item_id  := lv_model_object_id1;
17585       END IF;
17586       IF (l_itiv_ib_rec.inventory_org_id IS NUll OR
17587           l_itiv_ib_rec.inventory_org_id = OKL_API.G_MISS_NUM) AND
17588           lv_model_object_id2 = r_itiv_ib_rec.inventory_org_id THEN
17589           l_itiv_ib_rec.inventory_org_id  := r_itiv_ib_rec.inventory_org_id;
17590       ELSIF (l_itiv_ib_rec.inventory_org_id IS NOT NUll OR
17591           l_itiv_ib_rec.inventory_org_id <> OKL_API.G_MISS_NUM) AND
17592           lv_model_object_id2 <> r_itiv_ib_rec.inventory_org_id THEN
17593           l_itiv_ib_rec.inventory_org_id  := lv_model_object_id2;
17594       ELSIF (l_itiv_ib_rec.inventory_org_id IS NUll OR
17595           l_itiv_ib_rec.inventory_org_id = OKL_API.G_MISS_NUM) OR
17596           lv_model_object_id2 <> r_itiv_ib_rec.inventory_org_id THEN
17597           l_itiv_ib_rec.inventory_org_id  := lv_model_object_id2;
17598       END IF;
17599       -- Updating of the ib Line
17600       update_instance_ib_line(p_api_version   => p_api_version,
17601                               p_init_msg_list => p_init_msg_list,
17602                               x_return_status => x_return_status,
17603                               x_msg_count     => x_msg_count,
17604                               x_msg_data      => x_msg_data,
17605                               p_clev_rec      => l_clev_ib_rec,
17606                               p_klev_rec      => l_klev_ib_rec,
17607                               p_cimv_rec      => l_cimv_ib_rec,
17608                               p_itiv_rec      => l_itiv_ib_rec,
17609                               x_clev_rec      => x_clev_ib_rec,
17610                               x_klev_rec      => l_klev_ib_rec_out,
17611                               x_cimv_rec      => l_cimv_ib_rec_out,
17612                               x_itiv_rec      => l_itiv_ib_rec_out);
17613       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17614         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17615       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17616         RAISE OKL_API.G_EXCEPTION_ERROR;
17617       END IF;
17618       -- Updating of the Instance Line
17619       -- To Get the cle IB Line Record
17620       x_return_status := get_rec_clev(l_clev_ib_rec.cle_id,
17621                                       r_clev_inst_rec);
17622       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17623          OKL_API.set_message(p_app_name     => G_APP_NAME,
17624                              p_msg_name     => G_FETCHING_INFO,
17625                              p_token1       => G_REC_NAME_TOKEN,
17626                              p_token1_value => 'OKC_K_LINES_V Record');
17627          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17628       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17629          OKL_API.set_message(p_app_name     => G_APP_NAME,
17630                              p_msg_name     => G_FETCHING_INFO,
17631                              p_token1       => G_REC_NAME_TOKEN,
17632                              p_token1_value => 'OKC_K_LINES_V Record');
17633          RAISE OKL_API.G_EXCEPTION_ERROR;
17634       END IF;
17635       -- To Get the kle IB Line Record
17636       x_return_status := get_rec_klev(l_clev_ib_rec.cle_id,
17637                                       r_klev_inst_rec);
17638       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17639          OKL_API.set_message(p_app_name     => G_APP_NAME,
17640                              p_msg_name     => G_FETCHING_INFO,
17641                              p_token1       => G_REC_NAME_TOKEN,
17642                              p_token1_value => 'OKL_K_LINES_V Record');
17643          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17644       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17645          OKL_API.set_message(p_app_name     => G_APP_NAME,
17646                              p_msg_name     => G_FETCHING_INFO,
17647                              p_token1       => G_REC_NAME_TOKEN,
17648                              p_token1_value => 'OKL_K_LINES_V Record');
17649          RAISE OKL_API.G_EXCEPTION_ERROR;
17650       END IF;
17651       IF r_clev_inst_rec.id <> r_klev_inst_rec.id THEN
17652          OKL_API.set_message(p_app_name     => G_APP_NAME,
17653                              p_msg_name     => G_LINE_RECORD);
17654          RAISE OKL_API.G_EXCEPTION_ERROR;
17655       END IF;
17656       l_clev_inst_rec := r_clev_inst_rec;
17657       l_klev_inst_rec := r_klev_inst_rec;
17658       -- upating of the Instance Line
17659       update_instance_line(p_api_version   => p_api_version,
17660                            p_init_msg_list => p_init_msg_list,
17661                            x_return_status => x_return_status,
17662                            x_msg_count     => x_msg_count,
17663                            x_msg_data      => x_msg_data,
17664                            p_clev_rec      => l_clev_inst_rec,
17665                            p_klev_rec      => l_klev_inst_rec,
17666                            p_itiv_rec      => l_itiv_inst_rec,
17667                            x_clev_rec      => l_clev_inst_rec_out,
17668                            x_klev_rec      => l_klev_inst_rec_out,
17669                            x_itiv_rec      => l_itiv_inst_rec_out);
17670       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17671         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17672       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17673         RAISE OKL_API.G_EXCEPTION_ERROR;
17674       END IF;
17675     ELSIF p_new_yn = 'N' THEN
17676       FOR r_asset_iti IN c_asset_iti(p_asset_number => p_asset_number,
17677                                      p_dnz_chr_id   => x_clev_fa_rec.dnz_chr_id)  LOOP
17678         -- To Get the itiv ib Line Record
17679         x_return_status := get_rec_itiv(r_asset_iti.id,
17680                                         n_itiv_ib_rec);
17681         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17682            OKL_API.set_message(p_app_name     => G_APP_NAME,
17683                                p_msg_name     => G_FETCHING_INFO,
17684                                p_token1       => G_REC_NAME_TOKEN,
17685                                p_token1_value => 'OKL_TXL_ITM_INSTS_V Record');
17686            EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
17687         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17688            OKL_API.set_message(p_app_name     => G_APP_NAME,
17689                                p_msg_name     => G_FETCHING_INFO,
17690                                p_token1       => G_REC_NAME_TOKEN,
17691                                p_token1_value => 'OKL_TXL_ITM_INSTS_V Record');
17692            EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
17693         END IF;
17694         n_itiv_ib_rec.object_id1_new := p_itiv_ib_rec.object_id1_new;
17695         n_itiv_ib_rec.object_id1_old := p_itiv_ib_rec.object_id1_new;
17696         OKL_TXL_ITM_INSTS_PUB.update_txl_itm_insts(p_api_version    => p_api_version,
17697                                                    p_init_msg_list  => p_init_msg_list,
17698                                                    x_return_status  => x_return_status,
17699                                                    x_msg_count      => x_msg_count,
17700                                                    x_msg_data       => x_msg_data,
17701                                                    p_iipv_rec       => n_itiv_ib_rec,
17702                                                    x_iipv_rec       => nx_itiv_ib_rec);
17703         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17704           OKL_API.set_message(p_app_name     => G_APP_NAME,
17705                               p_msg_name     => G_ITI_ID);
17706            EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
17707         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17708           OKL_API.set_message(p_app_name     => G_APP_NAME,
17709                               p_msg_name     => G_ITI_ID);
17710            EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
17711         END IF;
17712       END LOOP;
17713       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17714         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17715       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17716         RAISE OKL_API.G_EXCEPTION_ERROR;
17717       END IF;
17718     END IF;
17719 
17720     -- rravikir modified.
17721     -- Update the OKL_TXL_ITM_INSTS table, when the item or install site gets changed.
17722     ln_txl_itm_id           := l_itiv_ib_rec_out.id;
17723     lv_object_id1           := l_itiv_ib_rec_out.object_id1_new;
17724     lv_object_id2           := l_itiv_ib_rec_out.object_id2_new;
17725     ln_inv_itm_id           := l_itiv_ib_rec_out.inventory_item_id;
17726     ln_inv_org_id           := l_itiv_ib_rec_out.inventory_org_id;
17727     lv_jtot_object_code_new := l_itiv_ib_rec_out.jtot_object_code_new;
17728     l_top_line_id           := x_clev_fin_rec.id;
17729     FOR r_get_txl_itm_insts IN c_get_txl_itm_insts(p_top_line_id => l_top_line_id,
17730                                                    p_txl_inst_id => ln_txl_itm_id)  LOOP
17731       k_itiv_ib_rec.id                   :=  r_get_txl_itm_insts.id;
17732       k_itiv_ib_rec.object_id1_new       :=  lv_object_id1;
17733       k_itiv_ib_rec.object_id2_new       :=  lv_object_id2;
17734       k_itiv_ib_rec.inventory_item_id    :=  ln_inv_itm_id;
17735       k_itiv_ib_rec.inventory_org_id     :=  ln_inv_org_id;
17736       k_itiv_ib_rec.jtot_object_code_new :=  lv_jtot_object_code_new;
17737       OKL_TXL_ITM_INSTS_PUB.update_txl_itm_insts(p_api_version    => p_api_version,
17738                                                  p_init_msg_list  => p_init_msg_list,
17739                                                  x_return_status  => x_return_status,
17740                                                  x_msg_count      => x_msg_count,
17741                                                  x_msg_data       => x_msg_data,
17742                                                  p_iipv_rec       => k_itiv_ib_rec,
17743                                                  x_iipv_rec       => kx_itiv_ib_rec);
17744       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17745         OKL_API.set_message(p_app_name     => G_APP_NAME,
17746                             p_msg_name     => G_ITI_ID);
17747          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
17748       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17749         OKL_API.set_message(p_app_name     => G_APP_NAME,
17750                             p_msg_name     => G_ITI_ID);
17751          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
17752       END IF;
17753     END LOOP;
17754     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17755       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17756     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17757       RAISE OKL_API.G_EXCEPTION_ERROR;
17758     END IF;
17759     -- end rravikir
17760 
17761     -- We need to change the status of the header whenever there is updating happening
17762     -- after the contract status is approved
17763     IF (l_clev_inst_rec_out.dnz_chr_id is NOT NULL) AND
17764        (l_clev_inst_rec_out.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
17765       --cascade edit status on to lines
17766       okl_contract_status_pub.cascade_lease_status_edit
17767                (p_api_version     => p_api_version,
17768                 p_init_msg_list   => p_init_msg_list,
17769                 x_return_status   => x_return_status,
17770                 x_msg_count       => x_msg_count,
17771                 x_msg_data        => x_msg_data,
17772                 p_chr_id          => l_clev_inst_rec_out.dnz_chr_id);
17773       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
17774         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
17775       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
17776         RAISE OKL_API.G_EXCEPTION_ERROR;
17777       END IF;
17778     END IF;
17779   End If; --release asset : Bug# 3533936
17780     OKL_API.END_ACTIVITY (x_msg_count,
17781                           x_msg_data );
17782   EXCEPTION
17783     WHEN OKL_API.G_EXCEPTION_ERROR THEN
17784     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
17785                                l_api_name,
17786                                G_PKG_NAME,
17787                                'OKL_API.G_RET_STS_ERROR',
17788                                x_msg_count,
17789                                x_msg_data,
17790                                '_PVT');
17791     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
17792     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
17793                               l_api_name,
17794                               G_PKG_NAME,
17795                               'OKL_API.G_RET_STS_UNEXP_ERROR',
17796                               x_msg_count,
17797                               x_msg_data,
17798                               '_PVT');
17799     WHEN OTHERS THEN
17800     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
17801                               l_api_name,
17802                               G_PKG_NAME,
17803                               'OTHERS',
17804                               x_msg_count,
17805                               x_msg_data,
17806                               '_PVT');
17807   END update_all_line;
17808 -------------------------------------------------------------------------------------------------------
17809 ----------------- Main Process for Creation of instance and Install base line  ------------------------
17810 -------------------------------------------------------------------------------------------------------
17811   PROCEDURE create_ints_ib_line(
17812             p_api_version    IN  NUMBER,
17813             p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
17814             x_return_status  OUT NOCOPY VARCHAR2,
17815             x_msg_count      OUT NOCOPY NUMBER,
17816             x_msg_data       OUT NOCOPY VARCHAR2,
17817             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
17818             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
17819             p_current_units  IN  OKL_TXL_ASSETS_V.CURRENT_UNITS%TYPE,
17820             p_clev_ib_rec    IN  clev_rec_type,
17821             p_itiv_ib_tbl    IN  itiv_tbl_type,
17822             x_clev_ib_tbl    OUT NOCOPY clev_tbl_type,
17823             x_itiv_ib_tbl    OUT NOCOPY itiv_tbl_type,
17824             x_clev_fin_rec   OUT NOCOPY clev_rec_type,
17825             x_klev_fin_rec   OUT NOCOPY klev_rec_type,
17826             x_cimv_model_rec OUT NOCOPY cimv_rec_type,
17827             x_cimv_fa_rec    OUT NOCOPY cimv_rec_type,
17828             x_talv_fa_rec    OUT NOCOPY talv_rec_type) IS
17829     l_api_name          CONSTANT VARCHAR2(30) := 'CREATE_INTS_IB_LINE';
17830     l_clev_ib_rec                clev_rec_type;
17831     l_klev_ib_rec                klev_rec_type;
17832     l_clev_inst_rec              clev_rec_type;
17833     l_klev_inst_rec              klev_rec_type;
17834     l_cimv_ib_rec                cimv_rec_type;
17835     l_itiv_ib_tbl                itiv_tbl_type := p_itiv_ib_tbl;
17836     l_clev_inst_rec_out          clev_rec_type;
17837     l_klev_inst_rec_out          klev_rec_type;
17838     l_itiv_inst_tbl_out          itiv_tbl_type;
17839     l_clev_ib_rec_out            clev_rec_type;
17840     l_cimv_ib_rec_out            cimv_rec_type;
17841     l_klev_ib_rec_out            klev_rec_type;
17842     l_itiv_ib_tbl_out            itiv_tbl_type;
17843     x_clev_ib_rec                clev_rec_type;
17844     l_trxv_ib_rec_out            trxv_rec_type;
17845     lv_object_id1_new            OKL_TXL_ITM_INSTS_V.OBJECT_ID1_NEW%TYPE;
17846     j                            NUMBER := 0;
17847     ln_dummy                     NUMBER := 0;
17848     ln_dummy1                    NUMBER := 0;
17849     -- rravikir added
17850     l_itiv_rec                   itiv_rec_type;
17851     lk_itiv_rec                  itiv_rec_type;
17852     lx_itiv_rec                  itiv_rec_type;
17853     k                            NUMBER := 0;
17854     ln_remain_inst               NUMBER := 0;
17855     lb_record_created            BOOLEAN := FALSE;
17856     lb_update_oec_required       BOOLEAN := FALSE;
17857     ln_item_id                   OKL_TXL_ITM_INSTS.INVENTORY_ITEM_ID%TYPE;
17858     -- end
17859     ln_final_current_units       OKC_K_ITEMS_V.NUMBER_OF_ITEMS%TYPE;
17860     ln_model_line_id             OKC_K_LINES_V.ID%TYPE := OKL_API.G_MISS_NUM;
17861     ln_fa_line_id                OKC_K_LINES_V.ID%TYPE := OKL_API.G_MISS_NUM;
17862     r_clev_model_rec             clev_rec_type;
17863     r_klev_model_rec             klev_rec_type;
17864     r_cimv_model_rec             cimv_rec_type;
17865     r_clev_addon_rec             clev_rec_type;
17866     r_klev_addon_rec             klev_rec_type;
17867     r_cimv_addon_rec             cimv_rec_type;
17868     rx_clev_addon_rec            clev_rec_type;
17869     rx_klev_addon_rec            klev_rec_type;
17870     rx_cimv_addon_rec            cimv_rec_type;
17871     r_clev_fa_rec                clev_rec_type;
17872     r_klev_fa_rec                klev_rec_type;
17873     r_cimv_fa_rec                cimv_rec_type;
17874     r_talv_fa_rec                talv_rec_type;
17875     l_clev_model_rec_out         clev_rec_type;
17876     l_klev_model_rec_out         klev_rec_type;
17877     l_clev_fa_rec_out            clev_rec_type;
17878     l_klev_fa_rec_out            klev_rec_type;
17879     ln_model_qty                 OKC_K_ITEMS_V.NUMBER_OF_ITEMS%TYPE := 0;
17880     ln_klev_fin_oec              OKL_K_LINES_V.OEC%TYPE := 0;
17881     ln_klev_fin_res              OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
17882     ln_klev_fin_cap              OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
17883 
17884     CURSOR c_remain_inst_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
17885                               p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
17886     SELECT count(cle.id)
17887     FROM okc_subclass_top_line stl,
17888          okc_line_styles_b lse2,
17889          okc_line_styles_b lse1,
17890          okc_k_lines_v cle
17891     WHERE cle.cle_id = p_cle_id
17892     AND cle.dnz_chr_id = p_chr_id
17893     AND cle.lse_id = lse1.id
17894     AND lse1.lty_code = G_INST_LINE_LTY_CODE
17895     AND lse1.lse_parent_id = lse2.id
17896     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
17897     AND lse2.id = stl.lse_id
17898     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
17899 
17900     CURSOR c_model_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
17901                         p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
17902     SELECT cle.id
17903     FROM okc_subclass_top_line stl,
17904          okc_line_styles_b lse2,
17905          okc_line_styles_b lse1,
17906          okc_k_lines_v cle
17907     WHERE cle.cle_id = p_cle_id
17908     AND cle.dnz_chr_id = p_chr_id
17909     AND cle.lse_id = lse1.id
17910     AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
17911     AND lse1.lse_parent_id = lse2.id
17912     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
17913     AND lse2.id = stl.lse_id
17914     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
17915 
17916     CURSOR c_fa_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
17917                      p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
17918     SELECT cle.id
17919     FROM okc_subclass_top_line stl,
17920          okc_line_styles_b lse2,
17921          okc_line_styles_b lse1,
17922          okc_k_lines_v cle
17923     WHERE cle.cle_id = p_cle_id
17924     AND cle.dnz_chr_id = p_chr_id
17925     AND cle.lse_id = lse1.id
17926     AND lse1.lty_code = G_FA_LINE_LTY_CODE
17927     AND lse1.lse_parent_id = lse2.id
17928     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
17929     AND lse2.id = stl.lse_id
17930     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
17931 
17932     CURSOR c_addon_line_id(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
17933                            p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
17934     SELECT cle.id
17935     FROM okc_subclass_top_line stl,
17936          okc_line_styles_b lse3,
17937          okc_line_styles_b lse2,
17938          okc_line_styles_b lse1,
17939          okc_k_lines_b cle
17940     WHERE cle.dnz_chr_id = p_chr_id
17941     AND cle.lse_id = lse1.id
17942     AND lse1.lty_code = G_ADDON_LINE_LTY_CODE
17943     AND lse1.lse_parent_id = lse2.id
17944     AND lse2.lty_code = G_MODEL_LINE_LTY_CODE
17945     AND lse2.lse_parent_id = lse3.id
17946     AND lse3.lty_code = G_FIN_LINE_LTY_CODE
17947     AND lse3.id = stl.lse_id
17948     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE)
17949     AND cle.cle_id in (SELECT cle.id
17950                        FROM okc_subclass_top_line stl,
17951                             okc_line_styles_b lse2,
17952                             okc_line_styles_b lse1,
17953                             okc_k_lines_b cle
17954                        WHERE cle.cle_id = p_cle_id
17955                        AND cle.dnz_chr_id = p_chr_id
17956                        AND cle.lse_id = lse1.id
17957                        AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
17958                        AND lse1.lse_parent_id = lse2.id
17959                        AND lse2.lty_code = G_FIN_LINE_LTY_CODE
17960                        AND lse2.id = stl.lse_id
17961                        AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE));
17962 
17963     CURSOR c_model_item(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
17964                         p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
17965     SELECT cim.number_of_items
17966     FROM okc_subclass_top_line stl,
17967          okc_line_styles_b lse2,
17968          okc_line_styles_b lse1,
17969          okc_k_items_v cim,
17970          okc_k_lines_v cle
17971     WHERE cle.cle_id = p_cle_id
17972     AND cle.dnz_chr_id = p_chr_id
17973     AND cle.id = cim.cle_id
17974     AND cim.dnz_chr_id = cle.dnz_chr_id
17975     AND cle.lse_id = lse1.id
17976     AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
17977     AND lse1.lse_parent_id = lse2.id
17978     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
17979     AND lse2.id = stl.lse_id
17980     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
17981 
17982         --akrangan Bug# 5362977 start
17983        --cursor to check if contract has re-lease assets
17984        CURSOR l_chk_rel_ast_csr (p_chr_id IN NUMBER) IS
17985        SELECT 'Y'
17986        FROM   OKC_RULES_B rul
17987        WHERE  rul.dnz_chr_id = p_chr_id
17988        AND    rul.rule_information_category = 'LARLES'
17989        AND    NVL(rule_information1,'N') = 'Y';
17990 
17991        l_chk_rel_ast VARCHAR2(1);
17992 
17993        --cursor to check if the contract is undergoing on-line rebook
17994        cursor l_chk_rbk_csr(p_chr_id IN NUMBER) is
17995        SELECT '!'
17996        FROM   okc_k_headers_b chr,
17997               okl_trx_contracts ktrx
17998        WHERE  ktrx.khr_id_new = chr.id
17999        AND    ktrx.tsu_code = 'ENTERED'
18000        AND    ktrx.rbr_code is NOT NULL
18001        AND    ktrx.tcn_type = 'TRBK'
18002        --rkuttiya added for 12.1.1 multi GAAP
18003        AND    ktrx.representation_type = 'PRIMARY'
18004        --
18005        AND    chr.id = p_chr_id
18006        AND    chr.orig_system_source_code = 'OKL_REBOOK';
18007 
18008        l_rbk_khr      VARCHAR2(1);
18009        --akrangan Bug# 5362977 end
18010 
18011 
18012   BEGIN
18013     x_return_status := OKL_API.G_RET_STS_SUCCESS;
18014     -- Call start_activity to create savepoint, check compatibility
18015     -- and initialize message list
18016     x_return_status := OKL_API.START_ACTIVITY (
18017                                l_api_name
18018                                ,p_init_msg_list
18019                                ,'_PVT'
18020                                ,x_return_status);
18021     -- Check if activity started successfully
18022     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18023        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18024     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18025        RAISE OKL_API.G_EXCEPTION_ERROR;
18026     END IF;
18027     -- Get the Ib rec first and then we can get the instance line above the IB line
18028     x_return_status := get_rec_clev(p_clev_ib_rec.id,
18029                                     l_clev_ib_rec);
18030     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18031        OKL_API.set_message(p_app_name     => G_APP_NAME,
18032                            p_msg_name     => G_FETCHING_INFO,
18033                            p_token1       => G_REC_NAME_TOKEN,
18034                            p_token1_value => 'OKC_K_LINES_V Record');
18035        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18036     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18037        OKL_API.set_message(p_app_name     => G_APP_NAME,
18038                            p_msg_name     => G_FETCHING_INFO,
18039                            p_token1       => G_REC_NAME_TOKEN,
18040                            p_token1_value => 'OKC_K_LINES_V Record');
18041        RAISE OKL_API.G_EXCEPTION_ERROR;
18042     END IF;
18043     -- Now getting the inst line
18044     x_return_status := get_rec_clev(l_clev_ib_rec.cle_id,
18045                                     l_clev_inst_rec);
18046     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18047        OKL_API.set_message(p_app_name     => G_APP_NAME,
18048                            p_msg_name     => G_FETCHING_INFO,
18049                            p_token1       => G_REC_NAME_TOKEN,
18050                            p_token1_value => 'OKC_K_LINES_V Record');
18051        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18052     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18053        OKL_API.set_message(p_app_name     => G_APP_NAME,
18054                            p_msg_name     => G_FETCHING_INFO,
18055                            p_token1       => G_REC_NAME_TOKEN,
18056                            p_token1_value => 'OKC_K_LINES_V Record');
18057        RAISE OKL_API.G_EXCEPTION_ERROR;
18058     END IF;
18059 
18060     -- Since a record is already created in TXL_ITM_INSTS, we need to update this
18061     -- record, and create 'n-1' records.
18062     -- rravikir modified
18063     IF (l_clev_inst_rec.id IS NOT NULL OR
18064         l_clev_inst_rec.id <> OKL_API.G_MISS_NUM) THEN
18065       -- We are here b'cause we have to update the okl_txl_itm_inst rec
18066       -- So we are calling the update api for the okl_txl_itm_insts rec
18067 
18068       -- Now getting the item information OKL_TXL_ITM_INSTS
18069       x_return_status := get_rec_itiv(l_clev_ib_rec.id,
18070                                       l_itiv_rec);
18071       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18072          OKL_API.set_message(p_app_name     => G_APP_NAME,
18073                              p_msg_name     => G_FETCHING_INFO,
18074                              p_token1       => G_REC_NAME_TOKEN,
18075                              p_token1_value => 'OKC_K_LINES_V Record');
18076          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18077       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18078          OKL_API.set_message(p_app_name     => G_APP_NAME,
18079                              p_msg_name     => G_FETCHING_INFO,
18080                              p_token1       => G_REC_NAME_TOKEN,
18081                              p_token1_value => 'OKC_K_LINES_V Record');
18082          RAISE OKL_API.G_EXCEPTION_ERROR;
18083       END IF;
18084       -- checking for mfg_serial_number_yn flag
18085       k := l_itiv_ib_tbl.FIRST;
18086       IF l_itiv_ib_tbl(k).mfg_serial_number_yn <> 'Y' THEN
18087         OKL_API.set_message(p_app_name     => G_APP_NAME,
18088                             p_msg_name     => G_REQUIRED_VALUE,
18089                             p_token1       => G_COL_NAME_TOKEN,
18090                             p_token1_value => 'mfg_serial_number_yn cannot be N');
18091         x_return_status := OKL_API.G_RET_STS_ERROR;
18092         IF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18093           RAISE OKL_API.G_EXCEPTION_ERROR;
18094         END IF;
18095       END IF;
18096 
18097       l_itiv_rec.object_id1_new       := l_itiv_ib_tbl(k).object_id1_new;
18098       l_itiv_rec.object_id2_new       := l_itiv_ib_tbl(k).object_id2_new;
18099       l_itiv_rec.mfg_serial_number_yn := l_itiv_ib_tbl(k).mfg_serial_number_yn;
18100       l_itiv_rec.serial_number        := l_itiv_ib_tbl(k).serial_number;
18101       l_itiv_rec.dnz_cle_id           := l_itiv_ib_tbl(k).dnz_cle_id;
18102 
18103       ln_item_id := l_itiv_rec.inventory_item_id;
18104 
18105       -- Check for uniqueness of Serial number
18106       x_return_status := is_duplicate_serial_number(p_serial_number => l_itiv_rec.serial_number,
18107                                                     p_item_id       => l_itiv_rec.inventory_item_id);
18108       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18109         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18110       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18111         RAISE OKL_API.G_EXCEPTION_ERROR;
18112       END IF;
18113       l_itiv_rec.object_id2_new := '#';
18114 
18115       update_txl_itm_insts(p_api_version    => p_api_version,
18116                            p_init_msg_list  => p_init_msg_list,
18117                            x_return_status  => x_return_status,
18118                            x_msg_count      => x_msg_count,
18119                            x_msg_data       => x_msg_data,
18120                            p_itiv_rec       => l_itiv_rec,
18121                            x_itiv_rec       => lx_itiv_rec);
18122       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18123         OKL_API.set_message(p_app_name     => G_APP_NAME,
18124                             p_msg_name     => G_ITI_ID);
18125         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18126       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18127         OKL_API.set_message(p_app_name     => G_APP_NAME,
18128                             p_msg_name     => G_ITI_ID);
18129         RAISE OKL_API.G_EXCEPTION_ERROR;
18130       END IF;
18131       lb_record_created := TRUE;
18132     END IF;
18133     -- end rravikir modified
18134 
18135 
18136     -- We need to verify the p_current_units is same as the existing NUmber of items
18137     -- in the model line
18138 
18139     -- rravikir modified
18140     -- Should be able to create more # of serial numbers than the current units.
18141     OPEN c_model_item(l_clev_inst_rec.cle_id,
18142                       l_clev_inst_rec.dnz_chr_id);
18143     IF c_model_item%NOTFOUND THEN
18144        OKL_API.set_message(p_app_name => G_APP_NAME,
18145                            p_msg_name => G_ITEM_RECORD);
18146        RAISE OKL_API.G_EXCEPTION_ERROR;
18147     END IF;
18148     FETCH c_model_item INTO ln_model_qty;
18149     CLOSE c_model_item;
18150 
18151     -- If the serial #'s entered is not equal to the units in model line,
18152     -- we should update the fixed line , model line and also update the top line
18153     -- with latest OEC
18154     IF ln_model_qty <> l_itiv_ib_tbl.COUNT THEN
18155 
18156          --akrangan Bug# 5362977 start
18157          -- Do not allow update of units if the contract has Re-lease assets
18158          l_chk_rel_ast := 'N';
18159          OPEN l_chk_rel_ast_csr(p_chr_id => l_clev_inst_rec.dnz_chr_id);
18160          FETCH l_chk_rel_ast_csr INTO l_chk_rel_ast;
18161          CLOSE l_chk_rel_ast_csr;
18162 
18163          IF l_chk_rel_ast = 'Y' THEN
18164            OKL_API.set_message(p_app_name     => G_APP_NAME,
18165                                p_msg_name     => 'OKL_LA_REL_UNITS_NO_UPDATE');
18166            RAISE OKL_API.G_EXCEPTION_ERROR;
18167          ELSE
18168 
18169       lb_update_oec_required := TRUE;
18170     END IF;
18171          --akrangan Bug# 5362977 end
18172        END IF;
18173 
18174     -- end modified
18175 
18176     -- We have to make sure the count of the itiv_tbl
18177     -- should be equal to qty of items
18178     -- Since inst tbl and ib inst are same
18179     -- it is Good enough to do one
18180     ln_dummy1 := l_itiv_ib_tbl.COUNT - 1;
18181     IF ln_dummy1 > 0 THEN
18182        --ln_dummy1 :=  l_itiv_ib_tbl.COUNT;
18183        -- We have intialize the J , since there could be any index integer
18184        j := l_itiv_ib_tbl.FIRST;
18185        j := l_itiv_ib_tbl.NEXT(j);
18186        LOOP
18187          IF (l_itiv_ib_tbl(j).mfg_serial_number_yn IS NULL OR
18188             l_itiv_ib_tbl(j).mfg_serial_number_yn = OKL_API.G_MISS_CHAR) THEN
18189             x_return_status := OKL_API.G_RET_STS_ERROR;
18190             OKL_API.set_message(p_app_name     => G_APP_NAME,
18191                                 p_msg_name     => G_REQUIRED_VALUE,
18192                                 p_token1       => G_COL_NAME_TOKEN,
18193                                 p_token1_value => 'mfg_serial_number_yn');
18194             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18195          ELSIF l_itiv_ib_tbl(j).mfg_serial_number_yn <> 'Y' THEN
18196             OKL_API.set_message(p_app_name     => G_APP_NAME,
18197                                 p_msg_name     => G_REQUIRED_VALUE,
18198                                 p_token1       => G_COL_NAME_TOKEN,
18199                                 p_token1_value => 'mfg_serial_number_yn cannot be N');
18200             x_return_status := OKL_API.G_RET_STS_ERROR;
18201             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18202          END IF;
18203          EXIT WHEN (j = l_itiv_ib_tbl.LAST);
18204          j := l_itiv_ib_tbl.NEXT(j);
18205        END LOOP;
18206        IF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18207          RAISE OKL_API.G_EXCEPTION_ERROR;
18208        END IF;
18209     ELSIF (NOT lb_record_created) THEN
18210       OKL_API.set_message(p_app_name     => G_APP_NAME,
18211                           p_msg_name     => G_CNT_REC);
18212       RAISE OKL_API.G_EXCEPTION_ERROR;
18213     END IF;
18214     -- Since we have to create the instance
18215     -- Depending of the qty in l_cimv_model_rec.number_of_items
18216     -- we have use loop
18217     ln_dummy := l_itiv_ib_tbl.COUNT - 1;
18218     IF (ln_dummy > 0) THEN
18219       j := l_itiv_ib_tbl.FIRST;
18220       j := l_itiv_ib_tbl.NEXT(j);
18221       FOR i IN 1..ln_dummy LOOP
18222       -- 4414408 Assign the line style ID directly
18223 /*
18224         -- Creation of the Instance Line Process
18225         -- Getting the Line style Info
18226         x_return_status := get_lse_id(p_lty_code => G_INST_LINE_LTY_CODE,
18227                                       x_lse_id   => l_clev_inst_rec.lse_id);
18228         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18229           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18230         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18231           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18232         END IF;
18233 */
18234         IF (l_clev_inst_rec.display_sequence IS NUll OR
18235           l_clev_inst_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
18236           l_clev_inst_rec.display_sequence  := l_clev_inst_rec.display_sequence + 1;
18237         END IF;
18238         -- Required cle Line Information
18239         -- Since we have a local Record of the Instance line
18240         -- We can you the same
18241         l_clev_inst_rec.lse_id            := G_INST_LINE_LTY_ID;
18242         l_clev_inst_rec.chr_id            := null;
18243         l_clev_inst_rec.cle_id            := l_clev_inst_rec.cle_id;
18244         l_clev_inst_rec.dnz_chr_id        := l_clev_inst_rec.dnz_chr_id;
18245         l_clev_inst_rec.exception_yn      := 'N';
18246         IF (l_itiv_ib_tbl(j).instance_number_ib IS NULL OR
18247           l_itiv_ib_tbl(j).instance_number_ib = OKL_API.G_MISS_CHAR)  THEN
18248           x_return_status := generate_instance_number_ib(x_instance_number_ib => l_itiv_ib_tbl(j).instance_number_ib);
18249           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18250             OKL_API.set_message(p_app_name     => G_APP_NAME,
18251                                 p_msg_name     => G_GEN_INST_NUM_IB);
18252             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18253           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18254             OKL_API.set_message(p_app_name     => G_APP_NAME,
18255                                 p_msg_name     => G_GEN_INST_NUM_IB);
18256             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18257           END IF;
18258           l_itiv_ib_tbl(j).instance_number_ib := p_asset_number||' '||l_itiv_ib_tbl(j).instance_number_ib;
18259         END IF;
18260 
18261         -- Creation of the Instance Line
18262         Create_instance_line(p_api_version   => p_api_version,
18263                              p_init_msg_list => p_init_msg_list,
18264                              x_return_status => x_return_status,
18265                              x_msg_count     => x_msg_count,
18266                              x_msg_data      => x_msg_data,
18267                              p_clev_rec      => l_clev_inst_rec,
18268                              p_klev_rec      => l_klev_inst_rec,
18269                              p_itiv_rec      => l_itiv_ib_tbl(j),
18270                              x_clev_rec      => l_clev_inst_rec_out,
18271                              x_klev_rec      => l_klev_inst_rec_out,
18272                              x_itiv_rec      => l_itiv_ib_tbl_out(j));
18273         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18274           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18275         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18276           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18277         END IF;
18278       -- 4414408 Assign the line style ID directly
18279 /*
18280         -- Creation of the ib Line Process
18281         -- Getting the Line style Info
18282         x_return_status := get_lse_id(p_lty_code => G_IB_LINE_LTY_CODE,
18283                                       x_lse_id   => l_clev_ib_rec.lse_id);
18284         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18285           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18286         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18287           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18288         END IF;
18289 */
18290         IF (l_clev_ib_rec.display_sequence IS NUll OR
18291            l_clev_ib_rec.display_sequence = OKL_API.G_MISS_NUM) THEN
18292            l_clev_ib_rec.display_sequence  := l_clev_ib_rec_out.display_sequence + 1;
18293         END IF;
18294         -- Required cle Line Information
18295         l_clev_ib_rec.lse_id            := G_IB_LINE_LTY_ID;
18296         l_clev_ib_rec.chr_id            := null;
18297         l_clev_ib_rec.cle_id            := l_clev_inst_rec_out.id;
18298         l_clev_ib_rec.dnz_chr_id        := l_clev_inst_rec_out.dnz_chr_id;
18299         l_clev_ib_rec.exception_yn      := 'N';
18300         -- Required Item Information
18301         l_cimv_ib_rec.exception_yn      := 'N';
18302         l_cimv_ib_rec.object1_id1       := null;
18303         l_cimv_ib_rec.object1_id2       := null;
18304         -- Since the screen can give only party_site_id via l_itiv_tbl(j).object_id1_new
18305         -- We have to use the below function
18306         lv_object_id1_new := l_itiv_ib_tbl(j).object_id1_new;
18307         x_return_status := get_party_site_id(p_object_id1_new => lv_object_id1_new,
18308                                              x_object_id1_new => l_itiv_ib_tbl(j).object_id1_new,
18309                                              x_object_id2_new => l_itiv_ib_tbl(j).object_id2_new);
18310         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18311           OKL_API.set_message(p_app_name     => G_APP_NAME,
18312                              p_msg_name     => G_NO_MATCHING_RECORD,
18313                              p_token1       => G_COL_NAME_TOKEN,
18314                              p_token1_value => 'Party_site_id');
18315           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18316         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18317           OKL_API.set_message(p_app_name     => G_APP_NAME,
18318                               p_msg_name     => G_NO_MATCHING_RECORD,
18319                               p_token1       => G_COL_NAME_TOKEN,
18320                               p_token1_value => 'Party_site_id');
18321           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18322         END IF;
18323 
18324         -- Check for uniqueness of Serial number
18325         x_return_status := is_duplicate_serial_number(p_serial_number => l_itiv_ib_tbl(j).serial_number,
18326                                                       p_item_id       => ln_item_id);
18327         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18328           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18329         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18330           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18331         END IF;
18332 
18333         -- Creation of the ib Line
18334         Create_instance_ib_line(p_api_version   => p_api_version,
18335                                 p_init_msg_list => p_init_msg_list,
18336                                 x_return_status => x_return_status,
18337                                 x_msg_count     => x_msg_count,
18338                                 x_msg_data      => x_msg_data,
18339                                 p_clev_rec      => l_clev_ib_rec,
18340                                 p_klev_rec      => l_klev_ib_rec,
18341                                 p_cimv_rec      => l_cimv_ib_rec,
18342                                 p_itiv_rec      => l_itiv_ib_tbl(j),
18343                                 x_clev_rec      => x_clev_ib_rec,
18344                                 x_klev_rec      => l_klev_ib_rec_out,
18345                                 x_cimv_rec      => l_cimv_ib_rec_out,
18346                                 x_trxv_rec      => l_trxv_ib_rec_out,
18347                                 x_itiv_rec      => x_itiv_ib_tbl(j));
18348         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18349           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18350         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18351           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18352         END IF;
18353         EXIT WHEN (j = l_itiv_ib_tbl.LAST);
18354         x_clev_ib_tbl(i) := x_clev_ib_rec;
18355         j := l_itiv_ib_tbl.NEXT(j);
18356       END LOOP;
18357       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18358         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18359       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18360         RAISE OKL_API.G_EXCEPTION_ERROR;
18361       END IF;
18362     ELSIF (NOT lb_record_created) THEN
18363       OKL_API.set_message(p_app_name     => G_APP_NAME,
18364                           p_msg_name     => G_CNT_REC);
18365       RAISE OKL_API.G_EXCEPTION_ERROR;
18366     END IF; -- End if (ln_dummy > 0)
18367 
18368     -- We need to execute the following 'IF' loop, when the current units
18369     -- is changed, by editing more or less serial #'s.
18370     IF (lb_update_oec_required) THEN
18371     -- we should get the remaining inst line , so that we can update
18372     -- the fixed line , model line and also update the top line with latest OEC
18373     OPEN c_remain_inst_line(l_clev_inst_rec.cle_id,
18374                             l_clev_inst_rec.dnz_chr_id);
18375     IF c_remain_inst_line%NOTFOUND THEN
18376       OKL_API.set_message(p_app_name     => G_APP_NAME,
18377                           p_msg_name     => G_DELETING_INSTS_LINE);
18378       RAISE OKL_API.G_EXCEPTION_ERROR;
18379     END IF;
18380     FETCH c_remain_inst_line INTO ln_remain_inst;
18381     CLOSE c_remain_inst_line;
18382 
18383     -- To get the Model Line
18384     -- Since we have update the model line
18385     OPEN c_model_line(l_clev_inst_rec.cle_id,
18386                       l_clev_inst_rec.dnz_chr_id);
18387     IF c_model_line%NOTFOUND THEN
18388       OKL_API.set_message(p_app_name     => G_APP_NAME,
18389                           p_msg_name     => G_NO_MATCHING_RECORD,
18390                           p_token1       => G_COL_NAME_TOKEN,
18391                           p_token1_value => 'Model Asset Line record');
18392       RAISE OKL_API.G_EXCEPTION_ERROR;
18393     END IF;
18394     FETCH c_model_line INTO ln_model_line_id;
18395     CLOSE c_model_line;
18396 
18397     -- To get the Fixed Asset Line
18398     -- Since we have update the Fixed Asset Line
18399     OPEN c_fa_line(l_clev_inst_rec.cle_id,
18400                    l_clev_inst_rec.dnz_chr_id);
18401     IF c_fa_line%NOTFOUND THEN
18402        OKL_API.set_message(p_app_name     => G_APP_NAME,
18403                            p_msg_name     => G_NO_MATCHING_RECORD,
18404                            p_token1       => G_COL_NAME_TOKEN,
18405                            p_token1_value => 'Fixed Asset Line record');
18406        RAISE OKL_API.G_EXCEPTION_ERROR;
18407     END IF;
18408     FETCH c_fa_line INTO ln_fa_line_id;
18409     CLOSE c_fa_line;
18410 
18411     -- We have to build the Model Line Record for the calculations of the
18412     -- oec of the top line
18413 
18414     -- To Get the cle Model Line Record
18415     x_return_status := get_rec_clev(ln_model_line_id,
18416                                     r_clev_model_rec);
18417     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18418        OKL_API.set_message(p_app_name     => G_APP_NAME,
18419                            p_msg_name     => G_FETCHING_INFO,
18420                            p_token1       => G_REC_NAME_TOKEN,
18421                            p_token1_value => 'OKC_K_LINES_V Record');
18422        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18423     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18424        OKL_API.set_message(p_app_name     => G_APP_NAME,
18425                            p_msg_name     => G_FETCHING_INFO,
18426                            p_token1       => G_REC_NAME_TOKEN,
18427                            p_token1_value => 'OKC_K_LINES_V Record');
18428        RAISE OKL_API.G_EXCEPTION_ERROR;
18429     END IF;
18430 
18431     -- To Get the kle Model Line Record
18432     x_return_status := get_rec_klev(ln_model_line_id,
18433                                     r_klev_model_rec);
18434     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18435        OKL_API.set_message(p_app_name     => G_APP_NAME,
18436                            p_msg_name     => G_FETCHING_INFO,
18437                            p_token1       => G_REC_NAME_TOKEN,
18438                            p_token1_value => 'OKL_K_LINES_V Record');
18439        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18440     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18441        OKL_API.set_message(p_app_name     => G_APP_NAME,
18442                            p_msg_name     => G_FETCHING_INFO,
18443                            p_token1       => G_REC_NAME_TOKEN,
18444                            p_token1_value => 'OKL_K_LINES_V Record');
18445        RAISE OKL_API.G_EXCEPTION_ERROR;
18446     END IF;
18447 
18448     IF r_klev_model_rec.id <> r_clev_model_rec.id THEN
18449        OKL_API.set_message(p_app_name     => G_APP_NAME,
18450                            p_msg_name     => G_LINE_RECORD);
18451        RAISE OKL_API.G_EXCEPTION_ERROR;
18452     END IF;
18453 
18454     -- To Get the cimv Model Line Record
18455     x_return_status := get_rec_cimv(r_clev_model_rec.id,
18456                                     r_clev_model_rec.dnz_chr_id,
18457                                     r_cimv_model_rec);
18458     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18459        OKL_API.set_message(p_app_name     => G_APP_NAME,
18460                            p_msg_name     => G_FETCHING_INFO,
18461                            p_token1       => G_REC_NAME_TOKEN,
18462                            p_token1_value => 'OKC_K_ITEMS_V Record');
18463        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18464     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18465        OKL_API.set_message(p_app_name     => G_APP_NAME,
18466                            p_msg_name     => G_FETCHING_INFO,
18467                            p_token1       => G_REC_NAME_TOKEN,
18468                            p_token1_value => 'OKC_K_ITEMS_V Record');
18469        RAISE OKL_API.G_EXCEPTION_ERROR;
18470     END IF;
18471 
18472     --Build Model cimv item rec
18473     r_cimv_model_rec.number_of_items  := ln_remain_inst;
18474     -- Updating of the Model Line and Item Record
18475     update_model_line(p_api_version   => p_api_version,
18476                       p_init_msg_list => p_init_msg_list,
18477                       x_return_status => x_return_status,
18478                       x_msg_count     => x_msg_count,
18479                       x_msg_data      => x_msg_data,
18480                       P_new_yn        => P_new_yn,
18481                       p_asset_number  => p_asset_number,
18482                       p_clev_rec      => r_clev_model_rec,
18483                       p_klev_rec      => r_klev_model_rec,
18484                       p_cimv_rec      => r_cimv_model_rec,
18485                       x_clev_rec      => l_clev_model_rec_out,
18486                       x_klev_rec      => l_klev_model_rec_out,
18487                       x_cimv_rec      => x_cimv_model_rec);
18488     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18489       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18490     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18491       RAISE OKL_API.G_EXCEPTION_ERROR;
18492     END IF;
18493 
18494     -- We need to check if there are add on line and then we update the Addon number of items also
18495     -- Since there can be multiple Addo lines
18496     FOR r_addon_line_id IN c_addon_line_id(p_cle_id => l_clev_model_rec_out.cle_id,
18497                                            p_chr_id => l_clev_model_rec_out.dnz_chr_id) LOOP
18498       --We have to build the addon Line Record for the calculations of the
18499       -- oec of the top line
18500       -- To Get the cle addon Line Record
18501       x_return_status := get_rec_clev(r_addon_line_id.id,
18502                                       r_clev_addon_rec);
18503       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18504          OKL_API.set_message(p_app_name     => G_APP_NAME,
18505                              p_msg_name     => G_FETCHING_INFO,
18506                              p_token1       => G_REC_NAME_TOKEN,
18507                              p_token1_value => 'OKC_K_LINES_V Record');
18508          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18509       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18510          OKL_API.set_message(p_app_name     => G_APP_NAME,
18511                              p_msg_name     => G_FETCHING_INFO,
18512                              p_token1       => G_REC_NAME_TOKEN,
18513                              p_token1_value => 'OKC_K_LINES_V Record');
18514          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18515       END IF;
18516       -- To Get the kle Model Line Record
18517       x_return_status := get_rec_klev(r_addon_line_id.id,
18518                                       r_klev_addon_rec);
18519       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18520          OKL_API.set_message(p_app_name     => G_APP_NAME,
18521                              p_msg_name     => G_FETCHING_INFO,
18522                              p_token1       => G_REC_NAME_TOKEN,
18523                              p_token1_value => 'OKL_K_LINES_V Record');
18524          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18525       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18526          OKL_API.set_message(p_app_name     => G_APP_NAME,
18527                              p_msg_name     => G_FETCHING_INFO,
18528                              p_token1       => G_REC_NAME_TOKEN,
18529                              p_token1_value => 'OKL_K_LINES_V Record');
18530          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18531       END IF;
18532       IF r_klev_addon_rec.id <> r_clev_addon_rec.id THEN
18533          OKL_API.set_message(p_app_name     => G_APP_NAME,
18534                              p_msg_name     => G_LINE_RECORD);
18535          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18536       END IF;
18537       -- To Get the cimv Model Line Record
18538       x_return_status := get_rec_cimv(r_clev_addon_rec.id,
18539                                       r_clev_addon_rec.dnz_chr_id,
18540                                       r_cimv_addon_rec);
18541       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18542          OKL_API.set_message(p_app_name     => G_APP_NAME,
18543                              p_msg_name     => G_FETCHING_INFO,
18544                              p_token1       => G_REC_NAME_TOKEN,
18545                              p_token1_value => 'OKC_K_ITEMS_V Record');
18546          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18547       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18548          OKL_API.set_message(p_app_name     => G_APP_NAME,
18549                              p_msg_name     => G_FETCHING_INFO,
18550                              p_token1       => G_REC_NAME_TOKEN,
18551                              p_token1_value => 'OKC_K_ITEMS_V Record');
18552          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18553       END IF;
18554       --Build addon cimv item rec
18555       r_cimv_addon_rec.number_of_items  := ln_remain_inst;
18556       -- Updating of the addon Line and Item Record
18557       update_addon_line_rec(p_api_version   => p_api_version,
18558                             p_init_msg_list => p_init_msg_list,
18559                             x_return_status => x_return_status,
18560                             x_msg_count     => x_msg_count,
18561                             x_msg_data      => x_msg_data,
18562                             P_new_yn        => P_new_yn,
18563                             p_asset_number  => p_asset_number,
18564                             p_clev_rec      => r_clev_addon_rec,
18565                             p_klev_rec      => r_klev_addon_rec,
18566                             p_cimv_rec      => r_cimv_addon_rec,
18567                             x_clev_rec      => rx_clev_addon_rec,
18568                             x_klev_rec      => rx_klev_addon_rec,
18569                             x_cimv_rec      => rx_cimv_addon_rec);
18570       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18571          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
18572       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18573          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
18574       END IF;
18575     END LOOP;
18576     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18577        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18578     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18579        RAISE OKL_API.G_EXCEPTION_ERROR;
18580     END IF;
18581 
18582     -- Since we need to populate the OEC into fixed asset line also
18583     -- So we need to calcualte the same here it self
18584     oec_calc_upd_fin_rec(p_api_version        => p_api_version,
18585                          p_init_msg_list      => p_init_msg_list,
18586                          x_return_status      => x_return_status,
18587                          x_msg_count          => x_msg_count,
18588                          x_msg_data           => x_msg_data,
18589                          P_new_yn             => P_new_yn,
18590                          p_asset_number       => p_asset_number,
18591 			 -- 4414408
18592                          p_top_line_id        => l_clev_inst_rec.cle_id,
18593                          p_dnz_chr_id         => l_clev_model_rec_out.dnz_chr_id,
18594                          x_fin_clev_rec       => x_clev_fin_rec,
18595                          x_fin_klev_rec       => x_klev_fin_rec,
18596                          x_oec                => ln_klev_fin_oec,
18597                          p_validate_fin_line  => OKL_API.G_TRUE);
18598     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18599        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18600     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18601        RAISE OKL_API.G_EXCEPTION_ERROR;
18602     END IF;
18603 
18604     -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
18605     cap_amt_calc_upd_fin_rec(p_api_version        => p_api_version,
18606                              p_init_msg_list      => p_init_msg_list,
18607                              x_return_status      => x_return_status,
18608                              x_msg_count          => x_msg_count,
18609                              x_msg_data           => x_msg_data,
18610                              P_new_yn             => P_new_yn,
18611                              p_asset_number       => p_asset_number,
18612 			     -- 4414408
18613                              p_top_line_id        => l_clev_inst_rec.cle_id,
18614                              p_dnz_chr_id         => l_clev_model_rec_out.dnz_chr_id,
18615                              x_fin_clev_rec       => x_clev_fin_rec,
18616                              x_fin_klev_rec       => x_klev_fin_rec,
18617                              x_cap_amt            => ln_klev_fin_cap,
18618                              p_validate_fin_line  => OKL_API.G_TRUE);
18619     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18620       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18621     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18622       RAISE OKL_API.G_EXCEPTION_ERROR;
18623     END IF;
18624 
18625     -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
18626     res_value_calc_upd_fin_rec(p_api_version        => p_api_version,
18627                                p_init_msg_list      => p_init_msg_list,
18628                                x_return_status      => x_return_status,
18629                                x_msg_count          => x_msg_count,
18630                                x_msg_data           => x_msg_data,
18631                                P_new_yn             => P_new_yn,
18632                                p_asset_number       => p_asset_number,
18633 			       -- 4414408
18634                                p_top_line_id        => l_clev_inst_rec.cle_id,
18635                                p_dnz_chr_id         => l_clev_model_rec_out.dnz_chr_id,
18636                                x_fin_clev_rec       => x_clev_fin_rec,
18637                                x_fin_klev_rec       => x_klev_fin_rec,
18638                                x_res_value          => ln_klev_fin_res,
18639                                p_validate_fin_line  => OKL_API.G_TRUE);
18640     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18641       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18642     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18643       RAISE OKL_API.G_EXCEPTION_ERROR;
18644     END IF;
18645 
18646     -- Updating of the Fixed Asset Line Process
18647     -- To Get the cle fa Line Record
18648     x_return_status := get_rec_clev(ln_fa_line_id,
18649                                     r_clev_fa_rec);
18650     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18651        OKL_API.set_message(p_app_name     => G_APP_NAME,
18652                            p_msg_name     => G_FETCHING_INFO,
18653                            p_token1       => G_REC_NAME_TOKEN,
18654                            p_token1_value => 'OKC_K_LINES_V Record');
18655        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18656     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18657        OKL_API.set_message(p_app_name     => G_APP_NAME,
18658                            p_msg_name     => G_FETCHING_INFO,
18659                            p_token1       => G_REC_NAME_TOKEN,
18660                            p_token1_value => 'OKC_K_LINES_V Record');
18661        RAISE OKL_API.G_EXCEPTION_ERROR;
18662     END IF;
18663 
18664     -- To Get the kle fa Line Record
18665     x_return_status := get_rec_klev(ln_fa_line_id,
18666                                     r_klev_fa_rec);
18667     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18668        OKL_API.set_message(p_app_name     => G_APP_NAME,
18669                            p_msg_name     => G_FETCHING_INFO,
18670                            p_token1       => G_REC_NAME_TOKEN,
18671                            p_token1_value => 'OKL_K_LINES_V Record');
18672        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18673     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18674        OKL_API.set_message(p_app_name     => G_APP_NAME,
18675                            p_msg_name     => G_FETCHING_INFO,
18676                            p_token1       => G_REC_NAME_TOKEN,
18677                            p_token1_value => 'OKL_K_LINES_V Record');
18678        RAISE OKL_API.G_EXCEPTION_ERROR;
18679     END IF;
18680 
18681     IF r_klev_fa_rec.id <> r_clev_fa_rec.id THEN
18682        OKL_API.set_message(p_app_name     => G_APP_NAME,
18683                            p_msg_name     => G_LINE_RECORD);
18684        RAISE OKL_API.G_EXCEPTION_ERROR;
18685     END IF;
18686 
18687     -- To Get the cimv fa Line Record
18688     x_return_status := get_rec_cimv(r_clev_fa_rec.id,
18689                                     r_clev_fa_rec.dnz_chr_id,
18690                                     r_cimv_fa_rec);
18691     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18692        OKL_API.set_message(p_app_name     => G_APP_NAME,
18693                            p_msg_name     => G_FETCHING_INFO,
18694                            p_token1       => G_REC_NAME_TOKEN,
18695                            p_token1_value => 'OKC_K_ITEMS_V Record');
18696        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18697     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18698        OKL_API.set_message(p_app_name     => G_APP_NAME,
18699                            p_msg_name     => G_FETCHING_INFO,
18700                            p_token1       => G_REC_NAME_TOKEN,
18701                            p_token1_value => 'OKC_K_ITEMS_V Record');
18702        RAISE OKL_API.G_EXCEPTION_ERROR;
18703     END IF;
18704 
18705     --Build cimv fa item rec
18706     r_cimv_fa_rec.number_of_items  := ln_remain_inst;
18707     --Build talv fa item rec
18708     x_return_status := get_rec_txlv(r_clev_fa_rec.id,
18709                                     r_talv_fa_rec);
18710     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18711        OKL_API.set_message(p_app_name     => G_APP_NAME,
18712                            p_msg_name     => G_FETCHING_INFO,
18713                            p_token1       => G_REC_NAME_TOKEN,
18714                            p_token1_value => 'OKL_TXL_ASSETS_V Record');
18715        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18716     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18717        OKL_API.set_message(p_app_name     => G_APP_NAME,
18718                            p_msg_name     => G_FETCHING_INFO,
18719                            p_token1       => G_REC_NAME_TOKEN,
18720                            p_token1_value => 'OKL_TXL_ASSETS_V Record');
18721        RAISE OKL_API.G_EXCEPTION_ERROR;
18722     END IF;
18723 
18724     --Build talv fa item rec
18725     r_talv_fa_rec.current_units  := ln_remain_inst;
18726 
18727        --akrangan Bug# 5362977 start
18728        -- For online rebook, update depreciation_cost and
18729        -- original_cost to line capital amount instead of line oec
18730        --check for rebook contract
18731        l_rbk_khr := '?';
18732        OPEN l_chk_rbk_csr (p_chr_id => r_clev_fa_rec.dnz_chr_id);
18733        FETCH l_chk_rbk_csr INTO l_rbk_khr;
18734        CLOSE l_chk_rbk_csr;
18735 
18736        If l_rbk_khr = '!' Then
18737          r_talv_fa_rec.depreciation_cost := NVL(x_klev_fin_rec.capital_amount,ln_klev_fin_cap);
18738          r_talv_fa_rec.original_cost := NVL(x_klev_fin_rec.capital_amount,ln_klev_fin_cap);
18739        else
18740 
18741     r_talv_fa_rec.depreciation_cost := x_klev_fin_rec.oec;
18742        r_talv_fa_rec.original_cost := x_klev_fin_rec.oec;
18743        end if;
18744        --akrangan Bug# 5362977  end
18745 
18746     r_clev_fa_rec.item_description := r_talv_fa_rec.description;
18747     -- Updating of the Fixed Asset Line and item/Txl Asset Info
18748     update_fixed_asset_line(p_api_version   => p_api_version,
18749                             p_init_msg_list => p_init_msg_list,
18750                             x_return_status => x_return_status,
18751                             x_msg_count     => x_msg_count,
18752                             x_msg_data      => x_msg_data,
18753                             P_new_yn        => P_new_yn,
18754                             p_asset_number  => p_asset_number,
18755                             p_clev_rec      => r_clev_fa_rec,
18756                             p_klev_rec      => r_klev_fa_rec,
18757                             p_cimv_rec      => r_cimv_fa_rec,
18758                             p_talv_rec      => r_talv_fa_rec,
18759                             x_clev_rec      => l_clev_fa_rec_out,
18760                             x_klev_rec      => l_klev_fa_rec_out,
18761                             x_cimv_rec      => x_cimv_fa_rec,
18762                             x_talv_rec      => x_talv_fa_rec);
18763     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18764       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18765     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18766       RAISE OKL_API.G_EXCEPTION_ERROR;
18767     END IF;
18768          --akrangan Bug# 5362977 start
18769        -- Update Tax Book details - okl_txd_assets_b
18770        update_asset_line_details(p_api_version   => p_api_version,
18771                                  p_init_msg_list => p_init_msg_list,
18772                                  x_return_status => x_return_status,
18773                                  x_msg_count     => x_msg_count,
18774                                  x_msg_data      => x_msg_data,
18775                                  p_asset_number  => p_asset_number,
18776                                  p_original_cost => x_talv_fa_rec.original_cost,
18777                                  p_tal_id        => x_talv_fa_rec.ID);
18778        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18779          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18780        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18781          RAISE OKL_API.G_EXCEPTION_ERROR;
18782        END IF;
18783        --akrangan Bug# 5362977 end
18784 
18785     -- We need to change the status of the header whenever there is updating happening
18786     -- after the contract status is approved
18787     IF (l_clev_fa_rec_out.dnz_chr_id is NOT NULL) AND
18788        (l_clev_fa_rec_out.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
18789       --cascade edit status on to lines
18790       okl_contract_status_pub.cascade_lease_status_edit
18791                (p_api_version     => p_api_version,
18792                 p_init_msg_list   => p_init_msg_list,
18793                 x_return_status   => x_return_status,
18794                 x_msg_count       => x_msg_count,
18795                 x_msg_data        => x_msg_data,
18796                 p_chr_id          => l_clev_fa_rec_out.dnz_chr_id);
18797       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
18798         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
18799       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
18800         RAISE OKL_API.G_EXCEPTION_ERROR;
18801       END IF;
18802     END IF;
18803 
18804     END IF;
18805 
18806     OKL_API.END_ACTIVITY (x_msg_count,
18807                           x_msg_data );
18808   EXCEPTION
18809     WHEN OKL_API.G_EXCEPTION_ERROR THEN
18810     IF c_model_item%ISOPEN THEN
18811       CLOSE c_model_item;
18812     END IF;
18813     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
18814                                l_api_name,
18815                                G_PKG_NAME,
18816                                'OKL_API.G_RET_STS_ERROR',
18817                                x_msg_count,
18818                                x_msg_data,
18819                                '_PVT');
18820     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
18821     IF c_model_item%ISOPEN THEN
18822       CLOSE c_model_item;
18823     END IF;
18824     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
18825                               l_api_name,
18826                               G_PKG_NAME,
18827                               'OKL_API.G_RET_STS_UNEXP_ERROR',
18828                               x_msg_count,
18829                               x_msg_data,
18830                               '_PVT');
18831     WHEN OTHERS THEN
18832     IF c_model_item%ISOPEN THEN
18833       CLOSE c_model_item;
18834     END IF;
18835     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
18836                               l_api_name,
18837                               G_PKG_NAME,
18838                               'OTHERS',
18839                               x_msg_count,
18840                               x_msg_data,
18841                               '_PVT');
18842   END create_ints_ib_line;
18843 -------------------------------------------------------------------------------------------------------
18844 ----------------- Main Process for Updating of instance and Install base line  ------------------------
18845 -------------------------------------------------------------------------------------------------------
18846   PROCEDURE update_ints_ib_line(
18847             p_api_version    IN  NUMBER,
18848             p_init_msg_list  IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
18849             x_return_status  OUT NOCOPY VARCHAR2,
18850             x_msg_count      OUT NOCOPY NUMBER,
18851             x_msg_data       OUT NOCOPY VARCHAR2,
18852             P_new_yn         IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
18853             p_asset_number   IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
18854             p_top_line_id    IN  OKC_K_LINES_V.ID%TYPE,
18855             p_dnz_chr_id     IN  OKC_K_HEADERS_V.ID%TYPE,
18856             p_itiv_ib_tbl    IN  itiv_tbl_type,
18857             x_clev_ib_tbl    OUT NOCOPY clev_tbl_type,
18858             x_itiv_ib_tbl    OUT NOCOPY itiv_tbl_type) IS
18859     l_api_name          CONSTANT VARCHAR2(30) := 'UPDATE_INTS_IB_LINE';
18860     i                            NUMBER := 0;
18861     l_itiv_ib_tbl                itiv_tbl_type;
18862     l_clev_inst_rec              clev_rec_type;
18863     l_klev_inst_rec              klev_rec_type;
18864     l_clev_ib_rec                clev_rec_type;
18865     l_clev_inst_rec_out          clev_rec_type;
18866     l_klev_inst_rec_out          klev_rec_type;
18867     l_itiv_ib_tbl_out            itiv_tbl_type;
18868     l_klev_ib_rec                klev_rec_type;
18869     l_cimv_ib_rec                cimv_rec_type;
18870     l_klev_ib_rec_out            klev_rec_type;
18871     l_cimv_ib_rec_out            cimv_rec_type;
18872     l_trxv_ib_rec_out            trxv_rec_type;
18873     ln_remain_inst               NUMBER := 0;
18874     ln_model_line_id             OKC_K_LINES_V.ID%TYPE := OKL_API.G_MISS_NUM;
18875     lv_object_id1_new            OKL_TXL_ITM_INSTS.OBJECT_ID1_NEW%TYPE := OKL_API.G_MISS_CHAR;
18876     ln_fa_line_id                OKC_K_LINES_V.ID%TYPE := OKL_API.G_MISS_NUM;
18877     r_clev_model_rec             clev_rec_type;
18878     r_klev_model_rec             klev_rec_type;
18879     r_cimv_model_rec             cimv_rec_type;
18880     r_clev_fa_rec                clev_rec_type;
18881     r_klev_fa_rec                klev_rec_type;
18882     r_cimv_fa_rec                cimv_rec_type;
18883     r_talv_fa_rec                talv_rec_type;
18884     l_clev_model_rec_out         clev_rec_type;
18885     l_klev_model_rec_out         klev_rec_type;
18886     l_cimv_model_rec_out         cimv_rec_type;
18887     l_clev_fa_rec_out            clev_rec_type;
18888     l_klev_fa_rec_out            klev_rec_type;
18889     lx_cimv_fa_rec               cimv_rec_type;
18890     lx_talv_fa_rec               talv_rec_type;
18891     lx_clev_fin_rec              clev_rec_type;
18892     lx_klev_fin_rec              klev_rec_type;
18893     ln_klev_fin_oec              OKL_K_LINES_V.OEC%TYPE := 0;
18894     ln_klev_fin_res              OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
18895     ln_klev_fin_cap              OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
18896     r_clev_addon_rec             clev_rec_type;
18897     r_klev_addon_rec             klev_rec_type;
18898     r_cimv_addon_rec             cimv_rec_type;
18899     rx_clev_addon_rec            clev_rec_type;
18900     rx_klev_addon_rec            klev_rec_type;
18901     rx_cimv_addon_rec            cimv_rec_type;
18902     ln_model_item                OKL_TXL_ITM_INSTS.INVENTORY_ITEM_ID%TYPE;
18903 
18904     CURSOR c_remain_inst_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
18905                               p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
18906     SELECT count(cle.id)
18907     FROM okc_subclass_top_line stl,
18908          okc_line_styles_b lse2,
18909          okc_line_styles_b lse1,
18910          okc_k_lines_v cle
18911     WHERE cle.cle_id = p_cle_id
18912     AND cle.dnz_chr_id = p_chr_id
18913     AND cle.lse_id = lse1.id
18914     AND lse1.lty_code = G_INST_LINE_LTY_CODE
18915     AND lse1.lse_parent_id = lse2.id
18916     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
18917     AND lse2.id = stl.lse_id
18918     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
18919 
18920     CURSOR c_model_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
18921                         p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
18922     SELECT cle.id
18923     FROM okc_subclass_top_line stl,
18924          okc_line_styles_b lse2,
18925          okc_line_styles_b lse1,
18926          okc_k_lines_v cle
18927     WHERE cle.cle_id = p_cle_id
18928     AND cle.dnz_chr_id = p_chr_id
18929     AND cle.lse_id = lse1.id
18930     AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
18931     AND lse1.lse_parent_id = lse2.id
18932     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
18933     AND lse2.id = stl.lse_id
18934     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
18935 
18936     CURSOR c_model_item(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
18937                         p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
18938     SELECT cim.object1_id1
18939     FROM okc_subclass_top_line stl,
18940          okc_line_styles_b lse2,
18941          okc_line_styles_b lse1,
18942          okc_k_items cim,
18943          okc_k_lines_v cle
18944     WHERE cle.cle_id = p_cle_id
18945     AND cle.dnz_chr_id = p_chr_id
18946     AND cle.lse_id = lse1.id
18947     AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
18948     AND lse1.lse_parent_id = lse2.id
18949     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
18950     AND lse2.id = stl.lse_id
18951     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE)
18952     AND cle.id = cim.cle_id
18953     AND cim.dnz_chr_id = cle.dnz_chr_id
18954     AND cim.jtot_object1_code = 'OKX_SYSITEM';
18955 
18956     CURSOR c_fa_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
18957                      p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
18958     SELECT cle.id
18959     FROM okc_subclass_top_line stl,
18960          okc_line_styles_b lse2,
18961          okc_line_styles_b lse1,
18962          okc_k_lines_v cle
18963     WHERE cle.cle_id = p_cle_id
18964     AND cle.dnz_chr_id = p_chr_id
18965     AND cle.lse_id = lse1.id
18966     AND lse1.lty_code = G_FA_LINE_LTY_CODE
18967     AND lse1.lse_parent_id = lse2.id
18968     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
18969     AND lse2.id = stl.lse_id
18970     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE);
18971 
18972     CURSOR c_addon_line_id(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
18973                            p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
18974     SELECT cle.id
18975     FROM okc_subclass_top_line stl,
18976          okc_line_styles_b lse3,
18977          okc_line_styles_b lse2,
18978          okc_line_styles_b lse1,
18979          okc_k_lines_b cle
18980     WHERE cle.dnz_chr_id = p_chr_id
18981     AND cle.lse_id = lse1.id
18982     AND lse1.lty_code = G_ADDON_LINE_LTY_CODE
18983     AND lse1.lse_parent_id = lse2.id
18984     AND lse2.lty_code = G_MODEL_LINE_LTY_CODE
18985     AND lse2.lse_parent_id = lse3.id
18986     AND lse3.lty_code = G_FIN_LINE_LTY_CODE
18987     AND lse3.id = stl.lse_id
18988     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE)
18989     AND cle.cle_id in (SELECT cle.id
18990                        FROM okc_subclass_top_line stl,
18991                             okc_line_styles_b lse2,
18992                             okc_line_styles_b lse1,
18993                             okc_k_lines_b cle
18994                        WHERE cle.cle_id = p_cle_id
18995                        AND cle.dnz_chr_id = p_chr_id
18996                        AND cle.lse_id = lse1.id
18997                        AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
18998                        AND lse1.lse_parent_id = lse2.id
18999                        AND lse2.lty_code = G_FIN_LINE_LTY_CODE
19000                        AND lse2.id = stl.lse_id
19001                        AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE));
19002       --akrangan Bug# 5362977 start
19003        --cursor to check if contract has re-lease assets
19004        CURSOR l_chk_rel_ast_csr (p_chr_id IN NUMBER) IS
19005        SELECT 'Y'
19006        FROM   OKC_RULES_B rul
19007        WHERE  rul.dnz_chr_id = p_chr_id
19008        AND    rul.rule_information_category = 'LARLES'
19009        AND    NVL(rule_information1,'N') = 'Y';
19010 
19011        l_chk_rel_ast VARCHAR2(1);
19012 
19013        --cursor to check if the contract is undergoing on-line rebook
19014        cursor l_chk_rbk_csr(p_chr_id IN NUMBER) is
19015        SELECT '!'
19016        FROM   okc_k_headers_b chr,
19017               okl_trx_contracts ktrx
19018        WHERE  ktrx.khr_id_new = chr.id
19019        AND    ktrx.tsu_code = 'ENTERED'
19020        AND    ktrx.rbr_code is NOT NULL
19021        AND    ktrx.tcn_type = 'TRBK'
19022        --rkuttiya added for 12.1.1 Multi GAAP
19023        AND    ktrx.representation_type = 'PRIMARY'
19024        --
19025        AND    chr.id = p_chr_id
19026        AND    chr.orig_system_source_code = 'OKL_REBOOK';
19027 
19028        l_rbk_khr      VARCHAR2(1);
19029        --akrangan Bug# 5362977 end
19030 
19031   BEGIN
19032     x_return_status := OKL_API.G_RET_STS_SUCCESS;
19033     -- Call start_activity to create savepoint, check compatibility
19034     -- and initialize message list
19035     x_return_status := OKL_API.START_ACTIVITY (
19036                                l_api_name
19037                                ,p_init_msg_list
19038                                ,'_PVT'
19039                                ,x_return_status);
19040     -- Check if activity started successfully
19041     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19042        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19043     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19044        RAISE OKL_API.G_EXCEPTION_ERROR;
19045     END IF;
19046     -- We must have top line id to go further
19047     IF (p_top_line_id IS NUll OR
19048        p_top_line_id = OKL_API.G_MISS_NUM) AND
19049        (p_dnz_chr_id IS NUll OR
19050        p_dnz_chr_id = OKL_API.G_MISS_NUM) THEN
19051       OKL_API.set_message(p_app_name     => G_APP_NAME,
19052                           p_msg_name     => G_REQUIRED_VALUE,
19053                           p_token1       => G_COL_NAME_TOKEN,
19054                           p_token1_value => 'Top Line and Dnz_chr_id');
19055       RAISE OKL_API.G_EXCEPTION_ERROR;
19056     END IF;
19057 
19058     -- Get the model item
19059     OPEN c_model_item(p_top_line_id,
19060                       p_dnz_chr_id);
19061     IF c_model_item%NOTFOUND THEN
19062       OKL_API.set_message(p_app_name     => G_APP_NAME,
19063                           p_msg_name     => G_NO_MATCHING_RECORD,
19064                           p_token1       => G_COL_NAME_TOKEN,
19065                           p_token1_value => 'Item_Id');
19066       RAISE OKL_API.G_EXCEPTION_ERROR;
19067     END IF;
19068     FETCH c_model_item INTO ln_model_item;
19069     CLOSE c_model_item;
19070 
19071     -- we have to update the txl_itm_insts table only if the p_itiv_ib_tbl(i).id is given
19072     -- otherwise we have to create instance line and install base line and then create
19073     -- okl_txl_itm_insts record
19074     l_itiv_ib_tbl := p_itiv_ib_tbl;
19075     IF l_itiv_ib_tbl.COUNT > 0 THEN
19076        -- We have intialize the I, since there could be any index integer
19077        i := l_itiv_ib_tbl.FIRST;
19078        LOOP
19079          IF l_itiv_ib_tbl(i).id IS NULL OR
19080             l_itiv_ib_tbl(i).id = OKL_API.G_MISS_NUM THEN
19081 
19082             -- 4334903 Assign the line style ID directly
19083 /*
19084            -- Creation of the Instance Line Process
19085            -- Getting the Line style Info
19086            x_return_status := get_lse_id(p_lty_code => G_INST_LINE_LTY_CODE,
19087                                          x_lse_id   => l_clev_inst_rec.lse_id);
19088            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19089              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19090            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19091              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19092            END IF;
19093 */
19094             --akrangan Bug# 5362977 start
19095               -- Do not allow update of units if the contract has Re-lease assets
19096               l_chk_rel_ast := 'N';
19097               OPEN l_chk_rel_ast_csr(p_chr_id => p_dnz_chr_id);
19098               FETCH l_chk_rel_ast_csr INTO l_chk_rel_ast;
19099               CLOSE l_chk_rel_ast_csr;
19100 
19101               IF l_chk_rel_ast = 'Y' THEN
19102                 OKL_API.set_message(p_app_name     => G_APP_NAME,
19103                                     p_msg_name     => 'OKL_LA_REL_UNITS_NO_UPDATE');
19104                 RAISE OKL_API.G_EXCEPTION_ERROR;
19105               END IF;
19106               --akrangan Bug# 5362977 end
19107 
19108            l_clev_inst_rec.display_sequence  := 1;
19109            -- Required cle Line Information
19110            -- Since we have a local Record of the Instance line
19111            -- We can you the same
19112            l_clev_inst_rec.lse_id            := G_INST_LINE_LTY_ID;
19113            l_clev_inst_rec.chr_id            := null;
19114            l_clev_inst_rec.cle_id            := p_top_line_id;
19115            l_clev_inst_rec.dnz_chr_id        := p_dnz_chr_id;
19116            l_clev_inst_rec.exception_yn      := 'N';
19117            IF (l_itiv_ib_tbl(i).instance_number_ib IS NULL OR
19118              l_itiv_ib_tbl(i).instance_number_ib = OKL_API.G_MISS_CHAR)  THEN
19119              x_return_status := generate_instance_number_ib(x_instance_number_ib => l_itiv_ib_tbl(i).instance_number_ib);
19120              IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19121                OKL_API.set_message(p_app_name     => G_APP_NAME,
19122                                    p_msg_name     => G_GEN_INST_NUM_IB);
19123                EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19124              ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19125                OKL_API.set_message(p_app_name     => G_APP_NAME,
19126                                    p_msg_name     => G_GEN_INST_NUM_IB);
19127                EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19128              END IF;
19129              l_itiv_ib_tbl(i).instance_number_ib := p_asset_number||' '||l_itiv_ib_tbl(i).instance_number_ib;
19130            END IF;
19131            -- Creation of the Instance Line
19132            Create_instance_line(p_api_version   => p_api_version,
19133                                 p_init_msg_list => p_init_msg_list,
19134                                 x_return_status => x_return_status,
19135                                 x_msg_count     => x_msg_count,
19136                                 x_msg_data      => x_msg_data,
19137                                 p_clev_rec      => l_clev_inst_rec,
19138                                 p_klev_rec      => l_klev_inst_rec,
19139                                 p_itiv_rec      => l_itiv_ib_tbl(i),
19140                                 x_clev_rec      => l_clev_inst_rec_out,
19141                                 x_klev_rec      => l_klev_inst_rec_out,
19142                                 x_itiv_rec      => l_itiv_ib_tbl_out(i));
19143            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19144              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19145            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19146              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19147            END IF;
19148            -- 4414408 Assign the line style ID directly
19149 /*
19150            -- Creation of the ib Line Process
19151            -- Getting the Line style Info
19152            x_return_status := get_lse_id(p_lty_code => G_IB_LINE_LTY_CODE,
19153                                          x_lse_id   => l_clev_ib_rec.lse_id);
19154            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19155              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19156            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19157              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19158            END IF;
19159 */
19160            l_clev_ib_rec.lse_id            := G_IB_LINE_LTY_ID;
19161            l_clev_ib_rec.display_sequence  := 2;
19162            -- Required cle Line Information
19163            l_clev_ib_rec.chr_id            := null;
19164            l_clev_ib_rec.cle_id            := l_clev_inst_rec_out.id;
19165            l_clev_ib_rec.dnz_chr_id        := l_clev_inst_rec_out.dnz_chr_id;
19166            l_clev_ib_rec.exception_yn      := 'N';
19167            -- Required Item Information
19168            l_cimv_ib_rec.exception_yn      := 'N';
19169            l_cimv_ib_rec.object1_id1       := null;
19170            l_cimv_ib_rec.object1_id2       := null;
19171            -- Since the screen can give only party_site_id via l_itiv_ib_tbl(i).object_id1_new
19172            -- We have to use the below function
19173            lv_object_id1_new := l_itiv_ib_tbl(i).object_id1_new;
19174            x_return_status := get_party_site_id(p_object_id1_new => lv_object_id1_new,
19175                                                 x_object_id1_new => l_itiv_ib_tbl(i).object_id1_new,
19176                                                 x_object_id2_new => l_itiv_ib_tbl(i).object_id2_new);
19177            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19178              OKL_API.set_message(p_app_name     => G_APP_NAME,
19179                                 p_msg_name     => G_NO_MATCHING_RECORD,
19180                                 p_token1       => G_COL_NAME_TOKEN,
19181                                 p_token1_value => 'Party_site_id');
19182              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19183            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19184              OKL_API.set_message(p_app_name     => G_APP_NAME,
19185                                  p_msg_name     => G_NO_MATCHING_RECORD,
19186                                  p_token1       => G_COL_NAME_TOKEN,
19187                                  p_token1_value => 'Party_site_id');
19188              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19189            END IF;
19190 
19191            -- Check for uniqueness of Serial number
19192            x_return_status := is_duplicate_serial_number(p_serial_number => l_itiv_ib_tbl(i).serial_number,
19193                                                          p_item_id       => ln_model_item);
19194            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19195              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19196            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19197              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19198            END IF;
19199 
19200            -- Creation of the ib Line
19201            Create_instance_ib_line(p_api_version   => p_api_version,
19202                                    p_init_msg_list => p_init_msg_list,
19203                                    x_return_status => x_return_status,
19204                                    x_msg_count     => x_msg_count,
19205                                    x_msg_data      => x_msg_data,
19206                                    p_clev_rec      => l_clev_ib_rec,
19207                                    p_klev_rec      => l_klev_ib_rec,
19208                                    p_cimv_rec      => l_cimv_ib_rec,
19209                                    p_itiv_rec      => l_itiv_ib_tbl(i),
19210                                    x_clev_rec      => x_clev_ib_tbl(i),
19211                                    x_klev_rec      => l_klev_ib_rec_out,
19212                                    x_cimv_rec      => l_cimv_ib_rec_out,
19213                                    x_trxv_rec      => l_trxv_ib_rec_out,
19214                                    x_itiv_rec      => x_itiv_ib_tbl(i));
19215            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19216              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19217            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19218              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19219            END IF;
19220          ELSIF l_itiv_ib_tbl(i).id IS NOT NULL OR
19221                l_itiv_ib_tbl(i).id <> OKL_API.G_MISS_NUM THEN
19222 
19223            -- Check for uniqueness of Serial number
19224            x_return_status := is_duplicate_serial_number(p_serial_number => l_itiv_ib_tbl(i).serial_number,
19225                                                          p_item_id       => ln_model_item);
19226            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19227              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19228            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19229              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19230            END IF;
19231 
19232            -- We are here b'cause we have to update the okl_txl_itm_inst rec
19233            -- So we are calling the update api for the okl_txl_itm_insts rec
19234            l_itiv_ib_tbl(i).object_id2_new := '#';
19235            update_txl_itm_insts(p_api_version    => p_api_version,
19236                                 p_init_msg_list  => p_init_msg_list,
19237                                 x_return_status  => x_return_status,
19238                                 x_msg_count      => x_msg_count,
19239                                 x_msg_data       => x_msg_data,
19240                                 p_itiv_rec       => l_itiv_ib_tbl(i),
19241                                 x_itiv_rec       => x_itiv_ib_tbl(i));
19242            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19243              OKL_API.set_message(p_app_name     => G_APP_NAME,
19244                                  p_msg_name     => G_ITI_ID);
19245              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19246            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19247              OKL_API.set_message(p_app_name     => G_APP_NAME,
19248                                  p_msg_name     => G_ITI_ID);
19249              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19250            END IF;
19251          ELSE
19252            OKL_API.set_message(p_app_name => G_APP_NAME,
19253                                p_msg_name => G_LINE_RECORD);
19254            x_return_status := OKL_API.G_RET_STS_ERROR;
19255            EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19256          END IF;
19257          EXIT WHEN (i = l_itiv_ib_tbl.LAST);
19258          i := l_itiv_ib_tbl.NEXT(i);
19259        END LOOP;
19260        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19261          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19262        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19263          RAISE OKL_API.G_EXCEPTION_ERROR;
19264        END IF;
19265     ELSE
19266       OKL_API.set_message(p_app_name     => G_APP_NAME,
19267                           p_msg_name     => G_CNT_REC);
19268       RAISE OKL_API.G_EXCEPTION_ERROR;
19269     END IF;
19270     -- we should get the remaining inst line , so that we can update
19271     -- the fixed line , model line and also update the top line with latest OEC
19272     OPEN c_remain_inst_line(p_top_line_id,
19273                             p_dnz_chr_id);
19274     IF c_remain_inst_line%NOTFOUND THEN
19275       OKL_API.set_message(p_app_name     => G_APP_NAME,
19276                           p_msg_name     => G_DELETING_INSTS_LINE);
19277       RAISE OKL_API.G_EXCEPTION_ERROR;
19278     END IF;
19279     FETCH c_remain_inst_line INTO ln_remain_inst;
19280     CLOSE c_remain_inst_line;
19281     -- To get the Model Line
19282     -- Since we have update the model line
19283     OPEN c_model_line(p_top_line_id,
19284                       p_dnz_chr_id);
19285     IF c_model_line%NOTFOUND THEN
19286        OKL_API.set_message(p_app_name     => G_APP_NAME,
19287                            p_msg_name     => G_NO_MATCHING_RECORD,
19288                            p_token1       => G_COL_NAME_TOKEN,
19289                            p_token1_value => 'Model Asset Line record');
19290        RAISE OKL_API.G_EXCEPTION_ERROR;
19291     END IF;
19292     FETCH c_model_line INTO ln_model_line_id;
19293     CLOSE c_model_line;
19294     -- To get the Fixed Asset Line
19295     -- Since we have update the Fixed Asset Line
19296     OPEN c_fa_line(p_top_line_id,
19297                    p_dnz_chr_id);
19298     IF c_fa_line%NOTFOUND THEN
19299        OKL_API.set_message(p_app_name     => G_APP_NAME,
19300                            p_msg_name     => G_NO_MATCHING_RECORD,
19301                            p_token1       => G_COL_NAME_TOKEN,
19302                            p_token1_value => 'Fixed Asset Line record');
19303        RAISE OKL_API.G_EXCEPTION_ERROR;
19304     END IF;
19305     FETCH c_fa_line INTO ln_fa_line_id;
19306     CLOSE c_fa_line;
19307     --We have to build the Model Line Record for the calculations of the
19308     -- oec of the top line
19309     -- To Get the cle Model Line Record
19310     x_return_status := get_rec_clev(ln_model_line_id,
19311                                     r_clev_model_rec);
19312     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19313        OKL_API.set_message(p_app_name     => G_APP_NAME,
19314                            p_msg_name     => G_FETCHING_INFO,
19315                            p_token1       => G_REC_NAME_TOKEN,
19316                            p_token1_value => 'OKC_K_LINES_V Record');
19317        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19318     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19319        OKL_API.set_message(p_app_name     => G_APP_NAME,
19320                            p_msg_name     => G_FETCHING_INFO,
19321                            p_token1       => G_REC_NAME_TOKEN,
19322                            p_token1_value => 'OKC_K_LINES_V Record');
19323        RAISE OKL_API.G_EXCEPTION_ERROR;
19324     END IF;
19325     -- To Get the kle Model Line Record
19326     x_return_status := get_rec_klev(ln_model_line_id,
19327                                     r_klev_model_rec);
19328     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19329        OKL_API.set_message(p_app_name     => G_APP_NAME,
19330                            p_msg_name     => G_FETCHING_INFO,
19331                            p_token1       => G_REC_NAME_TOKEN,
19332                            p_token1_value => 'OKL_K_LINES_V Record');
19333        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19334     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19335        OKL_API.set_message(p_app_name     => G_APP_NAME,
19336                            p_msg_name     => G_FETCHING_INFO,
19337                            p_token1       => G_REC_NAME_TOKEN,
19338                            p_token1_value => 'OKL_K_LINES_V Record');
19339        RAISE OKL_API.G_EXCEPTION_ERROR;
19340     END IF;
19341     IF r_klev_model_rec.id <> r_clev_model_rec.id THEN
19342        OKL_API.set_message(p_app_name     => G_APP_NAME,
19343                            p_msg_name     => G_LINE_RECORD);
19344        RAISE OKL_API.G_EXCEPTION_ERROR;
19345     END IF;
19346     -- To Get the cimv Model Line Record
19347     x_return_status := get_rec_cimv(r_clev_model_rec.id,
19348                                     r_clev_model_rec.dnz_chr_id,
19349                                     r_cimv_model_rec);
19350     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19351        OKL_API.set_message(p_app_name     => G_APP_NAME,
19352                            p_msg_name     => G_FETCHING_INFO,
19353                            p_token1       => G_REC_NAME_TOKEN,
19354                            p_token1_value => 'OKC_K_ITEMS_V Record');
19355        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19356     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19357        OKL_API.set_message(p_app_name     => G_APP_NAME,
19358                            p_msg_name     => G_FETCHING_INFO,
19359                            p_token1       => G_REC_NAME_TOKEN,
19360                            p_token1_value => 'OKC_K_ITEMS_V Record');
19361        RAISE OKL_API.G_EXCEPTION_ERROR;
19362     END IF;
19363     --Build Model cimv item rec
19364     r_cimv_model_rec.number_of_items  := ln_remain_inst;
19365     -- Updating of the Model Line and Item Record
19366     update_model_line(p_api_version   => p_api_version,
19367                       p_init_msg_list => p_init_msg_list,
19368                       x_return_status => x_return_status,
19369                       x_msg_count     => x_msg_count,
19370                       x_msg_data      => x_msg_data,
19371                       P_new_yn        => P_new_yn,
19372                       p_asset_number  => p_asset_number,
19373                       p_clev_rec      => r_clev_model_rec,
19374                       p_klev_rec      => r_klev_model_rec,
19375                       p_cimv_rec      => r_cimv_model_rec,
19376                       x_clev_rec      => l_clev_model_rec_out,
19377                       x_klev_rec      => l_klev_model_rec_out,
19378                       x_cimv_rec      => l_cimv_model_rec_out);
19379     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19380       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19381     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19382       RAISE OKL_API.G_EXCEPTION_ERROR;
19383     END IF;
19384     -- We need to check if there are add on line and then we update the Addon number of items also
19385     -- Since there can be multiple Addo lines
19386     FOR r_addon_line_id IN c_addon_line_id(p_cle_id => p_top_line_id,
19387                                            p_chr_id => p_dnz_chr_id) LOOP
19388       --We have to build the addon Line Record for the calculations of the
19389       -- oec of the top line
19390       -- To Get the cle addon Line Record
19391       x_return_status := get_rec_clev(r_addon_line_id.id,
19392                                       r_clev_addon_rec);
19393       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19394          OKL_API.set_message(p_app_name     => G_APP_NAME,
19395                              p_msg_name     => G_FETCHING_INFO,
19396                              p_token1       => G_REC_NAME_TOKEN,
19397                              p_token1_value => 'OKC_K_LINES_V Record');
19398          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19399       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19400          OKL_API.set_message(p_app_name     => G_APP_NAME,
19401                              p_msg_name     => G_FETCHING_INFO,
19402                              p_token1       => G_REC_NAME_TOKEN,
19403                              p_token1_value => 'OKC_K_LINES_V Record');
19404          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19405       END IF;
19406       -- To Get the kle Model Line Record
19407       x_return_status := get_rec_klev(r_addon_line_id.id,
19408                                       r_klev_addon_rec);
19409       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19410          OKL_API.set_message(p_app_name     => G_APP_NAME,
19411                              p_msg_name     => G_FETCHING_INFO,
19412                              p_token1       => G_REC_NAME_TOKEN,
19413                              p_token1_value => 'OKL_K_LINES_V Record');
19414          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19415       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19416          OKL_API.set_message(p_app_name     => G_APP_NAME,
19417                              p_msg_name     => G_FETCHING_INFO,
19418                              p_token1       => G_REC_NAME_TOKEN,
19419                              p_token1_value => 'OKL_K_LINES_V Record');
19420          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19421       END IF;
19422       IF r_klev_addon_rec.id <> r_clev_addon_rec.id THEN
19423          OKL_API.set_message(p_app_name     => G_APP_NAME,
19424                              p_msg_name     => G_LINE_RECORD);
19425          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19426       END IF;
19427       -- To Get the cimv Model Line Record
19428       x_return_status := get_rec_cimv(r_clev_addon_rec.id,
19429                                       r_clev_addon_rec.dnz_chr_id,
19430                                       r_cimv_addon_rec);
19431       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19432          OKL_API.set_message(p_app_name     => G_APP_NAME,
19433                              p_msg_name     => G_FETCHING_INFO,
19434                              p_token1       => G_REC_NAME_TOKEN,
19435                              p_token1_value => 'OKC_K_ITEMS_V Record');
19436          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19437       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19438          OKL_API.set_message(p_app_name     => G_APP_NAME,
19439                              p_msg_name     => G_FETCHING_INFO,
19440                              p_token1       => G_REC_NAME_TOKEN,
19441                              p_token1_value => 'OKC_K_ITEMS_V Record');
19442          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19443       END IF;
19444       --Build addon cimv item rec
19445       r_cimv_addon_rec.number_of_items  := ln_remain_inst;
19446       -- Updating of the addon Line and Item Record
19447       update_addon_line_rec(p_api_version   => p_api_version,
19448                             p_init_msg_list => p_init_msg_list,
19449                             x_return_status => x_return_status,
19450                             x_msg_count     => x_msg_count,
19451                             x_msg_data      => x_msg_data,
19452                             P_new_yn        => P_new_yn,
19453                             p_asset_number  => p_asset_number,
19454                             p_clev_rec      => r_clev_addon_rec,
19455                             p_klev_rec      => r_klev_addon_rec,
19456                             p_cimv_rec      => r_cimv_addon_rec,
19457                             x_clev_rec      => rx_clev_addon_rec,
19458                             x_klev_rec      => rx_klev_addon_rec,
19459                             x_cimv_rec      => rx_cimv_addon_rec);
19460       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19461          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19462       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19463          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19464       END IF;
19465     END LOOP;
19466     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19467        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19468     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19469        RAISE OKL_API.G_EXCEPTION_ERROR;
19470     END IF;
19471     -- Since we need to populate the OEC into fixed asset line also
19472     -- So we need to calcualte the same here it self
19473     oec_calc_upd_fin_rec(p_api_version        => p_api_version,
19474                          p_init_msg_list      => p_init_msg_list,
19475                          x_return_status      => x_return_status,
19476                          x_msg_count          => x_msg_count,
19477                          x_msg_data           => x_msg_data,
19478                          P_new_yn             => P_new_yn,
19479                          p_asset_number       => p_asset_number,
19480 			 -- 4414408
19481                          p_top_line_id        => p_top_line_id,
19482                          p_dnz_chr_id         => l_clev_model_rec_out.dnz_chr_id,
19483                          x_fin_clev_rec       => lx_clev_fin_rec,
19484                          x_fin_klev_rec       => lx_klev_fin_rec,
19485                          x_oec                => ln_klev_fin_oec,
19486                          p_validate_fin_line  => OKL_API.G_TRUE);
19487     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19488        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19489     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19490        RAISE OKL_API.G_EXCEPTION_ERROR;
19491     END IF;
19492     -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
19493     cap_amt_calc_upd_fin_rec(p_api_version        => p_api_version,
19494                              p_init_msg_list      => p_init_msg_list,
19495                              x_return_status      => x_return_status,
19496                              x_msg_count          => x_msg_count,
19497                              x_msg_data           => x_msg_data,
19498                              P_new_yn             => P_new_yn,
19499                              p_asset_number       => p_asset_number,
19500 			     -- 4414408
19501                              p_top_line_id        => p_top_line_id,
19502                              p_dnz_chr_id         => l_clev_model_rec_out.dnz_chr_id,
19503                              x_fin_clev_rec       => lx_clev_fin_rec,
19504                              x_fin_klev_rec       => lx_klev_fin_rec,
19505                              x_cap_amt            => ln_klev_fin_cap,
19506                              p_validate_fin_line  => OKL_API.G_TRUE);
19507     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19508       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19509     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19510       RAISE OKL_API.G_EXCEPTION_ERROR;
19511     END IF;
19512     -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
19513     res_value_calc_upd_fin_rec(p_api_version        => p_api_version,
19514                                p_init_msg_list      => p_init_msg_list,
19515                                x_return_status      => x_return_status,
19516                                x_msg_count          => x_msg_count,
19517                                x_msg_data           => x_msg_data,
19518                                P_new_yn             => P_new_yn,
19519                                p_asset_number       => p_asset_number,
19520 			       -- 4414408
19521                                p_top_line_id        => p_top_line_id,
19522                                p_dnz_chr_id         => l_clev_model_rec_out.dnz_chr_id,
19523                                x_fin_clev_rec       => lx_clev_fin_rec,
19524                                x_fin_klev_rec       => lx_klev_fin_rec,
19525                                x_res_value          => ln_klev_fin_res,
19526                                p_validate_fin_line  => OKL_API.G_TRUE);
19527     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19528       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19529     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19530       RAISE OKL_API.G_EXCEPTION_ERROR;
19531     END IF;
19532     -- Updating of the Fixed Asset Line Process
19533     -- To Get the cle fa Line Record
19534     x_return_status := get_rec_clev(ln_fa_line_id,
19535                                     r_clev_fa_rec);
19536     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19537        OKL_API.set_message(p_app_name     => G_APP_NAME,
19538                            p_msg_name     => G_FETCHING_INFO,
19539                            p_token1       => G_REC_NAME_TOKEN,
19540                            p_token1_value => 'OKC_K_LINES_V Record');
19541        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19542     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19543        OKL_API.set_message(p_app_name     => G_APP_NAME,
19544                            p_msg_name     => G_FETCHING_INFO,
19545                            p_token1       => G_REC_NAME_TOKEN,
19546                            p_token1_value => 'OKC_K_LINES_V Record');
19547        RAISE OKL_API.G_EXCEPTION_ERROR;
19548     END IF;
19549     -- To Get the kle fa Line Record
19550     x_return_status := get_rec_klev(ln_fa_line_id,
19551                                     r_klev_fa_rec);
19552     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19553        OKL_API.set_message(p_app_name     => G_APP_NAME,
19554                            p_msg_name     => G_FETCHING_INFO,
19555                            p_token1       => G_REC_NAME_TOKEN,
19556                            p_token1_value => 'OKL_K_LINES_V Record');
19557        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19558     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19559        OKL_API.set_message(p_app_name     => G_APP_NAME,
19560                            p_msg_name     => G_FETCHING_INFO,
19561                            p_token1       => G_REC_NAME_TOKEN,
19562                            p_token1_value => 'OKL_K_LINES_V Record');
19563        RAISE OKL_API.G_EXCEPTION_ERROR;
19564     END IF;
19565     IF r_klev_fa_rec.id <> r_clev_fa_rec.id THEN
19566        OKL_API.set_message(p_app_name     => G_APP_NAME,
19567                            p_msg_name     => G_LINE_RECORD);
19568        RAISE OKL_API.G_EXCEPTION_ERROR;
19569     END IF;
19570     -- To Get the cimv fa Line Record
19571     x_return_status := get_rec_cimv(r_clev_fa_rec.id,
19572                                     r_clev_fa_rec.dnz_chr_id,
19573                                     r_cimv_fa_rec);
19574     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19575        OKL_API.set_message(p_app_name     => G_APP_NAME,
19576                            p_msg_name     => G_FETCHING_INFO,
19577                            p_token1       => G_REC_NAME_TOKEN,
19578                            p_token1_value => 'OKC_K_ITEMS_V Record');
19579        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19580     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19581        OKL_API.set_message(p_app_name     => G_APP_NAME,
19582                            p_msg_name     => G_FETCHING_INFO,
19583                            p_token1       => G_REC_NAME_TOKEN,
19584                            p_token1_value => 'OKC_K_ITEMS_V Record');
19585        RAISE OKL_API.G_EXCEPTION_ERROR;
19586     END IF;
19587     --Build cimv fa item rec
19588     r_cimv_fa_rec.number_of_items  := ln_remain_inst;
19589     --Build talv fa item rec
19590     x_return_status := get_rec_txlv(r_clev_fa_rec.id,
19591                                     r_talv_fa_rec);
19592     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19593        OKL_API.set_message(p_app_name     => G_APP_NAME,
19594                            p_msg_name     => G_FETCHING_INFO,
19595                            p_token1       => G_REC_NAME_TOKEN,
19596                            p_token1_value => 'OKL_TXL_ASSETS_V Record');
19597        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19598     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19599        OKL_API.set_message(p_app_name     => G_APP_NAME,
19600                            p_msg_name     => G_FETCHING_INFO,
19601                            p_token1       => G_REC_NAME_TOKEN,
19602                            p_token1_value => 'OKL_TXL_ASSETS_V Record');
19603        RAISE OKL_API.G_EXCEPTION_ERROR;
19604     END IF;
19605     --Build talv fa item rec
19606     r_talv_fa_rec.current_units  := ln_remain_inst;
19607         --akrangan Bug# 5362977 start
19608        -- For online rebook, update depreciation_cost and
19609        -- original_cost to line capital amount instead of line oec
19610        --check for rebook contract
19611        l_rbk_khr := '?';
19612        OPEN l_chk_rbk_csr (p_chr_id => r_clev_fa_rec.dnz_chr_id);
19613        FETCH l_chk_rbk_csr INTO l_rbk_khr;
19614        CLOSE l_chk_rbk_csr;
19615 
19616        If l_rbk_khr = '!' Then
19617          r_talv_fa_rec.depreciation_cost := NVL(lx_klev_fin_rec.capital_amount,ln_klev_fin_cap);
19618          r_talv_fa_rec.original_cost := NVL(lx_klev_fin_rec.capital_amount,ln_klev_fin_cap);
19619        else
19620 
19621     r_talv_fa_rec.depreciation_cost := lx_klev_fin_rec.oec;
19622            r_talv_fa_rec.original_cost := lx_klev_fin_rec.oec;
19623        end if;
19624        --akrangan Bug# 5362977 end
19625 
19626     r_clev_fa_rec.item_description := r_talv_fa_rec.description;
19627     -- Updating of the Fixed Asset Line and item/Txl Asset Info
19628     update_fixed_asset_line(p_api_version   => p_api_version,
19629                             p_init_msg_list => p_init_msg_list,
19630                             x_return_status => x_return_status,
19631                             x_msg_count     => x_msg_count,
19632                             x_msg_data      => x_msg_data,
19633                             P_new_yn        => P_new_yn,
19634                             p_asset_number  => p_asset_number,
19635                             p_clev_rec      => r_clev_fa_rec,
19636                             p_klev_rec      => r_klev_fa_rec,
19637                             p_cimv_rec      => r_cimv_fa_rec,
19638                             p_talv_rec      => r_talv_fa_rec,
19639                             x_clev_rec      => l_clev_fa_rec_out,
19640                             x_klev_rec      => l_klev_fa_rec_out,
19641                             x_cimv_rec      => lx_cimv_fa_rec,
19642                             x_talv_rec      => lx_talv_fa_rec);
19643     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19644       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19645     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19646       RAISE OKL_API.G_EXCEPTION_ERROR;
19647     END IF;
19648           --akrangan Bug# 5362977 start
19649        -- Update Tax Book details - okl_txd_assets_b
19650        update_asset_line_details(p_api_version   => p_api_version,
19651                                  p_init_msg_list => p_init_msg_list,
19652                                  x_return_status => x_return_status,
19653                                  x_msg_count     => x_msg_count,
19654                                  x_msg_data      => x_msg_data,
19655                                  p_asset_number  => p_asset_number,
19656                                  p_original_cost => lx_talv_fa_rec.original_cost,
19657                                  p_tal_id        => lx_talv_fa_rec.ID);
19658        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19659          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19660        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19661          RAISE OKL_API.G_EXCEPTION_ERROR;
19662        END IF;
19663        --akrangan Bug# 5362977 end
19664 
19665     -- We need to change the status of the header whenever there is updating happening
19666     -- after the contract status is approved
19667     IF (l_clev_fa_rec_out.dnz_chr_id is NOT NULL) AND
19668        (l_clev_fa_rec_out.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
19669       --cascade edit status on to lines
19670       okl_contract_status_pub.cascade_lease_status_edit
19671                (p_api_version     => p_api_version,
19672                 p_init_msg_list   => p_init_msg_list,
19673                 x_return_status   => x_return_status,
19674                 x_msg_count       => x_msg_count,
19675                 x_msg_data        => x_msg_data,
19676                 p_chr_id          => l_clev_fa_rec_out.dnz_chr_id);
19677       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19678         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19679       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19680         RAISE OKL_API.G_EXCEPTION_ERROR;
19681       END IF;
19682     END IF;
19683     OKL_API.END_ACTIVITY (x_msg_count,
19684                           x_msg_data );
19685   EXCEPTION
19686     WHEN OKL_API.G_EXCEPTION_ERROR THEN
19687     IF c_remain_inst_line%ISOPEN THEN
19688       CLOSE c_remain_inst_line;
19689     END IF;
19690     IF c_model_line%ISOPEN THEN
19691       CLOSE c_model_line;
19692     END IF;
19693     IF c_fa_line%ISOPEN THEN
19694       CLOSE c_fa_line;
19695     END IF;
19696     IF c_addon_line_id%ISOPEN THEN
19697       CLOSE c_addon_line_id;
19698     END IF;
19699     IF c_model_item%ISOPEN THEN
19700       CLOSE c_model_item;
19701     END IF;
19702     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
19703                                l_api_name,
19704                                G_PKG_NAME,
19705                                'OKL_API.G_RET_STS_ERROR',
19706                                x_msg_count,
19707                                x_msg_data,
19708                                '_PVT');
19709     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
19710     IF c_remain_inst_line%ISOPEN THEN
19711       CLOSE c_remain_inst_line;
19712     END IF;
19713     IF c_model_line%ISOPEN THEN
19714       CLOSE c_model_line;
19715     END IF;
19716     IF c_fa_line%ISOPEN THEN
19717       CLOSE c_fa_line;
19718     END IF;
19719     IF c_addon_line_id%ISOPEN THEN
19720       CLOSE c_addon_line_id;
19721     END IF;
19722     IF c_model_item%ISOPEN THEN
19723       CLOSE c_model_item;
19724     END IF;
19725     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
19726                               l_api_name,
19727                               G_PKG_NAME,
19728                               'OKL_API.G_RET_STS_UNEXP_ERROR',
19729                               x_msg_count,
19730                               x_msg_data,
19731                               '_PVT');
19732     WHEN OTHERS THEN
19733     IF c_remain_inst_line%ISOPEN THEN
19734       CLOSE c_remain_inst_line;
19735     END IF;
19736     IF c_model_line%ISOPEN THEN
19737       CLOSE c_model_line;
19738     END IF;
19739     IF c_fa_line%ISOPEN THEN
19740       CLOSE c_fa_line;
19741     END IF;
19742     IF c_addon_line_id%ISOPEN THEN
19743       CLOSE c_addon_line_id;
19744     END IF;
19745     IF c_model_item%ISOPEN THEN
19746       CLOSE c_model_item;
19747     END IF;
19748     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
19749                               l_api_name,
19750                               G_PKG_NAME,
19751                               'OTHERS',
19752                               x_msg_count,
19753                               x_msg_data,
19754                               '_PVT');
19755   END update_ints_ib_line;
19756 -------------------------------------------------------------------------------------------------------
19757 ----------------- Main Process for Deletion of instance and Install base line  ------------------------
19758 -------------------------------------------------------------------------------------------------------
19759   PROCEDURE delete_ints_ib_line(
19760             p_api_version         IN  NUMBER,
19761             p_init_msg_list       IN  VARCHAR2 DEFAULT OKC_API.G_FALSE,
19762             x_return_status       OUT NOCOPY VARCHAR2,
19763             x_msg_count           OUT NOCOPY NUMBER,
19764             x_msg_data            OUT NOCOPY VARCHAR2,
19765             P_new_yn              IN  OKL_TXL_ASSETS_V.USED_ASSET_YN%TYPE,
19766             p_asset_number        IN  OKL_TXL_ASSETS_V.ASSET_NUMBER%TYPE,
19767             p_clev_ib_tbl         IN  clev_tbl_type,
19768             x_clev_fin_rec        OUT NOCOPY clev_rec_type,
19769             x_klev_fin_rec        OUT NOCOPY klev_rec_type,
19770             x_cimv_model_rec      OUT NOCOPY cimv_rec_type,
19771             x_cimv_fa_rec         OUT NOCOPY cimv_rec_type,
19772             x_talv_fa_rec         OUT NOCOPY talv_rec_type) IS
19773     l_api_name          CONSTANT VARCHAR2(30) := 'DELETE_INTS_IB_LINE';
19774     l_clev_ib_tbl                clev_tbl_type := p_clev_ib_tbl;
19775     l_clev_ib_rec                clev_rec_type;
19776     l_clev_inst_rec              clev_rec_type;
19777     ln_remain_inst               NUMBER := 0;
19778     ln_model_line_id             OKC_K_LINES_V.ID%TYPE := OKL_API.G_MISS_NUM;
19779     ln_fa_line_id                OKC_K_LINES_V.ID%TYPE := OKL_API.G_MISS_NUM;
19780     r_clev_model_rec             clev_rec_type;
19781     r_klev_model_rec             klev_rec_type;
19782     r_cimv_model_rec             cimv_rec_type;
19783     r_clev_fa_rec                clev_rec_type;
19784     r_klev_fa_rec                klev_rec_type;
19785     r_cimv_fa_rec                cimv_rec_type;
19786     r_talv_fa_rec                talv_rec_type;
19787     l_clev_model_rec_out         clev_rec_type;
19788     l_klev_model_rec_out         klev_rec_type;
19789     l_clev_fa_rec_out            clev_rec_type;
19790     l_klev_fa_rec_out            klev_rec_type;
19791     ln_klev_fin_oec              OKL_K_LINES_V.OEC%TYPE := 0;
19792     ln_klev_fin_res              OKL_K_LINES_V.RESIDUAL_VALUE%TYPE := 0;
19793     ln_klev_fin_cap              OKL_K_LINES_V.CAPITAL_AMOUNT%TYPE := 0;
19794     r_clev_addon_rec             clev_rec_type;
19795     r_klev_addon_rec             klev_rec_type;
19796     r_cimv_addon_rec             cimv_rec_type;
19797     rx_clev_addon_rec            clev_rec_type;
19798     rx_klev_addon_rec            klev_rec_type;
19799     rx_cimv_addon_rec            cimv_rec_type;
19800     j                            NUMBER := 0;
19801     lb_last_record_updated       BOOLEAN := FALSE;
19802 
19803     -- rravikir added
19804     l_itiv_rec                   itiv_rec_type;
19805     lx_itiv_rec                  itiv_rec_type;
19806     -- end
19807 
19808     CURSOR c_remain_inst_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
19809                               p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
19810     SELECT count(cle.id)
19811     FROM okc_line_styles_b lse2,
19812          okc_line_styles_b lse1,
19813          okc_k_lines_v cle
19814     WHERE cle.cle_id = p_cle_id
19815     AND cle.dnz_chr_id = p_chr_id
19816     AND cle.lse_id = lse1.id
19817     AND lse1.lty_code = G_INST_LINE_LTY_CODE
19818     AND lse1.lse_parent_id = lse2.id
19819     AND lse2.lty_code = G_FIN_LINE_LTY_CODE;
19820 
19821     CURSOR c_model_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
19822                         p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
19823     SELECT cle.id
19824     FROM okc_subclass_top_line stl,
19825          okc_line_styles_b lse2,
19826          okc_line_styles_b lse1,
19827          okc_k_lines_v cle
19828     WHERE cle.cle_id = p_cle_id
19829     AND cle.dnz_chr_id = p_chr_id
19830     AND cle.lse_id = lse1.id
19831     AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
19832     AND lse1.lse_parent_id = lse2.id
19833     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
19834     AND lse2.id = stl.lse_id
19835     AND stl.scs_code = 'LEASE';
19836 
19837     CURSOR c_fa_line(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
19838                      p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
19839     SELECT cle.id
19840     FROM okc_subclass_top_line stl,
19841          okc_line_styles_b lse2,
19842          okc_line_styles_b lse1,
19843          okc_k_lines_v cle
19844     WHERE cle.cle_id = p_cle_id
19845     AND cle.dnz_chr_id = p_chr_id
19846     AND cle.lse_id = lse1.id
19847     AND lse1.lty_code = G_FA_LINE_LTY_CODE
19848     AND lse1.lse_parent_id = lse2.id
19849     AND lse2.lty_code = G_FIN_LINE_LTY_CODE
19850     AND lse2.id = stl.lse_id
19851     AND stl.scs_code = 'LEASE';
19852 
19853     CURSOR c_addon_line_id(p_cle_id OKC_K_LINES_V.CLE_ID%TYPE,
19854                            p_chr_id OKC_K_LINES_V.DNZ_CHR_ID%TYPE) IS
19855     SELECT cle.id
19856     FROM okc_subclass_top_line stl,
19857          okc_line_styles_b lse3,
19858          okc_line_styles_b lse2,
19859          okc_line_styles_b lse1,
19860          okc_k_lines_b cle
19861     WHERE cle.dnz_chr_id = p_chr_id
19862     AND cle.lse_id = lse1.id
19863     AND lse1.lty_code = G_ADDON_LINE_LTY_CODE
19864     AND lse1.lse_parent_id = lse2.id
19865     AND lse2.lty_code = G_MODEL_LINE_LTY_CODE
19866     AND lse2.lse_parent_id = lse3.id
19867     AND lse3.lty_code = G_FIN_LINE_LTY_CODE
19868     AND lse3.id = stl.lse_id
19869     AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE)
19870     AND cle.cle_id in (SELECT cle.id
19871                        FROM okc_subclass_top_line stl,
19872                             okc_line_styles_b lse2,
19873                             okc_line_styles_b lse1,
19874                             okc_k_lines_b cle
19875                        WHERE cle.cle_id = p_cle_id
19876                        AND cle.dnz_chr_id = p_chr_id
19877                        AND cle.lse_id = lse1.id
19878                        AND lse1.lty_code = G_MODEL_LINE_LTY_CODE
19879                        AND lse1.lse_parent_id = lse2.id
19880                        AND lse2.lty_code = G_FIN_LINE_LTY_CODE
19881                        AND lse2.id = stl.lse_id
19882                        AND stl.scs_code in (G_LEASE_SCS_CODE,G_LOAN_SCS_CODE));
19883 		            --Bug# 5362977 start
19884        --cursor to check if contract has re-lease assets
19885        CURSOR l_chk_rel_ast_csr (p_chr_id IN NUMBER) IS
19886        SELECT 'Y'
19887        FROM   OKC_RULES_B rul
19888        WHERE  rul.dnz_chr_id = p_chr_id
19889        AND    rul.rule_information_category = 'LARLES'
19890        AND    NVL(rule_information1,'N') = 'Y';
19891 
19892        l_chk_rel_ast VARCHAR2(1);
19893 
19894        --cursor to check if the contract is undergoing on-line rebook
19895        cursor l_chk_rbk_csr(p_chr_id IN NUMBER) is
19896        SELECT '!'
19897        FROM   okc_k_headers_b chr,
19898               okl_trx_contracts ktrx
19899        WHERE  ktrx.khr_id_new = chr.id
19900        AND    ktrx.tsu_code = 'ENTERED'
19901        AND    ktrx.rbr_code is NOT NULL
19902        AND    ktrx.tcn_type = 'TRBK'
19903        --rkuttiya added fopr 12.1.1 Multi GAAP
19904        AND    ktrx.representation_type = 'PRIMARY'
19905        --
19906        AND    chr.id = p_chr_id
19907        AND    chr.orig_system_source_code = 'OKL_REBOOK';
19908 
19909        l_rbk_khr      VARCHAR2(1);
19910        --Bug# 5362977 end
19911 
19912 
19913   BEGIN
19914     x_return_status := OKL_API.G_RET_STS_SUCCESS;
19915     -- Call start_activity to create savepoint, check compatibility
19916     -- and initialize message list
19917     x_return_status := OKL_API.START_ACTIVITY (
19918                                l_api_name
19919                                ,p_init_msg_list
19920                                ,'_PVT'
19921                                ,x_return_status);
19922     -- Check if activity started successfully
19923     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19924        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19925     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19926        RAISE OKL_API.G_EXCEPTION_ERROR;
19927     END IF;
19928     IF l_clev_ib_tbl.COUNT > 0 THEN
19929        -- We have intialize the J , since there could be any index integer
19930        j := l_clev_ib_tbl.FIRST;
19931        LOOP
19932          IF l_clev_ib_tbl(j).id IS NUll OR
19933             l_clev_ib_tbl(j).id = OKL_API.G_MISS_NUM THEN
19934            OKL_API.set_message(p_app_name     => G_APP_NAME,
19935                                p_msg_name     => G_REQUIRED_VALUE,
19936                                p_token1       => G_COL_NAME_TOKEN,
19937                                p_token1_value => 'IB OKC_K_LINES_B.ID');
19938             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19939          END IF;
19940          x_return_status := get_rec_clev(l_clev_ib_tbl(j).id,
19941                                          l_clev_ib_rec);
19942          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19943            OKL_API.set_message(p_app_name     => G_APP_NAME,
19944                                p_msg_name     => G_FETCHING_INFO,
19945                                p_token1       => G_REC_NAME_TOKEN,
19946                                p_token1_value => 'OKC_K_LINES_V Record');
19947             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19948          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19949            OKL_API.set_message(p_app_name     => G_APP_NAME,
19950                                p_msg_name     => G_FETCHING_INFO,
19951                                p_token1       => G_REC_NAME_TOKEN,
19952                                p_token1_value => 'OKC_K_LINES_V Record');
19953             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19954          END IF;
19955          x_return_status := get_rec_clev(l_clev_ib_rec.cle_id,
19956                                          l_clev_inst_rec);
19957          IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19958            OKL_API.set_message(p_app_name     => G_APP_NAME,
19959                                p_msg_name     => G_FETCHING_INFO,
19960                                p_token1       => G_REC_NAME_TOKEN,
19961                                p_token1_value => 'OKC_K_LINES_V Record');
19962             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
19963          ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19964            OKL_API.set_message(p_app_name     => G_APP_NAME,
19965                                p_msg_name     => G_FETCHING_INFO,
19966                                p_token1       => G_REC_NAME_TOKEN,
19967                                p_token1_value => 'OKC_K_LINES_V Record');
19968             EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19969          END IF;
19970 
19971          -- we should get the remaining inst line , so that we can update
19972          -- the fixed line , model line and also update the top line with latest OEC
19973          OPEN c_remain_inst_line(l_clev_inst_rec.cle_id,
19974                                  l_clev_inst_rec.dnz_chr_id);
19975          IF c_remain_inst_line%NOTFOUND THEN
19976            OKL_API.set_message(p_app_name     => G_APP_NAME,
19977                                p_msg_name     => G_DELETING_INSTS_LINE);
19978            x_return_status := OKL_API.G_RET_STS_ERROR;
19979            EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
19980          END IF;
19981          FETCH c_remain_inst_line INTO ln_remain_inst;
19982         CLOSE c_remain_inst_line;
19983 
19984         -- Last record of the OKL_TXL_ITM_INSTS should not be deleted. It
19985         -- has to update the MFG_FLAG to 'N' and nullify the serial number.
19986         IF ln_remain_inst < 2 THEN
19987           x_return_status := get_rec_itiv(l_clev_ib_rec.id,
19988                                           l_itiv_rec);
19989           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
19990              OKL_API.set_message(p_app_name     => G_APP_NAME,
19991                                  p_msg_name     => G_FETCHING_INFO,
19992                                  p_token1       => G_REC_NAME_TOKEN,
19993                                  p_token1_value => 'OKC_K_LINES_V Record');
19994              RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
19995           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
19996              OKL_API.set_message(p_app_name     => G_APP_NAME,
19997                                  p_msg_name     => G_FETCHING_INFO,
19998                                  p_token1       => G_REC_NAME_TOKEN,
19999                                  p_token1_value => 'OKC_K_LINES_V Record');
20000              RAISE OKL_API.G_EXCEPTION_ERROR;
20001           END IF;
20002 
20003           l_itiv_rec.mfg_serial_number_yn := 'N';
20004           l_itiv_rec.serial_number        := null;
20005 
20006           update_txl_itm_insts(p_api_version    => p_api_version,
20007                                p_init_msg_list  => p_init_msg_list,
20008                                x_return_status  => x_return_status,
20009                                x_msg_count      => x_msg_count,
20010                                x_msg_data       => x_msg_data,
20011                                p_itiv_rec       => l_itiv_rec,
20012                                x_itiv_rec       => lx_itiv_rec);
20013           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20014             OKL_API.set_message(p_app_name     => G_APP_NAME,
20015                                 p_msg_name     => G_ITI_ID);
20016             RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20017           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20018             OKL_API.set_message(p_app_name     => G_APP_NAME,
20019                                 p_msg_name     => G_ITI_ID);
20020             RAISE OKL_API.G_EXCEPTION_ERROR;
20021           END IF;
20022           lb_last_record_updated := TRUE;
20023 /*          OKL_API.set_message(p_app_name     => G_APP_NAME,
20024                               p_msg_name     => G_MIN_INST_LINE);
20025            x_return_status := OKL_API.G_RET_STS_ERROR;
20026            EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);*/
20027         END IF;
20028 
20029         IF (NOT lb_last_record_updated) THEN
20030           validate_sts_code(p_clev_rec       => l_clev_inst_rec,
20031                             x_return_status  => x_return_status);
20032           IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20033              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20034           ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20035              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20036           END IF;
20037 	     --Bug# 5362977 start
20038              -- Do not allow update of units if the contract has Re-lease assets
20039              l_chk_rel_ast := 'N';
20040              OPEN l_chk_rel_ast_csr(p_chr_id => l_clev_inst_rec.dnz_chr_id);
20041              FETCH l_chk_rel_ast_csr INTO l_chk_rel_ast;
20042              CLOSE l_chk_rel_ast_csr;
20043 
20044              IF l_chk_rel_ast = 'Y' THEN
20045                OKL_API.set_message(p_app_name     => G_APP_NAME,
20046                                    p_msg_name     => 'OKL_LA_REL_UNITS_NO_UPDATE');
20047                RAISE OKL_API.G_EXCEPTION_ERROR;
20048              END IF;
20049              --Bug# 5362977 end
20050 
20051           OKL_CONTRACT_PUB.delete_contract_line(
20052                             p_api_version   => p_api_version,
20053                             p_init_msg_list => p_init_msg_list,
20054                             x_return_status => x_return_status,
20055                             x_msg_count     => x_msg_count,
20056                             x_msg_data      => x_msg_data,
20057                             p_line_id       => l_clev_inst_rec.id);
20058            IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20059              OKL_API.set_message(p_app_name     => G_APP_NAME,
20060                                  p_msg_name     => G_DELETING_IB_LINE);
20061              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20062            ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20063              OKL_API.set_message(p_app_name     => G_APP_NAME,
20064                                  p_msg_name     => G_DELETING_IB_LINE);
20065              EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20066            END IF;
20067          END IF;
20068          EXIT WHEN (j = l_clev_ib_tbl.LAST);
20069          j := l_clev_ib_tbl.NEXT(j);
20070        END LOOP;
20071        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20072           RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20073        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20074           RAISE OKL_API.G_EXCEPTION_ERROR;
20075        END IF;
20076     ELSE
20077        OKL_API.set_message(p_app_name     => G_APP_NAME,
20078                            p_msg_name     => G_CNT_REC);
20079        RAISE OKL_API.G_EXCEPTION_ERROR;
20080     END IF;
20081     -- we should get the remaining inst line , so that we can update
20082     -- the fixed line , model line and also update the top line with latest OEC
20083     OPEN c_remain_inst_line(l_clev_inst_rec.cle_id,
20084                             l_clev_inst_rec.dnz_chr_id);
20085     IF c_remain_inst_line%NOTFOUND THEN
20086       OKL_API.set_message(p_app_name     => G_APP_NAME,
20087                           p_msg_name     => G_DELETING_INSTS_LINE);
20088       RAISE OKL_API.G_EXCEPTION_ERROR;
20089     END IF;
20090     FETCH c_remain_inst_line INTO ln_remain_inst;
20091     CLOSE c_remain_inst_line;
20092     -- To get the Model Line
20093     -- Since we have update the model line
20094     OPEN c_model_line(l_clev_inst_rec.cle_id,
20095                       l_clev_inst_rec.dnz_chr_id);
20096     IF c_model_line%NOTFOUND THEN
20097        OKL_API.set_message(p_app_name     => G_APP_NAME,
20098                            p_msg_name     => G_NO_MATCHING_RECORD,
20099                            p_token1       => G_COL_NAME_TOKEN,
20100                            p_token1_value => 'Model Asset Line record');
20101        RAISE OKL_API.G_EXCEPTION_ERROR;
20102     END IF;
20103     FETCH c_model_line INTO ln_model_line_id;
20104     CLOSE c_model_line;
20105     -- To get the Fixed Asset Line
20106     -- Since we have update the Fixed Asset Line
20107     OPEN c_fa_line(l_clev_inst_rec.cle_id,
20108                   l_clev_inst_rec.dnz_chr_id);
20109     IF c_fa_line%NOTFOUND THEN
20110        OKL_API.set_message(p_app_name     => G_APP_NAME,
20111                            p_msg_name     => G_NO_MATCHING_RECORD,
20112                            p_token1       => G_COL_NAME_TOKEN,
20113                            p_token1_value => 'Fixed Asset Line record');
20114        RAISE OKL_API.G_EXCEPTION_ERROR;
20115     END IF;
20116     FETCH c_fa_line INTO ln_fa_line_id;
20117     CLOSE c_fa_line;
20118     --We have to build the Model Line Record for the calculations of the
20119     -- oec of the top line
20120     -- To Get the cle Model Line Record
20121     x_return_status := get_rec_clev(ln_model_line_id,
20122                                     r_clev_model_rec);
20123     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20124        OKL_API.set_message(p_app_name     => G_APP_NAME,
20125                            p_msg_name     => G_FETCHING_INFO,
20126                            p_token1       => G_REC_NAME_TOKEN,
20127                            p_token1_value => 'OKC_K_LINES_V Record');
20128        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20129     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20130        OKL_API.set_message(p_app_name     => G_APP_NAME,
20131                            p_msg_name     => G_FETCHING_INFO,
20132                            p_token1       => G_REC_NAME_TOKEN,
20133                            p_token1_value => 'OKC_K_LINES_V Record');
20134        RAISE OKL_API.G_EXCEPTION_ERROR;
20135     END IF;
20136     -- To Get the kle Model Line Record
20137     x_return_status := get_rec_klev(ln_model_line_id,
20138                                     r_klev_model_rec);
20139     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20140        OKL_API.set_message(p_app_name     => G_APP_NAME,
20141                            p_msg_name     => G_FETCHING_INFO,
20142                            p_token1       => G_REC_NAME_TOKEN,
20143                            p_token1_value => 'OKL_K_LINES_V Record');
20144        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20145     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20146        OKL_API.set_message(p_app_name     => G_APP_NAME,
20147                            p_msg_name     => G_FETCHING_INFO,
20148                            p_token1       => G_REC_NAME_TOKEN,
20149                            p_token1_value => 'OKL_K_LINES_V Record');
20150        RAISE OKL_API.G_EXCEPTION_ERROR;
20151     END IF;
20152     IF r_klev_model_rec.id <> r_clev_model_rec.id THEN
20153        OKL_API.set_message(p_app_name     => G_APP_NAME,
20154                            p_msg_name     => G_LINE_RECORD);
20155        RAISE OKL_API.G_EXCEPTION_ERROR;
20156     END IF;
20157     -- To Get the cimv Model Line Record
20158     x_return_status := get_rec_cimv(r_clev_model_rec.id,
20159                                     r_clev_model_rec.dnz_chr_id,
20160                                     r_cimv_model_rec);
20161     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20162        OKL_API.set_message(p_app_name     => G_APP_NAME,
20163                            p_msg_name     => G_FETCHING_INFO,
20164                            p_token1       => G_REC_NAME_TOKEN,
20165                            p_token1_value => 'OKC_K_ITEMS_V Record');
20166        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20167     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20168        OKL_API.set_message(p_app_name     => G_APP_NAME,
20169                            p_msg_name     => G_FETCHING_INFO,
20170                            p_token1       => G_REC_NAME_TOKEN,
20171                            p_token1_value => 'OKC_K_ITEMS_V Record');
20172        RAISE OKL_API.G_EXCEPTION_ERROR;
20173     END IF;
20174     --Build Model cimv item rec
20175     r_cimv_model_rec.number_of_items  := ln_remain_inst;
20176     -- Updating of the Model Line and Item Record
20177     update_model_line(p_api_version   => p_api_version,
20178                       p_init_msg_list => p_init_msg_list,
20179                       x_return_status => x_return_status,
20180                       x_msg_count     => x_msg_count,
20181                       x_msg_data      => x_msg_data,
20182                       P_new_yn        => P_new_yn,
20183                       p_asset_number  => p_asset_number,
20184                       p_clev_rec      => r_clev_model_rec,
20185                       p_klev_rec      => r_klev_model_rec,
20186                       p_cimv_rec      => r_cimv_model_rec,
20187                       x_clev_rec      => l_clev_model_rec_out,
20188                       x_klev_rec      => l_klev_model_rec_out,
20189                       x_cimv_rec      => x_cimv_model_rec);
20190     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20191       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20192     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20193       RAISE OKL_API.G_EXCEPTION_ERROR;
20194     END IF;
20195     -- We need to check if there are add on line and then we update the Addon number of items also
20196     -- Since there can be multiple Addo lines
20197     FOR r_addon_line_id IN c_addon_line_id(p_cle_id => l_clev_model_rec_out.cle_id,
20198                                            p_chr_id => l_clev_model_rec_out.dnz_chr_id) LOOP
20199       --We have to build the addon Line Record for the calculations of the
20200       -- oec of the top line
20201       -- To Get the cle addon Line Record
20202       x_return_status := get_rec_clev(r_addon_line_id.id,
20203                                       r_clev_addon_rec);
20204       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20205          OKL_API.set_message(p_app_name     => G_APP_NAME,
20206                              p_msg_name     => G_FETCHING_INFO,
20207                              p_token1       => G_REC_NAME_TOKEN,
20208                              p_token1_value => 'OKC_K_LINES_V Record');
20209          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20210       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20211          OKL_API.set_message(p_app_name     => G_APP_NAME,
20212                              p_msg_name     => G_FETCHING_INFO,
20213                              p_token1       => G_REC_NAME_TOKEN,
20214                              p_token1_value => 'OKC_K_LINES_V Record');
20215          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20216       END IF;
20217       -- To Get the kle Model Line Record
20218       x_return_status := get_rec_klev(r_addon_line_id.id,
20219                                       r_klev_addon_rec);
20220       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20221          OKL_API.set_message(p_app_name     => G_APP_NAME,
20222                              p_msg_name     => G_FETCHING_INFO,
20223                              p_token1       => G_REC_NAME_TOKEN,
20224                              p_token1_value => 'OKL_K_LINES_V Record');
20225          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20226       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20227          OKL_API.set_message(p_app_name     => G_APP_NAME,
20228                              p_msg_name     => G_FETCHING_INFO,
20229                              p_token1       => G_REC_NAME_TOKEN,
20230                              p_token1_value => 'OKL_K_LINES_V Record');
20231          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20232       END IF;
20233       IF r_klev_addon_rec.id <> r_clev_addon_rec.id THEN
20234          OKL_API.set_message(p_app_name     => G_APP_NAME,
20235                              p_msg_name     => G_LINE_RECORD);
20236          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20237       END IF;
20238       -- To Get the cimv Model Line Record
20239       x_return_status := get_rec_cimv(r_clev_addon_rec.id,
20240                                       r_clev_addon_rec.dnz_chr_id,
20241                                       r_cimv_addon_rec);
20242       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20243          OKL_API.set_message(p_app_name     => G_APP_NAME,
20244                              p_msg_name     => G_FETCHING_INFO,
20245                              p_token1       => G_REC_NAME_TOKEN,
20246                              p_token1_value => 'OKC_K_ITEMS_V Record');
20247          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20248       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20249          OKL_API.set_message(p_app_name     => G_APP_NAME,
20250                              p_msg_name     => G_FETCHING_INFO,
20251                              p_token1       => G_REC_NAME_TOKEN,
20252                              p_token1_value => 'OKC_K_ITEMS_V Record');
20253          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20254       END IF;
20255       --Build addon cimv item rec
20256       r_cimv_addon_rec.number_of_items  := ln_remain_inst;
20257       -- Updating of the addon Line and Item Record
20258       update_addon_line_rec(p_api_version   => p_api_version,
20259                             p_init_msg_list => p_init_msg_list,
20260                             x_return_status => x_return_status,
20261                             x_msg_count     => x_msg_count,
20262                             x_msg_data      => x_msg_data,
20263                             P_new_yn        => P_new_yn,
20264                             p_asset_number  => p_asset_number,
20265                             p_clev_rec      => r_clev_addon_rec,
20266                             p_klev_rec      => r_klev_addon_rec,
20267                             p_cimv_rec      => r_cimv_addon_rec,
20268                             x_clev_rec      => rx_clev_addon_rec,
20269                             x_klev_rec      => rx_klev_addon_rec,
20270                             x_cimv_rec      => rx_cimv_addon_rec);
20271       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20272          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
20273       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20274          EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
20275       END IF;
20276     END LOOP;
20277     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20278        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20279     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20280        RAISE OKL_API.G_EXCEPTION_ERROR;
20281     END IF;
20282     -- Since we need to populate the OEC into fixed asset line also
20283     -- So we need to calcualte the same here it self
20284     oec_calc_upd_fin_rec(p_api_version        => p_api_version,
20285                          p_init_msg_list      => p_init_msg_list,
20286                          x_return_status      => x_return_status,
20287                          x_msg_count          => x_msg_count,
20288                          x_msg_data           => x_msg_data,
20289                          P_new_yn             => P_new_yn,
20290                          p_asset_number       => p_asset_number,
20291 			 -- 4414408
20292                          p_top_line_id        => l_clev_inst_rec.cle_id,
20293                          p_dnz_chr_id         => l_clev_model_rec_out.dnz_chr_id,
20294                          x_fin_clev_rec       => x_clev_fin_rec,
20295                          x_fin_klev_rec       => x_klev_fin_rec,
20296                          x_oec                => ln_klev_fin_oec,
20297                          p_validate_fin_line  => OKL_API.G_TRUE);
20298     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20299        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20300     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20301        RAISE OKL_API.G_EXCEPTION_ERROR;
20302     END IF;
20303     -- Calculate the Capital Amount to Populate the OKL_K_LINES_V.CAPITAL_AMOUNT
20304     cap_amt_calc_upd_fin_rec(p_api_version        => p_api_version,
20305                              p_init_msg_list      => p_init_msg_list,
20306                              x_return_status      => x_return_status,
20307                              x_msg_count          => x_msg_count,
20308                              x_msg_data           => x_msg_data,
20309                              P_new_yn             => P_new_yn,
20310                              p_asset_number       => p_asset_number,
20311 			     -- 4414408
20312                              p_top_line_id        => l_clev_inst_rec.cle_id,
20313                              p_dnz_chr_id         => l_clev_model_rec_out.dnz_chr_id,
20314                              x_fin_clev_rec       => x_clev_fin_rec,
20315                              x_fin_klev_rec       => x_klev_fin_rec,
20316                              x_cap_amt            => ln_klev_fin_cap,
20317                              p_validate_fin_line  => OKL_API.G_TRUE);
20318     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20319       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20320     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20321       RAISE OKL_API.G_EXCEPTION_ERROR;
20322     END IF;
20323     -- Calculate the Residual Value to Populate the OKL_K_LINES_V.RESIDUAL_VALUE
20324     res_value_calc_upd_fin_rec(p_api_version        => p_api_version,
20325                                p_init_msg_list      => p_init_msg_list,
20326                                x_return_status      => x_return_status,
20327                                x_msg_count          => x_msg_count,
20328                                x_msg_data           => x_msg_data,
20329                                P_new_yn             => P_new_yn,
20330                                p_asset_number       => p_asset_number,
20331 			       -- 4414408
20332                                p_top_line_id        => l_clev_inst_rec.cle_id,
20333                                p_dnz_chr_id         => l_clev_model_rec_out.dnz_chr_id,
20334                                x_fin_clev_rec       => x_clev_fin_rec,
20335                                x_fin_klev_rec       => x_klev_fin_rec,
20336                                x_res_value          => ln_klev_fin_res,
20337                                p_validate_fin_line  => OKL_API.G_TRUE);
20338     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20339       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20340     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20341       RAISE OKL_API.G_EXCEPTION_ERROR;
20342     END IF;
20343     -- Updating of the Fixed Asset Line Process
20344     -- To Get the cle fa Line Record
20345     x_return_status := get_rec_clev(ln_fa_line_id,
20346                                     r_clev_fa_rec);
20347     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20348        OKL_API.set_message(p_app_name     => G_APP_NAME,
20349                            p_msg_name     => G_FETCHING_INFO,
20350                            p_token1       => G_REC_NAME_TOKEN,
20351                            p_token1_value => 'OKC_K_LINES_V Record');
20352        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20353     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20354        OKL_API.set_message(p_app_name     => G_APP_NAME,
20355                            p_msg_name     => G_FETCHING_INFO,
20356                            p_token1       => G_REC_NAME_TOKEN,
20357                            p_token1_value => 'OKC_K_LINES_V Record');
20358        RAISE OKL_API.G_EXCEPTION_ERROR;
20359     END IF;
20360     -- To Get the kle fa Line Record
20361     x_return_status := get_rec_klev(ln_fa_line_id,
20362                                     r_klev_fa_rec);
20363     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20364        OKL_API.set_message(p_app_name     => G_APP_NAME,
20365                            p_msg_name     => G_FETCHING_INFO,
20366                            p_token1       => G_REC_NAME_TOKEN,
20367                            p_token1_value => 'OKL_K_LINES_V Record');
20368        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20369     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20370        OKL_API.set_message(p_app_name     => G_APP_NAME,
20371                            p_msg_name     => G_FETCHING_INFO,
20372                            p_token1       => G_REC_NAME_TOKEN,
20373                            p_token1_value => 'OKL_K_LINES_V Record');
20374        RAISE OKL_API.G_EXCEPTION_ERROR;
20375     END IF;
20376     IF r_klev_fa_rec.id <> r_clev_fa_rec.id THEN
20377        OKL_API.set_message(p_app_name     => G_APP_NAME,
20378                            p_msg_name     => G_LINE_RECORD);
20379        RAISE OKL_API.G_EXCEPTION_ERROR;
20380     END IF;
20381     -- To Get the cimv fa Line Record
20382     x_return_status := get_rec_cimv(r_clev_fa_rec.id,
20383                                     r_clev_fa_rec.dnz_chr_id,
20384                                     r_cimv_fa_rec);
20385     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20386        OKL_API.set_message(p_app_name     => G_APP_NAME,
20387                            p_msg_name     => G_FETCHING_INFO,
20388                            p_token1       => G_REC_NAME_TOKEN,
20389                            p_token1_value => 'OKC_K_ITEMS_V Record');
20390        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20391     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20392        OKL_API.set_message(p_app_name     => G_APP_NAME,
20393                            p_msg_name     => G_FETCHING_INFO,
20394                            p_token1       => G_REC_NAME_TOKEN,
20395                            p_token1_value => 'OKC_K_ITEMS_V Record');
20396        RAISE OKL_API.G_EXCEPTION_ERROR;
20397     END IF;
20398     --Build cimv fa item rec
20399     r_cimv_fa_rec.number_of_items  := ln_remain_inst;
20400     --Build talv fa item rec
20401     x_return_status := get_rec_txlv(r_clev_fa_rec.id,
20402                                     r_talv_fa_rec);
20403     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20404        OKL_API.set_message(p_app_name     => G_APP_NAME,
20405                            p_msg_name     => G_FETCHING_INFO,
20406                            p_token1       => G_REC_NAME_TOKEN,
20407                            p_token1_value => 'OKL_TXL_ASSETS_V Record');
20408        RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20409     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20410        OKL_API.set_message(p_app_name     => G_APP_NAME,
20411                            p_msg_name     => G_FETCHING_INFO,
20412                            p_token1       => G_REC_NAME_TOKEN,
20413                            p_token1_value => 'OKL_TXL_ASSETS_V Record');
20414        RAISE OKL_API.G_EXCEPTION_ERROR;
20415     END IF;
20416     --Build talv fa item rec
20417     r_talv_fa_rec.current_units  := ln_remain_inst;
20418 
20419        --Bug# 5362977 start
20420        -- For online rebook, update depreciation_cost and
20421        -- original_cost to line capital amount instead of line oec
20422        --check for rebook contract
20423        l_rbk_khr := '?';
20424        OPEN l_chk_rbk_csr (p_chr_id => r_clev_fa_rec.dnz_chr_id);
20425        FETCH l_chk_rbk_csr INTO l_rbk_khr;
20426        CLOSE l_chk_rbk_csr;
20427 
20428        If l_rbk_khr = '!' Then
20429          r_talv_fa_rec.depreciation_cost := NVL(x_klev_fin_rec.capital_amount,ln_klev_fin_cap);
20430          r_talv_fa_rec.original_cost := NVL(x_klev_fin_rec.capital_amount,ln_klev_fin_cap);
20431        else
20432 
20433     r_talv_fa_rec.depreciation_cost := x_klev_fin_rec.oec;
20434           r_talv_fa_rec.original_cost := x_klev_fin_rec.oec;
20435        end if;
20436        --Bug# 5362977 end
20437 
20438 
20439     r_clev_fa_rec.item_description := r_talv_fa_rec.description;
20440     -- Updating of the Fixed Asset Line and item/Txl Asset Info
20441     update_fixed_asset_line(p_api_version   => p_api_version,
20442                             p_init_msg_list => p_init_msg_list,
20443                             x_return_status => x_return_status,
20444                             x_msg_count     => x_msg_count,
20445                             x_msg_data      => x_msg_data,
20446                             P_new_yn        => P_new_yn,
20447                             p_asset_number  => p_asset_number,
20448                             p_clev_rec      => r_clev_fa_rec,
20449                             p_klev_rec      => r_klev_fa_rec,
20450                             p_cimv_rec      => r_cimv_fa_rec,
20451                             p_talv_rec      => r_talv_fa_rec,
20452                             x_clev_rec      => l_clev_fa_rec_out,
20453                             x_klev_rec      => l_klev_fa_rec_out,
20454                             x_cimv_rec      => x_cimv_fa_rec,
20455                             x_talv_rec      => x_talv_fa_rec);
20456     IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20457       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20458     ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20459       RAISE OKL_API.G_EXCEPTION_ERROR;
20460     END IF;
20461         --Bug# 5176649 start
20462        -- Update Tax Book details - okl_txd_assets_b
20463        update_asset_line_details(p_api_version   => p_api_version,
20464                                  p_init_msg_list => p_init_msg_list,
20465                                  x_return_status => x_return_status,
20466                                  x_msg_count     => x_msg_count,
20467                                  x_msg_data      => x_msg_data,
20468                                  p_asset_number  => p_asset_number,
20469                                  p_original_cost => x_talv_fa_rec.original_cost,
20470                                  p_tal_id        => x_talv_fa_rec.ID);
20471        IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20472          RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20473        ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20474          RAISE OKL_API.G_EXCEPTION_ERROR;
20475        END IF;
20476        --Bug# 5176649 end
20477 
20478     -- We need to change the status of the header whenever there is updating happening
20479     -- after the contract status is approved
20480     IF (l_clev_fa_rec_out.dnz_chr_id is NOT NULL) AND
20481        (l_clev_fa_rec_out.dnz_chr_id <> OKL_API.G_MISS_NUM) THEN
20482       --cascade edit status on to lines
20483       okl_contract_status_pub.cascade_lease_status_edit
20484                (p_api_version     => p_api_version,
20485                 p_init_msg_list   => p_init_msg_list,
20486                 x_return_status   => x_return_status,
20487                 x_msg_count       => x_msg_count,
20488                 x_msg_data        => x_msg_data,
20489                 p_chr_id          => l_clev_fa_rec_out.dnz_chr_id);
20490       IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
20491         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
20492       ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
20493         RAISE OKL_API.G_EXCEPTION_ERROR;
20494       END IF;
20495     END IF;
20496     OKL_API.END_ACTIVITY (x_msg_count,
20497                           x_msg_data );
20498   EXCEPTION
20499     WHEN OKL_API.G_EXCEPTION_ERROR THEN
20500     x_return_status := OKL_API.HANDLE_EXCEPTIONS(
20501                                l_api_name,
20502                                G_PKG_NAME,
20503                                'OKL_API.G_RET_STS_ERROR',
20504                                x_msg_count,
20505                                x_msg_data,
20506                                '_PVT');
20507     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
20508     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
20509                               l_api_name,
20510                               G_PKG_NAME,
20511                               'OKL_API.G_RET_STS_UNEXP_ERROR',
20512                               x_msg_count,
20513                               x_msg_data,
20514                               '_PVT');
20515     WHEN OTHERS THEN
20516     x_return_status :=OKL_API.HANDLE_EXCEPTIONS(
20517                               l_api_name,
20518                               G_PKG_NAME,
20519                               'OTHERS',
20520                               x_msg_count,
20521                               x_msg_data,
20522                               '_PVT');
20523   END delete_ints_ib_line;
20524 
20525 End OKL_CREATE_KLE_PVT;