[Home] [Help]
PACKAGE BODY: APPS.HXC_ARCHIVE_RESTORE_UTILS
Source
1 PACKAGE BODY hxc_archive_restore_utils AS
2 /* $Header: hxcarcresutl.pkb 120.6 2005/11/22 16:18:11 jdupont noship $ */
3 ----------------------------------------------------------------------------
4 -- Function Name : check_max_errors
5 -- Description : This function is called during Validate Data Set process to
6 -- check if the error count has exceeded the maximum specified
7 -- value
8 -- Returns true if maximum errors exceeded; else false
9 ----------------------------------------------------------------------------
10 FUNCTION check_max_errors(p_error_count IN NUMBER)
11 RETURN BOOLEAN
12 IS
13 BEGIN
14
15 IF g_error_count is null THEN
16 g_error_count := nvl(fnd_profile.value('HXC_VALIDATE_DATA_SET_MAX_ERRORS'),25);
17 END IF;
18
19 IF p_error_count >= g_error_count THEN
20 --fnd_file.put_line(fnd_file.LOG,'Error count exceeded '||g_error_count);
21 RETURN TRUE;
22 ELSE
23 RETURN FALSE;
24 END IF;
25
26 END check_max_errors;
27
28
29 ----------------------------------------------------------------------------
30 -- Function Name : check_data_corruption
31 -- Description : This function checks for any data corruptions.
32 -- It is before called at the start of Archive process.
33 -- Returns true in case of data corruption; else false
34 ----------------------------------------------------------------------------
35 FUNCTION check_data_corruption(p_data_set_id IN NUMBER)
36 RETURN BOOLEAN
37 IS
38
39 CURSOR c_timecard_template(p_data_set_id NUMBER) IS
40 SELECT DISTINCT temp.time_building_block_id
41 FROM hxc_time_building_blocks temp, hxc_data_sets d
42 WHERE temp.scope = 'TIMECARD_TEMPLATE'
43 AND EXISTS (SELECT 1 FROM hxc_time_building_blocks tc
44 WHERE tc.scope = 'TIMECARD'
45 AND tc.time_building_block_id = temp.time_building_block_id
46 )
47 AND temp.stop_time BETWEEN d.start_date AND d.end_date
48 AND d.data_set_id = p_data_set_id;
49
50 l_data_corruption BOOLEAN;
51 l_dummy NUMBER;
52
53 begin
54
55 l_data_corruption := FALSE;
56
57 --1. check if any timecard and template share the same time building block id
58 OPEN c_timecard_template(p_data_set_id);
59 FETCH c_timecard_template INTO l_dummy;
60 IF c_timecard_template%found
61 THEN
62
63 fnd_file.put_line(fnd_file.LOG, 'The following timecards and templates share the same time building block id');
64 l_data_corruption := TRUE;
65 CLOSE c_timecard_template;
66
67 FOR l_rec IN c_timecard_template(p_data_set_id) LOOP
68 fnd_file.put_line(fnd_file.LOG,'Common id is:' ||l_rec.time_building_block_id);
69 END LOOP;
70
71 ELSE
72 CLOSE c_timecard_template;
73 END IF;
74
75 fnd_file.put_line(fnd_file.LOG, 'Before returning for check_data_corruption function');
76
77 RETURN l_data_corruption;
78
79 END check_data_corruption;
80
81
82 ----------------------------------------------------------------------------
83 -- Procedure Name : core_table_count_snapshott
84 -- Description : This procedure will give a snapshot of the core tables
85 ----------------------------------------------------------------------------
86 PROCEDURE core_table_count_snapshot
87 (p_tbb_count OUT NOCOPY NUMBER,
88 p_tau_count OUT NOCOPY NUMBER,
89 p_ta_count OUT NOCOPY NUMBER,
90 p_td_count OUT NOCOPY NUMBER,
91 p_trans_count OUT NOCOPY NUMBER,
92 p_tal_count OUT NOCOPY NUMBER,
93 p_aps_count OUT NOCOPY NUMBER,
94 p_adl_count OUT NOCOPY NUMBER,
95 p_ld_count OUT NOCOPY NUMBER,
96 p_ts_count OUT NOCOPY NUMBER)
97
98 IS
99
100 BEGIN
101
102 -- Building Blocks table
103 select /*+ index_ffs (t HXC_TIME_BUILDING_BLOCKS_PK ) parallel (t,4)*/ count(time_building_block_id)
104 into p_tbb_count from hxc_time_building_blocks t;
105
106 -- Attributes Usages
107 select/*+ index_ffs (t HXC_TIME_ATTRIBUTE_USAGES_PK ) parallel (t,4)*/ count(time_attribute_usage_id)
108 into p_tau_count from hxc_time_attribute_usages t;
109
110 -- Attributes
111 select /*+ index_ffs (t HXC_TIME_ATTRIBUTES_PK ) parallel (t,4)*/ count(time_attribute_id)
112 into p_ta_count from hxc_time_attributes t;
113
114 -- Transaction Details
115 select /*+ index_ffs (t HXC_TRANSACTION_DETAILS_PK ) parallel (t,4)*/ count(transaction_detail_id)
116 into p_td_count from hxc_transaction_details t;
117
118 -- Transactions
119 select /*+ index_ffs (t HXC_TRANSACTIONS_PK ) parallel (t,4)*/ count(transaction_id)
120 into p_trans_count from hxc_transactions t;
121
122 -- Timecard Approver Links
123 select /*+ index_ffs (t HXC_TC_AP_LINKS_PK ) parallel (t,4)*/ count(timecard_id)
124 into p_tal_count from hxc_tc_ap_links t;
125
126 -- Application Period Summary
127 select /*+ index_ffs (t HXC_APP_PERIOD_SUMMARY_PK ) parallel (t,4)*/ count(application_period_id)
128 into p_aps_count from hxc_app_period_summary t;
129
130 -- Approval Detail Links
131 select /*+ index_ffs (t HXC_AP_DETAIL_LINKS_PK ) parallel (t,4)*/ count(application_period_id)
132 into p_adl_count from hxc_ap_detail_links t;
133
134 -- Latest Details
135 select /*+ index_ffs (t HXC_LATEST_DETAILS_FK ) parallel (t,4)*/ count(time_building_block_id)
136 into p_ld_count from hxc_latest_details t;
137
138 -- Timecard Summary
139 select /*+ index_ffs (t HXC_TIMECARD_SUMMARY_PK ) parallel (t,4)*/ count(timecard_id)
140 into p_ts_count from hxc_timecard_summary t;
141
142 -- Create the report
143 fnd_file.put_line(fnd_file.LOG,'--------------------------------------');
144 fnd_file.put_line(fnd_file.LOG,' Core Table Count Snapshot');
145 fnd_file.put_line(fnd_file.LOG,'--------------------------------------');
146 fnd_file.put_line(fnd_file.LOG,'-> hxc_time_building_blocks '||p_tbb_count);
147 fnd_file.put_line(fnd_file.LOG,'-> hxc_time_attribute_usages '||p_tau_count);
148 fnd_file.put_line(fnd_file.LOG,'-> hxc_time_attributes '||p_ta_count);
149 fnd_file.put_line(fnd_file.LOG,'-> hxc_tansaction_details '||p_td_count);
150 fnd_file.put_line(fnd_file.LOG,'-> hxc_transactions '||p_trans_count);
151 fnd_file.put_line(fnd_file.LOG,'-> hxc_tc_ap_links '||p_tal_count);
152 fnd_file.put_line(fnd_file.LOG,'-> hxc_app_period_summary '||p_aps_count);
153 fnd_file.put_line(fnd_file.LOG,'-> hxc_ap_detail_links '||p_adl_count);
154 fnd_file.put_line(fnd_file.LOG,'-> hxc_latest_details '||p_ld_count);
155 fnd_file.put_line(fnd_file.LOG,'-> hxc_timecard_summary '||p_ts_count);
156
157
158 END core_table_count_snapshot;
159
160 ----------------------------------------------------------------------------
161 -- Procedure Name : bkup_table_count_snapshot
162 -- Description : This procedure will give a snapshot of the bkup tables
163 ----------------------------------------------------------------------------
164 PROCEDURE bkup_table_count_snapshot
165 (p_tbb_ar_count OUT NOCOPY NUMBER,
166 p_tau_ar_count OUT NOCOPY NUMBER,
167 p_ta_ar_count OUT NOCOPY NUMBER,
168 p_td_ar_count OUT NOCOPY NUMBER,
169 p_trans_ar_count OUT NOCOPY NUMBER,
170 p_tal_ar_count OUT NOCOPY NUMBER,
171 p_adl_ar_count OUT NOCOPY NUMBER,
172 p_aps_ar_count OUT NOCOPY NUMBER)
173
174 IS
175
176 BEGIN
177
178 -- Building Blocks table
179 select /*+ index_ffs (t HXC_TIME_BUILDING_BLOCKS_AR_PK ) parallel (t,4)*/ count(time_building_block_id)
180 into p_tbb_ar_count from hxc_time_building_blocks_ar t;
181
182 -- Attributes Usages
183 select/*+ index_ffs (t HXC_TIME_ATTR_USAGES_AR_PK ) parallel (t,4)*/ count(time_attribute_usage_id)
184 into p_tau_ar_count from hxc_time_attribute_usages_ar t;
185
186 -- Attributes
187 select /*+ index_ffs (t HXC_TIME_ATTRIBUTES_AR_PK ) parallel (t,4)*/ count(time_attribute_id)
188 into p_ta_ar_count from hxc_time_attributes_ar t;
189
190 -- Transaction Details
191 select /*+ index_ffs (t HXC_TRANS_DETAILS_AR_PK ) parallel (t,4)*/ count(transaction_detail_id)
192 into p_td_ar_count from hxc_transaction_details_ar t;
193
194 -- Transactions
195 select /*+ index_ffs (t HXC_TRANSACTIONS_AR_PK ) parallel (t,4)*/ count(transaction_id)
196 into p_trans_ar_count from hxc_transactions_ar t;
197
198 -- Timecard Approver Links
199 select /*+ index_ffs (t HXC_TC_AP_LINKS_AR_PK ) parallel (t,4)*/ count(timecard_id)
200 into p_tal_ar_count from hxc_tc_ap_links_ar t;
201
202 -- Application Period Detail links
203 select /*+ index_ffs (t HXC_AP_DETAIL_LINKS_AR_PK ) parallel (t,4)*/ count(application_period_id)
204 into p_adl_ar_count from hxc_ap_detail_links_ar t;
205
206 -- Application Period Summary
207 select /*+ index_ffs (t HXC_APP_PERIOD_SUMMARY_AR_PK ) parallel (t,4)*/ count(application_period_id)
208 into p_aps_ar_count from hxc_app_period_summary_ar t;
209
210
211 -- Create the report
212 fnd_file.put_line(fnd_file.LOG,'--------------------------------------');
213 fnd_file.put_line(fnd_file.LOG,' Archive Table Count Snapshot');
214 fnd_file.put_line(fnd_file.LOG,'--------------------------------------');
215 fnd_file.put_line(fnd_file.LOG,'-> hxc_time_building_blocks_ar '||p_tbb_ar_count);
216 fnd_file.put_line(fnd_file.LOG,'-> hxc_time_attribute_usages_ar '||p_tau_ar_count);
217 fnd_file.put_line(fnd_file.LOG,'-> hxc_time_attributes_ar '||p_ta_ar_count);
218 fnd_file.put_line(fnd_file.LOG,'-> hxc_tansaction_details_ar '||p_td_ar_count);
219 fnd_file.put_line(fnd_file.LOG,'-> hxc_transactions_ar '||p_trans_ar_count);
220 fnd_file.put_line(fnd_file.LOG,'-> hxc_tc_ap_links_ar '||p_tal_ar_count);
221 fnd_file.put_line(fnd_file.LOG,'-> hxc_ap_detail_links_ar '||p_adl_ar_count);
222 fnd_file.put_line(fnd_file.LOG,'-> hxc_app_period_summary_ar '||p_aps_ar_count);
223
224
225 END bkup_table_count_snapshot;
226
227
228 ----------------------------------------------------------------------------
229 -- Procedure Name : count_chunk_check
230 -- Description : This procedure will give a snapshot of the bkup tables
231 ----------------------------------------------------------------------------
232 PROCEDURE count_chunk_check
233 (p_tc_ar_count IN NUMBER,
234 p_day_ar_count IN NUMBER,
235 p_detail_ar_count IN NUMBER,
236 p_app_period_ar_count IN NUMBER,
237 p_tau_ar_count IN NUMBER,
238 p_td_ar_count IN NUMBER,
239 p_trans_ar_count IN NUMBER,
240 p_tal_ar_count IN NUMBER,
241 p_adl_ar_count IN NUMBER,
242 p_app_period_sum_ar_count IN NUMBER,
243 p_tbb_count IN NUMBER,
244 p_app_period_count IN NUMBER,
245 p_tau_count IN NUMBER,
246 p_td_count IN NUMBER,
247 p_trans_count IN NUMBER,
248 p_tal_count IN NUMBER,
249 p_adl_count IN NUMBER,
250 p_app_period_sum_count IN NUMBER)
251 IS
252
253
254
255 BEGIN
256
257 fnd_file.put_line(fnd_file.LOG,' ================================= ');
258 fnd_file.put_line(fnd_file.LOG,' ====== Chunk count ============== ');
259 fnd_file.put_line(fnd_file.LOG,' ================================= ');
260 fnd_file.put_line(fnd_file.LOG,' --- > p_tc_ar_count :'||p_tc_ar_count);
261 fnd_file.put_line(fnd_file.LOG,' --- > p_day_ar_count :'||p_day_ar_count );
262 fnd_file.put_line(fnd_file.LOG,' --- > p_detail_ar_count :'||p_detail_ar_count);
263 fnd_file.put_line(fnd_file.LOG,' --- > p_app_period_ar_count :'||p_app_period_ar_count);
264 fnd_file.put_line(fnd_file.LOG,' --- > p_tau_ar_count :'||p_tau_ar_count);
265 fnd_file.put_line(fnd_file.LOG,' --- > p_td_ar_count :'||p_td_ar_count);
266 --fnd_file.put_line(fnd_file.LOG,' --- > p_trans_ar_count :'||p_trans_ar_count);
267 fnd_file.put_line(fnd_file.LOG,' --- > p_tal_ar_count :'||p_tal_ar_count);
268 fnd_file.put_line(fnd_file.LOG,' --- > p_adl_ar_count :'||p_adl_ar_count);
269 fnd_file.put_line(fnd_file.LOG,' --- > p_app_period_sum_ar_count :'||p_app_period_sum_ar_count);
270 fnd_file.put_line(fnd_file.LOG,' --- > p_tbb_count :'||p_tbb_count);
271 fnd_file.put_line(fnd_file.LOG,' --- > p_app_period_count :'||p_app_period_count);
272 fnd_file.put_line(fnd_file.LOG,' --- > p_tau_count :'||p_tau_count);
273 fnd_file.put_line(fnd_file.LOG,' --- > p_td_count :'||p_td_count);
274 fnd_file.put_line(fnd_file.LOG,' --- > p_trans_count :'||p_trans_count);
275 fnd_file.put_line(fnd_file.LOG,' --- > p_tal_count :'||p_tal_count);
276 fnd_file.put_line(fnd_file.LOG,' --- > p_adl_count :'||p_adl_count);
277 fnd_file.put_line(fnd_file.LOG,' --- > p_app_period_sum_count :'||p_app_period_sum_count);
278
279
280 IF (p_tc_ar_count + p_day_ar_count + p_detail_ar_count) <> p_tbb_count THEN
281 fnd_file.put_line(fnd_file.LOG,'==> THE TIMECARD, DAY , DETAIL COUNT FAILED ');
282 RAISE hxc_archive_restore_process.e_chunk_count;
283 END IF;
284
285 IF p_app_period_ar_count <> p_app_period_count THEN
286 fnd_file.put_line(fnd_file.LOG,'==> THE APPLICATION PERIOD COUNT FAILED');
287 RAISE hxc_archive_restore_process.e_chunk_count;
288 END IF;
289
290 IF p_tau_ar_count <> p_tau_count THEN
291 fnd_file.put_line(fnd_file.LOG,'==> THE TIME ATTRIBUTE USAGES COUNT FAILED');
292 RAISE hxc_archive_restore_process.e_chunk_count;
293 END IF;
294
295 IF p_td_ar_count <> p_td_count THEN
296 fnd_file.put_line(fnd_file.LOG,'==> THE TRANSACTION DETAILS COUNT FAILED');
297 RAISE hxc_archive_restore_process.e_chunk_count;
298 END IF;
299
300 -- IF p_trans_ar_count <> p_trans_count THEN
301 --fnd_file.put_line(fnd_file.LOG,' The Transaction count failed ');
302 -- RAISE hxc_archive_restore_process.e_chunk_count;
303 -- END IF;
304
305 IF p_tal_ar_count <> p_tal_count THEN
306 fnd_file.put_line(fnd_file.LOG,'==> THE TIMECARD APPLICATION PERIODS COUNT FAILED');
307 RAISE hxc_archive_restore_process.e_chunk_count;
308 END IF;
309
310 IF p_adl_ar_count <> p_adl_count THEN
311 fnd_file.put_line(fnd_file.LOG,'==> THE APPLICATION PERIODS - DETAILS BB COUNT FAILED');
312 RAISE hxc_archive_restore_process.e_chunk_count;
313 END IF;
314
315 IF p_app_period_sum_ar_count <> p_app_period_sum_count THEN
316 fnd_file.put_line(fnd_file.LOG,'==> THE APPLICATION PERIOD SUMMARY COUNT FAILED');
317 RAISE hxc_archive_restore_process.e_chunk_count;
318 END IF;
319
320 END count_chunk_check;
321
322
323 ----------------------------------------------------------------------------
324 -- Procedure Name : count_snapshot_check
325 -- Description : This procedure will give a snapshot of the bkup tables
326 ----------------------------------------------------------------------------
327
328 PROCEDURE count_snapshot_check (p_tbb_count_1 IN NUMBER,
329 p_tau_count_1 IN NUMBER,
330 p_ta_count_1 IN NUMBER,
331 p_td_count_1 IN NUMBER,
332 p_trans_count_1 IN NUMBER,
333 p_tal_count_1 IN NUMBER,
334 p_aps_count_1 IN NUMBER,
335 p_adl_count_1 IN NUMBER,
336 p_ld_count_1 IN NUMBER,
337 p_ts_count_1 IN NUMBER,
338 p_tbb_ar_count_1 IN NUMBER,
339 p_tau_ar_count_1 IN NUMBER,
340 p_ta_ar_count_1 IN NUMBER,
341 p_td_ar_count_1 IN NUMBER,
342 p_trans_ar_count_1 IN NUMBER,
343 p_tal_ar_count_1 IN NUMBER,
344 p_adl_ar_count_1 IN NUMBER,
345 p_aps_ar_count_1 IN NUMBER,
346 p_tbb_count_2 IN NUMBER,
347 p_tau_count_2 IN NUMBER,
348 p_ta_count_2 IN NUMBER,
349 p_td_count_2 IN NUMBER,
350 p_trans_count_2 IN NUMBER,
351 p_tal_count_2 IN NUMBER,
352 p_aps_count_2 IN NUMBER,
353 p_adl_count_2 IN NUMBER,
354 p_ld_count_2 IN NUMBER,
355 p_ts_count_2 IN NUMBER,
356 p_tbb_ar_count_2 IN NUMBER,
357 p_tau_ar_count_2 IN NUMBER,
358 p_ta_ar_count_2 IN NUMBER,
359 p_td_ar_count_2 IN NUMBER,
360 p_trans_ar_count_2 IN NUMBER,
361 p_tal_ar_count_2 IN NUMBER,
362 p_adl_ar_count_2 IN NUMBER,
363 p_aps_ar_count_2 IN NUMBER,
364 retcode OUT NOCOPY NUMBER)
365 IS
366
367 l_dummy VARCHAR2(1);
368 l_att_diff_check NUMBER;
369
370 BEGIN
371
372 fnd_file.put_line(fnd_file.LOG,'----------------------------------------');
373 fnd_file.put_line(fnd_file.LOG,'------ COUNT CHECK ON SNAPSHOT --------');
374 fnd_file.put_line(fnd_file.LOG,'----------------------------------------');
375 fnd_file.put_line(fnd_file.LOG,'--- Building Blocks Table Count ------');
376 fnd_file.put_line(fnd_file.LOG,'--- > p_tbb_count_1 '||p_tbb_count_1);
377 fnd_file.put_line(fnd_file.LOG,'--- > p_tbb_count_2 '|| p_tbb_count_2);
378 fnd_file.put_line(fnd_file.LOG,'--- > p_tbb_ar_count_1 '||p_tbb_ar_count_1);
379 fnd_file.put_line(fnd_file.LOG,'--- > p_tbb_ar_count_2 '||p_tbb_ar_count_2);
380 fnd_file.put_line(fnd_file.LOG,'--- > Difference core '||(p_tbb_count_1 - p_tbb_count_2));
381 fnd_file.put_line(fnd_file.LOG,'--- > Difference backup '||(p_tbb_ar_count_2 - p_tbb_ar_count_1));
382
383 -- we can check that all the time building block have been transfered
384 IF (p_tbb_count_1 - p_tbb_count_2) <> (p_tbb_ar_count_2 - p_tbb_ar_count_1)
385 THEN
386 --error
387 fnd_file.put_line(fnd_file.LOG,'=== > COPY FAILED ON THE TIME BUILDING BLOCK');
388 retcode := 2;
389 --RETURN;
390 END IF;
391
392 fnd_file.put_line(fnd_file.LOG,'-----------------------------------');
393 fnd_file.put_line(fnd_file.LOG,'--- Attribute Usages Count ------');
394 fnd_file.put_line(fnd_file.LOG,'--- > p_tau_count_1 '||p_tau_count_1);
395 fnd_file.put_line(fnd_file.LOG,'--- > p_tau_count_2 '||p_tau_count_2);
396 fnd_file.put_line(fnd_file.LOG,'--- > p_tau_ar_count_1 '||p_tau_ar_count_1);
397 fnd_file.put_line(fnd_file.LOG,'--- > p_tau_ar_count_2 '||p_tau_ar_count_2);
398 fnd_file.put_line(fnd_file.LOG,'--- > Difference core '||(p_tau_count_1 - p_tau_count_2));
399 fnd_file.put_line(fnd_file.LOG,'--- > Difference backup '||(p_tau_ar_count_2 - p_tau_ar_count_1));
400
401 -- we can check that all the attributes usages have been transfered
402 IF (p_tau_count_1 - p_tau_count_2) <> (p_tau_ar_count_2 - p_tau_ar_count_1)
403 THEN
404 --error
405 fnd_file.put_line(fnd_file.LOG,'=== > COPY FAILED ON THE ATTRIBUTE USAGES BLOCK');
406 retcode := 2;
407 --RETURN;
408 END IF;
409
410 fnd_file.put_line(fnd_file.LOG,'-----------------------------');
411 fnd_file.put_line(fnd_file.LOG,'--- Attribute Count ------');
412 fnd_file.put_line(fnd_file.LOG,'--- > p_ta_count_1 '||p_ta_count_1);
413 fnd_file.put_line(fnd_file.LOG,'--- > p_ta_count_2 '||p_ta_count_2);
414 fnd_file.put_line(fnd_file.LOG,'--- > p_ta_ar_count_1 '||p_ta_ar_count_1);
415 fnd_file.put_line(fnd_file.LOG,'--- > p_ta_ar_count_2 '||p_ta_ar_count_2);
416 fnd_file.put_line(fnd_file.LOG,'--- > Difference core '||(p_ta_count_1 - p_ta_count_2));
417 fnd_file.put_line(fnd_file.LOG,'--- > Difference backup '||(p_ta_ar_count_2 - p_ta_ar_count_1));
418
419 -- for the attributes we need to check more if the attributes count is different
420 -- since we can copy consolidated attributes without deleting them from the core
421 -- table
422 IF (p_ta_count_1 - p_ta_count_2) <> (p_ta_ar_count_2 - p_ta_ar_count_1)
423 THEN
424 -- warning
425 fnd_file.put_line(fnd_file.LOG,'=== > SOME ATTRIBUTES WERE SHARED ');
426 retcode := 1;
427
428 SELECT /*+ index_ffs (t HXC_TIME_ATTRIBUTES_PK ) parallel (4)*/ count(ta.time_attribute_id)
429 INTO l_att_diff_check
430 FROM hxc_time_attributes ta, hxc_time_attributes_ar tabkup
431 WHERE ta.time_attribute_id = tabkup.time_attribute_id
432 AND EXISTS
433 (SELECT 1 FROM hxc_time_attribute_usages tau
434 WHERE tau.time_attribute_id = ta.time_attribute_id);
435
436 --l_att_diff_check := sql%rowcount;
437
438 fnd_file.put_line(fnd_file.LOG,'--- > Difference core - backup '||((p_ta_count_1 - p_ta_count_2) - (p_ta_ar_count_2 - p_ta_ar_count_1)));
439 fnd_file.put_line(fnd_file.LOG,'--- > l_att_diff_check '||l_att_diff_check);
440
441 IF (abs((p_ta_ar_count_2 - p_ta_ar_count_1)-(p_ta_count_1 - p_ta_count_2)) <> abs(l_att_diff_check))
442 THEN
443 fnd_file.put_line(fnd_file.LOG,'===> > IF THE PROCESS IS ARCHIVE THEN BAD TRANSFER OF ATTRIBUTES');
444
445 -- we need to add another check to see if the difference is legitimate.
446 /****************** SET TO 2 *****************************/
447 retcode := 1;
448 END IF;
449
450
451 END IF;
452
453
454 fnd_file.put_line(fnd_file.LOG,'---------------------------------------');
455 fnd_file.put_line(fnd_file.LOG,'--- Transaction Details Count ------');
456 fnd_file.put_line(fnd_file.LOG,'--- > p_td_count_1 '||p_td_count_1);
457 fnd_file.put_line(fnd_file.LOG,'--- > p_td_count_2 '||p_td_count_2);
458 fnd_file.put_line(fnd_file.LOG,'--- > p_td_ar_count_1 '||p_td_ar_count_1);
459 fnd_file.put_line(fnd_file.LOG,'--- > p_td_ar_count_2 '||p_td_ar_count_2);
460 fnd_file.put_line(fnd_file.LOG,'--- > Difference core '||(p_td_count_1 - p_td_count_2));
461 fnd_file.put_line(fnd_file.LOG,'--- > Difference backup '||(p_td_ar_count_2 - p_td_ar_count_1));
462
463 -- we can check that all the transaction details have been transfered
464 IF (p_td_count_1 - p_td_count_2) <> (p_td_ar_count_2 - p_td_ar_count_1)
465 THEN
466 --error
467 fnd_file.put_line(fnd_file.LOG,'=== > COPY FAILED ON THE TRANSACTION DETAILS');
468 retcode := 2;
469 --RETURN;
470 END IF;
471
472 fnd_file.put_line(fnd_file.LOG,'------------------------------');
473 fnd_file.put_line(fnd_file.LOG,'--- Transaction Count ------');
474 fnd_file.put_line(fnd_file.LOG,'--- > p_trans_count_1 '||p_trans_count_1);
475 fnd_file.put_line(fnd_file.LOG,'--- > p_trans_count_2 '||p_trans_count_2);
476 fnd_file.put_line(fnd_file.LOG,'--- > p_trans_ar_count_1 '||p_trans_ar_count_1);
477 fnd_file.put_line(fnd_file.LOG,'--- > p_trans_ar_count_2 '||p_trans_ar_count_2);
478 fnd_file.put_line(fnd_file.LOG,'--- > Difference core '||(p_trans_count_1 - p_trans_count_2));
479 fnd_file.put_line(fnd_file.LOG,'--- > Difference backup '||(p_trans_ar_count_2 - p_trans_ar_count_1));
480
481 -- we can check that all the transactions have been transfered
482 IF (p_trans_count_1 - p_trans_count_2) <> (p_trans_ar_count_2 - p_trans_ar_count_1)
483 THEN
484 --error
485 fnd_file.put_line(fnd_file.LOG,'=== > COPY TRANSACTIONS WERE SHARED');
486 retcode := 1;
487 --RETURN;
488 END IF;
489
490 fnd_file.put_line(fnd_file.LOG,'----------------------------------------------------');
491 fnd_file.put_line(fnd_file.LOG,'--- Timecard Application Period Links Count ------');
492 fnd_file.put_line(fnd_file.LOG,'--- > p_tal_count_1 '||p_tal_count_1);
493 fnd_file.put_line(fnd_file.LOG,'--- > p_tal_count_2 '||p_tal_count_2);
494 fnd_file.put_line(fnd_file.LOG,'--- > p_tal_ar_count_1 '||p_tal_ar_count_1);
495 fnd_file.put_line(fnd_file.LOG,'--- > p_tal_ar_count_2 '||p_tal_ar_count_2);
496 fnd_file.put_line(fnd_file.LOG,'--- > Difference core '||(p_tal_count_1 - p_tal_count_2));
497 fnd_file.put_line(fnd_file.LOG,'--- > Difference backup '||(p_tal_ar_count_2 - p_tal_ar_count_1));
498
499 -- we can check that all the timecard application links have been transfered
500 IF (p_tal_count_1 - p_tal_count_2) <> (p_tal_ar_count_2 - p_tal_ar_count_1)
501 THEN
502 --error
503 fnd_file.put_line(fnd_file.LOG,'=== > COPY FAILED ON THE TIMECARD APPLICATION PERIOD LINKS');
504 retcode := 2;
505 --RETURN;
506 END IF;
507
508
509 fnd_file.put_line(fnd_file.LOG,'----------------------------------------------------');
510 fnd_file.put_line(fnd_file.LOG,'--- Application Period Detail BB Links Count ------');
511 fnd_file.put_line(fnd_file.LOG,'--- > p_adl_count_1 '||p_adl_count_1);
512 fnd_file.put_line(fnd_file.LOG,'--- > p_adl_count_2 '||p_adl_count_2);
513 fnd_file.put_line(fnd_file.LOG,'--- > p_adl_ar_count_1 '||p_adl_ar_count_1);
514 fnd_file.put_line(fnd_file.LOG,'--- > p_adl_ar_count_2 '||p_adl_ar_count_2);
515 fnd_file.put_line(fnd_file.LOG,'--- > Difference core '||(p_adl_count_1 - p_adl_count_2));
516 fnd_file.put_line(fnd_file.LOG,'--- > Difference backup '||(p_adl_ar_count_2 - p_adl_ar_count_1));
517
518 -- we can check that all the timecard application links have been transfered
519 IF (p_adl_count_1 - p_adl_count_2) <> (p_adl_ar_count_2 - p_adl_ar_count_1)
520 THEN
521 --error
522 fnd_file.put_line(fnd_file.LOG,'=== > COPY FAILED ON THE APPLICATION PERIOD DETAIL BB LINKS');
523 retcode := 2;
524 --RETURN;
525 END IF;
526
527
528 fnd_file.put_line(fnd_file.LOG,'---------------------------------------------');
529 fnd_file.put_line(fnd_file.LOG,'--- Application Period Summary Count ------');
530 fnd_file.put_line(fnd_file.LOG,'--- > p_aps_count_1 '||p_aps_count_1);
531 fnd_file.put_line(fnd_file.LOG,'--- > p_aps_count_2 '||p_aps_count_2);
532 fnd_file.put_line(fnd_file.LOG,'--- > p_aps_ar_count_1 '||p_aps_ar_count_1);
533 fnd_file.put_line(fnd_file.LOG,'--- > p_aps_ar_count_2 '||p_aps_ar_count_2);
534 fnd_file.put_line(fnd_file.LOG,'--- > Difference core '||(p_aps_count_1 - p_aps_count_2));
535 fnd_file.put_line(fnd_file.LOG,'--- > Difference backup '||(p_aps_ar_count_2 - p_aps_ar_count_1));
536
537 -- we can check that all the application period summary have been transfered
538 IF (p_aps_count_1 - p_aps_count_2) <> (p_aps_ar_count_2 - p_aps_ar_count_1)
539 THEN
540 --error
541 fnd_file.put_line(fnd_file.LOG,'=== > COPY FAILED ON THE APPLICATION PERIOD SUMMARY');
542 retcode := 2;
543 --RETURN;
544 END IF;
545
546
547 END count_snapshot_check;
548
549 ----------------------------------------------------------------------------
550 -- Procedure Name : incompatibility_pg_running
551 -- Description :
552 ----------------------------------------------------------------------------
553
554 FUNCTION incompatibility_pg_running
555 RETURN BOOLEAN
556 IS
557
558 l_running_id NUMBER;
559
560 BEGIN
561
562 BEGIN
563
564 SELECT cr.request_id into l_running_id
565 FROM
566 fnd_concurrent_programs cp,
567 fnd_concurrent_requests cr
568 WHERE cp.concurrent_program_name in ('HXCCATTRB','HXCRESDS','HXCUNDEFDS','HXCDEFDS','HXCARCHDS')
569 AND cp.application_id = 809
570 AND
571 cr.concurrent_program_id = cp.concurrent_program_id AND
572 cr.request_id <> fnd_global.conc_request_id and
573 cr.status_code = 'R';
574
575 EXCEPTION
576 WHEN NO_DATA_FOUND then
577 RETURN FALSE;
578 END;
579
580 RETURN TRUE;
581
582 END incompatibility_pg_running;
583
584 --updating the wf_notification_attributes with Archival=Yes URL param
585 --while cancelling the notification via archival.
586 --Gets called from hxc_find_notify_aprs_pkg.cancel_notifications procedure.
587
588 PROCEDURE upd_wf_notif_attributes(p_item_type in varchar2,
589 p_item_key in varchar2) is
590
591 l_notification_id NUMBER;
592 l_timecard_url wf_notification_attributes.TEXT_VALUE%TYPE;
593 l_temp_timecard_url wf_notification_attributes.TEXT_VALUE%TYPE;
594 l_pos NUMBER;
595
596
597 CURSOR c_notif_id(p_item_key in varchar2,p_item_type in varchar2 ) is
598 SELECT DISTINCT notification_id
599 FROM WF_ITEM_ACTIVITY_STATUSES
600 WHERE ITEM_KEY = p_item_key
601 AND ITEM_TYPE = p_item_type;
602
603 CURSOR c_timecard_url_value(p_notification_id in varchar2) is
604 SELECT text_value
605 FROM wf_notification_attributes
606 WHERE notification_id = p_notification_id
607 and name = 'TIMECARD';
608
609 BEGIN
610
611 OPEN c_notif_id(p_item_key,p_item_type);
612 FETCH c_notif_id into l_notification_id; --Picking up the Notification Id.
613 CLOSE c_notif_id;
614
615 IF(l_notification_id is not null) THEN
616 open c_timecard_url_value(l_notification_id);
617 fetch c_timecard_url_value into l_timecard_url;
618 close c_timecard_url_value;
619
620 IF(l_timecard_url is not null) THEN
621 --Setting the New Parameter.
622 -- Just a hack here, because adding the Archived parameter at the last
623 -- doesn't seem to work.
624 -- So spiliting the timecard url and add the Archived parameter just before the
625 -- StartTime param.
626 l_pos := Instr(l_timecard_url,'&StartTime',1);
627
628 IF(l_pos > 0) THEN --Only if the param exists(A safe check,though it should always exist)
629 l_temp_timecard_url := substr(l_timecard_url,0,(l_pos-1));
630 l_timecard_url :=
631 l_temp_timecard_url||'&Archived=Yes'||substr(l_timecard_url,(l_pos-1));
632
633 --Updating the Workflow Notification Attributes.
634 update wf_notification_attributes set
635 text_value = l_timecard_url
636 where notification_id = l_notification_id
637 and name = 'TIMECARD';
638
639 --Updating the Workflow Item Attributes.
640 wf_engine.SetItemAttrText(
641 itemtype => p_item_type,
642 itemkey => p_item_key,
643 aname => 'TIMECARD',
644 avalue => l_timecard_url);
645 END IF;
646
647 END IF;
648 END IF;
649
650 EXCEPTION
651 WHEN OTHERS THEN
652 NULL;
653
654 END upd_wf_notif_attributes;
655
656
657 END hxc_archive_restore_utils;