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