[Home] [Help]
PACKAGE BODY: APPS.CSL_SERVICEL_WRAPPER_PKG
Source
1 PACKAGE BODY CSL_SERVICEL_WRAPPER_PKG AS
2 /* $Header: csllwrpb.pls 115.22 2003/08/27 07:34:13 vekrishn ship $ */
3
4 /*** Globals ***/
5 g_debug_level NUMBER; -- debug level
6 g_object_name CONSTANT VARCHAR2(30) := 'CSL_SERVICEL_WRAPPER_PKG';
7
8 /***
9 This function accepts a list of publication items and a publication item name and
10 returns whether the item name was found within the item list.
11 When the item name was found, it will be removed from the list.
12 ***/
13 FUNCTION ITEM_EXISTS
14 (
15 p_pubitems_tbl IN OUT NOCOPY asg_apply.vc2_tbl_type,
16 p_item_name IN VARCHAR2
17 )
18 RETURN BOOLEAN IS
19 l_index BINARY_INTEGER;
20 BEGIN
21
22 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
23 jtm_message_log_pkg.Log_Msg
24 ( v_object_id => null
25 , v_object_name => g_object_name
26 , v_message => 'Entering CSL_SERVICEL_WRAPPER_PKG.ITEM_EXISTS'
27 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
28 END IF;
29
30 IF p_pubitems_tbl.COUNT <= 0 THEN
31 /*** no items in list -> item name not found ***/
32 RETURN FALSE;
33 END IF;
34 FOR l_index IN p_pubitems_tbl.FIRST..p_pubitems_tbl.LAST LOOP
35 IF p_pubitems_tbl.EXISTS( l_index ) THEN
36 IF p_pubitems_tbl( l_index ) = p_item_name THEN
37 /*** found item -> delete from array and return TRUE ***/
38 p_pubitems_tbl.DELETE( l_index );
39
40 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
41 jtm_message_log_pkg.Log_Msg
42 ( v_object_id => null
43 , v_object_name => g_object_name
44 , v_message => 'Leaving CSL_SERVICEL_WRAPPER_PKG.ITEM_EXISTS'
45 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
46 END IF;
47 RETURN TRUE;
48 END IF;
49 END IF;
50 END LOOP;
51 /*** item name not found ***/
52
53 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
54 jtm_message_log_pkg.Log_Msg
55 ( v_object_id => null
56 , v_object_name => g_object_name
57 , v_message => 'Leaving CSL_SERVICEL_WRAPPER_PKG.ITEM_EXISTS'
58 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
59 END IF;
60
61 RETURN FALSE;
62 EXCEPTION WHEN OTHERS THEN
63 /*** catch and log exceptions ***/
64 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR THEN
65 jtm_message_log_pkg.Log_Msg
66 ( v_object_id => null
67 , v_object_name => g_object_name
68 , v_message => 'Exception occurred in CSL_SERVICEL_WRAPPER_PKG.ITEM_EXISTS:' || fnd_global.local_chr(10) || sqlerrm
69 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
70 END IF;
71
72 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
73 jtm_message_log_pkg.Log_Msg
74 ( v_object_id => null
75 , v_object_name => g_object_name
76 , v_message => 'Leaving CSL_SERVICEL_WRAPPER_PKG.ITEM_EXISTS'
77 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
78 END IF;
79
80 RETURN FALSE;
81 END ITEM_EXISTS;
82
83 /***
84 This procedure is called by ASG_APPLY.APPLY_CLIENT_CHANGES if a list of dirty publication items
85 has been retrieved for a user/tranid combination. This procedure gets called for both
86 deferred and non-deferred publication items.
87 ***/
88 PROCEDURE APPLY_DIRTY_PUBITEMS
89 (
90 p_user_name IN VARCHAR2,
91 p_tranid IN NUMBER,
92 p_pubitems_tbl IN OUT NOCOPY asg_apply.vc2_tbl_type,
93 x_return_status IN OUT NOCOPY VARCHAR2
94 ) IS
95 l_index BINARY_INTEGER;
96 BEGIN
97 x_return_status := FND_API.G_RET_STS_SUCCESS;
98
99 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
100 jtm_message_log_pkg.Log_Msg
101 ( v_object_id => null
102 , v_object_name => g_object_name
103 , v_message => 'Entering CSL_SERVICEL_WRAPPER_PKG.APPLY_DIRTY_PUBITEMS'
104 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
105 END IF;
106
107 /*** call incident wrapper ***/
108 IF ITEM_EXISTS( p_pubitems_tbl, 'CSL_CS_INCIDENTS_ALL_VL') THEN
109 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
110 jtm_message_log_pkg.Log_Msg
111 ( v_object_id => 'CSL_CS_INCIDENTS_ALL_VL'
112 , v_object_name => g_object_name
113 , v_message => 'Calling wrapper for publication item CSL_CS_INCIDENTS_ALL_VL'
114 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
115 END IF;
116
117 CSL_SERVICE_REQUESTS_PKG.APPLY_CLIENT_CHANGES
118 (
119 p_user_name,
120 p_tranid,
121 g_debug_level,
122 x_return_status
123 );
124 END IF;
125
126 /*** call task wrapper ***/
127 IF ITEM_EXISTS( p_pubitems_tbl, 'CSL_JTF_TASKS_VL') THEN
128 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
129 jtm_message_log_pkg.Log_Msg
130 ( v_object_id => 'CSL_JTF_TASKS_VL'
131 , v_object_name => g_object_name
132 , v_message => 'Calling wrapper for publication item CSL_JTF_TASKS_VL'
133 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
134 END IF;
135
136 CSL_TASKS_PKG.APPLY_CLIENT_CHANGES
137 (
138 p_user_name,
139 p_tranid,
140 g_debug_level,
141 x_return_status
142 );
143 END IF;
144
145 /*** call task assignment wrapper ***/
146 IF ITEM_EXISTS( p_pubitems_tbl, 'CSL_JTF_TASK_ASSIGNMENTS') THEN
147 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
148 jtm_message_log_pkg.Log_Msg
149 ( v_object_id => 'CSL_JTF_TASK_ASSIGNMENTS'
150 , v_object_name => g_object_name
151 , v_message => 'Calling wrapper for publication item CSL_JTF_TASK_ASSIGNMENTS'
152 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
153 END IF;
154
155 CSL_TASK_ASSIGNMENTS_PKG.APPLY_CLIENT_CHANGES
156 (
157 p_user_name,
158 p_tranid,
159 g_debug_level,
160 x_return_status
161 );
162 END IF;
163
164 /*** call debrief header wrapper ***/
165 IF ITEM_EXISTS( p_pubitems_tbl, 'CSF_DEBRIEF_LINES')
166 OR ITEM_EXISTS( p_pubitems_tbl, 'CSF_DEBRIEF_HEADERS')
167 THEN
168 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
169 jtm_message_log_pkg.Log_Msg
170 ( v_object_id => 'CSF_DEBRIEF_LINES'
171 , v_object_name => g_object_name
172 , v_message => 'Calling wrapper for publication item CSF_DEBRIEF_LINES'
173 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
174 END IF;
175
176 CSL_DEBRIEF_PKG.APPLY_CLIENT_CHANGES
177 (
178 p_user_name,
179 p_tranid,
180 g_debug_level,
181 x_return_status
182 );
183 END IF;
184
185 /*** call notes wrapper ***/
186 IF ITEM_EXISTS( p_pubitems_tbl, 'JTF_NOTES_VL') THEN
187 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
188 jtm_message_log_pkg.Log_Msg
189 ( v_object_id => 'JTF_NOTES_VL'
190 , v_object_name => g_object_name
191 , v_message => 'Calling wrapper for publication item JTF_NOTES_VL'
192 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
193 END IF;
194
195 CSL_NOTES_PKG.APPLY_CLIENT_CHANGES
196 (
197 p_user_name,
198 p_tranid,
199 g_debug_level,
200 x_return_status
201 );
202 END IF;
203
204 /*** call notifications wrapper ***/
205 IF ITEM_EXISTS( p_pubitems_tbl, 'WF_NOTIFICATIONS') THEN
206 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
207 jtm_message_log_pkg.Log_Msg
208 ( v_object_id => 'WF_NOTIFICATIONS'
209 , v_object_name => g_object_name
210 , v_message => 'Calling wrapper for publication item WF_NOTIFICATIONS'
211 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
212 END IF;
213
214 CSL_NOTIFICATIONS_PKG.APPLY_CLIENT_CHANGES
215 (
216 p_user_name,
217 p_tranid,
218 g_debug_level,
219 x_return_status
220 );
221 END IF;
222
223
224 /*** call lobs wrapper ***/
225 IF ITEM_EXISTS( p_pubitems_tbl, 'CSL_LOBS') THEN
226 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
227 jtm_message_log_pkg.Log_Msg
228 ( v_object_id => 'CSL_LOBS'
229 , v_object_name => g_object_name
230 , v_message => 'Calling wrapper for publication item CSL_LOBS'
231 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
232 END IF;
233
234 CSL_LOBS_PKG.APPLY_CLIENT_CHANGES
235 (
236 p_user_name,
237 p_tranid,
238 g_debug_level,
239 x_return_status
240 );
241 END IF;
242
243
244 /*** call notification attributes wrapper ***/
245 IF ITEM_EXISTS( p_pubitems_tbl, 'WF_NOTIFICATION_ATTR') THEN
246 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
247 jtm_message_log_pkg.Log_Msg
248 ( v_object_id => 'WF_NOTIFICATION_ATTR'
249 , v_object_name => g_object_name
250 , v_message => 'Calling wrapper for publication item WF_NOTIFICATION_ATTR'
251 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
252 END IF;
253
254 CSL_NOTIFICATION_ATTR_PKG.APPLY_CLIENT_CHANGES
255 (
256 p_user_name,
257 p_tranid,
258 g_debug_level,
259 x_return_status
260 );
261 END IF;
262
263 /*** call requirements wrapper ***/
264 IF ITEM_EXISTS( p_pubitems_tbl, 'CSP_REQUIREMENT_LINES') THEN
265 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
266 jtm_message_log_pkg.Log_Msg
267 ( v_object_id => 'CSP_REQUIREMENT_LINES'
268 , v_object_name => g_object_name
269 , v_message => 'Calling wrapper for publication item CSP_REQUIREMENT_LINES'
270 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
271 END IF;
272
273 CSL_REQUIREMENTS_PKG.APPLY_CLIENT_CHANGES
274 (
275 p_user_name,
276 p_tranid,
277 g_debug_level,
278 x_return_status
279 );
280 END IF;
281
282 /*** call counter wrapper ***/
283 IF ITEM_EXISTS( p_pubitems_tbl, 'CS_COUNTER_VALUES') THEN
284 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
285 jtm_message_log_pkg.Log_Msg
286 ( v_object_id => 'CS_COUNTER_VALUES'
287 , v_object_name => g_object_name
288 , v_message => 'Calling wrapper for publication item CS_COUNTER_VALUES'
289 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
290 END IF;
291
292 CSL_COUNTER_VALUES_PKG.APPLY_CLIENT_CHANGES
293 (
294 p_user_name,
295 p_tranid,
296 g_debug_level,
297 x_return_status
298 );
299 END IF;
300
301 /*** call counter properties wrapper ***/
302 IF ITEM_EXISTS( p_pubitems_tbl, 'CS_COUNTER_PROP_VALS') THEN
303 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
304 jtm_message_log_pkg.Log_Msg
305 ( v_object_id => 'CS_COUNTER_PROP_VALS'
306 , v_object_name => g_object_name
307 , v_message => 'Calling wrapper for publication item CS_COUNTER_PROP_VALS'
308 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
309 END IF;
310
311 CSL_COUNTER_PROP_VALUES_PKG.APPLY_CLIENT_CHANGES
312 (
313 p_user_name,
314 p_tranid,
315 g_debug_level,
316 x_return_status
317 );
318 END IF;
319
320 /*** call material transaction wrapper ***/
321 IF ITEM_EXISTS( p_pubitems_tbl, 'MTL_MAT_TRANSACTIONS') THEN
322 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
323 jtm_message_log_pkg.Log_Msg
324 ( v_object_id => 'MTL_MAT_TRANSACTIONS'
325 , v_object_name => g_object_name
326 , v_message => 'Calling wrapper for publication item MTL_MAT_TRANSACTIONS'
327 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
328 END IF;
329
330 CSL_MATERIAL_TRANSACTION_PKG.APPLY_CLIENT_CHANGES
331 (
332 p_user_name,
333 p_tranid,
334 g_debug_level,
335 x_return_status
336 );
337 END IF;
338
339 /*** check if all dirty items got processed ***/
340 IF p_pubitems_tbl.COUNT > 0 THEN
341 /*** no -> print publication item names that are still dirty ***/
342 FOR l_index IN p_pubitems_tbl.FIRST..p_pubitems_tbl.LAST LOOP
343 IF p_pubitems_tbl.EXISTS( l_index) THEN
344 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR THEN
345 jtm_message_log_pkg.Log_Msg
346 ( v_object_id => p_pubitems_tbl(l_index)
347 , v_object_name => g_object_name
348 , v_message => 'No wrapper available for dirty publication item ' || p_pubitems_tbl(l_index)
349 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
350 END IF;
351 END IF;
352 END LOOP;
353 END IF;
354
355 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
356 jtm_message_log_pkg.Log_Msg
357 ( v_object_id => null
358 , v_object_name => g_object_name
359 , v_message => 'Leaving CSL_SERVICEL_WRAPPER_PKG.APPLY_DIRTY_PUBITEMS'
360 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
361 END IF;
362
363 EXCEPTION WHEN OTHERS THEN
364 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR THEN
365 jtm_message_log_pkg.Log_Msg
366 ( v_object_id => null
367 , v_object_name => g_object_name
368 , v_message => 'Exception occurred in CSL_SERVICEL_WRAPPER_PKG.APPLY_DIRTY_PUBITEMS:' || fnd_global.local_chr(10) || sqlerrm
369 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
370 END IF;
371
372 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
373 jtm_message_log_pkg.Log_Msg
374 ( v_object_id => null
375 , v_object_name => g_object_name
376 , v_message => 'Leaving CSL_SERVICEL_WRAPPER_PKG.APPLY_DIRTY_PUBITEMS'
377 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
378 END IF;
379 x_return_status := FND_API.G_RET_STS_ERROR;
380 END APPLY_DIRTY_PUBITEMS;
381
382 /***
383 This procedure is called by ASG_APPLY.PROCESS_UPLOAD when a publication item for publication SERVICEL
384 is dirty. This happens when a mobile field service device executed DML on an updatable table and did
385 a fast sync. This procedure will detect which publication items got dirty and will execute the wrapper
386 procedures which will insert the data that came from mobile into the backend tables using public APIs.
387 ***/
388 PROCEDURE APPLY_CLIENT_CHANGES
389 (
390 p_user_name IN VARCHAR2,
391 p_tranid IN NUMBER
392 ) IS
393 l_pubitems_tbl asg_apply.vc2_tbl_type;
394 l_return_status VARCHAR2(1);
395 BEGIN
396 g_debug_level := JTM_HOOK_UTIL_PKG.Get_Debug_Level;
397
398 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
399 jtm_message_log_pkg.Log_Msg
400 ( v_object_id => null
401 , v_object_name => g_object_name
402 , v_message => 'Entering CSL_SERVICEL_WRAPPER_PKG.Apply_Client_Changes'
403 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
404 END IF;
405
406 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
407 jtm_message_log_pkg.Log_Msg
408 ( v_object_id => null
409 , v_object_name => g_object_name
410 , v_message => 'Applying changes for user ' || p_user_name ||
411 ', tranid = ' || TO_CHAR( p_tranid )
412 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
413 END IF;
414
415 /*** retrieve names of non-deferred dirty SERVICEL publication items ***/
416 /*** get_all_dirty and get_all_defered_pub_items is replaced by get_all_pub_items ***/
417 asg_apply.get_all_pub_items(p_user_name,
418 p_tranid,
419 'SERVICEL',
420 l_pubitems_tbl,
421 l_return_status);
422
423 /*** successfully retrieved item names? ***/
424 IF l_return_status <> FND_API.G_RET_STS_SUCCESS OR l_pubitems_tbl.COUNT = 0 THEN
425 /*** No -> log that no items were retrieved ***/
426 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
427 jtm_message_log_pkg.Log_Msg
428 ( v_object_id => null
429 , v_object_name => g_object_name
430 , v_message => 'asg_apply.get_all_dirty_pub_items didn''t return any records'
431 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
432 END IF;
433 ELSE
434 /*** yes -> process them ***/
435 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
436 jtm_message_log_pkg.Log_Msg
437 ( v_object_id => null
438 , v_object_name => g_object_name
439 , v_message => 'Found ' || l_pubitems_tbl.COUNT || ' dirty non-deferred publication item(s)'
440 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
441 END IF;
442
443 APPLY_DIRTY_PUBITEMS
444 ( p_user_name
445 , p_tranid
446 , l_pubitems_tbl
447 , l_return_status
448 );
449 END IF;
450
451 /*** retrieve names of deferred dirty SERVICEL publication items ***/
452 /* asg_apply.get_all_deferred_pub_items(p_user_name,
453 p_tranid,
454 'SERVICEL',
455 l_pubitems_tbl,
456 l_return_status);
457 */
458
459 /*** successfully retrieved item names? ***/
460 IF l_return_status <> FND_API.G_RET_STS_SUCCESS OR l_pubitems_tbl.COUNT = 0 THEN
461 /*** No -> log that no items were retrieved ***/
462 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
463 jtm_message_log_pkg.Log_Msg
464 ( v_object_id => null
465 , v_object_name => g_object_name
466 , v_message => 'asg_apply.get_all_deferred_pub_items didn''t return any records'
467 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
468 END IF;
469 ELSE
470 /*** yes -> process them ***/
471 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
472 jtm_message_log_pkg.Log_Msg
473 ( v_object_id => null
474 , v_object_name => g_object_name
475 , v_message => 'Found ' || l_pubitems_tbl.COUNT || ' dirty deferred publication item(s)'
476 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
477 END IF;
478
479 APPLY_DIRTY_PUBITEMS
480 ( p_user_name
481 , p_tranid
482 , l_pubitems_tbl
483 , l_return_status
484 );
485 END IF;
486
487 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
488 jtm_message_log_pkg.Log_Msg
489 ( v_object_id => null
490 , v_object_name => g_object_name
491 , v_message => 'Leaving CSL_SERVICEL_WRAPPER_PKG.Apply_Client_Changes'
492 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
493 END IF;
494
495 EXCEPTION WHEN OTHERS THEN
496 /*** catch and log exceptions ***/
497 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR THEN
498 jtm_message_log_pkg.Log_Msg
499 ( v_object_id => null
500 , v_object_name => g_object_name
501 , v_message => 'Exception occurred in CSL_SERVICEL_WRAPPER_PKG.Apply_Client_Changes:' || fnd_global.local_chr(10) || sqlerrm
502 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
503 END IF;
504
505 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
506 jtm_message_log_pkg.Log_Msg
507 ( v_object_id => null
508 , v_object_name => g_object_name
509 , v_message => 'Leaving CSL_SERVICEL_WRAPPER_PKG.Apply_Client_Changes'
510 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
511 END IF;
512 END APPLY_CLIENT_CHANGES;
513
514 /***
515 This function returns a translated error message string. If p_api_error is FALSE, it gets
516 message with MESSAGE_NAME = p_message from FND_NEW_MESSAGES and replaces any tokens with
517 the supplied token values. If p_api_error is TRUE, it just returns the api error in the
518 FND_MSG_PUB message stack.
519 ***/
520 FUNCTION GET_ERROR_MESSAGE_TEXT
521 (
522 p_api_error IN BOOLEAN --DEFAULT FALSE
523 , p_message IN FND_NEW_MESSAGES.MESSAGE_NAME%TYPE --DEFAULT NULL
524 , p_token_name1 IN VARCHAR2 --DEFAULT NULL
525 , p_token_value1 IN VARCHAR2 --DEFAULT NULL
526 , p_token_name2 IN VARCHAR2 --DEFAULT NULL
527 , p_token_value2 IN VARCHAR2 --DEFAULT NULL
528 , p_token_name3 IN VARCHAR2 --DEFAULT NULL
529 , p_token_value3 IN VARCHAR2 --DEFAULT NULL
530 )
531 RETURN VARCHAR2 IS
532 l_fnd_message VARCHAR2(4000);
533 l_counter NUMBER;
534 l_msg_data VARCHAR2(4000);
535 l_msg_dummy NUMBER;
536 BEGIN
537 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
538 jtm_message_log_pkg.Log_Msg
539 ( v_object_id => null
540 , v_object_name => g_object_name
541 , v_message => 'Entering CSL_SERVICEL_WRAPPER_PKG.Get_error_message_text'
542 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
543 END IF;
544
545 /*** Is this an API error? ***/
546 IF NOT p_api_error THEN
547 /*** no -> retrieve error message p_message and replace tokens ***/
548 FND_MESSAGE.Set_Name
549 ( application => 'CSL'
550 , name => p_message
551 );
552 IF p_token_name1 IS NOT NULL
553 THEN
554 FND_MESSAGE.Set_Token
555 ( token => p_token_name1
556 , value => p_token_value1
557 );
558 END IF;
559 IF p_token_name2 IS NOT NULL
560 THEN
561 FND_MESSAGE.Set_Token
562 ( token => p_token_name2
563 , value => p_token_value2
564 );
565 END IF;
566 IF p_token_name3 IS NOT NULL
567 THEN
568 FND_MESSAGE.Set_Token
569 ( token => p_token_name3
570 , value => p_token_value3
571 );
572 END IF;
573
574 l_fnd_message := FND_MESSAGE.Get;
575 ELSE
576 /*** API error -> retrieve error from message stack ***/
577 IF FND_MSG_PUB.Count_Msg > 0 THEN
578 FND_MSG_PUB.Get
579 ( p_msg_index => 1
580 , p_encoded => FND_API.G_FALSE
581 , p_data => l_msg_data
582 , p_msg_index_out => l_msg_dummy
583 );
584 l_fnd_message := l_msg_data;
585 FOR l_counter
586 IN 2 .. FND_MSG_PUB.Count_Msg
587 LOOP
588 FND_MSG_PUB.Get
589 ( p_msg_index => l_counter
590 , p_encoded => FND_API.G_FALSE
591 , p_data => l_msg_data
592 , p_msg_index_out => l_msg_dummy
593 );
594 l_fnd_message := l_fnd_message || FND_GLOBAL.Newline || l_msg_data;
595 END LOOP;
596 END IF;
597 END IF;
598
599 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
600 jtm_message_log_pkg.Log_Msg
601 ( v_object_id => null
602 , v_object_name => g_object_name
603 , v_message => 'Leaving CSL_SERVICEL_WRAPPER_PKG.Get_error_message_text'
604 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
605 END IF;
606 RETURN l_fnd_message;
607 EXCEPTION WHEN OTHERS THEN
608
609 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR THEN
610 jtm_message_log_pkg.Log_Msg
611 ( v_object_id => null
612 , v_object_name => g_object_name
613 , v_message => 'Exception occurred in CSL_SERVICEL_WRAPPER_PKG.Get_error_message_text:' || fnd_global.local_chr(10) || sqlerrm
614 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
615 END IF;
616
617 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
618 jtm_message_log_pkg.Log_Msg
619 ( v_object_id => null
620 , v_object_name => g_object_name
621 , v_message => 'Leaving CSL_SERVICEL_WRAPPER_PKG.Get_error_message_text'
622 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
623 END IF;
624
625 RETURN l_fnd_message;
626 END GET_ERROR_MESSAGE_TEXT;
627
628 /***
629 This procedure is called by APPLY_CLIENT_CHANGES wrapper procedure when a record was successfully
630 applied and needs to be deleted from the in-queue.
631 ***/
632 PROCEDURE DELETE_RECORD
633 (
634 p_user_name IN VARCHAR2,
635 p_tranid IN NUMBER,
636 p_seqno IN NUMBER,
637 p_pk IN VARCHAR2,
638 p_object_name IN VARCHAR2,
639 p_pub_name IN VARCHAR2,
640 p_error_msg OUT NOCOPY VARCHAR2,
641 x_return_status IN OUT NOCOPY VARCHAR2
642 ) IS
643 BEGIN
644 x_return_status := FND_API.G_RET_STS_SUCCESS;
645
646 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
647 jtm_message_log_pkg.Log_Msg
648 ( v_object_id => p_pk
649 , v_object_name => p_object_name
650 , v_message => 'Entering ' || g_object_name || '.DELETE_RECORD'
651 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
652 END IF;
653
654 asg_apply.delete_row(p_user_name,
655 p_tranid,
656 p_pub_name,
657 p_seqno,
658 x_return_status);
659
660 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
661 /*** error occurred ***/
662 fnd_msg_pub.Add_Exc_Msg( g_object_name, 'DELETE_RECORD', 'Unknown error');
663 p_error_msg := GET_ERROR_MESSAGE_TEXT
664 (
665 p_api_error => TRUE
666 );
667 END IF;
668
669 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
670 jtm_message_log_pkg.Log_Msg
671 ( v_object_id => p_pk
672 , v_object_name => p_object_name
673 , v_message => 'Leaving ' || g_object_name || '.DELETE_RECORD'
674 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
675 END IF;
676
677 EXCEPTION WHEN OTHERS THEN
678 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR THEN
679 jtm_message_log_pkg.Log_Msg
680 ( v_object_id => p_pk
681 , v_object_name => p_object_name
682 , v_message => 'Exception occurred in DELETE_RECORD:' || fnd_global.local_chr(10) || sqlerrm
683 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
684 END IF;
685
686 fnd_msg_pub.Add_Exc_Msg( g_object_name, 'DELETE_RECORD', sqlerrm);
687 p_error_msg := GET_ERROR_MESSAGE_TEXT
688 (
689 p_api_error => TRUE
690 );
691
692 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
693 jtm_message_log_pkg.Log_Msg
694 ( v_object_id => p_pk
695 , v_object_name => p_object_name
696 , v_message => 'Leaving ' || g_object_name || '.DELETE_RECORD'
697 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
698 END IF;
699 x_return_status := FND_API.G_RET_STS_ERROR;
700 END DELETE_RECORD;
701
702 /***
703 This procedure is called by APPLY_CLIENT_CHANGES wrapper procedure
704 when a record failed to be processed and needs to be deferred and rejected from mobile.
705 ***/
706 PROCEDURE DEFER_RECORD
707 (
708 p_user_name IN VARCHAR2,
709 p_tranid IN NUMBER,
710 p_seqno IN NUMBER,
711 p_pk IN VARCHAR2,
712 p_object_name IN VARCHAR2,
713 p_pub_name IN VARCHAR2,
714 p_error_msg IN VARCHAR2,
715 x_return_status IN OUT NOCOPY VARCHAR2,
716 p_dml_type IN VARCHAR2 --DEFAULT 'I'
717 ) IS
718 BEGIN
719 x_return_status := FND_API.G_RET_STS_SUCCESS;
720
721 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
722 jtm_message_log_pkg.Log_Msg
723 ( v_object_id => p_pk
724 , v_object_name => p_object_name
725 , v_message => 'Entering ' || g_object_name || '.DEFER_RECORD'
726 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
727 END IF;
728
729 asg_defer.defer_row(p_user_name,
730 p_tranid,
731 p_pub_name,
732 p_seqno,
733 p_error_msg,
734 x_return_status);
735 /*** check if defer was successfull ***/
736 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
737 /*** no -> log and return error ***/
738 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR THEN
739 jtm_message_log_pkg.Log_Msg
740 ( v_object_id => p_pk
741 , v_object_name => p_object_name
742 , v_message => 'asg_defer.defer_row failed:' || fnd_global.local_chr(10) || p_error_msg
743 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
744 END IF;
745
746 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
747 jtm_message_log_pkg.Log_Msg
748 ( v_object_id => p_pk
749 , v_object_name => p_object_name
750 , v_message => 'Leaving ' || g_object_name || '.DEFER_RECORD'
751 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
752 END IF;
753 RETURN;
754 END IF;
755
756 /*** defer successful -> reject record except for updates ***/
757 IF p_dml_type = 'I' THEN
758 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
759 jtm_message_log_pkg.Log_Msg
760 ( v_object_id => p_pk
761 , v_object_name => p_object_name
762 , v_message => 'Rejecting record'
763 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
764 END IF;
765
766 asg_defer.reject_row(p_user_name,
767 p_tranid,
768 p_pub_name,
769 p_seqno,
770 p_error_msg,
771 x_return_status);
772 /*** check if reject was successfull ***/
773 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
774 /*** no -> log error ***/
775 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR THEN
776 jtm_message_log_pkg.Log_Msg
777 ( v_object_id => p_pk
778 , v_object_name => p_object_name
779 , v_message => 'asg_defer.reject_row failed:' || fnd_global.local_chr(10) || p_error_msg
780 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
781 END IF;
782 END IF;
783 END IF;
784
785 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
786 jtm_message_log_pkg.Log_Msg
787 ( v_object_id => p_pk
788 , v_object_name => p_object_name
789 , v_message => 'Leaving ' || g_object_name || '.DEFER_RECORD'
790 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
791 END IF;
792
793 EXCEPTION WHEN OTHERS THEN
794 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR THEN
795 jtm_message_log_pkg.Log_Msg
796 ( v_object_id => p_pk
797 , v_object_name => p_object_name
798 , v_message => 'Exception occurred in ' || g_object_name || '.DEFER_RECORD:' || fnd_global.local_chr(10) || sqlerrm
799 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
800 END IF;
801
802 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
803 jtm_message_log_pkg.Log_Msg
804 ( v_object_id => p_pk
805 , v_object_name => p_object_name
806 , v_message => 'Leaving ' || g_object_name || '.DEFER_RECORD'
807 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
808 END IF;
809
810 x_return_status := FND_API.G_RET_STS_ERROR;
811 END DEFER_RECORD;
812
813 /***
814 This procedure gets called when a record needs to be rejected when e.g. the api provides its own pk
815 ***/
816 PROCEDURE REJECT_RECORD
817 (
818 p_user_name IN VARCHAR2,
819 p_tranid IN NUMBER,
820 p_seqno IN NUMBER,
821 p_pk IN VARCHAR2,
822 p_object_name IN VARCHAR2,
823 p_pub_name IN VARCHAR2,
824 p_error_msg IN VARCHAR2,
825 x_return_status IN OUT NOCOPY VARCHAR2
826 )IS
827 BEGIN
828 x_return_status := FND_API.G_RET_STS_SUCCESS;
829
830 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
831 jtm_message_log_pkg.Log_Msg
832 ( v_object_id => p_pk
833 , v_object_name => p_object_name
834 , v_message => 'Entering ' || g_object_name || '.REJECT_RECORD'
835 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
836 END IF;
837
838
839 asg_defer.reject_row(p_user_name,
840 p_tranid,
841 p_pub_name,
842 p_seqno,
843 p_error_msg,
844 x_return_status);
845
846 /*** check if reject was successfull ***/
847 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
848 /*** no -> log error ***/
849 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR THEN
850 jtm_message_log_pkg.Log_Msg
851 ( v_object_id => p_pk
852 , v_object_name => p_object_name
853 , v_message => 'asg_defer.reject_row failed:' || fnd_global.local_chr(10) || p_error_msg
854 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
855 END IF;
856 END IF;
857
858 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
859 jtm_message_log_pkg.Log_Msg
860 ( v_object_id => p_pk
861 , v_object_name => p_object_name
862 , v_message => 'Leaving ' || g_object_name || '.REJECT_RECORD'
863 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
864 END IF;
865 EXCEPTION WHEN OTHERS THEN
866 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR THEN
867 jtm_message_log_pkg.Log_Msg
868 ( v_object_id => p_pk
869 , v_object_name => p_object_name
870 , v_message => 'Exception occurred in ' || g_object_name || '.REJECT_RECORD:' || fnd_global.local_chr(10) || sqlerrm
871 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
872 END IF;
873
874 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
875 jtm_message_log_pkg.Log_Msg
876 ( v_object_id => p_pk
877 , v_object_name => p_object_name
878 , v_message => 'Leaving ' || g_object_name || '.REJECT_RECORD'
879 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
880 END IF;
881
882 x_return_status := FND_API.G_RET_STS_ERROR;
883 END REJECT_RECORD;
884
885 /***
886 This procedure gets called when a user gets created
887 ***/
888 PROCEDURE POPULATE_ACCESS_RECORDS ( P_USER_ID IN NUMBER )
889 IS
890 PRAGMA AUTONOMOUS_TRANSACTION;
891 CURSOR c_user( b_user_id NUMBER ) IS
892 SELECT RESOURCE_ID
893 FROM ASG_USER
894 WHERE USER_ID = b_user_id;
895 r_user c_user%ROWTYPE;
896 x_status VARCHAR2(30);
897 BEGIN
898 OPEN c_user( P_USER_ID );
899 FETCH c_user INTO r_user;
900 IF c_user%FOUND THEN
901 CSL_USER_PKG.CREATE_USER( P_RESOURCE_ID => r_user.RESOURCE_ID
902 , X_RETURN_STATUS => x_status);
903
904 END IF;
905 CLOSE c_user;
906
907 /*** if create_user returned error then raise exception ***/
908 IF x_status <> FND_API.G_RET_STS_SUCCESS THEN
909 ROLLBACK;
910 RAISE FND_API.G_EXC_ERROR;
911 END IF;
912
913 COMMIT;
914 END POPULATE_ACCESS_RECORDS;
915
916 /***
917 This procedure gets called when a user gets deleted
918 ***/
919 PROCEDURE DELETE_ACCESS_RECORDS ( P_USER_ID IN NUMBER )
920 IS
921 PRAGMA AUTONOMOUS_TRANSACTION;
922 CURSOR c_user( b_user_id NUMBER ) IS
923 SELECT RESOURCE_ID
924 FROM ASG_USER
925 WHERE USER_ID = b_user_id;
926 r_user c_user%ROWTYPE;
927 x_status VARCHAR2(30);
928 BEGIN
929 OPEN c_user( P_USER_ID );
930 FETCH c_user INTO r_user;
931 IF c_user%FOUND THEN
932 CSL_USER_PKG.DELETE_USER( P_RESOURCE_ID => r_user.RESOURCE_ID
933 , X_RETURN_STATUS => x_status);
934
935 END IF;
936 CLOSE c_user;
937
938 /*** if delete user returned error then raise exception ***/
939 IF x_status <> FND_API.G_RET_STS_SUCCESS THEN
940 ROLLBACK;
941 RAISE FND_API.G_EXC_ERROR;
942 END IF;
943
944 COMMIT;
945 END DELETE_ACCESS_RECORDS;
946
947 FUNCTION AUTONOMOUS_MARK_DIRTY
948 (
949 p_pub_item IN VARCHAR2,
950 p_accessid IN NUMBER,
951 p_resourceid IN NUMBER,
952 p_dml IN CHAR,
953 p_timestamp IN DATE
954 )
955 RETURN BOOLEAN IS
956 PRAGMA AUTONOMOUS_TRANSACTION;
957 l_rc BOOLEAN;
958 BEGIN
959 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
960 jtm_message_log_pkg.Log_Msg
961 ( v_object_id => null
962 , v_object_name => g_object_name
963 , v_message => 'Entering ' || g_object_name || '.AUTONOMOUS_MARK_DIRTY'
964 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
965 END IF;
966 l_rc := asg_download.markDirty(
967 P_PUB_ITEM => p_pub_item,
968 P_ACCESSID => p_accessid,
969 P_RESOURCEID => p_resourceid,
970 P_DML => p_dml,
971 P_TIMESTAMP => p_timestamp
972 );
973 COMMIT;
974
975 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
976 jtm_message_log_pkg.Log_Msg
977 ( v_object_id => null
978 , v_object_name => g_object_name
979 , v_message => 'Leaving ' || g_object_name || '.AUTONOMOUS_MARK_DIRTY'
980 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
981 END IF;
982
983 RETURN l_rc;
984 EXCEPTION WHEN OTHERS THEN
985 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR THEN
986 jtm_message_log_pkg.Log_Msg
987 ( v_object_id => null
988 , v_object_name => g_object_name
989 , v_message => 'Exception occurred in AUTONOMOUS_MARK_DIRTY.'
990 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
991 END IF;
992 COMMIT;
993 RETURN FALSE;
994 END AUTONOMOUS_MARK_DIRTY;
995
996
997 FUNCTION detect_conflict(p_user_name IN VARCHAR2) RETURN VARCHAR2 IS
998 BEGIN
999
1000 jtm_message_log_pkg.Log_Msg
1001 ( v_object_id => null
1002 , v_object_name => g_object_name
1003 , v_message => 'Entering DETECT_CONFLICT : User '||p_user_name
1004 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL
1005 );
1006
1007 RETURN 'Y' ;
1008
1009 EXCEPTION
1010 WHEN OTHERS THEN
1011 RETURN 'Y';
1012 END;
1013
1014
1015 FUNCTION CONFLICT_RESOLUTION_HANDLER (
1016 p_user_name IN VARCHAR2,
1017 p_tran_id IN NUMBER,
1018 p_sequence IN NUMBER) RETURN VARCHAR2 IS
1019
1020 l_profile_value VARCHAR2(30) ;
1021
1022 BEGIN
1023
1024 jtm_message_log_pkg.Log_Msg
1025 ( v_object_id => null
1026 , v_object_name => g_object_name
1027 , v_message => 'Entering CONFLICT_RESOLUTION_HANDLER : User '
1028 ||p_user_name
1029 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
1030
1031 l_profile_value := fnd_profile.value('JTM_APPL_CONFLICT_RULE');
1032 IF l_profile_value = 'SERVER_WINS' THEN
1033 RETURN 'S' ;
1034 ELSE
1035 RETURN 'C' ;
1036 END IF ;
1037
1038 EXCEPTION
1039 WHEN OTHERS THEN
1040 RETURN 'C';
1041 END ;
1042
1043 END CSL_SERVICEL_WRAPPER_PKG;