[Home] [Help]
PACKAGE BODY: APPS.AMS_SYNC_CALENDAR_PUB
Source
1 PACKAGE BODY AMS_Sync_Calendar_PUB AS
2 /* $Header: amspcalb.pls 115.16 2004/05/13 10:53:07 vmodur ship $ */
3
4 AMS_DEBUG_HIGH_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_HIGH);
5 AMS_DEBUG_LOW_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW);
6 AMS_DEBUG_MEDIUM_ON boolean := FND_MSG_PUB.CHECK_MSG_LEVEL(FND_MSG_PUB.G_MSG_LVL_DEBUG_MEDIUM);
7
8 PROCEDURE Sync_Calendar_Items
9 (
10 ERRBUF OUT NOCOPY VARCHAR2,
11 RETCODE OUT NOCOPY NUMBER,
12 p_full_mode IN VARCHAR2 := 'N'
13 )
14 IS
15 --Initialise return status to success.
16
17 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
18
19 l_msg_count NUMBER := 0;
20 l_msg_data VARCHAR2(2000) := NULL;
21 l_api_version NUMBER := 1.0 ;
22 -- Bug fix #3159119
23 p_resource_id NUMBER;
24
25 CURSOR c_get_delete_criteria IS
26 SELECT obj.CRITERIA_ID
27 , obj.OBJECT_TYPE_CODE
28 , obj.CUSTOM_SETUP_ID
29 , obj.ACTIVITY_TYPE_CODE
30 , obj.ACTIVITY_ID
31 , obj.STATUS_ID
32 , obj.PRIORITY_ID
33 , obj.OBJECT_ID
34 , obj.CRITERIA_START_DATE
35 , obj.CRITERIA_END_DATE
36 , obj.LAST_UPDATE_DATE
37 , obj.CRITERIA_ENABLED
38 , obj.CRITERIA_DELETED
39 FROM ams_calendar_criteria obj
40 WHERE (obj.CRITERIA_ENABLED = 'N'
41 OR obj.CRITERIA_DELETED = 'Y');
42
43 CURSOR c_get_create_criteria IS
44 SELECT obj.CRITERIA_ID
45 , obj.OBJECT_TYPE_CODE
46 , obj.CUSTOM_SETUP_ID
47 , obj.ACTIVITY_TYPE_CODE
48 , obj.ACTIVITY_ID
49 , obj.STATUS_ID
50 , obj.PRIORITY_ID
51 , obj.OBJECT_ID
52 , obj.CRITERIA_START_DATE
53 , obj.CRITERIA_END_DATE
54 , obj.LAST_UPDATE_DATE
55 , obj.CRITERIA_ENABLED
56 , obj.CRITERIA_DELETED
57 FROM ams_calendar_criteria obj
58 WHERE (obj.CRITERIA_ENABLED = 'Y'
59 AND obj.CRITERIA_DELETED = 'N');
60
61 l_get_criteria_rec ams_criteria_rec;
62 BEGIN
63 FND_MSG_PUB.initialize;
64
65 OPEN c_get_delete_criteria;
66 LOOP
67 FETCH c_get_delete_criteria INTO l_get_criteria_rec;
68 IF (c_get_delete_criteria%NOTFOUND) THEN
69 l_return_status := FND_API.G_RET_STS_SUCCESS;
70 --CLOSE c_get_delete_criteria;
71 l_get_criteria_rec := NULL;
72 EXIT;
73 ELSE
74 Sync_Cal_Items ( x_full_mode => p_full_mode
75 , x_return_status => l_return_status
76 , x_msg_count => l_msg_count
77 , x_msg_data => l_msg_data
78 , x_resource_id => p_resource_id
79 , x_criteria_rec => l_get_criteria_rec
80 , x_remove_only => FND_API.G_TRUE
81 );
82 END IF;
83 END LOOP;
84 CLOSE c_get_delete_criteria;
85
86 OPEN c_get_create_criteria;
87 LOOP
88 FETCH c_get_create_criteria INTO l_get_criteria_rec;
89 IF (c_get_create_criteria%NOTFOUND) THEN
90 l_return_status := FND_API.G_RET_STS_SUCCESS;
91 --CLOSE c_get_create_criteria;
92 l_get_criteria_rec := NULL;
93 EXIT;
94 ELSE
95 Sync_Cal_Items ( x_full_mode => p_full_mode
96 , x_return_status => l_return_status
97 , x_msg_count => l_msg_count
98 , x_msg_data => l_msg_data
99 , x_resource_id => p_resource_id
100 , x_criteria_rec => l_get_criteria_rec
101 );
102 END IF;
103 END LOOP;
104 CLOSE c_get_create_criteria;
105
106 -- Write_log ;
107 Ams_Utility_Pvt.Write_Conc_log ;
108
109 IF(l_return_status = FND_API.G_RET_STS_SUCCESS) THEN
110 retcode :=0;
111 ELSE
112 retcode := 2;
113 errbuf := l_msg_data ;
114 END IF;
115 COMMIT;
116 END Sync_Calendar_Items;
117
118
119 PROCEDURE Sync_Cal_Items
120 (
121 x_full_mode IN VARCHAR2 := 'N',
122 x_api_version IN NUMBER := 1.0,
123 x_init_msg_list IN VARCHAR2 := FND_API.G_False,
124 x_commit IN VARCHAR2 := FND_API.G_False,
125 x_return_status OUT NOCOPY VARCHAR2,
126 x_msg_count OUT NOCOPY NUMBER,
127 x_msg_data OUT NOCOPY VARCHAR2,
128 x_resource_id IN NUMBER,
129 x_criteria_rec IN ams_criteria_rec,
130 x_remove_only IN VARCHAR2 := FND_API.G_False
131 )
132 IS
133 l_inc_mode_start_date FND_CONCURRENT_REQUESTS.ACTUAL_START_DATE%type;
134 l_cal_pvt_rec AMS_Sync_Calendar_PVT.cal_criteria_rec;
135 BEGIN
136 --
137 -- Standard Start of API savepoint
138 --
139 SAVEPOINT AMS_SYNC_CALENDAR;
140 --
141 -- Debug Message
142 --
143 -- IF (AMS_DEBUG_HIGH_ON) THEN AMS_Utility_PVT.debug_message(l_api_name || ': start'); END IF;
144
145 --
146 -- Initialize message list IF x_init_msg_list is set to TRUE.
147 --
148 IF FND_API.to_Boolean( x_init_msg_list ) THEN
149 FND_MSG_PUB.initialize;
150 END IF;
151
152 --
153 -- Standard call to check for call compatibility.
154 --
155 /* IF NOT FND_API.Compatible_API_Call ( 1.0,
156 x_api_version,
157 l_api_name,
158 G_PKG_NAME)
159 THEN
160 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
161 END IF;
162 */
163 /* No Longer needed 3568819
164 BEGIN
165 SELECT MAX(ACTUAL_START_DATE)
166 INTO l_inc_mode_start_date
167 FROM FND_CONCURRENT_REQUESTS
168 WHERE ( PROGRAM_APPLICATION_ID = '530'
169 AND CONCURRENT_PROGRAM_ID = (SELECT CONCURRENT_PROGRAM_ID
170 FROM FND_CONCURRENT_PROGRAMS
171 WHERE CONCURRENT_PROGRAM_NAME = 'AMSSYNCCAL')
172 AND STATUS_CODE = 'C'
173 AND PHASE_CODE = 'C' );
174 EXCEPTION
175 WHEN NO_DATA_FOUND THEN
176 l_inc_mode_start_date := NULL;
177 END;
178 */
179 --
180 -- Initialize API return status to success
181 --
182 x_return_status := FND_API.G_RET_STS_SUCCESS;
183
184 l_cal_pvt_rec.OBJECT_TYPE := x_criteria_rec.OBJECT_TYPE_CODE;
185 l_cal_pvt_rec.RESOURCE_ID := x_resource_id;
186 -- Bug fix #3159119
187 -- SELECT employee_id INTO l_cal_pvt_rec.RESOURCE_TYPE FROM ams_jtf_rs_emp_v WHERE resource_id = x_resource_id;
188 l_cal_pvt_rec.RESOURCE_TYPE := 'RS_GROUP';
189
190 l_cal_pvt_rec.CUSTOM_SETUP_ID := x_criteria_rec.CUSTOM_SETUP_ID;
191 l_cal_pvt_rec.ACTIVITY_TYPE_CODE := x_criteria_rec.ACTIVITY_TYPE_CODE;
192 l_cal_pvt_rec.ACTIVITY_ID := x_criteria_rec.ACTIVITY_ID;
193 l_cal_pvt_rec.STATUS_ID := x_criteria_rec.STATUS_ID;
194 l_cal_pvt_rec.PRIORITY_ID := x_criteria_rec.PRIORITY_ID;
195 l_cal_pvt_rec.OBJECT_ID := x_criteria_rec.OBJECT_ID;
196 l_cal_pvt_rec.CRITERIA_START_DATE := x_criteria_rec.CRITERIA_START_DATE;
197 l_cal_pvt_rec.CRITERIA_END_DATE := x_criteria_rec.CRITERIA_END_DATE;
198 l_cal_pvt_rec.CRITERIA_ENABLED := x_criteria_rec.CRITERIA_ENABLED;
199 l_cal_pvt_rec.CRITERIA_DELETED := x_criteria_rec.CRITERIA_DELETED;
200
201 --Regardless of mode (INCREMENTAL/ FULL) sync criteria which have been modified after the the 'last run date' i.e. l_inc_mode_start_date.
202 -- Commented for Bug Fix 3568819
203 /*
204 IF ((l_inc_mode_start_date is not NULL) AND (x_criteria_rec.LAST_UPDATE_DATE >= l_inc_mode_start_date)) THEN
205 IF (x_remove_only = 'Y') THEN
206 AMS_Sync_Calendar_PVT.Sync_Cal_Items( x_remove_only => FND_API.G_True
207 , x_return_status => x_return_status
208 , x_msg_count => x_msg_count
209 , x_msg_data => x_msg_data
210 , x_criteria_rec => l_cal_pvt_rec
211 );
212 ELSE
213 AMS_Sync_Calendar_PVT.Sync_Cal_Items(
214 x_return_status => x_return_status
215 , x_msg_count => x_msg_count
216 , x_msg_data => x_msg_data
217 , x_criteria_rec => l_cal_pvt_rec
218 );
219 END IF;
220 ELSE
221 IF (
222 (l_inc_mode_start_date is NULL) OR
223 (x_full_mode = 'Y' AND x_criteria_rec.LAST_UPDATE_DATE < l_inc_mode_start_date)
224 ) THEN
225 IF (x_remove_only = 'Y') THEN
226 AMS_Sync_Calendar_PVT.Sync_Cal_Items( x_remove_only => FND_API.G_True
227 , x_return_status => x_return_status
228 , x_msg_count => x_msg_count
229 , x_msg_data => x_msg_data
230 , x_criteria_rec => l_cal_pvt_rec
231 );
232 ELSE
233 AMS_Sync_Calendar_PVT.Sync_Cal_Items(
234 x_return_status => x_return_status
235 , x_msg_count => x_msg_count
236 , x_msg_data => x_msg_data
237 , x_criteria_rec => l_cal_pvt_rec
238 );
239 END IF;
240 END IF;
241 END IF;
242 */
243
244 -- Bug Fix for 3568819. There is no sense in the Full Mode Logic as there is no dates to
245 -- compare in the ams_calendar_criteria. Using last_update_date is not correct. As of today
246 -- it will always be full mode. Also x_remove_only is T or F and not Y/N
247
248 IF (x_remove_only = FND_API.G_TRUE) THEN
249 AMS_Sync_Calendar_PVT.Sync_Cal_Items( x_remove_only => FND_API.G_True
250 , x_return_status => x_return_status
251 , x_msg_count => x_msg_count
252 , x_msg_data => x_msg_data
253 , x_criteria_rec => l_cal_pvt_rec
254 );
255 ELSE
256 AMS_Sync_Calendar_PVT.Sync_Cal_Items(
257 x_return_status => x_return_status
258 , x_msg_count => x_msg_count
259 , x_msg_data => x_msg_data
260 , x_criteria_rec => l_cal_pvt_rec
261 );
262 END IF;
263
264 EXCEPTION
265 WHEN FND_API.G_EXC_ERROR
266 THEN
267 -- ROLLBACK TO delete_item_pub;
268 x_return_status := FND_API.G_RET_STS_ERROR;
269 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
270 , p_data => x_msg_data
271 );
272 WHEN FND_API.G_EXC_UNEXPECTED_ERROR
273 THEN
274 -- ROLLBACK TO delete_item_pub;
275 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
276 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
277 , p_data => x_msg_data
278 );
279 WHEN OTHERS
280 THEN
281 -- ROLLBACK TO delete_item_pub;
282 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
283 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
284 THEN
285 FND_MSG_PUB.Add_Exc_Msg('AMS_Sync_Calendar_PUB'
286 , 'Sync_Calendar_Items'
287 );
288 END IF;
289 FND_MSG_PUB.Count_And_Get( p_count => x_msg_count
290 , p_data => x_msg_data
291 );
292 END Sync_Cal_Items;
293
294 END AMS_Sync_Calendar_PUB ;