DBA Data[Home] [Help]

PACKAGE BODY: APPS.HZ_POP_MRULE_SET_ATTR_V2PUB

Source


1 PACKAGE BODY HZ_POP_MRULE_SET_ATTR_V2PUB AS
2 /*$Header: ARHMSARB.pls 120.0 2005/05/25 21:08:26 achung noship $ */
3 
4 
5 /**
6  * PROCEDURE POP_MRULE_SET_ATTRIBUTES
7  *
8  * DESCRIPTION
9  *     This procedure populates all the primary and secondary attributes
10  *     of a condition match rule into the set.
11  *
12  * EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
13  *
14  * ARGUMENTS
15  *   IN:
16  *     p_mrule_set_id                 Match rule set id.
17  *
18  *   IN/OUT:
19  *   p_mrule_set_id  IN NUMBER
20  *   p_cond_mrule_id IN NUMBER
21  *   OUT:
22  *
23  * NOTES
24  *
25  * MODIFICATION HISTORY
26  *
27  *
28  *
29  */
30 PROCEDURE update_prim_display_order(p_mrule_set_id IN NUMBER);
31 PROCEDURE update_sec_display_order(p_mrule_set_id  IN NUMBER);
32 
33 PROCEDURE pop_mrule_set_attributes(p_mrule_set_id IN NUMBER)
34  IS
35  CURSOR c_insert_prim IS ( SELECT p.ATTRIBUTE_ID FROM
36  			   (SELECT  unique p1.ATTRIBUTE_ID
37                             FROM   HZ_MATCH_RULE_PRIMARY p1
38 		            WHERE  p1.match_rule_id in (Select unique condition_match_rule_id
39 			                               from hz_match_rule_conditions
40 			  	  		       where match_rule_set_id = p_mrule_set_id)
41                             UNION
42 			    (SELECT unique  attribute_id
43 			     from hz_match_rule_conditions
44 			     where match_rule_set_id = p_mrule_set_id
45 			     and attribute_id is not null
46 			    )
47 		           ) p
48                           WHERE NOT EXISTS (
49 			   SELECT  1
50                            FROM   HZ_MATCH_RULE_PRIMARY p1
51 		           WHERE  p1.match_rule_id = p_mrule_set_id
52 			   AND    p1.ATTRIBUTE_ID = p.ATTRIBUTE_ID
53 			  )
54 			 );
55 CURSOR c_delete_prim IS  SELECT primary_attribute_id
56 			 FROM HZ_MATCH_RULE_PRIMARY
57 			 WHERE match_rule_id = p_mrule_set_id
58 			 AND ATTRIBUTE_ID IN (SELECT  unique p1.ATTRIBUTE_ID
59 					      FROM   HZ_MATCH_RULE_PRIMARY p1
60 					      WHERE  p1.match_rule_id = p_mrule_set_id
61 					      MINUS
62 					       (SELECT  unique p1.ATTRIBUTE_ID
63 					         FROM   HZ_MATCH_RULE_PRIMARY p1
64 					         WHERE  p1.match_rule_id in (Select unique condition_match_rule_id
65 					   			          from hz_match_rule_conditions
66 									  where match_rule_set_id = p_mrule_set_id)
67 					          UNION
68 						  (SELECT unique  attribute_id
69 						     from hz_match_rule_conditions
70 						     where match_rule_set_id = p_mrule_set_id
71 						     and attribute_id is not null
72 						  )
73 					       )
74 					      );
75 CURSOR c_insert_sec IS ( SELECT  s1.ATTRIBUTE_ID
76                          FROM   HZ_MATCH_RULE_SECONDARY s1
77 		         WHERE  s1.match_rule_id in (Select unique condition_match_rule_id
78 			                               from hz_match_rule_conditions
79 				  		       where match_rule_set_id = p_mrule_set_id)
80                           AND NOT EXISTS(SELECT 1 FROM HZ_MATCH_RULE_SECONDARY s2
81 				         WHERE  s2.match_rule_id = p_mrule_set_id
82 					 AND    s2.ATTRIBUTE_ID = s1.ATTRIBUTE_ID
83 					 )
84 			 );
85 
86 CURSOR c_delete_sec IS  SELECT secondary_attribute_id
87 			 FROM HZ_MATCH_RULE_SECONDARY
88 			 WHERE match_rule_id = p_mrule_set_id
89 			 AND ATTRIBUTE_ID IN (SELECT  unique s1.ATTRIBUTE_ID
90 					      FROM   HZ_MATCH_RULE_SECONDARY s1
91 					      WHERE  s1.match_rule_id = p_mrule_set_id
92 					      MINUS
93 					      SELECT  unique s1.ATTRIBUTE_ID
94 					      FROM   HZ_MATCH_RULE_SECONDARY s1
95 					      WHERE  s1.match_rule_id in (Select unique condition_match_rule_id
96 							  	          from hz_match_rule_conditions
97 									  where match_rule_set_id = p_mrule_set_id)
98 					     );
99 
100 TYPE t_attr_id_list IS TABLE OF NUMBER index by binary_integer;
101 v_attr_id_list t_attr_id_list;
102 x_primary_attribute_id NUMBER;
103 x_secondary_attribute_id NUMBER;
104 l_object_version_number NUMBER;
105 
106  BEGIN
107 
108   l_object_version_number :=1;
109 
110   /* Populate the primary attributes */
111 
112   OPEN c_insert_prim;
113   FETCH c_insert_prim BULK COLLECT INTO v_attr_id_list;
114   CLOSE c_insert_prim;
115 
116   IF v_attr_id_list.COUNT >0 THEN
117     FOR i IN  v_attr_id_list.FIRST..v_attr_id_list.LAST
118     LOOP
119      HZ_MATCH_RULE_PRIMARY_PKG.INSERT_ROW(x_primary_attribute_id,               --px_PRIMARY_ATTRIBUTE_ID
120 			                  p_mrule_set_id,                       --p_MATCH_RULE_ID
121 					  v_attr_id_list(i),                    --p_ATTRIBUTE_ID
122 					  NULL,			                --p_ACTIVE_FLAG
123 					  NULL,			                --p_FILTER_FLAG
124 					  HZ_UTILITY_V2PUB.CREATED_BY,          --p_CREATED_BY
125 					  HZ_UTILITY_V2PUB.CREATION_DATE,       --p_CREATION_DATE
126 					  HZ_UTILITY_V2PUB.LAST_UPDATE_LOGIN,   --p_LAST_UPDATE_LOGIN
127 					  HZ_UTILITY_V2PUB.LAST_UPDATE_DATE,    --p_LAST_UPDATE_DATE
128 					  HZ_UTILITY_V2PUB.LAST_UPDATED_BY,     --p_LAST_UPDATED_BY
129 					  l_object_version_number               --p_OBJECT_VERSION_NUMBER
130 					  );
131     x_primary_attribute_id := NULL;
132     END LOOP;
133   END IF;
134 
135   /* Delete the unnecessary primary attributes */
136 
137   OPEN c_delete_prim;
138   FETCH c_delete_prim BULK COLLECT INTO v_attr_id_list;
139   CLOSE c_delete_prim;
140 
141   IF v_attr_id_list.COUNT >0 THEN
142     FORALL i IN  v_attr_id_list.FIRST..v_attr_id_list.LAST
143      DELETE FROM HZ_MATCH_RULE_PRIMARY
144      WHERE PRIMARY_ATTRIBUTE_ID = v_attr_id_list(i);
145   END IF;
146   /* Update the primary attributes display order */
147   update_prim_display_order(p_mrule_set_id);
148 
149   /* Populate the secondary attributes */
150 
151   OPEN c_insert_sec;
152   FETCH c_insert_sec BULK COLLECT INTO v_attr_id_list;
153   CLOSE c_insert_sec;
154 
155   IF v_attr_id_list.COUNT >0 THEN
156     FOR i IN v_attr_id_list.FIRST..v_attr_id_list.LAST
157     LOOP
158      HZ_MATCH_RULE_SECONDARY_PKG.INSERT_ROW(x_secondary_attribute_id,           --px_SECONDARY_ATTRIBUTE_ID
159 			                  p_mrule_set_id,                       --p_MATCH_RULE_ID
160 					  v_attr_id_list(i),                    --p_ATTRIBUTE_ID
161 					  0,			                --p_SCORE
162 					  NULL,			                --p_ACTIVE_FLAG
163 					  HZ_UTILITY_V2PUB.CREATED_BY,          --p_CREATED_BY
164 					  HZ_UTILITY_V2PUB.CREATION_DATE,       --p_CREATION_DATE
165 					  HZ_UTILITY_V2PUB.LAST_UPDATE_LOGIN,   --p_LAST_UPDATE_LOGIN
166 					  HZ_UTILITY_V2PUB.LAST_UPDATE_DATE,    --p_LAST_UPDATE_DATE
167 					  HZ_UTILITY_V2PUB.LAST_UPDATED_BY,     --p_LAST_UPDATED_BY
168 					  l_object_version_number               --p_OBJECT_VERSION_NUMBER
169 					  );
170       x_secondary_attribute_id := NULL;
171     END LOOP;
172   END IF;
173 
174  /* Delete the unnecessary secondary attributes */
175 
176   OPEN c_delete_sec;
177   FETCH c_delete_sec BULK COLLECT INTO v_attr_id_list;
178   CLOSE c_delete_sec;
179 
180   IF v_attr_id_list.COUNT >0 THEN
181     FORALL i IN v_attr_id_list.FIRST..v_attr_id_list.LAST
182      DELETE FROM HZ_MATCH_RULE_SECONDARY
183      WHERE SECONDARY_ATTRIBUTE_ID = v_attr_id_list(i);
184   END IF;
185 
186  /* Update the secondary attributes display order */
187   update_sec_display_order(p_mrule_set_id);
188 
189  END;
190 
191 PROCEDURE update_prim_display_order(p_mrule_set_id NUMBER)
192 IS
193 l_g_miss_num NUMBER;
194 TYPE t_prim_attr_list IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
195 
196 v_attr_id_list    t_prim_attr_list;
197 v_attr_order_list t_prim_attr_list;
198 
199 CURSOR c_prim_attr IS
200 	SELECT unique  attribute_id,0 display_order
201 	from hz_match_rule_conditions
202 	where match_rule_set_id = p_mrule_set_id
203 	and attribute_id is not null
204 	UNION
205 	SELECT  p1.ATTRIBUTE_ID,min(nvl(p1.display_order,l_g_miss_num)) display_order
206 	FROM    HZ_MATCH_RULE_PRIMARY p1
207 	WHERE  EXISTS  (Select 1
208 			from  hz_match_rule_conditions cond1
209 			where cond1.match_rule_set_id = p_mrule_set_id
210 			and   cond1.condition_match_rule_id = p1.match_rule_id
211 		       )
212 	AND NOT EXISTS (SELECT 1 from hz_match_rule_conditions cond2
213 			where cond2.match_rule_set_id = p_mrule_set_id
214 			and  cond2.attribute_id = p1.attribute_id
215 			)
216 	group by p1.ATTRIBUTE_ID;
217 
218 
219 BEGIN
220  l_g_miss_num := FND_API.G_MISS_NUM;
221 
222  OPEN c_prim_attr;
223  FETCH c_prim_attr BULK COLLECT INTO v_attr_id_list,v_attr_order_list;
224  CLOSE c_prim_attr;
225  FORALL i IN v_attr_id_list.FIRST..v_attr_id_list.LAST
226   UPDATE HZ_MATCH_RULE_PRIMARY
227   SET   DISPLAY_ORDER = decode(v_attr_order_list(i),l_g_miss_num,null,v_attr_order_list(i))
228   WHERE match_rule_id = p_mrule_set_id
229   AND   attribute_id = v_attr_id_list(i);
230 
231 END;
232 
233 
234 PROCEDURE update_sec_display_order(p_mrule_set_id  IN NUMBER)
235 IS
236 l_g_miss_num NUMBER;
237 TYPE t_sec_attr_list IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
238 v_attr_id_list    t_sec_attr_list;
239 v_attr_order_list t_sec_attr_list;
240 
241 
242 CURSOR c_sec_attr IS
243 	SELECT s1.ATTRIBUTE_ID,min(nvl(s1.display_order,l_g_miss_num)) display_order
244 	FROM    HZ_MATCH_RULE_SECONDARY s1
245 	WHERE  EXISTS  (Select 1
246 			from  hz_match_rule_conditions cond1
247 			where cond1.match_rule_set_id = p_mrule_set_id
248 			and   cond1.condition_match_rule_id = s1.match_rule_id
249 		       )
250 	group by s1.ATTRIBUTE_ID;
251 
252 
253 BEGIN
254  l_g_miss_num := FND_API.G_MISS_NUM;
255 
256  OPEN c_sec_attr;
257  FETCH c_sec_attr BULK COLLECT INTO v_attr_id_list,v_attr_order_list;
258  CLOSE c_sec_attr;
259 
260  FORALL i IN v_attr_id_list.FIRST..v_attr_id_list.LAST
261   UPDATE HZ_MATCH_RULE_SECONDARY
262   SET   DISPLAY_ORDER = decode(v_attr_order_list(i),l_g_miss_num,null,v_attr_order_list(i))
263   WHERE match_rule_id = p_mrule_set_id
264   AND   attribute_id  = v_attr_id_list(i);
265 
266 
267 END;
268 
269 
270 END HZ_POP_MRULE_SET_ATTR_V2PUB;
271