DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKE_IMPORT_CONTRACT_PUB

Source


1 PACKAGE BODY OKE_IMPORT_CONTRACT_PUB AS
2 /* $Header: OKEPIMPB.pls 120.2.12020000.3 2013/02/22 06:42:12 ansraj ship $ */
3     g_api_type		CONSTANT VARCHAR2(4) := '_PUB';
4 
5 
6 
7 -- GLOBAL MESSAGE CONSTANTS
8 
9   G_FND_APP			CONSTANT VARCHAR2(200) := OKE_API.G_FND_APP;
10 
11   G_FORM_UNABLE_TO_RESERVE_REC 	CONSTANT VARCHAR2(200) := OKE_API.G_FORM_UNABLE_TO_RESERVE_REC;
12   G_FORM_RECORD_DELETED 	CONSTANT VARCHAR2(200) := OKE_API.G_FORM_RECORD_DELETED;
13 
14   G_FORM_RECORD_CHANGED 	CONSTANT VARCHAR2(200) := OKE_API.G_FORM_RECORD_CHANGED;
15 
16   G_RECORD_LOGICALLY_DELETED	CONSTANT VARCHAR2(200) := OKE_API.G_RECORD_LOGICALLY_DELETED;
17   G_REQUIRED_VALUE		CONSTANT VARCHAR2(200) := OKE_API.G_REQUIRED_VALUE;
18   G_INVALID_VALUE		CONSTANT VARCHAR2(200) := OKE_API.G_INVALID_VALUE;
19   G_COL_NAME_TOKEN		CONSTANT VARCHAR2(200) := OKE_API.G_COL_NAME_TOKEN;
20   G_PARENT_TABLE_TOKEN		CONSTANT VARCHAR2(200) := OKE_API.G_PARENT_TABLE_TOKEN;
21   G_CHILD_TABLE_TOKEN		CONSTANT VARCHAR2(200) := OKE_API.G_CHILD_TABLE_TOKEN;
22 
23   G_NO_PARENT_RECORD CONSTANT	VARCHAR2(200) := 'OKE_NO_PARENT_RECORD';
24   G_UNEXPECTED_ERROR CONSTANT	VARCHAR2(200) := 'OKE_CONTRACTS_UNEXPECTED_ERROR';
25 
26   G_SQLERRM_TOKEN	 CONSTANT	VARCHAR2(200) := 'SQLerrm';
27   G_SQLCODE_TOKEN	 CONSTANT	VARCHAR2(200) := 'SQLcode';
28   G_VIEW		 CONSTANT	VARCHAR2(200) := 'OKE_K_LINES_V';
29 
30   G_EXCEPTION_HALT_VALIDATION	exception;
31 
32 
33 
34 PROCEDURE validate_OKC_header_fields ( x_return_status OUT NOCOPY VARCHAR2,
35 				p_chr_rec	IN  chr_rec_type)IS
36 
37 CURSOR l_csr1 IS
38 select 'x'
39 from hr_all_organization_units hr , mtl_parameters mp
40 where mp.organization_id = hr.organization_id
41 and mp.master_organization_id = mp.organization_id
42 and hr.organization_id = p_chr_rec.inv_organization_id;
43 
44 CURSOR l_csr2 IS
45 select 'x'
46 from hr_operating_units
47 where organization_id = p_chr_rec.authoring_org_id;
48 
49 
50 l_dummy1  VARCHAR2(1) := '?';
51 l_dummy2  VARCHAR2(1) := '?';
52 
53 
54 
55 BEGIN
56   x_return_status := OKE_API.G_RET_STS_SUCCESS;
57 
58   IF (   p_chr_rec.start_date = OKE_API.G_MISS_DATE
59      OR p_chr_rec.start_date IS NULL) THEN
60       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
61 		p_msg_name		=>G_REQUIRED_VALUE,
62 		p_token1		=>G_COL_NAME_TOKEN,
63 		p_token1_value		=>'START_DATE');
64       x_return_status := OKE_API.G_RET_STS_ERROR;
65   END IF;
66 
67   IF (   p_chr_rec.inv_organization_id = OKE_API.G_MISS_NUM
68      OR p_chr_rec.inv_organization_id IS NULL) THEN
69       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
70 		p_msg_name		=>G_REQUIRED_VALUE,
71 		p_token1		=>G_COL_NAME_TOKEN,
72 		p_token1_value		=>'INV_ORGANIZATION_ID');
73       x_return_status := OKE_API.G_RET_STS_ERROR;
74   END IF;
75 
76 
77   IF (   p_chr_rec.authoring_org_id = OKE_API.G_MISS_NUM
78      OR p_chr_rec.authoring_org_id IS NULL) THEN
79       OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
80 		p_msg_name		=>G_REQUIRED_VALUE,
81 		p_token1		=>G_COL_NAME_TOKEN,
82 		p_token1_value		=>'AUTHORING_ORG_ID');
83       x_return_status := OKE_API.G_RET_STS_ERROR;
84   END IF;
85 
86 
87   IF ( p_chr_rec.inv_organization_id <> OKE_API.G_MISS_NUM
88 	AND p_chr_rec.inv_organization_id IS NOT NULL) THEN
89 
90 	Open l_csr1;
91 	Fetch l_csr1 INTO l_dummy1;
92 	Close l_csr1;
93 
94 	If l_dummy1 = '?' Then
95   	    OKE_API.SET_MESSAGE(p_app_name		=> g_app_name,
96 				p_msg_name		=> g_no_parent_record,
97 				p_token1		=> g_col_name_token,
98 				p_token1_value	=> 'INV_ORGANIZATION_ID',
99 				p_token2		=> g_child_table_token,
100 				p_token2_value	=> G_VIEW,
101 				p_token3		=> g_parent_table_token,
102 				p_token3_value	=> 'HR_ALL_ORGANIZATION_UNITS,MTL_PARAMETERS');
103       	  x_return_status := OKE_API.G_RET_STS_ERROR;
104  	END IF;
105   END IF;
106 
107   IF ( p_chr_rec.authoring_org_id <> OKE_API.G_MISS_NUM
108 	AND p_chr_rec.authoring_org_id <> -99
109 	AND p_chr_rec.authoring_org_id IS NOT NULL) THEN
110 
111 	Open l_csr2;
112 	Fetch l_csr2 INTO l_dummy2;
113 	Close l_csr2;
114 
115 	If l_dummy2 = '?' Then
116   	    OKE_API.SET_MESSAGE(p_app_name		=> g_app_name,
117 				p_msg_name		=> g_no_parent_record,
118 				p_token1		=> g_col_name_token,
119 				p_token1_value	=> 'AUTHORING_ORG_ID',
120 				p_token2		=> g_child_table_token,
121 				p_token2_value	=> G_VIEW,
122 				p_token3		=> g_parent_table_token,
123 				p_token3_value	=> 'HR_OPERATING_UNITS');
124       	  x_return_status := OKE_API.G_RET_STS_ERROR;
125  	END IF;
126   END IF;
127 
128 
129 
130 EXCEPTION
131 
132   WHEN OTHERS THEN
133     -- store SQL error message on message stack
134     OKE_API.SET_MESSAGE(
135 		p_app_name		=>g_app_name,
136 		p_msg_name		=>G_UNEXPECTED_ERROR,
137 		p_token1		=>G_SQLCODE_TOKEN,
138 		p_token1_value		=>SQLCODE,
139 		p_token2		=>G_SQLERRM_TOKEN,
140 		p_token2_value		=>SQLERRM);
141   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
142 
143 END validate_OKC_header_fields;
144 
145 
146 
147 
148 PROCEDURE validate_OKC_line_fields ( x_return_status OUT NOCOPY VARCHAR2,
149 			                               p_cle_rec	IN  cle_rec_type)IS
150 
151 CURSOR l_csr1 IS
152 select 'x'
153 FROM Okc_Statuses_B
154 WHERE okc_statuses_b.code  = p_cle_rec.sts_code;
155 
156 l_dummy1  VARCHAR2(1) := '?';
157 l_line_num VARCHAR2(400);
158 
159 
160 
161 
162 
163 BEGIN
164   x_return_status := OKE_API.G_RET_STS_SUCCESS;
165 
166   IF ( p_cle_rec.sts_code <> OKE_API.G_MISS_CHAR
167 	AND p_cle_rec.sts_code IS NOT NULL) THEN
168 
169 	Open l_csr1;
170 	Fetch l_csr1 INTO l_dummy1;
171 	Close l_csr1;
172 
173 	If l_dummy1 = '?' Then
174   	    OKE_API.SET_MESSAGE(p_app_name		=> g_app_name,
175 				p_msg_name		=> g_no_parent_record,
176 				p_token1		=> g_col_name_token,
177 				p_token1_value	=> 'STS_CODE',
178 				p_token2		=> g_child_table_token,
179 				p_token2_value	=> G_VIEW,
180 				p_token3		=> g_parent_table_token,
181 				p_token3_value	=> 'OKC_STATUSES_B');
182       	  x_return_status := OKE_API.G_RET_STS_ERROR;
183  	END IF;
184   END IF;
185 
186   IF ( p_cle_rec.line_number <> OKE_API.G_MISS_CHAR
187 	AND p_cle_rec.line_number IS NOT NULL) THEN
188 
189 	l_line_num := RTRIM(p_cle_rec.line_number)||' ';
190 	IF length(l_line_num)=1 THEN
191 
192       	  OKE_API.SET_MESSAGE(p_app_name	=>g_app_name,
193 		p_msg_name		=>G_REQUIRED_VALUE,
194 		p_token1		=>G_COL_NAME_TOKEN,
195 		p_token1_value		=>'LINE_NUMBER');
196           x_return_status := OKE_API.G_RET_STS_ERROR;
197  	END IF;
198 
199 
200 
201   END IF;
202 
203 
204 
205 
206 EXCEPTION
207 
208   WHEN OTHERS THEN
209     -- store SQL error message on message stack
210     OKE_API.SET_MESSAGE(
211 		p_app_name		=>g_app_name,
212 		p_msg_name		=>G_UNEXPECTED_ERROR,
213 		p_token1		=>G_SQLCODE_TOKEN,
214 		p_token1_value		=>SQLCODE,
215 		p_token2		=>G_SQLERRM_TOKEN,
216 		p_token2_value		=>SQLERRM);
217   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
218 
219 END validate_OKC_line_fields;
220 
221 PROCEDURE validate_delivery_Date (x_return_status OUT NOCOPY VARCHAR2,
222                                   p_line_id IN NUMBER,
223                                   p_start_date DATE,
224                                   p_end_date DATE,
225                                   p_due_date DATE
226                                   )
227 IS
228 
229 CURSOR c_dates IS
230 select max(start_date), min(end_date)
231 from oke_k_lines_v
232 where k_line_id in (select cle_id_ascendant from okc_ancestrys
233 		where cle_id = p_line_id) ;
234 
235 
236 l_start DATE;
237 l_end	DATE;
238 BEGIN
239    x_return_status := OKE_API.G_RET_STS_SUCCESS;
240 
241      IF p_end_date IS NOT NULL THEN
242 	      IF p_end_date < p_due_date  THEN
243 	        x_return_status :=  OKE_API.G_RET_STS_error;
244           OKE_API.SET_MESSAGE('OKE','OKE_WRONG_DELIVERY_DATE');
245           RETURN;
246 	      End If;
247     End If;
248 
249 
250     IF p_start_date IS NOT NULL THEN
251 	      IF p_start_date > p_due_date  THEN
252 	        x_return_status :=  OKE_API.G_RET_STS_error;
253           OKE_API.SET_MESSAGE('OKE','OKE_WRONG_DELIVERY_DATE');
254           RETURN;
255 	      End If;
256     End If;
257 
258 EXCEPTION
259 
260   WHEN OTHERS THEN
261     -- store SQL error message on message stack
262     OKE_API.SET_MESSAGE(
263 		p_app_name		=>g_app_name,
264 		p_msg_name		=>G_UNEXPECTED_ERROR,
265 		p_token1		=>G_SQLCODE_TOKEN,
266 		p_token1_value		=>SQLCODE,
267 		p_token2		=>G_SQLERRM_TOKEN,
268 		p_token2_value		=>SQLERRM);
269     x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
270 
271 END validate_delivery_Date;
272 
273 PROCEDURE validate_proposal_due_date(x_return_status OUT NOCOPY VARCHAR2,p_proposal_due_date IN VARCHAR2)
274 IS
275 
276 BEGIN
277   x_return_status := OKE_API.G_RET_STS_SUCCESS;
278    IF To_Number(p_proposal_due_date)<0 THEN
279     RAISE invalid_number;
280   END IF;
281 EXCEPTION
282  WHEN INVALID_NUMBER
283   THEN
284     x_return_status := OKE_API.G_RET_STS_ERROR;
285    OKE_API.SET_MESSAGE('OKE','OKE_INVALID_DAYS_ARO');
286 END validate_proposal_due_date;
287 
288  PROCEDURE update_line_total(p_chr_id NUMBER, p_line_id NUMBER, p_parent_id NUMBER, p_diff NUMBER, p_diff_u NUMBER ) IS
289     l_chld_exist VARCHAR2(1) := '?';
290     CURSOR c_children IS
291      SELECT '!'
292       FROM okc_k_lines_b
293       WHERE cle_id = p_LINE_ID;
294    BEGIN
295 
296     OPEN c_children;
297     FETCH c_children INTO l_chld_exist;
298     CLOSE c_children;
299 
300     IF l_chld_exist='!' THEN RETURN; END IF;
301       IF  p_diff <> 0 OR p_diff_u <> 0  THEN
302           UPDATE oke_k_headers
303           SET     line_value_total =   line_value_total - Nvl(p_diff,0)
304                ,undef_line_value_total = undef_line_value_total - Nvl(p_diff_u,0)
305             WHERE k_header_id = p_chr_id;
306        END IF;
307 
308     IF p_diff <> 0 OR p_diff_u <> 0 THEN
309         IF p_parent_id IS  NOT NULL THEN
310       update oke_k_lines
311       set line_value_total = Nvl(line_value_total,0) - Nvl(p_diff,0),
312           undef_line_value_total = Nvl(undef_line_value_total,0) - Nvl(p_diff_u,0)
313       where k_line_id IN (
314         SELECT id FROM okc_k_lines_b
315          WHERE id IS NOT NULL
316          START WITH id = p_parent_id
317          CONNECT BY PRIOR CLE_ID = ID);
318          END IF;
319     END IF;
320 
321   END update_line_total;
322 
323 
324 PROCEDURE VALIDATE_line_dates (x_return_status OUT NOCOPY VARCHAR2,
325                                p_line_id IN NUMBER,
326                                p_col_name IN VARCHAR2,
327                                p_line_start_date in DATE,
328                                p_line_end_date IN DATE,
329                                p_line_due_date IN DATE,
330                                p_cle_id IN NUMBER,
331                                p_chr_id IN NUMBER
332                               )
333 IS
334 
335 
336   l_line_start_date    DATE := p_line_start_date;
337   l_line_end_date      DATE := p_line_end_date;
338   l_line_due_date      DATE := p_line_due_date;
339   l_parent_start_date  DATE;
340   l_parent_end_date    DATE;
341 
342   l_exit NUMBER := 0;
343 
344   cursor parent_cursor(l_id NUMBER) is
345   select start_date, end_date
346   from oke_k_lines_v
347   where k_line_id = l_id;
348 
349   cursor child_cursor(l_id NUMBER) is
350   select start_date, end_date
351   from oke_k_lines_v
352   where k_line_id in
353    (
354      select cle_id from okc_ancestrys
355      where cle_id_ascendant=l_id
356    );
357   child_rec child_cursor%ROWTYPE;
358 
359 
360 
361   cursor deliver_cursor(k_id NUMBER, l_id NUMBER) is
362   select start_date, end_date
363   from oke_k_deliverables_b
364   where k_header_id = k_id and k_line_id = l_id;
365   del_rec deliver_cursor%ROWTYPE;
366 
367   CURSOR get_header_dates(p_id NUMBER)
368   IS
369   SELECT start_date,end_date
370   FROM  okc_k_headers_all_b
371   WHERE id=p_id;
372 
373 BEGIN
374       x_return_status := OKE_API.G_RET_STS_SUCCESS;
375 
376 
377       -- Check if the new SD/ED invalid its SD/ED/DD
378       if (p_col_name = 'Start Date') then
379         if (l_line_start_date is not null AND
380              (l_line_start_date > l_line_due_date OR
381               l_line_start_date > l_line_end_date)
382            )
383         THEN
384             x_return_status :=  OKE_API.G_RET_STS_ERROR;
385             OKE_API.SET_MESSAGE('OKE','OKE_INVALID_LINE_START_DATE');
386             RETURN;
387         end if;
388       else
389         if (l_line_end_date is not null AND
390              (l_line_end_date < l_line_due_date OR
391               l_line_end_date < l_line_start_date)
392            )
393         THEN
394             x_return_status :=  OKE_API.G_RET_STS_ERROR;
395             OKE_API.SET_MESSAGE('OKE','OKE_INVALID_LINE_END_DATE');
396             RETURN;
397         end if;
398       end if;
399 
400 
401       -- if top line, validate the new date against header dates
402       -- else validate the new date against parent line dates
403       if (p_cle_id IS NULL) then
404          OPEN get_header_dates(p_chr_id);
405          FETCH get_header_dates INTO l_parent_start_date,l_parent_end_date;
406          CLOSE  get_header_dates;
407 
408     	    if (p_col_name = 'Start Date') then
409      	        if (l_parent_start_date > l_line_start_date) then
410           	    x_return_status :=  OKE_API.G_RET_STS_ERROR;
411                 OKE_API.SET_MESSAGE('OKE','OKE_TOPLINE_SD');
412                 RETURN;
413      	        end if;
414     	    end if;
415 
416     	    if (p_col_name = 'End Date') then
417       	      if (l_line_end_date is null AND l_parent_end_date IS NOT NULL) then
418               OKE_API.SET_MESSAGE('OKE','OKE_TOPLINE_ED');
419       	      elsif (l_parent_end_date < l_line_end_date) then
420         	    OKE_API.SET_MESSAGE('OKE','OKE_TOPLINE_ED');
421       	      end if;
422     	    end if;
423 
424       else
425         open parent_cursor(p_cle_id);
426         fetch parent_cursor into l_parent_start_date, l_parent_end_date;
427         close parent_cursor;
428     	  if (p_col_name = 'Start Date') then
429      	    if (l_parent_start_date > l_line_start_date) THEN
430          	x_return_status :=  OKE_API.G_RET_STS_ERROR;
431         	OKE_API.SET_MESSAGE('OKE','OKE_SUBLINE_SD');
432         	RETURN;
433      	    end if;
434     	  end if;
435 
436     	  if (p_col_name = 'End Date') then
437       	    if (l_line_end_date is null AND l_parent_end_date IS NOT NULL) then
438         	  OKE_API.SET_MESSAGE('OKE','OKE_SUBLINE_ED');
439       	    elsif (l_parent_end_date < l_line_end_date) then
440           	OKE_API.SET_MESSAGE('OKE','OKE_SUBLINE_ED');
441       	    end if;
442     	  end if;
443       end if;
444 
445 
446       -- Validate the new date against all children lines
447       open child_cursor(p_line_id);
448       LOOP
449          fetch child_cursor into child_rec;
450          EXIT WHEN (child_cursor%NOTFOUND OR l_exit=1);
451     	    if (p_col_name = 'Start Date') then
452      	      if (l_line_start_date > child_rec.start_date) then
453         	      OKE_API.SET_MESSAGE('OKE','OKE_WRONG_PARENT_SD');
454         	      x_return_status :=  OKE_API.G_RET_STS_ERROR;
455 		            RAISE OKE_API.G_EXCEPTION_ERROR;
456      	      end if;
457     	    end if;
458 
459     	  if (p_col_name = 'End Date') then
460       	  if (l_line_end_date is null AND child_rec.end_date IS NOT NULL) then
461         	  OKE_API.SET_MESSAGE('OKE','OKE_WRONG_PARENT_ED');
462 		        l_exit := 1;
463       	  elsif (l_line_end_date < child_rec.end_date) then
464         	  OKE_API.SET_MESSAGE('OKE','OKE_WRONG_PARENT_ED');
465 		        l_exit := 1;
466       	 end if;
467     	  end if;
468       END LOOP;
469       close child_cursor;
470 
471       -- Validate Deliverables
472       open deliver_cursor(p_chr_id,p_line_id);
473       LOOP
474          fetch deliver_cursor into del_rec;
475          EXIT WHEN (deliver_cursor%NOTFOUND OR l_exit = 1);
476          if (p_col_name = 'Start Date'AND l_line_start_date is not null) then
477             if (del_rec.start_date is null) then
478             OKE_API.SET_MESSAGE('OKE','OKE_LINE_DTS_SD');
479 	          l_exit := 1;
480          elsif (l_line_start_date > del_rec.start_date) then
481           OKE_API.SET_MESSAGE('OKE','OKE_LINE_DTS_SD');
482 	        l_exit := 1;
483           end if;
484          end if;
485 
486         if (p_col_name = 'End Date'AND l_line_end_date is not null) then
487           if (del_rec.end_date is null) then
488             OKE_API.SET_MESSAGE('OKE','OKE_LINE_DTS_ED');
489 	          l_exit := 1;
490           elsif (l_line_end_date < del_rec.end_date) then
491             OKE_API.SET_MESSAGE('OKE','OKE_LINE_DTS_ED');
492 	          l_exit := 1;
493           end if;
494         end if;
495       END LOOP;
496       close deliver_cursor;
497 
498 EXCEPTION
499   WHEN OKE_API.G_EXCEPTION_ERROR THEN
500    IF child_cursor%ISOPEN THEN
501     CLOSE child_cursor;
502    END IF;
503    IF deliver_cursor%ISOPEN THEN
504     CLOSE deliver_cursor;
505     END IF;
506     RAISE  OKE_API.G_EXCEPTION_ERROR;
507   WHEN OTHERS THEN
508     -- store SQL error message on message stack
509     OKE_API.SET_MESSAGE(
510 		p_app_name		=>g_app_name,
511 		p_msg_name		=>G_UNEXPECTED_ERROR,
512 		p_token1		=>G_SQLCODE_TOKEN,
513 		p_token1_value		=>SQLCODE,
514 		p_token2		=>G_SQLERRM_TOKEN,
515 		p_token2_value		=>SQLERRM);
516   x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
517 
518 END VALIDATE_line_dates;
519 
520 PROCEDURE VALIDATE_LINE_STATUS (P_LINE_STS_CODE IN VARCHAR2,x_return_status IN OUT NOCOPY VARCHAR2)
521 IS
522 
523 CURSOR c_get_status_type IS
524   SELECT STE_CODE
525   FROM OKC_STATUSES_V
526   WHERE CODE = P_LINE_STS_CODE;
527 
528   L_STATUS VARCHAR2(240);
529 BEGIN
530 
531   x_return_status := OKE_API.G_RET_STS_SUCCESS;
532 
533   OPEN c_get_status_type;
534 	FETCH c_get_status_type INTO L_STATUS;
535 	CLOSE c_get_status_type;
536 
537    IF L_STATUS NOT IN ('ENTERED' , 'CANCELLED') THEN
538 	   OKE_API.SET_MESSAGE
539       (p_app_name		=> g_app_name,
540 		   p_msg_name		=> 'OKE_KAUWB_LINE_DELETE_STATUS'
541 		  );
542       x_return_status := OKE_API.G_RET_STS_ERROR;
543    END IF;
544 
545 EXCEPTION
546  WHEN OTHERS THEN
547    -- store SQL error message on message stack
548    OKE_API.SET_MESSAGE(
549 		p_app_name		=>g_app_name,
550 		p_msg_name		=>G_UNEXPECTED_ERROR,
551 		p_token1		=>G_SQLCODE_TOKEN,
552 		p_token1_value		=>SQLCODE,
553 		p_token2		=>G_SQLERRM_TOKEN,
554 		p_token2_value		=>SQLERRM);
555     x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
556 END VALIDATE_line_Status;
557 
558 FUNCTION CHILD_LINE_EXISTS(p_contract_line_id NUMBER)
559 RETURN VARCHAR2 IS
560 
561   cursor c is
562     select 'X' from okc_k_lines_b
563     where cle_id = p_contract_line_id;
564 
565 l_value VARCHAR2(1);
566 l_found boolean;
567 BEGIN
568 
569     OPEN c;
570     FETCH c INTO l_value;
571     l_found := c%found;
572     close c;
573 
574     if l_found then
575        RETURN 'Y' ;
576     ELSE
577       return 'N';
578     end if;
579 
580 END CHILD_LINE_EXISTS;
581 
582 FUNCTION CHILD_DELIVERABLE_EXISTS(p_contract_line_id NUMBER)
583 RETURN VARCHAR2 IS
584 
585   cursor c is
586     select 'X' from oke_k_deliverables_b
587     where k_line_id = p_contract_line_id;
588 
589 l_value VARCHAR2(1);
590 l_found boolean;
591 BEGIN
592 
593     OPEN c;
594     FETCH c INTO l_value;
595     l_found := c%found;
596     close c;
597 
598     if l_found then
599        RETURN 'Y' ;
600     ELSE
601       return 'N';
602     end if;
603 
604 END CHILD_DELIVERABLE_EXISTS;
605 
606 
607 FUNCTION CHILD_FUNDING_EXISTS(p_contract_line_id NUMBER)
608 RETURN VARCHAR2 IS
609 
610   cursor c is
611     select 'X' from oke_k_fund_allocations
612     where k_line_id = p_contract_line_id;
613 
614 l_value VARCHAR2(1);
615 l_found boolean;
616 BEGIN
617 
618     OPEN c;
619     FETCH c INTO l_value;
620     l_found := c%found;
621     close c;
622 
623     if l_found then
624        RETURN 'Y'  ;
625     ELSE
626       return 'N';
627     end if;
628 
629 END CHILD_FUNDING_EXISTS;
630 
631 Function   Validate_record( p_del_rec	IN del_rec_type
632       ) RETURN VARCHAR2 IS
633 
634  l_return_status	VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
635  x_return_status VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
636 
637 ----------------------------------
638 procedure validate_direction ( p_del_rec	IN del_rec_type,
639 x_return_status		OUT NOCOPY varchar2) is
640 BEGIN
641 
642 x_return_status := OKE_API.G_RET_STS_SUCCESS;
643 if p_del_rec.DIRECTION='IN' then
644 
645  if nvl(p_del_rec.AVAILABLE_FOR_SHIP_FLAG,'N') = 'Y' then
646 
647  OKE_API.SET_MESSAGE(   p_app_name	=> g_app_name,
648 			p_msg_name	=> g_invalid_value,
649                                                       p_token1	=> g_col_name_token,
650 		                  p_token1_value  => 'AVAILABLE_FOR_SHIP_FLAG');
651 	X_Return_Status := OKE_API.G_RET_STS_ERROR;
652  end if;
653 elsif p_del_rec.DIRECTION='OUT' then
654 
655  if nvl(p_del_rec.READY_TO_PROCURE,'N') = 'Y' then
656 
657  OKE_API.SET_MESSAGE(   p_app_name	=> g_app_name,
658 			p_msg_name	=> g_invalid_value,
659                                                       p_token1	=> g_col_name_token,
660 		                  p_token1_value  => 'READY_TO_PROCURE');
661     X_Return_Status := OKE_API.G_RET_STS_ERROR;
662  end if;
663 end if;
664 
665 EXCEPTION
666 
667     WHEN OTHERS THEN
668 
669 	  -- store SQL error message on message stack
670   	  OKE_API.SET_MESSAGE(p_app_name	=> g_app_name,
671 					  p_msg_name	=> g_unexpected_error,
672 					  p_token1	=> g_sqlcode_token,
673 					  p_token1_value=> sqlcode,
674 					  p_token2	=> g_sqlerrm_token,
675 					  p_token2_value=> sqlerrm);
676 	   -- notify caller of an error as UNEXPETED error
677         X_Return_Status := OKE_API.G_RET_STS_UNEXP_ERROR;
678 end validate_direction ;
679 ------------------------
680 procedure Check_Currency( p_del_rec	IN del_rec_type,
681 x_return_status		OUT NOCOPY varchar2) IS
682 
683     L_Currency_Code VARCHAR2(30);
684 
685     CURSOR C ( P_ID NUMBER ) IS
686      SELECT currency_code
687     FROM okc_k_headers_b
688     WHERE id =P_ID ;
689 
690 
691     Diff_Currency_Code EXCEPTION;
692 
693 
694   BEGIN
695 
696   x_return_status := OKE_API.G_RET_STS_SUCCESS;
697 
698     IF p_del_rec.CURRENCY_CODE IS NOT NULL THEN
699 
700        OPEN C ( p_del_rec.k_header_id );
701       FETCH C INTO L_Currency_Code;
702       CLOSE C;
703 
704       IF NVL(L_Currency_Code, p_del_rec.CURRENCY_CODE ) <> p_del_rec.CURRENCY_CODE  THEN
705 
706 iF p_del_rec.RATE_TYPE IS NULL OR  p_del_rec.RATE_DATE IS NULL OR p_del_rec.EXCHANGE_RATE IS NULL THEN
707 
708 	 OKE_API.SET_MESSAGE(   p_app_name	=> g_app_name,
709 			p_msg_name	=> 'OKE_BILL_NO_CONV_RATE');
710 
711           X_Return_Status := OKE_API.G_RET_STS_ERROR;
712 
713         END IF;
714 
715       END IF;
716 
717     END IF;
718 
719 EXCEPTION
720 
721     WHEN OTHERS THEN
722 
723 	  -- store SQL error message on message stack
724   	  OKE_API.SET_MESSAGE(p_app_name	=> g_app_name,
725 					  p_msg_name	=> g_unexpected_error,
726 					  p_token1	=> g_sqlcode_token,
727 					  p_token1_value=> sqlcode,
728 					  p_token2	=> g_sqlerrm_token,
729 					  p_token2_value=> sqlerrm);
730 	   -- notify caller of an error as UNEXPETED error
731         X_Return_Status := OKE_API.G_RET_STS_UNEXP_ERROR;
732 
733 
734   END Check_Currency;
735 
736  --------------------------------
737 procedure check_data( p_del_rec	IN del_rec_type,
738 x_return_status		OUT NOCOPY varchar2)  is
739 
740   l_message VARCHAR2(2000);
741   l_msg Varchar2(80);
742   l_count number := 0;
743   l_id number;
744   l_value varchar2(1);
745   l_unit Number;
746   l_item Varchar2(150);
747   l_project_id Number;
748   l_not_found Boolean;
749 
750   l_hold boolean;
751   l_msg_count number;
752   l_msg_data varchar2(2000);
753   l_return_status varchar2(1);
754   l_inventory_org_id Number := p_del_rec.inventory_org_id;
755   l_control_level Number;
756   l_commit boolean;
757   l_start_dt date;
758   l_end_dt   date;
759   need_by_date   date;
760   l_Choice NUMBER;
761   raise_date_exception BOOLEAN;
762 
763   Cursor Unit_c(p_item_id Number, p_org_id Number) Is
764   Select Effectivity_Control From oke_system_items_v
765   Where Id1 = p_item_id
766   And Id2 = p_org_id;
767 
768   cursor l_control_csr is
769   select project_control_level
770   from pjm_org_parameters
771   where organization_id = l_id;
772 
773   CURSOR ship_c IS
774   SELECT 'X' FROM OKE_SYSTEM_ITEMS_V
775   WHERE ID1 = l_id
776   AND ID2 = l_inventory_org_id
777   AND SHIPPABLE_ITEM_FLAG = 'Y';
778 
779   CURSOR req_c IS
780   SELECT 'X' FROM OKE_SYSTEM_ITEMS_V
781   WHERE ID1 = l_id
782   AND ID2 = l_inventory_org_id
783   AND PURCHASING_ENABLED_FLAG = 'Y';
784 
785   cursor bill_c is
786   select 'X' from oke_system_items_v
787   where id1 = l_id
788   and id2 = l_inventory_org_id
789   and invoiceable_item_flag = 'Y';
790 
791   CURSOR Item_C IS
792   SELECT 'X'
793   FROM oke_system_items_v
794   WHERE ID1 = L_ID
795   AND ID2 = L_Inventory_Org_ID;
796 
797 begin
798 
799   x_return_status := OKE_API.G_RET_STS_SUCCESS;
800 
801 if nvl(p_del_Rec.create_demand,'N') = 'Y' then
802 
803     if p_del_Rec.item_id is null or p_del_Rec.inventory_org_id is null
804     or p_del_Rec.ndb_schedule_designator is null
805     or p_del_Rec.quantity is null
806     or p_del_Rec.uom_code is null
807     or p_del_Rec.expected_shipment_date is null then
808 
809 
810 
811       if p_del_Rec.item_id is null then
812       fnd_message.set_name('OKE', 'OKE_DTS_DATA_ITEM');
813       l_msg := fnd_message.get;
814 
815           if l_count = 0 then
816           l_message := l_msg;
817           l_count := 1;
818           else
819           l_message := l_message || ', ' || l_msg;
820           end if;
821 
822       end if;
823 
824       if p_del_Rec.uom_code is null then
825       fnd_message.set_name('OKE', 'OKE_DTS_DATA_UOM_CODE');
826       l_msg := fnd_message.get;
827 
828           if l_count = 0 then
829           l_message := l_msg;
830           l_count := 1;
831           else
832           l_message := l_message || ', ' || l_msg;
833           end if;
834 
835       end if;
836 
837       if p_del_Rec.quantity is null then
838       fnd_message.set_name('OKE', 'OKE_DTS_DATA_QTY');
839       l_msg := fnd_message.get;
840           if l_count = 0 then
841           l_message := l_msg;
842           l_count := 1;
843           else
844           l_message := l_message || ', ' || l_msg;
845            end if;
846 
847       end if;
848 
849       if p_del_Rec.inventory_org_id is null then
850       fnd_message.set_name('OKE', 'OKE_DTS_DATA_INV');
851       l_msg := fnd_message.get;
852 
853           if l_count = 0 then
854           l_message := l_msg;
855           l_count := 1;
856           else
857           l_message := l_message || ', ' || l_msg;
858            end if;
859 
860       end if;
861 
862       if p_del_Rec.expected_shipment_date is null then
863       fnd_message.set_name('OKE', 'OKE_DTS_DATA_DATE');
864       l_msg := fnd_message.get;
865           if l_count = 0 then
866           l_message := l_msg;
867           l_count := 1;
868           else
869           l_message := l_message || ', ' || l_msg;
870            end if;
871       end if;
872 
873 
874       if p_del_Rec.ndb_schedule_designator is null then
875       fnd_message.set_name('OKE', 'OKE_DTS_DATA_PLAN');
876       l_msg := fnd_message.get;
877           if l_count = 0 then
878           l_message := l_msg;
879           l_count := 1;
880           else
881           l_message := l_message || ', ' || l_msg;
882            end if;
883 
884       end if;
885 
886 
887 
888     OKE_API.SET_MESSAGE(p_app_name	=> g_app_name,
889     p_msg_name	=> 'OKE_DTS_MISS_REQ_DATA',
890       p_token1	=> 'DATA1',
891     p_token1_value  => l_message);
892     -- notify caller of an error
893     X_Return_Status := OKE_API.G_RET_STS_ERROR;
894 
895 
896    elsif p_del_rec.ITEM_ID IS NOT NULL THEN
897     -- check if the item is shippable
898     l_id := p_del_rec.ITEM_ID;
899     OPEN ship_c;
900     FETCH ship_c INTO l_value;
901     CLOSE ship_c;
902 
903         if l_value <> 'X' OR l_value is null then
904 
905 
906           OKE_API.SET_MESSAGE(p_app_name	=> g_app_name,
907         p_msg_name	=> 'OKE_INVALID_ITEM');
908         -- notify caller of an error
909         X_Return_Status := OKE_API.G_RET_STS_ERROR;
910 
911         end if;
912 
913    else
914       -- check if the deliverable is on hold
915 
916       l_hold := oke_check_hold_pkg.is_hold(
917       1
918       ,'T'
919       ,l_return_status
920       ,l_msg_count
921       ,l_msg_data
922       ,'DELIVERABLE'
923       ,p_del_rec.k_header_id
924       ,p_del_rec.k_line_id
925       ,p_del_rec.deliverable_id);
926 
927           if l_hold then
928           OKE_API.SET_MESSAGE(p_app_name	=> g_app_name,
929           p_msg_name	=> 'OKE_DELIVERABLE_ON_HOLD');
930           -- notify caller of an error
931           X_Return_Status := OKE_API.G_RET_STS_ERROR;
932 
933         end if;
934   end if;
935 end if;  --create_demand
936 
937 if p_del_Rec.shippable_flag = 'Y' then
938      if p_del_rec.available_for_ship_flag = 'Y' then
939 
940         if (p_del_rec.item_id is null and p_del_rec.description is null)
941         or p_del_rec.quantity is null
942         or p_del_rec.uom_code is null
943         or p_del_rec.ship_to_location_id is null
944         or p_del_rec.ship_from_location_id is null
945         or p_del_rec.expected_shipment_date is null then
946 
947 
948 
949                   if p_del_rec.item_id is null and p_del_rec.description is null then
950                   fnd_message.set_name('OKE', 'OKE_DTS_DATA_ITEM_DESC');
951                   l_msg := fnd_message.get;
952                   if l_count = 0 then
953                   l_message := l_msg;
954                   l_count := 1;
955                   else
956                   l_message := l_message || ', ' || l_msg;
957                   end if;
958 
959                   end if;
960 
961                   if p_del_rec.uom_code is null then
962                   fnd_message.set_name('OKE', 'OKE_DTS_DATA_UOM_CODE');
963                   l_msg := fnd_message.get;
964                   if l_count = 0 then
965                   l_message := l_msg;
966                   l_count := 1;
967                   else
968                   l_message := l_message || ', ' || l_msg;
969                   end if;
970 
971                   end if;
972 
973                   if p_del_rec.expected_shipment_date is null then
974                   fnd_message.set_name('OKE', 'OKE_DTS_DATA_DATE');
975                   l_msg := fnd_message.get;
976                   if l_count = 0 then
977                   l_message := l_msg;
978                   l_count := 1;
979                   else
980                   l_message := l_message || ', ' || l_msg;
981                   end if;
982                   end if;
983 
984 
985 
986                   if p_del_rec.quantity is null then
987                   fnd_message.set_name('OKE', 'OKE_DTS_DATA_QTY');
988                   l_msg := fnd_message.get;
989                   if l_count = 0 then
990                   l_message := l_msg;
991                   l_count := 1;
992                   else
993                   l_message := l_message || ', ' || l_msg;
994                   end if;
995 
996                   end if;
997 
998                   if p_del_rec.ship_to_location_id is null then
999                   fnd_message.set_name('OKE', 'OKE_DTS_DATA_TO_LOCATION');
1000                   l_msg := fnd_message.get;
1001                   if l_count = 0 then
1002                   l_message := l_msg;
1003                   l_count := 1;
1004                   else
1005                   l_message := l_message || ', ' || l_msg;
1006                   end if;
1007 
1008                   end if;
1009 
1010                   if p_del_rec.ship_from_location_id is null then
1011                   fnd_message.set_name('OKE', 'OKE_DTS_DATA_FROM_LOCATION');
1012                   l_msg := fnd_message.get;
1013                   if l_count = 0 then
1014                   l_message := l_msg;
1015                   l_count := 1;
1016                   else
1017                   l_message := l_message || ', ' || l_msg;
1018                   end if;
1019 
1020                   end if;
1021 
1022               OKE_API.SET_MESSAGE(p_app_name	=> g_app_name,
1023               p_msg_name	=> 'OKE_DTS_MISS_REQ_DATA',
1024                 p_token1	=> 'DATA1',
1025               p_token1_value  => l_message);
1026               -- notify caller of an error
1027               X_Return_Status := OKE_API.G_RET_STS_ERROR;
1028 
1029 
1030 
1031        elsif p_del_rec.ITEM_ID IS NOT NULL THEN
1032               -- check if the item is shippable
1033               l_id := p_del_rec.ITEM_ID;
1034               OPEN ship_c;
1035               FETCH ship_c INTO l_value;
1036               CLOSE ship_c;
1037 
1038                 if l_value <> 'X' OR l_value is null then
1039                 fnd_message.set_name('OKE', 'OKE_DTS_NOT_SHIPPABLE');
1040                 l_msg := fnd_message.get;
1041 
1042                 OKE_API.SET_MESSAGE(p_app_name	=> g_app_name,
1043                 p_msg_name	=> 'OKE_INVALID_ITEM',
1044                   p_token1	=> 'TOKEN',
1045                 p_token1_value  => l_msg);
1046                 X_Return_Status := OKE_API.G_RET_STS_ERROR;
1047               end if;
1048 
1049 
1050       else
1051         l_hold := oke_check_hold_pkg.is_hold(
1052         1
1053         ,'T'
1054         ,l_return_status
1055         ,l_msg_count
1056         ,l_msg_data
1057         ,'DELIVERABLE'
1058         ,p_del_rec.k_header_id
1059         ,p_del_rec.k_line_id
1060         ,p_del_rec.deliverable_id);
1061 
1062         if l_hold then
1063 
1064         OKE_API.SET_MESSAGE(p_app_name	=> g_app_name,
1065         p_msg_name	=> 'OKE_DELIVERABLE_ON_HOLD');
1066         X_Return_Status := OKE_API.G_RET_STS_ERROR;
1067        end if;
1068    end if; --item id is null
1069 
1070 
1071 --
1072 -- If ship undefined item, weight, weight uom, volume, volume uom are required
1073 --
1074 
1075  if p_del_rec.item_id is null and p_del_rec.description is not null then
1076 
1077    If p_del_rec.weight is null or p_del_rec.weight_uom_code is null or p_del_rec.volume is null or p_del_rec.volume_uom_code is null then
1078 
1079 
1080     OKE_API.SET_MESSAGE(p_app_name	=> g_app_name,
1081     p_msg_name	=> 'OKE_NON_ITEM_SHIP_DATA');
1082     X_Return_Status := OKE_API.G_RET_STS_ERROR;
1083     end if;
1084  end if;
1085 
1086   end if; --available for ship
1087 
1088 ELSE
1089    IF  p_del_rec.available_for_ship_flag = 'Y' THEN
1090      fnd_message.set_name('OKE', 'OKE_DTS_SHIPPABLE');
1091     l_msg := fnd_message.get;
1092 
1093 
1094 
1095     OKE_API.SET_MESSAGE(p_app_name	=> g_app_name,
1096     p_msg_name	=> 'OKE_DTS_NOT_ACTION_LINE',
1097       p_token1	=> 'TOKEN',
1098     p_token1_value  => l_msg);
1099     X_Return_Status := OKE_API.G_RET_STS_ERROR;
1100 
1101    END IF;
1102 
1103 end if; --shippable_flag
1104 
1105 
1106 if p_del_rec.ready_to_bill = 'Y' then
1107 
1108     if nvl(p_del_rec.billable_flag, 'N') = 'N' then
1109     fnd_message.set_name('OKE', 'OKE_DTS_BILLABLE');
1110     l_msg := fnd_message.get;
1111 
1112 
1113 
1114     OKE_API.SET_MESSAGE(p_app_name	=> g_app_name,
1115     p_msg_name	=> 'OKE_DTS_NOT_ACTION_LINE',
1116       p_token1	=> 'TOKEN',
1117     p_token1_value  => l_msg);
1118     X_Return_Status := OKE_API.G_RET_STS_ERROR;
1119 
1120   end if;
1121 end if;
1122 
1123 if p_del_rec.billable_flag = 'Y' and p_del_rec.item_id is not null then
1124       l_id :=p_del_rec.item_id;
1125       open bill_c;
1126       fetch bill_c into l_value;
1127       close bill_c;
1128 
1129       if l_value <> 'X' or l_value is null then
1130       fnd_message.set_name('OKE', 'OKE_DTS_NOT_BILLABLE');
1131       l_msg := fnd_message.get;
1132 
1133 
1134       OKE_API.SET_MESSAGE(p_app_name	=> g_app_name,
1135       p_msg_name	=> 'OKE_INVALID_ITEM',
1136         p_token1	=> 'TOKEN',
1137       p_token1_value  => l_msg);
1138       X_Return_Status := OKE_API.G_RET_STS_ERROR;
1139 
1140     end if;
1141 end if;
1142 
1143 
1144 if p_del_rec.shippable_flag = 'Y' and p_del_rec.item_id is not null then
1145   l_id := p_del_rec.item_id;
1146   open ship_c;
1147   fetch ship_c into l_value;
1148   close ship_c;
1149   if l_value <> 'X' or l_value is null then
1150   fnd_message.set_name('OKE', 'OKE_DTS_NOT_SHIPPABLE');
1151   l_msg := fnd_message.get;
1152 
1153   OKE_API.SET_MESSAGE(p_app_name	=> g_app_name,
1154   p_msg_name	=> 'OKE_INVALID_ITEM',
1155     p_token1	=> 'TOKEN',
1156   p_token1_value  => l_msg);
1157   X_Return_Status := OKE_API.G_RET_STS_ERROR;
1158 end if;
1159 end if;
1160 
1161 
1162 if p_del_rec.ready_to_procure = 'Y' then
1163 
1164 --
1165 -- Check common fields
1166 --
1167 
1168 if p_del_rec.item_id is null
1169 or p_del_rec.quantity is null
1170 or p_del_rec.need_by_date is null
1171 or p_del_rec.ship_to_location_id is null
1172 or p_del_rec.destination_type_code is null
1173 or p_del_rec.destination_type_code = 'EXPENSE' then
1174 
1175 
1176 
1177         if p_del_rec.item_id is null then
1178         if p_del_rec.DESTINATION_TYPE_CODE = 'EXPENSE' then
1179         if p_del_rec.description is null then
1180         fnd_message.set_name('OKE', 'OKE_DTS_DATA_DESC');
1181         l_msg := fnd_message.get;
1182         if l_count = 0 then
1183         l_message := l_msg;
1184         l_count := 1;
1185         else
1186         l_message := l_message || ', ' || l_msg;
1187         end if;
1188         end if;
1189 
1190 
1191 
1192         if p_del_rec.po_category_id is null then
1193         fnd_message.set_name('OKE', 'OKE_DTS_DATA_PO_CATEGORY');
1194         l_msg := fnd_message.get;
1195         if l_count = 0 then
1196         l_message := l_msg;
1197         l_count := 1;
1198         else
1199         l_message := l_message || ', ' || l_msg;
1200         end if;
1201         end if;
1202 
1203         if p_del_rec.unit_price is null then
1204         fnd_message.set_name('OKE', 'OKE_DTS_DATA_UNIT_PRICE');
1205         l_msg := fnd_message.get;
1206         if l_count = 0 then
1207         l_message := l_msg;
1208         l_count := 1;
1209         else
1210         l_message := l_message || ', ' || l_msg;
1211         end if;
1212         end if;
1213 
1214         else
1215         fnd_message.set_name('OKE', 'OKE_DTS_DATA_ITEM_DESC');
1216         l_msg := fnd_message.get;
1217         if l_count = 0 then
1218         l_message := l_msg;
1219         l_count := 1;
1220         else
1221         l_message := l_message || ', ' || l_msg;
1222         end if;
1223         end if;
1224         end if;
1225 
1226         if p_del_rec.quantity is null then
1227         fnd_message.set_name('OKE', 'OKE_DTS_DATA_QTY');
1228         l_msg := fnd_message.get;
1229         if l_count = 0 then
1230         l_message := l_msg;
1231         l_count := 1;
1232         else
1233         l_message := l_message || ', ' || l_msg;
1234         end if;
1235 
1236         end if;
1237 
1238         if p_del_rec.ship_to_location_id is null then
1239         fnd_message.set_name('OKE', 'OKE_DTS_DATA_TO_LOCATION');
1240         l_msg := fnd_message.get;
1241         if l_count = 0 then
1242         l_message := l_msg;
1243         l_count := 1;
1244         else
1245         l_message := l_message || ', ' || l_msg;
1246         end if;
1247         end if;
1248 
1249         if p_del_rec.need_by_date is null then
1250         fnd_message.set_name('OKE', 'OKE_DTS_DATA_PO_DATE');
1251         l_msg := fnd_message.get;
1252         if l_count = 0 then
1253         l_message := l_msg;
1254         l_count := 1;
1255         else
1256         l_message := l_message || ', ' || l_msg;
1257         end if;
1258         end if;
1259 
1260         IF p_del_rec.Destination_Type_Code Is Null Then
1261         Fnd_Message.Set_Name('OKE', 'OKE_DTS_DATA_DES_CODE');
1262         l_msg := fnd_message.get;
1263         If L_Count = 0 Then
1264         L_Message := L_Msg;
1265         L_Count := 1;
1266         Else
1267         L_Message := L_Message || ', ' || L_Msg;
1268         End If;
1269         Elsif p_del_rec.Destination_Type_Code = 'EXPENSE' Then
1270 
1271 
1272 
1273 
1274         IF p_del_rec.PROJECT_ID IS NOT NULL THEN
1275 
1276         IF p_del_rec.TASK_ID IS NULL THEN
1277         FND_MESSAGE.Set_Name('OKE', 'OKE_DTS_DATA_TASK');
1278         L_Msg := FND_MESSAGE.Get;
1279         IF L_Count = 0 THEN
1280         L_Message := L_Msg;
1281         L_Count := 1;
1282         ELSE
1283         L_Message := L_Message || ', ' || L_Msg;
1284         END IF;
1285         END IF;
1286 
1287         If p_del_rec.Expenditure_Organization_Id Is Null Then
1288         Fnd_Message.Set_Name('OKE', 'OKE_DTS_DATA_EXP_ORG_ID');
1289         L_Msg := Fnd_Message.Get;
1290         If L_Count = 0 Then
1291         L_Message := L_Msg;
1292         L_Count := 1;
1293         Else
1294         L_Message := L_Message || ', ' || L_Msg;
1295         End If;
1296         End If;
1297 
1298         If p_del_rec.Expenditure_Type Is Null Then
1299         Fnd_Message.Set_Name('OKE', 'OKE_DTS_DATA_EXP_TYPE');
1300         L_Msg := Fnd_Message.Get;
1301         If L_Count = 0 Then
1302         L_Message := L_Msg;
1303         L_Count := 1;
1304         Else
1305         L_Message := L_Message || ', ' || L_Msg;
1306         End If;
1307         End If;
1308 
1309         If p_del_rec.Expenditure_Item_Date Is Null Then
1310         Fnd_Message.Set_Name('OKE', 'OKE_DTS_DATA_EXP_ITEM_DATE');
1311         L_Msg := Fnd_Message.Get;
1312         If L_Count = 0 Then
1313         L_Message := L_Msg;
1314         L_Count := 1;
1315         Else
1316         L_Message := L_Message || ', ' || L_Msg;
1317         End If;
1318         End If;
1319 
1320         END IF;
1321 
1322         End If;
1323 
1324         If L_Message Is Not Null Then
1325 
1326 
1327         OKE_API.SET_MESSAGE(p_app_name	=> g_app_name,
1328         p_msg_name	=> 'OKE_DTS_MISS_REQ_DATA',
1329           p_token1	=>'DATA1',
1330         p_token1_value  => l_message);
1331         X_Return_Status := OKE_API.G_RET_STS_ERROR;
1332         End If;
1333 
1334 
1335 elsif p_del_rec.ITEM_ID IS NOT NULL THEN
1336 
1337       -- check if the item is purchasable
1338       l_id :=  p_del_rec.ITEM_ID;
1339       OPEN req_c;
1340       FETCH req_c INTO l_value;
1341       CLOSE req_c;
1342 
1343       if l_value is null or l_value <> 'X' then
1344       fnd_message.set_name('OKE', 'OKE_DTS_NOT_PURCHASABLE');
1345       l_msg := fnd_message.get;
1346 
1347 
1348       OKE_API.SET_MESSAGE(p_app_name	=> g_app_name,
1349       p_msg_name	=> 'OKE_INVALID_ITEM',
1350         p_token1	=>'TOKEN',
1351       p_token1_value  => l_mSG);
1352       X_Return_Status := OKE_API.G_RET_STS_ERROR;
1353       end if;
1354 
1355 
1356 
1357 else
1358     l_hold := oke_check_hold_pkg.is_hold(
1359     1
1360     ,'T'
1361     ,l_return_status
1362     ,l_msg_count
1363     ,l_msg_data
1364     ,'DELIVERABLE'
1365     ,P_DEL_REC.k_header_id
1366     ,p_del_Rec.k_line_id
1367     ,p_del_Rec.deliverable_id);
1368 
1369     if l_hold then
1370 
1371     OKE_API.SET_MESSAGE(p_app_name	=> g_app_name,
1372     p_msg_name	=> 'OKE_DELIVERABLE_ON_HOLD');
1373     X_Return_Status := OKE_API.G_RET_STS_ERROR;
1374     end if;
1375 end if;
1376 
1377 
1378 end if;
1379 
1380 
1381 -- check if unit_number is required for the item
1382 if p_del_rec.item_id is not null then
1383 open Unit_c(p_del_rec.item_id, p_del_rec.inventory_org_id);
1384 fetch Unit_c into l_unit;
1385 close Unit_c;
1386 
1387 if l_unit = 2 then
1388 if p_del_rec.unit_number is null then
1389 
1390 OKE_API.SET_MESSAGE(p_app_name	=> g_app_name,
1391 p_msg_name	=> 'OKE_UNIT_NUMBER_REQUIRED');
1392 X_Return_Status := OKE_API.G_RET_STS_ERROR;
1393 end if;
1394 end if;
1395 
1396 END IF;
1397 
1398   EXCEPTION
1399 
1400     WHEN OTHERS THEN
1401 
1402 	  -- store SQL error message on message stack
1403   	  OKE_API.SET_MESSAGE(p_app_name	=> g_app_name,
1404 					  p_msg_name	=> g_unexpected_error,
1405 					  p_token1	=> g_sqlcode_token,
1406 					  p_token1_value=> sqlcode,
1407 					  p_token2	=> g_sqlerrm_token,
1408 					  p_token2_value=> sqlerrm);
1409 	   -- notify caller of an error as UNEXPETED error
1410         X_Return_Status := OKE_API.G_RET_STS_UNEXP_ERROR;
1411 
1412 
1413 
1414 end check_data;
1415 
1416 BEGIN
1417 
1418 check_data( p_del_rec	=> p_del_rec,
1419 x_return_status	=> l_return_status);
1420 
1421     If l_return_status <> OKE_API.G_RET_STS_SUCCESS Then
1422       If x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR Then
1423   	     x_return_status := l_return_status;
1424       End If;
1425     End If;
1426 
1427      Check_Currency( p_del_rec	=> p_del_rec,
1428 x_return_status	=> l_return_status);
1429 
1430     If l_return_status <> OKE_API.G_RET_STS_SUCCESS Then
1431       If x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR Then
1432   	     x_return_status := l_return_status;
1433       End If;
1434     End If;
1435 
1436 Validate_direction( p_del_rec	=> p_del_rec,
1437 x_return_status	=> l_return_status);
1438 
1439     If l_return_status <> OKE_API.G_RET_STS_SUCCESS Then
1440       If x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR Then
1441   	     x_return_status := l_return_status;
1442       End If;
1443     End If;
1444 
1445     return (x_return_status);
1446 
1447 exception
1448  WHEN OTHERS THEN
1449     -- store SQL error message on message stack
1450     OKE_API.SET_MESSAGE(
1451 		p_app_name		=>g_app_name,
1452 		p_msg_name		=>G_UNEXPECTED_ERROR,
1453 		p_token1		=>G_SQLCODE_TOKEN,
1454 		p_token1_value		=>SQLCODE,
1455 		p_token2		=>G_SQLERRM_TOKEN,
1456 		p_token2_value		=>SQLERRM);
1457 
1458     x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
1459 
1460      RETURN(x_return_status);
1461 
1462 
1463 END validate_record;
1464 
1465 
1466   PROCEDURE create_contract_header(
1467 
1468     p_api_version                  IN NUMBER,
1469     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
1470     p_ignore_oke_validation        IN VARCHAR2 DEFAULT 'N',
1471     x_return_status                OUT NOCOPY VARCHAR2,
1472     x_msg_count                    OUT NOCOPY NUMBER,
1473     x_msg_data                     OUT NOCOPY VARCHAR2,
1474 
1475     p_chr_rec			   IN  chr_rec_type,
1476     x_chr_rec			   OUT NOCOPY  chr_rec_type) IS
1477 
1478     l_api_name          CONSTANT VARCHAR2(30) := 'CREATE_CONTRACT_HEADER';
1479     l_api_version       CONSTANT NUMBER   := 1.0;
1480     l_return_status     VARCHAR2(1)               := OKE_API.G_RET_STS_SUCCESS;
1481 
1482 
1483     l_okc_chrv_rec		OKC_CONTRACT_PUB.chrv_rec_type;
1484     l_oke_chr_rec		OKE_CONTRACT_PUB.chr_rec_type;
1485 
1486     l_out_chrv		OKC_CONTRACT_PUB.chrv_rec_type;
1487     l_out_chr		OKE_CONTRACT_PUB.chr_rec_type;
1488 
1489 
1490 
1491 BEGIN
1492     -- call START_ACTIVITY to create savepoint, check compatibility
1493     -- and initialize message list
1494     l_return_status := OKE_API.START_ACTIVITY(
1495                         p_api_name      => l_api_name,
1496                         p_pkg_name      => g_pkg_name,
1497                         p_init_msg_list => p_init_msg_list,
1498                         l_api_version   => l_api_version,
1499                         p_api_version   => p_api_version,
1500                         p_api_type      => g_api_type,
1501                         x_return_status => x_return_status);
1502 
1503     -- check if activity started successfully
1504     If (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
1505        raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
1506     Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
1507        raise OKE_API.G_EXCEPTION_ERROR;
1508     End If;
1509 
1510 
1511 
1512 
1513 
1514 
1515 -- start assigning items into the records
1516 
1517 
1518   l_oke_chr_rec.k_header_id  		:= p_chr_rec.k_header_id;
1519   l_oke_chr_rec.program_id  		:= p_chr_rec.program_id;
1520   l_oke_chr_rec.project_id  		:= p_chr_rec.project_id;
1521   l_oke_chr_rec.boa_id  		:= p_chr_rec.boa_id;
1522   l_oke_chr_rec.k_type_code  		:= p_chr_rec.k_type_code;
1523   l_oke_chr_rec.priority_code  		:= p_chr_rec.priority_code;
1524   l_oke_chr_rec.prime_k_alias  		:= p_chr_rec.prime_k_alias;
1525   l_oke_chr_rec.prime_k_number  	:= p_chr_rec.prime_k_number;
1526   l_oke_chr_rec.authorize_date  	:= p_chr_rec.authorize_date;
1527   l_oke_chr_rec.authorizing_reason  	:= p_chr_rec.authorizing_reason;
1528   l_oke_chr_rec.award_cancel_date 	:= p_chr_rec.award_cancel_date;
1529   l_oke_chr_rec.award_date	  	:= p_chr_rec.award_date;
1530   l_oke_chr_rec.date_definitized  	:= p_chr_rec.date_definitized;
1531   l_oke_chr_rec.date_issued 	  	:= p_chr_rec.date_issued;
1532   l_oke_chr_rec.date_negotiated   	:= p_chr_rec.date_negotiated;
1533   l_oke_chr_rec.date_received 	  	:= p_chr_rec.date_received;
1534   l_oke_chr_rec.date_sign_by_contractor := p_chr_rec.date_sign_by_contractor;
1535   l_oke_chr_rec.date_sign_by_customer  	:= p_chr_rec.date_sign_by_customer;
1536   l_oke_chr_rec.faa_approve_date 	:= p_chr_rec.faa_approve_date;
1537   l_oke_chr_rec.faa_reject_date  	:= p_chr_rec.faa_reject_date;
1538   l_oke_chr_rec.booked_flag		:= p_chr_rec.booked_flag;
1539   l_oke_chr_rec.open_flag		:= p_chr_rec.open_flag;
1540   l_oke_chr_rec.cfe_flag		:= p_chr_rec.cfe_flag;
1541   l_oke_chr_rec.vat_code		:= p_chr_rec.vat_code;
1542   l_oke_chr_rec.country_of_origin_code  := p_chr_rec.country_of_origin_code;
1543   l_oke_chr_rec.export_flag		:= p_chr_rec.export_flag;
1544   l_oke_chr_rec.human_subject_flag   	:= p_chr_rec.human_subject_flag;
1545   l_oke_chr_rec.cqa_flag		:= p_chr_rec.cqa_flag;
1546   l_oke_chr_rec.interim_rpt_req_flag   	:= p_chr_rec.interim_rpt_req_flag;
1547   l_oke_chr_rec.no_competition_authorize:= p_chr_rec.no_competition_authorize;
1548   l_oke_chr_rec.penalty_clause_flag   	:= p_chr_rec.penalty_clause_flag;
1549   l_oke_chr_rec.product_line_code   	:= p_chr_rec.product_line_code;
1550   l_oke_chr_rec.reporting_flag    	:= p_chr_rec.reporting_flag;
1551   l_oke_chr_rec.sb_plan_req_flag  	:= p_chr_rec.sb_plan_req_flag;
1552   l_oke_chr_rec.sb_report_flag 	  	:= p_chr_rec.sb_report_flag;
1553   l_oke_chr_rec.nte_amount 	  	:= p_chr_rec.nte_amount;
1554   l_oke_chr_rec.nte_warning_flag 	:= p_chr_rec.nte_warning_flag;
1555   l_oke_chr_rec.bill_without_def_flag   := p_chr_rec.bill_without_def_flag;
1556   l_oke_chr_rec.cas_flag	  	:= p_chr_rec.cas_flag;
1557   l_oke_chr_rec.classified_flag   	:= p_chr_rec.classified_flag;
1558   l_oke_chr_rec.client_approve_req_flag := p_chr_rec.client_approve_req_flag;
1559   l_oke_chr_rec.cost_of_money 	  	:= p_chr_rec.cost_of_money;
1560   l_oke_chr_rec.dcaa_audit_req_flag   	:= p_chr_rec.dcaa_audit_req_flag;
1561   l_oke_chr_rec.cost_share_flag 	:= p_chr_rec.cost_share_flag;
1562   l_oke_chr_rec.oh_rates_final_flag   	:= p_chr_rec.oh_rates_final_flag;
1563   l_oke_chr_rec.prop_delivery_location  := p_chr_rec.prop_delivery_location;
1564   l_oke_chr_rec.prop_due_date_time 	:= p_chr_rec.prop_due_date_time;
1565   l_oke_chr_rec.prop_expire_date 	:= p_chr_rec.prop_expire_date;
1566   l_oke_chr_rec.copies_required		:= p_chr_rec.copies_required;
1567   l_oke_chr_rec.sic_code 		:= p_chr_rec.sic_code;
1568   l_oke_chr_rec.tech_data_wh_rate   	:= p_chr_rec.tech_data_wh_rate;
1569   l_oke_chr_rec.progress_payment_flag	:= p_chr_rec.progress_payment_flag;
1570   l_oke_chr_rec.progress_payment_liq_rate:=p_chr_rec.progress_payment_liq_rate;
1571   l_oke_chr_rec.progress_payment_rate	:= p_chr_rec.progress_payment_rate;
1572   l_oke_chr_rec.alternate_liquidation_rate:=p_chr_rec.alternate_liquidation_rate;
1573   l_oke_chr_rec.prop_due_time		:= p_chr_rec.prop_due_time;
1574   l_oke_chr_rec.definitized_flag	:= p_chr_rec.definitized_flag;
1575   l_oke_chr_rec.financial_ctrl_verified_flag := p_chr_rec.financial_ctrl_verified_flag;
1576   l_oke_chr_rec.cost_of_sale_rate	:= p_chr_rec.cost_of_sale_rate;
1577   l_oke_chr_rec.created_by	  	:= p_chr_rec.created_by;
1578   l_oke_chr_rec.creation_date		:= p_chr_rec.creation_date;
1579   l_oke_chr_rec.last_updated_by   	:= p_chr_rec.last_updated_by;
1580   l_oke_chr_rec.last_update_login 	:= p_chr_rec.last_update_login;
1581   l_oke_chr_rec.last_update_date  	:= p_chr_rec.last_update_date;
1582   l_oke_chr_rec.line_value_total	:= p_chr_rec.line_value_total;
1583   l_oke_chr_rec.undef_line_value_total	:= p_chr_rec.undef_line_value_total;
1584   l_oke_chr_rec.owning_organization_id	:= p_chr_rec.owning_organization_id;
1585 
1586 
1587     l_okc_chrv_rec.id                             := p_chr_rec.k_header_id;
1588     l_okc_chrv_rec.object_version_number          := p_chr_rec.object_version_number;
1589     l_okc_chrv_rec.sfwt_flag                      := p_chr_rec.sfwt_flag;
1590     l_okc_chrv_rec.chr_id_response                := p_chr_rec.chr_id_response;
1591     l_okc_chrv_rec.chr_id_award                   := p_chr_rec.chr_id_award;
1592 
1593     l_okc_chrv_rec.INV_ORGANIZATION_ID            := p_chr_rec.INV_ORGANIZATION_ID;
1594     l_okc_chrv_rec.sts_code                       := p_chr_rec.sts_code;
1595     l_okc_chrv_rec.qcl_id                         := p_chr_rec.qcl_id;
1596     l_okc_chrv_rec.scs_code                       := p_chr_rec.scs_code;
1597     l_okc_chrv_rec.contract_number                := p_chr_rec.contract_number;
1598     l_okc_chrv_rec.currency_code                  := p_chr_rec.currency_code;
1599     l_okc_chrv_rec.contract_number_modifier       := p_chr_rec.contract_number_modifier;
1600     l_okc_chrv_rec.archived_yn                    := p_chr_rec.archived_yn;
1601     l_okc_chrv_rec.deleted_yn                     := p_chr_rec.deleted_yn;
1602     l_okc_chrv_rec.cust_po_number_req_yn          := p_chr_rec.cust_po_number_req_yn;
1603     l_okc_chrv_rec.pre_pay_req_yn                 := p_chr_rec.pre_pay_req_yn;
1604     l_okc_chrv_rec.cust_po_number                 := p_chr_rec.cust_po_number;
1605     l_okc_chrv_rec.short_description              := p_chr_rec.short_description;
1606     l_okc_chrv_rec.comments                       := p_chr_rec.comments;
1607     l_okc_chrv_rec.description                    := p_chr_rec.description;
1608     l_okc_chrv_rec.dpas_rating                    := p_chr_rec.dpas_rating;
1609     l_okc_chrv_rec.cognomen                       := p_chr_rec.cognomen;
1610     l_okc_chrv_rec.template_yn                    := p_chr_rec.template_yn;
1611     l_okc_chrv_rec.template_used                  := p_chr_rec.template_used;
1612     l_okc_chrv_rec.date_approved                  := p_chr_rec.date_approved;
1613     l_okc_chrv_rec.datetime_cancelled             := p_chr_rec.datetime_cancelled;
1614     l_okc_chrv_rec.auto_renew_days                := p_chr_rec.auto_renew_days;
1615     l_okc_chrv_rec.date_issued                    := p_chr_rec.date_issued;
1616     l_okc_chrv_rec.datetime_responded             := p_chr_rec.datetime_responded;
1617     l_okc_chrv_rec.non_response_reason            := p_chr_rec.non_response_reason;
1618     l_okc_chrv_rec.non_response_explain           := p_chr_rec.non_response_explain;
1619     l_okc_chrv_rec.rfp_type                       := p_chr_rec.rfp_type;
1620     l_okc_chrv_rec.chr_type                       := p_chr_rec.chr_type;
1621     l_okc_chrv_rec.keep_on_mail_list              := p_chr_rec. keep_on_mail_list;
1622     l_okc_chrv_rec.set_aside_reason               := p_chr_rec.set_aside_reason;
1623     l_okc_chrv_rec.set_aside_percent              := p_chr_rec.set_aside_percent;
1624     l_okc_chrv_rec.response_copies_req            := p_chr_rec.response_copies_req;
1625     l_okc_chrv_rec.date_close_projected           := p_chr_rec.date_close_projected;
1626     l_okc_chrv_rec.datetime_proposed              := p_chr_rec.datetime_proposed;
1627     l_okc_chrv_rec.date_signed                    := p_chr_rec.date_signed;
1628     l_okc_chrv_rec.date_terminated                := p_chr_rec.date_terminated;
1629     l_okc_chrv_rec.date_renewed                   := p_chr_rec.date_renewed;
1630     l_okc_chrv_rec.trn_code                       := p_chr_rec.trn_code;
1631     l_okc_chrv_rec.start_date                     := p_chr_rec.start_date;
1632     l_okc_chrv_rec.end_date                       := p_chr_rec.end_date;
1633     l_okc_chrv_rec.authoring_org_id               := p_chr_rec.authoring_org_id;
1634     l_okc_chrv_rec.buy_or_sell                    := p_chr_rec.buy_or_sell;
1635     l_okc_chrv_rec.issue_or_receive               := p_chr_rec.issue_or_receive;
1636     l_okc_chrv_rec.estimated_amount		  := p_chr_rec.estimated_amount;
1637 
1638     l_okc_chrv_rec.estimated_amount_renewed       := p_chr_rec.estimated_amount_renewed;
1639     l_okc_chrv_rec.currency_code_renewed	  := p_chr_rec.currency_code_renewed;
1640     l_okc_chrv_rec.upg_orig_system_ref            := p_chr_rec.upg_orig_system_ref;
1641     l_okc_chrv_rec.upg_orig_system_ref_id         := p_chr_rec.upg_orig_system_ref_id;
1642     l_okc_chrv_rec.attribute_category             := p_chr_rec.attribute_category;
1643     l_okc_chrv_rec.attribute1                     := p_chr_rec.attribute1;
1644     l_okc_chrv_rec.attribute2                     := p_chr_rec.attribute2;
1645     l_okc_chrv_rec.attribute3                     := p_chr_rec.attribute3;
1646     l_okc_chrv_rec.attribute4                     := p_chr_rec.attribute4;
1647     l_okc_chrv_rec.attribute5                     := p_chr_rec.attribute5;
1648     l_okc_chrv_rec.attribute6                     := p_chr_rec.attribute6;
1649     l_okc_chrv_rec.attribute7                     := p_chr_rec.attribute7;
1650     l_okc_chrv_rec.attribute8                     := p_chr_rec.attribute8;
1651     l_okc_chrv_rec.attribute9                     := p_chr_rec.attribute9;
1652     l_okc_chrv_rec.attribute10                    := p_chr_rec.attribute10;
1653     l_okc_chrv_rec.attribute11                    := p_chr_rec.attribute11;
1654     l_okc_chrv_rec.attribute12                    := p_chr_rec.attribute12;
1655     l_okc_chrv_rec.attribute13                    := p_chr_rec.attribute13;
1656     l_okc_chrv_rec.attribute14                    := p_chr_rec.attribute14;
1657     l_okc_chrv_rec.attribute15                    := p_chr_rec.attribute15;
1658     l_okc_chrv_rec.created_by                     := p_chr_rec.created_by;
1659     l_okc_chrv_rec.creation_date                  := p_chr_rec.creation_date;
1660     l_okc_chrv_rec.last_updated_by                := p_chr_rec.last_updated_by;
1661     l_okc_chrv_rec.last_update_date               := p_chr_rec.last_update_date;
1662     l_okc_chrv_rec.last_update_login              := p_chr_rec.last_update_login;
1663 
1664 
1665 
1666 
1667    If nvl(p_ignore_oke_validation,'N') = 'N' then
1668        Validate_OKC_header_fields ( l_return_status, p_chr_rec );
1669 
1670        --- If any errors happen abort API
1671        IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
1672          RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
1673        ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
1674          RAISE OKE_API.G_EXCEPTION_ERROR;
1675        END IF;
1676    end if;
1677 
1678 -- assign mandatory values
1679 	l_okc_chrv_rec.archived_yn := 'N';
1680 	l_okc_chrv_rec.deleted_yn  := 'N';
1681 	l_okc_chrv_rec.scs_code    := 'PROJECT';
1682 
1683 
1684 
1685 
1686 	OKE_CONTRACT_PUB.create_contract_header(
1687 			p_api_version		=>	p_api_version,
1688     			p_init_msg_list		=>	p_init_msg_list,
1689     			x_return_status		=>	x_return_status,
1690     			x_msg_count		=>	x_msg_count,
1691    			x_msg_data		=>	x_msg_data,
1692 			p_chr_rec		=>	l_oke_chr_rec,
1693 			p_chrv_rec		=>	l_okc_chrv_rec,
1694 			x_chr_rec		=>	l_out_chr,
1695 			x_chrv_rec		=>	l_out_chrv	);
1696 
1697     If (x_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
1698        raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
1699     Elsif (x_return_status = OKE_API.G_RET_STS_ERROR) then
1700        raise OKE_API.G_EXCEPTION_ERROR;
1701     End If;
1702 
1703 
1704 
1705 -- Added code to update who columns. neccessary for security to work after import process.
1706 
1707 IF p_chr_rec.created_by <> OKE_API.G_MISS_NUM AND p_chr_rec.created_by IS NOT NULL THEN
1708   UPDATE OKE_K_HEADERS SET CREATED_BY = p_chr_rec.created_by
1709   WHERE K_HEADER_ID = l_out_chr.k_header_id;
1710 END IF;
1711 IF p_chr_rec.creation_date <> OKE_API.G_MISS_DATE AND p_chr_rec.creation_date IS NOT NULL THEN
1712   UPDATE OKE_K_HEADERS SET CREATION_DATE = p_chr_rec.creation_date
1713   WHERE K_HEADER_ID = l_out_chr.k_header_id;
1714 END IF;
1715 IF p_chr_rec.last_updated_by <> OKE_API.G_MISS_NUM AND p_chr_rec.last_updated_by IS NOT NULL THEN
1716   UPDATE OKE_K_HEADERS SET LAST_UPDATED_BY = p_chr_rec.last_updated_by
1717   WHERE K_HEADER_ID = l_out_chr.k_header_id;
1718 END IF;
1719 IF p_chr_rec.last_update_login <> OKE_API.G_MISS_NUM AND p_chr_rec.last_update_login IS NOT NULL THEN
1720   UPDATE OKE_K_HEADERS SET LAST_UPDATE_LOGIN = p_chr_rec.last_update_login
1721   WHERE K_HEADER_ID = l_out_chr.k_header_id;
1722 END IF;
1723 IF p_chr_rec.last_update_date <> OKE_API.G_MISS_DATE AND p_chr_rec.last_update_date IS NOT NULL THEN
1724   UPDATE OKE_K_HEADERS SET LAST_UPDATE_DATE = p_chr_rec.last_update_date
1725   WHERE K_HEADER_ID = l_out_chr.k_header_id;
1726 END IF;
1727 
1728 -- Added code to update who columns. neccessary for security to work after import process.
1729 
1730 
1731 
1732 -- oke stuff
1733 
1734   x_chr_rec.k_header_id  	:= l_out_chr.k_header_id;
1735   x_chr_rec.program_id  	:= l_out_chr.program_id;
1736   x_chr_rec.project_id  	:= l_out_chr.project_id;
1737   x_chr_rec.boa_id  		:= l_out_chr.boa_id;
1738   x_chr_rec.k_type_code  	:= l_out_chr.k_type_code;
1739   x_chr_rec.priority_code  	:= l_out_chr.priority_code;
1740   x_chr_rec.prime_k_alias  	:= l_out_chr.prime_k_alias;
1741   x_chr_rec.prime_k_number  	:= l_out_chr.prime_k_number;
1742   x_chr_rec.authorize_date  	:= l_out_chr.authorize_date;
1743   x_chr_rec.authorizing_reason  := l_out_chr.authorizing_reason;
1744   x_chr_rec.award_cancel_date 	:= l_out_chr.award_cancel_date;
1745   x_chr_rec.award_date	  	:= l_out_chr.award_date;
1746   x_chr_rec.date_definitized  	:= l_out_chr.date_definitized;
1747   x_chr_rec.date_issued 	:= l_out_chr.date_issued;
1748   x_chr_rec.date_negotiated   	:= l_out_chr.date_negotiated;
1749   x_chr_rec.date_received 	:= l_out_chr.date_received;
1750   x_chr_rec.date_sign_by_contractor 	:= l_out_chr.date_sign_by_contractor;
1751   x_chr_rec.date_sign_by_customer 	:= l_out_chr.date_sign_by_customer;
1752   x_chr_rec.faa_approve_date 	  	:= l_out_chr.faa_approve_date;
1753   x_chr_rec.faa_reject_date 	  	:= l_out_chr.faa_reject_date;
1754   x_chr_rec.booked_flag		  	:= l_out_chr.booked_flag;
1755   x_chr_rec.open_flag		  	:= l_out_chr.open_flag;
1756   x_chr_rec.cfe_flag		  	:= l_out_chr.cfe_flag;
1757   x_chr_rec.vat_code		  	:= l_out_chr.vat_code;
1758   x_chr_rec.country_of_origin_code	:= l_out_chr.country_of_origin_code;
1759   x_chr_rec.export_flag		  	:= l_out_chr.export_flag;
1760   x_chr_rec.human_subject_flag    	:= l_out_chr.human_subject_flag;
1761   x_chr_rec.cqa_flag		  	:= l_out_chr.cqa_flag;
1762   x_chr_rec.interim_rpt_req_flag  	:= l_out_chr.interim_rpt_req_flag;
1763   x_chr_rec.no_competition_authorize   	:= l_out_chr.no_competition_authorize;
1764   x_chr_rec.penalty_clause_flag   	:= l_out_chr.penalty_clause_flag;
1765   x_chr_rec.product_line_code   	:= l_out_chr.product_line_code;
1766   x_chr_rec.reporting_flag    		:= l_out_chr.reporting_flag;
1767   x_chr_rec.sb_plan_req_flag  		:= l_out_chr.sb_plan_req_flag;
1768   x_chr_rec.sb_report_flag 	  	:= l_out_chr.sb_report_flag;
1769   x_chr_rec.nte_amount 	  		:= l_out_chr.nte_amount;
1770   x_chr_rec.nte_warning_flag 		:= l_out_chr.nte_warning_flag;
1771   x_chr_rec.bill_without_def_flag   	:= l_out_chr.bill_without_def_flag;
1772   x_chr_rec.cas_flag	  		:= l_out_chr.cas_flag;
1773   x_chr_rec.classified_flag   		:= l_out_chr.classified_flag;
1774   x_chr_rec.client_approve_req_flag 	:= l_out_chr.client_approve_req_flag;
1775   x_chr_rec.cost_of_money 	  	:= l_out_chr.cost_of_money;
1776   x_chr_rec.dcaa_audit_req_flag   	:= l_out_chr.dcaa_audit_req_flag;
1777   x_chr_rec.cost_share_flag 		:= l_out_chr.cost_share_flag;
1778   x_chr_rec.oh_rates_final_flag   	:= l_out_chr.oh_rates_final_flag;
1779   x_chr_rec.prop_delivery_location  	:= l_out_chr.prop_delivery_location;
1780   x_chr_rec.prop_due_date_time 		:= l_out_chr.prop_due_date_time;
1781   x_chr_rec.prop_expire_date 		:= l_out_chr.prop_expire_date;
1782   x_chr_rec.copies_required		:= l_out_chr.copies_required;
1783   x_chr_rec.sic_code 			:= l_out_chr.sic_code;
1784   x_chr_rec.tech_data_wh_rate   	:= l_out_chr.tech_data_wh_rate;
1785   x_chr_rec.progress_payment_flag	:= l_out_chr.progress_payment_flag;
1786   x_chr_rec.progress_payment_liq_rate	:= l_out_chr.progress_payment_liq_rate;
1787   x_chr_rec.progress_payment_rate	:= l_out_chr.progress_payment_rate;
1788   x_chr_rec.alternate_liquidation_rate	:= l_out_chr.alternate_liquidation_rate;
1789   x_chr_rec.prop_due_time		:= l_out_chr.prop_due_time;
1790   x_chr_rec.definitized_flag		:= l_out_chr.definitized_flag;
1791   x_chr_rec.financial_ctrl_verified_flag:= l_out_chr.financial_ctrl_verified_flag;
1792   x_chr_rec.cost_of_sale_rate		:= l_out_chr.cost_of_sale_rate;
1793   x_chr_rec.created_by	  		:= l_out_chr.created_by;
1794   x_chr_rec.creation_date		:= l_out_chr.creation_date;
1795   x_chr_rec.last_updated_by   		:= l_out_chr.last_updated_by;
1796   x_chr_rec.last_update_login 		:= l_out_chr.last_update_login;
1797   x_chr_rec.last_update_date  		:= l_out_chr.last_update_date;
1798   x_chr_rec.line_value_total		:= l_out_chr.line_value_total;
1799   x_chr_rec.undef_line_value_total	:= l_out_chr.undef_line_value_total;
1800   x_chr_rec.owning_organization_id	:= l_out_chr.owning_organization_id;
1801 
1802 
1803 
1804 	-- okc stuff
1805 	-- being later thereby overwriting the oke stuff if there is duplicate fields
1806 
1807     x_chr_rec.k_header_id                    := l_out_chrv.id;
1808     x_chr_rec.object_version_number          := l_out_chrv.object_version_number;
1809     x_chr_rec.sfwt_flag                      := l_out_chrv.sfwt_flag;
1810     x_chr_rec.chr_id_response                := l_out_chrv.chr_id_response;
1811     x_chr_rec.chr_id_award                   := l_out_chrv.chr_id_award;
1812 
1813     x_chr_rec.INV_ORGANIZATION_ID            := l_out_chrv.INV_ORGANIZATION_ID;
1814     x_chr_rec.sts_code                       := l_out_chrv.sts_code;
1815     x_chr_rec.qcl_id                         := l_out_chrv.qcl_id;
1816     x_chr_rec.scs_code                       := l_out_chrv.scs_code;
1817     x_chr_rec.contract_number                := l_out_chrv.contract_number;
1818     x_chr_rec.currency_code                  := l_out_chrv.currency_code;
1819     x_chr_rec.contract_number_modifier       := l_out_chrv.contract_number_modifier;
1820     x_chr_rec.archived_yn                    := l_out_chrv.archived_yn;
1821     x_chr_rec.deleted_yn                     := l_out_chrv.deleted_yn;
1822     x_chr_rec.cust_po_number_req_yn          := l_out_chrv.cust_po_number_req_yn;
1823     x_chr_rec.pre_pay_req_yn                 := l_out_chrv.pre_pay_req_yn;
1824     x_chr_rec.cust_po_number                 := l_out_chrv.cust_po_number;
1825     x_chr_rec.short_description              := l_out_chrv.short_description;
1826     x_chr_rec.comments                       := l_out_chrv.comments;
1827     x_chr_rec.description                    := l_out_chrv.description;
1828     x_chr_rec.dpas_rating                    := l_out_chrv.dpas_rating;
1829     x_chr_rec.cognomen                       := l_out_chrv.cognomen;
1830     x_chr_rec.template_yn                    := l_out_chrv.template_yn;
1831     x_chr_rec.template_used                  := l_out_chrv.template_used;
1832     x_chr_rec.date_approved                  := l_out_chrv.date_approved;
1833     x_chr_rec.datetime_cancelled             := l_out_chrv.datetime_cancelled;
1834     x_chr_rec.auto_renew_days                := l_out_chrv.auto_renew_days;
1835     x_chr_rec.date_issued                    := l_out_chrv.date_issued;
1836     x_chr_rec.datetime_responded             := l_out_chrv.datetime_responded;
1837     x_chr_rec.non_response_reason            := l_out_chrv.non_response_reason;
1838     x_chr_rec.non_response_explain           := l_out_chrv.non_response_explain;
1839     x_chr_rec.rfp_type                       := l_out_chrv.rfp_type;
1840     x_chr_rec.chr_type                       := l_out_chrv.chr_type;
1841     x_chr_rec.keep_on_mail_list              := l_out_chrv. keep_on_mail_list;
1842     x_chr_rec.set_aside_reason               := l_out_chrv.set_aside_reason;
1843     x_chr_rec.set_aside_percent              := l_out_chrv.set_aside_percent;
1844     x_chr_rec.response_copies_req            := l_out_chrv.response_copies_req;
1845     x_chr_rec.date_close_projected           := l_out_chrv.date_close_projected;
1846     x_chr_rec.datetime_proposed              := l_out_chrv.datetime_proposed;
1847     x_chr_rec.date_signed                    := l_out_chrv.date_signed;
1848     x_chr_rec.date_terminated                := l_out_chrv.date_terminated;
1849     x_chr_rec.date_renewed                   := l_out_chrv.date_renewed;
1850     x_chr_rec.trn_code                       := l_out_chrv.trn_code;
1851     x_chr_rec.start_date                     := l_out_chrv.start_date;
1852     x_chr_rec.end_date                       := l_out_chrv.end_date;
1853     x_chr_rec.authoring_org_id               := l_out_chrv.authoring_org_id;
1854     x_chr_rec.buy_or_sell                    := l_out_chrv.buy_or_sell;
1855     x_chr_rec.issue_or_receive               := l_out_chrv.issue_or_receive;
1856     x_chr_rec.estimated_amount		     := l_out_chrv.estimated_amount;
1857 
1858     x_chr_rec.estimated_amount_renewed       := l_out_chrv.estimated_amount_renewed;
1859     x_chr_rec.currency_code_renewed	     := l_out_chrv.currency_code_renewed;
1860     x_chr_rec.upg_orig_system_ref            := l_out_chrv.upg_orig_system_ref;
1861     x_chr_rec.upg_orig_system_ref_id         := l_out_chrv.upg_orig_system_ref_id;
1862     x_chr_rec.attribute_category             := l_out_chrv.attribute_category;
1863     x_chr_rec.attribute1                     := l_out_chrv.attribute1;
1864     x_chr_rec.attribute2                     := l_out_chrv.attribute2;
1865     x_chr_rec.attribute3                     := l_out_chrv.attribute3;
1866     x_chr_rec.attribute4                     := l_out_chrv.attribute4;
1867     x_chr_rec.attribute5                     := l_out_chrv.attribute5;
1868     x_chr_rec.attribute6                     := l_out_chrv.attribute6;
1869     x_chr_rec.attribute7                     := l_out_chrv.attribute7;
1870     x_chr_rec.attribute8                     := l_out_chrv.attribute8;
1871     x_chr_rec.attribute9                     := l_out_chrv.attribute9;
1872     x_chr_rec.attribute10                    := l_out_chrv.attribute10;
1873     x_chr_rec.attribute11                    := l_out_chrv.attribute11;
1874     x_chr_rec.attribute12                    := l_out_chrv.attribute12;
1875     x_chr_rec.attribute13                    := l_out_chrv.attribute13;
1876     x_chr_rec.attribute14                    := l_out_chrv.attribute14;
1877     x_chr_rec.attribute15                    := l_out_chrv.attribute15;
1878     x_chr_rec.created_by                     := l_out_chrv.created_by;
1879     x_chr_rec.creation_date                  := l_out_chrv.creation_date;
1880     x_chr_rec.last_updated_by                := l_out_chrv.last_updated_by;
1881     x_chr_rec.last_update_date               := l_out_chrv.last_update_date;
1882     x_chr_rec.last_update_login              := l_out_chrv.last_update_login;
1883 
1884 
1885 
1886     OKE_API.END_ACTIVITY(       x_msg_count     => x_msg_count,
1887                                 x_msg_data      => x_msg_data);
1888   EXCEPTION
1889     when OKE_API.G_EXCEPTION_ERROR then
1890       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
1891 			p_api_name  => l_api_name,
1892 			p_pkg_name  => g_pkg_name,
1893 			p_exc_name  => 'OKE_API.G_RET_STS_ERROR',
1894 			x_msg_count => x_msg_count,
1895 			x_msg_data  => x_msg_data,
1896 			p_api_type  => g_api_type);
1897 
1898     when OKE_API.G_EXCEPTION_UNEXPECTED_ERROR then
1899       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
1900 			p_api_name  => l_api_name,
1901 			p_pkg_name  => g_pkg_name,
1902 			p_exc_name  => 'OKE_API.G_RET_STS_UNEXP_ERROR',
1903 			x_msg_count => x_msg_count,
1904 			x_msg_data  => x_msg_data,
1905 			p_api_type  => g_api_type);
1906 
1907     when OTHERS then
1908       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
1909 			p_api_name  => l_api_name,
1910 			p_pkg_name  => g_pkg_name,
1911 			p_exc_name  => 'OTHERS',
1912 			x_msg_count => x_msg_count,
1913 			x_msg_data  => x_msg_data,
1914 			p_api_type  => g_api_type);
1915 
1916 END create_contract_header;
1917 
1918 
1919 PROCEDURE create_contract_line(
1920 
1921     p_api_version                  IN NUMBER,
1922     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
1923     x_return_status                OUT NOCOPY VARCHAR2,
1924     x_msg_count                    OUT NOCOPY NUMBER,
1925     x_msg_data                     OUT NOCOPY VARCHAR2,
1926     p_cle_rec			   IN  cle_rec_type,
1927     x_cle_rec			   OUT NOCOPY  cle_rec_type,
1928     p_skip_minor_vers              IN VARCHAR2 DEFAULT OKE_API.G_FALSE
1929 ) IS
1930 
1931     l_api_name          CONSTANT VARCHAR2(30) := 'CREATE_CONTRACT_LINE';
1932     l_api_version       CONSTANT NUMBER   := 1.0;
1933     l_return_status     VARCHAR2(1)               := OKE_API.G_RET_STS_SUCCESS;
1934 
1935     l_okc_clev_rec		OKC_CONTRACT_PUB.clev_rec_type;
1936     l_oke_cle_rec		OKE_CONTRACT_PUB.cle_rec_type;
1937     l_out_clev		OKC_CONTRACT_PUB.clev_rec_type;
1938     l_out_cle		OKE_CONTRACT_PUB.cle_rec_type;
1939 
1940     l_cimv_rec		CIMV_REC_TYPE;
1941     l_cimv_out		CIMV_REC_TYPE;
1942     l_inv_Org		NUMBER;
1943 
1944     CURSOR get_inventory_org (p_chr NUMBER)  IS
1945     SELECT inv_organization_id
1946     FROM OKC_K_HEADERS_B
1947     WHERE ID = p_chr;
1948 
1949 
1950 BEGIN
1951     -- call START_ACTIVITY to create savepoint, check compatibility
1952     -- and initialize message list
1953     l_return_status := OKE_API.START_ACTIVITY(
1954                         p_api_name      => l_api_name,
1955                         p_pkg_name      => g_pkg_name,
1956                         p_init_msg_list => p_init_msg_list,
1957                         l_api_version   => l_api_version,
1958                         p_api_version   => p_api_version,
1959                         p_api_type      => g_api_type,
1960                         x_return_status => x_return_status);
1961 
1962     -- check if activity started successfully
1963     If (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
1964        raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
1965     Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
1966        raise OKE_API.G_EXCEPTION_ERROR;
1967     End If;
1968 
1969 
1970 
1971 
1972   l_oke_cle_rec.k_line_id		:= p_cle_rec.k_line_id;
1973   l_oke_cle_rec.parent_line_id		:= p_cle_rec.parent_line_id;
1974   l_oke_cle_rec.project_id		:= p_cle_rec.project_id;
1975   l_oke_cle_rec.task_id			:= p_cle_rec.task_id;
1976   l_oke_cle_rec.billing_method_code	:= p_cle_rec.billing_method_code;
1977   l_oke_cle_rec.inventory_item_id	:= p_cle_rec.inventory_item_id;
1978   l_oke_cle_rec.delivery_order_flag	:= p_cle_rec.delivery_order_flag;
1979   l_oke_cle_rec.splited_flag		:= p_cle_rec.splited_flag;
1980   l_oke_cle_rec.priority_code		:= p_cle_rec.priority_code;
1981   l_oke_cle_rec.customer_item_id	:= p_cle_rec.customer_item_id;
1982   l_oke_cle_rec.customer_item_number	:= p_cle_rec.customer_item_number;
1983   l_oke_cle_rec.line_quantity		:= p_cle_rec.line_quantity;
1984   l_oke_cle_rec.delivery_date		:= p_cle_rec.delivery_date;
1985   l_oke_cle_rec.unit_price		:= p_cle_rec.unit_price;
1986   l_oke_cle_rec.uom_code		:= p_cle_rec.uom_code;
1987   l_oke_cle_rec.billable_flag		:= p_cle_rec.billable_flag;
1988   l_oke_cle_rec.shippable_flag		:= p_cle_rec.shippable_flag;
1989   l_oke_cle_rec.subcontracted_flag    	:= p_cle_rec.subcontracted_flag;
1990   l_oke_cle_rec.completed_flag		:= p_cle_rec.completed_flag;
1991   l_oke_cle_rec.nsp_flag		:= p_cle_rec.nsp_flag;
1992   l_oke_cle_rec.app_code		:= p_cle_rec.app_code;
1993   l_oke_cle_rec.as_of_date		:= p_cle_rec.as_of_date;
1994   l_oke_cle_rec.authority		:= p_cle_rec.authority;
1995   l_oke_cle_rec.country_of_origin_code 	:= p_cle_rec.country_of_origin_code;
1996   l_oke_cle_rec.drop_shipped_flag	:= p_cle_rec.drop_shipped_flag;
1997   l_oke_cle_rec.customer_approval_req_flag  := p_cle_rec.customer_approval_req_flag;
1998   l_oke_cle_rec.date_material_req	:= p_cle_rec.date_material_req;
1999   l_oke_cle_rec.inspection_req_flag	:= p_cle_rec.inspection_req_flag;
2000   l_oke_cle_rec.interim_rpt_req_flag	:= p_cle_rec.interim_rpt_req_flag;
2001   l_oke_cle_rec.subj_a133_flag		:= p_cle_rec.subj_a133_flag;
2002   l_oke_cle_rec.export_flag		:= p_cle_rec.export_flag;
2003   l_oke_cle_rec.cfe_req_flag		:= p_cle_rec.cfe_req_flag;
2004   l_oke_cle_rec.cop_required_flag	:= p_cle_rec.cop_required_flag;
2005   l_oke_cle_rec.export_license_num	:= p_cle_rec.export_license_num;
2006   l_oke_cle_rec.export_license_res    	:= p_cle_rec.export_license_res;
2007   l_oke_cle_rec.copies_required		:= p_cle_rec.copies_required;
2008   l_oke_cle_rec.cdrl_category		:= p_cle_rec.cdrl_category;
2009   l_oke_cle_rec.data_item_name		:= p_cle_rec.data_item_name;
2010   l_oke_cle_rec.data_item_subtitle	:= p_cle_rec.data_item_subtitle;
2011   l_oke_cle_rec.date_of_first_submission:= p_cle_rec.date_of_first_submission;
2012   l_oke_cle_rec.frequency		:= p_cle_rec.frequency;
2013   l_oke_cle_rec.requiring_office	:= p_cle_rec.requiring_office;
2014   l_oke_cle_rec.dcaa_audit_req_flag	:= p_cle_rec.dcaa_audit_req_flag;
2015   l_oke_cle_rec.definitized_flag	:= p_cle_rec.definitized_flag;
2016   l_oke_cle_rec.cost_of_money		:= p_cle_rec.cost_of_money;
2017   l_oke_cle_rec.bill_undefinitized_flag := p_cle_rec.bill_undefinitized_flag;
2018   l_oke_cle_rec.nsn_number		:= p_cle_rec.nsn_number;
2019   l_oke_cle_rec.nte_warning_flag	:= p_cle_rec.nte_warning_flag;
2020   l_oke_cle_rec.discount_for_payment	:= p_cle_rec.discount_for_payment;
2021   l_oke_cle_rec.financial_ctrl_flag	:= p_cle_rec.financial_ctrl_flag;
2022   l_oke_cle_rec.c_scs_flag		:= p_cle_rec.c_scs_flag;
2023   l_oke_cle_rec.c_ssr_flag		:= p_cle_rec.c_ssr_flag;
2024   l_oke_cle_rec.prepayment_amount	:= p_cle_rec.prepayment_amount;
2025   l_oke_cle_rec.prepayment_percentage  	:= p_cle_rec.prepayment_percentage;
2026   l_oke_cle_rec.progress_payment_flag 	:= p_cle_rec.progress_payment_flag;
2027   l_oke_cle_rec.progress_payment_liq_rate := p_cle_rec.progress_payment_liq_rate;
2028   l_oke_cle_rec.progress_payment_rate 	:= p_cle_rec.progress_payment_rate;
2029   l_oke_cle_rec.award_fee		:= p_cle_rec.award_fee;
2030   l_oke_cle_rec.award_fee_pool_amount 	:= p_cle_rec.award_fee_pool_amount;
2031   l_oke_cle_rec.base_fee		:= p_cle_rec.base_fee;
2032   l_oke_cle_rec.ceiling_cost		:= p_cle_rec.ceiling_cost;
2033   l_oke_cle_rec.ceiling_price		:= p_cle_rec.ceiling_price;
2034   l_oke_cle_rec.labor_cost_index	:= p_cle_rec.labor_cost_index;
2035   l_oke_cle_rec.material_cost_index	:= p_cle_rec.material_cost_index;
2036   l_oke_cle_rec.customers_percent_in_order 	:= p_cle_rec.customers_percent_in_order;
2037   l_oke_cle_rec.cost_overrun_share_ratio	:= p_cle_rec.cost_overrun_share_ratio;
2038   l_oke_cle_rec.cost_underrun_share_ratio	:= p_cle_rec.cost_underrun_share_ratio;
2039   l_oke_cle_rec.date_of_price_redetermin 	:= p_cle_rec.date_of_price_redetermin;
2040   l_oke_cle_rec.estimated_total_quantity 	:= p_cle_rec.estimated_total_quantity;
2041   l_oke_cle_rec.fee_ajt_formula		:= p_cle_rec.fee_ajt_formula;
2042   l_oke_cle_rec.final_fee		:= p_cle_rec.final_fee;
2043   l_oke_cle_rec.final_pft_ajt_formula 	:= p_cle_rec.final_pft_ajt_formula;
2044   l_oke_cle_rec.fixed_fee		:= p_cle_rec.fixed_fee;
2045   l_oke_cle_rec.fixed_quantity		:= p_cle_rec.fixed_quantity;
2046   l_oke_cle_rec.initial_fee		:= p_cle_rec.initial_fee;
2047   l_oke_cle_rec.initial_price		:= p_cle_rec.initial_price;
2048   l_oke_cle_rec.level_of_effort_hours 	:= p_cle_rec.level_of_effort_hours;
2049   l_oke_cle_rec.line_liquidation_rate 	:= p_cle_rec.line_liquidation_rate;
2050   l_oke_cle_rec.maximum_fee		:= p_cle_rec.maximum_fee;
2051   l_oke_cle_rec.maximum_quantity	:= p_cle_rec.maximum_quantity;
2052   l_oke_cle_rec.minimum_fee		:= p_cle_rec.minimum_fee;
2053   l_oke_cle_rec.minimum_quantity	:= p_cle_rec.minimum_quantity;
2054   l_oke_cle_rec.number_of_options	:= p_cle_rec.number_of_options;
2055   l_oke_cle_rec.revised_price		:= p_cle_rec.revised_price;
2056   l_oke_cle_rec.target_cost		:= p_cle_rec.target_cost;
2057   l_oke_cle_rec.target_date_definitize 	:= p_cle_rec.target_date_definitize;
2058   l_oke_cle_rec.target_fee	        := p_cle_rec.target_fee;
2059   l_oke_cle_rec.target_price		:= p_cle_rec.target_price;
2060   l_oke_cle_rec.total_estimated_cost  	:= p_cle_rec.total_estimated_cost;
2061   l_oke_cle_rec.proposal_due_date	:= p_cle_rec.proposal_due_date;
2062   l_oke_cle_rec.cost_of_sale_rate	:= p_cle_rec.cost_of_sale_rate;
2063   l_oke_cle_rec.created_by	        := p_cle_rec.created_by;
2064   l_oke_cle_rec.creation_date		:= p_cle_rec.creation_date;
2065   l_oke_cle_rec.last_updated_by		:= p_cle_rec.last_updated_by;
2066   l_oke_cle_rec.last_update_login	:= p_cle_rec.last_update_login;
2067   l_oke_cle_rec.last_update_date      	:= p_cle_rec.last_update_date;
2068   l_oke_cle_rec.line_value		:= p_cle_rec.line_value;
2069   l_oke_cle_rec.line_value_total	:= p_cle_rec.line_value_total;
2070   l_oke_cle_rec.end_date                := p_cle_rec.end_date;
2071 
2072   l_oke_cle_rec.undef_line_value	:= p_cle_rec.undef_line_value;
2073   l_oke_cle_rec.undef_line_value_total	:= p_cle_rec.undef_line_value_total;
2074   l_oke_cle_rec.undef_unit_price        := p_cle_rec.undef_unit_price;
2075 
2076     l_okc_clev_rec.id                      	:= p_cle_rec.k_line_id;
2077     l_okc_clev_rec.object_version_number    	:= p_cle_rec.object_version_number;
2078     l_okc_clev_rec.sfwt_flag                	:= p_cle_rec.sfwt_flag;
2079     l_okc_clev_rec.chr_id                    	:= p_cle_rec.chr_id;
2080     l_okc_clev_rec.cle_id                    	:= p_cle_rec.cle_id;
2081     l_okc_clev_rec.lse_id                     	:= p_cle_rec.lse_id;
2082     l_okc_clev_rec.line_number               	:= p_cle_rec.line_number;
2083     l_okc_clev_rec.sts_code                  	:= p_cle_rec.sts_code;
2084     l_okc_clev_rec.display_sequence           	:= p_cle_rec.display_sequence;
2085     l_okc_clev_rec.trn_code                   	:= p_cle_rec.trn_code  ;
2086     l_okc_clev_rec.dnz_chr_id                 	:= p_cle_rec.dnz_chr_id  ;
2087     l_okc_clev_rec.comments                   	:= p_cle_rec.comments    ;
2088     l_okc_clev_rec.item_description           	:= p_cle_rec.item_description   ;
2089     l_okc_clev_rec.oke_boe_description        	:= p_cle_rec.oke_boe_description;
2090     l_okc_clev_rec.hidden_ind                 	:= p_cle_rec.hidden_ind   ;
2091     l_okc_clev_rec.price_unit			:= p_cle_rec.price_unit;
2092     l_okc_clev_rec.price_unit_percent		:= p_cle_rec.price_unit_percent;
2093     l_okc_clev_rec.price_negotiated           	:= p_cle_rec.price_negotiated;
2094     l_okc_clev_rec.price_negotiated_renewed     := p_cle_rec.price_negotiated_renewed;
2095     l_okc_clev_rec.price_level_ind    		:= p_cle_rec.price_level_ind;
2096     l_okc_clev_rec.invoice_line_level_ind       := p_cle_rec.invoice_line_level_ind;
2097     l_okc_clev_rec.dpas_rating                  := p_cle_rec.dpas_rating;
2098     l_okc_clev_rec.block23text                  := p_cle_rec.block23text;
2099     l_okc_clev_rec.exception_yn                 := p_cle_rec.exception_yn;
2100     l_okc_clev_rec.template_used                := p_cle_rec.template_used;
2101     l_okc_clev_rec.date_terminated              := p_cle_rec.date_terminated;
2102     l_okc_clev_rec.name                         := p_cle_rec.name;
2103     l_okc_clev_rec.start_date                   := p_cle_rec.start_date;
2104 
2105     l_okc_clev_rec.upg_orig_system_ref          := p_cle_rec.upg_orig_system_ref;
2106     l_okc_clev_rec.upg_orig_system_ref_id       := p_cle_rec.upg_orig_system_ref_id;
2107     l_okc_clev_rec.attribute_category           := p_cle_rec.attribute_category;
2108     l_okc_clev_rec.attribute1                   := p_cle_rec.attribute1;
2109     l_okc_clev_rec.attribute2                   := p_cle_rec.attribute2;
2110     l_okc_clev_rec.attribute3                   := p_cle_rec.attribute3;
2111     l_okc_clev_rec.attribute4                   := p_cle_rec.attribute4;
2112     l_okc_clev_rec.attribute5                   := p_cle_rec.attribute5;
2113     l_okc_clev_rec.attribute6                   := p_cle_rec.attribute6;
2114     l_okc_clev_rec.attribute7                   := p_cle_rec.attribute7;
2115     l_okc_clev_rec.attribute8                   := p_cle_rec.attribute8;
2116     l_okc_clev_rec.attribute9                   := p_cle_rec.attribute9;
2117     l_okc_clev_rec.attribute10                  := p_cle_rec.attribute10;
2118     l_okc_clev_rec.attribute11                  := p_cle_rec.attribute11;
2119     l_okc_clev_rec.attribute12                  := p_cle_rec.attribute12;
2120     l_okc_clev_rec.attribute13                  := p_cle_rec.attribute13;
2121     l_okc_clev_rec.attribute14                  := p_cle_rec.attribute14;
2122     l_okc_clev_rec.attribute15                  := p_cle_rec.attribute15;
2123     l_okc_clev_rec.created_by                   := p_cle_rec.created_by;
2124     l_okc_clev_rec.creation_date                := p_cle_rec.creation_date;
2125     l_okc_clev_rec.last_updated_by              := p_cle_rec.last_updated_by;
2126     l_okc_clev_rec.last_update_date             := p_cle_rec.last_update_date;
2127     l_okc_clev_rec.price_type                   := p_cle_rec.price_type;
2128     l_okc_clev_rec.currency_code                := p_cle_rec.currency_code;
2129     l_okc_clev_rec.currency_code_renewed	:= p_cle_rec.currency_code_renewed;
2130     l_okc_clev_rec.last_update_login            := p_cle_rec.last_update_login;
2131 
2132 
2133 
2134     Validate_OKC_line_fields ( l_return_status, p_cle_rec );
2135 
2136     --- If any errors happen abort API
2137     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
2138       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
2139     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
2140       RAISE OKE_API.G_EXCEPTION_ERROR;
2141     END IF;
2142 
2143   /*skuchima bugs 14380256 */
2144     IF (FND_API.G_TRUE = p_skip_minor_vers ) THEN
2145        okc_cvm_pvt.defer_minor_version_update('T');
2146       end if;
2147 
2148 	OKE_CONTRACT_PUB.create_contract_line(
2149 			p_api_version		=>	p_api_version,
2150     			p_init_msg_list		=>	p_init_msg_list,
2151     			x_return_status		=>	x_return_status,
2152     			x_msg_count		=>	x_msg_count,
2153    			x_msg_data		=>	x_msg_data,
2154 			p_cle_rec		=>	l_oke_cle_rec,
2155 			p_clev_rec		=>	l_okc_clev_rec,
2156 			x_cle_rec		=>	l_out_cle,
2157 			x_clev_rec		=>	l_out_clev	);
2158 
2159        okc_cvm_pvt.defer_minor_version_update('F');
2160 
2161     If (x_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
2162        raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
2163     Elsif (x_return_status = OKE_API.G_RET_STS_ERROR) then
2164        raise OKE_API.G_EXCEPTION_ERROR;
2165     End If;
2166 
2167 
2168   x_cle_rec.k_line_id			:= l_out_cle.k_line_id;
2169   x_cle_rec.parent_line_id		:= l_out_cle.parent_line_id;
2170   x_cle_rec.project_id			:= l_out_cle.project_id;
2171   x_cle_rec.task_id			:= l_out_cle.task_id;
2172   x_cle_rec.billing_method_code		:= l_out_cle.billing_method_code;
2173   x_cle_rec.inventory_item_id		:= l_out_cle.inventory_item_id;
2174   x_cle_rec.delivery_order_flag		:= l_out_cle.delivery_order_flag;
2175   x_cle_rec.splited_flag		:= l_out_cle.splited_flag;
2176   x_cle_rec.priority_code		:= l_out_cle.priority_code;
2177   x_cle_rec.customer_item_id		:= l_out_cle.customer_item_id;
2178   x_cle_rec.customer_item_number	:= l_out_cle.customer_item_number;
2179   x_cle_rec.line_quantity		:= l_out_cle.line_quantity;
2180   x_cle_rec.delivery_date		:= l_out_cle.delivery_date;
2181   x_cle_rec.unit_price			:= l_out_cle.unit_price;
2182   x_cle_rec.uom_code			:= l_out_cle.uom_code;
2183   x_cle_rec.billable_flag		:= l_out_cle.billable_flag;
2184   x_cle_rec.shippable_flag		:= l_out_cle.shippable_flag;
2185   x_cle_rec.subcontracted_flag    	:= l_out_cle.subcontracted_flag;
2186   x_cle_rec.completed_flag		:= l_out_cle.completed_flag;
2187   x_cle_rec.nsp_flag			:= l_out_cle.nsp_flag;
2188   x_cle_rec.app_code			:= l_out_cle.app_code;
2189   x_cle_rec.as_of_date			:= l_out_cle.as_of_date;
2190   x_cle_rec.authority			:= l_out_cle.authority;
2191   x_cle_rec.country_of_origin_code 	:= l_out_cle.country_of_origin_code;
2192   x_cle_rec.drop_shipped_flag		:= l_out_cle.drop_shipped_flag;
2193   x_cle_rec.customer_approval_req_flag  := l_out_cle.customer_approval_req_flag;
2194   x_cle_rec.date_material_req		:= l_out_cle.date_material_req;
2195   x_cle_rec.inspection_req_flag		:= l_out_cle.inspection_req_flag;
2196   x_cle_rec.interim_rpt_req_flag	:= l_out_cle.interim_rpt_req_flag;
2197   x_cle_rec.subj_a133_flag		:= l_out_cle.subj_a133_flag;
2198   x_cle_rec.export_flag			:= l_out_cle.export_flag;
2199   x_cle_rec.cfe_req_flag		:= l_out_cle.cfe_req_flag;
2200   x_cle_rec.cop_required_flag		:= l_out_cle.cop_required_flag;
2201   x_cle_rec.export_license_num		:= l_out_cle.export_license_num;
2202   x_cle_rec.export_license_res    	:= l_out_cle.export_license_res;
2203   x_cle_rec.copies_required		:= l_out_cle.copies_required;
2204   x_cle_rec.cdrl_category		:= l_out_cle.cdrl_category;
2205   x_cle_rec.data_item_name		:= l_out_cle.data_item_name;
2206   x_cle_rec.data_item_subtitle		:= l_out_cle.data_item_subtitle;
2207   x_cle_rec.date_of_first_submission	:= l_out_cle.date_of_first_submission;
2208   x_cle_rec.frequency			:= l_out_cle.frequency;
2209   x_cle_rec.requiring_office		:= l_out_cle.requiring_office;
2210   x_cle_rec.dcaa_audit_req_flag		:= l_out_cle.dcaa_audit_req_flag;
2211   x_cle_rec.definitized_flag		:= l_out_cle.definitized_flag;
2212   x_cle_rec.cost_of_money		:= l_out_cle.cost_of_money;
2213   x_cle_rec.bill_undefinitized_flag 	:= l_out_cle.bill_undefinitized_flag;
2214   x_cle_rec.nsn_number			:= l_out_cle.nsn_number;
2215   x_cle_rec.nte_warning_flag		:= l_out_cle.nte_warning_flag;
2216   x_cle_rec.discount_for_payment	:= l_out_cle.discount_for_payment;
2217   x_cle_rec.financial_ctrl_flag		:= l_out_cle.financial_ctrl_flag;
2218   x_cle_rec.c_scs_flag			:= l_out_cle.c_scs_flag;
2219   x_cle_rec.c_ssr_flag			:= l_out_cle.c_ssr_flag;
2220   x_cle_rec.prepayment_amount		:= l_out_cle.prepayment_amount;
2221   x_cle_rec.prepayment_percentage  	:= l_out_cle.prepayment_percentage;
2222   x_cle_rec.progress_payment_flag 	:= l_out_cle.progress_payment_flag;
2223   x_cle_rec.progress_payment_liq_rate 	:= l_out_cle.progress_payment_liq_rate;
2224   x_cle_rec.progress_payment_rate 	:= l_out_cle.progress_payment_rate;
2225   x_cle_rec.award_fee			:= l_out_cle.award_fee;
2226   x_cle_rec.award_fee_pool_amount 	:= l_out_cle.award_fee_pool_amount;
2227   x_cle_rec.base_fee			:= l_out_cle.base_fee;
2228   x_cle_rec.ceiling_cost		:= l_out_cle.ceiling_cost;
2229   x_cle_rec.ceiling_price		:= l_out_cle.ceiling_price;
2230   x_cle_rec.labor_cost_index		:= l_out_cle.labor_cost_index;
2231   x_cle_rec.material_cost_index		:= l_out_cle.material_cost_index;
2232   x_cle_rec.customers_percent_in_order 	:= l_out_cle.customers_percent_in_order;
2233   x_cle_rec.cost_overrun_share_ratio	:= l_out_cle.cost_overrun_share_ratio;
2234   x_cle_rec.cost_underrun_share_ratio	:= l_out_cle.cost_underrun_share_ratio;
2235   x_cle_rec.date_of_price_redetermin 	:= l_out_cle.date_of_price_redetermin;
2236   x_cle_rec.estimated_total_quantity 	:= l_out_cle.estimated_total_quantity;
2237   x_cle_rec.fee_ajt_formula		:= l_out_cle.fee_ajt_formula;
2238   x_cle_rec.final_fee			:= l_out_cle.final_fee;
2239   x_cle_rec.final_pft_ajt_formula 	:= l_out_cle.final_pft_ajt_formula;
2240   x_cle_rec.fixed_fee			:= l_out_cle.fixed_fee;
2241   x_cle_rec.fixed_quantity		:= l_out_cle.fixed_quantity;
2242   x_cle_rec.initial_fee			:= l_out_cle.initial_fee;
2243   x_cle_rec.initial_price		:= l_out_cle.initial_price;
2244   x_cle_rec.level_of_effort_hours 	:= l_out_cle.level_of_effort_hours;
2245   x_cle_rec.line_liquidation_rate 	:= l_out_cle.line_liquidation_rate;
2246   x_cle_rec.maximum_fee			:= l_out_cle.maximum_fee;
2247   x_cle_rec.maximum_quantity		:= l_out_cle.maximum_quantity;
2248   x_cle_rec.minimum_fee			:= l_out_cle.minimum_fee;
2249   x_cle_rec.minimum_quantity		:= l_out_cle.minimum_quantity;
2250   x_cle_rec.number_of_options		:= l_out_cle.number_of_options;
2251   x_cle_rec.revised_price		:= l_out_cle.revised_price;
2252   x_cle_rec.target_cost			:= l_out_cle.target_cost;
2253   x_cle_rec.target_date_definitize 	:= l_out_cle.target_date_definitize;
2254   x_cle_rec.target_fee	        	:= l_out_cle.target_fee;
2255   x_cle_rec.target_price		:= l_out_cle.target_price;
2256   x_cle_rec.total_estimated_cost  	:= l_out_cle.total_estimated_cost;
2257   x_cle_rec.proposal_due_date		:= l_out_cle.proposal_due_date;
2258   x_cle_rec.cost_of_sale_rate		:= l_out_cle.cost_of_sale_rate;
2259   x_cle_rec.created_by	     	   	:= l_out_cle.created_by;
2260   x_cle_rec.creation_date		:= l_out_cle.creation_date;
2261   x_cle_rec.last_updated_by		:= l_out_cle.last_updated_by;
2262   x_cle_rec.last_update_login		:= l_out_cle.last_update_login;
2263   x_cle_rec.last_update_date      	:= l_out_cle.last_update_date;
2264   x_cle_rec.line_value		      	:= l_out_cle.line_value;
2265   x_cle_rec.line_value_total      	:= l_out_cle.line_value_total;
2266   x_cle_rec.end_date                    := l_out_cle.end_date;
2267 
2268   x_cle_rec.undef_line_value		      	:= l_out_cle.undef_line_value;
2269   x_cle_rec.undef_line_value_total      	:= l_out_cle.undef_line_value_total;
2270   x_cle_rec.undef_unit_price                    := l_out_cle.undef_unit_price;
2271 
2272 
2273     x_cle_rec.k_line_id                     	:= l_out_clev.id;
2274     x_cle_rec.object_version_number    		:= l_out_clev.object_version_number;
2275     x_cle_rec.sfwt_flag                		:= l_out_clev.sfwt_flag;
2276     x_cle_rec.chr_id                    	:= l_out_clev.chr_id;
2277     x_cle_rec.cle_id                    	:= l_out_clev.cle_id;
2278 
2279     x_cle_rec.lse_id                     	:= l_out_clev.lse_id;
2280     x_cle_rec.line_number               	:= l_out_clev.line_number;
2281     x_cle_rec.sts_code                  	:= l_out_clev.sts_code;
2282     x_cle_rec.display_sequence           	:= l_out_clev.display_sequence;
2283     x_cle_rec.trn_code                   	:= l_out_clev.trn_code  ;
2284     x_cle_rec.dnz_chr_id                 	:= l_out_clev.dnz_chr_id  ;
2285     x_cle_rec.comments                   	:= l_out_clev.comments    ;
2286     x_cle_rec.item_description           	:= l_out_clev.item_description   ;
2287     x_cle_rec.oke_boe_description        	:= l_out_clev.oke_boe_description;
2288     x_cle_rec.hidden_ind                 	:= l_out_clev.hidden_ind   ;
2289     x_cle_rec.price_unit			:= l_out_clev.price_unit;
2290     x_cle_rec.price_unit_percent		:= l_out_clev.price_unit_percent;
2291     x_cle_rec.price_negotiated           	:= l_out_clev.price_negotiated;
2292     x_cle_rec.price_negotiated_renewed     	:= l_out_clev.price_negotiated_renewed;
2293     x_cle_rec.price_level_ind    		:= l_out_clev.price_level_ind;
2294     x_cle_rec.invoice_line_level_ind       	:= l_out_clev.invoice_line_level_ind;
2295     x_cle_rec.dpas_rating                  	:= l_out_clev.dpas_rating;
2296     x_cle_rec.block23text                  	:= l_out_clev.block23text;
2297     x_cle_rec.exception_yn                	:= l_out_clev.exception_yn;
2298     x_cle_rec.template_used                	:= l_out_clev.template_used;
2299     x_cle_rec.date_terminated              	:= l_out_clev.date_terminated;
2300     x_cle_rec.name                         	:= l_out_clev.name;
2301     x_cle_rec.start_date                   	:= l_out_clev.start_date;
2302 
2303     x_cle_rec.upg_orig_system_ref          	:= l_out_clev.upg_orig_system_ref;
2304     x_cle_rec.upg_orig_system_ref_id       	:= l_out_clev.upg_orig_system_ref_id;
2305     x_cle_rec.attribute_category           	:= l_out_clev.attribute_category;
2306     x_cle_rec.attribute1                   	:= l_out_clev.attribute1;
2307     x_cle_rec.attribute2                   	:= l_out_clev.attribute2;
2308     x_cle_rec.attribute3                   	:= l_out_clev.attribute3;
2309     x_cle_rec.attribute4                   	:= l_out_clev.attribute4;
2310     x_cle_rec.attribute5                   	:= l_out_clev.attribute5;
2311     x_cle_rec.attribute6                   	:= l_out_clev.attribute6;
2312     x_cle_rec.attribute7                   	:= l_out_clev.attribute7;
2313     x_cle_rec.attribute8                   	:= l_out_clev.attribute8;
2314     x_cle_rec.attribute9                  	:= l_out_clev.attribute9;
2315     x_cle_rec.attribute10                  	:= l_out_clev.attribute10;
2316     x_cle_rec.attribute11                  	:= l_out_clev.attribute11;
2317     x_cle_rec.attribute12                  	:= l_out_clev.attribute12;
2318     x_cle_rec.attribute13                  	:= l_out_clev.attribute13;
2319     x_cle_rec.attribute14                  	:= l_out_clev.attribute14;
2320     x_cle_rec.attribute15                  	:= l_out_clev.attribute15;
2321     x_cle_rec.created_by                   	:= l_out_clev.created_by;
2322     x_cle_rec.creation_date                	:= l_out_clev.creation_date;
2323     x_cle_rec.last_updated_by              	:= l_out_clev.last_updated_by;
2324     x_cle_rec.last_update_date             	:= l_out_clev.last_update_date;
2325     x_cle_rec.price_type                   	:= l_out_clev.price_type;
2326     x_cle_rec.currency_code                	:= l_out_clev.currency_code;
2327     x_cle_rec.currency_code_renewed		:= l_out_clev.currency_code_renewed;
2328     x_cle_rec.last_update_login            	:= l_out_clev.last_update_login;
2329 
2330 
2331 -- IF successful: create line item if necessary
2332     IF x_return_status = OKE_API.G_RET_STS_SUCCESS
2333 	AND x_cle_rec.inventory_item_id IS NOT NULL THEN
2334 
2335 	OPEN get_inventory_org (x_cle_rec.DNZ_CHR_ID);
2336 	FETCH get_inventory_org INTO l_inv_org;
2337 	CLOSE get_inventory_org;
2338 
2339 	l_cimv_rec.DNZ_CHR_ID := x_cle_rec.DNZ_CHR_ID;
2340 	l_cimv_rec.CLE_ID := x_cle_rec.K_LINE_ID;
2341 	l_cimv_rec.EXCEPTION_YN := 'N';
2342 	l_cimv_rec.PRICED_ITEM_YN := 'N';
2343 	l_cimv_rec.OBJECT1_ID1 := x_cle_rec.inventory_item_id;
2344 	l_cimv_rec.OBJECT1_ID2 := l_inv_org;
2345 	l_cimv_rec.JTOT_OBJECT1_CODE := 'OKE_ITEMS';
2346 	l_cimv_rec.UOM_CODE := x_cle_rec.UOM_CODE;
2347 	l_cimv_rec.NUMBER_OF_ITEMS := x_cle_rec.LINE_QUANTITY;
2348 	l_cimv_rec.CREATED_BY := x_cle_rec.CREATED_BY;
2349 	l_cimv_rec.CREATION_DATE := x_cle_rec.CREATION_DATE;
2350 	l_cimv_rec.LAST_UPDATED_BY := x_cle_rec.LAST_UPDATED_BY;
2351 	l_cimv_rec.LAST_UPDATE_DATE := x_cle_rec.LAST_UPDATE_DATE;
2352 	l_cimv_rec.LAST_UPDATE_LOGIN := x_cle_rec.LAST_UPDATE_LOGIN;
2353 
2354 
2355         OKC_CONTEXT.Set_OKC_Org_Context( p_chr_id => x_cle_rec.DNZ_CHR_ID );
2356 
2357 
2358 	Create_Line_Item (
2359 			p_api_version		=>	p_api_version,
2360     			p_init_msg_list		=>	p_init_msg_list,
2361     			x_return_status		=>	x_return_status,
2362     			x_msg_count		=>	x_msg_count,
2363    			x_msg_data		=>	x_msg_data,
2364 			p_cimv_rec		=>	l_cimv_rec,
2365 			x_cimv_rec		=>	l_cimv_out	);
2366 
2367     	If (x_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
2368        		raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
2369     	Elsif (x_return_status = OKE_API.G_RET_STS_ERROR) then
2370        		raise OKE_API.G_EXCEPTION_ERROR;
2371     	End If;
2372 
2373     END IF;
2374 
2375 
2376     OKE_API.END_ACTIVITY(       x_msg_count     => x_msg_count,
2377                                 x_msg_data      => x_msg_data);
2378   EXCEPTION
2379     when OKE_API.G_EXCEPTION_ERROR then
2380       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
2381 			p_api_name  => l_api_name,
2382 			p_pkg_name  => g_pkg_name,
2383 			p_exc_name  => 'OKE_API.G_RET_STS_ERROR',
2384 			x_msg_count => x_msg_count,
2385 			x_msg_data  => x_msg_data,
2386 			p_api_type  => g_api_type);
2387 
2388     when OKE_API.G_EXCEPTION_UNEXPECTED_ERROR then
2389       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
2390 			p_api_name  => l_api_name,
2391 			p_pkg_name  => g_pkg_name,
2392 			p_exc_name  => 'OKE_API.G_RET_STS_UNEXP_ERROR',
2393 			x_msg_count => x_msg_count,
2394 			x_msg_data  => x_msg_data,
2395 			p_api_type  => g_api_type);
2396 
2397     when OTHERS then
2398       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
2399 			p_api_name  => l_api_name,
2400 			p_pkg_name  => g_pkg_name,
2401 			p_exc_name  => 'OTHERS',
2402 			x_msg_count => x_msg_count,
2403 			x_msg_data  => x_msg_data,
2404 			p_api_type  => g_api_type);
2405 
2406 END create_contract_line;
2407 
2408 
2409 
2410 PROCEDURE create_deliverable(
2411 
2412     p_api_version                  IN NUMBER,
2413     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
2414     x_return_status                OUT NOCOPY VARCHAR2,
2415     x_msg_count                    OUT NOCOPY NUMBER,
2416     x_msg_data                     OUT NOCOPY VARCHAR2,
2417 
2418     p_del_rec			   IN  del_rec_type,
2419     x_del_rec			   OUT NOCOPY  del_rec_type) IS
2420 
2421     l_api_name          CONSTANT VARCHAR2(30) := 'CREATE_DELIVERABLE';
2422     l_api_version       CONSTANT NUMBER   := 1.0;
2423     l_return_status     VARCHAR2(1)               := OKE_API.G_RET_STS_SUCCESS;
2424 
2425     l_del_rec		OKE_CONTRACT_PUB.del_rec_type;
2426 
2427     CURSOR get_inv_org IS
2428     SELECT INV_ORGANIZATION_ID
2429     FROM OKC_K_HEADERS_B
2430     WHERE ID = p_del_rec.k_header_id;
2431 
2432     CURSOR get_intent IS
2433     SELECT BUY_OR_SELL
2434     FROM OKC_K_HEADERS_B
2435     WHERE ID = p_del_rec.k_header_id;
2436      l_sts_code VARCHAR2(30);
2437 
2438   Cursor l_sts_csr Is
2439   		SELECT CODE
2440   		FROM OKC_STATUSES_V
2441   		WHERE STE_CODE = 'ENTERED'
2442   		AND DEFAULT_YN = 'Y'
2443   		AND sysdate BETWEEN START_DATE AND nvl(END_DATE,sysdate);
2444 
2445     l_intent VARCHAR2(10);
2446 
2447   FUNCTION null_out_defaults(
2448 	 p_del_rec	IN del_rec_type) RETURN del_rec_type IS
2449 
2450   l_del_rec del_rec_type := p_del_rec;
2451 
2452   BEGIN
2453 
2454 
2455     IF  l_del_rec.DELIVERABLE_ID = OKE_API.G_MISS_NUM THEN
2456         l_del_rec.DELIVERABLE_ID := NULL;
2457     END IF;
2458 
2459     IF  l_del_rec.DELIVERABLE_NUM = OKE_API.G_MISS_CHAR THEN
2460 	l_del_rec.DELIVERABLE_NUM := NULL;
2461     END IF;
2462 
2463     IF  l_del_rec.PROJECT_ID = OKE_API.G_MISS_NUM THEN
2464 	l_del_rec.PROJECT_ID := NULL;
2465     END IF;
2466 
2467     IF  l_del_rec.TASK_ID = OKE_API.G_MISS_NUM THEN
2468       	l_del_rec.TASK_ID := NULL;
2469     END IF;
2470 
2471     IF	l_del_rec.ITEM_ID = OKE_API.G_MISS_NUM THEN
2472         l_del_rec.ITEM_ID := NULL;
2473     END IF;
2474 
2475     IF	l_del_rec.K_HEADER_ID = OKE_API.G_MISS_NUM THEN
2476         l_del_rec.K_HEADER_ID := NULL;
2477     END IF;
2478 
2479     IF	l_del_rec.K_LINE_ID = OKE_API.G_MISS_NUM THEN
2480 	l_del_rec.K_LINE_ID := NULL;
2481     END IF;
2482 
2483     IF	l_del_rec.DELIVERY_DATE = OKE_API.G_MISS_DATE THEN
2484 	l_del_rec.DELIVERY_DATE := NULL;
2485     END IF;
2486 
2487     IF  l_del_rec.STATUS_CODE = OKE_API.G_MISS_CHAR THEN
2488 	l_del_rec.STATUS_CODE	:= NULL;
2489     END IF;
2490 
2491     IF	l_del_rec.PARENT_DELIVERABLE_ID = OKE_API.G_MISS_NUM THEN
2492 	l_del_rec.PARENT_DELIVERABLE_ID := NULL;
2493     END IF;
2494 
2495     IF	l_del_rec.SHIP_TO_ORG_ID = OKE_API.G_MISS_NUM THEN
2496 	l_del_rec.SHIP_TO_ORG_ID := NULL;
2497     END IF;
2498 
2499     IF	l_del_rec.SHIP_TO_LOCATION_ID = OKE_API.G_MISS_NUM THEN
2500 	l_del_rec.SHIP_TO_LOCATION_ID := NULL;
2501     END IF;
2502 
2503     IF	l_del_rec.SHIP_FROM_ORG_ID = OKE_API.G_MISS_NUM THEN
2504 	l_del_rec.SHIP_FROM_ORG_ID := NULL;
2505     END IF;
2506 
2507     IF	l_del_rec.SHIP_FROM_LOCATION_ID = OKE_API.G_MISS_NUM THEN
2508 	l_del_rec.SHIP_FROM_LOCATION_ID := NULL;
2509     END IF;
2510 
2511     IF	l_del_rec.INVENTORY_ORG_ID = OKE_API.G_MISS_NUM THEN
2512 	l_del_rec.INVENTORY_ORG_ID := NULL;
2513     END IF;
2514 
2515     IF	l_del_rec.DIRECTION = OKE_API.G_MISS_CHAR THEN
2516 	l_del_rec.DIRECTION := NULL;
2517     END IF;
2518 
2519     IF	l_del_rec.DEFAULTED_FLAG = OKE_API.G_MISS_CHAR THEN
2520 	l_del_rec.DEFAULTED_FLAG := NULL;
2521     END IF;
2522 
2523     IF	l_del_rec.IN_PROCESS_FLAG = OKE_API.G_MISS_CHAR THEN
2524 	l_del_rec.IN_PROCESS_FLAG := NULL;
2525     END IF;
2526 
2527     IF	l_del_rec.WF_ITEM_KEY = OKE_API.G_MISS_CHAR THEN
2528 	l_del_rec.WF_ITEM_KEY := NULL;
2529     END IF;
2530 
2531     IF	l_del_rec.SUB_REF_ID = OKE_API.G_MISS_NUM THEN
2532         l_del_rec.SUB_REF_ID := NULL;
2533     END IF;
2534 
2535     IF	l_del_rec.START_DATE	= OKE_API.G_MISS_DATE THEN
2536         l_del_rec.START_DATE	:= NULL;
2537     END IF;
2538 
2539     IF	l_del_rec.END_DATE	= OKE_API.G_MISS_DATE THEN
2540         l_del_rec.END_DATE	:= NULL;
2541     END IF;
2542 
2543     IF	l_del_rec.PRIORITY_CODE	= OKE_API.G_MISS_CHAR THEN
2544         l_del_rec.PRIORITY_CODE := NULL;
2545     END IF;
2546 
2547     IF	l_del_rec.CURRENCY_CODE	= OKE_API.G_MISS_CHAR THEN
2548         l_del_rec.CURRENCY_CODE	:= NULL;
2549     END IF;
2550 
2551     IF	l_del_rec.UNIT_PRICE = OKE_API.G_MISS_NUM THEN
2552 	l_del_rec.UNIT_PRICE := NULL;
2553     END IF;
2554 
2555     IF	l_del_rec.UOM_CODE = OKE_API.G_MISS_CHAR THEN
2556 	l_del_rec.UOM_CODE := NULL;
2557     END IF;
2558 
2559     IF	l_del_rec.QUANTITY = OKE_API.G_MISS_NUM THEN
2560 	l_del_rec.QUANTITY := NULL;
2561     END IF;
2562 
2563     IF  l_del_rec.COUNTRY_OF_ORIGIN_CODE = OKE_API.G_MISS_CHAR THEN
2564 	l_del_rec.COUNTRY_OF_ORIGIN_CODE := NULL;
2565     END IF;
2566 
2567     IF	l_del_rec.SUBCONTRACTED_FLAG = OKE_API.G_MISS_CHAR THEN
2568 	l_del_rec.SUBCONTRACTED_FLAG := NULL;
2569     END IF;
2570 
2571     IF	l_del_rec.DEPENDENCY_FLAG = OKE_API.G_MISS_CHAR THEN
2572 	l_del_rec.DEPENDENCY_FLAG := NULL;
2573     END IF;
2574 
2575 
2576 
2577     IF	l_del_rec.BILLABLE_FLAG	= OKE_API.G_MISS_CHAR THEN
2578 	l_del_rec.BILLABLE_FLAG	:= NULL;
2579     END IF;
2580 
2581     IF	l_del_rec.BILLING_EVENT_ID = OKE_API.G_MISS_NUM THEN
2582 	l_del_rec.BILLING_EVENT_ID := NULL;
2583     END IF;
2584 
2585     IF	l_del_rec.DROP_SHIPPED_FLAG = OKE_API.G_MISS_CHAR THEN
2586         l_del_rec.DROP_SHIPPED_FLAG := NULL;
2587     END IF;
2588 
2589     IF	l_del_rec.COMPLETED_FLAG = OKE_API.G_MISS_CHAR THEN
2590 	l_del_rec.COMPLETED_FLAG := NULL;
2591     END IF;
2592 
2593     IF	l_del_rec.AVAILABLE_FOR_SHIP_FLAG = OKE_API.G_MISS_CHAR THEN
2594 	l_del_rec.AVAILABLE_FOR_SHIP_FLAG := NULL;
2595     END IF;
2596 
2597     IF	l_del_rec.CREATE_DEMAND = OKE_API.G_MISS_CHAR THEN
2598 	l_del_rec.CREATE_DEMAND := NULL;
2599     END IF;
2600 
2601     IF	l_del_rec.READY_TO_BILL = OKE_API.G_MISS_CHAR THEN
2602 	l_del_rec.READY_TO_BILL := NULL;
2603     END IF;
2604 
2605     IF	l_del_rec.NEED_BY_DATE = OKE_API.G_MISS_DATE THEN
2606 	l_del_rec.NEED_BY_DATE := NULL;
2607     END IF;
2608 
2609     IF	l_del_rec.READY_TO_PROCURE = OKE_API.G_MISS_CHAR THEN
2610 	l_del_rec.READY_TO_PROCURE := NULL;
2611     END IF;
2612 
2613     IF	l_del_rec.MPS_TRANSACTION_ID = OKE_API.G_MISS_NUM THEN
2614 	l_del_rec.MPS_TRANSACTION_ID := NULL;
2615     END IF;
2616 
2617     IF	l_del_rec.PO_REF_1 = OKE_API.G_MISS_NUM THEN
2618 	l_del_rec.PO_REF_1 := NULL;
2619     END IF;
2620 
2621     IF	l_del_rec.PO_REF_2 = OKE_API.G_MISS_NUM THEN
2622 	l_del_rec.PO_REF_2 := NULL;
2623     END IF;
2624 
2625     IF	l_del_rec.PO_REF_3 = OKE_API.G_MISS_NUM THEN
2626 	l_del_rec.PO_REF_3 := NULL;
2627     END IF;
2628 
2629     IF	l_del_rec.SHIPPING_REQUEST_ID = OKE_API.G_MISS_NUM THEN
2630 	l_del_rec.SHIPPING_REQUEST_ID := NULL;
2631     END IF;
2632 
2633     IF	l_del_rec.UNIT_NUMBER = OKE_API.G_MISS_CHAR THEN
2634 	l_del_rec.UNIT_NUMBER := NULL;
2635     END IF;
2636 
2637     IF	l_del_rec.NDB_SCHEDULE_DESIGNATOR = OKE_API.G_MISS_CHAR THEN
2638 	l_del_rec.NDB_SCHEDULE_DESIGNATOR := NULL;
2639     END IF;
2640 
2641     IF	l_del_rec.SHIPPABLE_FLAG = OKE_API.G_MISS_CHAR THEN
2642 	l_del_rec.SHIPPABLE_FLAG := NULL;
2643     END IF;
2644 
2645     IF	l_del_rec.CFE_REQ_FLAG = OKE_API.G_MISS_CHAR THEN
2646 	l_del_rec.CFE_REQ_FLAG := NULL;
2647     END IF;
2648 
2649     IF	l_del_rec.INSPECTION_REQ_FLAG = OKE_API.G_MISS_CHAR THEN
2650 	l_del_rec.INSPECTION_REQ_FLAG := NULL;
2651     END IF;
2652 
2653     IF	l_del_rec.INTERIM_RPT_REQ_FLAG = OKE_API.G_MISS_CHAR THEN
2654 	l_del_rec.INTERIM_RPT_REQ_FLAG := NULL;
2655     END IF;
2656 
2657     IF	l_del_rec.LOT_APPLIES_FLAG = OKE_API.G_MISS_CHAR THEN
2658 	l_del_rec.LOT_APPLIES_FLAG := NULL;
2659     END IF;
2660 
2661     IF	l_del_rec.CUSTOMER_APPROVAL_REQ_FLAG = OKE_API.G_MISS_CHAR THEN
2662 	l_del_rec.CUSTOMER_APPROVAL_REQ_FLAG := NULL;
2663     END IF;
2664 
2665     IF	l_del_rec.EXPECTED_SHIPMENT_DATE = OKE_API.G_MISS_DATE THEN
2666 	l_del_rec.EXPECTED_SHIPMENT_DATE := NULL;
2667     END IF;
2668 
2669     IF	l_del_rec.INITIATE_SHIPMENT_DATE = OKE_API.G_MISS_DATE THEN
2670 	l_del_rec.INITIATE_SHIPMENT_DATE := NULL;
2671     END IF;
2672 
2673     IF	l_del_rec.PROMISED_SHIPMENT_DATE = OKE_API.G_MISS_DATE THEN
2674 	l_del_rec.PROMISED_SHIPMENT_DATE := NULL;
2675     END IF;
2676 
2677     IF	l_del_rec.AS_OF_DATE = OKE_API.G_MISS_DATE THEN
2678 	l_del_rec.AS_OF_DATE := NULL;
2679     END IF;
2680 
2681     IF	l_del_rec.DATE_OF_FIRST_SUBMISSION = OKE_API.G_MISS_DATE THEN
2682 	l_del_rec.DATE_OF_FIRST_SUBMISSION := NULL;
2683     END IF;
2684 
2685     IF	l_del_rec.FREQUENCY = OKE_API.G_MISS_CHAR THEN
2686 	l_del_rec.FREQUENCY := NULL;
2687     END IF;
2688 
2689     IF	l_del_rec.ACQ_DOC_NUMBER = OKE_API.G_MISS_CHAR THEN
2690 	l_del_rec.ACQ_DOC_NUMBER := NULL;
2691     END IF;
2692 
2693     IF	l_del_rec.SUBMISSION_FLAG = OKE_API.G_MISS_CHAR THEN
2694 	l_del_rec.SUBMISSION_FLAG := NULL;
2695     END IF;
2696 
2697     IF	l_del_rec.DATA_ITEM_NAME = OKE_API.G_MISS_CHAR THEN
2698 	l_del_rec.DATA_ITEM_NAME := NULL;
2699     END IF;
2700 
2701     IF	l_del_rec.DATA_ITEM_SUBTITLE = OKE_API.G_MISS_CHAR THEN
2702 	l_del_rec.DATA_ITEM_SUBTITLE := NULL;
2703     END IF;
2704 
2705     IF	l_del_rec.TOTAL_NUM_OF_COPIES = OKE_API.G_MISS_NUM THEN
2706 	l_del_rec.TOTAL_NUM_OF_COPIES := NULL;
2707     END IF;
2708 
2709     IF	l_del_rec.CDRL_CATEGORY = OKE_API.G_MISS_CHAR THEN
2710 	l_del_rec.CDRL_CATEGORY := NULL;
2711     END IF;
2712 
2713     IF	l_del_rec.EXPORT_LICENSE_NUM = OKE_API.G_MISS_CHAR THEN
2714    	l_del_rec.EXPORT_LICENSE_NUM := NULL;
2715     END IF;
2716 
2717     IF	l_del_rec.EXPORT_LICENSE_RES = OKE_API.G_MISS_CHAR THEN
2718 	l_del_rec.EXPORT_LICENSE_RES := NULL;
2719     END IF;
2720 
2721     IF	l_del_rec.EXPORT_FLAG = OKE_API.G_MISS_CHAR THEN
2722 	l_del_rec.EXPORT_FLAG := NULL;
2723     END IF;
2724 
2725     IF	l_del_rec.CREATED_BY = OKE_API.G_MISS_NUM THEN
2726 	l_del_rec.CREATED_BY := NULL;
2727     END IF;
2728 
2729     IF	l_del_rec.CREATION_DATE = OKE_API.G_MISS_DATE THEN
2730 	l_del_rec.CREATION_DATE := NULL;
2731     END IF;
2732 
2733     IF	l_del_rec.LAST_UPDATED_BY = OKE_API.G_MISS_NUM THEN
2734 	l_del_rec.LAST_UPDATED_BY := NULL;
2735     END IF;
2736 
2737     IF	l_del_rec.LAST_UPDATE_LOGIN = OKE_API.G_MISS_NUM THEN
2738 	l_del_rec.LAST_UPDATE_LOGIN := NULL;
2739     END IF;
2740 
2741     IF	l_del_rec.LAST_UPDATE_DATE = OKE_API.G_MISS_DATE THEN
2742 	l_del_rec.LAST_UPDATE_DATE := NULL;
2743     END IF;
2744 
2745     IF	l_del_rec.ATTRIBUTE_CATEGORY = OKE_API.G_MISS_CHAR THEN
2746 	l_del_rec.ATTRIBUTE_CATEGORY := NULL;
2747     END IF;
2748 
2749     IF	l_del_rec.ATTRIBUTE1 = OKE_API.G_MISS_CHAR THEN
2750 	l_del_rec.ATTRIBUTE1 := NULL;
2751     END IF;
2752 
2753     IF	l_del_rec.ATTRIBUTE2 = OKE_API.G_MISS_CHAR THEN
2754 	l_del_rec.ATTRIBUTE2 := NULL;
2755     END IF;
2756 
2757     IF	l_del_rec.ATTRIBUTE3 = OKE_API.G_MISS_CHAR THEN
2758 	l_del_rec.ATTRIBUTE3 := NULL;
2759     END IF;
2760 
2761     IF	l_del_rec.ATTRIBUTE4 = OKE_API.G_MISS_CHAR THEN
2762 	l_del_rec.ATTRIBUTE4 := NULL;
2763     END IF;
2764 
2765     IF	l_del_rec.ATTRIBUTE5 = OKE_API.G_MISS_CHAR THEN
2766 	l_del_rec.ATTRIBUTE5 := NULL;
2767     END IF;
2768 
2769     IF	l_del_rec.ATTRIBUTE6 = OKE_API.G_MISS_CHAR THEN
2770 	l_del_rec.ATTRIBUTE6 := NULL;
2771     END IF;
2772 
2773     IF	l_del_rec.ATTRIBUTE7 = OKE_API.G_MISS_CHAR THEN
2774 	l_del_rec.ATTRIBUTE7 := NULL;
2775     END IF;
2776 
2777     IF	l_del_rec.ATTRIBUTE8 = OKE_API.G_MISS_CHAR THEN
2778 	l_del_rec.ATTRIBUTE8 := NULL;
2779     END IF;
2780 
2781     IF	l_del_rec.ATTRIBUTE9 = OKE_API.G_MISS_CHAR THEN
2782 	l_del_rec.ATTRIBUTE9 := NULL;
2783     END IF;
2784 
2785     IF	l_del_rec.ATTRIBUTE10 = OKE_API.G_MISS_CHAR THEN
2786 	l_del_rec.ATTRIBUTE10 := NULL;
2787     END IF;
2788 
2789     IF	l_del_rec.ATTRIBUTE11 = OKE_API.G_MISS_CHAR THEN
2790 	l_del_rec.ATTRIBUTE11 := NULL;
2791     END IF;
2792 
2793     IF	l_del_rec.ATTRIBUTE12 = OKE_API.G_MISS_CHAR THEN
2794 	l_del_rec.ATTRIBUTE12 := NULL;
2795     END IF;
2796 
2797     IF	l_del_rec.ATTRIBUTE13 = OKE_API.G_MISS_CHAR THEN
2798 	l_del_rec.ATTRIBUTE13 := NULL;
2799     END IF;
2800 
2801     IF	l_del_rec.ATTRIBUTE14 = OKE_API.G_MISS_CHAR THEN
2802 	l_del_rec.ATTRIBUTE14 := NULL;
2803     END IF;
2804 
2805     IF	l_del_rec.ATTRIBUTE15 = OKE_API.G_MISS_CHAR THEN
2806 	l_del_rec.ATTRIBUTE15 := NULL;
2807     END IF;
2808 
2809 
2810 
2811     IF l_del_rec.comments = OKE_API.G_MISS_CHAR THEN
2812 
2813        l_del_rec.comments := NULL;
2814     END IF;
2815 
2816     IF l_del_rec.weight = OKE_API.G_MISS_NUM THEN
2817        l_del_rec.weight := NULL;
2818     END IF;
2819 
2820     IF l_del_rec.weight_uom_code = OKE_API.G_MISS_CHAR THEN
2821        l_del_rec.weight_uom_code := NULL;
2822     END IF;
2823 
2824     IF l_del_rec.volume = OKE_API.G_MISS_NUM THEN
2825        l_del_rec.volume := NULL;
2826     END IF;
2827 
2828     IF l_del_rec.volume_uom_code = OKE_API.G_MISS_CHAR THEN
2829        l_del_rec.volume_uom_code := NULL;
2830     END IF;
2831 
2832     IF l_del_rec.expenditure_organization_id = OKE_API.G_MISS_NUM THEN
2833        l_del_rec.expenditure_organization_id := NULL;
2834     END IF;
2835 
2836     IF l_del_rec.expenditure_type = OKE_API.G_MISS_CHAR THEN
2837        l_del_rec.expenditure_type := NULL;
2838     END IF;
2839 
2840     IF l_del_rec.expenditure_item_date = OKE_API.G_MISS_DATE THEN
2841        l_del_rec.expenditure_item_date := NULL;
2842     END IF;
2843 
2844     IF l_del_rec.destination_type_code = OKE_API.G_MISS_CHAR THEN
2845        l_del_rec.destination_type_code := NULL;
2846     END IF;
2847 
2848     IF l_del_rec.rate_type = OKE_API.G_MISS_CHAR THEN
2849        l_del_rec.rate_type := NULL;
2850     END IF;
2851 
2852     IF l_del_rec.rate_date = OKE_API.G_MISS_DATE THEN
2853        l_del_rec.rate_date := NULL;
2854     END IF;
2855 
2856     IF l_del_rec.exchange_rate = OKE_API.G_MISS_NUM THEN
2857        l_del_rec.exchange_rate := NULL;
2858     END IF;
2859 
2860     IF l_del_rec.description = OKE_API.G_MISS_CHAR THEN
2861        l_del_rec.description := NULL;
2862     END IF;
2863 
2864     RETURN(l_del_rec);
2865 
2866   END null_out_defaults;
2867 
2868 BEGIN
2869     -- call START_ACTIVITY to create savepoint, check compatibility
2870     -- and initialize message list
2871     l_return_status := OKE_API.START_ACTIVITY(
2872                         p_api_name      => l_api_name,
2873                         p_pkg_name      => g_pkg_name,
2874                         p_init_msg_list => p_init_msg_list,
2875                         l_api_version   => l_api_version,
2876                         p_api_version   => p_api_version,
2877                         p_api_type      => g_api_type,
2878                         x_return_status => x_return_status);
2879 
2880     -- check if activity started successfully
2881     If (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
2882        raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
2883     Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
2884        raise OKE_API.G_EXCEPTION_ERROR;
2885     End If;
2886 
2887     l_del_rec := null_out_defaults(p_del_rec);
2888 
2889     IF p_del_rec.k_header_id IS NOT NULL AND
2890        p_del_rec.k_header_id <> OKE_API.G_MISS_NUM THEN
2891 
2892     	IF p_del_rec.inventory_org_id IS NULL
2893     	OR p_del_rec.inventory_org_id = OKE_API.G_MISS_NUM THEN
2894 		OPEN get_inv_org;
2895 		FETCH get_inv_org INTO l_del_rec.inventory_org_id;
2896 		CLOSE get_inv_org;
2897     	END IF;
2898 
2899 
2900     	IF p_del_rec.direction IS NULL
2901     	OR p_del_rec.direction = OKE_API.G_MISS_CHAR THEN
2902 		OPEN get_intent;
2903 		FETCH get_intent INTO l_intent;
2904 		CLOSE get_intent;
2905 		IF l_intent = 'S' THEN
2906 		   l_del_rec.direction := 'OUT';
2907 		ELSE
2908 		   l_del_rec.direction := 'IN';
2909 		END IF;
2910     	END IF;
2911 
2912     END IF;
2913 
2914          	IF p_del_rec.status_code IS NULL
2915     	OR p_del_rec.status_code = OKE_API.G_MISS_CHAR THEN
2916             open l_sts_csr;
2917 	fetch l_sts_csr into l_sts_code;
2918 	close l_sts_csr;
2919                l_del_rec.status_code := l_sts_code;
2920           END IF;
2921 
2922 
2923 
2924         -- Validate deliverable attributes
2925 	OKE_CONTRACT_PUB.validate_deliverable(
2926 		    	p_api_version		=>	p_api_version,
2927     			p_init_msg_list		=>	p_init_msg_list,
2928     			x_return_status		=>	x_return_status,
2929     	 		x_msg_count		=>	x_msg_count,
2930    		  	x_msg_data		=>	x_msg_data,
2931 		    	p_del_rec		=>	l_del_rec);
2932 
2933     	If (x_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
2934        		raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
2935     	Elsif (x_return_status = OKE_API.G_RET_STS_ERROR) then
2936        		raise OKE_API.G_EXCEPTION_ERROR;
2937     	End If;
2938 
2939 
2940        ---validations
2941      	l_return_status:=Validate_record(p_del_rec =>	l_del_rec
2942                                  );
2943 
2944     	If ( l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
2945        		raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
2946     	Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
2947        		raise OKE_API.G_EXCEPTION_ERROR;
2948     	End If;
2949 
2950    If (x_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
2951        		raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
2952     	Elsif (x_return_status = OKE_API.G_RET_STS_ERROR) then
2953        		raise OKE_API.G_EXCEPTION_ERROR;
2954     	End If;
2955 
2956 
2957 	OKE_CONTRACT_PUB.create_deliverable(
2958 			p_api_version		=>	p_api_version,
2959     			p_init_msg_list		=>	p_init_msg_list,
2960     			x_return_status		=>	x_return_status,
2961     			x_msg_count		=>	x_msg_count,
2962    			x_msg_data		=>	x_msg_data,
2963 			p_del_rec		=>	l_del_rec,
2964 			x_del_rec		=>	x_del_rec);
2965 
2966     	If (x_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
2967        		raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
2968     	Elsif (x_return_status = OKE_API.G_RET_STS_ERROR) then
2969        		raise OKE_API.G_EXCEPTION_ERROR;
2970     	End If;
2971 
2972 
2973     OKE_API.END_ACTIVITY(       x_msg_count     => x_msg_count,
2974                                 x_msg_data      => x_msg_data);
2975   EXCEPTION
2976     when OKE_API.G_EXCEPTION_ERROR then
2977       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
2978 			p_api_name  => l_api_name,
2979 			p_pkg_name  => g_pkg_name,
2980 			p_exc_name  => 'OKE_API.G_RET_STS_ERROR',
2981 			x_msg_count => x_msg_count,
2982 			x_msg_data  => x_msg_data,
2983 			p_api_type  => g_api_type);
2984 
2985     when OKE_API.G_EXCEPTION_UNEXPECTED_ERROR then
2986       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
2987 			p_api_name  => l_api_name,
2988 			p_pkg_name  => g_pkg_name,
2989 			p_exc_name  => 'OKE_API.G_RET_STS_UNEXP_ERROR',
2990 			x_msg_count => x_msg_count,
2991 			x_msg_data  => x_msg_data,
2992 			p_api_type  => g_api_type);
2993 
2994     when OTHERS then
2995       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
2996 			p_api_name  => l_api_name,
2997 			p_pkg_name  => g_pkg_name,
2998 			p_exc_name  => 'OTHERS',
2999 			x_msg_count => x_msg_count,
3000 			x_msg_data  => x_msg_data,
3001 			p_api_type  => g_api_type);
3002 
3003 END create_deliverable;
3004 
3005 
3006 FUNCTION validate_billing_method(p_bill_rec IN bill_rec_type) return VARCHAR2 IS
3007 
3008 l_k_header_id		VARCHAR2(1) := '?';
3009 l_billing_method_code 	VARCHAR2(1) := '?';
3010 l_default_flag		VARCHAR2(1) := '?';
3011 
3012 CURSOR c_k_header_id IS
3013 select 'x'
3014 from oke_k_headers
3015 where k_header_id = p_bill_rec.k_header_id;
3016 
3017 CURSOR c_billing_method_code IS
3018 select 'x'
3019 from oke_billing_methods_vl
3020 where billing_method_code = p_bill_rec.billing_method_code;
3021 
3022 BEGIN
3023 
3024 	IF p_bill_rec.default_flag <>'N' AND p_bill_rec.default_flag <> 'Y' THEN
3025 		return OKE_API.G_RET_STS_ERROR;
3026 	END IF;
3027 
3028 	OPEN c_k_header_id;
3029 	FETCH c_k_header_id INTO l_k_header_id;
3030 	CLOSE c_k_header_id;
3031 
3032 	IF l_k_header_id = '?' THEN
3033 		return OKE_API.G_RET_STS_ERROR;
3034 	END IF;
3035 
3036 	OPEN c_billing_method_code;
3037 	FETCH c_billing_method_code INTO l_billing_method_code;
3038 	CLOSE c_billing_method_code;
3039 
3040 	IF l_billing_method_code = '?' THEN
3041 		return OKE_API.G_RET_STS_ERROR;
3042 	END IF;
3043 
3044 	RETURN OKE_API.G_RET_STS_SUCCESS;
3045 
3046 END validate_billing_method;
3047 
3048 
3049 PROCEDURE define_billing_methods(
3050     p_api_version                  IN NUMBER,
3051     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
3052     x_return_status                OUT NOCOPY VARCHAR2,
3053     x_msg_count                    OUT NOCOPY NUMBER,
3054     x_msg_data                     OUT NOCOPY VARCHAR2,
3055 
3056     p_bill_tbl			   IN bill_tbl_type) IS
3057 
3058     l_api_name          CONSTANT VARCHAR2(30) := 'DEFINE_BILLING_METHODS';
3059     l_api_version       CONSTANT NUMBER   := 1.0;
3060     l_return_status     VARCHAR2(1)               := OKE_API.G_RET_STS_SUCCESS;
3061 
3062     i		NUMBER;
3063     l_flag	VARCHAR2(1);
3064 
3065     l_header_id NUMBER;
3066 
3067 BEGIN
3068     -- call START_ACTIVITY to create savepoint, check compatibility
3069     -- and initialize message list
3070     l_return_status := OKE_API.START_ACTIVITY(
3071                         p_api_name      => l_api_name,
3072                         p_pkg_name      => g_pkg_name,
3073                         p_init_msg_list => p_init_msg_list,
3074                         l_api_version   => l_api_version,
3075                         p_api_version   => p_api_version,
3076                         p_api_type      => g_api_type,
3077                         x_return_status => x_return_status);
3078 
3079     -- check if activity started successfully
3080     If (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
3081        raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3082     Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
3083        raise OKE_API.G_EXCEPTION_ERROR;
3084     End If;
3085 
3086 
3087     l_flag := 'N';
3088     IF p_bill_tbl.COUNT > 0 THEN
3089     i:=p_bill_tbl.FIRST;
3090     l_header_id := p_bill_tbl(i).k_header_id;
3091 
3092     LOOP
3093 
3094       IF l_header_id <> p_bill_tbl(i).k_header_id THEN
3095 	raise OKE_API.G_EXCEPTION_ERROR;
3096       END IF;
3097 
3098       IF l_flag='Y' AND p_bill_tbl(i).default_flag='Y' THEN
3099 	raise OKE_API.G_EXCEPTION_ERROR;
3100       ELSIF l_flag='Y' AND p_bill_tbl(i).default_flag='N' THEN
3101 	null;
3102       ELSIF l_flag='N' AND p_bill_tbl(i).default_flag='Y' THEN
3103 	l_flag:='Y';
3104       ELSE
3105 	null;
3106       END IF;
3107 
3108     EXIT WHEN i = p_bill_tbl.LAST;
3109     i:=p_bill_tbl.NEXT(i);
3110     END LOOP;
3111     END IF;
3112 
3113 
3114     IF p_bill_tbl.COUNT > 0 THEN
3115     i:=p_bill_tbl.FIRST;
3116     LOOP
3117 
3118 
3119 
3120 	l_return_status := validate_billing_method(p_bill_tbl(i));
3121 
3122 
3123 	IF l_return_status = 'S' THEN
3124 
3125 	insert into oke_k_billing_methods
3126 	(
3127 	k_header_id,
3128 	billing_method_code,
3129 	creation_date,
3130 	created_by,
3131 	last_update_date,
3132 	last_updated_by,
3133 	last_update_login,
3134 	default_flag,
3135 	attribute_category,
3136 	attribute1,
3137 	attribute2,
3138 	attribute3,
3139 	attribute4,
3140 	attribute5,
3141 	attribute6,
3142 	attribute7,
3143 	attribute8,
3144 	attribute9,
3145 	attribute10,
3146 	attribute11,
3147 	attribute12,
3148 	attribute13,
3149 	attribute14,
3150 	attribute15
3151 	)
3152 	values
3153 	(
3154 	p_bill_tbl(i).k_header_id,
3155 	p_bill_tbl(i).billing_method_code,
3156 	sysdate,
3157 	fnd_global.user_id,
3158 	sysdate,
3159 	fnd_global.user_id,
3160 	fnd_global.login_id,
3161 	p_bill_tbl(i).default_flag,
3162 	p_bill_tbl(i).attribute_category,
3163 	p_bill_tbl(i).attribute1,
3164 	p_bill_tbl(i).attribute2,
3165 	p_bill_tbl(i).attribute3,
3166 	p_bill_tbl(i).attribute4,
3167 	p_bill_tbl(i).attribute5,
3168 	p_bill_tbl(i).attribute6,
3169 	p_bill_tbl(i).attribute7,
3170 	p_bill_tbl(i).attribute8,
3171 	p_bill_tbl(i).attribute9,
3172 	p_bill_tbl(i).attribute10,
3173 	p_bill_tbl(i).attribute11,
3174 	p_bill_tbl(i).attribute12,
3175 	p_bill_tbl(i).attribute13,
3176 	p_bill_tbl(i).attribute14,
3177 	p_bill_tbl(i).attribute15
3178 );
3179 	END IF;
3180 
3181     EXIT WHEN i = p_bill_tbl.LAST;
3182     i:=p_bill_tbl.NEXT(i);
3183     END LOOP;
3184     END IF;
3185 
3186     OKE_API.END_ACTIVITY(       x_msg_count     => x_msg_count,
3187                                 x_msg_data      => x_msg_data);
3188   EXCEPTION
3189     when OKE_API.G_EXCEPTION_ERROR then
3190       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
3191 			p_api_name  => l_api_name,
3192 			p_pkg_name  => g_pkg_name,
3193 			p_exc_name  => 'OKE_API.G_RET_STS_ERROR',
3194 			x_msg_count => x_msg_count,
3195 			x_msg_data  => x_msg_data,
3196 			p_api_type  => g_api_type);
3197 
3198     when OKE_API.G_EXCEPTION_UNEXPECTED_ERROR then
3199       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
3200 			p_api_name  => l_api_name,
3201 			p_pkg_name  => g_pkg_name,
3202 			p_exc_name  => 'OKE_API.G_RET_STS_UNEXP_ERROR',
3203 			x_msg_count => x_msg_count,
3204 			x_msg_data  => x_msg_data,
3205 			p_api_type  => g_api_type);
3206 
3207     when OTHERS then
3208       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
3209 			p_api_name  => l_api_name,
3210 			p_pkg_name  => g_pkg_name,
3211 			p_exc_name  => 'OTHERS',
3212 			x_msg_count => x_msg_count,
3213 			x_msg_data  => x_msg_data,
3214 			p_api_type  => g_api_type);
3215 
3216 END define_billing_methods;
3217 
3218 PROCEDURE remove_billing_methods(
3219     p_api_version                  IN NUMBER,
3220     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
3221     x_return_status                OUT NOCOPY VARCHAR2,
3222     x_msg_count                    OUT NOCOPY NUMBER,
3223     x_msg_data                     OUT NOCOPY VARCHAR2,
3224 
3225     p_bill_tbl			   IN bill_tbl_type) IS
3226 
3227     l_api_name          CONSTANT VARCHAR2(30) := 'REMOVE_BILLING_METHODS';
3228     l_api_version       CONSTANT NUMBER   := 1.0;
3229     l_return_status     VARCHAR2(1)               := OKE_API.G_RET_STS_SUCCESS;
3230 
3231     i		NUMBER;
3232 
3233     l_header_id NUMBER;
3234 
3235     CURSOR c_check (p_header_id NUMBER, p_code VARCHAR2) IS
3236     select 'x' from oke_k_lines_v
3237     where billing_method_code = p_code
3238     and header_id = p_header_id;
3239 
3240     l_check VARCHAR2(1) := '?';
3241 
3242 BEGIN
3243     -- call START_ACTIVITY to create savepoint, check compatibility
3244     -- and initialize message list
3245     l_return_status := OKE_API.START_ACTIVITY(
3246                         p_api_name      => l_api_name,
3247                         p_pkg_name      => g_pkg_name,
3248                         p_init_msg_list => p_init_msg_list,
3249                         l_api_version   => l_api_version,
3250                         p_api_version   => p_api_version,
3251                         p_api_type      => g_api_type,
3252                         x_return_status => x_return_status);
3253 
3254     -- check if activity started successfully
3255     If (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
3256        raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3257     Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
3258        raise OKE_API.G_EXCEPTION_ERROR;
3259     End If;
3260 
3261     IF p_bill_tbl.COUNT > 0 THEN
3262     i:=p_bill_tbl.FIRST;
3263     l_header_id := p_bill_tbl(i).k_header_id;
3264 
3265     LOOP
3266 
3267       IF l_header_id <> p_bill_tbl(i).k_header_id THEN
3268 	raise OKE_API.G_EXCEPTION_ERROR;
3269       END IF;
3270 
3271     EXIT WHEN i = p_bill_tbl.LAST;
3272     i:=p_bill_tbl.NEXT(i);
3273     END LOOP;
3274     END IF;
3275 
3276 
3277     IF p_bill_tbl.COUNT > 0 THEN
3278     i:=p_bill_tbl.FIRST;
3279     LOOP
3280 
3281      IF p_bill_tbl(i).k_header_id <> OKE_API.G_MISS_NUM
3282       AND p_bill_tbl(i).k_header_id is not null
3283       AND p_bill_tbl(i).billing_method_code <> OKE_API.G_MISS_CHAR
3284       AND p_bill_tbl(i).billing_method_code is not null THEN
3285 
3286 	l_check := '?';
3287 	OPEN c_check(p_bill_tbl(i).k_header_id,
3288 		p_bill_tbl(i).billing_method_code);
3289 	FETCH c_check INTO l_check;
3290 	CLOSE c_check;
3291 
3292 	IF l_check <> 'x' THEN
3293 	  delete from oke_k_billing_methods
3294 	  where k_header_id = p_bill_tbl(i).k_header_id
3295 	  and billing_method_code = p_bill_tbl(i).billing_method_code;
3296 	END IF;
3297      END IF;
3298     EXIT WHEN i = p_bill_tbl.LAST;
3299     i:=p_bill_tbl.NEXT(i);
3300     END LOOP;
3301     END IF;
3302 
3303     OKE_API.END_ACTIVITY(       x_msg_count     => x_msg_count,
3304                                 x_msg_data      => x_msg_data);
3305   EXCEPTION
3306     when OKE_API.G_EXCEPTION_ERROR then
3307       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
3308 			p_api_name  => l_api_name,
3309 			p_pkg_name  => g_pkg_name,
3310 			p_exc_name  => 'OKE_API.G_RET_STS_ERROR',
3311 			x_msg_count => x_msg_count,
3312 			x_msg_data  => x_msg_data,
3313 			p_api_type  => g_api_type);
3314 
3315     when OKE_API.G_EXCEPTION_UNEXPECTED_ERROR then
3316       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
3317 			p_api_name  => l_api_name,
3318 			p_pkg_name  => g_pkg_name,
3319 			p_exc_name  => 'OKE_API.G_RET_STS_UNEXP_ERROR',
3320 			x_msg_count => x_msg_count,
3321 			x_msg_data  => x_msg_data,
3322 			p_api_type  => g_api_type);
3323 
3324     when OTHERS then
3325       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
3326 			p_api_name  => l_api_name,
3327 			p_pkg_name  => g_pkg_name,
3328 			p_exc_name  => 'OTHERS',
3329 			x_msg_count => x_msg_count,
3330 			x_msg_data  => x_msg_data,
3331 			p_api_type  => g_api_type);
3332 
3333 END remove_billing_methods;
3334 
3335   PROCEDURE create_line_item(
3336     p_api_version                  IN NUMBER,
3337     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
3338     x_return_status                OUT NOCOPY VARCHAR2,
3339     x_msg_count                    OUT NOCOPY NUMBER,
3340     x_msg_data                     OUT NOCOPY VARCHAR2,
3341 
3342     p_cimv_rec			   IN  cimv_rec_type,
3343     x_cimv_rec			   OUT NOCOPY  cimv_rec_type,
3344     p_skip_minor_vers              IN VARCHAR2 DEFAULT OKE_API.G_FALSE
3345 ) IS
3346 
3347     l_api_name          CONSTANT VARCHAR2(30) := 'CREATE_LINE_ITEM';
3348     l_api_version       CONSTANT NUMBER   := 1.0;
3349     l_return_status     VARCHAR2(1)               := OKE_API.G_RET_STS_SUCCESS;
3350 
3351   l_cimv_tbl_in     okc_contract_item_pub.cimv_tbl_type;
3352 
3353   l_cimv_tbl_out    okc_contract_item_pub.cimv_tbl_type;
3354 
3355 BEGIN
3356     -- call START_ACTIVITY to create savepoint, check compatibility
3357     -- and initialize message list
3358     l_return_status := OKE_API.START_ACTIVITY(
3359                         p_api_name      => l_api_name,
3360                         p_pkg_name      => g_pkg_name,
3361                         p_init_msg_list => p_init_msg_list,
3362                         l_api_version   => l_api_version,
3363                         p_api_version   => p_api_version,
3364                         p_api_type      => g_api_type,
3365                         x_return_status => x_return_status);
3366 
3367     -- check if activity started successfully
3368     If (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
3369        raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3370     Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
3371        raise OKE_API.G_EXCEPTION_ERROR;
3372     End If;
3373 
3374     l_cimv_tbl_in(1).ID := p_cimv_rec.ID;
3375     l_cimv_tbl_in(1).OBJECT_VERSION_NUMBER := p_cimv_rec.OBJECT_VERSION_NUMBER;
3376     l_cimv_tbl_in(1).CHR_ID := p_cimv_rec.CHR_ID;
3377     l_cimv_tbl_in(1).CLE_ID := p_cimv_rec.CLE_ID;
3378     l_cimv_tbl_in(1).CLE_ID_FOR := p_cimv_rec.CLE_ID_FOR;
3379     l_cimv_tbl_in(1).DNZ_CHR_ID := p_cimv_rec.DNZ_CHR_ID;
3380     l_cimv_tbl_in(1).EXCEPTION_YN := p_cimv_rec.EXCEPTION_YN;
3381     l_cimv_tbl_in(1).PRICED_ITEM_YN := p_cimv_rec.PRICED_ITEM_YN;
3382     l_cimv_tbl_in(1).OBJECT1_ID1 := p_cimv_rec.OBJECT1_ID1;
3383     l_cimv_tbl_in(1).OBJECT1_ID2 := p_cimv_rec.OBJECT1_ID2;
3384     l_cimv_tbl_in(1).JTOT_OBJECT1_CODE := p_cimv_rec.JTOT_OBJECT1_CODE;
3385     l_cimv_tbl_in(1).UOM_CODE := p_cimv_rec.UOM_CODE;
3386     l_cimv_tbl_in(1).NUMBER_OF_ITEMS := p_cimv_rec.NUMBER_OF_ITEMS;
3387     l_cimv_tbl_in(1).CREATED_BY := p_cimv_rec.CREATED_BY;
3388     l_cimv_tbl_in(1).CREATION_DATE := p_cimv_rec.CREATION_DATE;
3389     l_cimv_tbl_in(1).LAST_UPDATED_BY := p_cimv_rec.LAST_UPDATED_BY;
3390     l_cimv_tbl_in(1).LAST_UPDATE_DATE := p_cimv_rec.LAST_UPDATE_DATE;
3391     l_cimv_tbl_in(1).LAST_UPDATE_LOGIN := p_cimv_rec.LAST_UPDATE_LOGIN;
3392     l_cimv_tbl_in(1).UPG_ORIG_SYSTEM_REF := p_cimv_rec.UPG_ORIG_SYSTEM_REF;
3393     l_cimv_tbl_in(1).UPG_ORIG_SYSTEM_REF_ID := p_cimv_rec.UPG_ORIG_SYSTEM_REF_ID;
3394 
3395 /*skuchima bugs 14380256 */
3396     IF (FND_API.G_TRUE = p_skip_minor_vers ) THEN
3397        okc_cvm_pvt.defer_minor_version_update('T');
3398       end if;
3399 
3400     okc_contract_item_pub.create_contract_item
3401     ( p_api_version      => l_api_version
3402     , p_init_msg_list    => p_init_msg_list
3403     , x_return_status    => l_return_status
3404     , x_msg_count        => x_msg_count
3405     , x_msg_data         => x_msg_data
3406     , p_cimv_tbl         => l_cimv_tbl_in
3407     , x_cimv_tbl         => l_cimv_tbl_out
3408     );
3409 
3410 okc_cvm_pvt.defer_minor_version_update('F');
3411 
3412     If (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
3413        raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3414     Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
3415        raise OKE_API.G_EXCEPTION_ERROR;
3416     End If;
3417 
3418     x_cimv_rec.ID := l_cimv_tbl_out(1).ID;
3419     x_cimv_rec.OBJECT_VERSION_NUMBER := l_cimv_tbl_out(1).OBJECT_VERSION_NUMBER;
3420     x_cimv_rec.CHR_ID := l_cimv_tbl_out(1).CHR_ID;
3421     x_cimv_rec.CLE_ID := l_cimv_tbl_out(1).CLE_ID;
3422     x_cimv_rec.CLE_ID_FOR := l_cimv_tbl_out(1).CLE_ID_FOR;
3423     x_cimv_rec.DNZ_CHR_ID := l_cimv_tbl_out(1).DNZ_CHR_ID;
3424     x_cimv_rec.EXCEPTION_YN := l_cimv_tbl_out(1).EXCEPTION_YN;
3425     x_cimv_rec.PRICED_ITEM_YN := l_cimv_tbl_out(1).PRICED_ITEM_YN;
3426     x_cimv_rec.OBJECT1_ID1 := l_cimv_tbl_out(1).OBJECT1_ID1;
3427     x_cimv_rec.OBJECT1_ID2 := l_cimv_tbl_out(1).OBJECT1_ID2;
3428     x_cimv_rec.JTOT_OBJECT1_CODE := l_cimv_tbl_out(1).JTOT_OBJECT1_CODE;
3429     x_cimv_rec.UOM_CODE := l_cimv_tbl_out(1).UOM_CODE;
3430     x_cimv_rec.NUMBER_OF_ITEMS := l_cimv_tbl_out(1).NUMBER_OF_ITEMS;
3431     x_cimv_rec.CREATED_BY := l_cimv_tbl_out(1).CREATED_BY;
3432     x_cimv_rec.CREATION_DATE := l_cimv_tbl_out(1).CREATION_DATE;
3433     x_cimv_rec.LAST_UPDATED_BY := l_cimv_tbl_out(1).LAST_UPDATED_BY;
3434     x_cimv_rec.LAST_UPDATE_DATE := l_cimv_tbl_out(1).LAST_UPDATE_DATE;
3435     x_cimv_rec.LAST_UPDATE_LOGIN := l_cimv_tbl_out(1).LAST_UPDATE_LOGIN;
3436     x_cimv_rec.UPG_ORIG_SYSTEM_REF := l_cimv_tbl_out(1).UPG_ORIG_SYSTEM_REF;
3437     x_cimv_rec.UPG_ORIG_SYSTEM_REF_ID := l_cimv_tbl_out(1).UPG_ORIG_SYSTEM_REF_ID;
3438 
3439     OKE_API.END_ACTIVITY(       x_msg_count     => x_msg_count,
3440                                 x_msg_data      => x_msg_data);
3441   EXCEPTION
3442     when OKE_API.G_EXCEPTION_ERROR then
3443       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
3444 			p_api_name  => l_api_name,
3445 			p_pkg_name  => g_pkg_name,
3446 			p_exc_name  => 'OKE_API.G_RET_STS_ERROR',
3447 			x_msg_count => x_msg_count,
3448 			x_msg_data  => x_msg_data,
3449 			p_api_type  => g_api_type);
3450 
3451     when OKE_API.G_EXCEPTION_UNEXPECTED_ERROR then
3452       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
3453 			p_api_name  => l_api_name,
3454 			p_pkg_name  => g_pkg_name,
3455 			p_exc_name  => 'OKE_API.G_RET_STS_UNEXP_ERROR',
3456 			x_msg_count => x_msg_count,
3457 			x_msg_data  => x_msg_data,
3458 			p_api_type  => g_api_type);
3459 
3460     when OTHERS then
3461       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
3462 			p_api_name  => l_api_name,
3463 			p_pkg_name  => g_pkg_name,
3464 			p_exc_name  => 'OTHERS',
3465 			x_msg_count => x_msg_count,
3466 			x_msg_data  => x_msg_data,
3467 			p_api_type  => g_api_type);
3468 
3469 END create_line_item;
3470 
3471 PROCEDURE delete_contract_line(p_api_version IN NUMBER,
3472                                p_init_msg_list IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
3473                                p_contract_line_id IN NUMBER,
3474                                x_return_status OUT NOCOPY VARCHAR2,
3475                                x_msg_count   OUT NOCOPY NUMBER,
3476                                x_msg_data OUT NOCOPY VARCHAR2 ,
3477                                p_skip_minor_vers              IN VARCHAR2 DEFAULT OKE_API.G_FALSE
3478                                )
3479 IS
3480 
3481 
3482 l_api_name          CONSTANT VARCHAR2(30) := 'DELETE_CONTRACT_LINE';
3483 l_api_version       CONSTANT NUMBER   := 1.0;
3484 l_return_status     VARCHAR2(1)               := OKE_API.G_RET_STS_SUCCESS;
3485 l_msg_count                NUMBER;
3486 l_msg_data                 VARCHAR2(2000);
3487 
3488 L_sts_code  VARCHAR2(30);
3489 L_object_version_number NUMBER;
3490 l_chr_id NUMBER;
3491 l_line_value_total NUMBER;
3492 l_undef_line_value_total NUMBER;
3493 
3494 
3495 
3496 L_PROGRESS VARCHAR2(3) := '000';
3497 
3498 l_cimv_tbl     okc_contract_item_pub.cimv_tbl_type;
3499 
3500 l_item_id NUMBER;
3501 l_item_obj_vers_num NUMBER;
3502 
3503 CURSOR cur_item_exists (p_cle_id NUMBER)
3504 IS
3505 SELECT id,OBJECT_VERSION_NUMBER
3506 FROM  okc_k_items
3507 WHERE CLE_ID =  p_cle_id;
3508 
3509 l_cle_tbl        OKE_CLE_PVT.cle_tbl_type;
3510 l_clev_tbl       OKC_CONTRACT_PUB.clev_tbl_type;
3511 
3512 BEGIN
3513 
3514     -- call START_ACTIVITY to create savepoint, check compatibility
3515     -- and initialize message list
3516     l_return_status := OKE_API.START_ACTIVITY(
3517                         p_api_name      => l_api_name,
3518                         p_pkg_name      => g_pkg_name,
3519                         p_init_msg_list => p_init_msg_list,
3520                         l_api_version   => l_api_version,
3521                         p_api_version   => p_api_version,
3522                         p_api_type      => g_api_type,
3523                         x_return_status => x_return_status);
3524 
3525     -- check if activity started successfully
3526     If (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
3527        raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3528     Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
3529        raise OKE_API.G_EXCEPTION_ERROR;
3530     End If;
3531 
3532     -- Get the Basic info regarding the line.
3533        BEGIN
3534            SELECT    cl.sts_code,cl.object_version_number
3535                      ,cl.dnz_chr_id, l.line_value_total,
3536                      l.undef_line_value_total
3537              INTO    L_sts_code, L_object_version_number
3538                      ,l_chr_id,l_line_value_total,
3539                      l_undef_line_value_total
3540              FROM    okc_k_lines_b cl, oke_k_lines l, oke_k_headers kh
3541             WHERE     cl.id=l.k_line_id
3542             AND       kh.k_header_id=cl.dnz_chr_id
3543             and       l.k_line_id=p_contract_line_id;
3544        EXCEPTION
3545           WHEN No_Data_Found THEN
3546            OKE_API.SET_MESSAGE
3547             (p_app_name		=> g_app_name,
3548 		         p_msg_name		=> g_invalid_value,
3549              p_token1	=> g_col_name_token,
3550              p_token1_value  => 'k_line_id'
3551 		        );
3552           raise OKE_API.G_EXCEPTION_ERROR;
3553           WHEN OTHERS THEN
3554           x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
3555           raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3556        END;
3557 
3558       -- 1. Validate line Status
3559        VALIDATE_LINE_STATUS (L_sts_code, l_return_status);
3560        --- If any errors happen abort API
3561        IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
3562          RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3563        ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
3564          RAISE OKE_API.G_EXCEPTION_ERROR;
3565        END IF;
3566 
3567      -- 2.	Check if child line exists, no delete for parent line.
3568        IF CHILD_LINE_EXISTS(p_contract_line_id) = 'Y' THEN
3569            OKE_API.SET_MESSAGE
3570             (p_app_name		=> g_app_name,
3571 		         p_msg_name		=> 'OKE_NO_DELETE_PARENT'
3572 		        );
3573           raise OKE_API.G_EXCEPTION_ERROR;
3574        END IF;
3575 
3576      -- 3.	Check if deliverable have been defaulted down, if so, no delete
3577         IF CHILD_DELIVERABLE_EXISTS(p_contract_line_id) = 'Y'
3578          THEN
3579            OKE_API.SET_MESSAGE
3580             (p_app_name		=> g_app_name,
3581 		         p_msg_name		=> 'OKE_NO_DELETE_DEFAULTED'
3582 		        );
3583           raise OKE_API.G_EXCEPTION_ERROR;
3584         END IF;
3585 
3586      -- 4. Check if funding exists
3587         IF CHILD_FUNDING_EXISTS(p_contract_line_id) = 'Y'
3588          THEN
3589            OKE_API.SET_MESSAGE
3590             (p_app_name		=> g_app_name,
3591 		         p_msg_name		=> 'OKE_NO_DELETE_FUND_EXISTS'
3592 		        );
3593           raise OKE_API.G_EXCEPTION_ERROR;
3594         END IF;
3595 
3596       -- 5. Update the total amounts the parent and the header
3597            -- line_value_total   undef_line_value_total
3598            update oke_k_lines
3599              set line_value_total = Nvl(line_value_total,0) - Nvl(l_line_value_total,0),
3600              undef_line_value_total = Nvl(undef_line_value_total,0) - Nvl(l_undef_line_value_total,0)
3601            where k_line_id IN (
3602                 SELECT id FROM okc_k_lines_b
3603                 WHERE id IS NOT NULL
3604                 START WITH id = p_contract_line_id
3605                 CONNECT BY PRIOR CLE_ID = ID );
3606 
3607            -- Update Header Amount
3608               UPDATE oke_k_headers
3609                SET line_value_total =  Nvl(line_value_total,0) - Nvl(l_line_value_total,0)
3610                    ,undef_line_value_total =  Nvl(undef_line_value_total,0) - Nvl(l_undef_line_value_total,0)
3611               WHERE k_header_id=l_chr_id;
3612 
3613 
3614      -- 7. Delete the item.
3615             OPEN cur_item_exists (p_contract_line_id);
3616             FETCH cur_item_exists INTO l_item_id ,l_item_obj_vers_num ;
3617             CLOSE cur_item_exists;
3618 
3619            IF (l_item_id IS NOT NULL AND l_item_obj_vers_num IS NOT NULL)
3620             THEN
3621 
3622               l_cimv_tbl(1).ID   := l_item_id;
3623               l_cimv_tbl(1).OBJECT_VERSION_NUMBER := l_item_obj_vers_num;
3624 
3625              /*skuchima bugs 14380256 */
3626     IF (FND_API.G_TRUE = p_skip_minor_vers ) THEN
3627        okc_cvm_pvt.defer_minor_version_update('T');
3628       end if;
3629 
3630               okc_contract_item_pub.delete_contract_item
3631                           ( p_api_version      => l_api_version
3632                           , p_init_msg_list    => p_init_msg_list
3633                           , x_return_status    => l_return_status
3634                           , x_msg_count        => l_msg_count
3635                           , x_msg_data         => l_msg_data
3636                           , p_cimv_tbl         => l_cimv_tbl
3637                         );
3638   okc_cvm_pvt.defer_minor_version_update('F');
3639 
3640               --- If any errors happen abort API
3641                 IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
3642                   RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3643                 ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
3644                   RAISE OKE_API.G_EXCEPTION_ERROR;
3645                 END IF;
3646             END IF;
3647 
3648           l_clev_tbl(1).ID := p_contract_line_id;
3649           l_clev_tbl(1).OBJECT_VERSION_NUMBER := L_object_version_number;
3650           l_cle_tbl(1).k_line_id := p_contract_line_id;
3651 
3652 
3653      -- 8. Delete Contract line
3654             oke_contract_pub.delete_contract_line
3655                     ( p_api_version        => l_api_version
3656                     , p_init_msg_list      => p_init_msg_list
3657                     , x_return_status      => l_return_status
3658                     , x_msg_count          => l_msg_count
3659                     , x_msg_data           => l_msg_data
3660                     , p_cle_tbl            => l_cle_tbl
3661                     , p_clev_tbl           => l_clev_tbl
3662                     );
3663               IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
3664                   RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3665               ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
3666                   RAISE OKE_API.G_EXCEPTION_ERROR;
3667               END IF;
3668 
3669 
3670 
3671      -- 6.	Delete associated party roles. Articles/Standard Notes/User Defined attributes etc
3672      -- and then delete actual line from oke and okc table.
3673 
3674         -- Delete User Defined Attributes.
3675            delete from oke_k_user_attributes where k_line_id = p_contract_line_id;
3676 
3677         -- Delete Standard Notes.
3678            delete from oke_k_standard_notes_tl
3679             where standard_notes_id in
3680 		        (select standard_notes_id from oke_k_standard_notes_b
3681 		         where k_line_id = p_contract_line_id);
3682 
3683             delete from oke_k_standard_notes_b where k_line_id = p_contract_line_id;
3684 
3685         -- Delete Print Forms
3686            delete from oke_k_print_forms where k_line_id = p_contract_line_id;
3687 
3688         -- Delete Terms and Conditions
3689            delete from oke_k_terms where k_line_id = p_contract_line_id;
3690 
3691         -- Delete articles
3692            delete from okc_k_articles_tl where id in
3693 		       (select id from okc_k_articles_b where cle_id=p_contract_line_id);
3694 
3695            delete from okc_k_articles_b where cle_id=p_contract_line_id;
3696            -- We need to delete corresonding clauses from the okc_articles_all first?
3697 
3698          -- Delete parties and contacts
3699             delete from okc_contacts where cpl_id in
3700 	        	(select id from okc_k_party_roles_b where cle_id=p_contract_line_id);
3701 
3702             delete from okc_k_party_roles_tl where id in
3703 		          (select id from okc_k_party_roles_b where cle_id=p_contract_line_id);
3704 
3705             delete from okc_k_party_roles_b where cle_id = p_contract_line_id;
3706 
3707 
3708 
3709        OKE_API.END_ACTIVITY(       x_msg_count     => x_msg_count,
3710                                 x_msg_data      => x_msg_data);
3711 
3712 EXCEPTION
3713   when OKE_API.G_EXCEPTION_ERROR then
3714       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
3715 			p_api_name  => l_api_name,
3716 			p_pkg_name  => g_pkg_name,
3717 			p_exc_name  => 'OKE_API.G_RET_STS_ERROR',
3718 			x_msg_count => x_msg_count,
3719 			x_msg_data  => x_msg_data,
3720 			p_api_type  => g_api_type);
3721 
3722     when OKE_API.G_EXCEPTION_UNEXPECTED_ERROR then
3723       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
3724 			p_api_name  => l_api_name,
3725 			p_pkg_name  => g_pkg_name,
3726 			p_exc_name  => 'OKE_API.G_RET_STS_UNEXP_ERROR',
3727 			x_msg_count => x_msg_count,
3728 			x_msg_data  => x_msg_data,
3729 			p_api_type  => g_api_type);
3730 
3731     when OTHERS then
3732       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
3733 			p_api_name  => l_api_name,
3734 			p_pkg_name  => g_pkg_name,
3735 			p_exc_name  => 'OTHERS',
3736 			x_msg_count => x_msg_count,
3737 			x_msg_data  => x_msg_data,
3738 			p_api_type  => g_api_type);
3739 END delete_contract_line;
3740 
3741 
3742 PROCEDURE update_contract_line(
3743 
3744     p_api_version                  IN NUMBER,
3745     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
3746     x_return_status                OUT NOCOPY VARCHAR2,
3747     x_msg_count                    OUT NOCOPY NUMBER,
3748     x_msg_data                     OUT NOCOPY VARCHAR2,
3749 
3750     p_cle_rec			                 IN  cle_rec_type,
3751     x_cle_rec			                 OUT NOCOPY  cle_rec_type,
3752     p_skip_minor_vers              IN VARCHAR2 DEFAULT OKE_API.G_FALSE
3753   ) IS
3754 
3755     l_api_name          CONSTANT VARCHAR2(30) := 'UPDATE_CONTRACT_LINE';
3756     l_api_version       CONSTANT NUMBER   := 1.0;
3757     l_return_status     VARCHAR2(1)               := OKE_API.G_RET_STS_SUCCESS;
3758 
3759     l_okc_clev_rec		OKC_CONTRACT_PUB.clev_rec_type;
3760     l_oke_cle_rec		  OKE_CONTRACT_PUB.cle_rec_type;
3761     l_out_clev		    OKC_CONTRACT_PUB.clev_rec_type;
3762     l_out_cle		      OKE_CONTRACT_PUB.cle_rec_type;
3763 
3764     l_cimv_rec		CIMV_REC_TYPE;
3765     l_cimv_out		CIMV_REC_TYPE;
3766     l_inv_Org		NUMBER;
3767 
3768       l_cimv_tbl_in     okc_contract_item_pub.cimv_tbl_type;
3769       l_cimv_tbl_out    okc_contract_item_pub.cimv_tbl_type;
3770 
3771 
3772     CURSOR get_inventory_org (p_chr NUMBER)  IS
3773     SELECT inv_organization_id
3774     FROM OKC_K_HEADERS_B
3775     WHERE ID = p_chr;
3776 
3777     l_value VARCHAR2(1);
3778 
3779     CURSOR c_line_exists
3780     IS
3781     SELECT cl.dnz_chr_id,cl.cle_id,cl.sts_code,cl.lse_id, el.export_flag
3782     ,el.PROGRESS_PAYMENT_FLAG,cl.start_date,cl.end_date,el.proposal_due_date, el.delivery_date
3783     ,el.line_quantity,el.unit_price, el.undef_unit_price,el.line_value, el.undef_line_value
3784     ,el.line_value_total,el.undef_line_value_total
3785     FROM   okc_k_lines_b cl , oke_k_lines el
3786     WHERE cl.id= p_cle_rec.k_line_id
3787     AND  el.k_line_id=cl.id;
3788 
3789     l_chr_id NUMBER;
3790     l_cle_id NUMBER;
3791     l_sts_code VARCHAR2(30);
3792     l_lse_id NUMBER;
3793     l_export_flag VARCHAR2(1);
3794     l_PROGRESS_PAYMENT_FLAG varchar2(1);
3795     l_start_date DATE;
3796     l_end_date   DATE;
3797     l_proposal_due_date VARCHAR2(80);
3798     l_delivery_date DATE;
3799 
3800     l_line_quantity      NUMBER;
3801     l_unit_price         NUMBER;
3802     l_undef_unit_price   NUMBER;
3803 
3804 
3805     CURSOR c_line_item_exists
3806     IS
3807     SELECT 'Y' , id ,object_version_number
3808      FROM okc_k_items
3809     WHERE cle_id= p_cle_rec.k_line_id;
3810     l_item_exists VARCHAR2(1);
3811     l_k_item_id NUMBER;
3812     l_ovn NUMBER;
3813 
3814 
3815     CURSOR c (p_number varchar2, p_cle_id NUMBER) is
3816     select 'x'
3817     from OKC_K_LINES_B
3818     WHERE LINE_NUMBER = p_number
3819     AND id<>p_cle_id
3820     AND (  cle_id = l_cle_id
3821          OR (cle_id is null AND l_cle_id is null))
3822     AND dnz_chr_id = l_chr_id;
3823 
3824     l_found VARCHAR2(1);
3825     l_line_status VARCHAR2(1);
3826     l_line_number VARCHAR2(240);
3827 
3828 
3829     cursor c_ste_code(p_status_code varchar2) is
3830     select ste_code from okc_statuses_b where
3831     code = p_status_code;
3832     l_ste_code varchar(40) := null;
3833 
3834     l_oval NUMBER ;
3835     l_oval_u NUMBER ;
3836 
3837     l_diff NUMBER := 0;
3838     l_diff_u NUMBER := 0;
3839     l_nval NUMBER;
3840     l_nval_u NUMBER;
3841 
3842     l_qty_changed_yn        VARCHAR2(1) := 'N';
3843     l_price_changed_yn      VARCHAR2(1) := 'N';
3844     l_undef_price_changed_yn VARCHAR2(1) := 'N';
3845     l_line_value_total NUMBER;
3846     l_undef_line_value_total NUMBER;
3847 
3848 BEGIN
3849 
3850     -- call START_ACTIVITY to create savepoint, check compatibility
3851     -- and initialize message list
3852     l_return_status := OKE_API.START_ACTIVITY(
3853                         p_api_name      => l_api_name,
3854                         p_pkg_name      => g_pkg_name,
3855                         p_init_msg_list => p_init_msg_list,
3856                         l_api_version   => l_api_version,
3857                         p_api_version   => p_api_version,
3858                         p_api_type      => g_api_type,
3859                         x_return_status => x_return_status);
3860 
3861 
3862     -- check if activity started successfully
3863     If (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
3864        raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
3865     Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
3866        raise OKE_API.G_EXCEPTION_ERROR;
3867     End If;
3868 
3869 
3870 
3871      /* Adding missing validations */
3872      -- Get the following fields from the OKE_K_LINES
3873      OPEN c_line_exists;
3874      FETCH c_line_exists INTO l_chr_id,l_cle_id,l_sts_code,l_lse_id,l_export_flag,
3875      l_PROGRESS_PAYMENT_FLAG,l_start_date,l_end_date,l_proposal_due_date,l_delivery_date
3876      ,l_line_quantity,l_unit_price,l_undef_unit_price,l_oval,l_oval_u
3877      ,l_line_value_total,l_undef_line_value_total;
3878      IF c_line_exists%NOTFOUND THEN
3879         CLOSE  c_line_exists;
3880         OKE_API.SET_MESSAGE
3881             (p_app_name		=> g_app_name,
3882 		         p_msg_name		=> g_invalid_value,
3883              p_token1	=> g_col_name_token,
3884              p_token1_value  => 'K_Line_ID');
3885 
3886           raise OKE_API.G_EXCEPTION_ERROR;
3887      END IF;
3888      CLOSE c_line_exists;
3889 
3890 
3891      OKC_CONTEXT.Set_OKC_Org_Context( p_chr_id => L_CHR_ID );
3892 
3893      -- If the line number is passed as null then set to oke_api.g_miss_char
3894      l_line_number :=  Nvl(p_cle_rec.line_number,OKE_API.g_Miss_char);
3895 
3896      -- Get the current status, if the status is not entered then do no allow update to line number.
3897      open c_ste_code(l_sts_code);
3898      fetch c_ste_code into l_ste_code;
3899      close c_ste_code;
3900 
3901      -- If status is not entered then do not allow update to line number.
3902      If l_ste_code <> 'ENTERED' THEN
3903          l_line_number := OKE_API.g_Miss_char;
3904      END IF;
3905 
3906      IF l_line_number <> OKE_API.g_miss_char
3907       Then
3908        IF l_line_number IS NOT NULL
3909         THEN
3910         -- check for duplication
3911         open c(p_cle_rec.line_number,l_cle_id);
3912         fetch c into l_found;
3913         IF  c%FOUND THEN
3914         CLOSE c;
3915            OKE_API.SET_MESSAGE
3916             (p_app_name		=> g_app_name,
3917 		         p_msg_name		=> 'OKE_NUMBER_EXISTED'
3918 		        );
3919           raise OKE_API.G_EXCEPTION_ERROR;
3920         END IF;
3921         close c;
3922         -- check if there is a change and if the status is not entered
3923         -- then do not allow update to line number.
3924      END IF;
3925       END IF;
3926 
3927       IF  Nvl(p_cle_rec.lse_id,-99) <> oke_api.g_miss_num THEN
3928           IF p_cle_rec.lse_id IS NOT NULL THEN
3929             l_lse_id  :=  p_cle_rec.lse_id;
3930           ELSE
3931             -- lse_id can not be null
3932             l_lse_id  :=  oke_api.g_miss_num;
3933           END IF;
3934       END IF;
3935 
3936       -- Data Item related validations:
3937       IF l_lse_id IN (703 , 704 , 707) THEN
3938          l_oke_cle_rec.copies_required		:= p_cle_rec.copies_required;
3939          l_oke_cle_rec.cdrl_category		:= p_cle_rec.cdrl_category;
3940          l_oke_cle_rec.data_item_name		:= p_cle_rec.data_item_name;
3941          l_oke_cle_rec.data_item_subtitle	:= p_cle_rec.data_item_subtitle;
3942          l_oke_cle_rec.date_of_first_submission:= p_cle_rec.date_of_first_submission;
3943          l_oke_cle_rec.frequency		:= p_cle_rec.frequency;
3944          l_oke_cle_rec.requiring_office	:= p_cle_rec.requiring_office;
3945       ELSE
3946          l_oke_cle_rec.copies_required		:= NULL;
3947          l_oke_cle_rec.cdrl_category		:= NULL;
3948          l_oke_cle_rec.data_item_name		:=NULL;
3949          l_oke_cle_rec.data_item_subtitle	:=NULL;
3950          l_oke_cle_rec.date_of_first_submission:= NULL;
3951          l_oke_cle_rec.frequency		:= NULL;
3952          l_oke_cle_rec.requiring_office	:= NULL;
3953       END IF;
3954 
3955       IF Nvl(p_cle_rec.export_flag,'SE') <> oke_api.g_miss_char
3956       THEN
3957          IF  p_cle_rec.export_flag IS NOT NULL THEN
3958             l_export_flag := p_cle_rec.export_flag;
3959          ELSE
3960             l_export_flag := 'N';
3961          END IF;
3962       END IF;
3963 
3964       IF Nvl(Upper(l_export_flag),'N') = 'N'
3965       THEN
3966          l_oke_cle_rec.EXPORT_LICENSE_NUM := NULL;
3967          l_oke_cle_rec.EXPORT_LICENSE_RES := NULL;
3968       ELSE
3969          l_oke_cle_rec.EXPORT_LICENSE_NUM := p_cle_rec.EXPORT_LICENSE_NUM;
3970          l_oke_cle_rec.EXPORT_LICENSE_RES := p_cle_rec.EXPORT_LICENSE_RES;
3971       END IF;
3972 
3973 
3974       IF Nvl(p_cle_rec.PROGRESS_PAYMENT_FLAG,'SE') <>  oke_api.g_miss_char
3975       THEN
3976           IF l_PROGRESS_PAYMENT_FLAG IS NOT NULL THEN
3977             l_PROGRESS_PAYMENT_FLAG := p_cle_rec.PROGRESS_PAYMENT_FLAG;
3978            ELSE
3979              l_PROGRESS_PAYMENT_FLAG := 'N';
3980            END IF;
3981       END IF;
3982 
3983       IF Nvl(l_PROGRESS_PAYMENT_FLAG,'N') = 'N' THEN
3984          l_oke_cle_rec.PROGRESS_PAYMENT_LIQ_RATE  := NULL;
3985          l_oke_cle_rec.PROGRESS_PAYMENT_RATE     := NULL;
3986          l_oke_cle_rec.LINE_LIQUIDATION_RATE     := NULL;
3987       ELSE
3988         l_oke_cle_rec.PROGRESS_PAYMENT_LIQ_RATE  := p_cle_rec.PROGRESS_PAYMENT_LIQ_RATE;
3989         l_oke_cle_rec.PROGRESS_PAYMENT_RATE     := p_cle_rec.PROGRESS_PAYMENT_RATE;
3990         l_oke_cle_rec.LINE_LIQUIDATION_RATE     := p_cle_rec.LINE_LIQUIDATION_RATE;
3991       END IF;
3992 
3993       IF  p_cle_rec.start_date <> oke_api.g_miss_date THEN
3994           l_start_Date := p_cle_rec.start_date;
3995       END IF;
3996 
3997       IF  p_cle_rec.end_date <> oke_api.g_miss_date THEN
3998           l_end_Date := p_cle_rec.end_date;
3999       END IF;
4000 
4001       IF  p_cle_rec.delivery_date <> oke_api.g_miss_date THEN
4002           l_delivery_Date := p_cle_rec.delivery_Date;
4003       END IF;
4004 
4005       IF p_cle_rec.proposal_due_date  <> oke_api.g_miss_char THEN
4006          l_proposal_due_date :=  p_cle_rec.proposal_due_date;
4007       END IF;
4008 
4009       -- Validate delivery date, if there is a change then only valdiate.
4010          IF  p_cle_rec.delivery_date <> oke_api.g_miss_date
4011             AND p_cle_rec.delivery_date IS NOT NULL  THEN
4012             validate_delivery_Date (x_return_status => x_return_status,
4013                                   p_line_id =>  p_cle_rec.k_line_id,
4014                                   p_start_date => l_start_date,
4015                                   p_end_date => l_end_date,
4016                                   p_due_date => l_delivery_date
4017                                   );
4018                       -- check for errors
4019               If (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
4020                 raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
4021               Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
4022                 raise OKE_API.G_EXCEPTION_ERROR;
4023               End If;
4024          END IF;
4025 
4026         -- Validate proposal date
4027          IF  p_cle_rec.proposal_due_date <> oke_api.g_miss_char
4028             AND p_cle_rec.proposal_due_date IS NOT NULL THEN
4029               validate_proposal_due_date(x_return_status,l_proposal_due_date);
4030 
4031               If (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
4032                 raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
4033               Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
4034                 raise OKE_API.G_EXCEPTION_ERROR;
4035               End If;
4036          END IF;
4037 
4038          -- Validate Start date
4039          IF  p_cle_rec.start_date <> oke_api.g_miss_date
4040             AND p_cle_rec.start_date IS NOT NULL THEN
4041 
4042                 VALIDATE_line_dates (x_return_status => x_return_status,
4043                                p_line_id => p_cle_rec.k_line_id,
4044                                p_col_name => 'Start Date',
4045                                p_line_start_date => l_start_date,
4046                                p_line_end_date => l_end_date,
4047                                p_line_due_date => l_delivery_date,
4048                                p_cle_id => l_cle_id,
4049                                p_chr_id => l_chr_id
4050                               );
4051               If (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
4052                 raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
4053               Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
4054                 raise OKE_API.G_EXCEPTION_ERROR;
4055               End If;
4056          END IF;
4057 
4058          -- Validate End date
4059          IF  p_cle_rec.end_date <> oke_api.g_miss_date
4060             AND p_cle_rec.end_date IS NOT NULL THEN
4061                VALIDATE_line_dates (x_return_status => x_return_status,
4062                                p_line_id => p_cle_rec.k_line_id,
4063                                p_col_name => 'End Date',
4064                                p_line_start_date => l_start_date,
4065                                p_line_end_date => l_end_date,
4066                                p_line_due_date => l_delivery_date,
4067                                p_cle_id => l_cle_id,
4068                                p_chr_id => l_chr_id
4069                               );
4070 
4071               If (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
4072                 raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
4073               Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
4074                 raise OKE_API.G_EXCEPTION_ERROR;
4075               End If;
4076          END IF;
4077 
4078          -- Detect price changes
4079             IF    ( p_cle_rec.line_quantity <> oke_api.g_miss_num
4080                    AND Nvl(p_cle_rec.line_quantity,-99) <> Nvl(l_line_quantity,-99)
4081                    )
4082                  THEN
4083                    l_qty_changed_yn := 'Y';
4084                    l_line_quantity :=  p_cle_rec.line_quantity;
4085             END IF;
4086             IF    (
4087                    p_cle_rec.unit_price <> oke_api.g_miss_num
4088                    AND Nvl(p_cle_rec.unit_price,-99) <> Nvl(l_unit_price,-99)
4089                    )
4090             THEN
4091                     l_price_changed_yn := 'Y' ;
4092                     l_unit_price :=  p_cle_rec.unit_price;
4093             END IF;
4094 
4095                IF
4096                   ( p_cle_rec.undef_unit_price <> oke_api.g_miss_num
4097                     AND Nvl(p_cle_rec.undef_unit_price,-99) <> Nvl(l_undef_unit_price,-99)
4098                   )
4099              THEN
4100 
4101                  l_undef_price_changed_yn := 'Y';
4102                  l_undef_unit_price :=  p_cle_rec.undef_unit_price;
4103            END IF;
4104 
4105          if l_qty_changed_yn = 'Y' or l_price_changed_yn = 'Y' or l_undef_price_changed_yn = 'Y'
4106           THEN
4107               l_nval  := Nvl(l_line_quantity * l_unit_price,l_oval);
4108               l_nval_u  := Nvl(l_line_quantity * l_undef_unit_price,l_oval_u);
4109 
4110               IF  l_price_changed_yn = 'Y' THEN
4111                   IF l_oval IS NOT NULL AND l_line_quantity IS NOT NULL AND l_unit_price IS NULL THEN
4112                    l_nval := NULL;
4113                    END IF;
4114                    IF l_line_quantity IS NOT NULL AND l_unit_price IS NOT NULL THEN
4115                       NULL;
4116                       -- do not allow update to line value manually
4117                       --l_oke_cle_rec.line_value := ?
4118                    ELSE
4119                        -- allow line valuue to be edited manually
4120                        l_oke_cle_rec.line_value	:= p_cle_rec.line_value;
4121                    END IF;
4122 
4123               END IF;
4124               IF l_undef_price_changed_yn = 'Y' THEN
4125                      IF l_oval_u IS NOT NULL AND l_line_quantity IS NOT NULL AND l_undef_unit_price IS NULL THEN
4126                     l_nval_u := NULL;
4127                   END IF;
4128 
4129                   IF l_undef_unit_price IS NOT NULL AND l_line_quantity IS NOT NULL THEN
4130                       NULL;
4131                       -- do not allow update to line value manually
4132                       --l_oke_cle_rec.undef_line_value := ?
4133                    ELSE
4134                      l_oke_cle_rec.undef_line_value	:= p_cle_rec.undef_line_value;
4135                      -- allow line valuue to be edited manually
4136                    END IF;
4137                 END IF;
4138 
4139          l_diff := Nvl(l_oval,0) - Nvl(l_nval,0);
4140          l_oke_cle_rec.line_value := l_nval;
4141          l_oke_cle_rec.line_value_total := Nvl(l_line_value_total,0) - l_diff;
4142 
4143          l_diff_u := Nvl(l_oval_u,0) - Nvl(l_nval_u,0);
4144          l_oke_cle_rec.undef_line_value := l_nval_u;
4145          l_oke_cle_rec.undef_line_value_total := Nvl(l_undef_line_value_total,0) - l_diff_u;
4146 
4147          update_line_total(l_chr_id , p_cle_rec.k_line_id , l_cle_id , l_diff , l_diff_u);
4148 
4149          ELSE
4150           l_oke_cle_rec.undef_line_value_total := oke_api.g_miss_num;
4151           l_oke_cle_rec.line_value_total := oke_api.g_miss_num;
4152           l_oke_cle_rec.undef_line_value := p_cle_rec.undef_line_value;
4153           l_oke_cle_rec.line_value := p_cle_rec.line_value;
4154          END IF;
4155 
4156 
4157 
4158   /* Adding missing validations */
4159 
4160   -- Detect the changes
4161      OPEN c_line_item_exists;
4162      FETCH c_line_item_exists INTO l_item_exists,l_k_item_id,l_ovn;
4163      CLOSE c_line_item_exists;
4164      l_item_exists := Nvl(l_item_exists,'N');
4165 
4166 
4167   -- Make sure that the changes are valid.
4168   l_oke_cle_rec.k_line_id		:= p_cle_rec.k_line_id;
4169   l_oke_cle_rec.parent_line_id		:= p_cle_rec.parent_line_id;
4170   l_oke_cle_rec.project_id		:= p_cle_rec.project_id;
4171   l_oke_cle_rec.task_id			:= p_cle_rec.task_id;
4172   l_oke_cle_rec.billing_method_code	:= p_cle_rec.billing_method_code;
4173   l_oke_cle_rec.inventory_item_id	:= p_cle_rec.inventory_item_id;
4174   l_oke_cle_rec.delivery_order_flag	:= p_cle_rec.delivery_order_flag;
4175   l_oke_cle_rec.splited_flag		:= p_cle_rec.splited_flag;
4176   l_oke_cle_rec.priority_code		:= p_cle_rec.priority_code;
4177   l_oke_cle_rec.customer_item_id	:= p_cle_rec.customer_item_id;
4178   l_oke_cle_rec.customer_item_number	:= p_cle_rec.customer_item_number;
4179   l_oke_cle_rec.line_quantity		:= p_cle_rec.line_quantity;
4180   l_oke_cle_rec.delivery_date		:= p_cle_rec.delivery_date;
4181   l_oke_cle_rec.unit_price		:= p_cle_rec.unit_price;
4182   l_oke_cle_rec.uom_code		:= p_cle_rec.uom_code;
4183   l_oke_cle_rec.billable_flag		:= p_cle_rec.billable_flag;
4184   l_oke_cle_rec.shippable_flag		:= p_cle_rec.shippable_flag;
4185   l_oke_cle_rec.subcontracted_flag    	:= p_cle_rec.subcontracted_flag;
4186   l_oke_cle_rec.completed_flag		:= p_cle_rec.completed_flag;
4187   l_oke_cle_rec.nsp_flag		:= p_cle_rec.nsp_flag;
4188   l_oke_cle_rec.app_code		:= p_cle_rec.app_code;
4189   l_oke_cle_rec.as_of_date		:= p_cle_rec.as_of_date;
4190   l_oke_cle_rec.authority		:= p_cle_rec.authority;
4191   l_oke_cle_rec.country_of_origin_code 	:= p_cle_rec.country_of_origin_code;
4192   l_oke_cle_rec.drop_shipped_flag	:= p_cle_rec.drop_shipped_flag;
4193   l_oke_cle_rec.customer_approval_req_flag  := p_cle_rec.customer_approval_req_flag;
4194   l_oke_cle_rec.date_material_req	:= p_cle_rec.date_material_req;
4195   l_oke_cle_rec.inspection_req_flag	:= p_cle_rec.inspection_req_flag;
4196   l_oke_cle_rec.interim_rpt_req_flag	:= p_cle_rec.interim_rpt_req_flag;
4197   l_oke_cle_rec.subj_a133_flag		:= p_cle_rec.subj_a133_flag;
4198   l_oke_cle_rec.export_flag		:= l_export_flag;
4199   l_oke_cle_rec.cfe_req_flag		:= p_cle_rec.cfe_req_flag;
4200   l_oke_cle_rec.cop_required_flag	:= p_cle_rec.cop_required_flag;
4201   --l_oke_cle_rec.export_license_num	:= p_cle_rec.export_license_num;
4202   --l_oke_cle_rec.export_license_res    	:= p_cle_rec.export_license_res;
4203 
4204 
4205 
4206   l_oke_cle_rec.dcaa_audit_req_flag	:= p_cle_rec.dcaa_audit_req_flag;
4207   l_oke_cle_rec.definitized_flag	:= p_cle_rec.definitized_flag;
4208   l_oke_cle_rec.cost_of_money		:= p_cle_rec.cost_of_money;
4209   l_oke_cle_rec.bill_undefinitized_flag := p_cle_rec.bill_undefinitized_flag;
4210   l_oke_cle_rec.nsn_number		:= p_cle_rec.nsn_number;
4211   l_oke_cle_rec.nte_warning_flag	:= p_cle_rec.nte_warning_flag;
4212   l_oke_cle_rec.discount_for_payment	:= p_cle_rec.discount_for_payment;
4213   l_oke_cle_rec.financial_ctrl_flag	:= p_cle_rec.financial_ctrl_flag;
4214   l_oke_cle_rec.c_scs_flag		:= p_cle_rec.c_scs_flag;
4215   l_oke_cle_rec.c_ssr_flag		:= p_cle_rec.c_ssr_flag;
4216   l_oke_cle_rec.prepayment_amount	:= p_cle_rec.prepayment_amount;
4217   l_oke_cle_rec.prepayment_percentage  	:= p_cle_rec.prepayment_percentage;
4218   l_oke_cle_rec.progress_payment_flag 	:= l_progress_payment_flag;
4219   l_oke_cle_rec.progress_payment_liq_rate := p_cle_rec.progress_payment_liq_rate;
4220   l_oke_cle_rec.progress_payment_rate 	:= p_cle_rec.progress_payment_rate;
4221   l_oke_cle_rec.award_fee		:= p_cle_rec.award_fee;
4222   l_oke_cle_rec.award_fee_pool_amount 	:= p_cle_rec.award_fee_pool_amount;
4223   l_oke_cle_rec.base_fee		:= p_cle_rec.base_fee;
4224   l_oke_cle_rec.ceiling_cost		:= p_cle_rec.ceiling_cost;
4225   l_oke_cle_rec.ceiling_price		:= p_cle_rec.ceiling_price;
4226   l_oke_cle_rec.labor_cost_index	:= p_cle_rec.labor_cost_index;
4227   l_oke_cle_rec.material_cost_index	:= p_cle_rec.material_cost_index;
4228   l_oke_cle_rec.customers_percent_in_order 	:= p_cle_rec.customers_percent_in_order;
4229   l_oke_cle_rec.cost_overrun_share_ratio	:= p_cle_rec.cost_overrun_share_ratio;
4230   l_oke_cle_rec.cost_underrun_share_ratio	:= p_cle_rec.cost_underrun_share_ratio;
4231   l_oke_cle_rec.date_of_price_redetermin 	:= p_cle_rec.date_of_price_redetermin;
4232   l_oke_cle_rec.estimated_total_quantity 	:= p_cle_rec.estimated_total_quantity;
4233   l_oke_cle_rec.fee_ajt_formula		:= p_cle_rec.fee_ajt_formula;
4234   l_oke_cle_rec.final_fee		:= p_cle_rec.final_fee;
4235   l_oke_cle_rec.final_pft_ajt_formula 	:= p_cle_rec.final_pft_ajt_formula;
4236   l_oke_cle_rec.fixed_fee		:= p_cle_rec.fixed_fee;
4237   l_oke_cle_rec.fixed_quantity		:= p_cle_rec.fixed_quantity;
4238   l_oke_cle_rec.initial_fee		:= p_cle_rec.initial_fee;
4239   l_oke_cle_rec.initial_price		:= p_cle_rec.initial_price;
4240   l_oke_cle_rec.level_of_effort_hours 	:= p_cle_rec.level_of_effort_hours;
4241   l_oke_cle_rec.line_liquidation_rate 	:= p_cle_rec.line_liquidation_rate;
4242   l_oke_cle_rec.maximum_fee		:= p_cle_rec.maximum_fee;
4243   l_oke_cle_rec.maximum_quantity	:= p_cle_rec.maximum_quantity;
4244   l_oke_cle_rec.minimum_fee		:= p_cle_rec.minimum_fee;
4245   l_oke_cle_rec.minimum_quantity	:= p_cle_rec.minimum_quantity;
4246   l_oke_cle_rec.number_of_options	:= p_cle_rec.number_of_options;
4247   l_oke_cle_rec.revised_price		:= p_cle_rec.revised_price;
4248   l_oke_cle_rec.target_cost		:= p_cle_rec.target_cost;
4249   l_oke_cle_rec.target_date_definitize 	:= p_cle_rec.target_date_definitize;
4250   l_oke_cle_rec.target_fee	        := p_cle_rec.target_fee;
4251   l_oke_cle_rec.target_price		:= p_cle_rec.target_price;
4252   l_oke_cle_rec.total_estimated_cost  	:= p_cle_rec.total_estimated_cost;
4253   l_oke_cle_rec.proposal_due_date	:= p_cle_rec.proposal_due_date;
4254   l_oke_cle_rec.cost_of_sale_rate	:= p_cle_rec.cost_of_sale_rate;
4255   l_oke_cle_rec.created_by	        := p_cle_rec.created_by;
4256   l_oke_cle_rec.creation_date		:= p_cle_rec.creation_date;
4257   l_oke_cle_rec.last_updated_by		:= p_cle_rec.last_updated_by;
4258   l_oke_cle_rec.last_update_login	:= p_cle_rec.last_update_login;
4259   l_oke_cle_rec.last_update_date      	:= p_cle_rec.last_update_date;
4260   --l_oke_cle_rec.line_value		:= p_cle_rec.line_value;
4261   --l_oke_cle_rec.line_value_total	:= p_cle_rec.line_value_total;
4262   l_oke_cle_rec.end_date                := p_cle_rec.end_date;
4263 
4264   -- l_oke_cle_rec.undef_line_value	:= p_cle_rec.undef_line_value;
4265   -- l_oke_cle_rec.undef_line_value_total	:= p_cle_rec.undef_line_value_total;
4266   l_oke_cle_rec.undef_unit_price        := p_cle_rec.undef_unit_price;
4267 
4268     l_okc_clev_rec.id                      	:= p_cle_rec.k_line_id;
4269     l_okc_clev_rec.object_version_number    	:= p_cle_rec.object_version_number;
4270     l_okc_clev_rec.sfwt_flag                	:= p_cle_rec.sfwt_flag;
4271     l_okc_clev_rec.chr_id                    	:= p_cle_rec.chr_id;
4272     l_okc_clev_rec.cle_id                    	:= p_cle_rec.cle_id;
4273     l_okc_clev_rec.lse_id                     	:= l_lse_id;
4274     l_okc_clev_rec.line_number               	:= l_line_number;
4275     --l_okc_clev_rec.sts_code                  	:= Nvl(p_cle_rec.sts_code, oke_api.g_miss_char);
4276     -- Pass oke_api.g_miss_char so that status will not be overriden
4277     l_okc_clev_rec.sts_code                  	:= oke_api.g_miss_char;
4278     l_okc_clev_rec.display_sequence           	:= p_cle_rec.display_sequence;
4279     l_okc_clev_rec.trn_code                   	:= p_cle_rec.trn_code  ;
4280     l_okc_clev_rec.dnz_chr_id                 	:= p_cle_rec.dnz_chr_id  ;
4281     l_okc_clev_rec.comments                   	:= p_cle_rec.comments    ;
4282     l_okc_clev_rec.item_description           	:= p_cle_rec.item_description   ;
4283     l_okc_clev_rec.oke_boe_description        	:= p_cle_rec.oke_boe_description;
4284     l_okc_clev_rec.hidden_ind                 	:= p_cle_rec.hidden_ind   ;
4285     l_okc_clev_rec.price_unit			:= p_cle_rec.price_unit;
4286     l_okc_clev_rec.price_unit_percent		:= p_cle_rec.price_unit_percent;
4287     l_okc_clev_rec.price_negotiated           	:= p_cle_rec.price_negotiated;
4288     l_okc_clev_rec.price_negotiated_renewed     := p_cle_rec.price_negotiated_renewed;
4289     l_okc_clev_rec.price_level_ind    		:= p_cle_rec.price_level_ind;
4290     l_okc_clev_rec.invoice_line_level_ind       := p_cle_rec.invoice_line_level_ind;
4291     l_okc_clev_rec.dpas_rating                  := p_cle_rec.dpas_rating;
4292     l_okc_clev_rec.block23text                  := p_cle_rec.block23text;
4293     l_okc_clev_rec.exception_yn                 := p_cle_rec.exception_yn;
4294     l_okc_clev_rec.template_used                := p_cle_rec.template_used;
4295     l_okc_clev_rec.date_terminated              := p_cle_rec.date_terminated;
4296     l_okc_clev_rec.name                         := p_cle_rec.name;
4297     l_okc_clev_rec.start_date                   := p_cle_rec.start_date;
4298 
4299     l_okc_clev_rec.upg_orig_system_ref          := p_cle_rec.upg_orig_system_ref;
4300     l_okc_clev_rec.upg_orig_system_ref_id       := p_cle_rec.upg_orig_system_ref_id;
4301     l_okc_clev_rec.attribute_category           := p_cle_rec.attribute_category;
4302     l_okc_clev_rec.attribute1                   := p_cle_rec.attribute1;
4303     l_okc_clev_rec.attribute2                   := p_cle_rec.attribute2;
4304     l_okc_clev_rec.attribute3                   := p_cle_rec.attribute3;
4305     l_okc_clev_rec.attribute4                   := p_cle_rec.attribute4;
4306     l_okc_clev_rec.attribute5                   := p_cle_rec.attribute5;
4307     l_okc_clev_rec.attribute6                   := p_cle_rec.attribute6;
4308     l_okc_clev_rec.attribute7                   := p_cle_rec.attribute7;
4309     l_okc_clev_rec.attribute8                   := p_cle_rec.attribute8;
4310     l_okc_clev_rec.attribute9                   := p_cle_rec.attribute9;
4311     l_okc_clev_rec.attribute10                  := p_cle_rec.attribute10;
4312     l_okc_clev_rec.attribute11                  := p_cle_rec.attribute11;
4313     l_okc_clev_rec.attribute12                  := p_cle_rec.attribute12;
4314     l_okc_clev_rec.attribute13                  := p_cle_rec.attribute13;
4315     l_okc_clev_rec.attribute14                  := p_cle_rec.attribute14;
4316     l_okc_clev_rec.attribute15                  := p_cle_rec.attribute15;
4317     l_okc_clev_rec.created_by                   := p_cle_rec.created_by;
4318     l_okc_clev_rec.creation_date                := p_cle_rec.creation_date;
4319     l_okc_clev_rec.last_updated_by              := p_cle_rec.last_updated_by;
4320     l_okc_clev_rec.last_update_date             := p_cle_rec.last_update_date;
4321     l_okc_clev_rec.price_type                   := p_cle_rec.price_type;
4322     l_okc_clev_rec.currency_code                := p_cle_rec.currency_code;
4323     l_okc_clev_rec.currency_code_renewed	      := p_cle_rec.currency_code_renewed;
4324     l_okc_clev_rec.last_update_login            := p_cle_rec.last_update_login;
4325 
4326 
4327 
4328     Validate_OKC_line_fields ( l_return_status, p_cle_rec );
4329 
4330     --- If any errors happen abort API
4331     IF (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) THEN
4332       RAISE OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
4333     ELSIF (l_return_status = OKE_API.G_RET_STS_ERROR) THEN
4334       RAISE OKE_API.G_EXCEPTION_ERROR;
4335     END IF;
4336 
4337 /*skuchima bugs 14524245 */
4338     IF (FND_API.G_TRUE = p_skip_minor_vers ) THEN
4339        okc_cvm_pvt.defer_minor_version_update('T');
4340     end if;
4341 
4342 
4343 	OKE_CONTRACT_PUB.update_contract_line(
4344 			p_api_version		=>	p_api_version,
4345     			p_init_msg_list		=>	p_init_msg_list,
4346     			x_return_status		=>	x_return_status,
4347     			x_msg_count		=>	x_msg_count,
4348    			x_msg_data		=>	x_msg_data,
4349 			p_cle_rec		=>	l_oke_cle_rec,
4350 			p_clev_rec		=>	l_okc_clev_rec,
4351 			x_cle_rec		=>	l_out_cle,
4352 			x_clev_rec		=>	l_out_clev	);
4353 
4354  okc_cvm_pvt.defer_minor_version_update('F');
4355 
4356     If (x_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
4357        raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
4358     Elsif (x_return_status = OKE_API.G_RET_STS_ERROR) then
4359        raise OKE_API.G_EXCEPTION_ERROR;
4360     End If;
4361 
4362 
4363   x_cle_rec.k_line_id			:= l_out_cle.k_line_id;
4364   x_cle_rec.parent_line_id		:= l_out_cle.parent_line_id;
4365   x_cle_rec.project_id			:= l_out_cle.project_id;
4366   x_cle_rec.task_id			:= l_out_cle.task_id;
4367   x_cle_rec.billing_method_code		:= l_out_cle.billing_method_code;
4368   x_cle_rec.inventory_item_id		:= l_out_cle.inventory_item_id;
4369   x_cle_rec.delivery_order_flag		:= l_out_cle.delivery_order_flag;
4370   x_cle_rec.splited_flag		:= l_out_cle.splited_flag;
4371   x_cle_rec.priority_code		:= l_out_cle.priority_code;
4372   x_cle_rec.customer_item_id		:= l_out_cle.customer_item_id;
4373   x_cle_rec.customer_item_number	:= l_out_cle.customer_item_number;
4374   x_cle_rec.line_quantity		:= l_out_cle.line_quantity;
4375   x_cle_rec.delivery_date		:= l_out_cle.delivery_date;
4376   x_cle_rec.unit_price			:= l_out_cle.unit_price;
4377   x_cle_rec.uom_code			:= l_out_cle.uom_code;
4378   x_cle_rec.billable_flag		:= l_out_cle.billable_flag;
4379   x_cle_rec.shippable_flag		:= l_out_cle.shippable_flag;
4380   x_cle_rec.subcontracted_flag    	:= l_out_cle.subcontracted_flag;
4381   x_cle_rec.completed_flag		:= l_out_cle.completed_flag;
4382   x_cle_rec.nsp_flag			:= l_out_cle.nsp_flag;
4383   x_cle_rec.app_code			:= l_out_cle.app_code;
4384   x_cle_rec.as_of_date			:= l_out_cle.as_of_date;
4385   x_cle_rec.authority			:= l_out_cle.authority;
4386   x_cle_rec.country_of_origin_code 	:= l_out_cle.country_of_origin_code;
4387   x_cle_rec.drop_shipped_flag		:= l_out_cle.drop_shipped_flag;
4388   x_cle_rec.customer_approval_req_flag  := l_out_cle.customer_approval_req_flag;
4389   x_cle_rec.date_material_req		:= l_out_cle.date_material_req;
4390   x_cle_rec.inspection_req_flag		:= l_out_cle.inspection_req_flag;
4391   x_cle_rec.interim_rpt_req_flag	:= l_out_cle.interim_rpt_req_flag;
4392   x_cle_rec.subj_a133_flag		:= l_out_cle.subj_a133_flag;
4393   x_cle_rec.export_flag			:= l_out_cle.export_flag;
4394   x_cle_rec.cfe_req_flag		:= l_out_cle.cfe_req_flag;
4395   x_cle_rec.cop_required_flag		:= l_out_cle.cop_required_flag;
4396   x_cle_rec.export_license_num		:= l_out_cle.export_license_num;
4397   x_cle_rec.export_license_res    	:= l_out_cle.export_license_res;
4398   x_cle_rec.copies_required		:= l_out_cle.copies_required;
4399   x_cle_rec.cdrl_category		:= l_out_cle.cdrl_category;
4400   x_cle_rec.data_item_name		:= l_out_cle.data_item_name;
4401   x_cle_rec.data_item_subtitle		:= l_out_cle.data_item_subtitle;
4402   x_cle_rec.date_of_first_submission	:= l_out_cle.date_of_first_submission;
4403   x_cle_rec.frequency			:= l_out_cle.frequency;
4404   x_cle_rec.requiring_office		:= l_out_cle.requiring_office;
4405   x_cle_rec.dcaa_audit_req_flag		:= l_out_cle.dcaa_audit_req_flag;
4406   x_cle_rec.definitized_flag		:= l_out_cle.definitized_flag;
4407   x_cle_rec.cost_of_money		:= l_out_cle.cost_of_money;
4408   x_cle_rec.bill_undefinitized_flag 	:= l_out_cle.bill_undefinitized_flag;
4409   x_cle_rec.nsn_number			:= l_out_cle.nsn_number;
4410   x_cle_rec.nte_warning_flag		:= l_out_cle.nte_warning_flag;
4411   x_cle_rec.discount_for_payment	:= l_out_cle.discount_for_payment;
4412   x_cle_rec.financial_ctrl_flag		:= l_out_cle.financial_ctrl_flag;
4413   x_cle_rec.c_scs_flag			:= l_out_cle.c_scs_flag;
4414   x_cle_rec.c_ssr_flag			:= l_out_cle.c_ssr_flag;
4415   x_cle_rec.prepayment_amount		:= l_out_cle.prepayment_amount;
4416   x_cle_rec.prepayment_percentage  	:= l_out_cle.prepayment_percentage;
4417   x_cle_rec.progress_payment_flag 	:= l_out_cle.progress_payment_flag;
4418   x_cle_rec.progress_payment_liq_rate 	:= l_out_cle.progress_payment_liq_rate;
4419   x_cle_rec.progress_payment_rate 	:= l_out_cle.progress_payment_rate;
4420   x_cle_rec.award_fee			:= l_out_cle.award_fee;
4421   x_cle_rec.award_fee_pool_amount 	:= l_out_cle.award_fee_pool_amount;
4422   x_cle_rec.base_fee			:= l_out_cle.base_fee;
4423   x_cle_rec.ceiling_cost		:= l_out_cle.ceiling_cost;
4424   x_cle_rec.ceiling_price		:= l_out_cle.ceiling_price;
4425   x_cle_rec.labor_cost_index		:= l_out_cle.labor_cost_index;
4426   x_cle_rec.material_cost_index		:= l_out_cle.material_cost_index;
4427   x_cle_rec.customers_percent_in_order 	:= l_out_cle.customers_percent_in_order;
4428   x_cle_rec.cost_overrun_share_ratio	:= l_out_cle.cost_overrun_share_ratio;
4429   x_cle_rec.cost_underrun_share_ratio	:= l_out_cle.cost_underrun_share_ratio;
4430   x_cle_rec.date_of_price_redetermin 	:= l_out_cle.date_of_price_redetermin;
4431   x_cle_rec.estimated_total_quantity 	:= l_out_cle.estimated_total_quantity;
4432   x_cle_rec.fee_ajt_formula		:= l_out_cle.fee_ajt_formula;
4433   x_cle_rec.final_fee			:= l_out_cle.final_fee;
4434   x_cle_rec.final_pft_ajt_formula 	:= l_out_cle.final_pft_ajt_formula;
4435   x_cle_rec.fixed_fee			:= l_out_cle.fixed_fee;
4436   x_cle_rec.fixed_quantity		:= l_out_cle.fixed_quantity;
4437   x_cle_rec.initial_fee			:= l_out_cle.initial_fee;
4438   x_cle_rec.initial_price		:= l_out_cle.initial_price;
4439   x_cle_rec.level_of_effort_hours 	:= l_out_cle.level_of_effort_hours;
4440   x_cle_rec.line_liquidation_rate 	:= l_out_cle.line_liquidation_rate;
4441   x_cle_rec.maximum_fee			:= l_out_cle.maximum_fee;
4442   x_cle_rec.maximum_quantity		:= l_out_cle.maximum_quantity;
4443   x_cle_rec.minimum_fee			:= l_out_cle.minimum_fee;
4444   x_cle_rec.minimum_quantity		:= l_out_cle.minimum_quantity;
4445   x_cle_rec.number_of_options		:= l_out_cle.number_of_options;
4446   x_cle_rec.revised_price		:= l_out_cle.revised_price;
4447   x_cle_rec.target_cost			:= l_out_cle.target_cost;
4448   x_cle_rec.target_date_definitize 	:= l_out_cle.target_date_definitize;
4449   x_cle_rec.target_fee	        	:= l_out_cle.target_fee;
4450   x_cle_rec.target_price		:= l_out_cle.target_price;
4451   x_cle_rec.total_estimated_cost  	:= l_out_cle.total_estimated_cost;
4452   x_cle_rec.proposal_due_date		:= l_out_cle.proposal_due_date;
4453   x_cle_rec.cost_of_sale_rate		:= l_out_cle.cost_of_sale_rate;
4454   x_cle_rec.created_by	     	   	:= l_out_cle.created_by;
4455   x_cle_rec.creation_date		:= l_out_cle.creation_date;
4456   x_cle_rec.last_updated_by		:= l_out_cle.last_updated_by;
4457   x_cle_rec.last_update_login		:= l_out_cle.last_update_login;
4458   x_cle_rec.last_update_date      	:= l_out_cle.last_update_date;
4459   x_cle_rec.line_value		      	:= l_out_cle.line_value;
4460   x_cle_rec.line_value_total      	:= l_out_cle.line_value_total;
4461   x_cle_rec.end_date                    := l_out_cle.end_date;
4462 
4463   x_cle_rec.undef_line_value		      	:= l_out_cle.undef_line_value;
4464   x_cle_rec.undef_line_value_total      	:= l_out_cle.undef_line_value_total;
4465   x_cle_rec.undef_unit_price                    := l_out_cle.undef_unit_price;
4466 
4467 
4468     x_cle_rec.k_line_id                     	:= l_out_clev.id;
4469     x_cle_rec.object_version_number    		:= l_out_clev.object_version_number;
4470     x_cle_rec.sfwt_flag                		:= l_out_clev.sfwt_flag;
4471     x_cle_rec.chr_id                    	:= l_out_clev.chr_id;
4472     x_cle_rec.cle_id                    	:= l_out_clev.cle_id;
4473 
4474     x_cle_rec.lse_id                     	:= l_out_clev.lse_id;
4475     x_cle_rec.line_number               	:= l_out_clev.line_number;
4476     x_cle_rec.sts_code                  	:= l_out_clev.sts_code;
4477     x_cle_rec.display_sequence           	:= l_out_clev.display_sequence;
4478     x_cle_rec.trn_code                   	:= l_out_clev.trn_code  ;
4479     x_cle_rec.dnz_chr_id                 	:= l_out_clev.dnz_chr_id  ;
4480     x_cle_rec.comments                   	:= l_out_clev.comments    ;
4481     x_cle_rec.item_description           	:= l_out_clev.item_description   ;
4482     x_cle_rec.oke_boe_description        	:= l_out_clev.oke_boe_description;
4483     x_cle_rec.hidden_ind                 	:= l_out_clev.hidden_ind   ;
4484     x_cle_rec.price_unit			:= l_out_clev.price_unit;
4485     x_cle_rec.price_unit_percent		:= l_out_clev.price_unit_percent;
4486     x_cle_rec.price_negotiated           	:= l_out_clev.price_negotiated;
4487     x_cle_rec.price_negotiated_renewed     	:= l_out_clev.price_negotiated_renewed;
4488     x_cle_rec.price_level_ind    		:= l_out_clev.price_level_ind;
4489     x_cle_rec.invoice_line_level_ind       	:= l_out_clev.invoice_line_level_ind;
4490     x_cle_rec.dpas_rating                  	:= l_out_clev.dpas_rating;
4491     x_cle_rec.block23text                  	:= l_out_clev.block23text;
4492     x_cle_rec.exception_yn                	:= l_out_clev.exception_yn;
4493     x_cle_rec.template_used                	:= l_out_clev.template_used;
4494     x_cle_rec.date_terminated              	:= l_out_clev.date_terminated;
4495     x_cle_rec.name                         	:= l_out_clev.name;
4496     x_cle_rec.start_date                   	:= l_out_clev.start_date;
4497 
4498     x_cle_rec.upg_orig_system_ref          	:= l_out_clev.upg_orig_system_ref;
4499     x_cle_rec.upg_orig_system_ref_id       	:= l_out_clev.upg_orig_system_ref_id;
4500     x_cle_rec.attribute_category           	:= l_out_clev.attribute_category;
4501     x_cle_rec.attribute1                   	:= l_out_clev.attribute1;
4502     x_cle_rec.attribute2                   	:= l_out_clev.attribute2;
4503     x_cle_rec.attribute3                   	:= l_out_clev.attribute3;
4504     x_cle_rec.attribute4                   	:= l_out_clev.attribute4;
4505     x_cle_rec.attribute5                   	:= l_out_clev.attribute5;
4506     x_cle_rec.attribute6                   	:= l_out_clev.attribute6;
4507     x_cle_rec.attribute7                   	:= l_out_clev.attribute7;
4508     x_cle_rec.attribute8                   	:= l_out_clev.attribute8;
4509     x_cle_rec.attribute9                  	:= l_out_clev.attribute9;
4510     x_cle_rec.attribute10                  	:= l_out_clev.attribute10;
4511     x_cle_rec.attribute11                  	:= l_out_clev.attribute11;
4512     x_cle_rec.attribute12                  	:= l_out_clev.attribute12;
4513     x_cle_rec.attribute13                  	:= l_out_clev.attribute13;
4514     x_cle_rec.attribute14                  	:= l_out_clev.attribute14;
4515     x_cle_rec.attribute15                  	:= l_out_clev.attribute15;
4516     x_cle_rec.created_by                   	:= l_out_clev.created_by;
4517     x_cle_rec.creation_date                	:= l_out_clev.creation_date;
4518     x_cle_rec.last_updated_by              	:= l_out_clev.last_updated_by;
4519     x_cle_rec.last_update_date             	:= l_out_clev.last_update_date;
4520     x_cle_rec.price_type                   	:= l_out_clev.price_type;
4521     x_cle_rec.currency_code                	:= l_out_clev.currency_code;
4522     x_cle_rec.currency_code_renewed		      := l_out_clev.currency_code_renewed;
4523     x_cle_rec.last_update_login            	:= l_out_clev.last_update_login;
4524 
4525 
4526 -- IF successful: create line item if necessary
4527     IF x_return_status = OKE_API.G_RET_STS_SUCCESS
4528     	AND x_cle_rec.inventory_item_id IS NOT NULL
4529       AND l_item_exists = 'N' THEN
4530 
4531 	    OPEN get_inventory_org (x_cle_rec.DNZ_CHR_ID);
4532 	    FETCH get_inventory_org INTO l_inv_org;
4533 	    CLOSE get_inventory_org;
4534 
4535 	    l_cimv_rec.DNZ_CHR_ID := x_cle_rec.DNZ_CHR_ID;
4536 	    l_cimv_rec.CLE_ID := x_cle_rec.K_LINE_ID;
4537 	    l_cimv_rec.EXCEPTION_YN := 'N';
4538 	    l_cimv_rec.PRICED_ITEM_YN := 'N';
4539 	    l_cimv_rec.OBJECT1_ID1 := x_cle_rec.inventory_item_id;
4540 	    l_cimv_rec.OBJECT1_ID2 := l_inv_org;
4541 	    l_cimv_rec.JTOT_OBJECT1_CODE := 'OKE_ITEMS';
4542 	    l_cimv_rec.UOM_CODE := x_cle_rec.UOM_CODE;
4543 	    l_cimv_rec.NUMBER_OF_ITEMS := x_cle_rec.LINE_QUANTITY;
4544 	    l_cimv_rec.CREATED_BY := x_cle_rec.CREATED_BY;
4545 	    l_cimv_rec.CREATION_DATE := x_cle_rec.CREATION_DATE;
4546 	    l_cimv_rec.LAST_UPDATED_BY := x_cle_rec.LAST_UPDATED_BY;
4547 	    l_cimv_rec.LAST_UPDATE_DATE := x_cle_rec.LAST_UPDATE_DATE;
4548 	    l_cimv_rec.LAST_UPDATE_LOGIN := x_cle_rec.LAST_UPDATE_LOGIN;
4549 
4550     	Create_Line_Item (
4551 		    	p_api_version		=>	p_api_version,
4552     			p_init_msg_list		=>	p_init_msg_list,
4553     			x_return_status		=>	x_return_status,
4554     			x_msg_count		=>	x_msg_count,
4555    			  x_msg_data		=>	x_msg_data,
4556 			    p_cimv_rec		=>	l_cimv_rec,
4557 			    x_cimv_rec		=>	l_cimv_out,
4558                            p_skip_minor_vers    =>       p_skip_minor_vers
4559      	);
4560 
4561     	  If (x_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
4562        	  	raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
4563     	  Elsif (x_return_status = OKE_API.G_RET_STS_ERROR) then
4564        	  raise OKE_API.G_EXCEPTION_ERROR;
4565     	  End If;
4566 
4567     END IF;
4568 
4569     IF l_item_exists = 'Y'
4570      AND  x_cle_rec.inventory_item_id IS  NULL
4571      AND x_return_status = OKE_API.G_RET_STS_SUCCESS
4572     THEN
4573         -- Delete the line item
4574         l_cimv_tbl_in(1).id := l_k_item_id;
4575         l_cimv_tbl_in(1).object_version_number := l_ovn;
4576 
4577 /*skuchima bugs 14524245 */
4578     IF (FND_API.G_TRUE = p_skip_minor_vers ) THEN
4579        okc_cvm_pvt.defer_minor_version_update('T');
4580     end if;
4581 
4582         okc_contract_item_pub.delete_contract_item
4583         ( p_api_version      => 1.0
4584         , p_init_msg_list    => p_init_msg_list
4585         , x_return_status    => x_msg_count
4586         , x_msg_count        => x_msg_count
4587         , x_msg_data         => x_msg_data
4588         , p_cimv_tbl         => l_cimv_tbl_in
4589         );
4590 
4591  okc_cvm_pvt.defer_minor_version_update('F');
4592 
4593     	  If (x_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
4594        		raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
4595     	  Elsif (x_return_status = OKE_API.G_RET_STS_ERROR) then
4596        		raise OKE_API.G_EXCEPTION_ERROR;
4597     	  End If;
4598     END IF;
4599 
4600     OKE_API.END_ACTIVITY(       x_msg_count     => x_msg_count,
4601                                 x_msg_data      => x_msg_data);
4602   EXCEPTION
4603     when OKE_API.G_EXCEPTION_ERROR then
4604       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
4605 			p_api_name  => l_api_name,
4606 			p_pkg_name  => g_pkg_name,
4607 			p_exc_name  => 'OKE_API.G_RET_STS_ERROR',
4608 			x_msg_count => x_msg_count,
4609 			x_msg_data  => x_msg_data,
4610 			p_api_type  => g_api_type);
4611 
4612     when OKE_API.G_EXCEPTION_UNEXPECTED_ERROR then
4613       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
4614 			p_api_name  => l_api_name,
4615 			p_pkg_name  => g_pkg_name,
4616 			p_exc_name  => 'OKE_API.G_RET_STS_UNEXP_ERROR',
4617 			x_msg_count => x_msg_count,
4618 			x_msg_data  => x_msg_data,
4619 			p_api_type  => g_api_type);
4620 
4621     when OTHERS then
4622       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
4623 			p_api_name  => l_api_name,
4624 			p_pkg_name  => g_pkg_name,
4625 			p_exc_name  => 'OTHERS',
4626 			x_msg_count => x_msg_count,
4627 			x_msg_data  => x_msg_data,
4628 			p_api_type  => g_api_type);
4629 
4630 END update_contract_line;
4631 
4632 
4633   PROCEDURE update_line_item(
4634     p_api_version                  IN NUMBER,
4635     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
4636     x_return_status                OUT NOCOPY VARCHAR2,
4637     x_msg_count                    OUT NOCOPY NUMBER,
4638     x_msg_data                     OUT NOCOPY VARCHAR2,
4639 
4640     p_cimv_rec			   IN  cimv_rec_type,
4641     x_cimv_rec			   OUT NOCOPY  cimv_rec_type,
4642 p_skip_minor_vers              IN VARCHAR2 DEFAULT OKE_API.G_FALSE
4643 )
4644 IS
4645 l_api_name          CONSTANT VARCHAR2(30) := 'UPDATE_LINE_ITEM';
4646 l_api_version       CONSTANT NUMBER   := 1.0;
4647 
4648 l_msg_count                NUMBER;
4649 l_msg_data                 VARCHAR2(2000);
4650 
4651   l_return_status     VARCHAR2(1)               := OKE_API.G_RET_STS_SUCCESS;
4652   l_cimv_tbl_in     okc_contract_item_pub.cimv_tbl_type;
4653   l_cimv_tbl_out    okc_contract_item_pub.cimv_tbl_type;
4654 
4655 BEGIN
4656 
4657   -- call START_ACTIVITY to create savepoint, check compatibility
4658     -- and initialize message list
4659     l_return_status := OKE_API.START_ACTIVITY(
4660                         p_api_name      => l_api_name,
4661                         p_pkg_name      => g_pkg_name,
4662                         p_init_msg_list => p_init_msg_list,
4663                         l_api_version   => l_api_version,
4664                         p_api_version   => p_api_version,
4665                         p_api_type      => g_api_type,
4666                         x_return_status => x_return_status);
4667 
4668     -- check if activity started successfully
4669     If (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
4670        raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
4671     Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
4672        raise OKE_API.G_EXCEPTION_ERROR;
4673     End If;
4674 
4675     l_cimv_tbl_in(1).ID := p_cimv_rec.ID;
4676     l_cimv_tbl_in(1).OBJECT_VERSION_NUMBER := p_cimv_rec.OBJECT_VERSION_NUMBER;
4677     l_cimv_tbl_in(1).CHR_ID := p_cimv_rec.CHR_ID;
4678     l_cimv_tbl_in(1).CLE_ID := p_cimv_rec.CLE_ID;
4679     l_cimv_tbl_in(1).CLE_ID_FOR := p_cimv_rec.CLE_ID_FOR;
4680     l_cimv_tbl_in(1).DNZ_CHR_ID := p_cimv_rec.DNZ_CHR_ID;
4681     l_cimv_tbl_in(1).EXCEPTION_YN := p_cimv_rec.EXCEPTION_YN;
4682     l_cimv_tbl_in(1).PRICED_ITEM_YN := p_cimv_rec.PRICED_ITEM_YN;
4683     l_cimv_tbl_in(1).OBJECT1_ID1 := p_cimv_rec.OBJECT1_ID1;
4684     l_cimv_tbl_in(1).OBJECT1_ID2 := p_cimv_rec.OBJECT1_ID2;
4685     l_cimv_tbl_in(1).JTOT_OBJECT1_CODE := p_cimv_rec.JTOT_OBJECT1_CODE;
4686     l_cimv_tbl_in(1).UOM_CODE := p_cimv_rec.UOM_CODE;
4687     l_cimv_tbl_in(1).NUMBER_OF_ITEMS := p_cimv_rec.NUMBER_OF_ITEMS;
4688     l_cimv_tbl_in(1).CREATED_BY := p_cimv_rec.CREATED_BY;
4689     l_cimv_tbl_in(1).CREATION_DATE := p_cimv_rec.CREATION_DATE;
4690     l_cimv_tbl_in(1).LAST_UPDATED_BY := p_cimv_rec.LAST_UPDATED_BY;
4691     l_cimv_tbl_in(1).LAST_UPDATE_DATE := p_cimv_rec.LAST_UPDATE_DATE;
4692     l_cimv_tbl_in(1).LAST_UPDATE_LOGIN := p_cimv_rec.LAST_UPDATE_LOGIN;
4693     l_cimv_tbl_in(1).UPG_ORIG_SYSTEM_REF := p_cimv_rec.UPG_ORIG_SYSTEM_REF;
4694     l_cimv_tbl_in(1).UPG_ORIG_SYSTEM_REF_ID := p_cimv_rec.UPG_ORIG_SYSTEM_REF_ID;
4695 
4696  /*skuchima bugs 14380256 */
4697     IF (FND_API.G_TRUE = p_skip_minor_vers ) THEN
4698        okc_cvm_pvt.defer_minor_version_update('T');
4699     end if;
4700 
4701     okc_contract_item_pub.update_contract_item
4702     ( p_api_version      => l_api_version
4703     , p_init_msg_list    => p_init_msg_list
4704     , x_return_status    => l_return_status
4705     , x_msg_count        => x_msg_count
4706     , x_msg_data         => x_msg_data
4707     , p_cimv_tbl         => l_cimv_tbl_in
4708     , x_cimv_tbl         => l_cimv_tbl_out
4709     );
4710 
4711 okc_cvm_pvt.defer_minor_version_update('F');
4712 
4713     If (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
4714        raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
4715     Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
4716        raise OKE_API.G_EXCEPTION_ERROR;
4717     End If;
4718 
4719     x_cimv_rec.ID := l_cimv_tbl_out(1).ID;
4720     x_cimv_rec.OBJECT_VERSION_NUMBER := l_cimv_tbl_out(1).OBJECT_VERSION_NUMBER;
4721     x_cimv_rec.CHR_ID := l_cimv_tbl_out(1).CHR_ID;
4722     x_cimv_rec.CLE_ID := l_cimv_tbl_out(1).CLE_ID;
4723     x_cimv_rec.CLE_ID_FOR := l_cimv_tbl_out(1).CLE_ID_FOR;
4724     x_cimv_rec.DNZ_CHR_ID := l_cimv_tbl_out(1).DNZ_CHR_ID;
4725     x_cimv_rec.EXCEPTION_YN := l_cimv_tbl_out(1).EXCEPTION_YN;
4726     x_cimv_rec.PRICED_ITEM_YN := l_cimv_tbl_out(1).PRICED_ITEM_YN;
4727     x_cimv_rec.OBJECT1_ID1 := l_cimv_tbl_out(1).OBJECT1_ID1;
4728     x_cimv_rec.OBJECT1_ID2 := l_cimv_tbl_out(1).OBJECT1_ID2;
4729     x_cimv_rec.JTOT_OBJECT1_CODE := l_cimv_tbl_out(1).JTOT_OBJECT1_CODE;
4730     x_cimv_rec.UOM_CODE := l_cimv_tbl_out(1).UOM_CODE;
4731     x_cimv_rec.NUMBER_OF_ITEMS := l_cimv_tbl_out(1).NUMBER_OF_ITEMS;
4732     x_cimv_rec.CREATED_BY := l_cimv_tbl_out(1).CREATED_BY;
4733     x_cimv_rec.CREATION_DATE := l_cimv_tbl_out(1).CREATION_DATE;
4734     x_cimv_rec.LAST_UPDATED_BY := l_cimv_tbl_out(1).LAST_UPDATED_BY;
4735     x_cimv_rec.LAST_UPDATE_DATE := l_cimv_tbl_out(1).LAST_UPDATE_DATE;
4736     x_cimv_rec.LAST_UPDATE_LOGIN := l_cimv_tbl_out(1).LAST_UPDATE_LOGIN;
4737     x_cimv_rec.UPG_ORIG_SYSTEM_REF := l_cimv_tbl_out(1).UPG_ORIG_SYSTEM_REF;
4738     x_cimv_rec.UPG_ORIG_SYSTEM_REF_ID := l_cimv_tbl_out(1).UPG_ORIG_SYSTEM_REF_ID;
4739 
4740     OKE_API.END_ACTIVITY(       x_msg_count     => x_msg_count,
4741                                 x_msg_data      => x_msg_data);
4742 
4743 EXCEPTION
4744   when OKE_API.G_EXCEPTION_ERROR then
4745       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
4746 			p_api_name  => l_api_name,
4747 			p_pkg_name  => g_pkg_name,
4748 			p_exc_name  => 'OKE_API.G_RET_STS_ERROR',
4749 			x_msg_count => x_msg_count,
4750 			x_msg_data  => x_msg_data,
4751 			p_api_type  => g_api_type);
4752 
4753     when OKE_API.G_EXCEPTION_UNEXPECTED_ERROR then
4754       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
4755 			p_api_name  => l_api_name,
4756 			p_pkg_name  => g_pkg_name,
4757 			p_exc_name  => 'OKE_API.G_RET_STS_UNEXP_ERROR',
4758 			x_msg_count => x_msg_count,
4759 			x_msg_data  => x_msg_data,
4760 			p_api_type  => g_api_type);
4761 
4762     when OTHERS then
4763       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
4764 			p_api_name  => l_api_name,
4765 			p_pkg_name  => g_pkg_name,
4766 			p_exc_name  => 'OTHERS',
4767 			x_msg_count => x_msg_count,
4768 			x_msg_data  => x_msg_data,
4769 			p_api_type  => g_api_type);
4770 
4771 
4772 END update_line_item;
4773 
4774 PROCEDURE update_deliverable(
4775 
4776     p_api_version                  IN NUMBER,
4777     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
4778     x_return_status                OUT NOCOPY VARCHAR2,
4779     x_msg_count                    OUT NOCOPY NUMBER,
4780     x_msg_data                     OUT NOCOPY VARCHAR2,
4781     p_del_rec	           IN  del_rec_type,
4782     x_del_rec	           OUT NOCOPY  del_rec_type) IS
4783 
4784     l_api_name          CONSTANT VARCHAR2(30) := 'UPDATE_DELIVERABLE';
4785     l_api_version       CONSTANT NUMBER   := 1.0;
4786     l_return_status     VARCHAR2(1)               := OKE_API.G_RET_STS_SUCCESS;
4787 
4788     l_del_rec		OKE_CONTRACT_PUB.del_rec_type;
4789 
4790     CURSOR get_inv_org IS
4791     SELECT INV_ORGANIZATION_ID
4792     FROM OKC_K_HEADERS_B
4793     WHERE ID = p_del_rec.k_header_id;
4794 
4795     CURSOR get_intent IS
4796     SELECT BUY_OR_SELL
4797     FROM OKC_K_HEADERS_B
4798     WHERE ID = p_del_rec.k_header_id;
4799 
4800     l_intent VARCHAR2(10);
4801 
4802       FUNCTION get_rec (
4803     p_del_rec                      IN del_rec_type,
4804     x_no_data_found                OUT NOCOPY BOOLEAN
4805   ) RETURN del_rec_type IS
4806 
4807     CURSOR del_pk_csr (p_id                 IN NUMBER) IS
4808       select b.deliverable_id,
4809 	b.deliverable_num,
4810 	b.project_id,
4811 	b.task_id,
4812 	b.item_id,
4813 	b.k_header_id,
4814 	b.k_line_id,
4815 	b.delivery_date,
4816 	b.status_code,
4817 	b.parent_deliverable_id,
4818 	b.ship_to_org_id,
4819 	b.ship_to_location_id,
4820         b.ship_from_org_id,
4821         b.ship_from_location_id,
4822 	b.inventory_org_id,
4823 	b.direction,
4824 	b.defaulted_flag,
4825 	b.in_process_flag,
4826 	b.wf_item_key,
4827 	b.sub_ref_id,
4828 	b.start_date,
4829 	b.end_date,
4830 	b.priority_code,
4831 	b.currency_code,
4832 	b.unit_price,
4833 	b.uom_code,
4834 	b.quantity,
4835 	b.country_of_origin_code,
4836 	b.subcontracted_flag,
4837 	b.dependency_flag,
4838 	b.billable_flag,
4839 	b.billing_event_id,
4840 	b.drop_shipped_flag,
4841 	b.completed_flag,
4842 	b.available_for_ship_flag,
4843 	b.create_demand,
4844 	b.ready_to_bill,
4845 	b.need_by_date,
4846 	b.ready_to_procure,
4847 	b.mps_transaction_id,
4848 	b.po_ref_1,
4849 	b.po_ref_2,
4850 	b.po_ref_3,
4851 	b.shipping_request_id,
4852 	b.unit_number,
4853 	b.ndb_schedule_designator,
4854 	b.shippable_flag,
4855 	b.cfe_req_flag,
4856 	b.inspection_req_flag,
4857 	b.interim_rpt_req_flag,
4858         b.lot_applies_flag,
4859 	b.customer_approval_req_flag,
4860 	b.expected_shipment_date,
4861 	b.initiate_shipment_date,
4862         b.promised_shipment_date,
4863     	b.as_of_date,
4864  	b.date_of_first_submission,
4865 	b.frequency,
4866 	b.acq_doc_number,
4867 	b.submission_flag,
4868 	b.data_item_subtitle,
4869 	b.total_num_of_copies,
4870 	b.cdrl_category,
4871 	b.data_item_name,
4872 	b.export_flag,
4873 	b.export_license_num,
4874         b.export_license_res,
4875         b.created_by,
4876 	b.creation_date,
4877 	b.last_updated_by,
4878  	b.last_update_login,
4879 	b.last_update_date,
4880 	b.attribute_category,
4881 	b.attribute1,
4882 	b.attribute2,
4883 	b.attribute3,
4884 	b.attribute4,
4885 	b.attribute5,
4886 	b.attribute6,
4887 	b.attribute7,
4888 	b.attribute8,
4889 	b.attribute9,
4890 	b.attribute10,
4891 	b.attribute11,
4892 	b.attribute12,
4893 	b.attribute13,
4894 	b.attribute14,
4895 	b.attribute15,
4896 	t.description,
4897 	t.comments,
4898 	t.sfwt_flag,
4899         b.weight,
4900         b.weight_uom_code,
4901 	b.volume,
4902 	b.volume_uom_code,
4903 	b.expenditure_organization_id,
4904  	b.expenditure_type,
4905 	b.expenditure_item_date,
4906 	b.destination_type_code,
4907 	b.rate_type,
4908 	b.rate_date,
4909 	b.exchange_rate,
4910 	b.requisition_line_type_id,
4911 	b.po_category_id
4912 from oke_k_deliverables_b b, oke_k_deliverables_tl t
4913 where b.deliverable_id = p_id
4914 and t.deliverable_id = p_id
4915 and t.language = userenv('LANG');
4916 
4917     l_del_pk	del_pk_csr%ROWTYPE;
4918     l_del_rec   del_rec_type;
4919 
4920   BEGIN
4921     x_no_data_found := TRUE;
4922 
4923     -- get current database value
4924 
4925     OPEN del_pk_csr(p_del_rec.deliverable_id);
4926     FETCH del_pk_csr INTO  l_del_rec.deliverable_id,
4927 	l_del_rec.deliverable_num,
4928 	l_del_rec.project_id,
4929 	l_del_rec.task_id,
4930 	l_del_rec.item_id,
4931 	l_del_rec.k_header_id,
4932 	l_del_rec.k_line_id,
4933 	l_del_rec.delivery_date,
4934 	l_del_rec.status_code,
4935 	l_del_rec.parent_deliverable_id,
4936 	l_del_rec.ship_to_org_id,
4937 	l_del_rec.ship_to_location_id,
4938         l_del_rec.ship_from_org_id,
4939 	l_del_rec.ship_from_location_id,
4940 	l_del_rec.inventory_org_id,
4941 	l_del_rec.direction,
4942 	l_del_rec.defaulted_flag,
4943 	l_del_rec.in_process_flag,
4944 	l_del_rec.wf_item_key,
4945 	l_del_rec.sub_ref_id,
4946 	l_del_rec.start_date,
4947 	l_del_rec.end_date,
4948 	l_del_rec.priority_code,
4949 	l_del_rec.currency_code,
4950 	l_del_rec.unit_price,
4951 	l_del_rec.uom_code,
4952 	l_del_rec.quantity,
4953 	l_del_rec.country_of_origin_code,
4954 	l_del_rec.subcontracted_flag,
4955 	l_del_rec.dependency_flag,
4956 	l_del_rec.billable_flag,
4957 	l_del_rec.billing_event_id,
4958 	l_del_rec.drop_shipped_flag,
4959 	l_del_rec.completed_flag,
4960 	l_del_rec.available_for_ship_flag,
4961 	l_del_rec.create_demand,
4962 	l_del_rec.ready_to_bill,
4963 	l_del_rec.need_by_date,
4964 	l_del_rec.ready_to_procure,
4965 	l_del_rec.mps_transaction_id,
4966 	l_del_rec.po_ref_1,
4967 	l_del_rec.po_ref_2,
4968 	l_del_rec.po_ref_3,
4969 	l_del_rec.shipping_request_id,
4970 	l_del_rec.unit_number,
4971 	l_del_rec.ndb_schedule_designator,
4972 	l_del_rec.shippable_flag,
4973 	l_del_rec.cfe_req_flag,
4974 	l_del_rec.inspection_req_flag,
4975 	l_del_rec.interim_rpt_req_flag,
4976         l_del_rec.lot_applies_flag,
4977 	l_del_rec.customer_approval_req_flag,
4978 	l_del_rec.expected_shipment_date,
4979 	l_del_rec.initiate_shipment_date,
4980         l_del_rec.promised_shipment_date,
4981     	l_del_rec.as_of_date,
4982  	l_del_rec.date_of_first_submission,
4983 	l_del_rec.frequency,
4984 	l_del_rec.acq_doc_number,
4985 	l_del_rec.submission_flag,
4986 	l_del_rec.data_item_subtitle,
4987 	l_del_rec.total_num_of_copies,
4988 	l_del_rec.cdrl_category,
4989 	l_del_rec.data_item_name,
4990 	l_del_rec.export_flag,
4991 	l_del_rec.export_license_num,
4992         l_del_rec.export_license_res,
4993         l_del_rec.created_by,
4994 	l_del_rec.creation_date,
4995 	l_del_rec.last_updated_by,
4996  	l_del_rec.last_update_login,
4997 	l_del_rec.last_update_date,
4998 	l_del_rec.attribute_category,
4999 	l_del_rec.attribute1,
5000 	l_del_rec.attribute2,
5001 	l_del_rec.attribute3,
5002 	l_del_rec.attribute4,
5003 	l_del_rec.attribute5,
5004 	l_del_rec.attribute6,
5005 	l_del_rec.attribute7,
5006 	l_del_rec.attribute8,
5007 	l_del_rec.attribute9,
5008 	l_del_rec.attribute10,
5009 	l_del_rec.attribute11,
5010 	l_del_rec.attribute12,
5011 	l_del_rec.attribute13,
5012 	l_del_rec.attribute14,
5013 	l_del_rec.attribute15,
5014 	l_del_rec.description,
5015 	l_del_rec.comments,
5016 	l_del_rec.sfwt_flag,
5017         l_del_rec.weight,
5018 	l_del_rec.weight_uom_code,
5019 	l_del_rec.volume,
5020 	l_del_rec.volume_uom_code,
5021 	l_del_rec.expenditure_organization_id,
5022 	l_del_rec.expenditure_type,
5023 	l_del_rec.expenditure_item_date,
5024 	l_del_rec.destination_type_code,
5025 	l_del_rec.rate_type,
5026 	l_del_rec.rate_date,
5027 	l_del_rec.exchange_rate,
5028 	l_del_rec.requisition_line_type_id,
5029 	l_del_rec.po_category_id;
5030 
5031     x_no_data_found := del_pk_csr%NOTFOUND;
5032 
5033     CLOSE del_pk_csr;
5034 
5035     RETURN(l_del_rec);
5036 
5037   END get_rec;
5038 
5039   FUNCTION get_rec (
5040     p_del_rec	IN del_rec_type)RETURN del_rec_type IS
5041     l_row_notfound		BOOLEAN := TRUE;
5042 
5043   BEGIN
5044     RETURN(get_rec(p_del_rec, l_row_notfound));
5045   END get_rec;
5046 
5047    -- FUNCTION populate_new_record --
5048     ----------------------------------
5049     FUNCTION populate_new_record (
5050       p_del_rec	IN del_rec_type,
5051       x_del_rec	OUT NOCOPY del_rec_type
5052     ) RETURN VARCHAR2 IS
5053 
5054       l_del_rec                     del_rec_type;
5055       l_row_notfound                 BOOLEAN := TRUE;
5056       l_return_status                VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
5057 
5058     BEGIN
5059 
5060 
5061       x_del_rec := p_del_rec;
5062 
5063 
5064       -- Get current database values
5065       l_del_rec := get_rec(p_del_rec, l_row_notfound);
5066 
5067       IF (l_row_notfound) THEN
5068         l_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
5069       END IF;
5070 
5071 
5072     IF  x_del_rec.DELIVERABLE_NUM = OKE_API.G_MISS_CHAR THEN
5073 	x_del_rec.DELIVERABLE_NUM := l_del_rec.DELIVERABLE_NUM;
5074     END IF;
5075 
5076     IF  x_del_rec.PROJECT_ID = OKE_API.G_MISS_NUM THEN
5077 	x_del_rec.PROJECT_ID := l_del_rec.PROJECT_ID;
5078     END IF;
5079 
5080     IF  x_del_rec.TASK_ID = OKE_API.G_MISS_NUM THEN
5081       	x_del_rec.TASK_ID := l_del_rec.TASK_ID;
5082     END IF;
5083 
5084     IF	x_del_rec.ITEM_ID = OKE_API.G_MISS_NUM THEN
5085         x_del_rec.ITEM_ID := l_del_rec.ITEM_ID;
5086     END IF;
5087 
5088     IF	x_del_rec.K_HEADER_ID = OKE_API.G_MISS_NUM THEN
5089         x_del_rec.K_HEADER_ID := l_del_rec.K_HEADER_ID;
5090     END IF;
5091 
5092     IF	x_del_rec.K_LINE_ID = OKE_API.G_MISS_NUM THEN
5093 	x_del_rec.K_LINE_ID := l_del_rec.K_LINE_ID;
5094     END IF;
5095 
5096     IF	x_del_rec.DELIVERY_DATE = OKE_API.G_MISS_DATE THEN
5097 	x_del_rec.DELIVERY_DATE := l_del_rec.DELIVERY_DATE;
5098     END IF;
5099 
5100     IF  x_del_rec.STATUS_CODE = OKE_API.G_MISS_CHAR THEN
5101 	x_del_rec.STATUS_CODE	:= l_del_rec.STATUS_CODE;
5102     END IF;
5103 
5104     IF	x_del_rec.PARENT_DELIVERABLE_ID = OKE_API.G_MISS_NUM THEN
5105 	x_del_rec.PARENT_DELIVERABLE_ID := l_del_rec.PARENT_DELIVERABLE_ID;
5106     END IF;
5107 
5108     IF	x_del_rec.SHIP_TO_ORG_ID = OKE_API.G_MISS_NUM THEN
5109 	x_del_rec.SHIP_TO_ORG_ID := l_del_rec.SHIP_TO_ORG_ID;
5110     END IF;
5111 
5112     IF	x_del_rec.SHIP_TO_LOCATION_ID = OKE_API.G_MISS_NUM THEN
5113 	x_del_rec.SHIP_TO_LOCATION_ID := l_del_rec.SHIP_TO_LOCATION_ID;
5114     END IF;
5115 
5116     IF	x_del_rec.SHIP_FROM_ORG_ID = OKE_API.G_MISS_NUM THEN
5117 	x_del_rec.SHIP_FROM_ORG_ID := l_del_rec.SHIP_FROM_ORG_ID;
5118     END IF;
5119 
5120     IF	x_del_rec.SHIP_FROM_LOCATION_ID = OKE_API.G_MISS_NUM THEN
5121 	x_del_rec.SHIP_FROM_LOCATION_ID := l_del_rec.SHIP_FROM_LOCATION_ID;
5122     END IF;
5123 
5124     IF	x_del_rec.INVENTORY_ORG_ID = OKE_API.G_MISS_NUM THEN
5125 	x_del_rec.INVENTORY_ORG_ID := l_del_rec.INVENTORY_ORG_ID;
5126     END IF;
5127 
5128     IF  x_del_rec.DIRECTION = OKE_API.G_MISS_CHAR THEN
5129 	x_del_rec.DIRECTION := l_del_rec.DIRECTION;
5130     END IF;
5131 
5132     IF	x_del_rec.DEFAULTED_FLAG = OKE_API.G_MISS_CHAR THEN
5133 	x_del_rec.DEFAULTED_FLAG := l_del_rec.DEFAULTED_FLAG;
5134     END IF;
5135 
5136     IF	x_del_rec.IN_PROCESS_FLAG = OKE_API.G_MISS_CHAR THEN
5137 	x_del_rec.IN_PROCESS_FLAG := l_del_rec.IN_PROCESS_FLAG;
5138     END IF;
5139 
5140     IF	x_del_rec.WF_ITEM_KEY = OKE_API.G_MISS_CHAR THEN
5141 	x_del_rec.WF_ITEM_KEY := l_del_rec.WF_ITEM_KEY;
5142     END IF;
5143 
5144     IF	x_del_rec.SUB_REF_ID = OKE_API.G_MISS_NUM THEN
5145         x_del_rec.SUB_REF_ID := l_del_rec.SUB_REF_ID;
5146     END IF;
5147 
5148     IF	x_del_rec.START_DATE	= OKE_API.G_MISS_DATE THEN
5149         x_del_rec.START_DATE	:= l_del_rec.START_DATE;
5150     END IF;
5151 
5152     IF	x_del_rec.END_DATE	= OKE_API.G_MISS_DATE THEN
5153         x_del_rec.END_DATE	:= l_del_rec.END_DATE;
5154     END IF;
5155 
5156     IF	x_del_rec.PRIORITY_CODE	= OKE_API.G_MISS_CHAR THEN
5157         x_del_rec.PRIORITY_CODE := l_del_rec.PRIORITY_CODE;
5158     END IF;
5159 
5160     IF	x_del_rec.CURRENCY_CODE	= OKE_API.G_MISS_CHAR THEN
5161         x_del_rec.CURRENCY_CODE	:= l_del_rec.CURRENCY_CODE;
5162     END IF;
5163 
5164     IF	x_del_rec.UNIT_PRICE = OKE_API.G_MISS_NUM THEN
5165 	x_del_rec.UNIT_PRICE := l_del_rec.UNIT_PRICE;
5166     END IF;
5167 
5168     IF	x_del_rec.UOM_CODE = OKE_API.G_MISS_CHAR THEN
5169 	x_del_rec.UOM_CODE := l_del_rec.UOM_CODE;
5170     END IF;
5171 
5172     IF	x_del_rec.QUANTITY = OKE_API.G_MISS_NUM THEN
5173 	x_del_rec.QUANTITY := l_del_rec.QUANTITY;
5174     END IF;
5175 
5176     IF  x_del_rec.COUNTRY_OF_ORIGIN_CODE = OKE_API.G_MISS_CHAR THEN
5177 	x_del_rec.COUNTRY_OF_ORIGIN_CODE := l_del_rec.COUNTRY_OF_ORIGIN_CODE;
5178     END IF;
5179 
5180     IF	x_del_rec.SUBCONTRACTED_FLAG = OKE_API.G_MISS_CHAR THEN
5181 	x_del_rec.SUBCONTRACTED_FLAG := l_del_rec.SUBCONTRACTED_FLAG;
5182     END IF;
5183 
5184     IF	x_del_rec.DEPENDENCY_FLAG = OKE_API.G_MISS_CHAR THEN
5185 	x_del_rec.DEPENDENCY_FLAG := l_del_rec.DEPENDENCY_FLAG;
5186     END IF;
5187 
5188 
5189 
5190     IF	x_del_rec.BILLABLE_FLAG	= OKE_API.G_MISS_CHAR THEN
5191 	x_del_rec.BILLABLE_FLAG	:= l_del_rec.BILLABLE_FLAG;
5192     END IF;
5193 
5194     IF	x_del_rec.BILLING_EVENT_ID = OKE_API.G_MISS_NUM THEN
5195 	x_del_rec.BILLING_EVENT_ID := l_del_rec.BILLING_EVENT_ID;
5196     END IF;
5197 
5198     IF	x_del_rec.DROP_SHIPPED_FLAG = OKE_API.G_MISS_CHAR THEN
5199         x_del_rec.DROP_SHIPPED_FLAG := l_del_rec.DROP_SHIPPED_FLAG;
5200     END IF;
5201 
5202     IF	x_del_rec.COMPLETED_FLAG = OKE_API.G_MISS_CHAR THEN
5203 	x_del_rec.COMPLETED_FLAG := l_del_rec.COMPLETED_FLAG;
5204     END IF;
5205 
5206     IF	x_del_rec.AVAILABLE_FOR_SHIP_FLAG = OKE_API.G_MISS_CHAR THEN
5207 	x_del_rec.AVAILABLE_FOR_SHIP_FLAG := l_del_rec.AVAILABLE_FOR_SHIP_FLAG;
5208     END IF;
5209 
5210     IF	x_del_rec.CREATE_DEMAND = OKE_API.G_MISS_CHAR THEN
5211 	x_del_rec.CREATE_DEMAND := l_del_rec.CREATE_DEMAND;
5212     END IF;
5213 
5214     IF	x_del_rec.READY_TO_BILL = OKE_API.G_MISS_CHAR THEN
5215 	x_del_rec.READY_TO_BILL := l_del_rec.READY_TO_BILL;
5216     END IF;
5217 
5218     IF	x_del_rec.NEED_BY_DATE = OKE_API.G_MISS_DATE THEN
5219 	x_del_rec.NEED_BY_DATE := l_del_rec.NEED_BY_DATE;
5220     END IF;
5221 
5222     IF	x_del_rec.READY_TO_PROCURE = OKE_API.G_MISS_CHAR THEN
5223 	x_del_rec.READY_TO_PROCURE := l_del_rec.READY_TO_PROCURE;
5224     END IF;
5225 
5226     IF	x_del_rec.MPS_TRANSACTION_ID = OKE_API.G_MISS_NUM THEN
5227 	x_del_rec.MPS_TRANSACTION_ID := l_del_rec.MPS_TRANSACTION_ID;
5228     END IF;
5229 
5230     IF	x_del_rec.PO_REF_1 = OKE_API.G_MISS_NUM THEN
5231 	x_del_rec.PO_REF_1 := l_del_rec.PO_REF_1;
5232     END IF;
5233 
5234     IF	x_del_rec.PO_REF_2 = OKE_API.G_MISS_NUM THEN
5235 	x_del_rec.PO_REF_2 := l_del_rec.PO_REF_2;
5236     END IF;
5237 
5238     IF	x_del_rec.PO_REF_3 = OKE_API.G_MISS_NUM THEN
5239 	x_del_rec.PO_REF_3 := l_del_rec.PO_REF_3;
5240     END IF;
5241 
5242     IF	x_del_rec.SHIPPING_REQUEST_ID = OKE_API.G_MISS_NUM THEN
5243 	x_del_rec.SHIPPING_REQUEST_ID := l_del_rec.SHIPPING_REQUEST_ID;
5244     END IF;
5245 
5246     IF	x_del_rec.UNIT_NUMBER = OKE_API.G_MISS_CHAR THEN
5247 	x_del_rec.UNIT_NUMBER := l_del_rec.UNIT_NUMBER;
5248     END IF;
5249 
5250     IF	x_del_rec.NDB_SCHEDULE_DESIGNATOR = OKE_API.G_MISS_CHAR THEN
5251 	x_del_rec.NDB_SCHEDULE_DESIGNATOR := l_del_rec.NDB_SCHEDULE_DESIGNATOR;
5252     END IF;
5253 
5254     IF	x_del_rec.SHIPPABLE_FLAG = OKE_API.G_MISS_CHAR THEN
5255 	x_del_rec.SHIPPABLE_FLAG := l_del_rec.SHIPPABLE_FLAG;
5256     END IF;
5257 
5258     IF	x_del_rec.CFE_REQ_FLAG = OKE_API.G_MISS_CHAR THEN
5259 	x_del_rec.CFE_REQ_FLAG := l_del_rec.CFE_REQ_FLAG;
5260     END IF;
5261 
5262     IF	x_del_rec.INSPECTION_REQ_FLAG = OKE_API.G_MISS_CHAR THEN
5263 	x_del_rec.INSPECTION_REQ_FLAG := l_del_rec.INSPECTION_REQ_FLAG;
5264     END IF;
5265 
5266     IF	x_del_rec.INTERIM_RPT_REQ_FLAG = OKE_API.G_MISS_CHAR THEN
5267 	x_del_rec.INTERIM_RPT_REQ_FLAG := l_del_rec.INTERIM_RPT_REQ_FLAG;
5268     END IF;
5269 
5270     IF	x_del_rec.LOT_APPLIES_FLAG = OKE_API.G_MISS_CHAR THEN
5271 	x_del_rec.LOT_APPLIES_FLAG := l_del_rec.LOT_APPLIES_FLAG;
5272     END IF;
5273 
5274     IF	x_del_rec.CUSTOMER_APPROVAL_REQ_FLAG = OKE_API.G_MISS_CHAR THEN
5275 	x_del_rec.CUSTOMER_APPROVAL_REQ_FLAG := l_del_rec.CUSTOMER_APPROVAL_REQ_FLAG;
5276     END IF;
5277 
5278     IF	x_del_rec.EXPECTED_SHIPMENT_DATE = OKE_API.G_MISS_DATE THEN
5279 	x_del_rec.EXPECTED_SHIPMENT_DATE := l_del_rec.EXPECTED_SHIPMENT_DATE;
5280     END IF;
5281 
5282     IF	x_del_rec.INITIATE_SHIPMENT_DATE = OKE_API.G_MISS_DATE THEN
5283 	x_del_rec.INITIATE_SHIPMENT_DATE := l_del_rec.INITIATE_SHIPMENT_DATE;
5284     END IF;
5285 
5286     IF	x_del_rec.PROMISED_SHIPMENT_DATE = OKE_API.G_MISS_DATE THEN
5287 	x_del_rec.PROMISED_SHIPMENT_DATE := l_del_rec.PROMISED_SHIPMENT_DATE;
5288     END IF;
5289 
5290     IF	x_del_rec.AS_OF_DATE = OKE_API.G_MISS_DATE THEN
5291 	x_del_rec.AS_OF_DATE := l_del_rec.AS_OF_DATE;
5292     END IF;
5293 
5294     IF	x_del_rec.DATE_OF_FIRST_SUBMISSION = OKE_API.G_MISS_DATE THEN
5295 	x_del_rec.DATE_OF_FIRST_SUBMISSION := l_del_rec.DATE_OF_FIRST_SUBMISSION;
5296     END IF;
5297 
5298     IF	x_del_rec.FREQUENCY = OKE_API.G_MISS_CHAR THEN
5299 	x_del_rec.FREQUENCY := l_del_rec.FREQUENCY;
5300     END IF;
5301 
5302     IF	x_del_rec.ACQ_DOC_NUMBER = OKE_API.G_MISS_CHAR THEN
5303 	x_del_rec.ACQ_DOC_NUMBER := l_del_rec.ACQ_DOC_NUMBER;
5304     END IF;
5305 
5306     IF	x_del_rec.SUBMISSION_FLAG = OKE_API.G_MISS_CHAR THEN
5307 	x_del_rec.SUBMISSION_FLAG := l_del_rec.SUBMISSION_FLAG;
5308     END IF;
5309 
5310     IF	x_del_rec.DATA_ITEM_NAME = OKE_API.G_MISS_CHAR THEN
5311 	x_del_rec.DATA_ITEM_NAME := l_del_rec.DATA_ITEM_NAME;
5312     END IF;
5313 
5314     IF	x_del_rec.DATA_ITEM_SUBTITLE = OKE_API.G_MISS_CHAR THEN
5315 	x_del_rec.DATA_ITEM_SUBTITLE := l_del_rec.DATA_ITEM_SUBTITLE;
5316     END IF;
5317 
5318     IF	x_del_rec.TOTAL_NUM_OF_COPIES = OKE_API.G_MISS_NUM THEN
5319 	x_del_rec.TOTAL_NUM_OF_COPIES := l_del_rec.TOTAL_NUM_OF_COPIES;
5320     END IF;
5321 
5322     IF	x_del_rec.CDRL_CATEGORY = OKE_API.G_MISS_CHAR THEN
5323 	x_del_rec.CDRL_CATEGORY := l_del_rec.CDRL_CATEGORY;
5324     END IF;
5325 
5326     IF	x_del_rec.EXPORT_LICENSE_NUM = OKE_API.G_MISS_CHAR THEN
5327    	x_del_rec.EXPORT_LICENSE_NUM := l_del_rec.EXPORT_LICENSE_NUM;
5328     END IF;
5329 
5330     IF	x_del_rec.EXPORT_LICENSE_RES = OKE_API.G_MISS_CHAR THEN
5331 	x_del_rec.EXPORT_LICENSE_RES := l_del_rec.EXPORT_LICENSE_RES;
5332     END IF;
5333 
5334     IF	x_del_rec.EXPORT_FLAG = OKE_API.G_MISS_CHAR THEN
5335 	x_del_rec.EXPORT_FLAG := l_del_rec.EXPORT_FLAG;
5336     END IF;
5337 
5338     IF	x_del_rec.CREATED_BY = OKE_API.G_MISS_NUM THEN
5339 	x_del_rec.CREATED_BY := l_del_rec.CREATED_BY;
5340     END IF;
5341 
5342     IF	x_del_rec.CREATION_DATE = OKE_API.G_MISS_DATE THEN
5343 	x_del_rec.CREATION_DATE := l_del_rec.CREATION_DATE;
5344     END IF;
5345 
5346     IF	x_del_rec.LAST_UPDATED_BY = OKE_API.G_MISS_NUM THEN
5347 	x_del_rec.LAST_UPDATED_BY := l_del_rec.LAST_UPDATED_BY;
5348     END IF;
5349 
5350     IF	x_del_rec.LAST_UPDATE_LOGIN = OKE_API.G_MISS_NUM THEN
5351 	x_del_rec.LAST_UPDATE_LOGIN := l_del_rec.LAST_UPDATE_LOGIN;
5352     END IF;
5353 
5354     IF	x_del_rec.LAST_UPDATE_DATE = OKE_API.G_MISS_DATE THEN
5355 	x_del_rec.LAST_UPDATE_DATE := l_del_rec.LAST_UPDATE_DATE;
5356     END IF;
5357 
5358     IF	x_del_rec.ATTRIBUTE_CATEGORY = OKE_API.G_MISS_CHAR THEN
5359 	x_del_rec.ATTRIBUTE_CATEGORY := l_del_rec.ATTRIBUTE_CATEGORY;
5360     END IF;
5361 
5362     IF	x_del_rec.ATTRIBUTE1 = OKE_API.G_MISS_CHAR THEN
5363 	x_del_rec.ATTRIBUTE1 := l_del_rec.ATTRIBUTE1;
5364     END IF;
5365 
5366     IF	x_del_rec.ATTRIBUTE2 = OKE_API.G_MISS_CHAR THEN
5367 	x_del_rec.ATTRIBUTE2 := l_del_rec.ATTRIBUTE2;
5368     END IF;
5369 
5370     IF	x_del_rec.ATTRIBUTE3 = OKE_API.G_MISS_CHAR THEN
5371 	x_del_rec.ATTRIBUTE3 := l_del_rec.ATTRIBUTE3;
5372     END IF;
5373 
5374     IF	x_del_rec.ATTRIBUTE4 = OKE_API.G_MISS_CHAR THEN
5375 	x_del_rec.ATTRIBUTE4 := l_del_rec.ATTRIBUTE4;
5376     END IF;
5377 
5378     IF	x_del_rec.ATTRIBUTE5 = OKE_API.G_MISS_CHAR THEN
5379 	x_del_rec.ATTRIBUTE5 := l_del_rec.ATTRIBUTE5;
5380     END IF;
5381 
5382     IF	x_del_rec.ATTRIBUTE6 = OKE_API.G_MISS_CHAR THEN
5383 	x_del_rec.ATTRIBUTE6 := l_del_rec.ATTRIBUTE6;
5384     END IF;
5385 
5386     IF	x_del_rec.ATTRIBUTE7 = OKE_API.G_MISS_CHAR THEN
5387 	x_del_rec.ATTRIBUTE7 := l_del_rec.ATTRIBUTE7;
5388     END IF;
5389 
5390     IF	x_del_rec.ATTRIBUTE8 = OKE_API.G_MISS_CHAR THEN
5391 	x_del_rec.ATTRIBUTE8 := l_del_rec.ATTRIBUTE8;
5392     END IF;
5393 
5394     IF	x_del_rec.ATTRIBUTE9 = OKE_API.G_MISS_CHAR THEN
5395 	x_del_rec.ATTRIBUTE9 := l_del_rec.ATTRIBUTE9;
5396     END IF;
5397 
5398     IF	x_del_rec.ATTRIBUTE10 = OKE_API.G_MISS_CHAR THEN
5399 	x_del_rec.ATTRIBUTE10 := l_del_rec.ATTRIBUTE10;
5400     END IF;
5401 
5402     IF	x_del_rec.ATTRIBUTE11 = OKE_API.G_MISS_CHAR THEN
5403 	x_del_rec.ATTRIBUTE11 := l_del_rec.ATTRIBUTE11;
5404     END IF;
5405 
5406     IF	x_del_rec.ATTRIBUTE12 = OKE_API.G_MISS_CHAR THEN
5407 	x_del_rec.ATTRIBUTE12 := l_del_rec.ATTRIBUTE12;
5408     END IF;
5409 
5410     IF	x_del_rec.ATTRIBUTE13 = OKE_API.G_MISS_CHAR THEN
5411 	x_del_rec.ATTRIBUTE13 := l_del_rec.ATTRIBUTE13;
5412     END IF;
5413 
5414     IF	x_del_rec.ATTRIBUTE14 = OKE_API.G_MISS_CHAR THEN
5415 	x_del_rec.ATTRIBUTE14 := l_del_rec.ATTRIBUTE14;
5416     END IF;
5417 
5418     IF	x_del_rec.ATTRIBUTE15 = OKE_API.G_MISS_CHAR THEN
5419 	x_del_rec.ATTRIBUTE15 := l_del_rec.ATTRIBUTE15;
5420     END IF;
5421 
5422     IF  x_del_rec.WEIGHT = OKE_API.G_MISS_NUM THEN
5423         x_del_rec.WEIGHT := l_del_rec.WEIGHT;
5424     END IF;
5425 
5426     IF  x_del_rec.WEIGHT_UOM_CODE = OKE_API.G_MISS_CHAR THEN
5427         x_del_rec.WEIGHT_UOM_CODE := l_del_rec.WEIGHT_UOM_CODE;
5428     END IF;
5429 
5430     IF  x_del_rec.VOLUME = OKE_API.G_MISS_NUM THEN
5431         x_del_rec.VOLUME := l_del_rec.VOLUME;
5432     END IF;
5433 
5434     IF  x_del_rec.VOLUME_UOM_CODE = OKE_API.G_MISS_CHAR THEN
5435         x_del_rec.VOLUME_UOM_CODE := l_del_rec.VOLUME_UOM_CODE;
5436     END IF;
5437 
5438     IF  x_del_rec.EXPENDITURE_ORGANIZATION_ID = OKE_API.G_MISS_NUM THEN
5439         x_del_rec.EXPENDITURE_ORGANIZATION_ID := l_del_rec.EXPENDITURE_ORGANIZATION_ID;
5440     END IF;
5441 
5442     IF  x_del_rec.EXPENDITURE_TYPE = OKE_API.G_MISS_CHAR THEN
5443         x_del_rec.EXPENDITURE_TYPE := l_del_rec.EXPENDITURE_TYPE;
5444     END IF;
5445 
5446     IF  x_del_rec.DESTINATION_TYPE_CODE = OKE_API.G_MISS_CHAR THEN
5447         x_del_rec.DESTINATION_TYPE_CODE := l_del_rec.DESTINATION_TYPE_CODE;
5448     END IF;
5449 
5450     IF  x_del_rec.EXPENDITURE_ITEM_DATE = OKE_API.G_MISS_DATE THEN
5451         x_del_rec.EXPENDITURE_ITEM_DATE := l_del_rec.EXPENDITURE_ITEM_DATE;
5452     END IF;
5453 
5454     IF  x_del_rec.RATE_DATE = OKE_API.G_MISS_DATE THEN
5455         x_del_rec.RATE_DATE := l_del_rec.RATE_DATE;
5456     END IF;
5457 
5458     IF  x_del_rec.RATE_TYPE = OKE_API.G_MISS_CHAR THEN
5459         x_del_rec.RATE_TYPE := l_del_rec.RATE_TYPE;
5460     END IF;
5461 
5462     IF  x_del_rec.EXCHANGE_RATE = OKE_API.G_MISS_NUM THEN
5463         x_del_rec.EXCHANGE_RATE := l_del_rec.EXCHANGE_RATE;
5464     END IF;
5465 
5466     IF  x_del_rec.DESCRIPTION = OKE_API.G_MISS_CHAR THEN
5467 	x_del_rec.DESCRIPTION := l_del_rec.DESCRIPTION;
5468     END IF;
5469 
5470     IF  x_del_rec.COMMENTS = OKE_API.G_MISS_CHAR THEN
5471 	x_del_rec.COMMENTS := l_del_rec.COMMENTS;
5472     END IF;
5473 
5474    IF  x_del_rec.REQUISITION_LINE_TYPE_ID = OKE_API.G_MISS_NUM THEN
5475         x_del_rec.REQUISITION_LINE_TYPE_ID := l_del_rec.REQUISITION_LINE_TYPE_ID;
5476     END IF;
5477 
5478    IF  x_del_rec.PO_CATEGORY_ID = OKE_API.G_MISS_NUM THEN
5479         x_del_rec.PO_CATEGORY_ID := l_del_rec.PO_CATEGORY_ID;
5480     END IF;
5481 
5482     RETURN(l_return_status);
5483 
5484 
5485 
5486   END populate_new_record;
5487 
5488 
5489 BEGIN
5490     -- call START_ACTIVITY to create savepoint, check compatibility
5491     -- and initialize message list
5492     l_return_status := OKE_API.START_ACTIVITY(
5493                         p_api_name      => l_api_name,
5494                         p_pkg_name      => g_pkg_name,
5495                         p_init_msg_list => p_init_msg_list,
5496                         l_api_version   => l_api_version,
5497                         p_api_version   => p_api_version,
5498                         p_api_type      => g_api_type,
5499                         x_return_status => x_return_status);
5500 
5501     -- check if activity started successfully
5502     If (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
5503        raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
5504     Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
5505        raise OKE_API.G_EXCEPTION_ERROR;
5506     End If;
5507 
5508       --validate mandatory fields
5509   IF ( p_del_rec.deliverable_id IS NULL OR p_del_rec.deliverable_id=OKE_API.G_MISS_NUM) THEN
5510     OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
5511 		p_msg_name		=>G_REQUIRED_VALUE,
5512 		p_token1		=>G_COL_NAME_TOKEN,
5513 		p_token1_value		=>'deliverable_id');
5514     x_return_status := OKE_API.G_RET_STS_ERROR;
5515   END IF ;
5516 
5517     	If (x_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
5518        		raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
5519     	Elsif (x_return_status = OKE_API.G_RET_STS_ERROR) then
5520        		raise OKE_API.G_EXCEPTION_ERROR;
5521     	End If;
5522 
5523       X_return_status := populate_new_record(P_del_rec, l_del_rec);
5524 
5525        	If (x_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
5526        		raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
5527     	Elsif (x_return_status = OKE_API.G_RET_STS_ERROR) then
5528        		raise OKE_API.G_EXCEPTION_ERROR;
5529     	End If;
5530 
5531 
5532     IF l_del_rec.k_header_id IS NOT NULL AND
5533        l_del_rec.k_header_id <> OKE_API.G_MISS_NUM THEN
5534 
5535     	IF l_del_rec.inventory_org_id IS NULL
5536     	OR l_del_rec.inventory_org_id = OKE_API.G_MISS_NUM THEN
5537 		OPEN get_inv_org;
5538 		FETCH get_inv_org INTO l_del_rec.inventory_org_id;
5539 		CLOSE get_inv_org;
5540     	END IF;
5541 
5542 
5543     	IF l_del_rec.direction IS NULL
5544     	OR l_del_rec.direction = OKE_API.G_MISS_CHAR THEN
5545 		OPEN get_intent;
5546 		FETCH get_intent INTO l_intent;
5547 		CLOSE get_intent;
5548 		IF l_intent = 'S' THEN
5549 		   l_del_rec.direction := 'OUT';
5550 		ELSE
5551 		   l_del_rec.direction := 'IN';
5552 		END IF;
5553     	END IF;
5554 
5555     END IF;
5556 
5557         -- Validate deliverable attributes
5558 	OKE_CONTRACT_PUB.validate_deliverable(
5559 			p_api_version		=>	p_api_version,
5560     			p_init_msg_list		=>	p_init_msg_list,
5561     			x_return_status		=>	x_return_status,
5562     			x_msg_count		=>	x_msg_count,
5563    			x_msg_data		=>	x_msg_data,
5564 			p_del_rec		                  =>	l_del_rec);
5565 
5566 
5567     	If (x_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
5568        		raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
5569     	Elsif (x_return_status = OKE_API.G_RET_STS_ERROR) then
5570        		raise OKE_API.G_EXCEPTION_ERROR;
5571     	End If;
5572 
5573 
5574 
5575 
5576         ---validations
5577      	l_return_status:=Validate_record(p_del_rec		                  =>	l_del_rec
5578                                  );
5579 
5580     	If ( l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
5581        		raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
5582     	Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
5583        		raise OKE_API.G_EXCEPTION_ERROR;
5584     	End If;
5585 
5586 
5587 
5588 
5589 	OKE_CONTRACT_PUB.update_deliverable(
5590 			p_api_version		=>	p_api_version,
5591     			p_init_msg_list		=>	p_init_msg_list,
5592     			x_return_status		=>	x_return_status,
5593     			x_msg_count		=>	x_msg_count,
5594    			x_msg_data		=>	x_msg_data,
5595 			p_del_rec		                  =>	l_del_rec,
5596 			x_del_rec		                  =>	x_del_rec);
5597 
5598     	If (x_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
5599        		raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
5600     	Elsif (x_return_status = OKE_API.G_RET_STS_ERROR) then
5601        		raise OKE_API.G_EXCEPTION_ERROR;
5602     	End If;
5603 
5604 
5605     OKE_API.END_ACTIVITY(       x_msg_count     => x_msg_count,
5606                                 x_msg_data      => x_msg_data);
5607   EXCEPTION
5608     when OKE_API.G_EXCEPTION_ERROR then
5609       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
5610 			p_api_name  => l_api_name,
5611 			p_pkg_name  => g_pkg_name,
5612 			p_exc_name  => 'OKE_API.G_RET_STS_ERROR',
5613 			x_msg_count => x_msg_count,
5614 			x_msg_data  => x_msg_data,
5615 			p_api_type  => g_api_type);
5616 
5617     when OKE_API.G_EXCEPTION_UNEXPECTED_ERROR then
5618       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
5619 			p_api_name  => l_api_name,
5620 			p_pkg_name  => g_pkg_name,
5621 			p_exc_name  => 'OKE_API.G_RET_STS_UNEXP_ERROR',
5622 			x_msg_count => x_msg_count,
5623 			x_msg_data  => x_msg_data,
5624 			p_api_type  => g_api_type);
5625 
5626     when OTHERS then
5627       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
5628 			p_api_name  => l_api_name,
5629 			p_pkg_name  => g_pkg_name,
5630 			p_exc_name  => 'OTHERS',
5631 			x_msg_count => x_msg_count,
5632 			x_msg_data  => x_msg_data,
5633 			p_api_type  => g_api_type);
5634 
5635 END update_deliverable;
5636 
5637 
5638  /*
5639  * Updates the contract header.
5640  * scope public
5641  * lifecycle active
5642  * displayname Update Project Contract Header
5643  * category BUSINESS_ENTITY OKE_CONTRACT
5644  */
5645   PROCEDURE update_contract_header(
5646 
5647     p_api_version                  IN NUMBER,
5648     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
5649     p_ignore_oke_validation        IN VARCHAR2 DEFAULT 'N',
5650     x_return_status                OUT NOCOPY VARCHAR2,
5651     x_msg_count                    OUT NOCOPY NUMBER,
5652     x_msg_data                     OUT NOCOPY VARCHAR2,
5653     p_chr_rec			   IN  chr_rec_type,
5654     x_chr_rec			   OUT NOCOPY  chr_rec_type) IS
5655 
5656 
5657 
5658         l_api_name          CONSTANT VARCHAR2(30) := 'UPDATE_CONTRACT_HEADER';
5659     l_api_version       CONSTANT NUMBER   := 1.0;
5660     l_return_status     VARCHAR2(1)               := OKE_API.G_RET_STS_SUCCESS;
5661 
5662 
5663     l_okc_chrv_rec		OKC_CONTRACT_PUB.chrv_rec_type;
5664     l_oke_chr_rec		OKE_CONTRACT_PUB.chr_rec_type;
5665 
5666     l_out_chrv		OKC_CONTRACT_PUB.chrv_rec_type;
5667     l_out_chr		OKE_CONTRACT_PUB.chr_rec_type;
5668 
5669 
5670 begin
5671 
5672  -- call START_ACTIVITY to create savepoint, check compatibility
5673     -- and initialize message list
5674     l_return_status := OKE_API.START_ACTIVITY(
5675                         p_api_name      => l_api_name,
5676                         p_pkg_name      => g_pkg_name,
5677                         p_init_msg_list => p_init_msg_list,
5678                         l_api_version   => l_api_version,
5679                         p_api_version   => p_api_version,
5680                         p_api_type      => g_api_type,
5681                         x_return_status => x_return_status);
5682 
5683     -- check if activity started successfully
5684     If (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
5685        raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
5686     Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
5687        raise OKE_API.G_EXCEPTION_ERROR;
5688     End If;
5689 
5690 
5691 
5692             --validate mandatory fields
5693   IF ( p_chr_rec.k_header_id IS NULL OR p_chr_rec.k_header_id=OKE_API.G_MISS_NUM) THEN
5694     OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
5695 		p_msg_name		=>G_REQUIRED_VALUE,
5696 		p_token1		=>G_COL_NAME_TOKEN,
5697 		p_token1_value		=>'K_HEADER_ID');
5698     l_return_status := OKE_API.G_RET_STS_ERROR;
5699   END IF  ;
5700 
5701 
5702         -- check if activity started successfully
5703     If (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
5704        raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
5705     Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
5706        raise OKE_API.G_EXCEPTION_ERROR;
5707     End If;
5708 
5709 
5710     OKC_CONTEXT.Set_OKC_Org_Context( p_chr_id => p_chr_rec.k_header_id );
5711 
5712 -- start assigning items into the records
5713 
5714 
5715   l_oke_chr_rec.k_header_id  		:= p_chr_rec.k_header_id;
5716   l_oke_chr_rec.program_id  		:= p_chr_rec.program_id;
5717   l_oke_chr_rec.project_id  		:= p_chr_rec.project_id;
5718   l_oke_chr_rec.boa_id  		:= p_chr_rec.boa_id;
5719   l_oke_chr_rec.k_type_code  		:= OKE_API.G_MISS_CHAR ; --p_chr_rec.k_type_code;
5720   l_oke_chr_rec.priority_code  		:= p_chr_rec.priority_code;
5721   l_oke_chr_rec.prime_k_alias  		:= p_chr_rec.prime_k_alias;
5722   l_oke_chr_rec.prime_k_number  	:= p_chr_rec.prime_k_number;
5723   l_oke_chr_rec.authorize_date  	:= p_chr_rec.authorize_date;
5724   l_oke_chr_rec.authorizing_reason  	:= p_chr_rec.authorizing_reason;
5725   l_oke_chr_rec.award_cancel_date 	:= p_chr_rec.award_cancel_date;
5726   l_oke_chr_rec.award_date	  	:= p_chr_rec.award_date;
5727   l_oke_chr_rec.date_definitized  	:= p_chr_rec.date_definitized;
5728   l_oke_chr_rec.date_issued 	  	:= p_chr_rec.date_issued;
5729   l_oke_chr_rec.date_negotiated   	:= p_chr_rec.date_negotiated;
5730   l_oke_chr_rec.date_received 	  	:= p_chr_rec.date_received;
5731   l_oke_chr_rec.date_sign_by_contractor := p_chr_rec.date_sign_by_contractor;
5732   l_oke_chr_rec.date_sign_by_customer  	:= p_chr_rec.date_sign_by_customer;
5733   l_oke_chr_rec.faa_approve_date 	:= p_chr_rec.faa_approve_date;
5734   l_oke_chr_rec.faa_reject_date  	:= p_chr_rec.faa_reject_date;
5735   l_oke_chr_rec.booked_flag		:= p_chr_rec.booked_flag;
5736   l_oke_chr_rec.open_flag		:= p_chr_rec.open_flag;
5737   l_oke_chr_rec.cfe_flag		:= p_chr_rec.cfe_flag;
5738   l_oke_chr_rec.vat_code		:= p_chr_rec.vat_code;
5739   l_oke_chr_rec.country_of_origin_code  := p_chr_rec.country_of_origin_code;
5740   l_oke_chr_rec.export_flag		:= p_chr_rec.export_flag;
5741   l_oke_chr_rec.human_subject_flag   	:= p_chr_rec.human_subject_flag;
5742   l_oke_chr_rec.cqa_flag		:= p_chr_rec.cqa_flag;
5743   l_oke_chr_rec.interim_rpt_req_flag   	:= p_chr_rec.interim_rpt_req_flag;
5744   l_oke_chr_rec.no_competition_authorize:= p_chr_rec.no_competition_authorize;
5745   l_oke_chr_rec.penalty_clause_flag   	:= p_chr_rec.penalty_clause_flag;
5746   l_oke_chr_rec.product_line_code   	:= p_chr_rec.product_line_code;
5747   l_oke_chr_rec.reporting_flag    	:= p_chr_rec.reporting_flag;
5748   l_oke_chr_rec.sb_plan_req_flag  	:= p_chr_rec.sb_plan_req_flag;
5749   l_oke_chr_rec.sb_report_flag 	  	:= p_chr_rec.sb_report_flag;
5750   l_oke_chr_rec.nte_amount 	  	:= p_chr_rec.nte_amount;
5751   l_oke_chr_rec.nte_warning_flag 	:= p_chr_rec.nte_warning_flag;
5752   l_oke_chr_rec.bill_without_def_flag   := p_chr_rec.bill_without_def_flag;
5753   l_oke_chr_rec.cas_flag	  	:= p_chr_rec.cas_flag;
5754   l_oke_chr_rec.classified_flag   	:= p_chr_rec.classified_flag;
5755   l_oke_chr_rec.client_approve_req_flag := p_chr_rec.client_approve_req_flag;
5756   l_oke_chr_rec.cost_of_money 	  	:= p_chr_rec.cost_of_money;
5757   l_oke_chr_rec.dcaa_audit_req_flag   	:= p_chr_rec.dcaa_audit_req_flag;
5758   l_oke_chr_rec.cost_share_flag 	:= p_chr_rec.cost_share_flag;
5759   l_oke_chr_rec.oh_rates_final_flag   	:= p_chr_rec.oh_rates_final_flag;
5760   l_oke_chr_rec.prop_delivery_location  := p_chr_rec.prop_delivery_location;
5761   l_oke_chr_rec.prop_due_date_time 	:= p_chr_rec.prop_due_date_time;
5762   l_oke_chr_rec.prop_expire_date 	:= p_chr_rec.prop_expire_date;
5763   l_oke_chr_rec.copies_required		:= p_chr_rec.copies_required;
5764   l_oke_chr_rec.sic_code 		:= p_chr_rec.sic_code;
5765   l_oke_chr_rec.tech_data_wh_rate   	:= p_chr_rec.tech_data_wh_rate;
5766   l_oke_chr_rec.progress_payment_flag	:= p_chr_rec.progress_payment_flag;
5767   l_oke_chr_rec.progress_payment_liq_rate:=p_chr_rec.progress_payment_liq_rate;
5768   l_oke_chr_rec.progress_payment_rate	:= p_chr_rec.progress_payment_rate;
5769   l_oke_chr_rec.alternate_liquidation_rate:=p_chr_rec.alternate_liquidation_rate;
5770   l_oke_chr_rec.prop_due_time		:= p_chr_rec.prop_due_time;
5771   l_oke_chr_rec.definitized_flag	:= p_chr_rec.definitized_flag;
5772   l_oke_chr_rec.financial_ctrl_verified_flag := p_chr_rec.financial_ctrl_verified_flag;
5773   l_oke_chr_rec.cost_of_sale_rate	:= p_chr_rec.cost_of_sale_rate;
5774   l_oke_chr_rec.created_by	  	:= p_chr_rec.created_by;
5775   l_oke_chr_rec.creation_date		:= p_chr_rec.creation_date;
5776   l_oke_chr_rec.last_updated_by   	:= p_chr_rec.last_updated_by;
5777   l_oke_chr_rec.last_update_login 	:= p_chr_rec.last_update_login;
5778   l_oke_chr_rec.last_update_date  	:= p_chr_rec.last_update_date;
5779   l_oke_chr_rec.line_value_total	:= p_chr_rec.line_value_total;
5780   l_oke_chr_rec.undef_line_value_total	:= p_chr_rec.undef_line_value_total;
5781   l_oke_chr_rec.owning_organization_id	:= p_chr_rec.owning_organization_id;
5782 
5783 
5784     l_okc_chrv_rec.id                             := p_chr_rec.k_header_id;
5785     l_okc_chrv_rec.object_version_number          := p_chr_rec.object_version_number;
5786     l_okc_chrv_rec.sfwt_flag                      := p_chr_rec.sfwt_flag;
5787     l_okc_chrv_rec.chr_id_response                := p_chr_rec.chr_id_response;
5788     l_okc_chrv_rec.chr_id_award                   := p_chr_rec.chr_id_award;
5789 
5790    -- l_okc_chrv_rec.INV_ORGANIZATION_ID            := p_chr_rec.INV_ORGANIZATION_ID;
5791     l_okc_chrv_rec.sts_code                       := OKE_API.G_MISS_CHAR;-- p_chr_rec.sts_code;
5792     l_okc_chrv_rec.qcl_id                         := p_chr_rec.qcl_id;
5793     l_okc_chrv_rec.scs_code                       := p_chr_rec.scs_code;
5794     l_okc_chrv_rec.contract_number                := p_chr_rec.contract_number;
5795     l_okc_chrv_rec.currency_code                  := p_chr_rec.currency_code;
5796     l_okc_chrv_rec.contract_number_modifier       := p_chr_rec.contract_number_modifier;
5797     l_okc_chrv_rec.archived_yn                    := p_chr_rec.archived_yn;
5798     l_okc_chrv_rec.deleted_yn                     := p_chr_rec.deleted_yn;
5799     l_okc_chrv_rec.cust_po_number_req_yn          := p_chr_rec.cust_po_number_req_yn;
5800     l_okc_chrv_rec.pre_pay_req_yn                 := p_chr_rec.pre_pay_req_yn;
5801     l_okc_chrv_rec.cust_po_number                 := p_chr_rec.cust_po_number;
5802     l_okc_chrv_rec.short_description              := p_chr_rec.short_description;
5803     l_okc_chrv_rec.comments                       := p_chr_rec.comments;
5804     l_okc_chrv_rec.description                    := p_chr_rec.description;
5805     l_okc_chrv_rec.dpas_rating                    := p_chr_rec.dpas_rating;
5806     l_okc_chrv_rec.cognomen                       := p_chr_rec.cognomen;
5807     l_okc_chrv_rec.template_yn                    := p_chr_rec.template_yn;
5808     l_okc_chrv_rec.template_used                  := p_chr_rec.template_used;
5809     l_okc_chrv_rec.date_approved                  := p_chr_rec.date_approved;
5810     l_okc_chrv_rec.datetime_cancelled             := p_chr_rec.datetime_cancelled;
5811     l_okc_chrv_rec.auto_renew_days                := p_chr_rec.auto_renew_days;
5812     l_okc_chrv_rec.date_issued                    := p_chr_rec.date_issued;
5813     l_okc_chrv_rec.datetime_responded             := p_chr_rec.datetime_responded;
5814     l_okc_chrv_rec.non_response_reason            := p_chr_rec.non_response_reason;
5815     l_okc_chrv_rec.non_response_explain           := p_chr_rec.non_response_explain;
5816     l_okc_chrv_rec.rfp_type                       := p_chr_rec.rfp_type;
5817     l_okc_chrv_rec.chr_type                       := p_chr_rec.chr_type;
5818     l_okc_chrv_rec.keep_on_mail_list              := p_chr_rec. keep_on_mail_list;
5819     l_okc_chrv_rec.set_aside_reason               := p_chr_rec.set_aside_reason;
5820     l_okc_chrv_rec.set_aside_percent              := p_chr_rec.set_aside_percent;
5821     l_okc_chrv_rec.response_copies_req            := p_chr_rec.response_copies_req;
5822     l_okc_chrv_rec.date_close_projected           := p_chr_rec.date_close_projected;
5823     l_okc_chrv_rec.datetime_proposed              := p_chr_rec.datetime_proposed;
5824     l_okc_chrv_rec.date_signed                    := p_chr_rec.date_signed;
5825     l_okc_chrv_rec.date_terminated                := p_chr_rec.date_terminated;
5826     l_okc_chrv_rec.date_renewed                   := p_chr_rec.date_renewed;
5827     l_okc_chrv_rec.trn_code                       := p_chr_rec.trn_code;
5828     l_okc_chrv_rec.start_date                     := p_chr_rec.start_date;
5829     l_okc_chrv_rec.end_date                       := p_chr_rec.end_date;
5830    -- l_okc_chrv_rec.authoring_org_id               := p_chr_rec.authoring_org_id;
5831     l_okc_chrv_rec.buy_or_sell                    := OKE_API.G_MISS_CHAR ; --p_chr_rec.buy_or_sell;
5832     l_okc_chrv_rec.issue_or_receive               := p_chr_rec.issue_or_receive;
5833     l_okc_chrv_rec.estimated_amount		  := p_chr_rec.estimated_amount;
5834 
5835     l_okc_chrv_rec.estimated_amount_renewed       := p_chr_rec.estimated_amount_renewed;
5836     l_okc_chrv_rec.currency_code_renewed	  := p_chr_rec.currency_code_renewed;
5837     l_okc_chrv_rec.upg_orig_system_ref            := p_chr_rec.upg_orig_system_ref;
5838     l_okc_chrv_rec.upg_orig_system_ref_id         := p_chr_rec.upg_orig_system_ref_id;
5839     l_okc_chrv_rec.attribute_category             := p_chr_rec.attribute_category;
5840     l_okc_chrv_rec.attribute1                     := p_chr_rec.attribute1;
5841     l_okc_chrv_rec.attribute2                     := p_chr_rec.attribute2;
5842     l_okc_chrv_rec.attribute3                     := p_chr_rec.attribute3;
5843     l_okc_chrv_rec.attribute4                     := p_chr_rec.attribute4;
5844     l_okc_chrv_rec.attribute5                     := p_chr_rec.attribute5;
5845     l_okc_chrv_rec.attribute6                     := p_chr_rec.attribute6;
5846     l_okc_chrv_rec.attribute7                     := p_chr_rec.attribute7;
5847     l_okc_chrv_rec.attribute8                     := p_chr_rec.attribute8;
5848     l_okc_chrv_rec.attribute9                     := p_chr_rec.attribute9;
5849     l_okc_chrv_rec.attribute10                    := p_chr_rec.attribute10;
5850     l_okc_chrv_rec.attribute11                    := p_chr_rec.attribute11;
5851     l_okc_chrv_rec.attribute12                    := p_chr_rec.attribute12;
5852     l_okc_chrv_rec.attribute13                    := p_chr_rec.attribute13;
5853     l_okc_chrv_rec.attribute14                    := p_chr_rec.attribute14;
5854     l_okc_chrv_rec.attribute15                    := p_chr_rec.attribute15;
5855     l_okc_chrv_rec.created_by                     := p_chr_rec.created_by;
5856     l_okc_chrv_rec.creation_date                  := p_chr_rec.creation_date;
5857     l_okc_chrv_rec.last_updated_by                := p_chr_rec.last_updated_by;
5858     l_okc_chrv_rec.last_update_date               := p_chr_rec.last_update_date;
5859     l_okc_chrv_rec.last_update_login              := p_chr_rec.last_update_login;
5860     l_okc_chrv_rec.VALIDATE_YN :='Y';
5861 
5862 
5863 
5864 
5865 -- assign mandatory values
5866 	l_okc_chrv_rec.archived_yn := 'N';
5867 	l_okc_chrv_rec.deleted_yn  := 'N';
5868 	l_okc_chrv_rec.scs_code    := 'PROJECT';
5869 
5870 
5871  OKE_CONTRACT_PUB.update_contract_header(
5872 			p_api_version		=>	p_api_version,
5873     			p_init_msg_list		=>	p_init_msg_list,
5874     			x_return_status		=>	x_return_status,
5875     			x_msg_count		=>	x_msg_count,
5876    			x_msg_data		=>	x_msg_data,
5877 			p_chr_rec		=>	l_oke_chr_rec,
5878 			p_chrv_rec		=>	l_okc_chrv_rec,
5879 			x_chr_rec		=>	l_out_chr,
5880 			x_chrv_rec		=>	l_out_chrv	);
5881 
5882     If (x_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
5883        raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
5884     Elsif (x_return_status = OKE_API.G_RET_STS_ERROR) then
5885        raise OKE_API.G_EXCEPTION_ERROR;
5886     End If;
5887 
5888 
5889 
5890 -- Added code to update who columns. neccessary for security to work after import process.
5891 
5892 IF p_chr_rec.created_by <> OKE_API.G_MISS_NUM AND p_chr_rec.created_by IS NOT NULL THEN
5893   UPDATE OKE_K_HEADERS SET CREATED_BY = p_chr_rec.created_by
5894   WHERE K_HEADER_ID = l_out_chr.k_header_id;
5895 END IF;
5896 IF p_chr_rec.creation_date <> OKE_API.G_MISS_DATE AND p_chr_rec.creation_date IS NOT NULL THEN
5897   UPDATE OKE_K_HEADERS SET CREATION_DATE = p_chr_rec.creation_date
5898   WHERE K_HEADER_ID = l_out_chr.k_header_id;
5899 END IF;
5900 IF p_chr_rec.last_updated_by <> OKE_API.G_MISS_NUM AND p_chr_rec.last_updated_by IS NOT NULL THEN
5901   UPDATE OKE_K_HEADERS SET LAST_UPDATED_BY = p_chr_rec.last_updated_by
5902   WHERE K_HEADER_ID = l_out_chr.k_header_id;
5903 END IF;
5904 IF p_chr_rec.last_update_login <> OKE_API.G_MISS_NUM AND p_chr_rec.last_update_login IS NOT NULL THEN
5905   UPDATE OKE_K_HEADERS SET LAST_UPDATE_LOGIN = p_chr_rec.last_update_login
5906   WHERE K_HEADER_ID = l_out_chr.k_header_id;
5907 END IF;
5908 IF p_chr_rec.last_update_date <> OKE_API.G_MISS_DATE AND p_chr_rec.last_update_date IS NOT NULL THEN
5909   UPDATE OKE_K_HEADERS SET LAST_UPDATE_DATE = p_chr_rec.last_update_date
5910   WHERE K_HEADER_ID = l_out_chr.k_header_id;
5911 END IF;
5912 
5913 -- Added code to update who columns. neccessary for security to work after import process.
5914 
5915 
5916 
5917 -- oke stuff
5918 
5919   x_chr_rec.k_header_id  	:= l_out_chr.k_header_id;
5920   x_chr_rec.program_id  	:= l_out_chr.program_id;
5921   x_chr_rec.project_id  	:= l_out_chr.project_id;
5922   x_chr_rec.boa_id  		:= l_out_chr.boa_id;
5923   x_chr_rec.k_type_code  	:= l_out_chr.k_type_code;
5924   x_chr_rec.priority_code  	:= l_out_chr.priority_code;
5925   x_chr_rec.prime_k_alias  	:= l_out_chr.prime_k_alias;
5926   x_chr_rec.prime_k_number  	:= l_out_chr.prime_k_number;
5927   x_chr_rec.authorize_date  	:= l_out_chr.authorize_date;
5928   x_chr_rec.authorizing_reason  := l_out_chr.authorizing_reason;
5929   x_chr_rec.award_cancel_date 	:= l_out_chr.award_cancel_date;
5930   x_chr_rec.award_date	  	:= l_out_chr.award_date;
5931   x_chr_rec.date_definitized  	:= l_out_chr.date_definitized;
5932   x_chr_rec.date_issued 	:= l_out_chr.date_issued;
5933   x_chr_rec.date_negotiated   	:= l_out_chr.date_negotiated;
5934   x_chr_rec.date_received 	:= l_out_chr.date_received;
5935   x_chr_rec.date_sign_by_contractor 	:= l_out_chr.date_sign_by_contractor;
5936   x_chr_rec.date_sign_by_customer 	:= l_out_chr.date_sign_by_customer;
5937   x_chr_rec.faa_approve_date 	  	:= l_out_chr.faa_approve_date;
5938   x_chr_rec.faa_reject_date 	  	:= l_out_chr.faa_reject_date;
5939   x_chr_rec.booked_flag		  	:= l_out_chr.booked_flag;
5940   x_chr_rec.open_flag		  	:= l_out_chr.open_flag;
5941   x_chr_rec.cfe_flag		  	:= l_out_chr.cfe_flag;
5942   x_chr_rec.vat_code		  	:= l_out_chr.vat_code;
5943   x_chr_rec.country_of_origin_code	:= l_out_chr.country_of_origin_code;
5944   x_chr_rec.export_flag		  	:= l_out_chr.export_flag;
5945   x_chr_rec.human_subject_flag    	:= l_out_chr.human_subject_flag;
5946   x_chr_rec.cqa_flag		  	:= l_out_chr.cqa_flag;
5947   x_chr_rec.interim_rpt_req_flag  	:= l_out_chr.interim_rpt_req_flag;
5948   x_chr_rec.no_competition_authorize   	:= l_out_chr.no_competition_authorize;
5949   x_chr_rec.penalty_clause_flag   	:= l_out_chr.penalty_clause_flag;
5950   x_chr_rec.product_line_code   	:= l_out_chr.product_line_code;
5951   x_chr_rec.reporting_flag    		:= l_out_chr.reporting_flag;
5952   x_chr_rec.sb_plan_req_flag  		:= l_out_chr.sb_plan_req_flag;
5953   x_chr_rec.sb_report_flag 	  	:= l_out_chr.sb_report_flag;
5954   x_chr_rec.nte_amount 	  		:= l_out_chr.nte_amount;
5955   x_chr_rec.nte_warning_flag 		:= l_out_chr.nte_warning_flag;
5956   x_chr_rec.bill_without_def_flag   	:= l_out_chr.bill_without_def_flag;
5957   x_chr_rec.cas_flag	  		:= l_out_chr.cas_flag;
5958   x_chr_rec.classified_flag   		:= l_out_chr.classified_flag;
5959   x_chr_rec.client_approve_req_flag 	:= l_out_chr.client_approve_req_flag;
5960   x_chr_rec.cost_of_money 	  	:= l_out_chr.cost_of_money;
5961   x_chr_rec.dcaa_audit_req_flag   	:= l_out_chr.dcaa_audit_req_flag;
5962   x_chr_rec.cost_share_flag 		:= l_out_chr.cost_share_flag;
5963   x_chr_rec.oh_rates_final_flag   	:= l_out_chr.oh_rates_final_flag;
5964   x_chr_rec.prop_delivery_location  	:= l_out_chr.prop_delivery_location;
5965   x_chr_rec.prop_due_date_time 		:= l_out_chr.prop_due_date_time;
5966   x_chr_rec.prop_expire_date 		:= l_out_chr.prop_expire_date;
5967   x_chr_rec.copies_required		:= l_out_chr.copies_required;
5968   x_chr_rec.sic_code 			:= l_out_chr.sic_code;
5969   x_chr_rec.tech_data_wh_rate   	:= l_out_chr.tech_data_wh_rate;
5970   x_chr_rec.progress_payment_flag	:= l_out_chr.progress_payment_flag;
5971   x_chr_rec.progress_payment_liq_rate	:= l_out_chr.progress_payment_liq_rate;
5972   x_chr_rec.progress_payment_rate	:= l_out_chr.progress_payment_rate;
5973   x_chr_rec.alternate_liquidation_rate	:= l_out_chr.alternate_liquidation_rate;
5974   x_chr_rec.prop_due_time		:= l_out_chr.prop_due_time;
5975   x_chr_rec.definitized_flag		:= l_out_chr.definitized_flag;
5976   x_chr_rec.financial_ctrl_verified_flag:= l_out_chr.financial_ctrl_verified_flag;
5977   x_chr_rec.cost_of_sale_rate		:= l_out_chr.cost_of_sale_rate;
5978   x_chr_rec.created_by	  		:= l_out_chr.created_by;
5979   x_chr_rec.creation_date		:= l_out_chr.creation_date;
5980   x_chr_rec.last_updated_by   		:= l_out_chr.last_updated_by;
5981   x_chr_rec.last_update_login 		:= l_out_chr.last_update_login;
5982   x_chr_rec.last_update_date  		:= l_out_chr.last_update_date;
5983   x_chr_rec.line_value_total		:= l_out_chr.line_value_total;
5984   x_chr_rec.undef_line_value_total	:= l_out_chr.undef_line_value_total;
5985   x_chr_rec.owning_organization_id	:= l_out_chr.owning_organization_id;
5986 
5987 
5988 
5989 	-- okc stuff
5990 	-- being later thereby overwriting the oke stuff if there is duplicate fields
5991 
5992     x_chr_rec.k_header_id                    := l_out_chrv.id;
5993     x_chr_rec.object_version_number          := l_out_chrv.object_version_number;
5994     x_chr_rec.sfwt_flag                      := l_out_chrv.sfwt_flag;
5995     x_chr_rec.chr_id_response                := l_out_chrv.chr_id_response;
5996     x_chr_rec.chr_id_award                   := l_out_chrv.chr_id_award;
5997 
5998     x_chr_rec.INV_ORGANIZATION_ID            := l_out_chrv.INV_ORGANIZATION_ID;
5999     x_chr_rec.sts_code                       := l_out_chrv.sts_code;
6000     x_chr_rec.qcl_id                         := l_out_chrv.qcl_id;
6001     x_chr_rec.scs_code                       := l_out_chrv.scs_code;
6002     x_chr_rec.contract_number                := l_out_chrv.contract_number;
6003     x_chr_rec.currency_code                  := l_out_chrv.currency_code;
6004     x_chr_rec.contract_number_modifier       := l_out_chrv.contract_number_modifier;
6005     x_chr_rec.archived_yn                    := l_out_chrv.archived_yn;
6006     x_chr_rec.deleted_yn                     := l_out_chrv.deleted_yn;
6007     x_chr_rec.cust_po_number_req_yn          := l_out_chrv.cust_po_number_req_yn;
6008     x_chr_rec.pre_pay_req_yn                 := l_out_chrv.pre_pay_req_yn;
6009     x_chr_rec.cust_po_number                 := l_out_chrv.cust_po_number;
6010     x_chr_rec.short_description              := l_out_chrv.short_description;
6011     x_chr_rec.comments                       := l_out_chrv.comments;
6012     x_chr_rec.description                    := l_out_chrv.description;
6013     x_chr_rec.dpas_rating                    := l_out_chrv.dpas_rating;
6014     x_chr_rec.cognomen                       := l_out_chrv.cognomen;
6015     x_chr_rec.template_yn                    := l_out_chrv.template_yn;
6016     x_chr_rec.template_used                  := l_out_chrv.template_used;
6017     x_chr_rec.date_approved                  := l_out_chrv.date_approved;
6018     x_chr_rec.datetime_cancelled             := l_out_chrv.datetime_cancelled;
6019     x_chr_rec.auto_renew_days                := l_out_chrv.auto_renew_days;
6020     x_chr_rec.date_issued                    := l_out_chrv.date_issued;
6021     x_chr_rec.datetime_responded             := l_out_chrv.datetime_responded;
6022     x_chr_rec.non_response_reason            := l_out_chrv.non_response_reason;
6023     x_chr_rec.non_response_explain           := l_out_chrv.non_response_explain;
6024     x_chr_rec.rfp_type                       := l_out_chrv.rfp_type;
6025     x_chr_rec.chr_type                       := l_out_chrv.chr_type;
6026     x_chr_rec.keep_on_mail_list              := l_out_chrv. keep_on_mail_list;
6027     x_chr_rec.set_aside_reason               := l_out_chrv.set_aside_reason;
6028     x_chr_rec.set_aside_percent              := l_out_chrv.set_aside_percent;
6029     x_chr_rec.response_copies_req            := l_out_chrv.response_copies_req;
6030     x_chr_rec.date_close_projected           := l_out_chrv.date_close_projected;
6031     x_chr_rec.datetime_proposed              := l_out_chrv.datetime_proposed;
6032     x_chr_rec.date_signed                    := l_out_chrv.date_signed;
6033     x_chr_rec.date_terminated                := l_out_chrv.date_terminated;
6034     x_chr_rec.date_renewed                   := l_out_chrv.date_renewed;
6035     x_chr_rec.trn_code                       := l_out_chrv.trn_code;
6036     x_chr_rec.start_date                     := l_out_chrv.start_date;
6037     x_chr_rec.end_date                       := l_out_chrv.end_date;
6038     x_chr_rec.authoring_org_id               := l_out_chrv.authoring_org_id;
6039     x_chr_rec.buy_or_sell                    := l_out_chrv.buy_or_sell;
6040     x_chr_rec.issue_or_receive               := l_out_chrv.issue_or_receive;
6041     x_chr_rec.estimated_amount		     := l_out_chrv.estimated_amount;
6042 
6043     x_chr_rec.estimated_amount_renewed       := l_out_chrv.estimated_amount_renewed;
6044     x_chr_rec.currency_code_renewed	     := l_out_chrv.currency_code_renewed;
6045     x_chr_rec.upg_orig_system_ref            := l_out_chrv.upg_orig_system_ref;
6046     x_chr_rec.upg_orig_system_ref_id         := l_out_chrv.upg_orig_system_ref_id;
6047     x_chr_rec.attribute_category             := l_out_chrv.attribute_category;
6048     x_chr_rec.attribute1                     := l_out_chrv.attribute1;
6049     x_chr_rec.attribute2                     := l_out_chrv.attribute2;
6050     x_chr_rec.attribute3                     := l_out_chrv.attribute3;
6051     x_chr_rec.attribute4                     := l_out_chrv.attribute4;
6052     x_chr_rec.attribute5                     := l_out_chrv.attribute5;
6053     x_chr_rec.attribute6                     := l_out_chrv.attribute6;
6054     x_chr_rec.attribute7                     := l_out_chrv.attribute7;
6055     x_chr_rec.attribute8                     := l_out_chrv.attribute8;
6056     x_chr_rec.attribute9                     := l_out_chrv.attribute9;
6057     x_chr_rec.attribute10                    := l_out_chrv.attribute10;
6058     x_chr_rec.attribute11                    := l_out_chrv.attribute11;
6059     x_chr_rec.attribute12                    := l_out_chrv.attribute12;
6060     x_chr_rec.attribute13                    := l_out_chrv.attribute13;
6061     x_chr_rec.attribute14                    := l_out_chrv.attribute14;
6062     x_chr_rec.attribute15                    := l_out_chrv.attribute15;
6063     x_chr_rec.created_by                     := l_out_chrv.created_by;
6064     x_chr_rec.creation_date                  := l_out_chrv.creation_date;
6065     x_chr_rec.last_updated_by                := l_out_chrv.last_updated_by;
6066     x_chr_rec.last_update_date               := l_out_chrv.last_update_date;
6067     x_chr_rec.last_update_login              := l_out_chrv.last_update_login;
6068 
6069 
6070 
6071     OKE_API.END_ACTIVITY(       x_msg_count     => x_msg_count,
6072                                 x_msg_data      => x_msg_data);
6073   EXCEPTION
6074     when OKE_API.G_EXCEPTION_ERROR then
6075       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
6076 			p_api_name  => l_api_name,
6077 			p_pkg_name  => g_pkg_name,
6078 			p_exc_name  => 'OKE_API.G_RET_STS_ERROR',
6079 			x_msg_count => x_msg_count,
6080 			x_msg_data  => x_msg_data,
6081 			p_api_type  => g_api_type);
6082 
6083     when OKE_API.G_EXCEPTION_UNEXPECTED_ERROR then
6084       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
6085 			p_api_name  => l_api_name,
6086 			p_pkg_name  => g_pkg_name,
6087 			p_exc_name  => 'OKE_API.G_RET_STS_UNEXP_ERROR',
6088 			x_msg_count => x_msg_count,
6089 			x_msg_data  => x_msg_data,
6090 			p_api_type  => g_api_type);
6091 
6092     when OTHERS then
6093       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
6094 			p_api_name  => l_api_name,
6095 			p_pkg_name  => g_pkg_name,
6096 			p_exc_name  => 'OTHERS',
6097 			x_msg_count => x_msg_count,
6098 			x_msg_data  => x_msg_data,
6099 			p_api_type  => g_api_type);
6100 
6101 END update_contract_header;
6102 
6103 
6104 
6105 
6106 /*
6107  * Deletes the contract
6108  * scope public
6109  * lifecycle active
6110  * displayname Delete Project contract
6111  * category BUSINESS_ENTITY OKE_CONTRACT
6112  */
6113 
6114 	PROCEDURE delete_contract (
6115 	p_api_version       IN NUMBER,
6116 	p_init_msg_list     IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
6117 	x_return_status     OUT NOCOPY VARCHAR2,
6118 	x_msg_count        OUT NOCOPY NUMBER,
6119 	x_msg_data          OUT NOCOPY VARCHAR2,
6120 	p_chr_id	        IN  NUMBER) IS
6121 
6122 
6123     l_api_name          CONSTANT VARCHAR2(30) := 'DELETE_CONTRACT';
6124     l_api_version       CONSTANT NUMBER   := 1.0;
6125     l_return_status     VARCHAR2(1)               := OKE_API.G_RET_STS_SUCCESS;
6126      l_return_code VARCHAR2(30);
6127       l_docnumber       VARCHAR2(240);
6128     l_doctype         VARCHAR2(80);
6129      l_wf_name         VARCHAR2(200);
6130 
6131 
6132     CURSOR l_wf IS
6133      SELECT NAME FROM okc_process_defs_v dv, okc_k_processes ps
6134        WHERE ps.pdf_id = dv.id
6135        AND   ps.chr_id= p_chr_id
6136        AND   ps.last_update_date =
6137         (SELECT max(last_update_date) FROM okc_k_processes
6138              WHERE chr_id= p_chr_id );
6139 
6140 
6141     CURSOR get_k IS
6142       SELECT k_type,k_number
6143         FROM oke_k_headers_full_v
6144         WHERE k_header_id = p_chr_id;
6145 
6146   BEGIN
6147     -- call START_ACTIVITY to create savepoint, check compatibility
6148     -- and initialize message list
6149     l_return_status := OKE_API.START_ACTIVITY(
6150                         p_api_name      => l_api_name,
6151                         p_pkg_name      => g_pkg_name,
6152                         p_init_msg_list => p_init_msg_list,
6153                         l_api_version   => l_api_version,
6154                         p_api_version   => p_api_version,
6155                         p_api_type      => g_api_type,
6156                         x_return_status => x_return_status);
6157 
6158     -- check if activity started successfully
6159     If (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
6160        raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
6161     Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
6162        raise OKE_API.G_EXCEPTION_ERROR;
6163     End If;
6164 
6165             --validate mandatory fields
6166   IF ( p_chr_id IS NULL OR p_chr_id=OKE_API.G_MISS_NUM) THEN
6167     OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
6168 		p_msg_name		=>G_REQUIRED_VALUE,
6169 		p_token1		=>G_COL_NAME_TOKEN,
6170 		p_token1_value		=>'P_CHR_ID/Contract');
6171     l_return_status := OKE_API.G_RET_STS_ERROR;
6172   END IF ;
6173 
6174     	If (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
6175        		raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
6176     	Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
6177        		raise OKE_API.G_EXCEPTION_ERROR;
6178     	End If;
6179 
6180    OKC_CONTEXT.Set_OKC_Org_Context( p_chr_id => P_CHR_ID );
6181 
6182     OKE_CONTRACT_PUB.Check_Delete_Contract(
6183         p_api_version   => 1.0,
6184         p_init_msg_list => 'F',
6185         x_return_status => l_return_status,
6186         x_msg_count     => x_msg_count,
6187         x_msg_data      => x_msg_data,
6188         p_chr_id        => p_chr_id,
6189         x_return_code   => l_return_code
6190     );
6191 
6192 
6193 
6194     OPEN get_k;
6195     FETCH get_k INTO l_doctype,l_docnumber;
6196     CLOSE get_k;
6197 
6198     IF l_return_status <> 'S' THEN
6199       IF l_return_code = 'OPN' THEN
6200 
6201        OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
6202 		p_msg_name		=>'OKE_NO_DELETE_OPN',
6203 		p_token1		=>'DOCTYPE',
6204 		p_token1_value		=>l_doctype,
6205                 p_token2		=>'DOCNUMBER',
6206 		p_token2_value		=>l_docnumber
6207     );
6208 
6209 
6210        ELSIF l_return_code = 'BOA' THEN
6211 
6212         OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
6213 		p_msg_name		=>'OKE_NO_DELETE_BOA',
6214 		p_token1		=>'DOCTYPE',
6215 		p_token1_value		=>l_doctype,
6216                   p_token2		=>'DOCNUMBER',
6217 		p_token2_value		=>l_docnumber
6218     );
6219 
6220 
6221        ELSIF l_return_code = 'STS' THEN
6222         OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
6223 		p_msg_name		=>'OKE_NO_DELETE_STATUS',
6224 		p_token1		=>'DOCTYPE',
6225 		p_token1_value		=>l_doctype,
6226    		 p_token2		=>'DOCNUMBER',
6227 		p_token2_value		=>l_docnumber
6228     );
6229 
6230 
6231        ELSIF l_return_code = 'PO' THEN
6232 
6233           OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
6234 		p_msg_name		=>'OKE_NO_DELETE_PO');
6235 
6236 
6237 
6238        ELSIF l_return_code = 'PLAN' THEN
6239          OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
6240 		p_msg_name		=>'OKE_NO_DELETE_PLAN');
6241 
6242 
6243 
6244        ELSIF l_return_code = 'SHIP' THEN
6245 
6246         OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
6247 		p_msg_name		=>'OKE_NO_DELETE_SHIP');
6248 
6249 
6250        ELSIF l_return_code = 'FUND' THEN
6251 
6252         OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
6253 		p_msg_name		=>'OKE_NO_DELETE_FUNDING');
6254 
6255 
6256        ELSIF l_return_code ='WFA' THEN
6257         OPEN l_wf;
6258         FETCH l_wf INTO l_wf_name;
6259         CLOSE l_wf;
6260 
6261          OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
6262 		p_msg_name		=>'OKE_PROCESS_ACTIVE',
6263 		p_token1		=>'VALUE',
6264 		p_token1_value		=>l_wf_name
6265     );
6266 
6267       END IF;
6268 
6269       x_return_status := OKE_API.G_RET_STS_ERROR ;
6270 
6271     END IF;
6272 
6273     	If ( l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
6274        		raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
6275     	Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
6276        		raise OKE_API.G_EXCEPTION_ERROR;
6277     	End If;
6278 
6279    	oke_contract_pub.delete_contract (
6280           p_api_version		=>	p_api_version,
6281     			p_init_msg_list		=>	p_init_msg_list,
6282     			x_return_status		=>	x_return_status,
6283     	 		x_msg_count		=>	x_msg_count,
6284    		  	x_msg_data		=>	x_msg_data,
6285          		 p_chr_id	       =>p_chr_id,
6286 	      		 p_pre_deletion_check_yn  =>'N')    ;
6287 
6288     If (x_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
6289        raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
6290     Elsif (x_return_status = OKE_API.G_RET_STS_ERROR) then
6291        raise OKE_API.G_EXCEPTION_ERROR;
6292     End If;
6293 
6294    OKE_API.END_ACTIVITY(       x_msg_count     => x_msg_count,
6295                                 x_msg_data      => x_msg_data);
6296   EXCEPTION
6297     when OKE_API.G_EXCEPTION_ERROR then
6298       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
6299 			p_api_name  => l_api_name,
6300 			p_pkg_name  => g_pkg_name,
6301 			p_exc_name  => 'OKE_API.G_RET_STS_ERROR',
6302 			x_msg_count => x_msg_count,
6303 			x_msg_data  => x_msg_data,
6304 			p_api_type  => g_api_type);
6305 
6306     when OKE_API.G_EXCEPTION_UNEXPECTED_ERROR then
6307       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
6308 			p_api_name  => l_api_name,
6309 			p_pkg_name  => g_pkg_name,
6310 			p_exc_name  => 'OKE_API.G_RET_STS_UNEXP_ERROR',
6311 			x_msg_count => x_msg_count,
6312 			x_msg_data  => x_msg_data,
6313 			p_api_type  => g_api_type);
6314 
6315     when OTHERS then
6316       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
6317 			p_api_name  => l_api_name,
6318 			p_pkg_name  => g_pkg_name,
6319 			p_exc_name  => 'OTHERS',
6320 			x_msg_count => x_msg_count,
6321 			x_msg_data  => x_msg_data,
6322 			p_api_type  => g_api_type);
6323 
6324   END delete_contract;
6325 
6326 
6327 Function   Validate_delete_deliverable(p_deliverable_id in number
6328       ) RETURN VARCHAR2 is
6329 
6330 l_return_status	VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
6331 x_return_status VARCHAR2(1) := OKE_API.G_RET_STS_SUCCESS;
6332 
6333 ---------------------------
6334 procedure check_opn_code (p_deliverable_id in number,
6335  x_return_status out nocopy varchar2 ) is
6336 
6337 cursor c(p_deliverable_id Number) IS
6338     select okl.sts_code from okc_k_lines_b okl , oke_k_deliverables_b okb
6339     where okl.id = okb.k_line_id
6340    and okb.deliverable_id=p_deliverable_id;
6341 
6342 cursor opn_csr(p_sts_code varchar2, p_opn_code varchar2) is
6343     select 'x' from okc_assents
6344     where opn_code = p_opn_code
6345     and sts_code = p_sts_code
6346     and scs_code = 'PROJECT'
6347     and allowed_yn = 'Y';
6348 
6349 
6350 l_code varchar2(80);
6351 l_opn_code varchar2(30);
6352 l_found boolean := FALSE;
6353  l_value varchar2(1);
6354 
6355 
6356 begin
6357 
6358 x_return_status := OKE_API.G_RET_STS_SUCCESS;
6359 
6360  open c(p_deliverable_id);
6361     fetch c into l_code;
6362  close c;
6363 
6364 l_opn_code := 'DELETE_DELV';
6365 
6366 IF l_opn_code is not null then
6367       open opn_csr(l_code, l_opn_code);
6368       fetch opn_csr into l_value;
6369       l_found := opn_csr%found;
6370       close opn_csr;
6371 end if;
6372 
6373 if not l_found then
6374 
6375  OKE_API.SET_MESSAGE(p_app_name	=> 'OKE',
6376     p_msg_name	=> 'OKE_OPN_NO_DELETE_DLV');
6377 
6378     X_Return_Status := OKE_API.G_RET_STS_ERROR;
6379 
6380 end if;
6381 
6382 end check_opn_code;
6383 
6384 -------------------------------
6385 procedure check_deliverable_in_progress(p_deliverable_id in number,
6386  x_return_status out nocopy varchar2 ) is
6387 cursor get_del_dtls is
6388 select mps_transaction_id,po_ref_1,shipping_request_id,completed_flag from oke_k_deliverables_b where deliverable_id=p_deliverable_id;
6389 
6390  CURSOR c1(l_mps_id number) IS
6391   SELECT 'X' FROM MRP_SCHEDULE_DATES
6392   WHERE MPS_TRANSACTION_ID = l_mps_id;
6393 
6394    CURSOR c_po IS
6395   select 'X' from po_distributions_all
6396   where oke_contract_deliverable_id =p_deliverable_id;
6397 
6398 CURSOR c_req IS
6399  select 'X' from po_req_distributions_all
6400  where oke_contract_deliverable_id =p_deliverable_id;
6401 
6402 CURSOR c3(l_req_id number) IS
6403   SELECT 'X' FROM PO_REQUISITIONS_INTERFACE_ALL
6404   WHERE batch_id = l_req_id
6405    AND OKE_CONTRACT_DELIVERABLE_ID =p_deliverable_id;
6406 
6407 CURSOR c2(l_ship_id number) IS
6408   SELECT 'X' FROM WSH_DELIVERY_DETAILS
6409   WHERE delivery_detail_id = l_ship_id;
6410 
6411     cinfo1 varchar2(1);
6412   cinfo2 varchar2(1);
6413   cinfo3 varchar2(1);
6414 
6415 
6416 
6417 l_mps_transaction_id number;
6418 l_po_ref_1 number;
6419 l_shipping_request_id number;
6420 l_completed_flag varchar2(1);
6421 l_found boolean;
6422   deletable boolean := TRUE;
6423 
6424   l_message varchar2(2000);
6425   l_msg Varchar2(80);
6426   l_count number := 0;
6427 
6428 begin
6429 
6430 x_return_status := OKE_API.G_RET_STS_SUCCESS;
6431 
6432 open get_del_dtls ;
6433     fetch  get_del_dtls into l_mps_transaction_id,l_po_ref_1,l_shipping_request_id,l_completed_flag;
6434  close get_del_dtls;
6435 
6436 -- validate if the deliverable is in any process, if yes, no delete
6437 
6438       if  l_mps_transaction_id is not null then
6439     	open c1(l_mps_transaction_id);
6440     	fetch c1 into cinfo1;
6441     	l_found := c1%found;
6442     	close c1;
6443 
6444       if l_found then
6445 	fnd_message.set_name('OKE', 'OKE_DTS_PROGRESS_MDS');
6446 	l_msg := fnd_message.get;
6447       	if l_count = 0 then
6448 
6449 	  l_message := l_msg;
6450 	  l_count := 1;
6451       	else
6452 	  l_message := l_message || ', ' || l_msg;
6453       	end  if;
6454 
6455         deletable := FALSE;
6456       end if;
6457     end if;
6458 
6459     if l_po_ref_1 is not null  then
6460 
6461      open c_po;
6462      fetch c_po into cinfo3;
6463      l_found := c_po%found;
6464      close c_po;
6465 
6466       if not l_found then  --  po not found
6467          open c_req;
6468          fetch  c_req  into cinfo3;
6469          l_found := c_req%found;
6470          close  c_req;
6471 
6472             if  not l_found then --  req not found
6473                   open c3(l_po_ref_1);
6474                   fetch c3 into cinfo3;
6475                   l_found := c3%found;
6476                  close c3;
6477             end if;
6478       end if;
6479 
6480 
6481       if l_found then -- interface/po/req rec  found
6482 	fnd_message.set_name('OKE', 'OKE_DTS_PROGRESS_REQ');
6483 	l_msg := fnd_message.get;
6484         if l_count = 0 then
6485 	  l_message := l_msg;
6486 	  l_count := 1;
6487         else
6488 	  l_message := l_message || ', ' || l_msg;
6489         end  if;
6490 
6491         deletable := FALSE;
6492       end if;
6493     end if;
6494 
6495     if l_shipping_request_id is not null then
6496       open c2(l_shipping_request_id);
6497       fetch c2 into cinfo2;
6498       l_found := c2%found;
6499       close c2;
6500 
6501       if l_found then
6502 	fnd_message.set_name('OKE', 'OKE_DTS_PROGRESS_WSH');
6503 	l_msg := fnd_message.get;
6504         if l_count = 0 then
6505 	  l_message := l_msg;
6506 	  l_count := 1;
6507         else
6508 	  l_message := l_message || ', ' || l_msg;
6509         end  if;
6510 
6511         deletable := FALSE;
6512       end if;
6513     end if;
6514 
6515    if nvl(l_completed_flag,'N') = 'Y' then
6516        	fnd_message.set_name('OKE', 'OKE_DTS_DATA_COMPLETED');
6517       	l_msg := fnd_message.get;
6518         if l_count = 0 then
6519       	  l_message := l_msg;
6520       	  l_count := 1;
6521          else
6522       	  l_message := l_message || ', ' || l_msg;
6523         end  if;
6524 
6525         deletable := FALSE;
6526       end if;
6527 
6528     if deletable = FALSE then
6529 
6530      OKE_API.SET_MESSAGE(p_app_name	=>'OKE',
6531      p_msg_name	=> 'OKE_DTS_NO_DELETE_ALLOWED',
6532        p_token1	=> 'TOKEN',
6533       p_token1_value  => l_message);
6534     -- notify caller of an error
6535       X_Return_Status := OKE_API.G_RET_STS_ERROR;
6536 
6537        end if;
6538 end  check_deliverable_in_progress;
6539  -----------------------------
6540 begin
6541   check_opn_code(p_deliverable_id 	=> p_deliverable_id ,
6542    x_return_status	=> l_return_status);
6543 
6544   If l_return_status <> OKE_API.G_RET_STS_SUCCESS Then
6545       If x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR Then
6546   	     x_return_status := l_return_status;
6547       End If;
6548     End If;
6549 
6550  check_deliverable_in_progress(p_deliverable_id 	=> p_deliverable_id ,
6551    x_return_status	=> l_return_status);
6552 
6553  If l_return_status <> OKE_API.G_RET_STS_SUCCESS Then
6554       If x_return_status <> OKE_API.G_RET_STS_UNEXP_ERROR Then
6555   	     x_return_status := l_return_status;
6556       End If;
6557     End If;
6558  return (x_return_status);
6559 
6560 exception
6561  WHEN OTHERS THEN
6562     -- store SQL error message on message stack
6563     OKE_API.SET_MESSAGE(
6564 		p_app_name		=>g_app_name,
6565 		p_msg_name		=>G_UNEXPECTED_ERROR,
6566 		p_token1		=>G_SQLCODE_TOKEN,
6567 		p_token1_value		=>SQLCODE,
6568 		p_token2		=>G_SQLERRM_TOKEN,
6569 		p_token2_value		=>SQLERRM);
6570 
6571     x_return_status := OKE_API.G_RET_STS_UNEXP_ERROR;
6572 
6573      RETURN(x_return_status);
6574 
6575 
6576 end Validate_delete_deliverable;
6577 
6578 /*
6579  * Delete Deliverable.
6580  * scope public
6581  * lifecycle active
6582  * displayname Delete Deliverable
6583  * category BUSINESS_ENTITY OKE_CONTRACT
6584  */
6585 
6586   PROCEDURE delete_deliverable(
6587     p_api_version                  IN NUMBER,
6588     p_init_msg_list                IN VARCHAR2 DEFAULT OKE_API.G_FALSE,
6589     x_return_status                OUT NOCOPY VARCHAR2,
6590     x_msg_count                    OUT NOCOPY NUMBER,
6591     x_msg_data                     OUT NOCOPY VARCHAR2,
6592     p_deliverable_id               IN NUMBER) IS
6593 
6594     l_api_name          CONSTANT VARCHAR2(30) := 'DELETE_DELIVERABLE';
6595     l_api_version       CONSTANT NUMBER   := 1.0;
6596     l_return_status     VARCHAR2(1)               := OKE_API.G_RET_STS_SUCCESS;
6597 
6598     l_del_tbl_in		    oke_deliverable_pvt.del_tbl_type;
6599 
6600      CURSOR c4 IS
6601   SELECT STANDARD_NOTES_ID FROM OKE_K_STANDARD_NOTES_B
6602   WHERE  DELIVERABLE_ID = p_deliverable_id;
6603 
6604 
6605     BEGIN
6606        -- call START_ACTIVITY to create savepoint, check compatibility
6607     -- and initialize message list
6608     l_return_status := OKE_API.START_ACTIVITY(
6609                         p_api_name      => l_api_name,
6610                         p_pkg_name      => g_pkg_name,
6611                         p_init_msg_list => p_init_msg_list,
6612                         l_api_version   => l_api_version,
6613                         p_api_version   => p_api_version,
6614                         p_api_type      => g_api_type,
6615                         x_return_status => x_return_status);
6616 
6617     -- check if activity started successfully
6618     If (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
6619        raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
6620     Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
6621        raise OKE_API.G_EXCEPTION_ERROR;
6622     End If;
6623 
6624        --validate mandatory fields
6625   IF ( p_deliverable_id IS NULL OR p_deliverable_id=OKE_API.G_MISS_NUM) THEN
6626     OKE_API.SET_MESSAGE(p_app_name		=>g_app_name,
6627 		p_msg_name		=>G_REQUIRED_VALUE,
6628 		p_token1		=>G_COL_NAME_TOKEN,
6629 		p_token1_value		=>'DELIVERABLE_ID');
6630     l_return_status := OKE_API.G_RET_STS_ERROR;
6631   END IF ;
6632 
6633     	If (l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
6634        		raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
6635     	Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
6636        		raise OKE_API.G_EXCEPTION_ERROR;
6637     	End If;
6638 
6639     ---validations
6640      	l_return_status:=Validate_delete_deliverable(p_deliverable_id );
6641 
6642     	If ( l_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
6643        		raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
6644     	Elsif (l_return_status = OKE_API.G_RET_STS_ERROR) then
6645        		raise OKE_API.G_EXCEPTION_ERROR;
6646     	End If;
6647 
6648 
6649        -- delete dependency
6650     delete from oke_dependencies
6651     where deliverable_id = p_deliverable_id;
6652 
6653       -- delete standard notes
6654     for cinfo in c4 loop
6655       delete from oke_k_standard_notes_b
6656       where standard_notes_id = cinfo.standard_notes_id;
6657 
6658       delete from oke_k_standard_notes_tl
6659       where standard_notes_id = cinfo.standard_notes_id;
6660     end loop;
6661 
6662       l_del_tbl_in(1).DELIVERABLE_ID := p_deliverable_id ;
6663 
6664        -- Stop workflow
6665       OKE_DTS_WORKFLOW.ABORT_PROCESS(L_DEL_TBL_IN(1).Deliverable_ID);
6666 
6667        -- delete deliverable
6668       OKE_CONTRACT_PVT.delete_deliverable (
6669         	p_api_version		=>	p_api_version,
6670     			p_init_msg_list		=>	p_init_msg_list,
6671     			x_return_status		=>	x_return_status,
6672     			x_msg_count		=>	x_msg_count,
6673    			  x_msg_data		=>	x_msg_data,
6674          	p_del_tbl		=> l_del_tbl_in);
6675 
6676 
6677     	If (x_return_status = OKE_API.G_RET_STS_UNEXP_ERROR) then
6678        		raise OKE_API.G_EXCEPTION_UNEXPECTED_ERROR;
6679     	Elsif (x_return_status = OKE_API.G_RET_STS_ERROR) then
6680        		raise OKE_API.G_EXCEPTION_ERROR;
6681     	End If;
6682 
6683 
6684     OKE_API.END_ACTIVITY(       x_msg_count     => x_msg_count,
6685                                 x_msg_data      => x_msg_data);
6686   EXCEPTION
6687     when OKE_API.G_EXCEPTION_ERROR then
6688       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
6689 			p_api_name  => l_api_name,
6690 			p_pkg_name  => g_pkg_name,
6691 			p_exc_name  => 'OKE_API.G_RET_STS_ERROR',
6692 			x_msg_count => x_msg_count,
6693 			x_msg_data  => x_msg_data,
6694 			p_api_type  => g_api_type);
6695 
6696     when OKE_API.G_EXCEPTION_UNEXPECTED_ERROR then
6697       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
6698 			p_api_name  => l_api_name,
6699 			p_pkg_name  => g_pkg_name,
6700 			p_exc_name  => 'OKE_API.G_RET_STS_UNEXP_ERROR',
6701 			x_msg_count => x_msg_count,
6702 			x_msg_data  => x_msg_data,
6703 			p_api_type  => g_api_type);
6704 
6705     when OTHERS then
6706       x_return_status := OKE_API.HANDLE_EXCEPTIONS(
6707 			p_api_name  => l_api_name,
6708 			p_pkg_name  => g_pkg_name,
6709 			p_exc_name  => 'OTHERS',
6710 			x_msg_count => x_msg_count,
6711 			x_msg_data  => x_msg_data,
6712 			p_api_type  => g_api_type);
6713 
6714     END delete_deliverable;
6715 
6716 
6717 
6718 END OKE_IMPORT_CONTRACT_PUB;