[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;