DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKL_TQD_PVT

Source


1 PACKAGE BODY OKL_TQD_PVT AS
2 /* $Header: OKLSTQDB.pls 120.2 2006/07/11 10:33:22 dkagrawa noship $ */
3   G_EXCEPTION_STOP_VALIDATION             EXCEPTION;
4   ---------------------------------------------------------------------------
5   -- FUNCTION get_seq_id
6   ---------------------------------------------------------------------------
7   FUNCTION get_seq_id RETURN NUMBER IS
8   BEGIN
9     RETURN(okc_p_util.raw_to_number(sys_guid()));
10   END get_seq_id;
11 
12   ---------------------------------------------------------------------------
13   -- PROCEDURE qc
14   ---------------------------------------------------------------------------
15   PROCEDURE qc IS
16   BEGIN
17     null;
18   END qc;
19 
20   ---------------------------------------------------------------------------
21   -- PROCEDURE change_version
22   ---------------------------------------------------------------------------
23   PROCEDURE change_version IS
24   BEGIN
25     null;
26   END change_version;
27 
28   ---------------------------------------------------------------------------
29   -- PROCEDURE api_copy
30   ---------------------------------------------------------------------------
31   PROCEDURE api_copy IS
32   BEGIN
33     null;
34   END api_copy;
35 
36   ---------------------------------------------------------------------------
37   -- FUNCTION get_rec for: OKL_TXD_QUOTE_LINE_DTLS_V
38   ---------------------------------------------------------------------------
39   FUNCTION get_rec (p_tqdv_rec       IN tqdv_rec_type,
40                     x_no_data_found  OUT NOCOPY BOOLEAN)
41     RETURN tqdv_rec_type IS
42 
43     CURSOR okl_tqdv_pk_csr (p_id IN NUMBER) IS
44     SELECT  ID,
45             OBJECT_VERSION_NUMBER,
46             NUMBER_OF_UNITS,
47             TQL_ID,
48             KLE_ID,
49             ORG_ID,
50             REQUEST_ID,
51             PROGRAM_APPLICATION_ID,
52             PROGRAM_ID,
53             PROGRAM_UPDATE_DATE,
54             CREATED_BY,
55             CREATION_DATE,
56             LAST_UPDATED_BY,
57             LAST_UPDATE_DATE,
58             LAST_UPDATE_LOGIN,
59             ATTRIBUTE_CATEGORY,
60             ATTRIBUTE1,
61             ATTRIBUTE2,
62             ATTRIBUTE3,
63             ATTRIBUTE4,
64             ATTRIBUTE5,
65             ATTRIBUTE6,
66             ATTRIBUTE7,
67             ATTRIBUTE8,
68             ATTRIBUTE9,
69             ATTRIBUTE10,
70             ATTRIBUTE11,
71             ATTRIBUTE12,
72             ATTRIBUTE13,
73             ATTRIBUTE14,
74             ATTRIBUTE15
75       FROM OKL_TXD_QUOTE_LINE_DTLS
76      WHERE OKL_TXD_QUOTE_LINE_DTLS.id = p_id;
77     l_okl_tqdv_pk                  okl_tqdv_pk_csr%ROWTYPE;
78     l_tqdv_rec                     tqdv_rec_type;
79   BEGIN
80     x_no_data_found := TRUE;
81     -- Get current database values
82     OPEN okl_tqdv_pk_csr (p_tqdv_rec.id);
83     FETCH okl_tqdv_pk_csr INTO
84               l_tqdv_rec.id,
85               l_tqdv_rec.object_version_number,
86               l_tqdv_rec.number_of_units,
87               l_tqdv_rec.tql_id,
88               l_tqdv_rec.kle_id,
89               l_tqdv_rec.org_id,
90               l_tqdv_rec.request_id,
91               l_tqdv_rec.program_application_id,
92               l_tqdv_rec.program_id,
93               l_tqdv_rec.program_update_date,
94               l_tqdv_rec.created_by,
95               l_tqdv_rec.creation_date,
96               l_tqdv_rec.last_updated_by,
97               l_tqdv_rec.last_update_date,
98               l_tqdv_rec.last_update_login,
99               l_tqdv_rec.attribute_category,
100               l_tqdv_rec.attribute1,
101               l_tqdv_rec.attribute2,
102               l_tqdv_rec.attribute3,
103               l_tqdv_rec.attribute4,
104               l_tqdv_rec.attribute5,
105               l_tqdv_rec.attribute6,
106               l_tqdv_rec.attribute7,
107               l_tqdv_rec.attribute8,
108               l_tqdv_rec.attribute9,
109               l_tqdv_rec.attribute10,
110               l_tqdv_rec.attribute11,
111               l_tqdv_rec.attribute12,
112               l_tqdv_rec.attribute13,
113               l_tqdv_rec.attribute14,
114               l_tqdv_rec.attribute15;
115     x_no_data_found := okl_tqdv_pk_csr%NOTFOUND;
116     CLOSE okl_tqdv_pk_csr;
117     RETURN(l_tqdv_rec);
118   END get_rec;
119 
120   ------------------------------------------------------------------
121   -- This version of get_rec sets error messages if no data found --
122   ------------------------------------------------------------------
123   FUNCTION get_rec (p_tqdv_rec       IN tqdv_rec_type,
124                     x_return_status  OUT NOCOPY VARCHAR2)
125     RETURN tqdv_rec_type IS
126     l_tqdv_rec                     tqdv_rec_type;
127     l_row_notfound                 BOOLEAN := TRUE;
128   BEGIN
129     x_return_status := OKC_API.G_RET_STS_SUCCESS;
130     l_tqdv_rec := get_rec(p_tqdv_rec, l_row_notfound);
131     IF (l_row_notfound) THEN
132       OKC_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'ID');
133       x_return_status := OKC_API.G_RET_STS_ERROR;
134     END IF;
135     RETURN(l_tqdv_rec);
136   END get_rec;
137   -----------------------------------------------------------
138   -- So we don't have to pass an "l_row_notfound" variable --
139   -----------------------------------------------------------
140   FUNCTION get_rec (p_tqdv_rec  IN tqdv_rec_type)
141     RETURN tqdv_rec_type IS
142     l_row_not_found                BOOLEAN := TRUE;
143   BEGIN
144     RETURN(get_rec(p_tqdv_rec, l_row_not_found));
145   END get_rec;
146   ---------------------------------------------------------------------------
147   -- FUNCTION get_rec for: OKL_TXD_QUOTE_LINE_DTLS
148   ---------------------------------------------------------------------------
149   FUNCTION get_rec (p_tqd_rec        IN tqd_rec_type,
150                     x_no_data_found  OUT NOCOPY BOOLEAN)
151     RETURN tqd_rec_type IS
152     CURSOR okl_txd_quote_line_dtls_pk_csr (p_id IN NUMBER) IS
153     SELECT  ID,
154             OBJECT_VERSION_NUMBER,
155             NUMBER_OF_UNITS,
156             KLE_ID,
157             TQL_ID,
158             ORG_ID,
159             REQUEST_ID,
160             PROGRAM_APPLICATION_ID,
161             PROGRAM_ID,
162             PROGRAM_UPDATE_DATE,
163             CREATED_BY,
164             CREATION_DATE,
165             LAST_UPDATED_BY,
166             LAST_UPDATE_DATE,
167             LAST_UPDATE_LOGIN,
168             ATTRIBUTE_CATEGORY,
169             ATTRIBUTE1,
170             ATTRIBUTE2,
171             ATTRIBUTE3,
172             ATTRIBUTE4,
173             ATTRIBUTE5,
174             ATTRIBUTE6,
175             ATTRIBUTE7,
176             ATTRIBUTE8,
177             ATTRIBUTE9,
178             ATTRIBUTE10,
179             ATTRIBUTE11,
180             ATTRIBUTE12,
181             ATTRIBUTE13,
182             ATTRIBUTE14,
183             ATTRIBUTE15
184       FROM Okl_Txd_Quote_Line_Dtls
185      WHERE okl_txd_quote_line_dtls.id = p_id;
186     l_okl_txd_quote_line_dtls_pk   okl_txd_quote_line_dtls_pk_csr%ROWTYPE;
187     l_tqd_rec                      tqd_rec_type;
188   BEGIN
189     x_no_data_found := TRUE;
190     -- Get current database values
191     OPEN okl_txd_quote_line_dtls_pk_csr (p_tqd_rec.id);
192     FETCH okl_txd_quote_line_dtls_pk_csr INTO
193               l_tqd_rec.id,
194               l_tqd_rec.object_version_number,
195               l_tqd_rec.number_of_units,
196               l_tqd_rec.kle_id,
197               l_tqd_rec.tql_id,
198               l_tqd_rec.org_id,
199               l_tqd_rec.request_id,
200               l_tqd_rec.program_application_id,
201               l_tqd_rec.program_id,
202               l_tqd_rec.program_update_date,
203               l_tqd_rec.created_by,
204               l_tqd_rec.creation_date,
205               l_tqd_rec.last_updated_by,
206               l_tqd_rec.last_update_date,
207               l_tqd_rec.last_update_login,
208               l_tqd_rec.attribute_category,
209               l_tqd_rec.attribute1,
210               l_tqd_rec.attribute2,
211               l_tqd_rec.attribute3,
212               l_tqd_rec.attribute4,
213               l_tqd_rec.attribute5,
214               l_tqd_rec.attribute6,
215               l_tqd_rec.attribute7,
216               l_tqd_rec.attribute8,
217               l_tqd_rec.attribute9,
218               l_tqd_rec.attribute10,
219               l_tqd_rec.attribute11,
220               l_tqd_rec.attribute12,
221               l_tqd_rec.attribute13,
222               l_tqd_rec.attribute14,
223               l_tqd_rec.attribute15;
224     x_no_data_found := okl_txd_quote_line_dtls_pk_csr%NOTFOUND;
225     CLOSE okl_txd_quote_line_dtls_pk_csr;
226     RETURN(l_tqd_rec);
227   END get_rec;
228 
229   ------------------------------------------------------------------
230   -- This version of get_rec sets error messages if no data found --
231   ------------------------------------------------------------------
232   FUNCTION get_rec (p_tqd_rec        IN tqd_rec_type,
233                     x_return_status  OUT NOCOPY VARCHAR2)
234     RETURN tqd_rec_type IS
235     l_tqd_rec                      tqd_rec_type;
236     l_row_notfound                 BOOLEAN := TRUE;
237   BEGIN
238     x_return_status := OKC_API.G_RET_STS_SUCCESS;
239     l_tqd_rec := get_rec(p_tqd_rec, l_row_notfound);
240     IF (l_row_notfound) THEN
241       OKC_API.set_message(G_APP_NAME,G_INVALID_VALUE,G_COL_NAME_TOKEN,'ID');
242       x_return_status := OKC_API.G_RET_STS_ERROR;
243     END IF;
244     RETURN(l_tqd_rec);
245   END get_rec;
246   -----------------------------------------------------------
247   -- So we don't have to pass an "l_row_notfound" variable --
248   -----------------------------------------------------------
249   FUNCTION get_rec (p_tqd_rec  IN tqd_rec_type)
250     RETURN tqd_rec_type IS
251     l_row_not_found                BOOLEAN := TRUE;
252   BEGIN
253     RETURN(get_rec(p_tqd_rec, l_row_not_found));
254   END get_rec;
255   ---------------------------------------------------------------------------
256   -- FUNCTION null_out_defaults for: OKL_TXD_QUOTE_LINE_DTLS_V
257   ---------------------------------------------------------------------------
258   FUNCTION null_out_defaults (p_tqdv_rec   IN tqdv_rec_type)
259     RETURN tqdv_rec_type IS
260     l_tqdv_rec                     tqdv_rec_type := p_tqdv_rec;
261   BEGIN
262     IF (l_tqdv_rec.id = OKC_API.G_MISS_NUM ) THEN
263       l_tqdv_rec.id := NULL;
264     END IF;
265     IF (l_tqdv_rec.object_version_number = OKC_API.G_MISS_NUM ) THEN
266       l_tqdv_rec.object_version_number := NULL;
267     END IF;
268     IF (l_tqdv_rec.number_of_units = OKC_API.G_MISS_NUM ) THEN
269       l_tqdv_rec.number_of_units := NULL;
270     END IF;
271     IF (l_tqdv_rec.tql_id = OKC_API.G_MISS_NUM ) THEN
272       l_tqdv_rec.tql_id := NULL;
273     END IF;
274     IF (l_tqdv_rec.kle_id = OKC_API.G_MISS_NUM ) THEN
275       l_tqdv_rec.kle_id := NULL;
276     END IF;
277     IF (l_tqdv_rec.org_id = OKC_API.G_MISS_NUM ) THEN
278       l_tqdv_rec.org_id := NULL;
279     END IF;
280     IF (l_tqdv_rec.request_id = OKC_API.G_MISS_NUM ) THEN
281       l_tqdv_rec.request_id := NULL;
282     END IF;
283     IF (l_tqdv_rec.program_application_id = OKC_API.G_MISS_NUM ) THEN
284       l_tqdv_rec.program_application_id := NULL;
285     END IF;
286     IF (l_tqdv_rec.program_id = OKC_API.G_MISS_NUM ) THEN
287       l_tqdv_rec.program_id := NULL;
288     END IF;
289     IF (l_tqdv_rec.program_update_date = OKC_API.G_MISS_DATE ) THEN
290       l_tqdv_rec.program_update_date := NULL;
291     END IF;
292     IF (l_tqdv_rec.created_by = OKC_API.G_MISS_NUM ) THEN
293       l_tqdv_rec.created_by := NULL;
294     END IF;
295     IF (l_tqdv_rec.creation_date = OKC_API.G_MISS_DATE ) THEN
296       l_tqdv_rec.creation_date := NULL;
297     END IF;
298     IF (l_tqdv_rec.last_updated_by = OKC_API.G_MISS_NUM ) THEN
299       l_tqdv_rec.last_updated_by := NULL;
300     END IF;
301     IF (l_tqdv_rec.last_update_date = OKC_API.G_MISS_DATE ) THEN
302       l_tqdv_rec.last_update_date := NULL;
303     END IF;
304     IF (l_tqdv_rec.last_update_login = OKC_API.G_MISS_NUM ) THEN
305       l_tqdv_rec.last_update_login := NULL;
306     END IF;
307     IF (l_tqdv_rec.attribute_category = OKC_API.G_MISS_CHAR ) THEN
308       l_tqdv_rec.attribute_category := NULL;
309     END IF;
310     IF (l_tqdv_rec.attribute1 = OKC_API.G_MISS_CHAR ) THEN
311       l_tqdv_rec.attribute1 := NULL;
312     END IF;
313     IF (l_tqdv_rec.attribute2 = OKC_API.G_MISS_CHAR ) THEN
314       l_tqdv_rec.attribute2 := NULL;
315     END IF;
316     IF (l_tqdv_rec.attribute3 = OKC_API.G_MISS_CHAR ) THEN
317       l_tqdv_rec.attribute3 := NULL;
318     END IF;
319     IF (l_tqdv_rec.attribute4 = OKC_API.G_MISS_CHAR ) THEN
320       l_tqdv_rec.attribute4 := NULL;
321     END IF;
322     IF (l_tqdv_rec.attribute5 = OKC_API.G_MISS_CHAR ) THEN
323       l_tqdv_rec.attribute5 := NULL;
324     END IF;
325     IF (l_tqdv_rec.attribute6 = OKC_API.G_MISS_CHAR ) THEN
326       l_tqdv_rec.attribute6 := NULL;
330     END IF;
327     END IF;
328     IF (l_tqdv_rec.attribute7 = OKC_API.G_MISS_CHAR ) THEN
329       l_tqdv_rec.attribute7 := NULL;
331     IF (l_tqdv_rec.attribute8 = OKC_API.G_MISS_CHAR ) THEN
332       l_tqdv_rec.attribute8 := NULL;
333     END IF;
334     IF (l_tqdv_rec.attribute9 = OKC_API.G_MISS_CHAR ) THEN
335       l_tqdv_rec.attribute9 := NULL;
336     END IF;
337     IF (l_tqdv_rec.attribute10 = OKC_API.G_MISS_CHAR ) THEN
338       l_tqdv_rec.attribute10 := NULL;
339     END IF;
340     IF (l_tqdv_rec.attribute11 = OKC_API.G_MISS_CHAR ) THEN
341       l_tqdv_rec.attribute11 := NULL;
342     END IF;
343     IF (l_tqdv_rec.attribute12 = OKC_API.G_MISS_CHAR ) THEN
344       l_tqdv_rec.attribute12 := NULL;
345     END IF;
346     IF (l_tqdv_rec.attribute13 = OKC_API.G_MISS_CHAR ) THEN
347       l_tqdv_rec.attribute13 := NULL;
348     END IF;
349     IF (l_tqdv_rec.attribute14 = OKC_API.G_MISS_CHAR ) THEN
350       l_tqdv_rec.attribute14 := NULL;
351     END IF;
352     IF (l_tqdv_rec.attribute15 = OKC_API.G_MISS_CHAR ) THEN
353       l_tqdv_rec.attribute15 := NULL;
354     END IF;
355     RETURN(l_tqdv_rec);
356   END null_out_defaults;
357   ---------------------------------
358   -- Validate_Attributes for: ID --
359   ---------------------------------
360   PROCEDURE validate_id(x_return_status  OUT NOCOPY VARCHAR2,
361                         p_id             IN NUMBER) IS
362   BEGIN
363     x_return_status := OKC_API.G_RET_STS_SUCCESS;
364     IF (p_id = OKC_API.G_MISS_NUM OR
365        p_id IS NULL) THEN
366       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'id');
367       x_return_status := OKC_API.G_RET_STS_ERROR;
368       RAISE G_EXCEPTION_HALT_VALIDATION;
369     END IF;
370   EXCEPTION
371     WHEN G_EXCEPTION_HALT_VALIDATION THEN
372       null;
373     WHEN OTHERS THEN
374       OKC_API.SET_MESSAGE( p_app_name     => G_APP_NAME
375                           ,p_msg_name     => G_UNEXPECTED_ERROR
376                           ,p_token1       => G_SQLCODE_TOKEN
377                           ,p_token1_value => SQLCODE
378                           ,p_token2       => G_SQLERRM_TOKEN
379                           ,p_token2_value => SQLERRM);
380       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
381   END validate_id;
382   ---------------------------------
383   -- Validate_Attributes for: ORG_ID --
384   ---------------------------------
385  -- Start of comments
386   --
387   -- Procedure Name  : validate_org_id
388   -- Description     : To check for valid Org Id
389   -- Business Rules  :
390   -- Parameters      :
391   -- Version         : 1.0
392   -- End of comments
393   PROCEDURE validate_org_id(x_return_status OUT NOCOPY VARCHAR2,
394                             p_org_id IN NUMBER) IS
395 
396   BEGIN
397     -- initialize return status
398     x_return_status := OKC_API.G_RET_STS_SUCCESS;
399     IF (p_org_id IS NOT NULL OR
400        p_org_id <> OKC_API.G_MISS_NUM) THEN
401       x_return_status := OKL_UTIL.check_org_id(p_org_id => p_org_id);
402       IF (x_return_status <>  OKC_API.G_RET_STS_SUCCESS) THEN
403         OKC_API.SET_MESSAGE(p_app_name	     => G_APP_NAME,
404                             p_msg_name	     => G_INVALID_VALUE,
405                             p_token1	     => G_COL_NAME_TOKEN,
406                             p_token1_value  => 'org_id');
407         RAISE G_EXCEPTION_HALT_VALIDATION;
408       END IF;
409     END IF;
410   EXCEPTION
411     WHEN G_EXCEPTION_HALT_VALIDATION THEN
412       x_return_status := OKC_API.G_RET_STS_ERROR;
413     WHEN OTHERS THEN
414       -- store SQL error message on message stack for caller
415       OKC_API.SET_MESSAGE( p_app_name     => G_APP_NAME
416                           ,p_msg_name     => G_UNEXPECTED_ERROR
417                           ,p_token1       => G_SQLCODE_TOKEN
418                           ,p_token1_value => sqlcode
419                           ,p_token2       => G_SQLERRM_TOKEN
420                           ,p_token2_value => sqlerrm);
421       -- notify caller of an UNEXPECTED error
422       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
423   END validate_org_id;
424   -------------------------------------
425   -- Validate_Attributes for: TQL_ID --
426   -------------------------------------
427  -- Start of comments
428   --
429   -- Procedure Name  : validate_tql_id
430   -- Description     : Foreign Key validation for Okl_Txl_Quote_Lines_V
431   -- Business Rules  :
432   -- Parameters      :
433   -- Version         : 1.0
434   -- End of comments
435   PROCEDURE validate_tql_id(x_return_status  OUT NOCOPY VARCHAR2,
436                             p_tql_id         IN NUMBER) IS
437     ln_dummy            NUMBER := 0;
438 
439     CURSOR okl_tqlv_pk_csr (p_tql_id IN NUMBER) IS
440     SELECT 1
441     FROM DUAL
442     WHERE EXISTS (SELECT 'x'
443     FROM Okl_Txl_Quote_Lines_V
444     WHERE okl_txl_quote_lines_v.id = p_tql_id);
445 
446   BEGIN
447     x_return_status := OKC_API.G_RET_STS_SUCCESS;
448     IF (p_tql_id = OKC_API.G_MISS_NUM OR
449         p_tql_id IS NULL) THEN
450       OKC_API.set_message(G_APP_NAME, G_REQUIRED_VALUE, G_COL_NAME_TOKEN, 'TQL_ID');
451       x_return_status := OKC_API.G_RET_STS_ERROR;
452       RAISE G_EXCEPTION_HALT_VALIDATION;
453     END IF;
454     OPEN  okl_tqlv_pk_csr(p_tql_id => p_tql_id);
458       x_return_status := OKC_API.G_RET_STS_ERROR;
455     FETCH okl_tqlv_pk_csr INTO ln_dummy;
456     IF okl_tqlv_pk_csr%NOTFOUND THEN
457       OKC_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'TQL_ID');
459       RAISE G_EXCEPTION_STOP_VALIDATION;
460     END IF;
461     CLOSE okl_tqlv_pk_csr;
462     IF ln_dummy = 0 THEN
463       OKC_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'TQL_ID');
464       x_return_status := OKC_API.G_RET_STS_ERROR;
465       RAISE G_EXCEPTION_STOP_VALIDATION;
466     END IF;
467   EXCEPTION
468     WHEN G_EXCEPTION_STOP_VALIDATION THEN
469       null;
470     WHEN G_EXCEPTION_HALT_VALIDATION THEN
471       IF okl_tqlv_pk_csr%ISOPEN THEN
472         CLOSE okl_tqlv_pk_csr;
473       END IF;
474       null;
475     WHEN OTHERS THEN
476       IF okl_tqlv_pk_csr%ISOPEN THEN
477         CLOSE okl_tqlv_pk_csr;
478       END IF;
479       OKC_API.SET_MESSAGE( p_app_name     => G_APP_NAME
480                           ,p_msg_name     => G_UNEXPECTED_ERROR
481                           ,p_token1       => G_SQLCODE_TOKEN
482                           ,p_token1_value => SQLCODE
483                           ,p_token2       => G_SQLERRM_TOKEN
484                           ,p_token2_value => SQLERRM);
485       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
486   END validate_tql_id;
487 
488   -------------------------------------
489   -- Validate_Attributes for: KLE_ID --
490   -------------------------------------
491  -- Start of comments
492   --
493   -- Procedure Name  : validate_kle_id
494   -- Description     : Foreign Key validation for Okl_k_lines_v
495   -- Business Rules  :
496   -- Parameters      :
497   -- Version         : 1.0
498   -- End of comments
499 
500   PROCEDURE validate_kle_id(x_return_status  OUT NOCOPY VARCHAR2,
501                             p_kle_id         IN NUMBER) IS
502     ln_dummy            NUMBER := 0;
503 
504     CURSOR okl_klev_pk_csr (p_kle_id IN NUMBER) IS
505     SELECT 1
506     FROM DUAL
507     WHERE EXISTS (SELECT 'x'
508     FROM Okl_k_lines_V kle
509     WHERE kle.id = p_kle_id);
510 
511   BEGIN
512     x_return_status := OKC_API.G_RET_STS_SUCCESS;
513     IF (p_kle_id = OKC_API.G_MISS_NUM OR
514         p_kle_id IS NULL) THEN
515       RAISE G_EXCEPTION_HALT_VALIDATION;
516     END IF;
517     OPEN  okl_klev_pk_csr(p_kle_id => p_kle_id);
518     FETCH okl_klev_pk_csr INTO ln_dummy;
519     IF okl_klev_pk_csr%NOTFOUND THEN
520       OKC_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'KLE_ID');
521       x_return_status := OKC_API.G_RET_STS_ERROR;
522       RAISE G_EXCEPTION_STOP_VALIDATION;
523     END IF;
524     CLOSE okl_klev_pk_csr;
525     IF ln_dummy = 0 THEN
526       OKC_API.set_message(G_APP_NAME, G_INVALID_VALUE,G_COL_NAME_TOKEN,'KLE_ID');
527       x_return_status := OKC_API.G_RET_STS_ERROR;
528       RAISE G_EXCEPTION_STOP_VALIDATION;
529     END IF;
530   EXCEPTION
531     WHEN G_EXCEPTION_STOP_VALIDATION THEN
532       null;
533     WHEN G_EXCEPTION_HALT_VALIDATION THEN
534       IF okl_klev_pk_csr%ISOPEN THEN
535         CLOSE okl_klev_pk_csr;
536       END IF;
537       null;
538     WHEN OTHERS THEN
539       IF okl_klev_pk_csr%ISOPEN THEN
540         CLOSE okl_klev_pk_csr;
541       END IF;
542       OKC_API.SET_MESSAGE( p_app_name     => G_APP_NAME
543                           ,p_msg_name     => G_UNEXPECTED_ERROR
544                           ,p_token1       => G_SQLCODE_TOKEN
545                           ,p_token1_value => SQLCODE
546                           ,p_token2       => G_SQLERRM_TOKEN
547                           ,p_token2_value => SQLERRM);
548       x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
549   END validate_kle_id;
550   ---------------------------------------------------------------------------
551   -- FUNCTION Validate_Attributes
552   ---------------------------------------------------------------------------
553   -------------------------------------------------------
554   -- Validate_Attributes for:OKL_TXD_QUOTE_LINE_DTLS_V --
555   -------------------------------------------------------
556   FUNCTION Validate_Attributes (
557     p_tqdv_rec                     IN tqdv_rec_type
558   ) RETURN VARCHAR2 IS
559     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
560     x_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
561   BEGIN
562     -----------------------------
563     -- Column Level Validation --
564     -----------------------------
565     validate_id(x_return_status, p_tqdv_rec.id);
566     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
567       l_return_status := x_return_status;
568     END IF;
569     validate_tql_id(x_return_status, p_tqdv_rec.tql_id);
570     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
571       l_return_status := x_return_status;
572     END IF;
573     validate_org_id(x_return_status, p_tqdv_rec.org_id);
574     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
575       l_return_status := x_return_status;
576     END IF;
577     validate_kle_id(x_return_status, p_tqdv_rec.kle_id);
578     IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
579       l_return_status := x_return_status;
580     END IF;
581     IF l_return_status <> OKC_API.G_RET_STS_SUCCESS OR
585     RETURN(l_return_status);
582        x_return_status <> OKC_API.G_RET_STS_SUCCESS THEN
583       RAISE G_EXCEPTION_HALT_VALIDATION;
584     END IF;
586   EXCEPTION
587     WHEN G_EXCEPTION_HALT_VALIDATION THEN
588       RETURN(l_return_status);
589     WHEN OTHERS THEN
590       OKC_API.SET_MESSAGE( p_app_name     => G_APP_NAME
591                           ,p_msg_name     => G_UNEXPECTED_ERROR
592                           ,p_token1       => G_SQLCODE_TOKEN
593                           ,p_token1_value => SQLCODE
594                           ,p_token2       => G_SQLERRM_TOKEN
595                           ,p_token2_value => SQLERRM);
596       l_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
597       RETURN(l_return_status);
598   END Validate_Attributes;
599   ---------------------------------------------------------------------------
600   -- PROCEDURE Validate_Record
601   ---------------------------------------------------------------------------
602   ---------------------------------------------------
603   -- Validate Record for:OKL_TXD_QUOTE_LINE_DTLS_V --
604   ---------------------------------------------------
605   FUNCTION Validate_Record (p_tqdv_rec     IN tqdv_rec_type,
606                             p_db_tqdv_rec  IN tqdv_rec_type) RETURN VARCHAR2 IS
607     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
608   BEGIN
609     RETURN (l_return_status);
610   END Validate_Record;
611 
612   FUNCTION Validate_Record (
613     p_tqdv_rec IN tqdv_rec_type
614   ) RETURN VARCHAR2 IS
615     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
616     l_db_tqdv_rec                  tqdv_rec_type := get_rec(p_tqdv_rec);
617   BEGIN
618     l_return_status := Validate_Record(p_tqdv_rec => p_tqdv_rec,
619                                        p_db_tqdv_rec => l_db_tqdv_rec);
620     RETURN (l_return_status);
621   END Validate_Record;
622 
623   ---------------------------------------------------------------------------
624   -- PROCEDURE Migrate
625   ---------------------------------------------------------------------------
626   PROCEDURE migrate (p_from IN tqdv_rec_type,
627                     p_to   IN OUT NOCOPY tqd_rec_type) IS
628   BEGIN
629     p_to.id := p_from.id;
630     p_to.object_version_number := p_from.object_version_number;
631     p_to.number_of_units := p_from.number_of_units;
632     p_to.kle_id := p_from.kle_id;
633     p_to.tql_id := p_from.tql_id;
634     p_to.org_id := p_from.org_id;
635     p_to.request_id := p_from.request_id;
636     p_to.program_application_id := p_from.program_application_id;
637     p_to.program_id := p_from.program_id;
638     p_to.program_update_date := p_from.program_update_date;
639     p_to.created_by := p_from.created_by;
640     p_to.creation_date := p_from.creation_date;
641     p_to.last_updated_by := p_from.last_updated_by;
642     p_to.last_update_date := p_from.last_update_date;
643     p_to.last_update_login := p_from.last_update_login;
644     p_to.attribute_category := p_from.attribute_category;
645     p_to.attribute1 := p_from.attribute1;
646     p_to.attribute2 := p_from.attribute2;
647     p_to.attribute3 := p_from.attribute3;
648     p_to.attribute4 := p_from.attribute4;
649     p_to.attribute5 := p_from.attribute5;
650     p_to.attribute6 := p_from.attribute6;
651     p_to.attribute7 := p_from.attribute7;
652     p_to.attribute8 := p_from.attribute8;
653     p_to.attribute9 := p_from.attribute9;
654     p_to.attribute10 := p_from.attribute10;
655     p_to.attribute11 := p_from.attribute11;
656     p_to.attribute12 := p_from.attribute12;
657     p_to.attribute13 := p_from.attribute13;
658     p_to.attribute14 := p_from.attribute14;
659     p_to.attribute15 := p_from.attribute15;
660   END migrate;
661   PROCEDURE migrate (p_from IN tqd_rec_type,
662                     p_to   IN OUT NOCOPY tqdv_rec_type) IS
663   BEGIN
664     p_to.id := p_from.id;
665     p_to.object_version_number := p_from.object_version_number;
666     p_to.number_of_units := p_from.number_of_units;
667     p_to.tql_id := p_from.tql_id;
668     p_to.kle_id := p_from.kle_id;
669     p_to.org_id := p_from.org_id;
670     p_to.request_id := p_from.request_id;
671     p_to.program_application_id := p_from.program_application_id;
672     p_to.program_id := p_from.program_id;
673     p_to.program_update_date := p_from.program_update_date;
674     p_to.created_by := p_from.created_by;
675     p_to.creation_date := p_from.creation_date;
676     p_to.last_updated_by := p_from.last_updated_by;
677     p_to.last_update_date := p_from.last_update_date;
678     p_to.last_update_login := p_from.last_update_login;
679     p_to.attribute_category := p_from.attribute_category;
680     p_to.attribute1 := p_from.attribute1;
681     p_to.attribute2 := p_from.attribute2;
682     p_to.attribute3 := p_from.attribute3;
683     p_to.attribute4 := p_from.attribute4;
684     p_to.attribute5 := p_from.attribute5;
685     p_to.attribute6 := p_from.attribute6;
686     p_to.attribute7 := p_from.attribute7;
687     p_to.attribute8 := p_from.attribute8;
688     p_to.attribute9 := p_from.attribute9;
689     p_to.attribute10 := p_from.attribute10;
690     p_to.attribute11 := p_from.attribute11;
691     p_to.attribute12 := p_from.attribute12;
692     p_to.attribute13 := p_from.attribute13;
693     p_to.attribute14 := p_from.attribute14;
694     p_to.attribute15 := p_from.attribute15;
695   END migrate;
699   ------------------------------------------------
696   ---------------------------------------------------------------------------
697   -- PROCEDURE validate_row
698   ---------------------------------------------------------------------------
700   -- validate_row for:OKL_TXD_QUOTE_LINE_DTLS_V --
701   ------------------------------------------------
702   PROCEDURE validate_row(
703     p_api_version                  IN NUMBER,
704     p_init_msg_list                IN VARCHAR2,
705     x_return_status                OUT NOCOPY VARCHAR2,
706     x_msg_count                    OUT NOCOPY NUMBER,
707     x_msg_data                     OUT NOCOPY VARCHAR2,
708     p_tqdv_rec                     IN tqdv_rec_type) IS
709 
710     l_api_version                  CONSTANT NUMBER := 1;
711     l_api_name                     CONSTANT VARCHAR2(30) := 'V_validate_row';
712     l_tqdv_rec                     tqdv_rec_type := p_tqdv_rec;
713     l_tqd_rec                      tqd_rec_type;
714     l_tqd_rec                      tqd_rec_type;
715   BEGIN
716     x_return_status := OKC_API.START_ACTIVITY(l_api_name,
717                                               G_PKG_NAME,
718                                               p_init_msg_list,
719                                               l_api_version,
720                                               p_api_version,
721                                               '_PVT',
722                                               x_return_status);
723     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
724       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
725     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
726       RAISE OKC_API.G_EXCEPTION_ERROR;
727     END IF;
728     --- Validate all non-missing attributes (Item Level Validation)
729     x_return_status := Validate_Attributes(l_tqdv_rec);
730     --- If any errors happen abort API
731     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
732       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
733     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
734       RAISE OKC_API.G_EXCEPTION_ERROR;
735     END IF;
736     x_return_status := Validate_Record(l_tqdv_rec);
737     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
738       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
739     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
740       RAISE OKC_API.G_EXCEPTION_ERROR;
741     END IF;
742     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
743   EXCEPTION
744     WHEN OKC_API.G_EXCEPTION_ERROR THEN
745       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
746                                  l_api_name,
747                                  G_PKG_NAME,
748                                  'OKC_API.G_RET_STS_ERROR',
749                                  x_msg_count,
750                                  x_msg_data,
751                                  '_PVT');
752     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
753       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
754                                  l_api_name,
755                                  G_PKG_NAME,
756                                  'OKC_API.G_RET_STS_UNEXP_ERROR',
757                                  x_msg_count,
758                                  x_msg_data,
759                                  '_PVT');
760     WHEN OTHERS THEN
761       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
762                                  l_api_name,
763                                  G_PKG_NAME,
764                                  'OTHERS',
765                                  x_msg_count,
766                                  x_msg_data,
767                                  '_PVT');
768   END validate_row;
769   -----------------------------------------------------------
770   -- PL/SQL TBL validate_row for:OKL_TXD_QUOTE_LINE_DTLS_V --
771   -----------------------------------------------------------
772   PROCEDURE validate_row(
773     p_api_version                  IN NUMBER,
774     p_init_msg_list                IN VARCHAR2,
775     x_return_status                OUT NOCOPY VARCHAR2,
776     x_msg_count                    OUT NOCOPY NUMBER,
777     x_msg_data                     OUT NOCOPY VARCHAR2,
778     p_tqdv_tbl                     IN tqdv_tbl_type) IS
779 
780     l_api_version                  CONSTANT NUMBER := 1;
781     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_validate_row';
782     i                              NUMBER := 0;
783   BEGIN
784     OKC_API.init_msg_list(p_init_msg_list);
785     -- Make sure PL/SQL table has records in it before passing
786     IF (p_tqdv_tbl.COUNT > 0) THEN
787       i := p_tqdv_tbl.FIRST;
788       LOOP
789         validate_row (p_api_version    => p_api_version,
790                       p_init_msg_list  => OKC_API.G_FALSE,
791                       x_return_status  => x_return_status,
792                       x_msg_count      => x_msg_count,
793                       x_msg_data       => x_msg_data,
794                       p_tqdv_rec       => p_tqdv_tbl(i));
795         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
796           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
797         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
798           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
799         END IF;
800         EXIT WHEN (i = p_tqdv_tbl.LAST);
801         i := p_tqdv_tbl.NEXT(i);
802       END LOOP;
806         RAISE OKC_API.G_EXCEPTION_ERROR;
803       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
804         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
805       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
807       END IF;
808     END IF;
809     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
810   EXCEPTION
811     WHEN OKC_API.G_EXCEPTION_ERROR THEN
812       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
813                                  l_api_name,
814                                  G_PKG_NAME,
815                                  'OKC_API.G_RET_STS_ERROR',
816                                  x_msg_count,
817                                  x_msg_data,
818                                  '_PVT');
819     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
820       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
821                                  l_api_name,
822                                  G_PKG_NAME,
823                                  'OKC_API.G_RET_STS_UNEXP_ERROR',
824                                  x_msg_count,
825                                  x_msg_data,
826                                  '_PVT');
827     WHEN OTHERS THEN
828       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
829                                  l_api_name,
830                                  G_PKG_NAME,
831                                  'OTHERS',
832                                  x_msg_count,
833                                  x_msg_data,
834                                  '_PVT');
835   END validate_row;
836   ---------------------------------------------------------------------------
837   -- PROCEDURE insert_row
838   ---------------------------------------------------------------------------
839   --------------------------------------------
840   -- insert_row for:OKL_TXD_QUOTE_LINE_DTLS --
841   --------------------------------------------
842   PROCEDURE insert_row(
843     p_init_msg_list                IN VARCHAR2,
844     x_return_status                OUT NOCOPY VARCHAR2,
845     x_msg_count                    OUT NOCOPY NUMBER,
846     x_msg_data                     OUT NOCOPY VARCHAR2,
847     p_tqd_rec                      IN tqd_rec_type,
848     x_tqd_rec                      OUT NOCOPY tqd_rec_type) IS
849 
850     l_api_version                  CONSTANT NUMBER := 1;
851     l_api_name                     CONSTANT VARCHAR2(30) := 'B_insert_row';
852     l_tqd_rec                      tqd_rec_type := p_tqd_rec;
853     l_def_tqd_rec                  tqd_rec_type;
854     ------------------------------------------------
855     -- Set_Attributes for:OKL_TXD_QUOTE_LINE_DTLS --
856     ------------------------------------------------
857     FUNCTION Set_Attributes (p_tqd_rec IN tqd_rec_type,
858                              x_tqd_rec OUT NOCOPY tqd_rec_type) RETURN VARCHAR2 IS
859       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
860     BEGIN
861       x_tqd_rec := p_tqd_rec;
862       RETURN(l_return_status);
863     END Set_Attributes;
864   BEGIN
865     x_return_status := OKC_API.START_ACTIVITY(l_api_name,
866                                               p_init_msg_list,
867                                               '_PVT',
868                                               x_return_status);
869     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
870       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
871     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
872       RAISE OKC_API.G_EXCEPTION_ERROR;
873     END IF;
874     --- Setting item atributes
875     x_return_status := Set_Attributes(
876       p_tqd_rec,                         -- IN
877       l_tqd_rec);                        -- OUT
878     --- If any errors happen abort API
879     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
880       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
881     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
882       RAISE OKC_API.G_EXCEPTION_ERROR;
883     END IF;
884     INSERT INTO OKL_TXD_QUOTE_LINE_DTLS(
885       id,
886       object_version_number,
887       number_of_units,
888       kle_id,
889       tql_id,
890       org_id,
891       request_id,
892       program_application_id,
893       program_id,
894       program_update_date,
895       created_by,
896       creation_date,
897       last_updated_by,
898       last_update_date,
899       last_update_login,
900       attribute_category,
901       attribute1,
902       attribute2,
903       attribute3,
904       attribute4,
905       attribute5,
906       attribute6,
907       attribute7,
908       attribute8,
909       attribute9,
910       attribute10,
911       attribute11,
912       attribute12,
913       attribute13,
914       attribute14,
915       attribute15)
916     VALUES (
917       l_tqd_rec.id,
918       l_tqd_rec.object_version_number,
919       l_tqd_rec.number_of_units,
920       l_tqd_rec.kle_id,
921       l_tqd_rec.tql_id,
922       l_tqd_rec.org_id,
923       decode(FND_GLOBAL.CONC_REQUEST_ID, -1, NULL, FND_GLOBAL.CONC_REQUEST_ID),
924       decode(FND_GLOBAL.PROG_APPL_ID, -1, NULL, FND_GLOBAL.PROG_APPL_ID),
925       decode(FND_GLOBAL.CONC_PROGRAM_ID, -1, NULL, FND_GLOBAL.CONC_PROGRAM_ID),
926       decode(FND_GLOBAL.CONC_REQUEST_ID, -1, NULL, SYSDATE),
927       l_tqd_rec.created_by,
928       l_tqd_rec.creation_date,
932       l_tqd_rec.attribute_category,
929       l_tqd_rec.last_updated_by,
930       l_tqd_rec.last_update_date,
931       l_tqd_rec.last_update_login,
933       l_tqd_rec.attribute1,
934       l_tqd_rec.attribute2,
935       l_tqd_rec.attribute3,
936       l_tqd_rec.attribute4,
937       l_tqd_rec.attribute5,
938       l_tqd_rec.attribute6,
939       l_tqd_rec.attribute7,
940       l_tqd_rec.attribute8,
941       l_tqd_rec.attribute9,
942       l_tqd_rec.attribute10,
943       l_tqd_rec.attribute11,
944       l_tqd_rec.attribute12,
945       l_tqd_rec.attribute13,
946       l_tqd_rec.attribute14,
947       l_tqd_rec.attribute15);
948     -- Set OUT values
949     x_tqd_rec := l_tqd_rec;
950     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
951   EXCEPTION
952     WHEN OKC_API.G_EXCEPTION_ERROR THEN
953       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
954                                  l_api_name,
955                                  G_PKG_NAME,
956                                  'OKC_API.G_RET_STS_ERROR',
957                                  x_msg_count,
958                                  x_msg_data,
959                                  '_PVT');
960     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
961       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
962                                  l_api_name,
963                                  G_PKG_NAME,
964                                  'OKC_API.G_RET_STS_UNEXP_ERROR',
965                                  x_msg_count,
966                                  x_msg_data,
967                                  '_PVT');
968     WHEN OTHERS THEN
969       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
970                                  l_api_name,
971                                  G_PKG_NAME,
972                                  'OTHERS',
973                                  x_msg_count,
974                                  x_msg_data,
975                                  '_PVT');
976   END insert_row;
977   -----------------------------------------------
978   -- insert_row for :OKL_TXD_QUOTE_LINE_DTLS_V --
979   -----------------------------------------------
980   PROCEDURE insert_row(
981     p_api_version                  IN NUMBER,
982     p_init_msg_list                IN VARCHAR2,
983     x_return_status                OUT NOCOPY VARCHAR2,
984     x_msg_count                    OUT NOCOPY NUMBER,
985     x_msg_data                     OUT NOCOPY VARCHAR2,
986     p_tqdv_rec                     IN tqdv_rec_type,
987     x_tqdv_rec                     OUT NOCOPY tqdv_rec_type) IS
988 
989     l_api_version                  CONSTANT NUMBER := 1;
990     l_api_name                     CONSTANT VARCHAR2(30) := 'V_insert_row';
991     l_tqdv_rec                     tqdv_rec_type := p_tqdv_rec;
992     l_def_tqdv_rec                 tqdv_rec_type;
993     l_tqd_rec                      tqd_rec_type;
994     lx_tqd_rec                     tqd_rec_type;
995     -------------------------------
996     -- FUNCTION fill_who_columns --
997     -------------------------------
998     FUNCTION fill_who_columns (
999       p_tqdv_rec IN tqdv_rec_type
1000     ) RETURN tqdv_rec_type IS
1001       l_tqdv_rec tqdv_rec_type := p_tqdv_rec;
1002     BEGIN
1003       l_tqdv_rec.CREATION_DATE := SYSDATE;
1004       l_tqdv_rec.CREATED_BY := FND_GLOBAL.USER_ID;
1005       l_tqdv_rec.LAST_UPDATE_DATE := l_tqdv_rec.CREATION_DATE;
1006       l_tqdv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
1007       l_tqdv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
1008       RETURN(l_tqdv_rec);
1009     END fill_who_columns;
1010     --------------------------------------------------
1011     -- Set_Attributes for:OKL_TXD_QUOTE_LINE_DTLS_V --
1012     --------------------------------------------------
1013     FUNCTION Set_Attributes (
1014       p_tqdv_rec IN tqdv_rec_type,
1015       x_tqdv_rec OUT NOCOPY tqdv_rec_type
1016     ) RETURN VARCHAR2 IS
1017       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1018     BEGIN
1019       x_tqdv_rec := p_tqdv_rec;
1020       x_tqdv_rec.OBJECT_VERSION_NUMBER := 1;
1021       RETURN(l_return_status);
1022     END Set_Attributes;
1023   BEGIN
1024     x_return_status := OKL_API.START_ACTIVITY(l_api_name,
1025                                               G_PKG_NAME,
1026                                               p_init_msg_list,
1027                                               l_api_version,
1028                                               p_api_version,
1029                                               '_PVT',
1030                                               x_return_status);
1031     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1032       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1033     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1034       RAISE OKC_API.G_EXCEPTION_ERROR;
1035     END IF;
1036     l_tqdv_rec := null_out_defaults(p_tqdv_rec);
1037     -- Set primary key value
1038     l_tqdv_rec.ID := get_seq_id;
1039     -- Setting item attributes
1040     x_return_Status := Set_Attributes(
1041       l_tqdv_rec,                        -- IN
1042       l_def_tqdv_rec);                   -- OUT
1043     --- If any errors happen abort API
1044     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1045       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1046     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1047       RAISE OKC_API.G_EXCEPTION_ERROR;
1051     x_return_status := Validate_Attributes(l_def_tqdv_rec);
1048     END IF;
1049     l_def_tqdv_rec := fill_who_columns(l_def_tqdv_rec);
1050     --- Validate all non-missing attributes (Item Level Validation)
1052     --- If any errors happen abort API
1053     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1054       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1055     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1056       RAISE OKC_API.G_EXCEPTION_ERROR;
1057     END IF;
1058     x_return_status := Validate_Record(l_def_tqdv_rec);
1059     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1060       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1061     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1062       RAISE OKC_API.G_EXCEPTION_ERROR;
1063     END IF;
1064     -----------------------------------------
1065     -- Move VIEW record to "Child" records --
1066     -----------------------------------------
1067     migrate(l_def_tqdv_rec, l_tqd_rec);
1068     -----------------------------------------------
1069     -- Call the INSERT_ROW for each child record --
1070     -----------------------------------------------
1071     insert_row(
1072       p_init_msg_list,
1073       x_return_status,
1074       x_msg_count,
1075       x_msg_data,
1076       l_tqd_rec,
1077       lx_tqd_rec
1078     );
1079     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1080       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1081     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1082       RAISE OKC_API.G_EXCEPTION_ERROR;
1083     END IF;
1084     migrate(lx_tqd_rec, l_def_tqdv_rec);
1085     -- Set OUT values
1086     x_tqdv_rec := l_def_tqdv_rec;
1087     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1088   EXCEPTION
1089     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1090       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1091                                  l_api_name,
1092                                  G_PKG_NAME,
1093                                  'OKC_API.G_RET_STS_ERROR',
1094                                  x_msg_count,
1095                                  x_msg_data,
1096                                  '_PVT');
1097     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1098       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1099                                  l_api_name,
1100                                  G_PKG_NAME,
1101                                  'OKC_API.G_RET_STS_UNEXP_ERROR',
1102                                  x_msg_count,
1103                                  x_msg_data,
1104                                  '_PVT');
1105     WHEN OTHERS THEN
1106       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1107                                  l_api_name,
1108                                  G_PKG_NAME,
1109                                  'OTHERS',
1110                                  x_msg_count,
1111                                  x_msg_data,
1112                                  '_PVT');
1113   END insert_row;
1114   ----------------------------------------
1115   -- PL/SQL TBL insert_row for:TQDV_TBL --
1116   ----------------------------------------
1117   PROCEDURE insert_row(
1118     p_api_version                  IN NUMBER,
1119     p_init_msg_list                IN VARCHAR2,
1120     x_return_status                OUT NOCOPY VARCHAR2,
1121     x_msg_count                    OUT NOCOPY NUMBER,
1122     x_msg_data                     OUT NOCOPY VARCHAR2,
1123     p_tqdv_tbl                     IN tqdv_tbl_type,
1124     x_tqdv_tbl                     OUT NOCOPY tqdv_tbl_type) IS
1125 
1126     l_api_version                  CONSTANT NUMBER := 1;
1127     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_insert_row';
1128     i                              NUMBER := 0;
1129   BEGIN
1130     OKC_API.init_msg_list(p_init_msg_list);
1131     -- Make sure PL/SQL table has records in it before passing
1132     IF (p_tqdv_tbl.COUNT > 0) THEN
1133       i := p_tqdv_tbl.FIRST;
1134       LOOP
1135         insert_row (p_api_version    => p_api_version,
1136                     p_init_msg_list  => OKC_API.G_FALSE,
1137                     x_return_status  => x_return_status,
1138                     x_msg_count      => x_msg_count,
1139                     x_msg_data       => x_msg_data,
1140                     p_tqdv_rec       => p_tqdv_tbl(i),
1141                     x_tqdv_rec       => x_tqdv_tbl(i));
1142         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1143           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
1144         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1145           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
1146         END IF;
1147         EXIT WHEN (i = p_tqdv_tbl.LAST);
1148         i := p_tqdv_tbl.NEXT(i);
1149       END LOOP;
1150       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1151         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1152       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1153         RAISE OKC_API.G_EXCEPTION_ERROR;
1154       END IF;
1155     END IF;
1156     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1157   EXCEPTION
1158     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1159       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1160                                  l_api_name,
1161                                  G_PKG_NAME,
1162                                  'OKC_API.G_RET_STS_ERROR',
1163                                  x_msg_count,
1164                                  x_msg_data,
1168                                  l_api_name,
1165                                  '_PVT');
1166     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1167       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1169                                  G_PKG_NAME,
1170                                  'OKC_API.G_RET_STS_UNEXP_ERROR',
1171                                  x_msg_count,
1172                                  x_msg_data,
1173                                  '_PVT');
1174     WHEN OTHERS THEN
1175       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1176                                  l_api_name,
1177                                  G_PKG_NAME,
1178                                  'OTHERS',
1179                                  x_msg_count,
1180                                  x_msg_data,
1181                                  '_PVT');
1182   END insert_row;
1183   ---------------------------------------------------------------------------
1184   -- PROCEDURE lock_row
1185   ---------------------------------------------------------------------------
1186   ------------------------------------------
1187   -- lock_row for:OKL_TXD_QUOTE_LINE_DTLS --
1188   ------------------------------------------
1189   PROCEDURE lock_row(
1190     p_init_msg_list                IN VARCHAR2,
1191     x_return_status                OUT NOCOPY VARCHAR2,
1192     x_msg_count                    OUT NOCOPY NUMBER,
1193     x_msg_data                     OUT NOCOPY VARCHAR2,
1194     p_tqd_rec                      IN tqd_rec_type) IS
1195 
1196     E_Resource_Busy                EXCEPTION;
1197     PRAGMA EXCEPTION_INIT(E_Resource_Busy, -00054);
1198     CURSOR lock_csr (p_tqd_rec IN tqd_rec_type) IS
1199     SELECT OBJECT_VERSION_NUMBER
1200       FROM OKL_TXD_QUOTE_LINE_DTLS
1201      WHERE ID = p_tqd_rec.id
1202        AND OBJECT_VERSION_NUMBER = p_tqd_rec.object_version_number
1203     FOR UPDATE OF OBJECT_VERSION_NUMBER NOWAIT;
1204 
1205     CURSOR lchk_csr (p_tqd_rec IN tqd_rec_type) IS
1206     SELECT OBJECT_VERSION_NUMBER
1207       FROM OKL_TXD_QUOTE_LINE_DTLS
1208      WHERE ID = p_tqd_rec.id;
1209     l_api_version                  CONSTANT NUMBER := 1;
1210     l_api_name                     CONSTANT VARCHAR2(30) := 'B_lock_row';
1211     l_object_version_number        OKL_TXD_QUOTE_LINE_DTLS.OBJECT_VERSION_NUMBER%TYPE;
1212     lc_object_version_number       OKL_TXD_QUOTE_LINE_DTLS.OBJECT_VERSION_NUMBER%TYPE;
1213     l_row_notfound                 BOOLEAN := FALSE;
1214     lc_row_notfound                BOOLEAN := FALSE;
1215   BEGIN
1216     x_return_status := OKC_API.START_ACTIVITY(l_api_name,
1217                                               p_init_msg_list,
1218                                               '_PVT',
1219                                               x_return_status);
1220     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1221       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1222     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1223       RAISE OKC_API.G_EXCEPTION_ERROR;
1224     END IF;
1225     BEGIN
1226       OPEN lock_csr(p_tqd_rec);
1227       FETCH lock_csr INTO l_object_version_number;
1228       l_row_notfound := lock_csr%NOTFOUND;
1229       CLOSE lock_csr;
1230     EXCEPTION
1231       WHEN E_Resource_Busy THEN
1232         IF (lock_csr%ISOPEN) THEN
1233           CLOSE lock_csr;
1234         END IF;
1235         OKC_API.set_message(G_FND_APP,G_FORM_UNABLE_TO_RESERVE_REC);
1236         RAISE APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION;
1237     END;
1238 
1239     IF ( l_row_notfound ) THEN
1240       OPEN lchk_csr(p_tqd_rec);
1241       FETCH lchk_csr INTO lc_object_version_number;
1242       lc_row_notfound := lchk_csr%NOTFOUND;
1243       CLOSE lchk_csr;
1244     END IF;
1245     IF (lc_row_notfound) THEN
1246       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_DELETED);
1247       RAISE OKC_API.G_EXCEPTION_ERROR;
1248     ELSIF lc_object_version_number > p_tqd_rec.object_version_number THEN
1249       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1250       RAISE OKC_API.G_EXCEPTION_ERROR;
1251     ELSIF lc_object_version_number <> p_tqd_rec.object_version_number THEN
1252       OKC_API.set_message(G_FND_APP,G_FORM_RECORD_CHANGED);
1253       RAISE OKC_API.G_EXCEPTION_ERROR;
1254     ELSIF lc_object_version_number = -1 THEN
1255       OKC_API.set_message(G_APP_NAME,G_RECORD_LOGICALLY_DELETED);
1256       RAISE OKC_API.G_EXCEPTION_ERROR;
1257     END IF;
1258     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1259   EXCEPTION
1260     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1261       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1262                                  l_api_name,
1263                                  G_PKG_NAME,
1264                                  'OKC_API.G_RET_STS_ERROR',
1265                                  x_msg_count,
1266                                  x_msg_data,
1267                                  '_PVT');
1268     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1269       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1270                                  l_api_name,
1271                                  G_PKG_NAME,
1272                                  'OKC_API.G_RET_STS_UNEXP_ERROR',
1273                                  x_msg_count,
1274                                  x_msg_data,
1275                                  '_PVT');
1276     WHEN OTHERS THEN
1277       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1278                                  l_api_name,
1279                                  G_PKG_NAME,
1280                                  'OTHERS',
1284   END lock_row;
1281                                  x_msg_count,
1282                                  x_msg_data,
1283                                  '_PVT');
1285   ---------------------------------------------
1286   -- lock_row for: OKL_TXD_QUOTE_LINE_DTLS_V --
1287   ---------------------------------------------
1288   PROCEDURE lock_row(
1289     p_api_version                  IN NUMBER,
1290     p_init_msg_list                IN VARCHAR2,
1291     x_return_status                OUT NOCOPY VARCHAR2,
1292     x_msg_count                    OUT NOCOPY NUMBER,
1293     x_msg_data                     OUT NOCOPY VARCHAR2,
1294     p_tqdv_rec                     IN tqdv_rec_type) IS
1295 
1296     l_api_version                  CONSTANT NUMBER := 1;
1297     l_api_name                     CONSTANT VARCHAR2(30) := 'V_lock_row';
1298     l_tqd_rec                      tqd_rec_type;
1299   BEGIN
1300     x_return_status := OKC_API.START_ACTIVITY(l_api_name,
1301                                               G_PKG_NAME,
1302                                               p_init_msg_list,
1303                                               l_api_version,
1304                                               p_api_version,
1305                                               '_PVT',
1306                                               x_return_status);
1307     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1308       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1309     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1310       RAISE OKC_API.G_EXCEPTION_ERROR;
1311     END IF;
1312     -----------------------------------------
1313     -- Move VIEW record to "Child" records --
1314     -----------------------------------------
1315     migrate(p_tqdv_rec, l_tqd_rec);
1316     ---------------------------------------------
1317     -- Call the LOCK_ROW for each child record --
1318     ---------------------------------------------
1319     lock_row(
1320       p_init_msg_list,
1321       x_return_status,
1322       x_msg_count,
1323       x_msg_data,
1324       l_tqd_rec
1325     );
1326     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1327       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1328     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1329       RAISE OKC_API.G_EXCEPTION_ERROR;
1330     END IF;
1331     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1332   EXCEPTION
1333     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1334       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1335                                  l_api_name,
1336                                  G_PKG_NAME,
1337                                  'OKC_API.G_RET_STS_ERROR',
1338                                  x_msg_count,
1339                                  x_msg_data,
1340                                  '_PVT');
1341     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1342       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1343                                  l_api_name,
1344                                  G_PKG_NAME,
1345                                  'OKC_API.G_RET_STS_UNEXP_ERROR',
1346                                  x_msg_count,
1347                                  x_msg_data,
1348                                  '_PVT');
1349     WHEN OTHERS THEN
1350       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1351                                  l_api_name,
1352                                  G_PKG_NAME,
1353                                  'OTHERS',
1354                                  x_msg_count,
1355                                  x_msg_data,
1356                                  '_PVT');
1357   END lock_row;
1358   --------------------------------------
1359   -- PL/SQL TBL lock_row for:TQDV_TBL --
1360   --------------------------------------
1361   PROCEDURE lock_row(
1362     p_api_version                  IN NUMBER,
1363     p_init_msg_list                IN VARCHAR2,
1364     x_return_status                OUT NOCOPY VARCHAR2,
1365     x_msg_count                    OUT NOCOPY NUMBER,
1366     x_msg_data                     OUT NOCOPY VARCHAR2,
1367     p_tqdv_tbl                     IN tqdv_tbl_type) IS
1368 
1369     l_api_version                  CONSTANT NUMBER := 1;
1370     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_lock_row';
1371     i                              NUMBER := 0;
1372   BEGIN
1373     OKC_API.init_msg_list(p_init_msg_list);
1374     -- Make sure PL/SQL table has recrods in it before passing
1375     IF (p_tqdv_tbl.COUNT > 0) THEN
1376       i := p_tqdv_tbl.FIRST;
1377       LOOP
1378         lock_row(p_api_version    => p_api_version,
1379                  p_init_msg_list  => OKC_API.G_FALSE,
1380                  x_return_status  => x_return_status,
1381                  x_msg_count      => x_msg_count,
1382                  x_msg_data       => x_msg_data,
1383                  p_tqdv_rec       => p_tqdv_tbl(i));
1384         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
1385           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
1386         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
1387           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
1388         END IF;
1389         EXIT WHEN (i = p_tqdv_tbl.LAST);
1390         i := p_tqdv_tbl.NEXT(i);
1391       END LOOP;
1392       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1393         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1394       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1398     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1395         RAISE OKC_API.G_EXCEPTION_ERROR;
1396       END IF;
1397     END IF;
1399   EXCEPTION
1400     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1401       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1402                                  l_api_name,
1403                                  G_PKG_NAME,
1404                                  'OKC_API.G_RET_STS_ERROR',
1405                                  x_msg_count,
1406                                  x_msg_data,
1407                                  '_PVT');
1408     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1409       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1410                                  l_api_name,
1411                                  G_PKG_NAME,
1412                                  'OKC_API.G_RET_STS_UNEXP_ERROR',
1413                                  x_msg_count,
1414                                  x_msg_data,
1415                                  '_PVT');
1416     WHEN OTHERS THEN
1417       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1418                                  l_api_name,
1419                                  G_PKG_NAME,
1420                                  'OTHERS',
1421                                  x_msg_count,
1422                                  x_msg_data,
1423                                  '_PVT');
1424   END lock_row;
1425   ---------------------------------------------------------------------------
1426   -- PROCEDURE update_row
1427   ---------------------------------------------------------------------------
1428   --------------------------------------------
1429   -- update_row for:OKL_TXD_QUOTE_LINE_DTLS --
1430   --------------------------------------------
1431   PROCEDURE update_row(
1432     p_init_msg_list                IN VARCHAR2,
1433     x_return_status                OUT NOCOPY VARCHAR2,
1434     x_msg_count                    OUT NOCOPY NUMBER,
1435     x_msg_data                     OUT NOCOPY VARCHAR2,
1436     p_tqd_rec                      IN tqd_rec_type,
1437     x_tqd_rec                      OUT NOCOPY tqd_rec_type) IS
1438 
1439     l_api_version                  CONSTANT NUMBER := 1;
1440     l_api_name                     CONSTANT VARCHAR2(30) := 'B_update_row';
1441     l_tqd_rec                      tqd_rec_type := p_tqd_rec;
1442     l_def_tqd_rec                  tqd_rec_type;
1443     l_row_notfound                 BOOLEAN := TRUE;
1444     ----------------------------------
1445     -- FUNCTION populate_new_record --
1446     ----------------------------------
1447     FUNCTION populate_new_record (
1448       p_tqd_rec IN tqd_rec_type,
1449       x_tqd_rec OUT NOCOPY tqd_rec_type
1450     ) RETURN VARCHAR2 IS
1451       l_tqd_rec                      tqd_rec_type;
1452       l_row_notfound                 BOOLEAN := TRUE;
1453       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1454     BEGIN
1455       x_tqd_rec := p_tqd_rec;
1456       -- Get current database values
1457       l_tqd_rec := get_rec(p_tqd_rec, l_return_status);
1458       IF (l_return_status = OKC_API.G_RET_STS_SUCCESS) THEN
1459         IF (x_tqd_rec.id = OKC_API.G_MISS_NUM)
1460         THEN
1461           x_tqd_rec.id := l_tqd_rec.id;
1462         END IF;
1463         IF (x_tqd_rec.object_version_number = OKC_API.G_MISS_NUM)
1464         THEN
1465           x_tqd_rec.object_version_number := l_tqd_rec.object_version_number;
1466         END IF;
1467         IF (x_tqd_rec.number_of_units = OKC_API.G_MISS_NUM)
1468         THEN
1469           x_tqd_rec.number_of_units := l_tqd_rec.number_of_units;
1470         END IF;
1471         IF (x_tqd_rec.kle_id = OKC_API.G_MISS_NUM)
1472         THEN
1473           x_tqd_rec.kle_id := l_tqd_rec.kle_id;
1474         END IF;
1475         IF (x_tqd_rec.tql_id = OKC_API.G_MISS_NUM)
1476         THEN
1477           x_tqd_rec.tql_id := l_tqd_rec.tql_id;
1478         END IF;
1479         IF (x_tqd_rec.org_id = OKC_API.G_MISS_NUM)
1480         THEN
1481           x_tqd_rec.org_id := l_tqd_rec.org_id;
1482         END IF;
1483         IF (x_tqd_rec.request_id = OKC_API.G_MISS_NUM)
1484         THEN
1485           x_tqd_rec.request_id := l_tqd_rec.request_id;
1486         END IF;
1487         IF (x_tqd_rec.program_application_id = OKC_API.G_MISS_NUM)
1488         THEN
1489           x_tqd_rec.program_application_id := l_tqd_rec.program_application_id;
1490         END IF;
1491         IF (x_tqd_rec.program_id = OKC_API.G_MISS_NUM)
1492         THEN
1493           x_tqd_rec.program_id := l_tqd_rec.program_id;
1494         END IF;
1495         IF (x_tqd_rec.program_update_date = OKC_API.G_MISS_DATE)
1496         THEN
1497           x_tqd_rec.program_update_date := l_tqd_rec.program_update_date;
1498         END IF;
1499         IF (x_tqd_rec.created_by = OKC_API.G_MISS_NUM)
1500         THEN
1501           x_tqd_rec.created_by := l_tqd_rec.created_by;
1502         END IF;
1503         IF (x_tqd_rec.creation_date = OKC_API.G_MISS_DATE)
1504         THEN
1505           x_tqd_rec.creation_date := l_tqd_rec.creation_date;
1506         END IF;
1507         IF (x_tqd_rec.last_updated_by = OKC_API.G_MISS_NUM)
1508         THEN
1509           x_tqd_rec.last_updated_by := l_tqd_rec.last_updated_by;
1510         END IF;
1511         IF (x_tqd_rec.last_update_date = OKC_API.G_MISS_DATE)
1512         THEN
1513           x_tqd_rec.last_update_date := l_tqd_rec.last_update_date;
1514         END IF;
1515         IF (x_tqd_rec.last_update_login = OKC_API.G_MISS_NUM)
1516         THEN
1520         THEN
1517           x_tqd_rec.last_update_login := l_tqd_rec.last_update_login;
1518         END IF;
1519         IF (x_tqd_rec.attribute_category = OKC_API.G_MISS_CHAR)
1521           x_tqd_rec.attribute_category := l_tqd_rec.attribute_category;
1522         END IF;
1523         IF (x_tqd_rec.attribute1 = OKC_API.G_MISS_CHAR)
1524         THEN
1525           x_tqd_rec.attribute1 := l_tqd_rec.attribute1;
1526         END IF;
1527         IF (x_tqd_rec.attribute2 = OKC_API.G_MISS_CHAR)
1528         THEN
1529           x_tqd_rec.attribute2 := l_tqd_rec.attribute2;
1530         END IF;
1531         IF (x_tqd_rec.attribute3 = OKC_API.G_MISS_CHAR)
1532         THEN
1533           x_tqd_rec.attribute3 := l_tqd_rec.attribute3;
1534         END IF;
1535         IF (x_tqd_rec.attribute4 = OKC_API.G_MISS_CHAR)
1536         THEN
1537           x_tqd_rec.attribute4 := l_tqd_rec.attribute4;
1538         END IF;
1539         IF (x_tqd_rec.attribute5 = OKC_API.G_MISS_CHAR)
1540         THEN
1541           x_tqd_rec.attribute5 := l_tqd_rec.attribute5;
1542         END IF;
1543         IF (x_tqd_rec.attribute6 = OKC_API.G_MISS_CHAR)
1544         THEN
1545           x_tqd_rec.attribute6 := l_tqd_rec.attribute6;
1546         END IF;
1547         IF (x_tqd_rec.attribute7 = OKC_API.G_MISS_CHAR)
1548         THEN
1549           x_tqd_rec.attribute7 := l_tqd_rec.attribute7;
1550         END IF;
1551         IF (x_tqd_rec.attribute8 = OKC_API.G_MISS_CHAR)
1552         THEN
1553           x_tqd_rec.attribute8 := l_tqd_rec.attribute8;
1554         END IF;
1555         IF (x_tqd_rec.attribute9 = OKC_API.G_MISS_CHAR)
1556         THEN
1557           x_tqd_rec.attribute9 := l_tqd_rec.attribute9;
1558         END IF;
1559         IF (x_tqd_rec.attribute10 = OKC_API.G_MISS_CHAR)
1560         THEN
1561           x_tqd_rec.attribute10 := l_tqd_rec.attribute10;
1562         END IF;
1563         IF (x_tqd_rec.attribute11 = OKC_API.G_MISS_CHAR)
1564         THEN
1565           x_tqd_rec.attribute11 := l_tqd_rec.attribute11;
1566         END IF;
1567         IF (x_tqd_rec.attribute12 = OKC_API.G_MISS_CHAR)
1568         THEN
1569           x_tqd_rec.attribute12 := l_tqd_rec.attribute12;
1570         END IF;
1571         IF (x_tqd_rec.attribute13 = OKC_API.G_MISS_CHAR)
1572         THEN
1573           x_tqd_rec.attribute13 := l_tqd_rec.attribute13;
1574         END IF;
1575         IF (x_tqd_rec.attribute14 = OKC_API.G_MISS_CHAR)
1576         THEN
1577           x_tqd_rec.attribute14 := l_tqd_rec.attribute14;
1578         END IF;
1579         IF (x_tqd_rec.attribute15 = OKC_API.G_MISS_CHAR)
1580         THEN
1581           x_tqd_rec.attribute15 := l_tqd_rec.attribute15;
1582         END IF;
1583       END IF;
1584       RETURN(l_return_status);
1585     END populate_new_record;
1586     ------------------------------------------------
1587     -- Set_Attributes for:OKL_TXD_QUOTE_LINE_DTLS --
1588     ------------------------------------------------
1589     FUNCTION Set_Attributes (
1590       p_tqd_rec IN tqd_rec_type,
1591       x_tqd_rec OUT NOCOPY tqd_rec_type
1592     ) RETURN VARCHAR2 IS
1593       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1594     BEGIN
1595       x_tqd_rec := p_tqd_rec;
1596       x_tqd_rec.OBJECT_VERSION_NUMBER := p_tqd_rec.OBJECT_VERSION_NUMBER + 1;
1597       RETURN(l_return_status);
1598     END Set_Attributes;
1599   BEGIN
1600     x_return_status := OKC_API.START_ACTIVITY(l_api_name,
1601                                               p_init_msg_list,
1602                                               '_PVT',
1603                                               x_return_status);
1604     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1605       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1606     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1607       RAISE OKC_API.G_EXCEPTION_ERROR;
1608     END IF;
1609     --- Setting item attributes
1610     x_return_status := Set_Attributes(
1611       p_tqd_rec,                         -- IN
1612       l_tqd_rec);                        -- OUT
1613     --- If any errors happen abort API
1614     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1615       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1616     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1617       RAISE OKC_API.G_EXCEPTION_ERROR;
1618     END IF;
1619     x_return_status := populate_new_record(l_tqd_rec, l_def_tqd_rec);
1620     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1621       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1622     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1623       RAISE OKC_API.G_EXCEPTION_ERROR;
1624     END IF;
1625     UPDATE OKL_TXD_QUOTE_LINE_DTLS
1626     SET OBJECT_VERSION_NUMBER = l_def_tqd_rec.object_version_number,
1627         NUMBER_OF_UNITS = l_def_tqd_rec.number_of_units,
1628         KLE_ID = l_def_tqd_rec.kle_id,
1629         TQL_ID = l_def_tqd_rec.tql_id,
1630         ORG_ID = l_def_tqd_rec.org_id,
1631         REQUEST_ID = NVL(decode(FND_GLOBAL.CONC_REQUEST_ID,-1, NULL,
1632                  FND_GLOBAL.CONC_REQUEST_ID),l_def_tqd_rec.request_id),
1633         PROGRAM_APPLICATION_ID = NVL(decode(FND_GLOBAL.PROG_APPL_ID,-1,NULL,
1634                  FND_GLOBAL.PROG_APPL_ID),l_def_tqd_rec.program_application_id),
1635         PROGRAM_ID = NVL(decode(FND_GLOBAL.CONC_PROGRAM_ID,-1,NULL,
1636                  FND_GLOBAL.CONC_PROGRAM_ID),l_def_tqd_rec.program_id),
1637         PROGRAM_UPDATE_DATE = decode(decode(FND_GLOBAL.CONC_REQUEST_ID,-1,NULL,
1641         LAST_UPDATED_BY = l_def_tqd_rec.last_updated_by,
1638                  SYSDATE),NULL,l_def_tqd_rec.program_update_date,SYSDATE),
1639         CREATED_BY = l_def_tqd_rec.created_by,
1640         CREATION_DATE = l_def_tqd_rec.creation_date,
1642         LAST_UPDATE_DATE = l_def_tqd_rec.last_update_date,
1643         LAST_UPDATE_LOGIN = l_def_tqd_rec.last_update_login,
1644         ATTRIBUTE_CATEGORY = l_def_tqd_rec.attribute_category,
1645         ATTRIBUTE1 = l_def_tqd_rec.attribute1,
1646         ATTRIBUTE2 = l_def_tqd_rec.attribute2,
1647         ATTRIBUTE3 = l_def_tqd_rec.attribute3,
1648         ATTRIBUTE4 = l_def_tqd_rec.attribute4,
1649         ATTRIBUTE5 = l_def_tqd_rec.attribute5,
1650         ATTRIBUTE6 = l_def_tqd_rec.attribute6,
1651         ATTRIBUTE7 = l_def_tqd_rec.attribute7,
1652         ATTRIBUTE8 = l_def_tqd_rec.attribute8,
1653         ATTRIBUTE9 = l_def_tqd_rec.attribute9,
1654         ATTRIBUTE10 = l_def_tqd_rec.attribute10,
1655         ATTRIBUTE11 = l_def_tqd_rec.attribute11,
1656         ATTRIBUTE12 = l_def_tqd_rec.attribute12,
1657         ATTRIBUTE13 = l_def_tqd_rec.attribute13,
1658         ATTRIBUTE14 = l_def_tqd_rec.attribute14,
1659         ATTRIBUTE15 = l_def_tqd_rec.attribute15
1660     WHERE ID = l_def_tqd_rec.id;
1661     x_tqd_rec := l_tqd_rec;
1662     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1663   EXCEPTION
1664     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1665       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1666                                  l_api_name,
1667                                  G_PKG_NAME,
1668                                  'OKC_API.G_RET_STS_ERROR',
1669                                  x_msg_count,
1670                                  x_msg_data,
1671                                  '_PVT');
1672     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1673       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1674                                  l_api_name,
1675                                  G_PKG_NAME,
1676                                  'OKC_API.G_RET_STS_UNEXP_ERROR',
1677                                  x_msg_count,
1678                                  x_msg_data,
1679                                  '_PVT');
1680     WHEN OTHERS THEN
1681       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1682                                  l_api_name,
1683                                  G_PKG_NAME,
1684                                  'OTHERS',
1685                                  x_msg_count,
1686                                  x_msg_data,
1687                                  '_PVT');
1688   END update_row;
1689   ----------------------------------------------
1690   -- update_row for:OKL_TXD_QUOTE_LINE_DTLS_V --
1691   ----------------------------------------------
1692   PROCEDURE update_row(
1693     p_api_version                  IN NUMBER,
1694     p_init_msg_list                IN VARCHAR2,
1695     x_return_status                OUT NOCOPY VARCHAR2,
1696     x_msg_count                    OUT NOCOPY NUMBER,
1697     x_msg_data                     OUT NOCOPY VARCHAR2,
1698     p_tqdv_rec                     IN tqdv_rec_type,
1699     x_tqdv_rec                     OUT NOCOPY tqdv_rec_type) IS
1700 
1701     l_api_version                  CONSTANT NUMBER := 1;
1702     l_api_name                     CONSTANT VARCHAR2(30) := 'V_update_row';
1703     l_tqdv_rec                     tqdv_rec_type := p_tqdv_rec;
1704     l_def_tqdv_rec                 tqdv_rec_type;
1705     l_db_tqdv_rec                  tqdv_rec_type;
1706     l_tqd_rec                      tqd_rec_type;
1707     lx_tqd_rec                     tqd_rec_type;
1708     -------------------------------
1709     -- FUNCTION fill_who_columns --
1710     -------------------------------
1711     FUNCTION fill_who_columns (
1712       p_tqdv_rec IN tqdv_rec_type
1713     ) RETURN tqdv_rec_type IS
1714       l_tqdv_rec tqdv_rec_type := p_tqdv_rec;
1715     BEGIN
1716       l_tqdv_rec.LAST_UPDATE_DATE := SYSDATE;
1717       l_tqdv_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
1718       l_tqdv_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
1719       RETURN(l_tqdv_rec);
1720     END fill_who_columns;
1721     ----------------------------------
1722     -- FUNCTION populate_new_record --
1723     ----------------------------------
1724     FUNCTION populate_new_record (
1725       p_tqdv_rec IN tqdv_rec_type,
1726       x_tqdv_rec OUT NOCOPY tqdv_rec_type
1727     ) RETURN VARCHAR2 IS
1728       l_row_notfound                 BOOLEAN := TRUE;
1729       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1730     BEGIN
1731       x_tqdv_rec := p_tqdv_rec;
1732       -- Get current database values
1733       -- NOTE: Never assign the OBJECT_VERSION_NUMBER.  Force the user to pass it
1734       --       so it may be verified through LOCK_ROW.
1735       l_db_tqdv_rec := get_rec(p_tqdv_rec, l_return_status);
1736       IF (l_return_status = OKC_API.G_RET_STS_SUCCESS) THEN
1737         IF (x_tqdv_rec.id = OKC_API.G_MISS_NUM)
1738         THEN
1739           x_tqdv_rec.id := l_db_tqdv_rec.id;
1740         END IF;
1741         IF (x_tqdv_rec.object_version_number = OKL_API.G_MISS_NUM)
1742         THEN
1743           x_tqdv_rec.object_version_number := l_db_tqdv_rec.object_version_number;
1744         END IF;
1745         IF (x_tqdv_rec.number_of_units = OKC_API.G_MISS_NUM)
1746         THEN
1747           x_tqdv_rec.number_of_units := l_db_tqdv_rec.number_of_units;
1748         END IF;
1749         IF (x_tqdv_rec.tql_id = OKC_API.G_MISS_NUM)
1750         THEN
1751           x_tqdv_rec.tql_id := l_db_tqdv_rec.tql_id;
1755           x_tqdv_rec.kle_id := l_db_tqdv_rec.kle_id;
1752         END IF;
1753         IF (x_tqdv_rec.kle_id = OKC_API.G_MISS_NUM)
1754         THEN
1756         END IF;
1757         IF (x_tqdv_rec.org_id = OKC_API.G_MISS_NUM)
1758         THEN
1759           x_tqdv_rec.org_id := l_db_tqdv_rec.org_id;
1760         END IF;
1761         IF (x_tqdv_rec.request_id = OKC_API.G_MISS_NUM)
1762         THEN
1763           x_tqdv_rec.request_id := l_db_tqdv_rec.request_id;
1764         END IF;
1765         IF (x_tqdv_rec.program_application_id = OKC_API.G_MISS_NUM)
1766         THEN
1767           x_tqdv_rec.program_application_id := l_db_tqdv_rec.program_application_id;
1768         END IF;
1769         IF (x_tqdv_rec.program_id = OKC_API.G_MISS_NUM)
1770         THEN
1771           x_tqdv_rec.program_id := l_db_tqdv_rec.program_id;
1772         END IF;
1773         IF (x_tqdv_rec.program_update_date = OKC_API.G_MISS_DATE)
1774         THEN
1775           x_tqdv_rec.program_update_date := l_db_tqdv_rec.program_update_date;
1776         END IF;
1777         IF (x_tqdv_rec.created_by = OKC_API.G_MISS_NUM)
1778         THEN
1779           x_tqdv_rec.created_by := l_db_tqdv_rec.created_by;
1780         END IF;
1781         IF (x_tqdv_rec.creation_date = OKC_API.G_MISS_DATE)
1782         THEN
1783           x_tqdv_rec.creation_date := l_db_tqdv_rec.creation_date;
1784         END IF;
1785         IF (x_tqdv_rec.last_updated_by = OKC_API.G_MISS_NUM)
1786         THEN
1787           x_tqdv_rec.last_updated_by := l_db_tqdv_rec.last_updated_by;
1788         END IF;
1789         IF (x_tqdv_rec.last_update_date = OKC_API.G_MISS_DATE)
1790         THEN
1791           x_tqdv_rec.last_update_date := l_db_tqdv_rec.last_update_date;
1792         END IF;
1793         IF (x_tqdv_rec.last_update_login = OKC_API.G_MISS_NUM)
1794         THEN
1795           x_tqdv_rec.last_update_login := l_db_tqdv_rec.last_update_login;
1796         END IF;
1797         IF (x_tqdv_rec.attribute_category = OKC_API.G_MISS_CHAR)
1798         THEN
1799           x_tqdv_rec.attribute_category := l_db_tqdv_rec.attribute_category;
1800         END IF;
1801         IF (x_tqdv_rec.attribute1 = OKC_API.G_MISS_CHAR)
1802         THEN
1803           x_tqdv_rec.attribute1 := l_db_tqdv_rec.attribute1;
1804         END IF;
1805         IF (x_tqdv_rec.attribute2 = OKC_API.G_MISS_CHAR)
1806         THEN
1807           x_tqdv_rec.attribute2 := l_db_tqdv_rec.attribute2;
1808         END IF;
1809         IF (x_tqdv_rec.attribute3 = OKC_API.G_MISS_CHAR)
1810         THEN
1811           x_tqdv_rec.attribute3 := l_db_tqdv_rec.attribute3;
1812         END IF;
1813         IF (x_tqdv_rec.attribute4 = OKC_API.G_MISS_CHAR)
1814         THEN
1815           x_tqdv_rec.attribute4 := l_db_tqdv_rec.attribute4;
1816         END IF;
1817         IF (x_tqdv_rec.attribute5 = OKC_API.G_MISS_CHAR)
1818         THEN
1819           x_tqdv_rec.attribute5 := l_db_tqdv_rec.attribute5;
1820         END IF;
1821         IF (x_tqdv_rec.attribute6 = OKC_API.G_MISS_CHAR)
1822         THEN
1823           x_tqdv_rec.attribute6 := l_db_tqdv_rec.attribute6;
1824         END IF;
1825         IF (x_tqdv_rec.attribute7 = OKC_API.G_MISS_CHAR)
1826         THEN
1827           x_tqdv_rec.attribute7 := l_db_tqdv_rec.attribute7;
1828         END IF;
1829         IF (x_tqdv_rec.attribute8 = OKC_API.G_MISS_CHAR)
1830         THEN
1831           x_tqdv_rec.attribute8 := l_db_tqdv_rec.attribute8;
1832         END IF;
1833         IF (x_tqdv_rec.attribute9 = OKC_API.G_MISS_CHAR)
1834         THEN
1835           x_tqdv_rec.attribute9 := l_db_tqdv_rec.attribute9;
1836         END IF;
1837         IF (x_tqdv_rec.attribute10 = OKC_API.G_MISS_CHAR)
1838         THEN
1839           x_tqdv_rec.attribute10 := l_db_tqdv_rec.attribute10;
1840         END IF;
1841         IF (x_tqdv_rec.attribute11 = OKC_API.G_MISS_CHAR)
1842         THEN
1843           x_tqdv_rec.attribute11 := l_db_tqdv_rec.attribute11;
1844         END IF;
1845         IF (x_tqdv_rec.attribute12 = OKC_API.G_MISS_CHAR)
1846         THEN
1847           x_tqdv_rec.attribute12 := l_db_tqdv_rec.attribute12;
1848         END IF;
1849         IF (x_tqdv_rec.attribute13 = OKC_API.G_MISS_CHAR)
1850         THEN
1851           x_tqdv_rec.attribute13 := l_db_tqdv_rec.attribute13;
1852         END IF;
1853         IF (x_tqdv_rec.attribute14 = OKC_API.G_MISS_CHAR)
1854         THEN
1855           x_tqdv_rec.attribute14 := l_db_tqdv_rec.attribute14;
1856         END IF;
1857         IF (x_tqdv_rec.attribute15 = OKC_API.G_MISS_CHAR)
1858         THEN
1859           x_tqdv_rec.attribute15 := l_db_tqdv_rec.attribute15;
1860         END IF;
1861       END IF;
1862       RETURN(l_return_status);
1863     END populate_new_record;
1864     --------------------------------------------------
1865     -- Set_Attributes for:OKL_TXD_QUOTE_LINE_DTLS_V --
1866     --------------------------------------------------
1867     FUNCTION Set_Attributes (
1868       p_tqdv_rec IN tqdv_rec_type,
1869       x_tqdv_rec OUT NOCOPY tqdv_rec_type
1870     ) RETURN VARCHAR2 IS
1871       l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
1872     BEGIN
1873       x_tqdv_rec := p_tqdv_rec;
1874       RETURN(l_return_status);
1875     END Set_Attributes;
1876   BEGIN
1877     x_return_status := OKC_API.START_ACTIVITY(l_api_name,
1878                                               G_PKG_NAME,
1882                                               '_PVT',
1879                                               p_init_msg_list,
1880                                               l_api_version,
1881                                               p_api_version,
1883                                               x_return_status);
1884     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1885       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1886     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1887       RAISE OKC_API.G_EXCEPTION_ERROR;
1888     END IF;
1889     --- Setting item attributes
1890     x_return_status := Set_Attributes(
1891       p_tqdv_rec,                        -- IN
1892       x_tqdv_rec);                       -- OUT
1893     --- If any errors happen abort API
1894     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1895       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1896     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1897       RAISE OKC_API.G_EXCEPTION_ERROR;
1898     END IF;
1899     x_return_status := populate_new_record(l_tqdv_rec, l_def_tqdv_rec);
1900     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1901       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1902     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1903       RAISE OKC_API.G_EXCEPTION_ERROR;
1904     END IF;
1905     l_def_tqdv_rec := fill_who_columns(l_def_tqdv_rec);
1906     --- Validate all non-missing attributes (Item Level Validation)
1907     x_return_status := Validate_Attributes(l_def_tqdv_rec);
1908     --- If any errors happen abort API
1909     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1910       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1911     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1912       RAISE OKC_API.G_EXCEPTION_ERROR;
1913     END IF;
1914     x_return_status := Validate_Record(l_def_tqdv_rec, l_db_tqdv_rec);
1915     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1916       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1917     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1918       RAISE OKC_API.G_EXCEPTION_ERROR;
1919     END IF;
1920 
1921     -- Lock the Record
1922     lock_row(
1923       p_api_version                  => p_api_version,
1924       p_init_msg_list                => p_init_msg_list,
1925       x_return_status                => x_return_status,
1926       x_msg_count                    => x_msg_count,
1927       x_msg_data                     => x_msg_data,
1928       p_tqdv_rec                     => l_def_tqdv_rec);
1929     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1930       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1931     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1932       RAISE OKC_API.G_EXCEPTION_ERROR;
1933     END IF;
1934 
1935     -----------------------------------------
1936     -- Move VIEW record to "Child" records --
1937     -----------------------------------------
1938     migrate(l_def_tqdv_rec, l_tqd_rec);
1939     -----------------------------------------------
1940     -- Call the UPDATE_ROW for each child record --
1941     -----------------------------------------------
1942     update_row(
1943       p_init_msg_list,
1944       x_return_status,
1945       x_msg_count,
1946       x_msg_data,
1947       l_tqd_rec,
1948       lx_tqd_rec
1949     );
1950     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1951       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1952     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1953       RAISE OKC_API.G_EXCEPTION_ERROR;
1954     END IF;
1955     migrate(lx_tqd_rec, l_def_tqdv_rec);
1956     x_tqdv_rec := l_def_tqdv_rec;
1957     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
1958   EXCEPTION
1959     WHEN OKC_API.G_EXCEPTION_ERROR THEN
1960       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1961                                  l_api_name,
1962                                  G_PKG_NAME,
1963                                  'OKC_API.G_RET_STS_ERROR',
1964                                  x_msg_count,
1965                                  x_msg_data,
1966                                  '_PVT');
1967     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
1968       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1969                                  l_api_name,
1970                                  G_PKG_NAME,
1971                                  'OKC_API.G_RET_STS_UNEXP_ERROR',
1972                                  x_msg_count,
1973                                  x_msg_data,
1974                                  '_PVT');
1975     WHEN OTHERS THEN
1976       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
1977                                  l_api_name,
1978                                  G_PKG_NAME,
1979                                  'OTHERS',
1980                                  x_msg_count,
1981                                  x_msg_data,
1982                                  '_PVT');
1983   END update_row;
1984   ----------------------------------------
1985   -- PL/SQL TBL update_row for:tqdv_tbl --
1986   ----------------------------------------
1987   PROCEDURE update_row(
1988     p_api_version                  IN NUMBER,
1989     p_init_msg_list                IN VARCHAR2,
1990     x_return_status                OUT NOCOPY VARCHAR2,
1991     x_msg_count                    OUT NOCOPY NUMBER,
1992     x_msg_data                     OUT NOCOPY VARCHAR2,
1993     p_tqdv_tbl                     IN tqdv_tbl_type,
1997     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_update_row';
1994     x_tqdv_tbl                     OUT NOCOPY tqdv_tbl_type) IS
1995 
1996     l_api_version                  CONSTANT NUMBER := 1;
1998     i                              NUMBER := 0;
1999   BEGIN
2000     OKC_API.init_msg_list(p_init_msg_list);
2001     -- Make sure PL/SQL table has records in it before passing
2002     IF (p_tqdv_tbl.COUNT > 0) THEN
2003       i := p_tqdv_tbl.FIRST;
2004       LOOP
2005         update_row (p_api_version    => p_api_version,
2006                     p_init_msg_list  => OKC_API.G_FALSE,
2007                     x_return_status  => x_return_status,
2008                     x_msg_count      => x_msg_count,
2009                     x_msg_data       => x_msg_data,
2010                     p_tqdv_rec       => p_tqdv_tbl(i),
2011                     x_tqdv_rec       => x_tqdv_tbl(i));
2012         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2013           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
2014         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2015           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
2016         END IF;
2017         EXIT WHEN (i = p_tqdv_tbl.LAST);
2018         i := p_tqdv_tbl.NEXT(i);
2019       END LOOP;
2020       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2021         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2022       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2023         RAISE OKC_API.G_EXCEPTION_ERROR;
2024       END IF;
2025     END IF;
2026     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2027   EXCEPTION
2028     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2029       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2030                                  l_api_name,
2031                                  G_PKG_NAME,
2032                                  'OKC_API.G_RET_STS_ERROR',
2033                                  x_msg_count,
2034                                  x_msg_data,
2035                                  '_PVT');
2036     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2037       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2038                                  l_api_name,
2039                                  G_PKG_NAME,
2040                                  'OKC_API.G_RET_STS_UNEXP_ERROR',
2041                                  x_msg_count,
2042                                  x_msg_data,
2043                                  '_PVT');
2044     WHEN OTHERS THEN
2045       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2046                                  l_api_name,
2047                                  G_PKG_NAME,
2048                                  'OTHERS',
2049                                  x_msg_count,
2050                                  x_msg_data,
2051                                  '_PVT');
2052   END update_row;
2053   ---------------------------------------------------------------------------
2054   -- PROCEDURE delete_row
2055   ---------------------------------------------------------------------------
2056   --------------------------------------------
2057   -- delete_row for:OKL_TXD_QUOTE_LINE_DTLS --
2058   --------------------------------------------
2059   PROCEDURE delete_row(
2060     p_init_msg_list                IN VARCHAR2,
2061     x_return_status                OUT NOCOPY VARCHAR2,
2062     x_msg_count                    OUT NOCOPY NUMBER,
2063     x_msg_data                     OUT NOCOPY VARCHAR2,
2064     p_tqd_rec                      IN tqd_rec_type) IS
2065 
2066     l_api_version                  CONSTANT NUMBER := 1;
2067     l_api_name                     CONSTANT VARCHAR2(30) := 'B_delete_row';
2068     l_tqd_rec                      tqd_rec_type := p_tqd_rec;
2069     l_row_notfound                 BOOLEAN := TRUE;
2070   BEGIN
2071     x_return_status := OKC_API.START_ACTIVITY(l_api_name,
2072                                               p_init_msg_list,
2073                                               '_PVT',
2074                                               x_return_status);
2075     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2076       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2077     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2078       RAISE OKC_API.G_EXCEPTION_ERROR;
2079     END IF;
2080 
2081     DELETE FROM OKL_TXD_QUOTE_LINE_DTLS
2082     WHERE ID = p_tqd_rec.id;
2083     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2084   EXCEPTION
2085     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2086       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2087                                  l_api_name,
2088                                  G_PKG_NAME,
2089                                  'OKC_API.G_RET_STS_ERROR',
2090                                  x_msg_count,
2091                                  x_msg_data,
2092                                  '_PVT');
2093     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2094       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2095                                  l_api_name,
2096                                  G_PKG_NAME,
2097                                  'OKC_API.G_RET_STS_UNEXP_ERROR',
2098                                  x_msg_count,
2099                                  x_msg_data,
2100                                  '_PVT');
2101     WHEN OTHERS THEN
2102       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2103                                  l_api_name,
2104                                  G_PKG_NAME,
2105                                  'OTHERS',
2109   END delete_row;
2106                                  x_msg_count,
2107                                  x_msg_data,
2108                                  '_PVT');
2110   ----------------------------------------------
2111   -- delete_row for:OKL_TXD_QUOTE_LINE_DTLS_V --
2112   ----------------------------------------------
2113   PROCEDURE delete_row(
2114     p_api_version                  IN NUMBER,
2115     p_init_msg_list                IN VARCHAR2,
2116     x_return_status                OUT NOCOPY VARCHAR2,
2117     x_msg_count                    OUT NOCOPY NUMBER,
2118     x_msg_data                     OUT NOCOPY VARCHAR2,
2119     p_tqdv_rec                     IN tqdv_rec_type) IS
2120 
2121     l_api_version                  CONSTANT NUMBER := 1;
2122     l_api_name                     CONSTANT VARCHAR2(30) := 'V_delete_row';
2123     l_tqdv_rec                     tqdv_rec_type := p_tqdv_rec;
2124     l_tqd_rec                      tqd_rec_type;
2125   BEGIN
2126     x_return_status := OKC_API.START_ACTIVITY(l_api_name,
2127                                               G_PKG_NAME,
2128                                               p_init_msg_list,
2129                                               l_api_version,
2130                                               p_api_version,
2131                                               '_PVT',
2132                                               x_return_status);
2133     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2134       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2135     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2136       RAISE OKC_API.G_EXCEPTION_ERROR;
2137     END IF;
2138     -----------------------------------------
2139     -- Move VIEW record to "Child" records --
2140     -----------------------------------------
2141     migrate(l_tqdv_rec, l_tqd_rec);
2142     -----------------------------------------------
2143     -- Call the DELETE_ROW for each child record --
2144     -----------------------------------------------
2145     delete_row(
2146       p_init_msg_list,
2147       x_return_status,
2148       x_msg_count,
2149       x_msg_data,
2150       l_tqd_rec
2151     );
2152     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2153       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2154     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2155       RAISE OKC_API.G_EXCEPTION_ERROR;
2156     END IF;
2157     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2158   EXCEPTION
2159     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2160       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2161                                  l_api_name,
2162                                  G_PKG_NAME,
2163                                  'OKC_API.G_RET_STS_ERROR',
2164                                  x_msg_count,
2165                                  x_msg_data,
2166                                  '_PVT');
2167     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2168       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2169                                  l_api_name,
2170                                  G_PKG_NAME,
2171                                  'OKC_API.G_RET_STS_UNEXP_ERROR',
2172                                  x_msg_count,
2173                                  x_msg_data,
2174                                  '_PVT');
2175     WHEN OTHERS THEN
2176       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2177                                  l_api_name,
2178                                  G_PKG_NAME,
2179                                  'OTHERS',
2180                                  x_msg_count,
2181                                  x_msg_data,
2182                                  '_PVT');
2183   END delete_row;
2184   ---------------------------------------------------------
2185   -- PL/SQL TBL delete_row for:OKL_TXD_QUOTE_LINE_DTLS_V --
2186   ---------------------------------------------------------
2187   PROCEDURE delete_row(
2188     p_api_version                  IN NUMBER,
2189     p_init_msg_list                IN VARCHAR2,
2190     x_return_status                OUT NOCOPY VARCHAR2,
2191     x_msg_count                    OUT NOCOPY NUMBER,
2192     x_msg_data                     OUT NOCOPY VARCHAR2,
2193     p_tqdv_tbl                     IN tqdv_tbl_type) IS
2194 
2195     l_api_version                  CONSTANT NUMBER := 1;
2196     l_api_name                     CONSTANT VARCHAR2(30) := 'V_error_tbl_delete_row';
2197     i                              NUMBER := 0;
2198   BEGIN
2199     OKC_API.init_msg_list(p_init_msg_list);
2200     -- Make sure PL/SQL table has records in it before passing
2201     IF (p_tqdv_tbl.COUNT > 0) THEN
2202       i := p_tqdv_tbl.FIRST;
2203       LOOP
2204         delete_row (
2205             p_api_version                  => p_api_version,
2206                  p_init_msg_list  => OKC_API.G_FALSE,
2207                  x_return_status  => x_return_status,
2208                  x_msg_count      => x_msg_count,
2209                  x_msg_data       => x_msg_data,
2210                  p_tqdv_rec       => p_tqdv_tbl(i));
2211         IF (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR) THEN
2212           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_UNEXP_ERROR);
2213         ELSIF (x_return_status = OKL_API.G_RET_STS_ERROR) THEN
2214           EXIT WHEN (x_return_status = OKL_API.G_RET_STS_ERROR);
2215         END IF;
2216         EXIT WHEN (i = p_tqdv_tbl.LAST);
2217         i := p_tqdv_tbl.NEXT(i);
2218       END LOOP;
2219       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2220         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2221       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2222         RAISE OKC_API.G_EXCEPTION_ERROR;
2223       END IF;
2224     END IF;
2225     OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
2226   EXCEPTION
2227     WHEN OKC_API.G_EXCEPTION_ERROR THEN
2228       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2229                                  l_api_name,
2230                                  G_PKG_NAME,
2231                                  'OKC_API.G_RET_STS_ERROR',
2232                                  x_msg_count,
2233                                  x_msg_data,
2234                                  '_PVT');
2235     WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2236       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2237                                  l_api_name,
2238                                  G_PKG_NAME,
2239                                  'OKC_API.G_RET_STS_UNEXP_ERROR',
2240                                  x_msg_count,
2241                                  x_msg_data,
2242                                  '_PVT');
2243     WHEN OTHERS THEN
2244       x_return_status := OKC_API.HANDLE_EXCEPTIONS(
2245                                  l_api_name,
2246                                  G_PKG_NAME,
2247                                  'OTHERS',
2248                                  x_msg_count,
2249                                  x_msg_data,
2250                                  '_PVT');
2251   END delete_row;
2252 END OKL_TQD_PVT;