DBA Data[Home] [Help]

PACKAGE BODY: APPS.CSM_USER_PKG

Source


1 PACKAGE BODY CSM_USER_PKG AS
2 /* $Header: csmuusrb.pls 120.4 2006/09/28 06:35:18 rsripada noship $ */
3 
4 /*** Globals ***/
5 g_object_name  CONSTANT VARCHAR2(30) := 'CSM_USER_PKG';  -- package name
6 g_pub_name     CONSTANT VARCHAR2(30) := 'CSF_M_USER';  -- publication item name
7 g_debug_level           NUMBER; -- debug level
8 
9 CURSOR c_USER_inq( b_user_name VARCHAR2, b_tranid NUMBER) IS
10   SELECT *
11   FROM  CSF_M_USER_INQ
12   WHERE tranid$$ = b_tranid
13   AND   clid$$cs = b_user_name;
14 
15 
16 /***
17   This procedure is called by APPLY_RECORD when
18   an inserted record is to be processed.
19 ***/
20 PROCEDURE APPLY_INSERT
21          (
22            p_record        IN c_user_inq%ROWTYPE,
23            p_error_msg     OUT NOCOPY    VARCHAR2,
24            x_return_status IN OUT NOCOPY VARCHAR2
25          ) IS
26 
27 BEGIN
28   x_return_status := FND_API.G_RET_STS_SUCCESS;
29 END APPLY_INSERT;
30 
31 
32 /***
33   This procedure is called by APPLY_CRECORD when
34   an updated record is to be processed.
35 ***/
36 PROCEDURE APPLY_UPDATE
37          (
38            p_record        IN c_USER_inq%ROWTYPE,
39            p_error_msg     OUT NOCOPY    VARCHAR2,
40            x_return_status IN OUT NOCOPY VARCHAR2
41          )
42 IS
43 l_resp_app VARCHAR2(5);
44 l_resp_key VARCHAR2(20):='CSL_IMOBILE' ;
45 l_security_group VARCHAR2(20) :='STANDARD' ;
46 BEGIN
47  csm_util_pkg.log
48   ( g_object_name || '.APPLY_UPDATE entered',
49     g_object_name || '.APPLY_UPDATE',
50     FND_LOG.LEVEL_PROCEDURE);
51 
52   UPDATE ASG_USER
53   SET  MIGRATION_COMPLETED = p_record.MIGRATION_COMPLETED,
54        MIGRATION_COMPLETED_DATE = p_record.MIGRATION_COMPLETED_DATE,
55        MIGRATION_COMPLETION_VERSION = p_record.MIGRATION_COMPLETION_VERSION
56   WHERE USER_ID=p_record.USER_ID;
57 
58   IF(p_record.MIGRATION_COMPLETION_VERSION =  12) THEN
59     SELECT APPLICATION_SHORT_NAME INTO l_resp_app FROM fnd_application WHERE APPLICATION_ID=868; --CSL
60     BEGIN
61       FND_USER_PKG.DELRESP(p_record.USER_NAME,l_resp_app,l_resp_key,l_security_group);
62     EXCEPTION
63     WHEN OTHERS THEN
64       NULL;
65     END;
66   END IF;
67 
68   -- success
69   x_return_status := FND_API.G_RET_STS_SUCCESS;
70 
71    csm_util_pkg.log
72   ( 'Leaving '|| g_object_name || '.APPLY_UPDATE',
73     g_object_name || '.APPLY_UPDATE',
74     FND_LOG.LEVEL_PROCEDURE);
75 
76 EXCEPTION
77   WHEN others THEN
78      CSM_UTIL_PKG.log( 'Exception in ' || g_object_name || '.APPLY_UPDATE:'
79        || ' for PK ' || p_record.user_id,
80        g_object_name || '.APPLY_UPDATE',
81        FND_LOG.LEVEL_EXCEPTION );
82 
83      x_return_status := FND_API.G_RET_STS_ERROR;
84 
85 END APPLY_UPDATE;
86 
87 
88 /***
89   This procedure is called by APPLY_CLIENT_CHANGES when a record
90   is to be processed.
91 ***/
92 PROCEDURE APPLY_RECORD
93          (
94            p_record        IN     c_USER_inq%ROWTYPE,
95            p_error_msg     OUT NOCOPY    VARCHAR2,
96            x_return_status IN OUT NOCOPY VARCHAR2
97          ) IS
98 BEGIN
99 
100   /*** initialize return status and message list ***/
101   x_return_status := FND_API.G_RET_STS_SUCCESS;
102   FND_MSG_PUB.INITIALIZE;
103 
104   IF p_record.dmltype$$='U' THEN
105     -- Process update
106     APPLY_UPDATE
107       (
108         p_record,
109         p_error_msg,
110         x_return_status
111       );
112   ELSE
113     -- Process delete and insert;
114     -- Not supported for this entity
115     CSM_UTIL_PKG.LOG
116       ( 'Delete and Insert are not supported for this entity'
117         || ' for PK ' || p_record.user_id ,
118         g_object_name || '.APPLY_RECORD',
119         FND_LOG.LEVEL_ERROR);
120 
121     p_error_msg := CSM_UTIL_PKG.GET_ERROR_MESSAGE_TEXT
122       (
123         p_message        => 'CSM_DML_OPERATION'
124       , p_token_name1    => 'DML'
125       , p_token_value1   => p_record.dmltype$$
126       );
127 
128     x_return_status := FND_API.G_RET_STS_ERROR;
129   END IF;
130 
131 EXCEPTION
132 WHEN OTHERS THEN
133   /*** defer record when any process exception occurs ***/
134   CSM_UTIL_PKG.LOG
135     ( 'Exception occurred in ' || g_object_name || '.APPLY_RECORD:' || ' ' || SQLERRM
136       || ' for PK ' || p_record.user_id ,
137       g_object_name || '.APPLY_RECORD',
138       FND_LOG.LEVEL_EXCEPTION);
139 
140   fnd_msg_pub.Add_Exc_Msg( g_object_name, 'APPLY_RECORD', SQLERRM);
141   p_error_msg := CSM_UTIL_PKG.GET_ERROR_MESSAGE_TEXT
142     (
143       p_api_error      => TRUE
144     );
145 
146   x_return_status := FND_API.G_RET_STS_ERROR;
147 
148 END APPLY_RECORD;
149 
150 
151 /***
152   APPLY_CLIENT_CHANGES procedure is called by CSM_SERVICEP_WRAPPER_PKG, for upward sync of
153   publication item CSF_M_USER
154 ***/
155 PROCEDURE APPLY_CLIENT_CHANGES
156          (
157            p_user_name     IN VARCHAR2,
158            p_tranid        IN NUMBER,
159            p_debug_level   IN NUMBER,
160            x_return_status IN OUT NOCOPY VARCHAR2
161          )
162   IS
163   l_process_status VARCHAR2(1);
164   l_error_msg      VARCHAR2(4000);
165   r_user  c_user_inq%ROWTYPE;
166 BEGIN
167   csm_util_pkg.log
168   ( g_object_name || '.APPLY_CLIENT_CHANGES entered',
169     g_object_name || '.APPLY_CLIENT_CHANGES',
170     FND_LOG.LEVEL_PROCEDURE);
171   g_debug_level := p_debug_level;
172   x_return_status := FND_API.G_RET_STS_SUCCESS;
173 
174   OPEN c_USER_inq( p_user_name, p_tranid);
175   FETCH c_user_inq INTO r_user;
176   CLOSE c_user_inq;
177 
178   IF r_user.USER_ID IS NOT NULL THEN
179 
180     SAVEPOINT save_rec;
181 
182     /*** apply record ***/
183     APPLY_RECORD
184       (
185         r_USER
186       , l_error_msg
187       , l_process_status
188       );
189 
190     /*** was record processed successfully? ***/
191     IF l_process_status = FND_API.G_RET_STS_SUCCESS THEN
192       /*** If Yes -> delete record from inqueue ***/
193       CSM_UTIL_PKG.DELETE_RECORD
194         (
195           p_user_name,
196           p_tranid,
197           r_USER.seqno$$,
198           r_USER.user_id,
199           g_object_name,
200           g_pub_name,
201           l_error_msg,
202           l_process_status
203         );
204 
205       /*** was delete successful? ***/
206       IF l_process_status <> FND_API.G_RET_STS_SUCCESS THEN
207         /*** If No -> rollback ***/
208         CSM_UTIL_PKG.LOG
209         ( 'Deleting from inqueue failed, rolling back to savepoint'
210           || ' for PK ' || r_USER.user_id ,
211           g_object_name || '.APPLY_CLIENT_CHANGES',
212           FND_LOG.LEVEL_ERROR); -- put PK column here
213         ROLLBACK TO save_rec;
214         x_return_status := FND_API.G_RET_STS_ERROR;
215       END IF;
216     END IF;
217 
218     IF l_process_Status <> FND_API.G_RET_STS_SUCCESS THEN
219       /*** Record was not processed successfully or delete failed
220       -> defer and reject record ***/
221       CSM_UTIL_PKG.LOG
222       ( 'Record not processed successfully, deferring and rejecting record'
223         || ' for PK ' || r_USER.user_id ,
224         g_object_name || '.APPLY_CLIENT_CHANGES',
225         FND_LOG.LEVEL_ERROR); -- put PK column here
226 
227       CSM_UTIL_PKG.DEFER_RECORD
228        ( p_user_name
229        , p_tranid
230        , r_USER.seqno$$
231        , r_USER.user_id
232        , g_object_name
233        , g_pub_name
234        , l_error_msg
235        , l_process_status
236        , r_USER.dmltype$$
237        );
238 
239       /*** Was defer successful? ***/
240       IF l_process_status <> FND_API.G_RET_STS_SUCCESS THEN
241         /*** no -> rollback ***/
242         CSM_UTIL_PKG.LOG
243         ( 'Defer record failed, rolling back to savepoint'
244           || ' for PK ' || r_USER.user_id ,
245           g_object_name || '.APPLY_CLIENT_CHANGES',
246           FND_LOG.LEVEL_ERROR); -- put PK column here
247         ROLLBACK TO save_rec;
248         x_return_status := FND_API.G_RET_STS_ERROR;
249       END IF;
250     END IF;
251 
252   END IF;
253 
254 EXCEPTION WHEN OTHERS THEN
255   /*** catch and log exceptions ***/
256   CSM_UTIL_PKG.LOG
257   ( 'Exception occurred in ' || g_object_name || '.APPLY_CLIENT_CHANGES:' || ' ' || SQLERRM,
258     g_object_name || '.APPLY_CLIENT_CHANGES',
259     FND_LOG.LEVEL_EXCEPTION);
260   x_return_status := FND_API.G_RET_STS_ERROR;
261 
262 END APPLY_CLIENT_CHANGES;
263 
264 END CSM_USER_PKG;