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