[Home] [Help]
PACKAGE BODY: APPS.OKC_XPRT_IMPORT_PVT
Source
1 PACKAGE BODY OKC_XPRT_IMPORT_PVT AS
2 /* $Header: OKCVXCONCPGMB.pls 120.2 2005/12/12 14:58:00 arsundar noship $ */
3
4 ------------------------------------------------------------------------------
5 -- GLOBAL VARIABLES
6 ------------------------------------------------------------------------------
7 G_RUN_ID NUMBER;
8 G_REQUEST_ID NUMBER;
9
10 ------------------------------------------------------------------------------
11 -- GLOBAL CONSTANTS
12 ------------------------------------------------------------------------------
13 G_PKG_NAME CONSTANT VARCHAR2(200) := 'OKC_XPRT_IMPORT_PVT';
14 G_APP_NAME CONSTANT VARCHAR2(3) := OKC_API.G_APP_NAME;
15
16 G_LEVEL_PROCEDURE CONSTANT NUMBER := FND_LOG.LEVEL_PROCEDURE;
17 G_MODULE CONSTANT VARCHAR2(250) := 'okc.plsql.'||g_pkg_name||'.';
18 G_APPLICATION_ID CONSTANT NUMBER :=510; -- OKC Application
19
20 G_FALSE CONSTANT VARCHAR2(1) := FND_API.G_FALSE;
21 G_TRUE CONSTANT VARCHAR2(1) := FND_API.G_TRUE;
22
23 G_RET_STS_SUCCESS CONSTANT VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
24 G_RET_STS_ERROR CONSTANT VARCHAR2(1) := FND_API.G_RET_STS_ERROR;
25 G_RET_STS_UNEXP_ERROR CONSTANT VARCHAR2(1) := FND_API.G_RET_STS_UNEXP_ERROR;
26
27 G_UNEXPECTED_ERROR CONSTANT VARCHAR2(200) := 'OKC_UNEXPECTED_ERROR';
28 G_SQLERRM_TOKEN CONSTANT VARCHAR2(200) := 'ERROR_MESSAGE';
29 G_SQLCODE_TOKEN CONSTANT VARCHAR2(200) := 'ERROR_CODE';
30 G_UNABLE_TO_RESERVE_REC CONSTANT VARCHAR2(200) := OKC_API.G_UNABLE_TO_RESERVE_REC;
31
32 ---------------------------------------------------
33 -- Procedure: This function will be return True if
34 -- the rule is active in cz
35 ---------------------------------------------------
36 FUNCTION check_rule_active
37 (
38 p_rule_id IN NUMBER
39 )
40 RETURN VARCHAR2 IS
41
42 CURSOR csr_check_rule_exists (p_rule_id NUMBER) IS
43 SELECT 'X'
44 FROM cz_rules
45 WHERE rule_type = 200 -- Statement rule
46 --AND devl_project_id = p_devl_project_id
47 AND rule_id = persistent_rule_id
48 AND SUBSTR(orig_sys_ref,INSTR(orig_sys_ref,':',-1,1)+1) = p_rule_id
49 AND deleted_flag = 0;
50
51 l_exists VARCHAR2(1);
52
53 BEGIN
54 OPEN csr_check_rule_exists(p_rule_id);
55 FETCH csr_check_rule_exists INTO l_exists;
56 IF csr_check_rule_exists%FOUND THEN
57 CLOSE csr_check_rule_exists;
58 RETURN FND_API.G_TRUE;
59 ELSE
60 CLOSE csr_check_rule_exists;
61 RETURN FND_API.G_FALSE;
62 END IF;
63
64
65 EXCEPTION
66 WHEN OTHERS THEN
67 IF csr_check_rule_exists%ISOPEN THEN
68 CLOSE csr_check_rule_exists;
69 END IF;
70
71 END check_rule_active;
72
73 ---------------------------------------------------
74
75 ---------------------------------------------------
76 -- Procedure: This procedure will be registered as
77 -- Contract Expert Rules Publication concurrent program
78 ---------------------------------------------------
79 PROCEDURE publish_rules
80 (
81 errbuf OUT NOCOPY VARCHAR2,
82 retcode OUT NOCOPY VARCHAR2,
83 p_org_id IN NUMBER
84 ) IS
85
86 x_return_status VARCHAR2(1);
87 x_msg_data VARCHAR2(4000);
88 x_msg_count NUMBER;
89 l_api_name CONSTANT VARCHAR2(30) := 'publish_rules';
90 req_data VARCHAR2(240);
91 x_cz_cp_status BOOLEAN;
92 x_phase VARCHAR2(1000);
93 x_status VARCHAR2(1000);
94 x_dev_phase VARCHAR2(1000);
95 x_dev_status VARCHAR2(1000);
96 x_message VARCHAR2(1000);
97 l_rules_cnt NUMBER;
98 l_sequence_id NUMBER;
99 l_qa_status VARCHAR2(1);
100 l_conc_pgm_desc FND_NEW_MESSAGES.message_text%TYPE;
101
102
103
104 CURSOR csr_get_child_req_dtls IS
105 SELECT SUBSTR(req_data,
106 1,
107 INSTR(req_data,':',1) -1
108 ) child_req_id,
109 SUBSTR(req_data,
110 INSTR(req_data,':',1) + 1
111 ) run_id
112 FROM dual;
113
114 CURSOR csr_cz_imp_rules_cnt IS
115 SELECT COUNT(*)
116 FROM cz_imp_rules
117 WHERE run_id = G_RUN_ID;
118
119 -- Added for 4103931
120 CURSOR csr_pub_rule_list IS
121 SELECT rule_id
122 FROM okc_xprt_rule_hdrs_all
123 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID;
124
125 l_rule_exists_flag VARCHAR2(1) := NULL;
126
127 BEGIN
128
129 -- Check if the concurrent program is being restarted due to completion of child request
130 req_data := fnd_conc_global.request_data;
131
132 IF req_data IS NULL THEN
133 -- Calling the parent concurrent prorgam for the first time
134 -- Execute Steps 1 to 7
135
136 -- start debug log
137 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
138 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
139 G_MODULE||l_api_name,
140 '100: Entered '||G_PKG_NAME ||'.'||l_api_name);
141 END IF;
142
143 -- log file
144 fnd_file.put_line(FND_FILE.LOG,' ');
145 fnd_file.put_line(FND_FILE.LOG,'Current Concurrent Request Id : '||FND_GLOBAL.CONC_REQUEST_ID);
146 fnd_file.put_line(FND_FILE.LOG,'Parameters ');
147 fnd_file.put_line(FND_FILE.LOG,'Org Id : '||p_org_id);
148
149 /*
150 Step 1: Update current request Id for all rules to be published
151 */
152
153 fnd_file.put_line(FND_FILE.LOG,' ');
154 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
155 fnd_file.put_line(FND_FILE.LOG,'Step 1: Updating request_id for rules to be published ');
156 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
157 fnd_file.put_line(FND_FILE.LOG,' ');
158
159 -- Update request_id for all Rules in Pending Publication for current org id
160 UPDATE okc_xprt_rule_hdrs_all
161 SET request_id = FND_GLOBAL.CONC_REQUEST_ID,
162 program_id = FND_GLOBAL.CONC_PROGRAM_ID,
163 program_application_id = FND_GLOBAL.PROG_APPL_ID,
164 program_update_date = SYSDATE,
165 last_update_login = FND_GLOBAL.LOGIN_ID,
166 last_update_date = SYSDATE,
167 last_updated_by = FND_GLOBAL.USER_ID
168 WHERE org_id = p_org_id
169 AND intent = DECODE(NVL(fnd_profile.value('OKC_LIBRARY_ACCESS_INTENT'),'A'),'A',
170 intent,
171 fnd_profile.value('OKC_LIBRARY_ACCESS_INTENT')
172 )
173 AND status_code = 'PENDINGPUB';
174
175 -- Check If any rules are to be processed else exit
176 IF SQL%NOTFOUND THEN
177 -- exit as no rules to be processed
178 fnd_file.put_line(FND_FILE.LOG,' ');
179 fnd_file.put_line(FND_FILE.LOG,'No Rules to be processed ');
180 fnd_file.put_line(FND_FILE.LOG,' ');
181
182 retcode := 0;
183 errbuf := '';
184 RETURN;
185
186 END IF; -- no rows to be processed
187
188 -- commit the data
189 COMMIT WORK;
190
191 /*
192 Step 1.1: Rules QA checks
193 */
194
195 fnd_file.put_line(FND_FILE.LOG,' ');
196 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
197 fnd_file.put_line(FND_FILE.LOG,'Step 1.1: Rules QA Checks ');
198 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
199 fnd_file.put_line(FND_FILE.LOG,' ');
200
201 OKC_XPRT_UTIL_PVT.check_rules_validity
202 (
203 p_qa_mode => 'PUBLISH',
204 p_template_id => NULL,
205 x_sequence_id => l_sequence_id,
206 x_qa_status => l_qa_status,
207 x_return_status => x_return_status,
208 x_msg_data => x_msg_data,
209 x_msg_count => x_msg_count
210 ) ;
211
212 fnd_file.put_line(FND_FILE.LOG,' ');
213 fnd_file.put_line(FND_FILE.LOG,'After OKC_XPRT_UTIL_PVT.check_rules_validity');
214 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||x_return_status);
215 fnd_file.put_line(FND_FILE.LOG,'x_qa_status: '||l_qa_status);
216 fnd_file.put_line(FND_FILE.LOG,'x_sequence_id: '||l_sequence_id);
217 fnd_file.put_line(FND_FILE.LOG,' ');
218
219 --- If any errors happen abort API
220 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
221 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
222 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
223 RAISE FND_API.G_EXC_ERROR;
224 END IF;
225
226 -- Check If any rules had QA errors and abort
227 IF l_qa_status <> 'S' THEN
228 -- exit as no rules had QA errors
229 fnd_file.put_line(FND_FILE.LOG,' ');
230 fnd_file.put_line(FND_FILE.LOG,'Rules QA Check failed');
231 fnd_file.put_line(FND_FILE.LOG,' ');
232
233
234 -- Added for Bug 4103931
235 FOR csr_pub_rule_rec IN csr_pub_rule_list
236 LOOP
237 l_rule_exists_flag := check_rule_active(csr_pub_rule_rec.rule_id);
238 UPDATE okc_xprt_rule_hdrs_all
239 SET status_code = DECODE(l_rule_exists_flag,'T','REVISION','F','DRAFT')
240 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
241 AND rule_id = csr_pub_rule_rec.rule_id;
242 l_rule_exists_flag := 'F';
243 END LOOP;
244
245
246 -- Added for Bug 4690232
247 COMMIT;
248
249 retcode := 2;
250 errbuf := '';
251 RETURN;
252
253 END IF; -- QA Errors
254
255
256
257 /*
258 Step 2: Import Variable Model
259 */
260
261 fnd_file.put_line(FND_FILE.LOG,' ');
262 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
263 fnd_file.put_line(FND_FILE.LOG,'Step 2: Importing Variable Model');
264 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
265 fnd_file.put_line(FND_FILE.LOG,' ');
266
267 OKC_XPRT_IMPORT_VARIABLES_PVT.import_variables
268 (
269 p_api_version => 1,
270 p_init_msg_list => 'T',
271 p_commit => 'T',
272 p_org_id => p_org_id,
273 x_return_status => x_return_status,
274 x_msg_data => x_msg_data,
275 x_msg_count => x_msg_count
276 ) ;
277
278 fnd_file.put_line(FND_FILE.LOG,' ');
279 fnd_file.put_line(FND_FILE.LOG,'After Importing Variable Model');
280 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||x_return_status);
281 fnd_file.put_line(FND_FILE.LOG,' ');
282
283 --- If any errors happen abort API
284 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
285 -- Added for Bug 4757731
286 FOR csr_pub_rule_rec IN csr_pub_rule_list
287 LOOP
288 l_rule_exists_flag := check_rule_active(csr_pub_rule_rec.rule_id);
289 UPDATE okc_xprt_rule_hdrs_all
290 SET status_code = DECODE(l_rule_exists_flag,'T','REVISION','F','DRAFT')
291 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
292 AND rule_id = csr_pub_rule_rec.rule_id;
293 l_rule_exists_flag := 'F';
294 END LOOP;
295 COMMIT;
296 -- Added for Bug 4757731
297 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
298
299 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
300 -- Added for Bug 4757731
301 FOR csr_pub_rule_rec IN csr_pub_rule_list
302 LOOP
303 l_rule_exists_flag := check_rule_active(csr_pub_rule_rec.rule_id);
304 UPDATE okc_xprt_rule_hdrs_all
305 SET status_code = DECODE(l_rule_exists_flag,'T','REVISION','F','DRAFT')
306 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
307 AND rule_id = csr_pub_rule_rec.rule_id;
308 l_rule_exists_flag := 'F';
309 END LOOP;
310 COMMIT;
311 -- Added for Bug 4757731
312 RAISE FND_API.G_EXC_ERROR;
313 END IF;
314
315
316 /*
317 Step 3: Import Clause Model
318 */
319
320 fnd_file.put_line(FND_FILE.LOG,' ');
321 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
322 fnd_file.put_line(FND_FILE.LOG,'Step 3: Importing Clause Model');
323 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
324 fnd_file.put_line(FND_FILE.LOG,' ');
325
326 OKC_XPRT_IMPORT_CLAUSES_PVT.import_clauses
327 (
328 p_api_version => 1,
329 p_init_msg_list => 'T',
330 p_commit => 'T',
331 p_org_id => p_org_id,
332 x_return_status => x_return_status,
333 x_msg_data => x_msg_data,
334 x_msg_count => x_msg_count
335 ) ;
336
337 fnd_file.put_line(FND_FILE.LOG,' ');
338 fnd_file.put_line(FND_FILE.LOG,'After Importing Clause Model');
339 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||x_return_status);
340 fnd_file.put_line(FND_FILE.LOG,' ');
341
342 --- If any errors happen abort API
343 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
344 -- Added for Bug 4757731
345 FOR csr_pub_rule_rec IN csr_pub_rule_list
346 LOOP
347 l_rule_exists_flag := check_rule_active(csr_pub_rule_rec.rule_id);
348 UPDATE okc_xprt_rule_hdrs_all
349 SET status_code = DECODE(l_rule_exists_flag,'T','REVISION','F','DRAFT')
350 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
351 AND rule_id = csr_pub_rule_rec.rule_id;
352 l_rule_exists_flag := 'F';
353 END LOOP;
354 COMMIT;
355 -- Added for Bug 4757731
356 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
357
358 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
359 -- Added for Bug 4757731
360 FOR csr_pub_rule_rec IN csr_pub_rule_list
361 LOOP
362 l_rule_exists_flag := check_rule_active(csr_pub_rule_rec.rule_id);
363 UPDATE okc_xprt_rule_hdrs_all
364 SET status_code = DECODE(l_rule_exists_flag,'T','REVISION','F','DRAFT')
365 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
366 AND rule_id = csr_pub_rule_rec.rule_id;
367 l_rule_exists_flag := 'F';
368 END LOOP;
369 COMMIT;
370 -- Added for Bug 4757731
371 RAISE FND_API.G_EXC_ERROR;
372 END IF;
373
374 /*
375 Step 4: Import Template Model(s)
376 */
377
378 fnd_file.put_line(FND_FILE.LOG,' ');
379 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
380 fnd_file.put_line(FND_FILE.LOG,'Step 4: Importing Template Models');
381 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
382 fnd_file.put_line(FND_FILE.LOG,' ');
383
384 OKC_XPRT_IMPORT_TEMPLATE_PVT.rebuild_tmpl_pub_disable
385 (
386 x_return_status => x_return_status,
387 x_msg_data => x_msg_data,
388 x_msg_count => x_msg_count
389 ) ;
390
391 fnd_file.put_line(FND_FILE.LOG,' ');
392 fnd_file.put_line(FND_FILE.LOG,'After Importing Template Models');
393 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||x_return_status);
394 fnd_file.put_line(FND_FILE.LOG,' ');
395
396 --- If any errors happen abort API
397 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
398 -- Added for Bug 4757731
399 FOR csr_pub_rule_rec IN csr_pub_rule_list
400 LOOP
401 l_rule_exists_flag := check_rule_active(csr_pub_rule_rec.rule_id);
402 UPDATE okc_xprt_rule_hdrs_all
403 SET status_code = DECODE(l_rule_exists_flag,'T','REVISION','F','DRAFT')
404 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
405 AND rule_id = csr_pub_rule_rec.rule_id;
406 l_rule_exists_flag := 'F';
407 END LOOP;
408 COMMIT;
409 -- Added for Bug 4757731
410 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
411
412 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
413 -- Added for Bug 4757731
414 FOR csr_pub_rule_rec IN csr_pub_rule_list
415 LOOP
416 l_rule_exists_flag := check_rule_active(csr_pub_rule_rec.rule_id);
417 UPDATE okc_xprt_rule_hdrs_all
418 SET status_code = DECODE(l_rule_exists_flag,'T','REVISION','F','DRAFT')
419 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
420 AND rule_id = csr_pub_rule_rec.rule_id;
421 l_rule_exists_flag := 'F';
422 END LOOP;
423 COMMIT;
424 -- Added for Bug 4757731
425 RAISE FND_API.G_EXC_ERROR;
426 END IF;
427
428
429 /*
430 Step 5: Populate cz_imp_rules
431 */
432
433 fnd_file.put_line(FND_FILE.LOG,' ');
434 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
435 fnd_file.put_line(FND_FILE.LOG,'Step 5: Populating cz_imp_rules ');
436 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
437 fnd_file.put_line(FND_FILE.LOG,' ');
438
439 OKC_XPRT_IMPORT_RULES_PVT.import_rules_publish
440 (
441 x_run_id => G_RUN_ID,
442 x_return_status => x_return_status,
443 x_msg_data => x_msg_data,
444 x_msg_count => x_msg_count
445 );
446
447 fnd_file.put_line(FND_FILE.LOG,' ');
448 fnd_file.put_line(FND_FILE.LOG,'After Populating cz_imp_rules');
449 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||x_return_status);
450 fnd_file.put_line(FND_FILE.LOG,'Rule Import Run Id : '||G_RUN_ID);
451 fnd_file.put_line(FND_FILE.LOG,' ');
452
453 --- If any errors happen abort API
454 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
455 -- Added for Bug 4757731
456 FOR csr_pub_rule_rec IN csr_pub_rule_list
457 LOOP
458 l_rule_exists_flag := check_rule_active(csr_pub_rule_rec.rule_id);
459 UPDATE okc_xprt_rule_hdrs_all
460 SET status_code = DECODE(l_rule_exists_flag,'T','REVISION','F','DRAFT')
461 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
462 AND rule_id = csr_pub_rule_rec.rule_id;
463 l_rule_exists_flag := 'F';
464 END LOOP;
465 COMMIT;
466 -- Added for Bug 4757731
467 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
468
469 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
470 -- Added for Bug 4757731
471 FOR csr_pub_rule_rec IN csr_pub_rule_list
472 LOOP
473 l_rule_exists_flag := check_rule_active(csr_pub_rule_rec.rule_id);
474 UPDATE okc_xprt_rule_hdrs_all
475 SET status_code = DECODE(l_rule_exists_flag,'T','REVISION','F','DRAFT')
476 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
477 AND rule_id = csr_pub_rule_rec.rule_id;
478 l_rule_exists_flag := 'F';
479 END LOOP;
480 COMMIT;
481 -- Added for Bug 4757731
482 RAISE FND_API.G_EXC_ERROR;
483 END IF;
484
485 /*
486 Step 5.1: Count Rules to be imported
487 Check if there are any records in cz_imp_rules
488 If there are no records in cz_imp_rules then there were no expert enabled templates
489 attached to the rule. Just change the status of the rule to ACTIVE
490 */
491
492 fnd_file.put_line(FND_FILE.LOG,' ');
493 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
494 fnd_file.put_line(FND_FILE.LOG,'Step 5.1:Count Rules to be imported');
495 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
496 fnd_file.put_line(FND_FILE.LOG,' ');
497
498 OPEN csr_cz_imp_rules_cnt;
499 FETCH csr_cz_imp_rules_cnt INTO l_rules_cnt;
500 CLOSE csr_cz_imp_rules_cnt;
501
502 fnd_file.put_line(FND_FILE.LOG,' ');
503 fnd_file.put_line(FND_FILE.LOG,'Total Rules to be Imported to CZ: '||l_rules_cnt);
504 fnd_file.put_line(FND_FILE.LOG,' ');
505
506
507 IF l_rules_cnt = 0 THEN
508
509 OKC_XPRT_UTIL_PVT.publish_rule_with_no_tmpl
510 (
511 p_calling_mode => 'PUBLISH',
512 x_return_status => x_return_status,
513 x_msg_data => x_msg_data,
514 x_msg_count => x_msg_count
515 );
516
517 fnd_file.put_line(FND_FILE.LOG,' ');
518 fnd_file.put_line(FND_FILE.LOG,'After OKC_XPRT_UTIL_PVT.publish_rule_with_no_tmpl');
519 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||x_return_status);
520 fnd_file.put_line(FND_FILE.LOG,' ');
521
522 --- If any errors happen abort API
523 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
524 -- Added for Bug 4757731
525 FOR csr_pub_rule_rec IN csr_pub_rule_list
526 LOOP
527 l_rule_exists_flag := check_rule_active(csr_pub_rule_rec.rule_id);
528 UPDATE okc_xprt_rule_hdrs_all
529 SET status_code = DECODE(l_rule_exists_flag,'T','REVISION','F','DRAFT')
530 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
531 AND rule_id = csr_pub_rule_rec.rule_id;
532 l_rule_exists_flag := 'F';
533 END LOOP;
534 COMMIT;
535 -- Added for Bug 4757731
536 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
537
538 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
539 -- Added for Bug 4757731
540 FOR csr_pub_rule_rec IN csr_pub_rule_list
541 LOOP
542 l_rule_exists_flag := check_rule_active(csr_pub_rule_rec.rule_id);
543 UPDATE okc_xprt_rule_hdrs_all
544 SET status_code = DECODE(l_rule_exists_flag,'T','REVISION','F','DRAFT')
545 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
546 AND rule_id = csr_pub_rule_rec.rule_id;
547 l_rule_exists_flag := 'F';
548 END LOOP;
549 COMMIT;
550 -- Added for Bug 4757731
551 RAISE FND_API.G_EXC_ERROR;
552 END IF;
553
554 fnd_file.put_line(FND_FILE.LOG,' ');
555 fnd_file.put_line(FND_FILE.LOG,'Rules has No expert template attached');
556 fnd_file.put_line(FND_FILE.LOG,' ');
557
558 retcode := 0;
559 errbuf := '';
560 RETURN;
561
562 END IF; -- l_rules_cnt = 0
563
564
565 /*
566 Step 6: Insert Extension Rules
567 */
568
569 fnd_file.put_line(FND_FILE.LOG,' ');
570 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
571 fnd_file.put_line(FND_FILE.LOG,'Step 6: Calling API to insert extension rule records');
572 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
573 fnd_file.put_line(FND_FILE.LOG,' ');
574
575 OKC_XPRT_IMPORT_RULES_PVT.attach_extension_rule
576 (
577 p_api_version => 1,
578 p_init_msg_list => 'T',
579 p_run_id => G_RUN_ID,
580 x_return_status => x_return_status,
581 x_msg_data => x_msg_data,
582 x_msg_count => x_msg_count
583 );
584
585 fnd_file.put_line(FND_FILE.LOG,' ');
586 fnd_file.put_line(FND_FILE.LOG,'Step 6: After Calling API to insert extension rule records');
587 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||x_return_status);
588 fnd_file.put_line(FND_FILE.LOG,' ');
589
590 /*
591 Step 7: Call the CZ Rule Import Concurrent Program
592 CZ Pgm: Import Configuration Rules (CZRULEIMPORTCP)
593 */
594
595 fnd_file.put_line(FND_FILE.LOG,' ');
596 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
597 fnd_file.put_line(FND_FILE.LOG,'Step 7: Calling the CZ Rule Import Concurrent Program');
598 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
599 fnd_file.put_line(FND_FILE.LOG,' ');
600 fnd_file.put_line(FND_FILE.LOG,'Parameter Run Id : '||G_RUN_ID);
601
602
603 FND_MESSAGE.set_name('OKC','OKC_XPRT_RULE_CCPRG_ACT_MSG');
604 l_conc_pgm_desc := FND_MESSAGE.get;
605
606 G_REQUEST_ID := fnd_request.submit_request
607 (application => 'CZ',
608 program => 'CZRULEIMPORTCP',
609 description => l_conc_pgm_desc,
610 start_time => NULL,
611 sub_request => TRUE,
612 argument1 => G_RUN_ID
613 );
614
615 fnd_file.put_line(FND_FILE.LOG,'Request Id of CZ Rule Concurrent Pgm : '||G_REQUEST_ID);
616
617 -- commit the data
618 COMMIT WORK;
619
620 IF NVL(G_REQUEST_ID,0) = 0 THEN
621 -- Could Not submit Conc Pgm
622 fnd_message.set_name('OKC','OKC_XPRT_SUB_CZ_RUL_PGM');
623 fnd_file.put_line(FND_FILE.LOG,'Could NOT submit CZ Concurrent Program');
624
625 -- Added for Bug 4757731
626 FOR csr_pub_rule_rec IN csr_pub_rule_list
627 LOOP
628 l_rule_exists_flag := check_rule_active(csr_pub_rule_rec.rule_id);
629 UPDATE okc_xprt_rule_hdrs_all
630 SET status_code = DECODE(l_rule_exists_flag,'T','REVISION','F','DRAFT')
631 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
632 AND rule_id = csr_pub_rule_rec.rule_id;
633 l_rule_exists_flag := 'F';
634 END LOOP;
635 COMMIT;
636
637 RAISE FND_API.G_EXC_ERROR;
638 ELSE
639 -- child submission successful, pause the parent program
640 fnd_conc_global.set_req_globals
641 ( conc_status => 'PAUSED',
642 request_data => to_char(G_REQUEST_ID)||':'||to_char(G_RUN_ID)
643 );
644 END IF; -- child submitted successfully
645
646 ELSE
647 -- req_data IS NOT NULL
648 -- Restarting the Parent Concurrent Program after completing the child
649 -- Execute the remaing steps
650 /*
651 Note : when the Parent pgm resumes, the session id for the pgm is different
652 then the original session id. Any variables set before cannot be read
653 Any variables required in this block are put in request_data and read from
654 the same
655
656 */
657
658 OPEN csr_get_child_req_dtls;
659 FETCH csr_get_child_req_dtls INTO G_REQUEST_ID, G_RUN_ID;
660 CLOSE csr_get_child_req_dtls;
661
662 x_cz_cp_status := fnd_concurrent.get_request_status
663 (G_REQUEST_ID,
664 NULL,
665 NULL,
666 x_phase,
667 x_status,
668 x_dev_phase,
669 x_dev_status,
670 x_message
671 );
672
673 fnd_file.put_line(FND_FILE.LOG,' ');
674 fnd_file.put_line(FND_FILE.LOG,'After Completing CZ Rule Conc Pgm with request id :'||G_REQUEST_ID);
675 fnd_file.put_line(FND_FILE.LOG,'Run Id : '||G_RUN_ID);
676 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
677 fnd_file.put_line(FND_FILE.LOG,'Results ');
678 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
679 fnd_file.put_line(FND_FILE.LOG,'Phase : '||x_phase);
680 fnd_file.put_line(FND_FILE.LOG,'Status : '||x_status);
681 fnd_file.put_line(FND_FILE.LOG,'dev_phase : '||x_dev_phase);
682 fnd_file.put_line(FND_FILE.LOG,'dev_status : '||x_dev_status);
683 fnd_file.put_line(FND_FILE.LOG,'Message : '||substr(x_message,1,100));
684 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
685 fnd_file.put_line(FND_FILE.LOG,' ');
686
687 IF x_dev_phase <> 'COMPLETED' AND
688 x_dev_status NOT IN ('NORMAL','WARNING') THEN
689 -- error in CZ Concurrent Program
690 fnd_file.put_line(FND_FILE.LOG, 'Error in CZ Rule Import Concurrent Program ');
691 fnd_file.put_line(FND_FILE.LOG, 'Request Id :'||G_REQUEST_ID);
692 fnd_file.put_line(FND_FILE.LOG, 'Run Id :'||G_RUN_ID);
693
694 -- Added for Bug 4757731
695 FOR csr_pub_rule_rec IN csr_pub_rule_list
696 LOOP
697 l_rule_exists_flag := check_rule_active(csr_pub_rule_rec.rule_id);
698 UPDATE okc_xprt_rule_hdrs_all
699 SET status_code = DECODE(l_rule_exists_flag,'T','REVISION','F','DRAFT')
700 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
701 AND rule_id = csr_pub_rule_rec.rule_id;
702 l_rule_exists_flag := 'F';
703 END LOOP;
704 COMMIT;
705
706 RAISE FND_API.G_EXC_ERROR;
707 END IF;
708
709
710 /*
711 Step 8: Check status of Rules Imported
712 */
713
714 fnd_file.put_line(FND_FILE.LOG,' ');
715 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
716 fnd_file.put_line(FND_FILE.LOG,'Step 8: Checking Status of Rules imported');
717 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
718 fnd_file.put_line(FND_FILE.LOG,' ');
719
720 OKC_XPRT_UTIL_PVT.check_import_status
721 (
722 p_run_id => G_RUN_ID,
723 p_import_status => 'S',
724 p_model_type => 'R', -- Rules Import
725 x_return_status => x_return_status,
726 x_msg_data => x_msg_data,
727 x_msg_count => x_msg_count
728 );
729
730 fnd_file.put_line(FND_FILE.LOG,' ');
731 fnd_file.put_line(FND_FILE.LOG,'After checking import status');
732 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||x_return_status);
733 fnd_file.put_line(FND_FILE.LOG,' ');
734
735 --- If any errors happen abort API
736 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
737 -- Added for Bug 4757731
738 FOR csr_pub_rule_rec IN csr_pub_rule_list
739 LOOP
740 l_rule_exists_flag := check_rule_active(csr_pub_rule_rec.rule_id);
741 UPDATE okc_xprt_rule_hdrs_all
742 SET status_code = DECODE(l_rule_exists_flag,'T','REVISION','F','DRAFT')
743 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
744 AND rule_id = csr_pub_rule_rec.rule_id;
745 l_rule_exists_flag := 'F';
746 END LOOP;
747 COMMIT;
748 -- Added for Bug 4757731
749 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
750
751 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
752 -- Added for Bug 4757731
753 FOR csr_pub_rule_rec IN csr_pub_rule_list
754 LOOP
755 l_rule_exists_flag := check_rule_active(csr_pub_rule_rec.rule_id);
756 UPDATE okc_xprt_rule_hdrs_all
757 SET status_code = DECODE(l_rule_exists_flag,'T','REVISION','F','DRAFT')
758 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
759 AND rule_id = csr_pub_rule_rec.rule_id;
760 l_rule_exists_flag := 'F';
761 END LOOP;
762 COMMIT;
763 -- Added for Bug 4757731
764 RAISE FND_API.G_EXC_ERROR;
765 END IF;
766
767
768 /*
769 Step 9: Call the Test Publication API
770 */
771
772 fnd_file.put_line(FND_FILE.LOG,' ');
773 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
774 fnd_file.put_line(FND_FILE.LOG,'Step 9: Calling the Test Publication API');
775 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
776 fnd_file.put_line(FND_FILE.LOG,' ');
777
778 OKC_XPRT_UTIL_PVT.create_test_publication
779 (
780 x_return_status => x_return_status,
781 x_msg_data => x_msg_data,
782 x_msg_count => x_msg_count
783 );
784
785 fnd_file.put_line(FND_FILE.LOG,' ');
786 fnd_file.put_line(FND_FILE.LOG,'After Calling the Test Publication API ');
787 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||x_return_status);
788 fnd_file.put_line(FND_FILE.LOG,' ');
789
790 --- If any errors happen abort API
791 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
792 -- Added for Bug 4757731
793 FOR csr_pub_rule_rec IN csr_pub_rule_list
794 LOOP
795 l_rule_exists_flag := check_rule_active(csr_pub_rule_rec.rule_id);
796 UPDATE okc_xprt_rule_hdrs_all
797 SET status_code = DECODE(l_rule_exists_flag,'T','REVISION','F','DRAFT')
798 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
799 AND rule_id = csr_pub_rule_rec.rule_id;
800 l_rule_exists_flag := 'F';
801 END LOOP;
802 COMMIT;
803 -- Added for Bug 4757731
804 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
805
806 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
807 -- Added for Bug 4757731
808 FOR csr_pub_rule_rec IN csr_pub_rule_list
809 LOOP
810 l_rule_exists_flag := check_rule_active(csr_pub_rule_rec.rule_id);
811 UPDATE okc_xprt_rule_hdrs_all
812 SET status_code = DECODE(l_rule_exists_flag,'T','REVISION','F','DRAFT')
813 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
814 AND rule_id = csr_pub_rule_rec.rule_id;
815 l_rule_exists_flag := 'F';
816 END LOOP;
817 COMMIT;
818 -- Added for Bug 4757731
819 RAISE FND_API.G_EXC_ERROR;
820 END IF;
821 /*
822 Step 10: Call the Production Publication API
823 */
824
825 fnd_file.put_line(FND_FILE.LOG,' ');
826 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
827 fnd_file.put_line(FND_FILE.LOG,'Step 9: Calling the Production Publication API');
828 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
829 fnd_file.put_line(FND_FILE.LOG,' ');
830
831 OKC_XPRT_UTIL_PVT.create_production_publication
832 (
833 p_calling_mode => 'PUBLISH',
834 p_template_id => NULL, -- pick all templates for the current request
835 x_return_status => x_return_status,
836 x_msg_data => x_msg_data,
837 x_msg_count => x_msg_count
838 );
839
840 fnd_file.put_line(FND_FILE.LOG,' ');
841 fnd_file.put_line(FND_FILE.LOG,'After Calling the Production Publication API ');
842 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||x_return_status);
843 fnd_file.put_line(FND_FILE.LOG,' ');
844
845 --- If any errors happen abort API
846 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
847 -- Added for Bug 4757731
848 FOR csr_pub_rule_rec IN csr_pub_rule_list
849 LOOP
850 l_rule_exists_flag := check_rule_active(csr_pub_rule_rec.rule_id);
851 UPDATE okc_xprt_rule_hdrs_all
852 SET status_code = DECODE(l_rule_exists_flag,'T','REVISION','F','DRAFT')
853 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
854 AND rule_id = csr_pub_rule_rec.rule_id;
855 l_rule_exists_flag := 'F';
856 END LOOP;
857 COMMIT;
858 -- Added for Bug 4757731
859 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
860
861 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
862 -- Added for Bug 4757731
863 FOR csr_pub_rule_rec IN csr_pub_rule_list
864 LOOP
865 l_rule_exists_flag := check_rule_active(csr_pub_rule_rec.rule_id);
866 UPDATE okc_xprt_rule_hdrs_all
867 SET status_code = DECODE(l_rule_exists_flag,'T','REVISION','F','DRAFT')
868 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
869 AND rule_id = csr_pub_rule_rec.rule_id;
870 l_rule_exists_flag := 'F';
871 END LOOP;
872 COMMIT;
873 -- Added for Bug 4757731
874 RAISE FND_API.G_EXC_ERROR;
875 END IF;
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896 -- Standard call to get message count and if count is 1, get message info.
897 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
898
899 -- end debug log
900 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
901 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
902 G_MODULE||l_api_name,
903 '1000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
904 END IF;
905
906 END IF; -- req_data IS NULL
907
908 EXCEPTION
909 WHEN FND_API.G_EXC_ERROR THEN
910 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
911 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
912 G_MODULE||l_api_name,
913 '2000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
914 END IF;
915
916 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
917 retcode := 2;
918 errbuf := x_msg_data;
919 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||G_RET_STS_ERROR);
920 fnd_file.put_line(FND_FILE.LOG,'errbuf : '||errbuf);
921 fnd_file.put_line(FND_FILE.LOG,' ');
922
923 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
924 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
925 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
926 G_MODULE||l_api_name,
927 '3000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
928 END IF;
929
930 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
931 retcode := 2;
932 errbuf := x_msg_data;
933 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||G_RET_STS_UNEXP_ERROR);
934 fnd_file.put_line(FND_FILE.LOG,'errbuf : '||errbuf);
935 fnd_file.put_line(FND_FILE.LOG,' ');
936
937 WHEN OTHERS THEN
938 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
939 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
940 G_MODULE||l_api_name,
941 '4000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
942 END IF;
943
944 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
945 retcode := 2;
946 errbuf := SQLERRM;
947 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||G_RET_STS_UNEXP_ERROR);
948 fnd_file.put_line(FND_FILE.LOG,'errbuf : '||errbuf);
949 fnd_file.put_line(FND_FILE.LOG,' ');
950
951 END publish_rules;
952
953 ---------------------------------------------------
954 -- Procedure: This procedure will be registered as
955 -- Contract Expert Rules Disable concurrent program
956 ---------------------------------------------------
957 PROCEDURE disable_rules
958 (
959 errbuf OUT NOCOPY VARCHAR2,
960 retcode OUT NOCOPY VARCHAR2,
961 p_org_id IN NUMBER
962 ) IS
963
964 x_return_status VARCHAR2(1);
965 x_msg_data VARCHAR2(4000);
966 x_msg_count NUMBER;
967 l_api_name CONSTANT VARCHAR2(30) := 'disable_rules';
968 req_data VARCHAR2(240);
969 x_cz_cp_status BOOLEAN;
970 x_phase VARCHAR2(1000);
971 x_status VARCHAR2(1000);
972 x_dev_phase VARCHAR2(1000);
973 x_dev_status VARCHAR2(1000);
974 x_message VARCHAR2(1000);
975 l_rules_cnt NUMBER;
976 l_conc_pgm_desc FND_NEW_MESSAGES.message_text%TYPE;
977
978 CURSOR csr_get_child_req_dtls IS
979 SELECT SUBSTR(req_data,
980 1,
981 INSTR(req_data,':',1) -1
982 ) child_req_id,
983 SUBSTR(req_data,
984 INSTR(req_data,':',1) + 1
985 ) run_id
986 FROM dual;
987
988 CURSOR csr_cz_imp_rules_cnt IS
989 SELECT COUNT(*)
990 FROM cz_imp_rules
991 WHERE run_id = G_RUN_ID;
992
993 -- Added for 4757731
994 CURSOR csr_dis_rule_list IS
995 SELECT rule_id
996 FROM okc_xprt_rule_hdrs_all
997 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID;
998
999 l_rule_exists_flag VARCHAR2(1) := NULL;
1000
1001 BEGIN
1002
1003 -- Check if the concurrent program is being restarted due to completion of child request
1004 req_data := fnd_conc_global.request_data;
1005
1006 IF req_data IS NULL THEN
1007 -- Calling the parent concurrent prorgam for the first time
1008 -- Execute Steps 1 to 4
1009
1010 -- start debug log
1011 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1012 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
1013 G_MODULE||l_api_name,
1014 '100: Entered '||G_PKG_NAME ||'.'||l_api_name);
1015 END IF;
1016
1017 -- log file
1018 fnd_file.put_line(FND_FILE.LOG,' ');
1019 fnd_file.put_line(FND_FILE.LOG,'Current Concurrent Request Id : '||FND_GLOBAL.CONC_REQUEST_ID);
1020 fnd_file.put_line(FND_FILE.LOG,'Parameters ');
1021 fnd_file.put_line(FND_FILE.LOG,'Org Id : '||p_org_id);
1022
1023 /*
1024 Step 1: Update current request Id for all rules to be published
1025 */
1026
1027 fnd_file.put_line(FND_FILE.LOG,' ');
1028 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1029 fnd_file.put_line(FND_FILE.LOG,'Step 1: Updating request_id for rules to be published ');
1030 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1031 fnd_file.put_line(FND_FILE.LOG,' ');
1032
1033 -- Update request_id for all Rules in Pending Publication for current org id
1034 UPDATE okc_xprt_rule_hdrs_all
1035 SET request_id = FND_GLOBAL.CONC_REQUEST_ID,
1036 program_id = FND_GLOBAL.CONC_PROGRAM_ID,
1037 program_application_id = FND_GLOBAL.PROG_APPL_ID,
1038 program_update_date = SYSDATE,
1039 last_update_login = FND_GLOBAL.LOGIN_ID,
1040 last_update_date = SYSDATE,
1041 last_updated_by = FND_GLOBAL.USER_ID
1042 WHERE org_id = p_org_id
1043 AND intent = DECODE(NVL(fnd_profile.value('OKC_LIBRARY_ACCESS_INTENT'),'A'),'A',
1044 intent,
1045 fnd_profile.value('OKC_LIBRARY_ACCESS_INTENT')
1046 )
1047 AND status_code = 'PENDINGDISABLE';
1048
1049 -- Check If any rules are to be processed else exit
1050 IF SQL%NOTFOUND THEN
1051 -- exit as no rules to be processed
1052 fnd_file.put_line(FND_FILE.LOG,' ');
1053 fnd_file.put_line(FND_FILE.LOG,'No Rules to be processed ');
1054 fnd_file.put_line(FND_FILE.LOG,' ');
1055
1056 retcode := 0;
1057 errbuf := '';
1058 RETURN;
1059
1060 END IF; -- no rows to be processed
1061
1062 -- commit the data
1063 COMMIT WORK;
1064
1065 /*
1066 Step 2: Import Template Model(s)
1067 */
1068
1069 fnd_file.put_line(FND_FILE.LOG,' ');
1070 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1071 fnd_file.put_line(FND_FILE.LOG,'Step 2: Importing Template Models');
1072 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1073 fnd_file.put_line(FND_FILE.LOG,' ');
1074
1075 OKC_XPRT_IMPORT_TEMPLATE_PVT.rebuild_tmpl_pub_disable
1076 (
1077 x_return_status => x_return_status,
1078 x_msg_data => x_msg_data,
1079 x_msg_count => x_msg_count
1080 ) ;
1081
1082 fnd_file.put_line(FND_FILE.LOG,' ');
1083 fnd_file.put_line(FND_FILE.LOG,'After Importing Template Models');
1084 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||x_return_status);
1085 fnd_file.put_line(FND_FILE.LOG,' ');
1086
1087 --- If any errors happen abort API
1088 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1089 -- Added for Bug 4757731
1090 FOR csr_dis_rule_rec IN csr_dis_rule_list
1091 LOOP
1092 l_rule_exists_flag := check_rule_active(csr_dis_rule_rec.rule_id);
1093 UPDATE okc_xprt_rule_hdrs_all
1094 SET status_code = DECODE(l_rule_exists_flag,'T','ACTIVE',status_code)
1095 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
1096 AND rule_id = csr_dis_rule_rec.rule_id;
1097 l_rule_exists_flag := 'F';
1098 END LOOP;
1099 COMMIT;
1100 -- Added for Bug 4757731
1101 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1102
1103 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1104 -- Added for Bug 4757731
1105 FOR csr_dis_rule_rec IN csr_dis_rule_list
1106 LOOP
1107 l_rule_exists_flag := check_rule_active(csr_dis_rule_rec.rule_id);
1108 UPDATE okc_xprt_rule_hdrs_all
1109 SET status_code = DECODE(l_rule_exists_flag,'T','ACTIVE',status_code)
1110 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
1111 AND rule_id = csr_dis_rule_rec.rule_id;
1112 l_rule_exists_flag := 'F';
1113 END LOOP;
1114 COMMIT;
1115 -- Added for Bug 4757731
1116 RAISE FND_API.G_EXC_ERROR;
1117 END IF;
1118
1119
1120 /*
1121 Step 3: Populate cz_imp_rules
1122 */
1123
1124 fnd_file.put_line(FND_FILE.LOG,' ');
1125 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1126 fnd_file.put_line(FND_FILE.LOG,'Step 3: Populating cz_imp_rules ');
1127 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1128 fnd_file.put_line(FND_FILE.LOG,' ');
1129
1130 OKC_XPRT_IMPORT_RULES_PVT.import_rules_disable
1131 (
1132 x_run_id => G_RUN_ID,
1133 x_return_status => x_return_status,
1134 x_msg_data => x_msg_data,
1135 x_msg_count => x_msg_count
1136 );
1137
1138 fnd_file.put_line(FND_FILE.LOG,' ');
1139 fnd_file.put_line(FND_FILE.LOG,'After Populating cz_imp_rules');
1140 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||x_return_status);
1141 fnd_file.put_line(FND_FILE.LOG,'Rule Import Run Id : '||G_RUN_ID);
1142 fnd_file.put_line(FND_FILE.LOG,' ');
1143
1144 --- If any errors happen abort API
1145 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1146 -- Added for Bug 4757731
1147 FOR csr_dis_rule_rec IN csr_dis_rule_list
1148 LOOP
1149 l_rule_exists_flag := check_rule_active(csr_dis_rule_rec.rule_id);
1150 UPDATE okc_xprt_rule_hdrs_all
1151 SET status_code = DECODE(l_rule_exists_flag,'T','ACTIVE',status_code)
1152 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
1153 AND rule_id = csr_dis_rule_rec.rule_id;
1154 l_rule_exists_flag := 'F';
1155 END LOOP;
1156 COMMIT;
1157 -- Added for Bug 4757731
1158 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1159
1160 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1161 -- Added for Bug 4757731
1162 FOR csr_dis_rule_rec IN csr_dis_rule_list
1163 LOOP
1164 l_rule_exists_flag := check_rule_active(csr_dis_rule_rec.rule_id);
1165 UPDATE okc_xprt_rule_hdrs_all
1166 SET status_code = DECODE(l_rule_exists_flag,'T','ACTIVE',status_code)
1167 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
1168 AND rule_id = csr_dis_rule_rec.rule_id;
1169 l_rule_exists_flag := 'F';
1170 END LOOP;
1171 COMMIT;
1172 -- Added for Bug 4757731
1173 RAISE FND_API.G_EXC_ERROR;
1174 END IF;
1175 /*
1176 Step 3.1: Count Rules to be imported
1177 Check if there are any records in cz_imp_rules
1178 If there are no records in cz_imp_rules then there were no expert enabled templates
1179 attached to the rule. Just change the status of the rule to INACTIVE
1180 */
1181
1182 fnd_file.put_line(FND_FILE.LOG,' ');
1183 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1184 fnd_file.put_line(FND_FILE.LOG,'Step 3.1:Count Rules to be imported');
1185 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1186 fnd_file.put_line(FND_FILE.LOG,' ');
1187
1188 OPEN csr_cz_imp_rules_cnt;
1189 FETCH csr_cz_imp_rules_cnt INTO l_rules_cnt;
1190 CLOSE csr_cz_imp_rules_cnt;
1191
1192 fnd_file.put_line(FND_FILE.LOG,' ');
1193 fnd_file.put_line(FND_FILE.LOG,'Total Rules to be Imported to CZ: '||l_rules_cnt);
1194 fnd_file.put_line(FND_FILE.LOG,' ');
1195
1196
1197 IF l_rules_cnt = 0 THEN
1198
1199 OKC_XPRT_UTIL_PVT.publish_rule_with_no_tmpl
1200 (
1201 p_calling_mode => 'DISABLE',
1202 x_return_status => x_return_status,
1203 x_msg_data => x_msg_data,
1204 x_msg_count => x_msg_count
1205 );
1206
1207 fnd_file.put_line(FND_FILE.LOG,' ');
1208 fnd_file.put_line(FND_FILE.LOG,'After OKC_XPRT_UTIL_PVT.publish_rule_with_no_tmpl');
1209 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||x_return_status);
1210 fnd_file.put_line(FND_FILE.LOG,' ');
1211
1212 --- If any errors happen abort API
1213 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1214 -- Added for Bug 4757731
1215 FOR csr_dis_rule_rec IN csr_dis_rule_list
1216 LOOP
1217 l_rule_exists_flag := check_rule_active(csr_dis_rule_rec.rule_id);
1218 UPDATE okc_xprt_rule_hdrs_all
1219 SET status_code = DECODE(l_rule_exists_flag,'T','ACTIVE',status_code)
1220 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
1221 AND rule_id = csr_dis_rule_rec.rule_id;
1222 l_rule_exists_flag := 'F';
1223 END LOOP;
1224 COMMIT;
1225 -- Added for Bug 4757731
1226 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1227
1228 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1229 -- Added for Bug 4757731
1230 FOR csr_dis_rule_rec IN csr_dis_rule_list
1231 LOOP
1232 l_rule_exists_flag := check_rule_active(csr_dis_rule_rec.rule_id);
1233 UPDATE okc_xprt_rule_hdrs_all
1234 SET status_code = DECODE(l_rule_exists_flag,'T','ACTIVE',status_code)
1235 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
1236 AND rule_id = csr_dis_rule_rec.rule_id;
1237 l_rule_exists_flag := 'F';
1238 END LOOP;
1239 COMMIT;
1240 -- Added for Bug 4757731
1241 RAISE FND_API.G_EXC_ERROR;
1242 END IF;
1243
1244 fnd_file.put_line(FND_FILE.LOG,' ');
1245 fnd_file.put_line(FND_FILE.LOG,'Rules has No expert template attached');
1246 fnd_file.put_line(FND_FILE.LOG,' ');
1247
1248 retcode := 0;
1249 errbuf := '';
1250 RETURN;
1251
1252 END IF; -- l_rules_cnt = 0
1253
1254 /*
1255 Step 4: Call the CZ Rule Import Concurrent Program
1256 CZ Pgm: Import Configuration Rules (CZRULEIMPORTCP)
1257 */
1258
1259 fnd_file.put_line(FND_FILE.LOG,' ');
1260 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1261 fnd_file.put_line(FND_FILE.LOG,'Step 4: Calling the CZ Rule Import Concurrent Program');
1262 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1263 fnd_file.put_line(FND_FILE.LOG,' ');
1264 fnd_file.put_line(FND_FILE.LOG,'Parameter Run Id : '||G_RUN_ID);
1265
1266 FND_MESSAGE.set_name('OKC','OKC_XPRT_RULE_CCPRG_DIS_MSG');
1267 l_conc_pgm_desc := FND_MESSAGE.get;
1268
1269 G_REQUEST_ID := fnd_request.submit_request
1270 (application => 'CZ',
1271 program => 'CZRULEIMPORTCP',
1272 description => l_conc_pgm_desc,
1273 start_time => NULL,
1274 sub_request => TRUE,
1275 argument1 => G_RUN_ID
1276 );
1277
1278 fnd_file.put_line(FND_FILE.LOG,'Request Id of CZ Rule Concurrent Pgm : '||G_REQUEST_ID);
1279
1280 -- commit the data
1281 COMMIT WORK;
1282
1283 IF NVL(G_REQUEST_ID,0) = 0 THEN
1284 -- Could Not submit Conc Pgm
1285 fnd_message.set_name('OKC','OKC_XPRT_SUB_CZ_RUL_PGM');
1286 fnd_file.put_line(FND_FILE.LOG,'Could NOT submit CZ Concurrent Program');
1287 FOR csr_dis_rule_rec IN csr_dis_rule_list
1288 LOOP
1289 l_rule_exists_flag := check_rule_active(csr_dis_rule_rec.rule_id);
1290 UPDATE okc_xprt_rule_hdrs_all
1291 SET status_code = DECODE(l_rule_exists_flag,'T','ACTIVE',status_code)
1292 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
1293 AND rule_id = csr_dis_rule_rec.rule_id;
1294 l_rule_exists_flag := 'F';
1295 END LOOP;
1296 COMMIT;
1297 -- Added for Bug 4757731
1298 RAISE FND_API.G_EXC_ERROR;
1299 ELSE
1300 -- child submission successful, pause the parent program
1301 fnd_conc_global.set_req_globals
1302 ( conc_status => 'PAUSED',
1303 request_data => to_char(G_REQUEST_ID)||':'||to_char(G_RUN_ID)
1304 );
1305 END IF; -- child submitted successfully
1306
1307 ELSE
1308 -- req_data IS NOT NULL
1309 -- Restarting the Parent Concurrent Program after completing the child
1310 -- Execute the remaing steps
1311 /*
1312 Note : when the Parent pgm resumes, the session id for the pgm is different
1313 then the original session id. Any variables set before cannot be read
1314 Any variables required in this block are put in request_data and read from
1315 the same
1316
1317 */
1318
1319 OPEN csr_get_child_req_dtls;
1320 FETCH csr_get_child_req_dtls INTO G_REQUEST_ID, G_RUN_ID;
1321 CLOSE csr_get_child_req_dtls;
1322
1323 x_cz_cp_status := fnd_concurrent.get_request_status
1324 (G_REQUEST_ID,
1325 NULL,
1326 NULL,
1327 x_phase,
1328 x_status,
1329 x_dev_phase,
1330 x_dev_status,
1331 x_message
1332 );
1333
1334 fnd_file.put_line(FND_FILE.LOG,' ');
1335 fnd_file.put_line(FND_FILE.LOG,'After Completing CZ Rule Conc Pgm with request id :'||G_REQUEST_ID);
1336 fnd_file.put_line(FND_FILE.LOG,'Run Id : '||G_RUN_ID);
1337 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1338 fnd_file.put_line(FND_FILE.LOG,'Results ');
1339 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1340 fnd_file.put_line(FND_FILE.LOG,'Phase : '||x_phase);
1341 fnd_file.put_line(FND_FILE.LOG,'Status : '||x_status);
1342 fnd_file.put_line(FND_FILE.LOG,'dev_phase : '||x_dev_phase);
1343 fnd_file.put_line(FND_FILE.LOG,'dev_status : '||x_dev_status);
1344 fnd_file.put_line(FND_FILE.LOG,'Message : '||substr(x_message,1,100));
1345 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1346 fnd_file.put_line(FND_FILE.LOG,' ');
1347
1348 IF x_dev_phase <> 'COMPLETED' AND
1349 x_dev_status NOT IN ('NORMAL','WARNING') THEN
1350 -- error in CZ Concurrent Program
1351 fnd_file.put_line(FND_FILE.LOG, 'Error in CZ Rule Import Concurrent Program ');
1352 fnd_file.put_line(FND_FILE.LOG, 'Request Id :'||G_REQUEST_ID);
1353 fnd_file.put_line(FND_FILE.LOG, 'Run Id :'||G_RUN_ID);
1354 FOR csr_dis_rule_rec IN csr_dis_rule_list
1355 LOOP
1356 l_rule_exists_flag := check_rule_active(csr_dis_rule_rec.rule_id);
1357 UPDATE okc_xprt_rule_hdrs_all
1358 SET status_code = DECODE(l_rule_exists_flag,'T','ACTIVE',status_code)
1359 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
1360 AND rule_id = csr_dis_rule_rec.rule_id;
1361 l_rule_exists_flag := 'F';
1362 END LOOP;
1363 COMMIT;
1364 RAISE FND_API.G_EXC_ERROR;
1365 END IF;
1366
1367
1368 /*
1369 Step 5: Check status of Rules Imported
1370 */
1371
1372 fnd_file.put_line(FND_FILE.LOG,' ');
1373 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1374 fnd_file.put_line(FND_FILE.LOG,'Step 5: Checking Status of Rules imported');
1375 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1376 fnd_file.put_line(FND_FILE.LOG,' ');
1377
1378 OKC_XPRT_UTIL_PVT.check_import_status
1379 (
1380 p_run_id => G_RUN_ID,
1381 p_import_status => 'S',
1382 p_model_type => 'R', -- Rules Import
1383 x_return_status => x_return_status,
1384 x_msg_data => x_msg_data,
1385 x_msg_count => x_msg_count
1386 );
1387
1388 fnd_file.put_line(FND_FILE.LOG,' ');
1389 fnd_file.put_line(FND_FILE.LOG,'After checking import status');
1390 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||x_return_status);
1391 fnd_file.put_line(FND_FILE.LOG,' ');
1392
1393 --- If any errors happen abort API
1394 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1395 -- Added for Bug 4757731
1396 FOR csr_dis_rule_rec IN csr_dis_rule_list
1397 LOOP
1398 l_rule_exists_flag := check_rule_active(csr_dis_rule_rec.rule_id);
1399 UPDATE okc_xprt_rule_hdrs_all
1400 SET status_code = DECODE(l_rule_exists_flag,'T','ACTIVE',status_code)
1401 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
1402 AND rule_id = csr_dis_rule_rec.rule_id;
1403 l_rule_exists_flag := 'F';
1404 END LOOP;
1405 COMMIT;
1406 -- Added for Bug 4757731
1407 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1408
1409 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1410 -- Added for Bug 4757731
1411 FOR csr_dis_rule_rec IN csr_dis_rule_list
1412 LOOP
1413 l_rule_exists_flag := check_rule_active(csr_dis_rule_rec.rule_id);
1414 UPDATE okc_xprt_rule_hdrs_all
1415 SET status_code = DECODE(l_rule_exists_flag,'T','ACTIVE',status_code)
1416 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
1417 AND rule_id = csr_dis_rule_rec.rule_id;
1418 l_rule_exists_flag := 'F';
1419 END LOOP;
1420 COMMIT;
1421 -- Added for Bug 4757731
1422 RAISE FND_API.G_EXC_ERROR;
1423 END IF;
1424
1425 /*
1426 Step 6: Call the Test Publication API
1427 */
1428
1429 fnd_file.put_line(FND_FILE.LOG,' ');
1430 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1431 fnd_file.put_line(FND_FILE.LOG,'Step 6: Calling the Test Publication API');
1432 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1433 fnd_file.put_line(FND_FILE.LOG,' ');
1434
1435
1436 OKC_XPRT_UTIL_PVT.create_test_publication
1437 (
1438 x_return_status => x_return_status,
1439 x_msg_data => x_msg_data,
1440 x_msg_count => x_msg_count
1441 );
1442
1443 fnd_file.put_line(FND_FILE.LOG,' ');
1444 fnd_file.put_line(FND_FILE.LOG,'After Calling the Test Publication API ');
1445 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||x_return_status);
1446 fnd_file.put_line(FND_FILE.LOG,' ');
1447
1448 --- If any errors happen abort API
1449 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1450 -- Added for Bug 4757731
1451 FOR csr_dis_rule_rec IN csr_dis_rule_list
1452 LOOP
1453 l_rule_exists_flag := check_rule_active(csr_dis_rule_rec.rule_id);
1454 UPDATE okc_xprt_rule_hdrs_all
1455 SET status_code = DECODE(l_rule_exists_flag,'T','ACTIVE',status_code)
1456 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
1457 AND rule_id = csr_dis_rule_rec.rule_id;
1458 l_rule_exists_flag := 'F';
1459 END LOOP;
1460 COMMIT;
1461 -- Added for Bug 4757731
1462 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1463
1464 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1465 -- Added for Bug 4757731
1466 FOR csr_dis_rule_rec IN csr_dis_rule_list
1467 LOOP
1468 l_rule_exists_flag := check_rule_active(csr_dis_rule_rec.rule_id);
1469 UPDATE okc_xprt_rule_hdrs_all
1470 SET status_code = DECODE(l_rule_exists_flag,'T','ACTIVE',status_code)
1471 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
1472 AND rule_id = csr_dis_rule_rec.rule_id;
1473 l_rule_exists_flag := 'F';
1474 END LOOP;
1475 COMMIT;
1476 -- Added for Bug 4757731
1477 RAISE FND_API.G_EXC_ERROR;
1478 END IF;
1479
1480 /*
1481 Step 7: Call the Production Publication API
1482 */
1483
1484 fnd_file.put_line(FND_FILE.LOG,' ');
1485 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1486 fnd_file.put_line(FND_FILE.LOG,'Step 7: Calling the Production Publication API');
1487 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1488 fnd_file.put_line(FND_FILE.LOG,' ');
1489
1490 OKC_XPRT_UTIL_PVT.create_production_publication
1491 (
1492 p_calling_mode => 'DISABLE',
1493 p_template_id => NULL, -- pick all templates for the current request
1494 x_return_status => x_return_status,
1495 x_msg_data => x_msg_data,
1496 x_msg_count => x_msg_count
1497 );
1498
1499 fnd_file.put_line(FND_FILE.LOG,' ');
1500 fnd_file.put_line(FND_FILE.LOG,'After Calling the Production Publication API ');
1501 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||x_return_status);
1502 fnd_file.put_line(FND_FILE.LOG,' ');
1503
1504 --- If any errors happen abort API
1505 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1506 -- Added for Bug 4757731
1507 FOR csr_dis_rule_rec IN csr_dis_rule_list
1508 LOOP
1509 l_rule_exists_flag := check_rule_active(csr_dis_rule_rec.rule_id);
1510 UPDATE okc_xprt_rule_hdrs_all
1511 SET status_code = DECODE(l_rule_exists_flag,'T','ACTIVE',status_code)
1512 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
1513 AND rule_id = csr_dis_rule_rec.rule_id;
1514 l_rule_exists_flag := 'F';
1515 END LOOP;
1516 COMMIT;
1517 -- Added for Bug 4757731
1518 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1519
1520 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1521 -- Added for Bug 4757731
1522 FOR csr_dis_rule_rec IN csr_dis_rule_list
1523 LOOP
1524 l_rule_exists_flag := check_rule_active(csr_dis_rule_rec.rule_id);
1525 UPDATE okc_xprt_rule_hdrs_all
1526 SET status_code = DECODE(l_rule_exists_flag,'T','ACTIVE',status_code)
1527 WHERE request_id = FND_GLOBAL.CONC_REQUEST_ID
1528 AND rule_id = csr_dis_rule_rec.rule_id;
1529 l_rule_exists_flag := 'F';
1530 END LOOP;
1531 COMMIT;
1532 -- Added for Bug 4757731
1533 RAISE FND_API.G_EXC_ERROR;
1534 END IF;
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553 -- Standard call to get message count and if count is 1, get message info.
1554 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1555
1556 -- end debug log
1557 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1558 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
1559 G_MODULE||l_api_name,
1560 '1000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
1561 END IF;
1562
1563 END IF; -- req_data IS NULL
1564
1565 EXCEPTION
1566 WHEN FND_API.G_EXC_ERROR THEN
1567 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1568 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
1569 G_MODULE||l_api_name,
1570 '2000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
1571 END IF;
1572
1573 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1574 retcode := 2;
1575 errbuf := x_msg_data;
1576 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||G_RET_STS_ERROR);
1577 fnd_file.put_line(FND_FILE.LOG,'errbuf : '||errbuf);
1578 fnd_file.put_line(FND_FILE.LOG,' ');
1579
1580 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1581 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1582 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
1583 G_MODULE||l_api_name,
1584 '3000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
1585 END IF;
1586
1587 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1588 retcode := 2;
1589 errbuf := x_msg_data;
1590 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||G_RET_STS_UNEXP_ERROR);
1591 fnd_file.put_line(FND_FILE.LOG,'errbuf : '||errbuf);
1592 fnd_file.put_line(FND_FILE.LOG,' ');
1593
1594 WHEN OTHERS THEN
1595 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1596 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
1597 G_MODULE||l_api_name,
1598 '4000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
1599 END IF;
1600
1601 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1602 retcode := 2;
1603 errbuf := SQLERRM;
1604 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||G_RET_STS_UNEXP_ERROR);
1605 fnd_file.put_line(FND_FILE.LOG,'errbuf : '||errbuf);
1606 fnd_file.put_line(FND_FILE.LOG,' ');
1607
1608 END disable_rules;
1609
1610 ---------------------------------------------------
1611 -- Procedure: This procedure will be registered as
1612 -- Contract Expert Template Sync concurrent program
1613 ---------------------------------------------------
1614 PROCEDURE rebuild_templates
1615 (
1616 errbuf OUT NOCOPY VARCHAR2,
1617 retcode OUT NOCOPY VARCHAR2,
1618 p_org_id IN NUMBER,
1619 p_intent IN VARCHAR2,
1620 p_template_id IN NUMBER DEFAULT NULL
1621 ) IS
1622
1623 CURSOR csr_tmpl_dtls IS
1624 SELECT 'x'
1625 FROM okc_terms_templates_all t
1626 WHERE t.org_id = p_org_id
1627 AND t.intent = p_intent
1628 AND t.template_id = NVL(p_template_id, template_id);
1629
1630 CURSOR csr_active_rules_cnt IS
1631 SELECT COUNT(*)
1632 FROM okc_xprt_rule_hdrs_all
1633 WHERE org_id = p_org_id
1634 AND intent = p_intent
1635 AND status_code = 'ACTIVE';
1636
1637 x_return_status VARCHAR2(1);
1638 x_msg_data VARCHAR2(4000);
1639 x_msg_count NUMBER;
1640 l_api_name CONSTANT VARCHAR2(30) := 'rebuild_templates';
1641 l_dummy VARCHAR2(1);
1642 l_rule_count NUMBER;
1643
1644 BEGIN
1645
1646 -- start debug log
1647 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1648 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
1649 G_MODULE||l_api_name,
1650 '100: Entered '||G_PKG_NAME ||'.'||l_api_name);
1651 END IF;
1652
1653 -- log file
1654 fnd_file.put_line(FND_FILE.LOG,' ');
1655 fnd_file.put_line(FND_FILE.LOG,'Current Concurrent Request Id : '||FND_GLOBAL.CONC_REQUEST_ID);
1656 fnd_file.put_line(FND_FILE.LOG,'Parameters ');
1657 fnd_file.put_line(FND_FILE.LOG,'Org Id : '||p_org_id);
1658 fnd_file.put_line(FND_FILE.LOG,'Intent : '||p_intent);
1659 fnd_file.put_line(FND_FILE.LOG,'Template Id : '||p_template_id);
1660
1661 -- Validate Parameters if p_template_id IS NOT NULL
1662 OPEN csr_tmpl_dtls;
1663 FETCH csr_tmpl_dtls INTO l_dummy;
1664 IF csr_tmpl_dtls%NOTFOUND THEN
1665 -- exit as no templates to be processed
1666 CLOSE csr_tmpl_dtls;
1667 fnd_file.put_line(FND_FILE.LOG,' ');
1668 fnd_file.put_line(FND_FILE.LOG,'No Templates to be synchronized ');
1669 fnd_file.put_line(FND_FILE.LOG,' ');
1670 retcode := 0;
1671 errbuf := '';
1672 RETURN;
1673 END IF; -- no rows to be processed
1674 CLOSE csr_tmpl_dtls;
1675
1676 -- Validate if there is atleast 1 ACTIVE Rule for the Org and Intent
1677 OPEN csr_active_rules_cnt;
1678 FETCH csr_active_rules_cnt INTO l_rule_count;
1679 CLOSE csr_active_rules_cnt;
1680
1681 IF l_rule_count = 0 THEN
1682 -- no active rules
1683 fnd_file.put_line(FND_FILE.LOG,' ');
1684 fnd_file.put_line(FND_FILE.LOG,'No Active Rules for the Org and Intent');
1685 fnd_file.put_line(FND_FILE.LOG,' ');
1686 retcode := 0;
1687 errbuf := '';
1688 RETURN;
1689 END IF; -- no active rules
1690
1691 /*
1692 Step 1: Import Template Model(s)
1693 */
1694
1695 fnd_file.put_line(FND_FILE.LOG,' ');
1696 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1697 fnd_file.put_line(FND_FILE.LOG,'Step 1: Importing Template Models');
1698 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1699 fnd_file.put_line(FND_FILE.LOG,' ');
1700
1701 OKC_XPRT_IMPORT_TEMPLATE_PVT.rebuild_tmpl_sync
1702 (
1703 p_org_id => p_org_id,
1704 p_intent => p_intent,
1705 p_template_id => p_template_id,
1706 x_return_status => x_return_status,
1707 x_msg_data => x_msg_data,
1708 x_msg_count => x_msg_count
1709 ) ;
1710
1711 fnd_file.put_line(FND_FILE.LOG,' ');
1712 fnd_file.put_line(FND_FILE.LOG,'After Importing Template Models');
1713 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||x_return_status);
1714 fnd_file.put_line(FND_FILE.LOG,' ');
1715
1716 --- If any errors happen abort API
1717 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1718 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1719 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1720 RAISE FND_API.G_EXC_ERROR;
1721 END IF;
1722
1723
1724
1725 /*
1726 Step 2: Call the Test Publication API
1727 */
1728
1729 fnd_file.put_line(FND_FILE.LOG,' ');
1730 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1731 fnd_file.put_line(FND_FILE.LOG,'Step 2: Calling the Test Publication API');
1732 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1733 fnd_file.put_line(FND_FILE.LOG,' ');
1734
1735 OKC_XPRT_UTIL_PVT.create_test_publication
1736 (
1737 x_return_status => x_return_status,
1738 x_msg_data => x_msg_data,
1739 x_msg_count => x_msg_count
1740 );
1741
1742 fnd_file.put_line(FND_FILE.LOG,' ');
1743 fnd_file.put_line(FND_FILE.LOG,'After Calling the Test Publication API ');
1744 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||x_return_status);
1745 fnd_file.put_line(FND_FILE.LOG,' ');
1746
1747 --- If any errors happen abort API
1748 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1749 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1750 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1751 RAISE FND_API.G_EXC_ERROR;
1752 END IF;
1753
1754
1755 /*
1756 Step 3: Call the Production Publication API
1757 */
1758
1759 fnd_file.put_line(FND_FILE.LOG,' ');
1760 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1761 fnd_file.put_line(FND_FILE.LOG,'Step 3: Calling the Production Publication API');
1762 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1763 fnd_file.put_line(FND_FILE.LOG,' ');
1764
1765 OKC_XPRT_UTIL_PVT.create_production_publication
1766 (
1767 p_calling_mode => 'SYNC',
1768 p_template_id => NULL, -- pick all templates for the current request
1769 x_return_status => x_return_status,
1770 x_msg_data => x_msg_data,
1771 x_msg_count => x_msg_count
1772 );
1773
1774 fnd_file.put_line(FND_FILE.LOG,' ');
1775 fnd_file.put_line(FND_FILE.LOG,'After Calling the Production Publication API ');
1776 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||x_return_status);
1777 fnd_file.put_line(FND_FILE.LOG,' ');
1778
1779 --- If any errors happen abort API
1780 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1781 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1782 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1783 RAISE FND_API.G_EXC_ERROR;
1784 END IF;
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802 -- Standard call to get message count and if count is 1, get message info.
1803 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1804
1805 -- end debug log
1806 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1807 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
1808 G_MODULE||l_api_name,
1809 '1000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
1810 END IF;
1811
1812
1813 EXCEPTION
1814 WHEN FND_API.G_EXC_ERROR THEN
1815 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1816 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
1817 G_MODULE||l_api_name,
1818 '2000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
1819 END IF;
1820
1821 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1822 retcode := 2;
1823 errbuf := x_msg_data;
1824 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||G_RET_STS_ERROR);
1825 fnd_file.put_line(FND_FILE.LOG,'errbuf : '||errbuf);
1826 fnd_file.put_line(FND_FILE.LOG,' ');
1827
1828 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1829 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1830 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
1831 G_MODULE||l_api_name,
1832 '3000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
1833 END IF;
1834
1835 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1836 retcode := 2;
1837 errbuf := x_msg_data;
1838 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||G_RET_STS_UNEXP_ERROR);
1839 fnd_file.put_line(FND_FILE.LOG,'errbuf : '||errbuf);
1840 fnd_file.put_line(FND_FILE.LOG,' ');
1841
1842 WHEN OTHERS THEN
1843 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1844 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
1845 G_MODULE||l_api_name,
1846 '4000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
1847 END IF;
1848
1849 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
1850 retcode := 2;
1851 errbuf := SQLERRM;
1852 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||G_RET_STS_UNEXP_ERROR);
1853 fnd_file.put_line(FND_FILE.LOG,'errbuf : '||errbuf);
1854 fnd_file.put_line(FND_FILE.LOG,' ');
1855
1856 END rebuild_templates;
1857
1858 ---------------------------------------------------
1859 -- Procedure: This procedure will be registered as
1860 -- Contract Expert Publish Template During Approval
1861 ---------------------------------------------------
1862 PROCEDURE tmpl_approval_publish_rules
1863 (
1864 errbuf OUT NOCOPY VARCHAR2,
1865 retcode OUT NOCOPY VARCHAR2,
1866 p_template_id IN NUMBER
1867 ) IS
1868
1869 x_return_status VARCHAR2(1);
1870 x_msg_data VARCHAR2(4000);
1871 x_msg_count NUMBER;
1872 l_api_name CONSTANT VARCHAR2(30) := 'tmpl_approval_publish_rules';
1873 req_data VARCHAR2(240);
1874 x_cz_cp_status BOOLEAN;
1875 x_phase VARCHAR2(1000);
1876 x_status VARCHAR2(1000);
1877 x_dev_phase VARCHAR2(1000);
1878 x_dev_status VARCHAR2(1000);
1879 x_message VARCHAR2(1000);
1880 l_rules_cnt NUMBER;
1881 l_sequence_id NUMBER;
1882 l_qa_status VARCHAR2(1);
1883 l_conc_pgm_desc FND_NEW_MESSAGES.message_text%TYPE;
1884
1885
1886 CURSOR csr_get_child_req_dtls IS
1887 SELECT SUBSTR(req_data,
1888 1,
1889 INSTR(req_data,':',1) -1
1890 ) child_req_id,
1891 SUBSTR(req_data,
1892 INSTR(req_data,':',1) + 1
1893 ) run_id
1894 FROM dual;
1895
1896 CURSOR csr_cz_imp_rules_cnt IS
1897 SELECT COUNT(*)
1898 FROM cz_imp_rules
1899 WHERE run_id = G_RUN_ID;
1900
1901
1902
1903 BEGIN
1904
1905 -- Check if the concurrent program is being restarted due to completion of child request
1906 req_data := fnd_conc_global.request_data;
1907
1908 IF req_data IS NULL THEN
1909 -- Calling the parent concurrent prorgam for the first time
1910 -- Execute Steps 1 to 3
1911
1912 -- start debug log
1913 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
1914 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
1915 G_MODULE||l_api_name,
1916 '100: Entered '||G_PKG_NAME ||'.'||l_api_name);
1917 END IF;
1918
1919 -- log file
1920 fnd_file.put_line(FND_FILE.LOG,' ');
1921 fnd_file.put_line(FND_FILE.LOG,'Current Concurrent Request Id : '||FND_GLOBAL.CONC_REQUEST_ID);
1922 fnd_file.put_line(FND_FILE.LOG,'Parameters ');
1923 fnd_file.put_line(FND_FILE.LOG,'Template Id : '||p_template_id);
1924
1925 /*
1926 Step 0: Template Rules QA checks
1927 */
1928
1929 fnd_file.put_line(FND_FILE.LOG,' ');
1930 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1931 fnd_file.put_line(FND_FILE.LOG,'Step 0: Template Rules QA Checks ');
1932 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1933 fnd_file.put_line(FND_FILE.LOG,' ');
1934
1935 OKC_XPRT_UTIL_PVT.check_rules_validity
1936 (
1937 p_qa_mode => 'APPROVAL',
1938 p_template_id => p_template_id,
1939 x_sequence_id => l_sequence_id,
1940 x_qa_status => l_qa_status,
1941 x_return_status => x_return_status,
1942 x_msg_data => x_msg_data,
1943 x_msg_count => x_msg_count
1944 ) ;
1945
1946 fnd_file.put_line(FND_FILE.LOG,' ');
1947 fnd_file.put_line(FND_FILE.LOG,'After OKC_XPRT_UTIL_PVT.check_rules_validity');
1948 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||x_return_status);
1949 fnd_file.put_line(FND_FILE.LOG,'x_qa_status: '||l_qa_status);
1950 fnd_file.put_line(FND_FILE.LOG,'x_sequence_id: '||l_sequence_id);
1951 fnd_file.put_line(FND_FILE.LOG,' ');
1952
1953 --- If any errors happen abort API
1954 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
1955 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1956 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
1957 RAISE FND_API.G_EXC_ERROR;
1958 END IF;
1959
1960 -- Check If any rules had QA errors and abort
1961 IF l_qa_status <> 'S' THEN
1962 -- exit as no rules had QA errors
1963 fnd_file.put_line(FND_FILE.LOG,' ');
1964 fnd_file.put_line(FND_FILE.LOG,'Template Rules QA Check failed');
1965 fnd_file.put_line(FND_FILE.LOG,' ');
1966
1967 retcode := 2;
1968 errbuf := '';
1969 RETURN;
1970
1971 END IF; -- QA Errors
1972
1973
1974
1975 /*
1976 Step 1: Import Template Model
1977 */
1978
1979 fnd_file.put_line(FND_FILE.LOG,' ');
1980 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1981 fnd_file.put_line(FND_FILE.LOG,'Step 1: Importing Template Model');
1982 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
1983 fnd_file.put_line(FND_FILE.LOG,' ');
1984
1985 OKC_XPRT_IMPORT_TEMPLATE_PVT.import_template
1986 (
1987 p_api_version => 1,
1988 p_init_msg_list => 'T',
1989 p_commit => 'T',
1990 p_template_id => p_template_id,
1991 x_return_status => x_return_status,
1992 x_msg_data => x_msg_data,
1993 x_msg_count => x_msg_count
1994 ) ;
1995
1996 fnd_file.put_line(FND_FILE.LOG,' ');
1997 fnd_file.put_line(FND_FILE.LOG,'After Importing Template Model');
1998 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||x_return_status);
1999 fnd_file.put_line(FND_FILE.LOG,' ');
2000
2001 --- If any errors happen abort API
2002 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
2003 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2004 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
2005 RAISE FND_API.G_EXC_ERROR;
2006 END IF;
2007
2008
2009 /*
2010 Step 2: Populate cz_imp_rules
2011 */
2012
2013 fnd_file.put_line(FND_FILE.LOG,' ');
2014 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
2015 fnd_file.put_line(FND_FILE.LOG,'Step 2: Populating cz_imp_rules ');
2016 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
2017 fnd_file.put_line(FND_FILE.LOG,' ');
2018
2019 OKC_XPRT_IMPORT_RULES_PVT.import_rule_temp_approval
2020 (
2021 p_template_id => p_template_id,
2022 x_run_id => G_RUN_ID,
2023 x_return_status => x_return_status,
2024 x_msg_data => x_msg_data,
2025 x_msg_count => x_msg_count
2026 );
2027
2028 fnd_file.put_line(FND_FILE.LOG,' ');
2029 fnd_file.put_line(FND_FILE.LOG,'After Populating cz_imp_rules');
2030 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||x_return_status);
2031 fnd_file.put_line(FND_FILE.LOG,'x_msg_data: '||x_msg_data);
2032 fnd_file.put_line(FND_FILE.LOG,'Rule Import Run Id : '||G_RUN_ID);
2033 fnd_file.put_line(FND_FILE.LOG,' ');
2034
2035 --- If any errors happen abort API
2036 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
2037 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2038 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
2039 RAISE FND_API.G_EXC_ERROR;
2040 END IF;
2041
2042
2043 /*
2044 Step 2.1: Count Rules to be imported
2045 Check if there are any records in cz_imp_rules
2046 If there are no records in cz_imp_rules then Template has no rules attached
2047 Skip the rule import process
2048 */
2049
2050 fnd_file.put_line(FND_FILE.LOG,' ');
2051 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
2052 fnd_file.put_line(FND_FILE.LOG,'Step 2.1:Count Rules to be imported');
2053 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
2054 fnd_file.put_line(FND_FILE.LOG,' ');
2055
2056 OPEN csr_cz_imp_rules_cnt;
2057 FETCH csr_cz_imp_rules_cnt INTO l_rules_cnt;
2058 CLOSE csr_cz_imp_rules_cnt;
2059
2060 fnd_file.put_line(FND_FILE.LOG,' ');
2061 fnd_file.put_line(FND_FILE.LOG,'Total Rules to be Imported to CZ: '||l_rules_cnt);
2062 fnd_file.put_line(FND_FILE.LOG,' ');
2063
2064
2065 IF l_rules_cnt = 0 THEN
2066
2067 fnd_file.put_line(FND_FILE.LOG,' ');
2068 fnd_file.put_line(FND_FILE.LOG,'Template has no Rules attached');
2069 fnd_file.put_line(FND_FILE.LOG,' ');
2070
2071 retcode := 0;
2072 errbuf := '';
2073 RETURN;
2074
2075 END IF; -- l_rules_cnt = 0
2076
2077 /*
2078 Step 2.2: Insert Extension Rules in Template Approval Flow
2079 */
2080
2081 fnd_file.put_line(FND_FILE.LOG,' ');
2082 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
2083 fnd_file.put_line(FND_FILE.LOG,'Step 2.2: Calling API to insert extension rule records');
2084 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
2085 fnd_file.put_line(FND_FILE.LOG,' ');
2086
2087 OKC_XPRT_IMPORT_RULES_PVT.attach_extension_rule_tmpl
2088 (
2089 p_api_version => 1,
2090 p_init_msg_list => 'T',
2091 p_run_id => G_RUN_ID,
2092 p_template_id => p_template_id,
2093 x_return_status => x_return_status,
2094 x_msg_data => x_msg_data,
2095 x_msg_count => x_msg_count
2096 );
2097
2098 fnd_file.put_line(FND_FILE.LOG,' ');
2099 fnd_file.put_line(FND_FILE.LOG,'Step 2.2: After Calling API to insert extension rule records');
2100 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||x_return_status);
2101 fnd_file.put_line(FND_FILE.LOG,' ');
2102
2103
2104
2105 /*
2106 Step 3: Call the CZ Rule Import Concurrent Program
2107 CZ Pgm: Import Configuration Rules (CZRULEIMPORTCP)
2108 */
2109
2110 fnd_file.put_line(FND_FILE.LOG,' ');
2111 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
2112 fnd_file.put_line(FND_FILE.LOG,'Step 3: Calling the CZ Rule Import Concurrent Program');
2113 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
2114 fnd_file.put_line(FND_FILE.LOG,' ');
2115 fnd_file.put_line(FND_FILE.LOG,'Parameter Run Id : '||G_RUN_ID);
2116
2117 FND_MESSAGE.set_name('OKC','OKC_XPRT_RULE_CCPRG_TMPL_MSG');
2118 l_conc_pgm_desc := FND_MESSAGE.get;
2119
2120 G_REQUEST_ID := fnd_request.submit_request
2121 (application => 'CZ',
2122 program => 'CZRULEIMPORTCP',
2123 description => l_conc_pgm_desc,
2124 start_time => NULL,
2125 sub_request => TRUE,
2126 argument1 => G_RUN_ID
2127 );
2128
2129 fnd_file.put_line(FND_FILE.LOG,'Request Id of CZ Rule Concurrent Pgm : '||G_REQUEST_ID);
2130
2131 -- commit the data
2132 COMMIT WORK;
2133
2134
2135 IF NVL(G_REQUEST_ID,0) = 0 THEN
2136 -- Could Not submit Conc Pgm
2137 fnd_message.set_name('OKC','OKC_XPRT_SUB_CZ_RUL_PGM');
2138 fnd_file.put_line(FND_FILE.LOG,'Could NOT submit CZ Concurrent Program');
2139 RAISE FND_API.G_EXC_ERROR;
2140 ELSE
2141 -- child submission successful, pause the parent program
2142 fnd_conc_global.set_req_globals
2143 ( conc_status => 'PAUSED',
2144 request_data => to_char(G_REQUEST_ID)||':'||to_char(G_RUN_ID)
2145 );
2146 END IF; -- child submitted successfully
2147
2148 ELSE
2149 -- req_data IS NOT NULL
2150 -- Restarting the Parent Concurrent Program after completing the child
2151 -- Execute the remaing steps
2152 /*
2153 Note : when the Parent pgm resumes, the session id for the pgm is different
2154 then the original session id. Any variables set before cannot be read
2155 Any variables required in this block are put in request_data and read from
2156 the same
2157
2158 */
2159
2160 OPEN csr_get_child_req_dtls;
2161 FETCH csr_get_child_req_dtls INTO G_REQUEST_ID, G_RUN_ID;
2162 CLOSE csr_get_child_req_dtls;
2163
2164 x_cz_cp_status := fnd_concurrent.get_request_status
2165 (G_REQUEST_ID,
2166 NULL,
2167 NULL,
2168 x_phase,
2169 x_status,
2170 x_dev_phase,
2171 x_dev_status,
2172 x_message
2173 );
2174
2175 fnd_file.put_line(FND_FILE.LOG,' ');
2176 fnd_file.put_line(FND_FILE.LOG,'After Completing CZ Rule Conc Pgm with request id :'||G_REQUEST_ID);
2177 fnd_file.put_line(FND_FILE.LOG,'Run Id : '||G_RUN_ID);
2178 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
2179 fnd_file.put_line(FND_FILE.LOG,'Results ');
2180 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
2181 fnd_file.put_line(FND_FILE.LOG,'Phase : '||x_phase);
2182 fnd_file.put_line(FND_FILE.LOG,'Status : '||x_status);
2183 fnd_file.put_line(FND_FILE.LOG,'dev_phase : '||x_dev_phase);
2184 fnd_file.put_line(FND_FILE.LOG,'dev_status : '||x_dev_status);
2185 fnd_file.put_line(FND_FILE.LOG,'Message : '||substr(x_message,1,100));
2186 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
2187 fnd_file.put_line(FND_FILE.LOG,' ');
2188
2189 IF x_dev_phase <> 'COMPLETED' AND
2190 x_dev_status NOT IN ('NORMAL','WARNING') THEN
2191 -- error in CZ Concurrent Program
2192 fnd_file.put_line(FND_FILE.LOG, 'Error in CZ Rule Import Concurrent Program ');
2193 fnd_file.put_line(FND_FILE.LOG, 'Request Id :'||G_REQUEST_ID);
2194 fnd_file.put_line(FND_FILE.LOG, 'Run Id :'||G_RUN_ID);
2195 RAISE FND_API.G_EXC_ERROR;
2196 END IF;
2197
2198
2199 /*
2200 Step 4: Check status of Rules Imported
2201 */
2202
2203 fnd_file.put_line(FND_FILE.LOG,' ');
2204 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
2205 fnd_file.put_line(FND_FILE.LOG,'Step 4: Checking Status of Rules imported');
2206 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
2207 fnd_file.put_line(FND_FILE.LOG,' ');
2208
2209 OKC_XPRT_UTIL_PVT.check_import_status
2210 (
2211 p_run_id => G_RUN_ID,
2212 p_import_status => 'S',
2213 p_model_type => 'R', -- Rules Import
2214 x_return_status => x_return_status,
2215 x_msg_data => x_msg_data,
2216 x_msg_count => x_msg_count
2217 );
2218
2219 fnd_file.put_line(FND_FILE.LOG,' ');
2220 fnd_file.put_line(FND_FILE.LOG,'After checking import status');
2221 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||x_return_status);
2222 fnd_file.put_line(FND_FILE.LOG,' ');
2223
2224 --- If any errors happen abort API
2225 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
2226 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2227 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
2228 RAISE FND_API.G_EXC_ERROR;
2229 END IF;
2230
2231
2232 /*
2233 Step 5: Call the Test Publication API
2234 */
2235
2236 fnd_file.put_line(FND_FILE.LOG,' ');
2237 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
2238 fnd_file.put_line(FND_FILE.LOG,'Step 5: Calling the Test Publication API');
2239 fnd_file.put_line(FND_FILE.LOG,'---------------------------------------------------------- ');
2240 fnd_file.put_line(FND_FILE.LOG,' ');
2241
2242 OKC_XPRT_UTIL_PVT.create_test_publication
2243 (
2244 x_return_status => x_return_status,
2245 x_msg_data => x_msg_data,
2246 x_msg_count => x_msg_count
2247 );
2248
2249 fnd_file.put_line(FND_FILE.LOG,' ');
2250 fnd_file.put_line(FND_FILE.LOG,'After Calling the Test Publication API ');
2251 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||x_return_status);
2252 fnd_file.put_line(FND_FILE.LOG,' ');
2253
2254 --- If any errors happen abort API
2255 IF (x_return_status = G_RET_STS_UNEXP_ERROR) THEN
2256 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2257 ELSIF (x_return_status = G_RET_STS_ERROR) THEN
2258 RAISE FND_API.G_EXC_ERROR;
2259 END IF;
2260
2261
2262 -- Standard call to get message count and if count is 1, get message info.
2263 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
2264
2265 -- end debug log
2266 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2267 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
2268 G_MODULE||l_api_name,
2269 '1000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
2270 END IF;
2271
2272 END IF; -- req_data IS NULL
2273
2274 EXCEPTION
2275 WHEN FND_API.G_EXC_ERROR THEN
2276 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2277 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
2278 G_MODULE||l_api_name,
2279 '2000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
2280 END IF;
2281
2282 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
2283 retcode := 2;
2284 errbuf := x_msg_data;
2285 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||G_RET_STS_ERROR);
2286 fnd_file.put_line(FND_FILE.LOG,'errbuf : '||errbuf);
2287 fnd_file.put_line(FND_FILE.LOG,' ');
2288
2289 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2290 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2291 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
2292 G_MODULE||l_api_name,
2293 '3000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
2294 END IF;
2295
2296 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
2297 retcode := 2;
2298 errbuf := x_msg_data;
2299 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||G_RET_STS_UNEXP_ERROR);
2300 fnd_file.put_line(FND_FILE.LOG,'errbuf : '||errbuf);
2301 fnd_file.put_line(FND_FILE.LOG,' ');
2302
2303 WHEN OTHERS THEN
2304 IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
2305 FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
2306 G_MODULE||l_api_name,
2307 '4000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
2308 END IF;
2309
2310 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
2311 retcode := 2;
2312 errbuf := SQLERRM;
2313 fnd_file.put_line(FND_FILE.LOG,'x_return_status: '||G_RET_STS_UNEXP_ERROR);
2314 fnd_file.put_line(FND_FILE.LOG,'errbuf : '||errbuf);
2315 fnd_file.put_line(FND_FILE.LOG,' ');
2316
2317 END tmpl_approval_publish_rules;
2318
2319 END OKC_XPRT_IMPORT_PVT ;