DBA Data[Home] [Help]
Skip to content

PACKAGE BODY: APPS.OKL_TQL_PVT

Source


1 PACKAGE BODY OKL_TQL_PVT AS
2 /* $Header: OKLSTQLB.pls 120.11 2007/08/08 12:54:28 arajagop noship $ */
3 
4 G_UNEXPECTED_ERROR    CONSTANT VARCHAR2(200) := 'OKC_CONTRACTS_UNEXPECTED_ERROR';
5 G_UPPER_CASE_REQUIRED CONSTANT VARCHAR2(200) := 'OKC_UPPER_CASE_REQUIRED';
6 --G_INVALID_END_DATE    CONSTANT VARCHAR2(200) := 'INVALID_END_DATE';
7 
8 -- RMUNJULU 05-FEB-03 2788257 Changed values of constants
9 G_SQLERRM_TOKEN       CONSTANT VARCHAR2(200) := 'ERROR_MESSAGE';
10 G_SQLCODE_TOKEN       CONSTANT VARCHAR2(200) := 'ERROR_CODE';
11 G_NO_PARENT_RECORD    CONSTANT VARCHAR2(200) := 'OKL_NO_PARENT_RECORD';
12 
13 
14 G_VIEW                CONSTANT VARCHAR2(200) := 'OKL_TXL_QUOTE_LINES_V';
15 G_EXCEPTION_HALT_VALIDATION            EXCEPTION;
16 G_EXCEPTION_STOP_VALIDATION            EXCEPTION;
17 G_RETURN_STATUS VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
18 
19 --------------------------------------------------------------------------------
20   -- Start of comments
21   -- Procedure Name  : validate_currency_record
22   -- Description     : Used for validation of Currency Code Conversion Coulms
23   -- Business Rules  : If transaction currency <> functional currency, then
24   --                   conversion columns are mandatory
25   --                   Else If transaction currency = functional currency,
26   --                   then conversion columns should all be NULL
27   -- Parameters      : Record structure of OKL_TXL_QUOTE_LINES_V table
28   -- Version         : 1.0
29   -- History         : 15-DEC-2002 BAKUCHIB :Added new procedure
30   -- End of comments
31 
32   PROCEDURE validate_currency_record(p_tqlv_rec      IN  tqlv_rec_type,
33                                      x_return_status OUT NOCOPY VARCHAR2) IS
34   BEGIN
35     x_return_status := OKC_API.G_RET_STS_SUCCESS;
36     -- If transaction currency <> functional currency, then conversion columns
37     -- are mandatory
38     IF (p_tqlv_rec.currency_code <> p_tqlv_rec.currency_conversion_code) THEN
39       IF (p_tqlv_rec.currency_conversion_type = OKC_API.G_MISS_CHAR OR
40          p_tqlv_rec.currency_conversion_type IS NULL) THEN
41         --SET MESSAGE
42         OKC_API.set_message(p_app_name     => G_APP_NAME,
43                             p_msg_name     => G_REQUIRED_VALUE,
44                             p_token1       => G_COL_NAME_TOKEN,
45                             p_token1_value => 'currency_conversion_type');
46         x_return_status := OKC_API.G_RET_STS_ERROR;
47       END IF;
48       IF (p_tqlv_rec.currency_conversion_rate = OKC_API.G_MISS_NUM OR
49          p_tqlv_rec.currency_conversion_rate IS NULL) THEN
50         --SET MESSAGE
51         OKC_API.set_message(p_app_name     => G_APP_NAME,
52                             p_msg_name     => G_REQUIRED_VALUE,
53                             p_token1       => G_COL_NAME_TOKEN,
54                             p_token1_value => 'currency_conversion_rate');
55         x_return_status := OKC_API.G_RET_STS_ERROR;
56       END IF;
57       IF (p_tqlv_rec.currency_conversion_date = OKC_API.G_MISS_DATE OR
58          p_tqlv_rec.currency_conversion_date IS NULL) THEN
59         --SET MESSAGE
60         OKC_API.set_message(p_app_name     => G_APP_NAME,
61                             p_msg_name     => G_REQUIRED_VALUE,
62                             p_token1       => G_COL_NAME_TOKEN,
63                             p_token1_value => 'currency_conversion_date');
64         x_return_status := OKC_API.G_RET_STS_ERROR;
65       END IF;
66     -- Else If transaction currency = functional currency, then conversion columns
67     -- should all be NULL
68     ELSIF (p_tqlv_rec.currency_code = p_tqlv_rec.currency_conversion_code) THEN
69       IF (p_tqlv_rec.currency_conversion_type IS NOT NULL) OR
70          (p_tqlv_rec.currency_conversion_rate IS NOT NULL) OR
71          (p_tqlv_rec.currency_conversion_date IS NOT NULL) THEN
72         --SET MESSAGE
73         -- Currency conversion columns should be all null
74         IF p_tqlv_rec.currency_conversion_rate IS NOT NULL THEN
75           OKC_API.set_message(p_app_name     => G_APP_NAME,
76                               p_msg_name     => G_INVALID_VALUE,
77                               p_token1       => G_COL_NAME_TOKEN,
78                               p_token1_value => 'currency_conversion_rate');
79         END IF;
80         IF p_tqlv_rec.currency_conversion_date IS NOT NULL THEN
81           OKC_API.set_message(p_app_name     => G_APP_NAME,
82                               p_msg_name     => G_INVALID_VALUE,
83                               p_token1       => G_COL_NAME_TOKEN,
84                               p_token1_value => 'currency_conversion_date');
85         END IF;
86         IF p_tqlv_rec.currency_conversion_type IS NOT NULL THEN
87           OKC_API.set_message(p_app_name     => G_APP_NAME,
88                               p_msg_name     => G_INVALID_VALUE,
89                               p_token1       => G_COL_NAME_TOKEN,
90                               p_token1_value => 'currency_conversion_type');
91         END IF;
92         x_return_status := OKC_API.G_RET_STS_ERROR;
93       END IF;
94     ELSE
95         x_return_status := OKC_API.G_RET_STS_ERROR;
96     END IF;
97     IF x_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
98         RAISE G_EXCEPTION_HALT_VALIDATION;
99     END IF;
100   EXCEPTION
101     WHEN G_EXCEPTION_HALT_VALIDATION THEN
102       x_return_status := OKC_API.G_RET_STS_ERROR;
103     WHEN OTHERS THEN
104       -- store SQL error message on message stack for caller
105       OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
106                           p_msg_name     => g_unexpected_error,
107                           p_token1       => g_sqlcode_token,
108                           p_token1_value => sqlcode,
109                           p_token2       => g_sqlerrm_token,
110                           p_token2_value => sqlerrm);
111       -- notify caller of an UNEXPECTED error
112       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
113   END validate_currency_record;
114 --------------------------------------------------------------------------------
115   -- Start of comments
116   -- Procedure Name  : validate_currency_code
117   -- Description     : Validation of Currency Code
118   -- Business Rules  :
119   -- Parameters      : Record structure of OKL_TXL_QUOTE_LINES_V table
120   -- Version         : 1.0
121   -- History         : 15-DEC-2002 BAKUCHIB :Added new procedure
122   -- End of comments
123 
124   PROCEDURE validate_currency_code(p_tqlv_rec      IN  tqlv_rec_type,
125                                    x_return_status OUT NOCOPY VARCHAR2) IS
126     l_return_status VARCHAR2(3) := OKC_API.G_TRUE;
127   BEGIN
128     -- initialize return status
129     x_return_status := OKC_API.G_RET_STS_SUCCESS;
130     -- data is required
131     IF (p_tqlv_rec.currency_code IS NULL) OR
132        (p_tqlv_rec.currency_code = OKC_API.G_MISS_CHAR) THEN
133       OKC_API.SET_MESSAGE( p_app_name     => G_APP_NAME
134                           ,p_msg_name     => G_REQUIRED_VALUE
135                           ,p_token1       => G_COL_NAME_TOKEN
136                           ,p_token1_value => 'currency_code');
137 
138       -- halt further validation of this column
139       RAISE G_EXCEPTION_HALT_VALIDATION;
140     END IF;
141     -- check from currency values using the generic okl_util.validate_currency_code
142     l_return_status := OKL_ACCOUNTING_UTIL.validate_currency_code(p_tqlv_rec.currency_code);
143     IF (l_return_status <>  OKC_API.G_TRUE) THEN
144       OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
145                           p_msg_name     => g_invalid_value,
146                           p_token1       => g_col_name_token,
147                           p_token1_value => 'currency_code');
148       -- halt further validation of this column
149       RAISE G_EXCEPTION_HALT_VALIDATION;
150     END IF;
151   EXCEPTION
152     WHEN G_EXCEPTION_HALT_VALIDATION THEN
153       x_return_status := OKC_API.G_RET_STS_ERROR;
154     WHEN OTHERS THEN
155       -- store SQL error message on message stack for caller
156       OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
157                           p_msg_name     => g_unexpected_error,
158                           p_token1       => g_sqlcode_token,
159                           p_token1_value => sqlcode,
160                           p_token2       => g_sqlerrm_token,
161                           p_token2_value => sqlerrm);
162       -- notify caller of an UNEXPECTED error
163       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
164   END validate_currency_code;
165 --------------------------------------------------------------------------------
166   -- Start of comments
167   -- Procedure Name  : validate_currency_con_code
168   -- Description     : Validation of Currency Conversion Code
169   -- Business Rules  :
170   -- Parameters      : Record structure of OKL_TXL_QUOTE_LINES_V table
171   -- Version         : 1.0
172   -- History         : 15-DEC-2002 BAKUCHIB :Added new procedure
173   -- End of comments
174 
175   PROCEDURE validate_currency_con_code(p_tqlv_rec      IN  tqlv_rec_type,
176                                        x_return_status OUT NOCOPY VARCHAR2) IS
177     l_return_status VARCHAR2(3) := OKC_API.G_TRUE;
178   BEGIN
179     -- initialize return status
180     x_return_status := OKC_API.G_RET_STS_SUCCESS;
181     -- data is required
182     IF (p_tqlv_rec.currency_conversion_code IS NULL) OR
183        (p_tqlv_rec.currency_conversion_code = OKC_API.G_MISS_CHAR) THEN
184       OKC_API.SET_MESSAGE( p_app_name     => G_APP_NAME
185                           ,p_msg_name     => G_REQUIRED_VALUE
186                           ,p_token1       => G_COL_NAME_TOKEN
187                           ,p_token1_value => 'currency_conversion_code');
188       -- halt further validation of this column
189       RAISE G_EXCEPTION_HALT_VALIDATION;
190     END IF;
191     -- check from currency values using the generic okl_util.validate_currency_code
192     l_return_status := OKL_ACCOUNTING_UTIL.validate_currency_code(p_tqlv_rec.currency_conversion_code);
193     IF (l_return_status <>  OKC_API.G_TRUE) THEN
194       OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
195                           p_msg_name     => g_invalid_value,
196                           p_token1       => g_col_name_token,
197                           p_token1_value => 'currency_conversion_code');
198       -- halt further validation of this column
199       RAISE G_EXCEPTION_HALT_VALIDATION;
200     END IF;
201   EXCEPTION
202     WHEN G_EXCEPTION_HALT_VALIDATION THEN
203       x_return_status := OKC_API.G_RET_STS_ERROR;
204     WHEN OTHERS THEN
205       -- store SQL error message on message stack for caller
206       OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
207                           p_msg_name     => g_unexpected_error,
208                           p_token1       => g_sqlcode_token,
209                           p_token1_value => sqlcode,
210                           p_token2       => g_sqlerrm_token,
211                           p_token2_value => sqlerrm);
212 
213       -- notify caller of an UNEXPECTED error
214       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
215   END validate_currency_con_code;
216 --------------------------------------------------------------------------------
217   -- Start of comments
218   -- Procedure Name  : validate_currency_con_type
219   -- Description     : Validation of Currency Conversion type
220   -- Business Rules  :
221   -- Parameters      : Record structure of OKL_TXL_QUOTE_LINES_V table
222   -- Version         : 1.0
223   -- History         : 15-DEC-2002 BAKUCHIB :Added new procedure
224   -- End of comments
225 
226   PROCEDURE validate_currency_con_type(p_tqlv_rec      IN  tqlv_rec_type,
227                                        x_return_status OUT NOCOPY VARCHAR2) IS
228     l_return_status VARCHAR2(3) := OKC_API.G_TRUE;
229   BEGIN
230     -- initialize return status
231     x_return_status := OKC_API.G_RET_STS_SUCCESS;
232     IF (p_tqlv_rec.currency_conversion_type <> OKL_API.G_MISS_CHAR AND
233        p_tqlv_rec.currency_conversion_type IS NOT NULL) THEN
234       -- check from currency values using the generic okl_util.validate_currency_code
235       l_return_status := OKL_ACCOUNTING_UTIL.validate_currency_con_type(p_tqlv_rec.currency_conversion_type);
236       IF (l_return_status <>  OKC_API.G_TRUE) THEN
237         OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
238                             p_msg_name     => g_invalid_value,
239                             p_token1       => g_col_name_token,
240                             p_token1_value => 'currency_conversion_type');
241         -- halt further validation of this column
242         RAISE G_EXCEPTION_HALT_VALIDATION;
243       END IF;
244     END IF;
245   EXCEPTION
246     WHEN G_EXCEPTION_HALT_VALIDATION THEN
247       x_return_status := OKC_API.G_RET_STS_ERROR;
248     WHEN OTHERS THEN
249       -- store SQL error message on message stack for caller
250       OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
251                           p_msg_name     => g_unexpected_error,
252                           p_token1       => g_sqlcode_token,
253                           p_token1_value => sqlcode,
254                           p_token2       => g_sqlerrm_token,
255                           p_token2_value => sqlerrm);
256       -- notify caller of an UNEXPECTED error
257       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
258   END validate_currency_con_type;
259 ---------------------------------------------------------------------------------
260 -- Start of Commnets
261 -- Badrinath Kuchibholta
262 -- Procedure Name       : Validate_split_kle_id
263 -- Description          : FK validation with OKL_K_LINES_V
264 -- Business Rules       :
265 -- Parameters           : OUT Return Status, IN Rec Info
266 -- Version              : 1.0
267 -- End of Commnets
268 
269   PROCEDURE Validate_split_kle_id(x_return_status OUT NOCOPY VARCHAR2,
270                                   p_tqlv_rec IN tqlv_rec_type) IS
271     ln_dummy number := 0;
272     CURSOR c_split_kle_id(p_id number) is
273     SELECT 1
274     FROM DUAL
275     WHERE EXISTS (SELECT id
276                  FROM OKL_K_LINES_V
277                  WHERE id = p_id);
278 
279   BEGIN
280     -- initialize return status
281     x_return_status := OKL_API.G_RET_STS_SUCCESS;
282     -- This is an optional Column.
283     IF (p_tqlv_rec.split_kle_id = OKL_API.G_MISS_NUM) OR
284        (p_tqlv_rec.split_kle_id IS NULL) THEN
285        RAISE G_EXCEPTION_STOP_VALIDATION;
286     END IF;
287     -- Enforce Foreign Key
288     OPEN  c_split_kle_id(p_tqlv_rec.split_kle_id);
289     IF c_split_kle_id%NOTFOUND THEN
290        -- halt validation as it has no parent record
291        RAISE G_EXCEPTION_HALT_VALIDATION;
292     END IF;
293     FETCH c_split_kle_id into ln_dummy;
294     CLOSE c_split_kle_id;
295     IF (ln_dummy = 0) THEN
296        -- halt validation as it has no parent record
297        RAISE G_EXCEPTION_HALT_VALIDATION;
298     END IF;
299   EXCEPTION
300     WHEN G_EXCEPTION_STOP_VALIDATION then
301       null;
302     WHEN G_EXCEPTION_HALT_VALIDATION then
303       -- We are here b'cause we have no parent record
304       -- store SQL error message on message stack
305       OKL_API.set_message(p_app_name     => G_APP_NAME,
306                           p_msg_name     => G_NO_PARENT_RECORD,
307                           p_token1       => g_col_name_token,
308                           p_token1_value => 'Split_kle_id');
309     -- If the cursor is open then it has to be closed
310     IF c_split_kle_id%ISOPEN THEN
311        CLOSE c_split_kle_id;
312     END IF;
313     -- notify caller of an error
314     x_return_status := OKL_API.G_RET_STS_ERROR;
315     WHEN OTHERS THEN
316     -- store SQL error message on message stack
317     OKC_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     IF c_split_kle_id%ISOPEN THEN
324        CLOSE c_split_kle_id;
325     END IF;
326     -- notify caller of an error as UNEXPETED error
327     x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
328   END validate_split_kle_id;
329 ------------------------------------
330 -- PROCEDURE validate_org_id
331 ------------------------------------
332 -- Function Name   : validate_org_id
333 -- Description     : To validate org_id
334 -- Business Rules  :
335 -- Parameters      : Record
336 -- Version         : 1.0
337 
338 PROCEDURE validate_org_id(
339  x_return_status OUT NOCOPY VARCHAR2,
340  p_tqlv_rec  IN tqlv_rec_type) IS
341     l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
342   BEGIN
343     -- initialize return status
344     x_return_status := OKC_API.G_RET_STS_SUCCESS;
345 
346     -- check org id validity using the generic function okl_util.check_org_id()
347     l_return_status := OKL_UTIL.check_org_id (p_tqlv_rec.org_id);
348 
349     IF ( l_return_status = OKC_API.G_RET_STS_ERROR) THEN
350       OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
351                           p_msg_name     => g_invalid_value,
352                           p_token1       => g_col_name_token,
353                           p_token1_value => 'org_id');
354 
355       -- notify caller of an error
356       x_return_status := OKC_API.G_RET_STS_ERROR;
357       raise G_EXCEPTION_HALT_VALIDATION;
358 
359      ELSIF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
360         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
361         raise G_EXCEPTION_HALT_VALIDATION;
362 
363     END IF;
364 
365   EXCEPTION
366     WHEN G_EXCEPTION_HALT_VALIDATION THEN
367       -- no processing necessary;  validation can continue with the next column
368       NULL;
369 
370     WHEN OTHERS THEN
371       -- store SQL error message on message stack for caller
372       OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
373                           p_msg_name     => g_unexpected_error,
374                           p_token1       => g_sqlcode_token,
375                           p_token1_value => sqlcode,
376                           p_token2       => g_sqlerrm_token,
377                           p_token2_value => sqlerrm);
378 
379     -- notify caller of an UNEXPECTED error
380     x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
381 
382   END validate_org_id;
383 
384 ------------------------------------
385 -- PROCEDURE validate_try_id_fk
386 ------------------------------------
387 -- Function Name   : validate_try_id_fk
388 -- Description     : To validate try_id
389 -- Business Rules  :
390 -- Parameters      : Record
391 -- Version         : 1.0
392 
393 PROCEDURE validate_try_id_fk(
394  x_return_status OUT NOCOPY VARCHAR2,
395  p_tqlv_rec  IN tqlv_rec_type) IS
396     l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
397 
398     CURSOR check_try_id_csr (p_try_id IN NUMBER) IS
399     SELECT try.id
400     FROM   okl_trx_types_v try
401     WHERE  try.id = p_try_id;
402 
403     l_try_id NUMBER;
404 
405   BEGIN
406      IF (p_tqlv_rec.TRY_ID IS NOT NULL) THEN
407 
408         OPEN  check_try_id_csr (p_tqlv_rec.try_id);
409         FETCH check_try_id_csr INTO l_try_id;
410         CLOSE check_try_id_csr;
411 
412         IF l_try_id IS NULL THEN
413 
414            OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
415                                p_msg_name     => g_invalid_value,
416                                p_token1       => g_col_name_token,
417                                p_token1_value => 'try_id');
418 
419            x_return_status := OKC_API.G_RET_STS_ERROR;
420            raise G_EXCEPTION_HALT_VALIDATION;
421         END IF;
422      END IF;
423   EXCEPTION
424     WHEN G_EXCEPTION_HALT_VALIDATION THEN
425       -- no processing necessary;  validation can continue with the next column
426       NULL;
427 
428     WHEN OTHERS THEN
429       -- store SQL error message on message stack for caller
430       OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
431                           p_msg_name     => g_unexpected_error,
432                           p_token1       => g_sqlcode_token,
433                           p_token1_value => sqlcode,
434                           p_token2       => g_sqlerrm_token,
435                           p_token2_value => sqlerrm);
436 
437     -- notify caller of an UNEXPECTED error
438     x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
439 
440   END validate_try_id_fk;
441 
442 ------------------------------------
443 -- PROCEDURE validate_fk_qlt_code
444 ------------------------------------
445 -- Function Name  : validate_fk_qlt_code
446 -- Description     : To validate the foreign key QLT_CODE
447 -- Business Rules  :
448 -- Parameters      : Record
449 -- Version         : 1.0
450 
451     PROCEDURE validate_fk_qlt_code (
452       x_return_status OUT NOCOPY VARCHAR2,
453       p_tqlv_rec IN tqlv_rec_type) IS
454 
455      l_return_status varchar2(1);
456 
457     BEGIN
458      IF (p_tqlv_rec.QTE_ID IS NOT NULL) THEN
459 
460         l_return_status := okl_util.check_lookup_code
461                                   ( p_lookup_type=>'OKL_QUOTE_LINE_TYPE'
462                                   , p_lookup_code=>p_tqlv_rec.qlt_code
463                                   );
464 
465         IF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
466            OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
467                                p_msg_name     => g_invalid_value,
468                                p_token1       => g_col_name_token,
469                                p_token1_value => 'qlt_code');
470 
471            x_return_status := OKC_API.G_RET_STS_ERROR;
472            raise G_EXCEPTION_HALT_VALIDATION;
473 
474         ELSIF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
475            x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
476            raise G_EXCEPTION_HALT_VALIDATION;
477         END IF;
478 
479      END IF;
480 
481   EXCEPTION
482     WHEN G_EXCEPTION_HALT_VALIDATION THEN
483       -- no processing necessary;  validation can continue with the next column
484       NULL;
485 
486     when OTHERS then
487          -- store SQL error on message stack for caller
488          OKC_API.SET_MESSAGE(p_app_name => g_app_name,
489                              p_msg_name => g_unexpected_error,
490                              p_token1   => g_sqlcode_token,
491                              p_token1_value => sqlcode,
492                              p_token2       => g_sqlerrm_token,
493                              p_token2_value => sqlerrm);
494 
495          -- notify caller of an UNEXPECTED error
496          x_return_status  := OKC_API.G_RET_STS_UNEXP_ERROR;
497 
498     END validate_fk_qlt_code;
499 
500 
501 
502 -- PROCEDURE Name  : validate_fk_sty_id
503 -- Description     : To validate the foreign key STY_ID
504 -- Business Rules  :
505 -- Parameters      : Record
506 -- Version         : 1.0
507 -- History         : RMUNJULU 05-FEB-03 2788257 Changed to throw proper error msg
508 
509     PROCEDURE validate_fk_sty_id (
510       x_return_status OUT NOCOPY VARCHAR2,
511       p_tqlv_rec IN tqlv_rec_type) IS
512 
513      l_dummy_var           varchar2(1) := '?';
514      -- select the ID of the parent record from the parent table
515       CURSOR okl_sty_fk_csr IS
516       SELECT  'x'
517       FROM    OKL_STRM_TYPE_V
518       WHERE    ID = p_tqlv_rec.sty_id;
519 
520     BEGIN
521      IF  p_tqlv_rec.sty_id IS NOT NULL
522      AND p_tqlv_rec.sty_id <> OKL_API.G_MISS_NUM THEN
523 
524         OPEN okl_sty_fk_csr;
525         FETCH okl_sty_fk_csr INTO l_dummy_var;
526         CLOSE okl_sty_fk_csr;
527 
528         -- if l_dummy_var is still set to default, data was not found
529         IF (l_dummy_var = '?') THEN
530           OKC_API.set_message(p_app_name       => 'OKL',
531                               p_msg_name       => g_no_parent_record,
532                               p_token1         => g_col_name_token,
533                               p_token1_value   => 'sty_id',
534                               p_token2         => g_child_table_token,
535                               p_token2_value   => 'OKL_TXL_QUOTE_LINES_V',
536                               p_token3         => g_parent_table_token,
537                               p_token3_value   => 'OKL_STRM_TYPE_V');
538 
539          -- notify caller of an error
540          x_return_status := OKC_API.G_RET_STS_ERROR;
541         END IF;
542       END IF;
543      EXCEPTION
544        WHEN OTHERS THEN
545          -- store SQL error on message stack for caller
546          OKC_API.SET_MESSAGE(p_app_name => g_app_name,
547                              p_msg_name => g_unexpected_error,
548                              p_token1   => g_sqlcode_token,
549                              p_token1_value => sqlcode,
550                              p_token2       => g_sqlerrm_token,
551                              p_token2_value => sqlerrm);
552 
553          -- notify caller of an UNEXPECTED error
554          x_return_status  := OKC_API.G_RET_STS_UNEXP_ERROR;
555 
556          -- verify that cursor was closed
557          IF okl_sty_fk_csr%ISOPEN THEN
558             CLOSE okl_sty_fk_csr;
559          END IF;
560 
561     END validate_fk_sty_id;
562 
563 ------------------------------------
564 -- PROCEDURE validate_modified_yn_domain--
565 ------------------------------------
566 -- Function Name  : validate_modified_yn_domain
567 -- Description     : To validate the domain values
568 -- Business Rules  :
569 -- Parameters      : Record
570 -- Version         : 1.0
571 
572     PROCEDURE validate_modified_yn_domain (
573       x_return_status OUT NOCOPY VARCHAR2,
574       p_tqlv_rec IN tqlv_rec_type
575     ) IS
576     l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
577     BEGIN
578       x_return_status := OKC_API.G_RET_STS_SUCCESS;
579 
580       -- check from domain values using the generic okl_util.check_domain_yn
581       l_return_status := OKL_UTIL.check_domain_yn(p_tqlv_rec.modified_yn);
582 
583       IF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
584               OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
585                                   p_msg_name     => g_invalid_value,
586                                   p_token1       => g_col_name_token,
587                                   p_token1_value => 'modified_yn');
588 
589           x_return_status := OKC_API.G_RET_STS_ERROR;
590           raise G_EXCEPTION_HALT_VALIDATION;
591 
592      ELSIF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
593           x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
594           raise G_EXCEPTION_HALT_VALIDATION;
595      END IF;
596 
597      EXCEPTION
598     WHEN G_EXCEPTION_HALT_VALIDATION THEN
599       -- no processing necessary;  validation can continue with the next column
600       NULL;
601 
602     WHEN OTHERS THEN
603           -- store SQL error message on message stack for caller
604           OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
605                           p_msg_name     => g_unexpected_error,
606                           p_token1       => g_sqlcode_token,
607                           p_token1_value => sqlcode,
608                           p_token2       => g_sqlerrm_token,
609                           p_token2_value => sqlerrm);
610 
611         -- notify caller of an UNEXPECTED error
612         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
613      END validate_modified_yn_domain;
614 
615 ------------------------------------
616 -- PROCEDURE validate_taxed_yn_domain--
617 ------------------------------------
618 -- Function Name  : validate_taxed_yn_domain
619 -- Description     : To validate the Taxed_yn domain values
620 -- Business Rules  :
621 -- Parameters      : Record
622 -- Version         : 1.0
623 
624     PROCEDURE validate_taxed_yn_domain (
625       x_return_status OUT NOCOPY VARCHAR2,
626       p_tqlv_rec IN tqlv_rec_type
627     ) IS
628     l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
629     BEGIN
630       x_return_status := OKC_API.G_RET_STS_SUCCESS;
631 
632       -- check from domain values using the generic okl_util.check_domain_yn
633       l_return_status := OKL_UTIL.check_domain_yn(p_tqlv_rec.taxed_yn);
634 
635       IF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
636               OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
637                                   p_msg_name     => g_invalid_value,
638                                   p_token1       => g_col_name_token,
639                                   p_token1_value => 'taxed_yn');
640 
641         x_return_status := OKC_API.G_RET_STS_ERROR;
642         raise G_EXCEPTION_HALT_VALIDATION;
643 
644      ELSIF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
645         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
646         raise G_EXCEPTION_HALT_VALIDATION;
647      END IF;
648 
649    EXCEPTION
650      WHEN G_EXCEPTION_HALT_VALIDATION THEN
651         -- no processing necessary;  validation can continue with the next column
652         NULL;
653 
654      WHEN OTHERS THEN
655           -- store SQL error message on message stack for caller
656           OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
657                           p_msg_name     => g_unexpected_error,
658                           p_token1       => g_sqlcode_token,
659                           p_token1_value => sqlcode,
660                           p_token2       => g_sqlerrm_token,
661                           p_token2_value => sqlerrm);
662 
663         -- notify caller of an UNEXPECTED error
664         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
665     END validate_taxed_yn_domain;
666 
667 ------------------------------------
668 -- PROCEDURE validate_taxed_yn_domain--
669 ------------------------------------
670 -- Function Name  : validate_taxed_yn_domain
671 -- Description     : To validate the Taxed_yn domain values
672 -- Business Rules  :
673 -- Parameters      : Record
674 -- Version         : 1.0
675 
676     PROCEDURE validate_defaulted_yn_domain (
677       x_return_status OUT NOCOPY VARCHAR2,
678       p_tqlv_rec IN tqlv_rec_type
679     ) IS
680     l_return_status VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
681     BEGIN
682       x_return_status := OKC_API.G_RET_STS_SUCCESS;
683 
684       -- check from domain values using the generic okl_util.check_domain_yn
685       l_return_status := OKL_UTIL.check_domain_yn(p_tqlv_rec.defaulted_yn);
686 
687       IF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
688               OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
689                                   p_msg_name     => g_invalid_value,
690                                   p_token1       => g_col_name_token,
691                                   p_token1_value => 'defaulted_yn');
692 
693         x_return_status := OKC_API.G_RET_STS_ERROR;
694         raise G_EXCEPTION_HALT_VALIDATION;
695 
696      ELSIF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
697         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
698         raise G_EXCEPTION_HALT_VALIDATION;
699      END IF;
700 
701    EXCEPTION
702      WHEN G_EXCEPTION_HALT_VALIDATION THEN
703         -- no processing necessary;  validation can continue with the next column
704         NULL;
705 
706      WHEN OTHERS THEN
707           -- store SQL error message on message stack for caller
708           OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
709                           p_msg_name     => g_unexpected_error,
710                           p_token1       => g_sqlcode_token,
711                           p_token1_value => sqlcode,
712                           p_token2       => g_sqlerrm_token,
713                           p_token2_value => sqlerrm);
714 
715         -- notify caller of an UNEXPECTED error
716         x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
717     END validate_defaulted_yn_domain;
718 
719 ------------------------------------
720 -- PROCEDURE validate_id--
721 ------------------------------------
722 -- Function Name  : validate_id
723 -- Description     : To validate the id
724 -- Business Rules  :
725 -- Parameters      : Record
726 -- Version         : 1.0
727 
728     PROCEDURE validate_id(
729       x_return_status OUT NOCOPY VARCHAR2,
730       p_tqlv_rec IN tqlv_rec_type
731     ) IS
732     BEGIN
733     x_return_status := OKC_API.G_RET_STS_SUCCESS;
734 
735     IF p_tqlv_rec.id = OKC_API.G_MISS_NUM OR
736        p_tqlv_rec.id IS NULL
737     THEN
738          OKC_API.SET_MESSAGE(p_app_name => g_app_name,
739                              p_msg_name => g_required_value,
740                              p_token1   => g_col_name_token,
741                              p_token1_value => 'id');
742 
743           x_return_status := OKC_API.G_RET_STS_ERROR;
744           raise G_EXCEPTION_HALT_VALIDATION;
745         else
746           x_return_status := OKC_API.G_RET_STS_SUCCESS;
747        end if;
748       exception
749        when G_EXCEPTION_HALT_VALIDATION then
750           null;
751        when OTHERS then
752          OKC_API.SET_MESSAGE(p_app_name => g_app_name,
753                              p_msg_name => G_UNEXPECTED_ERROR,
754                              p_token1   => g_sqlcode_token,
755                              p_token1_value => sqlcode,
756                              p_token2       => g_sqlerrm_token,
757                              p_token2_value => sqlerrm);
758          x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
759     END validate_id;
760 
761 -- Start of comments
762   --
763   -- Procedure Name  : validate_sfwt_flag
764   -- Description     :
765   -- Business Rules  :
766   -- Parameters      :
767   -- Version         : 1.0
768   -- End of comments
769   PROCEDURE validate_sfwt_flag(
770  x_return_status OUT NOCOPY VARCHAR2,
771  p_tqlv_rec  IN tqlv_rec_type) IS
772 
773   BEGIN
774     -- initialize return status
775     x_return_status := OKC_API.G_RET_STS_SUCCESS;
776 
777     -- data is required
778     IF (p_tqlv_rec.sfwt_flag IS NULL) OR (p_tqlv_rec.sfwt_flag = OKC_API.G_MISS_CHAR) THEN
779       OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
780                           p_msg_name     => g_required_value,
781                           p_token1       => g_col_name_token,
782                           p_token1_value => 'sfwt_flag');
783 
784       -- notify caller of an error
785       x_return_status := OKC_API.G_RET_STS_ERROR;
786 
787     END IF;
788 
789   EXCEPTION
790     WHEN OTHERS THEN
791       -- store SQL error message on message stack for caller
792       OKC_API.SET_MESSAGE(p_app_name     => g_app_name,
793                           p_msg_name     => g_unexpected_error,
794                           p_token1       => g_sqlcode_token,
795                           p_token1_value => sqlcode,
796                           p_token2       => g_sqlerrm_token,
797                           p_token2_value => sqlerrm);
798 
799     -- notify caller of an UNEXPECTED error
800     x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
801 
802   END validate_sfwt_flag;
803 ------------------------------------
804 -- PROCEDURE validate_object_version_number--
805 ------------------------------------
806 -- Function Name  : validate_object_version_number
807 -- Description     : To validate the object Version Number
808 -- Business Rules  :
809 -- Parameters      : Record
810 -- Version         : 1.0
811 
812     PROCEDURE validate_object_version_number (
813       x_return_status OUT NOCOPY VARCHAR2,
814       p_tqlv_rec IN tqlv_rec_type
815     ) IS
816     BEGIN
817      IF p_tqlv_rec.object_version_number = OKC_API.G_MISS_NUM OR
818           p_tqlv_rec.object_version_number IS NULL
819      THEN
820          OKC_API.SET_MESSAGE(p_app_name => g_app_name,
821                              p_msg_name => g_required_value,
822                              p_token1   => g_col_name_token,
823                              p_token1_value => 'ObjectVersionNumber');
824 
825           x_return_status := OKC_API.G_RET_STS_ERROR;
826           raise G_EXCEPTION_HALT_VALIDATION;
827      ELSE
828           x_return_status := OKC_API.G_RET_STS_SUCCESS;
829      END IF;
830       exception
831        when G_EXCEPTION_HALT_VALIDATION then
832           null;
833        when OTHERS then
834          OKC_API.SET_MESSAGE(p_app_name => g_app_name,
835                              p_msg_name => G_UNEXPECTED_ERROR,
836                              p_token1   => g_sqlcode_token,
837                              p_token1_value => sqlcode,
838                              p_token2       => g_sqlerrm_token,
839                              p_token2_value => sqlerrm);
840          x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
841 
842     END validate_object_version_number;
843 
844     -- Procedure Name  : validate_qte_id
845     -- Description     : To validate the Quote Id
846     -- Business Rules  :
847     -- Parameters      : Record
848     -- Version         : 1.0
849     -- History         : RMUNJULU 05-FEB-03 2788257 Changed to add fkey checks
850 
851     PROCEDURE validate_qte_id (
852                      x_return_status OUT NOCOPY VARCHAR2,
853                      p_tqlv_rec      IN tqlv_rec_type    ) IS
854 
855       -- Get the Fkey for qte_id from quotes table
856       CURSOR  okl_qtev_fk_csr (p_qte_id IN NUMBER) IS
857       SELECT  'x'
858       FROM    OKL_TRX_QUOTES_V QTE
859       WHERE   QTE.ID = p_qte_id;
860 
861       l_dummy_var VARCHAR2(1) := '?';
862 
863     BEGIN
864 
865       -- initialize return status
866       x_return_status := OKC_API.G_RET_STS_SUCCESS;
867 
868       IF ((p_tqlv_rec.qte_id = OKC_API.G_MISS_NUM)
869       OR (p_tqlv_rec.qte_id IS NULL)) THEN
870 
871          OKC_API.SET_MESSAGE(
872                       p_app_name     => G_APP_NAME,
873                       p_msg_name     => G_REQUIRED_VALUE,
874                       p_token1       => G_COL_NAME_TOKEN,
875                       p_token1_value => 'qte_id');
876 
877           x_return_status := OKC_API.G_RET_STS_ERROR;
878 
879           RAISE G_EXCEPTION_HALT_VALIDATION;
880 
881       END IF;
882 
883       -- RMUNJULU 05-FEB-03 2788257 added fkey checks
884       OPEN  okl_qtev_fk_csr(p_tqlv_rec.qte_id);
885       FETCH okl_qtev_fk_csr INTO l_dummy_var;
886       CLOSE okl_qtev_fk_csr;
887 
888       -- if l_dummy_var is still set to default, data was not found
889       IF (l_dummy_var = '?') THEN
890 
891           OKC_API.set_message(
892                           p_app_name       => 'OKL',
893                           p_msg_name       => G_NO_PARENT_RECORD,
894                           p_token1         => G_COL_NAME_TOKEN,
895                           p_token1_value   => 'qte_id',
896                           p_token2         => G_CHILD_TABLE_TOKEN,
897                           p_token2_value   => 'OKL_TXL_QUOTE_LINES_V',
898                           p_token3         => G_PARENT_TABLE_TOKEN,
899                           p_token3_value   => 'OKL_TRX_QUOTES_V');
900 
901           -- notify caller of an error
902           x_return_status := OKC_API.G_RET_STS_ERROR;
903 
904       END IF;
905 
906     EXCEPTION
907 
908        WHEN G_EXCEPTION_HALT_VALIDATION THEN
909 
910          NULL;
911 
912        WHEN OTHERS THEN
913 
914          -- close cursor if open
915          IF okl_qtev_fk_csr%ISOPEN THEN
916             CLOSE okl_qtev_fk_csr;
917          END IF;
918 
919          OKL_API.set_message(p_app_name     => G_APP_NAME,
920                              p_msg_name     => G_UNEXPECTED_ERROR,
921                              p_token1       => G_SQLCODE_TOKEN,
922                              p_token1_value => SQLCODE,
923                              p_token2       => G_SQLERRM_TOKEN,
924                              p_token2_value => SQLERRM);
925 
926          x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
927 
928 
929     END validate_qte_id;
930 
931 
932 ------------------------------------
933 -- PROCEDURE validate_line_number--
934 ------------------------------------
935 -- Function Name  : validate_line_number
936 -- Description     : To validate the Line Number
937 -- Business Rules  :
938 -- Parameters      : Record
939 -- Version         : 1.0
940 
941     PROCEDURE validate_line_number (
942       x_return_status OUT NOCOPY VARCHAR2,
943       p_tqlv_rec IN tqlv_rec_type
944     ) IS
945     BEGIN
946     IF p_tqlv_rec.line_number = OKC_API.G_MISS_NUM OR
947           p_tqlv_rec.line_number IS NULL
948     THEN
949          OKC_API.SET_MESSAGE(p_app_name => g_app_name,
950                              p_msg_name => g_required_value,
951                              p_token1   => g_col_name_token,
952                              p_token1_value => 'line_number');
953 
954           x_return_status := OKC_API.G_RET_STS_ERROR;
955           raise G_EXCEPTION_HALT_VALIDATION;
956     ELSE
957           x_return_status := OKC_API.G_RET_STS_SUCCESS;
958      END IF;
959       exception
960        when G_EXCEPTION_HALT_VALIDATION then
961           null;
962        when OTHERS then
963          OKC_API.SET_MESSAGE(p_app_name => g_app_name,
964                              p_msg_name => G_UNEXPECTED_ERROR,
965                              p_token1   => g_sqlcode_token,
966                              p_token1_value => sqlcode,
967                              p_token2       => g_sqlerrm_token,
968                              p_token2_value => sqlerrm);
969          x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
970     END validate_line_number;
971 
972 
973 
974 
975     -- Start Comments
976     --
977     -- Procedure Name  : validate_amount
978     -- Description     : Validate the amount column
979     -- Business Rules  :
980     -- Parameters      : Record
981     -- Version         : 1.0
982     -- History         : RMUNJULU 05-FEB-03 2788257 Added
983     --
984     -- End Comments
985     PROCEDURE validate_amount(
986                      x_return_status OUT NOCOPY VARCHAR2,
987                      p_tqlv_rec      IN  tqlv_rec_type) IS
988 
989     BEGIN
990 
991       x_return_status := OKL_API.G_RET_STS_SUCCESS;
992 
993       -- If amount not passed then raise error
994       IF p_tqlv_rec.amount = OKL_API.G_MISS_NUM
995       OR p_tqlv_rec.amount IS NULL THEN
996 
997          OKC_API.set_message(
998                      p_app_name     => G_APP_NAME,
999                      p_msg_name     => G_REQUIRED_VALUE,
1000                      p_token1       => G_COL_NAME_TOKEN,
1001                      p_token1_value => 'amount');
1002 
1003           x_return_status := OKL_API.G_RET_STS_ERROR;
1004 
1005           RAISE G_EXCEPTION_HALT_VALIDATION;
1006 
1007       END IF;
1008 
1009     EXCEPTION
1010 
1011       WHEN G_EXCEPTION_HALT_VALIDATION THEN
1012           NULL;
1013 
1014        WHEN OTHERS THEN
1015 
1016          OKL_API.set_message(p_app_name     => G_APP_NAME,
1017                              p_msg_name     => G_UNEXPECTED_ERROR,
1018                              p_token1       => G_SQLCODE_TOKEN,
1019                              p_token1_value => SQLCODE,
1020                              p_token2       => G_SQLERRM_TOKEN,
1021                              p_token2_value => SQLERRM);
1022 
1023          x_return_status := OKL_API.G_RET_STS_UNEXP_ERROR;
1024 
1025     END validate_amount;
1026 
1027 
1028   ---------------------------------------------------------------------------
1029   -- FUNCTION get_seq_id
1030   ---------------------------------------------------------------------------
1031   FUNCTION get_seq_id RETURN NUMBER IS
1032   BEGIN
1033     RETURN(okc_p_util.raw_to_number(sys_guid()));
1034   END get_seq_id;
1035 
1036   ---------------------------------------------------------------------------
1037   -- PROCEDURE qc
1038   ---------------------------------------------------------------------------
1039   PROCEDURE qc IS
1040   BEGIN
1041     null;
1042   END qc;
1043 
1044   ---------------------------------------------------------------------------
1045   -- PROCEDURE change_version
1046   ---------------------------------------------------------------------------
1047   PROCEDURE change_version IS
1048   BEGIN
1049     null;
1050   END change_version;
1051 
1052   ---------------------------------------------------------------------------
1053   -- PROCEDURE api_copy
1054   ---------------------------------------------------------------------------
1055   PROCEDURE api_copy IS
1056   BEGIN
1057     null;
1058   END api_copy;
1059 
1060   ---------------------------------------------------------------------------
1061   -- PROCEDURE add_language
1062   ---------------------------------------------------------------------------
1063   PROCEDURE add_language IS
1064   BEGIN
1065     DELETE FROM OKL_TXL_QUOTE_LINES_TL T
1066      WHERE NOT EXISTS (
1067         SELECT NULL
1068           FROM OKL_TXL_QTE_LINES_ALL_B B
1069          WHERE B.ID = T.ID
1070          AND T.LANGUAGE = USERENV('LANG')
1071         );
1072 
1073     UPDATE OKL_TXL_QUOTE_LINES_TL T SET (
1074         DESCRIPTION) = (SELECT
1075                                   B.DESCRIPTION
1076                                 FROM OKL_TXL_QUOTE_LINES_TL B
1077                                WHERE B.ID = T.ID
1078                                  AND B.LANGUAGE = T.SOURCE_LANG)
1079       WHERE (
1080               T.ID,
1081               T.LANGUAGE)
1082           IN (SELECT
1083                   SUBT.ID,
1084                   SUBT.LANGUAGE
1085                 FROM OKL_TXL_QUOTE_LINES_TL SUBB, OKL_TXL_QUOTE_LINES_TL SUBT
1086                WHERE SUBB.ID = SUBT.ID
1087                  AND SUBB.LANGUAGE = SUBT.SOURCE_LANG
1088                  AND (SUBB.DESCRIPTION <> SUBT.DESCRIPTION
1089                       OR (SUBB.DESCRIPTION IS NULL AND SUBT.DESCRIPTION IS NOT NULL)
1090                       OR (SUBB.DESCRIPTION IS NOT NULL AND SUBT.DESCRIPTION IS NULL)
1091               ));
1092 
1093     INSERT INTO OKL_TXL_QUOTE_LINES_TL (
1094         ID,
1095         LANGUAGE,
1096         SOURCE_LANG,
1097         SFWT_FLAG,
1098         DESCRIPTION,
1099         CREATED_BY,
1100         CREATION_DATE,
1101         LAST_UPDATED_BY,
1102         LAST_UPDATE_DATE,
1103         LAST_UPDATE_LOGIN)
1104       SELECT
1105             B.ID,
1106             L.LANGUAGE_CODE,
1107             B.SOURCE_LANG,
1108             B.SFWT_FLAG,
1109             B.DESCRIPTION,
1110             B.CREATED_BY,
1111             B.CREATION_DATE,
1112             B.LAST_UPDATED_BY,
1113             B.LAST_UPDATE_DATE,
1114             B.LAST_UPDATE_LOGIN
1115         FROM OKL_TXL_QUOTE_LINES_TL B, FND_LANGUAGES L
1116        WHERE L.INSTALLED_FLAG IN ('I', 'B')
1117          AND B.LANGUAGE = USERENV('LANG')
1118          AND NOT EXISTS(
1119                     SELECT NULL
1120                       FROM OKL_TXL_QUOTE_LINES_TL T
1121                      WHERE T.ID = B.ID
1122                        AND T.LANGUAGE = L.LANGUAGE_CODE
1123                     );
1124 
1125   END add_language;
1126 
1127   ---------------------------------------------------------------------------
1128   -- FUNCTION get_rec for: OKL_TXL_QUOTE_LINES_B
1129   ---------------------------------------------------------------------------
1130   -- Start of comments
1131   -- Function Name   : get_rec
1132   -- Description     : get record structure of OKL_TXL_QUOTE_LINES_B table
1133   -- Business Rules  :
1134   -- Parameters      : Record structure of OKL_TXL_QUOTE_LINES_B table
1135   -- Version         : 1.0
1136   -- History         : 18-DEC-2002 BAKUCHIB 2667636 Modified
1137   --                 : Added columns Currency code, currency Conversion_code
1138   --                   Currency conversion type, currency conversion date
1139   --                   currency conversion rate.
1140   --                 : 15-Feb-2005 PAGARG 4161133 Added column DUE_DATE
1141   -- End of comments
1142 
1143   FUNCTION get_rec (
1144     p_tql_rec                      IN tql_rec_type,
1145     x_no_data_found                OUT NOCOPY BOOLEAN
1146   ) RETURN tql_rec_type IS
1147     CURSOR tql_pk_csr (p_id                 IN NUMBER) IS
1148     SELECT
1149             ID,
1150             STY_ID,
1151             KLE_ID,
1152             QLT_CODE,
1153             QTE_ID,
1154             LINE_NUMBER,
1155             AMOUNT,
1156             OBJECT_VERSION_NUMBER,
1157             MODIFIED_YN,
1158             DEFAULTED_YN,
1159             TAXED_YN,
1160             ORG_ID,
1161             REQUEST_ID,
1162             PROGRAM_APPLICATION_ID,
1163             PROGRAM_ID,
1164             PROGRAM_UPDATE_DATE,
1165             ATTRIBUTE_CATEGORY,
1166             ATTRIBUTE1,
1167             ATTRIBUTE2,
1168             ATTRIBUTE3,
1169             ATTRIBUTE4,
1170             ATTRIBUTE5,
1171             ATTRIBUTE6,
1172             ATTRIBUTE7,
1173             ATTRIBUTE8,
1174             ATTRIBUTE9,
1175             ATTRIBUTE10,
1176             ATTRIBUTE11,
1177             ATTRIBUTE12,
1178             ATTRIBUTE13,
1179             ATTRIBUTE14,
1180             ATTRIBUTE15,
1181             CREATED_BY,
1182             CREATION_DATE,
1183             LAST_UPDATED_BY,
1184             LAST_UPDATE_DATE,
1185             LAST_UPDATE_LOGIN,
1186             START_DATE,
1187             PERIOD,
1188             NUMBER_OF_PERIODS,
1189             LOCK_LEVEL_STEP,
1190             ADVANCE_OR_ARREARS,
1191             YIELD_NAME,
1192             YIELD_VALUE,
1193             IMPLICIT_INTEREST_RATE,
1194             ASSET_VALUE,
1195             RESIDUAL_VALUE,
1196             UNBILLED_RECEIVABLES,
1197             ASSET_QUANTITY,
1198             QUOTE_QUANTITY,
1199             SPLIT_KLE_ID,
1200             SPLIT_KLE_NAME, -- RMUNJULU 2757312
1201   -- BAKUCHIB 2667636 Start
1202             CURRENCY_CODE,
1203             CURRENCY_CONVERSION_CODE,
1204             CURRENCY_CONVERSION_TYPE,
1205             CURRENCY_CONVERSION_RATE,
1206             CURRENCY_CONVERSION_DATE,
1207   -- BAKUCHIB 2667636 End
1208             DUE_DATE, -- PAGARG 4161133
1209             try_id -- rmunjulu Sales_Tax_Enhancement
1210       FROM Okl_Txl_Quote_Lines_B
1211      WHERE okl_txl_quote_lines_b.id = p_id;
1212     l_tql_pk                       tql_pk_csr%ROWTYPE;
1213     l_tql_rec                      tql_rec_type;
1214   BEGIN
1215     x_no_data_found := TRUE;
1216     -- Get current database values
1217     OPEN tql_pk_csr (p_tql_rec.id);
1218     FETCH tql_pk_csr INTO
1219               l_tql_rec.ID,
1220               l_tql_rec.STY_ID,
1221               l_tql_rec.KLE_ID,
1222               l_tql_rec.QLT_CODE,
1223               l_tql_rec.QTE_ID,
1224               l_tql_rec.LINE_NUMBER,
1225               l_tql_rec.AMOUNT,
1226               l_tql_rec.OBJECT_VERSION_NUMBER,
1227               l_tql_rec.MODIFIED_YN,
1228               l_tql_rec.DEFAULTED_YN,
1229               l_tql_rec.TAXED_YN,
1230               l_tql_rec.ORG_ID,
1231               l_tql_rec.REQUEST_ID,
1232               l_tql_rec.PROGRAM_APPLICATION_ID,
1233               l_tql_rec.PROGRAM_ID,
1234               l_tql_rec.PROGRAM_UPDATE_DATE,
1235               l_tql_rec.ATTRIBUTE_CATEGORY,
1236               l_tql_rec.ATTRIBUTE1,
1237               l_tql_rec.ATTRIBUTE2,
1238               l_tql_rec.ATTRIBUTE3,
1239               l_tql_rec.ATTRIBUTE4,
1240               l_tql_rec.ATTRIBUTE5,
1241               l_tql_rec.ATTRIBUTE6,
1242               l_tql_rec.ATTRIBUTE7,
1243               l_tql_rec.ATTRIBUTE8,
1244               l_tql_rec.ATTRIBUTE9,
1245               l_tql_rec.ATTRIBUTE10,
1246               l_tql_rec.ATTRIBUTE11,
1247               l_tql_rec.ATTRIBUTE12,
1248               l_tql_rec.ATTRIBUTE13,
1249               l_tql_rec.ATTRIBUTE14,
1250               l_tql_rec.ATTRIBUTE15,
1251               l_tql_rec.CREATED_BY,
1252               l_tql_rec.CREATION_DATE,
1253               l_tql_rec.LAST_UPDATED_BY,
1254               l_tql_rec.LAST_UPDATE_DATE,
1255               l_tql_rec.LAST_UPDATE_LOGIN,
1256               l_tql_rec.START_DATE,
1257               l_tql_rec.PERIOD,
1258               l_tql_rec.NUMBER_OF_PERIODS,
1259               l_tql_rec.LOCK_LEVEL_STEP,
1260               l_tql_rec.ADVANCE_OR_ARREARS,
1261               l_tql_rec.YIELD_NAME,
1262               l_tql_rec.YIELD_VALUE,
1263               l_tql_rec.IMPLICIT_INTEREST_RATE,
1264               l_tql_rec.ASSET_VALUE,
1265               l_tql_rec.RESIDUAL_VALUE,
1266               l_tql_rec.UNBILLED_RECEIVABLES,
1267               l_tql_rec.ASSET_QUANTITY,
1268               l_tql_rec.QUOTE_QUANTITY,
1269               l_tql_rec.SPLIT_KLE_ID,
1270               l_tql_rec.SPLIT_KLE_NAME, -- RMUNJULU 2757312
1271   -- BAKUCHIB 2667636 Start
1272               l_tql_rec.CURRENCY_CODE,
1273               l_tql_rec.CURRENCY_CONVERSION_CODE,
1274               l_tql_rec.CURRENCY_CONVERSION_TYPE,
1275               l_tql_rec.CURRENCY_CONVERSION_RATE,
1276               l_tql_rec.CURRENCY_CONVERSION_DATE,
1277   -- BAKUCHIB 2667636 End
1278               l_tql_rec.DUE_DATE, -- PAGARG 4161133
1279               l_tql_rec.try_id; -- rmunjulu Sales_Tax_Enhancement
1280     x_no_data_found := tql_pk_csr%NOTFOUND;
1281     CLOSE tql_pk_csr;
1282     RETURN(l_tql_rec);
1283   END get_rec;
1284 
1285   FUNCTION get_rec (
1286     p_tql_rec                      IN tql_rec_type
1287   ) RETURN tql_rec_type IS
1288     l_row_notfound                 BOOLEAN := TRUE;
1289   BEGIN
1290     RETURN(get_rec(p_tql_rec, l_row_notfound));
1291   END get_rec;
1292   ---------------------------------------------------------------------------
1293   -- FUNCTION get_rec for: OKL_TXL_QUOTE_LINES_TL
1294   ---------------------------------------------------------------------------
1295   FUNCTION get_rec (
1296     p_okl_txl_quote_lines_tl_rec   IN OklTxlQuoteLinesTlRecType,
1297     x_no_data_found                OUT NOCOPY BOOLEAN
1298   ) RETURN OklTxlQuoteLinesTlRecType IS
1299     CURSOR okl_txl_quote_lines_tl_pk_csr (p_id                 IN NUMBER,
1300                                           p_language           IN VARCHAR2) IS
1301     SELECT
1302             ID,
1303             LANGUAGE,
1304             SOURCE_LANG,
1305             SFWT_FLAG,
1306             DESCRIPTION,
1307             CREATED_BY,
1308             CREATION_DATE,
1309             LAST_UPDATED_BY,
1310             LAST_UPDATE_DATE,
1311             LAST_UPDATE_LOGIN
1312       FROM Okl_Txl_Quote_Lines_Tl
1313      WHERE okl_txl_quote_lines_tl.id = p_id
1314        AND okl_txl_quote_lines_tl.language = p_language;
1315     l_okl_txl_quote_lines_tl_pk    okl_txl_quote_lines_tl_pk_csr%ROWTYPE;
1316     l_okl_txl_quote_lines_tl_rec   OklTxlQuoteLinesTlRecType;
1317   BEGIN
1318     x_no_data_found := TRUE;
1319     -- Get current database values
1320     OPEN okl_txl_quote_lines_tl_pk_csr (p_okl_txl_quote_lines_tl_rec.id,
1321                                         p_okl_txl_quote_lines_tl_rec.language);
1322     FETCH okl_txl_quote_lines_tl_pk_csr INTO
1323               l_okl_txl_quote_lines_tl_rec.ID,
1324               l_okl_txl_quote_lines_tl_rec.LANGUAGE,
1325               l_okl_txl_quote_lines_tl_rec.SOURCE_LANG,
1326               l_okl_txl_quote_lines_tl_rec.SFWT_FLAG,
1327               l_okl_txl_quote_lines_tl_rec.DESCRIPTION,
1328               l_okl_txl_quote_lines_tl_rec.CREATED_BY,
1329               l_okl_txl_quote_lines_tl_rec.CREATION_DATE,
1330               l_okl_txl_quote_lines_tl_rec.LAST_UPDATED_BY,
1331               l_okl_txl_quote_lines_tl_rec.LAST_UPDATE_DATE,
1332               l_okl_txl_quote_lines_tl_rec.LAST_UPDATE_LOGIN;
1333     x_no_data_found := okl_txl_quote_lines_tl_pk_csr%NOTFOUND;
1334     CLOSE okl_txl_quote_lines_tl_pk_csr;
1335     RETURN(l_okl_txl_quote_lines_tl_rec);
1336   END get_rec;
1337 
1338   FUNCTION get_rec (
1339     p_okl_txl_quote_lines_tl_rec   IN OklTxlQuoteLinesTlRecType
1340   ) RETURN OklTxlQuoteLinesTlRecType IS
1341     l_row_notfound                 BOOLEAN := TRUE;
1342   BEGIN
1343     RETURN(get_rec(p_okl_txl_quote_lines_tl_rec, l_row_notfound));
1344   END get_rec;
1345   ---------------------------------------------------------------------------
1346   -- FUNCTION get_rec for: OKL_TXL_QUOTE_LINES_V
1347   ---------------------------------------------------------------------------
1348   -- Start of comments
1349   -- Function Name   : get_rec
1350   -- Description     : get record structure of OKL_TXL_QUOTE_LINES_V table
1351   -- Business Rules  :
1352   -- Parameters      : Record structure of OKL_TXL_QUOTE_LINES_V table
1353   -- Version         : 1.0
1354   -- History         : 18-DEC-2002 BAKUCHIB 2667636 Modified
1355   --                 : Added columns Currency code, currency Conversion_code
1356   --                   Currency conversion type, currency conversion date
1357   --                   currency conversion rate.
1358   --                 : 15-Feb-2005 PAGARG 4161133 Added column DUE_DATE
1359   -- End of comments
1360   FUNCTION get_rec (
1361     p_tqlv_rec                     IN tqlv_rec_type,
1362     x_no_data_found                OUT NOCOPY BOOLEAN
1363   ) RETURN tqlv_rec_type IS
1364     CURSOR okl_tqlv_pk_csr (p_id                 IN NUMBER) IS
1365     SELECT
1366             ID,
1367             OBJECT_VERSION_NUMBER,
1368             SFWT_FLAG,
1369             QLT_CODE,
1370             KLE_ID,
1371             STY_ID,
1372             QTE_ID,
1373             LINE_NUMBER,
1374             DESCRIPTION,
1375             AMOUNT,
1376             MODIFIED_YN,
1377             DEFAULTED_YN,
1378             TAXED_YN,
1379             ATTRIBUTE_CATEGORY,
1380             ATTRIBUTE1,
1381             ATTRIBUTE2,
1382             ATTRIBUTE3,
1383             ATTRIBUTE4,
1384             ATTRIBUTE5,
1385             ATTRIBUTE6,
1386             ATTRIBUTE7,
1387             ATTRIBUTE8,
1388             ATTRIBUTE9,
1389             ATTRIBUTE10,
1390             ATTRIBUTE11,
1391             ATTRIBUTE12,
1392             ATTRIBUTE13,
1393             ATTRIBUTE14,
1394             ATTRIBUTE15,
1395             ORG_ID,
1396             REQUEST_ID,
1397             PROGRAM_APPLICATION_ID,
1398             PROGRAM_ID,
1399             PROGRAM_UPDATE_DATE,
1400             CREATED_BY,
1401             CREATION_DATE,
1402             LAST_UPDATED_BY,
1403             LAST_UPDATE_DATE,
1404             LAST_UPDATE_LOGIN,
1405             START_DATE,
1406             PERIOD,
1407             NUMBER_OF_PERIODS,
1408             LOCK_LEVEL_STEP,
1409             ADVANCE_OR_ARREARS,
1410             YIELD_NAME,
1411             YIELD_VALUE,
1412             IMPLICIT_INTEREST_RATE,
1413             ASSET_VALUE,
1414             RESIDUAL_VALUE,
1415             UNBILLED_RECEIVABLES,
1416             ASSET_QUANTITY,
1417             QUOTE_QUANTITY,
1418             SPLIT_KLE_ID,
1419             SPLIT_KLE_NAME, -- RMUNJULU 2757312
1420   -- BAKUCHIB 2667636 Start
1421             CURRENCY_CODE,
1422             CURRENCY_CONVERSION_CODE,
1423             CURRENCY_CONVERSION_TYPE,
1424             CURRENCY_CONVERSION_RATE,
1425             CURRENCY_CONVERSION_DATE,
1426   -- BAKUCHIB 2667636 End
1427             DUE_DATE, -- PAGARG 4161133
1428             try_id -- rmunjulu Sales_Tax_Enhancement
1429       FROM Okl_Txl_Quote_Lines_V
1430      WHERE okl_txl_quote_lines_v.id = p_id;
1431     l_okl_tqlv_pk                  okl_tqlv_pk_csr%ROWTYPE;
1432     l_tqlv_rec                     tqlv_rec_type;
1433   BEGIN
1434     x_no_data_found := TRUE;
1435     -- Get current database values
1436     OPEN okl_tqlv_pk_csr (p_tqlv_rec.id);
1437     FETCH okl_tqlv_pk_csr INTO
1438               l_tqlv_rec.ID,
1439               l_tqlv_rec.OBJECT_VERSION_NUMBER,
1440               l_tqlv_rec.SFWT_FLAG,
1441               l_tqlv_rec.QLT_CODE,
1442               l_tqlv_rec.KLE_ID,
1443               l_tqlv_rec.STY_ID,
1444               l_tqlv_rec.QTE_ID,
1445               l_tqlv_rec.LINE_NUMBER,
1446               l_tqlv_rec.DESCRIPTION,
1447               l_tqlv_rec.AMOUNT,
1448               l_tqlv_rec.MODIFIED_YN,
1449               l_tqlv_rec.DEFAULTED_YN,
1450               l_tqlv_rec.TAXED_YN,
1451               l_tqlv_rec.ATTRIBUTE_CATEGORY,
1452               l_tqlv_rec.ATTRIBUTE1,
1453               l_tqlv_rec.ATTRIBUTE2,
1454               l_tqlv_rec.ATTRIBUTE3,
1455               l_tqlv_rec.ATTRIBUTE4,
1456               l_tqlv_rec.ATTRIBUTE5,
1457               l_tqlv_rec.ATTRIBUTE6,
1458               l_tqlv_rec.ATTRIBUTE7,
1459               l_tqlv_rec.ATTRIBUTE8,
1460               l_tqlv_rec.ATTRIBUTE9,
1461               l_tqlv_rec.ATTRIBUTE10,
1462               l_tqlv_rec.ATTRIBUTE11,
1463               l_tqlv_rec.ATTRIBUTE12,
1464               l_tqlv_rec.ATTRIBUTE13,
1465               l_tqlv_rec.ATTRIBUTE14,
1466               l_tqlv_rec.ATTRIBUTE15,
1467               l_tqlv_rec.ORG_ID,
1468               l_tqlv_rec.REQUEST_ID,
1469               l_tqlv_rec.PROGRAM_APPLICATION_ID,
1470               l_tqlv_rec.PROGRAM_ID,
1471               l_tqlv_rec.PROGRAM_UPDATE_DATE,
1472               l_tqlv_rec.CREATED_BY,
1473               l_tqlv_rec.CREATION_DATE,
1474               l_tqlv_rec.LAST_UPDATED_BY,
1475               l_tqlv_rec.LAST_UPDATE_DATE,
1476               l_tqlv_rec.LAST_UPDATE_LOGIN,
1477               l_tqlv_rec.START_DATE,
1478               l_tqlv_rec.PERIOD,
1479               l_tqlv_rec.NUMBER_OF_PERIODS,
1480               l_tqlv_rec.LOCK_LEVEL_STEP,
1481               l_tqlv_rec.ADVANCE_OR_ARREARS,
1482               l_tqlv_rec.YIELD_NAME,
1483               l_tqlv_rec.YIELD_VALUE,
1484               l_tqlv_rec.IMPLICIT_INTEREST_RATE,
1485               l_tqlv_rec.ASSET_VALUE,
1486               l_tqlv_rec.RESIDUAL_VALUE,
1487               l_tqlv_rec.UNBILLED_RECEIVABLES,
1488               l_tqlv_rec.ASSET_QUANTITY,
1489               l_tqlv_rec.QUOTE_QUANTITY,
1490               l_tqlv_rec.SPLIT_KLE_ID,
1491               l_tqlv_rec.SPLIT_KLE_NAME, -- RMUNJULU 2757312
1492   -- BAKUCHIB 2667636 Start
1493               l_tqlv_rec.CURRENCY_CODE,
1494               l_tqlv_rec.CURRENCY_CONVERSION_CODE,
1495               l_tqlv_rec.CURRENCY_CONVERSION_TYPE,
1496               l_tqlv_rec.CURRENCY_CONVERSION_RATE,
1497               l_tqlv_rec.CURRENCY_CONVERSION_DATE,
1498   -- BAKUCHIB 2667636 End
1499               l_tqlv_rec.DUE_DATE, -- PAGARG 4161133
1500               l_tqlv_rec.try_id; -- rmunjulu Sales_Tax_Enhancement
1501     x_no_data_found := okl_tqlv_pk_csr%NOTFOUND;
1502     CLOSE okl_tqlv_pk_csr;
1503     RETURN(l_tqlv_rec);
1504   END get_rec;
1505 
1506   FUNCTION get_rec (
1507     p_tqlv_rec                     IN tqlv_rec_type
1508   ) RETURN tqlv_rec_type IS
1509     l_row_notfound                 BOOLEAN := TRUE;
1510   BEGIN
1511     RETURN(get_rec(p_tqlv_rec, l_row_notfound));
1512   END get_rec;
1513 
1514   -----------------------------------------------------------
1515   -- FUNCTION null_out_defaults for: OKL_TXL_QUOTE_LINES_V --
1516   -----------------------------------------------------------
1517   -- Start of comments
1518   -- Function Name   : null_out_defaults
1519   -- Description     : Null out record structure of OKL_TXL_QUOTE_LINES_V table
1520   -- Business Rules  :
1521   -- Parameters      : Record structure of OKL_TXL_QUOTE_LINES_V table
1522   -- Version         : 1.0
1523   -- History         : 18-DEC-2002 BAKUCHIB 2667636 Modified
1524   --                 : Added columns Currency code, currency Conversion_code
1525   --                   Currency conversion type, currency conversion date
1526   --                   currency conversion rate.
1527   --                 : 15-Feb-2005 PAGARG Bug 4161133 Added code for DUE_DATE
1528   -- End of comments
1529 
1530   FUNCTION null_out_defaults (
1531     p_tqlv_rec	IN tqlv_rec_type
1532   ) RETURN tqlv_rec_type IS
1533     l_tqlv_rec	tqlv_rec_type := p_tqlv_rec;
1534   BEGIN
1535     IF (l_tqlv_rec.object_version_number = OKC_API.G_MISS_NUM) THEN
1536       l_tqlv_rec.object_version_number := NULL;
1537     END IF;
1538     IF (l_tqlv_rec.sfwt_flag = OKC_API.G_MISS_CHAR) THEN
1539       l_tqlv_rec.sfwt_flag := NULL;
1540     END IF;
1541     IF (l_tqlv_rec.qlt_code = OKC_API.G_MISS_CHAR) THEN
1542       l_tqlv_rec.qlt_code := NULL;
1543     END IF;
1544     IF (l_tqlv_rec.kle_id = OKC_API.G_MISS_NUM) THEN
1545       l_tqlv_rec.kle_id := NULL;
1546     END IF;
1547     IF (l_tqlv_rec.sty_id = OKC_API.G_MISS_NUM) THEN
1548       l_tqlv_rec.sty_id := NULL;
1549     END IF;
1550     IF (l_tqlv_rec.qte_id = OKC_API.G_MISS_NUM) THEN
1551       l_tqlv_rec.qte_id := NULL;
1552     END IF;
1553     IF (l_tqlv_rec.line_number = OKC_API.G_MISS_NUM) THEN
1554       l_tqlv_rec.line_number := NULL;
1555     END IF;
1556     IF (l_tqlv_rec.description = OKC_API.G_MISS_CHAR) THEN
1557       l_tqlv_rec.description := NULL;
1558     END IF;
1559     IF (l_tqlv_rec.amount = OKC_API.G_MISS_NUM) THEN
1560       l_tqlv_rec.amount := NULL;
1561     END IF;
1562     IF (l_tqlv_rec.modified_yn = OKC_API.G_MISS_CHAR) THEN
1563       l_tqlv_rec.modified_yn := NULL;
1564     END IF;
1565     IF (l_tqlv_rec.defaulted_yn = OKC_API.G_MISS_CHAR) THEN
1566       l_tqlv_rec.defaulted_yn := NULL;
1567     END IF;
1568     IF (l_tqlv_rec.taxed_yn = OKC_API.G_MISS_CHAR) THEN
1569       l_tqlv_rec.taxed_yn := NULL;
1570     END IF;
1571     IF (l_tqlv_rec.attribute_category = OKC_API.G_MISS_CHAR) THEN
1572       l_tqlv_rec.attribute_category := NULL;
1573     END IF;
1574     IF (l_tqlv_rec.attribute1 = OKC_API.G_MISS_CHAR) THEN
1575       l_tqlv_rec.attribute1 := NULL;
1576     END IF;
1577     IF (l_tqlv_rec.attribute2 = OKC_API.G_MISS_CHAR) THEN
1578       l_tqlv_rec.attribute2 := NULL;
1579     END IF;
1580     IF (l_tqlv_rec.attribute3 = OKC_API.G_MISS_CHAR) THEN
1581       l_tqlv_rec.attribute3 := NULL;
1582     END IF;
1583     IF (l_tqlv_rec.attribute4 = OKC_API.G_MISS_CHAR) THEN
1584       l_tqlv_rec.attribute4 := NULL;
1585     END IF;
1586     IF (l_tqlv_rec.attribute5 = OKC_API.G_MISS_CHAR) THEN
1587       l_tqlv_rec.attribute5 := NULL;
1588     END IF;
1589     IF (l_tqlv_rec.attribute6 = OKC_API.G_MISS_CHAR) THEN
1590       l_tqlv_rec.attribute6 := NULL;
1591     END IF;
1592     IF (l_tqlv_rec.attribute7 = OKC_API.G_MISS_CHAR) THEN
1593       l_tqlv_rec.attribute7 := NULL;
1594     END IF;
1595     IF (l_tqlv_rec.attribute8 = OKC_API.G_MISS_CHAR) THEN
1596       l_tqlv_rec.attribute8 := NULL;
1597     END IF;
1598     IF (l_tqlv_rec.attribute9 = OKC_API.G_MISS_CHAR) THEN
1599       l_tqlv_rec.attribute9 := NULL;
1600     END IF;
1601     IF (l_tqlv_rec.attribute10 = OKC_API.G_MISS_CHAR) THEN
1602       l_tqlv_rec.attribute10 := NULL;
1603     END IF;
1604     IF (l_tqlv_rec.attribute11 = OKC_API.G_MISS_CHAR) THEN
1605       l_tqlv_rec.attribute11 := NULL;
1606     END IF;
1607     IF (l_tqlv_rec.attribute12 = OKC_API.G_MISS_CHAR) THEN
1608       l_tqlv_rec.attribute12 := NULL;
1609     END IF;
1610     IF (l_tqlv_rec.attribute13 = OKC_API.G_MISS_CHAR) THEN
1611       l_tqlv_rec.attribute13 := NULL;
1612     END IF;
1613     IF (l_tqlv_rec.attribute14 = OKC_API.G_MISS_CHAR) THEN
1614       l_tqlv_rec.attribute14 := NULL;
1615     END IF;
1616     IF (l_tqlv_rec.attribute15 = OKC_API.G_MISS_CHAR) THEN
1617       l_tqlv_rec.attribute15 := NULL;
1618     END IF;
1619     IF (l_tqlv_rec.org_id = OKC_API.G_MISS_NUM) THEN
1620       l_tqlv_rec.org_id := NULL;
1621     END IF;
1622 /*
1623     IF (l_tqlv_rec.request_id = OKC_API.G_MISS_NUM) THEN
1624       l_tqlv_rec.request_id := NULL;
1625     END IF;
1626     IF (l_tqlv_rec.program_application_id = OKC_API.G_MISS_NUM) THEN
1627       l_tqlv_rec.program_application_id := NULL;
1628     END IF;
1629     IF (l_tqlv_rec.program_id = OKC_API.G_MISS_NUM) THEN
1630       l_tqlv_rec.program_id := NULL;
1631     END IF;
1632     IF (l_tqlv_rec.program_update_date = OKC_API.G_MISS_DATE) THEN
1633       l_tqlv_rec.program_update_date := NULL;
1634     END IF;
1635 */
1636   IF (l_tqlv_rec.created_by = OKC_API.G_MISS_NUM) THEN
1637       l_tqlv_rec.created_by := NULL;
1638     END IF;
1639     IF (l_tqlv_rec.creation_date = OKC_API.G_MISS_DATE) THEN
1640       l_tqlv_rec.creation_date := NULL;
1641     END IF;
1642     IF (l_tqlv_rec.last_updated_by = OKC_API.G_MISS_NUM) THEN
1643       l_tqlv_rec.last_updated_by := NULL;
1644     END IF;
1645     IF (l_tqlv_rec.last_update_date = OKC_API.G_MISS_DATE) THEN
1646       l_tqlv_rec.last_update_date := NULL;
1647     END IF;
1648     IF (l_tqlv_rec.last_update_login = OKC_API.G_MISS_NUM) THEN
1649       l_tqlv_rec.last_update_login := NULL;
1650     END IF;
1651     IF (l_tqlv_rec.start_date = OKC_API.G_MISS_DATE) THEN
1652       l_tqlv_rec.start_date := NULL;
1653     END IF;
1654     IF (l_tqlv_rec.period = OKC_API.G_MISS_CHAR) THEN
1655       l_tqlv_rec.period := NULL;
1656     END IF;
1657     IF (l_tqlv_rec.number_of_periods = OKC_API.G_MISS_NUM) THEN
1658       l_tqlv_rec.number_of_periods := NULL;
1659     END IF;
1660     IF (l_tqlv_rec.lock_level_step = OKC_API.G_MISS_CHAR) THEN
1661       l_tqlv_rec.lock_level_step := NULL;
1662     END IF;
1663     IF (l_tqlv_rec.advance_or_arrears = OKC_API.G_MISS_CHAR) THEN
1664       l_tqlv_rec.advance_or_arrears := NULL;
1665     END IF;
1666     IF (l_tqlv_rec.yield_name = OKC_API.G_MISS_CHAR) THEN
1667       l_tqlv_rec.yield_name := NULL;
1668     END IF;
1669     IF (l_tqlv_rec.yield_value = OKC_API.G_MISS_NUM) THEN
1670       l_tqlv_rec.yield_value := NULL;
1671     END IF;
1672     IF (l_tqlv_rec.implicit_interest_rate = OKC_API.G_MISS_NUM) THEN
1673       l_tqlv_rec.implicit_interest_rate := NULL;
1674     END IF;
1675     IF (l_tqlv_rec.asset_value = OKC_API.G_MISS_NUM) THEN
1676       l_tqlv_rec.asset_value := NULL;
1677     END IF;
1678     IF (l_tqlv_rec.residual_value = OKC_API.G_MISS_NUM) THEN
1679       l_tqlv_rec.residual_value := NULL;
1680     END IF;
1681     IF (l_tqlv_rec.unbilled_receivables = OKC_API.G_MISS_NUM) THEN
1682       l_tqlv_rec.unbilled_receivables := NULL;
1683     END IF;
1684     IF (l_tqlv_rec.asset_quantity = OKC_API.G_MISS_NUM) THEN
1685       l_tqlv_rec.asset_quantity := NULL;
1686     END IF;
1687     IF (l_tqlv_rec.quote_quantity = OKC_API.G_MISS_NUM) THEN
1688       l_tqlv_rec.quote_quantity := NULL;
1689     END IF;
1690     IF (l_tqlv_rec.split_kle_id = OKC_API.G_MISS_NUM) THEN
1691       l_tqlv_rec.split_kle_id := NULL;
1692     END IF;
1693     -- RMUNJULU 2757312
1694     IF (l_tqlv_rec.split_kle_name = OKC_API.G_MISS_CHAR) THEN
1695       l_tqlv_rec.split_kle_name := NULL;
1696     END IF;
1697   -- BAKUCHIB 2667636 Start
1698     IF (l_tqlv_rec.currency_code = OKC_API.G_MISS_CHAR) THEN
1699       l_tqlv_rec.currency_code := NULL;
1700     END IF;
1701     IF (l_tqlv_rec.currency_conversion_code = OKC_API.G_MISS_CHAR) THEN
1702       l_tqlv_rec.currency_conversion_code := NULL;
1703     END IF;
1704     IF (l_tqlv_rec.currency_conversion_type = OKC_API.G_MISS_CHAR) THEN
1705       l_tqlv_rec.currency_conversion_type := NULL;
1706     END IF;
1707     IF (l_tqlv_rec.currency_conversion_rate = OKC_API.G_MISS_NUM) THEN
1708       l_tqlv_rec.currency_conversion_rate := NULL;
1709     END IF;
1710     IF (l_tqlv_rec.currency_conversion_date = OKC_API.G_MISS_DATE) THEN
1711       l_tqlv_rec.currency_conversion_date := NULL;
1712     END IF;
1713   -- BAKUCHIB 2667636 End
1714     -- PAGARG Bug 4161133 Start
1715     -- null out defaults for new column DUE_DATE
1716     IF (l_tqlv_rec.due_date = OKL_API.G_MISS_DATE) THEN
1717       l_tqlv_rec.due_date := NULL;
1718     END IF;
1719     -- PAGARG Bug 4161133 End
1720     -- rmunjulu Sales_Tax_Enhancement
1721     IF (l_tqlv_rec.try_id = OKL_API.G_MISS_NUM) THEN
1722       l_tqlv_rec.try_id := NULL;
1723     END IF;
1724     RETURN(l_tqlv_rec);
1725   END null_out_defaults;
1726   ---------------------------------------------------------------------------
1727   -- PROCEDURE Validate_Attributes
1728   ---------------------------------------------------------------------------
1729   ---------------------------------------------------
1730   -- Validate_Attributes for:OKL_TXL_QUOTE_LINES_V --
1731   ---------------------------------------------------
1732   -- Start of comments
1733   -- Function Name   : Validate_Attributes
1734   -- Description     : Validate Attributes of record structure of
1735   --                   OKL_TXL_QUOTE_LINES_V table
1736   -- Business Rules  :
1737   -- Parameters      : Record structure of OKL_TXL_QUOTE_LINES_V table
1738   -- Version         : 1.0
1739   -- History         : 18-DEC-2002 BAKUCHIB 2667636 Modified
1740   --                 : Added Procedure for validation of Currency code,
1741   --                   currency Conversion_code and Currency conversion type
1742   --                   RMUNJULU 05-FEB-03 2788257 Added validate_amount call
1743   -- End of comments
1744   FUNCTION Validate_Attributes (
1745     p_tqlv_rec IN  tqlv_rec_type
1746   ) RETURN VARCHAR2 IS
1747     x_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1748     l_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1749   BEGIN
1750     validate_id(x_return_status => l_return_status,
1751                 p_tqlv_rec      => p_tqlv_rec);
1752 
1753     if (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1754        if (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) then
1755            x_return_status := l_return_status;
1756        end if;
1757     end if;
1758 
1759     validate_sfwt_flag(x_return_status => l_return_status,
1760                 p_tqlv_rec      => p_tqlv_rec);
1761 
1762     if (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1763        if (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) then
1764            x_return_status := l_return_status;
1765        end if;
1766     end if;
1767 
1768      validate_object_version_number(x_return_status => l_return_status,
1769                 p_tqlv_rec      => p_tqlv_rec);
1770 
1771     if (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1772        if (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) then
1773            x_return_status := l_return_status;
1774        end if;
1775     end if;
1776 
1777     validate_qte_id(x_return_status => l_return_status,
1778                 p_tqlv_rec      => p_tqlv_rec);
1779 
1780     if (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1781        if (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) then
1782            x_return_status := l_return_status;
1783        end if;
1784     end if;
1785 
1786     validate_line_number(x_return_status => l_return_status,
1787                 p_tqlv_rec      => p_tqlv_rec);
1788 
1789     if (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1790        if (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) then
1791            x_return_status := l_return_status;
1792        end if;
1793     end if;
1794 
1795     validate_fk_qlt_code(x_return_status => l_return_status,
1796                 p_tqlv_rec      => p_tqlv_rec);
1797 
1798     if (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1799        if (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) then
1800            x_return_status := l_return_status;
1801        end if;
1802     end if;
1803 
1804     validate_fk_sty_id(x_return_status => l_return_status,
1805                 p_tqlv_rec      => p_tqlv_rec);
1806 
1807     if (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1808        if (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) then
1809            x_return_status := l_return_status;
1810        end if;
1811     end if;
1812 
1813      validate_modified_yn_domain (x_return_status => l_return_status,
1814                                   p_tqlv_rec      => p_tqlv_rec);
1815      if (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1816        if (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) then
1817            x_return_status := l_return_status;
1818        end if;
1819      end if;
1820 
1821      validate_defaulted_yn_domain (x_return_status => l_return_status,
1822                                   p_tqlv_rec      => p_tqlv_rec);
1823      if (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1824        if (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) then
1825            x_return_status := l_return_status;
1826        end if;
1827      end if;
1828 
1829      validate_taxed_yn_domain (x_return_status => l_return_status,
1830                                   p_tqlv_rec      => p_tqlv_rec);
1831      if (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1832        if (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) then
1833            x_return_status := l_return_status;
1834        end if;
1835      end if;
1836 
1837     validate_org_id(x_return_status => l_return_status,
1838                 p_tqlv_rec      => p_tqlv_rec);
1839 
1840     if (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1841        if (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) then
1842            x_return_status := l_return_status;
1843        end if;
1844     end if;
1845     Validate_split_kle_id(x_return_status => l_return_status,
1846                                   p_tqlv_rec => p_tqlv_rec);
1847     if (l_return_status <> OKC_API.G_RET_STS_SUCCESS) then
1848        if (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) then
1849            x_return_status := l_return_status;
1850        end if;
1851     end if;
1852 
1853   -- BAKUCHIB 2667636 Start
1854     validate_currency_code(p_tqlv_rec      => p_tqlv_rec,
1855                            x_return_status => l_return_status);
1856     -- store the highest degree of error
1857     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1858        IF (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1859            x_return_status := l_return_status;
1860        END IF;
1861     END IF;
1862     validate_currency_con_code(p_tqlv_rec      => p_tqlv_rec,
1863                                x_return_status => l_return_status);
1864     -- store the highest degree of error
1865     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1866        IF (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1867            x_return_status := l_return_status;
1868        END IF;
1869     END IF;
1870     validate_currency_con_type(p_tqlv_rec      => p_tqlv_rec,
1871                                x_return_status => l_return_status);
1872     -- store the highest degree of error
1873     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1874        IF (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1875            x_return_status := l_return_status;
1876        END IF;
1877     END IF;
1878   -- BAKUCHIB 2667636 End
1879 
1880     -- RMUNJULU 05-FEB-03 2788257 Added call to validate_amount
1881     validate_amount(p_tqlv_rec      => p_tqlv_rec,
1882                     x_return_status => l_return_status);
1883 
1884     -- store the highest degree of error
1885     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1886        IF (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1887            x_return_status := l_return_status;
1888        END IF;
1889     END IF;
1890 
1891     -- rmunjulu Sales_Tax_Enhancement
1892     validate_try_id_fk(p_tqlv_rec      => p_tqlv_rec,
1893                        x_return_status => l_return_status);
1894 
1895     -- store the highest degree of error
1896     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1897        IF (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1898            x_return_status := l_return_status;
1899        END IF;
1900     END IF;
1901 
1902     RETURN(x_return_status);
1903 
1904     EXCEPTION
1905       WHEN OTHERS THEN
1906         -- store SQL error message on message stack for caller
1907         OKC_API.SET_MESSAGE(p_app_name	   => g_app_name,
1908                             p_msg_name     => g_unexpected_error,
1909                             p_token1       => g_sqlcode_token,
1910                             p_token1_value => sqlcode,
1911                             p_token2       => g_sqlerrm_token,
1912                             p_token2_value => sqlerrm);
1913 
1914         --notify caller of an UNEXPECTED error
1915         x_return_status  := OKC_API.G_RET_STS_UNEXP_ERROR;
1916 
1917         --return status to caller
1918         RETURN x_return_status;
1919   END Validate_Attributes;
1920 
1921   ---------------------------------------------------------------------------
1922   -- PROCEDURE Validate_Record
1923   ---------------------------------------------------------------------------
1924   -----------------------------------------------
1925   -- Validate_Record for:OKL_TXL_QUOTE_LINES_V --
1926   -----------------------------------------------
1927   -- Start of comments
1928   -- Function Name   : Validate_Record
1929   -- Description     : Validate Record of record structure of
1930   --                   OKL_TXL_QUOTE_LINES_V table
1931   -- Business Rules  :
1932   -- Parameters      : Record structure of OKL_TXL_QUOTE_LINES_V table
1933   -- Version         : 1.0
1934   -- History         : 18-DEC-2002 BAKUCHIB 2667636 Modified
1935   --                   Added Procedure to validate Currency conversion Code,type
1936   --                  ,rate and Date aganist currency code
1937   -- End of comments
1938   FUNCTION Validate_Record (
1939     p_tqlv_rec IN tqlv_rec_type
1940   ) RETURN VARCHAR2 IS
1941     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1942     x_return_status	VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1943   BEGIN
1944   -- BAKUCHIB 2667636 Start
1945     -- Validate Currency conversion Code,type,rate and Date
1946 
1947     validate_currency_record(p_tqlv_rec      => p_tqlv_rec,
1948                                  x_return_status => l_return_status);
1949     -- store the highest degree of error
1950     IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
1951        IF (x_return_status <> OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1952            x_return_status := l_return_status;
1953        END IF;
1954     END IF;
1955   -- BAKUCHIB 2667636 End
1956 
1957     RETURN (l_return_status);
1958   END Validate_Record;
1959 
1960   ---------------------------------------------------------------------------
1961   -- PROCEDURE Migrate
1962   ---------------------------------------------------------------------------
1963   -- Start of comments
1964   -- Procedure Name  : Migrate
1965   -- Description     : Migrate record structure of OKL_TXL_QUOTE_LINES_V table
1966   --                   to record structure of OKL_TXL_QUOTE_LINES_B table
1967   -- Business Rules  :
1968   -- Parameters      : IN Record structure of OKL_TXL_QUOTE_LINES_V table
1969   --                   IN OUT Record structure of OKL_TXL_QUOTE_LINES_B table
1970   -- Version         : 1.0
1971   -- History         : 18-DEC-2002 BAKUCHIB 2667636 Modified
1972   --                 : Added columns Currency code, currency Conversion_code
1973   --                   Currency conversion type, currency conversion date
1974   --                   currency conversion rate.
1975   --                 : 15-Feb-2005 PAGARG 4161133 Added code for due_date
1976   -- End of comments
1977   PROCEDURE migrate (
1978     p_from	IN tqlv_rec_type,
1979     p_to	IN OUT NOCOPY tql_rec_type
1980   ) IS
1981   BEGIN
1982     p_to.id := p_from.id;
1983     p_to.sty_id := p_from.sty_id;
1984     p_to.kle_id := p_from.kle_id;
1985     p_to.qlt_code := p_from.qlt_code;
1986     p_to.qte_id := p_from.qte_id;
1987     p_to.line_number := p_from.line_number;
1988     p_to.amount := p_from.amount;
1989     p_to.object_version_number := p_from.object_version_number;
1990     p_to.modified_yn := p_from.modified_yn;
1991     p_to.defaulted_yn := p_from.defaulted_yn;
1992     p_to.taxed_yn := p_from.taxed_yn;
1993     p_to.org_id := p_from.org_id;
1994     p_to.request_id := p_from.request_id;
1995     p_to.program_application_id := p_from.program_application_id;
1996     p_to.program_id := p_from.program_id;
1997     p_to.program_update_date := p_from.program_update_date;
1998     p_to.attribute_category := p_from.attribute_category;
1999     p_to.attribute1 := p_from.attribute1;
2000     p_to.attribute2 := p_from.attribute2;
2001     p_to.attribute3 := p_from.attribute3;
2002     p_to.attribute4 := p_from.attribute4;
2003     p_to.attribute5 := p_from.attribute5;
2004     p_to.attribute6 := p_from.attribute6;
2005     p_to.attribute7 := p_from.attribute7;
2006     p_to.attribute8 := p_from.attribute8;
2007     p_to.attribute9 := p_from.attribute9;
2008     p_to.attribute10 := p_from.attribute10;
2009     p_to.attribute11 := p_from.attribute11;
2010     p_to.attribute12 := p_from.attribute12;
2011     p_to.attribute13 := p_from.attribute13;
2012     p_to.attribute14 := p_from.attribute14;
2013     p_to.attribute15 := p_from.attribute15;
2014     p_to.created_by := p_from.created_by;
2015     p_to.creation_date := p_from.creation_date;
2016     p_to.last_updated_by := p_from.last_updated_by;
2017     p_to.last_update_date := p_from.last_update_date;
2018     p_to.last_update_login := p_from.last_update_login;
2019     p_to.start_date := p_from.start_date;
2020     p_to.period := p_from.period;
2021     p_to.number_of_periods := p_from.number_of_periods;
2022     p_to.lock_level_step := p_from.lock_level_step;
2023     p_to.advance_or_arrears := p_from.advance_or_arrears;
2024     p_to.yield_name := p_from.yield_name;
2025     p_to.yield_value := p_from.yield_value;
2026     p_to.implicit_interest_rate := p_from.implicit_interest_rate;
2027     p_to.asset_value := p_from.asset_value;
2028     p_to.residual_value := p_from.residual_value;
2029     p_to.unbilled_receivables := p_from.unbilled_receivables;
2030     p_to.asset_quantity := p_from.asset_quantity;
2031     p_to.quote_quantity := p_from.quote_quantity;
2032     p_to.split_kle_id := p_from.split_kle_id;
2033     -- RMUNJULU 2757312
2034     p_to.split_kle_name := p_from.split_kle_name;
2035   -- BAKUCHIB 2667636 Start
2036     p_to.currency_code  := p_from.currency_code;
2037     p_to.currency_conversion_code  := p_from.currency_conversion_code;
2038     p_to.currency_conversion_type  := p_from.currency_conversion_type;
2039     p_to.currency_conversion_rate  := p_from.currency_conversion_rate;
2040     p_to.currency_conversion_date  := p_from.currency_conversion_date;
2041   -- BAKUCHIB 2667636 End
2042     p_to.due_date  := p_from.due_date; -- PAGARG 4161133
2043     -- rmunjulu Sales_Tax_Enhancement
2044 	p_to.try_id  := p_from.try_id;
2045   END migrate;
2046 
2047   -- Start of comments
2048   -- Procedure Name  : Migrate
2049   -- Description     : Migrate record structure of OKL_TXL_QUOTE_LINES_B table
2050   --                   to record structure of OKL_TXL_QUOTE_LINES_V table
2051   -- Business Rules  :
2052   -- Parameters      : IN Record structure of OKL_TXL_QUOTE_LINES_B table
2053   --                   IN OUT Record structure of OKL_TXL_QUOTE_LINES_V table
2054   -- Version         : 1.0
2055   -- History         : 18-DEC-2002 BAKUCHIB 2667636 Modified
2056   --                 : Added columns Currency code, currency Conversion_code
2057   --                   Currency conversion type, currency conversion date
2058   --                   currency conversion rate.
2059   --                 : 15-Feb-2005 PAGARG 4161133 Added code for due_date
2060   -- End of comments
2061   PROCEDURE migrate (
2062     p_from	IN tql_rec_type,
2063     p_to	IN OUT NOCOPY tqlv_rec_type
2064   ) IS
2065   BEGIN
2066     p_to.id := p_from.id;
2067     p_to.sty_id := p_from.sty_id;
2068     p_to.kle_id := p_from.kle_id;
2069     p_to.qlt_code := p_from.qlt_code;
2070     p_to.qte_id := p_from.qte_id;
2071     p_to.line_number := p_from.line_number;
2072     p_to.amount := p_from.amount;
2073     p_to.object_version_number := p_from.object_version_number;
2074     p_to.modified_yn := p_from.modified_yn;
2075     p_to.defaulted_yn := p_from.defaulted_yn;
2076     p_to.taxed_yn := p_from.taxed_yn;
2077     p_to.org_id := p_from.org_id;
2078     p_to.request_id := p_from.request_id;
2079     p_to.program_application_id := p_from.program_application_id;
2080     p_to.program_id := p_from.program_id;
2081     p_to.program_update_date := p_from.program_update_date;
2082     p_to.attribute_category := p_from.attribute_category;
2083     p_to.attribute1 := p_from.attribute1;
2084     p_to.attribute2 := p_from.attribute2;
2085     p_to.attribute3 := p_from.attribute3;
2086     p_to.attribute4 := p_from.attribute4;
2087     p_to.attribute5 := p_from.attribute5;
2088     p_to.attribute6 := p_from.attribute6;
2089     p_to.attribute7 := p_from.attribute7;
2090     p_to.attribute8 := p_from.attribute8;
2091     p_to.attribute9 := p_from.attribute9;
2092     p_to.attribute10 := p_from.attribute10;
2093     p_to.attribute11 := p_from.attribute11;
2094     p_to.attribute12 := p_from.attribute12;
2095     p_to.attribute13 := p_from.attribute13;
2096     p_to.attribute14 := p_from.attribute14;
2097     p_to.attribute15 := p_from.attribute15;
2098     p_to.created_by := p_from.created_by;
2099     p_to.creation_date := p_from.creation_date;
2100     p_to.last_updated_by := p_from.last_updated_by;
2101     p_to.last_update_date := p_from.last_update_date;
2102     p_to.last_update_login := p_from.last_update_login;
2103     p_to.start_date := p_from.start_date;
2104     p_to.period := p_from.period;
2105     p_to.number_of_periods := p_from.number_of_periods;
2106     p_to.lock_level_step := p_from.lock_level_step;
2107     p_to.advance_or_arrears := p_from.advance_or_arrears;
2108     p_to.yield_name := p_from.yield_name;
2109     p_to.yield_value := p_from.yield_value;
2110     p_to.implicit_interest_rate := p_from.implicit_interest_rate;
2111     p_to.asset_value := p_from.asset_value;
2112     p_to.residual_value := p_from.residual_value;
2113     p_to.unbilled_receivables := p_from.unbilled_receivables;
2114     p_to.asset_quantity := p_from.asset_quantity;
2115     p_to.quote_quantity := p_from.quote_quantity;
2116     p_to.split_kle_id := p_from.split_kle_id;
2117     -- RMUNJULU 2757312
2118     p_to.split_kle_name := p_from.split_kle_name;
2119   -- BAKUCHIB 2667636 Start
2120     p_to.currency_code  := p_from.currency_code;
2121     p_to.currency_conversion_code  := p_from.currency_conversion_code;
2122     p_to.currency_conversion_type  := p_from.currency_conversion_type;
2123     p_to.currency_conversion_rate  := p_from.currency_conversion_rate;
2124     p_to.currency_conversion_date  := p_from.currency_conversion_date;
2125   -- BAKUCHIB 2667636 End
2126     p_to.due_date  := p_from.due_date; -- PAGARG 4161133
2127     -- rmunjulu Sales_Tax_Enhancement
2128 	p_to.try_id  := p_from.try_id;
2129   END migrate;
2130   PROCEDURE migrate (
2131     p_from	IN tqlv_rec_type,
2132     p_to	IN OUT NOCOPY OklTxlQuoteLinesTlRecType
2133   ) IS
2134   BEGIN
2135     p_to.id := p_from.id;
2136     p_to.sfwt_flag := p_from.sfwt_flag;
2137     p_to.description := p_from.description;
2138     p_to.created_by := p_from.created_by;
2139     p_to.creation_date := p_from.creation_date;
2140     p_to.last_updated_by := p_from.last_updated_by;
2141     p_to.last_update_date := p_from.last_update_date;
2142     p_to.last_update_login := p_from.last_update_login;
2143   END migrate;
2144   PROCEDURE migrate (
2145     p_from	IN OklTxlQuoteLinesTlRecType,
2146     p_to	IN OUT NOCOPY tqlv_rec_type
2147   ) IS
2148   BEGIN
2149     p_to.id := p_from.id;
2150     p_to.sfwt_flag := p_from.sfwt_flag;
2151     p_to.description := p_from.description;
2152     p_to.created_by := p_from.created_by;
2153     p_to.creation_date := p_from.creation_date;
2154     p_to.last_updated_by := p_from.last_updated_by;
2155     p_to.last_update_date := p_from.last_update_date;
2156     p_to.last_update_login := p_from.last_update_login;
2157   END migrate;
2158 
2159   ---------------------------------------------------------------------------
2160   -- PROCEDURE validate_row
2161   ---------------------------------------------------------------------------
2162   --------------------------------------------
2163   -- validate_row for:OKL_TXL_QUOTE_LINES_V --
2164   --------------------------------------------
2165   PROCEDURE validate_row(
2166     p_api_version                  IN NUMBER,
2167     p_init_msg_list                IN VARCHAR2,
2168     x_return_status                OUT NOCOPY VARCHAR2,
2169     x_msg_count                    OUT NOCOPY NUMBER,
2170     x_msg_data                     OUT NOCOPY VARCHAR2,
2171     p_tqlv_rec                     IN tqlv_rec_type) IS
2172 
2173     l_api_version                 CONSTANT NUMBER := 1;
2174     l_api_name                     CONSTANT VARCHAR2(30) := 'V_validate_row';
2175     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2176     l_tqlv_rec                     tqlv_rec_type := p_tqlv_rec;
2177     l_tql_rec                      tql_rec_type;
2178     l_okl_txl_quote_lines_tl_rec   OklTxlQuoteLinesTlRecType;
2179   BEGIN
2180     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2181                                               G_PKG_NAME,
2182                                               p_init_msg_list,
2183                                               l_api_version,
2184                                               p_api_version,
2185                                               '_PVT',
2186                                               x_return_status);
2187     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2188       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2189     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2190       RAISE OKC_API.G_EXCEPTION_ERROR;
2191     END IF;
2192     --- Validate all non-missing attributes (Item Level Validation)
2193     l_return_status := Validate_Attributes(l_tqlv_rec);
2194     --- If any errors happen abort API
2195     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2196       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2197     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2198       RAISE OKC_API.G_EXCEPTION_ERROR;
2199     END IF;
2200     l_return_status := Validate_Record(l_tqlv_rec);
2201     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2202       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2203     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2204       RAISE OKC_API.G_EXCEPTION_ERROR;
2205     END IF;
2206     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2207   EXCEPTION
2208     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2209       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2210       (
2211         l_api_name,
2212         G_PKG_NAME,
2213         'OKC_API.G_RET_STS_ERROR',
2214         x_msg_count,
2215         x_msg_data,
2216         '_PVT'
2217       );
2218     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2219       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2220       (
2221         l_api_name,
2222         G_PKG_NAME,
2223         'OKC_API.G_RET_STS_UNEXP_ERROR',
2224         x_msg_count,
2225         x_msg_data,
2226         '_PVT'
2227       );
2228     WHEN OTHERS THEN
2229       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2230       (
2231         l_api_name,
2232         G_PKG_NAME,
2233         'OTHERS',
2234         x_msg_count,
2235         x_msg_data,
2236         '_PVT'
2237       );
2238   END validate_row;
2239   ------------------------------------------
2240   -- PL/SQL TBL validate_row for:TQLV_TBL --
2241   ------------------------------------------
2242   PROCEDURE validate_row(
2243     p_api_version                  IN NUMBER,
2244     p_init_msg_list                IN VARCHAR2,
2245     x_return_status                OUT NOCOPY VARCHAR2,
2246     x_msg_count                    OUT NOCOPY NUMBER,
2247     x_msg_data                     OUT NOCOPY VARCHAR2,
2248     p_tqlv_tbl                     IN tqlv_tbl_type) IS
2249 
2250     l_api_version                 CONSTANT NUMBER := 1;
2251     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_validate_row';
2252     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2253     i                              NUMBER := 0;
2254     -- Begin Post-Generation Change
2255     -- overall error status
2256     l_overall_status               VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2257     -- End Post-Generation Change
2258 
2259   BEGIN
2260     OKC_API.init_msg_list(p_init_msg_list);
2261     -- Make sure PL/SQL table has records in it before passing
2262     IF (p_tqlv_tbl.COUNT > 0) THEN
2263       i := p_tqlv_tbl.FIRST;
2264       LOOP
2265         validate_row (
2266           p_api_version                  => p_api_version,
2267           p_init_msg_list                => OKC_API.G_FALSE,
2268           x_return_status                => x_return_status,
2269           x_msg_count                    => x_msg_count,
2270           x_msg_data                     => x_msg_data,
2271           p_tqlv_rec                     => p_tqlv_tbl(i));
2272         -- Begin Post-Generation Change
2273         -- store the highest degree of error
2274         IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
2275            IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
2276               l_overall_status := x_return_status;
2277            END IF;
2278         END IF;
2279         -- End Post-Generation Change
2280         EXIT WHEN (i = p_tqlv_tbl.LAST);
2281         i := p_tqlv_tbl.NEXT(i);
2282       END LOOP;
2283       -- Begin Post-Generation Change
2284       -- return overall status
2285       x_return_status := l_overall_status;
2286       -- End Post-Generation Change
2287     END IF;
2288   EXCEPTION
2289     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2290       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2291       (
2292         l_api_name,
2293         G_PKG_NAME,
2294         'OKC_API.G_RET_STS_ERROR',
2295         x_msg_count,
2296         x_msg_data,
2297         '_PVT'
2298       );
2299     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2300       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2301       (
2302         l_api_name,
2303         G_PKG_NAME,
2304         'OKC_API.G_RET_STS_UNEXP_ERROR',
2305         x_msg_count,
2306         x_msg_data,
2307         '_PVT'
2308       );
2309     WHEN OTHERS THEN
2310       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2311       (
2312         l_api_name,
2313         G_PKG_NAME,
2314         'OTHERS',
2315         x_msg_count,
2316         x_msg_data,
2317         '_PVT'
2318       );
2319   END validate_row;
2320 
2321   ---------------------------------------------------------------------------
2322   -- PROCEDURE insert_row
2323   ---------------------------------------------------------------------------
2324   ------------------------------------------
2325   -- insert_row for:OKL_TXL_QUOTE_LINES_B --
2326   ------------------------------------------
2327   -- Start of comments
2328   -- Procedure Name  : insert_row
2329   -- Description     : Insert Row into OKL_TXL_QUOTE_LINES_B table
2330   -- Business Rules  :
2331   -- Parameters      : Record structure of OKL_TXL_QUOTE_LINES_B table
2332   -- Version         : 1.0
2333   -- History         : 18-DEC-2002 BAKUCHIB 2667636 Modified
2334   --                 : Added columns Currency code, currency Conversion_code
2335   --                   Currency conversion type, currency conversion date
2336   --                   currency conversion rate.
2337   --                 : 15-Feb-2005 PAGARG 4161133 Code for new column DUE_DATE
2338   -- End of comments
2339   PROCEDURE insert_row(
2340     p_init_msg_list                IN VARCHAR2,
2341     x_return_status                OUT NOCOPY VARCHAR2,
2342     x_msg_count                    OUT NOCOPY NUMBER,
2343     x_msg_data                     OUT NOCOPY VARCHAR2,
2344     p_tql_rec                      IN tql_rec_type,
2345     x_tql_rec                      OUT NOCOPY tql_rec_type) IS
2346 
2347     l_api_version                 CONSTANT NUMBER := 1;
2348     l_api_name                     CONSTANT VARCHAR2(30) := 'B_insert_row';
2349     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2350     l_tql_rec                      tql_rec_type := p_tql_rec;
2351     l_def_tql_rec                  tql_rec_type;
2352     ----------------------------------------------
2353     -- Set_Attributes for:OKL_TXL_QUOTE_LINES_B --
2354     ----------------------------------------------
2355     FUNCTION Set_Attributes (
2356       p_tql_rec IN  tql_rec_type,
2357       x_tql_rec OUT NOCOPY tql_rec_type
2358     ) RETURN VARCHAR2 IS
2359       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2360     BEGIN
2361     x_tql_rec := p_tql_rec;
2362     x_tql_rec.defaulted_yn := upper(x_tql_rec.defaulted_yn);
2363     x_tql_rec.taxed_yn := upper(x_tql_rec.taxed_yn);
2364     x_tql_rec.modified_yn := upper(x_tql_rec.modified_yn);
2365       RETURN(l_return_status);
2366     END Set_Attributes;
2367   BEGIN
2368     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2369                                               p_init_msg_list,
2370                                               '_PVT',
2371                                               x_return_status);
2372     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2373       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2374     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2375       RAISE OKC_API.G_EXCEPTION_ERROR;
2376     END IF;
2377     --- Setting item attributes
2378     l_return_status := Set_Attributes(
2379       p_tql_rec,                         -- IN
2380       l_tql_rec);                        -- OUT
2381     --- If any errors happen abort API
2382     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2383       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2384     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2385       RAISE OKC_API.G_EXCEPTION_ERROR;
2386     END IF;
2387     INSERT INTO OKL_TXL_QUOTE_LINES_B(
2388         id,
2389         sty_id,
2390         kle_id,
2391         qlt_code,
2392         qte_id,
2393         line_number,
2394         amount,
2395         object_version_number,
2396         modified_yn,
2397         defaulted_yn,
2398         taxed_yn,
2399         org_id,
2400         request_id,
2401         program_application_id,
2402         program_id,
2403         program_update_date,
2404         attribute_category,
2405         attribute1,
2406         attribute2,
2407         attribute3,
2408         attribute4,
2409         attribute5,
2410         attribute6,
2411         attribute7,
2412         attribute8,
2413         attribute9,
2414         attribute10,
2415         attribute11,
2416         attribute12,
2417         attribute13,
2418         attribute14,
2419         attribute15,
2420         created_by,
2421         creation_date,
2422         last_updated_by,
2423         last_update_date,
2424         last_update_login,
2425         start_date,
2426         period,
2427         number_of_periods,
2428         lock_level_step,
2429         advance_or_arrears,
2430         yield_name,
2431         yield_value,
2432         implicit_interest_rate,
2433         asset_value,
2434         residual_value,
2435         unbilled_receivables,
2436         asset_quantity,
2437         quote_quantity,
2438         split_kle_id,
2439         split_kle_name, -- RMUNJULU 2757312
2440   -- BAKUCHIB 2667636 Start
2441         currency_code,
2442         currency_conversion_code,
2443         currency_conversion_type,
2444         currency_conversion_rate,
2445         currency_conversion_date,
2446   -- BAKUCHIB 2667636 End
2447         due_date, -- PAGARG 4161133
2448         try_id) -- rmunjulu Sales_Tax_Enhancement
2449       VALUES (
2450         l_tql_rec.id,
2451         l_tql_rec.sty_id,
2452         l_tql_rec.kle_id,
2453         l_tql_rec.qlt_code,
2454         l_tql_rec.qte_id,
2455         l_tql_rec.line_number,
2456         l_tql_rec.amount,
2457         l_tql_rec.object_version_number,
2458         l_tql_rec.modified_yn,
2459         l_tql_rec.defaulted_yn,
2460         l_tql_rec.taxed_yn,
2461         l_tql_rec.org_id,
2462         decode(FND_GLOBAL.CONC_REQUEST_ID, -1, NULL, FND_GLOBAL.CONC_REQUEST_ID),
2463         decode(FND_GLOBAL.PROG_APPL_ID, -1, NULL, FND_GLOBAL.PROG_APPL_ID),
2464         decode(FND_GLOBAL.CONC_PROGRAM_ID, -1, NULL, FND_GLOBAL.CONC_PROGRAM_ID),
2465         decode(FND_GLOBAL.CONC_REQUEST_ID, -1, NULL, SYSDATE),
2466         l_tql_rec.attribute_category,
2467         l_tql_rec.attribute1,
2468         l_tql_rec.attribute2,
2469         l_tql_rec.attribute3,
2470         l_tql_rec.attribute4,
2471         l_tql_rec.attribute5,
2472         l_tql_rec.attribute6,
2473         l_tql_rec.attribute7,
2474         l_tql_rec.attribute8,
2475         l_tql_rec.attribute9,
2476         l_tql_rec.attribute10,
2477         l_tql_rec.attribute11,
2478         l_tql_rec.attribute12,
2479         l_tql_rec.attribute13,
2480         l_tql_rec.attribute14,
2481         l_tql_rec.attribute15,
2482         l_tql_rec.created_by,
2483         l_tql_rec.creation_date,
2484         l_tql_rec.last_updated_by,
2485         l_tql_rec.last_update_date,
2486         l_tql_rec.last_update_login,
2487         l_tql_rec.start_date,
2488         l_tql_rec.period,
2489         l_tql_rec.number_of_periods,
2490         l_tql_rec.lock_level_step,
2491         l_tql_rec.advance_or_arrears,
2492         l_tql_rec.yield_name,
2493         l_tql_rec.yield_value,
2494         l_tql_rec.implicit_interest_rate,
2495         l_tql_rec.asset_value,
2496         l_tql_rec.residual_value,
2497         l_tql_rec.unbilled_receivables,
2498         l_tql_rec.asset_quantity,
2499         l_tql_rec.quote_quantity,
2500         l_tql_rec.split_kle_id,
2501         l_tql_rec.split_kle_name, -- RMUNJULU 2757312
2502   -- BAKUCHIB 2667636 Start
2503         l_tql_rec.currency_code,
2504         l_tql_rec.currency_conversion_code,
2505         l_tql_rec.currency_conversion_type,
2506         l_tql_rec.currency_conversion_rate,
2507         l_tql_rec.currency_conversion_date,
2508   -- BAKUCHIB 2667636 End
2509         l_tql_rec.due_date, -- PAGARG 4161133
2510         -- rmunjulu Sales_Tax_Enhancement
2511         l_tql_rec.try_id);
2512     -- Set OUT values
2513     x_tql_rec := l_tql_rec;
2514     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2515   EXCEPTION
2516     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2517       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2518       (
2519         l_api_name,
2520         G_PKG_NAME,
2521         'OKC_API.G_RET_STS_ERROR',
2522         x_msg_count,
2523         x_msg_data,
2524         '_PVT'
2525       );
2526     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2527       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2528       (
2529         l_api_name,
2530         G_PKG_NAME,
2531         'OKC_API.G_RET_STS_UNEXP_ERROR',
2532         x_msg_count,
2533         x_msg_data,
2534         '_PVT'
2535       );
2536     WHEN OTHERS THEN
2537       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2538       (
2539         l_api_name,
2540         G_PKG_NAME,
2541         'OTHERS',
2542         x_msg_count,
2543         x_msg_data,
2544         '_PVT'
2545       );
2546   END insert_row;
2547   -------------------------------------------
2548   -- insert_row for:OKL_TXL_QUOTE_LINES_TL --
2549   -------------------------------------------
2550   PROCEDURE insert_row(
2551     p_init_msg_list                IN VARCHAR2,
2552     x_return_status                OUT NOCOPY VARCHAR2,
2553     x_msg_count                    OUT NOCOPY NUMBER,
2554     x_msg_data                     OUT NOCOPY VARCHAR2,
2555     p_okl_txl_quote_lines_tl_rec   IN OklTxlQuoteLinesTlRecType,
2556     x_okl_txl_quote_lines_tl_rec   OUT NOCOPY OklTxlQuoteLinesTlRecType) IS
2557 
2558     l_api_version                 CONSTANT NUMBER := 1;
2559     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_insert_row';
2560     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2561     l_okl_txl_quote_lines_tl_rec   OklTxlQuoteLinesTlRecType := p_okl_txl_quote_lines_tl_rec;
2562     ldefokltxlquotelinestlrec      OklTxlQuoteLinesTlRecType;
2563     CURSOR get_languages IS
2564       SELECT *
2565         FROM FND_LANGUAGES
2566        WHERE INSTALLED_FLAG IN ('I', 'B');
2567     -----------------------------------------------
2568     -- Set_Attributes for:OKL_TXL_QUOTE_LINES_TL --
2569     -----------------------------------------------
2570     FUNCTION Set_Attributes (
2571       p_okl_txl_quote_lines_tl_rec IN  OklTxlQuoteLinesTlRecType,
2572       x_okl_txl_quote_lines_tl_rec OUT NOCOPY OklTxlQuoteLinesTlRecType
2573     ) RETURN VARCHAR2 IS
2574       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2575     BEGIN
2576       x_okl_txl_quote_lines_tl_rec := p_okl_txl_quote_lines_tl_rec;
2577       x_okl_txl_quote_lines_tl_rec.LANGUAGE := USERENV('LANG');
2578       x_okl_txl_quote_lines_tl_rec.SOURCE_LANG := USERENV('LANG');
2579       RETURN(l_return_status);
2580     END Set_Attributes;
2581   BEGIN
2582     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2583                                               p_init_msg_list,
2584                                               '_PVT',
2585                                               x_return_status);
2586     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2587       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2588     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2589       RAISE OKC_API.G_EXCEPTION_ERROR;
2590     END IF;
2591     --- Setting item attributes
2592     l_return_status := Set_Attributes(
2593       p_okl_txl_quote_lines_tl_rec,      -- IN
2594       l_okl_txl_quote_lines_tl_rec);     -- OUT
2595     --- If any errors happen abort API
2596     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2597       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2598     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2599       RAISE OKC_API.G_EXCEPTION_ERROR;
2600     END IF;
2601     FOR l_lang_rec IN get_languages LOOP
2602       l_okl_txl_quote_lines_tl_rec.language := l_lang_rec.language_code;
2603       INSERT INTO OKL_TXL_QUOTE_LINES_TL(
2604           id,
2605           language,
2606           source_lang,
2607           sfwt_flag,
2608           description,
2609           created_by,
2610           creation_date,
2611           last_updated_by,
2612           last_update_date,
2613           last_update_login)
2614         VALUES (
2615           l_okl_txl_quote_lines_tl_rec.id,
2616           l_okl_txl_quote_lines_tl_rec.language,
2617           l_okl_txl_quote_lines_tl_rec.source_lang,
2618           l_okl_txl_quote_lines_tl_rec.sfwt_flag,
2619           l_okl_txl_quote_lines_tl_rec.description,
2620           l_okl_txl_quote_lines_tl_rec.created_by,
2621           l_okl_txl_quote_lines_tl_rec.creation_date,
2622           l_okl_txl_quote_lines_tl_rec.last_updated_by,
2623           l_okl_txl_quote_lines_tl_rec.last_update_date,
2624           l_okl_txl_quote_lines_tl_rec.last_update_login);
2625     END LOOP;
2626     -- Set OUT values
2627     x_okl_txl_quote_lines_tl_rec := l_okl_txl_quote_lines_tl_rec;
2628     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2629   EXCEPTION
2630     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2631       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2632       (
2633         l_api_name,
2634         G_PKG_NAME,
2635         'OKC_API.G_RET_STS_ERROR',
2636         x_msg_count,
2637         x_msg_data,
2638         '_PVT'
2639       );
2640     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2641       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2642       (
2643         l_api_name,
2644         G_PKG_NAME,
2645         'OKC_API.G_RET_STS_UNEXP_ERROR',
2646         x_msg_count,
2647         x_msg_data,
2648         '_PVT'
2649       );
2650     WHEN OTHERS THEN
2651       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2652       (
2653         l_api_name,
2654         G_PKG_NAME,
2655         'OTHERS',
2656         x_msg_count,
2657         x_msg_data,
2658         '_PVT'
2659       );
2660   END insert_row;
2661   ------------------------------------------
2662   -- insert_row for:OKL_TXL_QUOTE_LINES_V --
2663   ------------------------------------------
2664   -- Start of comments
2665   -- Procedure Name  : insert_row
2666   -- Description     : Insert Row into OKL_TXL_QUOTE_LINES_V View
2667   -- Business Rules  :
2668   -- Parameters      : Record structure of OKL_TXL_QUOTE_LINES_V table
2669   -- Version         : 1.0
2670   -- History         : 18-DEC-2002 BAKUCHIB 2667636 Modified
2671   --                 : In set Attributes function defaulted the
2672   --                   currency Conversion_code to Functional Currency Code.
2673   --                   Also defaulted to currency code to currency Conversion
2674   --                   code if currency code is null.
2675   --                 : RMUNJULU 09-MAY-03 2949544 Added code to round
2676   --                   the amount field before saving to table
2677   -- End of comments
2678   PROCEDURE insert_row(
2679     p_api_version                  IN NUMBER,
2680     p_init_msg_list                IN VARCHAR2,
2681     x_return_status                OUT NOCOPY VARCHAR2,
2682     x_msg_count                    OUT NOCOPY NUMBER,
2683     x_msg_data                     OUT NOCOPY VARCHAR2,
2684     p_tqlv_rec                     IN tqlv_rec_type,
2685     x_tqlv_rec                     OUT NOCOPY tqlv_rec_type) IS
2686 
2687     l_api_version                 CONSTANT NUMBER := 1;
2688     l_api_name                     CONSTANT VARCHAR2(30) := 'V_insert_row';
2689     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2690     l_tqlv_rec                     tqlv_rec_type;
2691     l_def_tqlv_rec                 tqlv_rec_type;
2692     l_tql_rec                      tql_rec_type;
2693     lx_tql_rec                     tql_rec_type;
2694     l_okl_txl_quote_lines_tl_rec   OklTxlQuoteLinesTlRecType;
2695     lx_okl_txl_quote_lines_tl_rec  OklTxlQuoteLinesTlRecType;
2696 
2697 
2698     -- RMUNJULU 09-MAY-03 2949544 Added variable
2699     l_rounded_amount NUMBER;
2700 
2701     -------------------------------
2702     -- FUNCTION fill_who_columns --
2703     -------------------------------
2704     FUNCTION fill_who_columns (
2705       p_tqlv_rec	IN tqlv_rec_type
2706     ) RETURN tqlv_rec_type IS
2707       l_tqlv_rec	tqlv_rec_type := p_tqlv_rec;
2708     BEGIN
2709       l_tqlv_rec.CREATION_DATE := SYSDATE;
2710       l_tqlv_rec.CREATED_BY := FND_GLOBAL.USER_ID;
2711       l_tqlv_rec.LAST_UPDATE_DATE :=l_tqlv_rec.CREATION_DATE;
2712       l_tqlv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
2713       l_tqlv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
2714       RETURN(l_tqlv_rec);
2715     END fill_who_columns;
2716     ----------------------------------------------
2717     -- Set_Attributes for:OKL_TXL_QUOTE_LINES_V --
2718     ----------------------------------------------
2719     FUNCTION Set_Attributes (
2720       p_tqlv_rec IN  tqlv_rec_type,
2721       x_tqlv_rec OUT NOCOPY tqlv_rec_type
2722     ) RETURN VARCHAR2 IS
2723       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2724     BEGIN
2725       x_tqlv_rec := p_tqlv_rec;
2726       x_tqlv_rec.OBJECT_VERSION_NUMBER := 1;
2727       x_tqlv_rec.SFWT_FLAG := 'N';
2728 
2729       -- Default the YN columns if value not passed
2730       IF p_tqlv_rec.defaulted_yn IS NULL
2731       OR p_tqlv_rec.defaulted_yn = OKC_API.G_MISS_CHAR THEN
2732         x_tqlv_rec.defaulted_yn := 'N';
2733       END IF;
2734 
2735       -- Default the ORG ID if a value is not passed
2736       IF p_tqlv_rec.org_id IS NULL
2737       OR p_tqlv_rec.org_id = OKC_API.G_MISS_NUM THEN
2738         x_tqlv_rec.org_id := MO_GLOBAL.GET_CURRENT_ORG_ID();
2739       END IF;
2740   -- BAKUCHIB 2667636 Start
2741       x_tqlv_rec.currency_conversion_code := OKL_AM_UTIL_PVT.get_functional_currency;
2742 
2743       IF p_tqlv_rec.currency_code IS NULL
2744       OR p_tqlv_rec.currency_code = OKC_API.G_MISS_CHAR THEN
2745         x_tqlv_rec.currency_code := x_tqlv_rec.currency_conversion_code;
2746       END IF;
2747   -- BAKUCHIB 2667636 End
2748 
2749 
2750       RETURN(l_return_status);
2751     END Set_Attributes;
2752   BEGIN
2753     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
2754                                               G_PKG_NAME,
2755                                               p_init_msg_list,
2756                                               l_api_version,
2757                                               p_api_version,
2758                                               '_PVT',
2759                                               x_return_status);
2760     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2761       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2762     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2763       RAISE OKC_API.G_EXCEPTION_ERROR;
2764     END IF;
2765     l_tqlv_rec := null_out_defaults(p_tqlv_rec);
2766     -- Set primary key value
2767     l_tqlv_rec.ID := get_seq_id;
2768     --- Setting item attributes
2769     l_return_status := Set_Attributes(
2770       l_tqlv_rec,                        -- IN
2771       l_def_tqlv_rec);                   -- OUT
2772     --- If any errors happen abort API
2773     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2774       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2775     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2776       RAISE OKC_API.G_EXCEPTION_ERROR;
2777     END IF;
2778     l_def_tqlv_rec := fill_who_columns(l_def_tqlv_rec);
2779     --- Validate all non-missing attributes (Item Level Validation)
2780     l_return_status := Validate_Attributes(l_def_tqlv_rec);
2781     --- If any errors happen abort API
2782     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2783       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2784     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2785       RAISE OKC_API.G_EXCEPTION_ERROR;
2786     END IF;
2787     l_return_status := Validate_Record(l_def_tqlv_rec);
2788     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2789       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2790     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2791       RAISE OKC_API.G_EXCEPTION_ERROR;
2792     END IF;
2793 
2794 
2795     -- RMUNJULU 09-MAY-03 2949544 Added code to round
2796     -- the amount field before saving to table
2797     OKL_ACCOUNTING_UTIL.cross_currency_round_amount
2798               (p_api_version      => p_api_version,
2799                p_init_msg_list    => p_init_msg_list,
2800                x_return_status    => l_return_status,
2801                x_msg_count        => x_msg_count,
2802                x_msg_data         => x_msg_data,
2803                p_amount           => l_def_tqlv_rec.amount,
2804                p_currency_code    => l_def_tqlv_rec.currency_code,
2805                x_rounded_amount   => l_rounded_amount);
2806 
2807     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2808       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2809     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
2810       RAISE OKC_API.G_EXCEPTION_ERROR;
2811     END IF;
2812 
2813 
2814     l_def_tqlv_rec.amount := l_rounded_amount;
2815 
2816 
2817     --------------------------------------
2818     -- Move VIEW record to "Child" records
2819     --------------------------------------
2820     migrate(l_def_tqlv_rec, l_tql_rec);
2821     migrate(l_def_tqlv_rec, l_okl_txl_quote_lines_tl_rec);
2822     --------------------------------------------
2823     -- Call the INSERT_ROW for each child record
2824     --------------------------------------------
2825     insert_row(
2826       p_init_msg_list,
2827       x_return_status,
2828       x_msg_count,
2829       x_msg_data,
2830       l_tql_rec,
2831       lx_tql_rec
2832     );
2833     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2834       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2835     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2836       RAISE OKC_API.G_EXCEPTION_ERROR;
2837     END IF;
2838     migrate(lx_tql_rec, l_def_tqlv_rec);
2839     insert_row(
2840       p_init_msg_list,
2841       x_return_status,
2842       x_msg_count,
2843       x_msg_data,
2844       l_okl_txl_quote_lines_tl_rec,
2845       lx_okl_txl_quote_lines_tl_rec
2846     );
2847     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2848       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2849     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2850       RAISE OKC_API.G_EXCEPTION_ERROR;
2851     END IF;
2852     migrate(lx_okl_txl_quote_lines_tl_rec, l_def_tqlv_rec);
2853     -- Set OUT values
2854     x_tqlv_rec := l_def_tqlv_rec;
2855     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2856   EXCEPTION
2857     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2858       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2859       (
2860         l_api_name,
2861         G_PKG_NAME,
2862         'OKC_API.G_RET_STS_ERROR',
2863         x_msg_count,
2864         x_msg_data,
2865         '_PVT'
2866       );
2867     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2868       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2869       (
2870         l_api_name,
2871         G_PKG_NAME,
2872         'OKC_API.G_RET_STS_UNEXP_ERROR',
2873         x_msg_count,
2874         x_msg_data,
2875         '_PVT'
2876       );
2877     WHEN OTHERS THEN
2878       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2879       (
2880         l_api_name,
2881         G_PKG_NAME,
2882         'OTHERS',
2883         x_msg_count,
2884         x_msg_data,
2885         '_PVT'
2886       );
2887   END insert_row;
2888   ----------------------------------------
2889   -- PL/SQL TBL insert_row for:TQLV_TBL --
2890   ----------------------------------------
2891   PROCEDURE insert_row(
2892     p_api_version                  IN NUMBER,
2893     p_init_msg_list                IN VARCHAR2,
2894     x_return_status                OUT NOCOPY VARCHAR2,
2895     x_msg_count                    OUT NOCOPY NUMBER,
2896     x_msg_data                     OUT NOCOPY VARCHAR2,
2897     p_tqlv_tbl                     IN tqlv_tbl_type,
2898     x_tqlv_tbl                     OUT NOCOPY tqlv_tbl_type) IS
2899 
2900     l_api_version                 CONSTANT NUMBER := 1;
2901     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_insert_row';
2902     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
2903     i                              NUMBER := 0;
2904     -- Begin Post-Generation Change
2905     -- overall error status
2906     l_overall_status               VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2907     -- End Post-Generation Change
2908   BEGIN
2909     OKC_API.init_msg_list(p_init_msg_list);
2910     -- Make sure PL/SQL table has records in it before passing
2911     IF (p_tqlv_tbl.COUNT > 0) THEN
2912       i := p_tqlv_tbl.FIRST;
2913       LOOP
2914         insert_row (
2915           p_api_version                  => p_api_version,
2916           p_init_msg_list                => OKC_API.G_FALSE,
2917           x_return_status                => x_return_status,
2918           x_msg_count                    => x_msg_count,
2919           x_msg_data                     => x_msg_data,
2920           p_tqlv_rec                     => p_tqlv_tbl(i),
2921           x_tqlv_rec                     => x_tqlv_tbl(i));
2922         -- Begin Post-Generation Change
2923         -- store the highest degree of error
2924         IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
2925            IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
2926               l_overall_status := x_return_status;
2927            END IF;
2928         END IF;
2929         -- End Post-Generation Change
2930         EXIT WHEN (i = p_tqlv_tbl.LAST);
2931         i := p_tqlv_tbl.NEXT(i);
2932       END LOOP;
2933       -- Begin Post-Generation Change
2934       -- return overall status
2935       x_return_status := l_overall_status;
2936       -- End Post-Generation Change
2937     END IF;
2938   EXCEPTION
2939     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2940       x_return_status := OKC_API.HANDLE_EXCEPTIONS
2941       (
2942         l_api_name,
2943         G_PKG_NAME,
2944         'OKC_API.G_RET_STS_ERROR',
2945         x_msg_count,
2946         x_msg_data,
2947         '_PVT'
2948       );
2949     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2950       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2951       (
2952         l_api_name,
2953         G_PKG_NAME,
2954         'OKC_API.G_RET_STS_UNEXP_ERROR',
2955         x_msg_count,
2956         x_msg_data,
2957         '_PVT'
2958       );
2959     WHEN OTHERS THEN
2960       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
2961       (
2962         l_api_name,
2963         G_PKG_NAME,
2964         'OTHERS',
2965         x_msg_count,
2966         x_msg_data,
2967         '_PVT'
2968       );
2969   END insert_row;
2970 
2971 -- PAGARG Bug 4299668 Declare table of records to define arrays used in bulk insert
2972 -- **Start**
2973   ------------------------------------------
2974   -- insert_row for:OKL_TXL_QUOTE_LINES_V --
2975   ------------------------------------------
2976   -- Start of comments
2977   -- Procedure Name  : insert_row_bulk
2978   -- Description     : Insert Row into OKL_TXL_QUOTE_LINES_V View
2979   -- Business Rules  :
2980   -- Parameters      : Record structure of OKL_TXL_QUOTE_LINES_V table
2981   -- Version         : 1.0
2982   -- History         : 12-Apr-2005 PAGARG 4299668 created for bulk insert
2983   -- End of comments
2984   PROCEDURE insert_row_bulk(
2985     p_api_version                  IN NUMBER,
2986     p_init_msg_list                IN VARCHAR2,
2987     x_return_status                OUT NOCOPY VARCHAR2,
2988     x_msg_count                    OUT NOCOPY NUMBER,
2989     x_msg_data                     OUT NOCOPY VARCHAR2,
2990     p_tqlv_tbl                     IN tqlv_tbl_type,
2991     x_tqlv_tbl                     OUT NOCOPY tqlv_tbl_type) IS
2992 
2993     l_api_version                  CONSTANT NUMBER := 1;
2994     l_api_name                     CONSTANT VARCHAR2(30) := 'insert_row_bulk';
2995     l_return_status                VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2996     l_overall_status               VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
2997 
2998     -- Arrays to store pl-sql table and pass it to bulk insert
2999     in_id NumberTabTyp;
3000     in_sty_id NumberTabTyp;
3001     in_kle_id NumberTabTyp;
3002     in_qlt_code Var30TabTyp;
3003     in_qte_id NumberTabTyp;
3004     in_line_number NumberTabTyp;
3005     in_amount Number14p3TabTyp;
3006     in_object_version_number Number9TabTyp;
3007     in_modified_yn Var3TabTyp;
3008     in_defaulted_yn Var3TabTyp;
3009     in_taxed_yn Var3TabTyp;
3010     in_org_id Number15TabTyp;
3011     in_request_id Number15TabTyp;
3012     in_program_application_id Number15TabTyp;
3013     in_program_id Number15TabTyp;
3014     in_program_update_date DateTabTyp;
3015     in_attribute_category Var90TabTyp;
3016     in_attribute1 Var450TabTyp;
3017     in_attribute2 Var450TabTyp;
3018     in_attribute3 Var450TabTyp;
3019     in_attribute4 Var450TabTyp;
3020     in_attribute5 Var450TabTyp;
3021     in_attribute6 Var450TabTyp;
3022     in_attribute7 Var450TabTyp;
3023     in_attribute8 Var450TabTyp;
3024     in_attribute9 Var450TabTyp;
3025     in_attribute10 Var450TabTyp;
3026     in_attribute11 Var450TabTyp;
3027     in_attribute12 Var450TabTyp;
3028     in_attribute13 Var450TabTyp;
3029     in_attribute14 Var450TabTyp;
3030     in_attribute15 Var450TabTyp;
3031     in_created_by Number15TabTyp;
3032     in_creation_date DateTabTyp;
3033     in_last_updated_by Number15TabTyp;
3034     in_last_update_date DateTabTyp;
3035     in_last_update_login Number15TabTyp;
3036     in_start_date DateTabTyp;
3037     in_period Var30TabTyp;
3038     in_number_of_periods Number4TabTyp;
3039     in_lock_level_step Var10TabTyp;
3040     in_advance_or_arrears Var10TabTyp;
3041     in_yield_name Var150TabTyp;
3042     in_yield_value Number18p15TabTyp;
3043     in_implicit_interest_rate Number18p15TabTyp;
3044     in_asset_value Number14p3TabTyp;
3045     in_residual_value Number14p3TabTyp;
3046     in_unbilled_receivables Number14p3TabTyp;
3047     in_asset_quantity Number14p3TabTyp;
3048     in_quote_quantity Number14p3TabTyp;
3049     in_split_kle_id NumberTabTyp;
3050     in_split_kle_name Var150TabTyp;
3051     in_currency_code Var15TabTyp;
3052     in_currency_conversion_code Var15TabTyp;
3053     in_currency_conversion_type Var30TabTyp;
3054     in_currency_conversion_rate NumberTabTyp;
3055     in_currency_conversion_date DateTabTyp;
3056     in_language Var12TabTyp;
3057     in_source_lang Var15TabTyp;
3058     in_sfwt_flag Var3TabTyp;
3059     in_description Var1995TabTyp;
3060 
3061     -- rmunjulu Sales_Tax_Enhancement
3062     in_try_id NumberTabTyp; -- *** Check
3063 
3064     --dkagrawa Bug 4187250
3065     in_due_date DateTabTyp;
3066 
3067     l_tabsize        NUMBER := p_tqlv_tbl.COUNT;
3068     i                NUMBER := 0;
3069     j                NUMBER;
3070     l_org_id         NUMBER;
3071     l_curr_code      VARCHAR2(15);
3072     l_rounded_amount NUMBER;
3073     l_tqlv_rec       tqlv_rec_type;
3074 
3075     l_user_id        NUMBER(15);
3076     l_conc_req_id    NUMBER(15);
3077     l_login_id       NUMBER(15);
3078     l_prog_appl_id   NUMBER(15);
3079     l_conc_prog_id   NUMBER(15);
3080     l_conc_reg_id    NUMBER(15);
3081     l_lang           VARCHAR2(12);
3082 
3083   BEGIN
3084     OKL_API.init_msg_list(p_init_msg_list);
3085     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
3086                                               G_PKG_NAME,
3087                                               p_init_msg_list,
3088                                               l_api_version,
3089                                               p_api_version,
3090                                               '_PVT',
3091                                               x_return_status);
3092     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3093       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3094     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3095       RAISE OKL_API.G_EXCEPTION_ERROR;
3096     END IF;
3097 
3098     i := p_tqlv_tbl.FIRST;
3099     j :=0;
3100 
3101     l_org_id := MO_GLOBAL.GET_CURRENT_ORG_ID();
3102     l_curr_code := OKL_AM_UTIL_PVT.get_functional_currency;
3103     l_user_id := FND_GLOBAL.USER_ID;
3104     l_login_id := FND_GLOBAL.LOGIN_ID;
3105     l_conc_req_id := FND_GLOBAL.CONC_REQUEST_ID;
3106     l_prog_appl_id := FND_GLOBAL.PROG_APPL_ID;
3107     l_conc_prog_id := FND_GLOBAL.CONC_PROGRAM_ID;
3108     l_lang := USERENV('LANG');
3109     WHILE i is not null LOOP
3110       l_tqlv_rec := null_out_defaults(p_tqlv_tbl(i));
3111 
3112       l_tqlv_rec.id := get_seq_id;
3113       l_tqlv_rec.object_version_number := 1.0;
3114       l_tqlv_rec.created_by := l_user_id;
3115       l_tqlv_rec.creation_date := SYSDATE;
3116       l_tqlv_rec.last_updated_by := l_user_id;
3117       l_tqlv_rec.last_update_date := SYSDATE;
3118       l_tqlv_rec.last_update_login := l_login_id;
3119 
3120       l_tqlv_rec.currency_conversion_code := l_curr_code;
3121       IF l_tqlv_rec.currency_code IS NULL
3122       OR l_tqlv_rec.currency_code = OKL_API.G_MISS_CHAR THEN
3123         l_tqlv_rec.currency_code := l_tqlv_rec.currency_conversion_code;
3124       END IF;
3125 
3126       IF l_tqlv_rec.defaulted_yn IS NULL
3127       OR l_tqlv_rec.defaulted_yn = OKL_API.G_MISS_CHAR THEN
3128         l_tqlv_rec.defaulted_yn := 'N';
3129       END IF;
3130 
3131       -- Default the ORG ID if a value is not passed
3132       IF l_tqlv_rec.org_id IS NULL
3133       OR l_tqlv_rec.org_id = OKL_API.G_MISS_NUM THEN
3134         l_tqlv_rec.org_id := l_org_id;
3135       END IF;
3136 
3137       IF l_conc_req_id = -1
3138       THEN
3139         l_tqlv_rec.request_id := NULL;
3140       ELSE
3141         l_tqlv_rec.request_id :=  l_conc_req_id;
3142       END IF;
3143 
3144       IF l_prog_appl_id = -1
3145       THEN
3146         l_tqlv_rec.program_application_id :=  NULL;
3147       ELSE
3148         l_tqlv_rec.program_application_id := l_prog_appl_id;
3149       END IF;
3150       IF l_conc_prog_id = -1
3151       THEN
3152         l_tqlv_rec.program_id := NULL;
3153       ELSE
3154         l_tqlv_rec.program_id := l_conc_prog_id;
3155       END IF;
3156       IF l_conc_req_id = -1
3157       THEN
3158         l_tqlv_rec.program_update_date := NULL;
3159       ELSE
3160         l_tqlv_rec.program_update_date := SYSDATE;
3161       END IF;
3162       l_tqlv_rec.sfwt_flag := 'N';
3163 
3164       l_return_status := Validate_Attributes(l_tqlv_rec);
3165       -- If any errors happen abort API
3166       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3167         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3168       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3169         RAISE OKL_API.G_EXCEPTION_ERROR;
3170       END IF;
3171 
3172       l_return_status := Validate_Record(l_tqlv_rec);
3173       -- If any errors happen abort API
3174       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3175         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3176       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3177         RAISE OKL_API.G_EXCEPTION_ERROR;
3178       END IF;
3179 
3180       j:=j+1;
3181       in_id(j) := l_tqlv_rec.id;
3182       in_object_version_number(j) := l_tqlv_rec.object_version_number;
3183       in_created_by(j) := l_tqlv_rec.created_by;
3184       in_creation_date(j) := l_tqlv_rec.creation_date;
3185       in_last_updated_by(j) := l_tqlv_rec.last_updated_by;
3186       in_last_update_date(j) := l_tqlv_rec.last_update_date;
3187       in_last_update_login(j) := l_tqlv_rec.last_update_login;
3188       in_sty_id(j) := l_tqlv_rec.sty_id;
3189       in_kle_id(j) := l_tqlv_rec.kle_id;
3190       in_qlt_code(j) := l_tqlv_rec.qlt_code;
3191       in_qte_id(j) := l_tqlv_rec.qte_id;
3192       in_line_number(j) := l_tqlv_rec.line_number;
3193       in_modified_yn(j) := l_tqlv_rec.modified_yn;
3194       in_taxed_yn(j) := l_tqlv_rec.taxed_yn;
3195       in_attribute_category(j) := l_tqlv_rec.attribute_category;
3196       in_attribute1(j) := l_tqlv_rec.attribute1;
3197       in_attribute2(j) := l_tqlv_rec.attribute2;
3198       in_attribute3(j) := l_tqlv_rec.attribute3;
3199       in_attribute4(j) := l_tqlv_rec.attribute4;
3200       in_attribute5(j) := l_tqlv_rec.attribute5;
3201       in_attribute6(j) := l_tqlv_rec.attribute6;
3202       in_attribute7(j) := l_tqlv_rec.attribute7;
3203       in_attribute8(j) := l_tqlv_rec.attribute8;
3204       in_attribute9(j) := l_tqlv_rec.attribute9;
3205       in_attribute10(j) := l_tqlv_rec.attribute10;
3206       in_attribute11(j) := l_tqlv_rec.attribute11;
3207       in_attribute12(j) := l_tqlv_rec.attribute12;
3208       in_attribute13(j) := l_tqlv_rec.attribute13;
3209       in_attribute14(j) := l_tqlv_rec.attribute14;
3210       in_attribute15(j) := l_tqlv_rec.attribute15;
3211       in_start_date(j) := l_tqlv_rec.start_date;
3212       in_period(j) := l_tqlv_rec.period;
3213       in_number_of_periods(j) := l_tqlv_rec.number_of_periods;
3214       in_lock_level_step(j) := l_tqlv_rec.lock_level_step;
3215       in_advance_or_arrears(j) := l_tqlv_rec.advance_or_arrears;
3216       in_yield_name(j) := l_tqlv_rec.yield_name;
3217       in_yield_value(j) := l_tqlv_rec.yield_value;
3218       in_implicit_interest_rate(j) := l_tqlv_rec.implicit_interest_rate;
3219       in_asset_value(j) := l_tqlv_rec.asset_value;
3220       in_residual_value(j) := l_tqlv_rec.residual_value;
3221       in_unbilled_receivables(j) := l_tqlv_rec.unbilled_receivables;
3222       in_asset_quantity(j) := l_tqlv_rec.asset_quantity;
3223       in_quote_quantity(j) := l_tqlv_rec.quote_quantity;
3224       in_split_kle_id(j) := l_tqlv_rec.split_kle_id;
3225       in_split_kle_name(j) := l_tqlv_rec.split_kle_name;
3226       in_description(j) := l_tqlv_rec.description;
3227       in_language(j) := l_lang;
3228       in_source_lang(j) := l_lang;
3229       in_currency_code(j) := l_tqlv_rec.currency_code;
3230       in_currency_conversion_code(j) := l_tqlv_rec.currency_conversion_code;
3231       in_currency_conversion_type(j) := l_tqlv_rec.currency_conversion_type;
3232       in_currency_conversion_rate(j) := l_tqlv_rec.currency_conversion_rate;
3233       in_currency_conversion_date(j) := l_tqlv_rec.currency_conversion_date;
3234       in_defaulted_yn(j) := l_tqlv_rec.defaulted_yn;
3235       in_org_id(j) := l_tqlv_rec.org_id;
3236       in_request_id(j) := l_tqlv_rec.request_id;
3237       in_program_application_id(j) := l_tqlv_rec.program_application_id;
3238       in_program_id(j) := l_tqlv_rec.program_id;
3239       in_program_update_date(j) := l_tqlv_rec.program_update_date;
3240       in_sfwt_flag(j) := l_tqlv_rec.sfwt_flag;
3241       -- rmunjulu Sales_Tax_Enhancement
3242       in_try_id(j) := l_tqlv_rec.try_id;
3243 
3244       in_amount(j) := l_tqlv_rec.amount;
3245       --dkagrawa bug 4187250
3246       in_due_date(j) := l_tqlv_rec.due_date;
3247 
3248       OKL_ACCOUNTING_UTIL.cross_currency_round_amount
3249               (p_api_version      => p_api_version,
3250                p_init_msg_list    => p_init_msg_list,
3251                x_return_status    => l_return_status,
3252                x_msg_count        => x_msg_count,
3253                x_msg_data         => x_msg_data,
3254                p_amount           => in_amount(j),
3255                p_currency_code    => in_currency_code(j),
3256                x_rounded_amount   => l_rounded_amount);
3257 
3258       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3259         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3260       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3261         RAISE OKL_API.G_EXCEPTION_ERROR;
3262       END IF;
3263       in_amount(j) := l_rounded_amount;
3264 
3265       i := p_tqlv_tbl.next(i);
3266     END LOOP;
3267 
3268     -- Bulk insert into base table
3269     FORALL i in 1..l_tabsize
3270     INSERT INTO OKL_TXL_QUOTE_LINES_B(
3271         id,
3272         sty_id,
3273         kle_id,
3274         qlt_code,
3275         qte_id,
3276         line_number,
3277         amount,
3278         object_version_number,
3279         modified_yn,
3280         defaulted_yn,
3281         taxed_yn,
3282         org_id,
3283         request_id,
3284         program_application_id,
3285         program_id,
3286         program_update_date,
3287         attribute_category,
3288         attribute1,
3289         attribute2,
3290         attribute3,
3291         attribute4,
3292         attribute5,
3293         attribute6,
3294         attribute7,
3295         attribute8,
3296         attribute9,
3297         attribute10,
3298         attribute11,
3299         attribute12,
3300         attribute13,
3301         attribute14,
3302         attribute15,
3303         created_by,
3304         creation_date,
3305         last_updated_by,
3306         last_update_date,
3307         last_update_login,
3308         start_date,
3309         period,
3310         number_of_periods,
3311         lock_level_step,
3312         advance_or_arrears,
3313         yield_name,
3314         yield_value,
3315         implicit_interest_rate,
3316         asset_value,
3317         residual_value,
3318         unbilled_receivables,
3319         asset_quantity,
3320         quote_quantity,
3321         split_kle_id,
3322         split_kle_name,
3323         currency_code,
3324         currency_conversion_code,
3325         currency_conversion_type,
3326         currency_conversion_rate,
3327         currency_conversion_date,
3328         try_id, -- rmunjulu Sales_Tax_Enhancement
3329         due_date ) --dkagrawa bug 4187250
3330 
3331       VALUES (
3332         in_id(i),
3333         in_sty_id(i),
3334         in_kle_id(i),
3335         in_qlt_code(i),
3336         in_qte_id(i),
3337         in_line_number(i),
3338         in_amount(i),
3339         in_object_version_number(i),
3340         in_modified_yn(i),
3341         in_defaulted_yn(i),
3342         in_taxed_yn(i),
3343         in_org_id(i),
3344         in_request_id(i),
3345         in_program_application_id(i),
3346         in_program_id(i),
3347         in_program_update_date(i),
3348         in_attribute_category(i),
3349         in_attribute1(i),
3350         in_attribute2(i),
3351         in_attribute3(i),
3352         in_attribute4(i),
3353         in_attribute5(i),
3354         in_attribute6(i),
3355         in_attribute7(i),
3356         in_attribute8(i),
3357         in_attribute9(i),
3358         in_attribute10(i),
3359         in_attribute11(i),
3360         in_attribute12(i),
3361         in_attribute13(i),
3362         in_attribute14(i),
3363         in_attribute15(i),
3364         in_created_by(i),
3365         in_creation_date(i),
3366         in_last_updated_by(i),
3367         in_last_update_date(i),
3368         in_last_update_login(i),
3369         in_start_date(i),
3370         in_period(i),
3371         in_number_of_periods(i),
3372         in_lock_level_step(i),
3373         in_advance_or_arrears(i),
3374         in_yield_name(i),
3375         in_yield_value(i),
3376         in_implicit_interest_rate(i),
3377         in_asset_value(i),
3378         in_residual_value(i),
3379         in_unbilled_receivables(i),
3380         in_asset_quantity(i),
3381         in_quote_quantity(i),
3382         in_split_kle_id(i),
3383         in_split_kle_name(i),
3384         in_currency_code(i),
3385         in_currency_conversion_code(i),
3386         in_currency_conversion_type(i),
3387         in_currency_conversion_rate(i),
3388         in_currency_conversion_date(i),
3389         in_try_id(i), -- rmunjulu Sales_Tax_Enhancement
3390 	in_due_date(i)); --dkagrawa bug 4187250
3391 
3392     -- Bulk insert into tl table
3393     FORALL i in 1..l_tabsize
3394     INSERT INTO OKL_TXL_QUOTE_LINES_TL(
3395           id,
3396           language,
3397           source_lang,
3398           sfwt_flag,
3399           description,
3400           created_by,
3401           creation_date,
3402           last_updated_by,
3403           last_update_date,
3404           last_update_login)
3405         VALUES (
3406           in_id(i),
3407           in_language(i),
3408           in_source_lang(i),
3409           in_sfwt_flag(i),
3410           in_description(i),
3411           in_created_by(i),
3412           in_creation_date(i),
3413           in_last_updated_by(i),
3414           in_last_update_date(i),
3415           in_last_update_login(i));
3416 
3417     x_tqlv_tbl := p_tqlv_tbl;
3418     x_return_status := OKL_API.G_RET_STS_SUCCESS;
3419     OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3420 
3421   EXCEPTION
3422     WHEN OKL_API.G_EXCEPTION_ERROR THEN
3423       x_return_status := OKL_API.HANDLE_EXCEPTIONS
3424       (
3425         l_api_name,
3426         G_PKG_NAME,
3427         'OKL_API.G_RET_STS_ERROR',
3428         x_msg_count,
3429         x_msg_data,
3430         '_PVT'
3431       );
3432     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3433       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
3434       (
3435         l_api_name,
3436         G_PKG_NAME,
3437         'OKL_API.G_RET_STS_UNEXP_ERROR',
3438         x_msg_count,
3439         x_msg_data,
3440         '_PVT'
3441       );
3442     WHEN OTHERS THEN
3443       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
3444       (
3445         l_api_name,
3446         G_PKG_NAME,
3447         'OTHERS',
3448         x_msg_count,
3449         x_msg_data,
3450         '_PVT'
3451       );
3452   END insert_row_bulk;
3453 -- PAGARG Bug 4299668 **End**
3454 
3455   ---------------------------------------------------------------------------
3456   -- PROCEDURE lock_row
3457   ---------------------------------------------------------------------------
3458   ----------------------------------------
3459   -- lock_row for:OKL_TXL_QUOTE_LINES_B --
3460   ----------------------------------------
3461   PROCEDURE lock_row(
3462     p_init_msg_list                IN VARCHAR2,
3463     x_return_status                OUT NOCOPY VARCHAR2,
3464     x_msg_count                    OUT NOCOPY NUMBER,
3465     x_msg_data                     OUT NOCOPY VARCHAR2,
3466     p_tql_rec                      IN tql_rec_type) IS
3467 
3468     E_Resource_Busy               EXCEPTION;
3469     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
3470     CURSOR lock_csr (p_tql_rec IN tql_rec_type) IS
3471     SELECT OBJECT_VERSION_NUMBER
3472       FROM OKL_TXL_QUOTE_LINES_B
3473      WHERE ID = p_tql_rec.id
3474        AND OBJECT_VERSION_NUMBER = p_tql_rec.object_version_number
3475     FOR UPDATE OF OBJECT_VERSION_NUMBER NOWAIT;
3476 
3477     CURSOR  lchk_csr (p_tql_rec IN tql_rec_type) IS
3478     SELECT OBJECT_VERSION_NUMBER
3479       FROM OKL_TXL_QUOTE_LINES_B
3480     WHERE ID = p_tql_rec.id;
3481     l_api_version                 CONSTANT NUMBER := 1;
3482     l_api_name                     CONSTANT VARCHAR2(30) := 'B_lock_row';
3483     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3484     l_object_version_number       OKL_TXL_QUOTE_LINES_B.OBJECT_VERSION_NUMBER%TYPE;
3485     lc_object_version_number      OKL_TXL_QUOTE_LINES_B.OBJECT_VERSION_NUMBER%TYPE;
3486     l_row_notfound                BOOLEAN := FALSE;
3487     lc_row_notfound               BOOLEAN := FALSE;
3488   BEGIN
3489     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3490                                               p_init_msg_list,
3491                                               '_PVT',
3492                                               x_return_status);
3493     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3494       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3495     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3496       RAISE OKC_API.G_EXCEPTION_ERROR;
3497     END IF;
3498     BEGIN
3499       OPEN lock_csr(p_tql_rec);
3500       FETCH lock_csr INTO l_object_version_number;
3501       l_row_notfound := lock_csr%NOTFOUND;
3502       CLOSE lock_csr;
3503     EXCEPTION
3504       WHEN E_Resource_Busy THEN
3505         IF (lock_csr%ISOPEN) THEN
3506           CLOSE lock_csr;
3507         END IF;
3508         OKC_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
3509         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
3510     END;
3511 
3512     IF ( l_row_notfound ) THEN
3513       OPEN lchk_csr(p_tql_rec);
3514       FETCH lchk_csr INTO lc_object_version_number;
3515       lc_row_notfound := lchk_csr%NOTFOUND;
3516       CLOSE lchk_csr;
3517     END IF;
3518     IF (lc_row_notfound) THEN
3519       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
3520       RAISE OKC_API.G_EXCEPTION_ERROR;
3521     ELSIF lc_object_version_number > p_tql_rec.object_version_number THEN
3522       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
3523       RAISE OKC_API.G_EXCEPTION_ERROR;
3524     ELSIF lc_object_version_number <> p_tql_rec.object_version_number THEN
3525       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
3526       RAISE OKC_API.G_EXCEPTION_ERROR;
3527     ELSIF lc_object_version_number = -1 THEN
3528       OKC_API.set_message(G_APP_NAME,G_RECORD_LOGICALLY_DELETED);
3529       RAISE OKC_API.G_EXCEPTION_ERROR;
3530     END IF;
3531     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3532   EXCEPTION
3533     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3534       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3535       (
3536         l_api_name,
3537         G_PKG_NAME,
3538         'OKC_API.G_RET_STS_ERROR',
3539         x_msg_count,
3540         x_msg_data,
3541         '_PVT'
3542       );
3543     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3544       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3545       (
3546         l_api_name,
3547         G_PKG_NAME,
3548         'OKC_API.G_RET_STS_UNEXP_ERROR',
3549         x_msg_count,
3550         x_msg_data,
3551         '_PVT'
3552       );
3553     WHEN OTHERS THEN
3554       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3555       (
3556         l_api_name,
3557         G_PKG_NAME,
3558         'OTHERS',
3559         x_msg_count,
3560         x_msg_data,
3561         '_PVT'
3562       );
3563   END lock_row;
3564   -----------------------------------------
3565   -- lock_row for:OKL_TXL_QUOTE_LINES_TL --
3566   -----------------------------------------
3567   PROCEDURE lock_row(
3568     p_init_msg_list                IN VARCHAR2,
3569     x_return_status                OUT NOCOPY VARCHAR2,
3570     x_msg_count                    OUT NOCOPY NUMBER,
3571     x_msg_data                     OUT NOCOPY VARCHAR2,
3572     p_okl_txl_quote_lines_tl_rec   IN OklTxlQuoteLinesTlRecType) IS
3573 
3574     E_Resource_Busy               EXCEPTION;
3575     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
3576     CURSOR lock_csr (p_okl_txl_quote_lines_tl_rec IN OklTxlQuoteLinesTlRecType) IS
3577     SELECT *
3578       FROM OKL_TXL_QUOTE_LINES_TL
3579      WHERE ID = p_okl_txl_quote_lines_tl_rec.id
3580     FOR UPDATE NOWAIT;
3581 
3582     l_api_version                 CONSTANT NUMBER := 1;
3583     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_lock_row';
3584     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3585     l_lock_var                    lock_csr%ROWTYPE;
3586     l_row_notfound                BOOLEAN := FALSE;
3587     lc_row_notfound               BOOLEAN := FALSE;
3588   BEGIN
3589     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3590                                               p_init_msg_list,
3591                                               '_PVT',
3592                                               x_return_status);
3593     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3594       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3595     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3596       RAISE OKC_API.G_EXCEPTION_ERROR;
3597     END IF;
3598     BEGIN
3599       OPEN lock_csr(p_okl_txl_quote_lines_tl_rec);
3600       FETCH lock_csr INTO l_lock_var;
3601       l_row_notfound := lock_csr%NOTFOUND;
3602       CLOSE lock_csr;
3603     EXCEPTION
3604       WHEN E_Resource_Busy THEN
3605         IF (lock_csr%ISOPEN) THEN
3606           CLOSE lock_csr;
3607         END IF;
3608         OKC_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
3609         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
3610     END;
3611 
3612     IF ( l_row_notfound ) THEN
3613       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
3614       RAISE OKC_API.G_EXCEPTION_ERROR;
3615     END IF;
3616     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3617   EXCEPTION
3618     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3619       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3620       (
3621         l_api_name,
3622         G_PKG_NAME,
3623         'OKC_API.G_RET_STS_ERROR',
3624         x_msg_count,
3625         x_msg_data,
3626         '_PVT'
3627       );
3628     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3629       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3630       (
3631         l_api_name,
3632         G_PKG_NAME,
3633         'OKC_API.G_RET_STS_UNEXP_ERROR',
3634         x_msg_count,
3635         x_msg_data,
3636         '_PVT'
3637       );
3638     WHEN OTHERS THEN
3639       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3640       (
3641         l_api_name,
3642         G_PKG_NAME,
3643         'OTHERS',
3644         x_msg_count,
3645         x_msg_data,
3646         '_PVT'
3647       );
3648   END lock_row;
3649   ----------------------------------------
3650   -- lock_row for:OKL_TXL_QUOTE_LINES_V --
3651   ----------------------------------------
3652   PROCEDURE lock_row(
3653     p_api_version                  IN NUMBER,
3654     p_init_msg_list                IN VARCHAR2,
3655     x_return_status                OUT NOCOPY VARCHAR2,
3656     x_msg_count                    OUT NOCOPY NUMBER,
3657     x_msg_data                     OUT NOCOPY VARCHAR2,
3658     p_tqlv_rec                     IN tqlv_rec_type) IS
3659 
3660     l_api_version                 CONSTANT NUMBER := 1;
3661     l_api_name                     CONSTANT VARCHAR2(30) := 'V_lock_row';
3662     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3663     l_tql_rec                      tql_rec_type;
3664     l_okl_txl_quote_lines_tl_rec   OklTxlQuoteLinesTlRecType;
3665   BEGIN
3666     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3667                                               G_PKG_NAME,
3668                                               p_init_msg_list,
3669                                               l_api_version,
3670                                               p_api_version,
3671                                               '_PVT',
3672                                               x_return_status);
3673     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3674       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3675     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3676       RAISE OKC_API.G_EXCEPTION_ERROR;
3677     END IF;
3678     --------------------------------------
3679     -- Move VIEW record to "Child" records
3680     --------------------------------------
3681     migrate(p_tqlv_rec, l_tql_rec);
3682     migrate(p_tqlv_rec, l_okl_txl_quote_lines_tl_rec);
3683     --------------------------------------------
3684     -- Call the LOCK_ROW for each child record
3685     --------------------------------------------
3686     lock_row(
3687       p_init_msg_list,
3688       x_return_status,
3689       x_msg_count,
3690       x_msg_data,
3691       l_tql_rec
3692     );
3693     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3694       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3695     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3696       RAISE OKC_API.G_EXCEPTION_ERROR;
3697     END IF;
3698     lock_row(
3699       p_init_msg_list,
3700       x_return_status,
3701       x_msg_count,
3702       x_msg_data,
3703       l_okl_txl_quote_lines_tl_rec
3704     );
3705     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3706       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3707     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3708       RAISE OKC_API.G_EXCEPTION_ERROR;
3709     END IF;
3710     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3711   EXCEPTION
3712     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3713       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3714       (
3715         l_api_name,
3716         G_PKG_NAME,
3717         'OKC_API.G_RET_STS_ERROR',
3718         x_msg_count,
3719         x_msg_data,
3720         '_PVT'
3721       );
3722     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3723       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3724       (
3725         l_api_name,
3726         G_PKG_NAME,
3727         'OKC_API.G_RET_STS_UNEXP_ERROR',
3728         x_msg_count,
3729         x_msg_data,
3730         '_PVT'
3731       );
3732     WHEN OTHERS THEN
3733       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3734       (
3735         l_api_name,
3736         G_PKG_NAME,
3737         'OTHERS',
3738         x_msg_count,
3739         x_msg_data,
3740         '_PVT'
3741       );
3742   END lock_row;
3743   --------------------------------------
3744   -- PL/SQL TBL lock_row for:TQLV_TBL --
3745   --------------------------------------
3746   PROCEDURE lock_row(
3747     p_api_version                  IN NUMBER,
3748     p_init_msg_list                IN VARCHAR2,
3749     x_return_status                OUT NOCOPY VARCHAR2,
3750     x_msg_count                    OUT NOCOPY NUMBER,
3751     x_msg_data                     OUT NOCOPY VARCHAR2,
3752     p_tqlv_tbl                     IN tqlv_tbl_type) IS
3753 
3754     l_api_version                 CONSTANT NUMBER := 1;
3755     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_lock_row';
3756     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3757     i                              NUMBER := 0;
3758     -- Begin Post-Generation Change
3759     -- overall error status
3760     l_overall_status               VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3761     -- End Post-Generation Change
3762   BEGIN
3763     OKC_API.init_msg_list(p_init_msg_list);
3764     -- Make sure PL/SQL table has records in it before passing
3765     IF (p_tqlv_tbl.COUNT > 0) THEN
3766       i := p_tqlv_tbl.FIRST;
3767       LOOP
3768         lock_row (
3769           p_api_version                  => p_api_version,
3770           p_init_msg_list                => OKC_API.G_FALSE,
3771           x_return_status                => x_return_status,
3772           x_msg_count                    => x_msg_count,
3773           x_msg_data                     => x_msg_data,
3774           p_tqlv_rec                     => p_tqlv_tbl(i));
3775         -- Begin Post-Generation Change
3776         -- store the highest degree of error
3777         IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
3778            IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
3779               l_overall_status := x_return_status;
3780            END IF;
3781         END IF;
3782         -- End Post-Generation Change
3783         EXIT WHEN (i = p_tqlv_tbl.LAST);
3784         i := p_tqlv_tbl.NEXT(i);
3785       END LOOP;
3786       -- Begin Post-Generation Change
3787       -- return overall status
3788       x_return_status := l_overall_status;
3789       -- End Post-Generation Change
3790     END IF;
3791   EXCEPTION
3792     WHEN OKC_API.G_EXCEPTION_ERROR THEN
3793       x_return_status := OKC_API.HANDLE_EXCEPTIONS
3794       (
3795         l_api_name,
3796         G_PKG_NAME,
3797         'OKC_API.G_RET_STS_ERROR',
3798         x_msg_count,
3799         x_msg_data,
3800         '_PVT'
3801       );
3802     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3803       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3804       (
3805         l_api_name,
3806         G_PKG_NAME,
3807         'OKC_API.G_RET_STS_UNEXP_ERROR',
3808         x_msg_count,
3809         x_msg_data,
3810         '_PVT'
3811       );
3812     WHEN OTHERS THEN
3813       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3814       (
3815         l_api_name,
3816         G_PKG_NAME,
3817         'OTHERS',
3818         x_msg_count,
3819         x_msg_data,
3820         '_PVT'
3821       );
3822   END lock_row;
3823 
3824   ---------------------------------------------------------------------------
3825   -- PROCEDURE update_row
3826   ---------------------------------------------------------------------------
3827   ------------------------------------------
3828   -- update_row for:OKL_TXL_QUOTE_LINES_B --
3829   ------------------------------------------
3830   -- Start of comments
3831   -- Procedure Name  : update_row
3832   -- Description     : Update Row into OKL_TXL_QUOTE_LINES_B table
3833   -- Business Rules  :
3834   -- Parameters      : Record structure of OKL_TXL_QUOTE_LINES_B table
3835   -- Version         : 1.0
3836   -- History         : 18-DEC-2002 BAKUCHIB 2667636 Modified
3837   --                 : Added columns Currency code, currency Conversion_code
3838   --                   Currency conversion type, currency conversion date
3839   --                   currency conversion rate.
3840   --                 : 15-Feb-2005 PAGARG 4161133 code for new column DUE_DATE
3841   -- End of comments
3842   PROCEDURE update_row(
3843     p_init_msg_list                IN VARCHAR2,
3844     x_return_status                OUT NOCOPY VARCHAR2,
3845     x_msg_count                    OUT NOCOPY NUMBER,
3846     x_msg_data                     OUT NOCOPY VARCHAR2,
3847     p_tql_rec                      IN tql_rec_type,
3848     x_tql_rec                      OUT NOCOPY tql_rec_type) IS
3849 
3850     l_api_version                 CONSTANT NUMBER := 1;
3851     l_api_name                     CONSTANT VARCHAR2(30) := 'B_update_row';
3852     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3853     l_tql_rec                      tql_rec_type := p_tql_rec;
3854     l_def_tql_rec                  tql_rec_type;
3855     l_row_notfound                 BOOLEAN := TRUE;
3856     ----------------------------------
3857     -- FUNCTION populate_new_record --
3858     ----------------------------------
3859     -- Start of comments
3860     -- Function Name   : populate_new_record
3861     -- Description     : Populate new record into OKL_TXL_QUOTE_LINES_B table
3862     -- Business Rules  :
3863     -- Parameters      : Record structure of OKL_TXL_QUOTE_LINES_B table
3864     -- Version         : 1.0
3865     -- History         : 18-DEC-2002 BAKUCHIB 2667636
3866     --                 : Added columns Currency code, currency Conversion_code
3867     --                   Currency conversion type, currency conversion date
3868     --                   currency conversion rate.
3869     --                 : 15-Feb-2005 PAGARG 4161133 code for new column DUE_DATE
3870     FUNCTION populate_new_record (
3871       p_tql_rec	IN tql_rec_type,
3872       x_tql_rec	OUT NOCOPY tql_rec_type
3873     ) RETURN VARCHAR2 IS
3874       l_tql_rec                      tql_rec_type;
3875       l_row_notfound                 BOOLEAN := TRUE;
3876       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3877     BEGIN
3878       -- Added by Suresh P Bagukkudumbi
3879       -- Added for handling concurrent manager fields
3880 
3881       x_tql_rec := p_tql_rec;
3882       -- Get current database values
3883       l_tql_rec := get_rec(p_tql_rec, l_row_notfound);
3884       IF (l_row_notfound) THEN
3885         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3886       END IF;
3887       IF (x_tql_rec.id = OKC_API.G_MISS_NUM)
3888       THEN
3889         x_tql_rec.id := l_tql_rec.id;
3890       END IF;
3891       IF (x_tql_rec.sty_id = OKC_API.G_MISS_NUM)
3892       THEN
3893         x_tql_rec.sty_id := l_tql_rec.sty_id;
3894       END IF;
3895       IF (x_tql_rec.kle_id = OKC_API.G_MISS_NUM)
3896       THEN
3897         x_tql_rec.kle_id := l_tql_rec.kle_id;
3898       END IF;
3899       IF (x_tql_rec.qlt_code = OKC_API.G_MISS_CHAR)
3900       THEN
3901         x_tql_rec.qlt_code := l_tql_rec.qlt_code;
3902       END IF;
3903       IF (x_tql_rec.qte_id = OKC_API.G_MISS_NUM)
3904       THEN
3905         x_tql_rec.qte_id := l_tql_rec.qte_id;
3906       END IF;
3907       IF (x_tql_rec.line_number = OKC_API.G_MISS_NUM)
3908       THEN
3909         x_tql_rec.line_number := l_tql_rec.line_number;
3910       END IF;
3911       IF (x_tql_rec.amount = OKC_API.G_MISS_NUM)
3912       THEN
3913         x_tql_rec.amount := l_tql_rec.amount;
3914       END IF;
3915       IF (x_tql_rec.object_version_number = OKC_API.G_MISS_NUM)
3916       THEN
3917         x_tql_rec.object_version_number := l_tql_rec.object_version_number;
3918       END IF;
3919       IF (x_tql_rec.modified_yn = OKC_API.G_MISS_CHAR)
3920       THEN
3921         x_tql_rec.modified_yn := l_tql_rec.modified_yn;
3922       END IF;
3923       IF (x_tql_rec.defaulted_yn = OKC_API.G_MISS_CHAR)
3924       THEN
3925         x_tql_rec.defaulted_yn := l_tql_rec.defaulted_yn;
3926       END IF;
3927       IF (x_tql_rec.taxed_yn = OKC_API.G_MISS_CHAR)
3928       THEN
3929         x_tql_rec.taxed_yn := l_tql_rec.taxed_yn;
3930       END IF;
3931       IF (x_tql_rec.org_id = OKC_API.G_MISS_NUM)
3932       THEN
3933         x_tql_rec.org_id := l_tql_rec.org_id;
3934       END IF;
3935       IF (x_tql_rec.request_id = OKC_API.G_MISS_NUM)
3936       THEN
3937         x_tql_rec.request_id := l_tql_rec.request_id;
3938       END IF;
3939       IF (x_tql_rec.program_application_id = OKC_API.G_MISS_NUM)
3940       THEN
3941         x_tql_rec.program_application_id := l_tql_rec.program_application_id;
3942       END IF;
3943       IF (x_tql_rec.program_id = OKC_API.G_MISS_NUM)
3944       THEN
3945         x_tql_rec.program_id := l_tql_rec.program_id;
3946       END IF;
3947       IF (x_tql_rec.program_update_date = OKC_API.G_MISS_DATE)
3948       THEN
3949         x_tql_rec.program_update_date := l_tql_rec.program_update_date;
3950       END IF;
3951       IF (x_tql_rec.attribute_category = OKC_API.G_MISS_CHAR)
3952       THEN
3953         x_tql_rec.attribute_category := l_tql_rec.attribute_category;
3954       END IF;
3955       IF (x_tql_rec.attribute1 = OKC_API.G_MISS_CHAR)
3956       THEN
3957         x_tql_rec.attribute1 := l_tql_rec.attribute1;
3958       END IF;
3959       IF (x_tql_rec.attribute2 = OKC_API.G_MISS_CHAR)
3960       THEN
3961         x_tql_rec.attribute2 := l_tql_rec.attribute2;
3962       END IF;
3963       IF (x_tql_rec.attribute3 = OKC_API.G_MISS_CHAR)
3964       THEN
3965         x_tql_rec.attribute3 := l_tql_rec.attribute3;
3966       END IF;
3967       IF (x_tql_rec.attribute4 = OKC_API.G_MISS_CHAR)
3968       THEN
3969         x_tql_rec.attribute4 := l_tql_rec.attribute4;
3970       END IF;
3971       IF (x_tql_rec.attribute5 = OKC_API.G_MISS_CHAR)
3972       THEN
3973         x_tql_rec.attribute5 := l_tql_rec.attribute5;
3974       END IF;
3975       IF (x_tql_rec.attribute6 = OKC_API.G_MISS_CHAR)
3976       THEN
3977         x_tql_rec.attribute6 := l_tql_rec.attribute6;
3978       END IF;
3979       IF (x_tql_rec.attribute7 = OKC_API.G_MISS_CHAR)
3980       THEN
3981         x_tql_rec.attribute7 := l_tql_rec.attribute7;
3982       END IF;
3983       IF (x_tql_rec.attribute8 = OKC_API.G_MISS_CHAR)
3984       THEN
3985         x_tql_rec.attribute8 := l_tql_rec.attribute8;
3986       END IF;
3987       IF (x_tql_rec.attribute9 = OKC_API.G_MISS_CHAR)
3988       THEN
3989         x_tql_rec.attribute9 := l_tql_rec.attribute9;
3990       END IF;
3991       IF (x_tql_rec.attribute10 = OKC_API.G_MISS_CHAR)
3992       THEN
3993         x_tql_rec.attribute10 := l_tql_rec.attribute10;
3994       END IF;
3995       IF (x_tql_rec.attribute11 = OKC_API.G_MISS_CHAR)
3996       THEN
3997         x_tql_rec.attribute11 := l_tql_rec.attribute11;
3998       END IF;
3999       IF (x_tql_rec.attribute12 = OKC_API.G_MISS_CHAR)
4000       THEN
4001         x_tql_rec.attribute12 := l_tql_rec.attribute12;
4002       END IF;
4003       IF (x_tql_rec.attribute13 = OKC_API.G_MISS_CHAR)
4004       THEN
4005         x_tql_rec.attribute13 := l_tql_rec.attribute13;
4006       END IF;
4007       IF (x_tql_rec.attribute14 = OKC_API.G_MISS_CHAR)
4008       THEN
4009         x_tql_rec.attribute14 := l_tql_rec.attribute14;
4010       END IF;
4011       IF (x_tql_rec.attribute15 = OKC_API.G_MISS_CHAR)
4012       THEN
4013         x_tql_rec.attribute15 := l_tql_rec.attribute15;
4014       END IF;
4015       IF (x_tql_rec.created_by = OKC_API.G_MISS_NUM)
4016       THEN
4017         x_tql_rec.created_by := l_tql_rec.created_by;
4018       END IF;
4019       IF (x_tql_rec.creation_date = OKC_API.G_MISS_DATE)
4020       THEN
4021         x_tql_rec.creation_date := l_tql_rec.creation_date;
4022       END IF;
4023       IF (x_tql_rec.last_updated_by = OKC_API.G_MISS_NUM)
4024       THEN
4025         x_tql_rec.last_updated_by := l_tql_rec.last_updated_by;
4026       END IF;
4027       IF (x_tql_rec.last_update_date = OKC_API.G_MISS_DATE)
4028       THEN
4029         x_tql_rec.last_update_date := l_tql_rec.last_update_date;
4030       END IF;
4031       IF (x_tql_rec.last_update_login = OKC_API.G_MISS_NUM)
4032       THEN
4033         x_tql_rec.last_update_login := l_tql_rec.last_update_login;
4034       END IF;
4035       IF (x_tql_rec.start_date = OKC_API.G_MISS_DATE)
4036       THEN
4037         x_tql_rec.start_date := l_tql_rec.start_date;
4038       END IF;
4039       IF (x_tql_rec.period = OKC_API.G_MISS_CHAR)
4040       THEN
4041         x_tql_rec.period := l_tql_rec.period;
4042       END IF;
4043       IF (x_tql_rec.number_of_periods = OKC_API.G_MISS_NUM)
4044       THEN
4045         x_tql_rec.number_of_periods := l_tql_rec.number_of_periods;
4046       END IF;
4047       IF (x_tql_rec.lock_level_step = OKC_API.G_MISS_CHAR)
4048       THEN
4049         x_tql_rec.lock_level_step := l_tql_rec.lock_level_step;
4050       END IF;
4051       IF (x_tql_rec.advance_or_arrears = OKC_API.G_MISS_CHAR)
4052       THEN
4053         x_tql_rec.advance_or_arrears := l_tql_rec.advance_or_arrears;
4054       END IF;
4055       IF (x_tql_rec.yield_name = OKC_API.G_MISS_CHAR)
4056       THEN
4057         x_tql_rec.yield_name := l_tql_rec.yield_name;
4058       END IF;
4059       IF (x_tql_rec.yield_value = OKC_API.G_MISS_NUM)
4060       THEN
4061         x_tql_rec.yield_value := l_tql_rec.yield_value;
4062       END IF;
4063       IF (x_tql_rec.implicit_interest_rate = OKC_API.G_MISS_NUM)
4064       THEN
4065         x_tql_rec.implicit_interest_rate := l_tql_rec.implicit_interest_rate;
4066       END IF;
4067       IF (x_tql_rec.asset_value = OKC_API.G_MISS_NUM)
4068       THEN
4069         x_tql_rec.asset_value := l_tql_rec.asset_value;
4070       END IF;
4071       IF (x_tql_rec.residual_value = OKC_API.G_MISS_NUM)
4072       THEN
4073         x_tql_rec.residual_value := l_tql_rec.residual_value;
4074       END IF;
4075       IF (x_tql_rec.unbilled_receivables = OKC_API.G_MISS_NUM)
4076       THEN
4077         x_tql_rec.unbilled_receivables := l_tql_rec.unbilled_receivables;
4078       END IF;
4079       IF (x_tql_rec.asset_quantity = OKC_API.G_MISS_NUM)
4080       THEN
4081         x_tql_rec.asset_quantity := l_tql_rec.asset_quantity;
4082       END IF;
4083       IF (x_tql_rec.quote_quantity = OKC_API.G_MISS_NUM)
4084       THEN
4085         x_tql_rec.quote_quantity := l_tql_rec.quote_quantity;
4086       END IF;
4087       IF (x_tql_rec.split_kle_id = OKC_API.G_MISS_NUM)
4088       THEN
4089         x_tql_rec.split_kle_id := l_tql_rec.split_kle_id;
4090       END IF;
4091       -- RMUNJULU 2757312
4092       IF (x_tql_rec.split_kle_name = OKC_API.G_MISS_CHAR)
4093       THEN
4094         x_tql_rec.split_kle_name := l_tql_rec.split_kle_name;
4095       END IF;
4096   -- BAKUCHIB 2667636 Start
4097      IF (x_tql_rec.currency_code = OKC_API.G_MISS_CHAR)
4098       THEN
4099         x_tql_rec.currency_code := l_tql_rec.currency_code;
4100       END IF;
4101       IF (x_tql_rec.currency_conversion_code = OKC_API.G_MISS_CHAR)
4102       THEN
4103         x_tql_rec.currency_conversion_code := l_tql_rec.currency_conversion_code;
4104       END IF;
4105       IF (x_tql_rec.currency_conversion_type = OKC_API.G_MISS_CHAR)
4106       THEN
4107         x_tql_rec.currency_conversion_type := l_tql_rec.currency_conversion_type;
4108       END IF;
4109       IF (x_tql_rec.currency_conversion_rate = OKC_API.G_MISS_NUM)
4110       THEN
4111         x_tql_rec.currency_conversion_rate := l_tql_rec.currency_conversion_rate;
4112       END IF;
4113       IF (x_tql_rec.currency_conversion_date = OKC_API.G_MISS_DATE)
4114       THEN
4115         x_tql_rec.currency_conversion_date := l_tql_rec.currency_conversion_date;
4116       END IF;
4117   -- BAKUCHIB 2667636 End
4118       --PAGARG 4161133 start
4119       -- populate attribute due date, added new to column
4120       IF (x_tql_rec.due_date = OKC_API.G_MISS_DATE)
4121       THEN
4122         x_tql_rec.due_date := l_tql_rec.due_date;
4123       END IF;
4124       --PAGARG 4161133 end
4125       -- rmunjulu Sales_Tax_Enhancement
4126       IF (x_tql_rec.try_id = OKC_API.G_MISS_NUM)
4127       THEN
4128         x_tql_rec.try_id := l_tql_rec.try_id;
4129       END IF;
4130       RETURN(l_return_status);
4131     END populate_new_record;
4132     ----------------------------------------------
4133     -- Set_Attributes for:OKL_TXL_QUOTE_LINES_B --
4134     ----------------------------------------------
4135     FUNCTION Set_Attributes (
4136       p_tql_rec IN  tql_rec_type,
4137       x_tql_rec OUT NOCOPY tql_rec_type
4138     ) RETURN VARCHAR2 IS
4139       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4140     BEGIN
4141       x_tql_rec := p_tql_rec;
4142       RETURN(l_return_status);
4143     END Set_Attributes;
4144   BEGIN
4145     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4146                                               p_init_msg_list,
4147                                               '_PVT',
4148                                               x_return_status);
4149     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4150       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4151     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4152       RAISE OKC_API.G_EXCEPTION_ERROR;
4153     END IF;
4154     --- Setting item attributes
4155     l_return_status := Set_Attributes(
4156       p_tql_rec,                         -- IN
4157       l_tql_rec);                        -- OUT
4158     --- If any errors happen abort API
4159     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4160       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4161     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4162       RAISE OKC_API.G_EXCEPTION_ERROR;
4163     END IF;
4164     l_return_status := populate_new_record(l_tql_rec, l_def_tql_rec);
4165     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4166       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4167     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4168       RAISE OKC_API.G_EXCEPTION_ERROR;
4169     END IF;
4170     UPDATE  OKL_TXL_QUOTE_LINES_B
4171     SET STY_ID = l_def_tql_rec.sty_id,
4172         KLE_ID = l_def_tql_rec.kle_id,
4173         QLT_CODE = l_def_tql_rec.qlt_code,
4174         QTE_ID = l_def_tql_rec.qte_id,
4175         LINE_NUMBER = l_def_tql_rec.line_number,
4176         AMOUNT = l_def_tql_rec.amount,
4177         OBJECT_VERSION_NUMBER = l_def_tql_rec.object_version_number,
4178         MODIFIED_YN = l_def_tql_rec.modified_yn,
4179         DEFAULTED_YN = l_def_tql_rec.defaulted_yn,
4180         TAXED_YN = l_def_tql_rec.taxed_yn,
4181         ORG_ID = l_def_tql_rec.org_id,
4182         REQUEST_ID = NVL(decode(FND_GLOBAL.CONC_REQUEST_ID,-1, NULL,
4183                    FND_GLOBAL.CONC_REQUEST_ID),l_def_tql_rec.request_id),
4184         PROGRAM_APPLICATION_ID = NVL(decode(FND_GLOBAL.PROG_APPL_ID,-1,NULL,
4185                    FND_GLOBAL.PROG_APPL_ID),l_def_tql_rec.program_application_id),
4186         PROGRAM_ID = NVL(decode(FND_GLOBAL.CONC_PROGRAM_ID,-1,NULL,
4187                  FND_GLOBAL.CONC_PROGRAM_ID),l_def_tql_rec.program_id),
4188         PROGRAM_UPDATE_DATE = decode(decode(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,
4189                  SYSDATE),NULL,l_def_tql_rec.program_update_date,SYSDATE),
4190 
4191         ATTRIBUTE_CATEGORY = l_def_tql_rec.attribute_category,
4192         ATTRIBUTE1 = l_def_tql_rec.attribute1,
4193         ATTRIBUTE2 = l_def_tql_rec.attribute2,
4194         ATTRIBUTE3 = l_def_tql_rec.attribute3,
4195         ATTRIBUTE4 = l_def_tql_rec.attribute4,
4196         ATTRIBUTE5 = l_def_tql_rec.attribute5,
4197         ATTRIBUTE6 = l_def_tql_rec.attribute6,
4198         ATTRIBUTE7 = l_def_tql_rec.attribute7,
4199         ATTRIBUTE8 = l_def_tql_rec.attribute8,
4200         ATTRIBUTE9 = l_def_tql_rec.attribute9,
4201         ATTRIBUTE10 = l_def_tql_rec.attribute10,
4202         ATTRIBUTE11 = l_def_tql_rec.attribute11,
4203         ATTRIBUTE12 = l_def_tql_rec.attribute12,
4204         ATTRIBUTE13 = l_def_tql_rec.attribute13,
4205         ATTRIBUTE14 = l_def_tql_rec.attribute14,
4206         ATTRIBUTE15 = l_def_tql_rec.attribute15,
4207         CREATED_BY = l_def_tql_rec.created_by,
4208         CREATION_DATE = l_def_tql_rec.creation_date,
4209         LAST_UPDATED_BY = l_def_tql_rec.last_updated_by,
4210         LAST_UPDATE_DATE = l_def_tql_rec.last_update_date,
4211         LAST_UPDATE_LOGIN = l_def_tql_rec.last_update_login,
4212         START_DATE = l_def_tql_rec.start_date,
4213         PERIOD = l_def_tql_rec.period,
4214         NUMBER_OF_PERIODS = l_def_tql_rec.number_of_periods,
4215         LOCK_LEVEL_STEP = l_def_tql_rec.lock_level_step,
4216         ADVANCE_OR_ARREARS = l_def_tql_rec.advance_or_arrears,
4217         YIELD_NAME = l_def_tql_rec.yield_name,
4218         YIELD_VALUE = l_def_tql_rec.yield_value,
4219         IMPLICIT_INTEREST_RATE = l_def_tql_rec.implicit_interest_rate,
4220         ASSET_VALUE = l_def_tql_rec.asset_value,
4221         RESIDUAL_VALUE = l_def_tql_rec.residual_value,
4222         UNBILLED_RECEIVABLES = l_def_tql_rec.unbilled_receivables,
4223         ASSET_QUANTITY = l_def_tql_rec.asset_quantity,
4224         QUOTE_QUANTITY = l_def_tql_rec.quote_quantity,
4225         SPLIT_KLE_ID = l_def_tql_rec.split_kle_id,
4226         -- RMUNJULU 2757312
4227         SPLIT_KLE_NAME = l_def_tql_rec.split_kle_name,
4228   -- BAKCUHIUB 2667636 Start
4229         CURRENCY_CODE = l_def_tql_rec.currency_code,
4230         CURRENCY_CONVERSION_CODE = l_def_tql_rec.currency_conversion_code,
4231         CURRENCY_CONVERSION_TYPE = l_def_tql_rec.currency_conversion_type,
4232         CURRENCY_CONVERSION_RATE = l_def_tql_rec.currency_conversion_rate,
4233         CURRENCY_CONVERSION_DATE = l_def_tql_rec.currency_conversion_date,
4234   -- BAKUCHIB 2667636 End
4235         DUE_DATE = l_def_tql_rec.due_date, -- PAGARG Bug 4161133 new column
4236         TRY_ID = l_def_tql_rec.try_id-- rmunjulu Sales_Tax_Enhancement
4237     WHERE ID = l_def_tql_rec.id;
4238 
4239     x_tql_rec := l_def_tql_rec;
4240     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4241   EXCEPTION
4242     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4243       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4244       (
4245         l_api_name,
4246         G_PKG_NAME,
4247         'OKC_API.G_RET_STS_ERROR',
4248         x_msg_count,
4249         x_msg_data,
4250         '_PVT'
4251       );
4252     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4253       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4254       (
4255         l_api_name,
4256         G_PKG_NAME,
4257         'OKC_API.G_RET_STS_UNEXP_ERROR',
4258         x_msg_count,
4259         x_msg_data,
4260         '_PVT'
4261       );
4262     WHEN OTHERS THEN
4263       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4264       (
4265         l_api_name,
4266         G_PKG_NAME,
4267         'OTHERS',
4268         x_msg_count,
4269         x_msg_data,
4270         '_PVT'
4271       );
4272   END update_row;
4273   -------------------------------------------
4274   -- update_row for:OKL_TXL_QUOTE_LINES_TL --
4275   -------------------------------------------
4276   PROCEDURE update_row(
4277     p_init_msg_list                IN VARCHAR2,
4278     x_return_status                OUT NOCOPY VARCHAR2,
4279     x_msg_count                    OUT NOCOPY NUMBER,
4280     x_msg_data                     OUT NOCOPY VARCHAR2,
4281     p_okl_txl_quote_lines_tl_rec   IN OklTxlQuoteLinesTlRecType,
4282     x_okl_txl_quote_lines_tl_rec   OUT NOCOPY OklTxlQuoteLinesTlRecType) IS
4283 
4284     l_api_version                 CONSTANT NUMBER := 1;
4285     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_update_row';
4286     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4287     l_okl_txl_quote_lines_tl_rec   OklTxlQuoteLinesTlRecType := p_okl_txl_quote_lines_tl_rec;
4288     ldefokltxlquotelinestlrec      OklTxlQuoteLinesTlRecType;
4289     l_row_notfound                 BOOLEAN := TRUE;
4290     ----------------------------------
4291     -- FUNCTION populate_new_record --
4292     ----------------------------------
4293     FUNCTION populate_new_record (
4294       p_okl_txl_quote_lines_tl_rec	IN OklTxlQuoteLinesTlRecType,
4295       x_okl_txl_quote_lines_tl_rec	OUT NOCOPY OklTxlQuoteLinesTlRecType
4296     ) RETURN VARCHAR2 IS
4297       l_okl_txl_quote_lines_tl_rec   OklTxlQuoteLinesTlRecType;
4298       l_row_notfound                 BOOLEAN := TRUE;
4299       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4300     BEGIN
4301       x_okl_txl_quote_lines_tl_rec := p_okl_txl_quote_lines_tl_rec;
4302       -- Get current database values
4303       l_okl_txl_quote_lines_tl_rec := get_rec(p_okl_txl_quote_lines_tl_rec, l_row_notfound);
4304       IF (l_row_notfound) THEN
4305         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4306       END IF;
4307       IF (x_okl_txl_quote_lines_tl_rec.id = OKC_API.G_MISS_NUM)
4308       THEN
4309         x_okl_txl_quote_lines_tl_rec.id := l_okl_txl_quote_lines_tl_rec.id;
4310       END IF;
4311       IF (x_okl_txl_quote_lines_tl_rec.language = OKC_API.G_MISS_CHAR)
4312       THEN
4313         x_okl_txl_quote_lines_tl_rec.language := l_okl_txl_quote_lines_tl_rec.language;
4314       END IF;
4315       IF (x_okl_txl_quote_lines_tl_rec.source_lang = OKC_API.G_MISS_CHAR)
4316       THEN
4317         x_okl_txl_quote_lines_tl_rec.source_lang := l_okl_txl_quote_lines_tl_rec.source_lang;
4318       END IF;
4319       IF (x_okl_txl_quote_lines_tl_rec.sfwt_flag = OKC_API.G_MISS_CHAR)
4320       THEN
4321         x_okl_txl_quote_lines_tl_rec.sfwt_flag := l_okl_txl_quote_lines_tl_rec.sfwt_flag;
4322       END IF;
4323       IF (x_okl_txl_quote_lines_tl_rec.description = OKC_API.G_MISS_CHAR)
4324       THEN
4325         x_okl_txl_quote_lines_tl_rec.description := l_okl_txl_quote_lines_tl_rec.description;
4326       END IF;
4327       IF (x_okl_txl_quote_lines_tl_rec.created_by = OKC_API.G_MISS_NUM)
4328       THEN
4329         x_okl_txl_quote_lines_tl_rec.created_by := l_okl_txl_quote_lines_tl_rec.created_by;
4330       END IF;
4331       IF (x_okl_txl_quote_lines_tl_rec.creation_date = OKC_API.G_MISS_DATE)
4332       THEN
4333         x_okl_txl_quote_lines_tl_rec.creation_date := l_okl_txl_quote_lines_tl_rec.creation_date;
4334       END IF;
4335       IF (x_okl_txl_quote_lines_tl_rec.last_updated_by = OKC_API.G_MISS_NUM)
4336       THEN
4337         x_okl_txl_quote_lines_tl_rec.last_updated_by := l_okl_txl_quote_lines_tl_rec.last_updated_by;
4338       END IF;
4339       IF (x_okl_txl_quote_lines_tl_rec.last_update_date = OKC_API.G_MISS_DATE)
4340       THEN
4341         x_okl_txl_quote_lines_tl_rec.last_update_date := l_okl_txl_quote_lines_tl_rec.last_update_date;
4342       END IF;
4343       IF (x_okl_txl_quote_lines_tl_rec.last_update_login = OKC_API.G_MISS_NUM)
4344       THEN
4345         x_okl_txl_quote_lines_tl_rec.last_update_login := l_okl_txl_quote_lines_tl_rec.last_update_login;
4346       END IF;
4347       RETURN(l_return_status);
4348     END populate_new_record;
4349     -----------------------------------------------
4350     -- Set_Attributes for:OKL_TXL_QUOTE_LINES_TL --
4351     -----------------------------------------------
4352     FUNCTION Set_Attributes (
4353       p_okl_txl_quote_lines_tl_rec IN  OklTxlQuoteLinesTlRecType,
4354       x_okl_txl_quote_lines_tl_rec OUT NOCOPY OklTxlQuoteLinesTlRecType
4355     ) RETURN VARCHAR2 IS
4356       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4357     BEGIN
4358       x_okl_txl_quote_lines_tl_rec := p_okl_txl_quote_lines_tl_rec;
4359       x_okl_txl_quote_lines_tl_rec.LANGUAGE := USERENV('LANG');
4360       x_okl_txl_quote_lines_tl_rec.SOURCE_LANG := USERENV('LANG');
4361       RETURN(l_return_status);
4362     END Set_Attributes;
4363   BEGIN
4364     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4365                                               p_init_msg_list,
4366                                               '_PVT',
4367                                               x_return_status);
4368     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4369       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4370     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4371       RAISE OKC_API.G_EXCEPTION_ERROR;
4372     END IF;
4373     --- Setting item attributes
4374     l_return_status := Set_Attributes(
4375       p_okl_txl_quote_lines_tl_rec,      -- IN
4376       l_okl_txl_quote_lines_tl_rec);     -- OUT
4377     --- If any errors happen abort API
4378     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4379       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4380     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4381       RAISE OKC_API.G_EXCEPTION_ERROR;
4382     END IF;
4383     l_return_status := populate_new_record(l_okl_txl_quote_lines_tl_rec, ldefokltxlquotelinestlrec);
4384     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4385       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4386     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4387       RAISE OKC_API.G_EXCEPTION_ERROR;
4388     END IF;
4389     UPDATE  OKL_TXL_QUOTE_LINES_TL
4390     SET DESCRIPTION = ldefokltxlquotelinestlrec.description,
4391         CREATED_BY = ldefokltxlquotelinestlrec.created_by,
4392         SOURCE_LANG = ldefokltxlquotelinestlrec.source_lang, --Fix for bug 3637102
4393         CREATION_DATE = ldefokltxlquotelinestlrec.creation_date,
4394         LAST_UPDATED_BY = ldefokltxlquotelinestlrec.last_updated_by,
4395         LAST_UPDATE_DATE = ldefokltxlquotelinestlrec.last_update_date,
4396         LAST_UPDATE_LOGIN = ldefokltxlquotelinestlrec.last_update_login
4397     WHERE ID = ldefokltxlquotelinestlrec.id
4398         AND USERENV('LANG') in (SOURCE_LANG,LANGUAGE);--Fix for bug 3637102
4399       --AND SOURCE_LANG = USERENV('LANG');
4400 
4401     UPDATE  OKL_TXL_QUOTE_LINES_TL
4402     SET SFWT_FLAG = 'Y'
4403     WHERE ID = ldefokltxlquotelinestlrec.id
4404       AND SOURCE_LANG <> USERENV('LANG');
4405 
4406     x_okl_txl_quote_lines_tl_rec := ldefokltxlquotelinestlrec;
4407     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4408   EXCEPTION
4409     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4410       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4411       (
4412         l_api_name,
4413         G_PKG_NAME,
4414         'OKC_API.G_RET_STS_ERROR',
4415         x_msg_count,
4416         x_msg_data,
4417         '_PVT'
4418       );
4419     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4420       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4421       (
4422         l_api_name,
4423         G_PKG_NAME,
4424         'OKC_API.G_RET_STS_UNEXP_ERROR',
4425         x_msg_count,
4426         x_msg_data,
4427         '_PVT'
4428       );
4429     WHEN OTHERS THEN
4430       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4431       (
4432         l_api_name,
4433         G_PKG_NAME,
4434         'OTHERS',
4435         x_msg_count,
4436         x_msg_data,
4437         '_PVT'
4438       );
4439   END update_row;
4440   ------------------------------------------
4441   -- update_row for:OKL_TXL_QUOTE_LINES_V --
4442   ------------------------------------------
4443   -- Start of comments
4444   -- Procedure Name  : update_row
4445   -- Description     : Update Row into OKL_TXL_QUOTE_LINES_V table
4446   -- Business Rules  :
4447   -- Parameters      : Record structure of OKL_TXL_QUOTE_LINES_V table
4448   -- Version         : 1.0
4449   -- History         : 18-DEC-2002 BAKUCHIB 2667636  Modified
4450   --                 : Added columns Currency code, currency Conversion_code
4451   --                   Currency conversion type, currency conversion date
4452   --                   currency conversion rate.
4453   --                 : RMUNJULU 09-MAY-03 2949544 Added code to round
4454   --                   the amount field before saving to table
4455   --                 : PAGARG 15-Feb-2005 Bug 4161133 Code for new column due_date
4456   PROCEDURE update_row(
4457     p_api_version                  IN NUMBER,
4458     p_init_msg_list                IN VARCHAR2,
4459     x_return_status                OUT NOCOPY VARCHAR2,
4460     x_msg_count                    OUT NOCOPY NUMBER,
4461     x_msg_data                     OUT NOCOPY VARCHAR2,
4462     p_tqlv_rec                     IN tqlv_rec_type,
4463     x_tqlv_rec                     OUT NOCOPY tqlv_rec_type) IS
4464 
4465     l_api_version                 CONSTANT NUMBER := 1;
4466     l_api_name                     CONSTANT VARCHAR2(30) := 'V_update_row';
4467     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4468     l_tqlv_rec                     tqlv_rec_type := p_tqlv_rec;
4469     l_def_tqlv_rec                 tqlv_rec_type;
4470     l_okl_txl_quote_lines_tl_rec   OklTxlQuoteLinesTlRecType;
4471     lx_okl_txl_quote_lines_tl_rec  OklTxlQuoteLinesTlRecType;
4472     l_tql_rec                      tql_rec_type;
4473     lx_tql_rec                     tql_rec_type;
4474 
4475 
4476     -- RMUNJULU 09-MAY-03 2949544 Added variable
4477     l_rounded_amount NUMBER;
4478     -------------------------------
4479     -- FUNCTION fill_who_columns --
4480     -------------------------------
4481     FUNCTION fill_who_columns (
4482       p_tqlv_rec	IN tqlv_rec_type
4483     ) RETURN tqlv_rec_type IS
4484       l_tqlv_rec	tqlv_rec_type := p_tqlv_rec;
4485     BEGIN
4486       l_tqlv_rec.LAST_UPDATE_DATE := SYSDATE;
4487       l_tqlv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
4488       l_tqlv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
4489       RETURN(l_tqlv_rec);
4490     END fill_who_columns;
4491     ----------------------------------
4492     -- FUNCTION populate_new_record --
4493     ----------------------------------
4494     -- Start of comments
4495     -- Function Name   : populate_new_record
4496     -- Description     : Populate new record into OKL_TXL_QUOTE_LINES_V table
4497     -- Business Rules  :
4498     -- Parameters      : Record structure of OKL_TXL_QUOTE_LINES_V table
4499     -- Version         : 1.0
4500     -- History         : 18-DEC-2002 BAKUCHIB 2667636 Modified
4501     --                 : Added columns Currency code, currency Conversion_code
4502     --                   Currency conversion type, currency conversion date
4503     --                   currency conversion rate.
4504     --                 : PAGARG 15-Feb-2005 Bug 4161133 Code for new column due_date
4505     FUNCTION populate_new_record (
4506       p_tqlv_rec	IN tqlv_rec_type,
4507       x_tqlv_rec	OUT NOCOPY tqlv_rec_type
4508     ) RETURN VARCHAR2 IS
4509       l_tqlv_rec                     tqlv_rec_type;
4510       l_row_notfound                 BOOLEAN := TRUE;
4511       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4512     BEGIN
4513       x_tqlv_rec := p_tqlv_rec;
4514       -- Get current database values
4515       l_tqlv_rec := get_rec(p_tqlv_rec, l_row_notfound);
4516       IF (l_row_notfound) THEN
4517         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4518       END IF;
4519       IF (x_tqlv_rec.id = OKC_API.G_MISS_NUM)
4520       THEN
4521         x_tqlv_rec.id := l_tqlv_rec.id;
4522       END IF;
4523       IF (x_tqlv_rec.object_version_number = OKC_API.G_MISS_NUM)
4524       THEN
4525         x_tqlv_rec.object_version_number := l_tqlv_rec.object_version_number;
4526       END IF;
4527       IF (x_tqlv_rec.sfwt_flag = OKC_API.G_MISS_CHAR)
4528       THEN
4529         x_tqlv_rec.sfwt_flag := l_tqlv_rec.sfwt_flag;
4530       END IF;
4531       IF (x_tqlv_rec.qlt_code = OKC_API.G_MISS_CHAR)
4532       THEN
4533         x_tqlv_rec.qlt_code := l_tqlv_rec.qlt_code;
4534       END IF;
4535       IF (x_tqlv_rec.kle_id = OKC_API.G_MISS_NUM)
4536       THEN
4537         x_tqlv_rec.kle_id := l_tqlv_rec.kle_id;
4538       END IF;
4539       IF (x_tqlv_rec.sty_id = OKC_API.G_MISS_NUM)
4540       THEN
4541         x_tqlv_rec.sty_id := l_tqlv_rec.sty_id;
4542       END IF;
4543       IF (x_tqlv_rec.qte_id = OKC_API.G_MISS_NUM)
4544       THEN
4545         x_tqlv_rec.qte_id := l_tqlv_rec.qte_id;
4546       END IF;
4547       IF (x_tqlv_rec.line_number = OKC_API.G_MISS_NUM)
4548       THEN
4549         x_tqlv_rec.line_number := l_tqlv_rec.line_number;
4550       END IF;
4551       IF (x_tqlv_rec.description = OKC_API.G_MISS_CHAR)
4552       THEN
4553         x_tqlv_rec.description := l_tqlv_rec.description;
4554       END IF;
4555       IF (x_tqlv_rec.amount = OKC_API.G_MISS_NUM)
4556       THEN
4557         x_tqlv_rec.amount := l_tqlv_rec.amount;
4558       -- DAPATEL - 01/08/02 - Added to reflect a manual amount updated.
4559       ELSE
4560         IF (x_tqlv_rec.amount <> l_tqlv_rec.amount) THEN
4561           x_tqlv_rec.MODIFIED_YN := G_YES;
4562         END IF;
4563       -- End
4564       END IF;
4565       IF (x_tqlv_rec.modified_yn = OKC_API.G_MISS_CHAR)
4566       THEN
4567         x_tqlv_rec.modified_yn := l_tqlv_rec.modified_yn;
4568       END IF;
4569       IF (x_tqlv_rec.defaulted_yn = OKC_API.G_MISS_CHAR)
4570       THEN
4571         x_tqlv_rec.defaulted_yn := l_tqlv_rec.defaulted_yn;
4572       END IF;
4573       IF (x_tqlv_rec.taxed_yn = OKC_API.G_MISS_CHAR)
4574       THEN
4575         x_tqlv_rec.taxed_yn := l_tqlv_rec.taxed_yn;
4576       END IF;
4577       IF (x_tqlv_rec.attribute_category = OKC_API.G_MISS_CHAR)
4578       THEN
4579         x_tqlv_rec.attribute_category := l_tqlv_rec.attribute_category;
4580       END IF;
4581       IF (x_tqlv_rec.attribute1 = OKC_API.G_MISS_CHAR)
4582       THEN
4583         x_tqlv_rec.attribute1 := l_tqlv_rec.attribute1;
4584       END IF;
4585       IF (x_tqlv_rec.attribute2 = OKC_API.G_MISS_CHAR)
4586       THEN
4587         x_tqlv_rec.attribute2 := l_tqlv_rec.attribute2;
4588       END IF;
4589       IF (x_tqlv_rec.attribute3 = OKC_API.G_MISS_CHAR)
4590       THEN
4591         x_tqlv_rec.attribute3 := l_tqlv_rec.attribute3;
4592       END IF;
4593       IF (x_tqlv_rec.attribute4 = OKC_API.G_MISS_CHAR)
4594       THEN
4595         x_tqlv_rec.attribute4 := l_tqlv_rec.attribute4;
4596       END IF;
4597       IF (x_tqlv_rec.attribute5 = OKC_API.G_MISS_CHAR)
4598       THEN
4599         x_tqlv_rec.attribute5 := l_tqlv_rec.attribute5;
4600       END IF;
4601       IF (x_tqlv_rec.attribute6 = OKC_API.G_MISS_CHAR)
4602       THEN
4603         x_tqlv_rec.attribute6 := l_tqlv_rec.attribute6;
4604       END IF;
4605       IF (x_tqlv_rec.attribute7 = OKC_API.G_MISS_CHAR)
4606       THEN
4607         x_tqlv_rec.attribute7 := l_tqlv_rec.attribute7;
4608       END IF;
4609       IF (x_tqlv_rec.attribute8 = OKC_API.G_MISS_CHAR)
4610       THEN
4611         x_tqlv_rec.attribute8 := l_tqlv_rec.attribute8;
4612       END IF;
4613       IF (x_tqlv_rec.attribute9 = OKC_API.G_MISS_CHAR)
4614       THEN
4615         x_tqlv_rec.attribute9 := l_tqlv_rec.attribute9;
4616       END IF;
4617       IF (x_tqlv_rec.attribute10 = OKC_API.G_MISS_CHAR)
4618       THEN
4619         x_tqlv_rec.attribute10 := l_tqlv_rec.attribute10;
4620       END IF;
4621       IF (x_tqlv_rec.attribute11 = OKC_API.G_MISS_CHAR)
4622       THEN
4623         x_tqlv_rec.attribute11 := l_tqlv_rec.attribute11;
4624       END IF;
4625       IF (x_tqlv_rec.attribute12 = OKC_API.G_MISS_CHAR)
4626       THEN
4627         x_tqlv_rec.attribute12 := l_tqlv_rec.attribute12;
4628       END IF;
4629       IF (x_tqlv_rec.attribute13 = OKC_API.G_MISS_CHAR)
4630       THEN
4631         x_tqlv_rec.attribute13 := l_tqlv_rec.attribute13;
4632       END IF;
4633       IF (x_tqlv_rec.attribute14 = OKC_API.G_MISS_CHAR)
4634       THEN
4635         x_tqlv_rec.attribute14 := l_tqlv_rec.attribute14;
4636       END IF;
4637       IF (x_tqlv_rec.attribute15 = OKC_API.G_MISS_CHAR)
4638       THEN
4639         x_tqlv_rec.attribute15 := l_tqlv_rec.attribute15;
4640       END IF;
4641       IF (x_tqlv_rec.org_id = OKC_API.G_MISS_NUM)
4642       THEN
4643         x_tqlv_rec.org_id := l_tqlv_rec.org_id;
4644       END IF;
4645       IF (x_tqlv_rec.request_id = OKC_API.G_MISS_NUM)
4646       THEN
4647         x_tqlv_rec.request_id := l_tqlv_rec.request_id;
4648       END IF;
4649       IF (x_tqlv_rec.program_application_id = OKC_API.G_MISS_NUM)
4650       THEN
4651         x_tqlv_rec.program_application_id := l_tqlv_rec.program_application_id;
4652       END IF;
4653       IF (x_tqlv_rec.program_id = OKC_API.G_MISS_NUM)
4654       THEN
4655         x_tqlv_rec.program_id := l_tqlv_rec.program_id;
4656       END IF;
4657       IF (x_tqlv_rec.program_update_date = OKC_API.G_MISS_DATE)
4658       THEN
4659         x_tqlv_rec.program_update_date := l_tqlv_rec.program_update_date;
4660       END IF;
4661       IF (x_tqlv_rec.created_by = OKC_API.G_MISS_NUM)
4662       THEN
4663         x_tqlv_rec.created_by := l_tqlv_rec.created_by;
4664       END IF;
4665       IF (x_tqlv_rec.creation_date = OKC_API.G_MISS_DATE)
4666       THEN
4667         x_tqlv_rec.creation_date := l_tqlv_rec.creation_date;
4668       END IF;
4669       IF (x_tqlv_rec.last_updated_by = OKC_API.G_MISS_NUM)
4670       THEN
4671         x_tqlv_rec.last_updated_by := l_tqlv_rec.last_updated_by;
4672       END IF;
4673       IF (x_tqlv_rec.last_update_date = OKC_API.G_MISS_DATE)
4674       THEN
4675         x_tqlv_rec.last_update_date := l_tqlv_rec.last_update_date;
4676       END IF;
4677       IF (x_tqlv_rec.last_update_login = OKC_API.G_MISS_NUM)
4678       THEN
4679         x_tqlv_rec.last_update_login := l_tqlv_rec.last_update_login;
4680       END IF;
4681       IF (x_tqlv_rec.start_date = OKC_API.G_MISS_DATE)
4682       THEN
4683         x_tqlv_rec.start_date := l_tqlv_rec.start_date;
4684       END IF;
4685       IF (x_tqlv_rec.period = OKC_API.G_MISS_CHAR)
4686       THEN
4687         x_tqlv_rec.period := l_tqlv_rec.period;
4688       END IF;
4689       IF (x_tqlv_rec.number_of_periods = OKC_API.G_MISS_NUM)
4690       THEN
4691         x_tqlv_rec.number_of_periods := l_tqlv_rec.number_of_periods;
4692       END IF;
4693       IF (x_tqlv_rec.lock_level_step = OKC_API.G_MISS_CHAR)
4694       THEN
4695         x_tqlv_rec.lock_level_step := l_tqlv_rec.lock_level_step;
4696       END IF;
4697       IF (x_tqlv_rec.advance_or_arrears = OKC_API.G_MISS_CHAR)
4698       THEN
4699         x_tqlv_rec.advance_or_arrears := l_tqlv_rec.advance_or_arrears;
4700       END IF;
4701       IF (x_tqlv_rec.yield_name = OKC_API.G_MISS_CHAR)
4702       THEN
4703         x_tqlv_rec.yield_name := l_tqlv_rec.yield_name;
4704       END IF;
4705       IF (x_tqlv_rec.yield_value = OKC_API.G_MISS_NUM)
4706       THEN
4707         x_tqlv_rec.yield_value := l_tqlv_rec.yield_value;
4708       END IF;
4709       IF (x_tqlv_rec.implicit_interest_rate = OKC_API.G_MISS_NUM)
4710       THEN
4711         x_tqlv_rec.implicit_interest_rate := l_tqlv_rec.implicit_interest_rate;
4712       END IF;
4713       IF (x_tqlv_rec.asset_value = OKC_API.G_MISS_NUM)
4714       THEN
4715         x_tqlv_rec.asset_value := l_tqlv_rec.asset_value;
4716       END IF;
4717       IF (x_tqlv_rec.residual_value = OKC_API.G_MISS_NUM)
4718       THEN
4719         x_tqlv_rec.residual_value := l_tqlv_rec.residual_value;
4720       END IF;
4721       IF (x_tqlv_rec.unbilled_receivables = OKC_API.G_MISS_NUM)
4722       THEN
4723         x_tqlv_rec.unbilled_receivables := l_tqlv_rec.unbilled_receivables;
4724       END IF;
4725       IF (x_tqlv_rec.asset_quantity = OKC_API.G_MISS_NUM)
4726       THEN
4727         x_tqlv_rec.asset_quantity := l_tqlv_rec.asset_quantity;
4728       END IF;
4729       IF (x_tqlv_rec.quote_quantity = OKC_API.G_MISS_NUM)
4730       THEN
4731         x_tqlv_rec.quote_quantity := l_tqlv_rec.quote_quantity;
4732       END IF;
4733       IF (x_tqlv_rec.split_kle_id = OKC_API.G_MISS_NUM)
4734       THEN
4735         x_tqlv_rec.split_kle_id := l_tqlv_rec.split_kle_id;
4736       END IF;
4737       -- RMUNJULU 2757312
4738       IF (x_tqlv_rec.split_kle_name = OKC_API.G_MISS_CHAR)
4739       THEN
4740         x_tqlv_rec.split_kle_name := l_tqlv_rec.split_kle_name;
4741       END IF;
4742   -- BAKUCHIB 2667636 Start
4743      IF (x_tqlv_rec.currency_code = OKC_API.G_MISS_CHAR)
4744       THEN
4745         x_tqlv_rec.currency_code := l_tqlv_rec.currency_code;
4746       END IF;
4747       IF (x_tqlv_rec.currency_conversion_code = OKC_API.G_MISS_CHAR)
4748       THEN
4749         x_tqlv_rec.currency_conversion_code := l_tqlv_rec.currency_conversion_code;
4750       END IF;
4751       IF (x_tqlv_rec.currency_conversion_type = OKC_API.G_MISS_CHAR)
4752       THEN
4753         x_tqlv_rec.currency_conversion_type := l_tqlv_rec.currency_conversion_type;
4754       END IF;
4755       IF (x_tqlv_rec.currency_conversion_rate = OKC_API.G_MISS_NUM)
4756       THEN
4757         x_tqlv_rec.currency_conversion_rate := l_tqlv_rec.currency_conversion_rate;
4758       END IF;
4759       IF (x_tqlv_rec.currency_conversion_date = OKC_API.G_MISS_DATE)
4760       THEN
4761         x_tqlv_rec.currency_conversion_date := l_tqlv_rec.currency_conversion_date;
4762       END IF;
4763   -- BAKUCHIB 2667636 End
4764       -- PAGARG Bug 4161133 start
4765       -- Populate new column due_date
4766       IF (x_tqlv_rec.due_date = OKL_API.G_MISS_DATE)
4767       THEN
4768         x_tqlv_rec.due_date := l_tqlv_rec.due_date;
4769       END IF;
4770       -- PAGARG Bug 4161133 end
4771       -- rmunjulu Sales_Tax_Enhancement
4772       IF (x_tqlv_rec.try_id = OKL_API.G_MISS_NUM)
4773       THEN
4774         x_tqlv_rec.try_id := l_tqlv_rec.try_id;
4775       END IF;
4776       RETURN(l_return_status);
4777     END populate_new_record;
4778     ----------------------------------------------
4779     -- Set_Attributes for:OKL_TXL_QUOTE_LINES_V --
4780     ----------------------------------------------
4781     FUNCTION Set_Attributes (
4782       p_tqlv_rec IN  tqlv_rec_type,
4783       x_tqlv_rec OUT NOCOPY tqlv_rec_type
4784     ) RETURN VARCHAR2 IS
4785       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4786     BEGIN
4787       x_tqlv_rec := p_tqlv_rec;
4788       x_tqlv_rec.OBJECT_VERSION_NUMBER := NVL(x_tqlv_rec.OBJECT_VERSION_NUMBER, 0) + 1;
4789       -- Default the YN columns if value not passed
4790       IF p_tqlv_rec.defaulted_yn IS NULL
4791       OR p_tqlv_rec.defaulted_yn = OKC_API.G_MISS_CHAR THEN
4792         x_tqlv_rec.defaulted_yn := 'N';
4793       END IF;
4794 
4795       RETURN(l_return_status);
4796     END Set_Attributes;
4797   BEGIN
4798     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4799                                               G_PKG_NAME,
4800                                               p_init_msg_list,
4801                                               l_api_version,
4802                                               p_api_version,
4803                                               '_PVT',
4804                                               x_return_status);
4805     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4806       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4807     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4808       RAISE OKC_API.G_EXCEPTION_ERROR;
4809     END IF;
4810     --- Setting item attributes
4811     l_return_status := Set_Attributes(
4812       p_tqlv_rec,                        -- IN
4813       l_tqlv_rec);                       -- OUT
4814     --- If any errors happen abort API
4815     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4816       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4817     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4818       RAISE OKC_API.G_EXCEPTION_ERROR;
4819     END IF;
4820     l_return_status := populate_new_record(l_tqlv_rec, l_def_tqlv_rec);
4821     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4822       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4823     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4824       RAISE OKC_API.G_EXCEPTION_ERROR;
4825     END IF;
4826     l_def_tqlv_rec := fill_who_columns(l_def_tqlv_rec);
4827     --- Validate all non-missing attributes (Item Level Validation)
4828     l_return_status := Validate_Attributes(l_def_tqlv_rec);
4829     --- If any errors happen abort API
4830     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4831       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4832     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4833       RAISE OKC_API.G_EXCEPTION_ERROR;
4834     END IF;
4835     l_return_status := Validate_Record(l_def_tqlv_rec);
4836     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4837       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4838     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4839       RAISE OKC_API.G_EXCEPTION_ERROR;
4840     END IF;
4841 
4842 
4843     -- RMUNJULU 09-MAY-03 2949544 Added code to round
4844     -- the amount field before saving to table
4845     OKL_ACCOUNTING_UTIL.cross_currency_round_amount
4846               (p_api_version      => p_api_version,
4847                p_init_msg_list    => p_init_msg_list,
4848                x_return_status    => l_return_status,
4849                x_msg_count        => x_msg_count,
4850                x_msg_data         => x_msg_data,
4851                p_amount           => l_def_tqlv_rec.amount,
4852                p_currency_code    => l_def_tqlv_rec.currency_code,
4853                x_rounded_amount   => l_rounded_amount);
4854 
4855     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4856       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4857     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4858       RAISE OKC_API.G_EXCEPTION_ERROR;
4859     END IF;
4860 
4861 
4862     l_def_tqlv_rec.amount := l_rounded_amount;
4863 
4864 
4865     --------------------------------------
4866     -- Move VIEW record to "Child" records
4867     --------------------------------------
4868     migrate(l_def_tqlv_rec, l_okl_txl_quote_lines_tl_rec);
4869     migrate(l_def_tqlv_rec, l_tql_rec);
4870     --------------------------------------------
4871     -- Call the UPDATE_ROW for each child record
4872     --------------------------------------------
4873     update_row(
4874       p_init_msg_list,
4875       x_return_status,
4876       x_msg_count,
4877       x_msg_data,
4878       l_okl_txl_quote_lines_tl_rec,
4879       lx_okl_txl_quote_lines_tl_rec
4880     );
4881     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4882       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4883     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4884       RAISE OKC_API.G_EXCEPTION_ERROR;
4885     END IF;
4886     migrate(lx_okl_txl_quote_lines_tl_rec, l_def_tqlv_rec);
4887     update_row(
4888       p_init_msg_list,
4889       x_return_status,
4890       x_msg_count,
4891       x_msg_data,
4892       l_tql_rec,
4893       lx_tql_rec
4894     );
4895     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4896       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4897     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4898       RAISE OKC_API.G_EXCEPTION_ERROR;
4899     END IF;
4900     migrate(lx_tql_rec, l_def_tqlv_rec);
4901     x_tqlv_rec := l_def_tqlv_rec;
4902     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4903   EXCEPTION
4904     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4905       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4906       (
4907         l_api_name,
4908         G_PKG_NAME,
4909         'OKC_API.G_RET_STS_ERROR',
4910         x_msg_count,
4911         x_msg_data,
4912         '_PVT'
4913       );
4914     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4915       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4916       (
4917         l_api_name,
4918         G_PKG_NAME,
4919         'OKC_API.G_RET_STS_UNEXP_ERROR',
4920         x_msg_count,
4921         x_msg_data,
4922         '_PVT'
4923       );
4924     WHEN OTHERS THEN
4925       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4926       (
4927         l_api_name,
4928         G_PKG_NAME,
4929         'OTHERS',
4930         x_msg_count,
4931         x_msg_data,
4932         '_PVT'
4933       );
4934   END update_row;
4935   ----------------------------------------
4936   -- PL/SQL TBL update_row for:TQLV_TBL --
4937   ----------------------------------------
4938   PROCEDURE update_row(
4939     p_api_version                  IN NUMBER,
4940     p_init_msg_list                IN VARCHAR2,
4941     x_return_status                OUT NOCOPY VARCHAR2,
4942     x_msg_count                    OUT NOCOPY NUMBER,
4943     x_msg_data                     OUT NOCOPY VARCHAR2,
4944     p_tqlv_tbl                     IN tqlv_tbl_type,
4945     x_tqlv_tbl                     OUT NOCOPY tqlv_tbl_type) IS
4946 
4947     l_api_version                 CONSTANT NUMBER := 1;
4948     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_update_row';
4949     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4950     i                              NUMBER := 0;
4951     -- Begin Post-Generation Change
4952     -- overall error status
4953     l_overall_status               VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4954     -- End Post-Generation Change
4955   BEGIN
4956     OKC_API.init_msg_list(p_init_msg_list);
4957     -- Make sure PL/SQL table has records in it before passing
4958     IF (p_tqlv_tbl.COUNT > 0) THEN
4959       i := p_tqlv_tbl.FIRST;
4960       LOOP
4961         update_row (
4962           p_api_version                  => p_api_version,
4963           p_init_msg_list                => OKC_API.G_FALSE,
4964           x_return_status                => x_return_status,
4965           x_msg_count                    => x_msg_count,
4966           x_msg_data                     => x_msg_data,
4967           p_tqlv_rec                     => p_tqlv_tbl(i),
4968           x_tqlv_rec                     => x_tqlv_tbl(i));
4969         -- Begin Post-Generation Change
4970         -- store the highest degree of error
4971         IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
4972            IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
4973               l_overall_status := x_return_status;
4974            END IF;
4975         END IF;
4976         -- End Post-Generation Change
4977         EXIT WHEN (i = p_tqlv_tbl.LAST);
4978         i := p_tqlv_tbl.NEXT(i);
4979       END LOOP;
4980       -- Begin Post-Generation Change
4981       -- return overall status
4982       x_return_status := l_overall_status;
4983       -- End Post-Generation Change
4984     END IF;
4985   EXCEPTION
4986     WHEN OKC_API.G_EXCEPTION_ERROR THEN
4987       x_return_status := OKC_API.HANDLE_EXCEPTIONS
4988       (
4989         l_api_name,
4990         G_PKG_NAME,
4991         'OKC_API.G_RET_STS_ERROR',
4992         x_msg_count,
4993         x_msg_data,
4994         '_PVT'
4995       );
4996     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4997       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4998       (
4999         l_api_name,
5000         G_PKG_NAME,
5001         'OKC_API.G_RET_STS_UNEXP_ERROR',
5002         x_msg_count,
5003         x_msg_data,
5004         '_PVT'
5005       );
5006     WHEN OTHERS THEN
5007       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5008       (
5009         l_api_name,
5010         G_PKG_NAME,
5011         'OTHERS',
5012         x_msg_count,
5013         x_msg_data,
5014         '_PVT'
5015       );
5016   END update_row;
5017 
5018   ---------------------------------------------------------------------------
5019   -- PROCEDURE delete_row
5020   ---------------------------------------------------------------------------
5021   ------------------------------------------
5022   -- delete_row for:OKL_TXL_QUOTE_LINES_B --
5023   ------------------------------------------
5024   PROCEDURE delete_row(
5025     p_init_msg_list                IN VARCHAR2,
5026     x_return_status                OUT NOCOPY VARCHAR2,
5027     x_msg_count                    OUT NOCOPY NUMBER,
5028     x_msg_data                     OUT NOCOPY VARCHAR2,
5029     p_tql_rec                      IN tql_rec_type) IS
5030 
5031     l_api_version                 CONSTANT NUMBER := 1;
5032     l_api_name                     CONSTANT VARCHAR2(30) := 'B_delete_row';
5033     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5034     l_tql_rec                      tql_rec_type:= p_tql_rec;
5035     l_row_notfound                 BOOLEAN := TRUE;
5036   BEGIN
5037     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
5038                                               p_init_msg_list,
5039                                               '_PVT',
5040                                               x_return_status);
5041     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5042       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5043     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5044       RAISE OKC_API.G_EXCEPTION_ERROR;
5045     END IF;
5046     DELETE FROM OKL_TXL_QUOTE_LINES_B
5047      WHERE ID = l_tql_rec.id;
5048 
5049     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5050   EXCEPTION
5051     WHEN OKC_API.G_EXCEPTION_ERROR THEN
5052       x_return_status := OKC_API.HANDLE_EXCEPTIONS
5053       (
5054         l_api_name,
5055         G_PKG_NAME,
5056         'OKC_API.G_RET_STS_ERROR',
5057         x_msg_count,
5058         x_msg_data,
5059         '_PVT'
5060       );
5061     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5062       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5063       (
5064         l_api_name,
5065         G_PKG_NAME,
5066         'OKC_API.G_RET_STS_UNEXP_ERROR',
5067         x_msg_count,
5068         x_msg_data,
5069         '_PVT'
5070       );
5071     WHEN OTHERS THEN
5072       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5073       (
5074         l_api_name,
5075         G_PKG_NAME,
5076         'OTHERS',
5077         x_msg_count,
5078         x_msg_data,
5079         '_PVT'
5080       );
5081   END delete_row;
5082   -------------------------------------------
5083   -- delete_row for:OKL_TXL_QUOTE_LINES_TL --
5084   -------------------------------------------
5085   PROCEDURE delete_row(
5086     p_init_msg_list                IN VARCHAR2,
5087     x_return_status                OUT NOCOPY VARCHAR2,
5088     x_msg_count                    OUT NOCOPY NUMBER,
5089     x_msg_data                     OUT NOCOPY VARCHAR2,
5090     p_okl_txl_quote_lines_tl_rec   IN OklTxlQuoteLinesTlRecType) IS
5091 
5092     l_api_version                 CONSTANT NUMBER := 1;
5093     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_delete_row';
5094     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5095     l_okl_txl_quote_lines_tl_rec   OklTxlQuoteLinesTlRecType:= p_okl_txl_quote_lines_tl_rec;
5096     l_row_notfound                 BOOLEAN := TRUE;
5097     -----------------------------------------------
5098     -- Set_Attributes for:OKL_TXL_QUOTE_LINES_TL --
5099     -----------------------------------------------
5100     FUNCTION Set_Attributes (
5101       p_okl_txl_quote_lines_tl_rec IN  OklTxlQuoteLinesTlRecType,
5102       x_okl_txl_quote_lines_tl_rec OUT NOCOPY OklTxlQuoteLinesTlRecType
5103     ) RETURN VARCHAR2 IS
5104       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5105     BEGIN
5106       x_okl_txl_quote_lines_tl_rec := p_okl_txl_quote_lines_tl_rec;
5107       x_okl_txl_quote_lines_tl_rec.LANGUAGE := USERENV('LANG');
5108       RETURN(l_return_status);
5109     END Set_Attributes;
5110   BEGIN
5111     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
5112                                               p_init_msg_list,
5113                                               '_PVT',
5114                                               x_return_status);
5115     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5116       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5117     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5118       RAISE OKC_API.G_EXCEPTION_ERROR;
5119     END IF;
5120     --- Setting item attributes
5121     l_return_status := Set_Attributes(
5122       p_okl_txl_quote_lines_tl_rec,      -- IN
5123       l_okl_txl_quote_lines_tl_rec);     -- OUT
5124     --- If any errors happen abort API
5125     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5126       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5127     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5128       RAISE OKC_API.G_EXCEPTION_ERROR;
5129     END IF;
5130     DELETE FROM OKL_TXL_QUOTE_LINES_TL
5131      WHERE ID = l_okl_txl_quote_lines_tl_rec.id;
5132 
5133     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5134   EXCEPTION
5135     WHEN OKC_API.G_EXCEPTION_ERROR THEN
5136       x_return_status := OKC_API.HANDLE_EXCEPTIONS
5137       (
5138         l_api_name,
5139         G_PKG_NAME,
5140         'OKC_API.G_RET_STS_ERROR',
5141         x_msg_count,
5142         x_msg_data,
5143         '_PVT'
5144       );
5145     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5146       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5147       (
5148         l_api_name,
5149         G_PKG_NAME,
5150         'OKC_API.G_RET_STS_UNEXP_ERROR',
5151         x_msg_count,
5152         x_msg_data,
5153         '_PVT'
5154       );
5155     WHEN OTHERS THEN
5156       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5157       (
5158         l_api_name,
5159         G_PKG_NAME,
5160         'OTHERS',
5161         x_msg_count,
5162         x_msg_data,
5163         '_PVT'
5164       );
5165   END delete_row;
5166   ------------------------------------------
5167   -- delete_row for:OKL_TXL_QUOTE_LINES_V --
5168   ------------------------------------------
5169   PROCEDURE delete_row(
5170     p_api_version                  IN NUMBER,
5171     p_init_msg_list                IN VARCHAR2,
5172     x_return_status                OUT NOCOPY VARCHAR2,
5173     x_msg_count                    OUT NOCOPY NUMBER,
5174     x_msg_data                     OUT NOCOPY VARCHAR2,
5175     p_tqlv_rec                     IN tqlv_rec_type) IS
5176 
5177     l_api_version                 CONSTANT NUMBER := 1;
5178     l_api_name                     CONSTANT VARCHAR2(30) := 'V_delete_row';
5179     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5180     l_tqlv_rec                     tqlv_rec_type := p_tqlv_rec;
5181     l_okl_txl_quote_lines_tl_rec   OklTxlQuoteLinesTlRecType;
5182     l_tql_rec                      tql_rec_type;
5183   BEGIN
5184     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
5185                                               G_PKG_NAME,
5186                                               p_init_msg_list,
5187                                               l_api_version,
5188                                               p_api_version,
5189                                               '_PVT',
5190                                               x_return_status);
5191     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5192       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5193     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5194       RAISE OKC_API.G_EXCEPTION_ERROR;
5195     END IF;
5196     --------------------------------------
5197     -- Move VIEW record to "Child" records
5198     --------------------------------------
5199     migrate(l_tqlv_rec, l_okl_txl_quote_lines_tl_rec);
5200     migrate(l_tqlv_rec, l_tql_rec);
5201     --------------------------------------------
5202     -- Call the DELETE_ROW for each child record
5203     --------------------------------------------
5204     delete_row(
5205       p_init_msg_list,
5206       x_return_status,
5207       x_msg_count,
5208       x_msg_data,
5209       l_okl_txl_quote_lines_tl_rec
5210     );
5211     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5212       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5213     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5214       RAISE OKC_API.G_EXCEPTION_ERROR;
5215     END IF;
5216     delete_row(
5217       p_init_msg_list,
5218       x_return_status,
5219       x_msg_count,
5220       x_msg_data,
5221       l_tql_rec
5222     );
5223     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5224       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5225     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5226       RAISE OKC_API.G_EXCEPTION_ERROR;
5227     END IF;
5228     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5229   EXCEPTION
5230     WHEN OKC_API.G_EXCEPTION_ERROR THEN
5231       x_return_status := OKC_API.HANDLE_EXCEPTIONS
5232       (
5233         l_api_name,
5234         G_PKG_NAME,
5235         'OKC_API.G_RET_STS_ERROR',
5236         x_msg_count,
5237         x_msg_data,
5238         '_PVT'
5239       );
5240     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5241       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5242       (
5243         l_api_name,
5244         G_PKG_NAME,
5245         'OKC_API.G_RET_STS_UNEXP_ERROR',
5246         x_msg_count,
5247         x_msg_data,
5248         '_PVT'
5249       );
5250     WHEN OTHERS THEN
5251       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5252       (
5253         l_api_name,
5254         G_PKG_NAME,
5255         'OTHERS',
5256         x_msg_count,
5257         x_msg_data,
5258         '_PVT'
5259       );
5260   END delete_row;
5261   ----------------------------------------
5262   -- PL/SQL TBL delete_row for:TQLV_TBL --
5263   ----------------------------------------
5264   PROCEDURE delete_row(
5265     p_api_version                  IN NUMBER,
5266     p_init_msg_list                IN VARCHAR2,
5267     x_return_status                OUT NOCOPY VARCHAR2,
5268     x_msg_count                    OUT NOCOPY NUMBER,
5269     x_msg_data                     OUT NOCOPY VARCHAR2,
5270     p_tqlv_tbl                     IN tqlv_tbl_type) IS
5271 
5272     l_api_version                 CONSTANT NUMBER := 1;
5273     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_delete_row';
5274     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5275     i                              NUMBER := 0;
5276     -- Begin Post-Generation Change
5277     -- overall error status
5278     l_overall_status               VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
5279     -- End Post-Generation Change
5280   BEGIN
5281     OKC_API.init_msg_list(p_init_msg_list);
5282     -- Make sure PL/SQL table has records in it before passing
5283     IF (p_tqlv_tbl.COUNT > 0) THEN
5284       i := p_tqlv_tbl.FIRST;
5285       LOOP
5286         delete_row (
5287           p_api_version                  => p_api_version,
5288           p_init_msg_list                => OKC_API.G_FALSE,
5289           x_return_status                => x_return_status,
5290           x_msg_count                    => x_msg_count,
5291           x_msg_data                     => x_msg_data,
5292           p_tqlv_rec                     => p_tqlv_tbl(i));
5293         -- Begin Post-Generation Change
5294         -- store the highest degree of error
5295         IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
5296            IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
5297               l_overall_status := x_return_status;
5298            END IF;
5299         END IF;
5300         -- End Post-Generation Change
5301         EXIT WHEN (i = p_tqlv_tbl.LAST);
5302         i := p_tqlv_tbl.NEXT(i);
5303       END LOOP;
5304       -- Begin Post-Generation Change
5305       -- return overall status
5306       x_return_status := l_overall_status;
5307       -- End Post-Generation Change
5308     END IF;
5309   EXCEPTION
5310     WHEN OKC_API.G_EXCEPTION_ERROR THEN
5311       x_return_status := OKC_API.HANDLE_EXCEPTIONS
5312       (
5313         l_api_name,
5314         G_PKG_NAME,
5315         'OKC_API.G_RET_STS_ERROR',
5316         x_msg_count,
5317         x_msg_data,
5318         '_PVT'
5319       );
5320     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5321       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5322       (
5323         l_api_name,
5324         G_PKG_NAME,
5325         'OKC_API.G_RET_STS_UNEXP_ERROR',
5326         x_msg_count,
5327         x_msg_data,
5328         '_PVT'
5329       );
5330     WHEN OTHERS THEN
5331       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5332       (
5333         l_api_name,
5334         G_PKG_NAME,
5335         'OTHERS',
5336         x_msg_count,
5337         x_msg_data,
5338         '_PVT'
5339       );
5340   END delete_row;
5341 
5342 END OKL_TQL_PVT;