[Home] [Help]
PACKAGE BODY: APPS.HXC_TIMECARD_VALIDATION
Source
1 package body hxc_timecard_validation as
2 /* $Header: hxctimevalid.pkb 120.2 2005/07/06 12:08:29 gpaytonm noship $ */
3
4 type retrieval_ref_cursor IS ref cursor;
5
6 Function get_otm_app_attributes
7 (p_attributes in hxc_attribute_table_type,
8 p_messages in out nocopy hxc_message_table_type)
9 return hxc_self_service_time_deposit.app_attributes_info is
10
11 cursor c_deposit_process is
12 select deposit_process_id
13 from hxc_deposit_processes
14 where name = 'OTL Deposit Process';
15
16 l_deposit_process_id hxc_deposit_processes.deposit_process_id%type;
17 l_app_attributes hxc_self_service_time_deposit.app_attributes_info;
18
19 begin
20
21 open c_deposit_process;
22 fetch c_deposit_process into l_deposit_process_id;
23 if(c_deposit_process%notfound) then
24 close c_deposit_process;
25 hxc_timecard_message_helper.addErrorToCollection
26 (p_messages,
27 'HXC_NO_OTL_DEPOSIT_PROC',
28 hxc_timecard.c_error,
29 null,
30 null,
31 hxc_timecard.c_hxc,
32 null,
33 null,
34 null,
35 null
36 );
37
38 else
39 close c_deposit_process;
40
41 l_app_attributes :=
42 hxc_app_attribute_utils.create_app_attributes
43 (p_attributes => p_attributes,
44 p_retrieval_process_id => null,
45 p_deposit_process_id => l_deposit_process_id
46 );
47 end if;
48
49 return l_app_attributes;
50
51 end get_otm_app_attributes;
52
53 Function find_retrieval_process_id
54 (p_time_recipient_id
55 in hxc_time_recipients.time_recipient_id%type,
56 p_retrieval_function
57 in hxc_time_recipients.application_retrieval_function%type)
58 Return number is
59
60 c_ret_pro retrieval_ref_cursor;
61 l_sql VARCHAR2(32000);
62 l_retrieval_process_id hxc_retrieval_processes.retrieval_process_id%type;
63
64 Begin
65
66 l_sql := 'select retrieval_process_id
67 from hxc_retrieval_processes
68 where time_recipient_id = '|| p_time_recipient_id
69 ||' and name = '||p_retrieval_function;
70
71 open c_ret_pro for l_sql;
72 fetch c_ret_pro into l_retrieval_process_id;
73
74 if c_ret_pro%notfound then
75 close c_ret_pro;
76 fnd_message.set_name('hxc','hxc_xxxxx_no_app_ret_proc_name');
77 fnd_msg_pub.add;
78 else
79 close c_ret_pro;
80 end if;
81
82 return l_retrieval_process_id;
83
84 End find_retrieval_process_id;
85
86 Function recipients
87 (p_application_set_id in number)
88 Return recipient_application_table is
89
90 cursor csr_time_recipients(p_application_set_id in number) is
91 select tr.time_recipient_id,
92 tr.name,
93 tr.application_retrieval_function,
94 tr.application_update_process,
95 tr.appl_validation_process
96 from hxc_time_recipients tr,
97 hxc_application_set_comps_v asc1
98 where p_application_set_id = asc1.application_set_id
99 and asc1.time_recipient_id = tr.time_recipient_id
100 and tr.application_retrieval_function is not null;
101
102 l_appl_recipients recipient_application_table;
103 l_index pls_integer;
104
105 Begin
106
107 l_index := 0;
108 for recip_rec in csr_time_recipients(p_application_set_id) loop
109 l_index := l_index +1;
110 l_appl_recipients(l_index).time_recipient_id
111 := recip_rec.time_recipient_id;
112 l_appl_recipients(l_index).name := recip_rec.name;
113 l_appl_recipients(l_index).application_retrieval_function
114 := recip_rec.application_retrieval_function;
115 l_appl_recipients(l_index).application_update_process
116 := recip_rec.application_update_process;
117 l_appl_recipients(l_index).appl_validation_process
118 := recip_rec.appl_validation_process;
119 l_appl_recipients(l_index).appl_retrieval_process_id
120 := find_retrieval_process_id
121 (recip_rec.time_recipient_id,
122 recip_rec.application_retrieval_function);
123 end loop;
124
125 return l_appl_recipients;
126
127 End recipients;
128
129 Procedure update_attributes
130 (p_attributes in out nocopy hxc_attribute_table_type) is
131
132 l_app_attributes hxc_self_service_time_deposit.app_attributes_info;
133
134 Begin
135
136 l_app_attributes := hxc_self_service_time_deposit.get_app_attributes;
137
138 hxc_app_attribute_utils.update_attributes
139 (p_attributes => p_attributes,
140 p_app_attributes => l_app_attributes
141 );
142
143 End update_attributes;
144
145 Procedure set_attributes
146 (p_blocks in hxc_block_table_type,
147 p_attributes in hxc_attribute_table_type,
148 p_old_style_attrs in hxc_self_service_time_deposit.building_block_attribute_info,
149 p_retrieval_process_id in number,
150 p_recipients in recipient_application_table,
151 p_elp_enabled in boolean
152 ) is
153
154 l_app_attributes hxc_self_service_time_deposit.app_attributes_info;
155 l_messages hxc_self_service_time_deposit.message_table;
156
157 Begin
158
159 if(p_elp_enabled) then
160
161 l_app_attributes
162 := hxc_app_attribute_utils.create_app_attributes
163 (p_blocks => p_blocks,
164 p_attributes => p_attributes,
165 p_deposit_process_id => null,
166 p_retrieval_process_id => p_retrieval_process_id,
167 p_recipients => p_recipients
168 );
169
170 else
171
172 l_app_attributes
173 := hxc_app_attribute_utils.create_app_attributes
174 (p_attributes => p_attributes,
175 p_deposit_process_id => null,
176 p_retrieval_process_id => p_retrieval_process_id
177 );
178 end if;
179
180 hxc_self_service_time_deposit.initialize_globals;
181 hxc_self_service_time_deposit.set_update_phase(true);
182
183
184 hxc_self_service_time_deposit.set_app_hook_params
185 (p_building_blocks
186 => hxc_timecard_block_utils.convert_to_dpwr_blocks(p_blocks),
187 p_app_attributes => l_app_attributes,
188 p_messages => l_messages
189 );
190
191
192 hxc_self_service_time_deposit.set_g_attributes
193 (p_attributes => p_old_style_attrs );
194
195
196 End set_attributes;
197
198 Procedure update_messages
199 (p_messages in out nocopy hxc_message_table_type,
200 p_retrieval_process_id in number) is
201
202 l_messages hxc_self_service_time_deposit.message_table;
203 Begin
204
205 l_messages := hxc_self_service_time_deposit.get_messages;
206 hxc_timecard_message_utils.append_old_messages
207 (p_messages => p_messages,
208 p_old_messages => l_messages,
209 p_retrieval_process_id => p_retrieval_process_id
210 );
211
212 End update_messages;
213
214 procedure update_phase
215 (p_recipients in recipient_application_table,
216 p_blocks in hxc_block_table_type,
217 p_attributes in out nocopy hxc_attribute_table_type,
218 p_old_style_attrs in hxc_self_service_time_deposit.building_block_attribute_info,
219 p_messages in out nocopy hxc_message_table_type,
220 p_deposit_mode in varchar2,
221 p_projects_tr_id in number,
222 p_validate_on_save in varchar2
223 ) is
224
225 l_elp_blocks hxc_block_table_type;
226 l_index pls_integer;
227 l_upd_sql varchar2(2000);
228
229 Begin
230 l_elp_blocks := hxc_block_table_type();
231 l_index := p_recipients.first;
232 Loop
233 Exit when not p_recipients.exists(l_index);
234 if((p_recipients(l_index).application_update_process is not null)
235 AND
236 (p_recipients(l_index).appl_retrieval_process_id is not null)) then
237
238 if((p_deposit_mode <> hxc_timecard.c_save)
239 OR(
240 (p_deposit_mode = hxc_timecard.c_save)
241 AND
242 (p_recipients(l_index).time_recipient_id = p_projects_tr_id)
243 )
244 OR(
245 (p_deposit_mode = hxc_timecard.c_save)
246 AND
247 (p_validate_on_save = hxc_timecard.c_yes)
248 )) then
249
250 set_attributes
251 (p_blocks,
252 p_attributes,
253 p_old_style_attrs,
254 p_recipients(l_index).appl_retrieval_process_id,
255 p_recipients,
256 false
257 );
258
259 l_upd_sql := 'BEGIN '||fnd_global.newline
260 ||p_recipients(l_index).application_update_process ||fnd_global.newline
261 ||'(p_operation => :1);'||fnd_global.newline
262 ||'END;';
263
264 EXECUTE IMMEDIATE l_upd_sql using IN p_deposit_mode;
265
266 update_attributes(p_attributes);
267
268 update_messages
269 (p_messages,
270 p_recipients(l_index).appl_retrieval_process_id
271 );
272
273 end if;
274
275 end if;
276 l_index := p_recipients.next(l_index);
277 End loop;
278
279 End update_phase;
280
281 Procedure validate_phase
282 (p_recipients in recipient_application_table,
283 p_blocks in hxc_block_table_type,
284 p_attributes in out nocopy hxc_attribute_table_type,
285 p_old_style_attrs in hxc_self_service_time_deposit.building_block_attribute_info,
286 p_messages in out nocopy hxc_message_table_type,
287 p_deposit_mode in varchar2,
288 p_elp_terg_id in number,
289 p_projects_tr_id in number,
290 p_validate_on_save in varchar2
291 ) is
292
293 l_elp_blocks hxc_block_table_type;
294 l_index pls_integer;
295 l_val_sql varchar2(2000);
296 l_elp_enabled boolean := false;
297
298 Begin
299
300 l_index := p_recipients.first;
301 Loop
302 Exit when not p_recipients.exists(l_index);
303
304 if((p_recipients(l_index).appl_validation_process is not null)
305 AND
306 (p_recipients(l_index).appl_retrieval_process_id is not null))then
307
308 if((p_deposit_mode <> hxc_timecard.c_save)
309 OR(
310 (p_deposit_mode = hxc_timecard.c_save)
311 AND
312 (p_recipients(l_index).time_recipient_id = p_projects_tr_id)
313 )
314 OR((p_deposit_mode = hxc_timecard.c_save)
315 AND
316 (p_validate_on_save = hxc_timecard.c_yes)
317 )) then
318
319 if(p_elp_terg_id is not null) then
320 l_elp_blocks := hxc_elp_utils.build_elp_objects
321 (p_elp_time_building_blocks => p_blocks,
322 p_elp_time_attributes => p_attributes,
323 p_time_recipient_id => p_recipients(l_index).time_recipient_id
324 );
325 l_elp_enabled := true;
326 else
327 l_elp_blocks := p_blocks;
328 end if;
329
330 set_attributes
331 (l_elp_blocks,
332 p_attributes,
333 p_old_style_attrs,
334 p_recipients(l_index).appl_retrieval_process_id,
335 p_recipients,
336 l_elp_enabled
337 );
338
339 l_val_sql := 'BEGIN '||fnd_global.newline
340 ||p_recipients(l_index).appl_validation_process ||fnd_global.newline
341 ||'(p_operation => :1);'||fnd_global.newline
342 ||'END;';
343
344 EXECUTE IMMEDIATE l_val_sql using IN p_deposit_mode;
345
346 update_messages
347 (p_messages,
348 p_recipients(l_index).appl_retrieval_process_id
349 );
350
351 end if; -- is this save and PA? or non-save?
352
353 end if;
354 l_index := p_recipients.next(l_index);
355 End loop;
356
357 End validate_phase;
358
359 Function template_name_exists
360 (p_resource_id in number,
361 p_name_to_check in varchar2,
362 p_time_building_block_id in number,
363 p_template_type in varchar2,
364 p_business_group_id in varchar2
365 )
366 Return boolean is
367
368 cursor c_is_dynamic_template
369 (p_name_to_check in varchar2) is
370 select 'Y'
371 from hr_lookups
372 where lookup_type = 'HXC_DYNAMIC_TEMPLATES'
373 and meaning = p_name_to_check;
374
375 cursor c_is_private_template
376 (p_name_to_check in varchar2,
377 p_resoure_id in number,
378 p_time_building_block_id in number
379 ) is
380 select 'Y'
381 from hxc_template_summary
382 where template_type = 'PRIVATE'
383 and template_id <> p_time_building_block_id
384 and template_name = p_name_to_check
385 and resource_id = p_resource_id;
386
387 cursor c_is_public_template
388 (p_name_to_check in varchar2,
389 p_time_building_block_id in number,
390 p_business_group_id in varchar2) is
391 select 'Y'
392 from hxc_template_summary
393 where template_type = 'PUBLIC'
394 and template_id <> p_time_building_block_id
395 and template_name = p_name_to_check
396 and business_group_id =p_business_group_id ;
397
398 l_dummy varchar2(2);
399 value boolean := false;
400
401 Begin
402
403 open c_is_dynamic_template(p_name_to_check);
404 fetch c_is_dynamic_template into l_dummy;
405 if c_is_dynamic_template%NOTFOUND then
406 close c_is_dynamic_template;
407 if(p_template_type = 'PRIVATE') THEN
408 open c_is_private_template(p_name_to_check,p_resource_id,p_time_building_block_id);
409 fetch c_is_private_template into l_dummy;
410 if c_is_private_template%NOTFOUND then
411 close c_is_private_template;
412 else
413 close c_is_private_template;
414 value:=true;
415 end if;
416 elsif(p_template_type = 'PUBLIC') THEN
417 open c_is_public_template(p_name_to_check,p_time_building_block_id,p_business_group_id);
418 fetch c_is_public_template into l_dummy;
419 if c_is_public_template%NOTFOUND then
420 close c_is_public_template;
421 else
422 close c_is_public_template;
423 value:=true;
424 end if;
425 end if;
426 else
427 close c_is_dynamic_template;
428 value := true;
429 end if;
430
431 return value;
432
433 end template_name_exists;
434
435 Procedure template_validation
436 (p_blocks in out nocopy hxc_block_table_type,
437 p_attributes in out nocopy hxc_attribute_table_type,
438 p_messages in out nocopy hxc_message_table_type,
439 p_can_deposit out nocopy boolean
440 ) is
441
442 l_template_index number;
443 l_template_name hxc_time_attributes.attribute1%type;
444 l_security_index number;
445 l_business_group_id hxc_time_attributes.attribute1%type;
446
447 Begin
448
449 p_can_deposit := true;
450 l_template_index := hxc_timecard_attribute_utils.get_attribute_index
451 (p_attributes,
452 hxc_timecard.c_template_attribute,
453 null
454 );
455 l_security_index := hxc_timecard_attribute_utils.get_attribute_index
456 (p_attributes,
457 hxc_timecard.c_security_attribute,
458 null
459 );
460
461 l_template_name := p_attributes(l_template_index).attribute1;
462 l_business_group_id := p_attributes(l_security_index).attribute2;
463
464 if(template_name_exists
465 (p_blocks(1).resource_id
466 ,l_template_name
467 ,p_attributes(l_template_index).building_block_id
468 ,p_attributes(l_template_index).attribute2,
469 l_business_group_id)) then
470
471 p_can_deposit := false;
472
473 hxc_timecard_message_helper.addErrorToCollection
474 (p_messages,
475 'HXC_366204_TEMPLATE_NAME',
476 hxc_timecard.c_error,
477 null,
478 'TEMPLATE_NAME&'||l_template_name,
479 hxc_timecard.c_hxc,
480 null,
481 null,
482 null,
483 null
484 );
485
486 End if;
487
488 End template_validation;
489
490 Procedure change_late_audit_validation
491 (p_old_style_blks in hxc_self_service_time_deposit.timecard_info,
492 p_old_style_attrs in hxc_self_service_time_deposit.building_block_attribute_info,
493 p_props in hxc_timecard_prop_table_type,
494 p_eval_start_date in date,
495 p_eval_end_date in date,
496 p_messages in out nocopy hxc_message_table_type
497 ) is
498
499 l_cla_terg_id number;
500 l_old_messages hxc_self_service_time_deposit.message_table;
501
502 Begin
503
504 l_cla_terg_id := to_number(
505 hxc_timecard_properties.find_property_value
506 (p_props,
507 'TsPerAuditRequirementsAuditRequirements',
508 null,
509 null,
510 p_eval_start_date,
511 p_eval_end_date
512 ));
513
514 if(l_cla_terg_id is not null) then
515 hxc_time_entry_rules_utils_pkg.execute_cla_time_entry_rules
516 (p_time_building_blocks => p_old_style_blks,
517 p_time_attributes => p_old_style_attrs,
518 p_messages => l_old_messages,
519 p_time_entry_rule_group_id => l_cla_terg_id
520 );
521
522 hxc_timecard_message_utils.append_old_messages
523 (p_messages => p_messages,
524 p_old_messages => l_old_messages,
525 p_retrieval_process_id => null
526 );
527 end if;
528
529 End change_late_audit_validation;
530
531 Procedure recipients_update_validation
532 (p_blocks in out nocopy hxc_block_table_type,
533 p_attributes in out nocopy hxc_attribute_table_type,
534 p_old_style_blks in hxc_self_service_time_deposit.timecard_info,
535 p_old_style_attrs in hxc_self_service_time_deposit.building_block_attribute_info,
536 p_props in hxc_timecard_prop_table_type,
537 p_eval_date in date,
538 p_deposit_mode in varchar2,
539 p_resubmit in varchar2,
540 p_messages in out nocopy hxc_message_table_type
541 ) is
542
543 cursor c_pa_tr_id is
544 select time_recipient_id
545 from hxc_time_recipients
546 where upper(name) = 'PROJECTS';
547
548 l_application_set_id number;
549 l_elp_terg_id number;
550 l_eval_date date;
551 l_appl_recipients recipient_application_table;
552 l_old_messages hxc_self_service_time_deposit.message_table;
553 l_otm_attributes hxc_self_service_time_deposit.app_attributes_info;
554 l_timecard_start_time date;
555 l_timecard_stop_time date;
556 l_projects_tr_id number;
557 l_validate_on_save hxc_pref_hierarchies.attribute1%type;
558 l_app_attributes hxc_self_service_time_deposit.app_attributes_info;
559 l_messages hxc_self_service_time_deposit.message_table;
560
561 Begin
562
563 open c_pa_tr_id;
564 fetch c_pa_tr_id into l_projects_tr_id;
565 close c_pa_tr_id;
566
567 l_timecard_start_time :=
568 hxc_timecard_block_utils.date_value
569 (p_blocks(hxc_timecard_block_utils.find_active_timecard_index(p_blocks)).start_time);
570 l_timecard_stop_time:=
571 hxc_timecard_block_utils.date_value
572 (p_blocks(hxc_timecard_block_utils.find_active_timecard_index(p_blocks)).stop_time);
573
574
575 l_application_set_id := to_number
576 (hxc_timecard_properties.find_property_value
577 (p_props,
578 'TsPerApplicationSetTsApplicationSet',
579 null,
580 null,
581 l_timecard_start_time,
582 l_timecard_stop_time
583 ));
584
585 l_validate_on_save :=
586 hxc_timecard_properties.find_property_value
587 (p_props,
588 'TsPerValidateOnSaveValidateOnSave',
589 null,
590 null,
591 l_timecard_start_time,
592 l_timecard_stop_time
593 );
594
595 if(l_validate_on_save is null) then
596 l_validate_on_save := hxc_timecard.c_no;
597 end if;
598
599 l_appl_recipients := recipients(l_application_set_id);
600
601 if(l_appl_recipients.count>0) then
602
603 hxc_app_attribute_utils.cache_mappings;
604
605 update_phase
606 (l_appl_recipients,
607 p_blocks,
608 p_attributes,
609 p_old_style_attrs,
610 p_messages,
611 p_deposit_mode,
612 l_projects_tr_id,
613 l_validate_on_save
614 );
615
616 l_elp_terg_id := to_number
617 (hxc_timecard_properties.find_property_value
618 (p_props,
619 'TsPerElpRulesElpTimeEntryRuleGroup',
620 null,
621 null,
622 l_timecard_start_time,
623 l_timecard_stop_time
624 ));
625
626 hxc_time_category_utils_pkg.push_timecard
627 (p_blocks,
628 p_attributes);
629
630 if(l_elp_terg_id is not null) then
631 hxc_time_entry_rules_utils_pkg.execute_elp_time_entry_rules
632 (p_time_building_blocks => p_blocks,
633 p_time_attributes => p_attributes,
634 p_messages => l_old_messages,
635 p_time_entry_rule_group_id => l_elp_terg_id
636 );
637 end if;
638
639 hxc_elp_utils.set_time_bb_appl_set_id
640 (p_time_building_blocks => p_blocks,
641 p_time_attributes => p_attributes,
642 p_messages => l_old_messages,
643 p_pte_terg_id => l_elp_terg_id,
644 p_application_set_id => l_application_set_id
645 );
646
647 hxc_timecard_message_utils.append_old_messages
648 (p_messages => p_messages,
649 p_old_messages => l_old_messages,
650 p_retrieval_process_id => null
651 );
652
653 validate_phase
654 (l_appl_recipients,
655 p_blocks,
656 p_attributes,
657 p_old_style_attrs,
658 p_messages,
659 p_deposit_mode,
660 l_elp_terg_id,
661 l_projects_tr_id,
662 l_validate_on_save
663 );
664
665 end if;
666
667 l_old_messages.delete;
668
669 -- GPM v115.12 WWB 3470294
670 -- set the bld blks and app attribute structures to show the non
671 -- non filtered ELP structures
672 -- ARR 115.25 Now use this l_app_attributes structure of the otm
673 -- validation as well, since TERs do not change the values in here
674 --
675
676 l_app_attributes := get_otm_app_attributes
677 (p_attributes,
678 p_messages);
679
680 -- GPM v115.12 WWB 3470294
681
682
683 -- GPM v115.26 start
684 -- added calls to set_update_phase and set_g_attributes
685 -- otherwise g_attributes and g_timecard are not available to
686 -- TER when no recipient validation is called
687
688 hxc_self_service_time_deposit.set_update_phase(true);
689
690 hxc_self_service_time_deposit.set_app_hook_params
691 (p_building_blocks => p_old_style_blks
692 ,p_app_attributes => l_app_attributes
693 ,p_messages => l_messages );
694
695 hxc_self_service_time_deposit.set_update_phase(false);
696
697 hxc_self_service_time_deposit.set_g_attributes
698 ( p_attributes => p_old_style_attrs );
699
700 -- GPM v115.26 end
701
702 hxc_time_entry_rules_utils_pkg.execute_time_entry_rules
703 (p_operation => p_deposit_mode,
704 p_time_building_blocks => p_old_style_blks,
705 p_time_attributes => p_old_style_attrs,
706 p_messages => l_old_messages,
707 p_resubmit => p_resubmit,
708 p_blocks => p_blocks,
709 p_attributes => p_attributes
710 );
711
712 hxc_timecard_message_utils.append_old_messages
713 (p_messages => p_messages,
714 p_old_messages => l_old_messages,
715 p_retrieval_process_id => null
716 );
717
718 --
719 -- Now include the OTM validation, which was included in the set up
720 -- validation called previously.
721 --
722 l_old_messages.delete;
723
724 hxt_hxc_retrieval_process.otlr_validation_required
725 (p_operation => p_deposit_mode,
726 p_otm_explosion => hxc_timecard_properties.find_property_value
727 (p_props,
728 'TcWRulesEvaluationRulesEvaluation',
729 null,
730 null,
731 p_eval_date
732 ),
733 p_otm_rtr_id => hxc_timecard_properties.find_property_value
734 (p_props,
735 'TcWRulesEvaluationAppRulesEvaluation',
736 null,
737 null,
738 p_eval_date
739 ),
740 p_app_set_id => l_application_set_id,
741 p_timecard_id => p_blocks(hxc_timecard_block_utils.find_active_timecard_index(p_blocks)).time_building_block_id,
742 p_timecard_ovn => p_blocks(hxc_timecard_block_utils.find_active_timecard_index(p_blocks)).object_version_number,
743 p_time_building_blocks => p_old_style_blks,
744 p_time_att_info => l_app_attributes,
745 p_messages => l_old_messages
746 );
747
748 hxc_timecard_message_utils.append_old_messages
749 (p_messages => p_messages,
750 p_old_messages => l_old_messages,
751 p_retrieval_process_id => null
752 );
753
754 End recipients_update_validation;
755
756 Procedure recipients_update_validation
757 (p_blocks in out nocopy hxc_block_table_type,
758 p_attributes in out nocopy hxc_attribute_table_type,
759 p_messages in out nocopy hxc_message_table_type,
760 p_props in hxc_timecard_prop_table_type,
761 p_deposit_mode in varchar2,
762 p_resubmit in varchar2
763 ) is
764
765 l_eval_date date;
766 l_old_style_blks HXC_SELF_SERVICE_TIME_DEPOSIT.timecard_info;
767 l_old_style_attrs hxc_self_service_time_deposit.building_block_attribute_info;
768
769 Begin
770 l_old_style_blks := HXC_TIMECARD_BLOCK_UTILS.convert_to_dpwr_blocks(p_blocks);
771 l_old_style_attrs := HXC_TIMECARD_ATTRIBUTE_UTILS.convert_to_dpwr_attributes(p_attributes);
772 l_eval_date := fnd_date.canonical_to_date(p_blocks(hxc_timecard_block_utils.find_active_timecard_index(p_blocks)).start_time);
773
774 recipients_update_validation
775 (p_blocks => p_blocks,
776 p_attributes => p_attributes,
777 p_old_style_blks => l_old_style_blks,
778 p_old_style_attrs => l_old_style_attrs,
779 p_props => p_props,
780 p_eval_date => l_eval_date,
781 p_deposit_mode => p_deposit_mode,
782 p_resubmit => p_resubmit,
783 p_messages => p_messages
784 );
785
786 End recipients_update_validation;
787
788 Procedure data_set_validation
789 (p_blocks in out nocopy hxc_block_table_type,
790 p_messages in out nocopy hxc_message_table_type
791 ) is
792
793 cursor c_data_set( p_stop_time date) is
794 select 1
795 from hxc_data_sets d
796 where p_stop_time between d.start_date and d.end_date
797 and status in ('OFF_LINE','BACKUP_IN_PROGRESS','RESTORE_IN_PROGRESS');
798
799 l_timecard_start_time date;
800 l_timecard_stop_time date;
801 l_dummy number;
802
803 Begin
804
805 l_timecard_start_time := hxc_timecard_block_utils.date_value
806 (p_blocks(hxc_timecard_block_utils.find_active_timecard_index(p_blocks)).start_time);
807
808 l_timecard_stop_time := hxc_timecard_block_utils.date_value
809 (p_blocks(hxc_timecard_block_utils.find_active_timecard_index(p_blocks)).stop_time);
810
811 open c_data_set(l_timecard_stop_time);
812 fetch c_data_set into l_dummy;
813 if c_data_set%found then
814 close c_data_set;
815 hxc_timecard_message_helper.addErrorToCollection
816 (p_messages,
817 'HXC_TC_OFFLINE_PERIOD_CONFLICT',
818 hxc_timecard.c_error,
819 null,
820 null,
821 hxc_timecard.c_hxc,
822 p_blocks(hxc_timecard_block_utils.find_active_timecard_index(p_blocks)).time_building_block_id,
823 p_blocks(hxc_timecard_block_utils.find_active_timecard_index(p_blocks)).object_version_number,
824 null,
825 null
826 );
827 else
828 close c_data_set;
829 end if;
830 End data_set_validation;
831
832 Procedure timecard_validation
833 (p_blocks in out nocopy hxc_block_table_type,
834 p_attributes in out nocopy hxc_attribute_table_type,
835 p_messages in out nocopy hxc_message_table_type,
836 p_props in hxc_timecard_prop_table_type,
837 p_deposit_mode in varchar2,
838 p_resubmit in varchar2
839 ) is
840
841 l_tc_start_date date;
842 l_tc_end_date date;
843 l_old_style_blks HXC_SELF_SERVICE_TIME_DEPOSIT.timecard_info;
844 l_old_style_attrs hxc_self_service_time_deposit.building_block_attribute_info;
845
846 Begin
847 l_old_style_blks := HXC_TIMECARD_BLOCK_UTILS.convert_to_dpwr_blocks
848 (p_blocks);
849
850 l_old_style_attrs := HXC_TIMECARD_ATTRIBUTE_UTILS.convert_to_dpwr_attributes
851 (p_attributes);
852
853 l_tc_start_date:= fnd_date.canonical_to_date
854 (p_blocks(hxc_timecard_block_utils.find_active_timecard_index(p_blocks)).start_time);
855 l_tc_end_date := fnd_date.canonical_to_date
856 (p_blocks(hxc_timecard_block_utils.find_active_timecard_index(p_blocks)).stop_time);
857
858 recipients_update_validation
859 (p_blocks => p_blocks,
860 p_attributes => p_attributes,
861 p_old_style_blks => l_old_style_blks,
862 p_old_style_attrs => l_old_style_attrs,
863 p_props => p_props,
864 p_eval_date => l_tc_start_date,
865 p_deposit_mode => p_deposit_mode,
866 p_resubmit => p_resubmit,
867 p_messages => p_messages
868 );
869
870 change_late_audit_validation
871 (p_old_style_blks => l_old_style_blks,
872 p_old_style_attrs => l_old_style_attrs,
873 p_props => p_props,
874 p_eval_start_date => l_tc_start_date,
875 p_eval_end_date => l_tc_end_date,
876 p_messages => p_messages
877 );
878
879 data_set_validation
880 (p_blocks => p_blocks,
881 p_messages => p_messages
882 );
883
884 End timecard_validation;
885
886 procedure deposit_validation
887 (p_blocks in out nocopy hxc_block_table_type,
888 p_attributes in out nocopy hxc_attribute_table_type,
889 p_messages in out nocopy hxc_message_table_type,
890 p_props in hxc_timecard_prop_table_type,
891 p_deposit_mode in varchar2,
892 p_template in varchar2,
893 p_resubmit in varchar2,
894 p_can_deposit out nocopy boolean
895 ) is
896
897 Begin
898
899 if(p_template = 'Y') then
900 if(p_deposit_mode <> hxc_timecard.c_delete) then
901 template_validation
902 (p_blocks => p_blocks,
903 p_attributes => p_attributes,
904 p_messages => p_messages,
905 p_can_deposit=> p_can_deposit
906 );
907 end if;
908 else
909 timecard_validation
910 (p_blocks => p_blocks,
911 p_attributes => p_attributes,
912 p_messages => p_messages,
913 p_props => p_props,
914 p_deposit_mode => p_deposit_mode,
915 p_resubmit => p_resubmit
916 );
917 end if;
918
919 End deposit_validation;
920
921 end hxc_timecard_validation;