DBA Data[Home] [Help]

PACKAGE BODY: APPS.HXC_TIMECARD_DEPOSIT_COMMON

Source


1 PACKAGE body hxc_timecard_deposit_common AS
2 /* $Header: hxctcdpcommon.pkb 115.2 2003/07/25 10:38:34 jdupont noship $ */
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 Begin
224 
225 --
226 -- Find the corresponding ovn of the timecard
227 --
228 
229 open c_timecard_ovn(p_timecard_id);
230 fetch c_timecard_ovn into l_timecard_ovn;
231 if(c_timecard_ovn%notfound) then
232   close c_timecard_ovn;
233   fnd_message.set_name('HXC','HXC_NO_ACTIVE_TIMECARD');
234   fnd_message.raise_error;
235 end if;
236 
237 close c_timecard_ovn;
238 
239 --
240 -- Initialize the message stack
241 --
242 
243 fnd_msg_pub.initialize;
244 hxc_timecard_message_helper.initializeErrors;
245 --
246 -- Get the timecard or timecard template blocks and attributes
247 --
248 
249   l_blocks := load_blocks(p_timecard_id, l_timecard_ovn);
250   l_attributes := load_attributes(l_blocks);
251 
252 --
253 -- Main delete processing
254 --
255 
256   l_timecard_index := hxc_timecard_block_utils.find_active_timecard_index(l_blocks);
257 
258   hxc_timecard_properties.get_preference_properties
259     (p_validate             => hxc_timecard.c_yes
260     ,p_resource_id          => l_blocks(l_timecard_index).resource_id
261     ,p_timecard_start_time  => fnd_date.canonical_to_date(l_blocks(l_timecard_index).start_time)
262     ,p_timecard_stop_time   => fnd_date.canonical_to_date(l_blocks(l_timecard_index).stop_time)
263     ,p_for_timecard         => false
264     ,p_messages             => l_messages
265     ,p_property_table       => l_timecard_props
266     );
267 
268   hxc_timecard_message_helper.processerrors
269     (p_messages => l_messages);
270 
271   l_messages.delete;
272 
273   hxc_timecard_block_utils.sort_blocks
274    (p_blocks          => l_blocks
275    ,p_timecard_blocks => l_timecard_blocks
276    ,p_day_blocks      => l_day_blocks
277    ,p_detail_blocks   => l_detail_blocks
278    );
279 
280   hxc_block_attribute_update.set_process_flags
281     (p_blocks => l_blocks
282     ,p_attributes => l_attributes
283     );
284 
285   hxc_timecard_validation.deposit_validation
286     (p_blocks        => l_blocks
287     ,p_attributes    => l_attributes
288     ,p_messages      => l_messages
289     ,p_props         => l_timecard_props
290     ,p_deposit_mode  => hxc_timecard.c_submit
291     ,p_template      => p_template
292     ,p_resubmit      => c_delete
293     ,p_can_deposit   => l_dummy
294     );
295 
296   hxc_timecard_message_helper.processerrors
297     (p_messages => l_messages);
298 
299   hxc_timecard_deposit.execute
300    (p_blocks => l_blocks
301    ,p_attributes => l_attributes
302    ,p_timecard_blocks => l_timecard_blocks
303    ,p_day_blocks => l_day_blocks
304    ,p_detail_blocks => l_detail_blocks
305    ,p_messages => l_messages
306    ,p_transaction_info => l_transaction_info
307    );
308   hxc_timecard_message_helper.processerrors
309     (p_messages => l_messages);
310 
311   hxc_timecard_summary_api.delete_timecard
312       (p_blocks => l_blocks
313       ,p_timecard_id => p_timecard_id
314       );
315 
316   hxc_timecard_audit.audit_deposit
317     (p_transaction_info => l_transaction_info
318     ,p_messages => l_messages
319     );
320   hxc_timecard_message_helper.processerrors
321     (p_messages => l_messages);
322 
323   hxc_timecard_message_helper.prepareErrors;
324 
325 End delete_timecard;
326 
327 END hxc_timecard_deposit_common;