DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKC_EXTEND_PUB

Source


1 PACKAGE BODY OKC_EXTEND_PUB as
2 /* $Header: OKCPEXTB.pls 120.0 2005/05/25 18:01:32 appldev noship $ */
3 	l_debug VARCHAR2(1) := NVL(FND_PROFILE.VALUE('AFLOG_ENABLED'),'N');
4 
5 FUNCTION is_k_extend_allowed(p_chr_id IN NUMBER,p_sts_code IN VARCHAR2) RETURN BOOLEAN IS
6 BEGIN
7    return OKC_EXTEND_PVT.is_k_extend_allowed(p_chr_id,p_sts_code);
8 END;
9 
10 FUNCTION is_kl_extend_allowed(p_cle_id IN NUMBER,p_sts_code IN VARCHAR2) RETURN BOOLEAN IS
11 BEGIN
12    return OKC_EXTEND_PVT.is_kl_extend_allowed(p_cle_id,p_sts_code);
13 END;
14 
15 PROCEDURE extend_chr(p_api_version                  IN  NUMBER,
16         	           p_init_msg_list                IN  VARCHAR2 ,
17                      x_return_status                OUT NOCOPY VARCHAR2,
18                      x_msg_count                    OUT NOCOPY NUMBER,
19                      x_msg_data                     OUT NOCOPY VARCHAR2,
20 	                p_extend_in_parameters_tbl     IN  extend_in_parameters_tbl,
21 				 p_do_commit                    IN  VARCHAR2
22                     )is
23 
24     l_return_status varchar2(1) := OKC_API.G_RET_STS_SUCCESS;
25 
26 BEGIN
27 
28   OKC_API.init_msg_list(p_init_msg_list);
29 
30   x_return_status := OKC_API.G_RET_STS_SUCCESS;
31 
32   FOR i in p_extend_in_parameters_tbl.first..p_extend_in_parameters_tbl.last LOOP
33 
34 
35    if p_extend_in_parameters_tbl.exists(i) then
36 
37        OKC_EXTEND_PUB.extend_chr(p_api_version              => 1,
38                                  p_init_msg_list            => OKC_API.G_FALSE,
39                                  x_return_status            => l_return_status,
40                                  x_msg_count                => x_msg_count,
41                                  x_msg_data                 => x_msg_data,
42                                  p_extend_in_parameters_rec => p_extend_in_parameters_tbl(i),
43 						   p_do_commit                => p_do_commit);
44 
45 
46      IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
47        IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
48           x_return_status := l_return_status;
49           raise G_EXCEPTION_HALT_VALIDATION;
50       ELSE
51           x_return_status := l_return_status;
52       END IF;
53     END IF;
54 
55   END IF; -- if exists
56 
57   -- Bug 3658108
58   OKC_CVM_PVT.clear_g_transaction_id;
59 
60  END LOOP;
61  IF P_DO_COMMIT = OKC_API.G_TRUE THEN
62    COMMIT;
63  END IF;
64 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
65 
66 EXCEPTION
67 WHEN G_EXCEPTION_HALT_VALIDATION THEN
68 NULL;
69 WHEN OTHERS THEN
70    OKC_API.set_message(p_app_name      => g_app_name,
71                        p_msg_name      => g_unexpected_error,
72                        p_token1        => g_sqlcode_token,
73                        p_token1_value  => sqlcode,
74                        p_token2        => g_sqlerrm_token,
75                        p_token2_value  => sqlerrm);
76    x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
77 END;
78 
79 PROCEDURE extend_chr( p_api_version                  IN  NUMBER,
80       	            p_init_msg_list                IN  VARCHAR2 ,
81                       x_return_status                OUT NOCOPY VARCHAR2,
82                       x_msg_count                    OUT NOCOPY NUMBER,
83                       x_msg_data                     OUT NOCOPY VARCHAR2,
84 	                 p_extend_in_parameters_rec     IN  extend_in_parameters_rec,
85 				  p_do_commit                    IN VARCHAR2
86   	               ) is
87 
88  l_return_status varchar2(1) := OKC_API.G_RET_STS_SUCCESS;
89  l_extend_in_parameters_rec  extend_in_parameters_rec := p_extend_in_parameters_rec;
90  l_api_name constant varchar2(30) := 'extend_chr';
91  l_chr_id number;
92 BEGIN
93 
94    x_return_status := OKC_API.G_RET_STS_SUCCESS;
95 
96    l_return_status := OKC_API.START_ACTIVITY(l_api_name,
97                                p_init_msg_list,
98                                '_PUB',
99                                x_return_status);
100 
101    IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
102      raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
103    ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
104      raise OKC_API.G_EXCEPTION_ERROR;
105    END IF;
106 
107  -- Call user hook FOR BEFORE
108     g_extend_in_parameters_rec := l_extend_in_parameters_rec;
109 
110     OKC_UTIL.call_user_hook(l_return_status, g_pkg_name, l_api_name, 'B');
111 
112     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
113       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
114     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
115       raise OKC_API.G_EXCEPTION_ERROR;
116     END IF;
117 
118   l_extend_in_parameters_rec 		   := g_extend_in_parameters_rec;
119   l_extend_in_parameters_rec.p_contract_id := p_extend_in_parameters_rec.p_contract_id;
120 
121 
122          OKC_EXTEND_PVT.extend_chr(p_api_version               => 1,
123                                    p_init_msg_list             => OKC_API.G_FALSE,
124                                    x_return_status             => l_return_status,
125                                    x_msg_count                 => x_msg_count,
126                                    x_msg_data                  => x_msg_data,
127                                    p_extend_in_parameters_rec  => l_extend_in_parameters_rec );
128 
129 
130         IF l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR THEN
131            RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
132         ELSIF l_return_status = OKC_API.G_RET_STS_ERROR THEN
133            RAISE OKC_API.G_EXCEPTION_ERROR;
134         END IF;
135 
136 
137     OKC_UTIL.call_user_hook(l_return_status, g_pkg_name, l_api_name, 'A');
138 
139     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
140       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
141     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
142       raise OKC_API.G_EXCEPTION_ERROR;
143     END IF;
144 
145  IF P_DO_COMMIT = OKC_API.G_TRUE THEN
146    COMMIT;
147  END IF;
148 
149  OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
150 
151 EXCEPTION
152 WHEN OKC_API.G_EXCEPTION_ERROR THEN
153  x_return_status := OKC_API.HANDLE_EXCEPTIONS
154                        (l_api_name,
155                         G_PKG_NAME,
156                       'OKC_API.G_RET_STS_ERROR',
157                         x_msg_count,
158                         x_msg_data,
159                         '_PUB');
160 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
161 
162  x_return_status := OKC_API.HANDLE_EXCEPTIONS
163                        (l_api_name,
164                         G_PKG_NAME,
165                        'OKC_API.G_RET_STS_UNEXP_ERROR',
166                         x_msg_count,
167                         x_msg_data,
168                         '_PUB');
169 WHEN OTHERS THEN
170   x_return_status := OKC_API.HANDLE_EXCEPTIONS
171                        (l_api_name,
172                         G_PKG_NAME,
173                         'OTHERS',
174                         x_msg_count,
175                         x_msg_data,
176                         '_PUB');
177 end;
178 
179 PROCEDURE validate_chr( p_api_version                  IN NUMBER,
180        	              p_init_msg_list                IN VARCHAR2 ,
181                         x_return_status                OUT NOCOPY VARCHAR2,
182                         x_msg_count                    OUT NOCOPY NUMBER,
183                         x_msg_data                     OUT NOCOPY VARCHAR2,
184 	                   p_extend_in_parameters_tbl 	IN extend_in_parameters_tbl ) is
185 
186  l_return_status  VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
187 
188  BEGIN
189 
190     OKC_API.init_msg_list(p_init_msg_list);
191 
192     x_return_status := OKC_API.G_RET_STS_SUCCESS;
193 
194   FOR i in p_extend_in_parameters_tbl.first..p_extend_in_parameters_tbl.last
195   LOOP
196 
197    IF p_extend_in_parameters_tbl.exists(i) THEN
198 
199      OKC_EXTEND_PVT.validate_chr(p_api_version              => p_api_version,
200                                  p_init_msg_list            => OKC_API.G_FALSE,
201                                  x_return_status            => l_return_status,
202                                  x_msg_count                => x_msg_count,
203                                  x_msg_data                 => x_msg_data,
204                                  p_extend_in_parameters_rec => p_extend_in_parameters_tbl(i) );
205 
206      IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
207        IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
208           x_return_status := l_return_status;
209           raise G_EXCEPTION_HALT_VALIDATION;
210       ELSE
211           x_return_status := l_return_status;
212       END IF;
213     END IF;
214 
215    END IF; -- if exists
216  END LOOP;
217 EXCEPTION
218 WHEN G_EXCEPTION_HALT_VALIDATION THEN
219 NULL;
220 WHEN OTHERS THEN
221    OKC_API.set_message(p_app_name      => g_app_name,
222                        p_msg_name      => g_unexpected_error,
223                        p_token1        => g_sqlcode_token,
224                        p_token1_value  => sqlcode,
225                        p_token2        => g_sqlerrm_token,
226                        p_token2_value  => sqlerrm);
227    x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
228 end;
229 
230 
231 PROCEDURE VALIDATE_CHR( p_api_version                  IN  NUMBER,
232        	              p_init_msg_list                IN  VARCHAR2 ,
233                         x_return_status                OUT NOCOPY VARCHAR2,
234                         x_msg_count                    OUT NOCOPY NUMBER,
235                         x_msg_data                     OUT NOCOPY VARCHAR2,
236 	                   p_extend_in_parameters_rec     IN  extend_in_parameters_rec ) is
237 BEGIN
238 
239    OKC_EXTEND_PVT.validate_chr(p_api_version              => p_api_version,
240                                p_init_msg_list            => OKC_API.G_FALSE,
241                                x_return_status            => x_return_status,
242                                x_msg_count                => x_msg_count,
243                                x_msg_data                 => x_msg_data,
244                                p_extend_in_parameters_rec => p_extend_in_parameters_rec );
245 
246 EXCEPTION
247 WHEN OTHERS THEN
248    OKC_API.set_message(p_app_name      => g_app_name,
249                        p_msg_name      => g_unexpected_error,
250                        p_token1        => g_sqlcode_token,
251                        p_token1_value  => sqlcode,
252                        p_token2        => g_sqlerrm_token,
253                        p_token2_value  => sqlerrm);
254 
255    x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
256 end;
257 
258 PROCEDURE extend_cle(p_api_version                  IN NUMBER,
259         	     p_init_msg_list                IN VARCHAR2 ,
260                      x_return_status                OUT NOCOPY VARCHAR2,
261                      x_msg_count                    OUT NOCOPY NUMBER,
262                      x_msg_data                     OUT NOCOPY VARCHAR2,
263 	             p_extend_in_parameters_tbl     IN extend_in_cle_tbl,
264 		     p_do_commit                    IN VARCHAR2
265                     ) IS
266 
267   l_return_status varchar2(1) := OKC_API.G_RET_STS_SUCCESS;
268   rec_count number := 0;
269   p_end_date_latest date;
270   l_extend_in_parameters_rec okc_extend_pub.extend_in_parameters_rec;
271   l_api_name constant varchar2(30) := 'extend_cle_tbl';
272   l number;
273   p_hdr_end_date date;
274   l_new_end_date date;
275   l_sts_code Varchar2(30);
276   l_status_code VARCHAR2(30);
277 
278   l_chr_rec OKC_CONTRACT_PUB.chrv_rec_type;
279   i_chr_rec OKC_CONTRACT_PUB.chrv_rec_type;
280 
281   cursor cur_hdr_enddate(p_cle_id number) is
282   select k.id,k.end_date,k.object_version_number,k.contract_number,
283          k.contract_number_modifier, k.sts_code
284     from okc_k_headers_b k,
285          okc_k_lines_b cle
286    where cle.id = p_cle_id
287      and cle.dnz_chr_id = k.id;
288 
289   CURSOR cur_status(p_sts_code varchar2) is
290   SELECT ste_code
291     FROM okc_statuses_b
292    WHERE code = p_sts_code;
293 
294 BEGIN
295 
296  okc_api.init_msg_list(p_init_msg_list);
297 
298  x_return_status := OKC_API.G_RET_STS_SUCCESS;
299 
300  l_return_status := OKC_API.START_ACTIVITY( l_api_name,
301                                               p_init_msg_list,
302                                               '_PUB',
303                                               x_return_status);
304 
305    IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
306      raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
307    ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
308      raise OKC_API.G_EXCEPTION_ERROR;
309    END IF;
310 
311  OPEN cur_hdr_enddate(p_extend_in_parameters_tbl(1).p_cle_id);
312  FETCH cur_hdr_enddate into l_extend_in_parameters_rec.p_contract_id,p_hdr_end_date,l_extend_in_parameters_rec.p_object_version_number,l_extend_in_parameters_rec.p_contract_number,l_extend_in_parameters_rec.p_contract_modifier, l_sts_code;
313  CLOSE cur_hdr_enddate;
314 
315  FOR i in p_extend_in_parameters_tbl.first..p_extend_in_parameters_tbl.last LOOP
316 
317        -- If the lines are perpetual, set the end date for contract to null
318 	 If p_extend_in_parameters_tbl(i).p_perpetual_flag = OKC_API.G_TRUE Then
319          p_end_date_latest := Null;
320          Exit;
321        End If;
322 
323        rec_count := rec_count + 1;
324 
325        IF p_extend_in_parameters_tbl(i).p_end_date is not null THEN
326          l_new_end_date := p_extend_in_parameters_tbl(i).p_end_date;
327        else
328          l_new_end_date := okc_time_util_pub.get_enddate(p_extend_in_parameters_tbl(i).p_orig_end_date + 1,
329 	                           p_extend_in_parameters_tbl(i).p_uom_code,
330 	                           p_extend_in_parameters_tbl(i).p_duration);
331        end IF;
332 
333        IF rec_count = 1 THEN
334           p_end_date_latest :=l_new_end_date;
335        ELSE
336           IF l_new_end_date > p_end_date_latest THEN
337             p_end_date_latest := l_new_end_date;
338          END IF;
339        END IF;
340  END LOOP;
341 
342   -- The following IF changed for perpetual contracts
343   -- IF (p_end_date_latest is NOT NULL and p_end_date_latest > p_hdr_end_date) Or
344   IF (p_end_date_latest is NOT NULL and p_end_date_latest > p_hdr_end_date) Or
345      (p_end_date_latest is null and p_hdr_end_date is Not Null) THEN
346 
347      OKC_EXTEND_PVT.g_called_from := 'LINES';
348 
349      l_extend_in_parameters_rec.p_orig_end_date := p_hdr_end_date;
350      l_extend_in_parameters_rec.p_end_date      := p_end_date_latest;
351 
352      -- Make the contract perpetual if line is perpetual
353      If p_end_date_latest Is Null Then
354        l_extend_in_parameters_rec.p_perpetual_flag := OKC_API.G_TRUE;
355      Else
356        l_extend_in_parameters_rec.p_perpetual_flag := OKC_API.G_FALSE;
357      End If;
358 
359     l_chr_rec.id                    := l_extend_in_parameters_rec.p_contract_id;
360     l_chr_rec.object_version_number := l_extend_in_parameters_rec.p_object_version_number;
361     l_chr_rec.end_date              := p_end_date_latest;
362     l_chr_rec.sts_code := l_sts_code;
363    IF p_end_date_latest >= trunc(sysdate) THEN
364       OPEN cur_status(l_chr_rec.sts_code);
365       FETCH cur_status into l_status_code;
366       CLOSE cur_status;
367 
368       IF l_status_code = 'EXPIRED' then
369 
370          OKC_ASSENT_PUB.get_default_status( x_return_status => l_return_status,
371                                          p_status_type   => 'ACTIVE',
372                                          x_status_code   => l_status_code );
373 
374         IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
375           raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
376         ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
377           raise OKC_API.G_EXCEPTION_ERROR;
378         END IF;
379         l_chr_rec.sts_code := l_status_code;
380         l_chr_rec.old_sts_code := 'EXPIRED';
381         l_chr_rec.old_ste_code := 'EXPIRED';
382         l_chr_rec.new_sts_code := l_status_code;
383         l_chr_rec.new_ste_code := 'ACTIVE';
384      END IF;
385  END IF;
386 	  OKC_CONTRACT_PUB.update_contract_header ( p_api_version    => 1,
387 	                                   p_init_msg_list  => OKC_API.G_FALSE,
388 	                                   x_return_status  => l_return_status,
389 	                                   x_msg_count      => x_msg_count,
390 	                                   x_msg_data       => x_msg_data,
391 				    p_restricted_update => okc_api.g_true,
392 	                                   p_chrv_rec       => l_chr_rec,
393 	                                   x_chrv_rec       => i_chr_rec  );
394 
395         IF l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR THEN
396           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
397         ELSIF l_return_status = OKC_API.G_RET_STS_ERROR THEN
398           RAISE OKC_API.G_EXCEPTION_ERROR;
399         END IF;
400 
401 	OKC_EXTEND_PUB.extend_chr(p_api_version              => 1,
402                                p_init_msg_list            => OKC_API.G_FALSE,
403                                x_return_status            => l_return_status,
404                                x_msg_count                => x_msg_count,
405                                x_msg_data                 => x_msg_data,
406                                p_extend_in_parameters_rec => l_extend_in_parameters_rec );
407 
408        OKC_EXTEND_PVT.g_called_from := 'HEADER';
409 
410       IF l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR THEN
411          RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
412       ELSIF l_return_status = OKC_API.G_RET_STS_ERROR THEN
413          RAISE OKC_API.G_EXCEPTION_ERROR;
414        END IF;
415 
416   END IF;
417 
418 --san this needs to be set as g_lines_count is a global variable, so if not reset everytime
419 -- it keeps value 1 and next time extend is called, it does not go to
420 --validation of hdr even once
421 
422   OKC_EXTEND_PVT.g_lines_count :=0;
423 
424  FOR i in p_extend_in_parameters_tbl.first..p_extend_in_parameters_tbl.last LOOP
425 
426    IF p_extend_in_parameters_tbl.exists(i) then
427 
428      OKC_EXTEND_PUB.extend_cle(p_api_version              => p_api_version,
429                                p_init_msg_list            => OKC_API.G_FALSE,
430                                x_return_status            => l_return_status,
431                                x_msg_count                => x_msg_count,
432                                x_msg_data                 => x_msg_data,
433                                p_extend_in_parameters_rec => p_extend_in_parameters_tbl(i));
434 
435        IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
436          RAISE OKC_API.g_exception_unexpected_error;
437        ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
438          raise OKC_API.g_exception_error;
439        END IF;
440 
441   END IF; -- if exists
442 
443  END LOOP;
444 IF p_do_commit = okc_api.g_true then
445  COMMIT;
446 END IF;
447 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
448 EXCEPTION
449 WHEN OKC_API.G_EXCEPTION_ERROR THEN
450  x_return_status := OKC_API.HANDLE_EXCEPTIONS
451                        (l_api_name,
452                         G_PKG_NAME,
453                        'OKC_API.G_RET_STS_ERROR',
454                         x_msg_count,
455                         x_msg_data,
456                         '_PUB');
457 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
458  x_return_status := OKC_API.HANDLE_EXCEPTIONS
459                        (l_api_name,
460                         G_PKG_NAME,
461                        'OKC_API.G_RET_STS_UNEXP_ERROR',
462                         x_msg_count,
463                         x_msg_data,
464                         '_PUB');
465 WHEN OTHERS THEN
466  x_return_status := OKC_API.HANDLE_EXCEPTIONS
467                        (l_api_name,
468                         G_PKG_NAME,
469                         'OTHERS',
470                         x_msg_count,
471                         x_msg_data,
472                         '_PUB');
473 END;
474 
475 PROCEDURE extend_cle( p_api_version                  IN  NUMBER,
476       	            p_init_msg_list                IN  VARCHAR2 ,
477                       x_return_status                OUT NOCOPY VARCHAR2,
478                       x_msg_count                    OUT NOCOPY NUMBER,
479                       x_msg_data                     OUT NOCOPY VARCHAR2,
480 	                 p_extend_in_parameters_rec     IN  extend_in_cle_rec,
481 				  p_do_commit                    IN VARCHAR2
482   	               ) is
483 
484  l_return_status varchar2(1) := OKC_API.G_RET_STS_SUCCESS;
485  l_extend_in_parameters_rec  extend_in_cle_rec := p_extend_in_parameters_rec;
486  l_api_name constant varchar2(30) := 'extend_cle';
487  l_chr_id number;
488 
489 BEGIN
490 
491    x_return_status := OKC_API.G_RET_STS_SUCCESS;
492 
493    l_return_status := OKC_API.START_ACTIVITY(l_api_name,
494                                              p_init_msg_list,
495                                              '_PUB',
496                                               x_return_status);
497 
498    IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
499      raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
500    ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
501      raise OKC_API.G_EXCEPTION_ERROR;
502    END IF;
503 
504  -- Call user hook FOR BEFORE
505     g_extend_in_cle_rec := l_extend_in_parameters_rec;
506 
507     OKC_UTIL.call_user_hook(x_return_status, g_pkg_name, l_api_name, 'B');
508 
509     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
510       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
511     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
512       raise OKC_API.G_EXCEPTION_ERROR;
513     END IF;
514 
515     l_extend_in_parameters_rec := g_extend_in_cle_rec;
516     l_extend_in_parameters_rec.p_cle_id := p_extend_in_parameters_rec.p_cle_id;
517 
518          OKC_EXTEND_PVT.extend_cle(p_api_version              => p_api_version,
519                                    p_init_msg_list            => OKC_API.G_FALSE,
520                                    x_return_status            => l_return_status,
521                                    x_msg_count                => x_msg_count,
522                                    x_msg_data                 => x_msg_data,
523                                    p_extend_in_parameters_rec => l_extend_in_parameters_rec );
524 
525 
526         IF l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR THEN
527            RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
528         ELSIF l_return_status = OKC_API.G_RET_STS_ERROR THEN
529            RAISE OKC_API.G_EXCEPTION_ERROR;
530         END IF;
531 
532 
533     OKC_UTIL.call_user_hook(l_return_status, g_pkg_name, l_api_name, 'A');
534 
535     IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
536       raise OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
537     ELSIF (l_return_status = OKC_API.G_RET_STS_ERROR) THEN
538       raise OKC_API.G_EXCEPTION_ERROR;
539     END IF;
540 
541 IF p_do_commit = okc_api.g_true then
542  commit;
543 END IF;
544 OKC_API.END_ACTIVITY(x_msg_count, x_msg_data);
545 
546 EXCEPTION
547 WHEN OKC_API.G_EXCEPTION_ERROR THEN
548  x_return_status := OKC_API.HANDLE_EXCEPTIONS
549                        (l_api_name,
550                         G_PKG_NAME,
551                       'OKC_API.G_RET_STS_ERROR',
552                         x_msg_count,
553                         x_msg_data,
554                         '_PUB');
555 WHEN OKC_API.G_EXCEPTION_UNEXPECTED_ERROR THEN
556 
557  x_return_status := OKC_API.HANDLE_EXCEPTIONS
558                        (l_api_name,
559                         G_PKG_NAME,
560                        'OKC_API.G_RET_STS_UNEXP_ERROR',
561                         x_msg_count,
562                         x_msg_data,
563                         '_PUB');
564 WHEN OTHERS THEN
565   x_return_status := OKC_API.HANDLE_EXCEPTIONS
566                        (l_api_name,
567                         G_PKG_NAME,
568                         'OTHERS',
569                         x_msg_count,
570                         x_msg_data,
571                         '_PUB');
572 end;
573 
574 PROCEDURE validate_cle( p_api_version                  IN  NUMBER,
575        	              p_init_msg_list                IN  VARCHAR2 ,
576                         x_return_status                OUT NOCOPY VARCHAR2,
577                         x_msg_count                    OUT NOCOPY NUMBER,
578                         x_msg_data                     OUT NOCOPY VARCHAR2,
579 	                   p_extend_in_parameters_tbl 	IN  extend_in_cle_tbl) is
580 
581  l_return_status  VARCHAR2(1) := OKC_API.G_RET_STS_SUCCESS;
582 
583  BEGIN
584 
585   OKC_API.init_msg_list(p_init_msg_list);
586 
587   x_return_status := OKC_API.G_RET_STS_SUCCESS;
588 
589 --san this needs to be set as g_lines_count is a global variable, so if not reset everytime
590 -- it keeps value 1 and next time extend is called, it does not go to
591 --validation of hdr even once
592   OKC_EXTEND_PVT.g_lines_count :=0;
593 
594   FOR i in p_extend_in_parameters_tbl.first..p_extend_in_parameters_tbl.last LOOP
595 
596    IF p_extend_in_parameters_tbl.exists(i) THEN
597 
598      OKC_EXTEND_PUB.validate_cle(p_api_version              => p_api_version,
599                                  p_init_msg_list            => OKC_API.G_FALSE,
600                                  x_return_status            => l_return_status,
601                                  x_msg_count                => x_msg_count,
602                                  x_msg_data                 => x_msg_data,
603                                  p_extend_in_parameters_rec => p_extend_in_parameters_tbl(i) );
604 
605      IF (l_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
606        IF (l_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
607           x_return_status := l_return_status;
608           raise G_EXCEPTION_HALT_VALIDATION;
609       ELSE
610           x_return_status := l_return_status;
611       END IF;
612     END IF;
613   END IF; --if exists
614  END LOOP;
615 EXCEPTION
616 WHEN G_EXCEPTION_HALT_VALIDATION THEN
617 NULL;
618 WHEN OTHERS THEN
619    OKC_API.set_message(p_app_name      => g_app_name,
620                        p_msg_name      => g_unexpected_error,
621                        p_token1        => g_sqlcode_token,
622                        p_token1_value  => sqlcode,
623                        p_token2        => g_sqlerrm_token,
624                        p_token2_value  => sqlerrm);
625    x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
626 end;
627 
628 
629 PROCEDURE validate_cle( p_api_version                  IN  NUMBER,
630        	              p_init_msg_list                IN  VARCHAR2 ,
631                         x_return_status                OUT NOCOPY VARCHAR2,
632                         x_msg_count                    OUT NOCOPY NUMBER,
633                         x_msg_data                     OUT NOCOPY VARCHAR2,
634 	                   p_extend_in_parameters_rec     IN  extend_in_cle_rec ) is
635 BEGIN
636 
637    OKC_EXTEND_PVT.validate_cle(p_api_version              => p_api_version,
638                                p_init_msg_list            => OKC_API.G_FALSE,
639                                x_return_status            => x_return_status,
640                                x_msg_count                => x_msg_count,
641                                x_msg_data                 => x_msg_data,
642                                p_extend_in_parameters_rec => p_extend_in_parameters_rec );
643 
644 EXCEPTION
645 WHEN OTHERS THEN
646    OKC_API.set_message(p_app_name      => g_app_name,
647                        p_msg_name      => g_unexpected_error,
648                        p_token1        => g_sqlcode_token,
649                        p_token1_value  => sqlcode,
650                        p_token2        => g_sqlerrm_token,
651                        p_token2_value  => sqlerrm);
652 
653    x_return_status := OKC_API.G_RET_STS_UNEXP_ERROR;
654 end;
655 
656 end OKC_EXTEND_PUB;