DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_TQL_PVT

Source


1 PACKAGE BODY OKL_TQL_PVT AS
2 /* $Header: OKLSTQLB.pls 120.12 2009/05/08 23:21:43 sechawla ship $ */
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     -- sechawla 8-may-09 Bug# 8429670  -- Added
2999     CURSOR get_languages IS
3000       SELECT *
3001         FROM FND_LANGUAGES
3002        WHERE INSTALLED_FLAG IN ('I', 'B');
3003 
3004     -- Arrays to store pl-sql table and pass it to bulk insert
3005     in_id NumberTabTyp;
3006     in_sty_id NumberTabTyp;
3007     in_kle_id NumberTabTyp;
3008     in_qlt_code Var30TabTyp;
3009     in_qte_id NumberTabTyp;
3010     in_line_number NumberTabTyp;
3011     in_amount Number14p3TabTyp;
3012     in_object_version_number Number9TabTyp;
3013     in_modified_yn Var3TabTyp;
3014     in_defaulted_yn Var3TabTyp;
3015     in_taxed_yn Var3TabTyp;
3016     in_org_id Number15TabTyp;
3017     in_request_id Number15TabTyp;
3018     in_program_application_id Number15TabTyp;
3019     in_program_id Number15TabTyp;
3020     in_program_update_date DateTabTyp;
3021     in_attribute_category Var90TabTyp;
3022     in_attribute1 Var450TabTyp;
3023     in_attribute2 Var450TabTyp;
3024     in_attribute3 Var450TabTyp;
3025     in_attribute4 Var450TabTyp;
3026     in_attribute5 Var450TabTyp;
3027     in_attribute6 Var450TabTyp;
3028     in_attribute7 Var450TabTyp;
3029     in_attribute8 Var450TabTyp;
3030     in_attribute9 Var450TabTyp;
3031     in_attribute10 Var450TabTyp;
3032     in_attribute11 Var450TabTyp;
3033     in_attribute12 Var450TabTyp;
3034     in_attribute13 Var450TabTyp;
3035     in_attribute14 Var450TabTyp;
3036     in_attribute15 Var450TabTyp;
3037     in_created_by Number15TabTyp;
3038     in_creation_date DateTabTyp;
3039     in_last_updated_by Number15TabTyp;
3040     in_last_update_date DateTabTyp;
3041     in_last_update_login Number15TabTyp;
3042     in_start_date DateTabTyp;
3043     in_period Var30TabTyp;
3044     in_number_of_periods Number4TabTyp;
3045     in_lock_level_step Var10TabTyp;
3046     in_advance_or_arrears Var10TabTyp;
3047     in_yield_name Var150TabTyp;
3048     in_yield_value Number18p15TabTyp;
3049     in_implicit_interest_rate Number18p15TabTyp;
3050     in_asset_value Number14p3TabTyp;
3051     in_residual_value Number14p3TabTyp;
3052     in_unbilled_receivables Number14p3TabTyp;
3053     in_asset_quantity Number14p3TabTyp;
3054     in_quote_quantity Number14p3TabTyp;
3055     in_split_kle_id NumberTabTyp;
3056     in_split_kle_name Var150TabTyp;
3057     in_currency_code Var15TabTyp;
3058     in_currency_conversion_code Var15TabTyp;
3059     in_currency_conversion_type Var30TabTyp;
3060     in_currency_conversion_rate NumberTabTyp;
3061     in_currency_conversion_date DateTabTyp;
3062     in_language Var12TabTyp;
3063     in_source_lang Var15TabTyp;
3064     in_sfwt_flag Var3TabTyp;
3065     in_description Var1995TabTyp;
3066 
3067     -- rmunjulu Sales_Tax_Enhancement
3068     in_try_id NumberTabTyp; -- *** Check
3069 
3070     --dkagrawa Bug 4187250
3071     in_due_date DateTabTyp;
3072 
3073     l_tabsize        NUMBER := p_tqlv_tbl.COUNT;
3074     i                NUMBER := 0;
3075     j                NUMBER;
3076     l_org_id         NUMBER;
3077     l_curr_code      VARCHAR2(15);
3078     l_rounded_amount NUMBER;
3079     l_tqlv_rec       tqlv_rec_type;
3080 
3081     l_user_id        NUMBER(15);
3082     l_conc_req_id    NUMBER(15);
3083     l_login_id       NUMBER(15);
3084     l_prog_appl_id   NUMBER(15);
3085     l_conc_prog_id   NUMBER(15);
3086     l_conc_reg_id    NUMBER(15);
3087     l_lang           VARCHAR2(12);
3088 
3089   BEGIN
3090     OKL_API.init_msg_list(p_init_msg_list);
3091     l_return_status := OKL_API.START_ACTIVITY(l_api_name,
3092                                               G_PKG_NAME,
3093                                               p_init_msg_list,
3094                                               l_api_version,
3095                                               p_api_version,
3096                                               '_PVT',
3097                                               x_return_status);
3098     IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3099       RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3100     ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3101       RAISE OKL_API.G_EXCEPTION_ERROR;
3102     END IF;
3103 
3104     i := p_tqlv_tbl.FIRST;
3105     j :=0;
3106 
3107     l_org_id := MO_GLOBAL.GET_CURRENT_ORG_ID();
3108     l_curr_code := OKL_AM_UTIL_PVT.get_functional_currency;
3109     l_user_id := FND_GLOBAL.USER_ID;
3110     l_login_id := FND_GLOBAL.LOGIN_ID;
3111     l_conc_req_id := FND_GLOBAL.CONC_REQUEST_ID;
3112     l_prog_appl_id := FND_GLOBAL.PROG_APPL_ID;
3113     l_conc_prog_id := FND_GLOBAL.CONC_PROGRAM_ID;
3114     l_lang := USERENV('LANG');
3115     WHILE i is not null LOOP
3116       l_tqlv_rec := null_out_defaults(p_tqlv_tbl(i));
3117 
3118       l_tqlv_rec.id := get_seq_id;
3119       l_tqlv_rec.object_version_number := 1.0;
3120       l_tqlv_rec.created_by := l_user_id;
3121       l_tqlv_rec.creation_date := SYSDATE;
3122       l_tqlv_rec.last_updated_by := l_user_id;
3123       l_tqlv_rec.last_update_date := SYSDATE;
3124       l_tqlv_rec.last_update_login := l_login_id;
3125 
3126       l_tqlv_rec.currency_conversion_code := l_curr_code;
3127       IF l_tqlv_rec.currency_code IS NULL
3128       OR l_tqlv_rec.currency_code = OKL_API.G_MISS_CHAR THEN
3129         l_tqlv_rec.currency_code := l_tqlv_rec.currency_conversion_code;
3130       END IF;
3131 
3132       IF l_tqlv_rec.defaulted_yn IS NULL
3133       OR l_tqlv_rec.defaulted_yn = OKL_API.G_MISS_CHAR THEN
3134         l_tqlv_rec.defaulted_yn := 'N';
3135       END IF;
3136 
3137       -- Default the ORG ID if a value is not passed
3138       IF l_tqlv_rec.org_id IS NULL
3139       OR l_tqlv_rec.org_id = OKL_API.G_MISS_NUM THEN
3140         l_tqlv_rec.org_id := l_org_id;
3141       END IF;
3142 
3143       IF l_conc_req_id = -1
3144       THEN
3145         l_tqlv_rec.request_id := NULL;
3146       ELSE
3147         l_tqlv_rec.request_id :=  l_conc_req_id;
3148       END IF;
3149 
3150       IF l_prog_appl_id = -1
3151       THEN
3152         l_tqlv_rec.program_application_id :=  NULL;
3153       ELSE
3154         l_tqlv_rec.program_application_id := l_prog_appl_id;
3155       END IF;
3156       IF l_conc_prog_id = -1
3157       THEN
3158         l_tqlv_rec.program_id := NULL;
3159       ELSE
3160         l_tqlv_rec.program_id := l_conc_prog_id;
3161       END IF;
3162       IF l_conc_req_id = -1
3163       THEN
3164         l_tqlv_rec.program_update_date := NULL;
3165       ELSE
3166         l_tqlv_rec.program_update_date := SYSDATE;
3167       END IF;
3168       l_tqlv_rec.sfwt_flag := 'N';
3169 
3170       l_return_status := Validate_Attributes(l_tqlv_rec);
3171       -- If any errors happen abort API
3172       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3173         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3174       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3175         RAISE OKL_API.G_EXCEPTION_ERROR;
3176       END IF;
3177 
3178       l_return_status := Validate_Record(l_tqlv_rec);
3179       -- If any errors happen abort API
3180       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3181         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3182       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3183         RAISE OKL_API.G_EXCEPTION_ERROR;
3184       END IF;
3185 
3186       j:=j+1;
3187       in_id(j) := l_tqlv_rec.id;
3188       in_object_version_number(j) := l_tqlv_rec.object_version_number;
3189       in_created_by(j) := l_tqlv_rec.created_by;
3190       in_creation_date(j) := l_tqlv_rec.creation_date;
3191       in_last_updated_by(j) := l_tqlv_rec.last_updated_by;
3192       in_last_update_date(j) := l_tqlv_rec.last_update_date;
3193       in_last_update_login(j) := l_tqlv_rec.last_update_login;
3194       in_sty_id(j) := l_tqlv_rec.sty_id;
3195       in_kle_id(j) := l_tqlv_rec.kle_id;
3196       in_qlt_code(j) := l_tqlv_rec.qlt_code;
3197       in_qte_id(j) := l_tqlv_rec.qte_id;
3198       in_line_number(j) := l_tqlv_rec.line_number;
3199       in_modified_yn(j) := l_tqlv_rec.modified_yn;
3200       in_taxed_yn(j) := l_tqlv_rec.taxed_yn;
3201       in_attribute_category(j) := l_tqlv_rec.attribute_category;
3202       in_attribute1(j) := l_tqlv_rec.attribute1;
3203       in_attribute2(j) := l_tqlv_rec.attribute2;
3204       in_attribute3(j) := l_tqlv_rec.attribute3;
3205       in_attribute4(j) := l_tqlv_rec.attribute4;
3206       in_attribute5(j) := l_tqlv_rec.attribute5;
3207       in_attribute6(j) := l_tqlv_rec.attribute6;
3208       in_attribute7(j) := l_tqlv_rec.attribute7;
3209       in_attribute8(j) := l_tqlv_rec.attribute8;
3210       in_attribute9(j) := l_tqlv_rec.attribute9;
3211       in_attribute10(j) := l_tqlv_rec.attribute10;
3212       in_attribute11(j) := l_tqlv_rec.attribute11;
3213       in_attribute12(j) := l_tqlv_rec.attribute12;
3214       in_attribute13(j) := l_tqlv_rec.attribute13;
3215       in_attribute14(j) := l_tqlv_rec.attribute14;
3216       in_attribute15(j) := l_tqlv_rec.attribute15;
3217       in_start_date(j) := l_tqlv_rec.start_date;
3218       in_period(j) := l_tqlv_rec.period;
3219       in_number_of_periods(j) := l_tqlv_rec.number_of_periods;
3220       in_lock_level_step(j) := l_tqlv_rec.lock_level_step;
3221       in_advance_or_arrears(j) := l_tqlv_rec.advance_or_arrears;
3222       in_yield_name(j) := l_tqlv_rec.yield_name;
3223       in_yield_value(j) := l_tqlv_rec.yield_value;
3224       in_implicit_interest_rate(j) := l_tqlv_rec.implicit_interest_rate;
3225       in_asset_value(j) := l_tqlv_rec.asset_value;
3226       in_residual_value(j) := l_tqlv_rec.residual_value;
3227       in_unbilled_receivables(j) := l_tqlv_rec.unbilled_receivables;
3228       in_asset_quantity(j) := l_tqlv_rec.asset_quantity;
3229       in_quote_quantity(j) := l_tqlv_rec.quote_quantity;
3230       in_split_kle_id(j) := l_tqlv_rec.split_kle_id;
3231       in_split_kle_name(j) := l_tqlv_rec.split_kle_name;
3232       in_description(j) := l_tqlv_rec.description;
3233       in_language(j) := l_lang;
3234       in_source_lang(j) := l_lang;
3235       in_currency_code(j) := l_tqlv_rec.currency_code;
3236       in_currency_conversion_code(j) := l_tqlv_rec.currency_conversion_code;
3237       in_currency_conversion_type(j) := l_tqlv_rec.currency_conversion_type;
3238       in_currency_conversion_rate(j) := l_tqlv_rec.currency_conversion_rate;
3239       in_currency_conversion_date(j) := l_tqlv_rec.currency_conversion_date;
3240       in_defaulted_yn(j) := l_tqlv_rec.defaulted_yn;
3241       in_org_id(j) := l_tqlv_rec.org_id;
3242       in_request_id(j) := l_tqlv_rec.request_id;
3243       in_program_application_id(j) := l_tqlv_rec.program_application_id;
3244       in_program_id(j) := l_tqlv_rec.program_id;
3245       in_program_update_date(j) := l_tqlv_rec.program_update_date;
3246       in_sfwt_flag(j) := l_tqlv_rec.sfwt_flag;
3247       -- rmunjulu Sales_Tax_Enhancement
3248       in_try_id(j) := l_tqlv_rec.try_id;
3249 
3250       in_amount(j) := l_tqlv_rec.amount;
3251       --dkagrawa bug 4187250
3252       in_due_date(j) := l_tqlv_rec.due_date;
3253 
3254       OKL_ACCOUNTING_UTIL.cross_currency_round_amount
3255               (p_api_version      => p_api_version,
3256                p_init_msg_list    => p_init_msg_list,
3257                x_return_status    => l_return_status,
3258                x_msg_count        => x_msg_count,
3259                x_msg_data         => x_msg_data,
3260                p_amount           => in_amount(j),
3261                p_currency_code    => in_currency_code(j),
3262                x_rounded_amount   => l_rounded_amount);
3263 
3264       IF (l_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
3265         RAISE OKL_API.G_EXCEPTION_UNEXPECTED_ERROR;
3266       ELSIF (l_return_status = OKL_API.G_RET_STS_ERROR) THEN
3267         RAISE OKL_API.G_EXCEPTION_ERROR;
3268       END IF;
3269       in_amount(j) := l_rounded_amount;
3270 
3271       i := p_tqlv_tbl.next(i);
3272     END LOOP;
3273 
3274     -- Bulk insert into base table
3275     FORALL i in 1..l_tabsize
3276     INSERT INTO OKL_TXL_QUOTE_LINES_B(
3277         id,
3278         sty_id,
3279         kle_id,
3280         qlt_code,
3281         qte_id,
3282         line_number,
3283         amount,
3284         object_version_number,
3285         modified_yn,
3286         defaulted_yn,
3287         taxed_yn,
3288         org_id,
3289         request_id,
3290         program_application_id,
3291         program_id,
3292         program_update_date,
3293         attribute_category,
3294         attribute1,
3295         attribute2,
3296         attribute3,
3297         attribute4,
3298         attribute5,
3299         attribute6,
3300         attribute7,
3301         attribute8,
3302         attribute9,
3303         attribute10,
3304         attribute11,
3305         attribute12,
3306         attribute13,
3307         attribute14,
3308         attribute15,
3309         created_by,
3310         creation_date,
3311         last_updated_by,
3312         last_update_date,
3313         last_update_login,
3314         start_date,
3315         period,
3316         number_of_periods,
3317         lock_level_step,
3318         advance_or_arrears,
3319         yield_name,
3320         yield_value,
3321         implicit_interest_rate,
3322         asset_value,
3323         residual_value,
3324         unbilled_receivables,
3325         asset_quantity,
3326         quote_quantity,
3327         split_kle_id,
3328         split_kle_name,
3329         currency_code,
3330         currency_conversion_code,
3331         currency_conversion_type,
3332         currency_conversion_rate,
3333         currency_conversion_date,
3334         try_id, -- rmunjulu Sales_Tax_Enhancement
3335         due_date ) --dkagrawa bug 4187250
3336 
3337       VALUES (
3338         in_id(i),
3339         in_sty_id(i),
3340         in_kle_id(i),
3341         in_qlt_code(i),
3342         in_qte_id(i),
3343         in_line_number(i),
3344         in_amount(i),
3345         in_object_version_number(i),
3346         in_modified_yn(i),
3347         in_defaulted_yn(i),
3348         in_taxed_yn(i),
3349         in_org_id(i),
3350         in_request_id(i),
3351         in_program_application_id(i),
3352         in_program_id(i),
3353         in_program_update_date(i),
3354         in_attribute_category(i),
3355         in_attribute1(i),
3356         in_attribute2(i),
3357         in_attribute3(i),
3358         in_attribute4(i),
3359         in_attribute5(i),
3360         in_attribute6(i),
3361         in_attribute7(i),
3362         in_attribute8(i),
3363         in_attribute9(i),
3364         in_attribute10(i),
3365         in_attribute11(i),
3366         in_attribute12(i),
3367         in_attribute13(i),
3368         in_attribute14(i),
3369         in_attribute15(i),
3370         in_created_by(i),
3371         in_creation_date(i),
3372         in_last_updated_by(i),
3373         in_last_update_date(i),
3374         in_last_update_login(i),
3375         in_start_date(i),
3376         in_period(i),
3377         in_number_of_periods(i),
3378         in_lock_level_step(i),
3379         in_advance_or_arrears(i),
3380         in_yield_name(i),
3381         in_yield_value(i),
3382         in_implicit_interest_rate(i),
3383         in_asset_value(i),
3384         in_residual_value(i),
3385         in_unbilled_receivables(i),
3386         in_asset_quantity(i),
3387         in_quote_quantity(i),
3388         in_split_kle_id(i),
3389         in_split_kle_name(i),
3390         in_currency_code(i),
3391         in_currency_conversion_code(i),
3392         in_currency_conversion_type(i),
3393         in_currency_conversion_rate(i),
3394         in_currency_conversion_date(i),
3395         in_try_id(i), -- rmunjulu Sales_Tax_Enhancement
3396 	in_due_date(i)); --dkagrawa bug 4187250
3397 
3398  -- sechawla Bug# 8429670  - Added
3399  FOR l_lang_rec IN get_languages LOOP
3400 
3401     -- Bulk insert into tl table
3402     FORALL i in 1..l_tabsize
3403     INSERT INTO OKL_TXL_QUOTE_LINES_TL(
3404           id,
3405           language,
3406           source_lang,
3407           sfwt_flag,
3408           description,
3409           created_by,
3410           creation_date,
3411           last_updated_by,
3412           last_update_date,
3413           last_update_login)
3414         VALUES (
3415           in_id(i),
3416           -- in_language(i), -- Bug# 8429670  Commented
3417           l_lang_rec.language_code, -- Bug# 8429670  Added
3418           in_source_lang(i),
3419           in_sfwt_flag(i),
3420           in_description(i),
3421           in_created_by(i),
3422           in_creation_date(i),
3423           in_last_updated_by(i),
3424           in_last_update_date(i),
3425           in_last_update_login(i));
3426 END LOOP; -- Bug# 8429670 added
3427 x_tqlv_tbl := p_tqlv_tbl;
3428 x_return_status := OKL_API.G_RET_STS_SUCCESS;
3429 OKL_API.END_ACTIVITY(x_msg_count, x_msg_data);
3430 
3431 EXCEPTION
3432     WHEN OKL_API.G_EXCEPTION_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_ERROR',
3438         x_msg_count,
3439         x_msg_data,
3440         '_PVT'
3441       );
3442     WHEN OKL_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3443       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
3444       (
3445         l_api_name,
3446         G_PKG_NAME,
3447         'OKL_API.G_RET_STS_UNEXP_ERROR',
3448         x_msg_count,
3449         x_msg_data,
3450         '_PVT'
3451       );
3452     WHEN OTHERS THEN
3453       x_return_status :=OKL_API.HANDLE_EXCEPTIONS
3454       (
3455         l_api_name,
3456         G_PKG_NAME,
3457         'OTHERS',
3458         x_msg_count,
3459         x_msg_data,
3460         '_PVT'
3461       );
3462   END insert_row_bulk;
3463 -- PAGARG Bug 4299668 **End**
3464 
3465   ---------------------------------------------------------------------------
3466   -- PROCEDURE lock_row
3467   ---------------------------------------------------------------------------
3468   ----------------------------------------
3469   -- lock_row for:OKL_TXL_QUOTE_LINES_B --
3470   ----------------------------------------
3471   PROCEDURE lock_row(
3472     p_init_msg_list                IN VARCHAR2,
3473     x_return_status                OUT NOCOPY VARCHAR2,
3474     x_msg_count                    OUT NOCOPY NUMBER,
3475     x_msg_data                     OUT NOCOPY VARCHAR2,
3476     p_tql_rec                      IN tql_rec_type) IS
3477 
3478     E_Resource_Busy               EXCEPTION;
3479     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
3480     CURSOR lock_csr (p_tql_rec IN tql_rec_type) IS
3481     SELECT OBJECT_VERSION_NUMBER
3482       FROM OKL_TXL_QUOTE_LINES_B
3483      WHERE ID = p_tql_rec.id
3484        AND OBJECT_VERSION_NUMBER = p_tql_rec.object_version_number
3485     FOR UPDATE OF OBJECT_VERSION_NUMBER NOWAIT;
3486 
3487     CURSOR  lchk_csr (p_tql_rec IN tql_rec_type) IS
3488     SELECT OBJECT_VERSION_NUMBER
3489       FROM OKL_TXL_QUOTE_LINES_B
3490     WHERE ID = p_tql_rec.id;
3491     l_api_version                 CONSTANT NUMBER := 1;
3492     l_api_name                     CONSTANT VARCHAR2(30) := 'B_lock_row';
3493     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3494     l_object_version_number       OKL_TXL_QUOTE_LINES_B.OBJECT_VERSION_NUMBER%TYPE;
3495     lc_object_version_number      OKL_TXL_QUOTE_LINES_B.OBJECT_VERSION_NUMBER%TYPE;
3496     l_row_notfound                BOOLEAN := FALSE;
3497     lc_row_notfound               BOOLEAN := FALSE;
3498   BEGIN
3499     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3500                                               p_init_msg_list,
3501                                               '_PVT',
3502                                               x_return_status);
3503     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3504       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3505     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3506       RAISE OKC_API.G_EXCEPTION_ERROR;
3507     END IF;
3508     BEGIN
3509       OPEN lock_csr(p_tql_rec);
3510       FETCH lock_csr INTO l_object_version_number;
3511       l_row_notfound := lock_csr%NOTFOUND;
3512       CLOSE lock_csr;
3513     EXCEPTION
3514       WHEN E_Resource_Busy THEN
3515         IF (lock_csr%ISOPEN) THEN
3516           CLOSE lock_csr;
3517         END IF;
3518         OKC_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
3519         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
3520     END;
3521 
3522     IF ( l_row_notfound ) THEN
3523       OPEN lchk_csr(p_tql_rec);
3524       FETCH lchk_csr INTO lc_object_version_number;
3525       lc_row_notfound := lchk_csr%NOTFOUND;
3526       CLOSE lchk_csr;
3527     END IF;
3528     IF (lc_row_notfound) THEN
3529       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
3530       RAISE OKC_API.G_EXCEPTION_ERROR;
3531     ELSIF lc_object_version_number > p_tql_rec.object_version_number THEN
3532       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
3533       RAISE OKC_API.G_EXCEPTION_ERROR;
3534     ELSIF lc_object_version_number <> p_tql_rec.object_version_number THEN
3535       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
3536       RAISE OKC_API.G_EXCEPTION_ERROR;
3537     ELSIF lc_object_version_number = -1 THEN
3538       OKC_API.set_message(G_APP_NAME,G_RECORD_LOGICALLY_DELETED);
3539       RAISE OKC_API.G_EXCEPTION_ERROR;
3540     END IF;
3541     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3542   EXCEPTION
3543     WHEN OKC_API.G_EXCEPTION_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_ERROR',
3549         x_msg_count,
3550         x_msg_data,
3551         '_PVT'
3552       );
3553     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3554       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3555       (
3556         l_api_name,
3557         G_PKG_NAME,
3558         'OKC_API.G_RET_STS_UNEXP_ERROR',
3559         x_msg_count,
3560         x_msg_data,
3561         '_PVT'
3562       );
3563     WHEN OTHERS THEN
3564       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3565       (
3566         l_api_name,
3567         G_PKG_NAME,
3568         'OTHERS',
3569         x_msg_count,
3570         x_msg_data,
3571         '_PVT'
3572       );
3573   END lock_row;
3574   -----------------------------------------
3575   -- lock_row for:OKL_TXL_QUOTE_LINES_TL --
3576   -----------------------------------------
3577   PROCEDURE lock_row(
3578     p_init_msg_list                IN VARCHAR2,
3579     x_return_status                OUT NOCOPY VARCHAR2,
3580     x_msg_count                    OUT NOCOPY NUMBER,
3581     x_msg_data                     OUT NOCOPY VARCHAR2,
3582     p_okl_txl_quote_lines_tl_rec   IN OklTxlQuoteLinesTlRecType) IS
3583 
3584     E_Resource_Busy               EXCEPTION;
3585     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
3586     CURSOR lock_csr (p_okl_txl_quote_lines_tl_rec IN OklTxlQuoteLinesTlRecType) IS
3587     SELECT *
3588       FROM OKL_TXL_QUOTE_LINES_TL
3589      WHERE ID = p_okl_txl_quote_lines_tl_rec.id
3590     FOR UPDATE NOWAIT;
3591 
3592     l_api_version                 CONSTANT NUMBER := 1;
3593     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_lock_row';
3594     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3595     l_lock_var                    lock_csr%ROWTYPE;
3596     l_row_notfound                BOOLEAN := FALSE;
3597     lc_row_notfound               BOOLEAN := FALSE;
3598   BEGIN
3599     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3600                                               p_init_msg_list,
3601                                               '_PVT',
3602                                               x_return_status);
3603     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3604       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3605     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3606       RAISE OKC_API.G_EXCEPTION_ERROR;
3607     END IF;
3608     BEGIN
3609       OPEN lock_csr(p_okl_txl_quote_lines_tl_rec);
3610       FETCH lock_csr INTO l_lock_var;
3611       l_row_notfound := lock_csr%NOTFOUND;
3612       CLOSE lock_csr;
3613     EXCEPTION
3614       WHEN E_Resource_Busy THEN
3615         IF (lock_csr%ISOPEN) THEN
3616           CLOSE lock_csr;
3617         END IF;
3618         OKC_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
3619         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
3620     END;
3621 
3622     IF ( l_row_notfound ) THEN
3623       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
3624       RAISE OKC_API.G_EXCEPTION_ERROR;
3625     END IF;
3626     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3627   EXCEPTION
3628     WHEN OKC_API.G_EXCEPTION_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_ERROR',
3634         x_msg_count,
3635         x_msg_data,
3636         '_PVT'
3637       );
3638     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3639       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3640       (
3641         l_api_name,
3642         G_PKG_NAME,
3643         'OKC_API.G_RET_STS_UNEXP_ERROR',
3644         x_msg_count,
3645         x_msg_data,
3646         '_PVT'
3647       );
3648     WHEN OTHERS THEN
3649       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3650       (
3651         l_api_name,
3652         G_PKG_NAME,
3653         'OTHERS',
3654         x_msg_count,
3655         x_msg_data,
3656         '_PVT'
3657       );
3658   END lock_row;
3659   ----------------------------------------
3660   -- lock_row for:OKL_TXL_QUOTE_LINES_V --
3661   ----------------------------------------
3662   PROCEDURE lock_row(
3663     p_api_version                  IN NUMBER,
3664     p_init_msg_list                IN VARCHAR2,
3665     x_return_status                OUT NOCOPY VARCHAR2,
3666     x_msg_count                    OUT NOCOPY NUMBER,
3667     x_msg_data                     OUT NOCOPY VARCHAR2,
3668     p_tqlv_rec                     IN tqlv_rec_type) IS
3669 
3670     l_api_version                 CONSTANT NUMBER := 1;
3671     l_api_name                     CONSTANT VARCHAR2(30) := 'V_lock_row';
3672     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3673     l_tql_rec                      tql_rec_type;
3674     l_okl_txl_quote_lines_tl_rec   OklTxlQuoteLinesTlRecType;
3675   BEGIN
3676     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
3677                                               G_PKG_NAME,
3678                                               p_init_msg_list,
3679                                               l_api_version,
3680                                               p_api_version,
3681                                               '_PVT',
3682                                               x_return_status);
3683     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3684       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3685     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
3686       RAISE OKC_API.G_EXCEPTION_ERROR;
3687     END IF;
3688     --------------------------------------
3689     -- Move VIEW record to "Child" records
3690     --------------------------------------
3691     migrate(p_tqlv_rec, l_tql_rec);
3692     migrate(p_tqlv_rec, l_okl_txl_quote_lines_tl_rec);
3693     --------------------------------------------
3694     -- Call the LOCK_ROW for each child record
3695     --------------------------------------------
3696     lock_row(
3697       p_init_msg_list,
3698       x_return_status,
3699       x_msg_count,
3700       x_msg_data,
3701       l_tql_rec
3702     );
3703     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3704       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3705     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3706       RAISE OKC_API.G_EXCEPTION_ERROR;
3707     END IF;
3708     lock_row(
3709       p_init_msg_list,
3710       x_return_status,
3711       x_msg_count,
3712       x_msg_data,
3713       l_okl_txl_quote_lines_tl_rec
3714     );
3715     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3716       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3717     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3718       RAISE OKC_API.G_EXCEPTION_ERROR;
3719     END IF;
3720     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
3721   EXCEPTION
3722     WHEN OKC_API.G_EXCEPTION_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_ERROR',
3728         x_msg_count,
3729         x_msg_data,
3730         '_PVT'
3731       );
3732     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3733       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3734       (
3735         l_api_name,
3736         G_PKG_NAME,
3737         'OKC_API.G_RET_STS_UNEXP_ERROR',
3738         x_msg_count,
3739         x_msg_data,
3740         '_PVT'
3741       );
3742     WHEN OTHERS THEN
3743       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3744       (
3745         l_api_name,
3746         G_PKG_NAME,
3747         'OTHERS',
3748         x_msg_count,
3749         x_msg_data,
3750         '_PVT'
3751       );
3752   END lock_row;
3753   --------------------------------------
3754   -- PL/SQL TBL lock_row for:TQLV_TBL --
3755   --------------------------------------
3756   PROCEDURE lock_row(
3757     p_api_version                  IN NUMBER,
3758     p_init_msg_list                IN VARCHAR2,
3759     x_return_status                OUT NOCOPY VARCHAR2,
3760     x_msg_count                    OUT NOCOPY NUMBER,
3761     x_msg_data                     OUT NOCOPY VARCHAR2,
3762     p_tqlv_tbl                     IN tqlv_tbl_type) IS
3763 
3764     l_api_version                 CONSTANT NUMBER := 1;
3765     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_lock_row';
3766     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3767     i                              NUMBER := 0;
3768     -- Begin Post-Generation Change
3769     -- overall error status
3770     l_overall_status               VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
3771     -- End Post-Generation Change
3772   BEGIN
3773     OKC_API.init_msg_list(p_init_msg_list);
3774     -- Make sure PL/SQL table has records in it before passing
3775     IF (p_tqlv_tbl.COUNT > 0) THEN
3776       i := p_tqlv_tbl.FIRST;
3777       LOOP
3778         lock_row (
3779           p_api_version                  => p_api_version,
3780           p_init_msg_list                => OKC_API.G_FALSE,
3781           x_return_status                => x_return_status,
3782           x_msg_count                    => x_msg_count,
3783           x_msg_data                     => x_msg_data,
3784           p_tqlv_rec                     => p_tqlv_tbl(i));
3785         -- Begin Post-Generation Change
3786         -- store the highest degree of error
3787         IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
3788            IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
3789               l_overall_status := x_return_status;
3790            END IF;
3791         END IF;
3792         -- End Post-Generation Change
3793         EXIT WHEN (i = p_tqlv_tbl.LAST);
3794         i := p_tqlv_tbl.NEXT(i);
3795       END LOOP;
3796       -- Begin Post-Generation Change
3797       -- return overall status
3798       x_return_status := l_overall_status;
3799       -- End Post-Generation Change
3800     END IF;
3801   EXCEPTION
3802     WHEN OKC_API.G_EXCEPTION_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_ERROR',
3808         x_msg_count,
3809         x_msg_data,
3810         '_PVT'
3811       );
3812     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3813       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3814       (
3815         l_api_name,
3816         G_PKG_NAME,
3817         'OKC_API.G_RET_STS_UNEXP_ERROR',
3818         x_msg_count,
3819         x_msg_data,
3820         '_PVT'
3821       );
3822     WHEN OTHERS THEN
3823       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
3824       (
3825         l_api_name,
3826         G_PKG_NAME,
3827         'OTHERS',
3828         x_msg_count,
3829         x_msg_data,
3830         '_PVT'
3831       );
3832   END lock_row;
3833 
3834   ---------------------------------------------------------------------------
3835   -- PROCEDURE update_row
3836   ---------------------------------------------------------------------------
3837   ------------------------------------------
3838   -- update_row for:OKL_TXL_QUOTE_LINES_B --
3839   ------------------------------------------
3840   -- Start of comments
3841   -- Procedure Name  : update_row
3842   -- Description     : Update Row into OKL_TXL_QUOTE_LINES_B table
3843   -- Business Rules  :
3844   -- Parameters      : Record structure of OKL_TXL_QUOTE_LINES_B table
3845   -- Version         : 1.0
3846   -- History         : 18-DEC-2002 BAKUCHIB 2667636 Modified
3847   --                 : Added columns Currency code, currency Conversion_code
3848   --                   Currency conversion type, currency conversion date
3849   --                   currency conversion rate.
3850   --                 : 15-Feb-2005 PAGARG 4161133 code for new column DUE_DATE
3851   -- End of comments
3852   PROCEDURE update_row(
3853     p_init_msg_list                IN VARCHAR2,
3854     x_return_status                OUT NOCOPY VARCHAR2,
3855     x_msg_count                    OUT NOCOPY NUMBER,
3856     x_msg_data                     OUT NOCOPY VARCHAR2,
3857     p_tql_rec                      IN tql_rec_type,
3858     x_tql_rec                      OUT NOCOPY tql_rec_type) IS
3859 
3860     l_api_version                 CONSTANT NUMBER := 1;
3861     l_api_name                     CONSTANT VARCHAR2(30) := 'B_update_row';
3862     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3863     l_tql_rec                      tql_rec_type := p_tql_rec;
3864     l_def_tql_rec                  tql_rec_type;
3865     l_row_notfound                 BOOLEAN := TRUE;
3866     ----------------------------------
3867     -- FUNCTION populate_new_record --
3868     ----------------------------------
3869     -- Start of comments
3870     -- Function Name   : populate_new_record
3871     -- Description     : Populate new record into OKL_TXL_QUOTE_LINES_B table
3872     -- Business Rules  :
3873     -- Parameters      : Record structure of OKL_TXL_QUOTE_LINES_B table
3874     -- Version         : 1.0
3875     -- History         : 18-DEC-2002 BAKUCHIB 2667636
3876     --                 : Added columns Currency code, currency Conversion_code
3877     --                   Currency conversion type, currency conversion date
3878     --                   currency conversion rate.
3879     --                 : 15-Feb-2005 PAGARG 4161133 code for new column DUE_DATE
3880     FUNCTION populate_new_record (
3881       p_tql_rec	IN tql_rec_type,
3882       x_tql_rec	OUT NOCOPY tql_rec_type
3883     ) RETURN VARCHAR2 IS
3884       l_tql_rec                      tql_rec_type;
3885       l_row_notfound                 BOOLEAN := TRUE;
3886       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3887     BEGIN
3888       -- Added by Suresh P Bagukkudumbi
3889       -- Added for handling concurrent manager fields
3890 
3891       x_tql_rec := p_tql_rec;
3892       -- Get current database values
3893       l_tql_rec := get_rec(p_tql_rec, l_row_notfound);
3894       IF (l_row_notfound) THEN
3895         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3896       END IF;
3897       IF (x_tql_rec.id = OKC_API.G_MISS_NUM)
3898       THEN
3899         x_tql_rec.id := l_tql_rec.id;
3900       END IF;
3901       IF (x_tql_rec.sty_id = OKC_API.G_MISS_NUM)
3902       THEN
3903         x_tql_rec.sty_id := l_tql_rec.sty_id;
3904       END IF;
3905       IF (x_tql_rec.kle_id = OKC_API.G_MISS_NUM)
3906       THEN
3907         x_tql_rec.kle_id := l_tql_rec.kle_id;
3908       END IF;
3909       IF (x_tql_rec.qlt_code = OKC_API.G_MISS_CHAR)
3910       THEN
3911         x_tql_rec.qlt_code := l_tql_rec.qlt_code;
3912       END IF;
3913       IF (x_tql_rec.qte_id = OKC_API.G_MISS_NUM)
3914       THEN
3915         x_tql_rec.qte_id := l_tql_rec.qte_id;
3916       END IF;
3917       IF (x_tql_rec.line_number = OKC_API.G_MISS_NUM)
3918       THEN
3919         x_tql_rec.line_number := l_tql_rec.line_number;
3920       END IF;
3921       IF (x_tql_rec.amount = OKC_API.G_MISS_NUM)
3922       THEN
3923         x_tql_rec.amount := l_tql_rec.amount;
3924       END IF;
3925       IF (x_tql_rec.object_version_number = OKC_API.G_MISS_NUM)
3926       THEN
3927         x_tql_rec.object_version_number := l_tql_rec.object_version_number;
3928       END IF;
3929       IF (x_tql_rec.modified_yn = OKC_API.G_MISS_CHAR)
3930       THEN
3931         x_tql_rec.modified_yn := l_tql_rec.modified_yn;
3932       END IF;
3933       IF (x_tql_rec.defaulted_yn = OKC_API.G_MISS_CHAR)
3934       THEN
3935         x_tql_rec.defaulted_yn := l_tql_rec.defaulted_yn;
3936       END IF;
3937       IF (x_tql_rec.taxed_yn = OKC_API.G_MISS_CHAR)
3938       THEN
3939         x_tql_rec.taxed_yn := l_tql_rec.taxed_yn;
3940       END IF;
3941       IF (x_tql_rec.org_id = OKC_API.G_MISS_NUM)
3942       THEN
3943         x_tql_rec.org_id := l_tql_rec.org_id;
3944       END IF;
3945       IF (x_tql_rec.request_id = OKC_API.G_MISS_NUM)
3946       THEN
3947         x_tql_rec.request_id := l_tql_rec.request_id;
3948       END IF;
3949       IF (x_tql_rec.program_application_id = OKC_API.G_MISS_NUM)
3950       THEN
3951         x_tql_rec.program_application_id := l_tql_rec.program_application_id;
3952       END IF;
3953       IF (x_tql_rec.program_id = OKC_API.G_MISS_NUM)
3954       THEN
3955         x_tql_rec.program_id := l_tql_rec.program_id;
3956       END IF;
3957       IF (x_tql_rec.program_update_date = OKC_API.G_MISS_DATE)
3958       THEN
3959         x_tql_rec.program_update_date := l_tql_rec.program_update_date;
3960       END IF;
3961       IF (x_tql_rec.attribute_category = OKC_API.G_MISS_CHAR)
3962       THEN
3963         x_tql_rec.attribute_category := l_tql_rec.attribute_category;
3964       END IF;
3965       IF (x_tql_rec.attribute1 = OKC_API.G_MISS_CHAR)
3966       THEN
3967         x_tql_rec.attribute1 := l_tql_rec.attribute1;
3968       END IF;
3969       IF (x_tql_rec.attribute2 = OKC_API.G_MISS_CHAR)
3970       THEN
3971         x_tql_rec.attribute2 := l_tql_rec.attribute2;
3972       END IF;
3973       IF (x_tql_rec.attribute3 = OKC_API.G_MISS_CHAR)
3974       THEN
3975         x_tql_rec.attribute3 := l_tql_rec.attribute3;
3976       END IF;
3977       IF (x_tql_rec.attribute4 = OKC_API.G_MISS_CHAR)
3978       THEN
3979         x_tql_rec.attribute4 := l_tql_rec.attribute4;
3980       END IF;
3981       IF (x_tql_rec.attribute5 = OKC_API.G_MISS_CHAR)
3982       THEN
3983         x_tql_rec.attribute5 := l_tql_rec.attribute5;
3984       END IF;
3985       IF (x_tql_rec.attribute6 = OKC_API.G_MISS_CHAR)
3986       THEN
3987         x_tql_rec.attribute6 := l_tql_rec.attribute6;
3988       END IF;
3989       IF (x_tql_rec.attribute7 = OKC_API.G_MISS_CHAR)
3990       THEN
3991         x_tql_rec.attribute7 := l_tql_rec.attribute7;
3992       END IF;
3993       IF (x_tql_rec.attribute8 = OKC_API.G_MISS_CHAR)
3994       THEN
3995         x_tql_rec.attribute8 := l_tql_rec.attribute8;
3996       END IF;
3997       IF (x_tql_rec.attribute9 = OKC_API.G_MISS_CHAR)
3998       THEN
3999         x_tql_rec.attribute9 := l_tql_rec.attribute9;
4000       END IF;
4001       IF (x_tql_rec.attribute10 = OKC_API.G_MISS_CHAR)
4002       THEN
4003         x_tql_rec.attribute10 := l_tql_rec.attribute10;
4004       END IF;
4005       IF (x_tql_rec.attribute11 = OKC_API.G_MISS_CHAR)
4006       THEN
4007         x_tql_rec.attribute11 := l_tql_rec.attribute11;
4008       END IF;
4009       IF (x_tql_rec.attribute12 = OKC_API.G_MISS_CHAR)
4010       THEN
4011         x_tql_rec.attribute12 := l_tql_rec.attribute12;
4012       END IF;
4013       IF (x_tql_rec.attribute13 = OKC_API.G_MISS_CHAR)
4014       THEN
4015         x_tql_rec.attribute13 := l_tql_rec.attribute13;
4016       END IF;
4017       IF (x_tql_rec.attribute14 = OKC_API.G_MISS_CHAR)
4018       THEN
4019         x_tql_rec.attribute14 := l_tql_rec.attribute14;
4020       END IF;
4021       IF (x_tql_rec.attribute15 = OKC_API.G_MISS_CHAR)
4022       THEN
4023         x_tql_rec.attribute15 := l_tql_rec.attribute15;
4024       END IF;
4025       IF (x_tql_rec.created_by = OKC_API.G_MISS_NUM)
4026       THEN
4027         x_tql_rec.created_by := l_tql_rec.created_by;
4028       END IF;
4029       IF (x_tql_rec.creation_date = OKC_API.G_MISS_DATE)
4030       THEN
4031         x_tql_rec.creation_date := l_tql_rec.creation_date;
4032       END IF;
4033       IF (x_tql_rec.last_updated_by = OKC_API.G_MISS_NUM)
4034       THEN
4035         x_tql_rec.last_updated_by := l_tql_rec.last_updated_by;
4036       END IF;
4037       IF (x_tql_rec.last_update_date = OKC_API.G_MISS_DATE)
4038       THEN
4039         x_tql_rec.last_update_date := l_tql_rec.last_update_date;
4040       END IF;
4041       IF (x_tql_rec.last_update_login = OKC_API.G_MISS_NUM)
4042       THEN
4043         x_tql_rec.last_update_login := l_tql_rec.last_update_login;
4044       END IF;
4045       IF (x_tql_rec.start_date = OKC_API.G_MISS_DATE)
4046       THEN
4047         x_tql_rec.start_date := l_tql_rec.start_date;
4048       END IF;
4049       IF (x_tql_rec.period = OKC_API.G_MISS_CHAR)
4050       THEN
4051         x_tql_rec.period := l_tql_rec.period;
4052       END IF;
4053       IF (x_tql_rec.number_of_periods = OKC_API.G_MISS_NUM)
4054       THEN
4055         x_tql_rec.number_of_periods := l_tql_rec.number_of_periods;
4056       END IF;
4057       IF (x_tql_rec.lock_level_step = OKC_API.G_MISS_CHAR)
4058       THEN
4059         x_tql_rec.lock_level_step := l_tql_rec.lock_level_step;
4060       END IF;
4061       IF (x_tql_rec.advance_or_arrears = OKC_API.G_MISS_CHAR)
4062       THEN
4063         x_tql_rec.advance_or_arrears := l_tql_rec.advance_or_arrears;
4064       END IF;
4065       IF (x_tql_rec.yield_name = OKC_API.G_MISS_CHAR)
4066       THEN
4067         x_tql_rec.yield_name := l_tql_rec.yield_name;
4068       END IF;
4069       IF (x_tql_rec.yield_value = OKC_API.G_MISS_NUM)
4070       THEN
4071         x_tql_rec.yield_value := l_tql_rec.yield_value;
4072       END IF;
4073       IF (x_tql_rec.implicit_interest_rate = OKC_API.G_MISS_NUM)
4074       THEN
4075         x_tql_rec.implicit_interest_rate := l_tql_rec.implicit_interest_rate;
4076       END IF;
4077       IF (x_tql_rec.asset_value = OKC_API.G_MISS_NUM)
4078       THEN
4079         x_tql_rec.asset_value := l_tql_rec.asset_value;
4080       END IF;
4081       IF (x_tql_rec.residual_value = OKC_API.G_MISS_NUM)
4082       THEN
4083         x_tql_rec.residual_value := l_tql_rec.residual_value;
4084       END IF;
4085       IF (x_tql_rec.unbilled_receivables = OKC_API.G_MISS_NUM)
4086       THEN
4087         x_tql_rec.unbilled_receivables := l_tql_rec.unbilled_receivables;
4088       END IF;
4089       IF (x_tql_rec.asset_quantity = OKC_API.G_MISS_NUM)
4090       THEN
4091         x_tql_rec.asset_quantity := l_tql_rec.asset_quantity;
4092       END IF;
4093       IF (x_tql_rec.quote_quantity = OKC_API.G_MISS_NUM)
4094       THEN
4095         x_tql_rec.quote_quantity := l_tql_rec.quote_quantity;
4096       END IF;
4097       IF (x_tql_rec.split_kle_id = OKC_API.G_MISS_NUM)
4098       THEN
4099         x_tql_rec.split_kle_id := l_tql_rec.split_kle_id;
4100       END IF;
4101       -- RMUNJULU 2757312
4102       IF (x_tql_rec.split_kle_name = OKC_API.G_MISS_CHAR)
4103       THEN
4104         x_tql_rec.split_kle_name := l_tql_rec.split_kle_name;
4105       END IF;
4106   -- BAKUCHIB 2667636 Start
4107      IF (x_tql_rec.currency_code = OKC_API.G_MISS_CHAR)
4108       THEN
4109         x_tql_rec.currency_code := l_tql_rec.currency_code;
4110       END IF;
4111       IF (x_tql_rec.currency_conversion_code = OKC_API.G_MISS_CHAR)
4112       THEN
4113         x_tql_rec.currency_conversion_code := l_tql_rec.currency_conversion_code;
4114       END IF;
4115       IF (x_tql_rec.currency_conversion_type = OKC_API.G_MISS_CHAR)
4116       THEN
4117         x_tql_rec.currency_conversion_type := l_tql_rec.currency_conversion_type;
4118       END IF;
4119       IF (x_tql_rec.currency_conversion_rate = OKC_API.G_MISS_NUM)
4120       THEN
4121         x_tql_rec.currency_conversion_rate := l_tql_rec.currency_conversion_rate;
4122       END IF;
4123       IF (x_tql_rec.currency_conversion_date = OKC_API.G_MISS_DATE)
4124       THEN
4125         x_tql_rec.currency_conversion_date := l_tql_rec.currency_conversion_date;
4126       END IF;
4127   -- BAKUCHIB 2667636 End
4128       --PAGARG 4161133 start
4129       -- populate attribute due date, added new to column
4130       IF (x_tql_rec.due_date = OKC_API.G_MISS_DATE)
4131       THEN
4132         x_tql_rec.due_date := l_tql_rec.due_date;
4133       END IF;
4134       --PAGARG 4161133 end
4135       -- rmunjulu Sales_Tax_Enhancement
4136       IF (x_tql_rec.try_id = OKC_API.G_MISS_NUM)
4137       THEN
4138         x_tql_rec.try_id := l_tql_rec.try_id;
4139       END IF;
4140       RETURN(l_return_status);
4141     END populate_new_record;
4142     ----------------------------------------------
4143     -- Set_Attributes for:OKL_TXL_QUOTE_LINES_B --
4144     ----------------------------------------------
4145     FUNCTION Set_Attributes (
4146       p_tql_rec IN  tql_rec_type,
4147       x_tql_rec OUT NOCOPY tql_rec_type
4148     ) RETURN VARCHAR2 IS
4149       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4150     BEGIN
4151       x_tql_rec := p_tql_rec;
4152       RETURN(l_return_status);
4153     END Set_Attributes;
4154   BEGIN
4155     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4156                                               p_init_msg_list,
4157                                               '_PVT',
4158                                               x_return_status);
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     --- Setting item attributes
4165     l_return_status := Set_Attributes(
4166       p_tql_rec,                         -- IN
4167       l_tql_rec);                        -- OUT
4168     --- If any errors happen abort API
4169     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4170       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4171     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4172       RAISE OKC_API.G_EXCEPTION_ERROR;
4173     END IF;
4174     l_return_status := populate_new_record(l_tql_rec, l_def_tql_rec);
4175     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4176       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4177     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4178       RAISE OKC_API.G_EXCEPTION_ERROR;
4179     END IF;
4180     UPDATE  OKL_TXL_QUOTE_LINES_B
4181     SET STY_ID = l_def_tql_rec.sty_id,
4182         KLE_ID = l_def_tql_rec.kle_id,
4183         QLT_CODE = l_def_tql_rec.qlt_code,
4184         QTE_ID = l_def_tql_rec.qte_id,
4185         LINE_NUMBER = l_def_tql_rec.line_number,
4186         AMOUNT = l_def_tql_rec.amount,
4187         OBJECT_VERSION_NUMBER = l_def_tql_rec.object_version_number,
4188         MODIFIED_YN = l_def_tql_rec.modified_yn,
4189         DEFAULTED_YN = l_def_tql_rec.defaulted_yn,
4190         TAXED_YN = l_def_tql_rec.taxed_yn,
4191         ORG_ID = l_def_tql_rec.org_id,
4192         REQUEST_ID = NVL(decode(FND_GLOBAL.CONC_REQUEST_ID,-1, NULL,
4193                    FND_GLOBAL.CONC_REQUEST_ID),l_def_tql_rec.request_id),
4194         PROGRAM_APPLICATION_ID = NVL(decode(FND_GLOBAL.PROG_APPL_ID,-1,NULL,
4195                    FND_GLOBAL.PROG_APPL_ID),l_def_tql_rec.program_application_id),
4196         PROGRAM_ID = NVL(decode(FND_GLOBAL.CONC_PROGRAM_ID,-1,NULL,
4197                  FND_GLOBAL.CONC_PROGRAM_ID),l_def_tql_rec.program_id),
4198         PROGRAM_UPDATE_DATE = decode(decode(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,
4199                  SYSDATE),NULL,l_def_tql_rec.program_update_date,SYSDATE),
4200 
4201         ATTRIBUTE_CATEGORY = l_def_tql_rec.attribute_category,
4202         ATTRIBUTE1 = l_def_tql_rec.attribute1,
4203         ATTRIBUTE2 = l_def_tql_rec.attribute2,
4204         ATTRIBUTE3 = l_def_tql_rec.attribute3,
4205         ATTRIBUTE4 = l_def_tql_rec.attribute4,
4206         ATTRIBUTE5 = l_def_tql_rec.attribute5,
4207         ATTRIBUTE6 = l_def_tql_rec.attribute6,
4208         ATTRIBUTE7 = l_def_tql_rec.attribute7,
4209         ATTRIBUTE8 = l_def_tql_rec.attribute8,
4210         ATTRIBUTE9 = l_def_tql_rec.attribute9,
4211         ATTRIBUTE10 = l_def_tql_rec.attribute10,
4212         ATTRIBUTE11 = l_def_tql_rec.attribute11,
4213         ATTRIBUTE12 = l_def_tql_rec.attribute12,
4214         ATTRIBUTE13 = l_def_tql_rec.attribute13,
4215         ATTRIBUTE14 = l_def_tql_rec.attribute14,
4216         ATTRIBUTE15 = l_def_tql_rec.attribute15,
4217         CREATED_BY = l_def_tql_rec.created_by,
4218         CREATION_DATE = l_def_tql_rec.creation_date,
4219         LAST_UPDATED_BY = l_def_tql_rec.last_updated_by,
4220         LAST_UPDATE_DATE = l_def_tql_rec.last_update_date,
4221         LAST_UPDATE_LOGIN = l_def_tql_rec.last_update_login,
4222         START_DATE = l_def_tql_rec.start_date,
4223         PERIOD = l_def_tql_rec.period,
4224         NUMBER_OF_PERIODS = l_def_tql_rec.number_of_periods,
4225         LOCK_LEVEL_STEP = l_def_tql_rec.lock_level_step,
4226         ADVANCE_OR_ARREARS = l_def_tql_rec.advance_or_arrears,
4227         YIELD_NAME = l_def_tql_rec.yield_name,
4228         YIELD_VALUE = l_def_tql_rec.yield_value,
4229         IMPLICIT_INTEREST_RATE = l_def_tql_rec.implicit_interest_rate,
4230         ASSET_VALUE = l_def_tql_rec.asset_value,
4231         RESIDUAL_VALUE = l_def_tql_rec.residual_value,
4232         UNBILLED_RECEIVABLES = l_def_tql_rec.unbilled_receivables,
4233         ASSET_QUANTITY = l_def_tql_rec.asset_quantity,
4234         QUOTE_QUANTITY = l_def_tql_rec.quote_quantity,
4235         SPLIT_KLE_ID = l_def_tql_rec.split_kle_id,
4236         -- RMUNJULU 2757312
4237         SPLIT_KLE_NAME = l_def_tql_rec.split_kle_name,
4238   -- BAKCUHIUB 2667636 Start
4239         CURRENCY_CODE = l_def_tql_rec.currency_code,
4240         CURRENCY_CONVERSION_CODE = l_def_tql_rec.currency_conversion_code,
4241         CURRENCY_CONVERSION_TYPE = l_def_tql_rec.currency_conversion_type,
4242         CURRENCY_CONVERSION_RATE = l_def_tql_rec.currency_conversion_rate,
4243         CURRENCY_CONVERSION_DATE = l_def_tql_rec.currency_conversion_date,
4244   -- BAKUCHIB 2667636 End
4245         DUE_DATE = l_def_tql_rec.due_date, -- PAGARG Bug 4161133 new column
4246         TRY_ID = l_def_tql_rec.try_id-- rmunjulu Sales_Tax_Enhancement
4247     WHERE ID = l_def_tql_rec.id;
4248 
4249     x_tql_rec := l_def_tql_rec;
4250     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4251   EXCEPTION
4252     WHEN OKC_API.G_EXCEPTION_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_ERROR',
4258         x_msg_count,
4259         x_msg_data,
4260         '_PVT'
4261       );
4262     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4263       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4264       (
4265         l_api_name,
4266         G_PKG_NAME,
4267         'OKC_API.G_RET_STS_UNEXP_ERROR',
4268         x_msg_count,
4269         x_msg_data,
4270         '_PVT'
4271       );
4272     WHEN OTHERS THEN
4273       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4274       (
4275         l_api_name,
4276         G_PKG_NAME,
4277         'OTHERS',
4278         x_msg_count,
4279         x_msg_data,
4280         '_PVT'
4281       );
4282   END update_row;
4283   -------------------------------------------
4284   -- update_row for:OKL_TXL_QUOTE_LINES_TL --
4285   -------------------------------------------
4286   PROCEDURE update_row(
4287     p_init_msg_list                IN VARCHAR2,
4288     x_return_status                OUT NOCOPY VARCHAR2,
4289     x_msg_count                    OUT NOCOPY NUMBER,
4290     x_msg_data                     OUT NOCOPY VARCHAR2,
4291     p_okl_txl_quote_lines_tl_rec   IN OklTxlQuoteLinesTlRecType,
4292     x_okl_txl_quote_lines_tl_rec   OUT NOCOPY OklTxlQuoteLinesTlRecType) IS
4293 
4294     l_api_version                 CONSTANT NUMBER := 1;
4295     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_update_row';
4296     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4297     l_okl_txl_quote_lines_tl_rec   OklTxlQuoteLinesTlRecType := p_okl_txl_quote_lines_tl_rec;
4298     ldefokltxlquotelinestlrec      OklTxlQuoteLinesTlRecType;
4299     l_row_notfound                 BOOLEAN := TRUE;
4300     ----------------------------------
4301     -- FUNCTION populate_new_record --
4302     ----------------------------------
4303     FUNCTION populate_new_record (
4304       p_okl_txl_quote_lines_tl_rec	IN OklTxlQuoteLinesTlRecType,
4305       x_okl_txl_quote_lines_tl_rec	OUT NOCOPY OklTxlQuoteLinesTlRecType
4306     ) RETURN VARCHAR2 IS
4307       l_okl_txl_quote_lines_tl_rec   OklTxlQuoteLinesTlRecType;
4308       l_row_notfound                 BOOLEAN := TRUE;
4309       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4310     BEGIN
4311       x_okl_txl_quote_lines_tl_rec := p_okl_txl_quote_lines_tl_rec;
4312       -- Get current database values
4313       l_okl_txl_quote_lines_tl_rec := get_rec(p_okl_txl_quote_lines_tl_rec, l_row_notfound);
4314       IF (l_row_notfound) THEN
4315         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4316       END IF;
4317       IF (x_okl_txl_quote_lines_tl_rec.id = OKC_API.G_MISS_NUM)
4318       THEN
4319         x_okl_txl_quote_lines_tl_rec.id := l_okl_txl_quote_lines_tl_rec.id;
4320       END IF;
4321       IF (x_okl_txl_quote_lines_tl_rec.language = OKC_API.G_MISS_CHAR)
4322       THEN
4323         x_okl_txl_quote_lines_tl_rec.language := l_okl_txl_quote_lines_tl_rec.language;
4324       END IF;
4325       IF (x_okl_txl_quote_lines_tl_rec.source_lang = OKC_API.G_MISS_CHAR)
4326       THEN
4327         x_okl_txl_quote_lines_tl_rec.source_lang := l_okl_txl_quote_lines_tl_rec.source_lang;
4328       END IF;
4329       IF (x_okl_txl_quote_lines_tl_rec.sfwt_flag = OKC_API.G_MISS_CHAR)
4330       THEN
4331         x_okl_txl_quote_lines_tl_rec.sfwt_flag := l_okl_txl_quote_lines_tl_rec.sfwt_flag;
4332       END IF;
4333       IF (x_okl_txl_quote_lines_tl_rec.description = OKC_API.G_MISS_CHAR)
4334       THEN
4335         x_okl_txl_quote_lines_tl_rec.description := l_okl_txl_quote_lines_tl_rec.description;
4336       END IF;
4337       IF (x_okl_txl_quote_lines_tl_rec.created_by = OKC_API.G_MISS_NUM)
4338       THEN
4339         x_okl_txl_quote_lines_tl_rec.created_by := l_okl_txl_quote_lines_tl_rec.created_by;
4340       END IF;
4341       IF (x_okl_txl_quote_lines_tl_rec.creation_date = OKC_API.G_MISS_DATE)
4342       THEN
4343         x_okl_txl_quote_lines_tl_rec.creation_date := l_okl_txl_quote_lines_tl_rec.creation_date;
4344       END IF;
4345       IF (x_okl_txl_quote_lines_tl_rec.last_updated_by = OKC_API.G_MISS_NUM)
4346       THEN
4347         x_okl_txl_quote_lines_tl_rec.last_updated_by := l_okl_txl_quote_lines_tl_rec.last_updated_by;
4348       END IF;
4349       IF (x_okl_txl_quote_lines_tl_rec.last_update_date = OKC_API.G_MISS_DATE)
4350       THEN
4351         x_okl_txl_quote_lines_tl_rec.last_update_date := l_okl_txl_quote_lines_tl_rec.last_update_date;
4352       END IF;
4353       IF (x_okl_txl_quote_lines_tl_rec.last_update_login = OKC_API.G_MISS_NUM)
4354       THEN
4355         x_okl_txl_quote_lines_tl_rec.last_update_login := l_okl_txl_quote_lines_tl_rec.last_update_login;
4356       END IF;
4357       RETURN(l_return_status);
4358     END populate_new_record;
4359     -----------------------------------------------
4360     -- Set_Attributes for:OKL_TXL_QUOTE_LINES_TL --
4361     -----------------------------------------------
4362     FUNCTION Set_Attributes (
4363       p_okl_txl_quote_lines_tl_rec IN  OklTxlQuoteLinesTlRecType,
4364       x_okl_txl_quote_lines_tl_rec OUT NOCOPY OklTxlQuoteLinesTlRecType
4365     ) RETURN VARCHAR2 IS
4366       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4367     BEGIN
4368       x_okl_txl_quote_lines_tl_rec := p_okl_txl_quote_lines_tl_rec;
4369       x_okl_txl_quote_lines_tl_rec.LANGUAGE := USERENV('LANG');
4370       x_okl_txl_quote_lines_tl_rec.SOURCE_LANG := USERENV('LANG');
4371       RETURN(l_return_status);
4372     END Set_Attributes;
4373   BEGIN
4374     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4375                                               p_init_msg_list,
4376                                               '_PVT',
4377                                               x_return_status);
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     --- Setting item attributes
4384     l_return_status := Set_Attributes(
4385       p_okl_txl_quote_lines_tl_rec,      -- IN
4386       l_okl_txl_quote_lines_tl_rec);     -- OUT
4387     --- If any errors happen abort API
4388     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4389       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4390     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4391       RAISE OKC_API.G_EXCEPTION_ERROR;
4392     END IF;
4393     l_return_status := populate_new_record(l_okl_txl_quote_lines_tl_rec, ldefokltxlquotelinestlrec);
4394     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4395       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4396     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4397       RAISE OKC_API.G_EXCEPTION_ERROR;
4398     END IF;
4399     UPDATE  OKL_TXL_QUOTE_LINES_TL
4400     SET DESCRIPTION = ldefokltxlquotelinestlrec.description,
4401         CREATED_BY = ldefokltxlquotelinestlrec.created_by,
4402         SOURCE_LANG = ldefokltxlquotelinestlrec.source_lang, --Fix for bug 3637102
4403         CREATION_DATE = ldefokltxlquotelinestlrec.creation_date,
4404         LAST_UPDATED_BY = ldefokltxlquotelinestlrec.last_updated_by,
4405         LAST_UPDATE_DATE = ldefokltxlquotelinestlrec.last_update_date,
4406         LAST_UPDATE_LOGIN = ldefokltxlquotelinestlrec.last_update_login
4407     WHERE ID = ldefokltxlquotelinestlrec.id
4408         AND USERENV('LANG') in (SOURCE_LANG,LANGUAGE);--Fix for bug 3637102
4409       --AND SOURCE_LANG = USERENV('LANG');
4410 
4411     UPDATE  OKL_TXL_QUOTE_LINES_TL
4412     SET SFWT_FLAG = 'Y'
4413     WHERE ID = ldefokltxlquotelinestlrec.id
4414       AND SOURCE_LANG <> USERENV('LANG');
4415 
4416     x_okl_txl_quote_lines_tl_rec := ldefokltxlquotelinestlrec;
4417     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4418   EXCEPTION
4419     WHEN OKC_API.G_EXCEPTION_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_ERROR',
4425         x_msg_count,
4426         x_msg_data,
4427         '_PVT'
4428       );
4429     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4430       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4431       (
4432         l_api_name,
4433         G_PKG_NAME,
4434         'OKC_API.G_RET_STS_UNEXP_ERROR',
4435         x_msg_count,
4436         x_msg_data,
4437         '_PVT'
4438       );
4439     WHEN OTHERS THEN
4440       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4441       (
4442         l_api_name,
4443         G_PKG_NAME,
4444         'OTHERS',
4445         x_msg_count,
4446         x_msg_data,
4447         '_PVT'
4448       );
4449   END update_row;
4450   ------------------------------------------
4451   -- update_row for:OKL_TXL_QUOTE_LINES_V --
4452   ------------------------------------------
4453   -- Start of comments
4454   -- Procedure Name  : update_row
4455   -- Description     : Update Row into OKL_TXL_QUOTE_LINES_V table
4456   -- Business Rules  :
4457   -- Parameters      : Record structure of OKL_TXL_QUOTE_LINES_V table
4458   -- Version         : 1.0
4459   -- History         : 18-DEC-2002 BAKUCHIB 2667636  Modified
4460   --                 : Added columns Currency code, currency Conversion_code
4461   --                   Currency conversion type, currency conversion date
4462   --                   currency conversion rate.
4463   --                 : RMUNJULU 09-MAY-03 2949544 Added code to round
4464   --                   the amount field before saving to table
4465   --                 : PAGARG 15-Feb-2005 Bug 4161133 Code for new column due_date
4466   PROCEDURE update_row(
4467     p_api_version                  IN NUMBER,
4468     p_init_msg_list                IN VARCHAR2,
4469     x_return_status                OUT NOCOPY VARCHAR2,
4470     x_msg_count                    OUT NOCOPY NUMBER,
4471     x_msg_data                     OUT NOCOPY VARCHAR2,
4472     p_tqlv_rec                     IN tqlv_rec_type,
4473     x_tqlv_rec                     OUT NOCOPY tqlv_rec_type) IS
4474 
4475     l_api_version                 CONSTANT NUMBER := 1;
4476     l_api_name                     CONSTANT VARCHAR2(30) := 'V_update_row';
4477     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4478     l_tqlv_rec                     tqlv_rec_type := p_tqlv_rec;
4479     l_def_tqlv_rec                 tqlv_rec_type;
4480     l_okl_txl_quote_lines_tl_rec   OklTxlQuoteLinesTlRecType;
4481     lx_okl_txl_quote_lines_tl_rec  OklTxlQuoteLinesTlRecType;
4482     l_tql_rec                      tql_rec_type;
4483     lx_tql_rec                     tql_rec_type;
4484 
4485 
4486     -- RMUNJULU 09-MAY-03 2949544 Added variable
4487     l_rounded_amount NUMBER;
4488     -------------------------------
4489     -- FUNCTION fill_who_columns --
4490     -------------------------------
4491     FUNCTION fill_who_columns (
4492       p_tqlv_rec	IN tqlv_rec_type
4493     ) RETURN tqlv_rec_type IS
4494       l_tqlv_rec	tqlv_rec_type := p_tqlv_rec;
4495     BEGIN
4496       l_tqlv_rec.LAST_UPDATE_DATE := SYSDATE;
4497       l_tqlv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
4498       l_tqlv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
4499       RETURN(l_tqlv_rec);
4500     END fill_who_columns;
4501     ----------------------------------
4502     -- FUNCTION populate_new_record --
4503     ----------------------------------
4504     -- Start of comments
4505     -- Function Name   : populate_new_record
4506     -- Description     : Populate new record into OKL_TXL_QUOTE_LINES_V table
4507     -- Business Rules  :
4508     -- Parameters      : Record structure of OKL_TXL_QUOTE_LINES_V table
4509     -- Version         : 1.0
4510     -- History         : 18-DEC-2002 BAKUCHIB 2667636 Modified
4511     --                 : Added columns Currency code, currency Conversion_code
4512     --                   Currency conversion type, currency conversion date
4513     --                   currency conversion rate.
4514     --                 : PAGARG 15-Feb-2005 Bug 4161133 Code for new column due_date
4515     FUNCTION populate_new_record (
4516       p_tqlv_rec	IN tqlv_rec_type,
4517       x_tqlv_rec	OUT NOCOPY tqlv_rec_type
4518     ) RETURN VARCHAR2 IS
4519       l_tqlv_rec                     tqlv_rec_type;
4520       l_row_notfound                 BOOLEAN := TRUE;
4521       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4522     BEGIN
4523       x_tqlv_rec := p_tqlv_rec;
4524       -- Get current database values
4525       l_tqlv_rec := get_rec(p_tqlv_rec, l_row_notfound);
4526       IF (l_row_notfound) THEN
4527         l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
4528       END IF;
4529       IF (x_tqlv_rec.id = OKC_API.G_MISS_NUM)
4530       THEN
4531         x_tqlv_rec.id := l_tqlv_rec.id;
4532       END IF;
4533       IF (x_tqlv_rec.object_version_number = OKC_API.G_MISS_NUM)
4534       THEN
4535         x_tqlv_rec.object_version_number := l_tqlv_rec.object_version_number;
4536       END IF;
4537       IF (x_tqlv_rec.sfwt_flag = OKC_API.G_MISS_CHAR)
4538       THEN
4539         x_tqlv_rec.sfwt_flag := l_tqlv_rec.sfwt_flag;
4540       END IF;
4541       IF (x_tqlv_rec.qlt_code = OKC_API.G_MISS_CHAR)
4542       THEN
4543         x_tqlv_rec.qlt_code := l_tqlv_rec.qlt_code;
4544       END IF;
4545       IF (x_tqlv_rec.kle_id = OKC_API.G_MISS_NUM)
4546       THEN
4547         x_tqlv_rec.kle_id := l_tqlv_rec.kle_id;
4548       END IF;
4549       IF (x_tqlv_rec.sty_id = OKC_API.G_MISS_NUM)
4550       THEN
4551         x_tqlv_rec.sty_id := l_tqlv_rec.sty_id;
4552       END IF;
4553       IF (x_tqlv_rec.qte_id = OKC_API.G_MISS_NUM)
4554       THEN
4555         x_tqlv_rec.qte_id := l_tqlv_rec.qte_id;
4556       END IF;
4557       IF (x_tqlv_rec.line_number = OKC_API.G_MISS_NUM)
4558       THEN
4559         x_tqlv_rec.line_number := l_tqlv_rec.line_number;
4560       END IF;
4561       IF (x_tqlv_rec.description = OKC_API.G_MISS_CHAR)
4562       THEN
4563         x_tqlv_rec.description := l_tqlv_rec.description;
4564       END IF;
4565       IF (x_tqlv_rec.amount = OKC_API.G_MISS_NUM)
4566       THEN
4567         x_tqlv_rec.amount := l_tqlv_rec.amount;
4568       -- DAPATEL - 01/08/02 - Added to reflect a manual amount updated.
4569       ELSE
4570         IF (x_tqlv_rec.amount <> l_tqlv_rec.amount) THEN
4571           x_tqlv_rec.MODIFIED_YN := G_YES;
4572         END IF;
4573       -- End
4574       END IF;
4575       IF (x_tqlv_rec.modified_yn = OKC_API.G_MISS_CHAR)
4576       THEN
4577         x_tqlv_rec.modified_yn := l_tqlv_rec.modified_yn;
4578       END IF;
4579       IF (x_tqlv_rec.defaulted_yn = OKC_API.G_MISS_CHAR)
4580       THEN
4581         x_tqlv_rec.defaulted_yn := l_tqlv_rec.defaulted_yn;
4582       END IF;
4583       IF (x_tqlv_rec.taxed_yn = OKC_API.G_MISS_CHAR)
4584       THEN
4585         x_tqlv_rec.taxed_yn := l_tqlv_rec.taxed_yn;
4586       END IF;
4587       IF (x_tqlv_rec.attribute_category = OKC_API.G_MISS_CHAR)
4588       THEN
4589         x_tqlv_rec.attribute_category := l_tqlv_rec.attribute_category;
4590       END IF;
4591       IF (x_tqlv_rec.attribute1 = OKC_API.G_MISS_CHAR)
4592       THEN
4593         x_tqlv_rec.attribute1 := l_tqlv_rec.attribute1;
4594       END IF;
4595       IF (x_tqlv_rec.attribute2 = OKC_API.G_MISS_CHAR)
4596       THEN
4597         x_tqlv_rec.attribute2 := l_tqlv_rec.attribute2;
4598       END IF;
4599       IF (x_tqlv_rec.attribute3 = OKC_API.G_MISS_CHAR)
4600       THEN
4601         x_tqlv_rec.attribute3 := l_tqlv_rec.attribute3;
4602       END IF;
4603       IF (x_tqlv_rec.attribute4 = OKC_API.G_MISS_CHAR)
4604       THEN
4605         x_tqlv_rec.attribute4 := l_tqlv_rec.attribute4;
4606       END IF;
4607       IF (x_tqlv_rec.attribute5 = OKC_API.G_MISS_CHAR)
4608       THEN
4609         x_tqlv_rec.attribute5 := l_tqlv_rec.attribute5;
4610       END IF;
4611       IF (x_tqlv_rec.attribute6 = OKC_API.G_MISS_CHAR)
4612       THEN
4613         x_tqlv_rec.attribute6 := l_tqlv_rec.attribute6;
4614       END IF;
4615       IF (x_tqlv_rec.attribute7 = OKC_API.G_MISS_CHAR)
4616       THEN
4617         x_tqlv_rec.attribute7 := l_tqlv_rec.attribute7;
4618       END IF;
4619       IF (x_tqlv_rec.attribute8 = OKC_API.G_MISS_CHAR)
4620       THEN
4621         x_tqlv_rec.attribute8 := l_tqlv_rec.attribute8;
4622       END IF;
4623       IF (x_tqlv_rec.attribute9 = OKC_API.G_MISS_CHAR)
4624       THEN
4625         x_tqlv_rec.attribute9 := l_tqlv_rec.attribute9;
4626       END IF;
4627       IF (x_tqlv_rec.attribute10 = OKC_API.G_MISS_CHAR)
4628       THEN
4629         x_tqlv_rec.attribute10 := l_tqlv_rec.attribute10;
4630       END IF;
4631       IF (x_tqlv_rec.attribute11 = OKC_API.G_MISS_CHAR)
4632       THEN
4633         x_tqlv_rec.attribute11 := l_tqlv_rec.attribute11;
4634       END IF;
4635       IF (x_tqlv_rec.attribute12 = OKC_API.G_MISS_CHAR)
4636       THEN
4637         x_tqlv_rec.attribute12 := l_tqlv_rec.attribute12;
4638       END IF;
4639       IF (x_tqlv_rec.attribute13 = OKC_API.G_MISS_CHAR)
4640       THEN
4641         x_tqlv_rec.attribute13 := l_tqlv_rec.attribute13;
4642       END IF;
4643       IF (x_tqlv_rec.attribute14 = OKC_API.G_MISS_CHAR)
4644       THEN
4645         x_tqlv_rec.attribute14 := l_tqlv_rec.attribute14;
4646       END IF;
4647       IF (x_tqlv_rec.attribute15 = OKC_API.G_MISS_CHAR)
4648       THEN
4649         x_tqlv_rec.attribute15 := l_tqlv_rec.attribute15;
4650       END IF;
4651       IF (x_tqlv_rec.org_id = OKC_API.G_MISS_NUM)
4652       THEN
4653         x_tqlv_rec.org_id := l_tqlv_rec.org_id;
4654       END IF;
4655       IF (x_tqlv_rec.request_id = OKC_API.G_MISS_NUM)
4656       THEN
4657         x_tqlv_rec.request_id := l_tqlv_rec.request_id;
4658       END IF;
4659       IF (x_tqlv_rec.program_application_id = OKC_API.G_MISS_NUM)
4660       THEN
4661         x_tqlv_rec.program_application_id := l_tqlv_rec.program_application_id;
4662       END IF;
4663       IF (x_tqlv_rec.program_id = OKC_API.G_MISS_NUM)
4664       THEN
4665         x_tqlv_rec.program_id := l_tqlv_rec.program_id;
4666       END IF;
4667       IF (x_tqlv_rec.program_update_date = OKC_API.G_MISS_DATE)
4668       THEN
4669         x_tqlv_rec.program_update_date := l_tqlv_rec.program_update_date;
4670       END IF;
4671       IF (x_tqlv_rec.created_by = OKC_API.G_MISS_NUM)
4672       THEN
4673         x_tqlv_rec.created_by := l_tqlv_rec.created_by;
4674       END IF;
4675       IF (x_tqlv_rec.creation_date = OKC_API.G_MISS_DATE)
4676       THEN
4677         x_tqlv_rec.creation_date := l_tqlv_rec.creation_date;
4678       END IF;
4679       IF (x_tqlv_rec.last_updated_by = OKC_API.G_MISS_NUM)
4680       THEN
4681         x_tqlv_rec.last_updated_by := l_tqlv_rec.last_updated_by;
4682       END IF;
4683       IF (x_tqlv_rec.last_update_date = OKC_API.G_MISS_DATE)
4684       THEN
4685         x_tqlv_rec.last_update_date := l_tqlv_rec.last_update_date;
4686       END IF;
4687       IF (x_tqlv_rec.last_update_login = OKC_API.G_MISS_NUM)
4688       THEN
4689         x_tqlv_rec.last_update_login := l_tqlv_rec.last_update_login;
4690       END IF;
4691       IF (x_tqlv_rec.start_date = OKC_API.G_MISS_DATE)
4692       THEN
4693         x_tqlv_rec.start_date := l_tqlv_rec.start_date;
4694       END IF;
4695       IF (x_tqlv_rec.period = OKC_API.G_MISS_CHAR)
4696       THEN
4697         x_tqlv_rec.period := l_tqlv_rec.period;
4698       END IF;
4699       IF (x_tqlv_rec.number_of_periods = OKC_API.G_MISS_NUM)
4700       THEN
4701         x_tqlv_rec.number_of_periods := l_tqlv_rec.number_of_periods;
4702       END IF;
4703       IF (x_tqlv_rec.lock_level_step = OKC_API.G_MISS_CHAR)
4704       THEN
4705         x_tqlv_rec.lock_level_step := l_tqlv_rec.lock_level_step;
4706       END IF;
4707       IF (x_tqlv_rec.advance_or_arrears = OKC_API.G_MISS_CHAR)
4708       THEN
4709         x_tqlv_rec.advance_or_arrears := l_tqlv_rec.advance_or_arrears;
4710       END IF;
4711       IF (x_tqlv_rec.yield_name = OKC_API.G_MISS_CHAR)
4712       THEN
4713         x_tqlv_rec.yield_name := l_tqlv_rec.yield_name;
4714       END IF;
4715       IF (x_tqlv_rec.yield_value = OKC_API.G_MISS_NUM)
4716       THEN
4717         x_tqlv_rec.yield_value := l_tqlv_rec.yield_value;
4718       END IF;
4719       IF (x_tqlv_rec.implicit_interest_rate = OKC_API.G_MISS_NUM)
4720       THEN
4721         x_tqlv_rec.implicit_interest_rate := l_tqlv_rec.implicit_interest_rate;
4722       END IF;
4723       IF (x_tqlv_rec.asset_value = OKC_API.G_MISS_NUM)
4724       THEN
4725         x_tqlv_rec.asset_value := l_tqlv_rec.asset_value;
4726       END IF;
4727       IF (x_tqlv_rec.residual_value = OKC_API.G_MISS_NUM)
4728       THEN
4729         x_tqlv_rec.residual_value := l_tqlv_rec.residual_value;
4730       END IF;
4731       IF (x_tqlv_rec.unbilled_receivables = OKC_API.G_MISS_NUM)
4732       THEN
4733         x_tqlv_rec.unbilled_receivables := l_tqlv_rec.unbilled_receivables;
4734       END IF;
4735       IF (x_tqlv_rec.asset_quantity = OKC_API.G_MISS_NUM)
4736       THEN
4737         x_tqlv_rec.asset_quantity := l_tqlv_rec.asset_quantity;
4738       END IF;
4739       IF (x_tqlv_rec.quote_quantity = OKC_API.G_MISS_NUM)
4740       THEN
4741         x_tqlv_rec.quote_quantity := l_tqlv_rec.quote_quantity;
4742       END IF;
4743       IF (x_tqlv_rec.split_kle_id = OKC_API.G_MISS_NUM)
4744       THEN
4745         x_tqlv_rec.split_kle_id := l_tqlv_rec.split_kle_id;
4746       END IF;
4747       -- RMUNJULU 2757312
4748       IF (x_tqlv_rec.split_kle_name = OKC_API.G_MISS_CHAR)
4749       THEN
4750         x_tqlv_rec.split_kle_name := l_tqlv_rec.split_kle_name;
4751       END IF;
4752   -- BAKUCHIB 2667636 Start
4753      IF (x_tqlv_rec.currency_code = OKC_API.G_MISS_CHAR)
4754       THEN
4755         x_tqlv_rec.currency_code := l_tqlv_rec.currency_code;
4756       END IF;
4757       IF (x_tqlv_rec.currency_conversion_code = OKC_API.G_MISS_CHAR)
4758       THEN
4759         x_tqlv_rec.currency_conversion_code := l_tqlv_rec.currency_conversion_code;
4760       END IF;
4761       IF (x_tqlv_rec.currency_conversion_type = OKC_API.G_MISS_CHAR)
4762       THEN
4763         x_tqlv_rec.currency_conversion_type := l_tqlv_rec.currency_conversion_type;
4764       END IF;
4765       IF (x_tqlv_rec.currency_conversion_rate = OKC_API.G_MISS_NUM)
4766       THEN
4767         x_tqlv_rec.currency_conversion_rate := l_tqlv_rec.currency_conversion_rate;
4768       END IF;
4769       IF (x_tqlv_rec.currency_conversion_date = OKC_API.G_MISS_DATE)
4770       THEN
4771         x_tqlv_rec.currency_conversion_date := l_tqlv_rec.currency_conversion_date;
4772       END IF;
4773   -- BAKUCHIB 2667636 End
4774       -- PAGARG Bug 4161133 start
4775       -- Populate new column due_date
4776       IF (x_tqlv_rec.due_date = OKL_API.G_MISS_DATE)
4777       THEN
4778         x_tqlv_rec.due_date := l_tqlv_rec.due_date;
4779       END IF;
4780       -- PAGARG Bug 4161133 end
4781       -- rmunjulu Sales_Tax_Enhancement
4782       IF (x_tqlv_rec.try_id = OKL_API.G_MISS_NUM)
4783       THEN
4784         x_tqlv_rec.try_id := l_tqlv_rec.try_id;
4785       END IF;
4786       RETURN(l_return_status);
4787     END populate_new_record;
4788     ----------------------------------------------
4789     -- Set_Attributes for:OKL_TXL_QUOTE_LINES_V --
4790     ----------------------------------------------
4791     FUNCTION Set_Attributes (
4792       p_tqlv_rec IN  tqlv_rec_type,
4793       x_tqlv_rec OUT NOCOPY tqlv_rec_type
4794     ) RETURN VARCHAR2 IS
4795       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4796     BEGIN
4797       x_tqlv_rec := p_tqlv_rec;
4798       x_tqlv_rec.OBJECT_VERSION_NUMBER := NVL(x_tqlv_rec.OBJECT_VERSION_NUMBER, 0) + 1;
4799       -- Default the YN columns if value not passed
4800       IF p_tqlv_rec.defaulted_yn IS NULL
4801       OR p_tqlv_rec.defaulted_yn = OKC_API.G_MISS_CHAR THEN
4802         x_tqlv_rec.defaulted_yn := 'N';
4803       END IF;
4804 
4805       RETURN(l_return_status);
4806     END Set_Attributes;
4807   BEGIN
4808     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
4809                                               G_PKG_NAME,
4810                                               p_init_msg_list,
4811                                               l_api_version,
4812                                               p_api_version,
4813                                               '_PVT',
4814                                               x_return_status);
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     --- Setting item attributes
4821     l_return_status := Set_Attributes(
4822       p_tqlv_rec,                        -- IN
4823       l_tqlv_rec);                       -- OUT
4824     --- If any errors happen abort API
4825     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4826       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4827     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4828       RAISE OKC_API.G_EXCEPTION_ERROR;
4829     END IF;
4830     l_return_status := populate_new_record(l_tqlv_rec, l_def_tqlv_rec);
4831     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4832       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4833     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4834       RAISE OKC_API.G_EXCEPTION_ERROR;
4835     END IF;
4836     l_def_tqlv_rec := fill_who_columns(l_def_tqlv_rec);
4837     --- Validate all non-missing attributes (Item Level Validation)
4838     l_return_status := Validate_Attributes(l_def_tqlv_rec);
4839     --- If any errors happen abort API
4840     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4841       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4842     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4843       RAISE OKC_API.G_EXCEPTION_ERROR;
4844     END IF;
4845     l_return_status := Validate_Record(l_def_tqlv_rec);
4846     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4847       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4848     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4849       RAISE OKC_API.G_EXCEPTION_ERROR;
4850     END IF;
4851 
4852 
4853     -- RMUNJULU 09-MAY-03 2949544 Added code to round
4854     -- the amount field before saving to table
4855     OKL_ACCOUNTING_UTIL.cross_currency_round_amount
4856               (p_api_version      => p_api_version,
4857                p_init_msg_list    => p_init_msg_list,
4858                x_return_status    => l_return_status,
4859                x_msg_count        => x_msg_count,
4860                x_msg_data         => x_msg_data,
4861                p_amount           => l_def_tqlv_rec.amount,
4862                p_currency_code    => l_def_tqlv_rec.currency_code,
4863                x_rounded_amount   => l_rounded_amount);
4864 
4865     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4866       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4867     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
4868       RAISE OKC_API.G_EXCEPTION_ERROR;
4869     END IF;
4870 
4871 
4872     l_def_tqlv_rec.amount := l_rounded_amount;
4873 
4874 
4875     --------------------------------------
4876     -- Move VIEW record to "Child" records
4877     --------------------------------------
4878     migrate(l_def_tqlv_rec, l_okl_txl_quote_lines_tl_rec);
4879     migrate(l_def_tqlv_rec, l_tql_rec);
4880     --------------------------------------------
4881     -- Call the UPDATE_ROW for each child record
4882     --------------------------------------------
4883     update_row(
4884       p_init_msg_list,
4885       x_return_status,
4886       x_msg_count,
4887       x_msg_data,
4888       l_okl_txl_quote_lines_tl_rec,
4889       lx_okl_txl_quote_lines_tl_rec
4890     );
4891     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4892       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4893     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4894       RAISE OKC_API.G_EXCEPTION_ERROR;
4895     END IF;
4896     migrate(lx_okl_txl_quote_lines_tl_rec, l_def_tqlv_rec);
4897     update_row(
4898       p_init_msg_list,
4899       x_return_status,
4900       x_msg_count,
4901       x_msg_data,
4902       l_tql_rec,
4903       lx_tql_rec
4904     );
4905     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4906       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4907     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4908       RAISE OKC_API.G_EXCEPTION_ERROR;
4909     END IF;
4910     migrate(lx_tql_rec, l_def_tqlv_rec);
4911     x_tqlv_rec := l_def_tqlv_rec;
4912     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
4913   EXCEPTION
4914     WHEN OKC_API.G_EXCEPTION_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_ERROR',
4920         x_msg_count,
4921         x_msg_data,
4922         '_PVT'
4923       );
4924     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4925       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4926       (
4927         l_api_name,
4928         G_PKG_NAME,
4929         'OKC_API.G_RET_STS_UNEXP_ERROR',
4930         x_msg_count,
4931         x_msg_data,
4932         '_PVT'
4933       );
4934     WHEN OTHERS THEN
4935       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
4936       (
4937         l_api_name,
4938         G_PKG_NAME,
4939         'OTHERS',
4940         x_msg_count,
4941         x_msg_data,
4942         '_PVT'
4943       );
4944   END update_row;
4945   ----------------------------------------
4946   -- PL/SQL TBL update_row for:TQLV_TBL --
4947   ----------------------------------------
4948   PROCEDURE update_row(
4949     p_api_version                  IN NUMBER,
4950     p_init_msg_list                IN VARCHAR2,
4951     x_return_status                OUT NOCOPY VARCHAR2,
4952     x_msg_count                    OUT NOCOPY NUMBER,
4953     x_msg_data                     OUT NOCOPY VARCHAR2,
4954     p_tqlv_tbl                     IN tqlv_tbl_type,
4955     x_tqlv_tbl                     OUT NOCOPY tqlv_tbl_type) IS
4956 
4957     l_api_version                 CONSTANT NUMBER := 1;
4958     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_update_row';
4959     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
4960     i                              NUMBER := 0;
4961     -- Begin Post-Generation Change
4962     -- overall error status
4963     l_overall_status               VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
4964     -- End Post-Generation Change
4965   BEGIN
4966     OKC_API.init_msg_list(p_init_msg_list);
4967     -- Make sure PL/SQL table has records in it before passing
4968     IF (p_tqlv_tbl.COUNT > 0) THEN
4969       i := p_tqlv_tbl.FIRST;
4970       LOOP
4971         update_row (
4972           p_api_version                  => p_api_version,
4973           p_init_msg_list                => OKC_API.G_FALSE,
4974           x_return_status                => x_return_status,
4975           x_msg_count                    => x_msg_count,
4976           x_msg_data                     => x_msg_data,
4977           p_tqlv_rec                     => p_tqlv_tbl(i),
4978           x_tqlv_rec                     => x_tqlv_tbl(i));
4979         -- Begin Post-Generation Change
4980         -- store the highest degree of error
4981         IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
4982            IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
4983               l_overall_status := x_return_status;
4984            END IF;
4985         END IF;
4986         -- End Post-Generation Change
4987         EXIT WHEN (i = p_tqlv_tbl.LAST);
4988         i := p_tqlv_tbl.NEXT(i);
4989       END LOOP;
4990       -- Begin Post-Generation Change
4991       -- return overall status
4992       x_return_status := l_overall_status;
4993       -- End Post-Generation Change
4994     END IF;
4995   EXCEPTION
4996     WHEN OKC_API.G_EXCEPTION_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_ERROR',
5002         x_msg_count,
5003         x_msg_data,
5004         '_PVT'
5005       );
5006     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5007       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5008       (
5009         l_api_name,
5010         G_PKG_NAME,
5011         'OKC_API.G_RET_STS_UNEXP_ERROR',
5012         x_msg_count,
5013         x_msg_data,
5014         '_PVT'
5015       );
5016     WHEN OTHERS THEN
5017       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5018       (
5019         l_api_name,
5020         G_PKG_NAME,
5021         'OTHERS',
5022         x_msg_count,
5023         x_msg_data,
5024         '_PVT'
5025       );
5026   END update_row;
5027 
5028   ---------------------------------------------------------------------------
5029   -- PROCEDURE delete_row
5030   ---------------------------------------------------------------------------
5031   ------------------------------------------
5032   -- delete_row for:OKL_TXL_QUOTE_LINES_B --
5033   ------------------------------------------
5034   PROCEDURE delete_row(
5035     p_init_msg_list                IN VARCHAR2,
5036     x_return_status                OUT NOCOPY VARCHAR2,
5037     x_msg_count                    OUT NOCOPY NUMBER,
5038     x_msg_data                     OUT NOCOPY VARCHAR2,
5039     p_tql_rec                      IN tql_rec_type) IS
5040 
5041     l_api_version                 CONSTANT NUMBER := 1;
5042     l_api_name                     CONSTANT VARCHAR2(30) := 'B_delete_row';
5043     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5044     l_tql_rec                      tql_rec_type:= p_tql_rec;
5045     l_row_notfound                 BOOLEAN := TRUE;
5046   BEGIN
5047     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
5048                                               p_init_msg_list,
5049                                               '_PVT',
5050                                               x_return_status);
5051     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5052       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5053     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5054       RAISE OKC_API.G_EXCEPTION_ERROR;
5055     END IF;
5056     DELETE FROM OKL_TXL_QUOTE_LINES_B
5057      WHERE ID = l_tql_rec.id;
5058 
5059     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5060   EXCEPTION
5061     WHEN OKC_API.G_EXCEPTION_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_ERROR',
5067         x_msg_count,
5068         x_msg_data,
5069         '_PVT'
5070       );
5071     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5072       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5073       (
5074         l_api_name,
5075         G_PKG_NAME,
5076         'OKC_API.G_RET_STS_UNEXP_ERROR',
5077         x_msg_count,
5078         x_msg_data,
5079         '_PVT'
5080       );
5081     WHEN OTHERS THEN
5082       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5083       (
5084         l_api_name,
5085         G_PKG_NAME,
5086         'OTHERS',
5087         x_msg_count,
5088         x_msg_data,
5089         '_PVT'
5090       );
5091   END delete_row;
5092   -------------------------------------------
5093   -- delete_row for:OKL_TXL_QUOTE_LINES_TL --
5094   -------------------------------------------
5095   PROCEDURE delete_row(
5096     p_init_msg_list                IN VARCHAR2,
5097     x_return_status                OUT NOCOPY VARCHAR2,
5098     x_msg_count                    OUT NOCOPY NUMBER,
5099     x_msg_data                     OUT NOCOPY VARCHAR2,
5100     p_okl_txl_quote_lines_tl_rec   IN OklTxlQuoteLinesTlRecType) IS
5101 
5102     l_api_version                 CONSTANT NUMBER := 1;
5103     l_api_name                     CONSTANT VARCHAR2(30) := 'TL_delete_row';
5104     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5105     l_okl_txl_quote_lines_tl_rec   OklTxlQuoteLinesTlRecType:= p_okl_txl_quote_lines_tl_rec;
5106     l_row_notfound                 BOOLEAN := TRUE;
5107     -----------------------------------------------
5108     -- Set_Attributes for:OKL_TXL_QUOTE_LINES_TL --
5109     -----------------------------------------------
5110     FUNCTION Set_Attributes (
5111       p_okl_txl_quote_lines_tl_rec IN  OklTxlQuoteLinesTlRecType,
5112       x_okl_txl_quote_lines_tl_rec OUT NOCOPY OklTxlQuoteLinesTlRecType
5113     ) RETURN VARCHAR2 IS
5114       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5115     BEGIN
5116       x_okl_txl_quote_lines_tl_rec := p_okl_txl_quote_lines_tl_rec;
5117       x_okl_txl_quote_lines_tl_rec.LANGUAGE := USERENV('LANG');
5118       RETURN(l_return_status);
5119     END Set_Attributes;
5120   BEGIN
5121     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
5122                                               p_init_msg_list,
5123                                               '_PVT',
5124                                               x_return_status);
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     --- Setting item attributes
5131     l_return_status := Set_Attributes(
5132       p_okl_txl_quote_lines_tl_rec,      -- IN
5133       l_okl_txl_quote_lines_tl_rec);     -- OUT
5134     --- If any errors happen abort API
5135     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5136       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5137     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5138       RAISE OKC_API.G_EXCEPTION_ERROR;
5139     END IF;
5140     DELETE FROM OKL_TXL_QUOTE_LINES_TL
5141      WHERE ID = l_okl_txl_quote_lines_tl_rec.id;
5142 
5143     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5144   EXCEPTION
5145     WHEN OKC_API.G_EXCEPTION_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_ERROR',
5151         x_msg_count,
5152         x_msg_data,
5153         '_PVT'
5154       );
5155     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5156       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5157       (
5158         l_api_name,
5159         G_PKG_NAME,
5160         'OKC_API.G_RET_STS_UNEXP_ERROR',
5161         x_msg_count,
5162         x_msg_data,
5163         '_PVT'
5164       );
5165     WHEN OTHERS THEN
5166       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5167       (
5168         l_api_name,
5169         G_PKG_NAME,
5170         'OTHERS',
5171         x_msg_count,
5172         x_msg_data,
5173         '_PVT'
5174       );
5175   END delete_row;
5176   ------------------------------------------
5177   -- delete_row for:OKL_TXL_QUOTE_LINES_V --
5178   ------------------------------------------
5179   PROCEDURE delete_row(
5180     p_api_version                  IN NUMBER,
5181     p_init_msg_list                IN VARCHAR2,
5182     x_return_status                OUT NOCOPY VARCHAR2,
5183     x_msg_count                    OUT NOCOPY NUMBER,
5184     x_msg_data                     OUT NOCOPY VARCHAR2,
5185     p_tqlv_rec                     IN tqlv_rec_type) IS
5186 
5187     l_api_version                 CONSTANT NUMBER := 1;
5188     l_api_name                     CONSTANT VARCHAR2(30) := 'V_delete_row';
5189     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5190     l_tqlv_rec                     tqlv_rec_type := p_tqlv_rec;
5191     l_okl_txl_quote_lines_tl_rec   OklTxlQuoteLinesTlRecType;
5192     l_tql_rec                      tql_rec_type;
5193   BEGIN
5194     l_return_status := OKC_API.START_ACTIVITY(l_api_name,
5195                                               G_PKG_NAME,
5196                                               p_init_msg_list,
5197                                               l_api_version,
5198                                               p_api_version,
5199                                               '_PVT',
5200                                               x_return_status);
5201     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5202       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5203     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
5204       RAISE OKC_API.G_EXCEPTION_ERROR;
5205     END IF;
5206     --------------------------------------
5207     -- Move VIEW record to "Child" records
5208     --------------------------------------
5209     migrate(l_tqlv_rec, l_okl_txl_quote_lines_tl_rec);
5210     migrate(l_tqlv_rec, l_tql_rec);
5211     --------------------------------------------
5212     -- Call the DELETE_ROW for each child record
5213     --------------------------------------------
5214     delete_row(
5215       p_init_msg_list,
5216       x_return_status,
5217       x_msg_count,
5218       x_msg_data,
5219       l_okl_txl_quote_lines_tl_rec
5220     );
5221     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5222       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5223     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5224       RAISE OKC_API.G_EXCEPTION_ERROR;
5225     END IF;
5226     delete_row(
5227       p_init_msg_list,
5228       x_return_status,
5229       x_msg_count,
5230       x_msg_data,
5231       l_tql_rec
5232     );
5233     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5234       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5235     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5236       RAISE OKC_API.G_EXCEPTION_ERROR;
5237     END IF;
5238     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
5239   EXCEPTION
5240     WHEN OKC_API.G_EXCEPTION_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_ERROR',
5246         x_msg_count,
5247         x_msg_data,
5248         '_PVT'
5249       );
5250     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5251       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5252       (
5253         l_api_name,
5254         G_PKG_NAME,
5255         'OKC_API.G_RET_STS_UNEXP_ERROR',
5256         x_msg_count,
5257         x_msg_data,
5258         '_PVT'
5259       );
5260     WHEN OTHERS THEN
5261       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5262       (
5263         l_api_name,
5264         G_PKG_NAME,
5265         'OTHERS',
5266         x_msg_count,
5267         x_msg_data,
5268         '_PVT'
5269       );
5270   END delete_row;
5271   ----------------------------------------
5272   -- PL/SQL TBL delete_row for:TQLV_TBL --
5273   ----------------------------------------
5274   PROCEDURE delete_row(
5275     p_api_version                  IN NUMBER,
5276     p_init_msg_list                IN VARCHAR2,
5277     x_return_status                OUT NOCOPY VARCHAR2,
5278     x_msg_count                    OUT NOCOPY NUMBER,
5279     x_msg_data                     OUT NOCOPY VARCHAR2,
5280     p_tqlv_tbl                     IN tqlv_tbl_type) IS
5281 
5282     l_api_version                 CONSTANT NUMBER := 1;
5283     l_api_name                     CONSTANT VARCHAR2(30) := 'V_tbl_delete_row';
5284     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
5285     i                              NUMBER := 0;
5286     -- Begin Post-Generation Change
5287     -- overall error status
5288     l_overall_status               VARCHAR2(1) := OKL_API.G_RET_STS_SUCCESS;
5289     -- End Post-Generation Change
5290   BEGIN
5291     OKC_API.init_msg_list(p_init_msg_list);
5292     -- Make sure PL/SQL table has records in it before passing
5293     IF (p_tqlv_tbl.COUNT > 0) THEN
5294       i := p_tqlv_tbl.FIRST;
5295       LOOP
5296         delete_row (
5297           p_api_version                  => p_api_version,
5298           p_init_msg_list                => OKC_API.G_FALSE,
5299           x_return_status                => x_return_status,
5300           x_msg_count                    => x_msg_count,
5301           x_msg_data                     => x_msg_data,
5302           p_tqlv_rec                     => p_tqlv_tbl(i));
5303         -- Begin Post-Generation Change
5304         -- store the highest degree of error
5305         IF x_return_status <> OKL_API.G_RET_STS_SUCCESS THEN
5306            IF l_overall_status <> OKL_API.G_RET_STS_UNEXP_ERROR THEN
5307               l_overall_status := x_return_status;
5308            END IF;
5309         END IF;
5310         -- End Post-Generation Change
5311         EXIT WHEN (i = p_tqlv_tbl.LAST);
5312         i := p_tqlv_tbl.NEXT(i);
5313       END LOOP;
5314       -- Begin Post-Generation Change
5315       -- return overall status
5316       x_return_status := l_overall_status;
5317       -- End Post-Generation Change
5318     END IF;
5319   EXCEPTION
5320     WHEN OKC_API.G_EXCEPTION_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_ERROR',
5326         x_msg_count,
5327         x_msg_data,
5328         '_PVT'
5329       );
5330     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
5331       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5332       (
5333         l_api_name,
5334         G_PKG_NAME,
5335         'OKC_API.G_RET_STS_UNEXP_ERROR',
5336         x_msg_count,
5337         x_msg_data,
5338         '_PVT'
5339       );
5340     WHEN OTHERS THEN
5341       x_return_status :=OKC_API.HANDLE_EXCEPTIONS
5342       (
5343         l_api_name,
5344         G_PKG_NAME,
5345         'OTHERS',
5346         x_msg_count,
5347         x_msg_data,
5348         '_PVT'
5349       );
5350   END delete_row;
5351 
5352 END OKL_TQL_PVT;