DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKE_CHR_PVT

Source


1 PACKAGE BODY OKE_CHR_PVT AS
2 /*$Header: OKEVCHRB.pls 120.1 2008/05/27 08:10:40 serukull ship $ */
3 
4 FUNCTION  Validate_Attributes(p_chr_rec IN chr_rec_type)
5 		RETURN VARCHAR2;
6 
7 G_NO_PARENT_RECORD CONSTANT VARCHAR2(200) := OKE_API.G_CHILD_TABLE_TOKEN;
8 G_CHILD_RECORD_EXISTS CONSTANT VARCHAR2(200) := 'OKE_CANNOT_DELETE_MASTER';
9 G_TABLE_TOKEN CONSTANT VARCHAR2(200) := OKE_API.G_CHILD_TABLE_TOKEN;
10 G_UNEXPECTED_ERROR CONSTANT VARCHAR2(200) := 'OKE__CONTRACTS_UNEXPECTED_ERROR';
11 
12 G_SQLERRM_TOKEN CONSTANT VARCHAR2(200) := 'SQLerrm';
13 G_SQLCODE_TOKEN CONSTANT VARCHAR2(200) := 'SQLcode';
14 G_VIEW		CONSTANT VARCHAR2(200) := 'OKE_K_HEADERS_V';
15 G_EXCEPTION_HALT_VALIDATION exception;
16 l_return_status VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 /* Bug 7115155 Start */
29 FUNCTION IS_BOA (P_TYPE_CODE IN OKE_K_TYPES_B.K_TYPE_CODE%type)
30 RETURN   BOOLEAN
31 IS
32 l_type_class_code  OKE_K_TYPES_B.TYPE_CLASS_CODE%TYPE;
33 BEGIN
34 
35 SELECT   TYPE_CLASS_CODE
36 INTO     l_type_class_code
37 FROM     OKE_K_TYPES_B
38 WHERE    K_TYPE_CODE=P_TYPE_CODE;
39 
40 IF l_type_class_code='BOA' THEN
41    RETURN TRUE;
42 ELSE
43   RETURN FALSE;
44 END IF;
45 
46 END IS_BOA;
47 /* Bug 7115155 End*/
48 
49 
50 
51 PROCEDURE validate_program_id (x_return_status OUT NOCOPY VARCHAR2,
52 			      p_chr_rec	      IN  chr_rec_type)IS
53   l_dummy_val VARCHAR2(1):= '?';
54   CURSOR l_csr IS
55   SELECT 'x'
56   FROM OKE_PROGRAMS
57   WHERE PROGRAM_ID = p_chr_rec.PROGRAM_ID
58     AND SYSDATE BETWEEN START_DATE
59     AND NVL(END_DATE+1 , SYSDATE )
60   ;
61 
62 BEGIN
63 
64   x_return_status := OKE_API.G_RET_STS_SUCCESS;
65 
66   IF (   p_chr_rec.program_id <> OKE_API.G_MISS_NUM
67      AND p_chr_rec.program_id IS NOT NULL) THEN
68 
69     OPEN l_csr;
70     FETCH l_csr INTO l_dummy_val;
71     CLOSE l_csr;
72 
73     IF (l_dummy_val = '?') THEN
74       OKE_API.SET_MESSAGE(
75         	p_app_name		=>g_app_name,
76  		p_msg_name		=>g_no_parent_record,
77 		p_token1		=>g_col_name_token,
78 		p_token1_value		=>'PROGRAM_ID',
79 		p_token2		=>g_child_table_token,
80 		p_token2_value		=>G_VIEW,
81 		p_token3		=>g_parent_table_token,
82 		p_token3_value		=>'OKE_PROGRAMS');
83 
84       x_return_status := OKE_API.G_RET_STS_ERROR;
85     END IF;
86   END IF;
87 
88 EXCEPTION
89   WHEN OTHERS THEN
90     -- store SQL error message on message stack
91     OKE_API.SET_MESSAGE(
92 		p_app_name		=>g_app_name,
93 		p_msg_name		=>G_UNEXPECTED_ERROR,
94 		p_token1		=>G_SQLCODE_TOKEN,
95 		p_token1_value		=>SQLCODE,
96 		p_token2		=>G_SQLERRM_TOKEN,
97 		p_token2_value		=>SQLERRM);
98   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
99 
100   IF l_csr%ISOPEN THEN
101     CLOSE l_csr;
102   END IF;
103 
104 END validate_program_id;
105 
106 
107 
108 PROCEDURE validate_boa_id (x_return_status OUT NOCOPY VARCHAR2,
109 			      p_chr_rec	      IN  chr_rec_type)IS
110   l_dummy_val VARCHAR2(1):= '?';
111   CURSOR l_csr IS
112   SELECT 'x'
113   FROM OKE_K_HEADERS
114   WHERE K_HEADER_ID = p_chr_rec.BOA_ID;
115 
116 BEGIN
117 
118   x_return_status := OKE_API.G_RET_STS_SUCCESS;
119 
120   IF (   p_chr_rec.boa_id <> OKE_API.G_MISS_NUM
121      AND p_chr_rec.boa_id IS NOT NULL) THEN
122 
123     OPEN l_csr;
124     FETCH l_csr INTO l_dummy_val;
125     CLOSE l_csr;
126 
127     IF (l_dummy_val = '?') THEN
128       OKE_API.SET_MESSAGE(
129         	p_app_name		=>g_app_name,
130  		p_msg_name		=>g_no_parent_record,
131 		p_token1		=>g_col_name_token,
132 		p_token1_value		=>'BOA_ID',
133 		p_token2		=>g_child_table_token,
134 		p_token2_value		=>G_VIEW,
135 		p_token3		=>g_parent_table_token,
136 		p_token3_value		=>G_VIEW);
137 
138       x_return_status := OKE_API.G_RET_STS_ERROR;
139     END IF;
140   END IF;
141 
142 EXCEPTION
143   WHEN OTHERS THEN
144     -- store SQL error message on message stack
145     OKE_API.SET_MESSAGE(
146 		p_app_name		=>g_app_name,
147 		p_msg_name		=>G_UNEXPECTED_ERROR,
148 		p_token1		=>G_SQLCODE_TOKEN,
149 		p_token1_value		=>SQLCODE,
150 		p_token2		=>G_SQLERRM_TOKEN,
151 		p_token2_value		=>SQLERRM);
152   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
153 
154   IF l_csr%ISOPEN THEN
155     CLOSE l_csr;
156   END IF;
157 
158 END validate_boa_id;
159 
160 PROCEDURE validate_project_id (x_return_status OUT NOCOPY VARCHAR2,
161 			      p_chr_rec	      IN  chr_rec_type)IS
162   l_dummy_val VARCHAR2(1):= '?';
163   CURSOR l_csr IS
164   SELECT 'x'
165   FROM PA_PROJECTS_ALL
166   WHERE PROJECT_ID = p_chr_rec.PROJECT_ID;
167 
168 BEGIN
169 
170   x_return_status := OKE_API.G_RET_STS_SUCCESS;
171 
172   IF (   p_chr_rec.project_id <> OKE_API.G_MISS_NUM
173      AND p_chr_rec.project_id IS NOT NULL) THEN
174 
175     OPEN l_csr;
176     FETCH l_csr INTO l_dummy_val;
177     CLOSE l_csr;
178 
179     IF (l_dummy_val = '?') THEN
180       OKE_API.SET_MESSAGE(
181         	p_app_name		=>g_app_name,
182  		p_msg_name		=>g_no_parent_record,
183 		p_token1		=>g_col_name_token,
184 		p_token1_value		=>'PROJECT_ID',
185 		p_token2		=>g_child_table_token,
186 		p_token2_value		=>G_VIEW,
187 		p_token3		=>g_parent_table_token,
188 		p_token3_value		=>'PA_PROJECTS_ALL');
189 
190       x_return_status := OKE_API.G_RET_STS_ERROR;
191     END IF;
192   END IF;
193 
194 EXCEPTION
195   WHEN OTHERS THEN
196     -- store SQL error message on message stack
197     OKE_API.SET_MESSAGE(
198 		p_app_name		=>g_app_name,
199 		p_msg_name		=>G_UNEXPECTED_ERROR,
200 		p_token1		=>G_SQLCODE_TOKEN,
201 		p_token1_value		=>SQLCODE,
202 		p_token2		=>G_SQLERRM_TOKEN,
203 		p_token2_value		=>SQLERRM);
204   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
205 
206   IF l_csr%ISOPEN THEN
207     CLOSE l_csr;
208   END IF;
209 
210 END validate_project_id;
211 
212 
213 -- DATE PROBLEM
214 
215 PROCEDURE validate_priority_code(x_return_status OUT NOCOPY VARCHAR2,
216 				p_chr_rec	IN  chr_rec_type)IS
217   l_dummy_val VARCHAR2(1):= '?';
218   CURSOR l_csr IS
219   SELECT 'x'  FROM OKE_PRIORITY_CODES_VL
220   WHERE PRIORITY_CODE = p_chr_rec.priority_code;
221 
222 BEGIN
223   x_return_status := OKE_API.G_RET_STS_SUCCESS;
224 
225 
226   IF (   p_chr_rec.priority_code <> OKE_API.G_MISS_CHAR
227      AND p_chr_rec.priority_code IS NOT NULL) THEN
228 
229     OPEN l_csr;
230     FETCH l_csr INTO l_dummy_val;
231     CLOSE l_csr;
232 
233    IF (l_dummy_val = '?') THEN
234       OKE_API.SET_MESSAGE(
235         	p_app_name		=>g_app_name,
236  		p_msg_name		=>g_no_parent_record,
237 		p_token1		=>g_col_name_token,
238 		p_token1_value		=>'PRIORITY_CODE',
239 		p_token2		=>g_child_table_token,
240 		p_token2_value		=>G_VIEW,
241 		p_token3		=>g_parent_table_token,
242 		p_token3_value		=>'OKE_PRIORITY_CODES_VL');
243 
244       x_return_status := OKE_API.G_RET_STS_ERROR;
245    END IF;
246   End If;
247 
248 EXCEPTION
249   WHEN G_EXCEPTION_HALT_VALIDATION THEN
250     NULL;
251 
252   WHEN OTHERS THEN
253     -- store SQL error message on message stack
254     OKE_API.SET_MESSAGE(
255 		p_app_name		=>g_app_name,
256 		p_msg_name		=>G_UNEXPECTED_ERROR,
257 		p_token1		=>G_SQLCODE_TOKEN,
258 		p_token1_value		=>SQLCODE,
259 		p_token2		=>G_SQLERRM_TOKEN,
260 		p_token2_value		=>SQLERRM);
261   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
262 
263 END validate_priority_code;
264 
265 
266 
267 
268 PROCEDURE validate_product_code(x_return_status OUT NOCOPY VARCHAR2,
269 				p_chr_rec	IN  chr_rec_type)IS
270   l_dummy_val VARCHAR2(1):= '?';
271 
272 
273   CURSOR l_csr IS
274   SELECT 'x'
275   FROM FND_LOOKUP_VALUES_VL
276   WHERE VIEW_APPLICATION_ID = 777 AND LOOKUP_TYPE = 'PRODUCT_LINE'
277   AND NVL(ENABLED_FLAG , 'Y') = 'Y'
278   AND LOOKUP_CODE = p_chr_rec.PRODUCT_LINE_CODE
279   AND SYSDATE BETWEEN NVL(START_DATE_ACTIVE , SYSDATE - 1)
280   AND NVL(END_DATE_ACTIVE , SYSDATE + 1);
281 
282 
283 BEGIN
284   x_return_status := OKE_API.G_RET_STS_SUCCESS;
285 
286 
287   IF (   p_chr_rec.product_line_code <> OKE_API.G_MISS_CHAR
288      AND p_chr_rec.product_line_code IS NOT NULL) THEN
289 
290     OPEN l_csr;
291     FETCH l_csr INTO l_dummy_val;
292     CLOSE l_csr;
293 
294    IF (l_dummy_val = '?') THEN
295       OKE_API.SET_MESSAGE(
296         	p_app_name		=>g_app_name,
297  		p_msg_name		=>g_no_parent_record,
298 		p_token1		=>g_col_name_token,
299 		p_token1_value		=>'PRODUCT_LINE_CODE',
300 		p_token2		=>g_child_table_token,
301 		p_token2_value		=>G_VIEW,
302 		p_token3		=>g_parent_table_token,
303 		p_token3_value		=>'FND_LOOKUP_VALUES_VL');
304 
305       x_return_status := OKE_API.G_RET_STS_ERROR;
306    END IF;
307   End If;
308 
309 EXCEPTION
310   WHEN G_EXCEPTION_HALT_VALIDATION THEN
311     NULL;
312 
313   WHEN OTHERS THEN
314     -- store SQL error message on message stack
315     OKE_API.SET_MESSAGE(
316 		p_app_name		=>g_app_name,
317 		p_msg_name		=>G_UNEXPECTED_ERROR,
318 		p_token1		=>G_SQLCODE_TOKEN,
319 		p_token1_value		=>SQLCODE,
320 		p_token2		=>G_SQLERRM_TOKEN,
321 		p_token2_value		=>SQLERRM);
322   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
323 
324 END validate_product_code;
325 
326 
327 
328 
329 PROCEDURE validate_country_code(x_return_status OUT NOCOPY VARCHAR2,
330 				p_chr_rec	IN  chr_rec_type)IS
331   l_dummy_val VARCHAR2(1):= '?';
332 
333 
334   CURSOR l_csr IS
335   SELECT 'x'
336   FROM FND_TERRITORIES_VL
337   WHERE TERRITORY_CODE = p_chr_rec.COUNTRY_OF_ORIGIN_CODE;
338 
339 BEGIN
340   x_return_status := OKE_API.G_RET_STS_SUCCESS;
341 
342 
343   IF (   p_chr_rec.country_of_origin_code <> OKE_API.G_MISS_CHAR
344      AND p_chr_rec.country_of_origin_code IS NOT NULL) THEN
345 
346     OPEN l_csr;
347     FETCH l_csr INTO l_dummy_val;
348     CLOSE l_csr;
349 
350    IF (l_dummy_val = '?') THEN
351       OKE_API.SET_MESSAGE(
352         	p_app_name		=>g_app_name,
353  		p_msg_name		=>g_no_parent_record,
354 		p_token1		=>g_col_name_token,
355 		p_token1_value		=>'COUNTRY_OF_ORIGIN_CODE',
356 		p_token2		=>g_child_table_token,
357 		p_token2_value		=>G_VIEW,
358 		p_token3		=>g_parent_table_token,
359 		p_token3_value		=>'FND_TERRITORIES_VL');
360 
361       x_return_status := OKE_API.G_RET_STS_ERROR;
362    END IF;
363   End If;
364 
365 EXCEPTION
366   WHEN G_EXCEPTION_HALT_VALIDATION THEN
367     NULL;
368 
369   WHEN OTHERS THEN
370     -- store SQL error message on message stack
371     OKE_API.SET_MESSAGE(
372 		p_app_name		=>g_app_name,
373 		p_msg_name		=>G_UNEXPECTED_ERROR,
374 		p_token1		=>G_SQLCODE_TOKEN,
375 		p_token1_value		=>SQLCODE,
376 		p_token2		=>G_SQLERRM_TOKEN,
377 		p_token2_value		=>SQLERRM);
378   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
379 
380 END validate_country_code;
381 
382 
383 PROCEDURE validate_vat_code(x_return_status OUT NOCOPY VARCHAR2,
384 				p_chr_rec	IN  chr_rec_type)IS
385   l_dummy_val VARCHAR2(1):= '?';
386 
387   CURSOR get_info IS
388   SELECT AUTHORING_ORG_ID,BUY_OR_SELL
389   FROM OKC_K_HEADERS_B
390   WHERE ID = p_chr_rec.K_HEADER_ID;
391 
392   l_org NUMBER;
393   l_intent VARCHAR2(30);
394 
395   CURSOR l_csr IS
396   SELECT 'x'
397   FROM OKE_TAX_CODES_V
398   WHERE ( ORG_ID IS NULL OR ORG_ID = l_org )
399   AND BUY_OR_SELL = l_intent
400   AND SYSDATE BETWEEN NVL( START_DATE , SYSDATE - 1 )
401                 AND NVL( END_DATE , SYSDATE + 1 )
402   AND ENABLED_FLAG = 'Y'
403   AND TAX_CODE = p_chr_rec.VAT_CODE;
404 
405 BEGIN
406   x_return_status := OKE_API.G_RET_STS_SUCCESS;
407 
408   OPEN get_info;
409   FETCH get_info INTO l_org,l_intent;
410   CLOSE get_info;
411 
412   IF (   p_chr_rec.vat_code <> OKE_API.G_MISS_CHAR
413      AND p_chr_rec.vat_code IS NOT NULL) THEN
414 
415     OPEN l_csr;
416     FETCH l_csr INTO l_dummy_val;
417     CLOSE l_csr;
418 
419    IF (l_dummy_val = '?') THEN
420       OKE_API.SET_MESSAGE(
421         	p_app_name		=>g_app_name,
422  		p_msg_name		=>g_no_parent_record,
423 		p_token1		=>g_col_name_token,
424 		p_token1_value		=>'VAT_CODE',
425 		p_token2		=>g_child_table_token,
426 		p_token2_value		=>G_VIEW,
427 		p_token3		=>g_parent_table_token,
428 		p_token3_value		=>'OKE_TAX_CODES_V');
429 
430       x_return_status := OKE_API.G_RET_STS_ERROR;
431    END IF;
432   End If;
433 
434 EXCEPTION
435   WHEN G_EXCEPTION_HALT_VALIDATION THEN
436     NULL;
437 
438   WHEN OTHERS THEN
439     -- store SQL error message on message stack
440     OKE_API.SET_MESSAGE(
441 		p_app_name		=>g_app_name,
442 		p_msg_name		=>G_UNEXPECTED_ERROR,
443 		p_token1		=>G_SQLCODE_TOKEN,
444 		p_token1_value		=>SQLCODE,
445 		p_token2		=>G_SQLERRM_TOKEN,
446 		p_token2_value		=>SQLERRM);
447   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
448 
449 END validate_vat_code;
450 
451 
452 
453 
454 
455 PROCEDURE validate_prime_k_alias(x_return_status OUT NOCOPY VARCHAR2,
456 				p_chr_rec	IN  chr_rec_type)IS
457 
458 BEGIN
459   x_return_status := OKE_API.G_RET_STS_SUCCESS;
460   -- call column length utility
461  /* OKE_UTIL.CHECK_LENGTH(p_view_name	=>G_VIEW,
462 			p_col_name	=>'PRIME_K_ALIAS',
463 			p_col_value	=>p_chr_rec.PRIME_K_ALIAS,
464 			x_return_status	=>x_return_status);*/
465 
466   IF x_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
467     RAISE G_EXCEPTION_HALT_VALIDATION;
468   END IF;
469 
470 EXCEPTION
471   WHEN G_EXCEPTION_HALT_VALIDATION THEN
472     NULL;
473 
474   WHEN OTHERS THEN
475     -- store SQL error message on message stack
476     OKE_API.SET_MESSAGE(
477 		p_app_name		=>g_app_name,
478 		p_msg_name		=>G_UNEXPECTED_ERROR,
479 		p_token1		=>G_SQLCODE_TOKEN,
480 		p_token1_value		=>SQLCODE,
481 		p_token2		=>G_SQLERRM_TOKEN,
482 		p_token2_value		=>SQLERRM);
483   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
484 
485 END validate_prime_k_alias;
486 
487 PROCEDURE validate_prime_k_number(x_return_status OUT NOCOPY VARCHAR2,
488 				p_chr_rec	IN  chr_rec_type)IS
489 
490 BEGIN
491   x_return_status := OKE_API.G_RET_STS_SUCCESS;
492   -- call column length utility
493  /* OKE_UTIL.CHECK_LENGTH(p_view_name	=>G_VIEW,
494 			p_col_name	=>'PRIME_K_NUMBER',
495 			p_col_value	=>p_chr_rec.prime_k_number,
496 			x_return_status	=>x_return_status);*/
497 
498 
499 
500   IF x_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
501     RAISE G_EXCEPTION_HALT_VALIDATION;
502   END IF;
503 
504 EXCEPTION
505   WHEN G_EXCEPTION_HALT_VALIDATION THEN
506     NULL;
507 
508   WHEN OTHERS THEN
509     -- store SQL error message on message stack
510     OKE_API.SET_MESSAGE(
511 		p_app_name		=>g_app_name,
512 		p_msg_name		=>G_UNEXPECTED_ERROR,
513 		p_token1		=>G_SQLCODE_TOKEN,
514 		p_token1_value		=>SQLCODE,
515 		p_token2		=>G_SQLERRM_TOKEN,
516 		p_token2_value		=>SQLERRM);
517   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
518 
519 END validate_prime_k_number;
520 
521 
522 PROCEDURE validate_k_type_code(x_return_status OUT NOCOPY VARCHAR2,
523 			p_chr_rec	IN  chr_rec_type)IS
524 
525   l_dummy_val VARCHAR2(1):= '?';
526   CURSOR l_csr IS
527   SELECT 'x'  FROM OKE_K_TYPES_B
528   WHERE K_TYPE_CODE = p_chr_rec.k_type_code;
529 
530 BEGIN
531   x_return_status := OKE_API.G_RET_STS_SUCCESS;
532 
533   IF (   p_chr_rec.k_type_code= OKE_API.G_MISS_CHAR
534      OR  p_chr_rec.k_type_code IS  NULL) THEN
535       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
536 		p_msg_name		=>G_REQUIRED_VALUE,
537 		p_token1		=>G_COL_NAME_TOKEN,
538 		p_token1_value		=>'K_TYPE_CODE');
539      x_return_status := OKE_API.G_RET_STS_ERROR;
540      RAISE G_EXCEPTION_HALT_VALIDATION;
541   END IF;
542 
543 
544  open l_csr;
545  fetch l_csr into l_dummy_val;
546  close l_csr;
547 
548 
549    IF (l_dummy_val = '?') THEN
550       OKE_API.SET_MESSAGE(
551         	p_app_name		=>g_app_name,
552  		p_msg_name		=>g_no_parent_record,
553 		p_token1		=>g_col_name_token,
554 		p_token1_value		=>'K_TYPE_CODE',
555 		p_token2		=>g_child_table_token,
556 		p_token2_value		=>G_VIEW,
557 		p_token3		=>g_parent_table_token,
558 		p_token3_value		=>'OKE_K_TYPES_B');
559 
560       x_return_status := OKE_API.G_RET_STS_ERROR;
561    END IF;
562 
563 
564 EXCEPTION
565   WHEN G_EXCEPTION_HALT_VALIDATION THEN
566     NULL;
567 
568   WHEN OTHERS THEN
569     -- store SQL error message on message stack
570     OKE_API.SET_MESSAGE(
571 		p_app_name		=>g_app_name,
572 		p_msg_name		=>G_UNEXPECTED_ERROR,
573 		p_token1		=>G_SQLCODE_TOKEN,
574 		p_token1_value		=>SQLCODE,
575 		p_token2		=>G_SQLERRM_TOKEN,
576 		p_token2_value		=>SQLERRM);
577   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
578 
579 END validate_k_type_code;
580 
581 
582 
583 PROCEDURE validate_authorizing_reason(x_return_status OUT NOCOPY VARCHAR2,
584 				p_chr_rec	IN  chr_rec_type)IS
585 
586 BEGIN
587   x_return_status := OKE_API.G_RET_STS_SUCCESS;
588   -- call column length utility
589  /* OKE_UTIL.CHECK_LENGTH(p_view_name	=>G_VIEW,
590 			p_col_name	=>'AUTHORIZING_REASON',
591 			p_col_value	=>p_chr_rec.authorizing_reason,
592 			x_return_status	=>x_return_status);*/
593 
594   IF x_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
595     RAISE G_EXCEPTION_HALT_VALIDATION;
596   END IF;
597 
598 EXCEPTION
599   WHEN G_EXCEPTION_HALT_VALIDATION THEN
600     NULL;
601 
602   WHEN OTHERS THEN
603     -- store SQL error message on message stack
604     OKE_API.SET_MESSAGE(
605 		p_app_name		=>g_app_name,
606 		p_msg_name		=>G_UNEXPECTED_ERROR,
607 		p_token1		=>G_SQLCODE_TOKEN,
608 		p_token1_value		=>SQLCODE,
609 		p_token2		=>G_SQLERRM_TOKEN,
610 		p_token2_value		=>SQLERRM);
611   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
612 
613 END validate_authorizing_reason;
614 
615 
616 PROCEDURE validate_award_cancel_date(x_return_status OUT NOCOPY VARCHAR2,
617 				p_chr_rec	IN  chr_rec_type)IS
618 
619 BEGIN
620   x_return_status := OKE_API.G_RET_STS_SUCCESS;
621 -- check the date is valid
622 
623 /*
624   IF (   p_chr_rec.award_cancel_date <> OKE_API.G_MISS_DATE
625      AND p_chr_rec.award_cancel_date IS NOT NULL) THEN
626 
627     IF (   p_chr_rec.award_date <> OKE_API.G_MISS_DATE
628        AND p_chr_rec.award_date IS NOT NULL) THEN
629       IF (p_chr_rec.award_cancel_date < p_chr_rec.award_date) THEN
630         x_return_status := OKE_API.G_RET_STS_ERROR;
631       END IF;
632     ELSE
633       x_return_status := OKE_API.G_RET_STS_ERROR;
634     END IF;
635 
636   END IF;
637 */
638   IF (x_return_status = OKE_API.G_RET_STS_ERROR) THEN
639     OKE_API.SET_MESSAGE(
640 		p_app_name		=>g_app_name,
641 		p_msg_name		=>'OKE_NOT_AWARD_CONTRACT',
642 		p_token1		=>G_COL_NAME_TOKEN,
643 		p_token1_value		=>'AWARD_CANCEL_DATE');
644   END IF;
645 
646 EXCEPTION
647 
648   WHEN OTHERS THEN
649     -- store SQL error message on message stack
650     OKE_API.SET_MESSAGE(
651 		p_app_name		=>g_app_name,
652 		p_msg_name		=>G_UNEXPECTED_ERROR,
653 		p_token1		=>G_SQLCODE_TOKEN,
654 		p_token1_value		=>SQLCODE,
655 		p_token2		=>G_SQLERRM_TOKEN,
656 		p_token2_value		=>SQLERRM);
657   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
658 
659 END validate_award_cancel_date;
660 
661 
662 
663 PROCEDURE validate_date_definitized(x_return_status OUT NOCOPY VARCHAR2,
664 				p_chr_rec	IN  chr_rec_type)IS
665 
666 BEGIN
667   x_return_status := OKE_API.G_RET_STS_SUCCESS;
668 -- check the date is valid
669   -- take out the validation, since no requirement specified
670 
671 /*  IF (   p_chr_rec.date_definitized <> OKE_API.G_MISS_DATE
672      AND p_chr_rec.date_definitized IS NOT NULL) THEN
673 
674     IF (   p_chr_rec.award_date <> OKE_API.G_MISS_DATE
675        AND p_chr_rec.award_date IS NOT NULL)THEN
676       IF (p_chr_rec.date_definitized < p_chr_rec.award_date) THEN
677         x_return_status := OKE_API.G_RET_STS_ERROR;
678       END IF;
679 
680     ELSE
681       x_return_status := OKE_API.G_RET_STS_ERROR;
682 
683     END IF;
684 
685   END IF; */
686 
687 
688 
689 
690   IF (x_return_status = OKE_API.G_RET_STS_ERROR) THEN
691     OKE_API.SET_MESSAGE(
692 		p_app_name		=>g_app_name,
693 		p_msg_name		=>'OKE_NOT_AWARD_CONTRACT',
694 		p_token1		=>G_COL_NAME_TOKEN,
695 		p_token1_value		=>'DATE_DEFINITIZED');
696   END IF;
697 
698 EXCEPTION
699 
700   WHEN OTHERS THEN
701     -- store SQL error message on message stack
702     OKE_API.SET_MESSAGE(
703 		p_app_name		=>g_app_name,
704 		p_msg_name		=>G_UNEXPECTED_ERROR,
705 		p_token1		=>G_SQLCODE_TOKEN,
706 		p_token1_value		=>SQLCODE,
707 		p_token2		=>G_SQLERRM_TOKEN,
708 		p_token2_value		=>SQLERRM);
709   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
710 
711 END validate_date_definitized;
712 
713 
714 PROCEDURE validate_date_received(x_return_status OUT NOCOPY VARCHAR2,
715 				p_chr_rec	IN  chr_rec_type)IS
716 
717 BEGIN
718   x_return_status := OKE_API.G_RET_STS_SUCCESS;
719 -- check the date is valid
720 
721   IF (   p_chr_rec.date_received <> OKE_API.G_MISS_DATE
722      AND p_chr_rec.date_received IS NOT NULL) THEN
723 
724     IF (   p_chr_rec.date_issued <> OKE_API.G_MISS_DATE
725        AND p_chr_rec.date_issued IS NOT NULL)THEN
726       IF (p_chr_rec.date_received < p_chr_rec.date_issued) THEN
727         x_return_status := OKE_API.G_RET_STS_ERROR;
728       END IF;
729 
730     END IF;
731 
732   END IF;
733 
734   IF (x_return_status = OKE_API.G_RET_STS_ERROR) THEN
735     OKE_API.SET_MESSAGE(
736 		p_app_name		=>g_app_name,
737 		p_msg_name		=>'OKE_ISSUED_FIRST',
738 		p_token1		=>G_COL_NAME_TOKEN,
739 		p_token1_value		=>'DATE_RECEIVED');
740   END IF;
741 
742 EXCEPTION
743 
744   WHEN OTHERS THEN
745     -- store SQL error message on message stack
746     OKE_API.SET_MESSAGE(
747 		p_app_name		=>g_app_name,
748 		p_msg_name		=>G_UNEXPECTED_ERROR,
749 		p_token1		=>G_SQLCODE_TOKEN,
750 		p_token1_value		=>SQLCODE,
751 		p_token2		=>G_SQLERRM_TOKEN,
752 		p_token2_value		=>SQLERRM);
753   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
754 
755 END validate_date_received;
756 
757 
758 
759 PROCEDURE validate_award_date(x_return_status OUT NOCOPY VARCHAR2,
760 				p_chr_rec	IN  chr_rec_type)IS
761 
762 CURSOR l_getdate IS
763 SELECT start_date from okc_k_headers_b
764 WHERE id = p_chr_rec.k_header_id;
765 
766 l_startdate DATE;
767 
768 BEGIN
769   x_return_status := OKE_API.G_RET_STS_SUCCESS;
770 -- check the date is valid
771 /*
772 open l_getdate;
773 fetch l_getdate into l_startdate;
774 close l_getdate;
775 
776   IF (   p_chr_rec.award_date <> OKE_API.G_MISS_DATE
777      AND p_chr_rec.award_date IS NOT NULL) THEN
778 
779     IF (   l_startdate <> OKE_API.G_MISS_DATE
780        AND l_startdate IS NOT NULL) THEN
781 
782       IF ( p_chr_rec.AWARD_DATE > l_startdate) THEN
783         x_return_status := OKE_API.G_RET_STS_ERROR;
784       END IF;
785     END IF;
786   END IF;
787 */
788   IF (x_return_status = OKE_API.G_RET_STS_ERROR) THEN
789     OKE_API.SET_MESSAGE(
790 		p_app_name		=>g_app_name,
791 		p_msg_name		=>'OKE_INVALID_AWARD_DATE');
792   END IF;
793 
794 EXCEPTION
795 
796   WHEN OTHERS THEN
797     -- store SQL error message on message stack
798     OKE_API.SET_MESSAGE(
799 		p_app_name		=>g_app_name,
800 		p_msg_name		=>G_UNEXPECTED_ERROR,
801 		p_token1		=>G_SQLCODE_TOKEN,
802 		p_token1_value		=>SQLCODE,
803 		p_token2		=>G_SQLERRM_TOKEN,
804 		p_token2_value		=>SQLERRM);
805   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
806 
807 END validate_award_date;
808 
809 
810 PROCEDURE validate_booked_flag(x_return_status OUT NOCOPY VARCHAR2,
811 				p_chr_rec	IN  chr_rec_type)IS
812 
813 BEGIN
814   x_return_status := OKE_API.G_RET_STS_SUCCESS;
815 
816   IF (   p_chr_rec.booked_flag <> OKE_API.G_MISS_CHAR
817      AND p_chr_rec.booked_flag IS NOT NULL) THEN
818     IF (UPPER(p_chr_rec.booked_flag) NOT IN ('Y','N')) THEN
819       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
820 		p_msg_name		=>G_REQUIRED_VALUE,
821 		p_token1		=>G_COL_NAME_TOKEN,
822 		p_token1_value		=>'BOOKED_FLAG');
823       x_return_status := OKE_API.G_RET_STS_ERROR;
824       RAISE G_EXCEPTION_HALT_VALIDATION;
825     END IF;
826 
827   END IF;
828 
829 EXCEPTION
830   WHEN G_EXCEPTION_HALT_VALIDATION THEN
831     NULL;
832 
833   WHEN OTHERS THEN
834     -- store SQL error message on message stack
835     OKE_API.SET_MESSAGE(
836 		p_app_name		=>g_app_name,
837 		p_msg_name		=>G_UNEXPECTED_ERROR,
838 		p_token1		=>G_SQLCODE_TOKEN,
839 		p_token1_value		=>SQLCODE,
840 		p_token2		=>G_SQLERRM_TOKEN,
841 		p_token2_value		=>SQLERRM);
842   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
843 
844 END validate_booked_flag;
845 
846 PROCEDURE validate_open_flag(x_return_status OUT NOCOPY VARCHAR2,
847 				p_chr_rec	IN  chr_rec_type)IS
848 
849 BEGIN
850   x_return_status := OKE_API.G_RET_STS_SUCCESS;
851 
852   IF (   p_chr_rec.open_flag <> OKE_API.G_MISS_CHAR
853      AND p_chr_rec.open_flag IS NOT NULL) THEN
854     IF (UPPER(p_chr_rec.open_flag) NOT IN ('Y','N')) THEN
855       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
856 		p_msg_name		=>G_REQUIRED_VALUE,
857 		p_token1		=>G_COL_NAME_TOKEN,
858 		p_token1_value		=>'OPEN_FLAG');
859       x_return_status := OKE_API.G_RET_STS_ERROR;
860       RAISE G_EXCEPTION_HALT_VALIDATION;
861     END IF;
862 
863   END IF;
864 
865 EXCEPTION
866   WHEN G_EXCEPTION_HALT_VALIDATION THEN
867     NULL;
868 
869   WHEN OTHERS THEN
870     -- store SQL error message on message stack
871     OKE_API.SET_MESSAGE(
872 		p_app_name		=>g_app_name,
873 		p_msg_name		=>G_UNEXPECTED_ERROR,
874 		p_token1		=>G_SQLCODE_TOKEN,
875 		p_token1_value		=>SQLCODE,
876 		p_token2		=>G_SQLERRM_TOKEN,
877 		p_token2_value		=>SQLERRM);
878   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
879 
880 END validate_open_flag;
881 
882 PROCEDURE validate_cfe_flag(x_return_status OUT NOCOPY VARCHAR2,
883 				p_chr_rec	IN  chr_rec_type)IS
884 
885 BEGIN
886   x_return_status := OKE_API.G_RET_STS_SUCCESS;
887 
888   IF (   p_chr_rec.cfe_flag <> OKE_API.G_MISS_CHAR
889      AND p_chr_rec.cfe_flag IS NOT NULL) THEN
890     IF (UPPER(p_chr_rec.cfe_flag) NOT IN ('Y','N')) THEN
891       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
892 		p_msg_name		=>G_REQUIRED_VALUE,
893 		p_token1		=>G_COL_NAME_TOKEN,
894 		p_token1_value		=>'CFE_FLAG');
895       x_return_status := OKE_API.G_RET_STS_ERROR;
896       RAISE G_EXCEPTION_HALT_VALIDATION;
897     END IF;
898 
899   END IF;
900 
901 EXCEPTION
902   WHEN G_EXCEPTION_HALT_VALIDATION THEN
903     NULL;
904 
905   WHEN OTHERS THEN
906     -- store SQL error message on message stack
907     OKE_API.SET_MESSAGE(
908 		p_app_name		=>g_app_name,
909 		p_msg_name		=>G_UNEXPECTED_ERROR,
910 		p_token1		=>G_SQLCODE_TOKEN,
911 		p_token1_value		=>SQLCODE,
912 		p_token2		=>G_SQLERRM_TOKEN,
913 		p_token2_value		=>SQLERRM);
914   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
915 
916 END validate_cfe_flag;
917 
918 PROCEDURE validate_export_flag(x_return_status OUT NOCOPY VARCHAR2,
919 				p_chr_rec	IN  chr_rec_type)IS
920 
921 BEGIN
922   x_return_status := OKE_API.G_RET_STS_SUCCESS;
923 
924   IF (   p_chr_rec.export_flag <> OKE_API.G_MISS_CHAR
925      AND p_chr_rec.export_flag IS NOT NULL) THEN
926     IF (UPPER(p_chr_rec.export_flag) NOT IN ('Y','N')) THEN
927       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
928 		p_msg_name		=>G_REQUIRED_VALUE,
929 		p_token1		=>G_COL_NAME_TOKEN,
930 		p_token1_value		=>'EXPORT_FLAG');
931       x_return_status := OKE_API.G_RET_STS_ERROR;
932       RAISE G_EXCEPTION_HALT_VALIDATION;
933     END IF;
934 
935   END IF;
936 
937 EXCEPTION
938   WHEN G_EXCEPTION_HALT_VALIDATION THEN
939     NULL;
940 
941   WHEN OTHERS THEN
942     -- store SQL error message on message stack
943     OKE_API.SET_MESSAGE(
944 		p_app_name		=>g_app_name,
945 		p_msg_name		=>G_UNEXPECTED_ERROR,
946 		p_token1		=>G_SQLCODE_TOKEN,
947 		p_token1_value		=>SQLCODE,
948 		p_token2		=>G_SQLERRM_TOKEN,
949 		p_token2_value		=>SQLERRM);
950   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
951 
952 END validate_export_flag;
953 
954 PROCEDURE validate_human_subject_flag(x_return_status OUT NOCOPY VARCHAR2,
955 				p_chr_rec	IN  chr_rec_type)IS
956 
957 BEGIN
958   x_return_status := OKE_API.G_RET_STS_SUCCESS;
959 
960   IF (   p_chr_rec.human_subject_flag <> OKE_API.G_MISS_CHAR
961      AND p_chr_rec.human_subject_flag IS NOT NULL) THEN
962     IF (UPPER(p_chr_rec.human_subject_flag) NOT IN ('Y','N')) THEN
963       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
964 		p_msg_name		=>G_REQUIRED_VALUE,
965 		p_token1		=>G_COL_NAME_TOKEN,
966 		p_token1_value		=>'HUMAN_SUBJECT_FLAG');
967       x_return_status := OKE_API.G_RET_STS_ERROR;
968       RAISE G_EXCEPTION_HALT_VALIDATION;
969     END IF;
970 
971   END IF;
972 
973 EXCEPTION
974   WHEN G_EXCEPTION_HALT_VALIDATION THEN
975     NULL;
976 
977   WHEN OTHERS THEN
978     -- store SQL error message on message stack
979     OKE_API.SET_MESSAGE(
980 		p_app_name		=>g_app_name,
981 		p_msg_name		=>G_UNEXPECTED_ERROR,
982 		p_token1		=>G_SQLCODE_TOKEN,
983 		p_token1_value		=>SQLCODE,
984 		p_token2		=>G_SQLERRM_TOKEN,
985 		p_token2_value		=>SQLERRM);
986   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
987 
988 END validate_human_subject_flag;
989 
990 PROCEDURE validate_cqa_flag(x_return_status OUT NOCOPY VARCHAR2,
991 				p_chr_rec	IN  chr_rec_type)IS
992 
993 BEGIN
994   x_return_status := OKE_API.G_RET_STS_SUCCESS;
995 
996   IF (   p_chr_rec.cqa_flag <> OKE_API.G_MISS_CHAR
997      AND p_chr_rec.cqa_flag IS NOT NULL) THEN
998     IF (UPPER(p_chr_rec.cqa_flag) NOT IN ('Y','N')) THEN
999       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1000 		p_msg_name		=>G_REQUIRED_VALUE,
1001 		p_token1		=>G_COL_NAME_TOKEN,
1002 		p_token1_value		=>'CQA_FLAG');
1003       x_return_status := OKE_API.G_RET_STS_ERROR;
1004       RAISE G_EXCEPTION_HALT_VALIDATION;
1005     END IF;
1006 
1007   END IF;
1008 
1009 EXCEPTION
1010   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1011     NULL;
1012 
1013   WHEN OTHERS THEN
1014     -- store SQL error message on message stack
1015     OKE_API.SET_MESSAGE(
1016 		p_app_name		=>g_app_name,
1017 		p_msg_name		=>G_UNEXPECTED_ERROR,
1018 		p_token1		=>G_SQLCODE_TOKEN,
1019 		p_token1_value		=>SQLCODE,
1020 		p_token2		=>G_SQLERRM_TOKEN,
1021 		p_token2_value		=>SQLERRM);
1022   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1023 
1024 END validate_cqa_flag;
1025 
1026 PROCEDURE validate_interim_rpt_req_flag(x_return_status OUT NOCOPY VARCHAR2,
1027 				p_chr_rec	IN  chr_rec_type)IS
1028 
1029 BEGIN
1030   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1031 
1032   IF (   p_chr_rec.interim_rpt_req_flag <> OKE_API.G_MISS_CHAR
1033      AND p_chr_rec.interim_rpt_req_flag IS NOT NULL) THEN
1034     IF (UPPER(p_chr_rec.interim_rpt_req_flag) NOT IN ('Y','N')) THEN
1035       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1036 		p_msg_name		=>G_REQUIRED_VALUE,
1037 		p_token1		=>G_COL_NAME_TOKEN,
1038 		p_token1_value		=>'INTERIM_RPT_REQ_FLAG');
1039       x_return_status := OKE_API.G_RET_STS_ERROR;
1040       RAISE G_EXCEPTION_HALT_VALIDATION;
1041     END IF;
1042 
1043   END IF;
1044 
1045 EXCEPTION
1046   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1047     NULL;
1048 
1049   WHEN OTHERS THEN
1050     -- store SQL error message on message stack
1051     OKE_API.SET_MESSAGE(
1052 		p_app_name		=>g_app_name,
1053 		p_msg_name		=>G_UNEXPECTED_ERROR,
1054 		p_token1		=>G_SQLCODE_TOKEN,
1055 		p_token1_value		=>SQLCODE,
1056 		p_token2		=>G_SQLERRM_TOKEN,
1057 		p_token2_value		=>SQLERRM);
1058   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1059 
1060 END validate_interim_rpt_req_flag;
1061 
1062 PROCEDURE validate_penalty_clause_flag(x_return_status OUT NOCOPY VARCHAR2,
1063 				p_chr_rec	IN  chr_rec_type)IS
1064 
1065 BEGIN
1066   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1067 
1068   IF (   p_chr_rec.penalty_clause_flag <> OKE_API.G_MISS_CHAR
1069      AND p_chr_rec.penalty_clause_flag IS NOT NULL) THEN
1070     IF (UPPER(p_chr_rec.penalty_clause_flag) NOT IN ('Y','N')) THEN
1071       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1072 		p_msg_name		=>G_REQUIRED_VALUE,
1073 		p_token1		=>G_COL_NAME_TOKEN,
1074 		p_token1_value		=>'PENALTY_CLAUSE_FLAG');
1075       x_return_status := OKE_API.G_RET_STS_ERROR;
1076       RAISE G_EXCEPTION_HALT_VALIDATION;
1077     END IF;
1078 
1079   END IF;
1080 
1081 EXCEPTION
1082   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1083     NULL;
1084 
1085   WHEN OTHERS THEN
1086     -- store SQL error message on message stack
1087     OKE_API.SET_MESSAGE(
1088 		p_app_name		=>g_app_name,
1089 		p_msg_name		=>G_UNEXPECTED_ERROR,
1090 		p_token1		=>G_SQLCODE_TOKEN,
1091 		p_token1_value		=>SQLCODE,
1092 		p_token2		=>G_SQLERRM_TOKEN,
1093 		p_token2_value		=>SQLERRM);
1094   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1095 
1096 END validate_penalty_clause_flag;
1097 
1098 PROCEDURE validate_reporting_flag(x_return_status OUT NOCOPY VARCHAR2,
1099 				p_chr_rec	IN  chr_rec_type)IS
1100 
1101 BEGIN
1102   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1103 
1104   IF (   p_chr_rec.reporting_flag <> OKE_API.G_MISS_CHAR
1105      AND p_chr_rec.reporting_flag IS NOT NULL) THEN
1106     IF (UPPER(p_chr_rec.reporting_flag) NOT IN ('Y','N')) THEN
1107       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1108 		p_msg_name		=>G_REQUIRED_VALUE,
1109 		p_token1		=>G_COL_NAME_TOKEN,
1110 		p_token1_value		=>'REPROTING_FLAG');
1111       x_return_status := OKE_API.G_RET_STS_ERROR;
1112       RAISE G_EXCEPTION_HALT_VALIDATION;
1113     END IF;
1114 
1115   END IF;
1116 
1117 EXCEPTION
1118   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1119     NULL;
1120 
1121   WHEN OTHERS THEN
1122     -- store SQL error message on message stack
1123     OKE_API.SET_MESSAGE(
1124 		p_app_name		=>g_app_name,
1125 		p_msg_name		=>G_UNEXPECTED_ERROR,
1126 		p_token1		=>G_SQLCODE_TOKEN,
1127 		p_token1_value		=>SQLCODE,
1128 		p_token2		=>G_SQLERRM_TOKEN,
1129 		p_token2_value		=>SQLERRM);
1130   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1131 
1132 END validate_reporting_flag;
1133 
1134 PROCEDURE validate_sb_plan_req_flag(x_return_status OUT NOCOPY VARCHAR2,
1135 				p_chr_rec	IN  chr_rec_type)IS
1136 
1137 BEGIN
1138   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1139 
1140   IF (   p_chr_rec.sb_plan_req_flag <> OKE_API.G_MISS_CHAR
1141      AND p_chr_rec.sb_plan_req_flag IS NOT NULL) THEN
1142     IF (UPPER(p_chr_rec.sb_plan_req_flag) NOT IN ('Y','N')) THEN
1143       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1144 		p_msg_name		=>G_REQUIRED_VALUE,
1145 		p_token1		=>G_COL_NAME_TOKEN,
1146 		p_token1_value		=>'SB_PLAN_REQ_FLAG');
1147       x_return_status := OKE_API.G_RET_STS_ERROR;
1148       RAISE G_EXCEPTION_HALT_VALIDATION;
1149     END IF;
1150 
1151   END IF;
1152 
1153 EXCEPTION
1154   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1155     NULL;
1156 
1157   WHEN OTHERS THEN
1158     -- store SQL error message on message stack
1159     OKE_API.SET_MESSAGE(
1160 		p_app_name		=>g_app_name,
1161 		p_msg_name		=>G_UNEXPECTED_ERROR,
1162 		p_token1		=>G_SQLCODE_TOKEN,
1163 		p_token1_value		=>SQLCODE,
1164 		p_token2		=>G_SQLERRM_TOKEN,
1165 		p_token2_value		=>SQLERRM);
1166   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1167 
1168 END validate_sb_plan_req_flag;
1169 
1170 PROCEDURE validate_sb_report_flag(x_return_status OUT NOCOPY VARCHAR2,
1171 				p_chr_rec	IN  chr_rec_type)IS
1172 
1173 BEGIN
1174   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1175 
1176   IF (   p_chr_rec.sb_report_flag <> OKE_API.G_MISS_CHAR
1177      AND p_chr_rec.sb_report_flag IS NOT NULL) THEN
1178     IF (UPPER(p_chr_rec.sb_report_flag) NOT IN ('Y','N')) THEN
1179       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1180 		p_msg_name		=>G_REQUIRED_VALUE,
1181 		p_token1		=>G_COL_NAME_TOKEN,
1182 		p_token1_value		=>'SB_REPORT_FLAG');
1183       x_return_status := OKE_API.G_RET_STS_ERROR;
1184       RAISE G_EXCEPTION_HALT_VALIDATION;
1185     END IF;
1186 
1187   END IF;
1188 
1189 EXCEPTION
1190   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1191     NULL;
1192 
1193   WHEN OTHERS THEN
1194     -- store SQL error message on message stack
1195     OKE_API.SET_MESSAGE(
1196 		p_app_name		=>g_app_name,
1197 		p_msg_name		=>G_UNEXPECTED_ERROR,
1198 		p_token1		=>G_SQLCODE_TOKEN,
1199 		p_token1_value		=>SQLCODE,
1200 		p_token2		=>G_SQLERRM_TOKEN,
1201 		p_token2_value		=>SQLERRM);
1202   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1203 
1204 END validate_sb_report_flag;
1205 
1206 PROCEDURE validate_nte_warning_flag(x_return_status OUT NOCOPY VARCHAR2,
1207 				p_chr_rec	IN  chr_rec_type)IS
1208 
1209 BEGIN
1210   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1211 
1212   IF (   p_chr_rec.nte_warning_flag <> OKE_API.G_MISS_CHAR
1213      AND p_chr_rec.nte_warning_flag IS NOT NULL) THEN
1214     IF (UPPER(p_chr_rec.nte_warning_flag) NOT IN ('Y','N')) THEN
1215       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1216 		p_msg_name		=>G_REQUIRED_VALUE,
1217 		p_token1		=>G_COL_NAME_TOKEN,
1218 		p_token1_value		=>'NTE_WARNING_FLAG');
1219       x_return_status := OKE_API.G_RET_STS_ERROR;
1220       RAISE G_EXCEPTION_HALT_VALIDATION;
1221     END IF;
1222 
1223   END IF;
1224 
1225 EXCEPTION
1226   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1227     NULL;
1228 
1229   WHEN OTHERS THEN
1230     -- store SQL error message on message stack
1231     OKE_API.SET_MESSAGE(
1232 		p_app_name		=>g_app_name,
1233 		p_msg_name		=>G_UNEXPECTED_ERROR,
1234 		p_token1		=>G_SQLCODE_TOKEN,
1235 		p_token1_value		=>SQLCODE,
1236 		p_token2		=>G_SQLERRM_TOKEN,
1237 		p_token2_value		=>SQLERRM);
1238   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1239 
1240 END validate_nte_warning_flag;
1241 
1242 
1243 PROCEDURE validate_bill_without_def_flag(x_return_status OUT NOCOPY VARCHAR2,
1244 				p_chr_rec	IN  chr_rec_type)IS
1245 
1246 BEGIN
1247   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1248 
1249   IF (   p_chr_rec.bill_without_def_flag <> OKE_API.G_MISS_CHAR
1250      AND p_chr_rec.bill_without_def_flag IS NOT NULL) THEN
1251     IF (UPPER(p_chr_rec.bill_without_def_flag) NOT IN ('Y','N')) THEN
1252       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1253 		p_msg_name		=>G_REQUIRED_VALUE,
1254 		p_token1		=>G_COL_NAME_TOKEN,
1255 		p_token1_value		=>'BILL_WITHOUT_DEF_FLAG');
1256       x_return_status := OKE_API.G_RET_STS_ERROR;
1257       RAISE G_EXCEPTION_HALT_VALIDATION;
1258     END IF;
1259 
1260   END IF;
1261 
1262 EXCEPTION
1263   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1264     NULL;
1265 
1266   WHEN OTHERS THEN
1267     -- store SQL error message on message stack
1268     OKE_API.SET_MESSAGE(
1269 		p_app_name		=>g_app_name,
1270 		p_msg_name		=>G_UNEXPECTED_ERROR,
1271 		p_token1		=>G_SQLCODE_TOKEN,
1272 		p_token1_value		=>SQLCODE,
1273 		p_token2		=>G_SQLERRM_TOKEN,
1274 		p_token2_value		=>SQLERRM);
1275   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1276 
1277 END validate_bill_without_def_flag;
1278 
1279 
1280 
1281 
1282 PROCEDURE validate_cas_flag(x_return_status OUT NOCOPY VARCHAR2,
1283 				p_chr_rec	IN  chr_rec_type)IS
1284 
1285 BEGIN
1286   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1287 
1288   IF (   p_chr_rec.cas_flag <> OKE_API.G_MISS_CHAR
1289      AND p_chr_rec.cas_flag IS NOT NULL) THEN
1290     IF (UPPER(p_chr_rec.cas_flag) NOT IN ('Y','N')) THEN
1291       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1292 		p_msg_name		=>G_REQUIRED_VALUE,
1293 		p_token1		=>G_COL_NAME_TOKEN,
1294 		p_token1_value		=>'CAS_FLAG');
1295       x_return_status := OKE_API.G_RET_STS_ERROR;
1296       RAISE G_EXCEPTION_HALT_VALIDATION;
1297     END IF;
1298 
1299   END IF;
1300 
1301 EXCEPTION
1302   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1303     NULL;
1304 
1305   WHEN OTHERS THEN
1306     -- store SQL error message on message stack
1307     OKE_API.SET_MESSAGE(
1308 		p_app_name		=>g_app_name,
1309 		p_msg_name		=>G_UNEXPECTED_ERROR,
1310 		p_token1		=>G_SQLCODE_TOKEN,
1311 		p_token1_value		=>SQLCODE,
1312 		p_token2		=>G_SQLERRM_TOKEN,
1313 		p_token2_value		=>SQLERRM);
1314   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1315 
1316 END validate_cas_flag;
1317 
1318 PROCEDURE validate_classified_flag(x_return_status OUT NOCOPY VARCHAR2,
1319 				p_chr_rec	IN  chr_rec_type)IS
1320 
1321 BEGIN
1322   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1323 
1324   IF (   p_chr_rec.classified_flag <> OKE_API.G_MISS_CHAR
1325      AND p_chr_rec.classified_flag IS NOT NULL) THEN
1326     IF (UPPER(p_chr_rec.classified_flag) NOT IN ('Y','N')) THEN
1327       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1328 		p_msg_name		=>G_REQUIRED_VALUE,
1329 		p_token1		=>G_COL_NAME_TOKEN,
1330 		p_token1_value		=>'CLASSIFIED_FLAG');
1331       x_return_status := OKE_API.G_RET_STS_ERROR;
1332       RAISE G_EXCEPTION_HALT_VALIDATION;
1333     END IF;
1334 
1335   END IF;
1336 
1337 EXCEPTION
1338   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1339     NULL;
1340 
1341   WHEN OTHERS THEN
1342     -- store SQL error message on message stack
1343     OKE_API.SET_MESSAGE(
1344 		p_app_name		=>g_app_name,
1345 		p_msg_name		=>G_UNEXPECTED_ERROR,
1346 		p_token1		=>G_SQLCODE_TOKEN,
1347 		p_token1_value		=>SQLCODE,
1348 		p_token2		=>G_SQLERRM_TOKEN,
1349 		p_token2_value		=>SQLERRM);
1350   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1351 
1352 END validate_classified_flag;
1353 
1354 
1355 PROCEDURE validate_client_approve_req(x_return_status OUT NOCOPY VARCHAR2,
1356 				p_chr_rec	IN  chr_rec_type)IS
1357 
1358 BEGIN
1359   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1360 
1361   IF (   p_chr_rec.client_approve_req_flag <> OKE_API.G_MISS_CHAR
1362      AND p_chr_rec.client_approve_req_flag IS NOT NULL) THEN
1363     IF (UPPER(p_chr_rec.client_approve_req_flag) NOT IN ('Y','N')) THEN
1364       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1365 		p_msg_name		=>G_REQUIRED_VALUE,
1366 		p_token1		=>G_COL_NAME_TOKEN,
1367 		p_token1_value		=>'CLIENT_APPROVE_REQ_FLAG');
1368       x_return_status := OKE_API.G_RET_STS_ERROR;
1369       RAISE G_EXCEPTION_HALT_VALIDATION;
1370     END IF;
1371 
1372   END IF;
1373 
1374 EXCEPTION
1375   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1376     NULL;
1377 
1378   WHEN OTHERS THEN
1379     -- store SQL error message on message stack
1380     OKE_API.SET_MESSAGE(
1381 		p_app_name		=>g_app_name,
1382 		p_msg_name		=>G_UNEXPECTED_ERROR,
1383 		p_token1		=>G_SQLCODE_TOKEN,
1384 		p_token1_value		=>SQLCODE,
1385 		p_token2		=>G_SQLERRM_TOKEN,
1386 		p_token2_value		=>SQLERRM);
1387   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1388 
1389 END validate_client_approve_req;
1390 
1391 PROCEDURE validate_dcaa_audit_req_flag(x_return_status OUT NOCOPY VARCHAR2,
1392 				p_chr_rec	IN  chr_rec_type)IS
1393 
1394 BEGIN
1395   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1396 
1397   IF (   p_chr_rec.dcaa_audit_req_flag <> OKE_API.G_MISS_CHAR
1398      AND p_chr_rec.dcaa_audit_req_flag IS NOT NULL) THEN
1399     IF (UPPER(p_chr_rec.dcaa_audit_req_flag) NOT IN ('Y','N')) THEN
1400       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1401 		p_msg_name		=>G_REQUIRED_VALUE,
1402 		p_token1		=>G_COL_NAME_TOKEN,
1403 		p_token1_value		=>'DCAA_AUDIT_REQ_FLAG');
1404       x_return_status := OKE_API.G_RET_STS_ERROR;
1405       RAISE G_EXCEPTION_HALT_VALIDATION;
1406     END IF;
1407 
1408   END IF;
1409 
1410 EXCEPTION
1411   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1412     NULL;
1413 
1414   WHEN OTHERS THEN
1415     -- store SQL error message on message stack
1416     OKE_API.SET_MESSAGE(
1417 		p_app_name		=>g_app_name,
1418 		p_msg_name		=>G_UNEXPECTED_ERROR,
1419 		p_token1		=>G_SQLCODE_TOKEN,
1420 		p_token1_value		=>SQLCODE,
1421 		p_token2		=>G_SQLERRM_TOKEN,
1422 		p_token2_value		=>SQLERRM);
1423   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1424 
1425 END validate_dcaa_audit_req_flag;
1426 
1427 PROCEDURE validate_oh_rates_final_flag(x_return_status OUT NOCOPY VARCHAR2,
1428 				p_chr_rec	IN  chr_rec_type)IS
1429 
1430 BEGIN
1431   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1432 
1433   IF (   p_chr_rec.oh_rates_final_flag <> OKE_API.G_MISS_CHAR
1434      AND p_chr_rec.OH_RATES_FINAL_FLAG IS NOT NULL) THEN
1435     IF (UPPER(p_chr_rec.OH_RATES_FINAL_FLAG) NOT IN ('Y','N')) THEN
1436       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1437 		p_msg_name		=>G_REQUIRED_VALUE,
1438 		p_token1		=>G_COL_NAME_TOKEN,
1439 		p_token1_value		=>'OH_RATES_FINAL_FLAG');
1440       x_return_status := OKE_API.G_RET_STS_ERROR;
1441       RAISE G_EXCEPTION_HALT_VALIDATION;
1442     END IF;
1443 
1444   END IF;
1445 
1446 EXCEPTION
1447   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1448     NULL;
1449 
1450   WHEN OTHERS THEN
1451     -- store SQL error message on message stack
1452     OKE_API.SET_MESSAGE(
1453 		p_app_name		=>g_app_name,
1454 		p_msg_name		=>G_UNEXPECTED_ERROR,
1455 		p_token1		=>G_SQLCODE_TOKEN,
1456 		p_token1_value		=>SQLCODE,
1457 		p_token2		=>G_SQLERRM_TOKEN,
1458 		p_token2_value		=>SQLERRM);
1459   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1460 
1461 END validate_oh_rates_final_flag;
1462 
1463 
1464 
1465 
1466 PROCEDURE validate_COST_OF_MONEY(x_return_status OUT NOCOPY VARCHAR2,
1467 				p_chr_rec	IN  chr_rec_type)IS
1468 
1469 BEGIN
1470   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1471 
1472   IF (   p_chr_rec.COST_OF_MONEY <> OKE_API.G_MISS_CHAR
1473      AND p_chr_rec.COST_OF_MONEY IS NOT NULL) THEN
1474     IF (UPPER(p_chr_rec.COST_OF_MONEY) NOT IN ('Y','N')) THEN
1475       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1476 		p_msg_name		=>G_REQUIRED_VALUE,
1477 		p_token1		=>G_COL_NAME_TOKEN,
1478 		p_token1_value		=>'COST_OF_MONEY');
1479       x_return_status := OKE_API.G_RET_STS_ERROR;
1480       RAISE G_EXCEPTION_HALT_VALIDATION;
1481     END IF;
1482 
1483   END IF;
1484 
1485 EXCEPTION
1486   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1487     NULL;
1488 
1489   WHEN OTHERS THEN
1490     -- store SQL error message on message stack
1491     OKE_API.SET_MESSAGE(
1492 		p_app_name		=>g_app_name,
1493 		p_msg_name		=>G_UNEXPECTED_ERROR,
1494 		p_token1		=>G_SQLCODE_TOKEN,
1495 		p_token1_value		=>SQLCODE,
1496 		p_token2		=>G_SQLERRM_TOKEN,
1497 		p_token2_value		=>SQLERRM);
1498   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1499 
1500 END validate_COST_OF_MONEY;
1501 
1502 PROCEDURE validate_COST_SHARE_FLAG(x_return_status OUT NOCOPY VARCHAR2,
1503 				p_chr_rec	IN  chr_rec_type)IS
1504 
1505 BEGIN
1506   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1507 
1508   IF (   p_chr_rec.COST_SHARE_FLAG <> OKE_API.G_MISS_CHAR
1509      AND p_chr_rec.COST_SHARE_FLAG IS NOT NULL) THEN
1510     IF (UPPER(p_chr_rec.COST_SHARE_FLAG) NOT IN ('Y','N')) THEN
1511       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1512 		p_msg_name		=>G_REQUIRED_VALUE,
1513 		p_token1		=>G_COL_NAME_TOKEN,
1514 		p_token1_value		=>'COST_SHARE_FLAG');
1515       x_return_status := OKE_API.G_RET_STS_ERROR;
1516       RAISE G_EXCEPTION_HALT_VALIDATION;
1517     END IF;
1518 
1519   END IF;
1520 
1521 EXCEPTION
1522   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1523     NULL;
1524 
1525   WHEN OTHERS THEN
1526     -- store SQL error message on message stack
1527     OKE_API.SET_MESSAGE(
1528 		p_app_name		=>g_app_name,
1529 		p_msg_name		=>G_UNEXPECTED_ERROR,
1530 		p_token1		=>G_SQLCODE_TOKEN,
1531 		p_token1_value		=>SQLCODE,
1532 		p_token2		=>G_SQLERRM_TOKEN,
1533 		p_token2_value		=>SQLERRM);
1534   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1535 
1536 END validate_COST_SHARE_FLAG;
1537 
1538 PROCEDURE validate_PROGRESS_PAYMENT_FLAG(x_return_status OUT NOCOPY VARCHAR2,
1539 				p_chr_rec	IN  chr_rec_type)IS
1540 
1541 BEGIN
1542   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1543 
1544   IF (   p_chr_rec.PROGRESS_PAYMENT_FLAG <> OKE_API.G_MISS_CHAR
1545      AND p_chr_rec.PROGRESS_PAYMENT_FLAG IS NOT NULL) THEN
1546     IF (UPPER(p_chr_rec.PROGRESS_PAYMENT_FLAG) NOT IN ('Y','N')) THEN
1547       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1548 		p_msg_name		=>G_REQUIRED_VALUE,
1549 		p_token1		=>G_COL_NAME_TOKEN,
1550 		p_token1_value		=>'PROGRESS_PAYMENT_FLAG');
1551       x_return_status := OKE_API.G_RET_STS_ERROR;
1552       RAISE G_EXCEPTION_HALT_VALIDATION;
1553     END IF;
1554 
1555   END IF;
1556 
1557 EXCEPTION
1558   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1559     NULL;
1560 
1561   WHEN OTHERS THEN
1562     -- store SQL error message on message stack
1563     OKE_API.SET_MESSAGE(
1564 		p_app_name		=>g_app_name,
1565 		p_msg_name		=>G_UNEXPECTED_ERROR,
1566 		p_token1		=>G_SQLCODE_TOKEN,
1567 		p_token1_value		=>SQLCODE,
1568 		p_token2		=>G_SQLERRM_TOKEN,
1569 		p_token2_value		=>SQLERRM);
1570   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1571 
1572 END validate_PROGRESS_PAYMENT_FLAG;
1573 
1574 PROCEDURE validate_DEFINITIZED_FLAG(x_return_status OUT NOCOPY VARCHAR2,
1575 				p_chr_rec	IN  chr_rec_type)IS
1576 
1577 BEGIN
1578   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1579 
1580   IF (   p_chr_rec.DEFINITIZED_FLAG <> OKE_API.G_MISS_CHAR
1581      AND p_chr_rec.DEFINITIZED_FLAG IS NOT NULL) THEN
1582     IF (UPPER(p_chr_rec.DEFINITIZED_FLAG) NOT IN ('Y','N')) THEN
1583       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1584 		p_msg_name		=>G_REQUIRED_VALUE,
1585 		p_token1		=>G_COL_NAME_TOKEN,
1586 		p_token1_value		=>'DEFINITIZED_FLAG');
1587       x_return_status := OKE_API.G_RET_STS_ERROR;
1588       RAISE G_EXCEPTION_HALT_VALIDATION;
1589     END IF;
1590 
1591   END IF;
1592 
1593 EXCEPTION
1594   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1595     NULL;
1596 
1597   WHEN OTHERS THEN
1598     -- store SQL error message on message stack
1599     OKE_API.SET_MESSAGE(
1600 		p_app_name		=>g_app_name,
1601 		p_msg_name		=>G_UNEXPECTED_ERROR,
1602 		p_token1		=>G_SQLCODE_TOKEN,
1603 		p_token1_value		=>SQLCODE,
1604 		p_token2		=>G_SQLERRM_TOKEN,
1605 		p_token2_value		=>SQLERRM);
1606   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1607 
1608 END validate_DEFINITIZED_FLAG;
1609 
1610 PROCEDURE validate_FINANCIAL_CTRL_VERIF(x_return_status OUT NOCOPY VARCHAR2,
1611 				p_chr_rec	IN  chr_rec_type)IS
1612 
1613 BEGIN
1614   x_return_status := OKE_API.G_RET_STS_SUCCESS;
1615 
1616   IF (   p_chr_rec.FINANCIAL_CTRL_VERIFIED_FLAG <> OKE_API.G_MISS_CHAR
1617      AND p_chr_rec.FINANCIAL_CTRL_VERIFIED_FLAG IS NOT NULL) THEN
1618     IF (UPPER(p_chr_rec.FINANCIAL_CTRL_VERIFIED_FLAG) NOT IN ('Y','N')) THEN
1619       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
1620 		p_msg_name		=>G_REQUIRED_VALUE,
1621 		p_token1		=>G_COL_NAME_TOKEN,
1622 		p_token1_value		=>'FINANCIAL_CTRL_VERIFIED_FLAG');
1623       x_return_status := OKE_API.G_RET_STS_ERROR;
1624       RAISE G_EXCEPTION_HALT_VALIDATION;
1625     END IF;
1626 
1627   END IF;
1628 
1629 EXCEPTION
1630   WHEN G_EXCEPTION_HALT_VALIDATION THEN
1631     NULL;
1632 
1633   WHEN OTHERS THEN
1634     -- store SQL error message on message stack
1635     OKE_API.SET_MESSAGE(
1636 		p_app_name		=>g_app_name,
1637 		p_msg_name		=>G_UNEXPECTED_ERROR,
1638 		p_token1		=>G_SQLCODE_TOKEN,
1639 		p_token1_value		=>SQLCODE,
1640 		p_token2		=>G_SQLERRM_TOKEN,
1641 		p_token2_value		=>SQLERRM);
1642   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1643 
1644 END validate_FINANCIAL_CTRL_VERIF;
1645 
1646 
1647 --
1648 -- Derive K_Number_Disp value
1649 --
1650 FUNCTION K_Number_Disp
1651 ( X_K_Header_ID   IN   NUMBER
1652 , X_BOA_ID        IN   NUMBER
1653 ) RETURN VARCHAR2
1654 IS
1655 
1656 Value1  VARCHAR2(120);
1657 Value2  VARCHAR2(120);
1658 
1659 CURSOR c ( C_CHR_ID NUMBER ) IS
1660   SELECT contract_number
1661   FROM   okc_k_headers_b
1662   WHERE  ID = C_CHR_ID;
1663 
1664 BEGIN
1665 
1666   OPEN c ( X_K_Header_ID );
1667   FETCH c INTO Value1;
1668   CLOSE c;
1669 
1670   IF ( X_BOA_ID IS NOT NULL ) THEN
1671 
1672     OPEN c ( X_BOA_ID );
1673     FETCH c INTO Value2;
1674     CLOSE c;
1675 
1676     RETURN ( substr(Value2 || '/' || Value1 , 1 , 240) );
1677 
1678   ELSE
1679 
1680     RETURN ( Value1 );
1681 
1682   END IF;
1683 
1684 END K_Number_Disp;
1685 
1686 /* Bug 7115155 Start*/
1687 
1688 PROCEDURE UPDATE_DO(P_BOA_ID IN NUMBER)
1689 IS
1690 L_K_NUMBER_DISP       VARCHAR2(120);
1691 CURSOR c_do
1692 IS
1693 SELECT k_header_id
1694 FROM  oke_k_headers
1695 WHERE boa_id=P_BOA_ID
1696 FOR UPDATE NOWAIT;
1697 BEGIN
1698 
1699 FOR l_do_rec IN c_do
1700 LOOP
1701  L_K_NUMBER_DISP := K_Number_Disp(l_do_rec.k_header_id,p_boa_id);
1702  UPDATE oke_k_headers
1703  SET    k_number_disp= L_K_NUMBER_DISP
1704  WHERE  CURRENT OF c_do;
1705 END LOOP;
1706 
1707 END UPDATE_DO;
1708 
1709 /* Bug 7115155 End*/
1710 
1711 -- Get record from OKE_K_HEADERS
1712 
1713 FUNCTION get_rec(
1714   p_chr_rec		IN chr_rec_type,
1715   x_no_data_found	OUT NOCOPY BOOLEAN)
1716 RETURN chr_rec_type IS
1717 
1718   CURSOR chr_pk_csr(p_id IN NUMBER) IS
1719   SELECT
1720 	K_HEADER_ID,
1721 	PROGRAM_ID,
1722  	PROJECT_ID,
1723 	BOA_ID,
1724         K_TYPE_CODE,
1725 	PRIORITY_CODE,
1726 	PRIME_K_ALIAS,
1727 	PRIME_K_NUMBER,
1728 	AUTHORIZE_DATE,
1729 	AUTHORIZING_REASON,
1730 	AWARD_CANCEL_DATE,
1731 	AWARD_DATE,
1732 	DATE_DEFINITIZED,
1733 	DATE_ISSUED,
1734 	DATE_NEGOTIATED,
1735 	DATE_RECEIVED,
1736 	DATE_SIGN_BY_CONTRACTOR,
1737 	DATE_SIGN_BY_CUSTOMER,
1738 	FAA_APPROVE_DATE,
1739 	FAA_REJECT_DATE,
1740 	BOOKED_FLAG,
1741 	OPEN_FLAG,
1742 	CFE_FLAG,
1743 	VAT_CODE,
1744 	COUNTRY_OF_ORIGIN_CODE,
1745 	EXPORT_FLAG,
1746 	HUMAN_SUBJECT_FLAG,
1747 	CQA_FLAG,
1748 	INTERIM_RPT_REQ_FLAG,
1749 	NO_COMPETITION_AUTHORIZE,
1750 	PENALTY_CLAUSE_FLAG,
1751 	PRODUCT_LINE_CODE,
1752 	REPORTING_FLAG,
1753 	SB_PLAN_REQ_FLAG,
1754 	SB_REPORT_FLAG,
1755 	NTE_AMOUNT,
1756 	NTE_WARNING_FLAG,
1757 	BILL_WITHOUT_DEF_FLAG,
1758 	CAS_FLAG,
1759 	CLASSIFIED_FLAG,
1760 	CLIENT_APPROVE_REQ_FLAG,
1761 	COST_OF_MONEY,
1762 	DCAA_AUDIT_REQ_FLAG,
1763 	COST_SHARE_FLAG,
1764 	OH_RATES_FINAL_FLAG,
1765 	PROGRESS_PAYMENT_FLAG,
1766 	PROGRESS_PAYMENT_LIQ_RATE,
1767 	PROGRESS_PAYMENT_RATE,
1768 	ALTERNATE_LIQUIDATION_RATE,
1769 	PROP_DELIVERY_LOCATION,
1770 	PROP_DUE_DATE_TIME,
1771         PROP_DUE_TIME,
1772 	PROP_EXPIRE_DATE,
1773 	COPIES_REQUIRED,
1774 	SIC_CODE,
1775 	TECH_DATA_WH_RATE,
1776 	CREATED_BY,
1777 	CREATION_DATE,
1778 	LAST_UPDATED_BY,
1779 	LAST_UPDATE_LOGIN,
1780 	LAST_UPDATE_DATE,
1781 	FINANCIAL_CTRL_VERIFIED_FLAG,
1782 	DEFINITIZED_FLAG,
1783 	COST_OF_SALE_RATE,
1784 	LINE_VALUE_TOTAL,
1785 	UNDEF_LINE_VALUE_TOTAL,
1786 --	END_DATE,
1787 	OWNING_ORGANIZATION_ID,
1788 	DEFAULT_TASK_ID
1789   FROM OKE_K_HEADERS
1790   WHERE K_HEADER_ID = p_id;
1791 
1792   l_chr_pk	chr_pk_csr%ROWTYPE;
1793   l_chr_rec	chr_rec_type;
1794   l_temp	VARCHAR2(1) := 'Y';
1795 BEGIN
1796   x_no_data_found := TRUE;
1797 
1798 -- Get current database values
1799 
1800   OPEN chr_pk_csr(p_chr_rec.k_header_id);
1801   FETCH chr_pk_csr INTO
1802 
1803 	l_chr_rec.K_HEADER_ID,
1804 	l_chr_rec.PROGRAM_ID,
1805  	l_chr_rec.PROJECT_ID,
1806 	l_chr_rec.BOA_ID,
1807         l_chr_rec.K_TYPE_CODE,
1808 	l_chr_rec.PRIORITY_CODE,
1809 	l_chr_rec.PRIME_K_ALIAS,
1810 	l_chr_rec.PRIME_K_NUMBER,
1811 	l_chr_rec.AUTHORIZE_DATE,
1812 	l_chr_rec.AUTHORIZING_REASON,
1813 	l_chr_rec.AWARD_CANCEL_DATE,
1814 	l_chr_rec.AWARD_DATE,
1815 	l_chr_rec.DATE_DEFINITIZED,
1816 	l_chr_rec.DATE_ISSUED,
1817 	l_chr_rec.DATE_NEGOTIATED,
1818 	l_chr_rec.DATE_RECEIVED,
1819 	l_chr_rec.DATE_SIGN_BY_CONTRACTOR,
1820 	l_chr_rec.DATE_SIGN_BY_CUSTOMER,
1821 	l_chr_rec.FAA_APPROVE_DATE,
1822 	l_chr_rec.FAA_REJECT_DATE,
1823 	l_chr_rec.BOOKED_FLAG,
1824 	l_chr_rec.OPEN_FLAG,
1825 	l_chr_rec.CFE_FLAG,
1826 	l_chr_rec.VAT_CODE,
1827 	l_chr_rec.COUNTRY_OF_ORIGIN_CODE,
1828 	l_chr_rec.EXPORT_FLAG,
1829 	l_chr_rec.HUMAN_SUBJECT_FLAG,
1830 	l_chr_rec.CQA_FLAG,
1831 	l_chr_rec.INTERIM_RPT_REQ_FLAG,
1832 	l_chr_rec.NO_COMPETITION_AUTHORIZE,
1833 	l_chr_rec.PENALTY_CLAUSE_FLAG,
1834 	l_chr_rec.PRODUCT_LINE_CODE,
1835 	l_chr_rec.REPORTING_FLAG,
1836 	l_chr_rec.SB_PLAN_REQ_FLAG,
1837 	l_chr_rec.SB_REPORT_FLAG,
1838 	l_chr_rec.NTE_AMOUNT,
1839 	l_chr_rec.NTE_WARNING_FLAG,
1840 	l_chr_rec.BILL_WITHOUT_DEF_FLAG,
1841 	l_chr_rec.CAS_FLAG,
1842 	l_chr_rec.CLASSIFIED_FLAG,
1843 	l_chr_rec.CLIENT_APPROVE_REQ_FLAG,
1844 	l_chr_rec.COST_OF_MONEY,
1845 	l_chr_rec.DCAA_AUDIT_REQ_FLAG,
1846 	l_chr_rec.COST_SHARE_FLAG,
1847 	l_chr_rec.OH_RATES_FINAL_FLAG,
1848         l_chr_rec.PROGRESS_PAYMENT_FLAG,
1849 	l_chr_rec.PROGRESS_PAYMENT_LIQ_RATE,
1850 	l_chr_rec.PROGRESS_PAYMENT_RATE,
1851 	l_chr_rec.ALTERNATE_LIQUIDATION_RATE,
1852 	l_chr_rec.PROP_DELIVERY_LOCATION,
1853 	l_chr_rec.PROP_DUE_DATE_TIME,
1854         l_chr_rec.PROP_DUE_TIME,
1855 	l_chr_rec.PROP_EXPIRE_DATE,
1856 	l_chr_rec.COPIES_REQUIRED,
1857 	l_chr_rec.SIC_CODE,
1858 	l_chr_rec.TECH_DATA_WH_RATE,
1859 	l_chr_rec.CREATED_BY,
1860 	l_chr_rec.CREATION_DATE,
1861 	l_chr_rec.LAST_UPDATED_BY,
1862 	l_chr_rec.LAST_UPDATE_LOGIN,
1863 	l_chr_rec.LAST_UPDATE_DATE,
1864 	l_chr_rec.FINANCIAL_CTRL_VERIFIED_FLAG,
1865 	l_chr_rec.DEFINITIZED_FLAG,
1866 	l_chr_rec.COST_OF_SALE_RATE,
1867 	l_chr_rec.LINE_VALUE_TOTAL,
1868 	l_chr_rec.UNDEF_LINE_VALUE_TOTAL,
1869 --	l_chr_rec.END_DATE,
1870 	l_chr_rec.OWNING_ORGANIZATION_ID,
1871 	l_chr_rec.DEFAULT_TASK_ID;
1872 
1873 
1874   x_no_data_found := chr_pk_csr%NOTFOUND;
1875 
1876   close chr_pk_csr;
1877 
1878   IF x_no_data_found = TRUE THEN
1879     l_temp := 'N';
1880   END IF;
1881 
1882   RETURN(l_chr_rec);
1883 
1884 END get_rec;
1885 
1886 FUNCTION get_rec(
1887 
1888   p_chr_rec	IN chr_rec_type)
1889 RETURN chr_rec_type IS
1890 
1891   l_row_notfound	BOOLEAN := TRUE;
1892 
1893 BEGIN
1894 
1895   RETURN(get_rec(p_chr_rec, l_row_notfound));
1896 
1897 END get_rec;
1898 
1899 FUNCTION null_out_defaults(
1900 	    p_chr_rec IN chr_rec_type) RETURN chr_rec_type IS
1901   x_chr_rec chr_rec_type := p_chr_rec;
1902 
1903 BEGIN
1904 
1905     IF x_chr_rec.PROGRAM_ID = OKE_API.G_MISS_NUM THEN
1906       x_chr_rec.PROGRAM_ID := NULL;
1907     END IF;
1908 
1909     IF (x_chr_rec.PROJECT_ID = OKE_API.G_MISS_NUM) THEN
1910       x_chr_rec.PROJECT_ID := NULL;
1911     END IF;
1912 
1913 
1914     IF (x_chr_rec.BOA_ID = OKE_API.G_MISS_NUM) THEN
1915       x_chr_rec.BOA_ID := NULL;
1916     END IF;
1917 
1918     IF (x_chr_rec.K_TYPE_CODE = OKE_API.G_MISS_CHAR) THEN
1919       x_chr_rec.K_TYPE_CODE := NULL;
1920     END IF;
1921 
1922     IF (x_chr_rec.PRIORITY_CODE = OKE_API.G_MISS_CHAR) THEN
1923       x_chr_rec.PRIORITY_CODE := NULL;
1924     END IF;
1925 
1926     IF (x_chr_rec.PRIME_K_ALIAS = OKE_API.G_MISS_CHAR) THEN
1927       x_chr_rec.PRIME_K_ALIAS := NULL;
1928     END IF;
1929 
1930     IF (x_chr_rec.PRIME_K_NUMBER = OKE_API.G_MISS_CHAR) THEN
1931       x_chr_rec.PRIME_K_NUMBER := NULL;
1932     END IF;
1933 
1934     IF (x_chr_rec.AUTHORIZE_DATE = OKE_API.G_MISS_DATE) THEN
1935       x_chr_rec.AUTHORIZE_DATE := NULL;
1936     END IF;
1937 
1938     IF (x_chr_rec.AUTHORIZING_REASON = OKE_API.G_MISS_CHAR) THEN
1939       x_chr_rec.AUTHORIZING_REASON := NULL;
1940     END IF;
1941 
1942     IF (x_chr_rec.AWARD_CANCEL_DATE = OKE_API.G_MISS_DATE) THEN
1943       x_chr_rec.AWARD_CANCEL_DATE := NULL;
1944     END IF;
1945 
1946     IF (x_chr_rec.AWARD_DATE = OKE_API.G_MISS_DATE) THEN
1947       x_chr_rec.AWARD_DATE := NULL;
1948     END IF;
1949 
1950     IF (x_chr_rec.DATE_DEFINITIZED = OKE_API.G_MISS_DATE) THEN
1951       x_chr_rec.DATE_DEFINITIZED := NULL;
1952     END IF;
1953 
1954     IF (x_chr_rec.DATE_ISSUED = OKE_API.G_MISS_DATE) THEN
1955       x_chr_rec.DATE_ISSUED := NULL;
1956     END IF;
1957 
1958     IF (x_chr_rec.DATE_NEGOTIATED = OKE_API.G_MISS_DATE) THEN
1959       x_chr_rec.DATE_NEGOTIATED := NULL;
1960     END IF;
1961 
1962     IF (x_chr_rec.DATE_RECEIVED = OKE_API.G_MISS_DATE) THEN
1963       x_chr_rec.DATE_RECEIVED := NULL;
1964     END IF;
1965 
1966     IF (x_chr_rec.DATE_SIGN_BY_CONTRACTOR = OKE_API.G_MISS_DATE) THEN
1967       x_chr_rec.DATE_SIGN_BY_CONTRACTOR := NULL;
1968     END IF;
1969 
1970     IF (x_chr_rec.FAA_APPROVE_DATE = OKE_API.G_MISS_DATE) THEN
1971       x_chr_rec.FAA_APPROVE_DATE := NULL;
1972     END IF;
1973 
1974     IF (x_chr_rec.FAA_REJECT_DATE = OKE_API.G_MISS_DATE) THEN
1975       x_chr_rec.FAA_REJECT_DATE := NULL;
1976     END IF;
1977 
1978     IF (x_chr_rec.BOOKED_FLAG = OKE_API.G_MISS_CHAR) THEN
1979       x_chr_rec.BOOKED_FLAG := NULL;
1980     END IF;
1981 
1982     IF (x_chr_rec.OPEN_FLAG = OKE_API.G_MISS_CHAR) THEN
1983       x_chr_rec.OPEN_FLAG := NULL;
1984     END IF;
1985 
1986     IF (x_chr_rec.CFE_FLAG = OKE_API.G_MISS_CHAR) THEN
1987       x_chr_rec.CFE_FLAG := NULL;
1988     END IF;
1989 
1990     IF (x_chr_rec.VAT_CODE = OKE_API.G_MISS_CHAR) THEN
1991       x_chr_rec.VAT_CODE := NULL;
1992     END IF;
1993 
1994     IF (x_chr_rec.COUNTRY_OF_ORIGIN_CODE = OKE_API.G_MISS_CHAR) THEN
1995       x_chr_rec.COUNTRY_OF_ORIGIN_CODE := NULL;
1996     END IF;
1997 
1998     IF (x_chr_rec.EXPORT_FLAG = OKE_API.G_MISS_CHAR) THEN
1999       x_chr_rec.EXPORT_FLAG := NULL;
2000     END IF;
2001 
2002     IF (x_chr_rec.HUMAN_SUBJECT_FLAG = OKE_API.G_MISS_CHAR) THEN
2003       x_chr_rec.HUMAN_SUBJECT_FLAG := NULL;
2004     END IF;
2005 
2006     IF (x_chr_rec.CQA_FLAG = OKE_API.G_MISS_CHAR) THEN
2007       x_chr_rec.CQA_FLAG := NULL;
2008     END IF;
2009 
2010     IF (x_chr_rec.INTERIM_RPT_REQ_FLAG = OKE_API.G_MISS_CHAR) THEN
2011       x_chr_rec.INTERIM_RPT_REQ_FLAG := NULL;
2012     END IF;
2013 
2014     IF (x_chr_rec.NO_COMPETITION_AUTHORIZE = OKE_API.G_MISS_CHAR) THEN
2015       x_chr_rec.NO_COMPETITION_AUTHORIZE := NULL;
2016     END IF;
2017 
2018     IF (x_chr_rec.PENALTY_CLAUSE_FLAG = OKE_API.G_MISS_CHAR) THEN
2019       x_chr_rec.PENALTY_CLAUSE_FLAG := NULL;
2020     END IF;
2021 
2022     IF (x_chr_rec.PRODUCT_LINE_CODE = OKE_API.G_MISS_CHAR) THEN
2023       x_chr_rec.PRODUCT_LINE_CODE := NULL;
2024     END IF;
2025 
2026     IF (x_chr_rec.REPORTING_FLAG = OKE_API.G_MISS_CHAR) THEN
2027       x_chr_rec.REPORTING_FLAG := NULL;
2028     END IF;
2029 
2030     IF (x_chr_rec.SB_PLAN_REQ_FLAG = OKE_API.G_MISS_CHAR) THEN
2031       x_chr_rec.SB_PLAN_REQ_FLAG := NULL;
2032     END IF;
2033 
2034     IF (x_chr_rec.SB_REPORT_FLAG = OKE_API.G_MISS_CHAR) THEN
2035       x_chr_rec.SB_REPORT_FLAG := NULL;
2036     END IF;
2037 
2038     IF (x_chr_rec.NTE_AMOUNT = OKE_API.G_MISS_NUM) THEN
2039       x_chr_rec.NTE_AMOUNT := NULL;
2040     END IF;
2041 
2042     IF (x_chr_rec.NTE_WARNING_FLAG = OKE_API.G_MISS_CHAR) THEN
2043       x_chr_rec.NTE_WARNING_FLAG := NULL;
2044     END IF;
2045 
2046     IF (x_chr_rec.BILL_WITHOUT_DEF_FLAG = OKE_API.G_MISS_CHAR) THEN
2047       x_chr_rec.BILL_WITHOUT_DEF_FLAG := NULL;
2048     END IF;
2049 
2050     IF (x_chr_rec.CAS_FLAG = OKE_API.G_MISS_CHAR) THEN
2051       x_chr_rec.CAS_FLAG := NULL;
2052     END IF;
2053 
2054     IF (x_chr_rec.CLASSIFIED_FLAG = OKE_API.G_MISS_CHAR) THEN
2055       x_chr_rec.CLASSIFIED_FLAG := NULL;
2056     END IF;
2057 
2058     IF (x_chr_rec.CLIENT_APPROVE_REQ_FLAG = OKE_API.G_MISS_CHAR) THEN
2059       x_chr_rec.CLIENT_APPROVE_REQ_FLAG := NULL;
2060     END IF;
2061 
2062     IF (x_chr_rec.COST_OF_MONEY = OKE_API.G_MISS_CHAR) THEN
2063       x_chr_rec.COST_OF_MONEY := NULL;
2064     END IF;
2065 
2066     IF (x_chr_rec.DCAA_AUDIT_REQ_FLAG = OKE_API.G_MISS_CHAR) THEN
2067       x_chr_rec.DCAA_AUDIT_REQ_FLAG := NULL;
2068     END IF;
2069 
2070     IF (x_chr_rec.COST_SHARE_FLAG = OKE_API.G_MISS_CHAR) THEN
2071       x_chr_rec.COST_SHARE_FLAG := NULL;
2072     END IF;
2073 
2074     IF (x_chr_rec.OH_RATES_FINAL_FLAG = OKE_API.G_MISS_CHAR) THEN
2075       x_chr_rec.OH_RATES_FINAL_FLAG := NULL;
2076     END IF;
2077 
2078     IF (x_chr_rec.PROGRESS_PAYMENT_FLAG = OKE_API.G_MISS_CHAR) THEN
2079       x_chr_rec.PROGRESS_PAYMENT_FLAG := NULL;
2080     END IF;
2081 
2082     IF (x_chr_rec.PROGRESS_PAYMENT_LIQ_RATE = OKE_API.G_MISS_NUM) THEN
2083       x_chr_rec.PROGRESS_PAYMENT_LIQ_RATE := NULL;
2084     END IF;
2085 
2086     IF (x_chr_rec.PROGRESS_PAYMENT_RATE = OKE_API.G_MISS_NUM) THEN
2087       x_chr_rec.PROGRESS_PAYMENT_RATE := NULL;
2088     END IF;
2089 
2090     IF (x_chr_rec.ALTERNATE_LIQUIDATION_RATE = OKE_API.G_MISS_NUM) THEN
2091       x_chr_rec.ALTERNATE_LIQUIDATION_RATE := NULL;
2092     END IF;
2093 
2094     IF (x_chr_rec.PROP_DELIVERY_LOCATION = OKE_API.G_MISS_CHAR) THEN
2095       x_chr_rec.PROP_DELIVERY_LOCATION := NULL;
2096     END IF;
2097 
2098     IF (x_chr_rec.PROP_DUE_DATE_TIME = OKE_API.G_MISS_DATE) THEN
2099       x_chr_rec.PROP_DUE_DATE_TIME := NULL;
2100     END IF;
2101 
2102     IF (x_chr_rec.PROP_DUE_TIME = OKE_API.G_MISS_CHAR) THEN
2103       x_chr_rec.PROP_DUE_TIME := NULL;
2104     END IF;
2105 
2106     IF (x_chr_rec.PROP_EXPIRE_DATE = OKE_API.G_MISS_DATE) THEN
2107       x_chr_rec.PROP_EXPIRE_DATE := NULL;
2108     END IF;
2109 
2110     IF (x_chr_rec.COPIES_REQUIRED = OKE_API.G_MISS_NUM) THEN
2111       x_chr_rec.COPIES_REQUIRED := NULL;
2112     END IF;
2113 
2114     IF (x_chr_rec.SIC_CODE = OKE_API.G_MISS_CHAR) THEN
2115       x_chr_rec.SIC_CODE := NULL;
2116     END IF;
2117 
2118     IF (x_chr_rec.TECH_DATA_WH_RATE = OKE_API.G_MISS_NUM) THEN
2119       x_chr_rec.TECH_DATA_WH_RATE := NULL;
2120     END IF;
2121 
2122 
2123     IF (x_chr_rec.CREATED_BY = OKE_API.G_MISS_NUM) THEN
2124       x_chr_rec.CREATED_BY := NULL;
2125     END IF;
2126 
2127     IF (x_chr_rec.CREATION_DATE = OKE_API.G_MISS_DATE) THEN
2128       x_chr_rec.CREATION_DATE := NULL;
2129     END IF;
2130 
2131     IF (x_chr_rec.LAST_UPDATED_BY = OKE_API.G_MISS_NUM) THEN
2132       x_chr_rec.LAST_UPDATED_BY := NULL;
2133     END IF;
2134 
2135     IF (x_chr_rec.LAST_UPDATE_DATE = OKE_API.G_MISS_DATE) THEN
2136       x_chr_rec.LAST_UPDATE_DATE := NULL;
2137     END IF;
2138 
2139     IF (x_chr_rec.LAST_UPDATE_LOGIN = OKE_API.G_MISS_NUM) THEN
2140       x_chr_rec.LAST_UPDATE_LOGIN := NULL;
2141     END IF;
2142 
2143     IF (x_chr_rec.FINANCIAL_CTRL_VERIFIED_FLAG = OKE_API.G_MISS_CHAR) THEN
2144       x_chr_rec.FINANCIAL_CTRL_VERIFIED_FLAG := NULL;
2145     END IF;
2146 
2147     IF (x_chr_rec.DEFINITIZED_FLAG = OKE_API.G_MISS_CHAR) THEN
2148       x_chr_rec.DEFINITIZED_FLAG := NULL;
2149     END IF;
2150 
2151     IF (x_chr_rec.COST_OF_SALE_RATE = OKE_API.G_MISS_NUM) THEN
2152       x_chr_rec.COST_OF_SALE_RATE := NULL;
2153     END IF;
2154 
2155     IF (x_chr_rec.LINE_VALUE_TOTAL = OKE_API.G_MISS_NUM) THEN
2156       x_chr_rec.LINE_VALUE_TOTAL := NULL;
2157     END IF;
2158 
2159     IF (x_chr_rec.UNDEF_LINE_VALUE_TOTAL = OKE_API.G_MISS_NUM) THEN
2160       x_chr_rec.UNDEF_LINE_VALUE_TOTAL := NULL;
2161     END IF;
2162 
2163 --    IF (x_chr_rec.END_DATE = OKE_API.G_MISS_DATE) THEN
2164 --      x_chr_rec.END_DATE := NULL;
2165 --    END IF;
2166 
2167     IF (x_chr_rec.OWNING_ORGANIZATION_ID = OKE_API.G_MISS_NUM) THEN
2168       x_chr_rec.OWNING_ORGANIZATION_ID := NULL;
2169     END IF;
2170 
2171     IF (x_chr_rec.DEFAULT_TASK_ID = OKE_API.G_MISS_NUM) THEN
2172 	x_chr_rec.DEFAULT_TASK_ID := NULL;
2173     END IF;
2174 
2175   RETURN(x_chr_rec);
2176 
2177 END null_out_defaults;
2178 
2179 
2180 
2181 FUNCTION validate_attributes(
2182 	p_chr_rec IN chr_rec_type)
2183 RETURN VARCHAR2 IS
2184 
2185   l_return_status VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
2186   x_return_status VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
2187 
2188 BEGIN
2189 
2190   validate_program_id (x_return_status => l_return_status,
2191 			      p_chr_rec	      =>  p_chr_rec);
2192   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2193     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2194       x_return_status := l_return_status;
2195     END IF;
2196   END IF;
2197 
2198 
2199   validate_boa_id (x_return_status => l_return_status,
2200 			      p_chr_rec	      =>  p_chr_rec);
2201 
2202   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2203     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2204       x_return_status := l_return_status;
2205     END IF;
2206   END IF;
2207 
2208   validate_project_id (x_return_status => l_return_status,
2209 			      p_chr_rec	      =>  p_chr_rec);
2210 
2211   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2212     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2213       x_return_status := l_return_status;
2214     END IF;
2215   END IF;
2216 
2217 
2218   validate_k_type_code(x_return_status => l_return_status,
2219 				p_chr_rec	=>  p_chr_rec);
2220 
2221   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2222     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2223       x_return_status := l_return_status;
2224     END IF;
2225   END IF;
2226 
2227   validate_priority_code(x_return_status => l_return_status,
2228 				p_chr_rec	=>  p_chr_rec);
2229 
2230   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2231     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2232       x_return_status := l_return_status;
2233     END IF;
2234   END IF;
2235 
2236   validate_product_code(x_return_status => l_return_status,
2237 				p_chr_rec	=>  p_chr_rec);
2238 
2239   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2240     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2241       x_return_status := l_return_status;
2242     END IF;
2243   END IF;
2244 
2245   validate_country_code(x_return_status => l_return_status,
2246 				p_chr_rec	=>  p_chr_rec);
2247 
2248   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2249     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2250       x_return_status := l_return_status;
2251     END IF;
2252   END IF;
2253 
2254   validate_vat_code(x_return_status => l_return_status,
2255 				p_chr_rec	=>  p_chr_rec);
2256 
2257   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2258     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2259       x_return_status := l_return_status;
2260     END IF;
2261   END IF;
2262 
2263 
2264 
2265 
2266   validate_prime_k_alias(x_return_status => l_return_status,
2267 				p_chr_rec	=>  p_chr_rec);
2268 
2269   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2270     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2271       x_return_status := l_return_status;
2272     END IF;
2273   END IF;
2274 
2275 
2276 
2277   validate_prime_k_number(x_return_status => l_return_status,
2278 				p_chr_rec	=>  p_chr_rec);
2279 
2280   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2281     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2282       x_return_status := l_return_status;
2283     END IF;
2284   END IF;
2285 
2286   validate_authorizing_reason(x_return_status => l_return_status,
2287 				p_chr_rec	=>  p_chr_rec);
2288 
2289   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2290     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2291       x_return_status := l_return_status;
2292     END IF;
2293   END IF;
2294 
2295 
2296   validate_award_cancel_date(x_return_status => l_return_status,
2297 				p_chr_rec	=>  p_chr_rec);
2298 
2299   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2300     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2301       x_return_status := l_return_status;
2302     END IF;
2303   END IF;
2304 
2305   validate_date_definitized(x_return_status => l_return_status,
2306 				p_chr_rec	=>  p_chr_rec);
2307 
2308   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2309     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2310       x_return_status := l_return_status;
2311     END IF;
2312   END IF;
2313 
2314   validate_date_received(x_return_status => l_return_status,
2315 				p_chr_rec	=>  p_chr_rec);
2316 
2317   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2318     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2319       x_return_status := l_return_status;
2320     END IF;
2321 
2322   END IF;
2323 
2324   validate_booked_flag(x_return_status => l_return_status,
2325 				p_chr_rec	=>  p_chr_rec);
2326 
2327   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2328     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2329       x_return_status := l_return_status;
2330     END IF;
2331 
2332   END IF;
2333 
2334   validate_open_flag(x_return_status => l_return_status,
2335 				p_chr_rec	=>  p_chr_rec);
2336 
2337   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2338     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2339       x_return_status := l_return_status;
2340     END IF;
2341 
2342   END IF;
2343 
2344   validate_cfe_flag(x_return_status => l_return_status,
2345 				p_chr_rec	=>  p_chr_rec);
2346 
2347   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2348     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2349       x_return_status := l_return_status;
2350     END IF;
2351   END IF;
2352 
2353 
2354   validate_export_flag(x_return_status => l_return_status,
2355 				p_chr_rec	=>  p_chr_rec);
2356 
2357   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2358     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2359       x_return_status := l_return_status;
2360     END IF;
2361   END IF;
2362 
2363   validate_human_subject_flag(x_return_status => l_return_status,
2364 				p_chr_rec	=>  p_chr_rec);
2365 
2366   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2367     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2368       x_return_status := l_return_status;
2369     END IF;
2370   END IF;
2371 
2372   validate_cqa_flag(x_return_status => l_return_status,
2373 				p_chr_rec	=>  p_chr_rec);
2374 
2375   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2376     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2377       x_return_status := l_return_status;
2378     END IF;
2379   END IF;
2380 
2381   validate_interim_rpt_req_flag(x_return_status => l_return_status,
2382 				p_chr_rec	=>  p_chr_rec);
2383 
2384   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2385     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2386       x_return_status := l_return_status;
2387     END IF;
2388   END IF;
2389 
2390   validate_penalty_clause_flag(x_return_status => l_return_status,
2391 				p_chr_rec	=>  p_chr_rec);
2392 
2393   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2394     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2395       x_return_status := l_return_status;
2396     END IF;
2397   END IF;
2398 
2399   validate_reporting_flag(x_return_status => l_return_status,
2400 				p_chr_rec	=>  p_chr_rec);
2401 
2402   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2403     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2404       x_return_status := l_return_status;
2405     END IF;
2406   END IF;
2407 
2408   validate_sb_plan_req_flag(x_return_status => l_return_status,
2409 				p_chr_rec	=>  p_chr_rec);
2410 
2411   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2412     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2413       x_return_status := l_return_status;
2414     END IF;
2415   END IF;
2416 
2417   validate_sb_report_flag(x_return_status => l_return_status,
2418 				p_chr_rec	=>  p_chr_rec);
2419 
2420   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2421     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2422       x_return_status := l_return_status;
2423     END IF;
2424   END IF;
2425 
2426   validate_nte_warning_flag(x_return_status => l_return_status,
2427 				p_chr_rec	=>  p_chr_rec);
2428 
2429   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2430     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2431       x_return_status := l_return_status;
2432     END IF;
2433   END IF;
2434 
2435   validate_bill_without_def_flag(x_return_status => l_return_status,
2436 				p_chr_rec	=>  p_chr_rec);
2437 
2438   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2439     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2440       x_return_status := l_return_status;
2441     END IF;
2442   END IF;
2443 
2444   validate_cas_flag(x_return_status => l_return_status,
2445 				p_chr_rec	=>  p_chr_rec);
2446 
2447   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2448     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2449       x_return_status := l_return_status;
2450     END IF;
2451   END IF;
2452 
2453   validate_classified_flag(x_return_status => l_return_status,
2454 				p_chr_rec	=>  p_chr_rec);
2455 
2456   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2457     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2458       x_return_status := l_return_status;
2459     END IF;
2460   END IF;
2461 
2462   validate_client_approve_req(x_return_status => l_return_status,
2463 				p_chr_rec	=>  p_chr_rec);
2464 
2465   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2466     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2467       x_return_status := l_return_status;
2468     END IF;
2469   END IF;
2470 
2471   validate_dcaa_audit_req_flag(x_return_status => l_return_status,
2472 				p_chr_rec	=>  p_chr_rec);
2473 
2474   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2475     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2476       x_return_status := l_return_status;
2477     END IF;
2478   END IF;
2479 
2480   validate_client_approve_req(x_return_status => l_return_status,
2481 				p_chr_rec	=>  p_chr_rec);
2482 
2483   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2484     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2485       x_return_status := l_return_status;
2486     END IF;
2487   END IF;
2488 
2489   validate_OH_RATES_FINAL_FLAG(x_return_status => l_return_status,
2490 				p_chr_rec	=>  p_chr_rec);
2491 
2492   IF l_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2493     IF x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2494       x_return_status := l_return_status;
2495     END IF;
2496   END IF;
2497 
2498   RETURN(x_return_status);
2499 
2500 END validate_attributes;
2501 
2502 FUNCTION validate_record(
2503      p_chr_rec IN chr_rec_type) RETURN VARCHAR2 IS
2504 
2505   l_return_status VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
2506 
2507 BEGIN
2508   RETURN(l_return_status);
2509 
2510 END validate_record;
2511 
2512 -- Insert row into OKE_K_HEADERS
2513 
2514 PROCEDURE insert_row(
2515   p_api_version 	IN NUMBER,
2516   p_init_msg_list	IN 	VARCHAR2 DEFAULT OKE_API.G_FALSE,
2517   x_return_status	OUT	NOCOPY VARCHAR2,
2518   x_msg_count		OUT	NOCOPY NUMBER,
2519   x_msg_data		OUT	NOCOPY VARCHAR2,
2520   p_chr_rec		IN	chr_rec_type,
2521   x_chr_rec		OUT	NOCOPY chr_rec_type)IS
2522 
2523   l_api_version		CONSTANT NUMBER :=1;
2524   l_api_name		CONSTANT VARCHAR2(30) := 'B_insert_row';
2525   l_return_status	VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
2526   l_chr_rec		chr_rec_type := p_chr_rec;
2527   l_def_chr_rec		chr_rec_type;
2528 
2529   l_k_number_disp       VARCHAR2(120);
2530 
2531   FUNCTION fill_who_column(
2532     		p_chr_rec IN chr_rec_type) RETURN chr_rec_type IS
2533 
2534     l_chr_rec chr_rec_type := p_chr_rec;
2535 
2536   BEGIN
2537 
2538     l_chr_rec.CREATED_BY := FND_GLOBAL.USER_ID;
2539     l_chr_rec.CREATION_DATE := SYSDATE;
2540     l_chr_rec.LAST_UPDATE_DATE := SYSDATE;
2541     l_chr_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
2542     l_chr_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
2543 
2544     RETURN(l_chr_rec);
2545 
2546   END fill_who_column;
2547 
2548 --Set Attributes for OKE_K_HEADERS
2549 
2550   FUNCTION set_attributes(
2551     p_chr_rec IN chr_rec_type,
2552     x_chr_rec OUT NOCOPY chr_rec_type) RETURN VARCHAR2 IS
2553 
2554     l_return_status	VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
2555 
2556   BEGIN
2557     x_chr_rec := p_chr_rec;
2558 
2559 
2560 
2561     x_chr_rec.BOOKED_FLAG := UPPER(x_chr_rec.BOOKED_FLAG);
2562     x_chr_rec.OPEN_FLAG := UPPER(x_chr_rec.OPEN_FLAG);
2563     x_chr_rec.CFE_FLAG := UPPER(x_chr_rec.CFE_FLAG);
2564     x_chr_rec.EXPORT_FLAG := UPPER(x_chr_rec.EXPORT_FLAG);
2565     x_chr_rec.HUMAN_SUBJECT_FLAG := UPPER(x_chr_rec.HUMAN_SUBJECT_FLAG);
2566     x_chr_rec.CQA_FLAG := UPPER(x_chr_rec.CQA_FLAG);
2567     x_chr_rec.INTERIM_RPT_REQ_FLAG := UPPER(x_chr_rec.INTERIM_RPT_REQ_FLAG);
2568     x_chr_rec.PENALTY_CLAUSE_FLAG := UPPER(x_chr_rec.PENALTY_CLAUSE_FLAG);
2569     x_chr_rec.REPORTING_FLAG := UPPER(x_chr_rec.REPORTING_FLAG);
2570     x_chr_rec.NTE_WARNING_FLAG := UPPER(x_chr_rec.NTE_WARNING_FLAG);
2571     x_chr_rec.BILL_WITHOUT_DEF_FLAG := UPPER(x_chr_rec.BILL_WITHOUT_DEF_FLAG);
2572     x_chr_rec.CAS_FLAG := UPPER(x_chr_rec.CAS_FLAG);
2573     x_chr_rec.CLASSIFIED_FLAG := UPPER(x_chr_rec.CLASSIFIED_FLAG);
2574     x_chr_rec.CLIENT_APPROVE_REQ_FLAG := UPPER(x_chr_rec.CLIENT_APPROVE_REQ_FLAG);
2575     x_chr_rec.DCAA_AUDIT_REQ_FLAG := UPPER(x_chr_rec.DCAA_AUDIT_REQ_FLAG);
2576     x_chr_rec.COST_SHARE_FLAG := UPPER(x_chr_rec.COST_SHARE_FLAG);
2577     x_chr_rec.OH_RATES_FINAL_FLAG := UPPER(x_chr_rec.OH_RATES_FINAL_FLAG);
2578     x_chr_rec.PROGRESS_PAYMENT_FLAG := UPPER(x_chr_rec.PROGRESS_PAYMENT_FLAG);
2579     x_chr_rec.FINANCIAL_CTRL_VERIFIED_FLAG := UPPER(x_chr_rec.FINANCIAL_CTRL_VERIFIED_FLAG);
2580     x_chr_rec.DEFINITIZED_FLAG := UPPER(x_chr_rec.DEFINITIZED_FLAG);
2581 
2582 
2583     RETURN(l_return_status);
2584 
2585   END set_attributes;
2586 
2587 BEGIN
2588 
2589   l_return_status := OKE_API.START_ACTIVITY(
2590 			l_api_name,
2591 			p_init_msg_list,
2592 			'_PVT',
2593 			x_return_status);
2594 
2595   IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
2596 
2597     RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
2598 
2599   ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
2600 
2601     RAISE OKE_API.G_EXCEPTION_ERROR;
2602 
2603   END IF;
2604 
2605 
2606   l_chr_rec := null_out_defaults(p_chr_rec);
2607 
2608 -- Get primary key
2609   -- l_chr_rec.K_HEADER_ID := get_id;
2610 
2611 
2612   l_return_status := set_attributes(l_chr_rec, l_def_chr_rec);
2613 
2614 
2615 
2616   IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
2617 
2618     RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
2619 
2620   ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
2621 
2622     RAISE OKE_API.G_EXCEPTION_ERROR;
2623 
2624   END IF;
2625 
2626   l_def_chr_rec := fill_who_column(l_def_chr_rec);
2627 
2628 -- Validate all non-missing attributes(Item level validation)
2629   l_return_status := validate_attributes(l_def_chr_rec);
2630 
2631   IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
2632 
2633     RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
2634 
2635   ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
2636 
2637     RAISE OKE_API.G_EXCEPTION_ERROR;
2638 
2639   END IF;
2640 
2641 
2642   l_return_status := validate_record(l_def_chr_rec);
2643 
2644   IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
2645 
2646     RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
2647 
2648   ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
2649 
2650     RAISE OKE_API.G_EXCEPTION_ERROR;
2651 
2652   END IF;
2653 
2654   l_k_number_disp := K_Number_Disp( l_def_chr_rec.K_HEADER_ID
2655                                   , l_def_chr_rec.BOA_ID );
2656 
2657 
2658   INSERT INTO OKE_K_HEADERS(
2659 
2660   	K_HEADER_ID,
2661 	PROGRAM_ID,
2662  	PROJECT_ID,
2663 	BOA_ID,
2664         K_NUMBER_DISP,
2665         K_TYPE_CODE,
2666 	PRIORITY_CODE,
2667 	PRIME_K_ALIAS,
2668 	PRIME_K_NUMBER,
2669 	AUTHORIZE_DATE,
2670 	AUTHORIZING_REASON,
2671 	AWARD_CANCEL_DATE,
2672 	AWARD_DATE,
2673 	DATE_DEFINITIZED,
2674 	DATE_ISSUED,
2675 	DATE_NEGOTIATED,
2676 	DATE_RECEIVED,
2677 	DATE_SIGN_BY_CONTRACTOR,
2678 	DATE_SIGN_BY_CUSTOMER,
2679 	FAA_APPROVE_DATE,
2680 	FAA_REJECT_DATE,
2681 	BOOKED_FLAG,
2682 	OPEN_FLAG,
2683 	CFE_FLAG,
2684 	VAT_CODE,
2685 	COUNTRY_OF_ORIGIN_CODE,
2686 	EXPORT_FLAG,
2687 	HUMAN_SUBJECT_FLAG,
2688 	CQA_FLAG,
2689 	INTERIM_RPT_REQ_FLAG,
2690 	NO_COMPETITION_AUTHORIZE,
2691 	PENALTY_CLAUSE_FLAG,
2692 	PRODUCT_LINE_CODE,
2693 	REPORTING_FLAG,
2694 	SB_PLAN_REQ_FLAG,
2695 	SB_REPORT_FLAG,
2696 	NTE_AMOUNT,
2697 	NTE_WARNING_FLAG,
2698 	BILL_WITHOUT_DEF_FLAG,
2699 	CAS_FLAG,
2700 	CLASSIFIED_FLAG,
2701 	CLIENT_APPROVE_REQ_FLAG,
2702 	COST_OF_MONEY,
2703 	DCAA_AUDIT_REQ_FLAG,
2704 	COST_SHARE_FLAG,
2705 	OH_RATES_FINAL_FLAG,
2706 	PROGRESS_PAYMENT_FLAG,
2707 	PROGRESS_PAYMENT_LIQ_RATE,
2708 	PROGRESS_PAYMENT_RATE,
2709 	ALTERNATE_LIQUIDATION_RATE,
2710 	PROP_DELIVERY_LOCATION,
2711 	PROP_DUE_DATE_TIME,
2712 	PROP_DUE_TIME,
2713 	PROP_EXPIRE_DATE,
2714 	COPIES_REQUIRED,
2715 	SIC_CODE,
2716 	TECH_DATA_WH_RATE,
2717 	CREATED_BY,
2718 	CREATION_DATE,
2719 	LAST_UPDATED_BY,
2720 	LAST_UPDATE_LOGIN,
2721 	LAST_UPDATE_DATE,
2722 	FINANCIAL_CTRL_VERIFIED_FLAG,
2723 	DEFINITIZED_FLAG,
2724 	COST_OF_SALE_RATE,
2725 	LINE_VALUE_TOTAL,
2726 	UNDEF_LINE_VALUE_TOTAL,
2727 --	END_DATE,
2728 	OWNING_ORGANIZATION_ID,
2729 	DEFAULT_TASK_ID
2730 	)
2731   VALUES(
2732 	l_def_chr_rec.K_HEADER_ID,
2733 	l_def_chr_rec.PROGRAM_ID,
2734  	l_def_chr_rec.PROJECT_ID,
2735 	l_def_chr_rec.BOA_ID,
2736         l_k_number_disp,
2737 	l_def_chr_rec.K_TYPE_CODE,
2738 	l_def_chr_rec.PRIORITY_CODE,
2739 	l_def_chr_rec.PRIME_K_ALIAS,
2740 	l_def_chr_rec.PRIME_K_NUMBER,
2741 	l_def_chr_rec.AUTHORIZE_DATE,
2742 	l_def_chr_rec.AUTHORIZING_REASON,
2743 	l_def_chr_rec.AWARD_CANCEL_DATE,
2744 	l_def_chr_rec.AWARD_DATE,
2745 	l_def_chr_rec.DATE_DEFINITIZED,
2746 	l_def_chr_rec.DATE_ISSUED,
2747 	l_def_chr_rec.DATE_NEGOTIATED,
2748 	l_def_chr_rec.DATE_RECEIVED,
2749 	l_def_chr_rec.DATE_SIGN_BY_CONTRACTOR,
2750 	l_def_chr_rec.DATE_SIGN_BY_CUSTOMER,
2751 	l_def_chr_rec.FAA_APPROVE_DATE,
2752 	l_def_chr_rec.FAA_REJECT_DATE,
2753 	l_def_chr_rec.BOOKED_FLAG,
2754 	l_def_chr_rec.OPEN_FLAG,
2755 	l_def_chr_rec.CFE_FLAG,
2756 	l_def_chr_rec.VAT_CODE,
2757 	l_def_chr_rec.COUNTRY_OF_ORIGIN_CODE,
2758 	l_def_chr_rec.EXPORT_FLAG,
2759 	l_def_chr_rec.HUMAN_SUBJECT_FLAG,
2760 	l_def_chr_rec.CQA_FLAG,
2761 	l_def_chr_rec.INTERIM_RPT_REQ_FLAG,
2762 	l_def_chr_rec.NO_COMPETITION_AUTHORIZE,
2763 	l_def_chr_rec.PENALTY_CLAUSE_FLAG,
2764 	l_def_chr_rec.PRODUCT_LINE_CODE,
2765 	l_def_chr_rec.REPORTING_FLAG,
2766 	l_def_chr_rec.SB_PLAN_REQ_FLAG,
2767 	l_def_chr_rec.SB_REPORT_FLAG,
2768 	l_def_chr_rec.NTE_AMOUNT,
2769 	l_def_chr_rec.NTE_WARNING_FLAG,
2770 	l_def_chr_rec.BILL_WITHOUT_DEF_FLAG,
2771 	l_def_chr_rec.CAS_FLAG,
2772 	l_def_chr_rec.CLASSIFIED_FLAG,
2773 	l_def_chr_rec.CLIENT_APPROVE_REQ_FLAG,
2774 	l_def_chr_rec.COST_OF_MONEY,
2775 	l_def_chr_rec.DCAA_AUDIT_REQ_FLAG,
2776 	l_def_chr_rec.COST_SHARE_FLAG,
2777 	l_def_chr_rec.OH_RATES_FINAL_FLAG,
2778 	l_def_chr_rec.PROGRESS_PAYMENT_FLAG,
2779 	l_def_chr_rec.PROGRESS_PAYMENT_LIQ_RATE,
2780 	l_def_chr_rec.PROGRESS_PAYMENT_RATE,
2781 	l_def_chr_rec.ALTERNATE_LIQUIDATION_RATE,
2782 	l_def_chr_rec.PROP_DELIVERY_LOCATION,
2783 	l_def_chr_rec.PROP_DUE_DATE_TIME,
2784 	l_def_chr_rec.PROP_DUE_TIME,
2785 	l_def_chr_rec.PROP_EXPIRE_DATE,
2786 	l_def_chr_rec.COPIES_REQUIRED,
2787 	l_def_chr_rec.SIC_CODE,
2788 	l_def_chr_rec.TECH_DATA_WH_RATE,
2789 	l_def_chr_rec.CREATED_BY,
2790 	l_def_chr_rec.CREATION_DATE,
2791 	l_def_chr_rec.LAST_UPDATED_BY,
2792 	l_def_chr_rec.LAST_UPDATE_LOGIN,
2793 	l_def_chr_rec.LAST_UPDATE_DATE,
2794 	l_def_chr_rec.FINANCIAL_CTRL_VERIFIED_FLAG,
2795 	l_def_chr_rec.DEFINITIZED_FLAG,
2796 	l_def_chr_rec.COST_OF_SALE_RATE,
2797 	l_def_chr_rec.LINE_VALUE_TOTAL,
2798 	l_def_chr_rec.UNDEF_LINE_VALUE_TOTAL,
2799 --	l_def_chr_rec.END_DATE,
2800 	l_def_chr_rec.OWNING_ORGANIZATION_ID,
2801 	l_def_chr_rec.DEFAULT_TASK_ID);
2802 
2803 -- Set OUT values
2804 
2805   x_chr_rec := l_def_chr_rec;
2806 
2807 
2808   OKE_API.END_ACTIVITY(x_msg_count, x_msg_data);
2809 
2810   EXCEPTION
2811     WHEN OKE_API.G_EXCEPTION_ERROR THEN
2812 
2813       x_return_status := OKE_API.HANDLE_EXCEPTIONS
2814       (
2815 	l_api_name,
2816 	G_PKG_NAME,
2817 	'OKE_API.G_RET_STS_ERROR',
2818 	x_msg_count,
2819 	x_msg_data,
2820 	'_PVT');
2821     WHEN OKE_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2822       x_return_status := OKE_API.HANDLE_EXCEPTIONS
2823       (
2824 	l_api_name,
2825 	G_PKG_NAME,
2826 	'OKE_API.G_RET_STS_UNEXP_ERROR',
2827 	x_msg_count,
2828 	x_msg_data,
2829 	'_PVT');
2830 
2831     WHEN OTHERS THEN
2832       x_return_status := OKE_API.HANDLE_EXCEPTIONS
2833       (
2834 	l_api_name,
2835 	G_PKG_NAME,
2836 	'OTHERS',
2837 	x_msg_count,
2838 	x_msg_data,
2839 	'_PVT');
2840 
2841 END insert_row;
2842 
2843 
2844 
2845 PROCEDURE insert_row(
2846   p_api_version 	IN NUMBER,
2847   p_init_msg_list	IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
2848   x_return_status	OUT NOCOPY VARCHAR2,
2849   x_msg_count		OUT NOCOPY NUMBER,
2850   x_msg_data		OUT NOCOPY VARCHAR2,
2851   p_chr_tbl		IN chr_tbl_type,
2852   x_chr_tbl		OUT NOCOPY chr_tbl_type) IS
2853 
2854   l_api_version 	CONSTANT NUMBER := 1;
2855   l_api_name 		CONSTANT VARCHAR2(30) := 'TBL_insert_row';
2856 
2857   l_return_status	VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
2858   l_overall_status	VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
2859   i 			NUMBER := 0;
2860   l_chr_rec		chr_rec_type;
2861 
2862 BEGIN
2863 
2864   OKE_API.init_msg_list(p_init_msg_list);
2865 
2866   IF (p_chr_tbl.COUNT > 0) THEN
2867     i := p_chr_tbl.FIRST;
2868     LOOP
2869       x_return_status := OKE_API.G_RET_STS_SUCCESS;
2870       l_chr_rec := p_chr_tbl(i);
2871 
2872       insert_row(
2873 	p_api_version	=>p_api_version,
2874         p_init_msg_list	=>p_init_msg_list,
2875      	x_return_status	=>x_return_status,
2876  	x_msg_count	=>x_msg_count,
2877 	x_msg_data	=>x_msg_data,
2878 	p_chr_rec	=>l_chr_rec,
2879 	x_chr_rec	=>x_chr_tbl(i));
2880 
2881     IF x_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
2882       IF l_overall_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
2883 	l_overall_status := x_return_status;
2884       END IF;
2885     END IF;
2886 
2887     EXIT WHEN (i = p_chr_tbl.LAST);
2888     i := p_chr_tbl.NEXT(i);
2889 
2890     END LOOP;
2891 
2892     x_return_status := l_overall_status;
2893 
2894   END IF;
2895 
2896   EXCEPTION
2897     WHEN OKE_API.G_EXCEPTION_ERROR THEN
2898 
2899       x_return_status := OKE_API.HANDLE_EXCEPTIONS
2900       (
2901 	l_api_name,
2902 	G_PKG_NAME,
2903 	'OKE_API.G_RET_STS_ERROR',
2904 	x_msg_count,
2905 	x_msg_data,
2906 	'_PVT');
2907     WHEN OKE_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
2908       x_return_status := OKE_API.HANDLE_EXCEPTIONS
2909       (
2910 	l_api_name,
2911 	G_PKG_NAME,
2912 	'OKE_API.G_RET_STS_UNEXP_ERROR',
2913 	x_msg_count,
2914 	x_msg_data,
2915 	'_PVT');
2916 
2917     WHEN OTHERS THEN
2918       x_return_status := OKE_API.HANDLE_EXCEPTIONS
2919       (
2920 	l_api_name,
2921 	G_PKG_NAME,
2922 	'OTHERS',
2923 	x_msg_count,
2924 	x_msg_data,
2925 	'_PVT');
2926 
2927 END insert_row;
2928 
2929 PROCEDURE update_row(
2930   p_api_version		IN	NUMBER,
2931   p_init_msg_list	IN 	VARCHAR2 DEFAULT OKE_API.G_FALSE,
2932   x_return_status	OUT	NOCOPY VARCHAR2,
2933   x_msg_count		OUT	NOCOPY NUMBER,
2934   x_msg_data		OUT	NOCOPY VARCHAR2,
2935   p_chr_rec		IN	chr_rec_type,
2936   x_chr_rec		OUT	NOCOPY chr_rec_type)IS
2937 
2938   l_api_version 	CONSTANT NUMBER := 1;
2939   l_api_name 		CONSTANT VARCHAR2(30) := 'B_update_row';
2940 
2941   l_return_status	VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
2942   l_chr_rec		chr_rec_type;
2943 
2944   l_def_chr_rec		chr_rec_type;
2945   l_row_nofound		BOOLEAN := TRUE;
2946 
2947   l_k_number_disp       VARCHAR2(120);
2948   l_k_number_disp_old   VARCHAR2(120);
2949 
2950   FUNCTION get_k_number_disp(P_HEADER_ID IN NUMBER) RETURN VARCHAR2 IS
2951   l_k_number VARCHAR2(120);
2952   BEGIN
2953   select k_number_disp into l_k_number
2954   from oke_k_headers
2955   where k_header_id=P_HEADER_ID;
2956 
2957   return l_k_number;
2958   exception
2959   when others then
2960    null;
2961   END get_k_number_disp;
2962 
2963   FUNCTION populate_new_record(
2964     p_chr_rec	IN chr_rec_type,
2965     x_chr_rec	OUT NOCOPY chr_rec_type) RETURN VARCHAR2 IS
2966 
2967     l_chr_rec chr_rec_type;
2968     l_row_notfound BOOLEAN := TRUE;
2969 
2970     l_return_status VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
2971 
2972   BEGIN
2973     x_chr_rec := p_chr_rec;
2974 --  Get current database value
2975     l_chr_rec := get_rec(p_chr_rec, l_row_notfound);
2976 
2977     IF (l_row_notfound) THEN
2978       l_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
2979     END IF;
2980 
2981     IF (x_chr_rec.K_HEADER_ID = OKE_API.G_MISS_NUM) THEN
2982       x_chr_rec.K_HEADER_ID := l_chr_rec.K_HEADER_ID;
2983     END IF;
2984 
2985     IF (x_chr_rec.PROGRAM_ID = OKE_API.G_MISS_NUM) THEN
2986       x_chr_rec.PROGRAM_ID := l_chr_rec.PROGRAM_ID;
2987     END IF;
2988 
2989     IF (x_chr_rec.PROJECT_ID = OKE_API.G_MISS_NUM) THEN
2990       x_chr_rec.PROJECT_ID := l_chr_rec.PROJECT_ID;
2991     END IF;
2992 
2993 
2994     IF (x_chr_rec.BOA_ID = OKE_API.G_MISS_NUM) THEN
2995       x_chr_rec.BOA_ID := l_chr_rec.BOA_ID;
2996     END IF;
2997 
2998     IF (x_chr_rec.K_TYPE_CODE = OKE_API.G_MISS_CHAR) THEN
2999       x_chr_rec.K_TYPE_CODE := l_chr_rec.K_TYPE_CODE;
3000     END IF;
3001 
3002     IF (x_chr_rec.PRIORITY_CODE = OKE_API.G_MISS_CHAR) THEN
3003       x_chr_rec.PRIORITY_CODE := l_chr_rec.PRIORITY_CODE;
3004     END IF;
3005 
3006     IF (x_chr_rec.PRIME_K_ALIAS = OKE_API.G_MISS_CHAR) THEN
3007       x_chr_rec.PRIME_K_ALIAS := l_chr_rec.PRIME_K_ALIAS;
3008     END IF;
3009 
3010     IF (x_chr_rec.AUTHORIZE_DATE = OKE_API.G_MISS_DATE) THEN
3011       x_chr_rec.AUTHORIZE_DATE := l_chr_rec.AUTHORIZE_DATE;
3012     END IF;
3013 
3014     IF (x_chr_rec.AUTHORIZING_REASON = OKE_API.G_MISS_CHAR) THEN
3015       x_chr_rec.AUTHORIZING_REASON := l_chr_rec.AUTHORIZING_REASON;
3016     END IF;
3017 
3018     IF (x_chr_rec.AWARD_CANCEL_DATE = OKE_API.G_MISS_DATE) THEN
3019       x_chr_rec.AWARD_CANCEL_DATE := l_chr_rec.AWARD_CANCEL_DATE;
3020     END IF;
3021 
3022     IF (x_chr_rec.AWARD_DATE = OKE_API.G_MISS_DATE) THEN
3023       x_chr_rec.AWARD_DATE := l_chr_rec.AWARD_DATE;
3024     END IF;
3025 
3026     IF (x_chr_rec.DATE_DEFINITIZED = OKE_API.G_MISS_DATE) THEN
3027       x_chr_rec.DATE_DEFINITIZED := l_chr_rec.DATE_DEFINITIZED ;
3028     END IF;
3029 
3030     IF (x_chr_rec.DATE_ISSUED = OKE_API.G_MISS_DATE) THEN
3031       x_chr_rec.DATE_ISSUED := l_chr_rec.DATE_ISSUED;
3032     END IF;
3033 
3034     IF (x_chr_rec.DATE_NEGOTIATED = OKE_API.G_MISS_DATE) THEN
3035       x_chr_rec.DATE_NEGOTIATED := l_chr_rec.DATE_NEGOTIATED;
3036     END IF;
3037 
3038     IF (x_chr_rec.DATE_RECEIVED = OKE_API.G_MISS_DATE) THEN
3039       x_chr_rec.DATE_RECEIVED := l_chr_rec.DATE_RECEIVED;
3040     END IF;
3041 
3042     IF (x_chr_rec.DATE_SIGN_BY_CONTRACTOR = OKE_API.G_MISS_DATE) THEN
3043       x_chr_rec.DATE_SIGN_BY_CONTRACTOR := l_chr_rec.DATE_SIGN_BY_CONTRACTOR ;
3044     END IF;
3045 
3046     IF (x_chr_rec.FAA_APPROVE_DATE = OKE_API.G_MISS_DATE) THEN
3047       x_chr_rec.FAA_APPROVE_DATE := l_chr_rec.FAA_APPROVE_DATE;
3048     END IF;
3049 
3050     IF (x_chr_rec.FAA_REJECT_DATE = OKE_API.G_MISS_DATE) THEN
3051       x_chr_rec.FAA_REJECT_DATE := l_chr_rec.FAA_REJECT_DATE ;
3052     END IF;
3053 
3054     IF (x_chr_rec.BOOKED_FLAG = OKE_API.G_MISS_CHAR) THEN
3055       x_chr_rec.BOOKED_FLAG := l_chr_rec.BOOKED_FLAG ;
3056     END IF;
3057 
3058     IF (x_chr_rec.OPEN_FLAG = OKE_API.G_MISS_CHAR) THEN
3059       x_chr_rec.OPEN_FLAG := l_chr_rec.OPEN_FLAG ;
3060     END IF;
3061 
3062     IF (x_chr_rec.CFE_FLAG = OKE_API.G_MISS_CHAR) THEN
3063       x_chr_rec.CFE_FLAG := l_chr_rec.CFE_FLAG ;
3064     END IF;
3065 
3066     IF (x_chr_rec.VAT_CODE = OKE_API.G_MISS_CHAR) THEN
3067       x_chr_rec.VAT_CODE := l_chr_rec.VAT_CODE;
3068     END IF;
3069 
3070     IF (x_chr_rec.COUNTRY_OF_ORIGIN_CODE = OKE_API.G_MISS_CHAR) THEN
3071       x_chr_rec.COUNTRY_OF_ORIGIN_CODE := l_chr_rec.COUNTRY_OF_ORIGIN_CODE ;
3072     END IF;
3073 
3074     IF (x_chr_rec.EXPORT_FLAG = OKE_API.G_MISS_CHAR) THEN
3075       x_chr_rec.EXPORT_FLAG := l_chr_rec.EXPORT_FLAG;
3076     END IF;
3077 
3078     IF (x_chr_rec.HUMAN_SUBJECT_FLAG = OKE_API.G_MISS_CHAR) THEN
3079       x_chr_rec.HUMAN_SUBJECT_FLAG := l_chr_rec.HUMAN_SUBJECT_FLAG;
3080     END IF;
3081 
3082     IF (x_chr_rec.CQA_FLAG = OKE_API.G_MISS_CHAR) THEN
3083       x_chr_rec.CQA_FLAG := l_chr_rec.CQA_FLAG;
3084     END IF;
3085 
3086     IF (x_chr_rec.INTERIM_RPT_REQ_FLAG = OKE_API.G_MISS_CHAR) THEN
3087       x_chr_rec.INTERIM_RPT_REQ_FLAG := l_chr_rec.INTERIM_RPT_REQ_FLAG ;
3088     END IF;
3089 
3090     IF (x_chr_rec.NO_COMPETITION_AUTHORIZE = OKE_API.G_MISS_CHAR) THEN
3091       x_chr_rec.NO_COMPETITION_AUTHORIZE := l_chr_rec.NO_COMPETITION_AUTHORIZE ;
3092     END IF;
3093 
3094     IF (x_chr_rec.PENALTY_CLAUSE_FLAG = OKE_API.G_MISS_CHAR) THEN
3095       x_chr_rec.PENALTY_CLAUSE_FLAG := l_chr_rec.PENALTY_CLAUSE_FLAG;
3096     END IF;
3097 
3098     IF (x_chr_rec.PRODUCT_LINE_CODE = OKE_API.G_MISS_CHAR) THEN
3099       x_chr_rec.PRODUCT_LINE_CODE := l_chr_rec.PRODUCT_LINE_CODE ;
3100     END IF;
3101 
3102     IF (x_chr_rec.REPORTING_FLAG = OKE_API.G_MISS_CHAR) THEN
3103       x_chr_rec.REPORTING_FLAG := l_chr_rec.REPORTING_FLAG;
3104     END IF;
3105 
3106     IF (x_chr_rec.SB_PLAN_REQ_FLAG = OKE_API.G_MISS_CHAR) THEN
3107       x_chr_rec.SB_PLAN_REQ_FLAG := l_chr_rec.SB_PLAN_REQ_FLAG;
3108     END IF;
3109 
3110     IF (x_chr_rec.SB_REPORT_FLAG = OKE_API.G_MISS_CHAR) THEN
3111       x_chr_rec.SB_REPORT_FLAG := l_chr_rec.SB_REPORT_FLAG;
3112     END IF;
3113 
3114     IF (x_chr_rec.NTE_AMOUNT = OKE_API.G_MISS_NUM) THEN
3115       x_chr_rec.NTE_AMOUNT := l_chr_rec.NTE_AMOUNT;
3116     END IF;
3117 
3118     IF (x_chr_rec.NTE_WARNING_FLAG = OKE_API.G_MISS_CHAR) THEN
3119       x_chr_rec.NTE_WARNING_FLAG := l_chr_rec.NTE_WARNING_FLAG;
3120     END IF;
3121 
3122     IF (x_chr_rec.BILL_WITHOUT_DEF_FLAG = OKE_API.G_MISS_CHAR) THEN
3123       x_chr_rec.BILL_WITHOUT_DEF_FLAG := l_chr_rec.BILL_WITHOUT_DEF_FLAG;
3124     END IF;
3125 
3126     IF (x_chr_rec.CAS_FLAG = OKE_API.G_MISS_CHAR) THEN
3127       x_chr_rec.CAS_FLAG := l_chr_rec.CAS_FLAG;
3128     END IF;
3129 
3130 
3131     IF (x_chr_rec.CLASSIFIED_FLAG = OKE_API.G_MISS_CHAR) THEN
3132       x_chr_rec.CLASSIFIED_FLAG := l_chr_rec.CLASSIFIED_FLAG;
3133     END IF;
3134 
3135     IF (x_chr_rec.CLIENT_APPROVE_REQ_FLAG = OKE_API.G_MISS_CHAR) THEN
3136       x_chr_rec.CLIENT_APPROVE_REQ_FLAG := l_chr_rec.CLIENT_APPROVE_REQ_FLAG;
3137     END IF;
3138 
3139     IF (x_chr_rec.COST_OF_MONEY = OKE_API.G_MISS_CHAR) THEN
3140       x_chr_rec.COST_OF_MONEY := l_chr_rec.COST_OF_MONEY;
3141     END IF;
3142 
3143     IF (x_chr_rec.DCAA_AUDIT_REQ_FLAG = OKE_API.G_MISS_CHAR) THEN
3144       x_chr_rec.DCAA_AUDIT_REQ_FLAG := l_chr_rec.DCAA_AUDIT_REQ_FLAG;
3145     END IF;
3146 
3147     IF (x_chr_rec.COST_SHARE_FLAG = OKE_API.G_MISS_CHAR) THEN
3148       x_chr_rec.COST_SHARE_FLAG := l_chr_rec.COST_SHARE_FLAG;
3149     END IF;
3150 
3151     IF (x_chr_rec.OH_RATES_FINAL_FLAG = OKE_API.G_MISS_CHAR) THEN
3152       x_chr_rec.OH_RATES_FINAL_FLAG := l_chr_rec.OH_RATES_FINAL_FLAG;
3153     END IF;
3154 
3155     IF (x_chr_rec.PROGRESS_PAYMENT_FLAG = OKE_API.G_MISS_CHAR) THEN
3156       x_chr_rec.PROGRESS_PAYMENT_FLAG := l_chr_rec.PROGRESS_PAYMENT_FLAG;
3157     END IF;
3158 
3159     IF (x_chr_rec.PROGRESS_PAYMENT_LIQ_RATE = OKE_API.G_MISS_NUM) THEN
3160       x_chr_rec.PROGRESS_PAYMENT_LIQ_RATE := l_chr_rec.PROGRESS_PAYMENT_LIQ_RATE;
3161     END IF;
3162 
3163     IF (x_chr_rec.PROGRESS_PAYMENT_RATE = OKE_API.G_MISS_NUM) THEN
3164       x_chr_rec.PROGRESS_PAYMENT_RATE := l_chr_rec.PROGRESS_PAYMENT_RATE;
3165     END IF;
3166 
3167     IF (x_chr_rec.ALTERNATE_LIQUIDATION_RATE = OKE_API.G_MISS_NUM) THEN
3168       x_chr_rec.ALTERNATE_LIQUIDATION_RATE := l_chr_rec.ALTERNATE_LIQUIDATION_RATE;
3169     END IF;
3170 
3171     IF (x_chr_rec.PROP_DELIVERY_LOCATION = OKE_API.G_MISS_CHAR) THEN
3172       x_chr_rec.PROP_DELIVERY_LOCATION := l_chr_rec.PROP_DELIVERY_LOCATION;
3173     END IF;
3174 
3175     IF (x_chr_rec.PROP_DUE_DATE_TIME = OKE_API.G_MISS_DATE) THEN
3176       x_chr_rec.PROP_DUE_DATE_TIME := l_chr_rec.PROP_DUE_DATE_TIME;
3177     END IF;
3178 
3179     IF (x_chr_rec.PROP_DUE_TIME = OKE_API.G_MISS_CHAR) THEN
3180       x_chr_rec.PROP_DUE_TIME := l_chr_rec.PROP_DUE_TIME;
3181     END IF;
3182 
3183 
3184     IF (x_chr_rec.PROP_EXPIRE_DATE = OKE_API.G_MISS_DATE) THEN
3185       x_chr_rec.PROP_EXPIRE_DATE := l_chr_rec.PROP_EXPIRE_DATE;
3186     END IF;
3187 
3188     IF (x_chr_rec.COPIES_REQUIRED = OKE_API.G_MISS_NUM) THEN
3189       x_chr_rec.COPIES_REQUIRED := l_chr_rec.COPIES_REQUIRED;
3190     END IF;
3191 
3192     IF (x_chr_rec.SIC_CODE = OKE_API.G_MISS_CHAR) THEN
3193       x_chr_rec.SIC_CODE := l_chr_rec.SIC_CODE;
3194     END IF;
3195 
3196     IF (x_chr_rec.TECH_DATA_WH_RATE = OKE_API.G_MISS_NUM) THEN
3197       x_chr_rec.TECH_DATA_WH_RATE := l_chr_rec.TECH_DATA_WH_RATE;
3198     END IF;
3199 
3200     IF (x_chr_rec.LAST_UPDATE_LOGIN = OKE_API.G_MISS_NUM) THEN
3201       x_chr_rec.LAST_UPDATE_LOGIN := l_chr_rec.LAST_UPDATE_LOGIN;
3202     END IF;
3203 
3204     IF (x_chr_rec.COST_OF_SALE_RATE = OKE_API.G_MISS_NUM) THEN
3205       x_chr_rec.COST_OF_SALE_RATE := l_chr_rec.COST_OF_SALE_RATE;
3206     END IF;
3207 
3208     IF (x_chr_rec.LINE_VALUE_TOTAL = OKE_API.G_MISS_NUM) THEN
3209       x_chr_rec.LINE_VALUE_TOTAL := l_chr_rec.LINE_VALUE_TOTAL;
3210     END IF;
3211 
3212     IF (x_chr_rec.UNDEF_LINE_VALUE_TOTAL = OKE_API.G_MISS_NUM) THEN
3213       x_chr_rec.UNDEF_LINE_VALUE_TOTAL := l_chr_rec.UNDEF_LINE_VALUE_TOTAL;
3214     END IF;
3215 
3216 --    IF (x_chr_rec.END_DATE = OKE_API.G_MISS_DATE) THEN
3217 --      x_chr_rec.END_DATE := l_chr_rec.END_DATE;
3218 --    END IF;
3219 
3220     IF (x_chr_rec.OWNING_ORGANIZATION_ID = OKE_API.G_MISS_NUM) THEN
3221       x_chr_rec.OWNING_ORGANIZATION_ID := l_chr_rec.OWNING_ORGANIZATION_ID;
3222     END IF;
3223 
3224     IF (x_chr_rec.FINANCIAL_CTRL_VERIFIED_FLAG = OKE_API.G_MISS_CHAR) THEN
3225       x_chr_rec.FINANCIAL_CTRL_VERIFIED_FLAG := l_chr_rec.FINANCIAL_CTRL_VERIFIED_FLAG;
3226     END IF;
3227 
3228     IF (x_chr_rec.DEFINITIZED_FLAG = OKE_API.G_MISS_CHAR) THEN
3229       x_chr_rec.DEFINITIZED_FLAG := l_chr_rec.DEFINITIZED_FLAG;
3230     END IF;
3231 
3232     IF (x_chr_rec.DEFAULT_TASK_ID = OKE_API.G_MISS_NUM) THEN
3233       x_chr_rec.DEFAULT_TASK_ID := l_chr_rec.DEFAULT_TASK_ID;
3234     END IF;
3235 
3236   RETURN(l_return_status);
3237   END populate_new_record;
3238 
3239   FUNCTION fill_who_column(
3240   		p_chr_rec IN chr_rec_type) RETURN chr_rec_type IS
3241     l_chr_rec chr_rec_type := p_chr_rec;
3242   BEGIN
3243 
3244     l_chr_rec.LAST_UPDATE_DATE := SYSDATE;
3245     l_chr_rec.LAST_UPDATED_BY := FND_GLOBAL.USER_ID;
3246     l_chr_rec.LAST_UPDATE_LOGIN := FND_GLOBAL.LOGIN_ID;
3247 
3248     RETURN(l_chr_rec);
3249 
3250   END fill_who_column;
3251 
3252 
3253   FUNCTION set_attributes(
3254 
3255     p_chr_rec IN chr_rec_type,
3256     x_chr_rec OUT NOCOPY chr_rec_type) RETURN VARCHAR2 IS
3257 
3258     l_return_status	VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
3259 
3260   BEGIN
3261 
3262     x_chr_rec := p_chr_rec;
3263 
3264     x_chr_rec.BOOKED_FLAG := UPPER(x_chr_rec.BOOKED_FLAG);
3265     x_chr_rec.OPEN_FLAG := UPPER(x_chr_rec.OPEN_FLAG);
3266     x_chr_rec.CFE_FLAG := UPPER(x_chr_rec.CFE_FLAG);
3267     x_chr_rec.EXPORT_FLAG := UPPER(x_chr_rec.EXPORT_FLAG);
3268     x_chr_rec.HUMAN_SUBJECT_FLAG := UPPER(x_chr_rec.HUMAN_SUBJECT_FLAG);
3269     x_chr_rec.CQA_FLAG := UPPER(x_chr_rec.CQA_FLAG);
3270     x_chr_rec.INTERIM_RPT_REQ_FLAG := UPPER(x_chr_rec.INTERIM_RPT_REQ_FLAG);
3271     x_chr_rec.PENALTY_CLAUSE_FLAG := UPPER(x_chr_rec.PENALTY_CLAUSE_FLAG);
3272     x_chr_rec.REPORTING_FLAG := UPPER(x_chr_rec.REPORTING_FLAG);
3273     x_chr_rec.NTE_WARNING_FLAG := UPPER(x_chr_rec.NTE_WARNING_FLAG);
3274     x_chr_rec.BILL_WITHOUT_DEF_FLAG := UPPER(x_chr_rec.BILL_WITHOUT_DEF_FLAG);
3275     x_chr_rec.CAS_FLAG := UPPER(x_chr_rec.CAS_FLAG);
3276     x_chr_rec.CLASSIFIED_FLAG := UPPER(x_chr_rec.CLASSIFIED_FLAG);
3277     x_chr_rec.CLIENT_APPROVE_REQ_FLAG := UPPER(x_chr_rec.CLIENT_APPROVE_REQ_FLAG);
3278     x_chr_rec.DCAA_AUDIT_REQ_FLAG := UPPER(x_chr_rec.DCAA_AUDIT_REQ_FLAG);
3279     x_chr_rec.COST_SHARE_FLAG := UPPER(x_chr_rec.COST_SHARE_FLAG);
3280     x_chr_rec.OH_RATES_FINAL_FLAG := UPPER(x_chr_rec.OH_RATES_FINAL_FLAG);
3281     x_chr_rec.PROGRESS_PAYMENT_FLAG := UPPER(x_chr_rec.PROGRESS_PAYMENT_FLAG);
3282     x_chr_rec.FINANCIAL_CTRL_VERIFIED_FLAG := UPPER(x_chr_rec.FINANCIAL_CTRL_VERIFIED_FLAG);
3283     x_chr_rec.DEFINITIZED_FLAG := UPPER(x_chr_rec.DEFINITIZED_FLAG);
3284 
3285     RETURN(l_return_status);
3286 
3287   END set_attributes;
3288 
3289 BEGIN
3290 
3291   l_return_status := OKE_API.START_ACTIVITY(
3292 			l_api_name,
3293 			p_init_msg_list,
3294 			'_PVT',
3295 			x_return_status);
3296 
3297   IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
3298 
3299     RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3300 
3301   ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
3302 
3303     RAISE OKE_API.G_EXCEPTION_ERROR;
3304 
3305   END IF;
3306 
3307   l_return_status := set_attributes(
3308 			p_chr_rec,
3309 			l_chr_rec);
3310 
3311   IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
3312 
3313     RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3314 
3315   ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
3316 
3317     RAISE OKE_API.G_EXCEPTION_ERROR;
3318 
3319   END IF;
3320 
3321 
3322   l_return_status := populate_new_record(
3323 			l_chr_rec,
3324 			l_def_chr_rec);
3325 
3326 
3327   IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
3328 
3329     RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3330 
3331   ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
3332 
3333     RAISE OKE_API.G_EXCEPTION_ERROR;
3334 
3335   END IF;
3336 
3337 
3338   l_def_chr_rec := fill_who_column(l_def_chr_rec);
3339 
3340 -- Validate all non_missing attributes (Item level validation)
3341 
3342   l_return_status := validate_attributes(l_def_chr_rec);
3343 
3344 
3345   IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
3346 
3347     RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3348 
3349   ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
3350 
3351     RAISE OKE_API.G_EXCEPTION_ERROR;
3352 
3353    END IF;
3354 
3355   l_return_status := validate_record(l_def_chr_rec);
3356 
3357 
3358   IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
3359 
3360     RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3361 
3362   ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
3363 
3364     RAISE OKE_API.G_EXCEPTION_ERROR;
3365 
3366   END IF;
3367 
3368   l_k_number_disp_old := get_k_number_disp( l_def_chr_rec.K_HEADER_ID);
3369   l_k_number_disp := K_Number_Disp( l_def_chr_rec.K_HEADER_ID
3370                                   , l_def_chr_rec.BOA_ID );
3371 
3372   UPDATE OKE_K_HEADERS
3373   SET	PROGRAM_ID		= l_def_chr_rec.PROGRAM_ID,
3374  	PROJECT_ID		= l_def_chr_rec.PROJECT_ID,
3375 	BOA_ID			= l_def_chr_rec.BOA_ID,
3376         K_NUMBER_DISP           = l_k_number_disp,
3377 	K_TYPE_CODE		= l_def_chr_rec.K_TYPE_CODE,
3378 	PRIORITY_CODE		= l_def_chr_rec.PRIORITY_CODE,
3379 	PRIME_K_ALIAS		= l_def_chr_rec.PRIME_K_ALIAS,
3380 	PRIME_K_NUMBER		= l_def_chr_rec.PRIME_K_NUMBER,
3381 	AUTHORIZE_DATE		= l_def_chr_rec.AUTHORIZE_DATE,
3382 	AUTHORIZING_REASON	= l_def_chr_rec.AUTHORIZING_REASON,
3383 	AWARD_CANCEL_DATE	= l_def_chr_rec.AWARD_CANCEL_DATE,
3384 	AWARD_DATE		= l_def_chr_rec.AWARD_DATE,
3385 	DATE_DEFINITIZED	= l_def_chr_rec.DATE_DEFINITIZED,
3386 	DATE_ISSUED		= l_def_chr_rec.DATE_ISSUED,
3387 	DATE_NEGOTIATED		= l_def_chr_rec.DATE_NEGOTIATED,
3388 	DATE_RECEIVED		= l_def_chr_rec.DATE_RECEIVED,
3389 	DATE_SIGN_BY_CONTRACTOR	= l_def_chr_rec.DATE_SIGN_BY_CONTRACTOR,
3390 	DATE_SIGN_BY_CUSTOMER	= l_def_chr_rec.DATE_SIGN_BY_CUSTOMER,
3391 	FAA_APPROVE_DATE	= l_def_chr_rec.FAA_APPROVE_DATE,
3392 	FAA_REJECT_DATE		= l_def_chr_rec.FAA_REJECT_DATE,
3393 	BOOKED_FLAG		= l_def_chr_rec.BOOKED_FLAG,
3394 	OPEN_FLAG		= l_def_chr_rec.OPEN_FLAG,
3395 	CFE_FLAG		= l_def_chr_rec.CFE_FLAG,
3396 	VAT_CODE		= l_def_chr_rec.VAT_CODE,
3397 	COUNTRY_OF_ORIGIN_CODE	= l_def_chr_rec.COUNTRY_OF_ORIGIN_CODE,
3398 	EXPORT_FLAG		= l_def_chr_rec.EXPORT_FLAG,
3399 	HUMAN_SUBJECT_FLAG	= l_def_chr_rec.HUMAN_SUBJECT_FLAG,
3400 	CQA_FLAG		= l_def_chr_rec.CQA_FLAG,
3401 	INTERIM_RPT_REQ_FLAG	= l_def_chr_rec.INTERIM_RPT_REQ_FLAG,
3402 	NO_COMPETITION_AUTHORIZE = l_def_chr_rec.NO_COMPETITION_AUTHORIZE,
3403 	PENALTY_CLAUSE_FLAG	= l_def_chr_rec.PENALTY_CLAUSE_FLAG,
3404 	PRODUCT_LINE_CODE	= l_def_chr_rec.PRODUCT_LINE_CODE,
3405 	REPORTING_FLAG		= l_def_chr_rec.REPORTING_FLAG,
3406 	SB_PLAN_REQ_FLAG	= l_def_chr_rec.SB_PLAN_REQ_FLAG,
3407 	SB_REPORT_FLAG		= l_def_chr_rec.SB_REPORT_FLAG,
3408 	NTE_AMOUNT		= l_def_chr_rec.NTE_AMOUNT,
3409 	NTE_WARNING_FLAG	= l_def_chr_rec.NTE_WARNING_FLAG,
3410 	BILL_WITHOUT_DEF_FLAG	= l_def_chr_rec.BILL_WITHOUT_DEF_FLAG,
3411 	CAS_FLAG		= l_def_chr_rec.CAS_FLAG,
3412 	CLASSIFIED_FLAG		= l_def_chr_rec.CLASSIFIED_FLAG,
3413 	CLIENT_APPROVE_REQ_FLAG	= l_def_chr_rec.CLIENT_APPROVE_REQ_FLAG,
3414 	COST_OF_MONEY		= l_def_chr_rec.COST_OF_MONEY,
3415 	DCAA_AUDIT_REQ_FLAG	= l_def_chr_rec.DCAA_AUDIT_REQ_FLAG,
3416 	COST_SHARE_FLAG		= l_def_chr_rec.COST_SHARE_FLAG,
3417 	OH_RATES_FINAL_FLAG	= l_def_chr_rec.OH_RATES_FINAL_FLAG,
3418         PROGRESS_PAYMENT_FLAG   = l_def_chr_rec.PROGRESS_PAYMENT_FLAG,
3419 	PROGRESS_PAYMENT_LIQ_RATE = l_def_chr_rec.PROGRESS_PAYMENT_LIQ_RATE,
3420         PROGRESS_PAYMENT_RATE   = l_def_chr_rec.PROGRESS_PAYMENT_RATE,
3421 	ALTERNATE_LIQUIDATION_RATE = l_def_chr_rec.ALTERNATE_LIQUIDATION_RATE,
3422 	PROP_DELIVERY_LOCATION	= l_def_chr_rec.PROP_DELIVERY_LOCATION,
3423 	PROP_DUE_DATE_TIME		= l_def_chr_rec.PROP_DUE_DATE_TIME,
3424 	PROP_DUE_TIME		= l_def_chr_rec.PROP_DUE_TIME,
3425 	PROP_EXPIRE_DATE		= l_def_chr_rec.PROP_EXPIRE_DATE,
3426 	COPIES_REQUIRED	= l_def_chr_rec.COPIES_REQUIRED,
3427 	SIC_CODE		= l_def_chr_rec.SIC_CODE,
3428 	TECH_DATA_WH_RATE	= l_def_chr_rec.TECH_DATA_WH_RATE,
3429 	FINANCIAL_CTRL_VERIFIED_FLAG = l_def_chr_rec.FINANCIAL_CTRL_VERIFIED_FLAG,
3430 	DEFINITIZED_FLAG		= l_def_chr_rec.DEFINITIZED_FLAG,
3431 	COST_OF_SALE_RATE	= l_def_chr_rec.COST_OF_SALE_RATE,
3432 	LINE_VALUE_TOTAL	= l_def_chr_rec.LINE_VALUE_TOTAL,
3433 	UNDEF_LINE_VALUE_TOTAL  = l_def_chr_rec.UNDEF_LINE_VALUE_TOTAL,
3434 --	END_DATE		= l_def_chr_rec.END_DATE,
3435 	OWNING_ORGANIZATION_ID  = l_def_chr_rec.OWNING_ORGANIZATION_ID,
3436 	DEFAULT_TASK_ID		= l_def_chr_rec.DEFAULT_TASK_ID
3437 
3438   WHERE K_HEADER_ID = l_def_chr_rec.K_HEADER_ID;
3439 
3440   x_chr_rec := l_def_chr_rec;
3441 
3442   -- bug 7115155
3443   IF ( l_k_number_disp<>l_k_number_disp_old
3444         and
3445        IS_BOA(x_chr_rec.k_type_code)
3446      )
3447   THEN
3448    update_do(x_chr_rec.k_header_id);
3449   END IF;
3450 
3451 
3452   OKE_API.END_ACTIVITY(x_msg_count, x_msg_data);
3453 
3454   EXCEPTION
3455     WHEN OKE_API.G_EXCEPTION_ERROR THEN
3456 
3457       x_return_status := OKE_API.HANDLE_EXCEPTIONS
3458       (
3459 	l_api_name,
3460 	G_PKG_NAME,
3461 	'OKE_API.G_RET_STS_ERROR',
3462 	x_msg_count,
3463 	x_msg_data,
3464 	'_PVT');
3465     WHEN OKE_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3466       x_return_status := OKE_API.HANDLE_EXCEPTIONS
3467       (
3468 	l_api_name,
3469 	G_PKG_NAME,
3470 	'OKE_API.G_RET_STS_UNEXP_ERROR',
3471 	x_msg_count,
3472 	x_msg_data,
3473 	'_PVT');
3474 
3475     WHEN OTHERS THEN
3476       x_return_status := OKE_API.HANDLE_EXCEPTIONS
3477       (
3478 	l_api_name,
3479 	G_PKG_NAME,
3480 	'OTHERS',
3481 	x_msg_count,
3482 	x_msg_data,
3483 	'_PVT');
3484 
3485 END update_row;
3486 
3487 PROCEDURE change_version IS
3488 BEGIN
3489   null;
3490 END;
3491 
3492 PROCEDURE api_copy IS
3493 BEGIN
3494   null;
3495 END;
3496 
3497 PROCEDURE update_row(
3498   p_api_version		IN	NUMBER,
3499   p_init_msg_list	IN 	VARCHAR2 DEFAULT OKE_API.G_FALSE,
3500   x_return_status	OUT	NOCOPY VARCHAR2,
3501   x_msg_count		OUT	NOCOPY NUMBER,
3502   x_msg_data		OUT	NOCOPY VARCHAR2,
3503   p_chr_tbl		IN	chr_tbl_type,
3504   x_chr_tbl		OUT	NOCOPY chr_tbl_type)IS
3505 
3506   l_api_version 	CONSTANT NUMBER := 1;
3507   l_api_name 		CONSTANT VARCHAR2(30) := 'TBL_update_row';
3508 
3509   l_return_status	VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
3510   l_overall_status	VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
3511   i 			NUMBER      := 0;
3512 
3513 BEGIN
3514   IF (p_chr_tbl.COUNT > 0) THEN
3515     i := p_chr_tbl.FIRST;
3516     LOOP
3517 
3518       update_row(
3519         p_api_version	=>p_api_version,
3520         p_init_msg_list =>OKE_API.G_FALSE,
3521         x_return_status =>x_return_status,
3522         x_msg_count	=>x_msg_count,
3523         x_msg_data	=>x_msg_data,
3524         p_chr_rec	=>p_chr_tbl(i),
3525         x_chr_rec	=>x_chr_tbl(i));
3526 
3527       IF x_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
3528         IF l_overall_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
3529 	  l_overall_status := x_return_status;
3530         END IF;
3531       END IF;
3532 
3533     EXIT WHEN (i = p_chr_tbl.LAST);
3534     i := p_chr_tbl.NEXT(i);
3535 
3536     END LOOP;
3537 
3538     x_return_status := l_overall_status;
3539 
3540   END IF;
3541 
3542 EXCEPTION
3543 
3544     WHEN OKE_API.G_EXCEPTION_ERROR THEN
3545 
3546       x_return_status := OKE_API.HANDLE_EXCEPTIONS
3547       (
3548 	l_api_name,
3549 	G_PKG_NAME,
3550 	'OKE_API.G_RET_STS_ERROR',
3551 	x_msg_count,
3552 	x_msg_data,
3553 	'_PVT');
3554     WHEN OKE_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3555       x_return_status := OKE_API.HANDLE_EXCEPTIONS
3556       (
3557 	l_api_name,
3558 	G_PKG_NAME,
3559 	'OKE_API.G_RET_STS_UNEXP_ERROR',
3560 	x_msg_count,
3561 	x_msg_data,
3562 	'_PVT');
3563 
3564     WHEN OTHERS THEN
3565       x_return_status := OKE_API.HANDLE_EXCEPTIONS
3566       (
3567 	l_api_name,
3568 	G_PKG_NAME,
3569 	'OTHERS',
3570 	x_msg_count,
3571 	x_msg_data,
3572 	'_PVT');
3573 
3574  END update_row;
3575 
3576 PROCEDURE delete_row(
3577 
3578   p_api_version		IN	NUMBER,
3579   p_init_msg_list	IN 	VARCHAR2 DEFAULT OKE_API.G_FALSE,
3580   x_return_status	OUT	NOCOPY VARCHAR2,
3581   x_msg_count		OUT	NOCOPY NUMBER,
3582   x_msg_data		OUT	NOCOPY VARCHAR2,
3583   p_chr_rec		IN	chr_rec_type)IS
3584 
3585   l_api_version 	CONSTANT NUMBER := 1;
3586   l_api_name 		CONSTANT VARCHAR2(30) := 'B_delete_row';
3587 
3588   l_return_status	VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
3589   l_chr_rec		chr_rec_type := p_chr_rec;
3590   l_row_notfound	BOOLEAN := TRUE;
3591 
3592 BEGIN
3593 
3594   l_return_status := OKE_API.START_ACTIVITY(
3595 			l_api_name,
3596 			p_init_msg_list,
3597 			'_PVT',
3598 			x_return_status);
3599 
3600   IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
3601 
3602     RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3603 
3604   ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
3605 
3606     RAISE OKE_API.G_EXCEPTION_ERROR;
3607 
3608   END IF;
3609 
3610   DELETE FROM OKE_K_HEADERS
3611   WHERE K_HEADER_ID = l_chr_rec.K_HEADER_ID;
3612 
3613   OKE_API.END_ACTIVITY(x_msg_count, x_msg_data);
3614 
3615   EXCEPTION
3616     WHEN OKE_API.G_EXCEPTION_ERROR THEN
3617 
3618       x_return_status := OKE_API.HANDLE_EXCEPTIONS
3619       (
3620 	l_api_name,
3621 	G_PKG_NAME,
3622 	'OKE_API.G_RET_STS_ERROR',
3623 	x_msg_count,
3624 	x_msg_data,
3625 	'_PVT');
3626     WHEN OKE_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3627       x_return_status := OKE_API.HANDLE_EXCEPTIONS
3628       (
3629 	l_api_name,
3630 	G_PKG_NAME,
3631 	'OKE_API.G_RET_STS_UNEXP_ERROR',
3632 	x_msg_count,
3633 	x_msg_data,
3634 	'_PVT');
3635 
3636     WHEN OTHERS THEN
3637       x_return_status := OKE_API.HANDLE_EXCEPTIONS
3638       (
3639 	l_api_name,
3640 	G_PKG_NAME,
3641 	'OTHERS',
3642 	x_msg_count,
3643 	x_msg_data,
3644 	'_PVT');
3645 
3646 END delete_row;
3647 
3648 PROCEDURE delete_row(
3649   p_api_version		IN	NUMBER,
3650   p_init_msg_list	IN 	VARCHAR2 DEFAULT OKE_API.G_FALSE,
3651   x_return_status	OUT	NOCOPY VARCHAR2,
3652   x_msg_count		OUT	NOCOPY NUMBER,
3653   x_msg_data		OUT	NOCOPY VARCHAR2,
3654   p_chr_tbl		IN	chr_tbl_type)IS
3655 
3656   l_api_version 	CONSTANT NUMBER := 1;
3657   l_api_name 		CONSTANT VARCHAR2(30) := 'TBL_delete_row';
3658 
3659   l_return_status	VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
3660   l_overall_status	VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
3661   i 			NUMBER      := 0;
3662   l_dummy_val		NUMBER;
3663   CURSOR l_csr IS
3664     SELECT COUNT(1)
3665     FROM OKE_K_HEADERS
3666     WHERE OKE_K_HEADERS.K_HEADER_ID = p_chr_tbl(i).K_HEADER_ID;
3667 
3668 BEGIN
3669 
3670   OKE_API.init_msg_list(p_init_msg_list);
3671 
3672   IF (p_chr_tbl.COUNT > 0) THEN
3673     i := p_chr_tbl.FIRST;
3674     LOOP
3675       -- Check whether detail record exists
3676       OPEN l_csr;
3677       FETCH l_csr INTO l_dummy_val;
3678       CLOSE l_csr;
3679 
3680       IF (l_dummy_val = 0) THEN
3681 
3682         delete_row(
3683         p_api_version	=>p_api_version,
3684         p_init_msg_list =>OKE_API.G_FALSE,
3685         x_return_status =>x_return_status,
3686         x_msg_count	=>x_msg_count,
3687         x_msg_data	=>x_msg_data,
3688         p_chr_rec	=>p_chr_tbl(i));
3689 
3690         IF x_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
3691           IF l_overall_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
3692 	    l_overall_status := x_return_status;
3693           END IF;
3694         END IF;
3695 
3696       ELSE
3697 	OKE_API.SET_MESSAGE(
3698           p_app_name	=>g_app_name,
3699           p_msg_name	=>G_CHILD_RECORD_EXISTS);
3700         x_return_status := OKE_API.G_RET_STS_ERROR;
3701 
3702         IF l_overall_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
3703 	  l_overall_status := x_return_status;
3704         END IF;
3705 
3706       END IF;
3707 
3708     EXIT WHEN(i = p_chr_tbl.LAST);
3709     i := p_chr_tbl.NEXT(i);
3710 
3711     END LOOP;
3712 
3713     x_return_status := l_overall_status;
3714 
3715   END IF;
3716 
3717   EXCEPTION
3718     WHEN OKE_API.G_EXCEPTION_ERROR THEN
3719 
3720       x_return_status := OKE_API.HANDLE_EXCEPTIONS
3721       (
3722 	l_api_name,
3723 	G_PKG_NAME,
3724 	'OKE_API.G_RET_STS_ERROR',
3725 	x_msg_count,
3726 	x_msg_data,
3727 	'_PVT');
3728     WHEN OKE_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3729       x_return_status := OKE_API.HANDLE_EXCEPTIONS
3730       (
3731 	l_api_name,
3732 	G_PKG_NAME,
3733 	'OKE_API.G_RET_STS_UNEXP_ERROR',
3734 	x_msg_count,
3735 	x_msg_data,
3736 	'_PVT');
3737 
3738     WHEN OTHERS THEN
3739       x_return_status := OKE_API.HANDLE_EXCEPTIONS
3740       (
3741 	l_api_name,
3742 	G_PKG_NAME,
3743 	'OTHERS',
3744 	x_msg_count,
3745 	x_msg_data,
3746 	'_PVT');
3747 
3748 END delete_row;
3749 
3750 PROCEDURE validate_row(
3751   p_api_version		IN	NUMBER,
3752   p_init_msg_list	IN 	VARCHAR2 DEFAULT OKE_API.G_FALSE,
3753   x_return_status	OUT	NOCOPY VARCHAR2,
3754   x_msg_count		OUT	NOCOPY NUMBER,
3755   x_msg_data		OUT	NOCOPY VARCHAR2,
3756   p_chr_rec		IN	chr_rec_type)IS
3757 
3758   l_api_version 	CONSTANT NUMBER := 1;
3759   l_api_name 		CONSTANT VARCHAR2(30) := 'B_validate_row';
3760 
3761   l_return_status	VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
3762   l_chr_rec		chr_rec_type := p_chr_rec;
3763   l_row_notfound	BOOLEAN := TRUE;
3764 
3765 BEGIN
3766 
3767   l_return_status := OKE_API.START_ACTIVITY(l_api_name,
3768 			G_PKG_NAME,
3769 			p_init_msg_list,
3770 			l_api_version,
3771 			p_api_version,
3772 			'_PVT',
3773 			x_return_status);
3774 
3775   IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
3776 
3777     RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3778 
3779   ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
3780 
3781     RAISE OKE_API.G_EXCEPTION_ERROR;
3782 
3783   END IF;
3784 
3785   l_return_status := validate_attributes(l_chr_rec);
3786 
3787   IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
3788 
3789     RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3790 
3791   ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
3792 
3793     RAISE OKE_API.G_EXCEPTION_ERROR;
3794 
3795   END IF;
3796 
3797   l_return_status := validate_record(l_chr_rec);
3798 
3799   IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
3800 
3801     RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3802 
3803   ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
3804 
3805     RAISE OKE_API.G_EXCEPTION_ERROR;
3806 
3807   END IF;
3808 
3809   OKE_API.END_ACTIVITY(x_msg_count, x_msg_data);
3810 
3811   EXCEPTION
3812     WHEN OKE_API.G_EXCEPTION_ERROR THEN
3813 
3814       x_return_status := OKE_API.HANDLE_EXCEPTIONS
3815       (
3816 	l_api_name,
3817 	G_PKG_NAME,
3818 	'OKE_API.G_RET_STS_ERROR',
3819 	x_msg_count,
3820 	x_msg_data,
3821 	'_PVT');
3822     WHEN OKE_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3823       x_return_status := OKE_API.HANDLE_EXCEPTIONS
3824       (
3825 	l_api_name,
3826 	G_PKG_NAME,
3827 	'OKE_API.G_RET_STS_UNEXP_ERROR',
3828 	x_msg_count,
3829 	x_msg_data,
3830 	'_PVT');
3831 
3832     WHEN OTHERS THEN
3833       x_return_status := OKE_API.HANDLE_EXCEPTIONS
3834       (
3835 	l_api_name,
3836 	G_PKG_NAME,
3837 	'OTHERS',
3838 	x_msg_count,
3839 	x_msg_data,
3840 	'_PVT');
3841 
3842 END validate_row;
3843 
3844 
3845 PROCEDURE validate_row(
3846   p_api_version		IN	NUMBER,
3847   p_init_msg_list	IN 	VARCHAR2 DEFAULT OKE_API.G_FALSE,
3848   x_return_status	OUT	NOCOPY VARCHAR2,
3849   x_msg_count		OUT	NOCOPY NUMBER,
3850   x_msg_data		OUT	NOCOPY VARCHAR2,
3851   p_chr_tbl		IN	chr_tbl_type)IS
3852 
3853   l_api_version 	CONSTANT NUMBER := 1;
3854   l_api_name 		CONSTANT VARCHAR2(30) := 'TBL_validate_row';
3855 
3856   l_return_status	VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
3857   l_overall_status	VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
3858   i 			NUMBER      := 0;
3859 
3860 
3861 BEGIN
3862 
3863   OKE_API.init_msg_list(p_init_msg_list);
3864 
3865   IF (p_chr_tbl.COUNT > 0) THEN
3866     i := p_chr_tbl.FIRST;
3867     LOOP
3868       validate_row(
3869         p_api_version	=>p_api_version,
3870         p_init_msg_list =>OKE_API.G_FALSE,
3871         x_return_status =>x_return_status,
3872         x_msg_count	=>x_msg_count,
3873         x_msg_data	=>x_msg_data,
3874         p_chr_rec	=>p_chr_tbl(i));
3875       IF x_return_status <> OKE_API.G_RET_STS_SUCCESS THEN
3876         IF l_overall_status <> OKE_API.G_RET_STS_UNEXP_ERROR THEN
3877 	  l_overall_status := x_return_status;
3878         END IF;
3879       END IF;
3880 
3881     EXIT WHEN(i = p_chr_tbl.LAST);
3882     i := p_chr_tbl.NEXT(i);
3883 
3884     END LOOP;
3885 
3886     x_return_status := l_overall_status;
3887 
3888   END IF;
3889 
3890   EXCEPTION
3891     WHEN OKE_API.G_EXCEPTION_ERROR THEN
3892 
3893       x_return_status := OKE_API.HANDLE_EXCEPTIONS
3894       (
3895 	l_api_name,
3896 	G_PKG_NAME,
3897 	'OKE_API.G_RET_STS_ERROR',
3898 	x_msg_count,
3899 	x_msg_data,
3900 	'_PVT');
3901     WHEN OKE_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
3902       x_return_status := OKE_API.HANDLE_EXCEPTIONS
3903       (
3904 	l_api_name,
3905 	G_PKG_NAME,
3906 	'OKE_API.G_RET_STS_UNEXP_ERROR',
3907 	x_msg_count,
3908 	x_msg_data,
3909 	'_PVT');
3910 
3911     WHEN OTHERS THEN
3912       x_return_status := OKE_API.HANDLE_EXCEPTIONS
3913       (
3914 	l_api_name,
3915 	G_PKG_NAME,
3916 	'OTHERS',
3917 	x_msg_count,
3918 	x_msg_data,
3919 	'_PVT');
3920 
3921 END validate_row;
3922 
3923 
3924 END OKE_CHR_PVT;
3925