DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKC_REP_CONTRACT_PROCESS_PVT

Source


1 PACKAGE BODY OKC_REP_CONTRACT_PROCESS_PVT AS
2 /* $Header: OKCVREPPROCSB.pls 120.19.12020000.23 2013/06/04 11:56:03 nbingi ship $ */
3 
4   ---------------------------------------------------------------------------
5   -- GLOBAL CONSTANTS
6   ---------------------------------------------------------------------------
7   G_PARTY_TYPE_INTERNAL   CONSTANT   VARCHAR2(12) := 'INTERNAL_ORG';
8   G_REP_CONTRACT   CONSTANT   VARCHAR2(30) := 'OKC_REP_CONTRACT';
9 
10   ---------------------------------------------------------------------------
11   -- START: Procedures and Functions
12   ---------------------------------------------------------------------------
13 
14 -- Start of comments
15 --API name      : submit_contract_for_approval
16 --Type          : Private.
17 --Function      : Submits contract for approval
18 --Pre-reqs      : None.
19 --Parameters    :
20 --IN            : p_api_version         IN NUMBER       Required
21 --              : p_init_msg_list       IN VARCHAR2     Optional
22 --                   Default = FND_API.G_FALSE
23 --              : p_contract_id         IN NUMBER       Required
24 --                   Contract ID of the contract to be submitted for approval
25 --              : p_contract_version    IN NUMBER       Required
26 --                   Contract Version of the contract to be submitted for approval
27 --OUT           : x_return_status       OUT  VARCHAR2(1)
28 --              : x_msg_count           OUT  NUMBER
29 --              : x_msg_data            OUT  VARCHAR2(2000)
30 --Note          :
31 -- End of comments
32 
33 PROCEDURE submit_contract_for_approval(
34         p_api_version                  IN NUMBER,
35         p_init_msg_list                IN VARCHAR2,
36         p_contract_id                  IN NUMBER,
37         p_contract_version             IN NUMBER,
38         x_return_status                OUT NOCOPY VARCHAR2,
39         x_msg_count                    OUT NOCOPY NUMBER,
40         x_msg_data                     OUT NOCOPY VARCHAR2
41 
42   ) IS
43     l_api_name      VARCHAR2(30);
44     l_api_version       NUMBER;
45     l_user_key        wf_items.user_key%TYPE;
46     l_wf_sequence       wf_items.item_key%TYPE;
47     l_contract_number   OKC_REP_CONTRACTS_ALL.contract_number%TYPE;
48     l_contract_type     OKC_REP_CONTRACTS_ALL.contract_type%TYPE;
49     l_org_id            OKC_REP_CONTRACTS_ALL.org_id%TYPE;
50       l_contract_version  okc_rep_contracts_all.contract_version_num%TYPE;
51         l_wf_name  wf_items.item_type%TYPE;
52 
53     CURSOR contract_csr IS
54         SELECT contract_number,CONTRACT_TYPE,ORG_ID,contract_version_num
55         FROM okc_rep_contracts_all
56         WHERE contract_id = p_contract_id;
57 
58       CURSOR fetch_wf_name(p_contract_type varchar2) IS
59        SELECT approval_workflow_name FROM okc_bus_doc_types_b WHERE document_type= p_contract_type;
60 
61 
62   BEGIN
63 
64     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
65         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
66                 'Entered OKC_REP_WF_PVT.submit_contract');
67         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
68                 'Contract Id is: ' || p_contract_id);
69     END IF;
70     l_api_name := 'submit_contract_for_approval';
71     l_api_version := 1.0;
72   -- Standard Start of API savepoint
73     SAVEPOINT submit_contract_PVT;
74     -- Standard call to check for call compatibility.
75     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
76       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
77     END IF;
78     -- Initialize message list if p_init_msg_list is set to TRUE.
79     IF FND_API.to_Boolean( p_init_msg_list ) THEN
80       FND_MSG_PUB.initialize;
81     END IF;
82     --  Initialize API return status to success
83     x_return_status := FND_API.G_RET_STS_SUCCESS;
84 
85     SELECT OKC_REP_WF_S.nextval INTO l_wf_sequence FROM dual;
86     -- Get contract number
87     OPEN contract_csr;
88     FETCH contract_csr into l_contract_number,l_contract_type,l_org_id,l_contract_version;
89     IF(contract_csr%NOTFOUND) THEN
90         IF (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
91             FND_LOG.STRING(FND_LOG.LEVEL_EXCEPTION ,
92                     G_MODULE||l_api_name,
93                                  'Invalid Contract Id: '|| p_contract_id);
94         END IF;
95         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
96                             p_msg_name     => G_INVALID_CONTRACT_ID_MSG,
97                             p_token1       => G_CONTRACT_ID_TOKEN,
98                             p_token1_value => to_char(p_contract_id));
99         RAISE FND_API.G_EXC_ERROR;
100         -- RAISE NO_DATA_FOUND;
101     END IF;
102 
103 
104 
105        OPEN   fetch_wf_name(l_contract_type);
106        FETCH  fetch_wf_name INTO l_wf_name;
107        CLOSE  fetch_wf_name;
108 
109          IF l_wf_name IS NULL THEN
110        IF (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
111             FND_LOG.STRING(FND_LOG.LEVEL_EXCEPTION ,
112                     G_MODULE||l_api_name,
113                                  'Workflow not associated for the Document');
114         END IF;
115 
116         RAISE FND_API.G_EXC_ERROR;
117 
118        END IF;
119 
120 
121     CLOSE contract_csr;
122 
123   IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
124         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
125                 'Calling OKC_REP_UTIL_PVT.change_contract_status');
126     END IF;
127     -- Update the contract status and add a record in OKC_REP_CON_STATUS_HIST table.
128     OKC_REP_UTIL_PVT.change_contract_status(
129       p_api_version         => 1.0,
130       p_init_msg_list       => FND_API.G_FALSE,
131       p_contract_id         => p_contract_id,
132       p_contract_version    => p_contract_version,
133       p_status_code         => G_STATUS_PENDING_APPROVAL,
134       p_user_id             => fnd_global.user_id,
135       p_note                => NULL,
136     x_msg_data            => x_msg_data,
137       x_msg_count           => x_msg_count,
138       x_return_status       => x_return_status);
139     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
140         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
141                 'OKC_REP_UTIL_PVT.change_contract_status return status is: '
142           || x_return_status);
143     END IF;
144     -----------------------------------------------------
145     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
146       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
147     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
148       RAISE OKC_API.G_EXCEPTION_ERROR;
149     END IF;
150     --------------------------------------------------------
151 
152 
153     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
154         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
155                 'Calling OKC_REP_UTIL_PVT.add_approval_hist_record');
156     END IF;
157   -- Add a record in ONC_REP_CON_APPROVALS table.
158     OKC_REP_UTIL_PVT.add_approval_hist_record(
159       p_api_version         => 1.0,
160       p_init_msg_list       => FND_API.G_FALSE,
161       p_contract_id         => p_contract_id,
162       p_contract_version    => p_contract_version,
163       p_action_code         => G_ACTION_SUBMITTED,
164       p_user_id             => fnd_global.user_id,
165       p_note                => NULL,
166     x_msg_data            => x_msg_data,
167       x_msg_count           => x_msg_count,
168       x_return_status       => x_return_status);
169     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
170         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
171                 'OKC_REP_UTIL_PVT.add_approval_hist_record return status is: '
172           || x_return_status);
173     END IF;
174     -------------------------------------------------------
175     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
176       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
177     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
178       RAISE OKC_API.G_EXCEPTION_ERROR;
179     END IF;
180     --------------------------------------------------------
181   -- Get the user key
182    l_user_key := l_contract_number || ':' ||l_contract_type || ':' ||l_org_id|| ':' || l_wf_sequence;
183 
184 
185     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
186         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
187                 'Calling WF_ENGINE.createprocess l_wf_name '||l_wf_name);
188     END IF;
189 
190  IF l_wf_name IN ( G_APPROVAL_ITEM_TYPE , G_APP_ITEM_TYPE_2579) THEN
191 
192     WF_ENGINE.createprocess (
193                     itemtype => l_wf_name,
194                     itemkey  => l_wf_sequence,
195                     process  => G_APPROVAL_PROCESS);
196 
197 
198   IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
199         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
200                 'Calling WF_ENGINE.SetItemUserKey');
201         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
202                 'User key Value is: ' || l_user_key);
203     END IF;
204     WF_ENGINE.SetItemUserKey (
205                   itemtype => l_wf_name,
206                     itemkey  => l_wf_sequence,
207                     userkey  => l_user_key);
208 
209     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
210         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
211                 'Calling WF_ENGINE.SetItemOwner');
212     END IF;
213     WF_ENGINE.SetItemOwner (
214                   itemtype => l_wf_name,
215                     itemkey  => l_wf_sequence,
216                     owner    => fnd_global.user_name);
217 
218 
219     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
220           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
221                 'Calling WF_ENGINE.setitemattrnumber for CONTRACT_ID');
222     END IF;
223     WF_ENGINE.SetItemAttrText (
224                     itemtype =>  l_wf_name,
225                     itemkey  =>  l_wf_sequence,
226                     aname    => 'CONTRACT_ID',
227                     avalue   =>  p_contract_id);
228 
229     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
230           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
231                 'Calling WF_ENGINE.startprocess for REQUESTOR');
232     END IF;
233     WF_ENGINE.SetItemAttrText (
234                     itemtype  => l_wf_name,
235                     itemkey   => l_wf_sequence,
236                     aname     => 'REQUESTER',
237                     avalue    => fnd_global.user_name);
238 
239        IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
240           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
241                 'Calling WF_ENGINE.setitemattrnumber for CTX_USER_ID ' || fnd_global.user_id);
242       END IF;
243 
244       WF_ENGINE.SetItemAttrNumber (
245             itemtype =>  l_wf_name,
246             itemkey  =>  l_wf_sequence,
247             aname    =>  'CTX_USER_ID',
248             avalue   =>  fnd_global.user_id);
249 
250       IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
251           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
252                 'Calling WF_ENGINE.setitemattrnumber for CTX_APPL_ID ' || fnd_global.RESP_APPL_ID);
253       END IF;
254       WF_ENGINE.SetItemAttrNumber (
255             itemtype =>  l_wf_name,
256             itemkey  =>  l_wf_sequence,
257             aname    =>  'CTX_APPL_ID',
258             avalue   =>  fnd_global.RESP_APPL_ID);
259 
260       IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
261           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
262                 'Calling WF_ENGINE.setitemattrnumber for CTX_RESP_ID ' || fnd_global.resp_id);
263       END IF;
264       WF_ENGINE.SetItemAttrNumber (
265             itemtype =>  l_wf_name,
266             itemkey  =>  l_wf_sequence,
267             aname    =>  'CTX_RESP_ID',
268             avalue   =>  fnd_global.resp_id);
269 
270 
271     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
272         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
273                 'Calling WF_ENGINE.startprocess');
274     END IF;
275     WF_ENGINE.startprocess (
276                     itemtype => l_wf_name,
277                     itemkey  =>  l_wf_sequence);
278 
279 
280 
281   -- Update WF columns in OKC_REP_CONTRACTS_ALL
282   IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
283         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
284                 'Updating workflow columns in OKC_REP_CONTRACTS_ALL');
285     END IF;
286     UPDATE OKC_REP_CONTRACTS_ALL
287     SET wf_item_type = l_wf_name, wf_item_key = l_wf_sequence
288     WHERE contract_id=p_contract_id;
289 
290     COMMIT WORK;
291 
292 
293  ELSE
294 
295       IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
296         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
297                 'Calling the code hook to launch the custom approval workflow');
298     END IF;
299 
300      okc_rep_app_wf_code_hook.launch_custom_app_wf(
301                                                 p_contract_id=>p_contract_id,
302                                                 p_contract_version=>l_contract_version,
303                                                 p_contract_type=>l_contract_type,
304                                                 p_contract_number=>l_contract_number,
305                                                 p_org_id=>l_org_id,
306                                                 x_msg_data            => x_msg_data,
307                                                 x_msg_count           => x_msg_count,
308                                                 x_return_status       => x_return_status);
309 
310     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
311         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
312                 'okc_rep_app_wf_code_hook.launch_custom_app_wf return status is: '
313           || x_return_status);
314     END IF;
315     -------------------------------------------------------
316     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
317       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
318     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
319       RAISE OKC_API.G_EXCEPTION_ERROR;
320     END IF;
321 
322 
323      COMMIT WORK;
324 
325  END IF;
326 
327 
328     -- Standard call to get message count and if count is 1, get message info.
329     FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
330 
331   IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
332         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
333                 'Leaving OKC_REP_WF_PVT.submit_contract');
334     END IF;
335 
336     EXCEPTION
337       WHEN FND_API.G_EXC_ERROR THEN
338         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
339            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
340                  g_module || l_api_name,
341                  'Leaving check_contract_access:FND_API.G_EXC_ERROR Exception');
342         END IF;
343         --close cursors
344         IF (contract_csr%ISOPEN) THEN
345           CLOSE contract_csr ;
346         END IF;
347         ROLLBACK TO submit_contract_PVT;
348         x_return_status := FND_API.G_RET_STS_ERROR;
349         FND_MSG_PUB.Count_And_Get(
350         p_count =>  x_msg_count,
351         p_data  =>  x_msg_data
352         );
353 
354       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
355         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
356            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
357                  g_module || l_api_name,
358                  'Leaving check_contract_access:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
359         END IF;
360         --close cursors
361         IF (contract_csr%ISOPEN) THEN
362           CLOSE contract_csr ;
363         END IF;
364         ROLLBACK TO submit_contract_PVT;
365         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
366         FND_MSG_PUB.Count_And_Get(
367         p_count =>  x_msg_count,
368         p_data  =>  x_msg_data
369         );
370 
371       WHEN OTHERS THEN
372         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
373            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
374                  g_module || l_api_name,
375                  'Leaving check_contract_access because of EXCEPTION: ' || sqlerrm);
376         END IF;
377         --close cursors
378         IF (contract_csr%ISOPEN) THEN
379           CLOSE contract_csr ;
380         END IF;
381         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
382                             p_msg_name     => G_UNEXPECTED_ERROR,
383                             p_token1       => G_SQLCODE_TOKEN,
384                             p_token1_value => sqlcode,
385                             p_token2       => G_SQLERRM_TOKEN,
386                             p_token2_value => sqlerrm);
387         ROLLBACK TO submit_contract_PVT;
388         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
389         FND_MSG_PUB.Count_And_Get(
390         p_count =>  x_msg_count,
391         p_data  =>  x_msg_data
392         );
393 
394   END submit_contract_for_approval;
395 
396 
397 
398 -- Start of comments
399 --API name      : delete_contacts
400 --Type          : Private.
401 --Function      : Deletes party contacts of a particular Contract
402 --Pre-reqs      : None.
403 --Parameters    :
404 --IN            : p_api_version         IN NUMBER       Required
405 --              : p_init_msg_list       IN VARCHAR2     Optional
406 --                   Default = FND_API.G_FALSE
407 --              : p_commit              IN VARCHAR2     Optional
408 --                   Default = FND_API.G_FALSE
409 --              : p_contract_id         IN NUMBER       Required
410 --                   Contract ID of the contract whose contacts are to be deleted
411 --OUT           : x_return_status       OUT  VARCHAR2(1)
412 --              : x_msg_count           OUT  NUMBER
413 --              : x_msg_data            OUT  VARCHAR2(2000)
414 --Note          :
415 -- End of comments
416   PROCEDURE delete_contacts(
417       p_api_version       IN  NUMBER,
418       p_init_msg_list     IN  VARCHAR2,
419       p_commit              IN VARCHAR2,
420       p_contract_id       IN  NUMBER,
421       x_msg_data          OUT NOCOPY  VARCHAR2,
422       x_msg_count         OUT NOCOPY  NUMBER,
423       x_return_status     OUT NOCOPY  VARCHAR2) IS
424 
425     l_api_name      VARCHAR2(30);
426     l_api_version       NUMBER;
427 
428   BEGIN
429 
430     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
431         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
432                 'Entered OKC_REP_CONTRACT_PROCESS_PVT.delete_contacts');
433         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
434                 'Contract Id is: ' || to_char(p_contract_id));
435     END IF;
436     l_api_name := 'delete_contacts';
437     l_api_version := 1.0;
438   -- Standard Start of API savepoint
439     SAVEPOINT delete_contacts_PVT;
440     -- Standard call to check for call compatibility.
441     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
442       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
443     END IF;
444     -- Initialize message list if p_init_msg_list is set to TRUE.
445     IF FND_API.to_Boolean( p_init_msg_list ) THEN
446       FND_MSG_PUB.initialize;
447     END IF;
448 
449     --  Initialize API return status to success
450     x_return_status := FND_API.G_RET_STS_SUCCESS;
451 
452     -- Delete the records. The records are locked in the delete_contract API.
453     DELETE FROM OKC_REP_PARTY_CONTACTS
454       WHERE CONTRACT_ID = p_CONTRACT_ID;
455 
456     -- Standard check of p_commit
457     IF FND_API.To_Boolean( p_commit ) THEN
458       COMMIT WORK;
459     END IF;
460 
461     -- Standard call to get message count and if count is 1, get message info.
462     FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
463 
464   IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
465         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
466                 'Leaving OKC_REP_CONTRACT_PROCESS_PVT.delete_contacts');
467     END IF;
468 
469 
470     EXCEPTION
471       WHEN FND_API.G_EXC_ERROR THEN
472         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
473            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
474                  g_module || l_api_name,
475                  'Leaving delete_contacts:FND_API.G_EXC_ERROR Exception');
476         END IF;
477         ROLLBACK TO delete_contacts_PVT;
478         x_return_status := FND_API.G_RET_STS_ERROR;
479         FND_MSG_PUB.Count_And_Get(
480         p_count =>  x_msg_count,
481         p_data  =>  x_msg_data
482         );
483 
484       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
485         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
486            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
487                  g_module || l_api_name,
488                  'Leaving delete_contacts:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
489         END IF;
490         ROLLBACK TO delete_contacts_PVT;
491         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
492         FND_MSG_PUB.Count_And_Get(
493         p_count =>  x_msg_count,
494         p_data  =>  x_msg_data
495         );
496 
497       WHEN OTHERS THEN
498         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
499            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
500                  g_module || l_api_name,
501                  'Leaving delete_contacts because of EXCEPTION: ' || sqlerrm);
502         END IF;
503         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
504                             p_msg_name     => G_UNEXPECTED_ERROR,
505                             p_token1       => G_SQLCODE_TOKEN,
506                             p_token1_value => sqlcode,
507                             p_token2       => G_SQLERRM_TOKEN,
508                             p_token2_value => sqlerrm);
509         ROLLBACK TO delete_contacts_PVT;
510         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
511         FND_MSG_PUB.Count_And_Get(
512         p_count =>  x_msg_count,
513         p_data  =>  x_msg_data
514         );
515   END delete_contacts;
516 
517 
518 -- Start of comments
519 --API name      : delete_parties
520 --Type          : Private.
521 --Function      : Deletes parties of a particular Contract
522 --Pre-reqs      : None.
523 --Parameters    :
524 --IN            : p_api_version         IN NUMBER       Required
525 --              : p_init_msg_list       IN VARCHAR2     Optional
526 --                   Default = FND_API.G_FALSE
527 --              : p_commit              IN VARCHAR2     Optional
528 --                   Default = FND_API.G_FALSE
529 --              : p_contract_id         IN NUMBER       Required
530 --                   Contract ID of the contract whose parties are to be deleted
531 --OUT           : x_return_status       OUT  VARCHAR2(1)
532 --              : x_msg_count           OUT  NUMBER
533 --              : x_msg_data            OUT  VARCHAR2(2000)
534 --Note          :
535 -- End of comments
536   PROCEDURE delete_parties(
537       p_api_version       IN  NUMBER,
538       p_init_msg_list     IN  VARCHAR2,
539       p_commit            IN  VARCHAR2,
540       p_contract_id       IN  NUMBER,
541       x_msg_data          OUT NOCOPY  VARCHAR2,
542       x_msg_count         OUT NOCOPY  NUMBER,
543       x_return_status     OUT NOCOPY  VARCHAR2) IS
544 
545     l_api_name      VARCHAR2(30);
546     l_api_version       NUMBER;
547   BEGIN
548 
549     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
550         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
551                 'Entered OKC_REP_CONTRACT_PROCESS_PVT.delete_parties');
552         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
553                 'Contract Id is: ' || p_contract_id);
554     END IF;
555     l_api_name := 'delete_parties';
556     l_api_version := 1.0;
557   -- Standard Start of API savepoint
558     SAVEPOINT delete_parties_PVT;
559     -- Standard call to check for call compatibility.
560     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
561       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
562     END IF;
563     -- Initialize message list if p_init_msg_list is set to TRUE.
564     IF FND_API.to_Boolean( p_init_msg_list ) THEN
565       FND_MSG_PUB.initialize;
566     END IF;
567 
568     --  Initialize API return status to success
569     x_return_status := FND_API.G_RET_STS_SUCCESS;
570 
571     -- Delete the records. The records are locked in the delete_contract API.
572     DELETE FROM OKC_REP_CONTRACT_PARTIES
573       WHERE CONTRACT_ID = p_CONTRACT_ID;
574 
575     -- Standard check of p_commit
576     IF FND_API.To_Boolean( p_commit ) THEN
577       COMMIT WORK;
578     END IF;
579 
580     -- Standard call to get message count and if count is 1, get message info.
581     FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
582 
583   IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
584         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
585                 'Leaving OKC_REP_CONTRACT_PROCESS_PVT.delete_parties');
586     END IF;
587 
588 
589     EXCEPTION
590       WHEN FND_API.G_EXC_ERROR THEN
591         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
592            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
593                  g_module || l_api_name,
594                  'Leaving delete_parties:FND_API.G_EXC_ERROR Exception');
595         END IF;
596         ROLLBACK TO delete_parties_PVT;
597         x_return_status := FND_API.G_RET_STS_ERROR;
598         FND_MSG_PUB.Count_And_Get(
599         p_count =>  x_msg_count,
600         p_data  =>  x_msg_data
601         );
602 
603       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
604         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
605            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
606                  g_module || l_api_name,
607                  'Leaving delete_parties:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
608         END IF;
609         ROLLBACK TO delete_parties_PVT;
610         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
611         FND_MSG_PUB.Count_And_Get(
612         p_count =>  x_msg_count,
613         p_data  =>  x_msg_data
614         );
615 
616       WHEN OTHERS THEN
617         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
618            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
619                  g_module || l_api_name,
620                  'Leaving delete_parties because of EXCEPTION: ' || sqlerrm);
621         END IF;
622         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
623                             p_msg_name     => G_UNEXPECTED_ERROR,
624                             p_token1       => G_SQLCODE_TOKEN,
625                             p_token1_value => sqlcode,
626                             p_token2       => G_SQLERRM_TOKEN,
627                             p_token2_value => sqlerrm);
628         ROLLBACK TO delete_parties_PVT;
629         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
630         FND_MSG_PUB.Count_And_Get(
631         p_count =>  x_msg_count,
632         p_data  =>  x_msg_data
633         );
634   END delete_parties;
635 
636 
637 -- Start of comments
638 --API name      : delete_risks
639 --Type          : Private.
640 --Function      : Deletes risks of a particular Contract
641 --Pre-reqs      : None.
642 --Parameters    :
643 --IN            : p_api_version         IN NUMBER       Required
644 --              : p_init_msg_list       IN VARCHAR2     Optional
645 --                   Default = FND_API.G_FALSE
646 --              : p_commit              IN VARCHAR2     Optional
647 --                   Default = FND_API.G_FALSE
648 --              : p_contract_id         IN NUMBER       Required
649 --                   Contract ID of the contract whose risks are to be deleted
650 --OUT           : x_return_status       OUT  VARCHAR2(1)
651 --              : x_msg_count           OUT  NUMBER
652 --              : x_msg_data            OUT  VARCHAR2(2000)
653 --Note          :
654 -- End of comments
655   PROCEDURE delete_risks(
656       p_api_version       IN  NUMBER,
657       p_init_msg_list     IN  VARCHAR2,
658       p_commit              IN  VARCHAR2,
659       p_contract_id       IN  NUMBER,
660       x_msg_data          OUT NOCOPY  VARCHAR2,
661       x_msg_count         OUT NOCOPY  NUMBER,
662       x_return_status     OUT NOCOPY  VARCHAR2) IS
663 
664     l_api_name      VARCHAR2(30);
665     l_api_version       NUMBER;
666 
667     CURSOR contract_csr IS
668       SELECT contract_type, contract_version_num
669       FROM OKC_REP_CONTRACTS_ALL
670       WHERE contract_id = p_contract_id;
671 
672   contract_rec       contract_csr%ROWTYPE;
673 
674   BEGIN
675 
676     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
677         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
678                 'Entered OKC_REP_CONTRACT_PROCESS_PVT.delete_risks');
679         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
680                 'Contract Id is: ' || p_contract_id);
681     END IF;
682     l_api_name := 'delete_risks';
683     l_api_version := 1.0;
684   -- Standard Start of API savepoint
685     SAVEPOINT delete_risks_PVT;
686     -- Standard call to check for call compatibility.
687     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
688       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
689     END IF;
690     -- Initialize message list if p_init_msg_list is set to TRUE.
691     IF FND_API.to_Boolean( p_init_msg_list ) THEN
692       FND_MSG_PUB.initialize;
693     END IF;
694 
695     --  Initialize API return status to success
696     x_return_status := FND_API.G_RET_STS_SUCCESS;
697     -- Get contract_type and version of the contract.
698     OPEN contract_csr;
699     FETCH contract_csr INTO contract_rec;
700     IF(contract_csr%NOTFOUND) THEN
701           IF (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
702               FND_LOG.STRING(FND_LOG.LEVEL_EXCEPTION ,
703                     G_MODULE||l_api_name,
704                                  'Invalid Contract Id: '|| p_contract_id);
705           END IF;
706           Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
707                             p_msg_name     => G_INVALID_CONTRACT_ID_MSG,
708                             p_token1       => G_CONTRACT_ID_TOKEN,
709                             p_token1_value => to_char(p_contract_id));
710           RAISE FND_API.G_EXC_ERROR;
711           -- RAISE NO_DATA_FOUND;
712     END IF;
713     -- Delete the records. The records are locked in the delete_contract API.
714     DELETE FROM OKC_CONTRACT_RISKS
715       WHERE   BUSINESS_DOCUMENT_TYPE = contract_rec.contract_type
716       AND   BUSINESS_DOCUMENT_ID = p_CONTRACT_ID
717         AND   BUSINESS_DOCUMENT_VERSION = contract_rec.contract_version_num;
718     -- Close cursor
719     CLOSE contract_csr;
720     -- Standard check of p_commit
721     IF FND_API.To_Boolean( p_commit ) THEN
722       COMMIT WORK;
723     END IF;
724 
725     -- Standard call to get message count and if count is 1, get message info.
726     FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
727 
728   IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
729         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
730                 'Leaving OKC_REP_CONTRACT_PROCESS_PVT.delete_risks');
731     END IF;
732 
733 
734     EXCEPTION
735       WHEN FND_API.G_EXC_ERROR THEN
736         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
737            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
738                  g_module || l_api_name,
739                  'Leaving delete_risks:FND_API.G_EXC_ERROR Exception');
740         END IF;
741         --close cursors
742         IF (contract_csr%ISOPEN) THEN
743           CLOSE contract_csr ;
744         END IF;
745         ROLLBACK TO delete_risks_PVT;
746         x_return_status := FND_API.G_RET_STS_ERROR;
747         FND_MSG_PUB.Count_And_Get(
748         p_count =>  x_msg_count,
749         p_data  =>  x_msg_data
750         );
751 
752       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
753         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
754            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
755                  g_module || l_api_name,
756                  'Leaving delete_risks:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
757         END IF;
758         --close cursors
759         IF (contract_csr%ISOPEN) THEN
760           CLOSE contract_csr ;
761         END IF;
762         ROLLBACK TO delete_risks_PVT;
763         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
764         FND_MSG_PUB.Count_And_Get(
765         p_count =>  x_msg_count,
766         p_data  =>  x_msg_data
767         );
768 
769       WHEN OTHERS THEN
770         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
771            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
772                  g_module || l_api_name,
773                  'Leaving delete_risks because of EXCEPTION: ' || sqlerrm);
774         END IF;
775         --close cursors
776         IF (contract_csr%ISOPEN) THEN
777           CLOSE contract_csr ;
778         END IF;
779         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
780                             p_msg_name     => G_UNEXPECTED_ERROR,
781                             p_token1       => G_SQLCODE_TOKEN,
782                             p_token1_value => sqlcode,
783                             p_token2       => G_SQLERRM_TOKEN,
784                             p_token2_value => sqlerrm);
785         ROLLBACK TO delete_risks_PVT;
786         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
787         FND_MSG_PUB.Count_And_Get(
788         p_count =>  x_msg_count,
789         p_data  =>  x_msg_data
790         );
791   END delete_risks;
792 
793 
794 -- Start of comments
795 --API name      : delete_related_contracts
796 --Type          : Private.
797 --Function      : Deletes related contracts of a particular Contract
798 --Pre-reqs      : None.
799 --Parameters    :
800 --IN            : p_api_version         IN NUMBER       Required
801 --              : p_init_msg_list       IN VARCHAR2     Optional
802 --                   Default = FND_API.G_FALSE
803 --              : p_commit              IN VARCHAR2     Optional
804 --                   Default = FND_API.G_FALSE
805 --              : p_contract_id         IN NUMBER       Required
806 --                   Contract ID of the contract whose related contracts are to be deleted
807 --OUT           : x_return_status       OUT  VARCHAR2(1)
808 --              : x_msg_count           OUT  NUMBER
809 --              : x_msg_data            OUT  VARCHAR2(2000)
810 --Note          :
811 -- End of comments
812   PROCEDURE delete_related_contracts(
813       p_api_version       IN  NUMBER,
814       p_init_msg_list     IN  VARCHAR2,
815       p_commit              IN  VARCHAR2,
816       p_contract_id       IN  NUMBER,
817       x_msg_data          OUT NOCOPY  VARCHAR2,
818       x_msg_count         OUT NOCOPY  NUMBER,
819       x_return_status     OUT NOCOPY  VARCHAR2) IS
820 
821     l_api_name      VARCHAR2(30);
822     l_api_version       NUMBER;
823 
824 
825     CURSOR contract_csr IS
826       SELECT contract_type, contract_version_num
827       FROM OKC_REP_CONTRACTS_ALL
828       WHERE contract_id = p_contract_id;
829 
830   contract_rec       contract_csr%ROWTYPE;
831 
832   BEGIN
833 
834     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
835         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
836                 'Entered OKC_REP_CONTRACT_PROCESS_PVT.delete_related_contracts');
837         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
838                 'Contract Id is: ' || p_contract_id);
839     END IF;
840     l_api_name := 'delete_related_contracts';
841     l_api_version := 1.0;
842   -- Standard Start of API savepoint
843     SAVEPOINT delete_related_contracts_PVT;
844     -- Standard call to check for call compatibility.
845     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
846       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
847     END IF;
848     -- Initialize message list if p_init_msg_list is set to TRUE.
849     IF FND_API.to_Boolean( p_init_msg_list ) THEN
850       FND_MSG_PUB.initialize;
851     END IF;
852 
853     --  Initialize API return status to success
854     x_return_status := FND_API.G_RET_STS_SUCCESS;
855 
856 -- Get contract_type and version of the contract.
857     OPEN contract_csr;
858     FETCH contract_csr INTO contract_rec;
859     IF(contract_csr%NOTFOUND) THEN
860           IF (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
861               FND_LOG.STRING(FND_LOG.LEVEL_EXCEPTION ,
862                     G_MODULE||l_api_name,
863                                  'Invalid Contract Id: '|| p_contract_id);
864           END IF;
865           Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
866                             p_msg_name     => G_INVALID_CONTRACT_ID_MSG,
867                             p_token1       => G_CONTRACT_ID_TOKEN,
868                             p_token1_value => to_char(p_contract_id));
869           RAISE FND_API.G_EXC_ERROR;
870           -- RAISE NO_DATA_FOUND;
871     END IF;
872 
873     -- Delete the records. The records are locked in the delete_contract API.
874      DELETE FROM OKC_REP_CONTRACT_USAGES
875       WHERE   contract_TYPE = contract_rec.contract_type
876       AND   contract_ID = p_CONTRACT_ID
877         AND  contract_VERSION = contract_rec.contract_version_num;
878 
879     -- Standard check of p_commit
880     IF FND_API.To_Boolean( p_commit ) THEN
881       COMMIT WORK;
882     END IF;
883 
884     -- Standard call to get message count and if count is 1, get message info.
885     FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
886 
887   IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
888         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
889                 'Leaving OKC_REP_CONTRACT_PROCESS_PVT.delete_related_contracts');
890     END IF;
891 
892 
893     EXCEPTION
894       WHEN FND_API.G_EXC_ERROR THEN
895         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
896            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
897                  g_module || l_api_name,
898                  'Leaving delete_related_contracts:FND_API.G_EXC_ERROR Exception');
899         END IF;
900         ROLLBACK TO delete_related_contracts_PVT;
901         x_return_status := FND_API.G_RET_STS_ERROR;
902         FND_MSG_PUB.Count_And_Get(
903         p_count =>  x_msg_count,
904         p_data  =>  x_msg_data
905         );
906 
907       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
908         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
909            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
910                  g_module || l_api_name,
911                  'Leaving delete_related_contracts:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
912         END IF;
913         ROLLBACK TO delete_related_contracts_PVT;
914         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
915         FND_MSG_PUB.Count_And_Get(
916         p_count =>  x_msg_count,
917         p_data  =>  x_msg_data
918         );
919 
920       WHEN OTHERS THEN
921         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
922            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
923                  g_module || l_api_name,
924                  'Leaving delete_related_contracts because of EXCEPTION: ' || sqlerrm);
925         END IF;
926         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
927                             p_msg_name     => G_UNEXPECTED_ERROR,
928                             p_token1       => G_SQLCODE_TOKEN,
929                             p_token1_value => sqlcode,
930                             p_token2       => G_SQLERRM_TOKEN,
931                             p_token2_value => sqlerrm);
932         ROLLBACK TO delete_related_contracts_PVT;
933         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
934         FND_MSG_PUB.Count_And_Get(
935         p_count =>  x_msg_count,
936         p_data  =>  x_msg_data
937         );
938   END delete_related_contracts;
939 
940 -- Start of comments
941 --API name      : delete_ACL
942 --Type          : Private.
943 --Function      : Deletes parties of a particular Contract
944 --Pre-reqs      : None.
945 --Parameters    :
946 --IN            : p_api_version         IN NUMBER       Required
947 --              : p_init_msg_list       IN VARCHAR2     Optional
948 --                   Default = FND_API.G_FALSE
949 --              : p_commit              IN VARCHAR2     Optional
950 --                   Default = FND_API.G_FALSE
951 --              : p_contract_id         IN NUMBER       Required
952 --                   Contract ID of the contract whose ACL is to be deleted
953 --OUT           : x_return_status       OUT  VARCHAR2(1)
954 --              : x_msg_count           OUT  NUMBER
955 --              : x_msg_data            OUT  VARCHAR2(2000)
956 --Note          :
957 -- End of comments
958   PROCEDURE delete_ACL(
959       p_api_version       IN  NUMBER,
960       p_init_msg_list     IN  VARCHAR2,
961       p_commit              IN  VARCHAR2,
962       p_contract_id       IN  NUMBER,
963       x_msg_data          OUT NOCOPY  VARCHAR2,
964       x_msg_count         OUT NOCOPY  NUMBER,
965       x_return_status     OUT NOCOPY  VARCHAR2) IS
966 
967     l_api_name      VARCHAR2(30);
968     l_api_version       NUMBER;
969     x_success           VARCHAR2(1);
970     x_errcode           NUMBER;
971 
972     -- Query for the cursor
973     CURSOR acl_csr IS
974       SELECT
975         fgrant.grantee_type       grantee_type,
976         fgrant.grantee_key        grantee_key,
977         fgrant.instance_type      instance_type,
978         fgrant.instance_set_id    instance_set_id,
979         fmenu.menu_name           menu_name,
980         fgrant.program_name       program_name,
981         fgrant.program_tag        program_tag
982       FROM FND_GRANTS fgrant, FND_OBJECTS fobj, FND_MENUS fmenu
983     WHERE fgrant.menu_id = fmenu.menu_id
984           AND fgrant.object_id = fobj.object_id
985           AND fobj.obj_name = 'OKC_REP_CONTRACT'
986           AND fgrant.instance_pk1_value = to_char(p_contract_id);
987 
988   BEGIN
989 
990     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
991         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
992                 'Entered OKC_REP_CONTRACT_PROCESS_PVT.delete_ACL');
993         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
994                 'Contract Id is: ' || p_contract_id);
995     END IF;
996     l_api_name := 'delete_ACL';
997     l_api_version := 1.0;
998   -- Standard Start of API savepoint
999     SAVEPOINT delete_ACL_PVT;
1000     -- Standard call to check for call compatibility.
1001     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1002       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1003     END IF;
1004     -- Initialize message list if p_init_msg_list is set to TRUE.
1005     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1006       FND_MSG_PUB.initialize;
1007     END IF;
1008 
1009     --  Initialize API return status to success
1010     x_return_status := FND_API.G_RET_STS_SUCCESS;
1011 
1012     FOR acl_rec IN acl_csr LOOP
1013       IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1014         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
1015                 'grantee_type is: ' || acl_rec.grantee_type);
1016         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
1017                 'grantee_key is: ' || acl_rec.grantee_key);
1018         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
1019                 'instance_type is: ' || acl_rec.instance_type);
1020         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
1021                 'instance_set_id is: ' || acl_rec.instance_set_id);
1022         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
1023                 'menu_name is: ' || acl_rec.menu_name);
1024         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
1025                 'program_name is: ' || acl_rec.program_name);
1026         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
1027                 'program_tag is: ' || acl_rec.program_tag);
1028       END IF;
1029     -- call FND_GRANT's delete api
1030     FND_GRANTS_PKG.delete_grant(
1031                        p_grantee_type        => acl_rec.grantee_type,  -- USER or GROUP
1032                        p_grantee_key         => acl_rec.grantee_key,   -- user_id or group_id
1033                        p_object_name         => G_REP_CONTRACT,
1034                        p_instance_type       => acl_rec.instance_type, -- INSTANCE or SET
1035                        p_instance_set_id     => acl_rec.instance_set_id, -- Instance set id.
1036                        p_instance_pk1_value  => to_char(p_contract_id), -- Object PK Value
1037                        p_menu_name           => acl_rec.menu_name,      -- Menu to be deleted.
1038                        p_program_name        => acl_rec.program_name,   -- name of the program that handles grant.
1039                        p_program_tag         => acl_rec.program_tag,    -- tag used by the program that handles grant.
1040                        x_success             => x_success,              -- return param. 'T' or 'F'
1041                        x_errcode             => x_errcode );
1042       -----------------------------------------------------
1043       IF (x_success = 'F' AND x_errcode < 0 ) THEN
1044           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1045       ELSIF (x_success = 'F' AND x_errcode > 0) THEN
1046           RAISE OKC_API.G_EXCEPTION_ERROR;
1047       END IF;
1048     --------------------------------------------------------
1049     END LOOP;
1050     -- Standard check of p_commit
1051     IF FND_API.To_Boolean( p_commit ) THEN
1052       COMMIT WORK;
1053     END IF;
1054 
1055     -- Standard call to get message count and if count is 1, get message info.
1056     FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
1057 
1058   IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1059         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
1060                 'Leaving OKC_REP_CONTRACT_PROCESS_PVT.delete_ACL');
1061     END IF;
1062 
1063 
1064     EXCEPTION
1065       WHEN FND_API.G_EXC_ERROR THEN
1066         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1067            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
1068                  g_module || l_api_name,
1069                  'Leaving delete_ACL:FND_API.G_EXC_ERROR Exception');
1070         END IF;
1071         --close cursors
1072         IF (acl_csr%ISOPEN) THEN
1073           CLOSE acl_csr ;
1074         END IF;
1075         ROLLBACK TO delete_ACL_PVT;
1076         x_return_status := FND_API.G_RET_STS_ERROR;
1077         FND_MSG_PUB.Count_And_Get(
1078         p_count =>  x_msg_count,
1079         p_data  =>  x_msg_data
1080         );
1081 
1082       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1083         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1084            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
1085                  g_module || l_api_name,
1086                  'Leaving delete_ACL:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
1087         END IF;
1088         IF (acl_csr%ISOPEN) THEN
1089           CLOSE acl_csr ;
1090         END IF;
1091         ROLLBACK TO delete_ACL_PVT;
1092         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1093         FND_MSG_PUB.Count_And_Get(
1094         p_count =>  x_msg_count,
1095         p_data  =>  x_msg_data
1096         );
1097 
1098       WHEN OTHERS THEN
1099         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1100            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
1101                  g_module || l_api_name,
1102                  'Leaving delete_ACL because of EXCEPTION: ' || sqlerrm);
1103         END IF;
1104         IF (acl_csr%ISOPEN) THEN
1105           CLOSE acl_csr ;
1106         END IF;
1107         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
1108                             p_msg_name     => G_UNEXPECTED_ERROR,
1109                             p_token1       => G_SQLCODE_TOKEN,
1110                             p_token1_value => sqlcode,
1111                             p_token2       => G_SQLERRM_TOKEN,
1112                             p_token2_value => sqlerrm);
1113         ROLLBACK TO delete_ACL_PVT;
1114         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1115         FND_MSG_PUB.Count_And_Get(
1116         p_count =>  x_msg_count,
1117         p_data  =>  x_msg_data
1118         );
1119   END delete_ACL;
1120 
1121 
1122 -- Start of comments
1123 --API name      : delete_status_history
1124 --Type          : Private.
1125 --Function      : Deletes status history records of a contract version
1126 --Pre-reqs      : None.
1127 --Parameters    :
1128 --IN            : p_api_version         IN NUMBER       Required
1129 --              : p_init_msg_list       IN VARCHAR2     Optional
1130 --                   Default = FND_API.G_FALSE
1131 --              : p_commit              IN VARCHAR2     Optional
1132 --                   Default = FND_API.G_FALSE
1133 --              : p_contract_id         IN NUMBER       Required
1134 --                   Contract ID of the contract whose status history is to be deleted
1135 --              : p_contract_version    IN NUMBER       Required
1136 --                   Contract version of the contract whose status history is to be deleted
1137 --OUT           : x_return_status       OUT  VARCHAR2(1)
1138 --              : x_msg_count           OUT  NUMBER
1139 --              : x_msg_data            OUT  VARCHAR2(2000)
1140 --Note          :
1141 -- End of comments
1142   PROCEDURE delete_status_history(
1143       p_api_version       IN  NUMBER,
1144       p_init_msg_list     IN  VARCHAR2,
1145       p_commit              IN VARCHAR2,
1146       p_contract_id       IN  NUMBER,
1147       p_contract_version    IN  NUMBER,
1148       x_msg_data          OUT NOCOPY  VARCHAR2,
1149       x_msg_count         OUT NOCOPY  NUMBER,
1150       x_return_status     OUT NOCOPY  VARCHAR2) IS
1151 
1152     l_api_name      VARCHAR2(30);
1153     l_api_version       NUMBER;
1154 
1155   BEGIN
1156 
1157     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1158         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
1159                 'Entered OKC_REP_CONTRACT_PROCESS_PVT.delete_status_history');
1160         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
1161                 'Contract Id is: ' || to_char(p_contract_id));
1162         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
1163                 'Contract Version is: ' || to_char(p_contract_version));
1164     END IF;
1165     l_api_name := 'delete_status_history';
1166     l_api_version := 1.0;
1167   -- Standard Start of API savepoint
1168     SAVEPOINT delete_status_history_PVT;
1169     -- Standard call to check for call compatibility.
1170     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1171       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1172     END IF;
1173     -- Initialize message list if p_init_msg_list is set to TRUE.
1174     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1175       FND_MSG_PUB.initialize;
1176     END IF;
1177 
1178     --  Initialize API return status to success
1179     x_return_status := FND_API.G_RET_STS_SUCCESS;
1180 
1181     -- Delete the records. The records are locked in the delete_contract API.
1182     DELETE FROM OKC_REP_CON_STATUS_HIST
1183       WHERE CONTRACT_ID = p_CONTRACT_ID
1184     AND CONTRACT_VERSION_NUM = p_contract_version;
1185 
1186     -- Standard check of p_commit
1187     IF FND_API.To_Boolean( p_commit ) THEN
1188       COMMIT WORK;
1189     END IF;
1190 
1191     -- Standard call to get message count and if count is 1, get message info.
1192     FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
1193 
1194   IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1195         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
1196                 'Leaving OKC_REP_CONTRACT_PROCESS_PVT.delete_status_history');
1197     END IF;
1198 
1199 
1200     EXCEPTION
1201       WHEN FND_API.G_EXC_ERROR THEN
1202         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1203            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
1204                  g_module || l_api_name,
1205                  'Leaving delete_status_history:FND_API.G_EXC_ERROR Exception');
1206         END IF;
1207         ROLLBACK TO delete_status_history_PVT;
1208         x_return_status := FND_API.G_RET_STS_ERROR;
1209         FND_MSG_PUB.Count_And_Get(
1210         p_count =>  x_msg_count,
1211         p_data  =>  x_msg_data
1212         );
1213 
1214       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1215         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1216            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
1217                  g_module || l_api_name,
1218                  'Leaving delete_status_history:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
1219         END IF;
1220         ROLLBACK TO delete_status_history_PVT;
1221         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1222         FND_MSG_PUB.Count_And_Get(
1223         p_count =>  x_msg_count,
1224         p_data  =>  x_msg_data
1225         );
1226 
1227       WHEN OTHERS THEN
1228         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1229            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
1230                  g_module || l_api_name,
1231                  'Leaving delete_status_history because of EXCEPTION: ' || sqlerrm);
1232         END IF;
1233         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
1234                             p_msg_name     => G_UNEXPECTED_ERROR,
1235                             p_token1       => G_SQLCODE_TOKEN,
1236                             p_token1_value => sqlcode,
1237                             p_token2       => G_SQLERRM_TOKEN,
1238                             p_token2_value => sqlerrm);
1239         ROLLBACK TO delete_status_history_PVT;
1240         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1241         FND_MSG_PUB.Count_And_Get(
1242         p_count =>  x_msg_count,
1243         p_data  =>  x_msg_data
1244         );
1245   END delete_status_history;
1246 
1247 
1248 
1249 
1250 
1251 -- Start of comments
1252 --API name      : delete_approval_history
1253 --Type          : Private.
1254 --Function      : Deletes contract approval history records of a contract version
1255 --Pre-reqs      : None.
1256 --Parameters    :
1257 --IN            : p_api_version         IN NUMBER       Required
1258 --              : p_init_msg_list       IN VARCHAR2     Optional
1259 --                   Default = FND_API.G_FALSE
1260 --              : p_commit              IN VARCHAR2     Optional
1261 --                   Default = FND_API.G_FALSE
1262 --              : p_contract_id         IN NUMBER       Required
1263 --                   Contract ID of the contract whose approval history is to be deleted
1264 --              : p_contract_version    IN NUMBER       Required
1265 --                   Contract version of the contract whose approval history is to be deleted
1266 --OUT           : x_return_status       OUT  VARCHAR2(1)
1267 --              : x_msg_count           OUT  NUMBER
1268 --              : x_msg_data            OUT  VARCHAR2(2000)
1269 --Note          :
1270 -- End of comments
1271   PROCEDURE delete_approval_history(
1272       p_api_version       IN  NUMBER,
1273       p_init_msg_list     IN  VARCHAR2,
1274       p_commit              IN VARCHAR2,
1275       p_contract_id       IN  NUMBER,
1276       p_contract_version    IN  NUMBER,
1277       x_msg_data          OUT NOCOPY  VARCHAR2,
1278       x_msg_count         OUT NOCOPY  NUMBER,
1279       x_return_status     OUT NOCOPY  VARCHAR2)IS
1280 
1281     l_api_name      VARCHAR2(30);
1282     l_api_version       NUMBER;
1283 
1284   BEGIN
1285 
1286     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1287         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
1288                 'Entered OKC_REP_CONTRACT_PROCESS_PVT.delete_approval_history');
1289         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
1290                 'Contract Id is: ' || to_char(p_contract_id));
1291         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
1292                 'Contract Version is: ' || to_char(p_contract_version));
1293     END IF;
1294     l_api_name := 'delete_approval_history';
1295     l_api_version := 1.0;
1296   -- Standard Start of API savepoint
1297     SAVEPOINT delete_approval_history_PVT;
1298     -- Standard call to check for call compatibility.
1299     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1300       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1301     END IF;
1302     -- Initialize message list if p_init_msg_list is set to TRUE.
1303     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1304       FND_MSG_PUB.initialize;
1305     END IF;
1306 
1307     --  Initialize API return status to success
1308     x_return_status := FND_API.G_RET_STS_SUCCESS;
1309 
1310     -- Delete the records. The records are locked in the delete_contract API.
1311     DELETE FROM OKC_REP_CON_APPROVALS
1312       WHERE CONTRACT_ID = p_CONTRACT_ID
1313     AND CONTRACT_VERSION_NUM = p_contract_version;
1314 
1315     -- Standard check of p_commit
1316     IF FND_API.To_Boolean( p_commit ) THEN
1317       COMMIT WORK;
1318     END IF;
1319 
1320     -- Standard call to get message count and if count is 1, get message info.
1321     FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
1322 
1323   IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1324         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
1325                 'Leaving OKC_REP_CONTRACT_PROCESS_PVT.delete_approval_history');
1326     END IF;
1327 
1328 
1329     EXCEPTION
1330       WHEN FND_API.G_EXC_ERROR THEN
1331         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1332            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
1333                  g_module || l_api_name,
1334                  'Leaving delete_approval_history:FND_API.G_EXC_ERROR Exception');
1335         END IF;
1336         ROLLBACK TO delete_approval_history_PVT;
1337         x_return_status :=FND_API.G_RET_STS_ERROR;
1338         FND_MSG_PUB.Count_And_Get(
1339         p_count =>  x_msg_count,
1340         p_data  =>  x_msg_data
1341         );
1342 
1343       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1344         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1345            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
1346                  g_module || l_api_name,
1347                  'Leaving delete_approval_history:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
1348         END IF;
1349         ROLLBACK TO delete_approval_history_PVT;
1350         x_return_status :=FND_API.G_RET_STS_UNEXP_ERROR;
1351         FND_MSG_PUB.Count_And_Get(
1352         p_count =>  x_msg_count,
1353         p_data  =>  x_msg_data
1354         );
1355 
1356       WHEN OTHERS THEN
1357         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1358            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
1359                  g_module || l_api_name,
1360                  'Leaving delete_approval_history because of EXCEPTION: ' || sqlerrm);
1361         END IF;
1362         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
1363                             p_msg_name     => G_UNEXPECTED_ERROR,
1364                             p_token1       => G_SQLCODE_TOKEN,
1365                             p_token1_value => sqlcode,
1366                             p_token2       => G_SQLERRM_TOKEN,
1367                             p_token2_value => sqlerrm);
1368         ROLLBACK TO delete_approval_history_PVT;
1369         x_return_status :=FND_API.G_RET_STS_UNEXP_ERROR;
1370         FND_MSG_PUB.Count_And_Get(
1371         p_count =>  x_msg_count,
1372         p_data  =>  x_msg_data
1373         );
1374   END delete_approval_history;
1375 
1376 -- Start of comments
1377 --API name      : delete_bookmarks
1378 --Type          : Private.
1379 --Function      : Deletes bookmarks for a given contract
1380 --Pre-reqs      : None.
1381 --Parameters    :
1382 --IN            : p_api_version         IN NUMBER       Required
1383 --              : p_init_msg_list       IN VARCHAR2     Optional
1384 --                   Default = FND_API.G_FALSE
1385 --              : p_commit              IN VARCHAR2     Optional
1386 --                   Default = FND_API.G_FALSE
1387 --              : p_contract_type         IN VARCHAR2       Required
1388 --                   Contract Type of the contract whose status history is to be deleted
1389 --              : p_contract_id         IN NUMBER       Required
1390 --                   Contract ID of the contract whose status history is to be deleted
1391 --OUT           : x_return_status       OUT  VARCHAR2(1)
1392 --              : x_msg_count           OUT  NUMBER
1393 --              : x_msg_data            OUT  VARCHAR2(2000)
1394 --Note          :
1395 -- End of comments
1396   PROCEDURE delete_bookmarks(
1397       p_api_version       IN  NUMBER,
1398       p_init_msg_list     IN  VARCHAR2,
1399       p_commit            IN VARCHAR2,
1400       p_contract_type     IN  VARCHAR2,
1401       p_contract_id       IN  NUMBER,
1402       x_msg_data          OUT NOCOPY  VARCHAR2,
1403       x_msg_count         OUT NOCOPY  NUMBER,
1404       x_return_status     OUT NOCOPY  VARCHAR2) IS
1405 
1406      l_api_name             VARCHAR2(30);
1407      l_api_version          NUMBER;
1408 
1409   BEGIN
1410 
1411     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1412         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
1413                 'Entered OKC_REP_CONTRACT_PROCESS_PVT.delete_bookmarks');
1414         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
1415                 'Contract Id is: ' || p_contract_id);
1416     END IF;
1417     l_api_name := 'delete_bookmarks';
1418     l_api_version := 1.0;
1419   -- Standard Start of API savepoint
1420     SAVEPOINT delete_bookmarks_PVT;
1421     -- Standard call to check for call compatibility.
1422     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1423       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1424     END IF;
1425     -- Initialize message list if p_init_msg_list is set to TRUE.
1426     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1427       FND_MSG_PUB.initialize;
1428     END IF;
1429 
1430     --  Initialize API return status to success
1431     x_return_status := FND_API.G_RET_STS_SUCCESS;
1432 
1433 
1434 
1435     -- Delete the records. The records are locked in the delete_contract API.
1436     DELETE FROM OKC_REP_BOOKMARKS
1437       WHERE OBJECT_TYPE = p_contract_type
1438     AND OBJECT_ID = p_CONTRACT_ID
1439       AND BOOKMARK_TYPE_CODE = G_CONTRACT_BOOKMARK_TYPE;
1440 
1441     -- Standard check of p_commit
1442     IF FND_API.To_Boolean( p_commit ) THEN
1443       COMMIT WORK;
1444     END IF;
1445 
1446     -- Standard call to get message count and if count is 1, get message info.
1447     FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
1448 
1449   IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1450         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
1451                 'Leaving OKC_REP_CONTRACT_PROCESS_PVT.delete_bookmarks');
1452     END IF;
1453 
1454 
1455     EXCEPTION
1456       WHEN FND_API.G_EXC_ERROR THEN
1457         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1458            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
1459                  g_module || l_api_name,
1460                  'Leaving delete_bookmarks:FND_API.G_EXC_ERROR Exception');
1461         END IF;
1462         ROLLBACK TO delete_bookmarks_PVT;
1463         x_return_status := FND_API.G_RET_STS_ERROR;
1464         FND_MSG_PUB.Count_And_Get(
1465         p_count =>  x_msg_count,
1466         p_data  =>  x_msg_data
1467         );
1468 
1469       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1470         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1471            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
1472                  g_module || l_api_name,
1473                  'Leaving delete_bookmarks:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
1474         END IF;
1475         ROLLBACK TO delete_bookmarks_PVT;
1476         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1477         FND_MSG_PUB.Count_And_Get(
1478         p_count =>  x_msg_count,
1479         p_data  =>  x_msg_data
1480         );
1481 
1482       WHEN OTHERS THEN
1483         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1484            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
1485                  g_module || l_api_name,
1486                  'Leaving delete_bookmarks because of EXCEPTION: ' || sqlerrm);
1487         END IF;
1488         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
1489                             p_msg_name     => G_UNEXPECTED_ERROR,
1490                             p_token1       => G_SQLCODE_TOKEN,
1491                             p_token1_value => sqlcode,
1492                             p_token2       => G_SQLERRM_TOKEN,
1493                             p_token2_value => sqlerrm);
1494         ROLLBACK TO delete_bookmarks_PVT;
1495         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1496         FND_MSG_PUB.Count_And_Get(
1497         p_count =>  x_msg_count,
1498         p_data  =>  x_msg_data
1499         );
1500   END  delete_bookmarks;
1501 
1502 
1503   ---------------------------------------------------------------------------
1504   -- PROCEDURE Lock_Row
1505   ---------------------------------------------------------------------------
1506   -----------------------------------
1507   -- Lock_Row for:OKC_REP_CONTRACTS_ALL --
1508   -----------------------------------
1509   FUNCTION Lock_Contract_Header(
1510     p_contract_id              IN NUMBER,
1511     p_object_version_number    IN NUMBER
1512   ) RETURN VARCHAR2 IS
1513 
1514     l_return_status                VARCHAR2(1);
1515     l_object_version_number       OKC_REP_CONTRACTS_ALL.OBJECT_VERSION_NUMBER%TYPE;
1516     l_row_notfound                BOOLEAN := FALSE;
1517     l_api_name      VARCHAR2(30);
1518 
1519     CURSOR lock_csr (cp_contract_id NUMBER, cp_object_version_number NUMBER) IS
1520     SELECT object_version_number
1521       FROM OKC_REP_CONTRACTS_ALL
1522      WHERE CONTRACT_ID = cp_contract_id
1523        AND (object_version_number = cp_object_version_number OR cp_object_version_number IS NULL)
1524     FOR UPDATE OF object_version_number NOWAIT;
1525 
1526     CURSOR  lchk_csr (cp_contract_id NUMBER) IS
1527     SELECT object_version_number
1528       FROM OKC_REP_CONTRACTS_ALL
1529      WHERE CONTRACT_ID = cp_contract_id;
1530   BEGIN
1531 
1532     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1533         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
1534                 'Entered Function OKC_REP_CONTRACT_PROCESS_PVT.Lock_Contract_Header');
1535         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
1536                 'Contract Id is: ' || p_contract_id);
1537         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
1538                 'Object Version is: ' || p_object_version_number);
1539     END IF;
1540 
1541 
1542     BEGIN
1543       l_api_name := 'lock_contract_header';
1544       OPEN lock_csr( p_contract_id, p_object_version_number );
1545       FETCH lock_csr INTO l_object_version_number;
1546       l_row_notfound := lock_csr%NOTFOUND;
1547       CLOSE lock_csr;
1548 
1549      EXCEPTION
1550       WHEN E_Resource_Busy THEN
1551         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1552            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
1553                  g_module || l_api_name,
1554                  'Leaving Function Lock_Contract_Header:E_Resource_Busy Exception');
1555         END IF;
1556 
1557         IF (lock_csr%ISOPEN) THEN
1558           CLOSE lock_csr;
1559         END IF;
1560         Okc_Api.Set_Message(G_FND_APP,G_UNABLE_TO_RESERVE_REC);
1561         RETURN(FND_API.G_RET_STS_ERROR );
1562     END;
1563 
1564     IF ( l_row_notfound ) THEN
1565       l_return_status :=FND_API.G_RET_STS_ERROR;
1566 
1567       OPEN lchk_csr(p_contract_id);
1568       FETCH lchk_csr INTO l_object_version_number;
1569       l_row_notfound := lchk_csr%NOTFOUND;
1570       CLOSE lchk_csr;
1571 
1572       IF (l_row_notfound) THEN
1573         Okc_Api.Set_Message(G_APP_NAME,G_RECORD_DELETED);
1574       ELSIF l_object_version_number > p_object_version_number THEN
1575         Okc_Api.Set_Message(G_APP_NAME,G_RECORD_CHANGED);
1576       ELSIF l_object_version_number = -1 THEN
1577         Okc_Api.Set_Message(G_APP_NAME,G_RECORD_LOGICALLY_DELETED);
1578       ELSE -- it can be the only above condition. It can happen after restore version
1579         Okc_Api.Set_Message(G_APP_NAME,G_RECORD_CHANGED);
1580       END IF;
1581      ELSE
1582       l_return_status :=FND_API.G_RET_STS_SUCCESS;
1583     END IF;
1584 
1585     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1586            fnd_log.string(FND_LOG.LEVEL_PROCEDURE,
1587                  g_module || l_api_name,
1588                  'Leaving Function Lock_Contract_Header');
1589     END IF;
1590 
1591     RETURN( l_return_status );
1592 
1593   EXCEPTION
1594     WHEN OTHERS THEN
1595 
1596       IF (lock_csr%ISOPEN) THEN
1597         CLOSE lock_csr;
1598       END IF;
1599       IF (lchk_csr%ISOPEN) THEN
1600         CLOSE lchk_csr;
1601       END IF;
1602 
1603       IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1604            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
1605                  g_module || l_api_name,
1606                  'Leaving Function Lock_Contract_Header because of EXCEPTION: '||sqlerrm);
1607       END IF;
1608 
1609       Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
1610                         p_msg_name     => G_UNEXPECTED_ERROR,
1611                         p_token1       => G_SQLCODE_TOKEN,
1612                         p_token1_value => sqlcode,
1613                         p_token2       => G_SQLERRM_TOKEN,
1614                         p_token2_value => sqlerrm);
1615 
1616       RETURN(FND_API.G_RET_STS_UNEXP_ERROR );
1617   END Lock_Contract_Header;
1618 
1619 
1620 -- Start of comments
1621 --API name      : lock_contract_header
1622 --Type          : Private.
1623 --Function      : Locks a row in OKC_REP_CONTRACTS_ALL table
1624 --Pre-reqs      : None.
1625 --Parameters    :
1626 --IN            : p_contract_id         IN NUMBER       Required
1627 --                   Contract ID of the contract to be locked.
1628 --              : p_object_version_number    IN NUMBER       Required
1629 --                   Object version number of the contract to be locked
1630 --OUT           : x_return_status       OUT  VARCHAR2(1)
1631 --              : x_msg_count           OUT  NUMBER
1632 --              : x_msg_data            OUT  VARCHAR2(2000)
1633 --Note          :
1634 -- End of comments
1635   PROCEDURE Lock_Contract_Header(
1636     p_contract_id              IN NUMBER,
1637     p_object_version_number    IN NUMBER,
1638     x_return_status            OUT NOCOPY VARCHAR2
1639    ) IS
1640 
1641    l_api_name       VARCHAR2(30);
1642 
1643   BEGIN
1644     l_api_name := 'Lock_Contract_header';
1645     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1646         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
1647                 'Entered OKC_REP_CONTRACT_PROCESS_PVT.Lock_Contract_Header');
1648         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
1649                 'Contract Id is: ' || p_contract_id);
1650         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
1651                 'Object Version is: ' || p_object_version_number);
1652     END IF;
1653 
1654     --------------------------------------------
1655     -- Call the LOCK_ROW
1656     --------------------------------------------
1657     x_return_status := Lock_Contract_Header(
1658       p_contract_id              => p_contract_id,
1659       p_object_version_number    => p_object_version_number
1660     );
1661     ---------------------------------------------------------
1662     IF (x_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
1663       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1664     ELSIF (x_return_status = FND_API.G_RET_STS_ERROR) THEN
1665       RAISE FND_API.G_EXC_ERROR;
1666     END IF;
1667     ----------------------------------------------------------
1668     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1669            fnd_log.string(FND_LOG.LEVEL_PROCEDURE,
1670                  g_module || l_api_name,
1671                  'Leaving Lock_Contract_Header');
1672     END IF;
1673 
1674   EXCEPTION
1675     WHEN FND_API.G_EXC_ERROR THEN
1676       IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1677            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
1678                  g_module || l_api_name,
1679                  'Leaving Lock_Contract_Header:FND_API.G_EXC_ERROR Exception');
1680       END IF;
1681       x_return_status := FND_API.G_RET_STS_ERROR;
1682     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1683       IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1684            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
1685                  g_module || l_api_name,
1686                  'Leaving Lock_Contract_Header:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
1687       END IF;
1688       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1689 
1690     WHEN OTHERS THEN
1691       IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1692            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
1693                  g_module || l_api_name,
1694                  'Leaving Lock_Contract_Header because of EXCEPTION: '||sqlerrm);
1695       END IF;
1696       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1697       Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
1698                         p_msg_name     => G_UNEXPECTED_ERROR,
1699                         p_token1       => G_SQLCODE_TOKEN,
1700                         p_token1_value => sqlcode,
1701                         p_token2       => G_SQLERRM_TOKEN,
1702                         p_token2_value => sqlerrm);
1703 
1704   END Lock_Contract_Header;
1705 
1706 
1707 -- Start of comments
1708 --API name      : delete_contract
1709 --Type          : Private.
1710 --Function      : Deletes a Contract
1711 --Pre-reqs      : None.
1712 --Parameters    :
1713 --IN            : p_api_version         IN NUMBER       Required
1714 --              : p_init_msg_list       IN VARCHAR2     Optional
1715 --                   Default = FND_API.G_FALSE
1716 --              : p_commit              IN VARCHAR2     Optional
1717 --                   Default = FND_API.G_FALSE
1718 --              : p_contract_id         IN NUMBER       Required
1719 --                   Contract ID of the contract to be deleted
1720 --OUT           : x_return_status       OUT  VARCHAR2(1)
1721 --              : x_msg_count           OUT  NUMBER
1722 --              : x_msg_data            OUT  VARCHAR2(2000)
1723 --Note          :
1724 -- End of comments
1725   PROCEDURE delete_contract(
1726       p_api_version       IN  NUMBER,
1727       p_init_msg_list     IN  VARCHAR2,
1728       p_commit            IN  VARCHAR2,
1729       p_contract_id       IN  NUMBER,
1730       x_msg_data          OUT NOCOPY  VARCHAR2,
1731       x_msg_count         OUT NOCOPY  NUMBER,
1732       x_return_status     OUT NOCOPY  VARCHAR2) IS
1733 
1734     l_api_name        VARCHAR2(30);
1735     l_api_version           NUMBER;
1736     l_contract_type         OKC_REP_CONTRACTS_ALL.CONTRACT_TYPE%TYPE;
1737     l_prev_version          OKC_REP_CONTRACTS_ALL.CONTRACT_VERSION_NUM%TYPE;
1738     l_prev_con_vers_status  OKC_REP_CONTRACTS_ALL.contract_status_code%TYPE;
1739     l_prev_con_vers_sign_type  OKC_REP_CONTRACTS_ALL.esignature_required%TYPE;
1740     l_is_activated VARCHAR2(1);
1741 
1742 
1743   CURSOR contract_csr IS
1744       SELECT contract_type, contract_version_num
1745       FROM OKC_REP_CONTRACTS_ALL
1746       WHERE contract_id = p_contract_id;
1747 
1748   CURSOR prev_con_vers_status (p_contract_id IN NUMBER, p_con_version IN NUMBER) IS
1749     SELECT contract_status_code, esignature_required
1750     FROM okc_rep_contract_vers
1751     WHERE  contract_id = p_contract_id
1752     AND    contract_version_num = p_con_version - 1;
1753 
1754   contract_rec       contract_csr%ROWTYPE;
1755 
1756   BEGIN
1757 
1758     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1759         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
1760                 'Entered OKC_REP_CONTRACT_PROCESS_PVT.delete_contract');
1761         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
1762                 'Contract Id is: ' || p_contract_id);
1763     END IF;
1764     l_api_name := 'delete_contract';
1765     l_api_version := 1.0;
1766   -- Standard Start of API savepoint
1767     SAVEPOINT delete_contract_PVT;
1768     -- Standard call to check for call compatibility.
1769     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
1770       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1771     END IF;
1772     -- Initialize message list if p_init_msg_list is set to TRUE.
1773     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1774       FND_MSG_PUB.initialize;
1775     END IF;
1776 
1777     --  Initialize API return status to success
1778     x_return_status := FND_API.G_RET_STS_SUCCESS;
1779 
1780     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1781       FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
1782         'Calling OKC_REP_CONTRACT_PROCESS_PVT.Lock_Contract_Header()');
1783     END IF;
1784     -- Lock the contract header
1785     Lock_Contract_Header(
1786         p_contract_id              => p_contract_id,
1787           p_object_version_number    => NULL,
1788           x_return_status            => x_return_status
1789           );
1790     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1791         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
1792         'OKC_REP_CONTRACT_PROCESS_PVT.Lock_Contract_Header return status is: '
1793       || x_return_status);
1794     END IF;
1795     -----------------------------------------------------
1796     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1797       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1798     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1799       RAISE OKC_API.G_EXCEPTION_ERROR;
1800     END IF;
1801     -----------------------------------------------------
1802 
1803     -- The contract version
1804     -- Get contract_type and version required for deliverables and documents APIs
1805     OPEN contract_csr;
1806         FETCH contract_csr INTO contract_rec;
1807         IF(contract_csr%NOTFOUND) THEN
1808           IF (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1809               FND_LOG.STRING(FND_LOG.LEVEL_EXCEPTION ,
1810                     G_MODULE||l_api_name,
1811                                  'Invalid Contract Id: '|| p_contract_id);
1812           END IF;
1813           Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
1814                             p_msg_name     => G_INVALID_CONTRACT_ID_MSG,
1815                             p_token1       => G_CONTRACT_ID_TOKEN,
1816                             p_token1_value => to_char(p_contract_id));
1817           RAISE FND_API.G_EXC_ERROR;
1818           -- RAISE NO_DATA_FOUND;
1819       END IF;
1820 
1821 
1822     if (contract_rec.contract_version_num = 1) THEN
1823         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1824           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
1825                 'Calling OKC_REP_CONTRACT_PROCESS_PVT.delete_contacts()');
1826       END IF;
1827       delete_contacts(
1828           p_api_version       => 1.0,
1829           p_commit            => FND_API.G_FALSE,
1830           p_init_msg_list     => FND_API.G_FALSE,
1831           p_contract_id       => p_contract_id,
1832           x_msg_data          => x_msg_data,
1833           x_msg_count         => x_msg_count,
1834           x_return_status     => x_return_status);
1835         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1836             FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
1837                 'OKC_REP_CONTRACT_PROCESS_PVT.delete_contacts return status is: '
1838           || x_return_status);
1839         END IF;
1840       -----------------------------------------------------
1841       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1842           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1843       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1844           RAISE OKC_API.G_EXCEPTION_ERROR;
1845       END IF;
1846       -----------------------------------------------------
1847 
1848 
1849       IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1850         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
1851                 'Calling OKC_REP_CONTRACT_PROCESS_PVT.delete_parties()');
1852       END IF;
1853       delete_parties(
1854           p_api_version       => 1.0,
1855           p_init_msg_list     => FND_API.G_FALSE,
1856           p_commit            => FND_API.G_FALSE,
1857           p_contract_id       => p_contract_id,
1858           x_msg_data          => x_msg_data,
1859           x_msg_count         => x_msg_count,
1860           x_return_status     => x_return_status);
1861         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1862             FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
1863                 'OKC_REP_CONTRACT_PROCESS_PVT.delete_parties return status is: '
1864           || x_return_status);
1865         END IF;
1866       -----------------------------------------------------
1867       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1868           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1869       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1870           RAISE OKC_API.G_EXCEPTION_ERROR;
1871       END IF;
1872       --------------------------------------------------------
1873 
1874 
1875       IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1876         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
1877                 'Calling OKC_REP_CONTRACT_PROCESS_PVT.delete_risks()');
1878       END IF;
1879       delete_risks(
1880           p_api_version       => 1.0,
1881           p_init_msg_list     => FND_API.G_FALSE,
1882           p_commit            => FND_API.G_FALSE,
1883           p_contract_id       => p_contract_id,
1884           x_msg_data          => x_msg_data,
1885           x_msg_count         => x_msg_count,
1886           x_return_status     => x_return_status);
1887         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1888             FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
1889                 'OKC_REP_CONTRACT_PROCESS_PVT.delete_risks return status is: '
1890           || x_return_status);
1891         END IF;
1892       -----------------------------------------------------
1893       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1894           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1895       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1896           RAISE OKC_API.G_EXCEPTION_ERROR;
1897       END IF;
1898       --------------------------------------------------------
1899 
1900 
1901       IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1902         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
1903                 'Calling OKC_REP_CONTRACT_PROCESS_PVT.delete_ACL()');
1904       END IF;
1905       delete_ACL(
1906           p_api_version       => 1.0,
1907           p_init_msg_list     => FND_API.G_FALSE,
1908           p_commit            => FND_API.G_FALSE,
1909           p_contract_id       => p_contract_id,
1910           x_msg_data          => x_msg_data,
1911           x_msg_count         => x_msg_count,
1912           x_return_status     => x_return_status);
1913         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1914             FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
1915                 'OKC_REP_CONTRACT_PROCESS_PVT.delete_ACL return status is: '
1916           || x_return_status);
1917         END IF;
1918       -----------------------------------------------------
1919       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1920           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1921       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1922           RAISE OKC_API.G_EXCEPTION_ERROR;
1923       END IF;
1924       --------------------------------------------------------
1925 
1926 
1927       IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1928         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
1929                 'Calling OKC_REP_CONTRACT_PROCESS_PVT.delete_status_history()');
1930       END IF;
1931       delete_status_history(
1932           p_api_version       => 1.0,
1933           p_init_msg_list     => FND_API.G_FALSE,
1934           p_commit            => FND_API.G_FALSE,
1935           p_contract_id       => p_contract_id,
1936           p_contract_version  => contract_rec.contract_version_num,
1937           x_msg_data          => x_msg_data,
1938           x_msg_count         => x_msg_count,
1939           x_return_status     => x_return_status);
1940         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1941             FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
1942                 'OKC_REP_CONTRACT_PROCESS_PVT.delete_status_history return status is: '
1943           || x_return_status);
1944         END IF;
1945       -----------------------------------------------------
1946       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1947           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1948       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1949           RAISE OKC_API.G_EXCEPTION_ERROR;
1950       END IF;
1951       --------------------------------------------------------
1952 
1953 
1954       IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1955         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
1956                 'Calling OKC_REP_CONTRACT_PROCESS_PVT.delete_approval_history()');
1957       END IF;
1958       delete_approval_history(
1959           p_api_version       => 1.0,
1960           p_init_msg_list     => FND_API.G_FALSE,
1961           p_commit            => FND_API.G_FALSE,
1962           p_contract_id       => p_contract_id,
1963           p_contract_version  => contract_rec.contract_version_num,
1964           x_msg_data          => x_msg_data,
1965           x_msg_count         => x_msg_count,
1966           x_return_status     => x_return_status);
1967         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1968             FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
1969                 'OKC_REP_CONTRACT_PROCESS_PVT.delete_approval_history return status is: '
1970           || x_return_status);
1971         END IF;
1972       -----------------------------------------------------
1973       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
1974           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
1975       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
1976           RAISE OKC_API.G_EXCEPTION_ERROR;
1977       END IF;
1978       --------------------------------------------------------
1979 
1980 
1981       IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1982         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
1983                 'Calling OKC_REP_CONTRACT_PROCESS_PVT.delete_bookmarks()');
1984       END IF;
1985       delete_bookmarks(
1986           p_api_version       => 1.0,
1987           p_init_msg_list     => FND_API.G_FALSE,
1988           p_commit            => FND_API.G_FALSE,
1989           p_contract_type     => contract_rec.contract_type,
1990           p_contract_id       => p_contract_id,
1991           x_msg_data          => x_msg_data,
1992           x_msg_count         => x_msg_count,
1993           x_return_status     => x_return_status);
1994         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1995             FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
1996                 'OKC_REP_CONTRACT_PROCESS_PVT.delete_bookmarks return status is: '
1997           || x_return_status);
1998         END IF;
1999       -----------------------------------------------------
2000       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2001           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2002       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2003           RAISE OKC_API.G_EXCEPTION_ERROR;
2004       END IF;
2005       --------------------------------------------------------
2006 
2007     END IF;   --   (contract_rec.contract_version_num = 1)
2008 
2009 
2010 
2011     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2012         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2013                 'Calling OKC_REP_CONTRACT_PROCESS_PVT.delete_related_contracts()');
2014     END IF;
2015       delete_related_contracts(
2016           p_api_version       => 1.0,
2017           p_init_msg_list     => FND_API.G_FALSE,
2018           p_commit            => FND_API.G_FALSE,
2019           p_contract_id       => p_contract_id,
2020           x_msg_data          => x_msg_data,
2021           x_msg_count         => x_msg_count,
2022           x_return_status     => x_return_status);
2023         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2024             FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2025                 'OKC_REP_CONTRACT_PROCESS_PVT.delete_related_contracts return status is: '
2026           || x_return_status);
2027         END IF;
2028     -----------------------------------------------------
2029     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2030           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2031     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2032           RAISE OKC_API.G_EXCEPTION_ERROR;
2033     END IF;
2034     --------------------------------------------------------
2035 
2036 
2037     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2038           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2039                 'Calling OKC_CONTRACT_DOCS_GRP.Delete_Ver_Attachments');
2040     END IF;
2041     -- Delete Contract Documents
2042     -- The following package call should be uncommented once the package is compiling.
2043     OKC_CONTRACT_DOCS_GRP.Delete_Ver_Attachments(
2044         p_api_version               => 1.0,
2045         p_business_document_type    => contract_rec.contract_type,
2046         p_business_document_id      => p_contract_id,
2047         p_business_document_version => G_CURRENT_VERSION,
2048     x_return_status             => x_return_status,
2049         x_msg_count                 => x_msg_count,
2050         x_msg_data                  => x_msg_data
2051         );
2052     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2053         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2054                 'OKC_CONTRACT_DOCS_GRP.Delete_Ver_Attachments return status is : '
2055             || x_return_status);
2056     END IF;
2057     -----------------------------------------------------
2058       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2059           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2060       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2061           RAISE OKC_API.G_EXCEPTION_ERROR;
2062       END IF;
2063     --------------------------------------------------------
2064 
2065      /* 14543447 - kkolukul - Uda Integration */
2066       IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2067         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2068                 'Calling OKC_REP_CONTRACT_PROCESS_PVT.delete_uda_attribute_values()');
2069       END IF;
2070       delete_uda_attribute_values(
2071           p_api_version       => 1.0,
2072           p_init_msg_list     => FND_API.G_FALSE,
2073           p_commit            => FND_API.G_FALSE,
2074           p_contract_id       => p_contract_id,
2075           x_msg_data          => x_msg_data,
2076           x_msg_count         => x_msg_count,
2077           x_return_status     => x_return_status);
2078         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2079             FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2080                 'OKC_REP_CONTRACT_PROCESS_PVT.delete_uda_attribute_values return status is: '
2081           || x_return_status);
2082         END IF;
2083       -----------------------------------------------------
2084       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2085           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2086       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2087           RAISE OKC_API.G_EXCEPTION_ERROR;
2088       END IF;
2089       --------------------------------------------------------
2090 
2091     IF (contract_rec.contract_version_num > 1) THEN
2092 
2093       -- Call this API only if the contract has previous versions
2094       IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2095                 FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2096                       'Calling OKC_CONTRACT_DOCS_PVT.reset_bus_doc_ver_to_current');
2097       END IF;
2098 
2099       -- Bug 5044121
2100       -- The following API will change the business document version number attribute
2101       -- of all the documents of the previous version to the deleted version to -99
2102       -- so that the UI will show documents correctly
2103       x_return_status := OKC_CONTRACT_DOCS_PVT.reset_bus_doc_ver_to_current(
2104                           p_business_document_type    => contract_rec.contract_type,
2105                           p_business_document_id      => p_contract_id,
2106                           p_business_document_version => contract_rec.contract_version_num);
2107 
2108       IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2109           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2110                    'OKC_CONTRACT_DOCS_PVT.reset_bus_doc_ver_to_current return status is : '
2111                   || x_return_status);
2112       END IF;
2113 
2114       -----------------------------------------------------
2115         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2116             RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2117         ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2118             RAISE OKC_API.G_EXCEPTION_ERROR;
2119         END IF;
2120       --------------------------------------------------------
2121 
2122     END IF;
2123 
2124 	-- Repository Enhancement 12.1 (For Delete Action)
2125 	IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2126 	FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'1000: Calling Ptivate API to Delete the 		doc');
2127 	END IF;
2128 
2129 -- If the contract has only one version, delete the terms.
2130 -- Otherwise the only the terms versions have to be deleted.
2131 -- For Bug# 6902073
2132 
2133     IF(contract_rec.contract_version_num = 1) THEN
2134 
2135 	OKC_TERMS_UTIL_PVT.Delete_Doc(
2136 	       x_return_status  => x_return_status,
2137 	       p_doc_type       => contract_rec.contract_type,
2138 	       p_doc_id         => p_contract_id
2139 	     );
2140      --------------------------------------------
2141 	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2142 	      RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2143 	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2144 	      RAISE OKC_API.G_EXCEPTION_ERROR;
2145 	END IF;
2146 
2147     ELSE
2148 
2149 -- Restore the previous version's terms details from the history table to the base tables
2150 	OKC_TERMS_VERSION_GRP.Restore_Doc_Version(
2151                p_api_version => 1.0,
2152 	       x_return_status  => x_return_status,
2153                x_msg_data       => x_msg_data,
2154                x_msg_count      => x_msg_count,
2155 	       p_doc_type       => contract_rec.contract_type,
2156 	       p_doc_id         => p_contract_id,
2157 	       p_version_number => contract_rec.contract_version_num - 1
2158 	     );
2159      --------------------------------------------
2160 	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2161 	      RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2162 	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2163 	      RAISE OKC_API.G_EXCEPTION_ERROR;
2164 	END IF;
2165 -- Deletes the previous version's terms details in the history table
2166 	OKC_TERMS_VERSION_PVT.Delete_Doc_Version(
2167 	       x_return_status  => x_return_status,
2168 	       p_doc_type       => contract_rec.contract_type,
2169 	       p_doc_id         => p_contract_id,
2170 	       p_version_number => contract_rec.contract_version_num - 1
2171 	     );
2172      --------------------------------------------
2173 	IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2174 	      RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2175 	ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2176 	      RAISE OKC_API.G_EXCEPTION_ERROR;
2177 	END IF;
2178 
2179 -- Changes for Bug# 6902073 Ends
2180      END IF;
2181 	-- Repository Enhancement 12.1 Ends(For Delete Action)
2182 
2183 
2184     IF(contract_rec.contract_version_num = 1) THEN
2185 
2186       IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2187           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2188                   'Calling OKC_DELIVERABLE_PROCESS_PVT.delete_deliverables');
2189       END IF;
2190 
2191       -- Delete Deliverables
2192       OKC_DELIVERABLE_PROCESS_PVT.deleteDeliverables (
2193                     p_api_version         => 1.0,
2194                     p_init_msg_list       => FND_API.G_FALSE,
2195                     p_bus_doc_id          => p_contract_id,
2196                     p_bus_doc_type        => contract_rec.contract_type,
2197                     p_bus_doc_version     => G_CURRENT_VERSION,
2198                     x_return_status       => x_return_status,
2199                     x_msg_count           => x_msg_count,
2200                     x_msg_data            => x_msg_data);
2201 
2202     ELSE
2203 
2204       -- Get previous contract version status
2205       OPEN prev_con_vers_status(p_contract_id, contract_rec.contract_version_num);
2206       FETCH prev_con_vers_status INTO l_prev_con_vers_status, l_prev_con_vers_sign_type;
2207       CLOSE prev_con_vers_status;
2208 
2209       IF ((l_prev_con_vers_status = G_STATUS_SIGNED) or (l_prev_con_vers_status = 'APPROVED' and l_prev_con_vers_sign_type = 'N')) THEN
2210         l_is_activated := 'Y';
2211       ELSE
2212         l_is_activated := 'N';
2213       END IF;
2214 
2215       OKC_DELIVERABLE_PROCESS_PVT.deleteDeliverables(
2216               p_api_version     => 1.0,
2217               p_init_msg_list   => FND_API.G_FALSE,
2218               p_bus_doc_id      => p_contract_id,
2219               p_bus_doc_type    => contract_rec.contract_type,
2220               p_bus_doc_version => contract_rec.contract_version_num,
2221               p_prev_del_active => l_is_activated,
2222               p_revert_dels     => 'Y',
2223               x_return_status   => x_return_status,
2224               x_msg_count       => x_msg_count,
2225               x_msg_data        => x_msg_data);
2226 
2227     END IF;
2228 
2229     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2230         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2231             'OKC_DELIVERABLE_PROCESS_PVT.deleteDeliverables return status is : '
2232             || x_return_status);
2233     END IF;
2234 
2235     -----------------------------------------------------
2236       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
2237           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
2238       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
2239           RAISE OKC_API.G_EXCEPTION_ERROR;
2240       END IF;
2241     --------------------------------------------------------
2242 
2243 
2244     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2245         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2246                 'Deleting Contract header record');
2247     END IF;
2248     -- Delete contract header from the main header table OKC_REP_CONTRACTS_ALL
2249     DELETE FROM OKC_REP_CONTRACTS_ALL
2250     WHERE contract_id = p_contract_id;
2251 
2252     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2253         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2254                 'Deleted Contract header record');
2255     END IF;
2256     -- If Version > 1, copy the latest version from the archive table.
2257     if (contract_rec.contract_version_num > 1) THEN
2258         l_prev_version := contract_rec.contract_version_num - 1;
2259         INSERT INTO OKC_REP_CONTRACTS_ALL(
2260             CONTRACT_ID,
2261             CONTRACT_VERSION_NUM,
2262             CONTRACT_NUMBER,
2263             CONTRACT_TYPE,
2264             CONTRACT_STATUS_CODE,
2265             ORG_ID,
2266             OWNER_ID,
2267             SOURCE_LANGUAGE,
2268             CONTRACT_NAME,
2269             CONTRACT_DESC,
2270             VERSION_COMMENTS,
2271             AUTHORING_PARTY_CODE,
2272             CONTRACT_EFFECTIVE_DATE,
2273             CONTRACT_EXPIRATION_DATE,
2274             CURRENCY_CODE,
2275             AMOUNT,
2276             OVERALL_RISK_CODE,
2277             CANCELLATION_COMMENTS,
2278             CANCELLATION_DATE,
2279             TERMINATION_COMMENTS,
2280             TERMINATION_DATE,
2281             KEYWORDS,
2282             PHYSICAL_LOCATION,
2283             EXPIRE_NTF_FLAG,
2284             EXPIRE_NTF_PERIOD,
2285             NOTIFY_CONTACT_ROLE_ID,
2286             WF_EXP_NTF_ITEM_KEY,
2287             USE_ACL_FLAG,
2288             WF_ITEM_TYPE,
2289             WF_ITEM_KEY,
2290             PROGRAM_ID,
2291             PROGRAM_LOGIN_ID,
2292             PROGRAM_APPLICATION_ID,
2293             REQUEST_ID,
2294             LATEST_SIGNED_VER_NUMBER,
2295             ATTRIBUTE_CATEGORY,
2296             ATTRIBUTE1,
2297             ATTRIBUTE2,
2298             ATTRIBUTE3,
2299             ATTRIBUTE4,
2300             ATTRIBUTE5,
2301             ATTRIBUTE6,
2302             ATTRIBUTE7,
2303             ATTRIBUTE8,
2304             ATTRIBUTE9,
2305             ATTRIBUTE10,
2306             ATTRIBUTE11,
2307             ATTRIBUTE12,
2308             ATTRIBUTE13,
2309             ATTRIBUTE14,
2310             ATTRIBUTE15,
2311             OBJECT_VERSION_NUMBER,
2312             CREATED_BY,
2313             CREATION_DATE,
2314             LAST_UPDATED_BY,
2315             LAST_UPDATE_LOGIN,
2316             LAST_UPDATE_DATE,
2317             CONTRACT_LAST_UPDATED_BY,
2318             CONTRACT_LAST_UPDATE_DATE,
2319             REFERENCE_DOCUMENT_TYPE,
2320 	    REFERENCE_DOCUMENT_NUMBER,
2321 	    ESIGNATURE_REQUIRED,
2322 	    UDA_TEMPLATE_ID,
2323 	    SBCR_COORDINATION_TYPE)
2324       SELECT
2325             CONTRACT_ID,
2326             CONTRACT_VERSION_NUM,
2327             CONTRACT_NUMBER,
2328             CONTRACT_TYPE,
2329             CONTRACT_STATUS_CODE,
2330             ORG_ID,
2331             OWNER_ID,
2332             SOURCE_LANGUAGE,
2333             CONTRACT_NAME,
2334             CONTRACT_DESC,
2335             VERSION_COMMENTS,
2336             AUTHORING_PARTY_CODE,
2337             CONTRACT_EFFECTIVE_DATE,
2338             CONTRACT_EXPIRATION_DATE,
2339             CURRENCY_CODE,
2340             AMOUNT,
2341             OVERALL_RISK_CODE,
2342             CANCELLATION_COMMENTS,
2343             CANCELLATION_DATE,
2344             TERMINATION_COMMENTS,
2345             TERMINATION_DATE,
2346             KEYWORDS,
2347             PHYSICAL_LOCATION,
2348             EXPIRE_NTF_FLAG,
2349             EXPIRE_NTF_PERIOD,
2350             NOTIFY_CONTACT_ROLE_ID,
2351             WF_EXP_NTF_ITEM_KEY,
2352             USE_ACL_FLAG,
2353             WF_ITEM_TYPE,
2354             WF_ITEM_KEY,
2355             PROGRAM_ID,
2356             PROGRAM_LOGIN_ID,
2357             PROGRAM_APPLICATION_ID,
2358             REQUEST_ID,
2359             LATEST_SIGNED_VER_NUMBER,
2360             ATTRIBUTE_CATEGORY,
2361             ATTRIBUTE1,
2362             ATTRIBUTE2,
2363             ATTRIBUTE3,
2364             ATTRIBUTE4,
2365             ATTRIBUTE5,
2366             ATTRIBUTE6,
2367             ATTRIBUTE7,
2368             ATTRIBUTE8,
2369             ATTRIBUTE9,
2370             ATTRIBUTE10,
2371             ATTRIBUTE11,
2372             ATTRIBUTE12,
2373             ATTRIBUTE13,
2374             ATTRIBUTE14,
2375             ATTRIBUTE15,
2376             OBJECT_VERSION_NUMBER,
2377             CREATED_BY,
2378             CREATION_DATE,
2379             LAST_UPDATED_BY,
2380             LAST_UPDATE_LOGIN,
2381             LAST_UPDATE_DATE,
2382             CONTRACT_LAST_UPDATED_BY,
2383             CONTRACT_LAST_UPDATE_DATE,
2384             REFERENCE_DOCUMENT_TYPE,
2385             REFERENCE_DOCUMENT_NUMBER,
2386 		  ESIGNATURE_REQUIRED,
2387 		  UDA_TEMPLATE_ID,
2388 		  SBCR_COORDINATION_TYPE
2389         FROM OKC_REP_CONTRACT_VERS
2390         WHERE contract_id = p_contract_id
2391               AND contract_version_num = l_prev_version;
2392 
2393         -- Also, we need to delete this history table record that has been copied to
2394         -- the main table
2395         DELETE FROM OKC_REP_CONTRACT_VERS
2396           WHERE contract_id = p_contract_id
2397               AND contract_version_num = l_prev_version;
2398     END IF;  --  (contract_rec.contract_version_num > 1)
2399 
2400     -- Standard check of p_commit
2401     IF FND_API.To_Boolean( p_commit ) THEN
2402       COMMIT WORK;
2403     END IF;
2404 
2405     CLOSE contract_csr;
2406     -- Standard call to get message count and if count is 1, get message info.
2407     FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
2408 
2409   IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2410         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
2411                 'Leaving OKC_REP_CONTRACT_PROCESS_PVT.delete_contract');
2412     END IF;
2413 
2414 
2415     EXCEPTION
2416       WHEN FND_API.G_EXC_ERROR THEN
2417         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2418            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
2419                  g_module || l_api_name,
2420                  'Leaving delete_contract:FND_API.G_EXC_ERROR Exception');
2421         END IF;
2422         --close cursors
2423         IF (contract_csr%ISOPEN) THEN
2424           CLOSE contract_csr ;
2425         END IF;
2426         ROLLBACK TO delete_contract_PVT;
2427         x_return_status := FND_API.G_RET_STS_ERROR;
2428         FND_MSG_PUB.Count_And_Get(
2429         p_count =>  x_msg_count,
2430         p_data  =>  x_msg_data
2431         );
2432 
2433       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2434         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2435            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
2436                  g_module || l_api_name,
2437                  'Leaving delete_contract:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
2438         END IF;
2439         --close cursors
2440         IF (contract_csr%ISOPEN) THEN
2441           CLOSE contract_csr ;
2442         END IF;
2443         ROLLBACK TO delete_contract_PVT;
2444         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2445         FND_MSG_PUB.Count_And_Get(
2446         p_count =>  x_msg_count,
2447         p_data  =>  x_msg_data
2448         );
2449 
2450       WHEN OTHERS THEN
2451         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2452            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
2453                  g_module || l_api_name,
2454                  'Leaving delete_contract because of EXCEPTION: ' || sqlerrm);
2455         END IF;
2456         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
2457                             p_msg_name     => G_UNEXPECTED_ERROR,
2458                             p_token1       => G_SQLCODE_TOKEN,
2459                             p_token1_value => sqlcode,
2460                             p_token2       => G_SQLERRM_TOKEN,
2461                             p_token2_value => sqlerrm);
2462         ROLLBACK TO delete_contract_PVT;
2463         --close cursors
2464         IF (contract_csr%ISOPEN) THEN
2465           CLOSE contract_csr ;
2466         END IF;
2467         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2468         FND_MSG_PUB.Count_And_Get(
2469         p_count =>  x_msg_count,
2470         p_data  =>  x_msg_data
2471         );
2472   END delete_contract;
2473 
2474 
2475 -- Start of comments
2476 --API name      : copy_contacts
2477 --Type          : Private.
2478 --Function      : Copies party contacts of source contract to target contract
2479 --Pre-reqs      : None.
2480 --Parameters    :
2481 --IN            : p_api_version         IN NUMBER       Required
2482 --              : p_init_msg_list       IN VARCHAR2     Optional
2483 --                   Default = FND_API.G_FALSE
2484 --              : p_commit              IN VARCHAR2     Optional
2485 --                   Default = FND_API.G_FALSE
2486 --              : p_source_contract_id         IN NUMBER       Required
2487 --                   Id of the contract whose contacts are to be copied
2488 --              : p_target_contract_id         IN NUMBER       Required
2489 --                   Id of the contract to which source contacts are to be copied
2490 --OUT           : x_return_status       OUT  VARCHAR2(1)
2491 --              : x_msg_count           OUT  NUMBER
2492 --              : x_msg_data            OUT  VARCHAR2(2000)
2493 --Note          :
2494 -- End of comments
2495   PROCEDURE copy_contacts(
2496       p_api_version       IN  NUMBER,
2497       p_init_msg_list     IN  VARCHAR2,
2498       p_commit              IN VARCHAR2,
2499       p_source_contract_id  IN  NUMBER,
2500       p_target_contract_id  IN  NUMBER,
2501       x_msg_data          OUT NOCOPY  VARCHAR2,
2502       x_msg_count         OUT NOCOPY  NUMBER,
2503       x_return_status     OUT NOCOPY  VARCHAR2)  IS
2504 
2505     l_api_name        VARCHAR2(30);
2506     l_api_version           NUMBER;
2507     l_created_by            OKC_REP_PARTY_CONTACTS.CREATED_BY%TYPE;
2508     l_creation_date         OKC_REP_PARTY_CONTACTS.CREATION_DATE%TYPE;
2509     l_last_updated_by       OKC_REP_PARTY_CONTACTS.LAST_UPDATED_BY%TYPE;
2510     l_last_update_login     OKC_REP_PARTY_CONTACTS.LAST_UPDATE_LOGIN%TYPE;
2511     l_last_update_date      OKC_REP_PARTY_CONTACTS.LAST_UPDATE_DATE%TYPE;
2512 
2513     -- Contact cursor.
2514     CURSOR contact_csr IS
2515       SELECT *
2516       FROM OKC_REP_PARTY_CONTACTS
2517       WHERE contract_id = p_source_contract_id;
2518   BEGIN
2519 
2520     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2521         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
2522                 'Entered OKC_REP_CONTRACT_PROCESS_PVT.copy_contacts');
2523         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
2524                 'Source Contract Id is: ' || to_char(p_source_contract_id));
2525         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
2526                 'Target Contract Id is: ' || to_char(p_target_contract_id));
2527     END IF;
2528     l_api_name := 'copy_contacts';
2529     l_api_version := 1.0;
2530   -- Standard Start of API savepoint
2531     SAVEPOINT copy_contacts_PVT;
2532     -- Standard call to check for call compatibility.
2533     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
2534       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2535     END IF;
2536     -- Initialize message list if p_init_msg_list is set to TRUE.
2537     IF FND_API.to_Boolean( p_init_msg_list ) THEN
2538       FND_MSG_PUB.initialize;
2539     END IF;
2540 
2541     --  Initialize API return status to success
2542     x_return_status := FND_API.G_RET_STS_SUCCESS;
2543     -- Populate who columns
2544     l_creation_date := Sysdate;
2545     l_created_by := Fnd_Global.User_Id;
2546     l_last_update_date := l_creation_date;
2547     l_last_updated_by := l_created_by;
2548     l_last_update_login := Fnd_Global.Login_Id;
2549 
2550     FOR contact_rec IN contact_csr LOOP
2551       IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2552         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2553                 'Party Id is: ' || contact_rec.party_id);
2554         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2555                 'Party Role Code is: ' || contact_rec.party_role_code);
2556         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2557                 'Contact Id is: ' || contact_rec.contact_id);
2558         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2559                 'Contact Role Code is: ' || contact_rec.contact_role_id);
2560       END IF;
2561     -- INSERT THE NEW RECORDS into OKC_REP_PARTY_CONTACTS table
2562 
2563     INSERT INTO OKC_REP_PARTY_CONTACTS (
2564         CONTRACT_ID,
2565         PARTY_ID,
2566         PARTY_ROLE_CODE,
2567         CONTACT_ID,
2568         CONTACT_ROLE_ID,
2569         OBJECT_VERSION_NUMBER,
2570         CREATED_BY,
2571         CREATION_DATE,
2572         LAST_UPDATED_BY,
2573         LAST_UPDATE_DATE,
2574         LAST_UPDATE_LOGIN,
2575         SIGNATURE_SEQUENCE,
2576         ESIGNATURE_TYPE)
2577     VALUES(
2578         p_target_contract_id,
2579         contact_rec.PARTY_ID,
2580         contact_rec.PARTY_ROLE_CODE,
2581         contact_rec.CONTACT_ID,
2582         contact_rec.CONTACT_ROLE_ID,
2583         1,
2584         l_created_by,
2585         l_creation_date,
2586         l_last_updated_by,
2587         l_last_update_date,
2588         l_last_update_login,
2589         contact_rec.SIGNATURE_SEQUENCE,
2590         contact_rec.ESIGNATURE_TYPE);
2591     END LOOP;
2592     -- Standard check of p_commit
2593     IF FND_API.To_Boolean( p_commit ) THEN
2594       COMMIT WORK;
2595     END IF;
2596 
2597     -- Standard call to get message count and if count is 1, get message info.
2598     FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
2599 
2600   IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2601         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
2602                 'Leaving OKC_REP_CONTRACT_PROCESS_PVT.copy_contacts');
2603     END IF;
2604 
2605 
2606     EXCEPTION
2607       WHEN FND_API.G_EXC_ERROR THEN
2608         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2609            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
2610                  g_module || l_api_name,
2611                  'Leaving copy_contacts:FND_API.G_EXC_ERROR Exception');
2612         END IF;
2613         ROLLBACK TO copy_contacts_PVT;
2614         x_return_status := FND_API.G_RET_STS_ERROR;
2615         FND_MSG_PUB.Count_And_Get(
2616         p_count =>  x_msg_count,
2617         p_data  =>  x_msg_data
2618         );
2619 
2620       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2621         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2622            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
2623                  g_module || l_api_name,
2624                  'Leaving copy_contacts:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
2625         END IF;
2626         ROLLBACK TO copy_contacts_PVT;
2627         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2628         FND_MSG_PUB.Count_And_Get(
2629         p_count =>  x_msg_count,
2630         p_data  =>  x_msg_data
2631         );
2632 
2633       WHEN OTHERS THEN
2634         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2635            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
2636                  g_module || l_api_name,
2637                  'Leaving copy_contacts because of EXCEPTION: ' || sqlerrm);
2638         END IF;
2639         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
2640                             p_msg_name     => G_UNEXPECTED_ERROR,
2641                             p_token1       => G_SQLCODE_TOKEN,
2642                             p_token1_value => sqlcode,
2643                             p_token2       => G_SQLERRM_TOKEN,
2644                             p_token2_value => sqlerrm);
2645         ROLLBACK TO copy_contacts_PVT;
2646         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2647         FND_MSG_PUB.Count_And_Get(
2648         p_count =>  x_msg_count,
2649         p_data  =>  x_msg_data
2650         );
2651   END copy_contacts;
2652 
2653 
2654 -- Start of comments
2655 --API name      : copy_parties
2656 --Type          : Private.
2657 --Function      : Copies parties of source contract to target contract
2658 --Pre-reqs      : None.
2659 --Parameters    :
2660 --IN            : p_api_version         IN NUMBER       Required
2661 --              : p_init_msg_list       IN VARCHAR2     Optional
2662 --                   Default = FND_API.G_FALSE
2663 --              : p_commit              IN VARCHAR2     Optional
2664 --                   Default = FND_API.G_FALSE
2665 --              : p_source_contract_id         IN NUMBER       Required
2666 --                   Id of the contract whose parties are to be copied
2667 --              : p_target_contract_id         IN NUMBER       Required
2668 --                   Id of the contract to which source parties are to be copied
2669 --OUT           : x_return_status       OUT  VARCHAR2(1)
2670 --              : x_msg_count           OUT  NUMBER
2671 --              : x_msg_data            OUT  VARCHAR2(2000)
2672 --Note          :
2673 -- End of comments
2674   PROCEDURE copy_parties(
2675       p_api_version       IN  NUMBER,
2676       p_init_msg_list     IN  VARCHAR2,
2677       p_commit              IN VARCHAR2,
2678       p_source_contract_id  IN  NUMBER,
2679       p_target_contract_id  IN  NUMBER,
2680       x_msg_data          OUT NOCOPY  VARCHAR2,
2681       x_msg_count         OUT NOCOPY  NUMBER,
2682       x_return_status     OUT NOCOPY  VARCHAR2) IS
2683 
2684     l_api_name        VARCHAR2(30);
2685     l_api_version         NUMBER;
2686     l_created_by            OKC_REP_CONTRACT_PARTIES.CREATED_BY%TYPE;
2687     l_creation_date         OKC_REP_CONTRACT_PARTIES.CREATION_DATE%TYPE;
2688     l_last_updated_by       OKC_REP_CONTRACT_PARTIES.LAST_UPDATED_BY%TYPE;
2689     l_last_update_login     OKC_REP_CONTRACT_PARTIES.LAST_UPDATE_LOGIN%TYPE;
2690     l_last_update_date      OKC_REP_CONTRACT_PARTIES.LAST_UPDATE_DATE%TYPE;
2691 
2692     -- Contact cursor.
2693     CURSOR party_csr IS
2694       SELECT *
2695       FROM OKC_REP_CONTRACT_PARTIES
2696       WHERE contract_id = p_source_contract_id;
2697   BEGIN
2698 
2699     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2700         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
2701                 'Entered OKC_REP_CONTRACT_PROCESS_PVT.copy_parties');
2702         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
2703                 'Source Contract Id is: ' || to_char(p_source_contract_id));
2704         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
2705                 'Target Contract Id is: ' || to_char(p_target_contract_id));
2706     END IF;
2707     l_api_name := 'copy_parties';
2708     l_api_version := 1.0;
2709   -- Standard Start of API savepoint
2710     SAVEPOINT copy_parties_PVT;
2711     -- Standard call to check for call compatibility.
2712     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
2713       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2714     END IF;
2715     -- Initialize message list if p_init_msg_list is set to TRUE.
2716     IF FND_API.to_Boolean( p_init_msg_list ) THEN
2717       FND_MSG_PUB.initialize;
2718     END IF;
2719 
2720     --  Initialize API return status to success
2721     x_return_status := FND_API.G_RET_STS_SUCCESS;
2722     -- Populate who columns
2723     l_creation_date := Sysdate;
2724     l_created_by := Fnd_Global.User_Id;
2725     l_last_update_date := l_creation_date;
2726     l_last_updated_by := l_created_by;
2727     l_last_update_login := Fnd_Global.Login_Id;
2728 
2729     FOR party_rec IN party_csr LOOP
2730       IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2731         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2732                 'Party Id is: ' || party_rec.party_id);
2733         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2734                 'Party Role Code is: ' || party_rec.party_role_code);
2735         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2736                 'Party Location ID is: ' || party_rec.party_location_id);
2737       END IF;
2738     -- INSERT THE NEW RECORDS into OKC_REP_CONTRACT_PARTIES table
2739     INSERT INTO OKC_REP_CONTRACT_PARTIES (
2740         CONTRACT_ID,
2741         PARTY_ID,
2742         PARTY_ROLE_CODE,
2743         PARTY_LOCATION_ID,
2744         OBJECT_VERSION_NUMBER,
2745         CREATED_BY,
2746         CREATION_DATE,
2747         LAST_UPDATED_BY,
2748         LAST_UPDATE_DATE,
2749         LAST_UPDATE_LOGIN)
2750     VALUES(
2751         p_target_contract_id,
2752         party_rec.PARTY_ID,
2753         party_rec.PARTY_ROLE_CODE,
2754         party_rec.PARTY_LOCATION_ID,
2755         1,
2756         l_created_by,
2757         l_creation_date,
2758         l_last_updated_by,
2759         l_last_update_date,
2760         l_last_update_login);
2761     END LOOP;
2762     -- Standard check of p_commit
2763     IF FND_API.To_Boolean( p_commit ) THEN
2764       COMMIT WORK;
2765     END IF;
2766 
2767     -- Standard call to get message count and if count is 1, get message info.
2768     FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
2769 
2770   IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2771         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
2772                 'Leaving OKC_REP_CONTRACT_PROCESS_PVT.copy_parties');
2773     END IF;
2774 
2775 
2776     EXCEPTION
2777       WHEN FND_API.G_EXC_ERROR THEN
2778         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2779            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
2780                  g_module || l_api_name,
2781                  'Leaving copy_parties:FND_API.G_EXC_ERROR Exception');
2782         END IF;
2783         ROLLBACK TO copy_parties_PVT;
2784         x_return_status := FND_API.G_RET_STS_ERROR;
2785         FND_MSG_PUB.Count_And_Get(
2786         p_count =>  x_msg_count,
2787         p_data  =>  x_msg_data
2788         );
2789 
2790       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2791         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2792            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
2793                  g_module || l_api_name,
2794                  'Leaving copy_parties:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
2795         END IF;
2796         ROLLBACK TO copy_parties_PVT;
2797         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2798         FND_MSG_PUB.Count_And_Get(
2799         p_count =>  x_msg_count,
2800         p_data  =>  x_msg_data
2801         );
2802 
2803       WHEN OTHERS THEN
2804         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2805            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
2806                  g_module || l_api_name,
2807                  'Leaving copy_parties because of EXCEPTION: ' || sqlerrm);
2808         END IF;
2809         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
2810                             p_msg_name     => G_UNEXPECTED_ERROR,
2811                             p_token1       => G_SQLCODE_TOKEN,
2812                             p_token1_value => sqlcode,
2813                             p_token2       => G_SQLERRM_TOKEN,
2814                             p_token2_value => sqlerrm);
2815         ROLLBACK TO copy_parties_PVT;
2816         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2817         FND_MSG_PUB.Count_And_Get(
2818         p_count =>  x_msg_count,
2819         p_data  =>  x_msg_data
2820         );
2821   END copy_parties;
2822 
2823 
2824 -- Start of comments
2825 --API name      : copy_risks
2826 --Type          : Private.
2827 --Function      : Copies risks of source contract to target contract
2828 --Pre-reqs      : None.
2829 --Parameters    :
2830 --IN            : p_api_version         IN NUMBER       Required
2831 --              : p_init_msg_list       IN VARCHAR2     Optional
2832 --                   Default = FND_API.G_FALSE
2833 --              : p_commit              IN VARCHAR2     Optional
2834 --                   Default = FND_API.G_FALSE
2835 --              : p_source_contract_id         IN NUMBER       Required
2836 --                   Id of the contract whose risks are to be copied
2837 --              : p_target_contract_id         IN NUMBER       Required
2838 --                   Id of the contract to which source contract risks are to be copied
2839 --OUT           : x_return_status       OUT  VARCHAR2(1)
2840 --              : x_msg_count           OUT  NUMBER
2841 --              : x_msg_data            OUT  VARCHAR2(2000)
2842 --Note          :
2843 -- End of comments
2844   PROCEDURE copy_risks(
2845       p_api_version       IN  NUMBER,
2846       p_init_msg_list     IN  VARCHAR2,
2847       p_commit              IN VARCHAR2,
2848       p_source_contract_id  IN  NUMBER,
2849       p_target_contract_id  IN  NUMBER,
2850       x_msg_data          OUT NOCOPY  VARCHAR2,
2851       x_msg_count         OUT NOCOPY  NUMBER,
2852       x_return_status     OUT NOCOPY  VARCHAR2) IS
2853 
2854      l_api_name         VARCHAR2(30);
2855     l_api_version            NUMBER;
2856     l_created_by            OKC_CONTRACT_RISKS.CREATED_BY%TYPE;
2857     l_creation_date         OKC_CONTRACT_RISKS.CREATION_DATE%TYPE;
2858     l_last_updated_by       OKC_CONTRACT_RISKS.LAST_UPDATED_BY%TYPE;
2859     l_last_update_login     OKC_CONTRACT_RISKS.LAST_UPDATE_LOGIN%TYPE;
2860     l_last_update_date      OKC_CONTRACT_RISKS.LAST_UPDATE_DATE%TYPE;
2861     -- l_contract_risk_id      OKC_CONTRACT_RISKS.CONTRACT_RISK_ID%TYPE;
2862 
2863 
2864     -- Contact cursor.
2865     CURSOR risk_csr(doc_type VARCHAR2, doc_id NUMBER) IS
2866       SELECT *
2867       FROM OKC_CONTRACT_RISKS
2868       WHERE business_document_type = doc_type
2869       AND   business_document_id = doc_id;
2870 
2871     -- Contract cursor to get contract_type and version
2872     CURSOR contract_csr IS
2873       SELECT contract_type, contract_version_num
2874       FROM OKC_REP_CONTRACTS_ALL
2875       WHERE contract_id = p_source_contract_id;
2876 
2877   contract_rec       contract_csr%ROWTYPE;
2878   BEGIN
2879 
2880     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2881         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
2882                 'Entered OKC_REP_CONTRACT_PROCESS_PVT.copy_risks');
2883         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
2884                 'Source Contract Id is: ' || to_char(p_source_contract_id));
2885         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
2886                 'Target Contract Id is: ' || to_char(p_target_contract_id));
2887     END IF;
2888     l_api_name := 'copy_risks';
2889     l_api_version := 1.0;
2890   -- Standard Start of API savepoint
2891     SAVEPOINT copy_risks_PVT;
2892     -- Standard call to check for call compatibility.
2893     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
2894       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2895     END IF;
2896     -- Initialize message list if p_init_msg_list is set to TRUE.
2897     IF FND_API.to_Boolean( p_init_msg_list ) THEN
2898       FND_MSG_PUB.initialize;
2899     END IF;
2900 
2901     --  Initialize API return status to success
2902     x_return_status := FND_API.G_RET_STS_SUCCESS;
2903 
2904     -- Populate who columns
2905     l_creation_date := Sysdate;
2906     l_created_by := Fnd_Global.User_Id;
2907     l_last_update_date := l_creation_date;
2908     l_last_updated_by := l_created_by;
2909     l_last_update_login := Fnd_Global.Login_Id;
2910 
2911     -- Get Contract type and version number columns
2912     -- Get effective dates and version of the contract.
2913     OPEN contract_csr;
2914     FETCH contract_csr INTO contract_rec;
2915     IF(contract_csr%NOTFOUND) THEN
2916           IF (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2917               FND_LOG.STRING(FND_LOG.LEVEL_EXCEPTION ,
2918                     G_MODULE||l_api_name,
2919                                  'Invalid Contract Id: '|| p_source_contract_id);
2920           END IF;
2921           Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
2922                             p_msg_name     => G_INVALID_CONTRACT_ID_MSG,
2923                             p_token1       => G_CONTRACT_ID_TOKEN,
2924                             p_token1_value => to_char(p_source_contract_id));
2925           RAISE FND_API.G_EXC_ERROR;
2926           -- RAISE NO_DATA_FOUND;
2927     END IF;
2928 
2929 
2930     FOR risk_rec IN risk_csr(contract_rec.contract_type, p_source_contract_id) LOOP
2931       -- Get the id column.
2932       -- SELECT OKC_CONTRACT_RISKS_S.nextval INTO l_contract_risk_id FROM dual;
2933 
2934       IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2935         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2936                 'Contract Type is: ' || contract_rec.CONTRACT_TYPE);
2937         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2938                 'Contract Id is: ' || risk_rec.BUSINESS_DOCUMENT_ID);
2939         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2940                 'Contract Version is: ' || contract_rec.CONTRACT_VERSION_NUM);
2941         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2942                 'Risk Event ID is: ' || risk_rec.RISK_EVENT_ID);
2943         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2944                 'Probability code is: ' || risk_rec.PROBABILITY_CODE);
2945         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2946                 'Impact Code is: ' || risk_rec.IMPACT_CODE);
2947         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2948                 'Risk Occurred Flag is: ' || risk_rec.RISK_OCCURRED_FLAG);
2949         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
2950                 'Occurence Date is: ' || to_char(risk_rec.OCCURRENCE_DATE));
2951       END IF;
2952     -- INSERT THE NEW RECORDS into OKC_CONTRACT_RISKS table
2953     INSERT INTO OKC_CONTRACT_RISKS (
2954         -- CONTRACT_RISK_ID,
2955         BUSINESS_DOCUMENT_TYPE,
2956         BUSINESS_DOCUMENT_ID,
2957         BUSINESS_DOCUMENT_VERSION,
2958         RISK_EVENT_ID,
2959         PROBABILITY_CODE,
2960         IMPACT_CODE,
2961         COMMENTS,
2962         RISK_OCCURRED_FLAG,
2963         OCCURRENCE_DATE,
2964         OBJECT_VERSION_NUMBER,
2965         CREATED_BY,
2966         CREATION_DATE,
2967         LAST_UPDATED_BY,
2968         LAST_UPDATE_DATE,
2969         LAST_UPDATE_LOGIN)
2970     VALUES(
2971         -- l_contract_risk_id,
2972         --risk_rec.CONTRACT_ID,
2973         contract_rec.contract_type,
2974         p_target_contract_id,
2975         risk_rec.BUSINESS_DOCUMENT_VERSION,
2976         risk_rec.RISK_EVENT_ID,
2977         risk_rec.PROBABILITY_CODE,
2978         risk_rec.IMPACT_CODE,
2979         risk_rec.COMMENTS,
2980         risk_rec.RISK_OCCURRED_FLAG,
2981         risk_rec.OCCURRENCE_DATE,
2982         1,
2983         l_created_by,
2984         l_creation_date,
2985         l_last_updated_by,
2986         l_last_update_date,
2987         l_last_update_login);
2988     END LOOP;
2989     -- Standard check of p_commit
2990     IF FND_API.To_Boolean( p_commit ) THEN
2991       COMMIT WORK;
2992     END IF;
2993 
2994     -- Standard call to get message count and if count is 1, get message info.
2995     FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
2996 
2997   IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2998         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
2999                 'Leaving OKC_REP_CONTRACT_PROCESS_PVT.copy_risks');
3000     END IF;
3001 
3002 
3003     EXCEPTION
3004       WHEN FND_API.G_EXC_ERROR THEN
3005         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3006            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
3007                  g_module || l_api_name,
3008                  'Leaving copy_risks:FND_API.G_EXC_ERROR Exception');
3009         END IF;
3010         --close cursors
3011         IF (contract_csr%ISOPEN) THEN
3012           CLOSE contract_csr ;
3013         END IF;
3014         ROLLBACK TO copy_risks_PVT;
3015         x_return_status := FND_API.G_RET_STS_ERROR;
3016         FND_MSG_PUB.Count_And_Get(
3017         p_count =>  x_msg_count,
3018         p_data  =>  x_msg_data
3019         );
3020 
3021       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3022         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3023            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
3024                  g_module || l_api_name,
3025                  'Leaving copy_risks:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
3026         END IF;
3027         --close cursors
3028         IF (contract_csr%ISOPEN) THEN
3029           CLOSE contract_csr ;
3030         END IF;
3031         ROLLBACK TO copy_risks_PVT;
3032         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3033         FND_MSG_PUB.Count_And_Get(
3034         p_count =>  x_msg_count,
3035         p_data  =>  x_msg_data
3036         );
3037 
3038       WHEN OTHERS THEN
3039         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3040            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
3041                  g_module || l_api_name,
3042                  'Leaving copy_risks because of EXCEPTION: ' || sqlerrm);
3043         END IF;
3044         --close cursors
3045         IF (contract_csr%ISOPEN) THEN
3046           CLOSE contract_csr ;
3047         END IF;
3048         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
3049                             p_msg_name     => G_UNEXPECTED_ERROR,
3050                             p_token1       => G_SQLCODE_TOKEN,
3051                             p_token1_value => sqlcode,
3052                             p_token2       => G_SQLERRM_TOKEN,
3053                             p_token2_value => sqlerrm);
3054         ROLLBACK TO copy_risks_PVT;
3055         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3056         FND_MSG_PUB.Count_And_Get(
3057         p_count =>  x_msg_count,
3058         p_data  =>  x_msg_data
3059         );
3060   END copy_risks;
3061 
3062 
3063   -- Start of comments
3064 --API name      : copy_ACL
3065 --Type          : Private.
3066 --Function      : Copies ACL records from source contract to target contract
3067 --Pre-reqs      : None.
3068 --Parameters    :
3069 --IN            : p_api_version         IN NUMBER       Required
3070 --              : p_init_msg_list       IN VARCHAR2     Optional
3071 --                   Default = FND_API.G_FALSE
3072 --              : p_commit              IN VARCHAR2     Optional
3073 --                   Default = FND_API.G_FALSE
3074 --              : p_source_contract_id         IN NUMBER       Required
3075 --                   Id of the contract whose ACLs are to be copied
3076 --              : p_target_contract_id         IN NUMBER       Required
3077 --                   Id of the contract to which source contract ACL are to be copied
3078 --OUT           : x_return_status       OUT  VARCHAR2(1)
3079 --              : x_msg_count           OUT  NUMBER
3080 --              : x_msg_data            OUT  VARCHAR2(2000)
3081 --Note          :
3082 -- End of comments
3083   PROCEDURE copy_ACL(
3084       p_api_version       IN  NUMBER,
3085       p_init_msg_list     IN  VARCHAR2,
3086       p_commit              IN VARCHAR2,
3087       p_source_contract_id  IN  NUMBER,
3088       p_target_contract_id  IN  NUMBER,
3089       x_msg_data          OUT NOCOPY  VARCHAR2,
3090       x_msg_count         OUT NOCOPY  NUMBER,
3091       x_return_status     OUT NOCOPY  VARCHAR2)IS
3092 
3093      l_api_name          VARCHAR2(30);
3094      l_api_version       NUMBER;
3095      x_success           VARCHAR2(1);
3096      x_errorcode         NUMBER;
3097      x_grant_guid        RAW(16);
3098 
3099 
3100     CURSOR acl_csr IS
3101       SELECT
3102         fgrant.grantee_type       grantee_type,
3103         fgrant.grantee_key        grantee_key,
3104         fgrant.instance_type      instance_type,
3105         fgrant.instance_set_id    instance_set_id,
3106         fmenu.menu_name           menu_name,
3107         fgrant.program_name       program_name,
3108         fgrant.program_tag        program_tag,
3109         fgrant.parameter1         parameter1,
3110         fgrant.parameter2         parameter2,
3111         fgrant.parameter3         parameter3
3112       FROM FND_GRANTS fgrant, FND_OBJECTS fobj, FND_MENUS fmenu
3113       WHERE fgrant.menu_id = fmenu.menu_id
3114           AND fgrant.object_id = fobj.object_id
3115           AND fobj.obj_name = 'OKC_REP_CONTRACT'
3116           AND fgrant.instance_pk1_value = to_char(p_source_contract_id);
3117 
3118   BEGIN
3119 
3120     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3121        FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
3122                 'Entered OKC_REP_CONTRACT_PROCESS_PVT.copy_ACL');
3123         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
3124                 'Source Contract Id is: ' || p_source_contract_id);
3125         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
3126                 'Target Contract Id is: ' || p_target_contract_id);
3127     END IF;
3128     l_api_name := 'copy_ACL';
3129     l_api_version := 1.0;
3130   -- Standard Start of API savepoint
3131     SAVEPOINT copy_ACL_PVT;
3132     -- Standard call to check for call compatibility.
3133     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
3134       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3135     END IF;
3136     -- Initialize message list if p_init_msg_list is set to TRUE.
3137     IF FND_API.to_Boolean( p_init_msg_list ) THEN
3138       FND_MSG_PUB.initialize;
3139     END IF;
3140 
3141     --  Initialize API return status to success
3142     x_return_status := FND_API.G_RET_STS_SUCCESS;
3143 
3144     FOR acl_rec IN acl_csr LOOP
3145       IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3146         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3147                 'grantee_type is: ' || acl_rec.grantee_type);
3148         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3149                 'grantee_key is: ' || acl_rec.grantee_key);
3150         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3151                 'instance_type is: ' || acl_rec.instance_type);
3152         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3153                 'instance_set_id is: ' || acl_rec.instance_set_id);
3154         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3155                 'menu_name is: ' || acl_rec.menu_name);
3156         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3157                 'program_name is: ' || acl_rec.program_name);
3158         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3159                 'program_tag is: ' || acl_rec.program_tag);
3160       END IF;
3161     -- call FND_GRANT's delete api
3162     FND_GRANTS_PKG.grant_function(
3163                        p_api_version         => 1.0,
3164                        p_menu_name           => acl_rec.menu_name, -- Menu to be deleted.
3165                        p_object_name         => G_REP_CONTRACT,
3166                        p_instance_type       => acl_rec.instance_type, -- INSTANCE or SET
3167                        p_instance_set_id     => acl_rec.instance_set_id, -- Instance set id.
3168                        p_instance_pk1_value  => to_char(p_target_contract_id), -- Object PK Value
3169                        p_grantee_type        => acl_rec.grantee_type,  -- USER or GROUP
3170                        p_grantee_key         => acl_rec.grantee_key,   -- user_id or group_id
3171                        p_start_date          => sysdate,
3172                        p_end_date            => null,
3173              p_program_name        => acl_rec.program_name,   -- name of the program that handles grant.
3174                        p_program_tag         => acl_rec.program_tag,    -- tag used by the program that handles grant.
3175                        p_parameter1          => acl_rec.parameter1,     -- resource type
3176                        p_parameter2          => acl_rec.parameter2,     -- resource id
3177                        p_parameter3          => acl_rec.parameter3,     -- access type
3178                        x_grant_guid          => x_grant_guid,
3179                        x_success             => x_success,              -- return param. 'T' or 'F'
3180                        x_errorcode             => x_errorcode );
3181       -----------------------------------------------------
3182       IF (x_success = 'F' AND x_errorcode < 0 ) THEN
3183           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3184       ELSIF (x_success = 'F' AND x_errorcode > 0) THEN
3185           RAISE OKC_API.G_EXCEPTION_ERROR;
3186       END IF;
3187     --------------------------------------------------------
3188     END LOOP;
3189     -- Standard check of p_commit
3190     IF FND_API.To_Boolean( p_commit ) THEN
3191       COMMIT WORK;
3192     END IF;
3193 
3194     -- Standard call to get message count and if count is 1, get message info.
3195     FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
3196 
3197   IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3198         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
3199                 'Leaving OKC_REP_CONTRACT_PROCESS_PVT.copy_ACL');
3200     END IF;
3201 
3202 
3203     EXCEPTION
3204       WHEN FND_API.G_EXC_ERROR THEN
3205         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3206            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
3207                  g_module || l_api_name,
3208                  'Leaving copy_ACL:FND_API.G_EXC_ERROR Exception');
3209         END IF;
3210         ROLLBACK TO copy_ACL_PVT;
3211         x_return_status := FND_API.G_RET_STS_ERROR;
3212         FND_MSG_PUB.Count_And_Get(
3213         p_count =>  x_msg_count,
3214         p_data  =>  x_msg_data
3215         );
3216 
3217       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3218         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3219            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
3220                  g_module || l_api_name,
3221                  'Leaving copy_ACL:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
3222         END IF;
3223         ROLLBACK TO copy_ACL_PVT;
3224         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3225         FND_MSG_PUB.Count_And_Get(
3226         p_count =>  x_msg_count,
3227         p_data  =>  x_msg_data
3228         );
3229 
3230       WHEN OTHERS THEN
3231         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3232            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
3233                  g_module || l_api_name,
3234                  'Leaving copy_ACL because of EXCEPTION: ' || sqlerrm);
3235         END IF;
3236         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
3237                             p_msg_name     => G_UNEXPECTED_ERROR,
3238                             p_token1       => G_SQLCODE_TOKEN,
3239                             p_token1_value => sqlcode,
3240                             p_token2       => G_SQLERRM_TOKEN,
3241                             p_token2_value => sqlerrm);
3242         ROLLBACK TO copy_ACL_PVT;
3243         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3244         FND_MSG_PUB.Count_And_Get(
3245         p_count =>  x_msg_count,
3246         p_data  =>  x_msg_data
3247         );
3248   END copy_ACL;
3249 
3250 
3251 
3252 -- Start of comments
3253 --API name      : copy_contract_details
3254 --Type          : Private.
3255 --Function      : Copies contract details for duplication
3256 --Pre-reqs      : None.
3257 --Parameters    :
3258 --IN            : p_api_version         IN NUMBER       Required
3259 --              : p_init_msg_list       IN VARCHAR2     Optional
3260 --                   Default = FND_API.G_FALSE
3261 --              : p_commit              IN VARCHAR2     Optional
3262 --                   Default = FND_API.G_FALSE
3263 --              : p_source_contract_id          IN NUMBER       Required
3264 --                   Id of the contract whose details are to be copied
3265 --              : p_target_contract_id          IN NUMBER       Required
3266 --                   Id of the contract to which source contract details are to be copied
3267 --              : p_target_contract_number      IN VARCHAR2     Required
3268 --                   Number of the contract to which source contract details are to be copied
3269 --OUT           : x_return_status       OUT  VARCHAR2(1)
3270 --              : x_msg_count           OUT  NUMBER
3271 --              : x_msg_data            OUT  VARCHAR2(2000)
3272 --Note          :
3273 -- End of comments
3274   PROCEDURE copy_contract_details(
3275       p_api_version            IN  NUMBER,
3276       p_init_msg_list          IN  VARCHAR2,
3277       p_commit                   IN  VARCHAR2,
3278       p_source_contract_id       IN  NUMBER,
3279       p_target_contract_id       IN  NUMBER,
3280       p_target_contract_number   IN  VARCHAR2,
3281       x_msg_data               OUT NOCOPY  VARCHAR2,
3282       x_msg_count              OUT NOCOPY  NUMBER,
3283       x_return_status          OUT NOCOPY  VARCHAR2) IS
3284 
3285     l_api_name        VARCHAR2(30);
3286     l_api_version         NUMBER;
3287     l_internal_party_id            OKC_REP_CONTRACT_PARTIES.PARTY_ID%TYPE;
3288 
3289    -- Repository Enhancement 12.1  (For Duplicate Action)
3290     x_target_contract_id   OKC_REP_CONTRACTS_ALL.CONTRACT_ID%TYPE;
3291    G_TEMPLATE_MISS_REC          OKC_TERMS_TEMPLATES_PVT.template_rec_type;
3292    -- Repository Enhancement 12.1 ends
3293 
3294 
3295     CURSOR source_contract_csr IS
3296       SELECT contract_type, owner_id
3297       FROM OKC_REP_CONTRACTS_ALL
3298       WHERE contract_id = p_source_contract_id;
3299 
3300     source_contract_rec       source_contract_csr%ROWTYPE;
3301 
3302    -- Repository Enhancement 12.1(For Duplicate Action)
3303     x_target_contract_type    source_contract_rec.contract_type%TYPE;
3304    -- Repository Enhancement 12.1 ends (For Duplicate Action)
3305 
3306 
3307     CURSOR party_csr IS
3308       SELECT party_id
3309       FROM OKC_REP_CONTRACT_PARTIES
3310       WHERE contract_id = p_source_contract_id
3311       AND party_role_code = 'INTERNAL_ORG';
3312 
3313 
3314   BEGIN
3315 
3316     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3317         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
3318                 'Entered OKC_REP_CONTRACT_PROCESS_PVT.copy_contract_details');
3319         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
3320                 'Source Contract Id is: ' || p_source_contract_id);
3321         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
3322                 'Target Contract Id is: ' || p_target_contract_id);
3323         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
3324                 'Target Contract Number is: ' || p_target_contract_number);
3325     END IF;
3326     l_api_name := 'copy_contract_details';
3327     l_api_version := 1.0;
3328   -- Standard Start of API savepoint
3329     SAVEPOINT copy_contract_details_PVT;
3330     -- Standard call to check for call compatibility.
3331     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
3332       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3333     END IF;
3334     -- Initialize message list if p_init_msg_list is set to TRUE.
3335     IF FND_API.to_Boolean( p_init_msg_list ) THEN
3336       FND_MSG_PUB.initialize;
3337     END IF;
3338 
3339     --  Initialize API return status to success
3340     x_return_status := FND_API.G_RET_STS_SUCCESS;
3341 
3342     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3343       FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3344             'Calling OKC_REP_CONTRACT_PROCESS_PVT.copy_parties()');
3345     END IF;
3346     copy_parties(
3347       p_api_version          => 1.0,
3348       p_init_msg_list        => FND_API.G_FALSE,
3349       p_commit               => FND_API.G_FALSE,
3350       p_source_contract_id   => p_source_contract_id,
3351       p_target_contract_id   => p_target_contract_id,
3352       x_msg_data             => x_msg_data,
3353       x_msg_count            => x_msg_count,
3354       x_return_status        => x_return_status);
3355     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3356         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3357             'OKC_REP_CONTRACT_PROCESS_PVT.copy_parties return status is: '
3358         || x_return_status);
3359     END IF;
3360     ----------------------------------------------------
3361     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3362       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3363     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3364       RAISE OKC_API.G_EXCEPTION_ERROR;
3365     END IF;
3366     --------------------------------------------------------
3367 
3368 
3369     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3370       FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3371             'Calling OKC_REP_CONTRACT_PROCESS_PVT.copy_contacts()');
3372     END IF;
3373     copy_contacts(
3374       p_api_version          => 1.0,
3375       p_init_msg_list        => FND_API.G_FALSE,
3376       p_commit               => FND_API.G_FALSE,
3377       p_source_contract_id   => p_source_contract_id,
3378       p_target_contract_id   => p_target_contract_id,
3379       x_msg_data          => x_msg_data,
3380       x_msg_count         => x_msg_count,
3381       x_return_status     => x_return_status);
3382     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3383         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3384         'OKC_REP_CONTRACT_PROCESS_PVT.copy_contacts return status is: '
3385       || x_return_status);
3386     END IF;
3387     -----------------------------------------------------
3388     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3389       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3390     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3391       RAISE OKC_API.G_EXCEPTION_ERROR;
3392     END IF;
3393     -----------------------------------------------------
3394 
3395     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3396         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3397         'Calling OKC_REP_CONTRACT_PROCESS_PVT.copy_risks()');
3398     END IF;
3399     copy_risks(
3400       p_api_version       => 1.0,
3401       p_init_msg_list        => FND_API.G_FALSE,
3402       p_commit               => FND_API.G_FALSE,
3403       p_source_contract_id   => p_source_contract_id,
3404       p_target_contract_id   => p_target_contract_id,
3405       x_msg_data          => x_msg_data,
3406       x_msg_count         => x_msg_count,
3407       x_return_status     => x_return_status);
3408     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3409         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3410             'OKC_REP_CONTRACT_PROCESS_PVT.copy_risks return status is: '
3411             || x_return_status);
3412     END IF;
3413     -----------------------------------------------------
3414     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3415       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3416     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3417       RAISE OKC_API.G_EXCEPTION_ERROR;
3418     END IF;
3419     --------------------------------------------------------
3420 
3421     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3422       FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3423             'Calling OKC_REP_CONTRACT_PROCESS_PVT.copy_ACL()');
3424     END IF;
3425     copy_ACL(
3426       p_api_version       => 1.0,
3427       p_init_msg_list        => FND_API.G_FALSE,
3428       p_commit               => FND_API.G_FALSE,
3429       p_source_contract_id   => p_source_contract_id,
3430       p_target_contract_id   => p_target_contract_id,
3431       x_msg_data          => x_msg_data,
3432       x_msg_count         => x_msg_count,
3433       x_return_status     => x_return_status);
3434     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3435         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3436         'OKC_REP_CONTRACT_PROCESS_PVT.copy_ACL return status is: '
3437       || x_return_status);
3438     END IF;
3439     -----------------------------------------------------
3440     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3441       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3442     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3443       RAISE OKC_API.G_EXCEPTION_ERROR;
3444     END IF;
3445     -----------------------------------------------------
3446 
3447     --14543447 - kkolukul- UDA Integration
3448 
3449     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3450       FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3451             'Calling OKC_REP_CONTRACT_PROCESS_PVT.copy_uda_attribute_values()');
3452     END IF;
3453     copy_uda_attribute_values(
3454       p_api_version       => 1.0,
3455       p_init_msg_list        => FND_API.G_FALSE,
3456       p_commit               => FND_API.G_FALSE,
3457       p_source_contract_id   => p_source_contract_id,
3458       p_target_contract_id   => p_target_contract_id,
3459       x_msg_data          => x_msg_data,
3460       x_msg_count         => x_msg_count,
3461       x_return_status     => x_return_status);
3462     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3463         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3464         'OKC_REP_CONTRACT_PROCESS_PVT.copy_uda_attribute_values return status is: '
3465       || x_return_status);
3466     END IF;
3467     -----------------------------------------------------
3468     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3469       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3470     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3471       RAISE OKC_API.G_EXCEPTION_ERROR;
3472     END IF;
3473     -----------------------------------------------------
3474 
3475     -- Get contract_type of source contract, required for deliverables and documents APIs
3476     OPEN source_contract_csr;
3477     FETCH source_contract_csr INTO source_contract_rec;
3478     IF(source_contract_csr%NOTFOUND) THEN
3479           IF (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3480               FND_LOG.STRING(FND_LOG.LEVEL_EXCEPTION ,
3481                     G_MODULE||l_api_name,
3482                                  'Invalid Contract Id: '|| p_source_contract_id);
3483           END IF;
3484           Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
3485                             p_msg_name     => G_INVALID_CONTRACT_ID_MSG,
3486                             p_token1       => G_CONTRACT_ID_TOKEN,
3487                             p_token1_value => to_char(p_source_contract_id));
3488           RAISE FND_API.G_EXC_ERROR;
3489     END IF;
3490 
3491     -- Get internal party_id. Needed for deliverables api
3492     OPEN party_csr;
3493     FETCH party_csr INTO l_internal_party_id;
3494     IF(party_csr%NOTFOUND) THEN
3495           IF (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3496               FND_LOG.STRING(FND_LOG.LEVEL_EXCEPTION ,
3497                     G_MODULE||l_api_name,
3498                                  'No internal party for the contract');
3499           END IF;
3500           RAISE FND_API.G_EXC_ERROR;
3501     END IF;
3502 
3503     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3504           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3505                 'Calling OKC_CONTRACT_DOCS_GRP.Copy_Attachments');
3506     END IF;
3507     OKC_CONTRACT_DOCS_GRP.Copy_Attachments(
3508         p_api_version               => 1,
3509         p_from_bus_doc_type         => source_contract_rec.contract_type,
3510         p_from_bus_doc_id           => p_source_contract_id,
3511         p_to_bus_doc_type           => source_contract_rec.contract_type,
3512         p_to_bus_doc_id             => p_target_contract_id,
3513         p_copy_by_ref               => 'N',
3514     x_return_status             => x_return_status,
3515         x_msg_count                 => x_msg_count,
3516         x_msg_data                  => x_msg_data
3517         );
3518     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3519         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3520                 'OKC_CONTRACT_DOCS_GRP.Copy_Attachments return status is : '
3521             || x_return_status);
3522     END IF;
3523     -----------------------------------------------------
3524       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3525           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3526       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3527           RAISE OKC_API.G_EXCEPTION_ERROR;
3528       END IF;
3529     --------------------------------------------------------
3530 
3531    -- Repository Enhancement 12.1(For Duplicate Action)
3532 
3533 
3534    IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3535         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3536                 'Calling OKC_TERMS_COPY_PVT.copy_tc');
3537     END IF;
3538 
3539   x_target_contract_type   := source_contract_rec.contract_type;
3540   x_target_contract_id := p_target_contract_id;
3541      OKC_TERMS_COPY_PVT.copy_tc(
3542                                    p_api_version            => 1,
3543                                    p_init_msg_list          => FND_API.G_FALSE,
3544                                    p_commit                 => FND_API.G_FALSE,
3545                                    p_source_doc_type        => source_contract_rec.contract_type,
3546                                      p_source_doc_id          => p_source_contract_id,
3547                                      p_target_doc_type        =>x_target_contract_type    ,
3548                                      p_target_doc_id          => x_target_contract_id,
3549                                      p_document_number  => p_target_contract_number,
3550                                      p_keep_version           => 'N',
3551                                      p_article_effective_date => SYSDATE,
3552                                      p_target_template_rec    => G_TEMPLATE_MISS_REC          ,
3553                                      x_return_status          => x_return_status,
3554                                      x_msg_data               => x_msg_data,
3555                                      x_msg_count              => x_msg_count);
3556       IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3557          FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,g_module||l_api_name,'600: Finished OKC_TERMS_COPY_PVT.copy_tc, return status : '||x_return_status);
3558     END IF;
3559 
3560       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3561           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3562       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3563           RAISE OKC_API.G_EXCEPTION_ERROR;
3564       END IF;
3565    -- Repository Enhancement 12.1 ends(For Duplicate Action)
3566 
3567 
3568     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3569         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3570                 'Calling OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables');
3571     END IF;
3572   OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables (
3573       p_api_version         => 1.0,
3574       p_init_msg_list             => FND_API.G_FALSE,
3575       p_source_doc_id             => p_source_contract_id,
3576         p_source_doc_type           => source_contract_rec.contract_type,
3577         p_target_doc_id             => p_target_contract_id,
3578         p_target_doc_type           => source_contract_rec.contract_type,
3579         p_target_doc_number         => p_target_contract_number,
3580         p_internal_party_id         => l_internal_party_id,
3581         p_internal_contact_id       => source_contract_rec.owner_id,
3582         p_carry_forward_ext_party_yn => 'Y',
3583         p_carry_forward_int_contact_yn => 'Y',
3584         p_reset_fixed_date_yn       => 'Y',
3585         x_return_status             => x_return_status,
3586         x_msg_count                 => x_msg_count,
3587         x_msg_data                  => x_msg_data
3588         );
3589      IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3590         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3591                 'OKC_DELIVERABLE_PROCESS_PVT.copy_deliverables return status is : '
3592             || x_return_status);
3593      END IF;
3594      -----------------------------------------------------
3595       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
3596           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
3597       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
3598           RAISE OKC_API.G_EXCEPTION_ERROR;
3599       END IF;
3600     --------------------------------------------------------
3601 
3602     -- close open cursors
3603     CLOSE source_contract_csr;
3604     CLOSE party_csr;
3605 
3606     -- Standard check of p_commit
3607     IF FND_API.To_Boolean( p_commit ) THEN
3608       COMMIT WORK;
3609     END IF;
3610 
3611     -- Standard call to get message count and if count is 1, get message info.
3612     FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
3613 
3614   IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3615         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
3616                 'Leaving OKC_REP_CONTRACT_PROCESS_PVT.copy_contract_details');
3617     END IF;
3618 
3619 
3620     EXCEPTION
3621       WHEN FND_API.G_EXC_ERROR THEN
3622         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3623            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
3624                  g_module || l_api_name,
3625                  'Leaving copy_contract_details:FND_API.G_EXC_ERROR Exception');
3626         END IF;
3627         --close cursors
3628         IF (source_contract_csr%ISOPEN) THEN
3629           CLOSE source_contract_csr ;
3630         END IF;
3631         IF (party_csr%ISOPEN) THEN
3632           CLOSE party_csr ;
3633         END IF;
3634         ROLLBACK TO copy_contract_details_PVT;
3635         x_return_status := FND_API.G_RET_STS_ERROR;
3636         FND_MSG_PUB.Count_And_Get(
3637         p_count =>  x_msg_count,
3638         p_data  =>  x_msg_data
3639         );
3640 
3641       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3642         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3643            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
3644                  g_module || l_api_name,
3645                  'Leaving copy_contract_details:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
3646         END IF;
3647         --close cursors
3648         IF (source_contract_csr%ISOPEN) THEN
3649           CLOSE source_contract_csr ;
3650         END IF;
3651         IF (party_csr%ISOPEN) THEN
3652           CLOSE party_csr ;
3653         END IF;
3654         ROLLBACK TO copy_contract_details_PVT;
3655         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3656         FND_MSG_PUB.Count_And_Get(
3657         p_count =>  x_msg_count,
3658         p_data  =>  x_msg_data
3659         );
3660 
3661       WHEN OTHERS THEN
3662         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3663            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
3664                  g_module || l_api_name,
3665                  'Leaving copy_contract_details because of EXCEPTION: ' || sqlerrm);
3666         END IF;
3667         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
3668                             p_msg_name     => G_UNEXPECTED_ERROR,
3669                             p_token1       => G_SQLCODE_TOKEN,
3670                             p_token1_value => sqlcode,
3671                             p_token2       => G_SQLERRM_TOKEN,
3672                             p_token2_value => sqlerrm);
3673         ROLLBACK TO copy_contract_details_PVT;
3674         --close cursors
3675         IF (source_contract_csr%ISOPEN) THEN
3676           CLOSE source_contract_csr ;
3677         END IF;
3678         IF (party_csr%ISOPEN) THEN
3679           CLOSE party_csr ;
3680         END IF;
3681         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3682         FND_MSG_PUB.Count_And_Get(
3683         p_count =>  x_msg_count,
3684         p_data  =>  x_msg_data
3685         );
3686   END copy_contract_details;
3687 
3688 
3689 -- Start of comments
3690 --API name      : version_contract_usages
3691 --Type          : Private.
3692 --Function      : Copies deliverables and documents for versioning
3693 --Pre-reqs      : None.
3694 --Parameters    :
3695 --IN            : p_api_version         IN NUMBER       Required
3696 --              : p_init_msg_list       IN VARCHAR2     Optional
3697 --                   Default = FND_API.G_FALSE
3698 --              : p_commit              IN VARCHAR2     Optional
3699 --                   Default = FND_API.G_FALSE
3700 --              : p_contract_id          IN NUMBER       Required
3701 --                   Id of the contract whose details are to be versioned
3702 --OUT           : x_return_status       OUT  VARCHAR2(1)
3703 --              : x_msg_count           OUT  NUMBER
3704 --              : x_msg_data            OUT  VARCHAR2(2000)
3705 --Note          :
3706 -- End of comments
3707   PROCEDURE version_contract_usages(
3708       p_api_version            IN  NUMBER,
3709       p_init_msg_list          IN  VARCHAR2,
3710       p_commit                   IN  VARCHAR2,
3711       p_contract_id              IN  NUMBER,
3712       x_msg_data               OUT NOCOPY  VARCHAR2,
3713       x_msg_count              OUT NOCOPY  NUMBER,
3714       x_return_status          OUT NOCOPY  VARCHAR2) IS
3715 
3716        l_api_name         VARCHAR2(30);
3717     l_api_version            NUMBER;
3718     l_created_by            OKC_REP_CONTRACT_USAGES.CREATED_BY%TYPE;
3719     l_creation_date         OKC_REP_CONTRACT_USAGES.CREATION_DATE%TYPE;
3720     l_last_updated_by       OKC_REP_CONTRACT_USAGES.LAST_UPDATED_BY%TYPE;
3721     l_last_update_login     OKC_REP_CONTRACT_USAGES.LAST_UPDATE_LOGIN%TYPE;
3722     l_last_update_date      OKC_REP_CONTRACT_USAGES.LAST_UPDATE_DATE%TYPE;
3723     -- l_contract_risk_id      OKC_REP_CONTRACT_USAGES.CONTRACT_RISK_ID%TYPE;
3724 
3725 
3726     -- Contact cursor.
3727     CURSOR usages_csr(doc_type VARCHAR2, doc_id NUMBER, doc_ver number) IS
3728       SELECT *
3729       FROM OKC_REP_CONTRACT_USAGES
3730       WHERE contract_type = doc_type
3731       AND   contract_id = doc_id
3732       AND contract_version = doc_ver;
3733 
3734     -- Contract cursor to get contract_type and version
3735     CURSOR contract_csr IS
3736       SELECT contract_type, contract_version_num
3737       FROM OKC_REP_CONTRACTS_ALL
3738       WHERE contract_id = p_contract_id;
3739 
3740   contract_rec       contract_csr%ROWTYPE;
3741 
3742 BEGIN
3743 
3744       IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3745         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
3746                 'Entered OKC_REP_CONTRACT_PROCESS_PVT.version_contract_usages');
3747         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
3748                 ' Contract Id is: ' || to_char(p_contract_id));
3749     END IF;
3750     l_api_name := 'version_contract_usages';
3751     l_api_version := 1.0;
3752   -- Standard Start of API savepoint
3753     SAVEPOINT version_contract_usages_PVT;
3754     -- Standard call to check for call compatibility.
3755     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
3756       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3757     END IF;
3758     -- Initialize message list if p_init_msg_list is set to TRUE.
3759     IF FND_API.to_Boolean( p_init_msg_list ) THEN
3760       FND_MSG_PUB.initialize;
3761     END IF;
3762 
3763     --  Initialize API return status to success
3764     x_return_status := FND_API.G_RET_STS_SUCCESS;
3765 
3766     -- Populate who columns
3767     l_creation_date := Sysdate;
3768     l_created_by := Fnd_Global.User_Id;
3769     l_last_update_date := l_creation_date;
3770     l_last_updated_by := l_created_by;
3771     l_last_update_login := Fnd_Global.Login_Id;
3772 
3773     -- Get Contract type and version number columns
3774     -- Get effective dates and version of the contract.
3775     OPEN contract_csr;
3776     FETCH contract_csr INTO contract_rec;
3777     IF(contract_csr%NOTFOUND) THEN
3778           IF (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3779               FND_LOG.STRING(FND_LOG.LEVEL_EXCEPTION ,
3780                     G_MODULE||l_api_name,
3781                                  'Invalid Contract Id: '|| p_contract_id);
3782           END IF;
3783           Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
3784                             p_msg_name     => G_INVALID_CONTRACT_ID_MSG,
3785                             p_token1       => G_CONTRACT_ID_TOKEN,
3786                             p_token1_value => to_char(p_contract_id));
3787           RAISE FND_API.G_EXC_ERROR;
3788           -- RAISE NO_DATA_FOUND;
3789     END IF;
3790 
3791     FOR usages_rec IN usages_csr(contract_rec.contract_type, p_contract_id, contract_rec.contract_version_num) LOOP
3792 
3793       IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3794         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3795                 'Contract Type is: ' || contract_rec.CONTRACT_TYPE);
3796         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3797                 'Contract Id is: ' || usages_rec.BUSINESS_DOCUMENT_ID);
3798         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3799                 'Contract Version is: ' || usages_rec.CONTRACT_VERSION);
3800         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3801                 'business_document_type is: ' || usages_rec.business_document_type);
3802         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3803                 'business_document_id is: ' || usages_rec.business_document_id);
3804         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
3805                 'business_document_version: ' || usages_rec.business_document_version);
3806       END IF;
3807     -- INSERT THE NEW RECORDS into OKC_REP_CONTRACT_USAGES table
3808 
3809     INSERT INTO okc_rep_contract_usages ( sequence_id,
3810                                           contract_type,
3811                                           contract_id,
3812                                           contract_version,
3813                                           business_document_type,
3814                                           business_document_id,
3815                                           business_document_version,
3816                                           document_number,
3817                                           PK1_VALUE,
3818 	                                        PK2_VALUE,
3819 	                                        PK3_VALUE,
3820 	                                        PK4_VALUE,
3821 	                                        PK5_VALUE,
3822                                           source_code,
3823                                           relationship_id,
3824                                           display_in_contract,
3825                                           object_version_number,
3826                                           last_update_login,
3827                                           creation_date,
3828                                           created_by,
3829                                           last_updated_by,
3830                                           last_update_date
3831                                           )
3832                                  VALUES  (okc_rep_contract_usages_s.NEXTVAL,
3833                                           contract_rec.contract_type,
3834                                           p_contract_id,
3835                                           contract_rec.contract_version_num +1 ,
3836                                           usages_rec.business_document_type,
3837                                           usages_rec.business_document_id,
3838                                           usages_rec.business_document_version,
3839                                           usages_rec.document_number,
3840                                           usages_rec.pk1_value,
3841                                           usages_rec.pk2_value,
3842                                           usages_rec.pk3_value,
3843                                           usages_rec.pk4_value,
3844                                           usages_rec.pk5_value,
3845 								  -- if the previous version contract relationships data is migrated from okc_rep_contrcat_rels to okc_rep_contract_usages
3846 								  -- then, source_code value is 'MIGRATION', we should not copy as MIGRATION, copying it as INTERNAL
3847                                           decode(usages_rec.source_code, 'MIGRATION', 'INTERNAL', usages_rec.source_code),
3848                                           usages_rec.relationship_id,
3849                                           usages_rec.display_in_contract,
3850                                           1.0,
3851                                           l_last_update_login,
3852                                           l_creation_date,
3853                                           l_created_by,
3854                                           l_last_updated_by,
3855                                           l_last_update_date
3856                                           );
3857 
3858     END LOOP;
3859     -- Standard check of p_commit
3860     IF FND_API.To_Boolean( p_commit ) THEN
3861       COMMIT WORK;
3862     END IF;
3863 
3864     -- Standard call to get message count and if count is 1, get message info.
3865     FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
3866 
3867   IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3868         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
3869                 'Leaving OKC_REP_CONTRACT_PROCESS_PVT.');
3870     END IF;
3871 
3872 
3873     EXCEPTION
3874       WHEN FND_API.G_EXC_ERROR THEN
3875         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3876            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
3877                  g_module || l_api_name,
3878                  'Leaving version_contract_usages:FND_API.G_EXC_ERROR Exception');
3879         END IF;
3880         --close cursors
3881         IF (contract_csr%ISOPEN) THEN
3882           CLOSE contract_csr ;
3883         END IF;
3884         ROLLBACK TO version_contract_usages_PVT;
3885         x_return_status := FND_API.G_RET_STS_ERROR;
3886         FND_MSG_PUB.Count_And_Get(
3887         p_count =>  x_msg_count,
3888         p_data  =>  x_msg_data
3889         );
3890 
3891       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3892         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3893            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
3894                  g_module || l_api_name,
3895                  'Leaving version_contract_usages:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
3896         END IF;
3897         --close cursors
3898         IF (contract_csr%ISOPEN) THEN
3899           CLOSE contract_csr ;
3900         END IF;
3901         ROLLBACK TO version_contract_usages_PVT;
3902         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3903         FND_MSG_PUB.Count_And_Get(
3904         p_count =>  x_msg_count,
3905         p_data  =>  x_msg_data
3906         );
3907 
3908       WHEN OTHERS THEN
3909         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3910            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
3911                  g_module || l_api_name,
3912                  'Leaving version_contract_usages because of EXCEPTION: ' || sqlerrm);
3913         END IF;
3914         --close cursors
3915         IF (contract_csr%ISOPEN) THEN
3916           CLOSE contract_csr ;
3917         END IF;
3918         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
3919                             p_msg_name     => G_UNEXPECTED_ERROR,
3920                             p_token1       => G_SQLCODE_TOKEN,
3921                             p_token1_value => sqlcode,
3922                             p_token2       => G_SQLERRM_TOKEN,
3923                             p_token2_value => sqlerrm);
3924         ROLLBACK TO version_contract_usages_PVT;
3925         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3926         FND_MSG_PUB.Count_And_Get(
3927         p_count =>  x_msg_count,
3928         p_data  =>  x_msg_data
3929         );
3930 END version_contract_usages;
3931 
3932 -- Start of comments
3933 --API name      : version_contract_details
3934 --Type          : Private.
3935 --Function      : Copies deliverables and documents for versioning
3936 --Pre-reqs      : None.
3937 --Parameters    :
3938 --IN            : p_api_version         IN NUMBER       Required
3939 --              : p_init_msg_list       IN VARCHAR2     Optional
3940 --                   Default = FND_API.G_FALSE
3941 --              : p_commit              IN VARCHAR2     Optional
3942 --                   Default = FND_API.G_FALSE
3943 --              : p_contract_id          IN NUMBER       Required
3944 --                   Id of the contract whose details are to be versioned
3945 --OUT           : x_return_status       OUT  VARCHAR2(1)
3946 --              : x_msg_count           OUT  NUMBER
3947 --              : x_msg_data            OUT  VARCHAR2(2000)
3948 --Note          :
3949 -- End of comments
3950   PROCEDURE version_contract_details(
3951       p_api_version            IN  NUMBER,
3952       p_init_msg_list          IN  VARCHAR2,
3953       p_commit                   IN  VARCHAR2,
3954       p_contract_id              IN  NUMBER,
3955       p_version_from_api       IN VARCHAR2 DEFAULT fnd_api.g_false,
3956       x_msg_data               OUT NOCOPY  VARCHAR2,
3957       x_msg_count              OUT NOCOPY  NUMBER,
3958       x_return_status          OUT NOCOPY  VARCHAR2) IS
3959       l_api_name        VARCHAR2(30);
3960     l_api_version             NUMBER;
3961     l_contract_type         OKC_REP_CONTRACTS_ALL.CONTRACT_TYPE%TYPE;
3962     l_contract_version      OKC_REP_CONTRACTS_ALL.CONTRACT_VERSION_NUM%TYPE;
3963 -- Repository Enhancement 12.1 (For Create New Version Action)
3964     l_conterms_exist_flag     VARCHAR2(1);
3965 
3966     CURSOR contract_csr IS
3967       SELECT contract_type, contract_version_num, contract_status_code
3968       FROM OKC_REP_CONTRACTS_ALL
3969       WHERE contract_id = p_contract_id;
3970 
3971   contract_rec       contract_csr%ROWTYPE;
3972 -- Repository Enhancement 12.1 (For Create New Version Action)
3973   CURSOR conterms_exist_csr is
3974   SELECT 'Y'   FROM   DUAL
3975   WHERE EXISTS (SELECT 'Y'
3976 		FROM okc_template_usages
3977 		WHERE DOCUMENT_ID = p_contract_id
3978 		     AND DOCUMENT_TYPE= contract_rec.contract_type);
3979 -- Repository Enhancement 12.1 Ends (For Create New Version Action)
3980    l_contract_source   VARCHAR2(30);  -- For Bug# 6902073
3981   BEGIN
3982 
3983     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
3984         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
3985                 'Entered OKC_REP_CONTRACT_PROCESS_PVT.version_contract_details');
3986         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
3987                 'Contract Id is: ' || p_contract_id);
3988     END IF;
3989     l_api_name := 'version_contract_details';
3990     l_api_version := 1.0;
3991   -- Standard Start of API savepoint
3992     SAVEPOINT version_contract_details_PVT;
3993     -- Standard call to check for call compatibility.
3994     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
3995       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3996     END IF;
3997     -- Initialize message list if p_init_msg_list is set to TRUE.
3998     IF FND_API.to_Boolean( p_init_msg_list ) THEN
3999       FND_MSG_PUB.initialize;
4000     END IF;
4001 
4002     --  Initialize API return status to success
4003     x_return_status := FND_API.G_RET_STS_SUCCESS;
4004 
4005     -- Lock the contract header
4006     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4007       FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4008         'Calling OKC_REP_CONTRACT_PROCESS_PVT.Lock_Contract_Header()');
4009     END IF;
4010     -- Lock the contract header
4011     Lock_Contract_Header(
4012         p_contract_id              => p_contract_id,
4013           p_object_version_number    => NULL,
4014           x_return_status            => x_return_status
4015           );
4016     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4017         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4018         'OKC_REP_CONTRACT_PROCESS_PVT.Lock_Contract_Header return status is: '
4019       || x_return_status);
4020     END IF;
4021     -----------------------------------------------------
4022     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4023       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4024     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4025       RAISE OKC_API.G_EXCEPTION_ERROR;
4026     END IF;
4027     -----------------------------------------------------
4028 
4029     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4030       FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4031         'Populating contract header record in OKC_REP_CONTRACT_VERS');
4032     END IF;
4033     -- Copy the header record to versions table
4034     INSERT INTO OKC_REP_CONTRACT_VERS(
4035             CONTRACT_ID,
4036             CONTRACT_VERSION_NUM,
4037             CONTRACT_NUMBER,
4038             CONTRACT_TYPE,
4039             CONTRACT_STATUS_CODE,
4040             ORG_ID,
4041             OWNER_ID,
4042             SOURCE_LANGUAGE,
4043             CONTRACT_NAME,
4044             CONTRACT_DESC,
4045             VERSION_COMMENTS,
4046             AUTHORING_PARTY_CODE,
4047             CONTRACT_EFFECTIVE_DATE,
4048             CONTRACT_EXPIRATION_DATE,
4049             CURRENCY_CODE,
4050             AMOUNT,
4051             OVERALL_RISK_CODE,
4052             CANCELLATION_COMMENTS,
4053             CANCELLATION_DATE,
4054             TERMINATION_COMMENTS,
4055             TERMINATION_DATE,
4056             KEYWORDS,
4057             PHYSICAL_LOCATION,
4058             EXPIRE_NTF_FLAG,
4059             EXPIRE_NTF_PERIOD,
4060             NOTIFY_CONTACT_ROLE_ID,
4061             WF_EXP_NTF_ITEM_KEY,
4062             USE_ACL_FLAG,
4063             WF_ITEM_TYPE,
4064             WF_ITEM_KEY,
4065             PROGRAM_ID,
4066             PROGRAM_LOGIN_ID,
4067             PROGRAM_APPLICATION_ID,
4068             REQUEST_ID,
4069             LATEST_SIGNED_VER_NUMBER,
4070             ATTRIBUTE_CATEGORY,
4071             ATTRIBUTE1,
4072             ATTRIBUTE2,
4073             ATTRIBUTE3,
4074             ATTRIBUTE4,
4075             ATTRIBUTE5,
4076             ATTRIBUTE6,
4077             ATTRIBUTE7,
4078             ATTRIBUTE8,
4079             ATTRIBUTE9,
4080             ATTRIBUTE10,
4081             ATTRIBUTE11,
4082             ATTRIBUTE12,
4083             ATTRIBUTE13,
4084             ATTRIBUTE14,
4085             ATTRIBUTE15,
4086             OBJECT_VERSION_NUMBER,
4087             CREATED_BY,
4088             CREATION_DATE,
4089             LAST_UPDATED_BY,
4090             LAST_UPDATE_LOGIN,
4091             LAST_UPDATE_DATE,
4092             CONTRACT_LAST_UPDATE_DATE,
4093             CONTRACT_LAST_UPDATED_BY,
4094 	    REFERENCE_DOCUMENT_TYPE,
4095             REFERENCE_DOCUMENT_NUMBER,
4096             ORIG_SYSTEM_REFERENCE_CODE,
4097             ORIG_SYSTEM_REFERENCE_ID1,
4098             ORIG_SYSTEM_REFERENCE_ID2,
4099             ESIGNATURE_REQUIRED,
4100 		  UDA_TEMPLATE_ID,
4101 		  SBCR_COORDINATION_TYPE)
4102       SELECT
4103             CONTRACT_ID,
4104             CONTRACT_VERSION_NUM,
4105             CONTRACT_NUMBER,
4106             CONTRACT_TYPE,
4107             CONTRACT_STATUS_CODE,
4108             ORG_ID,
4109             OWNER_ID,
4110             SOURCE_LANGUAGE,
4111             CONTRACT_NAME,
4112             CONTRACT_DESC,
4113             VERSION_COMMENTS,
4114             AUTHORING_PARTY_CODE,
4115             CONTRACT_EFFECTIVE_DATE,
4116             CONTRACT_EXPIRATION_DATE,
4117             CURRENCY_CODE,
4118             AMOUNT,
4119             OVERALL_RISK_CODE,
4120             CANCELLATION_COMMENTS,
4121             CANCELLATION_DATE,
4122             TERMINATION_COMMENTS,
4123             TERMINATION_DATE,
4124             KEYWORDS,
4125             PHYSICAL_LOCATION,
4126             EXPIRE_NTF_FLAG,
4127             EXPIRE_NTF_PERIOD,
4128             NOTIFY_CONTACT_ROLE_ID,
4129             WF_EXP_NTF_ITEM_KEY,
4130             USE_ACL_FLAG,
4131             WF_ITEM_TYPE,
4132             WF_ITEM_KEY,
4133             PROGRAM_ID,
4134             PROGRAM_LOGIN_ID,
4135             PROGRAM_APPLICATION_ID,
4136             REQUEST_ID,
4137             LATEST_SIGNED_VER_NUMBER,
4138             ATTRIBUTE_CATEGORY,
4139             ATTRIBUTE1,
4140             ATTRIBUTE2,
4141             ATTRIBUTE3,
4142             ATTRIBUTE4,
4143             ATTRIBUTE5,
4144             ATTRIBUTE6,
4145             ATTRIBUTE7,
4146             ATTRIBUTE8,
4147             ATTRIBUTE9,
4148             ATTRIBUTE10,
4149             ATTRIBUTE11,
4150             ATTRIBUTE12,
4151             ATTRIBUTE13,
4152             ATTRIBUTE14,
4153             ATTRIBUTE15,
4154             OBJECT_VERSION_NUMBER,
4155             CREATED_BY,
4156             CREATION_DATE,
4157             LAST_UPDATED_BY,
4158             LAST_UPDATE_LOGIN,
4159             LAST_UPDATE_DATE,
4160             CONTRACT_LAST_UPDATE_DATE,
4161             CONTRACT_LAST_UPDATED_BY,
4162             REFERENCE_DOCUMENT_TYPE,
4163             REFERENCE_DOCUMENT_NUMBER,
4164             ORIG_SYSTEM_REFERENCE_CODE,
4165             ORIG_SYSTEM_REFERENCE_ID1,
4166             ORIG_SYSTEM_REFERENCE_ID2,
4167             ESIGNATURE_REQUIRED,
4168 		  UDA_TEMPLATE_ID,
4169 		  SBCR_COORDINATION_TYPE
4170         FROM OKC_REP_CONTRACTS_ALL
4171         WHERE contract_id = p_contract_id;
4172 
4173     -- Get contract_type of the contract, required for deliverables and documents APIs
4174     OPEN contract_csr;
4175     FETCH contract_csr INTO contract_rec;
4176     IF(contract_csr%NOTFOUND) THEN
4177           IF (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4178               FND_LOG.STRING(FND_LOG.LEVEL_EXCEPTION ,
4179                     G_MODULE||l_api_name,
4180                                  'Invalid Contract Id: '|| p_contract_id);
4181           END IF;
4182           Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
4183                             p_msg_name     => G_INVALID_CONTRACT_ID_MSG,
4184                             p_token1       => G_CONTRACT_ID_TOKEN,
4185                             p_token1_value => to_char(p_contract_id));
4186           RAISE FND_API.G_EXC_ERROR;
4187           -- RAISE NO_DATA_FOUND;
4188     END IF;
4189 
4190     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4191           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4192                 'Calling OKC_CONTRACT_DOCS_GRP.Version_Attachments');
4193     END IF;
4194 
4195 /*Bug 6957819: Added an additional parameter in the call for not copying the system generated attachment to the new version*/
4196 
4197     OKC_CONTRACT_DOCS_GRP.Version_Attachments(
4198         p_api_version                    => 1,
4199         p_business_document_type         => contract_rec.contract_type,
4200         p_business_document_id           => p_contract_id,
4201         p_business_document_version      => contract_rec.contract_version_num,
4202         x_return_status             => x_return_status,
4203         x_msg_count                 => x_msg_count,
4204         x_msg_data                  => x_msg_data,
4205         p_include_gen_attach        => 'N'
4206         );
4207     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4208         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4209                 'OKC_CONTRACT_DOCS_GRP.Version_Attachments return status is : '
4210             || x_return_status);
4211     END IF;
4212     -----------------------------------------------------
4213       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4214           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4215       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4216           RAISE OKC_API.G_EXCEPTION_ERROR;
4217       END IF;
4218     --------------------------------------------------------
4219 
4220 -- Repository Enhancement 12.1 (For Create New Version Action)
4221   -- SQL What:Find out if contract terms exist
4222   -- SQL Why: Archive Contract Terms if needed
4223   l_conterms_exist_flag := 'N';
4224   OPEN conterms_exist_csr;
4225   FETCH conterms_exist_csr into l_conterms_exist_flag;
4226   CLOSE conterms_exist_csr;
4227 
4228 
4229   IF (l_conterms_exist_flag = 'Y') THEN
4230 -- Code changes for Bug# 6902073 Begins
4231     l_contract_source := OKC_TERMS_UTIL_GRP.Get_Contract_Source_Code(
4232                             p_document_type    => contract_rec.contract_type,
4233                             p_document_id      => p_contract_id
4234                          );
4235     IF l_contract_source = 'STRUCTURED' THEN
4236       --------------------------------------------
4237       -- Call internal Version_Doc
4238       --------------------------------------------
4239       IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4240        FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'200: Call Private Version_Doc ');
4241       END IF;
4242 
4243       OKC_TERMS_VERSION_PVT.Version_Doc(
4244         x_return_status    => x_return_status,
4245 
4246         p_doc_type         => contract_rec.contract_type,
4247         p_doc_id           => p_contract_id,
4248         p_version_number   => contract_rec.contract_version_num
4249       );
4250       --------------------------------------------
4251       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4252         RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
4253       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4254         RAISE FND_API.G_EXC_ERROR ;
4255       END IF;
4256 
4257     ELSIF l_contract_source = 'ATTACHED' THEN
4258 
4259 --Only need to version usages record in case of offline authoring
4260       --------------------------------------------
4261       -- Call Create_Version for template usages
4262       --------------------------------------------
4263       IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4264          FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'300: Call Create_Version for template usages');
4265       END IF;
4266 
4267       x_return_status := OKC_TEMPLATE_USAGES_PVT.Create_Version(
4268         p_doc_type         => contract_rec.contract_type,
4269         p_doc_id           => p_contract_id,
4270         p_major_version    => contract_rec.contract_version_num
4271       );
4272       --------------------------------------------
4273       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4274         RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
4275       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4276         RAISE FND_API.G_EXC_ERROR ;
4277       END IF;
4278 
4279     END IF;
4280 -- Code changes for Bug# 6902073 Ends
4281 
4282 
4283   END IF; /*  IF(l_conterms_exist_flag = 'Y') */
4284 -- Repository Enhancement 12.1 Ends(For Create New Version Action)
4285 
4286 
4287     -- If contract status not Signed, we need to version the deliverables as well
4288     IF (contract_rec.contract_status_code <> G_STATUS_SIGNED) THEN
4289         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4290             FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4291                 'Calling OKC_DELIVERABLE_PROCESS_PVT.version_deliverables');
4292         END IF;
4293       OKC_DELIVERABLE_PROCESS_PVT.version_deliverables (
4294           p_api_version         => 1.0,
4295           p_init_msg_list             => FND_API.G_FALSE,
4296           p_doc_id                    => p_contract_id,
4297             p_doc_version               => contract_rec.contract_version_num,
4298             p_doc_type                  => contract_rec.contract_type,
4299           x_return_status             => x_return_status,
4300             x_msg_count                 => x_msg_count,
4301             x_msg_data                  => x_msg_data
4302             );
4303         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4304             FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4305                 'OKC_DELIVERABLE_PROCESS_PVT.version_deliverables return status is : '
4306             || x_return_status);
4307         END IF;
4308         -----------------------------------------------------
4309       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4310           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4311       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4312           RAISE OKC_API.G_EXCEPTION_ERROR;
4313       END IF;
4314         --------------------------------------------------------
4315     END IF;  -- contract_rec.contract_status_code <> G_STATUS_SIGNED
4316 
4317     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4318             FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4319                 'Calling OKC_DELIVERABLE_PROCESS_PVT.clear_amendment_operation');
4320     END IF;
4321     OKC_DELIVERABLE_PROCESS_PVT.clear_amendment_operation (
4322        p_api_version               => 1.0,
4323        p_init_msg_list             => FND_API.G_FALSE,
4324        p_doc_id                    => p_contract_id,
4325        p_doc_type                  => contract_rec.contract_type,
4326        p_keep_summary              => 'N',
4327        x_return_status             => x_return_status,
4328        x_msg_count                 => x_msg_count,
4329        x_msg_data                  => x_msg_data
4330        );
4331     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4332            FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4333                 'OKC_DELIVERABLE_PROCESS_PVT.clear_amendment_operation return status is : '
4334             || x_return_status);
4335     END IF;
4336     -----------------------------------------------------
4337     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4338           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4339     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4340           RAISE OKC_API.G_EXCEPTION_ERROR;
4341     END IF;
4342     --------------------------------------------------------
4343      -- 14543447 - kkolukul- version uda attribte values
4344      IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4345           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4346                 'Calling OKC_CONTRACT_PROCESS_PVT.version_uda_attribute_values');
4347     END IF;
4348 
4349     version_uda_attribute_values(
4350         p_api_version               => 1,
4351         p_init_msg_list             => FND_API.G_FALSE,
4352         p_commit                    => FND_API.G_FALSE,
4353         p_contract_id               => p_contract_id,
4354         p_contract_version          => contract_rec.contract_version_num,
4355         x_return_status             => x_return_status,
4356         x_msg_count                 => x_msg_count,
4357         x_msg_data                  => x_msg_data
4358         );
4359     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4360         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4361                 'OKC_CONTRACT_PROCESS_PVT.version_uda_attribute_values return status is : '
4362             || x_return_status);
4363     END IF;
4364     -----------------------------------------------------
4365       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4366           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4367       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4368           RAISE OKC_API.G_EXCEPTION_ERROR;
4369       END IF;
4370     --------------------------------------------------------
4371 
4372     ---Version the relationships information
4373     version_contract_usages(
4374         p_api_version               => 1,
4375         p_init_msg_list             => FND_API.G_FALSE,
4376         p_commit                    => FND_API.G_FALSE,
4377         p_contract_id               => p_contract_id,
4378         x_return_status             => x_return_status,
4379         x_msg_count                 => x_msg_count,
4380         x_msg_data                  => x_msg_data
4381         );
4382     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4383         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4384                 'OKC_CONTRACT_PROCESS_PVT.version_contract_usages return status is : '
4385             || x_return_status);
4386     END IF;
4387     -----------------------------------------------------
4388       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4389           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4390       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4391           RAISE OKC_API.G_EXCEPTION_ERROR;
4392       END IF;
4393     --------------------------------------------------------
4394 
4395 
4396     CLOSE contract_csr;
4397 
4398     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4399       FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4400         'Delete contract header record.');
4401     END IF;
4402 
4403  -- If this is called from API versioning, do not delete the header
4404     IF(p_version_from_api = fnd_api.g_false) THEN
4405     -- Delete the header record
4406     DELETE FROM OKC_REP_CONTRACTS_ALL
4407           WHERE contract_id=p_contract_id;
4408    END IF;
4409 
4410     -- Standard check of p_commit
4411     IF FND_API.To_Boolean( p_commit ) THEN
4412       COMMIT WORK;
4413     END IF;
4414 
4415     -- Standard call to get message count and if count is 1, get message info.
4416     FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
4417 
4418   IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4419         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
4420                 'Leaving OKC_REP_CONTRACT_PROCESS_PVT.version_contract_details');
4421     END IF;
4422 
4423 
4424     EXCEPTION
4425       WHEN FND_API.G_EXC_ERROR THEN
4426         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4427            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
4428                  g_module || l_api_name,
4429                  'Leaving version_contract_details:FND_API.G_EXC_ERROR Exception');
4430         END IF;
4431         --close cursors
4432         IF (contract_csr%ISOPEN) THEN
4433           CLOSE contract_csr ;
4434         END IF;
4435         ROLLBACK TO version_contract_details_PVT;
4436         x_return_status := FND_API.G_RET_STS_ERROR;
4437         FND_MSG_PUB.Count_And_Get(
4438         p_count =>  x_msg_count,
4439         p_data  =>  x_msg_data
4440         );
4441 
4442       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4443         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4444            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
4445                  g_module || l_api_name,
4446                  'Leaving version_contract_details:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
4447         END IF;
4448         --close cursors
4449         IF (contract_csr%ISOPEN) THEN
4450           CLOSE contract_csr ;
4451         END IF;
4452         ROLLBACK TO version_contract_details_PVT;
4453         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4454         FND_MSG_PUB.Count_And_Get(
4455         p_count =>  x_msg_count,
4456         p_data  =>  x_msg_data
4457         );
4458 
4459       WHEN OTHERS THEN
4460         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4461            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
4462                  g_module || l_api_name,
4463                  'Leaving version_contract_details because of EXCEPTION: ' || sqlerrm);
4464         END IF;
4465         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
4466                             p_msg_name     => G_UNEXPECTED_ERROR,
4467                             p_token1       => G_SQLCODE_TOKEN,
4468                             p_token1_value => sqlcode,
4469                             p_token2       => G_SQLERRM_TOKEN,
4470                             p_token2_value => sqlerrm);
4471         ROLLBACK TO version_contract_details_PVT;
4472         --close cursors
4473         IF (contract_csr%ISOPEN) THEN
4474           CLOSE contract_csr ;
4475         END IF;
4476         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4477         FND_MSG_PUB.Count_And_Get(
4478         p_count =>  x_msg_count,
4479         p_data  =>  x_msg_data
4480         );
4481   END version_contract_details;
4482 
4483 
4484 
4485 -- Start of comments
4486 --API name      : sign_contract
4487 --Type          : Private.
4488 --Function      : Changes contract status to SIGNED and calls delivarables
4489 --                API to activate deliverables of that contract
4490 --Pre-reqs      : None.
4491 --Parameters    :
4492 --IN            : p_api_version         IN NUMBER       Required
4493 --              : p_init_msg_list       IN VARCHAR2     Optional
4494 --                   Default = FND_API.G_FALSE
4495 --              : p_commit              IN VARCHAR2     Optional
4496 --                   Default = FND_API.G_FALSE
4497 --              : p_contract_id          IN NUMBER       Required
4498 --                   Id of the contract to be signed
4499 --OUT           : x_return_status       OUT  VARCHAR2(1)
4500 --              : x_msg_count           OUT  NUMBER
4501 --              : x_msg_data            OUT  VARCHAR2(2000)
4502 --Note          :
4503 -- End of comments
4504   PROCEDURE sign_contract(
4505       p_api_version            IN  NUMBER,
4506       p_init_msg_list          IN  VARCHAR2,
4507       p_commit                   IN  VARCHAR2,
4508       p_contract_id              IN  NUMBER,
4509       x_msg_data               OUT NOCOPY  VARCHAR2,
4510       x_msg_count              OUT NOCOPY  NUMBER,
4511       x_return_status          OUT NOCOPY  VARCHAR2)
4512   IS
4513       l_api_name        VARCHAR2(30);
4514       l_api_version             NUMBER;
4515       l_activate_event_tbl      EVENT_TBL_TYPE;
4516       l_update_event_tbl        EVENT_TBL_TYPE;
4517       l_sync_flag               VARCHAR2(1);
4518       l_expiration_date_matches_flag VARCHAR2(1);
4519       l_effective_date_matches_flag  VARCHAR2(1);
4520       l_prev_signed_expiration_date OKC_REP_CONTRACTS_ALL.CONTRACT_EXPIRATION_DATE%TYPE;
4521       l_prev_signed_effective_date  OKC_REP_CONTRACTS_ALL.CONTRACT_EXPIRATION_DATE%TYPE;
4522 
4523     CURSOR contract_csr IS
4524       SELECT contract_type, contract_version_num, latest_signed_ver_number, contract_effective_date, contract_expiration_date
4525       FROM OKC_REP_CONTRACTS_ALL
4526       WHERE contract_id = p_contract_id;
4527 
4528     CURSOR arch_contract_csr (l_contract_version NUMBER) IS
4529       SELECT contract_effective_date, contract_expiration_date
4530       FROM OKC_REP_CONTRACT_VERS
4531       WHERE contract_id = p_contract_id
4532       AND contract_version_num = l_contract_version;
4533 
4534   contract_rec       contract_csr%ROWTYPE;
4535   arch_contract_rec  arch_contract_csr%ROWTYPE;
4536 
4537   BEGIN
4538 
4539     l_expiration_date_matches_flag := FND_API.G_FALSE;
4540     l_effective_date_matches_flag := FND_API.G_FALSE;
4541 
4542     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4543         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
4544                 'Entered OKC_REP_CONTRACT_PROCESS_PVT.sign_contract');
4545         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
4546                 'Contract Id is: ' || p_contract_id);
4547     END IF;
4548     l_api_name := 'sign_contacts';
4549     l_api_version := 1.0;
4550   -- Standard Start of API savepoint
4551     SAVEPOINT sign_contract_PVT;
4552     -- Standard call to check for call compatibility.
4553     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
4554       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4555     END IF;
4556     -- Initialize message list if p_init_msg_list is set to TRUE.
4557     IF FND_API.to_Boolean( p_init_msg_list ) THEN
4558       FND_MSG_PUB.initialize;
4559     END IF;
4560 
4561     --  Initialize API return status to success
4562     x_return_status := FND_API.G_RET_STS_SUCCESS;
4563 
4564     -- Get effective dates and version of the contract.
4565     OPEN contract_csr;
4566     FETCH contract_csr INTO contract_rec;
4567     IF(contract_csr%NOTFOUND) THEN
4568           IF (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4569               FND_LOG.STRING(FND_LOG.LEVEL_EXCEPTION ,
4570                     G_MODULE||l_api_name,
4571                                  'Invalid Contract Id: '|| p_contract_id);
4572           END IF;
4573           Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
4574                             p_msg_name     => G_INVALID_CONTRACT_ID_MSG,
4575                             p_token1       => G_CONTRACT_ID_TOKEN,
4576                             p_token1_value => to_char(p_contract_id));
4577           RAISE FND_API.G_EXC_ERROR;
4578           -- RAISE NO_DATA_FOUND;
4579     END IF;
4580 
4581     -- Lock the contract header
4582     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4583       FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4584         'Calling OKC_REP_CONTRACT_PROCESS_PVT.Lock_Contract_Header()');
4585     END IF;
4586     -- Lock the contract header
4587     Lock_Contract_Header(
4588         p_contract_id              => p_contract_id,
4589           p_object_version_number    => NULL,
4590           x_return_status            => x_return_status
4591           );
4592     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4593         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4594         'OKC_REP_CONTRACT_PROCESS_PVT.Lock_Contract_Header return status is: '
4595       || x_return_status);
4596     END IF;
4597     -----------------------------------------------------
4598     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4599       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4600     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4601       RAISE OKC_API.G_EXCEPTION_ERROR;
4602     END IF;
4603     -----------------------------------------------------
4604 
4605     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4606           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4607                 'Calling OKC_REP_UTIL_PVT.change_contract_status');
4608         END IF;
4609         -- Update the contract status and add a record in OKC_REP_CON_STATUS_HIST table.
4610         OKC_REP_UTIL_PVT.change_contract_status(
4611           p_api_version         => 1.0,
4612           p_init_msg_list       => FND_API.G_FALSE,
4613           p_contract_id         => p_contract_id,
4614           p_contract_version    => contract_rec.contract_version_num,
4615           p_status_code         => G_STATUS_SIGNED,
4616           p_user_id             => fnd_global.user_id,
4617           p_note                => NULL,
4618         x_msg_data            => x_msg_data,
4619           x_msg_count           => x_msg_count,
4620           x_return_status       => x_return_status);
4621         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4622                 fnd_log.string(FND_LOG.LEVEL_STATEMENT,
4623                   g_module || l_api_name,
4624                   'Completed OKC_REP_UTIL_PVT.change_contract_status with return status: ' || x_return_status);
4625         END IF;
4626       -----------------------------------------------------
4627         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4628             RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4629         ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4630             RAISE OKC_API.G_EXCEPTION_ERROR;
4631         END IF;
4632     ------------------------------------------------------
4633 
4634     -- We need to first version the deliverables
4635     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4636         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4637                 'Calling OKC_DELIVERABLE_PROCESS_PVT.version_deliverables');
4638     END IF;
4639   OKC_DELIVERABLE_PROCESS_PVT.version_deliverables (
4640       p_api_version         => 1.0,
4641       p_init_msg_list             => FND_API.G_FALSE,
4642       p_doc_id                    => p_contract_id,
4643         p_doc_version               => contract_rec.contract_version_num,
4644         p_doc_type                  => contract_rec.contract_type,
4645       x_return_status             => x_return_status,
4646         x_msg_count                 => x_msg_count,
4647         x_msg_data                  => x_msg_data
4648         );
4649      IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4650         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4651                 'OKC_DELIVERABLE_PROCESS_PVT.version_deliverables return status is : '
4652             || x_return_status);
4653      END IF;
4654      -----------------------------------------------------
4655       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4656           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4657       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4658           RAISE OKC_API.G_EXCEPTION_ERROR;
4659       END IF;
4660     --------------------------------------------------------
4661 
4662     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4663         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4664                 'Latest signed version number is : '
4665             || contract_rec.latest_signed_ver_number);
4666      END IF;
4667     -- Now we need to activate deliverables
4668     if (contract_rec.latest_signed_ver_number IS NULL) THEN
4669       l_sync_flag := FND_API.G_FALSE;
4670     ELSE
4671       l_sync_flag := FND_API.G_TRUE;
4672     END IF;
4673 
4674     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4675         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4676                 'l_sync_flag is : ' || l_sync_flag);
4677     END IF;
4678     l_activate_event_tbl(1).event_code := G_CONTRACT_EXPIRE_EVENT;
4679     l_activate_event_tbl(1).event_date := contract_rec.contract_expiration_date;
4680 
4681     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4682         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4683                 'Calling OKC_MANAGE_DELIVERABLES_GRP.activateDeliverables');
4684     END IF;
4685 
4686     OKC_MANAGE_DELIVERABLES_GRP.activateDeliverables (
4687         p_api_version                 => 1.0,
4688         p_init_msg_list               => FND_API.G_FALSE,
4689         p_commit                    => FND_API.G_FALSE,
4690         p_bus_doc_id                  => p_contract_id,
4691         p_bus_doc_type                => contract_rec.contract_type,
4692         p_bus_doc_version             => contract_rec.contract_version_num,
4693         p_event_code                  => G_CONTRACT_EFFECTIVE_EVENT,
4694         p_event_date                  => contract_rec.contract_effective_date,
4695         p_sync_flag                   => l_sync_flag,
4696         p_bus_doc_date_events_tbl     => l_activate_event_tbl,
4697         x_msg_data                    => x_msg_data,
4698         x_msg_count                   => x_msg_count,
4699         x_return_status               => x_return_status);
4700 
4701      IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4702         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4703                 'OKC_DELIVERABLE_PROCESS_PVT.activateDeliverables return status is : '
4704             || x_return_status);
4705      END IF;
4706      -----------------------------------------------------
4707       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4708           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4709       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4710           RAISE OKC_API.G_EXCEPTION_ERROR;
4711       END IF;
4712     --------------------------------------------------------
4713 
4714     -- Checking if we need to call deliverable's APIs for synch-ing
4715     IF (l_sync_flag = FND_API.G_TRUE) THEN
4716         -- Get the previous signed contract's expiration date
4717         -- Get effective dates and version of the contract.
4718         OPEN arch_contract_csr(contract_rec.latest_signed_ver_number);
4719         FETCH arch_contract_csr INTO arch_contract_rec;
4720         IF(contract_csr%NOTFOUND) THEN
4721             IF (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4722                 FND_LOG.STRING(FND_LOG.LEVEL_EXCEPTION ,
4723                     G_MODULE||l_api_name,
4724                                  'Invalid Contract Id: '|| p_contract_id);
4725             END IF;
4726             Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
4727                             p_msg_name     => G_INVALID_CONTRACT_ID_MSG,
4728                             p_token1       => G_CONTRACT_ID_TOKEN,
4729                             p_token1_value => to_char(p_contract_id));
4730             RAISE FND_API.G_EXC_ERROR;
4731             -- RAISE NO_DATA_FOUND;
4732         END IF;
4733         l_prev_signed_effective_date := arch_contract_rec.contract_effective_date;
4734         l_prev_signed_expiration_date := arch_contract_rec.contract_expiration_date;
4735 
4736         CLOSE arch_contract_csr;
4737         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4738                     FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4739                      'Before checking if we need to call updateDeliverable and disableDeliverable()');
4740                     FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4741                      'Prev signed expiration date: ' || trunc(l_prev_signed_expiration_date));
4742                     FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4743                      'Current version expiration date: ' || trunc(contract_rec.contract_expiration_date));
4744         END IF;
4745         l_update_event_tbl(1).event_code := G_CONTRACT_EFFECTIVE_EVENT;
4746         l_update_event_tbl(1).event_date := contract_rec.contract_effective_date;
4747         l_update_event_tbl(2).event_code := G_CONTRACT_EXPIRE_EVENT;
4748         l_update_event_tbl(2).event_date := contract_rec.contract_expiration_date;
4749         -- If last signed version's expiration date is different from the current version's expiration date
4750         -- we need to call deliverables API for synching previous signed deliverables.
4751         -- This logic is executed to handle the null date scenarios
4752         IF (trunc(l_prev_signed_expiration_date)=trunc(contract_rec.contract_expiration_date)) THEN
4753            l_expiration_date_matches_flag := FND_API.G_TRUE;
4754         END IF;
4755 
4756         IF (trunc(l_prev_signed_effective_date)=trunc(contract_rec.contract_effective_date)) THEN
4757            l_effective_date_matches_flag := FND_API.G_TRUE;
4758         END IF;
4759 
4760         IF ((l_expiration_date_matches_flag = FND_API.G_FALSE ) OR (l_effective_date_matches_flag = FND_API.G_FALSE)) THEN
4761              IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4762                     FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4763                 'Calling OKC_MANAGE_DELIVERABLES_GRP.updateDeliverables');
4764              END IF;
4765              OKC_MANAGE_DELIVERABLES_GRP.updateDeliverables (
4766                 p_api_version                 => 1.0,
4767                 p_init_msg_list               => FND_API.G_FALSE,
4768                 p_commit                    => FND_API.G_FALSE,
4769                 p_bus_doc_id                  => p_contract_id,
4770                 p_bus_doc_type                => contract_rec.contract_type,
4771                 p_bus_doc_version             => contract_rec.contract_version_num,
4772                 p_bus_doc_date_events_tbl     => l_update_event_tbl,
4773                 x_msg_data                    => x_msg_data,
4774                 x_msg_count                   => x_msg_count,
4775                 x_return_status               => x_return_status);
4776 
4777              IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4778                      FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4779                  'OKC_DELIVERABLE_PROCESS_PVT.updateDeliverables return status is : '
4780                   || x_return_status);
4781              END IF;
4782              -----------------------------------------------------
4783              IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4784                RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4785              ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4786                RAISE OKC_API.G_EXCEPTION_ERROR;
4787              END IF;
4788              --------------------------------------------------------
4789        END IF;  -- expiration date comparision
4790        -- Disable prev. version deliverables
4791        IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4792                     FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4793                 'Calling OKC_MANAGE_DELIVERABLES_GRP.disableDeliverables');
4794        END IF;
4795        OKC_MANAGE_DELIVERABLES_GRP.disableDeliverables (
4796                 p_api_version                 => 1.0,
4797                 p_init_msg_list               => FND_API.G_FALSE,
4798                 p_commit                    => FND_API.G_FALSE,
4799                 p_bus_doc_id                  => p_contract_id,
4800                 p_bus_doc_type                => contract_rec.contract_type,
4801                 p_bus_doc_version             => contract_rec.latest_signed_ver_number,
4802                 x_msg_data                    => x_msg_data,
4803                 x_msg_count                   => x_msg_count,
4804                 x_return_status               => x_return_status);
4805 
4806        IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4807                      FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4808                  'OKC_DELIVERABLE_PROCESS_PVT.disableDeliverables return status is : '
4809                   || x_return_status);
4810        END IF;
4811        -----------------------------------------------------
4812        IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
4813           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
4814        ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
4815           RAISE OKC_API.G_EXCEPTION_ERROR;
4816        END IF;
4817        --------------------------------------------------------
4818     END IF;  -- (l_sync_flag = 'Y')
4819     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4820           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
4821                 'Updating latest_signed_ver_number column');
4822     END IF;
4823     UPDATE okc_rep_contracts_all
4824     SET latest_signed_ver_number = contract_rec.contract_version_num
4825     WHERE contract_id = p_contract_id;
4826     CLOSE contract_csr;
4827     -- Standard check of p_commit
4828     IF FND_API.To_Boolean( p_commit ) THEN
4829       COMMIT WORK;
4830     END IF;
4831 
4832     -- Standard call to get message count and if count is 1, get message info.
4833     FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
4834 
4835   IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4836         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
4837                 'Leaving OKC_REP_CONTRACT_PROCESS_PVT.sign_contract');
4838     END IF;
4839 
4840 
4841     EXCEPTION
4842       WHEN FND_API.G_EXC_ERROR THEN
4843         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4844            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
4845                  g_module || l_api_name,
4846                  'Leaving sign_contract:FND_API.G_EXC_ERROR Exception');
4847         END IF;
4848         --close cursors
4849         IF (contract_csr%ISOPEN) THEN
4850           CLOSE contract_csr ;
4851         END IF;
4852         IF (arch_contract_csr%ISOPEN) THEN
4853           CLOSE arch_contract_csr ;
4854         END IF;
4855         ROLLBACK TO sign_contract_PVT;
4856         x_return_status := FND_API.G_RET_STS_ERROR;
4857         FND_MSG_PUB.Count_And_Get(
4858         p_count =>  x_msg_count,
4859         p_data  =>  x_msg_data
4860         );
4861 
4862       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4863         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4864            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
4865                  g_module || l_api_name,
4866                  'Leaving sign_contract:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
4867         END IF;
4868         --close cursors
4869         IF (contract_csr%ISOPEN) THEN
4870           CLOSE contract_csr ;
4871         END IF;
4872         IF (arch_contract_csr%ISOPEN) THEN
4873           CLOSE arch_contract_csr ;
4874         END IF;
4875         ROLLBACK TO sign_contract_PVT;
4876         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4877         FND_MSG_PUB.Count_And_Get(
4878         p_count =>  x_msg_count,
4879         p_data  =>  x_msg_data
4880         );
4881 
4882       WHEN OTHERS THEN
4883         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4884            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
4885                  g_module || l_api_name,
4886                  'Leaving sign_contract because of EXCEPTION: ' || sqlerrm);
4887         END IF;
4888         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
4889                             p_msg_name     => G_UNEXPECTED_ERROR,
4890                             p_token1       => G_SQLCODE_TOKEN,
4891                             p_token1_value => sqlcode,
4892                             p_token2       => G_SQLERRM_TOKEN,
4893                             p_token2_value => sqlerrm);
4894         ROLLBACK TO sign_contract_PVT;
4895         --close cursors
4896         IF (contract_csr%ISOPEN) THEN
4897           CLOSE contract_csr ;
4898         END IF;
4899         IF (arch_contract_csr%ISOPEN) THEN
4900           CLOSE arch_contract_csr ;
4901         END IF;
4902         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4903         FND_MSG_PUB.Count_And_Get(
4904         p_count =>  x_msg_count,
4905         p_data  =>  x_msg_data
4906         );
4907   END sign_contract;
4908 
4909 -- Start of comments
4910 --API name      : Esign_contract
4911 --Type          : Private.
4912 --Function      : Launches E Signature Workflow
4913 --Pre-reqs      : None.
4914 --Parameters    :
4915 --IN            : p_api_version         IN NUMBER       Required
4916 --              : p_init_msg_list       IN VARCHAR2     Optional
4917 --                   Default = FND_API.G_FALSE
4918 --              : p_commit              IN VARCHAR2     Optional
4919 --                   Default = FND_API.G_FALSE
4920 --              : p_contract_id          IN NUMBER       Required
4921 --                   Id of the contract to be signed
4922 --OUT           : x_return_status       OUT  VARCHAR2(1)
4923 --              : x_msg_count           OUT  NUMBER
4924 --              : x_msg_data            OUT  VARCHAR2(2000)
4925 --Note          :
4926 -- End of comments
4927 
4928 PROCEDURE Esign_contract(
4929       p_api_version            IN  NUMBER,
4930       p_init_msg_list          IN  VARCHAR2,
4931       p_commit                   IN  VARCHAR2,
4932       p_contract_id              IN  NUMBER,
4933       x_msg_data               OUT NOCOPY  VARCHAR2,
4934       x_msg_count              OUT NOCOPY  NUMBER,
4935       x_return_status          OUT NOCOPY  VARCHAR2)
4936   IS
4937       l_api_name        VARCHAR2(30);
4938       l_api_version             NUMBER;
4939       l_activate_event_tbl      EVENT_TBL_TYPE;
4940       l_update_event_tbl        EVENT_TBL_TYPE;
4941       l_sync_flag               VARCHAR2(1);
4942       l_expiration_date_matches_flag VARCHAR2(1);
4943       l_effective_date_matches_flag  VARCHAR2(1);
4944       l_prev_signed_expiration_date OKC_REP_CONTRACTS_ALL.CONTRACT_EXPIRATION_DATE%TYPE;
4945       l_prev_signed_effective_date  OKC_REP_CONTRACTS_ALL.CONTRACT_EXPIRATION_DATE%TYPE;
4946 
4947     CURSOR contract_csr IS
4948       SELECT contract_type,contract_name, contract_version_num, latest_signed_ver_number, contract_effective_date, contract_expiration_date
4949       FROM OKC_REP_CONTRACTS_ALL
4950       WHERE contract_id = p_contract_id;
4951 
4952     CURSOR arch_contract_csr (l_contract_version NUMBER) IS
4953       SELECT contract_effective_date, contract_expiration_date
4954       FROM OKC_REP_CONTRACT_VERS
4955       WHERE contract_id = p_contract_id
4956       AND contract_version_num = l_contract_version;
4957 
4958        CURSOR fetch_wf_name(p_contract_type varchar2) IS
4959        SELECT signature_workflow_name FROM okc_bus_doc_types_b WHERE document_type= p_contract_type;
4960 
4961 
4962 
4963   contract_rec       contract_csr%ROWTYPE;
4964   arch_contract_rec  arch_contract_csr%ROWTYPE;
4965 
4966   l_contract_status okc_rep_contracts_all.contract_status_code%TYPE;
4967   l_contract_number okc_rep_contracts_all.contract_number%TYPE;
4968    l_contract_version  okc_rep_contracts_all.contract_version_num%TYPE;
4969    l_user_key        wf_items.user_key%TYPE;
4970     l_wf_sequence       wf_items.item_key%TYPE;
4971      l_wf_name  wf_items.item_type%TYPE;
4972 
4973 
4974 
4975   BEGIN
4976 
4977     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
4978         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
4979                 'Entered OKC_REP_CONTRACT_PROCESS_PVT.Esign_contract');
4980         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
4981                 'Contract Id is: ' || p_contract_id);
4982     END IF;
4983     l_api_name := 'Esign_contract';
4984     l_api_version := 1.0;
4985   -- Standard Start of API savepoint
4986     SAVEPOINT Esign_contract;
4987     -- Standard call to check for call compatibility.
4988     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
4989       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4990     END IF;
4991     -- Initialize message list if p_init_msg_list is set to TRUE.
4992     IF FND_API.to_Boolean( p_init_msg_list ) THEN
4993       FND_MSG_PUB.initialize;
4994     END IF;
4995     --  Initialize API return status to success
4996     x_return_status := FND_API.G_RET_STS_SUCCESS;
4997 
4998     SELECT OKC_REP_WF_SIGN_S.nextval INTO l_wf_sequence FROM dual;
4999     -- Get contract number
5000         OPEN contract_csr;
5001     FETCH contract_csr INTO contract_rec;
5002     IF(contract_csr%NOTFOUND) THEN
5003         IF (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5004             FND_LOG.STRING(FND_LOG.LEVEL_EXCEPTION ,
5005                     G_MODULE||l_api_name,
5006                                  'Invalid Contract Id: '|| p_contract_id);
5007         END IF;
5008         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
5009                             p_msg_name     => G_INVALID_CONTRACT_ID_MSG,
5010                             p_token1       => G_CONTRACT_ID_TOKEN,
5011                             p_token1_value => to_char(p_contract_id));
5012         RAISE FND_API.G_EXC_ERROR;
5013         -- RAISE NO_DATA_FOUND;
5014     END IF;
5015 
5016       -- Get the user key
5017     l_user_key := contract_rec.contract_name || ':' || l_wf_sequence;
5018     l_contract_version:= contract_rec.contract_version_num;
5019 
5020 
5021        OPEN   fetch_wf_name(contract_rec.contract_type);
5022        FETCH  fetch_wf_name INTO l_wf_name;
5023        CLOSE  fetch_wf_name;
5024 
5025        IF l_wf_name IS NULL THEN
5026        IF (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5027             FND_LOG.STRING(FND_LOG.LEVEL_EXCEPTION ,
5028                     G_MODULE||l_api_name,
5029                                  'Workflow not associated for the Document');
5030         END IF;
5031         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
5032                             p_msg_name     => 'OKC_REP_INV_E_SIGN'
5033                            );
5034         RAISE FND_API.G_EXC_ERROR;
5035 
5036        END IF;
5037 
5038     CLOSE contract_csr;
5039 
5040   IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5041         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5042                 'Calling OKC_REP_UTIL_PVT.change_contract_status');
5043   END IF;
5044     -- Update the contract status and add a record in OKC_REP_CON_STATUS_HIST table.
5045     OKC_REP_UTIL_PVT.change_contract_status(
5046       p_api_version         => 1.0,
5047       p_init_msg_list       => FND_API.G_FALSE,
5048       p_contract_id         => p_contract_id,
5049       p_contract_version    => l_contract_version,
5050       p_status_code         => G_STATUS_PENDING_SIGNATURE,
5051       p_user_id             => fnd_global.user_id,
5052       p_note                => NULL,
5053       x_msg_data            => x_msg_data,
5054       x_msg_count           => x_msg_count,
5055       x_return_status       => x_return_status);
5056 
5057     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5058         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5059                 'OKC_REP_UTIL_PVT.change_contract_status return status is: '
5060           || x_return_status);
5061     END IF;
5062     -----------------------------------------------------
5063     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5064       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5065     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5066       RAISE OKC_API.G_EXCEPTION_ERROR;
5067     END IF;
5068     --------------------------------------------------------
5069 
5070    /*
5071     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5072         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5073                 'Calling OKC_REP_UTIL_PVT.add_approval_hist_record');
5074     END IF;
5075   -- Add a record in OKC_REP_CON_SIGNATURES table.
5076     OKC_REP_UTIL_PVT.add_signature_hist_record(
5077       p_api_version         => 1.0,
5078       p_init_msg_list       => FND_API.G_FALSE,
5079       p_contract_id         => p_contract_id,
5080       p_sequence_id         => NULL ,
5081       p_contract_version    => contract_rec.contract_version_num,
5082       p_action_code         => G_ACTION_SUBMITTED,
5083       p_user_id             => fnd_global.user_id,
5084       p_note                => NULL,
5085       x_msg_data            => x_msg_data,
5086       x_msg_count           => x_msg_count,
5087       x_return_status       => x_return_status,
5088       p_forward_user_id    => NULL);
5089 
5090 
5091     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5092         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5093                 'OKC_REP_UTIL_PVT.add_signature_hist_record return status is: '
5094           || x_return_status);
5095     END IF;
5096     -------------------------------------------------------
5097     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5098       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5099     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5100       RAISE OKC_API.G_EXCEPTION_ERROR;
5101     END IF;   */
5102     --------------------------------------------------------
5103 
5104    IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5105         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5106                 'Workflow associated to the document type is '||l_wf_name);
5107     END IF;
5108 
5109 
5110 
5111  IF l_wf_name IN ( G_SIGNATURE_ITEM_TYPE , G_SIG_ITEM_TYPE_2579) THEN
5112 
5113     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5114         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5115                 'Calling WF_ENGINE.createprocess');
5116     END IF;
5117 
5118     WF_ENGINE.createprocess (
5119                     itemtype => l_wf_name,
5120                     itemkey  => l_wf_sequence,
5121                     process  => G_SIGNATURE_PROCESS);
5122 
5123 
5124   IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5125         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5126                 'Calling WF_ENGINE.SetItemUserKey');
5127         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5128                 'User key Value is: ' || l_user_key);
5129     END IF;
5130     WF_ENGINE.SetItemUserKey (
5131                   itemtype => l_wf_name,
5132                     itemkey  => l_wf_sequence,
5133                     userkey  => l_user_key);
5134 
5135     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5136         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5137                 'Calling WF_ENGINE.SetItemOwner');
5138     END IF;
5139     WF_ENGINE.SetItemOwner (
5140                   itemtype => l_wf_name,
5141                     itemkey  => l_wf_sequence,
5142                     owner    => fnd_global.user_name);
5143 
5144 
5145     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5146           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5147                 'Calling WF_ENGINE.setitemattrnumber for CONTRACT_ID');
5148     END IF;
5149     WF_ENGINE.SetItemAttrText (
5150                     itemtype =>  l_wf_name,
5151                     itemkey  =>  l_wf_sequence,
5152                     aname    => 'CONTRACT_ID',
5153                     avalue   =>  p_contract_id);
5154 
5155     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5156           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5157                 'Calling WF_ENGINE.startprocess for REQUESTOR');
5158     END IF;
5159     WF_ENGINE.SetItemAttrText (
5160                     itemtype  => l_wf_name,
5161                     itemkey   => l_wf_sequence,
5162                     aname     => 'REQUESTER',
5163                     avalue    => fnd_global.user_name);
5164 
5165        IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5166           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5167                 'Calling WF_ENGINE.setitemattrnumber for CTX_USER_ID ' || fnd_global.user_id);
5168       END IF;
5169 
5170       WF_ENGINE.SetItemAttrNumber (
5171             itemtype =>  l_wf_name,
5172             itemkey  =>  l_wf_sequence,
5173             aname    =>  'CTX_USER_ID',
5174             avalue   =>  fnd_global.user_id);
5175 
5176       IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5177           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5178                 'Calling WF_ENGINE.setitemattrnumber for CTX_APPL_ID ' || fnd_global.RESP_APPL_ID);
5179       END IF;
5180       WF_ENGINE.SetItemAttrNumber (
5181             itemtype =>  l_wf_name,
5182             itemkey  =>  l_wf_sequence,
5183             aname    =>  'CTX_APPL_ID',
5184             avalue   =>  fnd_global.RESP_APPL_ID);
5185 
5186       IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5187           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5188                 'Calling WF_ENGINE.setitemattrnumber for CTX_RESP_ID ' || fnd_global.resp_id);
5189       END IF;
5190       WF_ENGINE.SetItemAttrNumber (
5191             itemtype =>  l_wf_name,
5192             itemkey  =>  l_wf_sequence,
5193             aname    =>  'CTX_RESP_ID',
5194             avalue   =>  fnd_global.resp_id);
5195 
5196     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5197         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5198                 'Calling WF_ENGINE.startprocess');
5199     END IF;
5200     WF_ENGINE.startprocess (
5201                     itemtype => l_wf_name,
5202                     itemkey  =>  l_wf_sequence);
5203 
5204 
5205 
5206   -- Update WF columns in OKC_REP_CONTRACTS_ALL
5207   IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5208         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5209                 'Updating workflow columns in OKC_REP_CONTRACTS_ALL');
5210     END IF;
5211 
5212     /*UPDATE OKC_REP_CONTRACTS_ALL
5213     SET wf_item_type = G_APPROVAL_ITEM_TYPE, wf_item_key = l_wf_sequence
5214     WHERE contract_id=p_contract_id;
5215       */
5216     COMMIT WORK;
5217 
5218 
5219 ELSE
5220 
5221     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5222         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5223                 'Calling the code hook to launch the custom sign workflow');
5224     END IF;
5225 
5226      okc_rep_wf_code_hook.launch_custom_sign_wf(
5227                                                 p_contract_id,
5228                                                 l_contract_version
5229                                                 ) ;
5230 
5231      COMMIT WORK;
5232 
5233 END IF;
5234 
5235     -- Standard call to get message count and if count is 1, get message info.
5236     FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
5237 
5238   IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5239         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
5240                 'Leaving OKC_REP_CONTRACT_PROCESS_PVT.Esign_contract');
5241     END IF;
5242 
5243     EXCEPTION
5244       WHEN FND_API.G_EXC_ERROR THEN
5245         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5246            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
5247                  g_module || l_api_name,
5248                  'Leaving Esign_contract:FND_API.G_EXC_ERROR Exception');
5249         END IF;
5250         --close cursors
5251         IF (contract_csr%ISOPEN) THEN
5252           CLOSE contract_csr ;
5253         END IF;
5254         ROLLBACK TO Esign_contract;
5255         x_return_status := FND_API.G_RET_STS_ERROR;
5256         FND_MSG_PUB.Count_And_Get(
5257         p_count =>  x_msg_count,
5258         p_data  =>  x_msg_data
5259         );
5260 
5261       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5262         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5263            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
5264                  g_module || l_api_name,
5265                  'Leaving Esign_contract:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
5266         END IF;
5267         --close cursors
5268         IF (contract_csr%ISOPEN) THEN
5269           CLOSE contract_csr ;
5270         END IF;
5271         ROLLBACK TO Esign_contract;
5272         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5273         FND_MSG_PUB.Count_And_Get(
5274         p_count =>  x_msg_count,
5275         p_data  =>  x_msg_data
5276         );
5277 
5278       WHEN OTHERS THEN
5279         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5280            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
5281                  g_module || l_api_name,
5282                  'Leaving Esign_contract because of EXCEPTION: ' || sqlerrm);
5283         END IF;
5284         --close cursors
5285         IF (contract_csr%ISOPEN) THEN
5286           CLOSE contract_csr ;
5287         END IF;
5288         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
5289                             p_msg_name     => G_UNEXPECTED_ERROR,
5290                             p_token1       => G_SQLCODE_TOKEN,
5291                             p_token1_value => sqlcode,
5292                             p_token2       => G_SQLERRM_TOKEN,
5293                             p_token2_value => sqlerrm);
5294         ROLLBACK TO Esign_contract;
5295         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5296         FND_MSG_PUB.Count_And_Get(
5297         p_count =>  x_msg_count,
5298         p_data  =>  x_msg_data
5299         );
5300 
5301 
5302   END Esign_contract;
5303 
5304 
5305  -- Start of comments
5306 --API name      : terminate_contract
5307 --Type          : Private.
5308 --Function      : Changes contract status to TERMINATED and calls delivarables
5309 --                API to cancel deliverables of that contract
5310 --Pre-reqs      : None.
5311 --Parameters    :
5312 --IN            : p_api_version         IN NUMBER       Required
5313 --              : p_init_msg_list       IN VARCHAR2     Optional
5314 --                   Default = FND_API.G_FALSE
5315 --              : p_commit              IN VARCHAR2     Optional
5316 --                   Default = FND_API.G_FALSE
5317 --              : p_contract_id          IN NUMBER       Required
5318 --                   Id of the contract to be terminated
5319 --              : p_termination_date     IN DATE       Required
5320 --                   Date the contract is terminated
5321 --OUT           : x_return_status       OUT  VARCHAR2(1)
5322 --              : x_msg_count           OUT  NUMBER
5323 --              : x_msg_data            OUT  VARCHAR2(2000)
5324 --Note          :
5325 -- End of comments
5326   PROCEDURE terminate_contract(
5327       p_api_version            IN  NUMBER,
5328       p_init_msg_list          IN  VARCHAR2,
5329       p_commit                   IN  VARCHAR2,
5330       p_contract_id              IN  NUMBER,
5331       p_termination_date         IN  DATE,
5332       x_msg_data               OUT NOCOPY  VARCHAR2,
5333       x_msg_count              OUT NOCOPY  NUMBER,
5334       x_return_status          OUT NOCOPY  VARCHAR2)
5335   IS
5336 
5337       l_api_name        VARCHAR2(30);
5338       l_api_version             NUMBER;
5339       l_cancel_event_tbl      EVENT_TBL_TYPE;
5340       l_update_event_tbl      EVENT_TBL_TYPE;
5341 
5342 
5343 
5344     CURSOR contract_csr IS
5345       SELECT contract_type, contract_version_num, latest_signed_ver_number, contract_effective_date,
5346            contract_expiration_date, termination_date
5347       FROM OKC_REP_CONTRACTS_ALL
5348       WHERE contract_id = p_contract_id;
5349 
5350   contract_rec       contract_csr%ROWTYPE;
5351   BEGIN
5352 
5353     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5354         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
5355                 'Entered OKC_REP_CONTRACT_PROCESS_PVT.terminate_contract');
5356         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
5357                 'Contract Id is: ' || p_contract_id);
5358         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
5359                 'Termination date is: ' || to_char(p_termination_date));
5360     END IF;
5361     l_api_name := 'terminate_contacts';
5362     l_api_version := 1.0;
5363   -- Standard Start of API savepoint
5364     SAVEPOINT terminate_contract_PVT;
5365     -- Standard call to check for call compatibility.
5366     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
5367       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5368     END IF;
5369     -- Initialize message list if p_init_msg_list is set to TRUE.
5370     IF FND_API.to_Boolean( p_init_msg_list ) THEN
5371       FND_MSG_PUB.initialize;
5372     END IF;
5373 
5374     --  Initialize API return status to success
5375     x_return_status := FND_API.G_RET_STS_SUCCESS;
5376 
5377     -- Get effective dates and version of the contract.
5378     OPEN contract_csr;
5379     FETCH contract_csr INTO contract_rec;
5380     IF(contract_csr%NOTFOUND) THEN
5381           IF (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5382               FND_LOG.STRING(FND_LOG.LEVEL_EXCEPTION ,
5383                     G_MODULE||l_api_name,
5384                                  'Invalid Contract Id: '|| p_contract_id);
5385           END IF;
5386           Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
5387                             p_msg_name     => G_INVALID_CONTRACT_ID_MSG,
5388                             p_token1       => G_CONTRACT_ID_TOKEN,
5389                             p_token1_value => to_char(p_contract_id));
5390           RAISE FND_API.G_EXC_ERROR;
5391           -- RAISE NO_DATA_FOUND;
5392     END IF;
5393 
5394     -- Lock the contract header
5395     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5396       FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5397         'Calling OKC_REP_CONTRACT_PROCESS_PVT.Lock_Contract_Header()');
5398     END IF;
5399     -- Lock the contract header
5400     Lock_Contract_Header(
5401         p_contract_id              => p_contract_id,
5402           p_object_version_number    => NULL,
5403           x_return_status            => x_return_status
5404           );
5405     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5406         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5407         'OKC_REP_CONTRACT_PROCESS_PVT.Lock_Contract_Header return status is: '
5408       || x_return_status);
5409     END IF;
5410     -----------------------------------------------------
5411     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5412       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5413     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5414       RAISE OKC_API.G_EXCEPTION_ERROR;
5415     END IF;
5416     -----------------------------------------------------
5417     IF (trunc(p_termination_date) <= trunc(sysdate)) THEN
5418       IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5419           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5420                 'Calling OKC_REP_UTIL_PVT.change_contract_status');
5421       END IF;
5422 
5423         -- Update the contract status and add a record in OKC_REP_CON_STATUS_HIST table.
5424         OKC_REP_UTIL_PVT.change_contract_status(
5425           p_api_version         => 1.0,
5426           p_init_msg_list       => FND_API.G_FALSE,
5427           p_contract_id         => p_contract_id,
5428           p_contract_version    => contract_rec.contract_version_num,
5429           p_status_code         => G_STATUS_TERMINATED,
5430           p_user_id             => fnd_global.user_id,
5431           p_note                => NULL,
5432         x_msg_data            => x_msg_data,
5433           x_msg_count           => x_msg_count,
5434           x_return_status       => x_return_status);
5435      IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5436                 fnd_log.string(FND_LOG.LEVEL_STATEMENT,
5437                   g_module || l_api_name,
5438                   'Completed OKC_REP_UTIL_PVT.change_contract_status with return status: ' || x_return_status);
5439      END IF;
5440      -----------------------------------------------------
5441      IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5442            RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5443      ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5444             RAISE OKC_API.G_EXCEPTION_ERROR;
5445      END IF;
5446      ------------------------------------------------------
5447 
5448     END IF; -- (p_termination_date <= sysdate)
5449 
5450     -- We should call cancel_deliverables only for the first time
5451     IF (contract_rec.termination_date IS NULL) THEN
5452       l_cancel_event_tbl(1).event_code := G_CONTRACT_EFFECTIVE_EVENT;
5453       l_cancel_event_tbl(1).event_date := contract_rec.contract_effective_date;
5454       l_cancel_event_tbl(2).event_code := G_CONTRACT_EXPIRE_EVENT;
5455       l_cancel_event_tbl(2).event_date := contract_rec.contract_expiration_date;
5456       IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5457        FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5458                 'Calling OKC_MANAGE_DELIVERABLES_GRP.activateCloseOutDeliverables ');
5459       END IF;
5460 
5461       OKC_MANAGE_DELIVERABLES_GRP.activateCloseOutDeliverables (
5462         p_api_version                 => 1.0,
5463         p_init_msg_list               => FND_API.G_FALSE,
5464         p_commit                    => FND_API.G_FALSE,
5465         p_bus_doc_id                  => p_contract_id,
5466         p_bus_doc_type                => contract_rec.contract_type,
5467         p_bus_doc_version             => contract_rec.contract_version_num,
5468         p_event_code                  => G_CONTRACT_TERMINATED_EVENT,
5469         p_event_date                  => p_termination_date,
5470         p_bus_doc_date_events_tbl     => l_cancel_event_tbl,
5471         x_msg_data                    => x_msg_data,
5472         x_msg_count                   => x_msg_count,
5473         x_return_status               => x_return_status);
5474 
5475       IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5476         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5477                 'OKC_DELIVERABLE_PROCESS_PVT.activateCloseOutDeliverables return status is : '
5478             || x_return_status);
5479       END IF;
5480       -----------------------------------------------------
5481       IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5482         RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5483       ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5484         RAISE OKC_API.G_EXCEPTION_ERROR;
5485       END IF;
5486       --------------------------------------------------------
5487     ELSE
5488       IF (trunc(contract_rec.termination_date) <> trunc(p_termination_date)) THEN
5489         -- Update the deliverables
5490         l_update_event_tbl(1).event_code := G_CONTRACT_TERMINATED_EVENT;
5491         l_update_event_tbl(1).event_date := p_termination_date;
5492         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5493          FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5494                 'Calling OKC_MANAGE_DELIVERABLES_GRP.updateDeliverables ');
5495         END IF;
5496         OKC_MANAGE_DELIVERABLES_GRP.updateDeliverables (
5497             p_api_version                 => 1.0,
5498             p_init_msg_list               => FND_API.G_FALSE,
5499             p_commit                      => FND_API.G_FALSE,
5500             p_bus_doc_id                  => p_contract_id,
5501             p_bus_doc_type                => contract_rec.contract_type,
5502             p_bus_doc_version             => contract_rec.contract_version_num,
5503             p_bus_doc_date_events_tbl     => l_update_event_tbl,
5504             x_msg_data                    => x_msg_data,
5505             x_msg_count                   => x_msg_count,
5506             x_return_status               => x_return_status);
5507 
5508         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5509           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5510                 'OKC_DELIVERABLE_PROCESS_PVT.updateDeliverables return status is : '
5511             || x_return_status);
5512         END IF;
5513         -----------------------------------------------------
5514         IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
5515           RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
5516         ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
5517           RAISE OKC_API.G_EXCEPTION_ERROR;
5518         END IF;
5519         --------------------------------------------------------
5520       END IF; -- contract_rec.termination_date <> p_termination_date
5521     END IF; -- contract_rec.termination_date = null
5522 
5523     CLOSE contract_csr;
5524 
5525     -- Standard check of p_commit
5526     IF FND_API.To_Boolean( p_commit ) THEN
5527       COMMIT WORK;
5528     END IF;
5529 
5530     -- Standard call to get message count and if count is 1, get message info.
5531     FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
5532 
5533   IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5534         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
5535                 'Leaving OKC_REP_CONTRACT_PROCESS_PVT.terminate_contract');
5536     END IF;
5537 
5538 
5539     EXCEPTION
5540       WHEN FND_API.G_EXC_ERROR THEN
5541         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5542            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
5543                  g_module || l_api_name,
5544                  'Leaving terminate_contract:FND_API.G_EXC_ERROR Exception');
5545         END IF;
5546         --close cursors
5547         IF (contract_csr%ISOPEN) THEN
5548           CLOSE contract_csr ;
5549         END IF;
5550         ROLLBACK TO terminate_contract_PVT;
5551         x_return_status := FND_API.G_RET_STS_ERROR;
5552         FND_MSG_PUB.Count_And_Get(
5553         p_count =>  x_msg_count,
5554         p_data  =>  x_msg_data
5555         );
5556 
5557       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5558         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5559            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
5560                  g_module || l_api_name,
5561                  'Leaving terminate_contract:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
5562         END IF;
5563         --close cursors
5564         IF (contract_csr%ISOPEN) THEN
5565           CLOSE contract_csr ;
5566         END IF;
5567         ROLLBACK TO terminate_contract_PVT;
5568         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5569         FND_MSG_PUB.Count_And_Get(
5570         p_count =>  x_msg_count,
5571         p_data  =>  x_msg_data
5572         );
5573 
5574       WHEN OTHERS THEN
5575         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5576            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
5577                  g_module || l_api_name,
5578                  'Leaving terminate_contract because of EXCEPTION: ' || sqlerrm);
5579         END IF;
5580         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
5581                             p_msg_name     => G_UNEXPECTED_ERROR,
5582                             p_token1       => G_SQLCODE_TOKEN,
5583                             p_token1_value => sqlcode,
5584                             p_token2       => G_SQLERRM_TOKEN,
5585                             p_token2_value => sqlerrm);
5586         ROLLBACK TO terminate_contract_PVT;
5587         --close cursors
5588         IF (contract_csr%ISOPEN) THEN
5589           CLOSE contract_csr;
5590         END IF;
5591         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5592         FND_MSG_PUB.Count_And_Get(
5593         p_count =>  x_msg_count,
5594         p_data  =>  x_msg_data
5595         );
5596   END terminate_contract;
5597 
5598    -- Start of comments
5599 --API name      : repository_notifier
5600 --Type          : Private.
5601 --Function      : Sends notifications to contract's contacts if
5602 --                the contract is about to expire or expired.
5603 --Pre-reqs      : None.
5604 --Parameters    :
5605 --IN            : p_api_version         IN NUMBER       Required
5606 --              : p_init_msg_list       IN VARCHAR2     Optional
5607 --                   Default = FND_API.G_FALSE
5608 --              : p_contract_id         IN NUMBER       Required
5609 --                   Id of the contract to be processed
5610 --              : p_contract_number     IN NUMBER       Required
5611 --                   Number of the contract to be processed
5612 --              : p_contract_version    IN NUMBER       Required
5613 --                   Version of the contract to be processed
5614 --OUT           : x_return_status       OUT  VARCHAR2(1)
5615 --              : x_msg_count           OUT  NUMBER
5616 --              : x_msg_data            OUT  VARCHAR2(2000)
5617 --Note          :
5618 -- End of comments
5619 
5620 PROCEDURE repository_notifier(
5621       p_api_version       IN          NUMBER,
5622       p_init_msg_list     IN          VARCHAR2,
5623       p_contract_id       IN          NUMBER,
5624       p_contract_number   IN          VARCHAR2,
5625       p_contract_version  IN          NUMBER,
5626       p_expired_flag      IN          VARCHAR2,
5627       p_notify_contact_role_id IN     NUMBER,
5628       x_msg_data          OUT NOCOPY  VARCHAR2,
5629       x_msg_count         OUT NOCOPY  NUMBER,
5630       x_return_status     OUT NOCOPY  VARCHAR2)
5631      IS
5632       l_item_key                     NUMBER;
5633       l_item_type                    VARCHAR2(30);
5634       l_process_name                 VARCHAR2(30);
5635       l_contract_contacts_role_name  VARCHAR2(320);
5636       l_user_name                    VARCHAR2(4000);
5637       l_display_name                 VARCHAR2(4000);
5638       l_contract_contacts_all        VARCHAR2(4000);
5639       l_contract_contacts_role_desc  VARCHAR2(500);
5640       l_subject_text                 VARCHAR2(200);
5641       l_error_msg                    VARCHAR2(4000);
5642       l_api_name                     VARCHAR2(30);
5643       l_api_version                  NUMBER;
5644       l_item_contract_id             VARCHAR2(30);
5645       l_item_contract_number         VARCHAR2(30);
5646       l_item_contract_version        VARCHAR2(30);
5647       l_item_contract_contacts       VARCHAR2(30);
5648       l_item_message_subject         VARCHAR2(30);
5649       l_message_code_expired         VARCHAR2(32);
5650       l_message_code_about_to_expire VARCHAR2(32);
5651       l_message_token_con_number     VARCHAR2(30);
5652       l_message_token_con_version    VARCHAR2(30);
5653       l_app_name                     VARCHAR2(30);
5654       l_msg_code                     VARCHAR2(30);
5655       l_contact_role_name            okc_rep_contact_roles_tl.name%TYPE;
5656       l_email                        per_all_people_f.email_address%TYPE;
5657 
5658       CURSOR CONTRACT_CONTACTS(c_contract_id in number) IS
5659       SELECT  contact_id
5660       FROM    okc_rep_party_contacts
5661       WHERE   contract_id = c_contract_id
5662       AND     party_role_code = G_PARTY_TYPE_INTERNAL
5663       AND     contact_role_id = p_notify_contact_role_id;
5664 
5665       CURSOR CONTACT_ATTRIBUTES(c_contact_id in number) IS
5666       SELECT  email_address
5667       FROM    per_all_people_f
5668       WHERE   person_id = c_contact_id
5669       AND     effective_start_date = (SELECT MAX(effective_start_date)
5670                                       FROM   per_all_people_f
5671                                       WHERE  person_id = c_contact_id);
5672 
5673       contact_attributes_rec contact_attributes%ROWTYPE;
5674 
5675 	  CURSOR  cur_contact_role
5676       is
5677       SELECT NAME FROM okc_rep_contact_roles_vl
5678       WHERE CONTACT_ROLE_ID = p_notify_contact_role_id;
5679 
5680 	--Acq Plan Message Cleanup
5681     l_resolved_msg_name VARCHAR2(30);
5682     l_resolved_token VARCHAR2(100);
5683     l_doc_type VARCHAR2(30);
5684 
5685 
5686     BEGIN
5687       IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5688           FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
5689             'Entered OKC_REP_CONTRACT_PROCESS_PVT.repository_notifier');
5690           FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
5691             'Contract Id is: ' || p_contract_id);
5692           FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
5693             'Contract Number is: ' || p_contract_number);
5694           FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
5695             'Expired flag is: ' || p_expired_flag);
5696           FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
5697             'Contact Role Id is: ' || p_notify_contact_role_id);
5698           FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
5699             'Contract Version is: ' || p_contract_version);
5700       END IF;
5701 
5702       --initialize variables
5703       l_app_name      := 'OKC';
5704       l_api_name      := 'repository_notifier';
5705       l_api_version   := 1.0;
5706       l_item_type     := 'OKCREPXN';
5707       l_process_name  := 'REP_CONTRACT_EXPIRATION_NTF';
5708 
5709       l_item_contract_id       := 'CONTRACT_ID';
5710       l_item_contract_number   := 'CONTRACT_NUMBER';
5711       l_item_contract_version  := 'CONTRACT_VERSION';
5712       l_item_contract_contacts := 'CONTRACT_CONTACTS';
5713       l_item_message_subject   := 'SUBJECT';
5714 
5715       l_message_code_expired         := 'OKC_REP_CONTRACT_EXPIRED';
5716       --Acq Plan Messages Cleanup
5717       --l_message_code_about_to_expire := 'OKC_REP_CON_ABOUT_TO_EXPIRE';
5718       l_message_code_about_to_expire := 'OKC_REP_CON_ABOUT_TO_EXPIRE';
5719 
5720       l_message_token_con_number  := 'CONTRACT_NUMBER';
5721       l_message_token_con_version := 'CONTRACT_VERSION';
5722 
5723       -- Standard Start of API savepoint
5724       SAVEPOINT repository_notifier_pvt;
5725 
5726       -- Standard call to check for call compatibility.
5727       IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
5728         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5729       END IF;
5730 
5731       -- Initialize message list if p_init_msg_list is set to TRUE.
5732       IF FND_API.to_Boolean( p_init_msg_list ) THEN
5733         FND_MSG_PUB.initialize;
5734       END IF;
5735 
5736 	   -- Get contact role name
5737        OPEN cur_contact_role;
5738        FETCH cur_contact_role INTO l_contact_role_name;
5739        CLOSE cur_contact_role;
5740 
5741       FOR contract_contacts_rec in CONTRACT_CONTACTS(p_contract_id) LOOP
5742 
5743         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5744           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5745              'contract_contacts_rec.contact_id ' || contract_contacts_rec.contact_id);
5746           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5747                'Calling WF_DIRECTORY.GetUserName()');
5748         END IF;
5749 
5750         -- Get WF user name for the current contact
5751         WF_DIRECTORY.GetUserName(p_orig_system  => 'PER',
5752                                  p_orig_system_id => contract_contacts_rec.contact_id,
5753                                  p_name => l_user_name,
5754                                  p_display_name => l_display_name);
5755 
5756         IF (l_user_name IS NULL) THEN
5757 
5758           IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5759               FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5760                  'Current contact does not have FND User');
5761           END IF;
5762 
5763           -- Get Email address of the current contact
5764           OPEN CONTACT_ATTRIBUTES(contract_contacts_rec.contact_id);
5765           FETCH CONTACT_ATTRIBUTES into l_email;
5766           CLOSE CONTACT_ATTRIBUTES;
5767 
5768           -- Create adhoc user only if the current contact has a email address
5769           IF (l_email IS NOT NULL)  THEN
5770 
5771             l_display_name := null;
5772 
5773             IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5774               FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5775                  'Calling WF_DIRECTORY.CreateAdHocUser() with email ' || l_email);
5776             END IF;
5777 
5778             --create ad hoc user if user does not already exists
5779             WF_DIRECTORY.CreateAdHocUser(
5780               name            => l_user_name,
5781               display_name    => l_display_name,
5782               email_address   => l_email,
5783               description     => 'Repository Ad Hoc User',
5784               notification_preference => 'MAILHTML',
5785               expiration_date => SYSDATE + 1);
5786 
5787             IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5788               FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5789                  'Adhoc User Name ' || l_user_name);
5790             END IF;
5791 
5792           ELSE
5793 
5794             IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5795                 FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5796                    'Email address not available for the current contact');
5797             END IF;
5798 
5799           END IF;
5800 
5801         ELSE
5802 
5803           IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5804             FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5805                'WF User Name ' || l_user_name);
5806           END IF;
5807 
5808         END IF;
5809 
5810         --build concatinated user name list
5811         IF (l_user_name IS NOT NULL) THEN
5812 
5813           IF (l_contract_contacts_all IS NULL) THEN
5814             l_contract_contacts_all := l_user_name;
5815           ELSE
5816             l_contract_contacts_all := l_contract_contacts_all || ',' || l_user_name;
5817           END IF;
5818 
5819         END IF;
5820 
5821       END LOOP;
5822 
5823       IF (l_contract_contacts_all IS NOT NULL) THEN
5824 
5825         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5826           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5827              'User names list ' || l_contract_contacts_all);
5828         END IF;
5829 
5830         --Get item key from sequence
5831         SELECT TO_CHAR(okc_wf_notify_s1.NEXTVAL) INTO l_item_key FROM DUAL;
5832 
5833         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5834           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5835              'Calling WF_DIRECTORY.createAdHocRole()');
5836         END IF;
5837 
5838        IF  InStr(l_contract_contacts_all,',') = 0 THEN
5839             l_contract_contacts_role_name   :=    l_user_name;
5840             l_contract_contacts_role_desc   :=    l_display_name;
5841        ELSE
5842 
5843              IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5844           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5845              'Multiple Contacts exists, so creating adhoc role');
5846         END IF;
5847 
5848 
5849 
5850               l_contract_contacts_role_name  := l_contact_role_name||'_'||l_item_key;
5851 
5852 
5853 
5854              l_contract_contacts_role_desc :=l_contact_role_name;
5855 
5856 
5857         --create ad hoc workflow role
5858         WF_DIRECTORY.createAdHocRole( role_name => l_contract_contacts_role_name,
5859           role_display_name => l_contract_contacts_role_desc,
5860           role_description  => 'Repository Ad Hoc Role',
5861           notification_preference =>'MAILHTML',
5862           role_users        => l_contract_contacts_all,
5863           expiration_date   => SYSDATE + 1
5864         );
5865        END IF;
5866 
5867         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5868           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5869              'Calling wf_engine.CreateProcess()');
5870         END IF;
5871 
5872         --Create the process
5873         wf_engine.CreateProcess(
5874           itemtype  => l_item_type,
5875           itemkey   => l_item_key,
5876           process   => l_process_name);
5877 
5878         --set standard parameter
5879         wf_engine.SetItemUserKey (
5880           itemtype  => l_item_type,
5881           itemkey   => l_item_key,
5882           userkey   => l_item_key);
5883 
5884         --set process owner
5885         wf_engine.SetItemOwner (
5886           itemtype  => l_item_type,
5887           itemkey   => l_item_key,
5888           owner     => fnd_global.user_name);
5889 
5890         --set contracts role parameter
5891         wf_engine.SetItemAttrText (
5892           itemtype  => l_item_type,
5893           itemkey   => l_item_key,
5894           aname     => l_item_contract_contacts,
5895           avalue    => l_contract_contacts_role_name);
5896 
5897         --set contract id parameter
5898         wf_engine.SetItemAttrText (
5899           itemtype  => l_item_type,
5900           itemkey   => l_item_key,
5901           aname     => l_item_contract_id,
5902           avalue    => p_contract_id);
5903 
5904         --set contract number parameter
5905         wf_engine.SetItemAttrText (
5906           itemtype  => l_item_type,
5907           itemkey   => l_item_key,
5908           aname     => l_item_contract_number,
5909           avalue    => p_contract_number);
5910 
5911         --set contract version parameter
5912         wf_engine.SetItemAttrText (
5913           itemtype  => l_item_type,
5914           itemkey   => l_item_key,
5915           aname     => l_item_contract_version,
5916           avalue    => p_contract_version);
5917 
5918         --set message text, one message for already expired contract
5919         --and one for contract about to expire
5920         IF (p_expired_flag = 'Y') THEN
5921           l_doc_type := OKC_API.get_contract_type(p_contract_id);
5922           l_resolved_msg_name := OKC_API.resolve_message(l_message_code_expired,l_doc_type);
5923           l_resolved_token := OKC_API.resolve_hdr_token(l_doc_type);
5924 
5925           l_msg_code := l_resolved_msg_name;
5926         ELSE
5927 				  --Acq Plan Message Cleanup
5928           l_doc_type := OKC_API.get_contract_type(p_contract_id);
5929           l_resolved_msg_name := OKC_API.resolve_message(l_message_code_about_to_expire,l_doc_type);
5930           l_resolved_token := OKC_API.resolve_hdr_token(l_doc_type);
5931           --l_msg_code := l_message_code_about_to_expire;
5932           l_msg_code := l_resolved_msg_name;
5933         END IF;
5934 
5935         fnd_message.clear;
5936         --set message name
5937         fnd_message.set_name(
5938           application =>l_app_name,
5939           name        =>l_msg_code);
5940         --set message tokens
5941         fnd_message.set_token(
5942           token => 'HDR_TOKEN',
5943           value => l_resolved_token);
5944 
5945         fnd_message.set_token(
5946           token => l_message_token_con_number,
5947           value => p_contract_number);
5948         fnd_message.set_token(
5949           token => l_message_token_con_version,
5950           value => p_contract_version);
5951 
5952         --get fnd message
5953         l_subject_text := fnd_message.get;
5954 
5955         --set message subject
5956         wf_engine.SetItemAttrText (
5957           itemtype  => l_item_type,
5958           itemkey   => l_item_key,
5959           aname     => l_item_message_subject,
5960           avalue    => l_subject_text);
5961 
5962         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5963           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5964               'Calling wf_engine.StartProcess()');
5965         END IF;
5966 
5967         --Start the process
5968         wf_engine.StartProcess(
5969             itemtype  => l_item_type,
5970             itemkey   => l_item_key);
5971 
5972         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5973           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5974              'Updating okc_rep_contracts_all and okc_rep_contract_vers with wf_exp_ntf_item_key ' || l_item_key);
5975         END IF;
5976 
5977         --update contracts with sent notifications
5978         UPDATE okc_rep_contracts_all c
5979         SET    c.wf_exp_ntf_item_key = l_item_key
5980         WHERE  c.contract_id = p_contract_id
5981         AND    c.contract_version_num = p_contract_version;
5982 
5983         --update contract versions with sent notifications
5984         UPDATE okc_rep_contract_vers c
5985         SET    c.wf_exp_ntf_item_key = l_item_key
5986         WHERE  c.contract_id = p_contract_id
5987         AND    c.contract_version_num = p_contract_version;
5988 
5989         COMMIT;
5990 
5991       ELSE
5992 
5993         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
5994             FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
5995                'No WF users found for contacts of this contract');
5996         END IF;
5997 
5998       END IF;
5999 
6000       -- Standard call to get message count and if count is 1, get message info.
6001       FND_MSG_PUB.Count_And_Get(
6002         p_count => x_msg_count,
6003         p_data => x_msg_data );
6004 
6005       IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6006         FND_LOG.STRING(
6007           FND_LOG.LEVEL_PROCEDURE,
6008           G_MODULE||l_api_name,
6009           'Leaving OKC_REP_CONTRACT_PROCESS_PVT.repository_notifier');
6010       END IF;
6011 
6012 
6013     EXCEPTION
6014       WHEN FND_API.G_EXC_ERROR THEN
6015         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6016           fnd_log.string(
6017             FND_LOG.LEVEL_EXCEPTION,
6018             g_module || l_api_name,
6019             'Leaving repository_notifier:FND_API.G_EXC_ERROR Exception');
6020         END IF;
6021         --close cursors
6022         IF (CONTRACT_CONTACTS%ISOPEN) THEN
6023           CLOSE CONTRACT_CONTACTS ;
6024         END IF;
6025         IF (CONTACT_ATTRIBUTES%ISOPEN) THEN
6026           CLOSE CONTACT_ATTRIBUTES ;
6027         END IF;
6028         ROLLBACK TO repository_notifier_pvt;
6029 
6030         x_return_status := FND_API.G_RET_STS_ERROR;
6031         FND_MSG_PUB.Count_And_Get(
6032           p_count =>  x_msg_count,
6033           p_data  =>  x_msg_data
6034         );
6035 
6036       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6037         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6038            fnd_log.string(
6039             FND_LOG.LEVEL_EXCEPTION,
6040             g_module || l_api_name,
6041             'Leaving repository_notifier:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
6042         END IF;
6043         --close cursors
6044         IF (CONTRACT_CONTACTS%ISOPEN) THEN
6045           CLOSE CONTRACT_CONTACTS ;
6046         END IF;
6047         IF (CONTACT_ATTRIBUTES%ISOPEN) THEN
6048           CLOSE CONTACT_ATTRIBUTES ;
6049         END IF;
6050         ROLLBACK TO repository_notifier_pvt;
6051 
6052         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6053         FND_MSG_PUB.Count_And_Get(
6054           p_count =>  x_msg_count,
6055           p_data  =>  x_msg_data
6056         );
6057 
6058       WHEN OTHERS THEN
6059         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6060            fnd_log.string(
6061             FND_LOG.LEVEL_EXCEPTION,
6062             g_module || l_api_name,
6063             'Leaving repository_notifier because of EXCEPTION: ' || sqlerrm);
6064         END IF;
6065         Okc_Api.Set_Message(
6066           p_app_name     => G_APP_NAME,
6067           p_msg_name     => G_UNEXPECTED_ERROR,
6068           p_token1       => G_SQLCODE_TOKEN,
6069           p_token1_value => SQLCODE,
6070           p_token2       => G_SQLERRM_TOKEN,
6071           p_token2_value => SQLERRM);
6072 
6073         --close cursors
6074         IF (CONTRACT_CONTACTS%ISOPEN) THEN
6075           CLOSE CONTRACT_CONTACTS ;
6076         END IF;
6077         IF (CONTACT_ATTRIBUTES%ISOPEN) THEN
6078           CLOSE CONTACT_ATTRIBUTES ;
6079         END IF;
6080         ROLLBACK TO repository_notifier_pvt;
6081 
6082         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6083         FND_MSG_PUB.Count_And_Get(
6084           p_count =>  x_msg_count,
6085           p_data  =>  x_msg_data
6086         );
6087 
6088 END repository_notifier;
6089 
6090 --API name      : cancel_approval
6091 --Type          : Private.
6092 --Function      : Aborts the contract approval workflow process.
6093 --Pre-reqs      : None.
6094 --Parameters    :
6095 --IN            : p_api_version         IN NUMBER       Required
6096 --              : p_init_msg_list       IN VARCHAR2     Optional
6097 --                   Default = FND_API.G_FALSE
6098 --              : p_contract_id         IN NUMBER       Required
6099 --                   Id of the contract to be processed
6100 --              : p_contract_version    IN NUMBER       Required
6101 --                   Version of the contract to be processed
6102 --OUT           : x_return_status       OUT  VARCHAR2(1)
6103 --              : x_msg_count           OUT  NUMBER
6104 --              : x_msg_data            OUT  VARCHAR2(2000)
6105 --Note          :
6106 -- End of comments
6107 PROCEDURE cancel_approval(
6108         p_api_version                  IN NUMBER,
6109         p_init_msg_list                IN VARCHAR2,
6110         p_contract_id                  IN NUMBER,
6111         p_contract_version             IN NUMBER,
6112         x_return_status                OUT NOCOPY VARCHAR2,
6113         x_msg_count                    OUT NOCOPY NUMBER,
6114         x_msg_data                     OUT NOCOPY VARCHAR2
6115 
6116   ) IS
6117     l_api_name      VARCHAR2(30);
6118     l_api_version       NUMBER;
6119     l_wf_type  wf_item_activity_statuses.item_type%TYPE;
6120     l_wf_key   wf_item_activity_statuses.item_key%TYPE;
6121     l_contract_status okc_rep_contracts_all.contract_status_code%TYPE;
6122     l_contract_number okc_rep_contracts_all.contract_number%TYPE;
6123 
6124     CURSOR contract_csr IS
6125         SELECT wf_item_type, wf_item_key, contract_status_code, contract_number
6126         FROM okc_rep_contracts_all
6127         WHERE contract_id = p_contract_id;
6128 
6129     CURSOR csr_child_notification(chld_item_key VARCHAR2) IS
6130     SELECT ITEM_KEY FROM  wf_notifications WHERE ITEM_KEY LIKE Concat(chld_item_key,'\_%') ESCAPE '\'
6131     AND STATUS='OPEN';
6132 
6133 
6134   BEGIN
6135 
6136     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6137         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
6138                 'Entered OKC_REP_CONTRACT_PROCESS_PVT.cancel_approval');
6139         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
6140                 'Contract Id is: ' || p_contract_id);
6141         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
6142                 'Contract Version is: ' || p_contract_version);
6143     END IF;
6144     l_api_name := 'cancel_approval';
6145     l_api_version := 1.0;
6146 
6147     -- Standard Start of API savepoint
6148     SAVEPOINT submit_contract_PVT;
6149 
6150     -- Standard call to check for call compatibility.
6151     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
6152       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6153     END IF;
6154 
6155     -- Initialize message list if p_init_msg_list is set to TRUE.
6156     IF FND_API.to_Boolean( p_init_msg_list ) THEN
6157       FND_MSG_PUB.initialize;
6158     END IF;
6159 
6160     --  Initialize API return status to success
6161     x_return_status := FND_API.G_RET_STS_SUCCESS;
6162 
6163 
6164     -- Get workflow information of the contract's approval process
6165     OPEN contract_csr;
6166     FETCH contract_csr into l_wf_type, l_wf_key, l_contract_status, l_contract_number;
6167     IF(contract_csr%NOTFOUND) THEN
6168         IF (FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6169             FND_LOG.STRING(FND_LOG.LEVEL_EXCEPTION ,
6170                     G_MODULE||l_api_name,
6171                                  'Invalid Contract Id: '|| p_contract_id);
6172         END IF;
6173         CLOSE contract_csr;
6174         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
6175                             p_msg_name     => G_INVALID_CONTRACT_ID_MSG,
6176                             p_token1       => G_CONTRACT_ID_TOKEN,
6177                             p_token1_value => to_char(p_contract_id));
6178         RAISE FND_API.G_EXC_ERROR;
6179         -- RAISE NO_DATA_FOUND;
6180     END IF;
6181     CLOSE contract_csr;
6182 
6183     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6184             FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
6185                     'Calling WF_ENGINE.AbortProcess');
6186     END IF;
6187 
6188     -- Check the status of the contract is Pending Approval before aborting the approval process
6189     IF (l_contract_status = G_STATUS_PENDING_APPROVAL) THEN
6190 
6191       -- Call WF API to abort the approval process
6192       WF_ENGINE.AbortProcess(
6193         itemtype => l_wf_type,
6194         itemkey  => l_wf_key,
6195         result    => 'COMPLETE:',
6196         verify_lock => false,
6197         cascade   => true);
6198 
6199       FOR rec_child_notification IN csr_child_notification(l_wf_key)
6200       LOOP
6201           WF_ENGINE.AbortProcess(
6202             itemtype => l_wf_type,
6203             itemkey  => rec_child_notification.ITEM_KEY,
6204             result    => 'COMPLETE:',
6205             verify_lock => false,
6206             cascade   => true);
6207       END LOOP;
6208 
6209          IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6210             FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,g_module || l_api_name,
6211                     'Calling ame_api2.clearAllApprovals');
6212          END IF;
6213 
6214      -- Repository Contracts ER's - Calling this after approval
6215      -- Clear all approvals on this transaction id.
6216         ame_api2.clearAllApprovals(
6217             applicationIdIn => G_APPLICATION_ID,
6218             transactionTypeIn => G_TRANSACTION_TYPE,
6219             transactionIdIn => fnd_number.number_to_canonical(p_contract_id));
6220 
6221          IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6222             FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,g_module || l_api_name,
6223                     'After ame_api2.clearAllApprovals');
6224          END IF;
6225     ELSE
6226 
6227       -- Show an error message
6228       Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
6229                           p_msg_name     => G_CANEL_APPROVAL_ERROR_MSG,
6230                           p_token1       => G_CONTRACT_NUM_TOKEN,
6231                           p_token1_value => l_contract_number);
6232       RAISE FND_API.G_EXC_ERROR;
6233 
6234     END IF;
6235 
6236 
6237     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6238         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
6239                 'Calling OKC_REP_UTIL_PVT.change_contract_status');
6240     END IF;
6241 
6242     -- Update the contract status and add a record in OKC_REP_CON_STATUS_HIST table.
6243     OKC_REP_UTIL_PVT.change_contract_status(
6244       p_api_version         => 1.0,
6245       p_init_msg_list       => FND_API.G_FALSE,
6246       p_contract_id         => p_contract_id,
6247       p_contract_version    => p_contract_version,
6248       p_status_code         => G_STATUS_DRAFT,
6249       p_user_id             => fnd_global.user_id,
6250       p_note                => NULL,
6251       x_msg_data            => x_msg_data,
6252       x_msg_count           => x_msg_count,
6253       x_return_status       => x_return_status);
6254     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6255         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
6256                 'OKC_REP_UTIL_PVT.change_contract_status return status is: '
6257           || x_return_status);
6258     END IF;
6259     -----------------------------------------------------
6260     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6261       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6262     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6263       RAISE OKC_API.G_EXCEPTION_ERROR;
6264     END IF;
6265     --------------------------------------------------------
6266 
6267 
6268     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6269         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
6270                 'Calling OKC_REP_UTIL_PVT.add_approval_hist_record');
6271     END IF;
6272 
6273     -- Add a record in ONC_REP_CON_APPROVALS table.
6274     OKC_REP_UTIL_PVT.add_approval_hist_record(
6275       p_api_version         => 1.0,
6276       p_init_msg_list       => FND_API.G_FALSE,
6277       p_contract_id         => p_contract_id,
6278       p_contract_version    => p_contract_version,
6279       p_action_code         => G_ACTION_ABORTED,
6280       p_user_id             => fnd_global.user_id,
6281       p_note                => NULL,
6282       x_msg_data            => x_msg_data,
6283       x_msg_count           => x_msg_count,
6284       x_return_status       => x_return_status);
6285     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6286         FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
6287                 'OKC_REP_UTIL_PVT.add_approval_hist_record return status is: '
6288           || x_return_status);
6289     END IF;
6290     -------------------------------------------------------
6291     IF (x_return_status = OKC_API.G_RET_STS_UNEXP_ERROR) THEN
6292       RAISE OKC_API.G_EXCEPTION_UNEXPECTED_ERROR;
6293     ELSIF (x_return_status = OKC_API.G_RET_STS_ERROR) THEN
6294       RAISE OKC_API.G_EXCEPTION_ERROR;
6295     END IF;
6296     --------------------------------------------------------
6297 
6298     COMMIT WORK;
6299 
6300     -- Standard call to get message count and if count is 1, get message info.
6301     FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
6302 
6303     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6304         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
6305                 'Leaving OKC_REP_CONTRACT_PROCESS_PVT.cancel_approval');
6306     END IF;
6307 
6308     EXCEPTION
6309       WHEN FND_API.G_EXC_ERROR THEN
6310         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6311            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
6312                  g_module || l_api_name,
6313                  'Leaving cancel_approval:FND_API.G_EXC_ERROR Exception');
6314         END IF;
6315         --close cursors
6316         IF (contract_csr%ISOPEN) THEN
6317           CLOSE contract_csr ;
6318         END IF;
6319         ROLLBACK TO submit_contract_PVT;
6320         x_return_status := FND_API.G_RET_STS_ERROR;
6321         FND_MSG_PUB.Count_And_Get(
6322         p_count =>  x_msg_count,
6323         p_data  =>  x_msg_data
6324         );
6325 
6326       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6327         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6328            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
6329                  g_module || l_api_name,
6330                  'Leaving cancel_approval:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
6331         END IF;
6332         --close cursors
6333         IF (contract_csr%ISOPEN) THEN
6334           CLOSE contract_csr ;
6335         END IF;
6336         ROLLBACK TO submit_contract_PVT;
6337         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6338         FND_MSG_PUB.Count_And_Get(
6339         p_count =>  x_msg_count,
6340         p_data  =>  x_msg_data
6341         );
6342 
6343       WHEN OTHERS THEN
6344         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6345            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
6346                  g_module || l_api_name,
6347                  'Leaving cancel_approval because of EXCEPTION: ' || sqlerrm);
6348         END IF;
6349         --close cursors
6350         IF (contract_csr%ISOPEN) THEN
6351           CLOSE contract_csr ;
6352         END IF;
6353         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
6354                             p_msg_name     => G_UNEXPECTED_ERROR,
6355                             p_token1       => G_SQLCODE_TOKEN,
6356                             p_token1_value => sqlcode,
6357                             p_token2       => G_SQLERRM_TOKEN,
6358                             p_token2_value => sqlerrm);
6359         ROLLBACK TO submit_contract_PVT;
6360         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6361         FND_MSG_PUB.Count_And_Get(
6362         p_count =>  x_msg_count,
6363         p_data  =>  x_msg_data
6364         );
6365 
6366   END cancel_approval;
6367 
6368 -------------------------------------------------------------------------
6369 -------------------------------------------------------------------------
6370 -- This following API is not used anywhere now but this will be used once we take up
6371 -- the FND Document Sequence for auto generating contract number. Currently
6372 -- it is not used because the FND Document Sequence is not supporting multi-org.
6373 -------------------------------------------------------------------------
6374 -------------------------------------------------------------------------
6375 --API name      : get_next_contract_number
6376 --Type          : Private.
6377 --Function      : Gets next available number to use for a contract number
6378 --                using FND Document Sequencing.
6379 --Pre-reqs      : None.
6380 --Parameters    :
6381 --IN            : p_api_version         IN NUMBER       Required
6382 --              : p_init_msg_list       IN VARCHAR2     Optional
6383 --                   Default = FND_API.G_FALSE
6384 --              : p_contract_number     IN VARCHAR2     Optional
6385 --                   Number of the contract
6386 --              : p_org_id              IN NUMBER       Required
6387 --                   Id of the contract organization
6388 --              : p_info_only           IN VARCHAR2     Optional
6389 --                   Default = 'N'
6390 --OUT           : x_contract_number     OUT  NUMBER
6391 --              : x_auto_number_enabled OUT  VARCHAR2(1)
6392 --              : x_return_status       OUT  VARCHAR2(1)
6393 --              : x_msg_count           OUT  NUMBER
6394 --              : x_msg_data            OUT  VARCHAR2(2000)
6395 --Note          :
6396 -- End of comments
6397 PROCEDURE get_next_contract_number(
6398       p_api_version                  IN NUMBER,
6399       p_init_msg_list                IN VARCHAR2,
6400       p_contract_number              IN VARCHAR2 := NULL,
6401       p_org_id                       IN NUMBER,
6402       p_info_only                    IN VARCHAR2,
6403       x_contract_number              OUT NOCOPY NUMBER,
6404       x_auto_number_enabled          OUT NOCOPY VARCHAR2,
6405       x_return_status                OUT NOCOPY VARCHAR2,
6406       x_msg_count                    OUT NOCOPY NUMBER,
6407       x_msg_data                     OUT NOCOPY VARCHAR2)
6408   IS
6409     l_api_name      VARCHAR2(30);
6410     l_api_version       NUMBER;
6411     l_doc_category_code   FND_DOC_SEQUENCE_CATEGORIES.CODE%TYPE;
6412     l_set_Of_Books_id     NUMBER;
6413     l_db_sequence_name    FND_DOCUMENT_SEQUENCES.DB_SEQUENCE_NAME%TYPE;
6414     l_doc_sequence_type   FND_DOCUMENT_SEQUENCES.TYPE%TYPE;
6415     l_doc_sequence_name   FND_DOCUMENT_SEQUENCES.NAME%TYPE;
6416     l_seqassid            FND_DOC_SEQUENCE_ASSIGNMENTS.DOC_SEQUENCE_ASSIGNMENT_ID%TYPE;
6417     l_Prd_Tbl_Name        FND_DOCUMENT_SEQUENCES.TABLE_NAME%TYPE;
6418     l_Aud_Tbl_Name        FND_DOCUMENT_SEQUENCES.AUDIT_TABLE_NAME%TYPE;
6419     l_Msg_Flag            FND_DOCUMENT_SEQUENCES.MESSAGE_FLAG%TYPE;
6420     l_doc_sequence_value  NUMBER;
6421     l_doc_sequence_id     NUMBER;
6422     l_profile_doc_seq     VARCHAR2(1);
6423     l_result    NUMBER;
6424     l_row_notfound    BOOLEAN := FALSE;
6425     l_contract_number     OKC_REP_CONTRACTS_ALL.CONTRACT_NUMBER%TYPE;
6426 
6427 
6428     CURSOR l_get_sob_csr IS
6429       SELECT OI2.ORG_INFORMATION3 SET_OF_BOOKS_ID
6430       FROM  HR_ORGANIZATION_INFORMATION OI1,
6431             HR_ORGANIZATION_INFORMATION OI2,
6432             HR_ALL_ORGANIZATION_UNITS OU
6433       WHERE OI1.ORGANIZATION_ID = OU.ORGANIZATION_ID AND
6434             OI2.ORGANIZATION_ID = OU.ORGANIZATION_ID AND
6435             OI1.ORG_INFORMATION_CONTEXT = 'CLASS' AND
6436             OI2.ORG_INFORMATION_CONTEXT = 'Operating Unit Information' AND
6437             OI1.ORG_INFORMATION1 = 'OPERATING_UNIT'AND
6438             OI1.ORGANIZATION_ID = p_org_id;
6439 
6440     CURSOR l_ensure_unique_csr (p_contract_number IN VARCHAR2) IS
6441       SELECT CONTRACT_NUMBER
6442       FROM   OKC_REP_CONTRACTS_ALL
6443       WHERE  CONTRACT_NUMBER = p_contract_number
6444       AND    ROWNUM < 2;
6445 
6446     BEGIN
6447 
6448       IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6449           FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
6450                   'Entered OKC_REP_CONTRACT_PROCESS_PVT.get_next_contract_number');
6451           FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
6452                   'Org Id is: ' || p_org_id);
6453       END IF;
6454       l_api_name := 'get_next_contract_number';
6455       l_api_version := 1.0;
6456 
6457       -- Standard Start of API savepoint
6458       SAVEPOINT submit_contract_PVT;
6459 
6460       -- Standard call to check for call compatibility.
6461       IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
6462         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6463       END IF;
6464 
6465       -- Initialize message list if p_init_msg_list is set to TRUE.
6466       IF FND_API.to_Boolean( p_init_msg_list ) THEN
6467         FND_MSG_PUB.initialize;
6468       END IF;
6469 
6470       --  Initialize API return status to success
6471       x_return_status := FND_API.G_RET_STS_SUCCESS;
6472 
6473       -- Get value of the profile option "Sequential Numbering"
6474       l_profile_doc_seq :=  fnd_profile.value('UNIQUE:SEQ_NUMBERS');
6475 
6476       IF p_info_only = 'Y' AND
6477          l_profile_doc_seq = 'N' THEN
6478         x_auto_number_enabled := FND_API.G_FALSE;
6479         return;
6480       END IF;
6481 
6482 
6483       OPEN l_get_sob_csr;
6484       FETCH l_get_sob_csr into l_set_of_books_id;
6485       l_row_notfound := l_get_sob_csr%NOTFOUND;
6486       CLOSE l_get_sob_csr;
6487 
6488       IF l_row_notfound THEN
6489         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6490           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
6491                    'Set of book id not found');
6492         END IF;
6493 
6494         CLOSE l_get_sob_csr;
6495         RAISE FND_API.G_EXC_ERROR ;
6496       END IF;
6497       l_row_notfound    := FALSE;
6498       l_doc_category_code := substr(Fnd_Profile.Value('OKC_REP_CON_NUM_DOC_SEQ_CATEGORY'),1,30);
6499 
6500       l_result := fnd_seqnum.get_seq_info(
6501                      app_id   =>  510 ,
6502                      cat_code   =>  l_doc_category_code,
6503                      sob_id   =>  l_set_of_books_id,
6504                      met_code =>  NULL,
6505                      trx_date =>  sysdate,
6506                      docseq_id  =>  l_doc_sequence_id,
6507                      docseq_type  =>  l_doc_sequence_type,
6508                      docseq_name  =>  l_doc_sequence_name,
6509                      db_seq_name  =>  l_db_sequence_name,
6510                      seq_ass_id =>  l_seqassid,
6511                      prd_tab_name =>  l_Prd_Tbl_Name,
6512                      aud_tab_name =>  l_Aud_Tbl_Name,
6513                      msg_flag =>  l_msg_flag,
6514                      suppress_error =>  'N' ,
6515                      suppress_warn  =>  'Y');
6516 
6517       IF l_result <>  FND_SEQNUM.SEQSUCC   THEN
6518         RAISE FND_API.G_EXC_ERROR;
6519       END IF;
6520 
6521       IF p_info_only = 'Y'  THEN
6522         IF l_doc_sequence_type <> 'M' THEN
6523           x_auto_number_enabled := FND_API.G_TRUE;
6524         ELSE
6525           x_auto_number_enabled := FND_API.G_FALSE;
6526         END IF;
6527         return;
6528       END IF;
6529 
6530 
6531       IF ( l_doc_sequence_type <> 'M')  THEN
6532         l_result := fnd_seqnum.get_seq_val(
6533                          app_id        => 510,
6534                          cat_code      => l_doc_category_code,
6535                          sob_id        => l_set_of_books_id,
6536                          met_code      => null,
6537                          trx_date      => sysdate,
6538                          seq_val       => l_doc_sequence_value,
6539                          docseq_id    =>  l_doc_sequence_id);
6540 
6541         IF l_result <> 0   THEN
6542           RAISE FND_API.G_EXC_ERROR;
6543         ELSE
6544           x_contract_number := TO_CHAR(l_doc_sequence_value);
6545         END IF;
6546 
6547         OPEN l_ensure_unique_csr (x_contract_number);
6548         FETCH l_ensure_unique_csr into l_contract_number;
6549         l_row_notfound := l_ensure_unique_csr%NOTFOUND;
6550         CLOSE l_ensure_unique_csr;
6551 
6552         IF l_row_notfound THEN
6553            NULL;   -- dups do not exist.
6554         ELSE
6555            -- Show duplicate Contract number error message
6556 
6557            Okc_Api.Set_Message(p_app_name   => G_APP_NAME,
6558                                p_msg_name   => G_INVALID_CONTRACT_NUMBER_MSG);
6559            RAISE FND_API.G_EXC_ERROR;
6560 
6561         END IF;
6562 
6563       ELSIF (l_doc_sequence_type = 'M') THEN
6564         x_contract_number := p_contract_number;
6565       END IF;
6566 
6567 
6568       -- Standard call to get message count and if count is 1, get message info.
6569       FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
6570 
6571       IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6572           FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
6573                   'Leaving OKC_REP_CONTRACT_PROCESS_PVT.get_next_contract_number');
6574       END IF;
6575 
6576       EXCEPTION
6577         WHEN FND_API.G_EXC_ERROR THEN
6578           IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6579              fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
6580                    g_module || l_api_name,
6581                    'Leaving get_next_contract_number:FND_API.G_EXC_ERROR Exception');
6582           END IF;
6583           --close cursors
6584           IF (l_ensure_unique_csr%ISOPEN) THEN
6585             CLOSE l_ensure_unique_csr ;
6586           END IF;
6587 
6588           IF (l_get_sob_csr%ISOPEN) THEN
6589             CLOSE l_get_sob_csr ;
6590           END IF;
6591 
6592           ROLLBACK TO submit_contract_PVT;
6593           x_return_status := FND_API.G_RET_STS_ERROR;
6594           FND_MSG_PUB.Count_And_Get(
6595           p_count =>  x_msg_count,
6596           p_data  =>  x_msg_data
6597           );
6598 
6599         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6600           IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6601              fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
6602                    g_module || l_api_name,
6603                    'Leaving get_next_contract_number:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
6604           END IF;
6605           --close cursors
6606           IF (l_ensure_unique_csr%ISOPEN) THEN
6607             CLOSE l_ensure_unique_csr ;
6608           END IF;
6609 
6610           IF (l_get_sob_csr%ISOPEN) THEN
6611             CLOSE l_get_sob_csr ;
6612           END IF;
6613 
6614           ROLLBACK TO submit_contract_PVT;
6615           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6616           FND_MSG_PUB.Count_And_Get(
6617           p_count =>  x_msg_count,
6618           p_data  =>  x_msg_data
6619           );
6620 
6621         WHEN OTHERS THEN
6622           IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6623              fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
6624                    g_module || l_api_name,
6625                    'Leaving get_next_contract_number because of EXCEPTION: ' || sqlerrm);
6626           END IF;
6627           --close cursors
6628           IF (l_ensure_unique_csr%ISOPEN) THEN
6629             CLOSE l_ensure_unique_csr ;
6630           END IF;
6631 
6632           IF (l_get_sob_csr%ISOPEN) THEN
6633             CLOSE l_get_sob_csr ;
6634           END IF;
6635 
6636           Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
6637                               p_msg_name     => G_UNEXPECTED_ERROR,
6638                               p_token1       => G_SQLCODE_TOKEN,
6639                               p_token1_value => sqlcode,
6640                               p_token2       => G_SQLERRM_TOKEN,
6641                               p_token2_value => sqlerrm);
6642           ROLLBACK TO submit_contract_PVT;
6643           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6644           FND_MSG_PUB.Count_And_Get(
6645           p_count =>  x_msg_count,
6646           p_data  =>  x_msg_data
6647           );
6648 
6649   END get_next_contract_number;
6650 
6651       -- Start of comments
6652 --API name      : delete_uda_attribute_values
6653 --Type          : Private.
6654 --Function      : Deletes uda_attribute_values of a contract version
6655 --Pre-reqs      : None.
6656 --Parameters    :
6657 --IN            : p_api_version         IN NUMBER       Required
6658 --              : p_init_msg_list       IN VARCHAR2     Optional
6659 --                   Default = FND_API.G_FALSE
6660 --              : p_commit              IN VARCHAR2     Optional
6661 --                   Default = FND_API.G_FALSE
6662 --              : p_contract_id         IN NUMBER       Required
6663 --                   Contract ID of the contract whose status history is to be deleted
6664 --              : p_contract_version    IN NUMBER       Required
6665 --                   Contract version of the contract whose status history is to be deleted
6666 --OUT           : x_return_status       OUT  VARCHAR2(1)
6667 --              : x_msg_count           OUT  NUMBER
6668 --              : x_msg_data            OUT  VARCHAR2(2000)
6669 --Note          :
6670 -- End of comments
6671   PROCEDURE delete_uda_attribute_values(
6672       p_api_version       IN  NUMBER,
6673       p_init_msg_list     IN  VARCHAR2,
6674       p_commit              IN VARCHAR2,
6675       p_contract_id       IN  NUMBER,
6676       x_msg_data          OUT NOCOPY  VARCHAR2,
6677       x_msg_count         OUT NOCOPY  NUMBER,
6678       x_return_status     OUT NOCOPY  VARCHAR2)
6679   IS
6680 
6681     l_api_name      VARCHAR2(30);
6682     l_api_version       NUMBER;
6683     l_con_version       NUMBER;
6684   BEGIN
6685 
6686     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
6687         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
6688                 'Entered OKC_REP_CONTRACT_PROCESS_PVT.delete_uda_attribute_values');
6689         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
6690                 'Contract Id is: ' || to_char(p_contract_id));
6691     END IF;
6692     l_api_name := 'delete_uda_attribute_values';
6693     l_api_version := 1.0;
6694   -- Standard Start of API savepoint
6695     SAVEPOINT delete_uda_attr_values_PVT;
6696     -- Standard call to check for call compatibility.
6697     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
6698       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6699     END IF;
6700     -- Initialize message list if p_init_msg_list is set to TRUE.
6701     IF FND_API.to_Boolean( p_init_msg_list ) THEN
6702       FND_MSG_PUB.initialize;
6703     END IF;
6704 
6705     --  Initialize API return status to success
6706     x_return_status := FND_API.G_RET_STS_SUCCESS;
6707 
6708     select contract_version_num into l_con_version
6709     from okc_rep_contracts_all
6710     where CONTRACT_ID = p_contract_id  ;
6711 
6712     -- Delete the records. The records are locked in the delete_contract API.
6713     DELETE FROM OKC_REP_CONTRACTS_ALL_EXT_B
6714       WHERE CONTRACT_ID = p_contract_id
6715       AND contract_version_num = l_con_version;
6716 
6717        DELETE FROM OKC_REP_CONTRACTS_ALL_EXT_TL
6718       WHERE CONTRACT_ID = p_contract_id
6719       AND contract_version_num = l_con_version;
6720 /*
6721     -- Insert the previous version record.
6722     INSERT INTO OKC_REP_CONTRACTS_ALL_EXT_B(extension_id,
6723                                             ATTR_GROUP_ID,
6724                                             contract_id,
6725 
6726                                             DATA_LEVEL_ID,
6727                                             UDA_TEMPLATE_ID,
6728 								    PK1_VALUE,
6729                                             PK2_VALUE,
6730                                             PK3_VALUE,
6731                                             PK4_VALUE,
6732                                             PK5_VALUE,
6733                                             LAST_UPDATE_DATE,
6734                                             LAST_UPDATED_BY,
6735                                             LAST_UPDATE_LOGIN,
6736                                             CREATED_BY,
6737                                             CREATION_DATE,
6738                                             C_EXT_ATTR1,
6739                                             C_EXT_ATTR2,
6740                                             C_EXT_ATTR3,
6741                                             C_EXT_ATTR4,
6742                                             C_EXT_ATTR5,
6743                                             C_EXT_ATTR6,
6744                                             C_EXT_ATTR7,
6745                                             C_EXT_ATTR8,
6746                                             C_EXT_ATTR9,
6747                                             C_EXT_ATTR10,
6748                                             C_EXT_ATTR11,
6749                                             C_EXT_ATTR12,
6750                                             C_EXT_ATTR13,
6751                                             C_EXT_ATTR14,
6752                                             C_EXT_ATTR15,
6753                                             C_EXT_ATTR16,
6754                                             C_EXT_ATTR17,
6755                                             C_EXT_ATTR18,
6756                                             C_EXT_ATTR19,
6757                                             C_EXT_ATTR20,
6758                                             C_EXT_ATTR21,
6759                                             C_EXT_ATTR22,
6760                                             C_EXT_ATTR23,
6761                                             C_EXT_ATTR24,
6762                                             C_EXT_ATTR25,
6763                                             C_EXT_ATTR26,
6764                                             C_EXT_ATTR27,
6765                                             C_EXT_ATTR28,
6766                                             C_EXT_ATTR29,
6767                                             C_EXT_ATTR30,
6768                                             C_EXT_ATTR31,
6769                                             C_EXT_ATTR32,
6770                                             C_EXT_ATTR33,
6771                                             C_EXT_ATTR34,
6772                                             C_EXT_ATTR35,
6773                                             C_EXT_ATTR36,
6774                                             C_EXT_ATTR37,
6775                                             C_EXT_ATTR38,
6776                                             C_EXT_ATTR39,
6777                                             C_EXT_ATTR40,
6778                                             N_EXT_ATTR1,
6779                                             N_EXT_ATTR2,
6780                                             N_EXT_ATTR3,
6781                                             N_EXT_ATTR4,
6782                                             N_EXT_ATTR5,
6783                                             N_EXT_ATTR6,
6784                                             N_EXT_ATTR7,
6785                                             N_EXT_ATTR8,
6786                                             N_EXT_ATTR9,
6787                                             N_EXT_ATTR10,
6788                                             N_EXT_ATTR11,
6789                                             N_EXT_ATTR12,
6790                                             N_EXT_ATTR13,
6791                                             N_EXT_ATTR14,
6792                                             N_EXT_ATTR15,
6793                                             N_EXT_ATTR16,
6794                                             N_EXT_ATTR17,
6795                                             N_EXT_ATTR18,
6796                                             N_EXT_ATTR19,
6797                                             N_EXT_ATTR20,
6798                                             UOM_EXT_ATTR1,
6799                                             UOM_EXT_ATTR2,
6800                                             UOM_EXT_ATTR3,
6801                                             UOM_EXT_ATTR4,
6802                                             UOM_EXT_ATTR5,
6803                                             UOM_EXT_ATTR6,
6804                                             UOM_EXT_ATTR7,
6805                                             UOM_EXT_ATTR8,
6806                                             UOM_EXT_ATTR9,
6807                                             UOM_EXT_ATTR10,
6808                                             UOM_EXT_ATTR11,
6809                                             UOM_EXT_ATTR12,
6810                                             UOM_EXT_ATTR13,
6811                                             UOM_EXT_ATTR14,
6812                                             UOM_EXT_ATTR15,
6813                                             UOM_EXT_ATTR16,
6814                                             UOM_EXT_ATTR17,
6815                                             UOM_EXT_ATTR18,
6816                                             UOM_EXT_ATTR19,
6817                                             UOM_EXT_ATTR20,
6818                                             D_EXT_ATTR1,
6819                                             D_EXT_ATTR2,
6820                                             D_EXT_ATTR3,
6821                                             D_EXT_ATTR4,
6822                                             D_EXT_ATTR5,
6823                                             D_EXT_ATTR6,
6824                                             D_EXT_ATTR7,
6825                                             D_EXT_ATTR8,
6826                                             D_EXT_ATTR9,
6827                                             D_EXT_ATTR10)
6828 
6829 SELECT EXTENSION_ID,
6830                                             ATTR_GROUP_ID,
6831                                             CONTRACT_ID,
6832 
6833                                             DATA_LEVEL_ID,
6834                                             UDA_TEMPLATE_ID,
6835 								    PK1_VALUE,
6836                                             PK2_VALUE,
6837                                             PK3_VALUE,
6838                                             PK4_VALUE,
6839                                             PK5_VALUE,
6840                                             LAST_UPDATE_DATE,
6841                                             LAST_UPDATED_BY,
6842                                             LAST_UPDATE_LOGIN,
6843                                             CREATED_BY,
6844                                             CREATION_DATE,
6845                                             C_EXT_ATTR1,
6846                                             C_EXT_ATTR2,
6847                                             C_EXT_ATTR3,
6848                                             C_EXT_ATTR4,
6849                                             C_EXT_ATTR5,
6850                                             C_EXT_ATTR6,
6851                                             C_EXT_ATTR7,
6852                                             C_EXT_ATTR8,
6853                                             C_EXT_ATTR9,
6854                                             C_EXT_ATTR10,
6855                                             C_EXT_ATTR11,
6856                                             C_EXT_ATTR12,
6857                                             C_EXT_ATTR13,
6858                                             C_EXT_ATTR14,
6859                                             C_EXT_ATTR15,
6860                                             C_EXT_ATTR16,
6861                                             C_EXT_ATTR17,
6862                                             C_EXT_ATTR18,
6863                                             C_EXT_ATTR19,
6864                                             C_EXT_ATTR20,
6865                                             C_EXT_ATTR21,
6866                                             C_EXT_ATTR22,
6867                                             C_EXT_ATTR23,
6868                                             C_EXT_ATTR24,
6869                                             C_EXT_ATTR25,
6870                                             C_EXT_ATTR26,
6871                                             C_EXT_ATTR27,
6872                                             C_EXT_ATTR28,
6873                                             C_EXT_ATTR29,
6874                                             C_EXT_ATTR30,
6875                                             C_EXT_ATTR31,
6876                                             C_EXT_ATTR32,
6877                                             C_EXT_ATTR33,
6878                                             C_EXT_ATTR34,
6879                                             C_EXT_ATTR35,
6880                                             C_EXT_ATTR36,
6881                                             C_EXT_ATTR37,
6882                                             C_EXT_ATTR38,
6883                                             C_EXT_ATTR39,
6884                                             C_EXT_ATTR40,
6885                                             N_EXT_ATTR1,
6886                                             N_EXT_ATTR2,
6887                                             N_EXT_ATTR3,
6888                                             N_EXT_ATTR4,
6889                                             N_EXT_ATTR5,
6890                                             N_EXT_ATTR6,
6891                                             N_EXT_ATTR7,
6892                                             N_EXT_ATTR8,
6893                                             N_EXT_ATTR9,
6894                                             N_EXT_ATTR10,
6895                                             N_EXT_ATTR11,
6896                                             N_EXT_ATTR12,
6897                                             N_EXT_ATTR13,
6898                                             N_EXT_ATTR14,
6899                                             N_EXT_ATTR15,
6900                                             N_EXT_ATTR16,
6901                                             N_EXT_ATTR17,
6902                                             N_EXT_ATTR18,
6903                                             N_EXT_ATTR19,
6904                                             N_EXT_ATTR20,
6905                                             UOM_EXT_ATTR1,
6906                                             UOM_EXT_ATTR2,
6907                                             UOM_EXT_ATTR3,
6908                                             UOM_EXT_ATTR4,
6909                                             UOM_EXT_ATTR5,
6910                                             UOM_EXT_ATTR6,
6911                                             UOM_EXT_ATTR7,
6912                                             UOM_EXT_ATTR8,
6913                                             UOM_EXT_ATTR9,
6914                                             UOM_EXT_ATTR10,
6915                                             UOM_EXT_ATTR11,
6916                                             UOM_EXT_ATTR12,
6917                                             UOM_EXT_ATTR13,
6918                                             UOM_EXT_ATTR14,
6919                                             UOM_EXT_ATTR15,
6920                                             UOM_EXT_ATTR16,
6921                                             UOM_EXT_ATTR17,
6922                                             UOM_EXT_ATTR18,
6923                                             UOM_EXT_ATTR19,
6924                                             UOM_EXT_ATTR20,
6925                                             D_EXT_ATTR1,
6926                                             D_EXT_ATTR2,
6927                                             D_EXT_ATTR3,
6928                                             D_EXT_ATTR4,
6929                                             D_EXT_ATTR5,
6930                                             D_EXT_ATTR6,
6931                                             D_EXT_ATTR7,
6932                                             D_EXT_ATTR8,
6933                                             D_EXT_ATTR9,
6934                                             D_EXT_ATTR10
6935  FROM okc_rep_contract_vers_ext_b
6936  WHERE contract_id =  p_contract_id
6937  AND contract_version_num = l_con_version - 1 ;
6938 
6939 
6940   INSERT INTO OKC_REP_CONTRACTS_ALL_EXT_TL(EXTENSION_ID
6941                                                 ,ATTR_GROUP_ID
6942                                                 ,CONTRACT_ID
6943 
6944                                                 ,DATA_LEVEL_ID
6945                                                 ,UDA_TEMPLATE_ID
6946 									   ,SOURCE_LANG
6947                                                 ,LANGUAGE
6948                                                 ,LAST_UPDATE_DATE
6949                                                 ,LAST_UPDATED_BY
6950                                                 ,LAST_UPDATE_LOGIN
6951                                                 ,CREATED_BY
6952                                                 ,CREATION_DATE
6953                                                 ,TL_EXT_ATTR1
6954                                                 ,TL_EXT_ATTR2
6955                                                 ,TL_EXT_ATTR3
6956                                                 ,TL_EXT_ATTR4
6957                                                 ,TL_EXT_ATTR5
6958                                                 ,TL_EXT_ATTR6
6959                                                 ,TL_EXT_ATTR7
6960                                                 ,TL_EXT_ATTR8
6961                                                 ,TL_EXT_ATTR9
6962                                                 ,TL_EXT_ATTR10
6963                                                 ,TL_EXT_ATTR11
6964                                                 ,TL_EXT_ATTR12
6965                                                 ,TL_EXT_ATTR13
6966                                                 ,TL_EXT_ATTR14
6967                                                 ,TL_EXT_ATTR15
6968                                                 ,TL_EXT_ATTR16
6969                                                 ,TL_EXT_ATTR17
6970                                                 ,TL_EXT_ATTR18
6971                                                 ,TL_EXT_ATTR19
6972                                                 ,TL_EXT_ATTR20
6973                                                 ,TL_EXT_ATTR21
6974                                                 ,TL_EXT_ATTR22
6975                                                 ,TL_EXT_ATTR23
6976                                                 ,TL_EXT_ATTR24
6977                                                 ,TL_EXT_ATTR25
6978                                                 ,TL_EXT_ATTR26
6979                                                 ,TL_EXT_ATTR27
6980                                                 ,TL_EXT_ATTR28
6981                                                 ,TL_EXT_ATTR29
6982                                                 ,TL_EXT_ATTR30
6983                                                 ,TL_EXT_ATTR31
6984                                                 ,TL_EXT_ATTR32
6985                                                 ,TL_EXT_ATTR33
6986                                                 ,TL_EXT_ATTR34
6987                                                 ,TL_EXT_ATTR35
6988                                                 ,TL_EXT_ATTR36
6989                                                 ,TL_EXT_ATTR37
6990                                                 ,TL_EXT_ATTR38
6991                                                 ,TL_EXT_ATTR39
6992                                                 ,TL_EXT_ATTR40)
6993 
6994 SELECT EXTENSION_ID
6995                                                 ,ATTR_GROUP_ID
6996                                                 ,CONTRACT_ID
6997 
6998                                                 ,DATA_LEVEL_ID
6999                                                 ,UDA_TEMPLATE_ID
7000 									   ,SOURCE_LANG
7001                                                 ,LANGUAGE
7002                                                 ,LAST_UPDATE_DATE
7003                                                 ,LAST_UPDATED_BY
7004                                                 ,LAST_UPDATE_LOGIN
7005                                                 ,CREATED_BY
7006                                                 ,CREATION_DATE
7007                                                 ,TL_EXT_ATTR1
7008                                                 ,TL_EXT_ATTR2
7009                                                 ,TL_EXT_ATTR3
7010                                                 ,TL_EXT_ATTR4
7011                                                 ,TL_EXT_ATTR5
7012                                                 ,TL_EXT_ATTR6
7013                                                 ,TL_EXT_ATTR7
7014                                                 ,TL_EXT_ATTR8
7015                                                 ,TL_EXT_ATTR9
7016                                                 ,TL_EXT_ATTR10
7017                                                 ,TL_EXT_ATTR11
7018                                                 ,TL_EXT_ATTR12
7019                                                 ,TL_EXT_ATTR13
7020                                                 ,TL_EXT_ATTR14
7021                                                 ,TL_EXT_ATTR15
7022                                                 ,TL_EXT_ATTR16
7023                                                 ,TL_EXT_ATTR17
7024                                                 ,TL_EXT_ATTR18
7025                                                 ,TL_EXT_ATTR19
7026                                                 ,TL_EXT_ATTR20
7027                                                 ,TL_EXT_ATTR21
7028                                                 ,TL_EXT_ATTR22
7029                                                 ,TL_EXT_ATTR23
7030                                                 ,TL_EXT_ATTR24
7031                                                 ,TL_EXT_ATTR25
7032                                                 ,TL_EXT_ATTR26
7033                                                 ,TL_EXT_ATTR27
7034                                                 ,TL_EXT_ATTR28
7035                                                 ,TL_EXT_ATTR29
7036                                                 ,TL_EXT_ATTR30
7037                                                 ,TL_EXT_ATTR31
7038                                                 ,TL_EXT_ATTR32
7039                                                 ,TL_EXT_ATTR33
7040                                                 ,TL_EXT_ATTR34
7041                                                 ,TL_EXT_ATTR35
7042                                                 ,TL_EXT_ATTR36
7043                                                 ,TL_EXT_ATTR37
7044                                                 ,TL_EXT_ATTR38
7045                                                 ,TL_EXT_ATTR39
7046                                                 ,TL_EXT_ATTR40
7047  FROM okc_rep_contract_vers_ext_tl
7048  WHERE contract_id =  p_contract_id
7049  AND contract_version_num = l_con_version - 1 ;
7050 
7051 -- Delete last version from versions table.
7052  DELETE FROM OKC_REP_CONTRACT_VERS_EXT_B
7053       WHERE CONTRACT_ID = p_contract_id
7054       AND contract_version_num = l_con_version - 1 ;
7055 
7056  DELETE FROM OKC_REP_CONTRACT_VERS_EXT_TL
7057       WHERE CONTRACT_ID = p_contract_id
7058       AND contract_version_num = l_con_version - 1 ;
7059 */
7060     -- Standard check of p_commit
7061     IF FND_API.To_Boolean( p_commit ) THEN
7062       COMMIT WORK;
7063     END IF;
7064 
7065     -- Standard call to get message count and if count is 1, get message info.
7066     FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
7067 
7068   IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7069         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
7070                 'Leaving OKC_REP_CONTRACT_PROCESS_PVT.delete_uda_attribute_values');
7071     END IF;
7072 
7073 
7074     EXCEPTION
7075       WHEN FND_API.G_EXC_ERROR THEN
7076         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7077            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
7078                  g_module || l_api_name,
7079                  'Leaving delete_uda_attribute_values:FND_API.G_EXC_ERROR Exception');
7080         END IF;
7081         ROLLBACK TO delete_uda_attr_values_PVT;
7082         x_return_status := FND_API.G_RET_STS_ERROR;
7083         FND_MSG_PUB.Count_And_Get(
7084         p_count =>  x_msg_count,
7085         p_data  =>  x_msg_data
7086         );
7087 
7088       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7089         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7090            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
7091                  g_module || l_api_name,
7092                  'Leaving delete_uda_attribute_values:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
7093         END IF;
7094         ROLLBACK TO delete_uda_attr_values_PVT;
7095         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7096         FND_MSG_PUB.Count_And_Get(
7097         p_count =>  x_msg_count,
7098         p_data  =>  x_msg_data
7099         );
7100 
7101       WHEN OTHERS THEN
7102         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7103            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
7104                  g_module || l_api_name,
7105                  'Leaving delete_uda_attribute_values because of EXCEPTION: ' || sqlerrm);
7106         END IF;
7107         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
7108                             p_msg_name     => G_UNEXPECTED_ERROR,
7109                             p_token1       => G_SQLCODE_TOKEN,
7110                             p_token1_value => sqlcode,
7111                             p_token2       => G_SQLERRM_TOKEN,
7112                             p_token2_value => sqlerrm);
7113         ROLLBACK TO delete_uda_attr_values_PVT;
7114         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7115         FND_MSG_PUB.Count_And_Get(
7116         p_count =>  x_msg_count,
7117         p_data  =>  x_msg_data
7118         );
7119 
7120   END delete_uda_attribute_values;
7121 
7122   -- Start of comments
7123 --API name      : copy_uda_attribute_values
7124 --Type          : Private.
7125 --Function      : Copies Uda Attribute Groups values from source contract to target contract
7126 --Pre-reqs      : None.
7127 --Parameters    :
7128 --IN            : p_api_version         IN NUMBER       Required
7129 --              : p_init_msg_list       IN VARCHAR2     Optional
7130 --                   Default = FND_API.G_FALSE
7131 --              : p_commit              IN VARCHAR2     Optional
7132 --                   Default = FND_API.G_FALSE
7133 --              : p_source_contract_id         IN NUMBER       Required
7134 --                   Id of the contract whose UDAs are to be copied
7135 --              : p_target_contract_id         IN NUMBER       Required
7136 --                   Id of the contract to which source contract UDA are to be copied
7137 --OUT           : x_return_status       OUT  VARCHAR2(1)
7138 --              : x_msg_count           OUT  NUMBER
7139 --              : x_msg_data            OUT  VARCHAR2(2000)
7140 --Note          :
7141 -- End of comments
7142   PROCEDURE copy_uda_attribute_values(
7143       p_api_version       IN  NUMBER,
7144       p_init_msg_list     IN  VARCHAR2,
7145       p_commit              IN VARCHAR2,
7146       p_source_contract_id  IN  NUMBER,
7147       p_target_contract_id  IN  NUMBER,
7148       x_msg_data          OUT NOCOPY  VARCHAR2,
7149       x_msg_count         OUT NOCOPY  NUMBER,
7150       x_return_status     OUT NOCOPY  VARCHAR2)
7151   IS
7152 
7153   l_api_name              VARCHAR2(30);
7154   l_api_version           NUMBER;
7155   l_error_code             NUMBER;
7156 
7157   l_index                 NUMBER;
7158   l_object                FND_OBJECTS%ROWTYPE;
7159   l_from_where_pk_sql     VARCHAR2(2000);
7160   l_to_where_pk_sql       VARCHAR2(2000);
7161 
7162   l_from_pk_col_value_pairs       EGO_COL_NAME_VALUE_PAIR_ARRAY;
7163   l_to_pk_col_value_pairs         EGO_COL_NAME_VALUE_PAIR_ARRAY;
7164 
7165   l_main_data_level EGO_DATA_LEVEL_B%ROWTYPE;
7166 l_src_contract_vers_num NUMBER;
7167 l_tgt_contract_vers_num NUMBER;
7168 l_contract_type VARCHAR2(30);
7169 
7170   CURSOR c_get_contract_vers_num(p_contract_id NUMBER) IS
7171     SELECT contract_type, contract_version_num
7172     FROM okc_rep_contracts_all
7173     WHERE contract_id = p_contract_id;
7174 
7175   BEGIN
7176 
7177     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7178        FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
7179                 'Entered OKC_REP_CONTRACT_PROCESS_PVT.copy_uda_attribute_values');
7180         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
7181                 'Source Contract Id is: ' || p_source_contract_id);
7182         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
7183                 'Target Contract Id is: ' || p_target_contract_id);
7184     END IF;
7185     l_api_name := 'copy_uda_attribute_values';
7186     l_api_version := 1.0;
7187   -- Standard Start of API savepoint
7188     SAVEPOINT copy_uda_attribute_values_PVT;
7189     -- Standard call to check for call compatibility.
7190     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
7191       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7192     END IF;
7193     -- Initialize message list if p_init_msg_list is set to TRUE.
7194     IF FND_API.to_Boolean( p_init_msg_list ) THEN
7195       FND_MSG_PUB.initialize;
7196     END IF;
7197 
7198     --  Initialize API return status to success
7199     x_return_status := FND_API.G_RET_STS_SUCCESS;
7200 
7201        SELECT *
7202         INTO l_object
7203         FROM FND_OBJECTS
7204         WHERE OBJ_NAME = 'OKC_REP_CONTRACTS_UDA';
7205 
7206         OPEN c_get_contract_vers_num(p_source_contract_id);
7207         FETCH c_get_contract_vers_num INTO l_contract_type, l_src_contract_vers_num;
7208         CLOSE c_get_contract_vers_num;
7209 
7210         l_from_pk_col_value_pairs  :=
7211             EGO_COL_NAME_VALUE_PAIR_ARRAY(
7212 	       EGO_COL_NAME_VALUE_PAIR_OBJ(
7213                  'CONTRACT_TYPE', l_contract_type),
7214                EGO_COL_NAME_VALUE_PAIR_OBJ(
7215                  'CONTRACT_ID', p_source_contract_id),
7216                 EGO_COL_NAME_VALUE_PAIR_OBJ(
7217                  'CONTRACT_VERSION_NUM', l_src_contract_vers_num)
7218                );
7219 
7220        l_to_pk_col_value_pairs  :=
7221             EGO_COL_NAME_VALUE_PAIR_ARRAY(
7222                EGO_COL_NAME_VALUE_PAIR_OBJ(
7223                  'CONTRACT_TYPE', l_contract_type),
7224                EGO_COL_NAME_VALUE_PAIR_OBJ(
7225                  'CONTRACT_ID', p_target_contract_id),
7226                 EGO_COL_NAME_VALUE_PAIR_OBJ(
7227                  'CONTRACT_VERSION_NUM', 1)	);
7228 
7229         l_index := 0;
7230         l_index := l_from_pk_col_value_pairs.FIRST;
7231         WHILE (l_index <= l_from_pk_col_value_pairs.LAST)
7232          LOOP
7233          IF (((l_object.PK1_COLUMN_NAME IS NOT NULL) AND (l_from_pk_col_value_pairs(l_index).NAME = Upper(l_object.PK1_COLUMN_NAME))) OR
7234              ((l_object.PK2_COLUMN_NAME IS NOT NULL) AND (l_from_pk_col_value_pairs(l_index).NAME = Upper(l_object.PK2_COLUMN_NAME))) OR
7235              ((l_object.PK3_COLUMN_NAME IS NOT NULL) AND (l_from_pk_col_value_pairs(l_index).NAME = Upper(l_object.PK3_COLUMN_NAME))) OR
7236              ((l_object.PK4_COLUMN_NAME IS NOT NULL) AND (l_from_pk_col_value_pairs(l_index).NAME = Upper(l_object.PK4_COLUMN_NAME))) OR
7237              ((l_object.PK5_COLUMN_NAME IS NOT NULL) AND (l_from_pk_col_value_pairs(l_index).NAME = Upper(l_object.PK5_COLUMN_NAME))) )
7238              THEN
7239              IF (l_from_pk_col_value_pairs(l_index).VALUE IS NOT NULL) THEN
7240                  l_from_where_pk_sql  := l_from_where_pk_sql ||l_from_pk_col_value_pairs(l_index).NAME ||' = ''' ||l_from_pk_col_value_pairs(l_index).VALUE ||''' AND ';
7241              END IF;
7242            ELSE
7243              FND_MESSAGE.set_name('PO', 'PO_UDA_PK_COL_NAME_ERR');
7244              FND_MSG_PUB.add;
7245              RAISE FND_API.G_EXC_ERROR;
7246            END IF;
7247            l_index := l_from_pk_col_value_pairs.NEXT(l_index);
7248          END LOOP;
7249 
7250          l_from_where_pk_sql := SUBSTR(l_from_where_pk_sql, 1, LENGTH(l_from_where_pk_sql) - LENGTH(' AND'));
7251 
7252           IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7253             FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
7254                    'l_from_where_pk_sql '|| l_from_where_pk_sql);
7255           END IF;
7256 
7257         l_index := 0;
7258         l_index := l_to_pk_col_value_pairs.FIRST;
7259          WHILE (l_index <= l_to_pk_col_value_pairs.LAST)
7260          LOOP
7261           IF (((l_object.PK1_COLUMN_NAME IS NOT NULL) AND (l_to_pk_col_value_pairs(l_index).NAME = Upper(l_object.PK1_COLUMN_NAME))) OR
7262               ((l_object.PK2_COLUMN_NAME IS NOT NULL) AND (l_to_pk_col_value_pairs(l_index).NAME = Upper(l_object.PK2_COLUMN_NAME))) OR
7263               ((l_object.PK3_COLUMN_NAME IS NOT NULL) AND (l_to_pk_col_value_pairs(l_index).NAME = Upper(l_object.PK3_COLUMN_NAME))) OR
7264               ((l_object.PK4_COLUMN_NAME IS NOT NULL) AND (l_to_pk_col_value_pairs(l_index).NAME = Upper(l_object.PK4_COLUMN_NAME))) OR
7265               ((l_object.PK5_COLUMN_NAME IS NOT NULL) AND (l_to_pk_col_value_pairs(l_index).NAME = Upper(l_object.PK5_COLUMN_NAME))) )
7266               THEN
7267               IF (l_to_pk_col_value_pairs(l_index).VALUE IS NOT NULL) THEN
7268                  l_to_where_pk_sql  := l_to_where_pk_sql ||l_to_pk_col_value_pairs(l_index).NAME ||' = ''' ||l_to_pk_col_value_pairs(l_index).VALUE ||''' AND ';
7269               END IF;
7270            END IF;
7271            l_index := l_to_pk_col_value_pairs.NEXT(l_index);
7272          END LOOP;
7273 
7274         l_to_where_pk_sql := SUBSTR(l_to_where_pk_sql, 1, LENGTH(l_to_where_pk_sql) - LENGTH(' AND'));
7275 
7276         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7277             FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name,
7278                    'l_to_where_pk_sql '|| l_to_where_pk_sql);
7279           END IF;
7280 
7281         SELECT *
7282         INTO l_main_data_level
7283         FROM EGO_DATA_LEVEL_B
7284         WHERE  ATTR_GROUP_TYPE = 'OKC_REP_CONTRACT_HDR_EXT_ATTRS'
7285         AND DATA_LEVEL_NAME LIKE 'OKC_HDR';
7286 
7287         ----------------------------------------------------------------------------
7288     	  -- We are using EGO's Copy API to Copy the attribute Group Data
7289     	  -- for a given entity.
7290     	  ----------------------------------------------------------------------------
7291       ego_user_attrs_data_pvt.copy_user_attrs_data (
7292             p_api_version  => 1.0
7293            ,p_application_id   => 510
7294            ,p_object_id        => l_object.object_id
7295            ,p_object_name      => 'OKC_REP_CONTRACTS_UDA'
7296            ,p_old_pk_col_value_pairs => l_from_pk_col_value_pairs
7297            ,p_old_data_level_id     =>   l_main_data_level.data_level_id
7298            --,p_old_dtlevel_col_value_pairs => l_dtlevel_col_value_pairs
7299            ,p_new_pk_col_value_pairs   => l_to_pk_col_value_pairs
7300            ,p_new_data_level_id        =>  l_main_data_level.data_level_id
7301            --,p_new_dtlevel_col_value_pairs => l_dtlevel_col_value_pairs
7302            --,p_attr_group_list      =>  l_attr_grp_ids_list
7303            ,p_commit                 => p_commit
7304            ,x_return_status   =>   x_return_status
7305            ,x_errorcode       =>  l_error_code
7306            ,x_msg_count       =>  x_msg_count
7307            ,x_msg_data        =>  x_msg_data );
7308 
7309     IF FND_API.To_Boolean( p_commit ) THEN
7310       COMMIT WORK;
7311     END IF;
7312 
7313     -- Standard call to get message count and if count is 1, get message info.
7314     FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
7315 
7316     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7317         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
7318                 'Leaving OKC_REP_CONTRACT_PROCESS_PVT.copy_uda_attribute_values');
7319     END IF;
7320 
7321 
7322     EXCEPTION
7323       WHEN FND_API.G_EXC_ERROR THEN
7324         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7325            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
7326                  g_module || l_api_name,
7327                  'Leaving copy_uda_attribute_values:FND_API.G_EXC_ERROR Exception');
7328         END IF;
7329         ROLLBACK TO copy_uda_attribute_values_PVT;
7330         x_return_status := FND_API.G_RET_STS_ERROR;
7331         FND_MSG_PUB.Count_And_Get(
7332         p_count =>  x_msg_count,
7333         p_data  =>  x_msg_data
7334         );
7335 
7336       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7337         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7338            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
7339                  g_module || l_api_name,
7340                  'Leaving copy_uda_attribute_values:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
7341         END IF;
7342         ROLLBACK TO copy_uda_attribute_values_PVT;
7343         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7344         FND_MSG_PUB.Count_And_Get(
7345         p_count =>  x_msg_count,
7346         p_data  =>  x_msg_data
7347         );
7348 
7349       WHEN OTHERS THEN
7350         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7351            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
7352                  g_module || l_api_name,
7353                  'Leaving copy_uda_attribute_values because of EXCEPTION: ' || sqlerrm);
7354         END IF;
7355         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
7356                             p_msg_name     => G_UNEXPECTED_ERROR,
7357                             p_token1       => G_SQLCODE_TOKEN,
7358                             p_token1_value => sqlcode,
7359                             p_token2       => G_SQLERRM_TOKEN,
7360                             p_token2_value => sqlerrm);
7361         ROLLBACK TO copy_uda_attribute_values_PVT;
7362         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7363         FND_MSG_PUB.Count_And_Get(
7364         p_count =>  x_msg_count,
7365         p_data  =>  x_msg_data
7366         );
7367   END copy_uda_attribute_values;
7368 
7369    -- Start of comments
7370 --API name      : _attribute_values
7371 --Type          : Private.
7372 --Function      : Moves Uda Attribute Groups values from Header ext tables to vers ext tables
7373 --Pre-reqs      : None.
7374 --Parameters    :
7375 --IN            : p_api_version         IN NUMBER       Required
7376 --              : p_init_msg_list       IN VARCHAR2     Optional
7377 --                   Default = FND_API.G_FALSE
7378 --              : p_commit              IN VARCHAR2     Optional
7379 --                   Default = FND_API.G_FALSE
7380 --              : p_contract_id         IN NUMBER       Required
7381 --                   Id of the contract whose UDA's are to be versioned
7382 --              : p_contract_version         IN NUMBER       Required
7383 --
7384 --OUT           : x_return_status       OUT  VARCHAR2(1)
7385 --              : x_msg_count           OUT  NUMBER
7386 --              : x_msg_data            OUT  VARCHAR2(2000)
7387 --Note          :
7388 -- End of comments
7389   PROCEDURE version_uda_attribute_values(
7390       p_api_version       IN  NUMBER,
7391       p_init_msg_list     IN  VARCHAR2,
7392       p_commit              IN VARCHAR2,
7393       p_contract_id  IN  NUMBER,
7394       p_contract_version  IN  NUMBER,
7395       x_msg_data          OUT NOCOPY  VARCHAR2,
7396       x_msg_count         OUT NOCOPY  NUMBER,
7397       x_return_status     OUT NOCOPY  VARCHAR2)
7398   IS
7399 
7400     l_api_name      VARCHAR2(30);
7401     l_api_version       NUMBER;
7402      l_error_code             NUMBER;
7403 
7404   l_index                 NUMBER;
7405   l_extension_id_vers NUMBER;
7406 
7407   CURSOR c_get_uda_attr_for_con IS
7408     SELECT extension_id FROM okc_rep_contracts_all_ext_b
7409       WHERE contract_id = p_contract_id;
7410 
7411 
7412   BEGIN
7413 
7414     IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7415         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
7416                 'Entered OKC_REP_CONTRACT_PROCESS_PVT.version_uda_attribute_values');
7417         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
7418                 'Contract Id is: ' || to_char(p_contract_id));
7419     END IF;
7420     l_api_name := 'version_uda_attribute_values';
7421     l_api_version := 1.0;
7422   -- Standard Start of API savepoint
7423     SAVEPOINT version_uda_attr_values_PVT;
7424     -- Standard call to check for call compatibility.
7425     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
7426       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7427     END IF;
7428     -- Initialize message list if p_init_msg_list is set to TRUE.
7429     IF FND_API.to_Boolean( p_init_msg_list ) THEN
7430       FND_MSG_PUB.initialize;
7431     END IF;
7432 
7433     --  Initialize API return status to success
7434     x_return_status := FND_API.G_RET_STS_SUCCESS;
7435 
7436     --No API's in EGO to copy data from one object to another.
7437     --insert data from okc_rep_contracts_all_ext_b table to okc_rep_contract_vers_ext_b
7438 
7439     FOR c_get_uda_attr_for_con_rec IN c_get_uda_attr_for_con LOOP
7440       SELECT EGO_EXTFWK_S.NEXTVAL INTO l_extension_id_vers FROM dual;
7441 
7442     INSERT INTO okc_rep_contracts_all_ext_b(EXTENSION_ID,
7443                                             ATTR_GROUP_ID,
7444                                             CONTRACT_TYPE,
7445                                             CONTRACT_ID,
7446                                             CONTRACT_VERSION_NUM,
7447                                             DATA_LEVEL_ID,
7448                                             UDA_TEMPLATE_ID,
7449 								    PK1_VALUE,
7450                                             PK2_VALUE,
7451                                             PK3_VALUE,
7452                                             PK4_VALUE,
7453                                             PK5_VALUE,
7454                                             LAST_UPDATE_DATE,
7455                                             LAST_UPDATED_BY,
7456                                             LAST_UPDATE_LOGIN,
7457                                             CREATED_BY,
7458                                             CREATION_DATE,
7459                                             C_EXT_ATTR1,
7460                                             C_EXT_ATTR2,
7461                                             C_EXT_ATTR3,
7462                                             C_EXT_ATTR4,
7463                                             C_EXT_ATTR5,
7464                                             C_EXT_ATTR6,
7465                                             C_EXT_ATTR7,
7466                                             C_EXT_ATTR8,
7467                                             C_EXT_ATTR9,
7468                                             C_EXT_ATTR10,
7469                                             C_EXT_ATTR11,
7470                                             C_EXT_ATTR12,
7471                                             C_EXT_ATTR13,
7472                                             C_EXT_ATTR14,
7473                                             C_EXT_ATTR15,
7474                                             C_EXT_ATTR16,
7475                                             C_EXT_ATTR17,
7476                                             C_EXT_ATTR18,
7477                                             C_EXT_ATTR19,
7478                                             C_EXT_ATTR20,
7479                                             C_EXT_ATTR21,
7480                                             C_EXT_ATTR22,
7481                                             C_EXT_ATTR23,
7482                                             C_EXT_ATTR24,
7483                                             C_EXT_ATTR25,
7484                                             C_EXT_ATTR26,
7485                                             C_EXT_ATTR27,
7486                                             C_EXT_ATTR28,
7487                                             C_EXT_ATTR29,
7488                                             C_EXT_ATTR30,
7489                                             C_EXT_ATTR31,
7490                                             C_EXT_ATTR32,
7491                                             C_EXT_ATTR33,
7492                                             C_EXT_ATTR34,
7493                                             C_EXT_ATTR35,
7494                                             C_EXT_ATTR36,
7495                                             C_EXT_ATTR37,
7496                                             C_EXT_ATTR38,
7497                                             C_EXT_ATTR39,
7498                                             C_EXT_ATTR40,
7499                                             N_EXT_ATTR1,
7500                                             N_EXT_ATTR2,
7501                                             N_EXT_ATTR3,
7502                                             N_EXT_ATTR4,
7503                                             N_EXT_ATTR5,
7504                                             N_EXT_ATTR6,
7505                                             N_EXT_ATTR7,
7506                                             N_EXT_ATTR8,
7507                                             N_EXT_ATTR9,
7508                                             N_EXT_ATTR10,
7509                                             N_EXT_ATTR11,
7510                                             N_EXT_ATTR12,
7511                                             N_EXT_ATTR13,
7512                                             N_EXT_ATTR14,
7513                                             N_EXT_ATTR15,
7514                                             N_EXT_ATTR16,
7515                                             N_EXT_ATTR17,
7516                                             N_EXT_ATTR18,
7517                                             N_EXT_ATTR19,
7518                                             N_EXT_ATTR20,
7519                                             UOM_EXT_ATTR1,
7520                                             UOM_EXT_ATTR2,
7521                                             UOM_EXT_ATTR3,
7522                                             UOM_EXT_ATTR4,
7523                                             UOM_EXT_ATTR5,
7524                                             UOM_EXT_ATTR6,
7525                                             UOM_EXT_ATTR7,
7526                                             UOM_EXT_ATTR8,
7527                                             UOM_EXT_ATTR9,
7528                                             UOM_EXT_ATTR10,
7529                                             UOM_EXT_ATTR11,
7530                                             UOM_EXT_ATTR12	,
7531                                             UOM_EXT_ATTR13,
7532                                             UOM_EXT_ATTR14,
7533                                             UOM_EXT_ATTR15,
7534                                             UOM_EXT_ATTR16,
7535                                             UOM_EXT_ATTR17,
7536                                             UOM_EXT_ATTR18,
7537                                             UOM_EXT_ATTR19,
7538                                             UOM_EXT_ATTR20,
7539                                             D_EXT_ATTR1,
7540                                             D_EXT_ATTR2,
7541                                             D_EXT_ATTR3,
7542                                             D_EXT_ATTR4,
7543                                             D_EXT_ATTR5,
7544                                             D_EXT_ATTR6,
7545                                             D_EXT_ATTR7,
7546                                             D_EXT_ATTR8,
7547                                             D_EXT_ATTR9,
7548                                             D_EXT_ATTR10)
7549                                     SELECT l_extension_id_vers,
7550                                             ATTR_GROUP_ID,
7551                                             CONTRACT_TYPE,
7552                                             contract_id,
7553                                             p_contract_version+1,
7554                                             DATA_LEVEL_ID,
7555                                             UDA_TEMPLATE_ID,
7556 								    PK1_VALUE,
7557                                             PK2_VALUE,
7558                                             PK3_VALUE,
7559                                             PK4_VALUE,
7560                                             PK5_VALUE,
7561                                             sysdate,
7562                                             LAST_UPDATED_BY,
7563                                             LAST_UPDATE_LOGIN,
7564                                             CREATED_BY,
7565                                             sysdate,
7566                                             C_EXT_ATTR1,
7567                                             C_EXT_ATTR2,
7568                                             C_EXT_ATTR3,
7569                                             C_EXT_ATTR4,
7570                                             C_EXT_ATTR5,
7571                                             C_EXT_ATTR6,
7572                                             C_EXT_ATTR7,
7573                                             C_EXT_ATTR8,
7574                                             C_EXT_ATTR9,
7575                                             C_EXT_ATTR10,
7576                                             C_EXT_ATTR11,
7577                                             C_EXT_ATTR12,
7578                                             C_EXT_ATTR13,
7579                                             C_EXT_ATTR14,
7580                                             C_EXT_ATTR15,
7581                                             C_EXT_ATTR16,
7582                                             C_EXT_ATTR17,
7583                                             C_EXT_ATTR18,
7584                                             C_EXT_ATTR19,
7585                                             C_EXT_ATTR20,
7586                                             C_EXT_ATTR21,
7587                                             C_EXT_ATTR22,
7588                                             C_EXT_ATTR23,
7589                                             C_EXT_ATTR24,
7590                                             C_EXT_ATTR25,
7591                                             C_EXT_ATTR26,
7592                                             C_EXT_ATTR27,
7593                                             C_EXT_ATTR28,
7594                                             C_EXT_ATTR29,
7595                                             C_EXT_ATTR30,
7596                                             C_EXT_ATTR31,
7597                                             C_EXT_ATTR32,
7598                                             C_EXT_ATTR33,
7599                                             C_EXT_ATTR34,
7600                                             C_EXT_ATTR35,
7601                                             C_EXT_ATTR36,
7602                                             C_EXT_ATTR37,
7603                                             C_EXT_ATTR38,
7604                                             C_EXT_ATTR39,
7605                                             C_EXT_ATTR40,
7606                                             N_EXT_ATTR1,
7607                                             N_EXT_ATTR2,
7608                                             N_EXT_ATTR3,
7609                                             N_EXT_ATTR4,
7610                                             N_EXT_ATTR5,
7611                                             N_EXT_ATTR6,
7612                                             N_EXT_ATTR7,
7613                                             N_EXT_ATTR8,
7614                                             N_EXT_ATTR9,
7615                                             N_EXT_ATTR10,
7616                                             N_EXT_ATTR11,
7617                                             N_EXT_ATTR12,
7618                                             N_EXT_ATTR13,
7619                                             N_EXT_ATTR14,
7620                                             N_EXT_ATTR15,
7621                                             N_EXT_ATTR16,
7622                                             N_EXT_ATTR17,
7623                                             N_EXT_ATTR18,
7624                                             N_EXT_ATTR19,
7625                                             N_EXT_ATTR20,
7626                                             UOM_EXT_ATTR1,
7627                                             UOM_EXT_ATTR2,
7628                                             UOM_EXT_ATTR3,
7629                                             UOM_EXT_ATTR4,
7630                                             UOM_EXT_ATTR5,
7631                                             UOM_EXT_ATTR6,
7632                                             UOM_EXT_ATTR7,
7633                                             UOM_EXT_ATTR8,
7634                                             UOM_EXT_ATTR9,
7635                                             UOM_EXT_ATTR10,
7636                                             UOM_EXT_ATTR11,
7637                                             UOM_EXT_ATTR12,
7638                                             UOM_EXT_ATTR13,
7639                                             UOM_EXT_ATTR14,
7640                                             UOM_EXT_ATTR15,
7641                                             UOM_EXT_ATTR16,
7642                                             UOM_EXT_ATTR17,
7643                                             UOM_EXT_ATTR18,
7644                                             UOM_EXT_ATTR19,
7645                                             UOM_EXT_ATTR20,
7646                                             D_EXT_ATTR1,
7647                                             D_EXT_ATTR2,
7648                                             D_EXT_ATTR3,
7649                                             D_EXT_ATTR4,
7650                                             D_EXT_ATTR5,
7651                                             D_EXT_ATTR6,
7652                                             D_EXT_ATTR7,
7653                                             D_EXT_ATTR8,
7654                                             D_EXT_ATTR9,
7655                                             D_EXT_ATTR10
7656                                     FROM okc_rep_contracts_all_ext_b
7657                                     WHERE contract_id =  p_contract_id
7658                                     AND extension_id = c_get_uda_attr_for_con_rec.extension_id;
7659 
7660     --insert data from okc_rep_contracts_all_ext_tl table to okc_rep_contract_vers_ext_tl
7661         INSERT INTO okc_rep_contracts_all_ext_tl(EXTENSION_ID
7662                                                 ,ATTR_GROUP_ID
7663                                                 ,CONTRACT_TYPE
7664                                                 ,CONTRACT_ID
7665                                                 ,CONTRACT_VERSION_NUM
7666                                                 ,DATA_LEVEL_ID
7667                                                 ,UDA_TEMPLATE_ID
7668 									   ,SOURCE_LANG
7669                                                 ,LANGUAGE
7670                                                 ,LAST_UPDATE_DATE
7671                                                 ,LAST_UPDATED_BY
7672                                                 ,LAST_UPDATE_LOGIN
7673                                                 ,CREATED_BY
7674                                                 ,CREATION_DATE
7675                                                 ,TL_EXT_ATTR1
7676                                                 ,TL_EXT_ATTR2
7677                                                 ,TL_EXT_ATTR3
7678                                                 ,TL_EXT_ATTR4
7679                                                 ,TL_EXT_ATTR5
7680                                                 ,TL_EXT_ATTR6
7681                                                 ,TL_EXT_ATTR7
7682                                                 ,TL_EXT_ATTR8
7683                                                 ,TL_EXT_ATTR9
7684                                                 ,TL_EXT_ATTR10
7685                                                 ,TL_EXT_ATTR11
7686                                                 ,TL_EXT_ATTR12
7687                                                 ,TL_EXT_ATTR13
7688                                                 ,TL_EXT_ATTR14
7689                                                 ,TL_EXT_ATTR15
7690                                                 ,TL_EXT_ATTR16
7691                                                 ,TL_EXT_ATTR17
7692                                                 ,TL_EXT_ATTR18
7693                                                 ,TL_EXT_ATTR19
7694                                                 ,TL_EXT_ATTR20
7695                                                 ,TL_EXT_ATTR21
7696                                                 ,TL_EXT_ATTR22
7697                                                 ,TL_EXT_ATTR23
7698                                                 ,TL_EXT_ATTR24
7699                                                 ,TL_EXT_ATTR25
7700                                                 ,TL_EXT_ATTR26
7701                                                 ,TL_EXT_ATTR27
7702                                                 ,TL_EXT_ATTR28
7703                                                 ,TL_EXT_ATTR29
7704                                                 ,TL_EXT_ATTR30
7705                                                 ,TL_EXT_ATTR31
7706                                                 ,TL_EXT_ATTR32
7707                                                 ,TL_EXT_ATTR33
7708                                                 ,TL_EXT_ATTR34
7709                                                 ,TL_EXT_ATTR35
7710                                                 ,TL_EXT_ATTR36
7711                                                 ,TL_EXT_ATTR37
7712                                                 ,TL_EXT_ATTR38
7713                                                 ,TL_EXT_ATTR39
7714                                                 ,TL_EXT_ATTR40)
7715                                          SELECT l_extension_id_vers
7716                                                 ,ATTR_GROUP_ID
7717                                                 , CONTRACT_TYPE
7718                                                 ,CONTRACT_ID
7719                                                 ,p_contract_version+1
7720                                                 ,DATA_LEVEL_ID
7721                                                 ,UDA_TEMPLATE_ID
7722 									   ,SOURCE_LANG
7723                                                 ,LANGUAGE
7724                                                 ,LAST_UPDATE_DATE
7725                                                 ,LAST_UPDATED_BY
7726                                                 ,LAST_UPDATE_LOGIN
7727                                                 ,CREATED_BY
7728                                                 ,CREATION_DATE
7729                                                 ,TL_EXT_ATTR1
7730                                                 ,TL_EXT_ATTR2
7731                                                 ,TL_EXT_ATTR3
7732                                                 ,TL_EXT_ATTR4
7733                                                 ,TL_EXT_ATTR5
7734                                                 ,TL_EXT_ATTR6
7735                                                 ,TL_EXT_ATTR7
7736                                                 ,TL_EXT_ATTR8
7737                                                 ,TL_EXT_ATTR9
7738                                                 ,TL_EXT_ATTR10
7739                                                 ,TL_EXT_ATTR11
7740                                                 ,TL_EXT_ATTR12
7741                                                 ,TL_EXT_ATTR13
7742                                                 ,TL_EXT_ATTR14
7743                                                 ,TL_EXT_ATTR15
7744                                                 ,TL_EXT_ATTR16
7745                                                 ,TL_EXT_ATTR17
7746                                                 ,TL_EXT_ATTR18
7747                                                 ,TL_EXT_ATTR19
7748                                                 ,TL_EXT_ATTR20
7749                                                 ,TL_EXT_ATTR21
7750                                                 ,TL_EXT_ATTR22
7751                                                 ,TL_EXT_ATTR23
7752                                                 ,TL_EXT_ATTR24
7753                                                 ,TL_EXT_ATTR25
7754                                                 ,TL_EXT_ATTR26
7755                                                 ,TL_EXT_ATTR27
7756                                                 ,TL_EXT_ATTR28
7757                                                 ,TL_EXT_ATTR29
7758                                                 ,TL_EXT_ATTR30
7759                                                 ,TL_EXT_ATTR31
7760                                                 ,TL_EXT_ATTR32
7761                                                 ,TL_EXT_ATTR33
7762                                                 ,TL_EXT_ATTR34
7763                                                 ,TL_EXT_ATTR35
7764                                                 ,TL_EXT_ATTR36
7765                                                 ,TL_EXT_ATTR37
7766                                                 ,TL_EXT_ATTR38
7767                                                 ,TL_EXT_ATTR39
7768                                                 ,TL_EXT_ATTR40
7769                                     FROM okc_rep_contracts_all_ext_tl
7770                                     WHERE contract_id =  p_contract_id
7771                                     AND extension_id = c_get_uda_attr_for_con_rec.extension_id;
7772 
7773       END LOOP;
7774 
7775     -- Standard check of p_commit
7776     IF FND_API.To_Boolean( p_commit ) THEN
7777       COMMIT WORK;
7778     END IF;
7779 
7780     -- Standard call to get message count and if count is 1, get message info.
7781     FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data );
7782 
7783   IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7784         FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE ,G_MODULE||l_api_name,
7785                 'Leaving OKC_REP_CONTRACT_PROCESS_PVT.version_uda_attribute_values');
7786     END IF;
7787 
7788 
7789     EXCEPTION
7790       WHEN FND_API.G_EXC_ERROR THEN
7791         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7792            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
7793                  g_module || l_api_name,
7794                  'Leaving version_uda_attribute_values:FND_API.G_EXC_ERROR Exception');
7795         END IF;
7796         ROLLBACK TO version_uda_attr_values_PVT;
7797         x_return_status := FND_API.G_RET_STS_ERROR;
7798         FND_MSG_PUB.Count_And_Get(
7799         p_count =>  x_msg_count,
7800         p_data  =>  x_msg_data
7801         );
7802 
7803       WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7804         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7805            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
7806                  g_module || l_api_name,
7807                  'Leaving version_uda_attribute_values:FND_API.G_EXC_UNEXPECTED_ERROR Exception');
7808         END IF;
7809         ROLLBACK TO version_uda_attr_values_PVT;
7810         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7811         FND_MSG_PUB.Count_And_Get(
7812         p_count =>  x_msg_count,
7813         p_data  =>  x_msg_data
7814         );
7815 
7816       WHEN OTHERS THEN
7817         IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7818            fnd_log.string(FND_LOG.LEVEL_EXCEPTION,
7819                  g_module || l_api_name,
7820                  'Leaving version_uda_attribute_values because of EXCEPTION: ' || sqlerrm);
7821         END IF;
7822         Okc_Api.Set_Message(p_app_name     => G_APP_NAME,
7823                             p_msg_name     => G_UNEXPECTED_ERROR,
7824                             p_token1       => G_SQLCODE_TOKEN,
7825                             p_token1_value => sqlcode,
7826                             p_token2       => G_SQLERRM_TOKEN,
7827                             p_token2_value => sqlerrm);
7828         ROLLBACK TO version_uda_attr_values_PVT;
7829         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7830         FND_MSG_PUB.Count_And_Get(
7831         p_count =>  x_msg_count,
7832         p_data  =>  x_msg_data
7833         );
7834 
7835   END version_uda_attribute_values;
7836 
7837 --call_contract_preview_cp_yn checks whether the cocurrent program for generation of attachment of repository contract can be called or not.
7838 --Parameters: p_contract_id NUMBER :contract Id of Repository Contract
7839 --            p_contract_type VARCHAR2: contract Type of Repository Contract
7840 --Return Paramter: VARCHAR2: Y/N
7841 FUNCTION call_contract_preview_cp_yn (p_contract_id NUMBER,
7842                                       p_contract_type VARCHAR2) RETURN VARCHAR2 IS
7843 
7844   l_api_name  VARCHAR2(30);
7845   l_return_status VARCHAR2(1);
7846   l_layout_template_id NUMBER;
7847   l_terms_template_id NUMBER;
7848   l_print_template_id NUMBER;
7849 
7850 BEGIN
7851   l_api_name := 'call_contract_preview_cp_yn';
7852   l_return_status := 'N';
7853   IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7854     FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name, '100: Entered OKC_REP_CONTRACT_PROCESS_PVT.call_contract_preview_cp_yn');
7855     FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name, '100: p_contract_id is: ' || p_contract_id);
7856     FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name, '100: p_contract_type is: ' || p_contract_type);
7857   END IF;
7858 
7859   SELECT layout_template_id INTO l_layout_template_id
7860   FROM okc_bus_doc_types_b
7861   WHERE document_type = p_contract_type;
7862 
7863   IF (l_layout_template_id IS NOT NULL) THEN
7864     IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7865       FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name, '101: Contract attachment CP can be called Y/N is: Y');
7866       FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name, '101: Leaving call_contract_preview_cp_yn');
7867     END IF;
7868     RETURN 'Y';
7869   ELSE
7870     BEGIN
7871       SELECT template_id INTO l_terms_template_id
7872       FROM okc_template_usages
7873       WHERE document_id = p_contract_id AND document_type = p_contract_type;
7874     EXCEPTION
7875       WHEN NO_DATA_FOUND THEN
7876         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7877           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name, '102: Contract attachment CP can be called Y/N is: N');
7878           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name, '102: Leaving call_contract_preview_cp_yn');
7879         END IF;
7880         RETURN 'N';
7881       WHEN OTHERS THEN
7882         RAISE;
7883     END;
7884 
7885     BEGIN
7886       SELECT PRINT_TEMPLATE_ID INTO l_print_template_id
7887       FROM okc_terms_templates_all
7888       WHERE template_id = l_terms_template_id;
7889     EXCEPTION
7890       WHEN NO_DATA_FOUND THEN
7891         IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7892           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name, '103: Contract attachment CP can be called Y/N is: N');
7893           FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name, '103: Leaving call_contract_preview_cp_yn');
7894         END IF;
7895 
7896         RETURN 'N';
7897       WHEN OTHERS THEN
7898         RAISE;
7899     END;
7900 
7901     IF l_print_template_id IS NOT NULL THEN
7902       l_return_status := 'Y';
7903     END IF;
7904   END IF;
7905 
7906   IF ( FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7907     FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name, '104: Contract attachment CP can be called Y/N is: ' || l_return_status);
7908     FND_LOG.STRING( FND_LOG.LEVEL_STATEMENT ,G_MODULE||l_api_name, '104: Leaving call_contract_preview_cp_yn');
7909   END IF;
7910 
7911   RETURN l_return_status;
7912 EXCEPTION
7913   WHEN OTHERS THEN
7914     IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
7915        FND_LOG.STRING(FND_LOG.LEVEL_EXCEPTION, g_module || l_api_name, '105: Leaving call_contract_preview_cp_yn: Exception ocuured');
7916     END IF;
7917     RAISE;
7918 END call_contract_preview_cp_yn;
7919 
7920 END OKC_REP_CONTRACT_PROCESS_PVT;