DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKE_CLE_PVT

Source


1 PACKAGE BODY OKE_CLE_PVT AS
2 /* $Header: OKEVCLEB.pls 120.1 2005/11/23 14:37:14 ausmani noship $ */
3 
4   FUNCTION validate_attributes( p_cle_rec IN  cle_rec_type)
5 		RETURN VARCHAR2;
6 
7   G_NO_PARENT_RECORD CONSTANT	VARCHAR2(200) := 'OKE_NO_PARENT_RECORD';
8   G_UNEXPECTED_ERROR CONSTANT	VARCHAR2(200) := 'OKE_CONTRACTS_UNEXPECTED_ERROR';
9 
10   G_SQLERRM_TOKEN	 CONSTANT	VARCHAR2(200) := 'SQLerrm';
11   G_SQLCODE_TOKEN	 CONSTANT	VARCHAR2(200) := 'SQLcode';
12   G_VIEW		 CONSTANT	VARCHAR2(200) := 'OKE_K_LINES_V';
13 
14   G_EXCEPTION_HALT_VALIDATION	exception;
15   l_return_status	VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
16 
17 -- validation code goes here
18 
19   PROCEDURE validate_parent_line_id (
20 	p_cle_rec IN cle_rec_type,
21 	x_return_status OUT NOCOPY VARCHAR2
22   ) IS
23 
24   CURSOR l_csr IS
25   SELECT 'x' FROM OKE_K_LINES_V
26   WHERE K_LINE_ID = p_cle_rec.PARENT_LINE_ID;
27 
28   l_dummy_val VARCHAR2(1) := '?';
29 
30   BEGIN
31 
32     x_return_status := OKE_API.G_RET_STS_SUCCESS;
33 
34     If (p_cle_rec.parent_line_id <> OKE_API.G_MISS_NUM and
35   	   p_cle_rec.parent_line_id IS NOT NULL)
36     THEN
37       Open l_csr;
38       Fetch l_csr Into l_dummy_val;
39       Close l_csr;
40 
41       -- if l_dummy_val still set to default, data was not found
42       If (l_dummy_val = '?') Then
43 
44   	    OKE_API.SET_MESSAGE(p_app_name		=> g_app_name,
45 					    p_msg_name		=> g_no_parent_record,
46 					    p_token1		=> g_col_name_token,
47 					    p_token1_value	=> 'parent_line_id',
48 					    p_token2		=> g_child_table_token,
49 					    p_token2_value	=> G_VIEW,
50 					    p_token3		=> g_parent_table_token,
51 					    p_token3_value	=> 'OKE_K_LINES_V');
52 	    -- notify caller of an error
53          x_return_status := OKE_API.G_RET_STS_ERROR;
54       End If;
55 
56     End If;
57   exception
58     when OTHERS then
59 	  -- store SQL error message on message stack
60   	  OKE_API.SET_MESSAGE(p_app_name		=> g_app_name,
61 					  p_msg_name		=> g_unexpected_error,
62 					  p_token1		=> g_sqlcode_token,
63 					  p_token1_value	=> sqlcode,
64 					  p_token2		=> g_sqlerrm_token,
65 					  p_token2_value	=> sqlerrm);
66 	   -- notify caller of an error as UNEXPETED error
67 
68         x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
69 
70         -- verify that cursor was closed
71         if l_csr%ISOPEN then
72 	      close l_csr;
73         end if;
74 
75   End validate_parent_line_id;
76 
77 
78 
79   PROCEDURE validate_customer_item_id (
80 	p_cle_rec IN cle_rec_type,
81 	x_return_status OUT NOCOPY VARCHAR2
82   ) IS
83 
84   CURSOR l_csr IS
85   select 'x'
86   from mtl_customer_items item
87   where item.customer_item_id = p_cle_rec.customer_item_id;
88 
89   CURSOR get_intent IS
90   SELECT BUY_OR_SELL FROM
91   OKC_K_HEADERS_B H, OKC_K_LINES_B L
92   WHERE L.DNZ_CHR_ID = H.ID
93   AND L.ID = p_cle_rec.k_line_id;
94 
95   l_intent VARCHAR2(30);
96   l_dummy_val VARCHAR2(1) := '?';
97 
98   BEGIN
99 
100     x_return_status := OKE_API.G_RET_STS_SUCCESS;
101 
102     OPEN get_intent;
103     FETCH get_intent INTO l_intent;
104     CLOSE get_intent;
105 
106 
107 
108     If (p_cle_rec.customer_item_id <> OKE_API.G_MISS_NUM and
109   	   p_cle_rec.customer_item_id IS NOT NULL)
110     THEN
111 
112 
113      IF l_intent = 'S' THEN
114       Open l_csr;
115       Fetch l_csr Into l_dummy_val;
116       Close l_csr;
117 
118       -- if l_dummy_val still set to default, data was not found
119       If (l_dummy_val = '?') Then
120 
121   	    OKE_API.SET_MESSAGE(p_app_name		=> g_app_name,
122 					    p_msg_name		=> g_no_parent_record,
123 					    p_token1		=> g_col_name_token,
124 					    p_token1_value	=> 'CUSTOMER_ITEM_ID',
125 					    p_token2		=> g_child_table_token,
126 					    p_token2_value	=> G_VIEW,
127 					    p_token3		=> g_parent_table_token,
128 					    p_token3_value	=> 'MTL_CUSTOMER_ITEMS');
129 	    -- notify caller of an error
130          x_return_status := OKE_API.G_RET_STS_ERROR;
131       End If;
132 
133      ELSE
134   		    OKE_API.SET_MESSAGE(p_app_name		=> g_app_name,
135 					    p_msg_name		=> g_invalid_value,
136 					    p_token1		=> g_col_name_token,
137 					    p_token1_value	=> 'CUSTOMER_ITEM_ID');
138 
139 	    -- notify caller of an error
140          	x_return_status := OKE_API.G_RET_STS_ERROR;
141 
142      END IF;
143 
144     End If;
145   exception
146     when OTHERS then
147 	  -- store SQL error message on message stack
148   	  OKE_API.SET_MESSAGE(p_app_name		=> g_app_name,
149 					  p_msg_name		=> g_unexpected_error,
150 					  p_token1		=> g_sqlcode_token,
151 					  p_token1_value	=> sqlcode,
152 					  p_token2		=> g_sqlerrm_token,
153 					  p_token2_value	=> sqlerrm);
154 	   -- notify caller of an error as UNEXPETED error
155 
156         x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
157 
158         -- verify that cursor was closed
159         if l_csr%ISOPEN then
160 	      close l_csr;
161         end if;
162 
163   End validate_customer_item_id;
164 
165 
166   PROCEDURE validate_delivery_date (
167 	p_cle_rec IN cle_rec_type,
168 	x_return_status OUT NOCOPY VARCHAR2
169   ) IS
170 
171   CURSOR c_dates IS
172   select trunc(start_date)
173   from okc_k_lines_b
174   where id = p_cle_rec.k_line_id;
175 
176 
177   l_start DATE;
178 
179   BEGIN
180 
181    x_return_status := OKE_API.G_RET_STS_SUCCESS;
182 
183    OPEN c_dates;
184    FETCH c_dates INTO l_start;
185    CLOSE c_dates;
186 
187 
188     IF (p_cle_rec.delivery_date <> OKE_API.G_MISS_DATE and
189   	   p_cle_rec.delivery_date IS NOT NULL)
190     THEN
191 
192 
193      IF (l_start IS NOT NULL AND l_start > p_cle_rec.delivery_date) THEN
194 
195   		    OKE_API.SET_MESSAGE(p_app_name		=> g_app_name,
196 					    p_msg_name		=> 'OKE_WRONG_DELIVERY_DATE');
197 
198 
199 	    -- notify caller of an error
200          	x_return_status := OKE_API.G_RET_STS_ERROR;
201      END IF;
202 
203 
204     END IF;
205 
206   exception
207     when OTHERS then
208 	  -- store SQL error message on message stack
209   	  OKE_API.SET_MESSAGE(p_app_name		=> g_app_name,
210 					  p_msg_name		=> g_unexpected_error,
211 					  p_token1		=> g_sqlcode_token,
212 					  p_token1_value	=> sqlcode,
213 					  p_token2		=> g_sqlerrm_token,
214 					  p_token2_value	=> sqlerrm);
215 	   -- notify caller of an error as UNEXPETED error
216 
217         x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
218 
219   End validate_delivery_date;
220 
221 
222 
223 
224 
225   PROCEDURE validate_project_id (
226 	p_cle_rec IN cle_rec_type,
227 	x_return_status OUT  NOCOPY VARCHAR2
228   ) IS
229 
230   CURSOR l_csr IS
231   SELECT 'x' FROM PA_PROJECTS_ALL
232   WHERE PROJECT_ID = p_cle_rec.PROJECT_ID;
233 
234   l_dummy_val VARCHAR2(1) := '?';
235   l_parent_line_id NUMBER;
236   l_header_id NUMBER;
237 
238   CURSOR get_line_info IS
239   SELECT DNZ_CHR_ID, CLE_ID
240   FROM OKC_K_LINES_B
241   WHERE ID = p_cle_rec.K_LINE_ID;
242 
243   CURSOR get_higher IS
244   SELECT KE.PROJECT_ID,KE.TASK_ID
245   FROM OKC_ANCESTRYS AN, OKE_K_LINES KE
246   WHERE AN.CLE_ID=L_PARENT_LINE_ID AND KE.PROJECT_ID IS NOT NULL
247   AND AN.CLE_ID_ASCENDANT = KE.K_LINE_ID
248   ORDER BY AN.LEVEL_SEQUENCE DESC;
249 
250   CURSOR get_parent IS
251   SELECT PROJECT_ID, TASK_ID
252   FROM OKE_K_LINES
253   WHERE K_LINE_ID = L_PARENT_LINE_ID;
254 
255 
256   l_project_id_from 	NUMBER; /* the parent project */
257   l_task_id_from 	NUMBER; /* the parent task if any */
258 
259 
260 
261   CURSOR RG IS
262   SELECT 'x' FROM
263   (
264   select p.project_id pid,p.segment1
265   from pa_projects_all p
266   where p.project_id in
267   (select to_number(sub_project_id) project_id
268   from pa_fin_structures_links_v
269   start with parent_project_id = l_project_id_from
270   and parent_task_id in (select task_id from pa_tasks where project_id=l_project_id_from
271   and top_task_id=nvl(l_task_id_from,top_task_id) )
272   connect by parent_project_id = prior sub_project_id)
273   union
274   select project_id pid,segment1
275   from pa_projects_all
276   where project_id = l_project_id_from)
277   WHERE pid = p_cle_rec.PROJECT_ID;
278 
279 
280   CURSOR RG3 IS
281   SELECT 'x' FROM
282   (
283   select project_id pid,segment1
284   from pa_projects_all
285   where project_id = l_project_id_from)
286   WHERE pid = p_cle_rec.PROJECT_ID;
287 
288   cursor c_z(x_proj number, x_task number) is /* check is only needed if task is specified as well */
289   	select 'x'
290 	from   pa_fin_structures_links_v
291 	start with ((parent_project_id =  x_proj ) and parent_task_id in
292                    (select task_id from pa_tasks
293                     where  project_id = x_proj
294                     and    top_task_id = nvl(x_task, top_task_id)))
295 	connect by parent_project_id = prior sub_project_id;
296 
297 	l_exist varchar2(10) := '%';
298 
299 
300   CURSOR get_header_proj IS
301   SELECT project_id
302   from oke_k_headers
303   where k_header_id = l_header_id;
304 
305   BEGIN
306 
307     x_return_status := OKE_API.G_RET_STS_SUCCESS;
308 
309 /* get parent proj task first */
310 
311   OPEN get_line_info;
312   FETCH get_line_info INTO l_header_id,l_parent_line_id;
313   CLOSE get_line_info;
314 
315   OPEN get_parent;
316   FETCH get_parent INTO l_project_id_from,l_task_id_from;
317   CLOSE get_parent;
318 
319   IF l_project_id_from IS NULL THEN
320    OPEN get_higher;
321    FETCH get_higher INTO l_project_id_from,l_task_id_from;
322    CLOSE get_higher;
323   END IF;
324 
325   IF l_project_id_from IS NULL THEN
326    open get_header_proj;
327    fetch get_header_proj INTO l_project_id_from;
328    close get_header_proj;
329    l_task_id_from := null;
330   END IF;
331 
332 /* start checks */
333 
334 
335     If (p_cle_rec.project_id <> OKE_API.G_MISS_NUM and
336   	   p_cle_rec.project_id IS NOT NULL)
337     THEN
338       If (p_cle_rec.task_id <> OKE_API.G_MISS_NUM and
339   	   p_cle_rec.task_id IS NOT NULL) Then
340       		open c_z(l_project_id_from,l_task_id_from);
341       		fetch c_z into l_exist;
342       		close c_z;
343      		if (l_exist = '%') then
344       			Open RG3;
345       			Fetch RG3 Into l_dummy_val;
346       			Close RG3;
347       			-- if l_dummy_val still set to default, data was not found
348       			If (l_dummy_val = '?') Then
349 
350  		 	    OKE_API.SET_MESSAGE(p_app_name		=> g_app_name,
351 					    p_msg_name		=> g_no_parent_record,
352 					    p_token1		=> g_col_name_token,
353 					    p_token1_value	=> 'project_id',
354 					    p_token2		=> g_child_table_token,
355 					    p_token2_value	=> G_VIEW,
356 					    p_token3		=> g_parent_table_token,
357 					    p_token3_value	=> 'PA_PROJECTS');
358 	    -- notify caller of an error
359          			x_return_status := OKE_API.G_RET_STS_ERROR;
360 			End If;
361 		else
362 	      		Open RG;
363       			Fetch RG Into l_dummy_val;
364       			Close RG;
365       			-- if l_dummy_val still set to default, data was not found
366       			If (l_dummy_val = '?') Then
367 
368  		 	    OKE_API.SET_MESSAGE(p_app_name		=> g_app_name,
369 					    p_msg_name		=> g_no_parent_record,
370 					    p_token1		=> g_col_name_token,
371 					    p_token1_value	=> 'project_id',
372 					    p_token2		=> g_child_table_token,
373 					    p_token2_value	=> G_VIEW,
374 					    p_token3		=> g_parent_table_token,
375 					    p_token3_value	=> 'PA_PROJECTS');
376 	    -- notify caller of an error
377          			x_return_status := OKE_API.G_RET_STS_ERROR;
378 			End If;
379 		end if;
380       Else
381       			Open RG;
382       			Fetch RG Into l_dummy_val;
383       			Close RG;
384       			-- if l_dummy_val still set to default, data was not found
385       			If (l_dummy_val = '?') Then
386 
387  		 	    OKE_API.SET_MESSAGE(p_app_name		=> g_app_name,
388 					    p_msg_name		=> g_no_parent_record,
389 					    p_token1		=> g_col_name_token,
390 					    p_token1_value	=> 'project_id',
391 					    p_token2		=> g_child_table_token,
392 					    p_token2_value	=> G_VIEW,
393 					    p_token3		=> g_parent_table_token,
394 					    p_token3_value	=> 'PA_PROJECTS');
395 	    -- notify caller of an error
396          			x_return_status := OKE_API.G_RET_STS_ERROR;
397 			End If;
398 
399       End If;
400 
401     End IF;
402 
403   exception
404     when OTHERS then
405 	  -- store SQL error message on message stack
406   	  OKE_API.SET_MESSAGE(p_app_name		=> g_app_name,
407 					  p_msg_name		=> g_unexpected_error,
408 					  p_token1		=> g_sqlcode_token,
409 					  p_token1_value	=> sqlcode,
410 					  p_token2		=> g_sqlerrm_token,
411 					  p_token2_value	=> sqlerrm);
412 	   -- notify caller of an error as UNEXPETED error
413 
414         x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
415 
416         -- verify that cursor was closed
417         if l_csr%ISOPEN then
418 	      close l_csr;
419         end if;
420 
421   End validate_project_id;
422 
423     PROCEDURE validate_task_id (
424 	p_cle_rec IN cle_rec_type,
425 	x_return_status OUT NOCOPY VARCHAR2
426   ) IS
427 
428   CURSOR l_csr IS
429   SELECT 'x' FROM PA_TASKS
430   WHERE TASK_ID = p_cle_rec.TASK_ID;
431 
432   l_project_id NUMBER := p_cle_rec.project_id;
433   l_parent_line_id NUMBER;
434   l_header_id NUMBER;
435 
436   CURSOR get_line_info IS
437   SELECT DNZ_CHR_ID, CLE_ID
438   FROM OKC_K_LINES_B
439   WHERE ID = p_cle_rec.K_LINE_ID;
440 
441   CURSOR get_higher IS
442   SELECT KE.PROJECT_ID,KE.TASK_ID
443   FROM OKC_ANCESTRYS AN, OKE_K_LINES KE
444   WHERE AN.CLE_ID=L_PARENT_LINE_ID AND KE.PROJECT_ID IS NOT NULL
445   AND AN.CLE_ID_ASCENDANT = KE.K_LINE_ID
446   ORDER BY AN.LEVEL_SEQUENCE DESC;
447 
448   CURSOR get_parent IS
449   SELECT PROJECT_ID, TASK_ID
450   FROM OKE_K_LINES
451   WHERE K_LINE_ID = L_PARENT_LINE_ID;
452 
453 
454 
455   CURSOR get_header_proj IS
456   SELECT project_id
457   from oke_k_headers
458   where k_header_id = l_header_id;
459 
460   l_project_id_from 	NUMBER; /* the parent project */
461   l_task_id_from 	NUMBER; /* the parent task if any */
462 
463 
464 
465 
466 CURSOR l_top_task IS
467 SELECT 'x' FROM (
468 select task_id, task_number,task_name,description from pa_tasks
469 where parent_task_id is null
470 and (( project_id <>l_project_id_from and project_id = l_project_id)
471 or
472 ( project_id = l_project_id_from and project_id = l_project_id
473   and task_id = nvl(l_task_id_from,task_id)))     )
474 WHERE task_id = p_cle_rec.Task_ID;
475 
476 
477   l_dummy_val VARCHAR2(1) := '?';
478 
479   BEGIN
480 
481     x_return_status := OKE_API.G_RET_STS_SUCCESS;
482 
483 
484 /* get parent proj task first */
485 
486   OPEN get_line_info;
487   FETCH get_line_info INTO l_header_id,l_parent_line_id;
488   CLOSE get_line_info;
489 
490   OPEN get_parent;
491   FETCH get_parent INTO l_project_id_from,l_task_id_from;
492   CLOSE get_parent;
493 
494   IF l_project_id_from IS NULL THEN
495    OPEN get_higher;
496    FETCH get_higher INTO l_project_id_from,l_task_id_from;
497    CLOSE get_higher;
498   END IF;
499 
500   IF l_project_id_from IS NULL THEN
501    open get_header_proj;
502    fetch get_header_proj INTO l_project_id_from;
503    close get_header_proj;
504    l_task_id_from := null;
505   END IF;
506 
507 /* start checks */
508 
509 
510     If (p_cle_rec.task_id <> OKE_API.G_MISS_NUM and
511   	   p_cle_rec.task_id IS NOT NULL)
512     THEN
513 
514 
515 
516     If (p_cle_rec.project_id = OKE_API.G_MISS_NUM OR
517 	p_cle_rec.project_id IS NULL) THEN
518 
519   		    OKE_API.SET_MESSAGE(p_app_name		=> g_app_name,
520 					    p_msg_name		=> g_invalid_value,
521 					    p_token1		=> g_col_name_token,
522 					    p_token1_value	=> 'TASK_ID');
523 	    -- notify caller of an error
524          	x_return_status := OKE_API.G_RET_STS_ERROR;
525 
526     End IF;
527 
528 
529       Open l_top_task;
530       Fetch l_top_task Into l_dummy_val;
531       Close l_top_task;
532 
533       -- if l_dummy_val still set to default, data was not found
534       If (l_dummy_val = '?') Then
535 
536   	    OKE_API.SET_MESSAGE(p_app_name		=> g_app_name,
537 					    p_msg_name		=> g_no_parent_record,
538 					    p_token1		=> g_col_name_token,
539 					    p_token1_value	=> 'task_id',
540 					    p_token2		=> g_child_table_token,
541 					    p_token2_value	=> G_VIEW,
542 					    p_token3		=> g_parent_table_token,
543 					    p_token3_value	=> 'PA_TASKS');
544 	    -- notify caller of an error
545          x_return_status := OKE_API.G_RET_STS_ERROR;
546       End If;
547 
548     End If;
549   exception
550     when OTHERS then
551 	  -- store SQL error message on message stack
552   	  OKE_API.SET_MESSAGE(p_app_name		=> g_app_name,
553 					  p_msg_name		=> g_unexpected_error,
554 					  p_token1		=> g_sqlcode_token,
555 					  p_token1_value	=> sqlcode,
556 					  p_token2		=> g_sqlerrm_token,
557 					  p_token2_value	=> sqlerrm);
558 	   -- notify caller of an error as UNEXPETED error
559 
560         x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
561 
562         -- verify that cursor was closed
563         if l_csr%ISOPEN then
564 	      close l_csr;
565         end if;
566 
567   End validate_task_id;
568 
569 
570 
571     PROCEDURE validate_inventory_item_id (
572 	p_cle_rec IN cle_rec_type,
573 	x_return_status OUT NOCOPY VARCHAR2
574   ) IS
575 
576   l_dummy_val VARCHAR2(1) := '?';
577   l_org NUMBER;
578   l_lse_id NUMBER;
579 
580   CURSOR get_org IS
581   SELECT INV_ORGANIZATION_ID FROM
582   OKC_K_HEADERS_B H,OKC_K_LINES_B L
583   WHERE H.ID = L.DNZ_CHR_ID
584   AND L.ID = p_cle_rec.k_line_id;
585 
586   CURSOR get_lse_id IS
587   SELECT lse_id from okc_k_lines_b
588   WHERE ID = p_cle_rec.k_line_id;
589 
590   CURSOR l_csr IS
591   SELECT 'x' FROM OKE_SYSTEM_ITEMS_V
592   WHERE ORGANIZATION_ID = l_org
593   AND SYSDATE BETWEEN NVL(START_DATE_ACTIVE, SYSDATE - 1)
594   AND NVL(END_DATE_ACTIVE, SYSDATE + 1) AND STATUS = 'A'
595   AND ID1 = p_cle_rec.inventory_item_id;
596 
597 
598   CURSOR lnsrc IS
599     SELECT jo.object_code
600     ,      jo.from_table
601     ,      jo.where_clause
602     ,      jo.order_by_clause
603     ,      jo.name
604     FROM   okc_line_style_sources_v ls
605     ,      jtf_objects_vl jo
606     WHERE  ls.lse_id = l_lse_id
607     AND    jo.object_code = ls.jtot_object_code
608     AND sysdate BETWEEN start_date
609                     AND nvl(end_date,sysdate + 1);
610 
611   lnsrcrec  lnsrc%rowtype;
612 
613   BEGIN
614 
615     x_return_status := OKE_API.G_RET_STS_SUCCESS;
616 
617     OPEN get_org;
618     FETCH get_org INTO l_org;
619     CLOSE get_org;
620 
621     OPEN get_lse_id;
622     FETCH get_lse_id INTO l_lse_id;
623     CLOSE get_lse_id;
624 
625 
626     If (p_cle_rec.inventory_item_id <> OKE_API.G_MISS_NUM and
627   	   p_cle_rec.inventory_item_id IS NOT NULL)
628     THEN
629 
630         OPEN  lnsrc;
631         FETCH lnsrc INTO lnsrcrec;
632         CLOSE lnsrc;
633 
634         IF (lnsrcrec.Object_Code = 'OKE_ITEMS') THEN
635 
636 	      Open l_csr;
637 	      Fetch l_csr Into l_dummy_val;
638 	      Close l_csr;
639 
640   	    -- if l_dummy_val still set to default, data was not found
641      	 If (l_dummy_val = '?') Then
642 
643   		    OKE_API.SET_MESSAGE(p_app_name		=> g_app_name,
644 					    p_msg_name		=> g_no_parent_record,
645 					    p_token1		=> g_col_name_token,
646 					    p_token1_value	=> 'INVENTORY_ITEM_ID',
647 					    p_token2		=> g_child_table_token,
648 					    p_token2_value	=> G_VIEW,
649 					    p_token3		=> g_parent_table_token,
650 					    p_token3_value	=> 'OKE_SYSTEM_ITEMS_V');
651 	    -- notify caller of an error
652          	x_return_status := OKE_API.G_RET_STS_ERROR;
653     	 End If;
654 
655 	ELSE
656   		    OKE_API.SET_MESSAGE(p_app_name		=> g_app_name,
657 					    p_msg_name		=> g_invalid_value,
658 					    p_token1		=> g_col_name_token,
659 					    p_token1_value	=> 'INVENTORY_ITEM_ID');
660 
661 	    -- notify caller of an error
662          	x_return_status := OKE_API.G_RET_STS_ERROR;
663 
664 	END IF;
665     End If;
666   exception
667     when OTHERS then
668 	  -- store SQL error message on message stack
669   	  OKE_API.SET_MESSAGE(p_app_name		=> g_app_name,
670 					  p_msg_name		=> g_unexpected_error,
671 					  p_token1		=> g_sqlcode_token,
672 					  p_token1_value	=> sqlcode,
673 					  p_token2		=> g_sqlerrm_token,
674 					  p_token2_value	=> sqlerrm);
675 	   -- notify caller of an error as UNEXPETED error
676 
677         x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
678 
679         -- verify that cursor was closed
680         if l_csr%ISOPEN then
681 	      close l_csr;
682         end if;
683 
684   End validate_inventory_item_id;
685 
686 
687   PROCEDURE validate_billing_method_code (
688 	p_cle_rec IN cle_rec_type,
689 	x_return_status OUT NOCOPY VARCHAR2
690   ) IS
691 
692   CURSOR get_header IS
693   SELECT DNZ_CHR_ID
694   FROM OKC_K_LINES_B
695   WHERE ID = p_cle_rec.k_line_id;
696 
697   l_header NUMBER;
698 
699   CURSOR l_csr IS
700   SELECT 'x' FROM OKE_K_BILLING_METHODS
701   WHERE BILLING_METHOD_CODE = p_cle_rec.BILLING_METHOD_CODE
702   AND K_HEADER_ID = l_header;
703 
704   l_dummy_val VARCHAR2(1) := '?';
705 
706   BEGIN
707 
708     x_return_status := OKE_API.G_RET_STS_SUCCESS;
709 
710     OPEN get_header;
711     FETCH get_header INTO l_header;
712     CLOSE get_header;
713 
714 
715     If (p_cle_rec.billing_method_CODE <> OKE_API.G_MISS_CHAR and
716   	   p_cle_rec.billing_method_CODE IS NOT NULL)
717     THEN
718       Open l_csr;
719       Fetch l_csr Into l_dummy_val;
720       Close l_csr;
721 
722       -- if l_dummy_val still set to default, data was not found
723       If (l_dummy_val = '?') Then
724 
725   	    OKE_API.SET_MESSAGE(p_app_name	=> g_app_name,
726 				p_msg_name	=> g_no_parent_record,
727 				p_token1	=> g_col_name_token,
728 				p_token1_value	=> 'billing_method_code',
729 				p_token2	=> g_child_table_token,
730 				p_token2_value	=> G_VIEW,
731 				p_token3	=> g_parent_table_token,
732 				p_token3_value	=> 'OKE_K_BILLING_METHODS');
733 	    -- notify caller of an error
734          x_return_status := OKE_API.G_RET_STS_ERROR;
735       End If;
736 
737     End If;
738   exception
739     when OTHERS then
740 	  -- store SQL error message on message stack
741   	  OKE_API.SET_MESSAGE(p_app_name	=> g_app_name,
742 			      p_msg_name	=> g_unexpected_error,
743 			      p_token1		=> g_sqlcode_token,
744 			      p_token1_value	=> sqlcode,
745 			      p_token2		=> g_sqlerrm_token,
746 			      p_token2_value	=> sqlerrm);
747 	   -- notify caller of an error as UNEXPETED error
748 
749         x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
750 
751         -- verify that cursor was closed
752         if l_csr%ISOPEN then
753 	      close l_csr;
754         end if;
755 
756   End validate_billing_method_code;
757 
758 
759 
760   PROCEDURE validate_uom_code (
761 	p_cle_rec IN cle_rec_type,
762 	x_return_status OUT NOCOPY VARCHAR2
763   ) IS
764 
765   CURSOR l_csr1 IS
766   SELECT 'x' FROM
767   mtl_item_uoms_view
768   where inventory_item_id = p_cle_rec.inventory_item_id
769   and uom_code = p_cle_rec.uom_code;
770 
771 
772   CURSOR l_csr2 IS
773   SELECT 'x' FROM
774   mtl_units_of_measure_vl
775   where uom_code = p_cle_rec.uom_code;
776 
777 
778   l_dummy_val VARCHAR2(1) := '?';
779 
780   BEGIN
781 
782     x_return_status := OKE_API.G_RET_STS_SUCCESS;
783 
784     If (p_cle_rec.UOM_CODE <> OKE_API.G_MISS_CHAR and
785   	   p_cle_rec.UOM_CODE IS NOT NULL)
786     THEN
787 
788     IF (p_cle_rec.inventory_item_id <> OKE_API.G_MISS_NUM and
789 	p_cle_rec.inventory_item_id IS NOT NULL) THEN
790 
791       Open l_csr1;
792       Fetch l_csr1 Into l_dummy_val;
793       Close l_csr1;
794     ELSE
795       Open l_csr2;
796       Fetch l_csr2 Into l_dummy_val;
797       Close l_csr2;
798     END IF;
799 
800       -- if l_dummy_val still set to default, data was not found
801       If (l_dummy_val = '?') Then
802 
803 
804         IF (p_cle_rec.inventory_item_id <> OKE_API.G_MISS_NUM and
805 	  p_cle_rec.inventory_item_id IS NOT NULL) THEN
806 
807   	    OKE_API.SET_MESSAGE(p_app_name	=> g_app_name,
808 				p_msg_name	=> g_no_parent_record,
809 				p_token1	=> g_col_name_token,
810 				p_token1_value	=> 'UOM_CODE',
811 				p_token2	=> g_child_table_token,
812 				p_token2_value	=> G_VIEW,
813 				p_token3	=> g_parent_table_token,
814 				p_token3_value	=> 'MTL_ITEM_UOMS_VIEW');
815 	    -- notify caller of an error
816          x_return_status := OKE_API.G_RET_STS_ERROR;
817         ELSE
818   	    OKE_API.SET_MESSAGE(p_app_name	=> g_app_name,
819 				p_msg_name	=> g_no_parent_record,
820 				p_token1	=> g_col_name_token,
821 				p_token1_value	=> 'UOM_CODE',
822 				p_token2	=> g_child_table_token,
823 				p_token2_value	=> G_VIEW,
824 				p_token3	=> g_parent_table_token,
825 				p_token3_value	=> 'MTL_UNITS_OF_MEASURE_VL');
826 	    -- notify caller of an error
827          x_return_status := OKE_API.G_RET_STS_ERROR;
828         END IF;
829       End If;
830 
831     End If;
832   exception
833     when OTHERS then
834 	  -- store SQL error message on message stack
835   	  OKE_API.SET_MESSAGE(p_app_name	=> g_app_name,
836 			      p_msg_name	=> g_unexpected_error,
837 			      p_token1		=> g_sqlcode_token,
838 			      p_token1_value	=> sqlcode,
839 			      p_token2		=> g_sqlerrm_token,
840 			      p_token2_value	=> sqlerrm);
841 	   -- notify caller of an error as UNEXPETED error
842 
843         x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
844 
845         -- verify that cursor was closed
846         if l_csr1%ISOPEN then
847 	      close l_csr1;
848         end if;
849         if l_csr2%ISOPEN then
850 	      close l_csr2;
851         end if;
852 
853   End validate_uom_code;
854 
855 
856 PROCEDURE validate_priority_code(x_return_status OUT NOCOPY VARCHAR2,
857 				p_cle_rec	IN  cle_rec_type)IS
858   l_dummy_val VARCHAR2(1):= '?';
859   CURSOR l_csr IS
860   SELECT 'x'  FROM OKE_PRIORITY_CODES_VL
861   WHERE PRIORITY_CODE = p_cle_rec.priority_code;
862 
863 BEGIN
864   x_return_status := OKE_API.G_RET_STS_SUCCESS;
865 
866 
867   IF (   p_cle_rec.priority_code <> OKE_API.G_MISS_CHAR
868      AND p_cle_rec.priority_code IS NOT NULL) THEN
869 
870     OPEN l_csr;
871     FETCH l_csr INTO l_dummy_val;
872     CLOSE l_csr;
873 
874    IF (l_dummy_val = '?') THEN
875       OKE_API.SET_MESSAGE(
876         	p_app_name		=>g_app_name,
877  		p_msg_name		=>g_no_parent_record,
878 		p_token1		=>g_col_name_token,
879 		p_token1_value		=>'PRIORITY_CODE',
880 		p_token2		=>g_child_table_token,
881 		p_token2_value		=>G_VIEW,
882 		p_token3		=>g_parent_table_token,
883 		p_token3_value		=>'OKE_PRIORITY_CODES_VL');
884 
885       x_return_status := OKE_API.G_RET_STS_ERROR;
886    END IF;
887   End If;
888 
889 EXCEPTION
890   WHEN G_EXCEPTION_HALT_VALIDATION THEN
891     NULL;
892 
893   WHEN OTHERS THEN
894     -- store SQL error message on message stack
895     OKE_API.SET_MESSAGE(
896 		p_app_name		=>g_app_name,
897 		p_msg_name		=>G_UNEXPECTED_ERROR,
898 		p_token1		=>G_SQLCODE_TOKEN,
899 		p_token1_value		=>SQLCODE,
900 		p_token2		=>G_SQLERRM_TOKEN,
901 		p_token2_value		=>SQLERRM);
902   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
903 
904 END validate_priority_code;
905 
906 
907 
908 PROCEDURE validate_country_code(x_return_status OUT NOCOPY VARCHAR2,
909 				p_cle_rec	IN  cle_rec_type)IS
910   l_dummy_val VARCHAR2(1):= '?';
911 
912 
913   CURSOR l_csr IS
914   SELECT 'x'
915   FROM FND_TERRITORIES_VL
916   WHERE TERRITORY_CODE = p_cle_rec.COUNTRY_OF_ORIGIN_CODE;
917 
918 BEGIN
919   x_return_status := OKE_API.G_RET_STS_SUCCESS;
920 
921 
922   IF (   p_cle_rec.country_of_origin_code <> OKE_API.G_MISS_CHAR
923      AND p_cle_rec.country_of_origin_code IS NOT NULL) THEN
924 
925     OPEN l_csr;
926     FETCH l_csr INTO l_dummy_val;
927     CLOSE l_csr;
928 
929    IF (l_dummy_val = '?') THEN
930       OKE_API.SET_MESSAGE(
931         	p_app_name		=>g_app_name,
932  		p_msg_name		=>g_no_parent_record,
933 		p_token1		=>g_col_name_token,
934 		p_token1_value		=>'COUNTRY_OF_ORIGIN_CODE',
935 		p_token2		=>g_child_table_token,
936 		p_token2_value		=>G_VIEW,
937 		p_token3		=>g_parent_table_token,
938 		p_token3_value		=>'FND_TERRITORIES_VL');
939 
940       x_return_status := OKE_API.G_RET_STS_ERROR;
941    END IF;
942   End If;
943 
944 EXCEPTION
945   WHEN G_EXCEPTION_HALT_VALIDATION THEN
946     NULL;
947 
948   WHEN OTHERS THEN
949     -- store SQL error message on message stack
950     OKE_API.SET_MESSAGE(
951 		p_app_name		=>g_app_name,
952 		p_msg_name		=>G_UNEXPECTED_ERROR,
953 		p_token1		=>G_SQLCODE_TOKEN,
954 		p_token1_value		=>SQLCODE,
955 		p_token2		=>G_SQLERRM_TOKEN,
956 		p_token2_value		=>SQLERRM);
957   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
958 
959 END validate_country_code;
960 
961 
962 
963 
964 
965 
966 PROCEDURE validate_progress_payment_rate(x_return_status OUT NOCOPY VARCHAR2,
967 				p_cle_rec	IN  cle_rec_type)IS
968 
969 BEGIN
970   x_return_status := OKE_API.G_RET_STS_SUCCESS;
971 
972   IF (   p_cle_rec.PROGRESS_PAYMENT_FLAG <> OKE_API.G_MISS_CHAR
973      AND p_cle_rec.PROGRESS_PAYMENT_FLAG IS NOT NULL) THEN
974     IF (UPPER(p_cle_rec.PROGRESS_PAYMENT_FLAG) IN ('Y')) THEN
975      IF (   p_cle_rec.PROGRESS_PAYMENT_RATE = OKE_API.G_MISS_NUM
976       OR p_cle_rec.PROGRESS_PAYMENT_RATE IS NULL) THEN
977       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
978 		p_msg_name		=>G_REQUIRED_VALUE,
979 		p_token1		=>G_COL_NAME_TOKEN,
980 		p_token1_value		=>'PROGRESS_PAYMENT_RATE');
981       x_return_status := OKE_API.G_RET_STS_ERROR;
982       RAISE G_EXCEPTION_HALT_VALIDATION;
983      END IF;
984     END IF;
985 
986     IF (UPPER(p_cle_rec.PROGRESS_PAYMENT_FLAG) IN ('N')) THEN
987      IF (   p_cle_rec.PROGRESS_PAYMENT_RATE <> OKE_API.G_MISS_NUM
988       AND p_cle_rec.PROGRESS_PAYMENT_RATE IS NOT NULL) THEN
989       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
990 		p_msg_name		=>G_INVALID_VALUE,
991 		p_token1		=>G_COL_NAME_TOKEN,
992 		p_token1_value		=>'PROGRESS_PAYMENT_RATE');
993       x_return_status := OKE_API.G_RET_STS_ERROR;
994       RAISE G_EXCEPTION_HALT_VALIDATION;
995      END IF;
996     END IF;
997 
998 
999   END IF;
1000 
1001 EXCEPTION
1002   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1003     NULL;
1004 
1005   WHEN OTHERS THEN
1006     -- store SQL error message on message stack
1007     OKE_API.SET_MESSAGE(
1008 		p_app_name		=>g_app_name,
1009 		p_msg_name		=>G_UNEXPECTED_ERROR,
1010 		p_token1		=>G_SQLCODE_TOKEN,
1011 		p_token1_value		=>SQLCODE,
1012 		p_token2		=>G_SQLERRM_TOKEN,
1013 		p_token2_value		=>SQLERRM);
1014   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1015 
1016 END validate_progress_payment_rate;
1017 
1018 
1019 
1020 PROCEDURE validate_progress_payment_liq(x_return_status OUT NOCOPY VARCHAR2,
1021 				p_cle_rec	IN  cle_rec_type)IS
1022 
1023 BEGIN
1024   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1025 
1026   IF (   p_cle_rec.PROGRESS_PAYMENT_FLAG <> OKE_API.G_MISS_CHAR
1027      AND p_cle_rec.PROGRESS_PAYMENT_FLAG IS NOT NULL) THEN
1028     IF (UPPER(p_cle_rec.PROGRESS_PAYMENT_FLAG) IN ('Y')) THEN
1029      IF (   p_cle_rec.PROGRESS_PAYMENT_LIQ_RATE = OKE_API.G_MISS_NUM
1030       OR p_cle_rec.PROGRESS_PAYMENT_LIQ_RATE IS NULL) THEN
1031       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1032 		p_msg_name		=>G_REQUIRED_VALUE,
1033 		p_token1		=>G_COL_NAME_TOKEN,
1034 		p_token1_value		=>'PROGRESS_PAYMENT_LIQ_RATE');
1035       x_return_status := OKE_API.G_RET_STS_ERROR;
1036       RAISE G_EXCEPTION_HALT_VALIDATION;
1037      END IF;
1038     END IF;
1039 
1040     IF (UPPER(p_cle_rec.PROGRESS_PAYMENT_FLAG) IN ('N')) THEN
1041      IF (   p_cle_rec.PROGRESS_PAYMENT_LIQ_RATE <> OKE_API.G_MISS_NUM
1042       AND p_cle_rec.PROGRESS_PAYMENT_LIQ_RATE IS NOT NULL) THEN
1043       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1044 		p_msg_name		=>G_INVALID_VALUE,
1045 		p_token1		=>G_COL_NAME_TOKEN,
1046 		p_token1_value		=>'PROGRESS_PAYMENT_LIQ_RATE');
1047       x_return_status := OKE_API.G_RET_STS_ERROR;
1048       RAISE G_EXCEPTION_HALT_VALIDATION;
1049      END IF;
1050     END IF;
1051 
1052 
1053   END IF;
1054 
1055 EXCEPTION
1056   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1057     NULL;
1058 
1059   WHEN OTHERS THEN
1060     -- store SQL error message on message stack
1061     OKE_API.SET_MESSAGE(
1062 		p_app_name		=>g_app_name,
1063 		p_msg_name		=>G_UNEXPECTED_ERROR,
1064 		p_token1		=>G_SQLCODE_TOKEN,
1065 		p_token1_value		=>SQLCODE,
1066 		p_token2		=>G_SQLERRM_TOKEN,
1067 		p_token2_value		=>SQLERRM);
1068   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1069 
1070 END validate_progress_payment_liq;
1071 
1072 PROCEDURE validate_line_liquidation_rate(x_return_status OUT NOCOPY VARCHAR2,
1073 				p_cle_rec	IN  cle_rec_type)IS
1074 
1075 BEGIN
1076   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1077 
1078   IF (   p_cle_rec.PROGRESS_PAYMENT_FLAG <> OKE_API.G_MISS_CHAR
1079      AND p_cle_rec.PROGRESS_PAYMENT_FLAG IS NOT NULL) THEN
1080     IF (UPPER(p_cle_rec.PROGRESS_PAYMENT_FLAG) IN ('N')) THEN
1081      IF (   p_cle_rec.LINE_LIQUIDATION_RATE <> OKE_API.G_MISS_NUM
1082       AND p_cle_rec.LINE_LIQUIDATION_RATE IS NOT NULL) THEN
1083       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1084 		p_msg_name		=>G_INVALID_VALUE,
1085 		p_token1		=>G_COL_NAME_TOKEN,
1086 		p_token1_value		=>'LINE_LIQUIDATION_RATE');
1087       x_return_status := OKE_API.G_RET_STS_ERROR;
1088       RAISE G_EXCEPTION_HALT_VALIDATION;
1089      END IF;
1090     END IF;
1091 
1092 
1093   END IF;
1094 
1095 EXCEPTION
1096   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1097     NULL;
1098 
1099   WHEN OTHERS THEN
1100     -- store SQL error message on message stack
1101     OKE_API.SET_MESSAGE(
1102 		p_app_name		=>g_app_name,
1103 		p_msg_name		=>G_UNEXPECTED_ERROR,
1104 		p_token1		=>G_SQLCODE_TOKEN,
1105 		p_token1_value		=>SQLCODE,
1106 		p_token2		=>G_SQLERRM_TOKEN,
1107 		p_token2_value		=>SQLERRM);
1108   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1109 
1110 END validate_line_liquidation_rate;
1111 
1112 
1113 
1114 
1115 PROCEDURE validate_BILLABLE_flag(x_return_status OUT NOCOPY VARCHAR2,
1116 				p_cle_rec	IN  cle_rec_type)IS
1117 
1118 BEGIN
1119   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1120 
1121   IF (   p_cle_rec.BILLABLE_flag <> OKE_API.G_MISS_CHAR
1122      AND p_cle_rec.BILLABLE_flag IS NOT NULL) THEN
1123     IF (UPPER(p_cle_rec.BILLABLE_flag) NOT IN ('Y','N')) THEN
1124       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1125 		p_msg_name		=>G_REQUIRED_VALUE,
1126 		p_token1		=>G_COL_NAME_TOKEN,
1127 		p_token1_value		=>'BILLABLE_FLAG');
1128       x_return_status := OKE_API.G_RET_STS_ERROR;
1129       RAISE G_EXCEPTION_HALT_VALIDATION;
1130     END IF;
1131 
1132   END IF;
1133 
1134 EXCEPTION
1135   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1136     NULL;
1137 
1138   WHEN OTHERS THEN
1139     -- store SQL error message on message stack
1140     OKE_API.SET_MESSAGE(
1141 		p_app_name		=>g_app_name,
1142 		p_msg_name		=>G_UNEXPECTED_ERROR,
1143 		p_token1		=>G_SQLCODE_TOKEN,
1144 		p_token1_value		=>SQLCODE,
1145 		p_token2		=>G_SQLERRM_TOKEN,
1146 		p_token2_value		=>SQLERRM);
1147   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1148 
1149 END validate_BILLABLE_flag;
1150 
1151 
1152 
1153 
1154 PROCEDURE validate_SHIPPABLE_flag(x_return_status OUT NOCOPY VARCHAR2,
1155 				p_cle_rec	IN  cle_rec_type)IS
1156 
1157 BEGIN
1158   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1159 
1160   IF (   p_cle_rec.SHIPPABLE_flag <> OKE_API.G_MISS_CHAR
1161      AND p_cle_rec.SHIPPABLE_flag IS NOT NULL) THEN
1162     IF (UPPER(p_cle_rec.SHIPPABLE_flag) NOT IN ('Y','N')) THEN
1163       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1164 		p_msg_name		=>G_REQUIRED_VALUE,
1165 		p_token1		=>G_COL_NAME_TOKEN,
1166 		p_token1_value		=>'SHIPPABLE_FLAG');
1167       x_return_status := OKE_API.G_RET_STS_ERROR;
1168       RAISE G_EXCEPTION_HALT_VALIDATION;
1169     END IF;
1170 
1171   END IF;
1172 
1173 EXCEPTION
1174   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1175     NULL;
1176 
1177   WHEN OTHERS THEN
1178     -- store SQL error message on message stack
1179     OKE_API.SET_MESSAGE(
1180 		p_app_name		=>g_app_name,
1181 		p_msg_name		=>G_UNEXPECTED_ERROR,
1182 		p_token1		=>G_SQLCODE_TOKEN,
1183 		p_token1_value		=>SQLCODE,
1184 		p_token2		=>G_SQLERRM_TOKEN,
1185 		p_token2_value		=>SQLERRM);
1186   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1187 
1188 END validate_SHIPPABLE_flag;
1189 
1190 
1191 
1192 PROCEDURE validate_SUBCONTRACTED_flag(x_return_status OUT NOCOPY VARCHAR2,
1193 				p_cle_rec	IN  cle_rec_type)IS
1194 
1195 BEGIN
1196   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1197 
1198   IF (   p_cle_rec.SUBCONTRACTED_flag <> OKE_API.G_MISS_CHAR
1199      AND p_cle_rec.SUBCONTRACTED_flag IS NOT NULL) THEN
1200     IF (UPPER(p_cle_rec.SUBCONTRACTED_flag) NOT IN ('Y','N')) THEN
1201       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1202 		p_msg_name		=>G_REQUIRED_VALUE,
1203 		p_token1		=>G_COL_NAME_TOKEN,
1204 		p_token1_value		=>'SUBCONTRACTED_FLAG');
1205       x_return_status := OKE_API.G_RET_STS_ERROR;
1206       RAISE G_EXCEPTION_HALT_VALIDATION;
1207     END IF;
1208 
1209   END IF;
1210 
1211 EXCEPTION
1212   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1213     NULL;
1214 
1215   WHEN OTHERS THEN
1216     -- store SQL error message on message stack
1217     OKE_API.SET_MESSAGE(
1218 		p_app_name		=>g_app_name,
1219 		p_msg_name		=>G_UNEXPECTED_ERROR,
1220 		p_token1		=>G_SQLCODE_TOKEN,
1221 		p_token1_value		=>SQLCODE,
1222 		p_token2		=>G_SQLERRM_TOKEN,
1223 		p_token2_value		=>SQLERRM);
1224   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1225 
1226 END validate_SUBCONTRACTED_flag;
1227 
1228 
1229 
1230 
1231 PROCEDURE validate_DELIVERY_ORDER_flag(x_return_status OUT NOCOPY VARCHAR2,
1232 				p_cle_rec	IN  cle_rec_type)IS
1233 
1234 BEGIN
1235   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1236 
1237   IF (   p_cle_rec.DELIVERY_ORDER_flag <> OKE_API.G_MISS_CHAR
1238      AND p_cle_rec.DELIVERY_ORDER_flag IS NOT NULL) THEN
1239     IF (UPPER(p_cle_rec.DELIVERY_ORDER_flag) NOT IN ('Y','N')) THEN
1240       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1241 		p_msg_name		=>G_REQUIRED_VALUE,
1242 		p_token1		=>G_COL_NAME_TOKEN,
1243 		p_token1_value		=>'DELIVERY_ORDER_FLAG');
1244       x_return_status := OKE_API.G_RET_STS_ERROR;
1245       RAISE G_EXCEPTION_HALT_VALIDATION;
1246     END IF;
1247 
1248   END IF;
1249 
1250 EXCEPTION
1251   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1252     NULL;
1253 
1254   WHEN OTHERS THEN
1255     -- store SQL error message on message stack
1256     OKE_API.SET_MESSAGE(
1257 		p_app_name		=>g_app_name,
1258 		p_msg_name		=>G_UNEXPECTED_ERROR,
1259 		p_token1		=>G_SQLCODE_TOKEN,
1260 		p_token1_value		=>SQLCODE,
1261 		p_token2		=>G_SQLERRM_TOKEN,
1262 		p_token2_value		=>SQLERRM);
1263   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1264 
1265 END validate_DELIVERY_ORDER_flag;
1266 
1267 
1268 
1269 PROCEDURE validate_SPLITED_flag(x_return_status OUT NOCOPY VARCHAR2,
1270 				p_cle_rec	IN  cle_rec_type)IS
1271 
1272 BEGIN
1273   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1274 
1275   IF (   p_cle_rec.SPLITED_flag <> OKE_API.G_MISS_CHAR
1276      AND p_cle_rec.SPLITED_flag IS NOT NULL) THEN
1277     IF (UPPER(p_cle_rec.SPLITED_flag) NOT IN ('Y','N')) THEN
1278       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1279 		p_msg_name		=>G_REQUIRED_VALUE,
1280 		p_token1		=>G_COL_NAME_TOKEN,
1281 		p_token1_value		=>'SPLITED_FLAG');
1282       x_return_status := OKE_API.G_RET_STS_ERROR;
1283       RAISE G_EXCEPTION_HALT_VALIDATION;
1284     END IF;
1285 
1286   END IF;
1287 
1288 EXCEPTION
1289   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1290     NULL;
1291 
1292   WHEN OTHERS THEN
1293     -- store SQL error message on message stack
1294     OKE_API.SET_MESSAGE(
1295 		p_app_name		=>g_app_name,
1296 		p_msg_name		=>G_UNEXPECTED_ERROR,
1297 		p_token1		=>G_SQLCODE_TOKEN,
1298 		p_token1_value		=>SQLCODE,
1299 		p_token2		=>G_SQLERRM_TOKEN,
1300 		p_token2_value		=>SQLERRM);
1301   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1302 
1303 END validate_SPLITED_flag;
1304 
1305 
1306 
1307 
1308 PROCEDURE validate_COMPLETED_flag(x_return_status OUT NOCOPY VARCHAR2,
1309 				p_cle_rec	IN  cle_rec_type)IS
1310 
1311 BEGIN
1312   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1313 
1314   IF (   p_cle_rec.COMPLETED_flag <> OKE_API.G_MISS_CHAR
1315      AND p_cle_rec.COMPLETED_flag IS NOT NULL) THEN
1316     IF (UPPER(p_cle_rec.COMPLETED_flag) NOT IN ('Y','N')) THEN
1317       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1318 		p_msg_name		=>G_REQUIRED_VALUE,
1319 		p_token1		=>G_COL_NAME_TOKEN,
1320 		p_token1_value		=>'COMPLETED_FLAG');
1321       x_return_status := OKE_API.G_RET_STS_ERROR;
1322       RAISE G_EXCEPTION_HALT_VALIDATION;
1323     END IF;
1324 
1325   END IF;
1326 
1327 EXCEPTION
1328   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1329     NULL;
1330 
1331   WHEN OTHERS THEN
1332     -- store SQL error message on message stack
1333     OKE_API.SET_MESSAGE(
1334 		p_app_name		=>g_app_name,
1335 		p_msg_name		=>G_UNEXPECTED_ERROR,
1336 		p_token1		=>G_SQLCODE_TOKEN,
1337 		p_token1_value		=>SQLCODE,
1338 		p_token2		=>G_SQLERRM_TOKEN,
1339 		p_token2_value		=>SQLERRM);
1340   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1341 
1342 END validate_COMPLETED_flag;
1343 
1344 
1345 
1346 PROCEDURE validate_NSP_flag(x_return_status OUT NOCOPY VARCHAR2,
1347 				p_cle_rec	IN  cle_rec_type)IS
1348 
1349 BEGIN
1350   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1351 
1352   IF (   p_cle_rec.NSP_flag <> OKE_API.G_MISS_CHAR
1353      AND p_cle_rec.NSP_flag IS NOT NULL) THEN
1354     IF (UPPER(p_cle_rec.NSP_flag) NOT IN ('Y','N')) THEN
1355       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1356 		p_msg_name		=>G_REQUIRED_VALUE,
1357 		p_token1		=>G_COL_NAME_TOKEN,
1358 		p_token1_value		=>'NSP_FLAG');
1359       x_return_status := OKE_API.G_RET_STS_ERROR;
1360       RAISE G_EXCEPTION_HALT_VALIDATION;
1361     END IF;
1362 
1363   END IF;
1364 
1365 EXCEPTION
1366   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1367     NULL;
1368 
1369   WHEN OTHERS THEN
1370     -- store SQL error message on message stack
1371     OKE_API.SET_MESSAGE(
1372 		p_app_name		=>g_app_name,
1373 		p_msg_name		=>G_UNEXPECTED_ERROR,
1374 		p_token1		=>G_SQLCODE_TOKEN,
1375 		p_token1_value		=>SQLCODE,
1376 		p_token2		=>G_SQLERRM_TOKEN,
1377 		p_token2_value		=>SQLERRM);
1378   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1379 
1380 END validate_NSP_flag;
1381 
1382 
1383 
1384 
1385 PROCEDURE validate_DROP_SHIPPED_flag(x_return_status OUT NOCOPY VARCHAR2,
1386 				p_cle_rec	IN  cle_rec_type)IS
1387 
1388 BEGIN
1389   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1390 
1391   IF (   p_cle_rec.DROP_SHIPPED_flag <> OKE_API.G_MISS_CHAR
1392      AND p_cle_rec.DROP_SHIPPED_flag IS NOT NULL) THEN
1393     IF (UPPER(p_cle_rec.DROP_SHIPPED_flag) NOT IN ('Y','N')) THEN
1394       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1395 		p_msg_name		=>G_REQUIRED_VALUE,
1396 		p_token1		=>G_COL_NAME_TOKEN,
1397 		p_token1_value		=>'DROP_SHIPPED_FLAG');
1398       x_return_status := OKE_API.G_RET_STS_ERROR;
1399       RAISE G_EXCEPTION_HALT_VALIDATION;
1400     END IF;
1401 
1402   END IF;
1403 
1404 EXCEPTION
1405   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1406     NULL;
1407 
1408   WHEN OTHERS THEN
1409     -- store SQL error message on message stack
1410     OKE_API.SET_MESSAGE(
1411 		p_app_name		=>g_app_name,
1412 		p_msg_name		=>G_UNEXPECTED_ERROR,
1413 		p_token1		=>G_SQLCODE_TOKEN,
1414 		p_token1_value		=>SQLCODE,
1415 		p_token2		=>G_SQLERRM_TOKEN,
1416 		p_token2_value		=>SQLERRM);
1417   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1418 
1419 END validate_DROP_SHIPPED_flag;
1420 
1421 
1422 
1423 PROCEDURE validate_CUSTOMER_APPROVAL_REQ(x_return_status OUT NOCOPY VARCHAR2,
1424 				p_cle_rec	IN  cle_rec_type)IS
1425 
1426 BEGIN
1427   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1428 
1429   IF (   p_cle_rec.CUSTOMER_APPROVAL_REQ_flag <> OKE_API.G_MISS_CHAR
1430      AND p_cle_rec.CUSTOMER_APPROVAL_REQ_flag IS NOT NULL) THEN
1431     IF (UPPER(p_cle_rec.CUSTOMER_APPROVAL_REQ_flag) NOT IN ('Y','N')) THEN
1432       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1433 		p_msg_name		=>G_REQUIRED_VALUE,
1434 		p_token1		=>G_COL_NAME_TOKEN,
1435 		p_token1_value		=>'CUSTOMER_APPROVAL_REQ_FLAG');
1436       x_return_status := OKE_API.G_RET_STS_ERROR;
1437       RAISE G_EXCEPTION_HALT_VALIDATION;
1438     END IF;
1439 
1440   END IF;
1441 
1442 EXCEPTION
1443   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1444     NULL;
1445 
1446   WHEN OTHERS THEN
1447     -- store SQL error message on message stack
1448     OKE_API.SET_MESSAGE(
1449 		p_app_name		=>g_app_name,
1450 		p_msg_name		=>G_UNEXPECTED_ERROR,
1451 		p_token1		=>G_SQLCODE_TOKEN,
1452 		p_token1_value		=>SQLCODE,
1453 		p_token2		=>G_SQLERRM_TOKEN,
1454 		p_token2_value		=>SQLERRM);
1455   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1456 
1457 END validate_CUSTOMER_APPROVAL_REQ;
1458 
1459 
1460 
1461 
1462 PROCEDURE validate_INSPECTION_REQ_flag(x_return_status OUT NOCOPY VARCHAR2,
1463 				p_cle_rec	IN  cle_rec_type)IS
1464 
1465 BEGIN
1466   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1467 
1468   IF (   p_cle_rec.INSPECTION_REQ_flag <> OKE_API.G_MISS_CHAR
1469      AND p_cle_rec.INSPECTION_REQ_flag IS NOT NULL) THEN
1470     IF (UPPER(p_cle_rec.INSPECTION_REQ_flag) NOT IN ('Y','N')) THEN
1471       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1472 		p_msg_name		=>G_REQUIRED_VALUE,
1473 		p_token1		=>G_COL_NAME_TOKEN,
1474 		p_token1_value		=>'INSPECTION_REQ_FLAG');
1475       x_return_status := OKE_API.G_RET_STS_ERROR;
1476       RAISE G_EXCEPTION_HALT_VALIDATION;
1477     END IF;
1478 
1479   END IF;
1480 
1481 EXCEPTION
1482   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1483     NULL;
1484 
1485   WHEN OTHERS THEN
1486     -- store SQL error message on message stack
1487     OKE_API.SET_MESSAGE(
1488 		p_app_name		=>g_app_name,
1489 		p_msg_name		=>G_UNEXPECTED_ERROR,
1490 		p_token1		=>G_SQLCODE_TOKEN,
1491 		p_token1_value		=>SQLCODE,
1492 		p_token2		=>G_SQLERRM_TOKEN,
1493 		p_token2_value		=>SQLERRM);
1494   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1495 
1496 END validate_INSPECTION_REQ_flag;
1497 
1498 
1499 
1500 PROCEDURE validate_INTERIM_RPT_REQ_flag(x_return_status OUT NOCOPY VARCHAR2,
1501 				p_cle_rec	IN  cle_rec_type)IS
1502 
1503 BEGIN
1504   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1505 
1506   IF (   p_cle_rec.INTERIM_RPT_REQ_flag <> OKE_API.G_MISS_CHAR
1507      AND p_cle_rec.INTERIM_RPT_REQ_flag IS NOT NULL) THEN
1508     IF (UPPER(p_cle_rec.INTERIM_RPT_REQ_flag) NOT IN ('Y','N')) THEN
1509       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1510 		p_msg_name		=>G_REQUIRED_VALUE,
1511 		p_token1		=>G_COL_NAME_TOKEN,
1512 		p_token1_value		=>'INTERIM_RPT_REQ_FLAG');
1513       x_return_status := OKE_API.G_RET_STS_ERROR;
1514       RAISE G_EXCEPTION_HALT_VALIDATION;
1515     END IF;
1516 
1517   END IF;
1518 
1519 EXCEPTION
1520   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1521     NULL;
1522 
1523   WHEN OTHERS THEN
1524     -- store SQL error message on message stack
1525     OKE_API.SET_MESSAGE(
1526 		p_app_name		=>g_app_name,
1527 		p_msg_name		=>G_UNEXPECTED_ERROR,
1528 		p_token1		=>G_SQLCODE_TOKEN,
1529 		p_token1_value		=>SQLCODE,
1530 		p_token2		=>G_SQLERRM_TOKEN,
1531 		p_token2_value		=>SQLERRM);
1532   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1533 
1534 END validate_INTERIM_RPT_REQ_flag;
1535 
1536 
1537 
1538 
1539 PROCEDURE validate_SUBJ_A133_flag(x_return_status OUT NOCOPY VARCHAR2,
1540 				p_cle_rec	IN  cle_rec_type)IS
1541 
1542 BEGIN
1543   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1544 
1545   IF (   p_cle_rec.SUBJ_A133_flag <> OKE_API.G_MISS_CHAR
1546      AND p_cle_rec.SUBJ_A133_flag IS NOT NULL) THEN
1547     IF (UPPER(p_cle_rec.SUBJ_A133_flag) NOT IN ('Y','N')) THEN
1548       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1549 		p_msg_name		=>G_REQUIRED_VALUE,
1550 		p_token1		=>G_COL_NAME_TOKEN,
1551 		p_token1_value		=>'SUBJ_A133_FLAG');
1552       x_return_status := OKE_API.G_RET_STS_ERROR;
1553       RAISE G_EXCEPTION_HALT_VALIDATION;
1554     END IF;
1555 
1556   END IF;
1557 
1558 EXCEPTION
1559   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1560     NULL;
1561 
1562   WHEN OTHERS THEN
1563     -- store SQL error message on message stack
1564     OKE_API.SET_MESSAGE(
1565 		p_app_name		=>g_app_name,
1566 		p_msg_name		=>G_UNEXPECTED_ERROR,
1567 		p_token1		=>G_SQLCODE_TOKEN,
1568 		p_token1_value		=>SQLCODE,
1569 		p_token2		=>G_SQLERRM_TOKEN,
1570 		p_token2_value		=>SQLERRM);
1571   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1572 
1573 END validate_SUBJ_A133_flag;
1574 
1575 
1576 
1577 PROCEDURE validate_EXPORT_flag(x_return_status OUT NOCOPY VARCHAR2,
1578 				p_cle_rec	IN  cle_rec_type)IS
1579 
1580 BEGIN
1581   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1582 
1583   IF (   p_cle_rec.EXPORT_flag <> OKE_API.G_MISS_CHAR
1584      AND p_cle_rec.EXPORT_flag IS NOT NULL) THEN
1585     IF (UPPER(p_cle_rec.EXPORT_flag) NOT IN ('Y','N')) THEN
1586       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1587 		p_msg_name		=>G_REQUIRED_VALUE,
1588 		p_token1		=>G_COL_NAME_TOKEN,
1589 		p_token1_value		=>'EXPORT_FLAG');
1590       x_return_status := OKE_API.G_RET_STS_ERROR;
1591       RAISE G_EXCEPTION_HALT_VALIDATION;
1592     END IF;
1593 
1594   END IF;
1595 
1596 EXCEPTION
1597   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1598     NULL;
1599 
1600   WHEN OTHERS THEN
1601     -- store SQL error message on message stack
1602     OKE_API.SET_MESSAGE(
1603 		p_app_name		=>g_app_name,
1604 		p_msg_name		=>G_UNEXPECTED_ERROR,
1605 		p_token1		=>G_SQLCODE_TOKEN,
1606 		p_token1_value		=>SQLCODE,
1607 		p_token2		=>G_SQLERRM_TOKEN,
1608 		p_token2_value		=>SQLERRM);
1609   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1610 
1611 END validate_EXPORT_flag;
1612 
1613 
1614 
1615 
1616 PROCEDURE validate_CFE_REQ_flag(x_return_status OUT NOCOPY VARCHAR2,
1617 				p_cle_rec	IN  cle_rec_type)IS
1618 
1619 BEGIN
1620   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1621 
1622   IF (   p_cle_rec.CFE_REQ_flag <> OKE_API.G_MISS_CHAR
1623      AND p_cle_rec.CFE_REQ_flag IS NOT NULL) THEN
1624     IF (UPPER(p_cle_rec.CFE_REQ_flag) NOT IN ('Y','N')) THEN
1625       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1626 		p_msg_name		=>G_REQUIRED_VALUE,
1627 		p_token1		=>G_COL_NAME_TOKEN,
1628 		p_token1_value		=>'CFE_REQ_FLAG');
1629       x_return_status := OKE_API.G_RET_STS_ERROR;
1630       RAISE G_EXCEPTION_HALT_VALIDATION;
1631     END IF;
1632 
1633   END IF;
1634 
1635 EXCEPTION
1636   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1637     NULL;
1638 
1639   WHEN OTHERS THEN
1640     -- store SQL error message on message stack
1641     OKE_API.SET_MESSAGE(
1642 		p_app_name		=>g_app_name,
1643 		p_msg_name		=>G_UNEXPECTED_ERROR,
1644 		p_token1		=>G_SQLCODE_TOKEN,
1645 		p_token1_value		=>SQLCODE,
1646 		p_token2		=>G_SQLERRM_TOKEN,
1647 		p_token2_value		=>SQLERRM);
1648   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1649 
1650 END validate_CFE_REQ_flag;
1651 
1652 
1653 
1654 PROCEDURE validate_COP_REQUIRED_flag(x_return_status OUT NOCOPY VARCHAR2,
1655 				p_cle_rec	IN  cle_rec_type)IS
1656 
1657 BEGIN
1658   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1659 
1660   IF (   p_cle_rec.COP_REQUIRED_flag <> OKE_API.G_MISS_CHAR
1661      AND p_cle_rec.COP_REQUIRED_flag IS NOT NULL) THEN
1662     IF (UPPER(p_cle_rec.COP_REQUIRED_flag) NOT IN ('Y','N')) THEN
1663       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1664 		p_msg_name		=>G_REQUIRED_VALUE,
1665 		p_token1		=>G_COL_NAME_TOKEN,
1666 		p_token1_value		=>'COP_REQUIRED_FLAG');
1667       x_return_status := OKE_API.G_RET_STS_ERROR;
1668       RAISE G_EXCEPTION_HALT_VALIDATION;
1669     END IF;
1670 
1671   END IF;
1672 
1673 EXCEPTION
1674   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1675     NULL;
1676 
1677   WHEN OTHERS THEN
1678     -- store SQL error message on message stack
1679     OKE_API.SET_MESSAGE(
1680 		p_app_name		=>g_app_name,
1681 		p_msg_name		=>G_UNEXPECTED_ERROR,
1682 		p_token1		=>G_SQLCODE_TOKEN,
1683 		p_token1_value		=>SQLCODE,
1684 		p_token2		=>G_SQLERRM_TOKEN,
1685 		p_token2_value		=>SQLERRM);
1686   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1687 
1688 END validate_COP_REQUIRED_flag;
1689 
1690 
1691 
1692 
1693 PROCEDURE validate_DCAA_AUDIT_REQ_flag(x_return_status OUT NOCOPY VARCHAR2,
1694 				p_cle_rec	IN  cle_rec_type)IS
1695 
1696 BEGIN
1697   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1698 
1699   IF (   p_cle_rec.DCAA_AUDIT_REQ_flag <> OKE_API.G_MISS_CHAR
1700      AND p_cle_rec.DCAA_AUDIT_REQ_flag IS NOT NULL) THEN
1701     IF (UPPER(p_cle_rec.DCAA_AUDIT_REQ_flag) NOT IN ('Y','N')) THEN
1702       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1703 		p_msg_name		=>G_REQUIRED_VALUE,
1704 		p_token1		=>G_COL_NAME_TOKEN,
1705 		p_token1_value		=>'DCAA_AUDIT_REQ_FLAG');
1706       x_return_status := OKE_API.G_RET_STS_ERROR;
1707       RAISE G_EXCEPTION_HALT_VALIDATION;
1708     END IF;
1709 
1710   END IF;
1711 
1712 EXCEPTION
1713   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1714     NULL;
1715 
1716   WHEN OTHERS THEN
1717     -- store SQL error message on message stack
1718     OKE_API.SET_MESSAGE(
1719 		p_app_name		=>g_app_name,
1720 		p_msg_name		=>G_UNEXPECTED_ERROR,
1721 		p_token1		=>G_SQLCODE_TOKEN,
1722 		p_token1_value		=>SQLCODE,
1723 		p_token2		=>G_SQLERRM_TOKEN,
1724 		p_token2_value		=>SQLERRM);
1725   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1726 
1727 END validate_DCAA_AUDIT_REQ_flag;
1728 
1729 
1730 
1731 PROCEDURE validate_DEFINITIZED_flag(x_return_status OUT NOCOPY VARCHAR2,
1732 				p_cle_rec	IN  cle_rec_type)IS
1733 
1734 BEGIN
1735   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1736 
1737   IF (   p_cle_rec.DEFINITIZED_flag <> OKE_API.G_MISS_CHAR
1738      AND p_cle_rec.DEFINITIZED_flag IS NOT NULL) THEN
1739     IF (UPPER(p_cle_rec.DEFINITIZED_flag) NOT IN ('Y','N')) THEN
1740       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1741 		p_msg_name		=>G_REQUIRED_VALUE,
1742 		p_token1		=>G_COL_NAME_TOKEN,
1743 		p_token1_value		=>'DEFINITIZED_FLAG');
1744       x_return_status := OKE_API.G_RET_STS_ERROR;
1745       RAISE G_EXCEPTION_HALT_VALIDATION;
1746     END IF;
1747 
1748   END IF;
1749 
1750 EXCEPTION
1751   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1752     NULL;
1753 
1754   WHEN OTHERS THEN
1755     -- store SQL error message on message stack
1756     OKE_API.SET_MESSAGE(
1757 		p_app_name		=>g_app_name,
1758 		p_msg_name		=>G_UNEXPECTED_ERROR,
1759 		p_token1		=>G_SQLCODE_TOKEN,
1760 		p_token1_value		=>SQLCODE,
1761 		p_token2		=>G_SQLERRM_TOKEN,
1762 		p_token2_value		=>SQLERRM);
1763   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1764 
1765 END validate_DEFINITIZED_flag;
1766 
1767 
1768 
1769 
1770 PROCEDURE validate_BILL_UNDEFINITIZED(x_return_status OUT NOCOPY VARCHAR2,
1771 				p_cle_rec	IN  cle_rec_type)IS
1772 
1773 BEGIN
1774   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1775 
1776   IF (   p_cle_rec.BILL_UNDEFINITIZED_flag <> OKE_API.G_MISS_CHAR
1777      AND p_cle_rec.BILL_UNDEFINITIZED_flag IS NOT NULL) THEN
1778     IF (UPPER(p_cle_rec.BILL_UNDEFINITIZED_flag) NOT IN ('Y','N')) THEN
1779       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1780 		p_msg_name		=>G_REQUIRED_VALUE,
1781 		p_token1		=>G_COL_NAME_TOKEN,
1782 		p_token1_value		=>'BILL_UNDEFINITIZED_FLAG');
1783       x_return_status := OKE_API.G_RET_STS_ERROR;
1784       RAISE G_EXCEPTION_HALT_VALIDATION;
1785     END IF;
1786 
1787   END IF;
1788 
1789 EXCEPTION
1790   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1791     NULL;
1792 
1793   WHEN OTHERS THEN
1794     -- store SQL error message on message stack
1795     OKE_API.SET_MESSAGE(
1796 		p_app_name		=>g_app_name,
1797 		p_msg_name		=>G_UNEXPECTED_ERROR,
1798 		p_token1		=>G_SQLCODE_TOKEN,
1799 		p_token1_value		=>SQLCODE,
1800 		p_token2		=>G_SQLERRM_TOKEN,
1801 		p_token2_value		=>SQLERRM);
1802   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1803 
1804 END validate_BILL_UNDEFINITIZED;
1805 
1806 
1807 
1808 PROCEDURE validate_NTE_WARNING_flag(x_return_status OUT NOCOPY VARCHAR2,
1809 				p_cle_rec	IN  cle_rec_type)IS
1810 
1811 BEGIN
1812   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1813 
1814   IF (   p_cle_rec.NTE_WARNING_flag <> OKE_API.G_MISS_CHAR
1815      AND p_cle_rec.NTE_WARNING_flag IS NOT NULL) THEN
1816     IF (UPPER(p_cle_rec.NTE_WARNING_flag) NOT IN ('Y','N')) THEN
1817       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1818 		p_msg_name		=>G_REQUIRED_VALUE,
1819 		p_token1		=>G_COL_NAME_TOKEN,
1820 		p_token1_value		=>'NTE_WARNING_FLAG');
1821       x_return_status := OKE_API.G_RET_STS_ERROR;
1822       RAISE G_EXCEPTION_HALT_VALIDATION;
1823     END IF;
1824 
1825   END IF;
1826 
1827 EXCEPTION
1828   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1829     NULL;
1830 
1831   WHEN OTHERS THEN
1832     -- store SQL error message on message stack
1833     OKE_API.SET_MESSAGE(
1834 		p_app_name		=>g_app_name,
1835 		p_msg_name		=>G_UNEXPECTED_ERROR,
1836 		p_token1		=>G_SQLCODE_TOKEN,
1837 		p_token1_value		=>SQLCODE,
1838 		p_token2		=>G_SQLERRM_TOKEN,
1839 		p_token2_value		=>SQLERRM);
1840   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1841 
1842 END validate_NTE_WARNING_flag;
1843 
1844 
1845 
1846 
1847 PROCEDURE validate_FINANCIAL_CTRL_flag(x_return_status OUT NOCOPY VARCHAR2,
1848 				p_cle_rec	IN  cle_rec_type)IS
1849 
1850 BEGIN
1851   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1852 
1853   IF (   p_cle_rec.FINANCIAL_CTRL_flag <> OKE_API.G_MISS_CHAR
1854      AND p_cle_rec.FINANCIAL_CTRL_flag IS NOT NULL) THEN
1855     IF (UPPER(p_cle_rec.FINANCIAL_CTRL_flag) NOT IN ('Y','N')) THEN
1856       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1857 		p_msg_name		=>G_REQUIRED_VALUE,
1858 		p_token1		=>G_COL_NAME_TOKEN,
1859 		p_token1_value		=>'FINANCIAL_CTRL_FLAG');
1860       x_return_status := OKE_API.G_RET_STS_ERROR;
1861       RAISE G_EXCEPTION_HALT_VALIDATION;
1862     END IF;
1863 
1864   END IF;
1865 
1866 EXCEPTION
1867   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1868     NULL;
1869 
1870   WHEN OTHERS THEN
1871     -- store SQL error message on message stack
1872     OKE_API.SET_MESSAGE(
1873 		p_app_name		=>g_app_name,
1874 		p_msg_name		=>G_UNEXPECTED_ERROR,
1875 		p_token1		=>G_SQLCODE_TOKEN,
1876 		p_token1_value		=>SQLCODE,
1877 		p_token2		=>G_SQLERRM_TOKEN,
1878 		p_token2_value		=>SQLERRM);
1879   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1880 
1881 END validate_FINANCIAL_CTRL_flag;
1882 
1883 
1884 
1885 PROCEDURE validate_C_SCS_flag(x_return_status OUT NOCOPY VARCHAR2,
1886 				p_cle_rec	IN  cle_rec_type)IS
1887 
1888 BEGIN
1889   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1890 
1891   IF (   p_cle_rec.C_SCS_flag <> OKE_API.G_MISS_CHAR
1892      AND p_cle_rec.C_SCS_flag IS NOT NULL) THEN
1893     IF (UPPER(p_cle_rec.C_SCS_flag) NOT IN ('Y','N')) THEN
1894       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1895 		p_msg_name		=>G_REQUIRED_VALUE,
1896 		p_token1		=>G_COL_NAME_TOKEN,
1897 		p_token1_value		=>'C_SCS_FLAG');
1898       x_return_status := OKE_API.G_RET_STS_ERROR;
1899       RAISE G_EXCEPTION_HALT_VALIDATION;
1900     END IF;
1901 
1902   END IF;
1903 
1904 EXCEPTION
1905   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1906     NULL;
1907 
1908   WHEN OTHERS THEN
1909     -- store SQL error message on message stack
1910     OKE_API.SET_MESSAGE(
1911 		p_app_name		=>g_app_name,
1912 		p_msg_name		=>G_UNEXPECTED_ERROR,
1913 		p_token1		=>G_SQLCODE_TOKEN,
1914 		p_token1_value		=>SQLCODE,
1915 		p_token2		=>G_SQLERRM_TOKEN,
1916 		p_token2_value		=>SQLERRM);
1917   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1918 
1919 END validate_C_SCS_flag;
1920 
1921 
1922 
1923 
1924 PROCEDURE validate_C_SSR_flag(x_return_status OUT NOCOPY VARCHAR2,
1925 				p_cle_rec	IN  cle_rec_type)IS
1926 
1927 BEGIN
1928   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1929 
1930   IF (   p_cle_rec.C_SSR_flag <> OKE_API.G_MISS_CHAR
1931      AND p_cle_rec.C_SSR_flag IS NOT NULL) THEN
1932     IF (UPPER(p_cle_rec.C_SSR_flag) NOT IN ('Y','N')) THEN
1933       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1934 		p_msg_name		=>G_REQUIRED_VALUE,
1935 		p_token1		=>G_COL_NAME_TOKEN,
1936 		p_token1_value		=>'C_SSR_FLAG');
1937       x_return_status := OKE_API.G_RET_STS_ERROR;
1938       RAISE G_EXCEPTION_HALT_VALIDATION;
1939     END IF;
1940 
1941   END IF;
1942 
1943 EXCEPTION
1944   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1945     NULL;
1946 
1947   WHEN OTHERS THEN
1948     -- store SQL error message on message stack
1949     OKE_API.SET_MESSAGE(
1950 		p_app_name		=>g_app_name,
1951 		p_msg_name		=>G_UNEXPECTED_ERROR,
1952 		p_token1		=>G_SQLCODE_TOKEN,
1953 		p_token1_value		=>SQLCODE,
1954 		p_token2		=>G_SQLERRM_TOKEN,
1955 		p_token2_value		=>SQLERRM);
1956   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1957 
1958 END validate_C_SSR_flag;
1959 
1960 
1961 
1962 PROCEDURE validate_PROGRESS_PAYMENT_flag(x_return_status OUT NOCOPY VARCHAR2,
1963 				p_cle_rec	IN  cle_rec_type)IS
1964 
1965 BEGIN
1966   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1967 
1968   IF (   p_cle_rec.PROGRESS_PAYMENT_flag <> OKE_API.G_MISS_CHAR
1969      AND p_cle_rec.PROGRESS_PAYMENT_flag IS NOT NULL) THEN
1970     IF (UPPER(p_cle_rec.PROGRESS_PAYMENT_flag) NOT IN ('Y','N')) THEN
1971       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1972 		p_msg_name		=>G_REQUIRED_VALUE,
1973 		p_token1		=>G_COL_NAME_TOKEN,
1974 		p_token1_value		=>'PROGRESS_PAYMENT_FLAG');
1975       x_return_status := OKE_API.G_RET_STS_ERROR;
1976       RAISE G_EXCEPTION_HALT_VALIDATION;
1977     END IF;
1978 
1979   END IF;
1980 
1981 EXCEPTION
1982   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1983     NULL;
1984 
1985   WHEN OTHERS THEN
1986     -- store SQL error message on message stack
1987     OKE_API.SET_MESSAGE(
1988 		p_app_name		=>g_app_name,
1989 		p_msg_name		=>G_UNEXPECTED_ERROR,
1990 		p_token1		=>G_SQLCODE_TOKEN,
1991 		p_token1_value		=>SQLCODE,
1992 		p_token2		=>G_SQLERRM_TOKEN,
1993 		p_token2_value		=>SQLERRM);
1994   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1995 
1996 END validate_PROGRESS_PAYMENT_flag;
1997 
1998 
1999 
2000 
2001 PROCEDURE validate_cost_of_money(x_return_status OUT NOCOPY VARCHAR2,
2002 				p_cle_rec	IN  cle_rec_type)IS
2003 
2004 BEGIN
2005   x_return_status := OKE_API.G_RET_STS_SUCCESS;
2006 
2007   IF (   p_cle_rec.cost_of_money <> OKE_API.G_MISS_CHAR
2008      AND p_cle_rec.cost_of_money IS NOT NULL) THEN
2009     IF (UPPER(p_cle_rec.cost_of_money) NOT IN ('Y','N')) THEN
2010       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
2011 		p_msg_name		=>G_REQUIRED_VALUE,
2012 		p_token1		=>G_COL_NAME_TOKEN,
2013 		p_token1_value		=>'COST_OF_MONEY');
2014       x_return_status := OKE_API.G_RET_STS_ERROR;
2015       RAISE G_EXCEPTION_HALT_VALIDATION;
2016     END IF;
2017 
2018   END IF;
2019 
2020 EXCEPTION
2021   WHEN G_EXCEPTION_HALT_VALIDATION THEN
2022     NULL;
2023 
2024   WHEN OTHERS THEN
2025     -- store SQL error message on message stack
2026     OKE_API.SET_MESSAGE(
2027 		p_app_name		=>g_app_name,
2028 		p_msg_name		=>G_UNEXPECTED_ERROR,
2029 		p_token1		=>G_SQLCODE_TOKEN,
2030 		p_token1_value		=>SQLCODE,
2031 		p_token2		=>G_SQLERRM_TOKEN,
2032 		p_token2_value		=>SQLERRM);
2033   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
2034 
2035 END validate_COST_OF_MONEY;
2036 
2037 
2038 
2039 
2040 
2041 
2042 
2043 
2044 
2045   FUNCTION get_rec (
2046     p_cle_rec                      IN cle_rec_type,
2047     x_no_data_found                OUT NOCOPY BOOLEAN
2048   ) RETURN cle_rec_type IS
2049 
2050     CURSOR cle_pk_csr (p_id                 IN NUMBER) IS
2051     SELECT 	K_LINE_ID			,
2052 		PARENT_LINE_ID			,
2053 		PROJECT_ID			,
2054 		TASK_ID				,
2055 		BILLING_METHOD_CODE		,
2056 		INVENTORY_ITEM_ID				,
2057 		DELIVERY_ORDER_FLAG		,
2058 	        SPLITED_FLAG			,
2059 		PRIORITY_CODE			,
2060 		CUSTOMER_ITEM_ID		,
2061 		CUSTOMER_ITEM_NUMBER		,
2062 		LINE_QUANTITY			,
2063 		DELIVERY_DATE			,
2064 		PROPOSAL_DUE_DATE		,
2065 		UNIT_PRICE			,
2066 		UOM_CODE			,
2067 		LINE_VALUE			,
2068 		LINE_VALUE_TOTAL		,
2069 		UNDEF_UNIT_PRICE		,
2070 		UNDEF_LINE_VALUE		,
2071 		UNDEF_LINE_VALUE_TOTAL		,
2072 		END_DATE			,
2073 		BILLABLE_FLAG			,
2074 		SHIPPABLE_FLAG			,
2075 		SUBCONTRACTED_FLAG		,
2076 		COMPLETED_FLAG			,
2077 		NSP_FLAG			,
2078 		APP_CODE			,
2079 		AS_OF_DATE			,
2080 		AUTHORITY			,
2081 		COUNTRY_OF_ORIGIN_CODE		,
2082 		DROP_SHIPPED_FLAG		,
2083 		CUSTOMER_APPROVAL_REQ_FLAG	,
2084 		DATE_MATERIAL_REQ		,
2085 		INSPECTION_REQ_FLAG		,
2086 		INTERIM_RPT_REQ_FLAG		,
2087 		SUBJ_A133_FLAG			,
2088 		EXPORT_FLAG			,
2089 		CFE_REQ_FLAG			,
2090 		COP_REQUIRED_FLAG		,
2091 		EXPORT_LICENSE_NUM		,
2092 		EXPORT_LICENSE_RES		,
2093 		COPIES_REQUIRED			,
2094 		CDRL_CATEGORY			,
2095 		DATA_ITEM_NAME			,
2096 		DATA_ITEM_SUBTITLE		,
2097 		DATE_OF_FIRST_SUBMISSION	,
2098 		FREQUENCY			,
2099 		REQUIRING_OFFICE		,
2100 		DCAA_AUDIT_REQ_FLAG		,
2101 		DEFINITIZED_FLAG		,
2102 		COST_OF_MONEY			,
2103 		BILL_UNDEFINITIZED_FLAG		,
2104 		NSN_NUMBER			,
2105 		NTE_WARNING_FLAG		,
2106 		DISCOUNT_FOR_PAYMENT		,
2107 		FINANCIAL_CTRL_FLAG		,
2108 		C_SCS_FLAG			,
2109 		C_SSR_FLAG			,
2110 		PREPAYMENT_AMOUNT		,
2111 		PREPAYMENT_PERCENTAGE		,
2112 		PROGRESS_PAYMENT_FLAG		,
2113 		PROGRESS_PAYMENT_LIQ_RATE	,
2114 		PROGRESS_PAYMENT_RATE		,
2115 		AWARD_FEE			,
2116 		AWARD_FEE_POOL_AMOUNT		,
2117 		BASE_FEE			,
2118 		CEILING_COST				,
2119 		CEILING_PRICE				,
2120 		COST_OVERRUN_SHARE_RATIO		,
2121 		COST_UNDERRUN_SHARE_RATIO		,
2122 		LABOR_COST_INDEX			,
2123 		MATERIAL_COST_INDEX			,
2124 		CUSTOMERS_PERCENT_IN_ORDER	,
2125 		DATE_OF_PRICE_REDETERMIN	,
2126 		ESTIMATED_TOTAL_QUANTITY	,
2127 		FEE_AJT_FORMULA		,
2128 		FINAL_FEE			,
2129 		FINAL_PFT_AJT_FORMULA		,
2130 		FIXED_FEE			,
2131 		FIXED_QUANTITY			,
2132 		INITIAL_FEE			,
2133 		INITIAL_PRICE			,
2134 		LEVEL_OF_EFFORT_HOURS		,
2135 		LINE_LIQUIDATION_RATE		,
2136 		MAXIMUM_FEE			,
2137 		MAXIMUM_QUANTITY		,
2138 		MINIMUM_FEE			,
2139 		MINIMUM_QUANTITY		,
2140 		NUMBER_OF_OPTIONS		,
2141 		REVISED_PRICE			,
2142 		TARGET_COST			,
2143 		TARGET_DATE_DEFINITIZE		,
2144 		TARGET_FEE			,
2145 		TARGET_PRICE			,
2146 		TOTAL_ESTIMATED_COST		,
2147 		CREATED_BY			,
2148 		CREATION_DATE			,
2149 		LAST_UPDATED_BY			,
2150 		LAST_UPDATE_LOGIN		,
2151 		LAST_UPDATE_DATE		,
2152 		COST_OF_SALE_RATE
2153 
2154     FROM OKE_K_LINES
2155     WHERE OKE_K_LINES.K_LINE_ID = p_id;
2156 
2157     l_cle_pk	cle_pk_csr%ROWTYPE;
2158     l_cle_rec   cle_rec_type;
2159 
2160   BEGIN
2161     x_no_data_found := TRUE;
2162 
2163     -- get current database value
2164 
2165     OPEN cle_pk_csr(p_cle_rec.K_LINE_ID);
2166     FETCH cle_pk_csr INTO l_cle_rec.K_LINE_ID			,
2167 		l_cle_rec.PARENT_LINE_ID			,
2168 		l_cle_rec.PROJECT_ID			,
2169 		l_cle_rec.TASK_ID				,
2170 		l_cle_rec.BILLING_METHOD_CODE		,
2171 		l_cle_rec.INVENTORY_ITEM_ID				,
2172 		l_cle_rec.DELIVERY_ORDER_FLAG			,
2173                 l_cle_rec.SPLITED_FLAG			,
2174 		l_cle_rec.PRIORITY_CODE			,
2175 		l_cle_rec.CUSTOMER_ITEM_ID		,
2176 		l_cle_rec.CUSTOMER_ITEM_NUMBER		,
2177 		l_cle_rec.LINE_QUANTITY			,
2178 		l_cle_rec.DELIVERY_DATE			,
2179 	        l_cle_rec.PROPOSAL_DUE_DATE		,
2180 		l_cle_rec.UNIT_PRICE			,
2181 		l_cle_rec.UOM_CODE			,
2182 		l_cle_rec.LINE_VALUE			,
2183 		l_cle_rec.LINE_VALUE_TOTAL		,
2184 		l_cle_rec.UNDEF_UNIT_PRICE			,
2185 		l_cle_rec.UNDEF_LINE_VALUE			,
2186 		l_cle_rec.UNDEF_LINE_VALUE_TOTAL		,
2187 		l_cle_rec.END_DATE			,
2188 		l_cle_rec.BILLABLE_FLAG			,
2189 		l_cle_rec.SHIPPABLE_FLAG			,
2190 		l_cle_rec.SUBCONTRACTED_FLAG		,
2191 		l_cle_rec.COMPLETED_FLAG			,
2192 		l_cle_rec.NSP_FLAG			,
2193 		l_cle_rec.APP_CODE			,
2194 		l_cle_rec.AS_OF_DATE			,
2195 		l_cle_rec.AUTHORITY			,
2196 		l_cle_rec.COUNTRY_OF_ORIGIN_CODE		,
2197 		l_cle_rec.DROP_SHIPPED_FLAG		,
2198 		l_cle_rec.CUSTOMER_APPROVAL_REQ_FLAG	,
2199 		l_cle_rec.DATE_MATERIAL_REQ		,
2200 		l_cle_rec.INSPECTION_REQ_FLAG		,
2201 		l_cle_rec.INTERIM_RPT_REQ_FLAG		,
2202 		l_cle_rec.SUBJ_A133_FLAG			,
2203 		l_cle_rec.EXPORT_FLAG			,
2204 		l_cle_rec.CFE_REQ_FLAG			,
2205 		l_cle_rec.COP_REQUIRED_FLAG		,
2206 		l_cle_rec.EXPORT_LICENSE_NUM		,
2207 		l_cle_rec.EXPORT_LICENSE_RES		,
2208 		l_cle_rec.COPIES_REQUIRED			,
2209 		l_cle_rec.CDRL_CATEGORY			,
2210 		l_cle_rec.DATA_ITEM_NAME			,
2211 		l_cle_rec.DATA_ITEM_SUBTITLE		,
2212 		l_cle_rec.DATE_OF_FIRST_SUBMISSION	,
2213 		l_cle_rec.FREQUENCY			,
2214 		l_cle_rec.REQUIRING_OFFICE		,
2215 		l_cle_rec.DCAA_AUDIT_REQ_FLAG		,
2216 		l_cle_rec.DEFINITIZED_FLAG		,
2217 		l_cle_rec.COST_OF_MONEY			,
2218 		l_cle_rec.BILL_UNDEFINITIZED_FLAG		,
2219 		l_cle_rec.NSN_NUMBER			,
2220 		l_cle_rec.NTE_WARNING_FLAG		,
2221 		l_cle_rec.DISCOUNT_FOR_PAYMENT		,
2222 		l_cle_rec.FINANCIAL_CTRL_FLAG		,
2223 		l_cle_rec.C_SCS_FLAG			,
2224 		l_cle_rec.C_SSR_FLAG			,
2225 		l_cle_rec.PREPAYMENT_AMOUNT		,
2226 		l_cle_rec.PREPAYMENT_PERCENTAGE		,
2227 		l_cle_rec.PROGRESS_PAYMENT_FLAG		,
2228 		l_cle_rec.PROGRESS_PAYMENT_LIQ_RATE	,
2229 		l_cle_rec.PROGRESS_PAYMENT_RATE		,
2230 		l_cle_rec.AWARD_FEE			,
2231 		l_cle_rec.AWARD_FEE_POOL_AMOUNT		,
2232 		l_cle_rec.BASE_FEE			,
2233 		l_cle_rec.CEILING_COST				,
2234 		l_cle_rec.CEILING_PRICE				,
2235 		l_cle_rec.COST_OVERRUN_SHARE_RATIO		,
2236 		l_cle_rec.COST_UNDERRUN_SHARE_RATIO		,
2237 		l_cle_rec.LABOR_COST_INDEX			,
2238 		l_cle_rec.MATERIAL_COST_INDEX			,
2239 		l_cle_rec.CUSTOMERS_PERCENT_IN_ORDER	,
2240 		l_cle_rec.DATE_OF_PRICE_REDETERMIN	,
2241 		l_cle_rec.ESTIMATED_TOTAL_QUANTITY	,
2242 		l_cle_rec.FEE_AJT_FORMULA		,
2243 		l_cle_rec.FINAL_FEE			,
2244 		l_cle_rec.FINAL_PFT_AJT_FORMULA		,
2245 		l_cle_rec.FIXED_FEE			,
2246 		l_cle_rec.FIXED_QUANTITY			,
2247 		l_cle_rec.INITIAL_FEE			,
2248 		l_cle_rec.INITIAL_PRICE			,
2249 		l_cle_rec.LEVEL_OF_EFFORT_HOURS		,
2250 		l_cle_rec.LINE_LIQUIDATION_RATE		,
2251 		l_cle_rec.MAXIMUM_FEE			,
2252 		l_cle_rec.MAXIMUM_QUANTITY		,
2253 		l_cle_rec.MINIMUM_FEE			,
2254 		l_cle_rec.MINIMUM_QUANTITY		,
2255 		l_cle_rec.NUMBER_OF_OPTIONS		,
2256 		l_cle_rec.REVISED_PRICE			,
2257 		l_cle_rec.TARGET_COST			,
2258 		l_cle_rec.TARGET_DATE_DEFINITIZE		,
2259 		l_cle_rec.TARGET_FEE			,
2260 		l_cle_rec.TARGET_PRICE			,
2261 		l_cle_rec.TOTAL_ESTIMATED_COST		,
2262 		l_cle_rec.CREATED_BY			,
2263 		l_cle_rec.CREATION_DATE			,
2264 		l_cle_rec.LAST_UPDATED_BY			,
2265 		l_cle_rec.LAST_UPDATE_LOGIN		,
2266 		l_cle_rec.LAST_UPDATE_DATE		,
2267 		l_cle_rec.COST_OF_SALE_RATE;
2268 
2269     x_no_data_found := cle_pk_csr%NOTFOUND;
2270 
2271     CLOSE cle_pk_csr;
2272 
2273     RETURN(l_cle_rec);
2274 
2275   END get_rec;
2276 
2277   FUNCTION get_rec (
2278     p_cle_rec	IN cle_rec_type)RETURN cle_rec_type IS
2279     l_row_notfound		BOOLEAN := TRUE;
2280 
2281   BEGIN
2282     RETURN(get_rec(p_cle_rec, l_row_notfound));
2283   END get_rec;
2284 
2285   FUNCTION null_out_defaults(
2286 	 p_cle_rec	IN cle_rec_type ) RETURN cle_rec_type IS
2287 
2288   l_cle_rec cle_rec_type := p_cle_rec;
2289 
2290   BEGIN
2291 
2292 
2293     IF  l_cle_rec.PARENT_LINE_ID = OKE_API.G_MISS_NUM THEN
2294 	l_cle_rec.PARENT_LINE_ID := NULL;
2295     END IF;
2296 
2297     IF	l_cle_rec.PROJECT_ID = OKE_API.G_MISS_NUM THEN
2298         l_cle_rec.PROJECT_ID := NULL;
2299     END IF;
2300 
2301     IF  l_cle_rec.TASK_ID = OKE_API.G_MISS_NUM THEN
2302       	l_cle_rec.TASK_ID := NULL;
2303     END IF;
2304 
2305     IF	l_cle_rec.BILLING_METHOD_CODE = OKE_API.G_MISS_CHAR THEN
2306         l_cle_rec.BILLING_METHOD_CODE := NULL;
2307     END IF;
2308 
2309     IF	l_cle_rec.INVENTORY_ITEM_ID = OKE_API.G_MISS_NUM THEN
2310         l_cle_rec.INVENTORY_ITEM_ID := NULL;
2311     END IF;
2312 
2313     IF	l_cle_rec.DELIVERY_ORDER_FLAG = OKE_API.G_MISS_CHAR THEN
2314 	l_cle_rec.DELIVERY_ORDER_FLAG := NULL;
2315     END IF;
2316 
2317     IF	l_cle_rec.SPLITED_FLAG = OKE_API.G_MISS_CHAR THEN
2318 	l_cle_rec.SPLITED_FLAG := NULL;
2319     END IF;
2320 
2321     IF  l_cle_rec.PRIORITY_CODE	= OKE_API.G_MISS_CHAR THEN
2322 	l_cle_rec.PRIORITY_CODE	:= NULL;
2323     END IF;
2324 
2325     IF	l_cle_rec.CUSTOMER_ITEM_ID = OKE_API.G_MISS_NUM THEN
2326 	l_cle_rec.CUSTOMER_ITEM_ID := NULL;
2327     END IF;
2328 
2329     IF	l_cle_rec.CUSTOMER_ITEM_NUMBER = OKE_API.G_MISS_CHAR THEN
2330 	l_cle_rec.CUSTOMER_ITEM_NUMBER := NULL;
2331     END IF;
2332 
2333     IF	l_cle_rec.LINE_QUANTITY	= OKE_API.G_MISS_NUM THEN
2334         l_cle_rec.LINE_QUANTITY	:= NULL;
2335     END IF;
2336 
2337     IF	l_cle_rec.DELIVERY_DATE	= OKE_API.G_MISS_DATE THEN
2338         l_cle_rec.DELIVERY_DATE	:= NULL;
2339     END IF;
2340 
2341     IF  l_cle_rec.PROPOSAL_DUE_DATE = OKE_API.G_MISS_CHAR THEN
2342 	l_cle_rec.PROPOSAL_DUE_DATE := NULL;
2343     END IF;
2344 
2345     IF	l_cle_rec.UNIT_PRICE = OKE_API.G_MISS_NUM THEN
2346 	l_cle_rec.UNIT_PRICE := NULL;
2347     END IF;
2348 
2349     IF	l_cle_rec.UOM_CODE = OKE_API.G_MISS_CHAR THEN
2350 	l_cle_rec.UOM_CODE := NULL;
2351     END IF;
2352 
2353     IF  l_cle_rec.LINE_VALUE = OKE_API.G_MISS_NUM THEN
2354 	l_cle_rec.LINE_VALUE := NULL;
2355     END IF;
2356 
2357     IF  l_cle_rec.LINE_VALUE_TOTAL = OKE_API.G_MISS_NUM THEN
2358 	l_cle_rec.LINE_VALUE_TOTAL := NULL;
2359     END IF;
2360 
2361     IF	l_cle_rec.UNDEF_UNIT_PRICE = OKE_API.G_MISS_NUM THEN
2362 	l_cle_rec.UNDEF_UNIT_PRICE := NULL;
2363     END IF;
2364 
2365     IF  l_cle_rec.UNDEF_LINE_VALUE = OKE_API.G_MISS_NUM THEN
2366 	l_cle_rec.UNDEF_LINE_VALUE := NULL;
2367     END IF;
2368 
2369     IF  l_cle_rec.UNDEF_LINE_VALUE_TOTAL = OKE_API.G_MISS_NUM THEN
2370 	l_cle_rec.UNDEF_LINE_VALUE_TOTAL := NULL;
2371     END IF;
2372 
2373     IF  l_cle_rec.END_DATE = OKE_API.G_MISS_DATE THEN
2374 	l_cle_rec.END_DATE := NULL;
2375     END IF;
2376 
2377 
2378     IF	l_cle_rec.BILLABLE_FLAG	= OKE_API.G_MISS_CHAR THEN
2379 	l_cle_rec.BILLABLE_FLAG	:= NULL;
2380     END IF;
2381 
2382     IF	l_cle_rec.SHIPPABLE_FLAG = OKE_API.G_MISS_CHAR THEN
2383 	l_cle_rec.SHIPPABLE_FLAG := NULL;
2384     END IF;
2385 
2386     IF	l_cle_rec.SUBCONTRACTED_FLAG = OKE_API.G_MISS_CHAR THEN
2387 	l_cle_rec.SUBCONTRACTED_FLAG := NULL;
2388     END IF;
2389 
2390     IF	l_cle_rec.COMPLETED_FLAG = OKE_API.G_MISS_CHAR THEN
2391 	l_cle_rec.COMPLETED_FLAG := NULL;
2392     END IF;
2393 
2394     IF	l_cle_rec.NSP_FLAG = OKE_API.G_MISS_CHAR THEN
2395 	l_cle_rec.NSP_FLAG := NULL;
2396     END IF;
2397 
2398     IF	l_cle_rec.APP_CODE = OKE_API.G_MISS_CHAR THEN
2399 	l_cle_rec.APP_CODE := NULL;
2400     END IF;
2401 
2402     IF	l_cle_rec.AS_OF_DATE = OKE_API.G_MISS_DATE THEN
2403 	l_cle_rec.AS_OF_DATE := NULL;
2404     END IF;
2405 
2406     IF	l_cle_rec.AUTHORITY = OKE_API.G_MISS_CHAR THEN
2407         l_cle_rec.AUTHORITY := NULL;
2408     END IF;
2409 
2410     IF  l_cle_rec.COUNTRY_OF_ORIGIN_CODE = OKE_API.G_MISS_CHAR THEN
2411 	l_cle_rec.COUNTRY_OF_ORIGIN_CODE := NULL;
2412     END IF;
2413 
2414     IF	l_cle_rec.DROP_SHIPPED_FLAG = OKE_API.G_MISS_CHAR THEN
2415         l_cle_rec.DROP_SHIPPED_FLAG := NULL;
2416     END IF;
2417 
2418     IF	l_cle_rec.CUSTOMER_APPROVAL_REQ_FLAG = OKE_API.G_MISS_CHAR THEN
2419 	l_cle_rec.CUSTOMER_APPROVAL_REQ_FLAG := NULL;
2420     END IF;
2421 
2422     IF  l_cle_rec.DATE_MATERIAL_REQ = OKE_API.G_MISS_DATE THEN
2423 	l_cle_rec.DATE_MATERIAL_REQ := NULL;
2424     END IF;
2425 
2426     IF	l_cle_rec.INSPECTION_REQ_FLAG = OKE_API.G_MISS_CHAR THEN
2427 	l_cle_rec.INSPECTION_REQ_FLAG := NULL;
2428     END IF;
2429 
2430     IF	l_cle_rec.INTERIM_RPT_REQ_FLAG = OKE_API.G_MISS_CHAR THEN
2431 	l_cle_rec.INTERIM_RPT_REQ_FLAG := NULL;
2432     END IF;
2433 
2434 
2435     IF	l_cle_rec.SUBJ_A133_FLAG = OKE_API.G_MISS_CHAR THEN
2436    	l_cle_rec.SUBJ_A133_FLAG := NULL;
2437     END IF;
2438 
2439     IF	l_cle_rec.EXPORT_FLAG = OKE_API.G_MISS_CHAR THEN
2440 	l_cle_rec.EXPORT_FLAG := NULL;
2441     END IF;
2442 
2443     IF	l_cle_rec.CFE_REQ_FLAG = OKE_API.G_MISS_CHAR THEN
2444 	l_cle_rec.CFE_REQ_FLAG := NULL;
2445     END IF;
2446 
2447     IF	l_cle_rec.COP_REQUIRED_FLAG = OKE_API.G_MISS_CHAR THEN
2448 	l_cle_rec.COP_REQUIRED_FLAG := NULL;
2449     END IF;
2450 
2451     IF	l_cle_rec.EXPORT_LICENSE_NUM = OKE_API.G_MISS_CHAR THEN
2452    	l_cle_rec.EXPORT_LICENSE_NUM := NULL;
2453     END IF;
2454 
2455     IF	l_cle_rec.EXPORT_LICENSE_RES = OKE_API.G_MISS_CHAR THEN
2456 	l_cle_rec.EXPORT_LICENSE_RES := NULL;
2457     END IF;
2458 
2459     IF	l_cle_rec.COPIES_REQUIRED = OKE_API.G_MISS_NUM THEN
2460 	l_cle_rec.COPIES_REQUIRED := NULL;
2461     END IF;
2462 
2463     IF	l_cle_rec.CDRL_CATEGORY = OKE_API.G_MISS_CHAR THEN
2464 	l_cle_rec.CDRL_CATEGORY := NULL;
2465     END IF;
2466 
2467     IF	l_cle_rec.DATA_ITEM_NAME = OKE_API.G_MISS_CHAR THEN
2468 	l_cle_rec.DATA_ITEM_NAME := NULL;
2469     END IF;
2470 
2471     IF	l_cle_rec.DATA_ITEM_SUBTITLE = OKE_API.G_MISS_CHAR THEN
2472 	l_cle_rec.DATA_ITEM_SUBTITLE := NULL;
2473     END IF;
2474 
2475     IF	l_cle_rec.DATE_OF_FIRST_SUBMISSION = OKE_API.G_MISS_DATE THEN
2476 	l_cle_rec.DATE_OF_FIRST_SUBMISSION := NULL;
2477     END IF;
2478 
2479     IF	l_cle_rec.FREQUENCY = OKE_API.G_MISS_CHAR THEN
2480 	l_cle_rec.FREQUENCY := NULL;
2481     END IF;
2482 
2483     IF	l_cle_rec.REQUIRING_OFFICE = OKE_API.G_MISS_CHAR THEN
2484 	l_cle_rec.REQUIRING_OFFICE := NULL;
2485     END IF;
2486 
2487     IF	l_cle_rec.DCAA_AUDIT_REQ_FLAG = OKE_API.G_MISS_CHAR THEN
2488 	l_cle_rec.DCAA_AUDIT_REQ_FLAG := NULL;
2489     END IF;
2490 
2491     IF	l_cle_rec.DEFINITIZED_FLAG = OKE_API.G_MISS_CHAR THEN
2492 	l_cle_rec.DEFINITIZED_FLAG := NULL;
2493     END IF;
2494 
2495     IF	l_cle_rec.COST_OF_MONEY = OKE_API.G_MISS_CHAR THEN
2496 	l_cle_rec.COST_OF_MONEY := NULL;
2497     END IF;
2498 
2499     IF  l_cle_rec.BILL_UNDEFINITIZED_FLAG = OKE_API.G_MISS_CHAR THEN
2500 	l_cle_rec.BILL_UNDEFINITIZED_FLAG := NULL;
2501     END IF;
2502 
2503     IF	l_cle_rec.NSN_NUMBER = OKE_API.G_MISS_CHAR THEN
2504 	l_cle_rec.NSN_NUMBER := NULL;
2505     END IF;
2506 
2507     IF	l_cle_rec.NTE_WARNING_FLAG = OKE_API.G_MISS_CHAR THEN
2508 	l_cle_rec.NTE_WARNING_FLAG := NULL;
2509     END IF;
2510 
2511     IF	l_cle_rec.DISCOUNT_FOR_PAYMENT = OKE_API.G_MISS_NUM THEN
2512 	l_cle_rec.DISCOUNT_FOR_PAYMENT := NULL;
2513     END IF;
2514 
2515     IF	l_cle_rec.FINANCIAL_CTRL_FLAG = OKE_API.G_MISS_CHAR THEN
2516 	l_cle_rec.FINANCIAL_CTRL_FLAG := NULL;
2517     END IF;
2518 
2519     IF	l_cle_rec.C_SCS_FLAG = OKE_API.G_MISS_CHAR THEN
2520 	l_cle_rec.C_SCS_FLAG := NULL;
2521     END IF;
2522 
2523 
2524     IF	l_cle_rec.C_SSR_FLAG = OKE_API.G_MISS_CHAR THEN
2525 	l_cle_rec.C_SSR_FLAG := NULL;
2526     END IF;
2527 
2528     IF	l_cle_rec.PREPAYMENT_AMOUNT = OKE_API.G_MISS_NUM THEN
2529 	l_cle_rec.PREPAYMENT_AMOUNT := NULL;
2530     END IF;
2531 
2532     IF	l_cle_rec.PREPAYMENT_PERCENTAGE = OKE_API.G_MISS_NUM THEN
2533 	l_cle_rec.PREPAYMENT_PERCENTAGE := NULL;
2534     END IF;
2535 
2536     IF	l_cle_rec.PROGRESS_PAYMENT_FLAG = OKE_API.G_MISS_CHAR THEN
2537 	l_cle_rec.PROGRESS_PAYMENT_FLAG := NULL;
2538     END IF;
2539 
2540     IF	l_cle_rec.PROGRESS_PAYMENT_LIQ_RATE = OKE_API.G_MISS_NUM THEN
2541 	l_cle_rec.PROGRESS_PAYMENT_LIQ_RATE := NULL;
2542     END IF;
2543 
2544     IF	l_cle_rec.PROGRESS_PAYMENT_RATE	= OKE_API.G_MISS_NUM THEN
2545 	l_cle_rec.PROGRESS_PAYMENT_RATE := NULL;
2546     END IF;
2547 
2548     IF	l_cle_rec.AWARD_FEE = OKE_API.G_MISS_NUM THEN
2549 	l_cle_rec.AWARD_FEE := NULL;
2550     END IF;
2551 
2552     IF	l_cle_rec.AWARD_FEE_POOL_AMOUNT = OKE_API.G_MISS_NUM THEN
2553 	l_cle_rec.AWARD_FEE_POOL_AMOUNT := NULL;
2554     END IF;
2555 
2556     IF	l_cle_rec.BASE_FEE = OKE_API.G_MISS_NUM THEN
2557 	l_cle_rec.BASE_FEE := NULL;
2558     END IF;
2559 
2560     IF	l_cle_rec.CEILING_COST = OKE_API.G_MISS_NUM THEN
2561 	l_cle_rec.CEILING_COST := NULL;
2562     END IF;
2563 
2564     IF	l_cle_rec.CEILING_PRICE = OKE_API.G_MISS_NUM THEN
2565 	l_cle_rec.CEILING_PRICE := NULL;
2566     END IF;
2567 
2568     IF	l_cle_rec.COST_OVERRUN_SHARE_RATIO = OKE_API.G_MISS_CHAR THEN
2569 	l_cle_rec.COST_OVERRUN_SHARE_RATIO := NULL;
2570     END IF;
2571 
2572     IF	l_cle_rec.COST_UNDERRUN_SHARE_RATIO = OKE_API.G_MISS_CHAR THEN
2573 	l_cle_rec.COST_UNDERRUN_SHARE_RATIO := NULL;
2574     END IF;
2575 
2576     IF	l_cle_rec.LABOR_COST_INDEX = OKE_API.G_MISS_CHAR THEN
2577 	l_cle_rec.LABOR_COST_INDEX := NULL;
2578     END IF;
2579 
2580     IF	l_cle_rec.MATERIAL_COST_INDEX = OKE_API.G_MISS_CHAR THEN
2581 	l_cle_rec.MATERIAL_COST_INDEX := NULL;
2582     END IF;
2583 
2584     IF	l_cle_rec.CUSTOMERS_PERCENT_IN_ORDER = OKE_API.G_MISS_NUM THEN
2585 	l_cle_rec.CUSTOMERS_PERCENT_IN_ORDER := NULL;
2586     END IF;
2587 
2588     IF	l_cle_rec.DATE_OF_PRICE_REDETERMIN = OKE_API.G_MISS_DATE THEN
2589 	l_cle_rec.DATE_OF_PRICE_REDETERMIN := NULL;
2590     END IF;
2591 
2592     IF	l_cle_rec.ESTIMATED_TOTAL_QUANTITY = OKE_API.G_MISS_NUM THEN
2593 	l_cle_rec.ESTIMATED_TOTAL_QUANTITY := NULL;
2594     END IF;
2595 
2596     IF	l_cle_rec.FEE_AJT_FORMULA = OKE_API.G_MISS_CHAR THEN
2597 	l_cle_rec.FEE_AJT_FORMULA := NULL;
2598     END IF;
2599 
2600     IF	l_cle_rec.FINAL_FEE = OKE_API.G_MISS_NUM THEN
2601 	l_cle_rec.FINAL_FEE := NULL;
2602     END IF;
2603 
2604     IF	l_cle_rec.FINAL_PFT_AJT_FORMULA = OKE_API.G_MISS_CHAR THEN
2605 	l_cle_rec.FINAL_PFT_AJT_FORMULA := NULL;
2606     END IF;
2607 
2608     IF	l_cle_rec.FIXED_FEE = OKE_API.G_MISS_NUM THEN
2609 	l_cle_rec.FIXED_FEE := NULL;
2610     END IF;
2611 
2612     IF	l_cle_rec.FIXED_QUANTITY = OKE_API.G_MISS_NUM THEN
2613 	l_cle_rec.FIXED_QUANTITY := NULL;
2614     END IF;
2615 
2616     IF	l_cle_rec.INITIAL_FEE = OKE_API.G_MISS_NUM THEN
2617 	l_cle_rec.INITIAL_FEE := NULL;
2618     END IF;
2619 
2620     IF	l_cle_rec.INITIAL_PRICE = OKE_API.G_MISS_NUM THEN
2621 	l_cle_rec.INITIAL_PRICE := NULL;
2622     END IF;
2623 
2624     IF	l_cle_rec.LEVEL_OF_EFFORT_HOURS = OKE_API.G_MISS_NUM THEN
2625 	l_cle_rec.LEVEL_OF_EFFORT_HOURS := NULL;
2626     END IF;
2627 
2628     IF	l_cle_rec.LINE_LIQUIDATION_RATE = OKE_API.G_MISS_NUM THEN
2629 	l_cle_rec.LINE_LIQUIDATION_RATE := NULL;
2630     END IF;
2631 
2632     IF	l_cle_rec.MAXIMUM_FEE = OKE_API.G_MISS_NUM THEN
2633 	l_cle_rec.MAXIMUM_FEE := NULL;
2634     END IF;
2635 
2636     IF	l_cle_rec.MAXIMUM_QUANTITY = OKE_API.G_MISS_NUM THEN
2637 	l_cle_rec.MAXIMUM_QUANTITY := NULL;
2638     END IF;
2639 
2640     IF	l_cle_rec.MINIMUM_FEE = OKE_API.G_MISS_NUM THEN
2641 	l_cle_rec.MINIMUM_FEE := NULL;
2642     END IF;
2643 
2644 
2645     IF	l_cle_rec.MINIMUM_QUANTITY = OKE_API.G_MISS_NUM THEN
2646 	l_cle_rec.MINIMUM_QUANTITY := NULL;
2647     END IF;
2648 
2649     IF	l_cle_rec.NUMBER_OF_OPTIONS = OKE_API.G_MISS_NUM THEN
2650 	l_cle_rec.NUMBER_OF_OPTIONS := NULL;
2651     END IF;
2652 
2653     IF	l_cle_rec.REVISED_PRICE = OKE_API.G_MISS_NUM THEN
2654 	l_cle_rec.REVISED_PRICE := NULL;
2655     END IF;
2656 
2657     IF	l_cle_rec.TARGET_COST = OKE_API.G_MISS_NUM THEN
2658 	l_cle_rec.TARGET_COST := NULL;
2659     END IF;
2660 
2661     IF	l_cle_rec.TARGET_DATE_DEFINITIZE = OKE_API.G_MISS_DATE THEN
2662 	l_cle_rec.TARGET_DATE_DEFINITIZE := NULL;
2663     END IF;
2664 
2665     IF	l_cle_rec.TARGET_FEE = OKE_API.G_MISS_NUM THEN
2666 	l_cle_rec.TARGET_FEE := NULL;
2667     END IF;
2668 
2669     IF	l_cle_rec.TARGET_PRICE = OKE_API.G_MISS_NUM THEN
2670 	l_cle_rec.TARGET_PRICE := NULL;
2671     END IF;
2672 
2673     IF	l_cle_rec.TOTAL_ESTIMATED_COST = OKE_API.G_MISS_NUM THEN
2674 	l_cle_rec.TOTAL_ESTIMATED_COST := NULL;
2675     END IF;
2676 
2677     IF	l_cle_rec.CREATED_BY = OKE_API.G_MISS_NUM THEN
2678 	l_cle_rec.CREATED_BY := NULL;
2679     END IF;
2680 
2681     IF	l_cle_rec.CREATION_DATE = OKE_API.G_MISS_DATE THEN
2682 	l_cle_rec.CREATION_DATE := NULL;
2683     END IF;
2684 
2685     IF	l_cle_rec.LAST_UPDATED_BY = OKE_API.G_MISS_NUM THEN
2686 	l_cle_rec.LAST_UPDATED_BY := NULL;
2687     END IF;
2688 
2689     IF	l_cle_rec.LAST_UPDATE_LOGIN = OKE_API.G_MISS_NUM THEN
2690 	l_cle_rec.LAST_UPDATE_LOGIN := NULL;
2691     END IF;
2692 
2693     IF	l_cle_rec.LAST_UPDATE_DATE = OKE_API.G_MISS_DATE THEN
2694 	l_cle_rec.LAST_UPDATE_DATE := NULL;
2695     END IF;
2696 
2697     IF	l_cle_rec.COST_OF_SALE_RATE = OKE_API.G_MISS_NUM THEN
2698 	l_cle_rec.COST_OF_SALE_RATE := NULL;
2699     END IF;
2700 
2701 
2702     RETURN(l_cle_rec);
2703 
2704   END null_out_defaults;
2705 
2706 -- validate attributes
2707 
2708   FUNCTION validate_attributes(
2709     p_cle_rec IN  cle_rec_type
2710   ) RETURN VARCHAR2 IS
2711 
2712     l_return_status	VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
2713     x_return_status VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
2714 
2715   BEGIN
2716     /* call individual validation procedure */
2717     validate_parent_line_id(
2718      	p_cle_rec 	=> p_cle_rec,
2719         x_return_status	=> l_return_status);
2720 
2721     If l_return_status <> OKE_API.G_RET_STS_SUCCESS Then
2722 	  If x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR Then
2723   	     x_return_status := l_return_status;
2724        End If;
2725     End If;
2726 
2727     validate_project_id(
2728      	p_cle_rec 	=> p_cle_rec,
2729         x_return_status	=> l_return_status);
2730 
2731     If l_return_status <> OKE_API.G_RET_STS_SUCCESS Then
2732 	  If x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR Then
2733   	     x_return_status := l_return_status;
2734        End If;
2735     End If;
2736 
2737     validate_task_id(
2738      	p_cle_rec 	=> p_cle_rec,
2739         x_return_status	=> l_return_status);
2740 
2741     If l_return_status <> OKE_API.G_RET_STS_SUCCESS Then
2742 	  If x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR Then
2743   	     x_return_status := l_return_status;
2744        End If;
2745     End If;
2746 
2747     validate_inventory_item_id(
2748      	p_cle_rec 	=> p_cle_rec,
2749         x_return_status	=> l_return_status);
2750 
2751     If l_return_status <> OKE_API.G_RET_STS_SUCCESS Then
2752 	  If x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR Then
2753   	     x_return_status := l_return_status;
2754        End If;
2755     End If;
2756 
2757     validate_customer_item_id(
2758      	p_cle_rec 	=> p_cle_rec,
2759         x_return_status	=> l_return_status);
2760 
2761     If l_return_status <> OKE_API.G_RET_STS_SUCCESS Then
2762 	  If x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR Then
2763   	     x_return_status := l_return_status;
2764        End If;
2765     End If;
2766 
2767      validate_billing_method_code(
2768      	p_cle_rec 	=> p_cle_rec,
2769         x_return_status	=> l_return_status);
2770 
2771     If l_return_status <> OKE_API.G_RET_STS_SUCCESS Then
2772 	  If x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR Then
2773   	     x_return_status := l_return_status;
2774        End If;
2775     End If;
2776 
2777 
2778     validate_country_code(
2779      	p_cle_rec 	=> p_cle_rec,
2780         x_return_status	=> l_return_status);
2781 
2782     If l_return_status <> OKE_API.G_RET_STS_SUCCESS Then
2783 	  If x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR Then
2784   	     x_return_status := l_return_status;
2785        End If;
2786     End If;
2787 
2788 
2789    validate_priority_code(
2790      	p_cle_rec 	=> p_cle_rec,
2791         x_return_status	=> l_return_status);
2792 
2793     If l_return_status <> OKE_API.G_RET_STS_SUCCESS Then
2794 	  If x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR Then
2795   	     x_return_status := l_return_status;
2796        End If;
2797     End If;
2798 
2799 
2800 
2801    validate_uom_code(
2802      	p_cle_rec 	=> p_cle_rec,
2803         x_return_status	=> l_return_status);
2804 
2805     If l_return_status <> OKE_API.G_RET_STS_SUCCESS Then
2806 	  If x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR Then
2807   	     x_return_status := l_return_status;
2808        End If;
2809     End If;
2810 
2811 
2812 
2813   validate_progress_payment_liq(x_return_status => l_return_status,
2814 				p_cle_rec	=>  p_cle_rec);
2815   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2816     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2817       x_return_status := l_return_status;
2818     END IF;
2819   END IF;
2820 
2821   validate_progress_payment_rate(x_return_status => l_return_status,
2822 				p_cle_rec	=>  p_cle_rec);
2823   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2824     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2825       x_return_status := l_return_status;
2826     END IF;
2827   END IF;
2828 
2829   validate_line_liquidation_rate(x_return_status => l_return_status,
2830 				p_cle_rec	=>  p_cle_rec);
2831   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2832     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2833       x_return_status := l_return_status;
2834     END IF;
2835   END IF;
2836 
2837 
2838   validate_billable_flag(x_return_status => l_return_status,
2839 				p_cle_rec	=>  p_cle_rec);
2840   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2841     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2842       x_return_status := l_return_status;
2843     END IF;
2844   END IF;
2845 
2846   validate_shippable_flag(x_return_status => l_return_status,
2847 				p_cle_rec	=>  p_cle_rec);
2848   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2849     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2850       x_return_status := l_return_status;
2851     END IF;
2852   END IF;
2853 
2854   validate_subcontracted_flag(x_return_status => l_return_status,
2855 				p_cle_rec	=>  p_cle_rec);
2856   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2857     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2858       x_return_status := l_return_status;
2859     END IF;
2860   END IF;
2861 
2862   validate_delivery_order_flag(x_return_status => l_return_status,
2863 				p_cle_rec	=>  p_cle_rec);
2864   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2865     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2866       x_return_status := l_return_status;
2867     END IF;
2868   END IF;
2869 
2870   validate_splited_flag(x_return_status => l_return_status,
2871 				p_cle_rec	=>  p_cle_rec);
2872   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2873     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2874       x_return_status := l_return_status;
2875     END IF;
2876   END IF;
2877 
2878   validate_completed_flag(x_return_status => l_return_status,
2879 				p_cle_rec	=>  p_cle_rec);
2880   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2881     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2882       x_return_status := l_return_status;
2883     END IF;
2884   END IF;
2885 
2886   validate_nsp_flag(x_return_status => l_return_status,
2887 				p_cle_rec	=>  p_cle_rec);
2888   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2889     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2890       x_return_status := l_return_status;
2891     END IF;
2892   END IF;
2893 
2894   validate_drop_shipped_flag(x_return_status => l_return_status,
2895 				p_cle_rec	=>  p_cle_rec);
2896   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2897     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2898       x_return_status := l_return_status;
2899     END IF;
2900   END IF;
2901 
2902   validate_customer_approval_req(x_return_status => l_return_status,
2903 				p_cle_rec	=>  p_cle_rec);
2904   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2905     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2906       x_return_status := l_return_status;
2907     END IF;
2908   END IF;
2909 
2910   validate_inspection_req_flag(x_return_status => l_return_status,
2911 				p_cle_rec	=>  p_cle_rec);
2912   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2913     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2914       x_return_status := l_return_status;
2915     END IF;
2916   END IF;
2917 
2918   validate_interim_rpt_req_flag(x_return_status => l_return_status,
2919 				p_cle_rec	=>  p_cle_rec);
2920   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2921     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2922       x_return_status := l_return_status;
2923     END IF;
2924   END IF;
2925 
2926   validate_subj_a133_flag(x_return_status => l_return_status,
2927 				p_cle_rec	=>  p_cle_rec);
2928   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2929     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2930       x_return_status := l_return_status;
2931     END IF;
2932   END IF;
2933 
2934   validate_export_flag(x_return_status => l_return_status,
2935 				p_cle_rec	=>  p_cle_rec);
2936   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2937     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2938       x_return_status := l_return_status;
2939     END IF;
2940   END IF;
2941 
2942   validate_cfe_req_flag(x_return_status => l_return_status,
2943 				p_cle_rec	=>  p_cle_rec);
2944   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2945     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2946       x_return_status := l_return_status;
2947     END IF;
2948   END IF;
2949 
2950   validate_cop_required_flag(x_return_status => l_return_status,
2951 				p_cle_rec	=>  p_cle_rec);
2952   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2953     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2954       x_return_status := l_return_status;
2955     END IF;
2956   END IF;
2957 
2958   validate_dcaa_audit_req_flag(x_return_status => l_return_status,
2959 				p_cle_rec	=>  p_cle_rec);
2960   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2961     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2962       x_return_status := l_return_status;
2963     END IF;
2964   END IF;
2965 
2966   validate_definitized_flag(x_return_status => l_return_status,
2967 				p_cle_rec	=>  p_cle_rec);
2968   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2969     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2970       x_return_status := l_return_status;
2971     END IF;
2972   END IF;
2973 
2974   validate_bill_undefinitized(x_return_status => l_return_status,
2975 				p_cle_rec	=>  p_cle_rec);
2976   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2977     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2978       x_return_status := l_return_status;
2979     END IF;
2980   END IF;
2981 
2982   validate_nte_warning_flag(x_return_status => l_return_status,
2983 				p_cle_rec	=>  p_cle_rec);
2984   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2985     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2986       x_return_status := l_return_status;
2987     END IF;
2988   END IF;
2989 
2990   validate_financial_ctrl_flag(x_return_status => l_return_status,
2991 				p_cle_rec	=>  p_cle_rec);
2992   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2993     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2994       x_return_status := l_return_status;
2995     END IF;
2996   END IF;
2997 
2998   validate_c_scs_flag(x_return_status => l_return_status,
2999 				p_cle_rec	=>  p_cle_rec);
3000   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
3001     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
3002       x_return_status := l_return_status;
3003     END IF;
3004   END IF;
3005 
3006   validate_c_ssr_flag(x_return_status => l_return_status,
3007 				p_cle_rec	=>  p_cle_rec);
3008   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
3009     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
3010       x_return_status := l_return_status;
3011     END IF;
3012   END IF;
3013 
3014   validate_progress_payment_flag(x_return_status => l_return_status,
3015 				p_cle_rec	=>  p_cle_rec);
3016   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
3017     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
3018       x_return_status := l_return_status;
3019     END IF;
3020   END IF;
3021 
3022   validate_cost_of_money(x_return_status => l_return_status,
3023 				p_cle_rec	=>  p_cle_rec);
3024   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
3025     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
3026       x_return_status := l_return_status;
3027     END IF;
3028   END IF;
3029 
3030 
3031 
3032 
3033 
3034 
3035     RETURN(x_return_status);
3036 
3037   exception
3038     when OTHERS then
3039 	  -- store SQL error message on message stack
3040   	  OKC_API.SET_MESSAGE(p_app_name		=> g_app_name,
3041 			      p_msg_name		=> g_unexpected_error,
3042 			      p_token1		=> g_sqlcode_token,
3043 			      p_token1_value	=> sqlcode,
3044 			      p_token2		=> g_sqlerrm_token,
3045 			      p_token2_value	=> sqlerrm);
3046 
3047 	   -- notify caller of an UNEXPETED error
3048 	   x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
3049 
3050 	   -- return status to caller
3051         RETURN(x_return_status);
3052 
3053   END Validate_Attributes;
3054 
3055 
3056 -- validate record
3057 
3058 
3059   PROCEDURE validate_qty_price_value (
3060 	p_cle_rec IN cle_rec_type,
3061 	x_return_status OUT NOCOPY VARCHAR2
3062   ) IS
3063 
3064   BEGIN
3065     x_return_status := OKE_API.G_RET_STS_SUCCESS;
3066 
3067     If (p_cle_rec.line_quantity <> OKE_API.G_MISS_NUM and
3068   	   p_cle_rec.line_quantity IS NOT NULL
3069 	AND p_cle_rec.unit_price <> OKE_API.G_MISS_NUM and
3070 	   p_cle_rec.unit_price IS NOT NULL
3071 	AND p_cle_rec.line_value <> OKE_API.G_MISS_NUM and
3072 	   p_cle_rec.line_value IS NOT NULL)
3073 
3074     THEN
3075 
3076       If (p_cle_rec.line_value <> (p_cle_rec.unit_price * p_cle_rec.line_quantity)) Then
3077   	    OKE_API.SET_MESSAGE(p_app_name		=> g_app_name,
3078 				p_msg_name		=> 'OKE_LINE_VALUE_MISMATCH');
3079 
3080 	    -- notify caller of an error
3081          x_return_status := OKE_API.G_RET_STS_ERROR;
3082       End If;
3083 
3084     End If;
3085   exception
3086     when OTHERS then
3087 	  -- store SQL error message on message stack
3088   	  OKE_API.SET_MESSAGE(p_app_name		=> g_app_name,
3089 					  p_msg_name		=> g_unexpected_error,
3090 					  p_token1		=> g_sqlcode_token,
3091 					  p_token1_value	=> sqlcode,
3092 					  p_token2		=> g_sqlerrm_token,
3093 					  p_token2_value	=> sqlerrm);
3094 	   -- notify caller of an error as UNEXPETED error
3095 
3096         x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
3097 
3098   End validate_qty_price_value;
3099 
3100 
3101   FUNCTION validate_record (
3102     p_cle_rec IN cle_rec_type
3103   ) RETURN VARCHAR2 IS
3104     l_return_status                VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
3105   BEGIN
3106 
3107     RETURN(l_return_status);
3108 
3109   END validate_record;
3110 
3111 -- validate row
3112 
3113   PROCEDURE validate_row(
3114     p_api_version       IN NUMBER,
3115     p_init_msg_list     IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
3116     x_return_status     OUT NOCOPY VARCHAR2,
3117     x_msg_count         OUT NOCOPY NUMBER,
3118     x_msg_data          OUT NOCOPY VARCHAR2,
3119     p_cle_rec           IN cle_rec_type
3120   ) IS
3121 
3122     l_api_version       CONSTANT NUMBER := 1;
3123     l_api_name          CONSTANT VARCHAR2(30) := 'B_validate_row';
3124     l_return_status     VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
3125     l_cle_rec           cle_rec_type := p_cle_rec;
3126 
3127   BEGIN
3128     l_return_status := OKE_API.START_ACTIVITY(l_api_name,
3129 					      G_PKG_NAME,
3130 					      p_init_msg_list,
3131 					      l_api_version,
3132 					      p_api_version,
3133 					      '_PVT',
3134 					      x_return_status);
3135     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
3136       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3137     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
3138 
3139       RAISE OKE_API.G_EXCEPTION_ERROR;
3140     END IF;
3141     --- Validate all non-missing attributes (Item Level Validation)
3142     l_return_status := Validate_Attributes(l_cle_rec);
3143     --- If any errors happen abort API
3144     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
3145       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3146     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
3147       RAISE OKE_API.G_EXCEPTION_ERROR;
3148     END IF;
3149     l_return_status := Validate_Record(l_cle_rec);
3150 
3151     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
3152       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3153     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
3154       RAISE OKE_API.G_EXCEPTION_ERROR;
3155     END IF;
3156     OKE_API.END_ACTIVITY(x_msg_count, x_msg_data);
3157   EXCEPTION
3158     WHEN OKE_API.G_EXCEPTION_ERROR THEN
3159       x_return_status := OKE_API.HANDLE_EXCEPTIONS
3160       (
3161         l_api_name,
3162         G_PKG_NAME,
3163         'OKE_API.G_RET_STS_ERROR',
3164         x_msg_count,
3165         x_msg_data,
3166         '_PVT'
3167       );
3168     WHEN OKE_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3169       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
3170       (
3171         l_api_name,
3172         G_PKG_NAME,
3173         'OKE_API.G_RET_STS_UNEXP_ERROR',
3174         x_msg_count,
3175         x_msg_data,
3176         '_PVT'
3177       );
3178     WHEN OTHERS THEN
3179       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
3180       (
3181         l_api_name,
3182         G_PKG_NAME,
3183         'OTHERS',
3184         x_msg_count,
3185         x_msg_data,
3186         '_PVT'
3187       );
3188   END validate_row;
3189 
3190   PROCEDURE validate_row(
3191     p_api_version                  IN NUMBER,
3192     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
3193     x_return_status                OUT NOCOPY VARCHAR2,
3194     x_msg_count                    OUT NOCOPY NUMBER,
3195     x_msg_data                     OUT NOCOPY VARCHAR2,
3196     p_cle_tbl                      IN cle_tbl_type
3197     ) IS
3198 
3199     l_api_version                  CONSTANT NUMBER := 1;
3200     l_api_name                     CONSTANT VARCHAR2(30) := 'TBL_validate_row';
3201     l_return_status                VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
3202     l_overall_status               VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
3203     i                              NUMBER := 0;
3204   BEGIN
3205     OKE_API.init_msg_list(p_init_msg_list);
3206     -- Make sure PL/SQL table has records in it before passing
3207     IF (p_cle_tbl.COUNT > 0) THEN
3208       i := p_cle_tbl.FIRST;
3209       LOOP
3210         validate_row (
3211           p_api_version                  => p_api_version,
3212           p_init_msg_list                => OKE_API.G_FALSE,
3213           x_return_status                => x_return_status,
3214           x_msg_count                    => x_msg_count,
3215           x_msg_data                     => x_msg_data,
3216           p_cle_rec                     => p_cle_tbl(i));
3217 
3218 		-- store the highest degree of error
3219 	If x_return_status <> OKE_API.G_RET_STS_SUCCESS Then
3220 	  If l_overall_status <> OKE_API.G_RET_STS_UNEXP_ERROR Then
3221 	     l_overall_status := x_return_status;
3222 	  End If;
3223 	End If;
3224 
3225         EXIT WHEN (i = p_cle_tbl.LAST);
3226         i := p_cle_tbl.NEXT(i);
3227       END LOOP;
3228 	 -- return overall status
3229 	 x_return_status := l_overall_status;
3230     END IF;
3231 
3232   EXCEPTION
3233     WHEN OKE_API.G_EXCEPTION_ERROR THEN
3234       x_return_status := OKE_API.HANDLE_EXCEPTIONS
3235       (
3236         l_api_name,
3237         G_PKG_NAME,
3238         'OKE_API.G_RET_STS_ERROR',
3239         x_msg_count,
3240         x_msg_data,
3241         '_PVT'
3242       );
3243     WHEN OKE_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3244       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
3245       (
3246         l_api_name,
3247         G_PKG_NAME,
3248         'OKE_API.G_RET_STS_UNEXP_ERROR',
3249         x_msg_count,
3250         x_msg_data,
3251         '_PVT'
3252       );
3253     WHEN OTHERS THEN
3254       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
3255       (
3256         l_api_name,
3257         G_PKG_NAME,
3258         'OTHERS',
3259         x_msg_count,
3260         x_msg_data,
3261         '_PVT'
3262       );
3263   END validate_row;
3264 
3265 -- insert data into oke_k_lines
3266 
3267   PROCEDURE insert_row(
3268     p_api_version                  IN NUMBER,
3269     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
3270     x_return_status                OUT NOCOPY VARCHAR2,
3271     x_msg_count                    OUT NOCOPY NUMBER,
3272     x_msg_data                     OUT NOCOPY VARCHAR2,
3273     p_cle_rec                      IN cle_rec_type,
3274     x_cle_rec                      OUT NOCOPY cle_rec_type) IS
3275 
3276     l_api_version                  CONSTANT NUMBER := 1;
3277     l_api_name                     CONSTANT VARCHAR2(30) := 'B_insert_row';
3278     l_return_status                VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
3279     l_cle_rec                      cle_rec_type;
3280     l_def_cle_rec                  cle_rec_type;
3281     lx_cle_rec                     cle_rec_type;
3282 
3283     -- FUNCTION fill_who_columns --
3284     -------------------------------
3285     FUNCTION fill_who_columns (
3286       p_cle_rec	IN cle_rec_type
3287     ) RETURN cle_rec_type IS
3288 
3289       l_cle_rec	cle_rec_type := p_cle_rec;
3290 
3291     BEGIN
3292 
3293       l_cle_rec.CREATION_DATE := SYSDATE;
3294       l_cle_rec.CREATED_BY := FND_GLOBAL.USER_ID;
3295       l_cle_rec.LAST_UPDATE_DATE := SYSDATE;
3296       l_cle_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
3297       l_cle_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
3298       RETURN(l_cle_rec);
3299 
3300     END fill_who_columns;
3301 
3302     -- Set_Attributes for:OKE_K_LINES
3303 
3304 
3305     FUNCTION Set_Attributes (
3306       p_cle_rec IN  cle_rec_type,
3307       x_cle_rec OUT NOCOPY cle_rec_type
3308     ) RETURN VARCHAR2 IS
3309       l_return_status                VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
3310     BEGIN
3311 
3312       x_cle_rec := p_cle_rec;
3313       x_cle_rec.BILLABLE_FLAG		:= UPPER(x_cle_rec.BILLABLE_FLAG);
3314       x_cle_rec.SHIPPABLE_FLAG		:= UPPER(x_cle_rec.SHIPPABLE_FLAG);
3315       x_cle_rec.SUBCONTRACTED_FLAG	:= UPPER(x_cle_rec.SUBCONTRACTED_FLAG);
3316       x_cle_rec.DELIVERY_ORDER_FLAG     := UPPER(x_cle_rec.DELIVERY_ORDER_FLAG);
3317       x_cle_rec.SPLITED_FLAG		:= UPPER(x_cle_rec.SPLITED_FLAG);
3318       x_cle_rec.COMPLETED_FLAG		:= UPPER(x_cle_rec.COMPLETED_FLAG);
3319       x_cle_rec.NSP_FLAG		:= UPPER(x_cle_rec.NSP_FLAG);
3320       x_cle_rec.DROP_SHIPPED_FLAG	:= UPPER(x_cle_rec.DROP_SHIPPED_FLAG);
3321       x_cle_rec.CUSTOMER_APPROVAL_REQ_FLAG := UPPER(x_cle_rec.CUSTOMER_APPROVAL_REQ_FLAG);
3322       x_cle_rec.INSPECTION_REQ_FLAG	:= UPPER(x_cle_rec.INSPECTION_REQ_FLAG);
3323       x_cle_rec.INTERIM_RPT_REQ_FLAG	:= UPPER(x_cle_rec.INTERIM_RPT_REQ_FLAG);
3324       x_cle_rec.SUBJ_A133_FLAG	:= UPPER(x_cle_rec.SUBJ_A133_FLAG);
3325       x_cle_rec.EXPORT_FLAG	:= UPPER(x_cle_rec.EXPORT_FLAG);
3326       x_cle_rec.CFE_REQ_FLAG	:= UPPER(x_cle_rec.CFE_REQ_FLAG);
3327       x_cle_rec.COP_REQUIRED_FLAG	:= UPPER(x_cle_rec.COP_REQUIRED_FLAG);
3328       x_cle_rec.DCAA_AUDIT_REQ_FLAG	:= UPPER(x_cle_rec.DCAA_AUDIT_REQ_FLAG);
3329       x_cle_rec.DEFINITIZED_FLAG	:= UPPER(x_cle_rec.DEFINITIZED_FLAG);
3330       x_cle_rec.COST_OF_MONEY		:= UPPER(x_cle_rec.COST_OF_MONEY);
3331       x_cle_rec.BILL_UNDEFINITIZED_FLAG	:= UPPER(x_cle_rec.BILL_UNDEFINITIZED_FLAG);
3332       x_cle_rec.NTE_WARNING_FLAG	:= UPPER(x_cle_rec.NTE_WARNING_FLAG);
3333       x_cle_rec.FINANCIAL_CTRL_FLAG	:= UPPER(x_cle_rec.FINANCIAL_CTRL_FLAG);
3334       x_cle_rec.C_SCS_FLAG	:= UPPER(x_cle_rec.C_SCS_FLAG);
3335       x_cle_rec.C_SSR_FLAG	:= UPPER(x_cle_rec.C_SSR_FLAG);
3336       x_cle_rec.PROGRESS_PAYMENT_FLAG	:= UPPER(x_cle_rec.PROGRESS_PAYMENT_FLAG);
3337 
3338       RETURN(l_return_status);
3339 
3340     END Set_Attributes;
3341 
3342   BEGIN
3343 
3344     l_return_status := OKE_API.START_ACTIVITY(l_api_name,
3345                                               G_PKG_NAME,
3346                                               p_init_msg_list,
3347                                               l_api_version,
3348                                               p_api_version,
3349                                               '_PVT',
3350                                               x_return_status);
3351 
3352 
3353     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
3354       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3355     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
3356       RAISE OKE_API.G_EXCEPTION_ERROR;
3357     END IF;
3358 
3359     l_cle_rec := null_out_defaults(p_cle_rec);
3360 
3361     --- Setting item attributes
3362     l_return_status := Set_Attributes(
3363       l_cle_rec,                        -- IN
3364       l_def_cle_rec);                   -- OUT
3365 
3366     --- If any errors happen abort API
3367     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
3368       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3369     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
3370       RAISE OKE_API.G_EXCEPTION_ERROR;
3371     END IF;
3372 
3373     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
3374       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3375     END IF;
3376 
3377     l_def_cle_rec := fill_who_columns(l_def_cle_rec);
3378 
3379 
3380     --- Validate all non-missing attributes (Item Level Validation)
3381     l_return_status := Validate_Attributes(l_def_cle_rec);
3382 
3383     --- If any errors happen abort API
3384     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
3385       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3386 
3387     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
3388       RAISE OKE_API.G_EXCEPTION_ERROR;
3389     END IF;
3390 
3391 
3392     l_return_status := Validate_Record(l_def_cle_rec);
3393 
3394     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
3395       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3396     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
3397       RAISE OKE_API.G_EXCEPTION_ERROR;
3398     END IF;
3399 
3400     INSERT INTO OKE_K_LINES(
3401                 K_LINE_ID			,
3402 		PARENT_LINE_ID			,
3403 		PROJECT_ID			,
3404 		TASK_ID				,
3405 		BILLING_METHOD_CODE		,
3406 		INVENTORY_ITEM_ID				,
3407 		DELIVERY_ORDER_FLAG			,
3408 		SPLITED_FLAG			,
3409 		PRIORITY_CODE			,
3410 		CUSTOMER_ITEM_ID		,
3411 		CUSTOMER_ITEM_NUMBER		,
3412 		LINE_QUANTITY			,
3413 		DELIVERY_DATE			,
3414 		PROPOSAL_DUE_DATE		,
3415 		UNIT_PRICE			,
3416 		UOM_CODE			,
3417 		LINE_VALUE			,
3418 		LINE_VALUE_TOTAL		,
3419 		UNDEF_UNIT_PRICE		,
3420 		UNDEF_LINE_VALUE		,
3421 		UNDEF_LINE_VALUE_TOTAL		,
3422 		END_DATE			,
3423 		BILLABLE_FLAG			,
3424 		SHIPPABLE_FLAG			,
3425 		SUBCONTRACTED_FLAG		,
3426 		COMPLETED_FLAG			,
3427 		NSP_FLAG			,
3428 		APP_CODE			,
3429 		AS_OF_DATE			,
3430 		AUTHORITY			,
3431 		COUNTRY_OF_ORIGIN_CODE		,
3432 		DROP_SHIPPED_FLAG		,
3433 		CUSTOMER_APPROVAL_REQ_FLAG	,
3434 		DATE_MATERIAL_REQ		,
3435 		INSPECTION_REQ_FLAG		,
3436 		INTERIM_RPT_REQ_FLAG		,
3437 		SUBJ_A133_FLAG			,
3438 		EXPORT_FLAG			,
3439 		CFE_REQ_FLAG			,
3440 		COP_REQUIRED_FLAG		,
3441 		EXPORT_LICENSE_NUM		,
3442 		EXPORT_LICENSE_RES		,
3443 		COPIES_REQUIRED			,
3444 		CDRL_CATEGORY			,
3445 		DATA_ITEM_NAME			,
3446 		DATA_ITEM_SUBTITLE		,
3447 		DATE_OF_FIRST_SUBMISSION	,
3448 		FREQUENCY			,
3449 		REQUIRING_OFFICE		,
3450 		DCAA_AUDIT_REQ_FLAG		,
3451 		DEFINITIZED_FLAG		,
3452 		COST_OF_MONEY			,
3453 		BILL_UNDEFINITIZED_FLAG		,
3454 		NSN_NUMBER			,
3455 		NTE_WARNING_FLAG		,
3456 		DISCOUNT_FOR_PAYMENT		,
3457 		FINANCIAL_CTRL_FLAG		,
3458 		C_SCS_FLAG			,
3459 		C_SSR_FLAG			,
3460 		PREPAYMENT_AMOUNT		,
3461 		PREPAYMENT_PERCENTAGE		,
3462 		PROGRESS_PAYMENT_FLAG		,
3463 		PROGRESS_PAYMENT_LIQ_RATE	,
3464 		PROGRESS_PAYMENT_RATE		,
3465 		AWARD_FEE			,
3466 		AWARD_FEE_POOL_AMOUNT		,
3467 		BASE_FEE			,
3468 		CEILING_COST				,
3469 		CEILING_PRICE				,
3470 		COST_OVERRUN_SHARE_RATIO		,
3471 		COST_UNDERRUN_SHARE_RATIO		,
3472 		LABOR_COST_INDEX			,
3473 		MATERIAL_COST_INDEX			,
3474 		CUSTOMERS_PERCENT_IN_ORDER	,
3475 		DATE_OF_PRICE_REDETERMIN	,
3476 		ESTIMATED_TOTAL_QUANTITY	,
3477 		FEE_AJT_FORMULA		,
3478 		FINAL_FEE			,
3479 		FINAL_PFT_AJT_FORMULA		,
3480 		FIXED_FEE			,
3481 		FIXED_QUANTITY			,
3482 		INITIAL_FEE			,
3483 		INITIAL_PRICE			,
3484 		LEVEL_OF_EFFORT_HOURS		,
3485 		LINE_LIQUIDATION_RATE		,
3486 		MAXIMUM_FEE			,
3487 		MAXIMUM_QUANTITY		,
3488 		MINIMUM_FEE			,
3489 		MINIMUM_QUANTITY		,
3490 		NUMBER_OF_OPTIONS		,
3491 		REVISED_PRICE			,
3492 		TARGET_COST			,
3493 		TARGET_DATE_DEFINITIZE		,
3494 		TARGET_FEE			,
3495 		TARGET_PRICE			,
3496 		TOTAL_ESTIMATED_COST		,
3497 		CREATED_BY			,
3498 		CREATION_DATE			,
3499 		LAST_UPDATED_BY			,
3500 		LAST_UPDATE_LOGIN		,
3501 		LAST_UPDATE_DATE		,
3502 		COST_OF_SALE_RATE)
3503     VALUES(
3504 		l_def_cle_rec.K_LINE_ID			,
3505 		l_def_cle_rec.PARENT_LINE_ID		,
3506 		l_def_cle_rec.PROJECT_ID			,
3507 		l_def_cle_rec.TASK_ID			,
3508 		l_def_cle_rec.BILLING_METHOD_CODE		,
3509 		l_def_cle_rec.INVENTORY_ITEM_ID			,
3510 		l_def_cle_rec.DELIVERY_ORDER_FLAG			,
3511                 l_def_cle_rec.SPLITED_FLAG		,
3512 		l_def_cle_rec.PRIORITY_CODE			,
3513 		l_def_cle_rec.CUSTOMER_ITEM_ID		,
3514 		l_def_cle_rec.CUSTOMER_ITEM_NUMBER	,
3515 		l_def_cle_rec.LINE_QUANTITY			,
3516 		l_def_cle_rec.DELIVERY_DATE			,
3517 		l_def_cle_rec.PROPOSAL_DUE_DATE		,
3518 		l_def_cle_rec.UNIT_PRICE			,
3519 		l_def_cle_rec.UOM_CODE			,
3520 		l_def_cle_rec.LINE_VALUE		,
3521 		l_def_cle_rec.LINE_VALUE_TOTAL		,
3522 		l_def_cle_rec.UNDEF_UNIT_PRICE		,
3523 		l_def_cle_rec.UNDEF_LINE_VALUE		,
3524 		l_def_cle_rec.UNDEF_LINE_VALUE_TOTAL	,
3525 		l_def_cle_rec.END_DATE			,
3526 		l_def_cle_rec.BILLABLE_FLAG			,
3527 		l_def_cle_rec.SHIPPABLE_FLAG		,
3528 		l_def_cle_rec.SUBCONTRACTED_FLAG		,
3529 		l_def_cle_rec.COMPLETED_FLAG		,
3530 		l_def_cle_rec.NSP_FLAG			,
3531 		l_def_cle_rec.APP_CODE			,
3532 		l_def_cle_rec.AS_OF_DATE			,
3533 		l_def_cle_rec.AUTHORITY			,
3534 		l_def_cle_rec.COUNTRY_OF_ORIGIN_CODE	,
3535 		l_def_cle_rec.DROP_SHIPPED_FLAG		,
3536 		l_def_cle_rec.CUSTOMER_APPROVAL_REQ_FLAG	,
3537 		l_def_cle_rec.DATE_MATERIAL_REQ		,
3538 		l_def_cle_rec.INSPECTION_REQ_FLAG		,
3539 		l_def_cle_rec.INTERIM_RPT_REQ_FLAG		,
3540 		l_def_cle_rec.SUBJ_A133_FLAG		,
3541 		l_def_cle_rec.EXPORT_FLAG			,
3542 		l_def_cle_rec.CFE_REQ_FLAG			,
3543 		l_def_cle_rec.COP_REQUIRED_FLAG		,
3544 		l_def_cle_rec.EXPORT_LICENSE_NUM		,
3545 		l_def_cle_rec.EXPORT_LICENSE_RES		,
3546 		l_def_cle_rec.COPIES_REQUIRED		,
3547 		l_def_cle_rec.CDRL_CATEGORY			,
3548 		l_def_cle_rec.DATA_ITEM_NAME		,
3549 		l_def_cle_rec.DATA_ITEM_SUBTITLE		,
3550 		l_def_cle_rec.DATE_OF_FIRST_SUBMISSION	,
3551 		l_def_cle_rec.FREQUENCY			,
3552 		l_def_cle_rec.REQUIRING_OFFICE		,
3553 		l_def_cle_rec.DCAA_AUDIT_REQ_FLAG		,
3554 		l_def_cle_rec.DEFINITIZED_FLAG		,
3555 		l_def_cle_rec.COST_OF_MONEY			,
3556 		l_def_cle_rec.BILL_UNDEFINITIZED_FLAG	,
3557 		l_def_cle_rec.NSN_NUMBER			,
3558 		l_def_cle_rec.NTE_WARNING_FLAG		,
3559 		l_def_cle_rec.DISCOUNT_FOR_PAYMENT		,
3560 		l_def_cle_rec.FINANCIAL_CTRL_FLAG		,
3561 		l_def_cle_rec.C_SCS_FLAG			,
3562 		l_def_cle_rec.C_SSR_FLAG			,
3563 		l_def_cle_rec.PREPAYMENT_AMOUNT		,
3564 		l_def_cle_rec.PREPAYMENT_PERCENTAGE		,
3565 		l_def_cle_rec.PROGRESS_PAYMENT_FLAG		,
3566 		l_def_cle_rec.PROGRESS_PAYMENT_LIQ_RATE	,
3567 		l_def_cle_rec.PROGRESS_PAYMENT_RATE		,
3568 		l_def_cle_rec.AWARD_FEE			,
3569 		l_def_cle_rec.AWARD_FEE_POOL_AMOUNT	,
3570 		l_def_cle_rec.BASE_FEE			,
3571 		l_def_cle_rec.CEILING_COST			,
3572 		l_def_cle_rec.CEILING_PRICE			,
3573 		l_def_cle_rec.COST_OVERRUN_SHARE_RATIO		,
3574 		l_def_cle_rec.COST_UNDERRUN_SHARE_RATIO		,
3575 		l_def_cle_rec.LABOR_COST_INDEX			,
3576 		l_def_cle_rec.MATERIAL_COST_INDEX		,
3577 		l_def_cle_rec.CUSTOMERS_PERCENT_IN_ORDER	,
3578 		l_def_cle_rec.DATE_OF_PRICE_REDETERMIN	,
3579 		l_def_cle_rec.ESTIMATED_TOTAL_QUANTITY	,
3580 		l_def_cle_rec.FEE_AJT_FORMULA		,
3581 		l_def_cle_rec.FINAL_FEE			,
3582 		l_def_cle_rec.FINAL_PFT_AJT_FORMULA	,
3583 		l_def_cle_rec.FIXED_FEE			,
3584 		l_def_cle_rec.FIXED_QUANTITY		,
3585 		l_def_cle_rec.INITIAL_FEE			,
3586 		l_def_cle_rec.INITIAL_PRICE			,
3587 		l_def_cle_rec.LEVEL_OF_EFFORT_HOURS		,
3588 		l_def_cle_rec.LINE_LIQUIDATION_RATE		,
3589 		l_def_cle_rec.MAXIMUM_FEE			,
3590 		l_def_cle_rec.MAXIMUM_QUANTITY		,
3591 		l_def_cle_rec.MINIMUM_FEE			,
3592 		l_def_cle_rec.MINIMUM_QUANTITY		,
3593 		l_def_cle_rec.NUMBER_OF_OPTIONS		,
3594 		l_def_cle_rec.REVISED_PRICE			,
3595 		l_def_cle_rec.TARGET_COST			,
3596 		l_def_cle_rec.TARGET_DATE_DEFINITIZE	,
3597 		l_def_cle_rec.TARGET_FEE			,
3598 		l_def_cle_rec.TARGET_PRICE			,
3599 		l_def_cle_rec.TOTAL_ESTIMATED_COST		,
3600 		l_def_cle_rec.CREATED_BY			,
3601 		l_def_cle_rec.CREATION_DATE			,
3602 		l_def_cle_rec.LAST_UPDATED_BY		,
3603 		l_def_cle_rec.LAST_UPDATE_LOGIN		,
3604 		l_def_cle_rec.LAST_UPDATE_DATE		,
3605 		l_def_cle_rec.COST_OF_SALE_RATE);
3606 
3607     -- Set OUT values
3608     x_cle_rec := l_def_cle_rec;
3609     OKE_API.END_ACTIVITY(x_msg_count, x_msg_data);
3610 
3611   EXCEPTION
3612     WHEN OKE_API.G_EXCEPTION_ERROR THEN
3613       x_return_status := OKE_API.HANDLE_EXCEPTIONS
3614       (
3615         l_api_name,
3616         G_PKG_NAME,
3617         'OKE_API.G_RET_STS_ERROR',
3618         x_msg_count,
3619         x_msg_data,
3620         '_PVT'
3621       );
3622     WHEN OKE_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3623       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
3624       (
3625         l_api_name,
3626         G_PKG_NAME,
3627         'OKE_API.G_RET_STS_UNEXP_ERROR',
3628         x_msg_count,
3629         x_msg_data,
3630         '_PVT'
3631       );
3632     WHEN OTHERS THEN
3633       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
3634       (
3635         l_api_name,
3636         G_PKG_NAME,
3637         'OTHERS',
3638         x_msg_count,
3639         x_msg_data,
3640         '_PVT'
3641       );
3642   END insert_row;
3643 
3644   PROCEDURE insert_row(
3645     p_api_version                  IN NUMBER,
3646     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
3647     x_return_status                OUT NOCOPY VARCHAR2,
3648     x_msg_count                    OUT NOCOPY NUMBER,
3649     x_msg_data                     OUT NOCOPY VARCHAR2,
3650     p_cle_tbl                      IN cle_tbl_type,
3651     x_cle_tbl                      OUT NOCOPY cle_tbl_type) IS
3652 
3653     l_api_version                  CONSTANT NUMBER := 1;
3654     l_api_name                     CONSTANT VARCHAR2(30) := 'TBL_insert_row';
3655     l_return_status                VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
3656     l_overall_status               VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
3657     i                              NUMBER := 0;
3658   BEGIN
3659 
3660     OKE_API.init_msg_list(p_init_msg_list);
3661     -- Make sure PL/SQL table has records in it before passing
3662     IF (p_cle_tbl.COUNT > 0) THEN
3663       i := p_cle_tbl.FIRST;
3664       LOOP
3665         insert_row (
3666           p_api_version                  => p_api_version,
3667           p_init_msg_list                => OKE_API.G_FALSE,
3668           x_return_status                => x_return_status,
3669           x_msg_count                    => x_msg_count,
3670           x_msg_data                     => x_msg_data,
3671 
3672           p_cle_rec                      => p_cle_tbl(i),
3673           x_cle_rec                      => x_cle_tbl(i));
3674 
3675 		-- store the highest degree of error
3676 	 If x_return_status <> OKE_API.G_RET_STS_SUCCESS Then
3677 	   If l_overall_status <> OKE_API.G_RET_STS_UNEXP_ERROR Then
3678 	     l_overall_status := x_return_status;
3679 	   End If;
3680 	 End If;
3681 
3682         EXIT WHEN (i = p_cle_tbl.LAST);
3683 
3684         i := p_cle_tbl.NEXT(i);
3685       END LOOP;
3686 	 -- return overall status
3687 	 x_return_status := l_overall_status;
3688     END IF;
3689 
3690   EXCEPTION
3691     WHEN OKE_API.G_EXCEPTION_ERROR THEN
3692       x_return_status := OKE_API.HANDLE_EXCEPTIONS
3693       (
3694         l_api_name,
3695         G_PKG_NAME,
3696         'OKE_API.G_RET_STS_ERROR',
3697         x_msg_count,
3698         x_msg_data,
3699         '_PVT'
3700       );
3701     WHEN OKE_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3702       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
3703       (
3704         l_api_name,
3705         G_PKG_NAME,
3706         'OKE_API.G_RET_STS_UNEXP_ERROR',
3707         x_msg_count,
3708         x_msg_data,
3709         '_PVT'
3710       );
3711     WHEN OTHERS THEN
3712       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
3713       (
3714         l_api_name,
3715         G_PKG_NAME,
3716         'OTHERS',
3717         x_msg_count,
3718         x_msg_data,
3719         '_PVT'
3720       );
3721   END insert_row;
3722 
3723 -- update oke_k_lines
3724 
3725   PROCEDURE update_row(
3726     p_api_version                  IN NUMBER,
3727     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
3728     x_return_status                OUT NOCOPY VARCHAR2,
3729     x_msg_count                    OUT NOCOPY NUMBER,
3730     x_msg_data                     OUT NOCOPY VARCHAR2,
3731     p_cle_rec                      IN cle_rec_type,
3732     x_cle_rec                      OUT NOCOPY cle_rec_type) IS
3733 
3734     l_api_version                  CONSTANT NUMBER := 1.0;
3735     l_api_name                     CONSTANT VARCHAR2(30) := 'B_update_row';
3736     l_return_status                VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
3737     l_cle_rec                      cle_rec_type := p_cle_rec;
3738     l_def_cle_rec                  cle_rec_type;
3739     lx_cle_rec                     cle_rec_type;
3740 
3741     -------------------------------
3742     -- FUNCTION fill_who_columns --
3743     -------------------------------
3744     FUNCTION fill_who_columns (
3745       p_cle_rec	IN cle_rec_type
3746     ) RETURN cle_rec_type IS
3747 
3748       l_cle_rec	cle_rec_type := p_cle_rec;
3749 
3750     BEGIN
3751       l_cle_rec.LAST_UPDATE_DATE := SYSDATE;
3752       l_cle_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
3753       l_cle_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
3754       RETURN(l_cle_rec);
3755     END fill_who_columns;
3756 
3757     ----------------------------------
3758     -- FUNCTION populate_new_record --
3759     ----------------------------------
3760     FUNCTION populate_new_record (
3761       p_cle_rec	IN cle_rec_type,
3762       x_cle_rec	OUT NOCOPY cle_rec_type
3763     ) RETURN VARCHAR2 IS
3764 
3765       l_cle_rec                     cle_rec_type;
3766       l_row_notfound                 BOOLEAN := TRUE;
3767       l_return_status                VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
3768 
3769     BEGIN
3770 
3771       x_cle_rec := p_cle_rec;
3772 
3773 
3774       -- Get current database values
3775       l_cle_rec := get_rec(p_cle_rec, l_row_notfound);
3776 
3777 
3778       IF (l_row_notfound) THEN
3779         l_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
3780       END IF;
3781 
3782 
3783       IF  x_cle_rec.PARENT_LINE_ID = OKE_API.G_MISS_NUM THEN
3784 	x_cle_rec.PARENT_LINE_ID := l_cle_rec.PARENT_LINE_ID;
3785       END IF;
3786 
3787     IF	x_cle_rec.PROJECT_ID = OKE_API.G_MISS_NUM THEN
3788         x_cle_rec.PROJECT_ID := l_cle_rec.PROJECT_ID;
3789     END IF;
3790 
3791     IF  x_cle_rec.TASK_ID = OKE_API.G_MISS_NUM THEN
3792       	x_cle_rec.TASK_ID := l_cle_rec.TASK_ID;
3793     END IF;
3794 
3795     IF	x_cle_rec.BILLING_METHOD_CODE = OKE_API.G_MISS_CHAR THEN
3796         x_cle_rec.BILLING_METHOD_CODE := l_cle_rec.BILLING_METHOD_CODE;
3797     END IF;
3798 
3799     IF	x_cle_rec.INVENTORY_ITEM_ID = OKE_API.G_MISS_NUM THEN
3800         x_cle_rec.INVENTORY_ITEM_ID := l_cle_rec.INVENTORY_ITEM_ID;
3801     END IF;
3802 
3803     IF	x_cle_rec.DELIVERY_ORDER_FLAG = OKE_API.G_MISS_CHAR THEN
3804 	x_cle_rec.DELIVERY_ORDER_FLAG := l_cle_rec.DELIVERY_ORDER_FLAG;
3805     END IF;
3806 
3807     IF	x_cle_rec.SPLITED_FLAG = OKE_API.G_MISS_CHAR THEN
3808 	x_cle_rec.SPLITED_FLAG := l_cle_rec.SPLITED_FLAG;
3809     END IF;
3810 
3811     IF  x_cle_rec.PRIORITY_CODE	= OKE_API.G_MISS_CHAR THEN
3812 	x_cle_rec.PRIORITY_CODE	:= l_cle_rec.PRIORITY_CODE;
3813     END IF;
3814 
3815     IF	x_cle_rec.CUSTOMER_ITEM_ID = OKE_API.G_MISS_NUM THEN
3816 	x_cle_rec.CUSTOMER_ITEM_ID := l_cle_rec.CUSTOMER_ITEM_ID;
3817     END IF;
3818 
3819     IF	x_cle_rec.CUSTOMER_ITEM_NUMBER = OKE_API.G_MISS_CHAR THEN
3820 	x_cle_rec.CUSTOMER_ITEM_NUMBER := l_cle_rec.CUSTOMER_ITEM_NUMBER;
3821     END IF;
3822 
3823     IF	x_cle_rec.LINE_QUANTITY	= OKE_API.G_MISS_NUM THEN
3824         x_cle_rec.LINE_QUANTITY	:= l_cle_rec.LINE_QUANTITY;
3825     END IF;
3826 
3827     IF	x_cle_rec.DELIVERY_DATE	= OKE_API.G_MISS_DATE THEN
3828         x_cle_rec.DELIVERY_DATE	:= l_cle_rec.DELIVERY_DATE;
3829     END IF;
3830 
3831     IF	x_cle_rec.PROPOSAL_DUE_DATE = OKE_API.G_MISS_CHAR THEN
3832         x_cle_rec.PROPOSAL_DUE_DATE := l_cle_rec.PROPOSAL_DUE_DATE;
3833     END IF;
3834 
3835     IF	x_cle_rec.UNIT_PRICE = OKE_API.G_MISS_NUM THEN
3836 	x_cle_rec.UNIT_PRICE := l_cle_rec.UNIT_PRICE;
3837     END IF;
3838 
3839     IF	x_cle_rec.UOM_CODE = OKE_API.G_MISS_CHAR THEN
3840 	x_cle_rec.UOM_CODE := l_cle_rec.UOM_CODE;
3841     END IF;
3842 
3843     IF	x_cle_rec.LINE_VALUE = OKE_API.G_MISS_NUM THEN
3844 	x_cle_rec.LINE_VALUE := l_cle_rec.LINE_VALUE;
3845     END IF;
3846 
3847     IF	x_cle_rec.LINE_VALUE_TOTAL = OKE_API.G_MISS_NUM THEN
3848 	x_cle_rec.LINE_VALUE_TOTAL := l_cle_rec.LINE_VALUE_TOTAL;
3849     END IF;
3850 
3851     IF	x_cle_rec.UNDEF_UNIT_PRICE = OKE_API.G_MISS_NUM THEN
3852 	x_cle_rec.UNDEF_UNIT_PRICE := l_cle_rec.UNDEF_UNIT_PRICE;
3853     END IF;
3854 
3855     IF	x_cle_rec.UNDEF_LINE_VALUE = OKE_API.G_MISS_NUM THEN
3856 	x_cle_rec.UNDEF_LINE_VALUE := l_cle_rec.UNDEF_LINE_VALUE;
3857     END IF;
3858 
3859     IF	x_cle_rec.UNDEF_LINE_VALUE_TOTAL = OKE_API.G_MISS_NUM THEN
3860 	x_cle_rec.UNDEF_LINE_VALUE_TOTAL := l_cle_rec.UNDEF_LINE_VALUE_TOTAL;
3861     END IF;
3862 
3863     IF	x_cle_rec.END_DATE = OKE_API.G_MISS_DATE THEN
3864 	x_cle_rec.END_DATE := l_cle_rec.END_DATE;
3865     END IF;
3866 
3867     IF	x_cle_rec.BILLABLE_FLAG	= OKE_API.G_MISS_CHAR THEN
3868 	x_cle_rec.BILLABLE_FLAG	:= l_cle_rec.BILLABLE_FLAG;
3869     END IF;
3870 
3871     IF	x_cle_rec.SHIPPABLE_FLAG = OKE_API.G_MISS_CHAR THEN
3872 	x_cle_rec.SHIPPABLE_FLAG := l_cle_rec.SHIPPABLE_FLAG;
3873     END IF;
3874 
3875     IF	x_cle_rec.SUBCONTRACTED_FLAG = OKE_API.G_MISS_CHAR THEN
3876 	x_cle_rec.SUBCONTRACTED_FLAG := l_cle_rec.SUBCONTRACTED_FLAG;
3877     END IF;
3878 
3879     IF	x_cle_rec.COMPLETED_FLAG = OKE_API.G_MISS_CHAR THEN
3880 	x_cle_rec.COMPLETED_FLAG := l_cle_rec.COMPLETED_FLAG;
3881     END IF;
3882 
3883     IF	x_cle_rec.NSP_FLAG = OKE_API.G_MISS_CHAR THEN
3884 	x_cle_rec.NSP_FLAG := l_cle_rec.NSP_FLAG;
3885     END IF;
3886 
3887     IF	x_cle_rec.APP_CODE = OKE_API.G_MISS_CHAR THEN
3888 	x_cle_rec.APP_CODE := l_cle_rec.APP_CODE;
3889     END IF;
3890 
3891     IF	x_cle_rec.AS_OF_DATE = OKE_API.G_MISS_DATE THEN
3892 	x_cle_rec.AS_OF_DATE := l_cle_rec.AS_OF_DATE;
3893     END IF;
3894 
3895     IF	x_cle_rec.AUTHORITY = OKE_API.G_MISS_CHAR THEN
3896         x_cle_rec.AUTHORITY := l_cle_rec.AUTHORITY;
3897     END IF;
3898 
3899     IF  x_cle_rec.COUNTRY_OF_ORIGIN_CODE = OKE_API.G_MISS_CHAR THEN
3900 	x_cle_rec.COUNTRY_OF_ORIGIN_CODE := l_cle_rec.COUNTRY_OF_ORIGIN_CODE;
3901     END IF;
3902 
3903     IF	x_cle_rec.DROP_SHIPPED_FLAG = OKE_API.G_MISS_CHAR THEN
3904         x_cle_rec.DROP_SHIPPED_FLAG := l_cle_rec.DROP_SHIPPED_FLAG;
3905     END IF;
3906 
3907     IF	x_cle_rec.CUSTOMER_APPROVAL_REQ_FLAG = OKE_API.G_MISS_CHAR THEN
3908 	x_cle_rec.CUSTOMER_APPROVAL_REQ_FLAG := l_cle_rec.CUSTOMER_APPROVAL_REQ_FLAG;
3909     END IF;
3910 
3911     IF  x_cle_rec.DATE_MATERIAL_REQ = OKE_API.G_MISS_DATE THEN
3912 	x_cle_rec.DATE_MATERIAL_REQ := l_cle_rec.DATE_MATERIAL_REQ;
3913     END IF;
3914 
3915     IF	x_cle_rec.INSPECTION_REQ_FLAG = OKE_API.G_MISS_CHAR THEN
3916 	x_cle_rec.INSPECTION_REQ_FLAG := l_cle_rec.INSPECTION_REQ_FLAG;
3917     END IF;
3918 
3919     IF	x_cle_rec.INTERIM_RPT_REQ_FLAG = OKE_API.G_MISS_CHAR THEN
3920 	x_cle_rec.INTERIM_RPT_REQ_FLAG := l_cle_rec.INTERIM_RPT_REQ_FLAG;
3921     END IF;
3922 
3923     IF	x_cle_rec.SUBJ_A133_FLAG = OKE_API.G_MISS_CHAR THEN
3924    	x_cle_rec.SUBJ_A133_FLAG := l_cle_rec.SUBJ_A133_FLAG;
3925     END IF;
3926 
3927     IF	x_cle_rec.EXPORT_FLAG = OKE_API.G_MISS_CHAR THEN
3928 	x_cle_rec.EXPORT_FLAG := l_cle_rec.EXPORT_FLAG;
3929     END IF;
3930 
3931     IF	x_cle_rec.CFE_REQ_FLAG = OKE_API.G_MISS_CHAR THEN
3932 	x_cle_rec.CFE_REQ_FLAG := l_cle_rec.CFE_REQ_FLAG;
3933     END IF;
3934 
3935     IF	x_cle_rec.COP_REQUIRED_FLAG = OKE_API.G_MISS_CHAR THEN
3936 	x_cle_rec.COP_REQUIRED_FLAG := l_cle_rec.COP_REQUIRED_FLAG;
3937     END IF;
3938 
3939     IF	x_cle_rec.EXPORT_LICENSE_NUM = OKE_API.G_MISS_CHAR THEN
3940    	x_cle_rec.EXPORT_LICENSE_NUM := l_cle_rec.EXPORT_LICENSE_NUM;
3941     END IF;
3942 
3943     IF	x_cle_rec.EXPORT_LICENSE_RES = OKE_API.G_MISS_CHAR THEN
3944 	x_cle_rec.EXPORT_LICENSE_RES := l_cle_rec.EXPORT_LICENSE_RES;
3945     END IF;
3946 
3947     IF	x_cle_rec.COPIES_REQUIRED = OKE_API.G_MISS_NUM THEN
3948 	x_cle_rec.COPIES_REQUIRED := l_cle_rec.COPIES_REQUIRED;
3949     END IF;
3950 
3951     IF	x_cle_rec.CDRL_CATEGORY = OKE_API.G_MISS_CHAR THEN
3952 	x_cle_rec.CDRL_CATEGORY := l_cle_rec.CDRL_CATEGORY;
3953     END IF;
3954 
3955     IF	x_cle_rec.DATA_ITEM_NAME = OKE_API.G_MISS_CHAR THEN
3956 	x_cle_rec.DATA_ITEM_NAME := l_cle_rec.DATA_ITEM_NAME;
3957     END IF;
3958 
3959     IF	x_cle_rec.DATA_ITEM_SUBTITLE = OKE_API.G_MISS_CHAR THEN
3960 	x_cle_rec.DATA_ITEM_SUBTITLE := l_cle_rec.DATA_ITEM_SUBTITLE;
3961     END IF;
3962 
3963     IF	x_cle_rec.DATE_OF_FIRST_SUBMISSION = OKE_API.G_MISS_DATE THEN
3964 	x_cle_rec.DATE_OF_FIRST_SUBMISSION := l_cle_rec.DATE_OF_FIRST_SUBMISSION;
3965     END IF;
3966 
3967     IF	x_cle_rec.FREQUENCY = OKE_API.G_MISS_CHAR THEN
3968 	x_cle_rec.FREQUENCY := l_cle_rec.FREQUENCY;
3969     END IF;
3970 
3971     IF	x_cle_rec.REQUIRING_OFFICE = OKE_API.G_MISS_CHAR THEN
3972 	x_cle_rec.REQUIRING_OFFICE := l_cle_rec.REQUIRING_OFFICE;
3973     END IF;
3974 
3975     IF	x_cle_rec.DCAA_AUDIT_REQ_FLAG = OKE_API.G_MISS_CHAR THEN
3976 	x_cle_rec.DCAA_AUDIT_REQ_FLAG := l_cle_rec.DCAA_AUDIT_REQ_FLAG;
3977     END IF;
3978 
3979     IF	x_cle_rec.DEFINITIZED_FLAG = OKE_API.G_MISS_CHAR THEN
3980 	x_cle_rec.DEFINITIZED_FLAG := l_cle_rec.DEFINITIZED_FLAG;
3981     END IF;
3982 
3983     IF	x_cle_rec.COST_OF_MONEY = OKE_API.G_MISS_CHAR THEN
3984 	x_cle_rec.COST_OF_MONEY := l_cle_rec.COST_OF_MONEY;
3985     END IF;
3986 
3987     IF  x_cle_rec.BILL_UNDEFINITIZED_FLAG = OKE_API.G_MISS_CHAR THEN
3988 	x_cle_rec.BILL_UNDEFINITIZED_FLAG := l_cle_rec.BILL_UNDEFINITIZED_FLAG;
3989     END IF;
3990 
3991     IF	x_cle_rec.NSN_NUMBER = OKE_API.G_MISS_CHAR THEN
3992 	x_cle_rec.NSN_NUMBER := l_cle_rec.NSN_NUMBER;
3993     END IF;
3994 
3995     IF	x_cle_rec.NTE_WARNING_FLAG = OKE_API.G_MISS_CHAR THEN
3996 	x_cle_rec.NTE_WARNING_FLAG := l_cle_rec.NTE_WARNING_FLAG;
3997     END IF;
3998 
3999     IF	x_cle_rec.DISCOUNT_FOR_PAYMENT = OKE_API.G_MISS_NUM THEN
4000 	x_cle_rec.DISCOUNT_FOR_PAYMENT := l_cle_rec.DISCOUNT_FOR_PAYMENT;
4001     END IF;
4002 
4003     IF	x_cle_rec.FINANCIAL_CTRL_FLAG = OKE_API.G_MISS_CHAR THEN
4004 	x_cle_rec.FINANCIAL_CTRL_FLAG := l_cle_rec.FINANCIAL_CTRL_FLAG;
4005     END IF;
4006 
4007     IF	x_cle_rec.C_SCS_FLAG = OKE_API.G_MISS_CHAR THEN
4008 	x_cle_rec.C_SCS_FLAG := l_cle_rec.C_SCS_FLAG;
4009     END IF;
4010 
4011     IF	x_cle_rec.C_SSR_FLAG = OKE_API.G_MISS_CHAR THEN
4012 	x_cle_rec.C_SSR_FLAG := l_cle_rec.C_SSR_FLAG;
4013     END IF;
4014 
4015     IF	x_cle_rec.PREPAYMENT_AMOUNT = OKE_API.G_MISS_NUM THEN
4016 	x_cle_rec.PREPAYMENT_AMOUNT := l_cle_rec.PREPAYMENT_AMOUNT;
4017     END IF;
4018 
4019     IF	x_cle_rec.PREPAYMENT_PERCENTAGE = OKE_API.G_MISS_NUM THEN
4020         x_cle_rec.PREPAYMENT_PERCENTAGE :=l_cle_rec.PREPAYMENT_PERCENTAGE;
4021     END IF;
4022 
4023     IF	x_cle_rec.PROGRESS_PAYMENT_FLAG = OKE_API.G_MISS_CHAR THEN
4024 	x_cle_rec.PROGRESS_PAYMENT_FLAG := l_cle_rec.PROGRESS_PAYMENT_FLAG;
4025     END IF;
4026 
4027     IF	x_cle_rec.PROGRESS_PAYMENT_LIQ_RATE = OKE_API.G_MISS_NUM THEN
4028 	x_cle_rec.PROGRESS_PAYMENT_LIQ_RATE := l_cle_rec.PROGRESS_PAYMENT_LIQ_RATE;
4029     END IF;
4030 
4031     IF	x_cle_rec.PROGRESS_PAYMENT_RATE	= OKE_API.G_MISS_NUM THEN
4032 	x_cle_rec.PROGRESS_PAYMENT_RATE := l_cle_rec.PROGRESS_PAYMENT_RATE;
4033     END IF;
4034 
4035     IF	x_cle_rec.AWARD_FEE = OKE_API.G_MISS_NUM THEN
4036 	x_cle_rec.AWARD_FEE := l_cle_rec.AWARD_FEE;
4037     END IF;
4038 
4039     IF	x_cle_rec.AWARD_FEE_POOL_AMOUNT = OKE_API.G_MISS_NUM THEN
4040 	x_cle_rec.AWARD_FEE_POOL_AMOUNT := l_cle_rec.AWARD_FEE_POOL_AMOUNT;
4041     END IF;
4042 
4043     IF	x_cle_rec.BASE_FEE = OKE_API.G_MISS_NUM THEN
4044 	x_cle_rec.BASE_FEE := l_cle_rec.BASE_FEE;
4045     END IF;
4046 
4047     IF	x_cle_rec.CEILING_COST = OKE_API.G_MISS_NUM THEN
4048 	x_cle_rec.CEILING_COST := l_cle_rec.CEILING_COST;
4049     END IF;
4050 
4051     IF	x_cle_rec.CEILING_PRICE = OKE_API.G_MISS_NUM THEN
4052 	x_cle_rec.CEILING_PRICE := l_cle_rec.CEILING_PRICE;
4053     END IF;
4054 
4055     IF	x_cle_rec.COST_OVERRUN_SHARE_RATIO = OKE_API.G_MISS_CHAR THEN
4056 	x_cle_rec.COST_OVERRUN_SHARE_RATIO := l_cle_rec.COST_OVERRUN_SHARE_RATIO;
4057     END IF;
4058 
4059     IF	x_cle_rec.COST_UNDERRUN_SHARE_RATIO = OKE_API.G_MISS_CHAR THEN
4060 	x_cle_rec.COST_UNDERRUN_SHARE_RATIO := l_cle_rec.COST_UNDERRUN_SHARE_RATIO;
4061     END IF;
4062 
4063     IF	x_cle_rec.LABOR_COST_INDEX = OKE_API.G_MISS_CHAR THEN
4064 	x_cle_rec.LABOR_COST_INDEX := l_cle_rec.LABOR_COST_INDEX;
4065     END IF;
4066 
4067     IF	x_cle_rec.MATERIAL_COST_INDEX = OKE_API.G_MISS_CHAR THEN
4068 	x_cle_rec.MATERIAL_COST_INDEX := l_cle_rec.MATERIAL_COST_INDEX;
4069     END IF;
4070 
4071     IF	x_cle_rec.CUSTOMERS_PERCENT_IN_ORDER = OKE_API.G_MISS_NUM THEN
4072 	x_cle_rec.CUSTOMERS_PERCENT_IN_ORDER := l_cle_rec.CUSTOMERS_PERCENT_IN_ORDER;
4073     END IF;
4074 
4075     IF	x_cle_rec.DATE_OF_PRICE_REDETERMIN = OKE_API.G_MISS_DATE THEN
4076 	x_cle_rec.DATE_OF_PRICE_REDETERMIN := l_cle_rec.DATE_OF_PRICE_REDETERMIN;
4077     END IF;
4078 
4079     IF	x_cle_rec.ESTIMATED_TOTAL_QUANTITY = OKE_API.G_MISS_NUM THEN
4080 	x_cle_rec.ESTIMATED_TOTAL_QUANTITY := l_cle_rec.ESTIMATED_TOTAL_QUANTITY;
4081     END IF;
4082 
4083     IF	x_cle_rec.FEE_AJT_FORMULA = OKE_API.G_MISS_CHAR THEN
4084 	x_cle_rec.FEE_AJT_FORMULA := l_cle_rec.FEE_AJT_FORMULA;
4085     END IF;
4086 
4087     IF	x_cle_rec.FINAL_FEE = OKE_API.G_MISS_NUM THEN
4088 	x_cle_rec.FINAL_FEE :=l_cle_rec.FINAL_FEE;
4089     END IF;
4090 
4091     IF	x_cle_rec.FINAL_PFT_AJT_FORMULA = OKE_API.G_MISS_CHAR THEN
4092 	x_cle_rec.FINAL_PFT_AJT_FORMULA := l_cle_rec.FINAL_PFT_AJT_FORMULA;
4093     END IF;
4094 
4095     IF	x_cle_rec.FIXED_FEE = OKE_API.G_MISS_NUM THEN
4096 	x_cle_rec.FIXED_FEE := l_cle_rec.FIXED_FEE ;
4097     END IF;
4098 
4099     IF	x_cle_rec.FIXED_QUANTITY = OKE_API.G_MISS_NUM THEN
4100 	x_cle_rec.FIXED_QUANTITY := l_cle_rec.FIXED_QUANTITY;
4101     END IF;
4102 
4103     IF	x_cle_rec.INITIAL_FEE = OKE_API.G_MISS_NUM THEN
4104 	x_cle_rec.INITIAL_FEE := l_cle_rec.INITIAL_FEE;
4105     END IF;
4106 
4107     IF	x_cle_rec.INITIAL_PRICE = OKE_API.G_MISS_NUM THEN
4108 	x_cle_rec.INITIAL_PRICE := l_cle_rec.INITIAL_PRICE;
4109     END IF;
4110 
4111     IF	x_cle_rec.LEVEL_OF_EFFORT_HOURS = OKE_API.G_MISS_NUM THEN
4112 	x_cle_rec.LEVEL_OF_EFFORT_HOURS := l_cle_rec.LEVEL_OF_EFFORT_HOURS;
4113     END IF;
4114 
4115     IF	x_cle_rec.LINE_LIQUIDATION_RATE = OKE_API.G_MISS_NUM THEN
4116 	x_cle_rec.LINE_LIQUIDATION_RATE := l_cle_rec.LINE_LIQUIDATION_RATE;
4117     END IF;
4118 
4119     IF	x_cle_rec.MAXIMUM_FEE = OKE_API.G_MISS_NUM THEN
4120 	x_cle_rec.MAXIMUM_FEE := l_cle_rec.MAXIMUM_FEE;
4121     END IF;
4122 
4123     IF	x_cle_rec.MAXIMUM_QUANTITY = OKE_API.G_MISS_NUM THEN
4124 	x_cle_rec.MAXIMUM_QUANTITY := l_cle_rec.MAXIMUM_QUANTITY;
4125     END IF;
4126 
4127     IF	x_cle_rec.MINIMUM_FEE = OKE_API.G_MISS_NUM THEN
4128 	x_cle_rec.MINIMUM_FEE := l_cle_rec.MINIMUM_FEE;
4129     END IF;
4130 
4131     IF	x_cle_rec.MINIMUM_QUANTITY = OKE_API.G_MISS_NUM THEN
4132 	x_cle_rec.MINIMUM_QUANTITY := l_cle_rec.MINIMUM_QUANTITY;
4133     END IF;
4134 
4135     IF	x_cle_rec.NUMBER_OF_OPTIONS = OKE_API.G_MISS_NUM THEN
4136 	x_cle_rec.NUMBER_OF_OPTIONS :=l_cle_rec.NUMBER_OF_OPTIONS ;
4137     END IF;
4138 
4139     IF	x_cle_rec.REVISED_PRICE = OKE_API.G_MISS_NUM THEN
4140 	x_cle_rec.REVISED_PRICE := l_cle_rec.REVISED_PRICE;
4141     END IF;
4142 
4143     IF	x_cle_rec.TARGET_COST = OKE_API.G_MISS_NUM THEN
4144 	x_cle_rec.TARGET_COST := l_cle_rec.TARGET_COST;
4145     END IF;
4146 
4147     IF	x_cle_rec.TARGET_DATE_DEFINITIZE = OKE_API.G_MISS_DATE THEN
4148 	x_cle_rec.TARGET_DATE_DEFINITIZE := l_cle_rec.TARGET_DATE_DEFINITIZE;
4149     END IF;
4150 
4151     IF	x_cle_rec.TARGET_FEE = OKE_API.G_MISS_NUM THEN
4152 	x_cle_rec.TARGET_FEE := l_cle_rec.TARGET_FEE;
4153     END IF;
4154 
4155     IF	x_cle_rec.TARGET_PRICE = OKE_API.G_MISS_NUM THEN
4156 	x_cle_rec.TARGET_PRICE := l_cle_rec.TARGET_PRICE;
4157     END IF;
4158 
4159     IF	x_cle_rec.TOTAL_ESTIMATED_COST = OKE_API.G_MISS_NUM THEN
4160 	x_cle_rec.TOTAL_ESTIMATED_COST := l_cle_rec.TOTAL_ESTIMATED_COST;
4161     END IF;
4162 
4163     IF	x_cle_rec.CREATED_BY = OKE_API.G_MISS_NUM THEN
4164 	x_cle_rec.CREATED_BY :=  l_cle_rec.CREATED_BY;
4165     END IF;
4166 
4167     IF	x_cle_rec.CREATION_DATE = OKE_API.G_MISS_DATE THEN
4168 	x_cle_rec.CREATION_DATE := l_cle_rec.CREATION_DATE;
4169     END IF;
4170 
4171     IF	x_cle_rec.LAST_UPDATED_BY = OKE_API.G_MISS_NUM THEN
4172 	x_cle_rec.LAST_UPDATED_BY := l_cle_rec.LAST_UPDATED_BY;
4173     END IF;
4174 
4175     IF	x_cle_rec.LAST_UPDATE_LOGIN = OKE_API.G_MISS_NUM THEN
4176 	x_cle_rec.LAST_UPDATE_LOGIN := l_cle_rec.LAST_UPDATE_LOGIN;
4177     END IF;
4178 
4179     IF	x_cle_rec.LAST_UPDATE_DATE = OKE_API.G_MISS_DATE THEN
4180 	x_cle_rec.LAST_UPDATE_DATE := l_cle_rec.LAST_UPDATE_DATE;
4181     END IF;
4182 
4183     IF	x_cle_rec.COST_OF_SALE_RATE = OKE_API.G_MISS_NUM THEN
4184 	x_cle_rec.COST_OF_SALE_RATE := l_cle_rec.COST_OF_SALE_RATE;
4185     END IF;
4186 
4187     RETURN(l_return_status);
4188 
4189   END populate_new_record;
4190 
4191   -- set attributes for oke_k_lines
4192 
4193   FUNCTION set_attributes(
4194 	      p_cle_rec IN  cle_rec_type,
4195               x_cle_rec OUT NOCOPY cle_rec_type
4196     ) RETURN VARCHAR2 IS
4197       l_return_status                VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
4198     BEGIN
4199 
4200       x_cle_rec := p_cle_rec;
4201       x_cle_rec.BILLABLE_FLAG		:= UPPER(x_cle_rec.BILLABLE_FLAG);
4202       x_cle_rec.SHIPPABLE_FLAG		:= UPPER(x_cle_rec.SHIPPABLE_FLAG);
4203       x_cle_rec.SUBCONTRACTED_FLAG	 := UPPER(x_cle_rec.SUBCONTRACTED_FLAG);
4204       x_cle_rec.COMPLETED_FLAG		:= UPPER(x_cle_rec.COMPLETED_FLAG);
4205       x_cle_rec.NSP_FLAG		:= UPPER(x_cle_rec.NSP_FLAG);
4206 
4207       x_cle_rec.DROP_SHIPPED_FLAG	:= UPPER(x_cle_rec.DROP_SHIPPED_FLAG);
4208 
4209       x_cle_rec.CUSTOMER_APPROVAL_REQ_FLAG := UPPER(x_cle_rec.CUSTOMER_APPROVAL_REQ_FLAG);
4210 
4211       x_cle_rec.INSPECTION_REQ_FLAG	:= UPPER(x_cle_rec.INSPECTION_REQ_FLAG);
4212 
4213       x_cle_rec.INTERIM_RPT_REQ_FLAG	:= UPPER(x_cle_rec.INTERIM_RPT_REQ_FLAG);
4214 
4215       x_cle_rec.SUBJ_A133_FLAG	:= UPPER(x_cle_rec.SUBJ_A133_FLAG);
4216 
4217       x_cle_rec.EXPORT_FLAG	:= UPPER(x_cle_rec.EXPORT_FLAG);
4218 
4219       x_cle_rec.CFE_REQ_FLAG	:= UPPER(x_cle_rec.CFE_REQ_FLAG);
4220       x_cle_rec.COP_REQUIRED_FLAG	:= UPPER(x_cle_rec.COP_REQUIRED_FLAG);
4221 
4222       x_cle_rec.DCAA_AUDIT_REQ_FLAG	:= UPPER(x_cle_rec.DCAA_AUDIT_REQ_FLAG);
4223 
4224       x_cle_rec.DEFINITIZED_FLAG	:= UPPER(x_cle_rec.DEFINITIZED_FLAG);
4225 
4226       x_cle_rec.BILL_UNDEFINITIZED_FLAG	:= UPPER(x_cle_rec.BILL_UNDEFINITIZED_FLAG);
4227       x_cle_rec.NTE_WARNING_FLAG	:= UPPER(x_cle_rec.NTE_WARNING_FLAG);
4228 
4229       x_cle_rec.FINANCIAL_CTRL_FLAG	:= UPPER(x_cle_rec.FINANCIAL_CTRL_FLAG);
4230 
4231       x_cle_rec.C_SCS_FLAG	:= UPPER(x_cle_rec.C_SCS_FLAG);
4232 
4233       x_cle_rec.C_SSR_FLAG	:= UPPER(x_cle_rec.C_SSR_FLAG);
4234       x_cle_rec.PROGRESS_PAYMENT_FLAG	:= UPPER(x_cle_rec.PROGRESS_PAYMENT_FLAG);
4235 
4236       RETURN(l_return_status);
4237 
4238     END Set_Attributes;
4239 
4240   BEGIN
4241 
4242     l_return_status := OKE_API.START_ACTIVITY(l_api_name,
4243                                               G_PKG_NAME,
4244                                               p_init_msg_list,
4245                                               l_api_version,
4246                                               p_api_version,
4247                                               '_PVT',
4248                                               x_return_status);
4249 
4250 
4251     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
4252       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
4253     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
4254       RAISE OKE_API.G_EXCEPTION_ERROR;
4255     END IF;
4256 
4257 
4258 
4259     l_return_status := Set_Attributes(
4260       p_cle_rec,                        -- IN
4261       l_cle_rec);                       -- OUT
4262 
4263     --- If any errors happen abort API
4264     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
4265       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
4266     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
4267       RAISE OKE_API.G_EXCEPTION_ERROR;
4268     END IF;
4269 
4270     l_return_status := populate_new_record(l_cle_rec, l_def_cle_rec);
4271 
4272     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
4273       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
4274     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
4275       RAISE OKE_API.G_EXCEPTION_ERROR;
4276     END IF;
4277 
4278 
4279     l_def_cle_rec := fill_who_columns(l_def_cle_rec);
4280 
4281 
4282     --- Validate all non-missing attributes (Item Level Validation)
4283     l_return_status := Validate_Attributes(l_def_cle_rec);
4284 
4285     --- If any errors happen abort API
4286     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
4287       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
4288     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
4289       RAISE OKE_API.G_EXCEPTION_ERROR;
4290     END IF;
4291 
4292 
4293 
4294 
4295     l_return_status := Validate_Record(l_def_cle_rec);
4296 
4297 
4298     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
4299       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
4300     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
4301       RAISE OKE_API.G_EXCEPTION_ERROR;
4302     END IF;
4303 
4304 
4305 
4306     UPDATE OKE_K_LINES
4307     SET
4308 	PARENT_LINE_ID		= l_def_cle_rec.PARENT_LINE_ID,
4309 	PROJECT_ID		= l_def_cle_rec.PROJECT_ID,
4310 	TASK_ID			= l_def_cle_rec.TASK_ID,
4311 	BILLING_METHOD_CODE	= l_def_cle_rec.BILLING_METHOD_CODE,
4312 	INVENTORY_ITEM_ID	= l_def_cle_rec.INVENTORY_ITEM_ID,
4313 	DELIVERY_ORDER_FLAG	= l_def_cle_rec.DELIVERY_ORDER_FLAG,
4314 	SPLITED_FLAG		= l_def_cle_rec.SPLITED_FLAG,
4315 	PRIORITY_CODE		= l_def_cle_rec.PRIORITY_CODE,
4316 	CUSTOMER_ITEM_ID	= l_def_cle_rec.CUSTOMER_ITEM_ID,
4317 	CUSTOMER_ITEM_NUMBER    = l_def_cle_rec.CUSTOMER_ITEM_NUMBER,
4318 	LINE_QUANTITY		= l_def_cle_rec.LINE_QUANTITY,
4319 	DELIVERY_DATE		= l_def_cle_rec.DELIVERY_DATE,
4320         PROPOSAL_DUE_DATE	= l_def_cle_rec.PROPOSAL_DUE_DATE,
4321 	UNIT_PRICE		= l_def_cle_rec.UNIT_PRICE,
4322 	UOM_CODE		= l_def_cle_rec.UOM_CODE,
4323 	LINE_VALUE		= l_def_cle_rec.LINE_VALUE,
4324 	LINE_VALUE_TOTAL	= l_def_cle_rec.LINE_VALUE_TOTAL,
4325 	UNDEF_UNIT_PRICE	= l_def_cle_rec.UNDEF_UNIT_PRICE,
4326 	UNDEF_LINE_VALUE	= l_def_cle_rec.UNDEF_LINE_VALUE,
4327 	UNDEF_LINE_VALUE_TOTAL	= l_def_cle_rec.UNDEF_LINE_VALUE_TOTAL,
4328 	END_DATE		= l_def_cle_rec.END_DATE,
4329 	BILLABLE_FLAG		= l_def_cle_rec.BILLABLE_FLAG,
4330 	SHIPPABLE_FLAG		= l_def_cle_rec.SHIPPABLE_FLAG,
4331 	SUBCONTRACTED_FLAG	= l_def_cle_rec.SUBCONTRACTED_FLAG,
4332 	COMPLETED_FLAG		= l_def_cle_rec.COMPLETED_FLAG,
4333 	NSP_FLAG		= l_def_cle_rec.NSP_FLAG,
4334 	APP_CODE		= l_def_cle_rec.APP_CODE,
4335 	AS_OF_DATE		= l_def_cle_rec.AS_OF_DATE,
4336 	AUTHORITY		= l_def_cle_rec.AUTHORITY,
4337 	COUNTRY_OF_ORIGIN_CODE	= l_def_cle_rec.COUNTRY_OF_ORIGIN_CODE,
4338 	DROP_SHIPPED_FLAG	= l_def_cle_rec.DROP_SHIPPED_FLAG,
4339 	CUSTOMER_APPROVAL_REQ_FLAG = l_def_cle_rec.CUSTOMER_APPROVAL_REQ_FLAG,
4340 	DATE_MATERIAL_REQ	= l_def_cle_rec.DATE_MATERIAL_REQ,
4341 	INSPECTION_REQ_FLAG	= l_def_cle_rec.INSPECTION_REQ_FLAG,
4342 	INTERIM_RPT_REQ_FLAG	= l_def_cle_rec.INTERIM_RPT_REQ_FLAG,
4343 	SUBJ_A133_FLAG		= l_def_cle_rec.SUBJ_A133_FLAG,
4344 	EXPORT_FLAG		= l_def_cle_rec.EXPORT_FLAG,
4345 	CFE_REQ_FLAG		= l_def_cle_rec.CFE_REQ_FLAG,
4346 	COP_REQUIRED_FLAG	= l_def_cle_rec.COP_REQUIRED_FLAG,
4347 	EXPORT_LICENSE_NUM	= l_def_cle_rec.EXPORT_LICENSE_NUM,
4348 	EXPORT_LICENSE_RES	= l_def_cle_rec.EXPORT_LICENSE_RES,
4349 	COPIES_REQUIRED		= l_def_cle_rec.COPIES_REQUIRED,
4350 	CDRL_CATEGORY		= l_def_cle_rec.CDRL_CATEGORY,
4351 	DATA_ITEM_NAME		= l_def_cle_rec.DATA_ITEM_NAME,
4352 	DATA_ITEM_SUBTITLE	= l_def_cle_rec.DATA_ITEM_SUBTITLE,
4353 	DATE_OF_FIRST_SUBMISSION = l_def_cle_rec.DATE_OF_FIRST_SUBMISSION,
4354 	FREQUENCY		= l_def_cle_rec.FREQUENCY,
4355 	REQUIRING_OFFICE	= l_def_cle_rec.REQUIRING_OFFICE,
4356 	DCAA_AUDIT_REQ_FLAG	= l_def_cle_rec.DCAA_AUDIT_REQ_FLAG,
4357 	DEFINITIZED_FLAG	= l_def_cle_rec.DEFINITIZED_FLAG,
4358 	COST_OF_MONEY		= l_def_cle_rec.COST_OF_MONEY,
4359 	BILL_UNDEFINITIZED_FLAG	= l_def_cle_rec.BILL_UNDEFINITIZED_FLAG,
4360 	NSN_NUMBER		= l_def_cle_rec.NSN_NUMBER,
4361 	NTE_WARNING_FLAG	= l_def_cle_rec.NTE_WARNING_FLAG,
4362 	DISCOUNT_FOR_PAYMENT	= l_def_cle_rec.DISCOUNT_FOR_PAYMENT,
4363 	FINANCIAL_CTRL_FLAG	= l_def_cle_rec.FINANCIAL_CTRL_FLAG,
4364 	C_SCS_FLAG		= l_def_cle_rec.C_SCS_FLAG,
4365 	C_SSR_FLAG		= l_def_cle_rec.C_SSR_FLAG,
4366 	PREPAYMENT_AMOUNT	= l_def_cle_rec.PREPAYMENT_AMOUNT,
4367 	PREPAYMENT_PERCENTAGE	= l_def_cle_rec.PREPAYMENT_PERCENTAGE,
4368 	PROGRESS_PAYMENT_FLAG	= l_def_cle_rec.PROGRESS_PAYMENT_FLAG,
4369 	PROGRESS_PAYMENT_LIQ_RATE = l_def_cle_rec.PROGRESS_PAYMENT_LIQ_RATE,
4370 	PROGRESS_PAYMENT_RATE	= l_def_cle_rec.PROGRESS_PAYMENT_RATE,
4371 	AWARD_FEE		= l_def_cle_rec.AWARD_FEE,
4372 	AWARD_FEE_POOL_AMOUNT	= l_def_cle_rec.AWARD_FEE_POOL_AMOUNT	,
4373 	BASE_FEE		= l_def_cle_rec.BASE_FEE,
4374 	CEILING_COST		= l_def_cle_rec.CEILING_COST,
4375         CEILING_PRICE	        = l_def_cle_rec.CEILING_PRICE,
4376         COST_OVERRUN_SHARE_RATIO = l_def_cle_rec.COST_OVERRUN_SHARE_RATIO,
4377         COST_UNDERRUN_SHARE_RATIO = l_def_cle_rec.COST_UNDERRUN_SHARE_RATIO,
4378 	LABOR_COST_INDEX		= l_def_cle_rec.LABOR_COST_INDEX,
4379         MATERIAL_COST_INDEX	= l_def_cle_rec.MATERIAL_COST_INDEX,
4380 	CUSTOMERS_PERCENT_IN_ORDER = l_def_cle_rec.CUSTOMERS_PERCENT_IN_ORDER,
4381 	DATE_OF_PRICE_REDETERMIN = l_def_cle_rec.DATE_OF_PRICE_REDETERMIN,
4382 	ESTIMATED_TOTAL_QUANTITY = l_def_cle_rec.ESTIMATED_TOTAL_QUANTITY,
4383 	FEE_AJT_FORMULA		= l_def_cle_rec.FEE_AJT_FORMULA,
4384 	FINAL_FEE		= l_def_cle_rec.FINAL_FEE,
4385 	FINAL_PFT_AJT_FORMULA	= l_def_cle_rec.FINAL_PFT_AJT_FORMULA,
4386 	FIXED_FEE		= l_def_cle_rec.FIXED_FEE,
4387 	FIXED_QUANTITY		= l_def_cle_rec.FIXED_QUANTITY,
4388 	INITIAL_FEE		= l_def_cle_rec.INITIAL_FEE,
4389 	INITIAL_PRICE		= l_def_cle_rec.INITIAL_PRICE,
4390 	LEVEL_OF_EFFORT_HOURS	= l_def_cle_rec.LEVEL_OF_EFFORT_HOURS,
4391 	LINE_LIQUIDATION_RATE	= l_def_cle_rec.LINE_LIQUIDATION_RATE,
4392 	MAXIMUM_FEE		= l_def_cle_rec.MAXIMUM_FEE,
4393 	MAXIMUM_QUANTITY	= l_def_cle_rec.MAXIMUM_QUANTITY,
4394 	MINIMUM_FEE		= l_def_cle_rec.MINIMUM_FEE,
4395 	MINIMUM_QUANTITY	= l_def_cle_rec.MINIMUM_QUANTITY,
4396 	NUMBER_OF_OPTIONS	= l_def_cle_rec.NUMBER_OF_OPTIONS,
4397 	REVISED_PRICE		= l_def_cle_rec.REVISED_PRICE,
4398 	TARGET_COST		= l_def_cle_rec.TARGET_COST,
4399 	TARGET_DATE_DEFINITIZE	= l_def_cle_rec.TARGET_DATE_DEFINITIZE,
4400 	TARGET_FEE		= l_def_cle_rec.TARGET_FEE,
4401 	TARGET_PRICE		= l_def_cle_rec.TARGET_PRICE,
4402 	TOTAL_ESTIMATED_COST	= l_def_cle_rec.TOTAL_ESTIMATED_COST,
4403 	CREATED_BY		= l_def_cle_rec.CREATED_BY,
4404 	CREATION_DATE		= l_def_cle_rec.CREATION_DATE,
4405 	LAST_UPDATED_BY		= l_def_cle_rec.LAST_UPDATED_BY,
4406 	LAST_UPDATE_LOGIN	= l_def_cle_rec.LAST_UPDATE_LOGIN,
4407 	LAST_UPDATE_DATE	= l_def_cle_rec.LAST_UPDATE_DATE,
4408 	COST_OF_SALE_RATE	= l_def_cle_rec.COST_OF_SALE_RATE
4409 
4410     WHERE K_LINE_ID = l_def_cle_rec.K_LINE_ID;
4411 
4412 
4413     x_cle_rec := l_def_cle_rec;
4414 
4415     OKE_API.END_ACTIVITY(x_msg_count, x_msg_data);
4416 
4417   EXCEPTION
4418     WHEN OKE_API.G_EXCEPTION_ERROR THEN
4419       x_return_status := OKE_API.HANDLE_EXCEPTIONS
4420       (
4421         l_api_name,
4422         G_PKG_NAME,
4423         'OKE_API.G_RET_STS_ERROR',
4424         x_msg_count,
4425         x_msg_data,
4426         '_PVT'
4427       );
4428     WHEN OKE_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4429       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
4430       (
4431         l_api_name,
4432         G_PKG_NAME,
4433         'OKE_API.G_RET_STS_UNEXP_ERROR',
4434         x_msg_count,
4435         x_msg_data,
4436         '_PVT'
4437       );
4438     WHEN OTHERS THEN
4439       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
4440       (
4441         l_api_name,
4442         G_PKG_NAME,
4443         'OTHERS',
4444         x_msg_count,
4445         x_msg_data,
4446         '_PVT'
4447       );
4448   END update_row;
4449 
4450 
4451   PROCEDURE update_row(
4452     p_api_version                  IN NUMBER,
4453     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
4454     x_return_status                OUT NOCOPY VARCHAR2,
4455     x_msg_count                    OUT NOCOPY NUMBER,
4456     x_msg_data                     OUT NOCOPY VARCHAR2,
4457     p_cle_tbl                     IN cle_tbl_type,
4458     x_cle_tbl                     OUT NOCOPY cle_tbl_type) IS
4459 
4460     l_api_version                 CONSTANT NUMBER := 1.0;
4461     l_api_name                     CONSTANT VARCHAR2(30) := 'TBL_update_row';
4462 
4463 
4464     l_return_status                VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
4465     l_overall_status               VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
4466     i                              NUMBER := 0;
4467   BEGIN
4468     OKE_API.init_msg_list(p_init_msg_list);
4469     -- Make sure PL/SQL table has records in it before passing
4470     IF (p_cle_tbl.COUNT > 0) THEN
4471       i := p_cle_tbl.FIRST;
4472       LOOP
4473         update_row (
4474           p_api_version                  => p_api_version,
4475           p_init_msg_list                => OKE_API.G_FALSE,
4476           x_return_status                => x_return_status,
4477           x_msg_count                    => x_msg_count,
4478           x_msg_data                     => x_msg_data,
4479           p_cle_rec                      => p_cle_tbl(i),
4480           x_cle_rec                     => x_cle_tbl(i));
4481 
4482 		-- store the highest degree of error
4483 	If x_return_status <> OKE_API.G_RET_STS_SUCCESS Then
4484 	  If l_overall_status <> OKE_API.G_RET_STS_UNEXP_ERROR Then
4485 	    l_overall_status := x_return_status;
4486 	  End If;
4487 	End If;
4488 
4489         EXIT WHEN (i = p_cle_tbl.LAST);
4490         i := p_cle_tbl.NEXT(i);
4491       END LOOP;
4492 	 -- return overall status
4493 	 x_return_status := l_overall_status;
4494     END IF;
4495 
4496   EXCEPTION
4497     WHEN OKE_API.G_EXCEPTION_ERROR THEN
4498       x_return_status := OKE_API.HANDLE_EXCEPTIONS
4499       (
4500         l_api_name,
4501         G_PKG_NAME,
4502         'OKE_API.G_RET_STS_ERROR',
4503         x_msg_count,
4504         x_msg_data,
4505         '_PVT'
4506       );
4507 
4508     WHEN OKE_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4509       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
4510       (
4511         l_api_name,
4512         G_PKG_NAME,
4513         'OKE_API.G_RET_STS_UNEXP_ERROR',
4514         x_msg_count,
4515         x_msg_data,
4516         '_PVT'
4517       );
4518     WHEN OTHERS THEN
4519       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
4520       (
4521         l_api_name,
4522         G_PKG_NAME,
4523         'OTHERS',
4524         x_msg_count,
4525         x_msg_data,
4526         '_PVT'
4527       );
4528   END update_row;
4529 
4530   PROCEDURE delete_row(
4531     p_api_version                  IN NUMBER,
4532     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
4533     x_return_status                OUT NOCOPY VARCHAR2,
4534     x_msg_count                    OUT NOCOPY NUMBER,
4535     x_msg_data                     OUT NOCOPY VARCHAR2,
4536     p_cle_rec                     IN cle_rec_type) IS
4537 
4538     l_api_version                 CONSTANT NUMBER := 1;
4539     l_api_name                     CONSTANT VARCHAR2(30) := 'B_delete_row';
4540     l_return_status                VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
4541     l_cle_rec                     cle_rec_type := p_cle_rec;
4542 
4543   BEGIN
4544 
4545     l_return_status := OKE_API.START_ACTIVITY(l_api_name,
4546                                               p_init_msg_list,
4547                                               '_PVT',
4548                                               x_return_status);
4549 
4550 
4551     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
4552       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
4553     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
4554       RAISE OKE_API.G_EXCEPTION_ERROR;
4555     END IF;
4556 
4557     DELETE FROM OKE_K_LINES
4558     WHERE K_LINE_ID = l_cle_rec.K_LINE_ID;
4559 
4560     OKE_API.END_ACTIVITY(x_msg_count, x_msg_data);
4561 
4562   EXCEPTION
4563     WHEN OKE_API.G_EXCEPTION_ERROR THEN
4564       x_return_status := OKE_API.HANDLE_EXCEPTIONS
4565       (
4566         l_api_name,
4567         G_PKG_NAME,
4568         'OKE_API.G_RET_STS_ERROR',
4569         x_msg_count,
4570         x_msg_data,
4571         '_PVT'
4572       );
4573     WHEN OKE_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4574       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
4575       (
4576         l_api_name,
4577         G_PKG_NAME,
4578         'OKE_API.G_RET_STS_UNEXP_ERROR',
4579         x_msg_count,
4580         x_msg_data,
4581         '_PVT'
4582       );
4583     WHEN OTHERS THEN
4584       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
4585       (
4586         l_api_name,
4587         G_PKG_NAME,
4588         'OTHERS',
4589         x_msg_count,
4590         x_msg_data,
4591         '_PVT'
4592       );
4593   END delete_row;
4594 
4595   PROCEDURE delete_row(
4596     p_api_version                  IN NUMBER,
4597     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
4598     x_return_status                OUT NOCOPY VARCHAR2,
4599     x_msg_count                    OUT NOCOPY NUMBER,
4600     x_msg_data                     OUT NOCOPY VARCHAR2,
4601     p_cle_tbl                     IN cle_tbl_type) IS
4602 
4603     l_api_version                 CONSTANT NUMBER := 1;
4604     l_api_name                     CONSTANT VARCHAR2(30) := 'TBL_delete_row';
4605     l_return_status                VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
4606     l_overall_status               VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
4607     i                              NUMBER := 0;
4608   BEGIN
4609     OKE_API.init_msg_list(p_init_msg_list);
4610 
4611     -- Make sure PL/SQL table has records in it before passing
4612     IF (p_cle_tbl.COUNT > 0) THEN
4613       i := p_cle_tbl.FIRST;
4614       LOOP
4615         delete_row (
4616           p_api_version                  => p_api_version,
4617           p_init_msg_list                => OKE_API.G_FALSE,
4618           x_return_status                => x_return_status,
4619           x_msg_count                    => x_msg_count,
4620           x_msg_data                     => x_msg_data,
4621           p_cle_rec                      => p_cle_tbl(i));
4622 
4623 
4624 
4625 	-- store the highest degree of error
4626 	If x_return_status <> OKE_API.G_RET_STS_SUCCESS Then
4627 	  If l_overall_status <> OKE_API.G_RET_STS_UNEXP_ERROR Then
4628 	    l_overall_status := x_return_status;
4629           End If;
4630 	End If;
4631 
4632         EXIT WHEN (i = p_cle_tbl.LAST);
4633         i := p_cle_tbl.NEXT(i);
4634       END LOOP;
4635 
4636 	 -- return overall status
4637 	 x_return_status := l_overall_status;
4638     END IF;
4639 
4640   EXCEPTION
4641     WHEN OKE_API.G_EXCEPTION_ERROR THEN
4642       x_return_status := OKE_API.HANDLE_EXCEPTIONS
4643       (
4644         l_api_name,
4645         G_PKG_NAME,
4646         'OKE_API.G_RET_STS_ERROR',
4647         x_msg_count,
4648         x_msg_data,
4649         '_PVT'
4650       );
4651     WHEN OKE_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
4652       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
4653       (
4654         l_api_name,
4655         G_PKG_NAME,
4656         'OKE_API.G_RET_STS_UNEXP_ERROR',
4657         x_msg_count,
4658         x_msg_data,
4659         '_PVT'
4660       );
4661     WHEN OTHERS THEN
4662       x_return_status :=OKE_API.HANDLE_EXCEPTIONS
4663       (
4664         l_api_name,
4665         G_PKG_NAME,
4666         'OTHERS',
4667         x_msg_count,
4668         x_msg_data,
4669         '_PVT'
4670       );
4671   END delete_row;
4672 
4673 END OKE_CLE_PVT;
4674