[Home] [Help]
PACKAGE BODY: APPS.HXC_TIMECARD_DEPOSIT_COMMON
Source
1 PACKAGE body hxc_timecard_deposit_common AS
2 /* $Header: hxctcdpcommon.pkb 120.0.12010000.4 2009/10/05 12:10:22 amakrish ship $ */
3
4 g_package varchar2(50) := 'hxc_timecard_deposit_common';
5
6 /**************************************************************************
7 Alias Translator Procedure
8 This procedure....
9 ***************************************************************************/
10 Procedure alias_translation
11 (p_blocks in out nocopy HXC_BLOCK_TABLE_TYPE
12 ,p_attributes in out nocopy HXC_ATTRIBUTE_TABLE_TYPE
13 ,p_messages in out nocopy HXC_MESSAGE_TABLE_TYPE
14 ) is
15
16 l_old_style_attr HXC_SELF_SERVICE_TIME_DEPOSIT.building_block_attribute_info;
17 l_old_style_blks HXC_SELF_SERVICE_TIME_DEPOSIT.timecard_info;
18
19 l_proc varchar2(80) := g_package||'.alias_translation';
20
21 Begin
22
23 hxc_timecard_attribute_utils.set_bld_blk_info_type_id(p_attributes);
24
25 HXC_ALIAS_TRANSLATOR.DO_DEPOSIT_TRANSLATION
26 (p_attributes => p_attributes
27 ,p_messages => p_messages
28 );
29
30 End alias_translation;
31
32 /**************************************************************************
33 Validate Setup Procedure
34 This procedure....
35 ***************************************************************************/
36 /*
37 Procedure validate_setup
38 (p_deposit_mode in varchar2
39 ,p_blocks in out nocopy hxc_block_table_type
40 ,p_attributes in out nocopy hxc_attribute_table_type
41 ,p_messages in out nocopy hxc_message_table_type
42 ) is
43
44 cursor c_deposit_process is
45 select deposit_process_id
46 from hxc_deposit_processes
47 where name = 'OTL Deposit Process';
48
49 l_old_blocks hxc_self_service_time_deposit.timecard_info;
50 l_old_attributes hxc_self_service_time_deposit.building_block_attribute_info;
51 l_old_messages hxc_self_service_time_deposit.message_table;
52 l_app_attributes hxc_self_service_time_deposit.app_attributes_info;
53 l_deposit_process_id hxc_deposit_processes.deposit_process_id%type;
54
55 Begin
56
57 open c_deposit_process;
58 fetch c_deposit_process into l_deposit_process_id;
59 if(c_deposit_process%notfound) then
60 close c_deposit_process;
61 hxc_timecard_message_helper.addErrorToCollection
62 (p_messages
63 ,'HXC_NO_OTL_DEPOSIT_PROC'
64 ,hxc_timecard.c_error
65 ,null
66 ,null
67 ,hxc_timecard.c_hxc
68 ,null
69 ,null
70 ,null
71 ,null
72 );
73
74 else
75
76 close c_deposit_process;
77
78 l_app_attributes :=
79 hxc_app_attribute_utils.create_app_attributes
80 (p_attributes => p_attributes
81 ,p_retrieval_process_id => null
82 ,p_deposit_process_id => l_deposit_process_id
83 );
84
85 l_old_blocks := hxc_timecard_block_utils.convert_to_dpwr_blocks
86 (p_blocks => p_blocks);
87
88 l_old_attributes := hxc_timecard_attribute_utils.convert_to_dpwr_attributes
89 (p_attributes => p_attributes);
90
91 hxc_timecard_message_utils.append_old_messages
92 (p_messages => p_messages
93 ,p_old_messages => l_old_messages
94 ,p_retrieval_process_id => null
95 );
96
97 end if;
98
99 End validate_setup;
100 */
101 /**************************************************************************
102 Load Block Procedure
103 This procedure....
104
105 ***************************************************************************/
106 Function load_blocks
107 (p_timecard_id in out nocopy hxc_time_building_blocks.time_building_block_id%type
108 ,p_timecard_ovn in out nocopy hxc_time_building_blocks.object_version_number%type
109 ) return hxc_block_table_type is
110
111 cursor c_blocks
112 (p_tc_id in hxc_time_building_blocks.time_building_block_id%type
113 ) is
114 select tbb.time_building_block_id
115 ,tbb.object_version_number
116 from hxc_time_building_blocks tbb
117 where tbb.date_to = hr_general.end_of_time
118 start with (tbb.time_building_block_id = p_tc_id)
119 connect by prior tbb.time_building_block_id = tbb.parent_building_block_id
120 and prior tbb.object_version_number = tbb.parent_building_block_ovn;
121
122 l_blocks hxc_block_table_type := hxc_block_table_type();
123 l_block_count number := 1;
124
125
126 Begin
127
128 for block_rec in c_blocks(p_timecard_id) loop
129 l_blocks.extend;
130 l_blocks(l_block_count) := hxc_timecard_block_utils.build_block
131 (block_rec.time_building_block_id
132 ,block_rec.object_version_number);
133 --
134 -- Date effectively end date the block
135 --
136 l_blocks(l_block_count).date_to := sysdate;
137 l_block_count := l_block_count +1;
138
139 end loop;
140
141 return l_blocks;
142
143 End load_blocks;
144
145 /**************************************************************************
146 Load Attribures Procedure
147 This procedure....
148 ***************************************************************************/
149 Function load_attributes
150 (p_blocks in out nocopy hxc_block_table_type)
151 return hxc_attribute_table_type is
152
153 cursor c_attributes
154 (p_building_block_id in hxc_time_building_blocks.time_building_block_id%type
155 ,p_building_block_ovn in hxc_time_building_blocks.object_version_number%type
156 ) is
157 select tau.time_attribute_id
158 from hxc_time_attribute_usages tau
159 where tau.time_building_block_id = p_building_block_id
160 and tau.time_building_block_ovn = p_building_block_ovn;
161
162 l_attributes hxc_attribute_table_type := hxc_attribute_table_type();
163
164 l_block_index number;
165 l_attribute_index number := 1;
166
167 Begin
168
169 l_block_index := p_blocks.first;
170
171 loop
172 exit when not p_blocks.exists(l_block_index);
173 for attribute_rec in c_attributes(p_blocks(l_block_index).time_building_block_id,p_blocks(l_block_index).object_version_number) loop
174 l_attributes.extend;
175 l_attributes(l_attribute_index) := hxc_timecard_attribute_utils.build_attribute
176 (attribute_rec.time_attribute_id
177 ,1
178 ,p_blocks(l_block_index).time_building_block_id
179 ,p_blocks(l_block_index).object_version_number
180 );
181 l_attribute_index := l_attribute_index +1;
182 end loop;
183 l_block_index := p_blocks.next(l_block_index);
184 end loop;
185
186 return l_attributes;
187
188 End load_attributes;
189
190 /**************************************************************************
191 Delete Timecard Procedure
192 This procedure....
193 ***************************************************************************/
194 Procedure delete_timecard
195 (p_mode in varchar2
196 ,p_template in varchar2
197 ,p_timecard_id in out nocopy hxc_time_building_blocks.time_building_block_id%type
198 ) is
199
200 cursor c_timecard_ovn
201 (p_timecard_id in hxc_time_building_blocks.time_building_block_id%type) is
202 select tbb.object_version_number
203 from hxc_time_building_blocks tbb
204 where tbb.time_building_block_id = p_timecard_id
205 and tbb.date_to = hr_general.end_of_time;
206
207 l_blocks hxc_block_table_type := hxc_block_table_type();
208 l_attributes hxc_attribute_table_type := hxc_attribute_table_type();
209 l_messages hxc_message_table_type := hxc_message_table_type();
210
211 l_timecard_blocks hxc_timecard.block_list;
212 l_day_blocks hxc_timecard.block_list;
213 l_detail_blocks hxc_timecard.block_list;
214
215 l_transaction_info hxc_timecard.transaction_info;
216 l_timecard_props hxc_timecard_prop_table_type;
217
218 l_dummy boolean := true;
219
220 l_timecard_ovn hxc_time_building_blocks.object_version_number%type;
221 l_timecard_index number;
222
223 l_resource_id NUMBER;
224 l_tc_start DATE;
225 l_tc_stop DATE;
226
227 Begin
228
229 --
230 -- Find the corresponding ovn of the timecard
231 --
232
233 open c_timecard_ovn(p_timecard_id);
234 fetch c_timecard_ovn into l_timecard_ovn;
235 if(c_timecard_ovn%notfound) then
236 close c_timecard_ovn;
237 fnd_message.set_name('HXC','HXC_NO_ACTIVE_TIMECARD');
238 fnd_message.raise_error;
239 end if;
240
241 close c_timecard_ovn;
242
243 --
244 -- Initialize the message stack
245 --
246
247 fnd_msg_pub.initialize;
248 hxc_timecard_message_helper.initializeErrors;
249 --
250 -- Get the timecard or timecard template blocks and attributes
251 --
252
253 l_blocks := load_blocks(p_timecard_id, l_timecard_ovn);
254 l_attributes := load_attributes(l_blocks);
255
256 --
257 -- Main delete processing
258 --
259
260 l_timecard_index := hxc_timecard_block_utils.find_active_timecard_index(l_blocks);
261
262 hxc_timecard_properties.get_preference_properties
263 (p_validate => hxc_timecard.c_yes
264 ,p_resource_id => l_blocks(l_timecard_index).resource_id
265 ,p_timecard_start_time => fnd_date.canonical_to_date(l_blocks(l_timecard_index).start_time)
266 ,p_timecard_stop_time => fnd_date.canonical_to_date(l_blocks(l_timecard_index).stop_time)
267 ,p_for_timecard => false
268 ,p_messages => l_messages
269 ,p_property_table => l_timecard_props
270 );
271
272 hxc_timecard_message_helper.processerrors
273 (p_messages => l_messages);
274
275 l_messages.delete;
276
277 hxc_timecard_block_utils.sort_blocks
278 (p_blocks => l_blocks
279 ,p_timecard_blocks => l_timecard_blocks
280 ,p_day_blocks => l_day_blocks
281 ,p_detail_blocks => l_detail_blocks
282 );
283
284 hxc_block_attribute_update.set_process_flags
285 (p_blocks => l_blocks
286 ,p_attributes => l_attributes
287 );
288
289 hxc_timecard_validation.deposit_validation
290 (p_blocks => l_blocks
291 ,p_attributes => l_attributes
292 ,p_messages => l_messages
293 ,p_props => l_timecard_props
294 ,p_deposit_mode => hxc_timecard.c_submit
295 ,p_template => p_template
296 ,p_resubmit => c_delete
297 ,p_can_deposit => l_dummy
298 );
299
300 hxc_timecard_message_helper.processerrors
301 (p_messages => l_messages);
302
303 hxc_timecard_deposit.execute
304 (p_blocks => l_blocks
305 ,p_attributes => l_attributes
306 ,p_timecard_blocks => l_timecard_blocks
307 ,p_day_blocks => l_day_blocks
308 ,p_detail_blocks => l_detail_blocks
309 ,p_messages => l_messages
310 ,p_transaction_info => l_transaction_info
311 );
312 hxc_timecard_message_helper.processerrors
313 (p_messages => l_messages);
314
315 hxc_timecard_summary_api.delete_timecard
316 (p_blocks => l_blocks
317 ,p_timecard_id => p_timecard_id
318 );
319
320 hxc_timecard_audit.audit_deposit
321 (p_transaction_info => l_transaction_info
322 ,p_messages => l_messages
323 );
324 hxc_timecard_message_helper.processerrors
325 (p_messages => l_messages);
326
327 hxc_timecard_message_helper.prepareErrors;
328
329 -- OTL-Absences Integration (Bug 8779478)
330 IF (nvl(fnd_profile.value('HR_ABS_OTL_INTEGRATION'), 'N') = 'Y') THEN
331 IF (p_timecard_id > 0 and hxc_timecard_message_helper.noerrors) THEN
332
333 hr_utility.trace('Initiated Online Retrieval from HXC_TIMECARD_DEPOSIT_COMMON.DELETE_TIMECARD');
334
335 l_resource_id := l_blocks(l_timecard_index).resource_id;
336 l_tc_start := fnd_date.canonical_to_date(l_blocks(l_timecard_index).start_time);
337 l_tc_stop := fnd_date.canonical_to_date(l_blocks(l_timecard_index).stop_time);
338
339 hxc_abs_retrieval_pkg.post_absences(l_resource_id,
340 l_tc_start,
341 l_tc_stop,
342 'DELETED',
343 l_messages);
344
345 hxc_timecard_message_helper.processerrors
346 (p_messages => l_messages);
347
348 hxc_timecard_message_helper.prepareErrors;
349
350 END IF;
351 END IF;
352
353 End delete_timecard;
354
355 END hxc_timecard_deposit_common;