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