[Home] [Help]
PACKAGE BODY: APPS.HXC_TC_AP_LINKS_PKG
Source
1 package body hxc_tc_ap_links_pkg as
2 /* $Header: hxctalsum.pkb 115.1 2004/06/08 17:50:51 arundell noship $ */
3
4
5 procedure insert_summary_row(p_timecard_id in hxc_time_building_blocks.time_building_block_id%type
6 ,p_application_period_id in hxc_time_building_blocks.time_building_block_id%type) is
7
8 begin
9
10 insert into hxc_tc_ap_links
11 (timecard_id
12 ,application_period_id
13 )
14 values
15 (p_timecard_id
16 ,p_application_period_id
17 );
18
19 end insert_summary_row;
20
21 procedure delete_summary_row(p_timecard_id in hxc_time_building_blocks.time_building_block_id%type
22 ,p_application_period_id in hxc_time_building_blocks.time_building_block_id%type) is
23
24
25 begin
26
27 delete from hxc_tc_ap_links
28 where timecard_id = p_timecard_id
29 and application_period_id = p_application_period_id;
30
31 end delete_summary_row;
32
33 procedure remove_timecard_links
34 (p_timecard_id in hxc_time_building_blocks.time_building_block_id%type) is
35
36 begin
37
38 delete from hxc_tc_ap_links where timecard_id = p_timecard_id;
39
40 end remove_timecard_links;
41
42 procedure create_timecard_links
43 (p_timecard_id in hxc_time_building_blocks.time_building_block_id%type) is
44
45 cursor c_timecard_info(p_id in hxc_time_building_blocks.time_building_block_id%type) is
46 select resource_id
47 ,start_time
48 ,stop_time
49 from hxc_timecard_summary
50 where timecard_id = p_id;
51
52 cursor c_app_periods(p_resource_id in hxc_time_building_blocks.resource_id%type
53 ,p_start_time in hxc_time_building_blocks.start_time%type
54 ,p_stop_time in hxc_time_building_blocks.stop_time%type
55 ) is
56 select application_period_id
57 from hxc_app_period_summary
58 where resource_id = p_resource_id
59 and start_time <= p_stop_time
60 and stop_time >= p_start_time;
61
62 l_resource_id hxc_timecard_summary.resource_id%type;
63 l_start_time hxc_timecard_summary.start_time%type;
64 l_stop_time hxc_timecard_summary.stop_time%type;
65
66 begin
67
68 --
69 -- 1. Remove existing links
70 --
71
72 remove_timecard_links(p_timecard_id);
73
74 --
75 -- 2. Find timecard information
76 --
77
78 open c_timecard_info(p_timecard_id);
79 fetch c_timecard_info into l_resource_id, l_start_time, l_stop_time;
80 if(c_timecard_info%notfound) then
81 close c_timecard_info;
82 fnd_message.set_name('HXC','HXC_NO_TC_SUMMARY');
83 fnd_message.raise_error;
84 end if;
85 close c_timecard_info;
86
87 --
88 -- 3. Find corresponding application period info, and create link
89 --
90
91 for app_rec in c_app_periods(l_resource_id,l_start_time,l_stop_time) loop
92
93 insert_summary_row(p_timecard_id,app_rec.application_period_id);
94
95 end loop;
96
97 end create_timecard_links;
98
99 procedure remove_app_period_links
100 (p_application_period_id in hxc_tc_ap_links.application_period_id%type) is
101
102 Begin
103
104 delete from hxc_tc_ap_links
105 where application_period_id = p_application_period_id;
106
107 End remove_app_period_links;
108
109
110 procedure create_app_period_links
111 (p_application_period_id in hxc_tc_ap_links.application_period_id%type) is
112
113 cursor c_app_period_info(p_id in hxc_time_building_blocks.time_building_block_id%type) is
114 select resource_id
115 ,start_time
116 ,stop_time
117 from hxc_app_period_summary
118 where application_period_id = p_id;
119
120 cursor c_timecards(p_resource_id in hxc_time_building_blocks.resource_id%type
121 ,p_start_time in hxc_time_building_blocks.start_time%type
122 ,p_stop_time in hxc_time_building_blocks.stop_time%type
123 ) is
124 select timecard_id
125 from hxc_timecard_summary
126 where resource_id = p_resource_id
127 and start_time <= p_stop_time
128 and stop_time >= p_start_time;
129
130 l_resource_id hxc_timecard_summary.resource_id%type;
131 l_start_time hxc_timecard_summary.start_time%type;
132 l_stop_time hxc_timecard_summary.stop_time%type;
133
134 begin
135 --
136 -- 1. Remove the existing application period links
137 --
138 remove_app_period_links
139 (p_application_period_id => p_application_period_id);
140 --
141 -- 2. Find application period information
142 --
143 open c_app_period_info(p_application_period_id);
144 fetch c_app_period_info into l_resource_id, l_start_time, l_stop_time;
145 if(c_app_period_info%found) then
146
147 --
148 -- 3. Find corresponding application period info, and create link
149 --
150
151 for tc_rec in c_timecards(l_resource_id,l_start_time,l_stop_time) loop
152
153 insert_summary_row(tc_rec.timecard_id,p_application_period_id);
154
155 end loop;
156
157 end if;
158 close c_app_period_info;
159
160 end create_app_period_links;
161
162 end hxc_tc_ap_links_pkg;