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