DBA Data[Home] [Help]

PACKAGE BODY: APPS.CSM_SERVICEP_WRAPPER_PKG

Source


1 PACKAGE BODY CSM_SERVICEP_WRAPPER_PKG AS
2 /* $Header: csmuspwb.pls 120.15.12020000.2 2013/04/09 11:05:54 saradhak ship $ */
3 
4 -- MODIFICATION HISTORY
5 -- Anurag     06/09/02    Created
6 -- ---------   ------  ------------------------------------------
7    -- Enter procedure, function bodies as shown below
8 
9 /*** Globals ***/
10 g_debug_level           NUMBER; -- debug level
11 g_object_name  CONSTANT VARCHAR2(30) := 'CSM_SERVICEP_WRAPPER_PKG';
12 --bug4233613
13 g_olite_schema CONSTANT VARCHAR2(15) := 'MOBILEADMIN';
14 
15 
16 PROCEDURE GET_ALL_DEFERRED_PUB_ITEMS(p_username IN VARCHAR2,
17                                     p_tranid   IN NUMBER,
18                                     p_pubname IN VARCHAR2,
19                                     x_pubitems_tbl OUT NOCOPY asg_apply.vc2_tbl_type,
20                                     x_return_status OUT NOCOPY VARCHAR2)
21 IS
22 l_defer_count pls_integer;
23 l_all_pubitems_tbl asg_apply.vc2_tbl_type;
24 l_null_pubitems_tbl asg_apply.vc2_tbl_type;
25 l_return_status varchar2(1);
26 l_dummy number;
27 
28 CURSOR c_isdeferred(p_user_name VARCHAR2, p_tran_id NUMBER, p_pubitem VARCHAR2)
29 IS
30 SELECT 1
31 FROM asg_deferred_traninfo
32 WHERE device_user_name = p_user_name
33 AND  deferred_tran_id = p_tranid
34 AND  object_name = p_pubitem
35 ;
36 
37 BEGIN
38   x_return_status := FND_API.G_RET_STS_ERROR;
39 
40   /** initialize tables **/
41   l_all_pubitems_tbl := l_null_pubitems_tbl;
42   x_pubitems_tbl := l_null_pubitems_tbl;
43 
44   /*** retrieve names of deferred dirty SERVICEP publication items ***/
45   asg_apply.get_all_pub_items(p_username,
46                               p_tranid,
47                               'SERVICEP',
48                               l_all_pubitems_tbl,
49                               l_return_status);
50 
51   /*** successfully retrieved item names? ***/
52   IF l_return_status <> FND_API.G_RET_STS_SUCCESS OR l_all_pubitems_tbl.COUNT = 0 THEN
53     NULL;
54   ELSE
55      l_defer_count := 0;
56      FOR i IN 1..l_all_pubitems_tbl.count LOOP
57         OPEN c_isdeferred(p_username,p_tranid, l_all_pubitems_tbl(i));
58         FETCH c_isdeferred INTO l_dummy;
59         IF c_isdeferred%FOUND THEN
60            l_defer_count := l_defer_count + 1;
61            x_pubitems_tbl(l_defer_count) :=  l_all_pubitems_tbl(i);
62         END IF;
63         CLOSE c_isdeferred;
64      END LOOP;
65   END IF;
66 
67   x_return_status := FND_API.G_RET_STS_SUCCESS;
68 
69 END GET_ALL_DEFERRED_PUB_ITEMS;
70 
71 
72 /***
73   This function accepts a list of publication items and a publication item name and
74   returns whether the item name was found within the item list.
75   When the item name was found, it will be removed from the list.
76 ***/
77 FUNCTION ITEM_EXISTS
78         (
79           p_pubitems_tbl IN OUT nocopy asg_apply.vc2_tbl_type,
80           p_item_name    IN     VARCHAR2
81         )
82 RETURN BOOLEAN IS
83   l_index BINARY_INTEGER;
84 BEGIN
85 
86 
87   IF p_pubitems_tbl.COUNT <= 0 THEN
88     /*** no items in list -> item name not found ***/
89     RETURN FALSE;
90   END IF;
91   FOR l_index IN p_pubitems_tbl.FIRST..p_pubitems_tbl.LAST LOOP
92     IF p_pubitems_tbl.EXISTS(l_index) THEN
93       IF p_pubitems_tbl( l_index ) = p_item_name THEN
94         /*** found item -> delete from array and return TRUE ***/
95         p_pubitems_tbl.DELETE( l_index );
96 
97         RETURN TRUE;
98       END IF;
99     END IF;
100   END LOOP;
101   /*** item name not found ***/
102 
103   RETURN FALSE;
104 EXCEPTION WHEN OTHERS THEN
105   CSM_UTIL_PKG.log( 'Exception occurred in CSM_SERVICEP_WRAPPER_PKG.ITEM_EXISTS:' || fnd_global.local_chr(10) || SQLERRM,
106                    'CSM_SERVICEP_WRAPPER_PKG.ITEM_EXISTS',FND_LOG.LEVEL_EXCEPTION);
107 
108   RETURN FALSE;
109 END ITEM_EXISTS;
110 
111 /***
112   This procedure is called by ASG_APPLY.APPLY_CLIENT_CHANGES if a list of dirty publication items
113   has been retrieved for a user/tranid combination. This procedure gets called for both
114   deferred and non-deferred publication items.
115 ***/
116 PROCEDURE APPLY_DIRTY_PUBITEMS
117          (
118            p_user_name     IN     VARCHAR2,
119            p_tranid        IN     NUMBER,
120            p_pubitems_tbl  IN OUT nocopy asg_apply.vc2_tbl_type,
121            x_return_status IN OUT nocopy VARCHAR2
122          ) IS
123   l_index BINARY_INTEGER;
124 BEGIN
125 
126   x_return_status := FND_API.G_RET_STS_SUCCESS;
127 
128   /*** call appropriate wrapper ***/
129 
130  /*** process Deferred first***/
131   IF ITEM_EXISTS( p_pubitems_tbl, 'CSM_DEFERRED_TRANSACTIONS') THEN
132       CSM_DEFERRED_TXNS_PKG.APPLY_CLIENT_CHANGES
133          (
134            p_user_name,
135            p_tranid,
136            g_debug_level,
137            x_return_status
138          );
139   END IF;
140   --we should process undo before all PI inorder to effectively call undo
141 
142   IF ITEM_EXISTS( p_pubitems_tbl, 'CSM_CLIENT_UNDO_REQUEST') THEN
143       CSM_UNDO_PKG.APPLY_CLIENT_CHANGES
144          (
145            p_user_name,
146            p_tranid,
147            g_debug_level,
148            x_return_status
149          );
150   END IF;
151 
152   IF ITEM_EXISTS( p_pubitems_tbl, 'CSM_HZ_LOCATIONS') THEN
153       CSM_HZ_LOCATION_PKG.APPLY_CLIENT_CHANGES
154          (
155            p_user_name,
156            p_tranid,
157            g_debug_level,
158            x_return_status
159          );
160   END IF;
161   /*** call incident wrapper
162     We should process 'CSM_INCIDENTS_ALL' before CSM_TASKS because
163     CSM_TASKS might be refering to locally created INCIDENT_ID.
164   ***/
165   IF ITEM_EXISTS( p_pubitems_tbl, 'CSM_INCIDENTS_ALL') THEN
166       CSM_SERVICE_REQUESTS_PKG.APPLY_CLIENT_CHANGES
167          (
168            p_user_name,
169            p_tranid,
170            g_debug_level,
171            x_return_status
172          );
173   END IF;
174 
175   IF ITEM_EXISTS( p_pubitems_tbl, 'CSM_TASKS') THEN
176       CSM_TASKS_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 
186   IF ITEM_EXISTS( p_pubitems_tbl, 'CSM_TASK_ASSIGNMENTS') THEN
187 
188       CSM_TASK_ASSIGNMENTS_PKG.APPLY_CLIENT_CHANGES
189          (
190            p_user_name,
191            p_tranid,
192            g_debug_level,
193            x_return_status
194          );
195   END IF;
196 
197   IF ITEM_EXISTS( p_pubitems_tbl, 'CSF_M_COUNTER_VALUES') THEN
198 
199       CSM_COUNTER_VALUES_PKG.APPLY_CLIENT_CHANGES
200          (
201            p_user_name,
202            p_tranid,
203            g_debug_level,
204            x_return_status
205          );
206   END IF;
207 
208   IF ITEM_EXISTS( p_pubitems_tbl, 'CSM_DEBRIEF_HEADERS') THEN
209 
210       CSM_DEBRIEF_HEADERS_PKG.APPLY_CLIENT_CHANGES
211          (
212            p_user_name,
213            p_tranid,
214            g_debug_level,
215            x_return_status
216          );
217   END IF;
218 
219   IF ITEM_EXISTS( p_pubitems_tbl, 'CSF_M_DEBRIEF_EXPENSES') THEN
220 
221       CSM_DEBRIEF_EXPENSES_PKG.APPLY_CLIENT_CHANGES
222          (
223            p_user_name,
224            p_tranid,
225            g_debug_level,
226            x_return_status
227          );
228   END IF;
229 
230   IF ITEM_EXISTS( p_pubitems_tbl, 'CSF_M_DEBRIEF_LABOR') THEN
231 
232       CSM_DEBRIEF_LABOR_PKG.APPLY_CLIENT_CHANGES
233          (
234            p_user_name,
235            p_tranid,
236            g_debug_level,
237            x_return_status
238          );
239    END IF ;
240 
241    IF ITEM_EXISTS( p_pubitems_tbl, 'CSF_M_DEBRIEF_PARTS') THEN
242 
243       CSM_DEBRIEF_PARTS_PKG.APPLY_CLIENT_CHANGES
244          (
245            p_user_name,
246            p_tranid,
247            g_debug_level,
248            x_return_status
249          );
250    END IF;
251 
252   IF ITEM_EXISTS( p_pubitems_tbl, 'CSF_M_NOTES') THEN
253       CSM_NOTES_PKG.APPLY_CLIENT_CHANGES
254          (
255            p_user_name,
256            p_tranid,
257            g_debug_level,
258            x_return_status
259          );
260   END IF;
261 
262    IF ITEM_EXISTS( p_pubitems_tbl, 'CSF_M_LOBS') THEN
263 
264       CSM_LOBS_PKG.APPLY_CLIENT_CHANGES
265          (
266            p_user_name,
267            p_tranid,
268            g_debug_level,
269            x_return_status
270          );
271   END IF;
272 
273    IF ITEM_EXISTS( p_pubitems_tbl, 'CSF_M_MAIL_MESSAGES') THEN
274       CSM_MAIL_MESSAGES_PKG.APPLY_CLIENT_CHANGES
275          (
276            p_user_name,
277            p_tranid,
278            g_debug_level,
279            x_return_status
280          );
281   END IF;
282 
283    IF ITEM_EXISTS( p_pubitems_tbl, 'CSF_M_MAIL_RECIPIENTS') THEN
284       CSM_MAIL_RECIPIENTS_PKG.APPLY_CLIENT_CHANGES
285          (
286            p_user_name,
287            p_tranid,
288            g_debug_level,
289            x_return_status
290          );
291   END IF;
292 
293   /*** call requirements wrapper ***/
294    IF ITEM_EXISTS( p_pubitems_tbl, 'CSM_REQ_LINES') THEN
295       CSM_REQUIREMENTS_PKG.APPLY_CLIENT_CHANGES
296          (
297            p_user_name,
298            p_tranid,
299            g_debug_level,
300            x_return_status
301          );
302   END IF;
303 
304   /*** call requirements wrapper ***/
305    IF ITEM_EXISTS( p_pubitems_tbl, 'CSF_M_INVENTORY') THEN
306       CSM_INVENTORY_PKG.APPLY_CLIENT_CHANGES
307          (
308            p_user_name,
309            p_tranid,
310            g_debug_level,
311            x_return_status
312          );
313   END IF;
314 
315    IF ITEM_EXISTS( p_pubitems_tbl, 'CSF_M_USER') THEN
316       CSM_USER_PKG.APPLY_CLIENT_CHANGES
317          (
318            p_user_name,
319            p_tranid,
320            g_debug_level,
321            x_return_status
322          );
323   END IF;
324 
325   --Support for Parts Transfer
326   IF ITEM_EXISTS( p_pubitems_tbl, 'CSM_MTL_MATERIAL_TXNS') THEN
327       CSM_MATERIAL_TRANSACTION_PKG.APPLY_CLIENT_CHANGES
328          (
329            p_user_name,
330            p_tranid,
331            g_debug_level,
332            x_return_status
333          );
334   END IF;
335 
336 
337  IF ITEM_EXISTS( p_pubitems_tbl, 'CSM_AUTO_SYNC_NFN') THEN
338 
339 
340 CSM_UTIL_PKG.log('Entered CSM_AUTO_SYNC_NFN .Will apply_client_changes'  );
341       CSM_AUTO_SYNC_NFN_PKG.APPLY_CLIENT_CHANGES
342          (
343            p_user_name,
344            p_tranid,
345            g_debug_level,
346            x_return_status
347          );
348   END IF;
349 
350 IF ITEM_EXISTS( p_pubitems_tbl, 'CSM_CLIENT_NFN_LOG') THEN
351       CSM_CLIENT_NFN_LOG_PKG.APPLY_CLIENT_CHANGES
352          (
353            p_user_name,
354            p_tranid,
355            g_debug_level,
356            x_return_status
357          );
358   END IF;
359 
360 IF ITEM_EXISTS( p_pubitems_tbl, 'CSM_AUTO_SYNC_LOG') THEN
361       CSM_AUTO_SYNC_LOG_PKG.APPLY_CLIENT_CHANGES
362          (
363            p_user_name,
364            p_tranid,
365            g_debug_level,
366            x_return_status
367          );
368   END IF;
369 
370 
371 IF ITEM_EXISTS( p_pubitems_tbl, 'CSM_AUTO_SYNC') THEN
372       CSM_AUTO_SYNC_PKG.APPLY_CLIENT_CHANGES
373          (
374            p_user_name,
375            p_tranid,
376            g_debug_level,
377            x_return_status
378          );
379   END IF;
380 
381   IF ITEM_EXISTS( p_pubitems_tbl, 'CSM_QUERY') THEN
382       CSM_MOBILE_QUERY_PKG.APPLY_CLIENT_CHANGES
383          (
384            p_user_name,
385            p_tranid,
386            g_debug_level,
387            x_return_status
388          );
389   END IF;
390 
391   IF ITEM_EXISTS( p_pubitems_tbl, 'CSM_QUERY_INSTANCES') THEN
392       CSM_QUERY_INSTANCE_PKG.APPLY_CLIENT_CHANGES
393          (
394            p_user_name,
395            p_tranid,
396            g_debug_level,
397            'N',  --p_from_sync
398            x_return_status
399          );
400   END IF;
401 
402   IF ITEM_EXISTS( p_pubitems_tbl, 'CSM_ORDER_LINES') THEN
403     CSM_ORDERS_PKG.APPLY_CLIENT_CHANGES
404        (
405          p_user_name,
406          p_tranid,
407          g_debug_level,
408          x_return_status
409        );
410   END IF;
411 
412   --TODO: call other wrappers for other updatable PIs
413 
414 
415 EXCEPTION WHEN OTHERS THEN
416   CSM_UTIL_PKG.log('Exception occurred in CSM_SERVICEP_WRAPPER_PKG.APPLY_DIRTY_PUBITEMS:' || fnd_global.local_chr(10) || SQLERRM,
417                     'CSM_SERVICEP_WRAPPER_PKG.APPLY_DIRTY_PUBITEMS',FND_LOG.LEVEL_EXCEPTION  );
418 
419 END APPLY_DIRTY_PUBITEMS;
420 
421 /***
422   This procedure is called by ASG_APPLY.PROCESS_UPLOAD when a publication item for publication SERVICEL
423   is dirty. This happens when a mobile field service device executed DML on an updatable table and did
424   a fast sync. This procedure will detect which publication items got dirty and will execute the wrapper
425   procedures which will insert the data that came from mobile into the backend tables using public APIs.
426 ***/
427 PROCEDURE APPLY_CLIENT_CHANGES
428          (
429            p_user_name IN VARCHAR2,
430            p_tranid    IN NUMBER
431          ) IS
432   l_pubitems_tbl  asg_apply.vc2_tbl_type;
433   l_return_status VARCHAR2(1);
434 BEGIN
435 
436   /*** retrieve names of all dirty SERVICEP publication items ***/
437 /*** get_all_dirty and get_all_defered_pub_items is replaced by get_all_pub_items ***/
438   asg_apply.get_all_pub_items(p_user_name,
439     p_tranid,
440     'SERVICEP',
441     l_pubitems_tbl,
442     l_return_status);
443 
444   FOR i IN 1..l_pubitems_tbl.count LOOP
445 
446   csm_util_pkg.log('Dirty Pub items for tranid: ' || p_tranid || ' : ' || l_pubitems_tbl(i),'CSM_SERVICEP_WRAPPER_PKG.APPLY_CLIENT_CHANGES',FND_LOG.LEVEL_PROCEDURE);
447 --  logm('Dirty Pub items for tranid: ' || p_tranid || ' : ' || l_pubitems_tbl(i));
448   END LOOP;
449 
450   /*** successfully retrieved item names? ***/
451   IF l_return_status <> FND_API.G_RET_STS_SUCCESS OR l_pubitems_tbl.COUNT = 0 THEN
452     NULL;
453   ELSE
454     /*** yes -> process them ***/
455 
456     APPLY_DIRTY_PUBITEMS
457          ( p_user_name
458          , p_tranid
459          , l_pubitems_tbl
460          , l_return_status
461          );
462   END IF;
463 
464   /*** retrieve names of deferred dirty SERVICEP publication items ***/
465   /*
466   get_all_deferred_pub_items(p_user_name,
467                              p_tranid,
468                              'SERVICEP',
469                              l_pubitems_tbl,
470                              l_return_status);
471 
472 
473 
474   IF l_return_status <> FND_API.G_RET_STS_SUCCESS OR l_pubitems_tbl.COUNT = 0 THEN
475     NULL;
476   ELSE
477 
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 
488 EXCEPTION WHEN OTHERS THEN
489   /*** catch and log exceptions ***/
490   CSM_UTIL_PKG.log('Exception occurred in CSM_SERVICEP_WRAPPER_PKG.Apply_Client_Changes: ' || sqlerrm
491                || ' for User: ' || p_user_name ,'CSM_SERVICEP_WRAPPER_PKG.APPLY_CLIENT_CHANGES',FND_LOG.LEVEL_EXCEPTION);
492 
493 
494 END APPLY_CLIENT_CHANGES;
495 
496 
497 
498 
499 /**
500  *  POPULATE_ACCESS_RECORDS
501  *  is the bootstrap procedure called by MDG upon CSM user creation
502  *  we need to iterate over the responsibilities assigned to this CSM user
503  *  and call the CSM_WF_PKG.User_Resp_Post_Ins(user_id, resp_id)
504  */
505 PROCEDURE POPULATE_ACCESS_RECORDS ( p_userid IN NUMBER)
506 IS
507   CURSOR l_resp_csr(b_userid NUMBER) IS
508     SELECT DISTINCT aupr.RESPONSIBILITY_ID AS RESPONSIBILITY_ID
509     FROM   ASG_USER au
510 	,      asg_user_pub_resps aupr
511     WHERE  au.USER_ID 		  	  = b_userid
512 	AND    aupr.pub_name 		  = 'SERVICEP'
513 	AND    au.user_name  		  = aupr.user_name;
514 
515   l_resp_rec  l_resp_csr%ROWTYPE;
516 
517 BEGIN
518    csm_util_pkg.log('insert called','CSM_SERVICEP_WRAPPER_PKG.POPULATE_ACCESS_RECORDS',FND_LOG.LEVEL_PROCEDURE);
519 
520    csm_util_pkg.pvt_log('insert called' || 'CSM_SERVICEP_WRAPPER_PKG.POPULATE_ACCESS_RECORDS');
521   FOR l_resp_rec IN l_resp_csr(p_userid) LOOP
522     csm_util_pkg.pvt_log('POPULATE_ACCESS_RECORDS: USER_ID = ' || p_userid || ' RESP_ID = ' || l_resp_rec.RESPONSIBILITY_ID);
523     csm_util_pkg.log('POPULATE_ACCESS_RECORDS: USER_ID = ' || p_userid || ' RESP_ID = ' || l_resp_rec.RESPONSIBILITY_ID
524                      ,FND_LOG.LEVEL_STATEMENT  );
525     CSM_WF_PKG.User_Resp_Post_Ins(p_user_id => p_userid,
526                                   p_responsibility_id => l_resp_rec.RESPONSIBILITY_ID );
527   END LOOP;
528 END POPULATE_ACCESS_RECORDS;  -- end POPULATE_ACCESS_RECORDS
529 
530 /**
531  *  DELETE_ACCESS_RECORDS
532  *  is the bootstrap procedure called by MDG upon CSM user deletion
533  *  we need to iterate over the responsibilities assigned to this CSM user
534  *  and call the CSM_WF_PKG.User_Resp_Post_Ins(user_id, resp_id)
535  */
536 PROCEDURE DELETE_ACCESS_RECORDS ( p_userid in number)
537 IS
538 BEGIN
539     csm_util_pkg.log('delete called','CSM_SERVICEP_WRAPPER_PKG.DELETE_ACCESS_RECORDS',FND_LOG.LEVEL_PROCEDURE);
540     CSM_WF_PKG.User_Del(p_user_id => p_userid);
541 END DELETE_ACCESS_RECORDS;  -- end DELETE_ACCESS_RECORDS
542 
543 /*
544   Call back function for ASG. used for create synonyms / grant accesses in mobileadmin schema
545   before running installation manager
546  */
547 FUNCTION CHECK_OLITE_SCHEMA RETURN VARCHAR2  IS
548   l_count NUMBER;
549 BEGIN
550   SELECT count(1) INTO l_count
551   FROM all_synonyms
552   WHERE owner = g_olite_schema AND SYNONYM_NAME = 'FND_GLOBAL';
553   IF l_count = 0 THEN
554     -- csm_util_pkg.log(' synonym mobileadmin.FND_GLOBAL does not exist');
555     --EXECUTE IMMEDIATE 'create synonym mobileadmin.FND_GLOBAL for FND_GLOBAL';
556     EXECUTE IMMEDIATE 'create synonym '
557                         ||g_olite_schema||'.FND_GLOBAL for FND_GLOBAL';
558   END IF;
559   SELECT count(1) INTO l_count
560   FROM all_synonyms
561   WHERE owner = g_olite_schema AND SYNONYM_NAME = 'CSM_PROFILE_PKG';
562   IF l_count = 0 THEN
563     -- csm_util_pkg.log(' synonym mobileadmin.csm_profile_pkg does not exist');
564     --EXECUTE IMMEDIATE 'create synonym mobileadmin.csm_profile_pkg for csm_profile_pkg';
565 
566     EXECUTE IMMEDIATE 'create synonym '
567                       ||g_olite_schema||'.csm_profile_pkg for csm_profile_pkg';
568   END IF;
569   SELECT count(1) INTO l_count
570   FROM all_synonyms
571   WHERE owner = g_olite_schema AND SYNONYM_NAME = 'CSM_UTIL_PKG';
572   IF l_count = 0 THEN
573     -- csm_util_pkg.log(' synonym mobileadmin.csm_profile_pkg does not exist');
574     --EXECUTE IMMEDIATE 'create synonym mobileadmin.csm_util_pkg for csm_util_pkg';
575 
576     EXECUTE IMMEDIATE 'create synonym '
577                        ||g_olite_schema||'.csm_util_pkg for csm_util_pkg';
578   END IF;
579 
580   RETURN 'Y';
581 
582 EXCEPTION
583   WHEN OTHERS THEN
584      RETURN 'N';
585 END  CHECK_OLITE_SCHEMA;
586 
587 FUNCTION detect_conflict(p_user_name IN VARCHAR2) RETURN VARCHAR2 IS
588 BEGIN
589   CSM_UTIL_PKG.LOG('Entering CSM_SERVICEP_WRAPPER_PKG.DETECT_CONFLICT for user ' || p_user_name ,
590                          'CSM_SERVICEP_WRAPPER_PKG.DETECT_CONFLICT',FND_LOG.LEVEL_PROCEDURE);
591 
592       RETURN 'Y' ;
593 EXCEPTION
594   WHEN OTHERS THEN
595      RETURN 'Y';
596 END ;
597 
598 FUNCTION CONFLICT_RESOLUTION_METHOD (p_user_name IN VARCHAR2,
599                                      p_tran_id IN NUMBER,
600                                      p_sequence IN NUMBER)
601 RETURN VARCHAR2 IS
602 l_profile_value VARCHAR2(30) ;
603 BEGIN
604   CSM_UTIL_PKG.LOG('Entering CSM_SERVICEP_WRAPPER_PKG.CONFLICT_RESOLUTION_METHOD for user ' || p_user_name ,
605                          'CSM_SERVICEP_WRAPPER_PKG.CONFLICT_RESOLUTION_METHOD',FND_LOG.LEVEL_PROCEDURE);
606  l_profile_value := fnd_profile.value(csm_profile_pkg.g_JTM_APPL_CONFLICT_RULE);
607 
608   if l_profile_value = 'SERVER_WINS' then
609       RETURN 'S' ;
610   else
611       RETURN 'C' ;
612   END IF ;
613 EXCEPTION
614   WHEN OTHERS THEN
615      RETURN 'C';
616 END ;
617 
618 PROCEDURE APPLY_HTML5_CHANGES(p_user_name IN VARCHAR2,p_tranid    IN NUMBER)
619 IS
620 
621 l_return_status varchar2(100);
622 l_pubitems_tbl  asg_apply.vc2_tbl_type;
623 BEGIN
624 
625   /*** retrieve names of all dirty SERVICEP publication items ***/
626 /*** get_all_dirty and get_all_defered_pub_items is replaced by get_all_pub_items ***/
627   csm_html5_pkg.get_all_pub_items(p_user_name,p_tranid,l_pubitems_tbl,l_return_status);
628 
629   FOR i IN 1..l_pubitems_tbl.count LOOP
630    csm_util_pkg.log('Dirty Pub items for tranid: ' || p_tranid || ' : ' || l_pubitems_tbl(i),'CSM_SERVICEP_WRAPPER_PKG.APPLY_HTML5_CHANGES',FND_LOG.LEVEL_PROCEDURE);
631   END LOOP;
632 
633   /*** successfully retrieved item names? ***/
634   IF l_pubitems_tbl.COUNT > 0 THEN
635         /*** yes -> process them ***/
636 
637     APPLY_DIRTY_PUBITEMS
638          ( p_user_name
639          , p_tranid
640          , l_pubitems_tbl
641          , l_return_status
642          );
643   ELSE
644      CSM_UTIL_PKG.log('No data found for User: ' || p_user_name || ' in txn-id:'|| p_tranid,'CSM_SERVICEP_WRAPPER_PKG.APPLY_HTML5_CHANGES',FND_LOG.LEVEL_EXCEPTION);
645   END IF;
646 
647 EXCEPTION WHEN OTHERS THEN
648   /*** catch and log exceptions ***/
649   CSM_UTIL_PKG.log('Exception occurred in CSM_SERVICEP_WRAPPER_PKG.APPLY_HTML5_CHANGES: ' || sqlerrm || ' for User: ' || p_user_name ,'CSM_SERVICEP_WRAPPER_PKG.APPLY_HTML5_CHANGES',FND_LOG.LEVEL_EXCEPTION);
650 
651 END APPLY_HTML5_CHANGES;
652 
653 
654 END CSM_SERVICEP_WRAPPER_PKG;