DBA Data[Home] [Help]

PACKAGE BODY: APPS.EGO_BROWSE_PVT

Source


1 PACKAGE BODY EGO_BROWSE_PVT AS
2 /* $Header: EGOVBRWB.pls 120.2 2006/03/17 05:33 bparthas noship $ */
3 
4  PROCEDURE Reload_ICG_Denorm_Hier_Table
5     (x_return_status    OUT     NOCOPY VARCHAR2)
6  IS
7   CURSOR item_catalog_group_cursor
8     IS
9     SELECT ITEM_CATALOG_GROUP_ID
10     FROM MTL_ITEM_CATALOG_GROUPS_B;
11 
12     l_status                 VARCHAR2(1);
13     l_industry               VARCHAR2(1);
14     l_schema                 VARCHAR2(30);
15     l_num_rows_inserted      NUMBER := 0;
16 
17   BEGIN --{
18 
19     IF FND_INSTALLATION.GET_APP_INFO('EGO', l_status, l_industry, l_schema) THEN --{
20        IF l_schema IS NULL    THEN
21           Raise_Application_Error (-20001, 'EGO Schema could not be located.');
22        END IF; --}
23     ELSE --{
24        Raise_Application_Error (-20001, 'EGO Schema could not be located.');
25     END IF; --}
26 
27 
28     --First delete all records in the denorm table.
29     DELETE EGO_ITEM_CAT_DENORM_HIER;
30 
31     --Now for each record in the MTL_ITEM_CATALOG_GROUPS_B table
32     --insert the complete child heirarchy into the denorm table.
33     FOR cat_rec IN item_catalog_group_cursor
34     LOOP --{
35       INSERT INTO EGO_ITEM_CAT_DENORM_HIER(PARENT_CATALOG_GROUP_ID, CHILD_CATALOG_GROUP_ID)
36       SELECT  cat_rec.ITEM_CATALOG_GROUP_ID PARENT_CATALOG_GROUP_ID
37             , IC.ITEM_CATALOG_GROUP_ID CHILD_CATALOG_GROUP_ID
38       FROM MTL_ITEM_CATALOG_GROUPS_B IC
39       CONNECT BY PRIOR ITEM_CATALOG_GROUP_ID = PARENT_CATALOG_GROUP_ID
40       START WITH ITEM_CATALOG_GROUP_ID = cat_rec.ITEM_CATALOG_GROUP_ID;
41 
42       l_num_rows_inserted := l_num_rows_inserted + SQL%ROWCOUNT;
43     END LOOP; --}
44 
45     --Comupte stats on EGO_ITEM_CAT_DENORM_HIER
46     IF (l_num_rows_inserted > 50) THEN --{
47       FND_STATS.GATHER_TABLE_STATS(l_schema, 'EGO_ITEM_CAT_DENORM_HIER');
48       FND_STATS.GATHER_INDEX_STATS(l_schema, 'EGO_ITEM_CAT_DENORM_HIER_U1');
49     END IF; --}
50 
51     x_return_status := 'S';
52 
53     EXCEPTION
54       WHEN OTHERS THEN
55         x_return_status := 'U';
56 
57   END Reload_ICG_Denorm_Hier_Table; --}
58 
59   PROCEDURE Sync_ICG_Denorm_Hier_Table (
60 	             p_catalog_group_id         IN NUMBER,
61 	             p_old_parent_id            IN NUMBER DEFAULT NULL,
62                      x_return_status    OUT     NOCOPY VARCHAR2
63                      ) IS
64   --{
65       CURSOR old_parent_hierarchy
66       IS
67         SELECT PARENT_CATALOG_GROUP_ID
68         FROM MTL_ITEM_CATALOG_GROUPS_B IC
69         CONNECT BY PRIOR PARENT_CATALOG_GROUP_ID = ITEM_CATALOG_GROUP_ID
70         START WITH ITEM_CATALOG_GROUP_ID = p_old_parent_id;
71 
72       CURSOR new_parent_hierarchy
73       IS
74         SELECT PARENT_CATALOG_GROUP_ID
75         FROM MTL_ITEM_CATALOG_GROUPS_B IC
76         CONNECT BY PRIOR PARENT_CATALOG_GROUP_ID = ITEM_CATALOG_GROUP_ID
77         START WITH ITEM_CATALOG_GROUP_ID = p_catalog_group_id;
78 
79       l_num_rows_updated      NUMBER := 0;
80       l_status                 VARCHAR2(1);
81       l_industry               VARCHAR2(1);
82       l_schema                 VARCHAR2(30);
83   --}
84   BEGIN
85   --{
86 
87       IF FND_INSTALLATION.GET_APP_INFO('EGO', l_status, l_industry, l_schema) THEN --{
88          IF l_schema IS NULL    THEN
89             Raise_Application_Error (-20001, 'EGO Schema could not be located.');
90          END IF; --}
91       ELSE --{
92          Raise_Application_Error (-20001, 'EGO Schema could not be located.');
93       END IF; --}
94 
95       --First delete the child hierarchy entries for the item catalog being create/updated
96       DELETE FROM EGO_ITEM_CAT_DENORM_HIER
97       WHERE PARENT_CATALOG_GROUP_ID = p_catalog_group_id;
98       l_num_rows_updated := l_num_rows_updated + SQL%ROWCOUNT;
99 
100       --Now insert the child hierarchy for the item catalog being create/updated
101       INSERT INTO EGO_ITEM_CAT_DENORM_HIER(PARENT_CATALOG_GROUP_ID
102 	                                 , CHILD_CATALOG_GROUP_ID)
103           ( SELECT p_catalog_group_id PARENT_CATALOG_GROUP_ID,
104 	           IC.ITEM_CATALOG_GROUP_ID CHILD_CATALOG_GROUP_ID
105             FROM MTL_ITEM_CATALOG_GROUPS_B IC
106             CONNECT BY PRIOR ITEM_CATALOG_GROUP_ID = PARENT_CATALOG_GROUP_ID
107             START WITH ITEM_CATALOG_GROUP_ID = p_catalog_group_id );
108       l_num_rows_updated := l_num_rows_updated + SQL%ROWCOUNT;
109 
110       IF(p_old_parent_id IS NOT NULL AND p_old_parent_id <> -1) THEN
111       --{
112 
113 	  --Delete the records for the current child hierarchy from the old parent hierarchy
114           DELETE FROM EGO_ITEM_CAT_DENORM_HIER
115           WHERE PARENT_CATALOG_GROUP_ID = p_old_parent_id
116             AND CHILD_CATALOG_GROUP_ID IN
117 	      ( SELECT IC.ITEM_CATALOG_GROUP_ID
118                 FROM MTL_ITEM_CATALOG_GROUPS_B IC
119                 CONNECT BY PRIOR ITEM_CATALOG_GROUP_ID = PARENT_CATALOG_GROUP_ID
120                 START WITH ITEM_CATALOG_GROUP_ID = p_catalog_group_id );
121           l_num_rows_updated := l_num_rows_updated + SQL%ROWCOUNT;
122 
123 	  --Now delete the records for the current child hierarchy for each parent in the old parent hierarchy,
124 	  FOR old_parent_rec IN old_parent_hierarchy
125 	  LOOP
126 	  --{
127               IF (old_parent_rec.PARENT_CATALOG_GROUP_ID IS NOT NULL) THEN
128 	      --{
129                   DELETE FROM EGO_ITEM_CAT_DENORM_HIER
130                   WHERE PARENT_CATALOG_GROUP_ID = old_parent_rec.PARENT_CATALOG_GROUP_ID
131                     AND CHILD_CATALOG_GROUP_ID IN
132         	      ( SELECT IC.ITEM_CATALOG_GROUP_ID
133                         FROM MTL_ITEM_CATALOG_GROUPS_B IC
134                         CONNECT BY PRIOR ITEM_CATALOG_GROUP_ID = PARENT_CATALOG_GROUP_ID
135                         START WITH ITEM_CATALOG_GROUP_ID = p_catalog_group_id );
136                   l_num_rows_updated := l_num_rows_updated + SQL%ROWCOUNT;
137 	      --}
138 	      END IF;
139 	  --}
140 	  END LOOP;
141 
142       --}
143       END IF;
144 
145       --Now insert the records for the current child hierarchy for each parent in the new parent hierarchy,
146       FOR new_parent_rec IN new_parent_hierarchy
147       LOOP
148       --{
149           IF (new_parent_rec.PARENT_CATALOG_GROUP_ID IS NOT NULL) THEN
150           --{
151               INSERT INTO EGO_ITEM_CAT_DENORM_HIER(PARENT_CATALOG_GROUP_ID
152 	                                         , CHILD_CATALOG_GROUP_ID)
153         	  ( SELECT new_parent_rec.PARENT_CATALOG_GROUP_ID PARENT_CATALOG_GROUP_ID,
154 		           IC.ITEM_CATALOG_GROUP_ID CHILD_CATALOG_GROUP_ID
155                     FROM MTL_ITEM_CATALOG_GROUPS_B IC
156                     CONNECT BY PRIOR ITEM_CATALOG_GROUP_ID = PARENT_CATALOG_GROUP_ID
157                     START WITH ITEM_CATALOG_GROUP_ID = p_catalog_group_id );
158               l_num_rows_updated := l_num_rows_updated + SQL%ROWCOUNT;
159           --}
160 	  END IF;
161       --}
162       END LOOP;
163 
164     --Comupte stats on EGO_ITEM_CAT_DENORM_HIER
165     IF (l_num_rows_updated > 50) THEN --{
166       FND_STATS.GATHER_TABLE_STATS(l_schema, 'EGO_ITEM_CAT_DENORM_HIER');
167       FND_STATS.GATHER_INDEX_STATS(l_schema, 'EGO_ITEM_CAT_DENORM_HIER_U1');
168     END IF; --}
169 
170       x_return_status := 'S';
171 
172       EXCEPTION
173       WHEN OTHERS THEN
174         x_return_status := 'U';
175 
176   --}
177   END Sync_ICG_Denorm_Hier_Table;
178 
179 
180 
181 
182 END EGO_BROWSE_PVT;