[Home] [Help]
PACKAGE BODY: APPS.CSM_TA_AUDIT_PKG
Source
1 PACKAGE BODY CSM_TA_AUDIT_PKG AS
2 /* $Header: csmutaab.pls 120.3.12020000.2 2013/04/09 11:06:40 saradhak ship $ */
3
4 error EXCEPTION;
5
6
7 /*** Globals ***/
8 g_object_name CONSTANT VARCHAR2(30) := 'CSM_TA_AUDIT_PKG';
9 g_pub_name CONSTANT VARCHAR2(30) := 'CSM_TASK_ASSIGNMENTS_AUDIT';
10 g_debug_level NUMBER; -- debug level
11
12 /* Select all inq records */
13 CURSOR c_ta_audit( b_user_name VARCHAR2, b_tranid NUMBER, b_assignment_id NUMBER) is
14 SELECT *
15 FROM CSM_TASK_ASSIGNMENTS_AUDIT_INQ
16 WHERE tranid$$ = b_tranid
17 AND clid$$cs = b_user_name
18 AND assignment_id = b_assignment_id;
19
20
21 PROCEDURE DO_TASK_AUDIT(p_record IN c_ta_audit%ROWTYPE,x_return_status OUT NOCOPY VARCHAR2)
22 IS
23 l_t_id NUMBER;
24 l_r_id ROWID;
25 l_ovn NUMBER;
26 BEGIN
27
28 SELECT JTF_TASK_AUDITS_S.nextval INTO l_t_id FROM DUAL;
29
30 CSM_UTIL_PKG.LOG('Entered CSM_TA_AUDIT_PKG.DO_TASK_AUDIT for audit Id:'||l_t_id||' for Task ID ' || p_record.TASK_ID ,
31 'CSM_TA_AUDIT_PKG.DO_TASK_AUDIT',FND_LOG.LEVEL_PROCEDURE);
32
33 SELECT OBJECT_VERSION_NUMBER INTO l_ovn FROM JTF_TASKS_B WHERE TASK_ID=p_record.TASK_ID;
34
35
36
37 JTF_TASK_AUDITS_PVT.INSERT_ROW(
38 X_ROWID => l_r_id,
39 X_TASK_AUDIT_ID =>l_t_id,
40 X_TASK_ID =>p_record.TASK_ID,
41 X_CREATION_DATE =>p_record.CREATION_DATE,
42 X_CREATED_BY =>p_record.CREATED_BY,
43 X_LAST_UPDATE_DATE =>p_record.LAST_UPDATE_DATE,
44 X_LAST_UPDATED_BY =>p_record.LAST_UPDATED_BY,
45 X_LAST_UPDATE_LOGIN =>p_record.LAST_UPDATE_LOGIN,
46 X_OBJECT_VERSION_NUMBER =>l_ovn,
47 X_OLD_TASK_STATUS_ID =>p_record.OLD_ASSIGNMENT_STATUS_ID,
48 X_NEW_TASK_STATUS_ID =>p_record.NEW_ASSIGNMENT_STATUS_ID,
49 X_NEW_NOTIFICATION_PERIOD => NULL, X_OLD_NOTIFICATION_PERIOD_UOM => NULL, X_NEW_NOTIFICATION_PERIOD_UOM => NULL,
50 X_OLD_PARENT_TASK_ID => NULL, X_NEW_PARENT_TASK_ID => NULL,
51 X_OLD_RECURRENCE_RULE_ID => NULL, X_NEW_RECURRENCE_RULE_ID => NULL,
52 X_PALM_CHANGED_FLAG => NULL, X_WINCE_CHANGED_FLAG => NULL, X_LAPTOP_CHANGED_FLAG => NULL,
53 X_DEVICE1_CHANGED_FLAG => NULL, X_DEVICE2_CHANGED_FLAG => NULL, X_DEVICE3_CHANGED_FLAG => NULL,
57 X_OLD_TASK_PRIORITY_ID => NULL, X_NEW_TASK_PRIORITY_ID => NULL,
54 X_OLD_CURRENCY_CODE => NULL, X_NEW_CURRENCY_CODE => NULL,
55 X_OLD_COSTS => NULL, X_NEW_COSTS => NULL,
56 X_OLD_TASK_TYPE_ID => NULL, X_NEW_TASK_TYPE_ID => NULL,
58 X_OLD_OWNER_ID => NULL, X_NEW_OWNER_ID => NULL,
59 X_OLD_OWNER_TYPE_CODE => NULL, X_NEW_OWNER_TYPE_CODE => NULL,
60 X_OLD_ASSIGNED_BY_ID => NULL, X_NEW_ASSIGNED_BY_ID => NULL,
61 X_OLD_CUST_ACCOUNT_ID => NULL, X_NEW_CUST_ACCOUNT_ID => NULL,
62 X_OLD_CUSTOMER_ID => NULL, X_NEW_CUSTOMER_ID => NULL,
63 X_OLD_ADDRESS_ID => NULL, X_NEW_ADDRESS_ID => NULL,
64 X_OLD_PLANNED_START_DATE => NULL, X_NEW_PLANNED_START_DATE => NULL,
65 X_OLD_PLANNED_END_DATE => NULL, X_NEW_PLANNED_END_DATE => NULL,
66 X_OLD_SCHEDULED_START_DATE => NULL, X_NEW_SCHEDULED_START_DATE => NULL,
67 X_OLD_SCHEDULED_END_DATE => NULL, X_NEW_SCHEDULED_END_DATE => NULL,
68 X_OLD_ACTUAL_START_DATE => NULL, X_NEW_ACTUAL_START_DATE => NULL,
69 X_OLD_ACTUAL_END_DATE => NULL, X_NEW_ACTUAL_END_DATE => NULL,
70 X_OLD_SOURCE_OBJECT_TYPE_CODE => NULL, X_NEW_SOURCE_OBJECT_TYPE_CODE => NULL,
71 X_OLD_TIMEZONE_ID => NULL, X_NEW_TIMEZONE_ID => NULL,
72 X_OLD_SOURCE_OBJECT_ID => NULL, X_NEW_SOURCE_OBJECT_ID => NULL,
73 X_OLD_SOURCE_OBJECT_NAME => NULL, X_NEW_SOURCE_OBJECT_NAME => NULL,
74 X_OLD_DURATION => NULL, X_NEW_DURATION => NULL,
75 X_OLD_DURATION_UOM => NULL, X_NEW_DURATION_UOM => NULL,
76 X_OLD_PLANNED_EFFORT => NULL, X_NEW_PLANNED_EFFORT => NULL,
77 X_OLD_PLANNED_EFFORT_UOM => NULL, X_NEW_PLANNED_EFFORT_UOM => NULL,
78 X_OLD_ACTUAL_EFFORT => NULL, X_NEW_ACTUAL_EFFORT => NULL,
79 X_OLD_ACTUAL_EFFORT_UOM => NULL, X_NEW_ACTUAL_EFFORT_UOM => NULL,
80 X_OLD_PERCENTAGE_COMPLETE => NULL, X_NEW_PERCENTAGE_COMPLETE => NULL,
81 X_OLD_REASON_CODE => NULL, X_NEW_REASON_CODE => NULL,
82 X_PRIVATE_CHANGED_FLAG => NULL, X_PUBLISH_CHANGED_FLAG => NULL,
83 X_RESTRICT_CLOSURE_CHANGE_FLAG => NULL, X_MULTI_BOOKED_CHANGED_FLAG => NULL,
84 X_MILESTONE_CHANGED_FLAG => NULL, X_HOLIDAY_CHANGED_FLAG => NULL,
85 X_BILLABLE_CHANGED_FLAG => NULL, X_OLD_BOUND_MODE_CODE => NULL,
86 X_NEW_BOUND_MODE_CODE => NULL, X_SOFT_BOUND_CHANGED_FLAG => NULL,
87 X_OLD_WORKFLOW_PROCESS_ID => NULL, X_NEW_WORKFLOW_PROCESS_ID => NULL,
88 X_NOTIFICATION_CHANGED_FLAG => NULL, X_OLD_NOTIFICATION_PERIOD => NULL,
89 X_OLD_TASK_NAME => NULL, X_NEW_TASK_NAME => NULL,
90 X_OLD_DESCRIPTION => NULL, X_NEW_DESCRIPTION => NULL,
91 X_OLD_OWNER_TERRITORY_ID => NULL, X_NEW_OWNER_TERRITORY_ID => NULL,
92 X_NEW_ESCALATION_LEVEL => NULL, X_OLD_ESCALATION_LEVEL => NULL,
93 X_OLD_DATE_SELECTED => NULL, X_NEW_DATE_SELECTED => NULL,
94 X_OLD_LOCATION_ID => NULL, X_NEW_LOCATION_ID => NULL);
95
96 x_return_status := FND_API.G_RET_STS_SUCCESS;
97
98 EXCEPTION WHEN OTHERS THEN
99 fnd_msg_pub.Add_Exc_Msg( g_object_name, 'DO_TASK_AUDIT', sqlerrm);
100 CSM_UTIL_PKG.log( 'Exception in ' || g_object_name || '.DO_TASK_AUDIT: ' || sqlerrm
101 || ' for Task ID ' || p_record.TASK_ID ,'CSM_TA_AUDIT_PKG.DO_TASK_AUDIT',FND_LOG.LEVEL_EXCEPTION);
102 x_return_status := FND_API.G_RET_STS_ERROR;
103 END DO_TASK_AUDIT;
104
105
106 /***
107 This procedure is called by APPLY_CLIENT_CHANGES when an inserted record is to be processed.
108 ***/
109 PROCEDURE APPLY_INSERT
110 (
111 p_record IN c_ta_audit%ROWTYPE,
112 p_error_msg out nocopy VARCHAR2,
113 x_return_status IN out nocopy VARCHAR2
114 ) IS
115
116 --Variable Declarations
117 l_object_version_number NUMBER := 1;
118 l_msg_count NUMBER;
119 l_msg_data VARCHAR2(4000);
120 l_t_id NUMBER;
121 BEGIN
122
123 x_return_status := FND_API.G_RET_STS_SUCCESS;
124 CSM_UTIL_PKG.LOG('Entering CSM_TA_AUDIT_PKG.APPLY_INSERT for Task Assignment Audit ID ' || p_record.ASSIGNMENT_AUDIT_ID ,
125 'CSM_TA_AUDIT_PKG.APPLY_INSERT',FND_LOG.LEVEL_PROCEDURE);
126
127 SELECT JTF_TASK_ASSIGNMENTS_AUDIT_S.nextval INTO l_t_id FROM DUAL;
128
129 CSM_UTIL_PKG.LOG('Before calling JTF_TASK_ASSIGNMENT_AUDIT_PKG.INSERT_ROW for Task Assignment Audit ID ' || l_t_id ,
130 'CSM_TA_AUDIT_PKG.APPLY_INSERT',FND_LOG.LEVEL_EVENT);
131 --We are calling this API as they do not support old values
132 --in create_task_assignment_audit procedure
133 JTF_TASK_ASSIGNMENT_AUDIT_PKG.INSERT_ROW(
134 X_ASSIGNMENT_AUDIT_ID => l_t_id,
135 X_ASSIGNMENT_ID => p_record.ASSIGNMENT_ID,
136 X_TASK_ID => p_record.TASK_ID,
137 X_CREATION_DATE => p_record.CREATION_DATE,
138 X_CREATED_BY => p_record.CREATED_BY,
139 X_LAST_UPDATE_DATE => p_record.LAST_UPDATE_DATE,
140 X_LAST_UPDATED_BY => p_record.LAST_UPDATED_BY,
141 X_LAST_UPDATE_LOGIN => p_record.LAST_UPDATE_LOGIN,
142 X_OLD_RESOURCE_TYPE_CODE => p_record.OLD_RESOURCE_TYPE_CODE,
143 X_NEW_RESOURCE_TYPE_CODE => p_record.NEW_RESOURCE_TYPE_CODE,
144 X_OLD_RESOURCE_ID => p_record.OLD_RESOURCE_ID,
145 X_NEW_RESOURCE_ID => p_record.NEW_RESOURCE_ID,
146 X_OLD_ASSIGNMENT_STATUS_ID => p_record.OLD_ASSIGNMENT_STATUS_ID,
147 X_NEW_ASSIGNMENT_STATUS_ID => p_record.NEW_ASSIGNMENT_STATUS_ID,
148 X_OLD_ACTUAL_EFFORT => NULL,
149 X_NEW_ACTUAL_EFFORT => NULL,
150 X_OLD_ACTUAL_EFFORT_UOM => NULL,
151 X_NEW_ACTUAL_EFFORT_UOM => NULL,
152 X_OLD_RES_TERRITORY_ID => NULL,
153 X_NEW_RES_TERRITORY_ID => NULL,
154 X_OLD_ASSIGNEE_ROLE => NULL,
155 X_NEW_ASSIGNEE_ROLE => NULL,
156 X_OLD_ALARM_TYPE => NULL,
160 X_OLD_CATEGORY_ID => NULL,
157 X_NEW_ALARM_TYPE => NULL,
158 X_OLD_ALARM_CONTACT => NULL,
159 X_NEW_ALARM_CONTACT => NULL,
161 X_NEW_CATEGORY_ID => NULL,
162 X_OLD_BOOKING_START_DATE => NULL,
163 X_NEW_BOOKING_START_DATE => NULL,
164 X_OLD_BOOKING_END_DATE => NULL,
165 X_NEW_BOOKING_END_DATE => NULL,
166 X_OLD_ACTUAL_TRAVEL_DISTANCE => p_record.OLD_ACTUAL_TRAVEL_DISTANCE,
167 X_NEW_ACTUAL_TRAVEL_DISTANCE => p_record.NEW_ACTUAL_TRAVEL_DISTANCE,
168 X_OLD_ACTUAL_TRAVEL_DURATION => p_record.OLD_ACTUAL_TRAVEL_DURATION,
169 X_NEW_ACTUAL_TRAVEL_DURATION => p_record.NEW_ACTUAL_TRAVEL_DURATION,
170 X_OLD_ACTUAL_TRAVEL_DUR_UOM => p_record.OLD_ACTUAL_TRAVEL_DURATION_UOM,
171 X_NEW_ACTUAL_TRAVEL_DUR_UOM => p_record.NEW_ACTUAL_TRAVEL_DURATION_UOM,
172 X_OLD_SCHED_TRAVEL_DISTANCE => p_record.OLD_SCHED_TRAVEL_DISTANCE,
173 X_NEW_SCHED_TRAVEL_DISTANCE => p_record.NEW_SCHED_TRAVEL_DISTANCE,
174 X_OLD_SCHED_TRAVEL_DURATION => p_record.OLD_SCHED_TRAVEL_DURATION,
175 X_NEW_SCHED_TRAVEL_DURATION => p_record.NEW_SCHED_TRAVEL_DURATION,
176 X_OLD_SCHED_TRAVEL_DUR_UOM => p_record.OLD_SCHED_TRAVEL_DURATION_UOM,
177 X_NEW_SCHED_TRAVEL_DUR_UOM => p_record.NEW_SCHED_TRAVEL_DURATION_UOM,
178 X_OLD_ACTUAL_START_DATE => p_record.OLD_ACTUAL_START_DATE,
179 X_NEW_ACTUAL_START_DATE => p_record.NEW_ACTUAL_START_DATE,
180 X_OLD_ACTUAL_END_DATE => p_record.OLD_ACTUAL_END_DATE,
181 X_NEW_ACTUAL_END_DATE => p_record.NEW_ACTUAL_END_DATE,
182 X_FREE_BUSY_TYPE_CHANGED => NULL,
183 X_UPDATE_STATUS_FLAG_CHANGED => NULL,
184 X_SHOW_ON_CALENDAR_CHANGED => NULL,
185 X_SCHEDULED_FLAG_CHANGED => NULL
186 );
187
188 CSM_UTIL_PKG.LOG('Leaving CSM_TA_AUDIT_PKG.APPLY_INSERT for Task Assignment Audit ID ' || p_record.ASSIGNMENT_AUDIT_ID ,
189 'CSM_TA_AUDIT_PKG.APPLY_INSERT',FND_LOG.LEVEL_PROCEDURE);
190
191 DO_TASK_AUDIT(p_record,x_return_status);
192
193 x_return_status := FND_API.G_RET_STS_SUCCESS;
194 EXCEPTION WHEN OTHERS THEN
195 fnd_msg_pub.Add_Exc_Msg( g_object_name, 'APPLY_INSERT', sqlerrm);
196 p_error_msg := CSM_UTIL_PKG.GET_ERROR_MESSAGE_TEXT
197 (
198 p_api_error => TRUE
199 );
200 CSM_UTIL_PKG.log( 'Exception in ' || g_object_name || '.APPLY_INSERT: ' || sqlerrm
201 || ' for Task Assignment Audit ID ' || p_record.ASSIGNMENT_AUDIT_ID ,'CSM_TA_AUDIT_PKG.APPLY_INSERT',FND_LOG.LEVEL_EXCEPTION);
202
203 x_return_status := FND_API.G_RET_STS_SUCCESS;
204 END APPLY_INSERT;
205
206
207 /***
208 This procedure is called by APPLY_CLIENT_CHANGES for every record in in-queue that needs to be processed.
209 ***/
210 PROCEDURE APPLY_RECORD
211 (
212 p_record IN c_ta_audit%ROWTYPE,
213 p_error_msg out nocopy VARCHAR2,
214 x_return_status IN out nocopy VARCHAR2
215 ) IS
216 l_rc BOOLEAN;
217 l_access_id NUMBER;
218 BEGIN
219 /*** initialize return status and message list ***/
220 x_return_status := FND_API.G_RET_STS_SUCCESS;
221 FND_MSG_PUB.INITIALIZE;
222
223 CSM_UTIL_PKG.LOG('Entering CSM_TA_AUDIT_PKG.APPLY_RECORD for Task Assignment Audit ID ' || p_record.ASSIGNMENT_AUDIT_ID ,
224 'CSM_TA_AUDIT_PKG.APPLY_RECORD',FND_LOG.LEVEL_PROCEDURE);
225
226 IF p_record.dmltype$$='I' THEN
227 -- Process insert
228 APPLY_INSERT
229 (
230 p_record,
231 p_error_msg,
232 x_return_status
233 );
234 ELSE --Delete and update is not supported for this PI
235 -- invalid dml type
236 CSM_UTIL_PKG.LOG
237 ( 'Invalid DML type: ' || p_record.dmltype$$ || ' is not supported for this entity'
238 || ' for Task Assignment Audit ID ' || p_record.ASSIGNMENT_AUDIT_ID ,'CSM_TA_AUDIT_PKG.APPLY_RECORD',FND_LOG.LEVEL_ERROR);
239
240 p_error_msg := CSM_UTIL_PKG.GET_ERROR_MESSAGE_TEXT
241 (
242 p_message => 'CSM_DML_OPERATION'
243 , p_token_name1 => 'DML'
244 , p_token_value1 => p_record.dmltype$$
245 );
246
247 x_return_status := FND_API.G_RET_STS_ERROR;
248 END IF;
249
250 CSM_UTIL_PKG.LOG('Leaving CSM_TA_AUDIT_PKG.APPLY_RECORD for Task Assignment Audit ID ' || p_record.ASSIGNMENT_AUDIT_ID ,
251 'CSM_TA_AUDIT_PKG.APPLY_RECORD',FND_LOG.LEVEL_PROCEDURE);
252 EXCEPTION WHEN OTHERS THEN
253 fnd_msg_pub.Add_Exc_Msg( g_object_name, 'APPLY_RECORD', sqlerrm);
254 p_error_msg := CSM_UTIL_PKG.GET_ERROR_MESSAGE_TEXT
255 (
256 p_api_error => TRUE
257 );
258 CSM_UTIL_PKG.log( 'Exception in ' || g_object_name || '.APPLY_RECORD: ' || sqlerrm
259 || ' for Task Assignment Audit ID ' || p_record.ASSIGNMENT_AUDIT_ID ,'CSM_TA_AUDIT_PKG.APPLY_RECORD',FND_LOG.LEVEL_EXCEPTION);
260
261 x_return_status := FND_API.G_RET_STS_ERROR;
262
263 END APPLY_RECORD;
264
265 /***
266 This procedure is called by CSM_SERVICEP_WRAPPER_PKG when publication item CSM_TASK_ASSIGNMENT_AUDIT
267 is dirty. This happens when a mobile field service device executed DML on an updatable table and did
268 a fast sync. This procedure will insert the data that came from mobile into the backend tables using
269 public APIs.
270 ***/
271 PROCEDURE APPLY_CLIENT_CHANGES
272 (
273 p_user_name IN VARCHAR2,
274 p_tranid IN NUMBER,
278 ) IS
275 p_assignment_id IN NUMBER,
276 p_debug_level IN NUMBER,
277 x_return_status IN out nocopy VARCHAR2
279
280 l_process_status VARCHAR2(1);
281 l_error_msg VARCHAR2(4000);
282
283 BEGIN
284 CSM_UTIL_PKG.LOG('Entering CSM_TA_AUDIT_PKG.APPLY_CLIENT_CHANGES ',
285 'CSM_TA_AUDIT_PKG.APPLY_CLIENT_CHANGES',FND_LOG.LEVEL_PROCEDURE);
286 g_debug_level := p_debug_level;
287 x_return_status := FND_API.G_RET_STS_SUCCESS;
288
289 /*** loop through all the records in inqueue ***/
290 FOR r_ta_audit_rec IN c_ta_audit( p_user_name, p_tranid, p_assignment_id) LOOP
291 --SAVEPOINT save_rec ;
292 /*** apply record ***/
293 APPLY_RECORD
294 (
295 r_ta_audit_rec
296 , l_error_msg
297 , l_process_status
298 );
299
300 /*** was record processed successfully? ***/
301 IF l_process_status = FND_API.G_RET_STS_SUCCESS THEN
302 /*** Yes -> Reject record from inqueue ***/
303 CSM_UTIL_PKG.DELETE_RECORD
304 (
305 p_user_name,
306 p_tranid,
307 r_ta_audit_rec.seqno$$,
308 r_ta_audit_rec.ASSIGNMENT_AUDIT_ID,
309 g_object_name,
310 g_pub_name,
311 l_error_msg,
312 l_process_status
313 );
314 /*** was delete successful? ***/
315 IF l_process_status <> FND_API.G_RET_STS_SUCCESS THEN
316 /*** no -> rollback ***/
317 CSM_UTIL_PKG.LOG
318 ( 'Deleting from inqueue failed, No rolling back to savepoint'
319 || ' for Task Assignment Audit ID ' || r_ta_audit_rec.ASSIGNMENT_AUDIT_ID ,'CSM_TA_AUDIT_PKG.APPLY_CLIENT_CHANGES',FND_LOG.LEVEL_ERROR); -- put PK column here
320 x_return_status := FND_API.G_RET_STS_SUCCESS;
321 END IF;
322 ELSIF l_process_Status <> FND_API.G_RET_STS_SUCCESS THEN
323 /*** Record was not applied successfully -> defer and reject records ***/
324 csm_util_pkg.log( 'Record not processed successfully, deferring and rejecting record'
325 || ' for PK ' || r_ta_audit_rec.ASSIGNMENT_AUDIT_ID ,'CSM_TA_AUDIT_PKG.APPLY_CLIENT_CHANGES',FND_LOG.LEVEL_ERROR); -- put PK column here
326
327 CSM_UTIL_PKG.REJECT_RECORD
328 (
329 p_user_name
330 , p_tranid
331 , r_ta_audit_rec.seqno$$
332 , r_ta_audit_rec.ASSIGNMENT_AUDIT_ID
333 , g_object_name
334 , g_pub_name
335 , l_error_msg
336 , l_process_status
337 );
338
339 /*** Was defer successful? ***/
340 IF l_process_status <> FND_API.G_RET_STS_SUCCESS THEN
341 /*** no -> rollback ***/
342 CSM_UTIL_PKG.LOG
343 ( 'Reject record failed, No rolling back to savepoint'
344 || ' for PK ' || r_ta_audit_rec.ASSIGNMENT_AUDIT_ID ,'CSM_TA_AUDIT_PKG.APPLY_CLIENT_CHANGES',FND_LOG.LEVEL_ERROR); -- put PK column here
345 --ROLLBACK TO save_rec;
346 x_return_status := FND_API.G_RET_STS_ERROR;
347 END IF;
348 END IF;
349
350 END LOOP;
351
352 CSM_UTIL_PKG.LOG('Leaving CSM_TA_AUDIT_PKG.APPLY_CLIENT_CHANGES',
353 'CSM_TA_AUDIT_PKG.APPLY_CLIENT_CHANGES',FND_LOG.LEVEL_PROCEDURE);
354
355 EXCEPTION WHEN OTHERS THEN
356 /*** catch and log exceptions ***/
357 CSM_UTIL_PKG.log( 'Exception in ' || g_object_name || '.APPLY_CLIENT_CHANGES: ' || sqlerrm
358 ,'CSM_TA_AUDIT_PKG.APPLY_CLIENT_CHANGES',FND_LOG.LEVEL_EXCEPTION);
359
360 x_return_status := FND_API.G_RET_STS_ERROR;
361
362 END APPLY_CLIENT_CHANGES;
363
364 /***
365 This procedure is called by CSM_TASK_ASSIGNMENTS_PKG when publication item CSM_TASK_ASSIGNMENTS/CSM_TASK_ASSIGNMENT_AUDIT
366 is dirty. This happens when a mobile field service device executed DML on an updatable table and did
367 a fast sync. This procedure will insert the data that came from mobile into the backend tables using
368 public APIs.
369 ***/
370 PROCEDURE DEFER_CLIENT_CHANGES
371 (
372 p_user_name IN VARCHAR2,
373 p_tranid IN NUMBER,
374 p_assignment_id IN NUMBER,
375 p_debug_level IN NUMBER,
376 x_return_status IN out nocopy VARCHAR2
377 ) IS
378
379 l_process_status VARCHAR2(10);
380 l_error_msg VARCHAR2(4000);
381
382 BEGIN
383 CSM_UTIL_PKG.LOG('Entering CSM_TA_AUDIT_PKG.DEFER_CLIENT_CHANGES ',
384 'CSM_TA_AUDIT_PKG.DEFER_CLIENT_CHANGES',FND_LOG.LEVEL_PROCEDURE);
385 g_debug_level := p_debug_level;
386 x_return_status := FND_API.G_RET_STS_SUCCESS;
387
388 /*** loop through all the records in inqueue to Defer ***/
389 FOR r_ta_audit_rec IN c_ta_audit( p_user_name, p_tranid, p_assignment_id) LOOP
390
391 /*** Parent Task Assignment Defered and hence Defer the TA Audit records ***/
392 csm_util_pkg.log( 'Record not processed successfully, deferring and rejecting record'
393 || ' for PK ' || r_ta_audit_rec.ASSIGNMENT_AUDIT_ID ,'CSM_TA_AUDIT_PKG.DEFER_CLIENT_CHANGES',FND_LOG.LEVEL_ERROR); -- put PK column here
394
395 CSM_UTIL_PKG.DEFER_RECORD
396 (
397 p_user_name
398 , p_tranid
399 , r_ta_audit_rec.seqno$$
400 , r_ta_audit_rec.ASSIGNMENT_AUDIT_ID
401 , g_object_name
402 , g_pub_name
403 , l_error_msg
404 , l_process_status
405 , r_ta_audit_rec.dmltype$$
406 );
407
408 /*** Was defer successful? ***/
409 IF l_process_status <> FND_API.G_RET_STS_SUCCESS THEN
410 /*** no -> rollback ***/
411 CSM_UTIL_PKG.LOG
412 ( 'Defer record failed, No rolling back to savepoint'
413 || ' for PK ' || r_ta_audit_rec.ASSIGNMENT_AUDIT_ID ,'CSM_TA_AUDIT_PKG.DEFER_CLIENT_CHANGES',FND_LOG.LEVEL_ERROR); -- put PK column here
414 --ROLLBACK TO save_rec;
415 x_return_status := FND_API.G_RET_STS_ERROR;
416 EXIT;
417 END IF;
418 END LOOP;
419 CSM_UTIL_PKG.LOG('Leaving CSM_TA_AUDIT_PKG.DEFER_CLIENT_CHANGES',
420 'CSM_TA_AUDIT_PKG.DEFER_CLIENT_CHANGES',FND_LOG.LEVEL_PROCEDURE);
421 RETURN;
422 EXCEPTION WHEN OTHERS THEN
423 /*** catch and log exceptions ***/
424 CSM_UTIL_PKG.log( 'Exception in ' || g_object_name || '.DEFER_CLIENT_CHANGES: ' || sqlerrm
425 ,'CSM_TA_AUDIT_PKG.DEFER_CLIENT_CHANGES',FND_LOG.LEVEL_EXCEPTION);
426
427 x_return_status := FND_API.G_RET_STS_ERROR;
428
429 END DEFER_CLIENT_CHANGES;
430
431 END CSM_TA_AUDIT_PKG;