[Home] [Help]
PACKAGE BODY: APPS.OKC_TERMS_QA_GRP
Source
1 PACKAGE BODY OKC_TERMS_QA_GRP AS
2 /* $Header: OKCGDQAB.pls 120.5 2008/01/23 12:19:36 harchand ship $ */
3
4
5 ---------------------------------------------------------------------------
6 -- GLOBAL MESSAGE CONSTANTS
7 ---------------------------------------------------------------------------
8 G_FND_APP CONSTANT VARCHAR2(200) := OKC_API.G_FND_APP;
9 G_UNABLE_TO_RESERVE_REC CONSTANT VARCHAR2(200) := OKC_API.G_UNABLE_TO_RESERVE_REC;
10 G_RECORD_DELETED CONSTANT VARCHAR2(200) := OKC_API.G_RECORD_DELETED;
11 G_RECORD_CHANGED CONSTANT VARCHAR2(200) := OKC_API.G_RECORD_CHANGED;
12 G_RECORD_LOGICALLY_DELETED CONSTANT VARCHAR2(200) := OKC_API.G_RECORD_LOGICALLY_DELETED;
13 G_REQUIRED_VALUE CONSTANT VARCHAR2(200) := OKC_API.G_REQUIRED_VALUE;
14 G_INVALID_VALUE CONSTANT VARCHAR2(200) := OKC_API.G_INVALID_VALUE;
15 G_COL_NAME_TOKEN CONSTANT VARCHAR2(200) := OKC_API.G_COL_NAME_TOKEN;
16 G_PARENT_TABLE_TOKEN CONSTANT VARCHAR2(200) := OKC_API.G_PARENT_TABLE_TOKEN;
17 G_CHILD_TABLE_TOKEN CONSTANT VARCHAR2(200) := OKC_API.G_CHILD_TABLE_TOKEN;
18 ---------------------------------------------------------------------------
19 -- GLOBAL CONSTANTS
20 ---------------------------------------------------------------------------
21 G_PKG_NAME CONSTANT VARCHAR2(200) := 'OKC_TERMS_QA_GRP';
22 G_MODULE CONSTANT VARCHAR2(200) := 'okc.plsql.'||G_PKG_NAME||'.';
23 G_APP_NAME CONSTANT VARCHAR2(3) := OKC_API.G_APP_NAME;
24 ------------------------------------------------------------------------------
25 -- GLOBAL CONSTANTS
26 ------------------------------------------------------------------------------
27 G_FALSE CONSTANT VARCHAR2(1) := FND_API.G_FALSE;
28 G_TRUE CONSTANT VARCHAR2(1) := FND_API.G_TRUE;
29
30 G_RET_STS_SUCCESS CONSTANT varchar2(1) := FND_API.G_RET_STS_SUCCESS;
31 G_RET_STS_ERROR CONSTANT varchar2(1) := FND_API.G_RET_STS_ERROR;
32 G_RET_STS_UNEXP_ERROR CONSTANT varchar2(1) := FND_API.G_RET_STS_UNEXP_ERROR;
33
34 G_QA_SUCCESS CONSTANT VARCHAR2(200) := 'OKC_CONTRACTS_QA_SUCCESS';
35 G_UNEXPECTED_ERROR CONSTANT varchar2(200) := 'OKC_UNEXPECTED_ERROR';
36 G_SQLERRM_TOKEN CONSTANT varchar2(200) := 'ERROR_MESSAGE';
37 G_SQLCODE_TOKEN CONSTANT varchar2(200) := 'ERROR_CODE';
38
39 G_QA_LOOKUP CONSTANT VARCHAR2(30) := 'OKC_TERM_QA_LIST';
40 G_TMPL_QA_TYPE CONSTANT VARCHAR2(30) := 'TEMPLATE';
41 G_TMPL_DOC_TYPE CONSTANT VARCHAR2(30) := OKC_TERMS_UTIL_GRP.G_TMPL_DOC_TYPE;
42
43 ---------------------------------------------------------------------------
44 -- Procedure QA_Doc version 1
45 ---------------------------------------------------------------------------
46 /* version 1, logs valiation messages in OKC_QA_ERRORS_T table
47 returns x_sequence_id as out parameter
48 11.5.10+ : Modified to accept addtional in parameter p_validation_level
49 */
50 PROCEDURE qa_doc (
51 p_api_version IN NUMBER ,
52 p_init_msg_list IN VARCHAR2 ,
53 x_return_status OUT NOCOPY VARCHAR2 ,
54 x_msg_data OUT NOCOPY VARCHAR2 ,
55 x_msg_count OUT NOCOPY NUMBER ,
56
57 p_qa_mode IN VARCHAR2 ,
58 p_doc_type IN VARCHAR2 ,
59 p_doc_id IN NUMBER ,
60
61 x_sequence_id OUT NOCOPY NUMBER ,
62 x_qa_return_status OUT NOCOPY VARCHAR2 ,
63 p_qa_terms_only IN VARCHAR2 ,
64 p_validation_level IN VARCHAR2,
65 p_commit IN VARCHAR2,
66 p_run_expert_flag IN VARCHAR2 DEFAULT 'Y')
67 IS
68
69 l_api_version CONSTANT NUMBER := 1;
70 l_api_name CONSTANT VARCHAR2(30) := 'QA_Doc';
71 l_qa_result_tbl qa_result_tbl_type;
72 l_bus_doc_date_events_tbl BUSDOCDATES_TBL_TYPE;
73 l_error_found Boolean := FALSE;
74 l_warning_found Boolean := FALSE;
75 l_contract_source OKC_TEMPLATE_USAGES.CONTRACT_SOURCE_CODE%TYPE;
76 l_now DATE;
77
78 l_qa_code OKC_QA_ERRORS_T.QA_CODE%TYPE;
79 l_severity OKC_QA_ERRORS_T.ERROR_SEVERITY%TYPE;
80 l_desc OKC_QA_ERRORS_T.PROBLEM_SHORT_DESC%TYPE;
81 l_perform_layout_tmpl_qa VARCHAR2(1);
82 l_template_id OKC_TEMPLATE_USAGES.TEMPLATE_ID%TYPE;
83
84 CURSOR l_get_qa_detail_csr IS
85 SELECT fnd.lookup_code qa_code,
86 fnd.meaning qa_name,
87 nvl(qa.severity_flag,G_QA_STS_WARNING) severity_flag ,
88 decode(fnd.enabled_flag,'N','N','Y',decode(qa.enable_qa_yn,'N','N','Y'),'Y') perform_qa
89 FROM FND_LOOKUPS FND, OKC_DOC_QA_LISTS QA
90 WHERE QA.DOCUMENT_TYPE(+)=p_doc_type
91 AND QA.QA_CODE(+) = FND.LOOKUP_CODE
92 AND FND.LOOKUP_CODE = 'CHECK_TERMS_EXIST'
93 AND Fnd.LOOKUP_TYPE=G_QA_LOOKUP;
94
95 CURSOR l_get_template_id IS
96 SELECT template_id
97 FROM OKC_TEMPLATE_USAGES
98 WHERE document_type = p_doc_type
99 AND document_id = p_doc_id;
100
101 BEGIN
102 l_contract_source := 'NONE';
103 l_now := SYSDATE;
104 IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
105 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'100: Entered QA_Doc');
106 END IF;
107
108 -- Standard Start of API savepoint
109 SAVEPOINT g_QA_Doc;
110
111 -- Standard call to check for call compatibility.
112 IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
113 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
114 END IF;
115
116 -- Initialize message list if p_init_msg_list is set to TRUE.
117 IF FND_API.to_Boolean( p_init_msg_list ) THEN
118 FND_MSG_PUB.initialize;
119 END IF;
120 -- Initialize API return status to success
121 x_return_status := G_RET_STS_SUCCESS;
122
123 IF p_doc_type <> G_TMPL_QA_TYPE THEN
124
125 l_contract_source := OKC_TERMS_UTIL_GRP.Get_Contract_Source_Code(
126 p_document_type => p_doc_type,
127 p_document_id => p_doc_id
128 );
129 IF (l_contract_source = 'E') THEN
130 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
131 END IF;
132 END IF;
133
134 --Added for 10+ word integration
135 IF l_contract_source = 'ATTACHED' THEN
136 --------------------------------------------
137 -- Contract is in attached document from
138 --------------------------------------------
139 --Added for 10+ word integration
140 OKC_CONTRACT_DOCS_GRP.qa_doc(
141 p_api_version => l_api_version,
142 x_return_status => x_return_status,
143 x_msg_count => x_msg_count,
144 x_msg_data => x_msg_data,
145
146 p_doc_type => p_doc_type,
147 p_doc_id => p_doc_id,
148
149 x_qa_result_tbl => l_qa_result_tbl,
150 x_qa_return_status => x_qa_return_status
151 );
152
153 --------------------------------------------
154 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
155 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
156 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
157 RAISE FND_API.G_EXC_ERROR ;
158 END IF;
159 --------------------------------------------
160
161 ELSIF (l_contract_source = 'STRUCTURED' OR p_doc_type = G_TMPL_QA_TYPE) THEN
162 --------------------------------------------
163 -- Contract is in structured terms format OR Document is Template
164 --------------------------------------------
165 IF p_qa_mode='AMEND' THEN
166 --------------------------------------------
167 -- Calling API to mark any article amended if system variable used in that API has been changed
168 --------------------------------------------
169 IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
170 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'200: Call API OKC_TERMS_UTIL_GRP.Mark_Variable_Based_Amendment ');
171 END IF;
172
173 OKC_TERMS_UTIL_GRP.Mark_Variable_Based_Amendment(
174 p_api_version =>1,
175 p_init_msg_list => FND_API.G_FALSE,
176 p_commit => FND_API.G_TRUE,
177 p_doc_type => p_doc_type,
178 p_doc_id => p_doc_id,
179 x_return_status => x_return_status,
180 x_msg_count => x_msg_count,
181 x_msg_data => x_msg_data
182 );
183 --------------------------------------------
184 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
185 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
186 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
187 RAISE FND_API.G_EXC_ERROR ;
188 END IF;
189 --------------------------------------------
190 END IF;
191
192 --------------------------------------------
193 -- Call internal QA_Doc and put result into PLSQL table and save it in DB
194 --------------------------------------------
195 IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
196 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'200: Call Private QA_Doc and put result into PLSQL table and save it in DB');
197 END IF;
198
199 OKC_TERMS_QA_PVT.QA_Doc(
200 x_return_status => x_return_status,
201
202 ---- p_save => 'Y',
203 p_qa_mode => p_qa_mode,
204 p_doc_type => p_doc_type,
205 p_doc_id => p_doc_id,
206 x_msg_count => x_msg_count,
207 x_msg_data => x_msg_data,
208
209 x_sequence_id => x_sequence_id,
210 x_qa_result_tbl => l_qa_result_tbl,
211 x_qa_return_status => x_qa_return_status,
212 p_run_expert_flag => p_run_expert_flag
213 );
214 --------------------------------------------
215 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
216 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
217 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
218 RAISE FND_API.G_EXC_ERROR ;
219 END IF;
220 --------------------------------------------
221
222 ELSE --l_contract_source = NULL
223 --Template has not been applied on the document, no qa needs to be done.
224 x_qa_return_status := G_QA_STS_SUCCESS;
225 RETURN;
226 END IF;
227
228
229 ----------------------------------------------------------------------
230 -- QA Check for Lock Contract - to be run for p_doc_type <> 'TEMPLATE'
231 ----------------------------------------------------------------------
232 IF p_doc_type<>G_TMPL_DOC_TYPE THEN
233 IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
234 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'2210: calling check_lock_contract');
235 END IF;
236 OKC_TERMS_QA_PVT.Check_lock_contract(
237 p_qa_mode => p_qa_mode,
238 p_doc_type => p_doc_type,
239 p_doc_id => p_doc_id,
240 x_qa_result_tbl => l_qa_result_tbl,
241 x_qa_return_status => x_qa_return_status,
242 x_return_status => x_return_status);
243
244 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
245 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
246 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
247 RAISE FND_API.G_EXC_ERROR ;
248 END IF;
249 END IF;
250
251 ----------------------------------------------------------------------
252 -- QA Check for Contract Admin - to be run for p_doc_type <> 'TEMPLATE'
253 ----------------------------------------------------------------------
254 IF p_doc_type<>G_TMPL_DOC_TYPE THEN
255 IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
256 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'2210: calling check_contract_admin');
257 END IF;
258 OKC_TERMS_QA_PVT.check_contract_admin(
259 p_qa_mode => p_qa_mode,
260 p_doc_type => p_doc_type,
261 p_doc_id => p_doc_id,
262 x_qa_result_tbl => l_qa_result_tbl,
263 x_qa_return_status => x_qa_return_status,
264 x_return_status => x_return_status
265 );
266 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
267 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
268 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
269 RAISE FND_API.G_EXC_ERROR ;
270 END IF;
271 END IF;
272
273
274 OPEN l_get_template_id;
275 FETCH l_get_template_id INTO l_template_id;
276 CLOSE l_get_template_id;
277 ------------------------------------------------------------
278 -- QA Check for deliverables, if p_qa_terms_only is 'N' and a template is instantiated
279 ------------------------------------------------------------
280
281 IF p_qa_terms_only = 'N' AND l_template_id IS NOT NULL THEN
282
283
284 IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
285 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'201: Call Private QA_Doc for deilverables and add result into PLSQL table and save it in DB');
286 END IF;
287
288 OKC_DELIVERABLE_PROCESS_PVT.validate_deliverable_for_qa (
289 p_api_version => 1,
290 p_init_msg_list => FND_API.G_FALSE,
291 p_doc_type => p_doc_type,
292 p_doc_id => p_doc_id,
293 p_mode => p_qa_mode,
294 p_bus_doc_date_events_tbl => l_bus_doc_date_events_tbl,
295 p_qa_result_tbl => l_qa_result_tbl,
296 x_msg_data => x_msg_data,
297 x_msg_count => x_msg_count,
298 x_return_status => x_return_status,
299 x_qa_return_status => x_qa_return_status);
300 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
301 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
302 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
303 RAISE FND_API.G_EXC_ERROR ;
304 END IF;
305
306 END IF;
307
308 --------------------------------------------
309 -- VALIDATIONS are done for Terms and Deliverables.
313 --------------------------------------------
310 -- Now insert into Temp table.
311 --------------------------------------------
312 -- Save result from PLSQL table into DB table
314 IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
315 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'2200: Save result from PLSQL table into DB table');
316 END IF;
317
318 x_qa_return_status := G_QA_STS_SUCCESS;
319
320 --Bug fix for bug#3290738
321 --After calling the validation APIs we need to find out about the x_qa_return_status
322 IF l_qa_result_tbl.COUNT > 0 THEN
323 FOR i IN l_qa_result_tbl.FIRST..l_qa_result_tbl.LAST LOOP
324 --Bug 3302652 takintoy
325 --Populate columns to be updated in okc_qa_errors_t
326 l_qa_result_tbl(i).error_record_type_name := okc_util.decode_lookup('OKC_ERROR_RECORD_TYPE',l_qa_result_tbl(i).error_record_type);
327 l_qa_result_tbl(i).error_severity_name := okc_util.decode_lookup('OKC_QA_SEVERITY',l_qa_result_tbl(i).error_severity);
328
329 IF l_qa_result_tbl(i).Error_severity = G_QA_STS_ERROR THEN
330 l_error_found := true;
331 END IF;
332 IF l_qa_result_tbl(i).Error_severity = G_QA_STS_WARNING THEN
333 l_warning_found := true;
334 END IF;
335
336 END LOOP;
337 IF l_error_found THEN
338 x_qa_return_status := G_QA_STS_ERROR;
339 ELSIF l_warning_found THEN
340 x_qa_return_status := G_QA_STS_WARNING;
341 END IF;
342 END IF;
343
344
345
346 OKC_TERMS_QA_PVT.log_qa_messages(
347 x_return_status => x_return_status,
348
349 p_qa_result_tbl => l_qa_result_tbl,
350 x_sequence_id => x_sequence_id
351 );
352 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
353 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
354 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
355 RAISE FND_API.G_EXC_ERROR ;
356 END IF;
357
358 -- do a commit only if p_commit = 'T' (default value)
359 IF FND_API.To_Boolean( p_commit ) THEN
360 COMMIT WORK;
361 END IF;
362
363 -- Standard call to get message count and if count is 1, get message info.
364 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
365 IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
366 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'300: Leaving QA_Doc');
367 END IF;
368
369 EXCEPTION
370 WHEN FND_API.G_EXC_ERROR THEN
371 ROLLBACK TO g_QA_Doc;
372 IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
373 FND_LOG.STRING( FND_LOG.LEVEL_EXCEPTION, G_MODULE||l_api_name,'400: Leaving QA_Doc : OKC_API.G_EXCEPTION_ERROR Exception');
374 END IF;
375 x_return_status := G_RET_STS_ERROR ;
376 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
377
378 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
379 ROLLBACK TO g_QA_Doc;
380 IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
381 FND_LOG.STRING( FND_LOG.LEVEL_EXCEPTION, G_MODULE||l_api_name,'500: Leaving QA_Doc : OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception');
382 END IF;
383 x_return_status := G_RET_STS_UNEXP_ERROR ;
384 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
385
386 WHEN OTHERS THEN
387 ROLLBACK TO g_QA_Doc;
388 IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
389 FND_LOG.STRING( FND_LOG.LEVEL_EXCEPTION, G_MODULE||l_api_name,'600: Leaving QA_Doc because of EXCEPTION: '||sqlerrm);
390 END IF;
391
392 x_return_status := G_RET_STS_UNEXP_ERROR ;
393 IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR ) THEN
394 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, l_api_name );
395 END IF;
396 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
397 END qa_doc;
398
399 ---------------------------------------------------------------------------
400 -- Procedure QA_Doc version 2
401 ---------------------------------------------------------------------------
402 /* version 2, does not log valiation messages in OKC_QA_ERRORS_T table
403 returns x_qa_result_tbl as out parameter
404 11.5.10+: No modification
405 */
406 PROCEDURE QA_Doc (
407 p_api_version IN NUMBER ,
408 p_init_msg_list IN VARCHAR2 ,
409 x_return_status OUT NOCOPY VARCHAR2 ,
410 x_msg_data OUT NOCOPY VARCHAR2 ,
411 x_msg_count OUT NOCOPY NUMBER ,
412
413 p_qa_mode IN VARCHAR2 ,
414 p_doc_type IN VARCHAR2 ,
415 p_doc_id IN NUMBER ,
416
417 x_qa_result_tbl OUT NOCOPY qa_result_tbl_type,
418 x_qa_return_status OUT NOCOPY VARCHAR2,
419
420 p_qa_terms_only IN VARCHAR2 ,
424 l_api_version CONSTANT NUMBER := 1;
421 p_run_expert_flag IN VARCHAR2 DEFAULT 'Y') -- Bug 5186245
422 IS
423
425 l_api_name CONSTANT VARCHAR2(30) := 'QA_Doc';
426 l_sequence_id NUMBER;
427 l_bus_doc_date_events_tbl BUSDOCDATES_TBL_TYPE;
428 l_error_found Boolean := FALSE;
429 l_warning_found Boolean := FALSE;
430 l_contract_source OKC_TEMPLATE_USAGES.CONTRACT_SOURCE_CODE%TYPE;
431 l_template_id OKC_TEMPLATE_USAGES.TEMPLATE_ID%TYPE;
432
433 CURSOR l_get_template_id IS
434 SELECT template_id
435 FROM OKC_TEMPLATE_USAGES
436 WHERE document_type = p_doc_type
437 AND document_id = p_doc_id;
438
439 BEGIN
440 IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
441 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'700: Entered QA_Doc');
442 END IF;
443
444 -- Standard Start of API savepoint
445 SAVEPOINT g_QA_Doc;
446
447 -- Standard call to check for call compatibility.
448 IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
449 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
450 END IF;
451
452 -- Initialize message list if p_init_msg_list is set to TRUE.
453 IF FND_API.to_Boolean( p_init_msg_list ) THEN
454 FND_MSG_PUB.initialize;
455 END IF;
456 -- Initialize API return status to success
457 x_return_status := G_RET_STS_SUCCESS;
458
459
460 --Added for 10+ word integration
461 IF p_doc_type <> G_TMPL_QA_TYPE THEN
462 l_contract_source := OKC_TERMS_UTIL_GRP.Get_Contract_Source_Code(
463 p_document_type => p_doc_type,
464 p_document_id => p_doc_id
465 );
466 IF (l_contract_source = 'E') THEN
467 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
468 END IF;
469 END IF;
470
471 IF l_contract_source = 'ATTACHED' THEN
472 --------------------------------------------
473 -- Contract is in attached document from
474 --------------------------------------------
475 --Added for 10+ word integration
476 OKC_CONTRACT_DOCS_GRP.qa_doc(
477 p_api_version => l_api_version,
478 x_return_status => x_return_status,
479 x_msg_count => x_msg_count,
480 x_msg_data => x_msg_data,
481
482 p_doc_type => p_doc_type,
483 p_doc_id => p_doc_id,
484
485 x_qa_result_tbl => x_qa_result_tbl,
486 x_qa_return_status => x_qa_return_status
487 );
488
489
490 --------------------------------------------
491 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
492 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
493 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
494 RAISE FND_API.G_EXC_ERROR ;
495 END IF;
496 --------------------------------------------
497
498 ELSIF (l_contract_source = 'STRUCTURED' OR p_doc_type = G_TMPL_QA_TYPE) THEN
499 --------------------------------------------
500 -- Contract is in structured terms format OR Document is Template
501 --------------------------------------------
502
503 IF p_qa_mode='AMEND' THEN
504 --------------------------------------------
505 -- Calling API to mark any article amended if system variable used in that API has been changed
506 --------------------------------------------
507 IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
508 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'200: Call API OKC_TERMS_UTIL_GRP.Mark_Variable_Based_Amendment ');
509 END IF;
510
511 OKC_TERMS_UTIL_GRP.Mark_Variable_Based_Amendment(
512 p_api_version =>1,
513 p_init_msg_list => FND_API.G_FALSE,
514 p_commit => FND_API.G_TRUE,
515 p_doc_type => p_doc_type,
516 p_doc_id => p_doc_id,
517 x_return_status => x_return_status,
518 x_msg_count => x_msg_count,
519 x_msg_data => x_msg_data
520 );
521 --------------------------------------------
522 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
523 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
524 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
525 RAISE FND_API.G_EXC_ERROR ;
526 END IF;
527 --------------------------------------------
528 END IF;
529 --------------------------------------------
530 -- Call internal QA_Doc and put result into PLSQL table
531 --------------------------------------------
532 IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
533 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'800: Call Private QA_Doc and put result into PLSQL table');
534 END IF;
535 OKC_TERMS_QA_PVT.QA_Doc(
539 p_qa_mode => p_qa_mode,
536 x_return_status => x_return_status,
537
538 ---- p_save => 'N',
540 p_doc_type => p_doc_type,
541 p_doc_id => p_doc_id,
542
543 x_msg_count => x_msg_count,
544 x_msg_data => x_msg_data,
545 x_sequence_id => l_sequence_id,
546 x_qa_result_tbl => x_qa_result_tbl,
547 x_qa_return_status => x_qa_return_status,
548 p_run_expert_flag => p_run_expert_flag
549 );
550 --------------------------------------------
551 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
552 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
553 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
554 RAISE FND_API.G_EXC_ERROR ;
555 END IF;
556 --------------------------------------------
557
558 ELSE --l_contract_source = NULL
559 --Template has not been applied on the document, no qa needs to be done.
560 x_qa_return_status := G_QA_STS_SUCCESS;
561 RETURN;
562 END IF;
563
564
565 -- Repository Enhancement (For Validate Action)
566 IF SubStr(p_doc_type,1,3) <> 'REP' THEN -- If the Document Type is not Repository Contract'
567
568
569 ----------------------------------------------------------------------
570 -- QA Check for Lock Contract - to be run for p_doc_type <> 'TEMPLATE'
571 ----------------------------------------------------------------------
572 IF p_doc_type<>G_TMPL_DOC_TYPE THEN
573 IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
574 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'2210: calling check_lock_contract');
575 END IF;
576 OKC_TERMS_QA_PVT.Check_lock_contract(
577 p_qa_mode => p_qa_mode,
578 p_doc_type => p_doc_type,
579 p_doc_id => p_doc_id,
580 x_qa_result_tbl => x_qa_result_tbl,
581 x_qa_return_status => x_qa_return_status,
582 x_return_status => x_return_status);
583
584 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
585 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
586 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
587 RAISE FND_API.G_EXC_ERROR ;
588 END IF;
589 END IF;
590
591 ----------------------------------------------------------------------
592 -- QA Check for Contract Admin - to be run for p_doc_type <> 'TEMPLATE'
593 ----------------------------------------------------------------------
594 IF p_doc_type<>G_TMPL_DOC_TYPE THEN
595 IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
596 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'2210: calling check_contract_admin');
597 END IF;
598 OKC_TERMS_QA_PVT.check_contract_admin(
599 p_qa_mode => p_qa_mode,
600 p_doc_type => p_doc_type,
601 p_doc_id => p_doc_id,
602 x_qa_result_tbl => x_qa_result_tbl,
603 x_qa_return_status => x_qa_return_status,
604 x_return_status => x_return_status
605 );
606 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
607 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
608 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
609 RAISE FND_API.G_EXC_ERROR ;
610 END IF;
611 END IF;
612 OPEN l_get_template_id;
613 FETCH l_get_template_id INTO l_template_id;
614 CLOSE l_get_template_id;
615 ------------------------------------------------------------
616 -- QA Check for deliverables, if p_qa_terms_only is 'N' and a template is instantiated
617 ------------------------------------------------------------
618
619 IF p_qa_terms_only = 'N' AND l_template_id IS NOT NULL THEN
620
621
622 IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
623 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'201: Call Private QA_Doc for deilverables and add result into PLSQL table and save it in DB');
624 END IF;
625
626 OKC_DELIVERABLE_PROCESS_PVT.validate_deliverable_for_qa (
627 p_api_version => 1,
628 p_init_msg_list => FND_API.G_FALSE,
629 p_doc_type => p_doc_type,
630 p_doc_id => p_doc_id,
631 p_mode => p_qa_mode,
632 p_bus_doc_date_events_tbl => l_bus_doc_date_events_tbl,
633 p_qa_result_tbl => x_qa_result_tbl,
634 x_msg_data => x_msg_data,
635 x_msg_count => x_msg_count,
636 x_return_status => x_return_status,
637 x_qa_return_status => x_qa_return_status);
638 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
639 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
640 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
641 RAISE FND_API.G_EXC_ERROR ;
642 END IF;
643
644 END IF;
645
646 x_qa_return_status := G_QA_STS_SUCCESS;
647 IF x_qa_result_tbl.COUNT > 0 THEN
648 FOR i in x_qa_result_tbl.FIRST..x_qa_result_tbl.LAST LOOP
649
650 x_qa_result_tbl(i).error_record_type_name := okc_util.decode_lookup('OKC_ERROR_RECORD_TYPE',x_qa_result_tbl(i).error_record_type);
651 x_qa_result_tbl(i).error_severity_name := okc_util.decode_lookup('OKC_QA_SEVERITY',x_qa_result_tbl(i).error_severity);
652
656 IF x_qa_result_tbl(i).Error_severity = G_QA_STS_WARNING THEN
653 IF x_qa_result_tbl(i).Error_severity = G_QA_STS_ERROR THEN
654 l_error_found := true;
655 END IF;
657 l_warning_found := true;
658 END IF;
659
660 END LOOP;
661 --fix for bug 3290738
662 IF l_error_found THEN
663 x_qa_return_status := G_QA_STS_ERROR;
664 ELSIF l_warning_found THEN
665 x_qa_return_status := G_QA_STS_WARNING;
666 END IF;
667
668 END IF;
669
670 -- Standard call to get message count and if count is 1, get message info.
671 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
672 IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
673 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'900: Leaving QA_Doc');
674 END IF;
675 END IF; -- Repository Enhancement (For Validate Action)
676
677
678 EXCEPTION
679 WHEN FND_API.G_EXC_ERROR THEN
680 ROLLBACK TO g_QA_Doc;
681 IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
682 FND_LOG.STRING( FND_LOG.LEVEL_EXCEPTION, G_MODULE||l_api_name,'1000: Leaving QA_Doc : OKC_API.G_EXCEPTION_ERROR Exception');
683 END IF;
684 x_return_status := G_RET_STS_ERROR ;
685 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
686
687 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
688 ROLLBACK TO g_QA_Doc;
689 IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
690 FND_LOG.STRING( FND_LOG.LEVEL_EXCEPTION, G_MODULE||l_api_name,'1100: Leaving QA_Doc : OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception');
691 END IF;
692 x_return_status := G_RET_STS_UNEXP_ERROR ;
693 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
694
695 WHEN OTHERS THEN
696 ROLLBACK TO g_QA_Doc;
697 IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
698 FND_LOG.STRING( FND_LOG.LEVEL_EXCEPTION, G_MODULE||l_api_name,'1200: Leaving QA_Doc because of EXCEPTION: '||sqlerrm);
699 END IF;
700
701 x_return_status := G_RET_STS_UNEXP_ERROR ;
702 IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR ) THEN
703 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, l_api_name );
704 END IF;
705 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
706 END qa_doc;
707
708 ---------------------------------------------------------------------------
709 -- Procedure Check_Terms calls QA_doc version 2
710 ---------------------------------------------------------------------------
711 PROCEDURE Check_Terms(
712 x_return_status OUT NOCOPY VARCHAR2,
713 p_chr_id IN NUMBER)
714 IS
715
716 l_msg_data FND_NEW_MESSAGES.MESSAGE_TEXT%TYPE; --Fix for bug# 4019909
717 l_msg_count NUMBER;
718 l_api_version CONSTANT NUMBER := 1;
719 l_api_name CONSTANT VARCHAR2(30) := 'Check_Terms';
720 l_qa_result_tbl qa_result_tbl_type;
721 l_doc_type OKC_BUS_DOC_TYPES_B.DOCUMENT_TYPE%TYPE;
722 l_doc_id NUMBER;
723 l_qa_return_status VARCHAR2(50);
724
725 BEGIN
726
727 IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
728 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'700: Entered '||l_api_name);
729 END IF;
730 x_return_status := G_RET_STS_SUCCESS;
731
732 OKC_TERMS_UTIL_GRP.Get_Contract_Document_Type_ID(
733 p_api_version => l_api_version,
734 x_return_status => x_return_status,
735 x_msg_data => l_msg_data,
736 x_msg_count => l_msg_count,
737 p_chr_id => p_chr_id,
738 x_doc_type => l_doc_type,
739 x_doc_id => l_doc_id
740 );
741 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
742 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
743 END IF;
744
745 QA_Doc(
746 p_api_version => l_api_version,
747 x_return_status => x_return_status,
748 x_msg_count => l_msg_count,
749 x_msg_data => l_msg_data,
750
751 p_qa_mode => G_NORMAL_QA,
752 p_doc_type => l_doc_type,
753 p_doc_id => l_doc_id,
754
755 x_qa_result_tbl => l_qa_result_tbl,
756 x_qa_return_status => l_qa_return_status
757 );
758 IF (x_return_status <> OKC_API.G_RET_STS_SUCCESS) THEN
759 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
760 END IF;
761
762
763 IF l_qa_return_status = G_QA_STS_SUCCESS THEN
764 OKC_API.set_message(
765 p_app_name => G_APP_NAME,
766 p_msg_name => G_QA_SUCCESS);
767 ELSE
771 Okc_Qa_Check_Pvt.pub_qa_msg_tbl(i).data := l_qa_result_tbl(i).Problem_details||Fnd_Global.Newline||l_qa_result_tbl(i).Suggestion;
768 --Bug 4019909 Added following IF condition to prevent PL/SQL numeric error is l_qa_result_tbl is null.
769 IF l_qa_result_tbl.COUNT > 0 THEN
770 FOR i IN l_qa_result_tbl.first..l_qa_result_tbl.last LOOP
772 Okc_Qa_Check_Pvt.pub_qa_msg_tbl(i).error_status := l_qa_result_tbl(i).Error_severity;
773 END LOOP;
774 END IF;
775 END IF;
776 x_return_status := l_qa_return_status;
777
778 -- Standard call to get message count and if count is 1, get message info.
779 IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
780 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'500: Leaving '||l_api_name);
781 END IF;
782
783 EXCEPTION
784 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
785 ROLLBACK TO g_QA_Doc;
786 IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
787 FND_LOG.STRING( FND_LOG.LEVEL_EXCEPTION, G_MODULE||l_api_name,'1100: Leaving '||l_api_name||' : G_EXCEPTION_UNEXPECTED_ERROR Exception');
788 END IF;
789 x_return_status := G_QA_STS_ERROR ;
790
791 WHEN OTHERS THEN
792 ROLLBACK TO g_QA_Doc;
793 IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
794 FND_LOG.STRING( FND_LOG.LEVEL_EXCEPTION, G_MODULE||l_api_name,'1200: Leaving '||l_api_name||' because of EXCEPTION: '||sqlerrm);
795 END IF;
796
797 x_return_status := G_QA_STS_ERROR ;
798 IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR ) THEN
799 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, l_api_name );
800 END IF;
801 END Check_Terms;
802
803 ---------------------------------------------------------------------------
804 -- Procedure QA_Doc version 3 - calls qa_doc version 2
805 ---------------------------------------------------------------------------
806 /* version 3, does not log valiation messages in OKC_QA_ERRORS_T table
807 returns x_qa_result_tbl as out parameter, takes in additional parameter
808 p_bus_doc_date_events_tbl
809 11.5.10+: No modification
810 */
811 Procedure QA_Doc (
812 p_api_version IN NUMBER ,
813 p_init_msg_list IN VARCHAR2 ,
814 x_return_status OUT NOCOPY VARCHAR2 ,
815 x_msg_data OUT NOCOPY VARCHAR2 ,
816 x_msg_count OUT NOCOPY NUMBER ,
817
818 p_qa_mode IN VARCHAR2 ,
819 p_doc_type IN VARCHAR2 ,
820 p_doc_id IN NUMBER ,
821
822 x_qa_result_tbl OUT NOCOPY qa_result_tbl_type,
823 x_qa_return_status OUT NOCOPY VARCHAR2,
824
825 p_bus_doc_date_events_tbl IN BUSDOCDATES_TBL_TYPE,
826 p_run_expert_flag IN VARCHAR2 DEFAULT 'Y')
827 IS
828
829 l_api_version CONSTANT NUMBER := 1;
830 l_api_name CONSTANT VARCHAR2(30) := 'QA_Doc';
831 l_qa_result_tbl qa_result_tbl_type;
832 l_error_found Boolean := FALSE;
833 l_warning_found Boolean := FALSE;
834
835 BEGIN
836
837 IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
838 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'100: Entered QA_Doc - OVERLOADED ONE');
839 END IF;
840
841 -- Standard Start of API savepoint
842 SAVEPOINT g_QA_Doc;
843
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
849 -- Initialize message list if p_init_msg_list is set to TRUE.
850 IF FND_API.to_Boolean( p_init_msg_list ) THEN
851 FND_MSG_PUB.initialize;
852 END IF;
853
854 -- Initialize API return status to success
855 x_return_status := G_RET_STS_SUCCESS;
856
857
858 --------------------------------------------
859 -- Call internal QA_Doc and put result into PLSQL table
860 --------------------------------------------
861 IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
862 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'800: Call Private QA_Doc and put result into PLSQL table');
863 END IF;
864
865 QA_Doc(
866 p_api_version => l_api_version,
867 x_return_status => x_return_status,
868 x_msg_count => x_msg_count,
869 x_msg_data => x_msg_data,
870
871 p_qa_mode => p_qa_mode,
872 p_doc_type => p_doc_type,
873 p_doc_id => p_doc_id,
874
875 x_qa_result_tbl => x_qa_result_tbl,
876 x_qa_return_status => x_qa_return_status,
877
878 p_qa_terms_only => 'Y',
879 p_run_expert_flag => p_run_expert_flag
880 );
881 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
882 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
883 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
884 RAISE FND_API.G_EXC_ERROR ;
885 END IF;
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,'201: Call Private QA_Doc for deilverables and add result into PLSQL table and save it in DB');
889 END IF;
890
891 OKC_DELIVERABLE_PROCESS_PVT.validate_deliverable_for_qa (
892 p_api_version => 1,
893 p_init_msg_list => FND_API.G_FALSE,
894 p_doc_type => p_doc_type,
895 p_doc_id => p_doc_id,
896 p_mode => p_qa_mode,
897 p_bus_doc_date_events_tbl => p_bus_doc_date_events_tbl,
898 p_qa_result_tbl => x_qa_result_tbl,
899 x_msg_data => x_msg_data,
900 x_msg_count => x_msg_count,
901 x_return_status => x_return_status,
902 x_qa_return_status => x_qa_return_status);
903 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
904 RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
905 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
906 RAISE FND_API.G_EXC_ERROR ;
907 END IF;
908
909 IF x_qa_result_tbl.COUNT > 0 THEN
910 FOR i in x_qa_result_tbl.FIRST..x_qa_result_tbl.LAST LOOP
911
912 x_qa_result_tbl(i).error_record_type_name := okc_util.decode_lookup('OKC_ERROR_RECORD_TYPE',x_qa_result_tbl(i).error_record_type);
913 x_qa_result_tbl(i).error_severity_name := okc_util.decode_lookup('OKC_QA_SEVERITY',x_qa_result_tbl(i).error_severity);
914
915 IF x_qa_result_tbl(i).Error_severity = G_QA_STS_ERROR THEN
916 l_error_found := true;
917 END IF;
918 IF x_qa_result_tbl(i).Error_severity = G_QA_STS_WARNING THEN
919 l_warning_found := true;
920 END IF;
921
922 END LOOP;
923
924 --fix for bug 3290738
925 IF l_error_found THEN
926 x_qa_return_status := G_QA_STS_ERROR;
927 ELSIF l_warning_found THEN
928 x_qa_return_status := G_QA_STS_WARNING;
929 END IF;
930 END IF;
931
932 -- Standard call to get message count and if count is 1, get message info.
933 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
934 IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
935 FND_LOG.STRING( FND_LOG.LEVEL_PROCEDURE, G_MODULE||l_api_name,'300: Leaving QA_Doc - OVERLOADED ONE ');
936 END IF;
937
938 EXCEPTION
939 WHEN FND_API.G_EXC_ERROR THEN
940 ROLLBACK TO g_QA_Doc;
941 IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
942 FND_LOG.STRING( FND_LOG.LEVEL_EXCEPTION, G_MODULE||l_api_name,'400: Leaving QA_Doc : OKC_API.G_EXCEPTION_ERROR Exception');
943 END IF;
944 x_return_status := G_RET_STS_ERROR ;
945 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
946
947 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
948 ROLLBACK TO g_QA_Doc;
949 IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
950 FND_LOG.STRING( FND_LOG.LEVEL_EXCEPTION, G_MODULE||l_api_name,'500: Leaving QA_Doc : OKC_API.G_EXCEPTION_UNEXPECTED_ERROR Exception');
951 END IF;
952 x_return_status := G_RET_STS_UNEXP_ERROR ;
953 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
954
955 WHEN OTHERS THEN
956 ROLLBACK TO g_QA_Doc;
957 IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
958 FND_LOG.STRING( FND_LOG.LEVEL_EXCEPTION, G_MODULE||l_api_name,'600: Leaving QA_Doc because of EXCEPTION: '||sqlerrm);
959 END IF;
960
961 x_return_status := G_RET_STS_UNEXP_ERROR ;
962 IF FND_MSG_PUB.Check_Msg_Level( FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR ) THEN
963 FND_MSG_PUB.Add_Exc_Msg( G_PKG_NAME, l_api_name );
964 END IF;
965 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
966 END QA_Doc;
967
968
969 END OKC_TERMS_QA_GRP;