[Home] [Help]
PACKAGE BODY: APPS.EGO_RULES_UTIL_PUB
Source
1 PACKAGE BODY EGO_RULES_UTIL_PUB AS
2 /* $Header: EGORUTLB.pls 120.0.12010000.2 2009/08/14 02:34:34 chulhale noship $ */
3
4 G_PKG_NAME CONSTANT VARCHAR2(30):='EGO_RULES_UTIL_PUB';
5
6 -- Start of comments
7 -- API name : Get_Run_Rule_Result
8 -- Type : Public
9 -- Pre-reqs : None.
10 -- Function : Customized Get_Run_Rule_Result procudure based on information
11 -- related to user, entity, and object etc.
12 -- Parameters :
13 -- IN : p_rule_id IN VARCHAR2(150)
14 -- p_entity_type_name IN VARCHAR2(150)
15 -- p_data_level_name IN VARCHAR2(150)
16 -- p_entity_key_pairs IN EGO_COL_NAME_VALUE_PAIR_ARRAY
17 -- p_additional_key_pairs IN EGO_COL_NAME_VALUE_PAIR_ARRAY
18 -- OUT : x_rule_result OUT VARCHAR2 = 'T' if Rule_Result is TRUE
19 -- 'F' if Rule_Result is FALSE
20 -- 'U' Defalut and if there are unexpected errors
21 -- Oracle API Standard Parameters :
22 -- IN : p_api_version IN NUMBER Required
23 -- p_init_msg_list IN VARCHAR2 default FND_API.G_FALSE
24 -- Optional
25 -- p_commit IN VARCHAR2 default FND_API.G_FALSE
26 -- Optional
27 -- p_validation_level IN NUMBER default FND_API.G_VALID_LEVEL_FULL
28 -- Optional
29 -- OUT : x_return_status OUT VARCHAR2(1)
30 -- x_msg_count OUT NUMBER
31 -- x_msg_data OUT VARCHAR2(2000)
32 --
33 -- Version : Current version 1.0
34 -- Previous version N/A
35 -- Initial version 1.0
36 --
37 -- End of comments
38
39 PROCEDURE Get_Run_Rule_Result
40 (
41 --program parameters
42 p_rule_id IN VARCHAR2
43 ,p_entity_type_name IN VARCHAR2
44 ,p_data_level_name IN VARCHAR2
45 ,p_entity_key_pairs IN EGO_COL_NAME_VALUE_PAIR_ARRAY default NULL
46 ,p_additional_key_pairs IN EGO_COL_NAME_VALUE_PAIR_ARRAY default NULL
47 ,x_rule_result OUT NOCOPY VARCHAR2
48
49 --standard parameters
50 ,p_api_version IN NUMBER default 1.0
51 ,p_init_msg_list IN VARCHAR2 default FND_API.G_FALSE
52 ,p_commit IN VARCHAR2 default FND_API.G_FALSE
53 ,p_validation_level IN NUMBER default FND_API.G_VALID_LEVEL_FULL
54 ,x_return_status OUT NOCOPY VARCHAR2
55 ,x_msg_count OUT NOCOPY NUMBER
56 ,x_msg_data OUT NOCOPY VARCHAR2
57 )
58 IS
59 l_api_name CONSTANT VARCHAR2(30) := 'Get_Run_Rule_Result';
60 l_api_version CONSTANT NUMBER := 1.0;
61 l_stmt_num NUMBER; --for debuging index
62
63 l_index NUMBER;
64
65 l_batch_id VARCHAR2(150);
66 l_item_id VARCHAR2(150);
67 l_org_id VARCHAR2(150);
68 l_rev_id VARCHAR2(150);
69
70 l_item_supp_id VARCHAR2(150);
71 l_item_supp_site_id VARCHAR2(150);
72
73 BEGIN
74 -- Leave starting point of this procedure at fnd_log_message
75 l_stmt_num := 0;
76 IF FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
77 fnd_log.string(FND_LOG.LEVEL_PROCEDURE
78 ,G_PKG_NAME||'.'||l_api_name
79 ,'Enter '||G_PKG_NAME||'.'||l_api_name||' '
80 ||to_char(sysdate, 'dd-mon-yyyy hh:mi:ss') );
81 END IF; --for fnd_log
82
83 -- Standard call to check for call compatibility.
84 l_stmt_num := 3;
85 IF NOT FND_API.Compatible_API_Call ( l_api_version
86 ,p_api_version
87 ,l_api_name
88 ,G_PKG_NAME )
89 THEN
90 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
91 END IF;
92
93 -- Initialize message list if p_init_msg_list is set to TRUE.
94 l_stmt_num := 5;
95 IF FND_API.to_Boolean( p_init_msg_list ) THEN
96 FND_MSG_PUB.initialize;
97 END IF;
98
99 -- Initialize OUT parameters
100 x_return_status := FND_API.G_RET_STS_SUCCESS;
101 x_rule_result := 'U';
102
103 -- Example of getting entity_keys from p_entity_key_pairs
104 l_index := p_entity_key_pairs.FIRST;
105 WHILE (l_index IS NOT NULL)
106 LOOP
107 IF ((p_entity_key_pairs(l_index).NAME IS NOT NULL)
108 AND (p_entity_key_pairs(l_index).NAME = 'BATCH_ID')) THEN
109 l_batch_id := p_entity_key_pairs(l_index).VALUE;
110 ELSIF ((p_entity_key_pairs(l_index).NAME IS NOT NULL)
111 AND (p_entity_key_pairs(l_index).NAME = 'ITEM_ID')) THEN
112 l_item_id := p_entity_key_pairs(l_index).VALUE;
113 ELSIF ((p_entity_key_pairs(l_index).NAME IS NOT NULL)
114 AND (p_entity_key_pairs(l_index).NAME = 'ORG_ID')) THEN
115 l_org_id := p_entity_key_pairs(l_index).VALUE;
116 ELSIF ((p_entity_key_pairs(l_index).NAME IS NOT NULL)
117 AND (p_entity_key_pairs(l_index).NAME = 'REV_ID')) THEN
118 l_rev_id := p_entity_key_pairs(l_index).VALUE;
119 END IF;
120 l_index := p_entity_key_pairs.NEXT(l_index);
121 END LOOP;
122
123 -- Example of getting additional_keys from p_additional_key_pairs
124 -- p_entity_type_anme 'ITEM', 'ITEM_SUPPLIER', 'ITEM_RETAILERSITE', 'ITEM_SUPPLIERSITE', 'ITEM_SUPPLIERSITE_RETAILERSITE' etc.
125 -- p_data_level_name 'ITEM', 'ITEM_ORG', 'ITEM_SUP', 'ITEM_SUP_SITE', 'ITEM_SUP_SITE_ORG' etc.
126 IF ((p_data_level_name = 'ITEM_SUP')
127 OR (p_data_level_name = 'ITEM_SUP_SITE')
128 OR (p_data_level_name = 'ITEM_SUP_SITE_ORG')) THEN
129 l_index := p_additional_key_pairs.FIRST;
130 WHILE (l_index IS NOT NULL)
131 LOOP
132 IF ((p_additional_key_pairs(l_index).NAME IS NOT NULL)
133 AND (p_additional_key_pairs(l_index).NAME = 'PK1_VALUE')) THEN
134 l_item_supp_id := p_additional_key_pairs(l_index).VALUE;
135 ELSIF ((p_additional_key_pairs(l_index).NAME IS NOT NULL)
136 AND (p_additional_key_pairs(l_index).NAME = 'PK2_VALUE')) THEN
137 l_item_supp_site_id := p_additional_key_pairs(l_index).VALUE;
138 END IF;
139 l_index := p_additional_key_pairs.NEXT(l_index);
140 END LOOP;
141 END IF;
142
143 -- Example of leaving log messages
144 IF FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL THEN
145 fnd_log.string(FND_LOG.LEVEL_STATEMENT
146 ,G_PKG_NAME||'.'||l_api_name
147 ,' p_rule_id=>'|| p_rule_id ||','
148 ||' p_data_level_name=>'|| p_data_level_name ||','
149 ||' p_entity_type_name=>'|| p_entity_type_name ||','
150 ||' l_batch_id=>'|| l_batch_id ||','
151 ||' l_item_id=>'|| l_item_id ||','
152 ||' l_org_id=>'|| l_org_id ||','
153 ||' l_rev_id=>'|| l_rev_id ||','
154 ||' l_item_supp_id=>'|| l_item_supp_id ||','
155 ||' l_item_sup_site_id=>'|| l_item_supp_site_id );
156 END IF; --fnd_log
157
158
159
160
161
162
163
164
165
166
167
168
169
170 -- Standard check of p_commit
171 IF FND_API.To_Boolean( p_commit ) THEN
172 COMMIT WORK;
173 END IF;
174
175 -- Standard call to get message count and if count is 1, get message info.
176 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count
177 ,p_data => x_msg_data);
178
179 IF ( FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
180 fnd_log.string(FND_LOG.LEVEL_PROCEDURE
181 ,G_PKG_NAME||'.'||l_api_name
182 ,'Exit '||G_PKG_NAME||'.'||l_api_name||' '
183 ||to_char(sysdate, 'dd-mon-yyyy hh:mi:ss'));
184 END IF; --for fnd_log
185
186
187 EXCEPTION
188 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
189 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count
190 ,p_data => x_msg_data);
191 IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
192 fnd_log.string(FND_LOG.LEVEL_EXCEPTION
193 ,G_PKG_NAME||'.'||l_api_name
194 ,G_PKG_NAME||'.'||l_api_name
195 ||' FND_API.G_EXC_EXCEPTION at l_stmt_num = '
196 || l_stmt_num|| ': ' ||sqlerrm);
197 END IF; --for fnd_log
198 x_rule_result := 'U';
199 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
200 WHEN OTHERS THEN
201 FND_MSG_PUB.Count_And_Get ( p_count => x_msg_count
202 ,p_data => x_msg_data);
203 IF ( FND_LOG.LEVEL_EXCEPTION >= FND_LOG.G_CURRENT_RUNTIME_LEVEL ) THEN
204 fnd_log.string(FND_LOG.LEVEL_EXCEPTION
205 ,G_PKG_NAME||'.'||l_api_name
206 ,G_PKG_NAME||'.'||l_api_name
207 ||' Others Exception at l_stmt_num = '
208 || l_stmt_num|| ': ' ||sqlerrm);
209 END IF; --for fnd_log
210 x_rule_result := 'U';
211 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
212 END Get_Run_Rule_Result;
213
214 END EGO_RULES_UTIL_PUB;