DBA Data[Home] [Help]

PACKAGE BODY: APPS.OKC_XPRT_TMPL_RULE_ASSNS_PVT

Source


1 PACKAGE BODY OKC_XPRT_TMPL_RULE_ASSNS_PVT AS
2 /* $Header: OKCVXRULASSNB.pls 120.0 2005/05/25 19:25:54 appldev noship $ */
3 
4 
5   ------------------------------------------------------------------------------
6   -- GLOBAL CONSTANTS
7   ------------------------------------------------------------------------------
8   G_PKG_NAME                   CONSTANT   VARCHAR2(200) := 'OKC_XPRT_TMPL_RULE_ASSNS_PVT';
9   G_APP_NAME                   CONSTANT   VARCHAR2(3)   :=  OKC_API.G_APP_NAME;
10 
11   G_LEVEL_PROCEDURE            CONSTANT   NUMBER := FND_LOG.LEVEL_PROCEDURE;
12   G_MODULE                     CONSTANT   VARCHAR2(250) := 'okc.plsql.'||g_pkg_name||'.';
13   G_APPLICATION_ID             CONSTANT   NUMBER :=510; -- OKC Application
14 
15   G_FALSE                      CONSTANT   VARCHAR2(1) := FND_API.G_FALSE;
16   G_TRUE                       CONSTANT   VARCHAR2(1) := FND_API.G_TRUE;
17 
18   G_RET_STS_SUCCESS            CONSTANT   VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
19   G_RET_STS_ERROR              CONSTANT   VARCHAR2(1) := FND_API.G_RET_STS_ERROR;
20   G_RET_STS_UNEXP_ERROR        CONSTANT   VARCHAR2(1) := FND_API.G_RET_STS_UNEXP_ERROR;
21 
22   G_UNEXPECTED_ERROR           CONSTANT   VARCHAR2(200) := 'OKC_UNEXPECTED_ERROR';
23   G_SQLERRM_TOKEN              CONSTANT   VARCHAR2(200) := 'ERROR_MESSAGE';
24   G_SQLCODE_TOKEN              CONSTANT   VARCHAR2(200) := 'ERROR_CODE';
25   G_UNABLE_TO_RESERVE_REC      CONSTANT   VARCHAR2(200) := OKC_API.G_UNABLE_TO_RESERVE_REC;
26 
27 
28 PROCEDURE copy_template_rule_assns
29 (
30  p_api_version           IN NUMBER,
31  p_init_msg_list	     IN VARCHAR2,
32  p_commit	               IN VARCHAR2,
33  p_source_template_id    IN NUMBER,
34  p_target_template_id    IN NUMBER,
35  x_return_status	     OUT NOCOPY VARCHAR2,
36  x_msg_data	          OUT NOCOPY VARCHAR2,
37  x_msg_count	          OUT NOCOPY NUMBER
38 ) IS
39 
40 CURSOR csr_template_org(p_template_id IN NUMBER) IS
41 SELECT org_id
42   FROM okc_terms_templates_all
43  WHERE template_id = p_template_id;
44 
45 -- get all rules on source template that are Not Inactive
46 CURSOR csr_template_rules IS
47 SELECT t.rule_id
48   FROM okc_xprt_template_rules t,
49        okc_xprt_rule_hdrs_all r
50  WHERE r.rule_id = t.rule_id
51    AND r.status_code <> 'INACTIVE'
52    AND NVL(t.deleted_flag,'N') <> 'Y'
53    AND t.template_id = p_source_template_id;
54 
55 -- Copy all questions from the source template
56 -- if the question belongs to Inactive rule, UI will delete it
57 -- Bug 4070731 modified to copy runtime_available_flag as 'N'
58 -- bug 4111451 Undo the above bug 4070731
59 CURSOR csr_template_questions IS
60 SELECT question_id,
61        mandatory_flag,
62 	  sequence_num,
63 	  question_rule_status,
64 	  runtime_available_flag
65   FROM okc_xprt_question_orders
66  WHERE template_id = p_source_template_id;
67 
68 l_api_version              CONSTANT NUMBER := 1;
69 l_api_name                CONSTANT VARCHAR2(30) := 'copy_template_rule_assns';
70 l_source_template_org_id  okc_terms_templates_all.org_id%TYPE;
71 l_target_template_org_id  okc_terms_templates_all.org_id%TYPE;
72 
73 
74 TYPE ruleIdList IS TABLE OF okc_xprt_template_rules.rule_id%TYPE INDEX BY BINARY_INTEGER;
75 TYPE questionIdList IS TABLE OF okc_xprt_question_orders.question_id%TYPE INDEX BY BINARY_INTEGER;
76 TYPE mandatoryFlagList IS TABLE OF okc_xprt_question_orders.mandatory_flag%TYPE INDEX BY BINARY_INTEGER;
77 TYPE sequenceNumList IS TABLE OF okc_xprt_question_orders.sequence_num%TYPE INDEX BY BINARY_INTEGER;
78 TYPE questionRuleStatusList IS TABLE OF okc_xprt_question_orders.question_rule_status%TYPE INDEX BY BINARY_INTEGER;
79 TYPE runtimeAvailableFlagList IS TABLE OF okc_xprt_question_orders.runtime_available_flag%TYPE INDEX BY BINARY_INTEGER;
80 
81 
82 rule_id_tbl                  ruleIdList;
83 question_id_tbl              questionIdList;
84 mandatory_flag_tbl           mandatoryFlagList;
85 sequence_num_tbl             sequenceNumList;
86 question_rule_status_tbl     questionRuleStatusList;
87 runtime_available_flag_tbl   runtimeAvailableFlagList;
88 
89 BEGIN
90 
91   -- start debug log
92   IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
93      FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
94                     G_MODULE||l_api_name,
95                     '100: Entered '||G_PKG_NAME ||'.'||l_api_name);
96      FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
97                     G_MODULE||l_api_name,
98                     '100: p_source_template_id : '||p_source_template_id);
99      FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
100                     G_MODULE||l_api_name,
101                     '100: p_target_template_id : '||p_target_template_id);
102   END IF;
103 
104     -- Standard call to check for call compatibility.
105     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
106         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
107     END IF;
108 
109     IF FND_API.to_Boolean( p_init_msg_list ) THEN
110       FND_MSG_PUB.initialize;
111     END IF;
112 
113   x_return_status :=  G_RET_STS_SUCCESS;
114 
115     -- Check if both templates have the same Org Id else skip copy as we don't copy
116     -- rules in case of global template to local template copy
117 
118     OPEN csr_template_org(p_template_id => p_source_template_id);
119       FETCH csr_template_org INTO l_source_template_org_id;
120     CLOSE csr_template_org;
121 
122     OPEN csr_template_org(p_template_id => p_target_template_id);
123       FETCH csr_template_org INTO l_target_template_org_id;
124     CLOSE csr_template_org;
125 
126     -- debug log
127     IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
128        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
129                       G_MODULE||l_api_name,
130                       '110: l_source_template_org_id : '||l_source_template_org_id);
131        FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
132                       G_MODULE||l_api_name,
133                       '110: l_target_template_org_id : '||l_target_template_org_id);
134     END IF;
135 
136     IF l_source_template_org_id = l_target_template_org_id THEN
137       -- both templates in same Org, copy rules
138 
139            -- Copy Local Rules
140            OPEN csr_template_rules;
141              FETCH csr_template_rules BULK COLLECT INTO rule_id_tbl;
142            CLOSE csr_template_rules;
143 
144            IF rule_id_tbl.COUNT > 0 THEN
145 
146        	 FORALL i IN rule_id_tbl.FIRST..rule_id_tbl.LAST
147 
148        	    INSERT INTO okc_xprt_template_rules
149        	       (
150                     TEMPLATE_RULE_ID,
151                     TEMPLATE_ID,
152                     RULE_ID,
153                     OBJECT_VERSION_NUMBER,
154                     CREATED_BY,
155                     CREATION_DATE,
156                     LAST_UPDATED_BY,
157                     LAST_UPDATE_DATE,
158                     LAST_UPDATE_LOGIN,
159 				DELETED_FLAG
160        		  )
161        	    VALUES
162        	       (
163        		   okc_xprt_template_rules_s.NEXTVAL,
164                   p_target_template_id,
165        		   rule_id_tbl(i),
166        		   1,
167        		   Fnd_Global.User_Id,
168                   sysdate,
169                   Fnd_Global.User_Id,
170                   sysdate,
171                   Fnd_Global.Login_Id,
172 			   'N'
173        		  );
174 
175            END IF;  -- rule_id_tbl.COUNT > 0
176 
177 		 -- Copy Template Question Order
178 		 OPEN csr_template_questions;
179 		   FETCH csr_template_questions BULK COLLECT INTO question_id_tbl,
180 		                                                  mandatory_flag_tbl,
181 												sequence_num_tbl,
182 												question_rule_status_tbl,
183 												runtime_available_flag_tbl;
184 		 CLOSE csr_template_questions;
185 
186            IF question_id_tbl.COUNT > 0 THEN
187 
188        	 FORALL i IN question_id_tbl.FIRST..question_id_tbl.LAST
189 
190        	    INSERT INTO okc_xprt_question_orders
191        	       (
192                    QUESTION_ORDER_ID,
193                    TEMPLATE_ID,
194                    QUESTION_ID,
195                    MANDATORY_FLAG,
196                    OBJECT_VERSION_NUMBER,
197                    CREATED_BY,
198                    CREATION_DATE,
199                    LAST_UPDATED_BY,
200                    LAST_UPDATE_DATE,
201                    LAST_UPDATE_LOGIN,
202                    SEQUENCE_NUM,
203                    QUESTION_RULE_STATUS,
204                    RUNTIME_AVAILABLE_FLAG
205        		  )
206        	    VALUES
207        	       (
208        		   okc_xprt_question_orders_s.NEXTVAL,
209                   p_target_template_id,
210        		   question_id_tbl(i),
211 			   mandatory_flag_tbl(i),
212        		   1,
213        		   Fnd_Global.User_Id,
214                   sysdate,
215                   Fnd_Global.User_Id,
216                   sysdate,
217                   Fnd_Global.Login_Id,
218 			   sequence_num_tbl(i),
219 			   question_rule_status_tbl(i),
220 			   runtime_available_flag_tbl(i)
221        		  );
222 
223            END IF;  -- question_id_tbl.COUNT > 0
224 
225 
226     END IF; -- l_source_template_org_id = l_target_template_org_id
227 
228 
229 
230 IF FND_API.To_Boolean( p_commit ) THEN
231    COMMIT WORK;
232 END IF;
233 
234 -- Standard call to get message count and if count is 1, get message info.
235 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
236 
237   -- end debug log
238   IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
239      FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
240                     G_MODULE||l_api_name,
241                     '1000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
242   END IF;
243 
244 EXCEPTION
245 WHEN FND_API.G_EXC_ERROR THEN
246 
247   IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
248       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
249                      G_MODULE||l_api_name,
250                      '2000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
251   END IF;
252 
253   x_return_status := G_RET_STS_ERROR;
254   FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
255 
256 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
257 
258   IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
259       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
260                      G_MODULE||l_api_name,
261                      '3000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
262   END IF;
263 
264   x_return_status := G_RET_STS_UNEXP_ERROR;
265   FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
266 
267 WHEN OTHERS THEN
268 
269   IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
270       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
271                      G_MODULE||l_api_name,
272                      '4000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
273   END IF;
274 
275   okc_Api.Set_Message(p_app_name     => G_APP_NAME,
276                       p_msg_name     => G_UNEXPECTED_ERROR,
277                       p_token1       => G_SQLCODE_TOKEN,
278                       p_token1_value => sqlcode,
279                       p_token2       => G_SQLERRM_TOKEN,
280                       p_token2_value => sqlerrm);
281   x_return_status := G_RET_STS_UNEXP_ERROR;
282   FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
283 
284 END copy_template_rule_assns;
285 
286 
287 PROCEDURE delete_template_rule_assns
288 (
289  p_api_version           IN NUMBER,
290  p_init_msg_list	     IN VARCHAR2,
291  p_commit	               IN VARCHAR2,
292  p_template_id           IN NUMBER,
293  x_return_status	     OUT NOCOPY VARCHAR2,
294  x_msg_data	          OUT NOCOPY VARCHAR2,
298 l_api_name                CONSTANT VARCHAR2(30) := 'delete_template_rule_assns';
295  x_msg_count	          OUT NOCOPY NUMBER
296 ) IS
297 
299 l_api_version              CONSTANT NUMBER := 1;
300 
301 
302 
303 BEGIN
304 
305   -- start debug log
306   IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
307      FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
308                     G_MODULE||l_api_name,
309                     '100: Entered '||G_PKG_NAME ||'.'||l_api_name);
310   END IF;
311 
312     -- Standard call to check for call compatibility.
313     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
314         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
315     END IF;
316 
317     IF FND_API.to_Boolean( p_init_msg_list ) THEN
318       FND_MSG_PUB.initialize;
319     END IF;
320   x_return_status :=  G_RET_STS_SUCCESS;
321 
322   -- delete template rules
323   DELETE FROM okc_xprt_template_rules
324         WHERE template_id = p_template_id;
325 
326   -- delete template questions
327   DELETE FROM okc_xprt_question_orders
328         WHERE template_id = p_template_id;
329 
330 
331 
332 IF FND_API.To_Boolean( p_commit ) THEN
333    COMMIT WORK;
334 END IF;
335 
336 -- Standard call to get message count and if count is 1, get message info.
337 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
338 
339   -- end debug log
340   IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
341      FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
342                     G_MODULE||l_api_name,
343                     '1000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
344   END IF;
345 
346 EXCEPTION
347 WHEN FND_API.G_EXC_ERROR THEN
348 
349   IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
350       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
351                      G_MODULE||l_api_name,
352                      '2000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
353   END IF;
354 
355   x_return_status := G_RET_STS_ERROR;
356   FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
357 
358 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
359 
360   IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
361       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
362                      G_MODULE||l_api_name,
363                      '3000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
364   END IF;
365 
366   x_return_status := G_RET_STS_UNEXP_ERROR;
367   FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
368 
369 WHEN OTHERS THEN
370 
371   IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
372       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
373                      G_MODULE||l_api_name,
374                      '4000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
375   END IF;
376 
377   okc_Api.Set_Message(p_app_name     => G_APP_NAME,
378                       p_msg_name     => G_UNEXPECTED_ERROR,
379                       p_token1       => G_SQLCODE_TOKEN,
380                       p_token1_value => sqlcode,
381                       p_token2       => G_SQLERRM_TOKEN,
382                       p_token2_value => sqlerrm);
383   x_return_status := G_RET_STS_UNEXP_ERROR;
384   FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
385 
386 END delete_template_rule_assns;
387 
388 PROCEDURE merge_template_rule_assns
389 (
390  p_api_version           IN NUMBER,
391  p_init_msg_list	     IN VARCHAR2,
392  p_commit	               IN VARCHAR2,
393  p_template_id           IN NUMBER,
394  p_parent_template_id    IN NUMBER,
395  x_return_status	     OUT NOCOPY VARCHAR2,
396  x_msg_data	          OUT NOCOPY VARCHAR2,
397  x_msg_count	          OUT NOCOPY NUMBER
398 ) IS
399 
400 l_api_name                CONSTANT VARCHAR2(30) := 'merge_template_rule_assns';
401 l_api_version              CONSTANT NUMBER := 1;
402 
403 CURSOR csr_xprt_enabled IS
404 SELECT NVL(contract_expert_enabled,'N')
405    FROM okc_terms_templates_all
406  WHERE template_id = p_parent_template_id;
407 
408  l_xprt_enabled_flag    okc_terms_templates_all.contract_expert_enabled%TYPE;
409 
410 
411 BEGIN
412 
413   -- start debug log
414   IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
415      FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
416                     G_MODULE||l_api_name,
417                     '100: Entered '||G_PKG_NAME ||'.'||l_api_name);
418   END IF;
419 
420     -- Standard call to check for call compatibility.
421     IF NOT FND_API.Compatible_API_Call( l_api_version, p_api_version, l_api_name, G_PKG_NAME) THEN
422         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
423     END IF;
424 
425     IF FND_API.to_Boolean( p_init_msg_list ) THEN
426       FND_MSG_PUB.initialize;
427     END IF;
428 
429   x_return_status :=  G_RET_STS_SUCCESS;
430 
431   -- Delete Parent Template Rules
432      DELETE FROM okc_xprt_template_rules
433 	     WHERE  template_id = p_parent_template_id;
434 
435   -- Delete Parent Template Questions
436      DELETE FROM okc_xprt_question_orders
437 	      WHERE  template_id = p_parent_template_id;
438 
439   -- Check if the revision template is expert enabled and if not delete the rule data
440 
441   OPEN csr_xprt_enabled;
442   FETCH csr_xprt_enabled INTO l_xprt_enabled_flag;
443   CLOSE csr_xprt_enabled;
444 
445   IF l_xprt_enabled_flag = 'N' THEN
446 
447      -- Delete Parent Template Rules
448      DELETE FROM okc_xprt_template_rules
452      DELETE FROM okc_xprt_question_orders
449             WHERE  template_id = p_template_id;
450 
451      -- Delete Parent Template Questions
453             WHERE  template_id = p_template_id;
454 
455   ELSE
456      -- revision template IS expert enabled
457 
458      -- Update okc_xprt_template_rules for Revision template
459      UPDATE okc_xprt_template_rules
460 	   SET template_id = p_parent_template_id,
461 	       last_update_date = SYSDATE,
462 		  last_updated_by= FND_GLOBAL.USER_ID,
463 		  last_update_login= FND_GLOBAL.LOGIN_ID
464      WHERE template_id = p_template_id;
465 
466      -- Update okc_xprt_question_orders for Revision template
467      UPDATE okc_xprt_question_orders
468         SET template_id = p_parent_template_id,
469 	       last_update_date = SYSDATE,
470 		  last_updated_by= FND_GLOBAL.USER_ID,
471 		  last_update_login= FND_GLOBAL.LOGIN_ID
472      WHERE template_id = p_template_id;
473 
474  END IF;
475 
476 IF FND_API.To_Boolean( p_commit ) THEN
477    COMMIT WORK;
478 END IF;
479 
480 -- Standard call to get message count and if count is 1, get message info.
481 FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
482 
483   -- end debug log
484   IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
485      FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
486                     G_MODULE||l_api_name,
487                     '1000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
488   END IF;
489 
490 EXCEPTION
491 WHEN FND_API.G_EXC_ERROR THEN
492 
493   IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
494       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
495                      G_MODULE||l_api_name,
496                      '2000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
497   END IF;
498 
499   x_return_status := G_RET_STS_ERROR;
500   FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
501 
502 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
503 
504   IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
505       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
506                      G_MODULE||l_api_name,
507                      '3000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
508   END IF;
509 
510   x_return_status := G_RET_STS_UNEXP_ERROR;
511   FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
512 
513 WHEN OTHERS THEN
514 
515   IF (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL) THEN
516       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE ,
517                      G_MODULE||l_api_name,
518                      '4000: Leaving '||G_PKG_NAME ||'.'||l_api_name);
519   END IF;
520 
521   okc_Api.Set_Message(p_app_name     => G_APP_NAME,
522                       p_msg_name     => G_UNEXPECTED_ERROR,
523                       p_token1       => G_SQLCODE_TOKEN,
524                       p_token1_value => sqlcode,
525                       p_token2       => G_SQLERRM_TOKEN,
526                       p_token2_value => sqlerrm);
527   x_return_status := G_RET_STS_UNEXP_ERROR;
528   FND_MSG_PUB.Count_And_Get(p_encoded=>'F', p_count => x_msg_count, p_data => x_msg_data );
529 
530 END merge_template_rule_assns;
531 
532 
533 
534 
535 END OKC_XPRT_TMPL_RULE_ASSNS_PVT;