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