[Home] [Help]
PACKAGE BODY: APPS.CSL_COUNTER_PROP_VALUES_PKG
Source
1 PACKAGE BODY CSL_COUNTER_PROP_VALUES_PKG AS
2 /* $Header: cslvcpvb.pls 120.1 2005/08/30 01:33:41 utekumal noship $*/
3
4 error EXCEPTION;
5
6 /*** Globals ***/
7 g_object_name CONSTANT VARCHAR2(30) := 'CSL_COUNTER_PROP_VALUES_PKG'; -- package name
8 g_pub_name CONSTANT VARCHAR2(30) := 'CS_COUNTER_PROP_VALS'; -- publication item name
9 g_debug_level NUMBER; -- debug level
10
11 CURSOR c_CS_COUNTER_PROP_VALS( b_user_name VARCHAR2, b_tranid NUMBER) is
12 SELECT *
13 FROM CSL_CS_COUNTER_PROP_VALS_inq
14 WHERE tranid$$ = b_tranid
15 AND clid$$cs = b_user_name;
16
17 /***
18 This procedure is called by APPLY_CLIENT_CHANGES when an inserted record is to be processed.
19 ***/
20 PROCEDURE APPLY_INSERT
21 (
22 p_record IN c_CS_COUNTER_PROP_VALS%ROWTYPE,
23 p_error_msg OUT NOCOPY VARCHAR2,
24 x_return_status IN OUT NOCOPY VARCHAR2
25 ) IS
26 /*
27 cursor c_counter_group
28 ( b_counter_value_id number
29 )
30 is
31 select cc_v.counter_id counter_id
32 , cc_v.counter_group_id counter_group_id
33 , cc_v.counter_group_name counter_group_name
34 , c_grp.source_object_id
35 from cs_counters_v cc_v, cs_counter_values c_val, cs_counter_groups c_grp
36 where cc_v.counter_id = c_val.counter_id
37 AND c_val.counter_value_id = b_counter_value_id
38 AND cc_counter_group_id = c_grp.counter_group_id
39 AND c_grp.source_object_code = 'CP';
40
41 cursor c_counter_properties
42 ( b_counter_id number
43 )
44 is
45 select count(*) number_of_props
46 from cs_counter_properties ccp
47 where ccp.counter_id = b_counter_id;
48 */
49 cursor c_counter_values
50 ( b_counter_value_id number
51 )
52 is
53 select ccv.counter_grp_log_id counter_grp_log_id
54 from cs_counter_values ccv
55 where ccv.counter_value_id = b_counter_value_id;
56
57 -- r_counter_group c_counter_group%rowtype;
58 -- r_counter_properties c_counter_properties%rowtype;
59 r_counter_values c_counter_values%rowtype;
60
61 --Bug 4496299
62 -- l_ctr_grp_log_rec Cs_Ctr_Capture_Reading_pvt.Ctr_Grp_Log_Rec_Type;
63 --l_ctr_rdg_rec Cs_Ctr_Capture_Reading_pvt.Ctr_Rdg_Rec_Type;
64 --l_prop_rdg_rec Cs_Ctr_Capture_Reading_pvt.Prop_Rdg_Rec_Type;
65 -- l_prop_rdg_tbl Cs_Ctr_Capture_Reading_pub.Prop_Rdg_Tbl_Type;
66 l_ctr_grp_id number;
67 l_ctr_grp_log_id number;
68 l_cnt_prop_vals number;
69
70 -- l_customer_product_id number;
71
72 l_msg_count NUMBER;
73 l_msg_data VARCHAR2(240);
74 BEGIN
75 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
76 jtm_message_log_pkg.Log_Msg
77 ( v_object_id => p_record.COUNTER_PROP_VALUE_ID -- put PK column here
78 , v_object_name => g_object_name
79 , v_message => 'Entering ' || g_object_name || '.APPLY_INSERT'
80 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
81 END IF;
82
83 -- For mobile Field Service we know that a counter_group_id is not
84 -- known, but the counter_id is known. Therefore we need to retrieve
85 -- the counter_group_id, using the counter_id.
86 /*
87 open c_counter_group
88 ( b_counter_value_id => csl_ctr_prop_values_rec.counter_value_id
89 );
90 fetch c_counter_group
91 into r_counter_group;
92 if c_counter_group%found
93 then
94 l_ctr_grp_id := r_counter_group.counter_group_id;
95 l_customer_product_id := r_counter_group.source_object_id;
96 else
97 l_ctr_grp_id := FND_API.G_MISS_NUM;
98 l_customer_product_id := FND_API.G_MISS_NUM;
99 end if;
100 close c_counter_group;
101 */
102 -- Determine the group_log_id for the counter_property_value.
103 open c_counter_values
104 ( b_counter_value_id => p_record.counter_value_id
105 );
106 fetch c_counter_values
107 into r_counter_values;
108 close c_counter_values;
109
110 -- Fill the counter_group_log record, so it can be used to call the API
111 /*
112 l_ctr_grp_log_rec.counter_group_id := l_ctr_grp_id;
113 l_ctr_grp_log_rec.value_timestamp := p_record.value_timestamp;
114 l_ctr_grp_log_rec.source_transaction_id := l_customer_product_id;
115 l_ctr_grp_log_rec.source_transaction_code := 'FS';
116 */
117 -- Fill the counter_property_reading record, so it can be used to call the API
118
119 --Bug 4496299
120 /*
121 l_prop_rdg_rec.counter_property_id := p_record.counter_property_id;
122 l_prop_rdg_rec.value_timestamp := p_record.value_timestamp;
123 l_prop_rdg_rec.property_value := p_record.property_value;
124 l_prop_rdg_rec.counter_prop_value_id := p_record.counter_prop_value_id;
125
126 Cs_Ctr_Capture_Reading_pvt.Capture_Ctr_Property_Reading
127 ( p_api_version_number => 1.0
128 , p_init_msg_list => FND_API.G_TRUE
129 , p_commit => FND_API.G_FALSE
130 , p_validation_level => FND_API.G_VALID_LEVEL_FULL
131 , p_prop_rdg_rec => l_prop_rdg_rec
132 , p_counter_grp_log_id => r_counter_values.counter_grp_log_id
133 , x_return_status => x_return_status
134 , x_msg_count => l_msg_count
135 , x_msg_data => l_msg_data
136 );
137 */
138
139 -- Determine if all property-values for this counter have been processed.
140 /* open c_counter_properties
141 ( b_counter_id => p_record.counter_id
142 );
143 fetch c_counter_properties
144 into r_counter_properties;
145 close c_counter_properties;
146 */
147
148 --Bug 4496299
149 /*
150 SELECT COUNT(1) INTO l_cnt_prop_vals
151 FROM CSL_CS_COUNTER_PROP_VALS_INQ
152 WHERE COUNTER_VALUE_ID = p_record.COUNTER_VALUE_ID;
153
154 if l_cnt_prop_vals = 0 -- r_counter_properties.number_of_props = p_record.ctr_prop_count
155 then
156 -- All property values have been processed. Call the private API to close
157 -- the counter group log.
158 Cs_Ctr_Capture_Reading_pvt.Post_Capture_Counter_Reading
159 ( p_api_version_number => 1.0
160 , p_init_msg_list => FND_API.G_TRUE
161 , p_commit => FND_API.G_FALSE
162 , p_validation_level => FND_API.G_VALID_LEVEL_FULL
163 , p_counter_grp_log_id => r_counter_values.counter_grp_log_id
164 , x_return_status => x_return_status
165 , x_msg_count => l_msg_count
166 , x_msg_data => l_msg_data
167 );
168 end if;
169 */
170
171 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
172 /*** exception occurred in API -> return errmsg ***/
173 p_error_msg := CSL_SERVICEL_WRAPPER_PKG.GET_ERROR_MESSAGE_TEXT
174 (
175 p_api_error => TRUE
176 );
177 END IF;
178
179 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
180 jtm_message_log_pkg.Log_Msg
181 ( v_object_id => p_record.COUNTER_PROP_VALUE_ID -- put PK column here
182 , v_object_name => g_object_name
183 , v_message => 'Leaving ' || g_object_name || '.APPLY_INSERT'
184 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
185 END IF;
186
187 EXCEPTION WHEN OTHERS THEN
188 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR THEN
189 jtm_message_log_pkg.Log_Msg
190 ( v_object_id => p_record.COUNTER_PROP_VALUE_ID -- put PK column here
191 , v_object_name => g_object_name
192 , v_message => 'Exception occurred in APPLY_INSERT:' || fnd_global.local_chr(10) || sqlerrm
193 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
194 END IF;
195
196 fnd_msg_pub.Add_Exc_Msg( g_object_name, 'APPLY_INSERT', sqlerrm);
197 p_error_msg := CSL_SERVICEL_WRAPPER_PKG.GET_ERROR_MESSAGE_TEXT
198 (
199 p_api_error => TRUE
200 );
201
202 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
203 jtm_message_log_pkg.Log_Msg
204 ( v_object_id => p_record.COUNTER_PROP_VALUE_ID -- put PK column here
205 , v_object_name => g_object_name
206 , v_message => 'Leaving ' || g_object_name || '.APPLY_INSERT'
207 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
208 END IF;
209
210 x_return_status := FND_API.G_RET_STS_ERROR;
211 END APPLY_INSERT;
212
213 /***
214 This procedure is called by APPLY_CLIENT_CHANGES when an updated record is to be processed.
215 ***/
216 PROCEDURE APPLY_UPDATE
217 (
218 p_record IN c_CS_COUNTER_PROP_VALS%ROWTYPE,
219 p_error_msg OUT NOCOPY VARCHAR2,
220 x_return_status IN OUT NOCOPY VARCHAR2
221 ) IS
222 cursor c_counter_prop_value
223 ( b_counter_prop_value_id number
224 )
225 is
226 select counter_id
227 , counter_prop_value_id
228 , counter_grp_log_id
229 , object_version_number
230 from cs_ctr_property_values_v
231 where counter_prop_value_id = b_counter_prop_value_id;
232
233 r_counter_prop_value c_counter_prop_value%rowtype;
234
235 --Bug 4496299
236 --l_ctr_grp_log_rec Cs_Ctr_Capture_Reading_pub.Ctr_Grp_Log_Rec_Type;
237 --l_ctr_rdg_rec Cs_Ctr_Capture_Reading_pub.Ctr_Rdg_Rec_Type;
238 --l_prop_rdg_rec Cs_Ctr_Capture_Reading_pub.Prop_Rdg_Rec_Type;
239 l_prop_rdg_tbl Cs_Ctr_Capture_Reading_pub.Prop_Rdg_Tbl_Type;
240 l_ctr_grp_id number;
241 l_ctr_grp_log_id number;
242
243 l_msg_count NUMBER;
244 l_msg_data VARCHAR2(240);
245 BEGIN
246 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
247 jtm_message_log_pkg.Log_Msg
248 ( v_object_id => p_record.COUNTER_PROP_VALUE_ID -- put PK column here
249 , v_object_name => g_object_name
250 , v_message => 'Entering ' || g_object_name || '.APPLY_UPDATE'
251 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
252 END IF;
253
254
255 --Bug 4496299
256 /*
257 open c_counter_prop_value
258 ( p_record.counter_prop_value_id
259 );
260 fetch c_counter_prop_value
261 into r_counter_prop_value;
262 if c_counter_prop_value%found
263 then
264 l_ctr_grp_log_id := r_counter_prop_value.counter_grp_log_id;
265 l_prop_rdg_rec.object_version_number
266 := r_counter_prop_value.object_version_number;
267 else
268 -- Let the API complain with a message.
269 l_ctr_grp_log_id := FND_API.G_MISS_NUM;
270 l_prop_rdg_rec.object_version_number := FND_API.G_MISS_NUM;
271 end if;
272 close c_counter_prop_value;
273
274 l_prop_rdg_rec.counter_property_id := p_record.counter_property_id;
275 l_prop_rdg_rec.value_timestamp := p_record.value_timestamp;
276 l_prop_rdg_rec.property_value := p_record.property_value;
277 l_prop_rdg_rec.counter_prop_value_id := p_record.counter_prop_value_id;
278 l_prop_rdg_tbl(1) := l_prop_rdg_rec;
279
280 Cs_Ctr_Capture_Reading_pub.Update_Counter_Reading
281 ( p_api_version_number => 1.0
282 , p_validation_level => FND_API.G_VALID_LEVEL_FULL
283 , p_init_msg_list => FND_API.G_TRUE
284 , p_commit => FND_API.G_FALSE
285 , p_prop_rdg_tbl => l_prop_rdg_tbl
286 , p_ctr_grp_log_id => l_ctr_grp_log_id
287 , x_return_status => x_return_status
288 , x_msg_count => l_msg_count
289 , x_msg_data => l_msg_data
290 );
291 */
292
293 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
294 /*** exception occurred in API -> return errmsg ***/
295 p_error_msg := CSL_SERVICEL_WRAPPER_PKG.GET_ERROR_MESSAGE_TEXT
296 (
297 p_api_error => TRUE
298 );
299 END IF;
300
301 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
302 jtm_message_log_pkg.Log_Msg
303 ( v_object_id => p_record.COUNTER_PROP_VALUE_ID -- put PK column here
304 , v_object_name => g_object_name
305 , v_message => 'Leaving ' || g_object_name || '.APPLY_UPDATE'
306 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
307 END IF;
308
309 EXCEPTION WHEN OTHERS THEN
310 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR THEN
311 jtm_message_log_pkg.Log_Msg
312 ( v_object_id => p_record.COUNTER_PROP_VALUE_ID -- put PK column here
313 , v_object_name => g_object_name
314 , v_message => 'Exception occurred in APPLY_UPDATE:' || fnd_global.local_chr(10) || sqlerrm
315 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
316 END IF;
317
318 fnd_msg_pub.Add_Exc_Msg( g_object_name, 'APPLY_UPDATE', sqlerrm);
319 p_error_msg := CSL_SERVICEL_WRAPPER_PKG.GET_ERROR_MESSAGE_TEXT
320 (
321 p_api_error => TRUE
322 );
323
324 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
325 jtm_message_log_pkg.Log_Msg
326 ( v_object_id => p_record.COUNTER_PROP_VALUE_ID -- put PK column here
327 , v_object_name => g_object_name
328 , v_message => 'Leaving ' || g_object_name || '.APPLY_UPDATE'
329 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
330 END IF;
331
332 x_return_status := FND_API.G_RET_STS_ERROR;
333 END APPLY_UPDATE;
334
335 /***
336 This procedure is called by APPLY_CLIENT_CHANGES for every record in in-queue that needs to be processed.
337 ***/
338 PROCEDURE APPLY_RECORD
339 (
340 p_record IN c_CS_COUNTER_PROP_VALS%ROWTYPE,
341 p_error_msg OUT NOCOPY VARCHAR2,
342 x_return_status IN OUT NOCOPY VARCHAR2
343 ) IS
344 BEGIN
345 /*** initialize return status and message list ***/
346 x_return_status := FND_API.G_RET_STS_SUCCESS;
347 FND_MSG_PUB.INITIALIZE;
348
349 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
350 jtm_message_log_pkg.Log_Msg
351 ( v_object_id => p_record.COUNTER_PROP_VALUE_ID -- put PK column here
352 , v_object_name => g_object_name
353 , v_message => 'Entering ' || g_object_name || '.APPLY_RECORD'
354 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
355 END IF;
356
357 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
358 jtm_message_log_pkg.Log_Msg
359 ( v_object_id => p_record.COUNTER_PROP_VALUE_ID -- put PK column here
360 , v_object_name => g_object_name
361 , v_message => 'Processing CS_COUNTER_PROP_VALS = ' || p_record.COUNTER_PROP_VALUE_ID /* put PK column here */ || fnd_global.local_chr(10) ||
362 'DMLTYPE = ' || p_record.dmltype$$
363 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
364 END IF;
365
366 IF p_record.dmltype$$='I' THEN
367 -- Process insert
368 APPLY_INSERT
369 (
370 p_record,
371 p_error_msg,
372 x_return_status
373 );
374 ELSIF p_record.dmltype$$='U' THEN
375 -- Process update
376 APPLY_UPDATE
377 (
378 p_record,
379 p_error_msg,
380 x_return_status
381 );
382 ELSIF p_record.dmltype$$='D' THEN
383 -- Process delete; not supported for this entity
384 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR THEN
385 jtm_message_log_pkg.Log_Msg
386 ( v_object_id => p_record.COUNTER_PROP_VALUE_ID -- put PK column here
387 , v_object_name => g_object_name
388 , v_message => 'Delete is not supported for this entity'
389 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
390 END IF;
391
392 p_error_msg := CSL_SERVICEL_WRAPPER_PKG.GET_ERROR_MESSAGE_TEXT
393 (
394 p_message => 'CSL_DML_OPERATION'
395 , p_token_name1 => 'DML'
396 , p_token_value1 => p_record.dmltype$$
397 );
398
399 x_return_status := FND_API.G_RET_STS_ERROR;
400 ELSE
401 -- invalid dml type
402 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR THEN
403 jtm_message_log_pkg.Log_Msg
404 ( v_object_id => p_record.COUNTER_PROP_VALUE_ID -- put PK column here
405 , v_object_name => g_object_name
406 , v_message => 'Invalid DML type: ' || p_record.dmltype$$
407 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
408 END IF;
409
410 p_error_msg := CSL_SERVICEL_WRAPPER_PKG.GET_ERROR_MESSAGE_TEXT
411 (
412 p_message => 'CSL_DML_OPERATION'
413 , p_token_name1 => 'DML'
414 , p_token_value1 => p_record.dmltype$$
415 );
416
417 x_return_status := FND_API.G_RET_STS_ERROR;
418 END IF;
419
420 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
421 jtm_message_log_pkg.Log_Msg
422 ( v_object_id => p_record.COUNTER_PROP_VALUE_ID -- put PK column here
423 , v_object_name => g_object_name
424 , v_message => 'Leaving ' || g_object_name || '.APPLY_RECORD'
425 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
426 END IF;
427 EXCEPTION WHEN OTHERS THEN
428 /*** defer record when any process exception occurs ***/
429 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR THEN
430 jtm_message_log_pkg.Log_Msg
431 ( v_object_id => p_record.COUNTER_PROP_VALUE_ID -- put PK column here
432 , v_object_name => g_object_name
433 , v_message => 'Exception occurred in APPLY_RECORD:' || fnd_global.local_chr(10) || sqlerrm
434 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
435 END IF;
436
437 fnd_msg_pub.Add_Exc_Msg( g_object_name, 'APPLY_RECORD', sqlerrm);
438 p_error_msg := CSL_SERVICEL_WRAPPER_PKG.GET_ERROR_MESSAGE_TEXT
439 (
440 p_api_error => TRUE
441 );
442
443 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
444 jtm_message_log_pkg.Log_Msg
445 ( v_object_id => p_record.COUNTER_PROP_VALUE_ID -- put PK column here
446 , v_object_name => g_object_name
447 , v_message => 'Leaving ' || g_object_name || '.APPLY_RECORD'
448 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
449 END IF;
450
451 x_return_status := FND_API.G_RET_STS_ERROR;
452 END APPLY_RECORD;
453
454 /***
455 This procedure is called by CSL_SERVICEL_WRAPPER_PKG when publication item CS_COUNTER_PROP_VALS
456 is dirty. This happens when a mobile field service device executed DML on an updatable table and did
457 a fast sync. This procedure will insert the data that came from mobile into the backend tables using
458 public APIs.
459 ***/
460 PROCEDURE APPLY_CLIENT_CHANGES
461 (
462 p_user_name IN VARCHAR2,
463 p_tranid IN NUMBER,
464 p_debug_level IN NUMBER,
465 x_return_status IN OUT NOCOPY VARCHAR2
466 ) IS
467
468 l_process_status VARCHAR2(1);
469 l_error_msg VARCHAR2(4000);
470 BEGIN
471 g_debug_level := p_debug_level;
472 x_return_status := FND_API.G_RET_STS_SUCCESS;
473
474 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
475 jtm_message_log_pkg.Log_Msg
476 ( v_object_id => null
477 , v_object_name => g_object_name
478 , v_message => 'Entering ' || g_object_name || '.Apply_Client_Changes'
479 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
480 END IF;
481
482 /*** loop through CS_COUNTER_PROP_VALS records in inqueue ***/
483 FOR r_CS_COUNTER_PROP_VALS IN c_CS_COUNTER_PROP_VALS( p_user_name, p_tranid) LOOP
484
485 SAVEPOINT save_rec;
486
487 /*** apply record ***/
488 APPLY_RECORD
489 (
490 r_CS_COUNTER_PROP_VALS
491 , l_error_msg
492 , l_process_status
493 );
494
495 /*** was record processed successfully? ***/
496 IF l_process_status = FND_API.G_RET_STS_SUCCESS THEN
497 /*** Yes -> delete record from inqueue ***/
498 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
499 jtm_message_log_pkg.Log_Msg
500 ( v_object_id => r_CS_COUNTER_PROP_VALS.COUNTER_PROP_VALUE_ID -- put PK column here
501 , v_object_name => g_object_name
502 , v_message => 'Record successfully processed, deleting from inqueue'
503 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
504 END IF;
505
506 CSL_SERVICEL_WRAPPER_PKG.DELETE_RECORD
507 (
508 p_user_name,
509 p_tranid,
510 r_CS_COUNTER_PROP_VALS.seqno$$,
511 r_CS_COUNTER_PROP_VALS.COUNTER_PROP_VALUE_ID, -- put PK column here
512 g_object_name,
513 g_pub_name,
514 l_error_msg,
515 l_process_status
516 );
517
518 /*** was delete successful? ***/
519 IF l_process_status <> FND_API.G_RET_STS_SUCCESS THEN
520 /*** no -> rollback ***/
521 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
522 jtm_message_log_pkg.Log_Msg
523 ( v_object_id => r_CS_COUNTER_PROP_VALS.COUNTER_PROP_VALUE_ID -- put PK column here
524 , v_object_name => g_object_name
525 , v_message => 'Deleting from inqueue failed, rolling back to savepoint'
526 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
527 END IF;
528 ROLLBACK TO save_rec;
529 END IF;
530 END IF;
531
532 IF l_process_Status <> FND_API.G_RET_STS_SUCCESS THEN
533 /*** Record was not processed successfully or delete failed -> defer and reject record ***/
534 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
535 jtm_message_log_pkg.Log_Msg
536 ( v_object_id => r_CS_COUNTER_PROP_VALS.COUNTER_PROP_VALUE_ID -- put PK column here
537 , v_object_name => g_object_name
538 , v_message => 'Record not processed successfully, deferring and rejecting record'
539 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
540 END IF;
541
542 CSL_SERVICEL_WRAPPER_PKG.DEFER_RECORD
543 (
544 p_user_name
545 , p_tranid
546 , r_CS_COUNTER_PROP_VALS.seqno$$
547 , r_CS_COUNTER_PROP_VALS.COUNTER_PROP_VALUE_ID -- put PK column here
548 , g_object_name
549 , g_pub_name
550 , l_error_msg
551 , l_process_status
552 );
553
554 /*** Was defer successful? ***/
555 IF l_process_status <> FND_API.G_RET_STS_SUCCESS THEN
556 /*** no -> rollback ***/
557 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM THEN
558 jtm_message_log_pkg.Log_Msg
559 ( v_object_id => r_CS_COUNTER_PROP_VALS.COUNTER_PROP_VALUE_ID -- put PK column here
560 , v_object_name => g_object_name
561 , v_message => 'Defer record failed, rolling back to savepoint'
562 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_MEDIUM);
563 END IF;
564 ROLLBACK TO save_rec;
565 END IF;
566 END IF;
567
568 END LOOP;
569
570 IF g_debug_level = JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL THEN
571 jtm_message_log_pkg.Log_Msg
572 ( v_object_id => null
573 , v_object_name => g_object_name
574 , v_message => 'Leaving ' || g_object_name || '.Apply_Client_Changes'
575 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_FULL);
576 END IF;
577
578 EXCEPTION WHEN OTHERS THEN
579 /*** catch and log exceptions ***/
580 IF g_debug_level >= JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR THEN
581 jtm_message_log_pkg.Log_Msg
582 ( v_object_id => null
583 , v_object_name => g_object_name
584 , v_message => 'Exception occurred in APPLY_CLIENT_CHANGES:' || fnd_global.local_chr(10) || sqlerrm
585 , v_level_id => JTM_HOOK_UTIL_PKG.G_DEBUG_LEVEL_ERROR);
586 END IF;
587 x_return_status := FND_API.G_RET_STS_ERROR;
588 END APPLY_CLIENT_CHANGES;
589
590 END CSL_COUNTER_PROP_VALUES_PKG;