DBA Data[Home] [Help]

PACKAGE BODY: APPS.JTA_CAL_APPOINTMENT_PVT

Source


1 PACKAGE BODY jta_cal_appointment_pvt AS
2 /* $Header: jtavcab.pls 120.1 2005/07/02 02:24:26 appldev ship $ */
3 
4  PROCEDURE get_alarm_start (p_task_id IN NUMBER,
5                             x_alarm_start OUT NOCOPY NUMBER,
6                             x_planned_start_date OUT NOCOPY DATE)
7   IS
8     CURSOR c_alarm IS
9    select alarm_start, planned_start_date
10      from jtf_tasks_b t
11    where t.task_id = p_task_id;
12 
13    l_alarm c_alarm%ROWTYPE;
14    BEGIN
15      OPEN c_alarm;
16      FETCH c_alarm INTO l_alarm;
17      IF c_alarm%NOTFOUND THEN
18        CLOSE c_alarm;
19        fnd_message.set_name ('JTF', 'JTF_INVALID_TASK_ID');
20        fnd_msg_pub.add;
21        RAISE fnd_api.g_exc_unexpected_error;
22      ELSE
23       CLOSE c_alarm;
24       x_alarm_start := l_alarm.alarm_start;
25       x_planned_start_date := l_alarm.planned_start_date;
26 
27     END IF;
28   END;
29 
30 FUNCTION is_valid_alarm(p_alarm_start IN NUMBER)
31   RETURN BOOLEAN
32   IS
33   BEGIN
34     IF p_alarm_start <> 0 AND p_alarm_start <> 5 AND p_alarm_start <> 10
35       AND p_alarm_start <> 15  AND p_alarm_start <> 30
36       AND p_alarm_start <> 60 AND p_alarm_start <> 120 AND p_alarm_start <> 1440
37       AND p_alarm_start <> 2880 AND p_alarm_start <> 4320 AND p_alarm_start <> 10080
38      THEN
39       RETURN FALSE;
40     END IF;
41     RETURN TRUE;
42   END;
43 
44 /*
45 Bug # 4190108, amigupta, Created one overloaded method which takes one parameter free_busy_type
46 */
47 PROCEDURE create_appointment (
48         p_task_name               IN       VARCHAR2,
49         p_task_type_id            IN       NUMBER,
50         p_description             IN       VARCHAR2,
51         p_task_priority_id        IN       NUMBER,
52         p_owner_type_code         IN       VARCHAR2,
53         p_owner_id                IN       NUMBER,
54         p_planned_start_date      IN       DATE,
55         p_planned_end_date        IN       DATE,
56         p_timezone_id             IN       NUMBER,
57         p_private_flag            IN       VARCHAR2,
58         p_alarm_start             IN       NUMBER,
59         p_alarm_on                IN       VARCHAR2,
60         p_category_id             IN       NUMBER,
61         x_return_status           OUT   NOCOPY   VARCHAR2,
65     l_api_version    CONSTANT NUMBER	   := 1.0;
62         x_task_id                 OUT   NOCOPY   NUMBER
63    )
64  IS
66     l_api_name	 CONSTANT VARCHAR2(30) := 'CREATE_APPOINTMENT';
67     BEGIN
68     SAVEPOINT create_appointment;
69     x_return_status := fnd_api.g_ret_sts_success;
70 
71      -- call new version, passing defaults for new functionality
72     create_appointment (
73         p_task_name              =>  p_task_name,
74         p_task_type_id           =>  p_task_type_id ,
75         p_description            =>  p_description ,
76         p_task_priority_id       =>  p_task_priority_id,
77         p_owner_type_code        =>  p_owner_type_code,
78         p_owner_id               =>  p_owner_id ,
79         p_planned_start_date     =>  p_planned_start_date,
80         p_planned_end_date       =>  p_planned_end_date ,
81         p_timezone_id            =>  p_timezone_id ,
82         p_private_flag           =>  p_private_flag ,
83         p_alarm_start            =>  p_alarm_start,
84         p_alarm_on               =>  p_alarm_on ,
85         p_category_id            =>  p_category_id ,
86 	p_free_busy_type         => 'BUSY',
87         x_return_status          =>  x_return_status,
88         x_task_id                =>  x_task_id
89    );
90 
91       IF NOT (x_return_status = fnd_api.g_ret_sts_success)
92       THEN
93      x_return_status := fnd_api.g_ret_sts_unexp_error;
94      RAISE fnd_api.g_exc_unexpected_error;
95       END IF;
96 
97     EXCEPTION
98     WHEN fnd_api.g_exc_unexpected_error
99     THEN
100 	ROLLBACK TO create_appointment;
101 	x_return_status := fnd_api.g_ret_sts_unexp_error;
102     WHEN OTHERS
103     THEN
104 	ROLLBACK TO create_appointment;
105 	x_return_status := fnd_api.g_ret_sts_unexp_error;
106     END;
107 
108  PROCEDURE create_appointment (
109         p_task_name               IN       VARCHAR2,
110         p_task_type_id            IN       NUMBER,
111         p_description             IN       VARCHAR2,
112         p_task_priority_id        IN       NUMBER,
113         p_owner_type_code         IN       VARCHAR2,
114         p_owner_id                IN       NUMBER,
115         p_planned_start_date      IN       DATE,
116         p_planned_end_date        IN       DATE,
117         p_timezone_id             IN       NUMBER,
118         p_private_flag            IN       VARCHAR2,
119         p_alarm_start             IN       NUMBER,
120         p_alarm_on                IN       VARCHAR2,
121         p_category_id             IN       NUMBER,
122 	p_free_busy_type          IN       VARCHAR2,
123         x_return_status           OUT   NOCOPY   VARCHAR2,
124         x_task_id                 OUT   NOCOPY   NUMBER
125    )
126    IS
127     l_msg_count   NUMBER;
128     l_msg_data   VARCHAR2(2000);
129    BEGIN
130 
131    fnd_msg_pub.initialize;
132    jtf_tasks_pvt.create_task(
133        p_api_version             => 1.0,
134        p_task_name               => p_task_name,
135        p_task_type_id            => p_task_type_id,
136        p_task_status_id          => 3, -- Accepted
137        p_description             => p_description,
138        p_task_priority_id        => p_task_priority_id ,
139        p_owner_type_code         => p_owner_type_code,
140        p_owner_id                => p_owner_id,
141        p_planned_start_date      => p_planned_start_date ,
142        p_planned_end_date        => p_planned_end_date,
143        p_timezone_id             => p_timezone_id,
144        p_source_object_type_code => 'APPOINTMENT',
145        p_private_flag            => p_private_flag,
146        p_workflow_process_id     => 0,
147        p_alarm_start             => p_alarm_start,
148        p_alarm_on                => p_alarm_on,
149        p_alarm_interval_uom      => 'min',
150        x_return_status           => x_return_status,
151        x_msg_count               => l_msg_count,
152        x_msg_data                => l_msg_data,
153        x_task_id                 => x_task_id,
154        p_date_selected           => 'P',
155        p_category_id             => p_category_id,
156        p_show_on_calendar        => 'Y',
157        p_owner_status_id         => 3,--Accepted
158        p_enable_workflow         => 'N',
159        p_abort_workflow          => 'N',
160        p_entity                  => 'APPOINTMENT',
164     IF x_return_status = fnd_api.g_ret_sts_success AND p_alarm_start > 0
161        p_free_busy_type          => p_free_busy_type
162         ) ;
163 
165        AND is_valid_alarm(p_alarm_start) THEN
166            jtf_cal_wf_pvt.startreminders(
167             p_api_version   => 1.0,
168             p_commit        => 'T',
169             x_return_status => x_return_status,
170             x_msg_count     => l_msg_count,
171             x_msg_data      => l_msg_data,
172             p_invitor       => p_owner_id,
173             p_taskid        => x_task_id,
174             p_reminddate    => p_planned_start_date - p_alarm_start/1440
175           );
176      END IF;
177  END;
178 
179 /*
180 Bug # 4190108, amigupta, Created one overloaded method which takes one parameter free_busy_type
181 */
182 
183 PROCEDURE update_appointment (
184         p_object_version_number   IN   OUT NOCOPY NUMBER ,
185         p_task_id                 IN       NUMBER,
186         p_task_name               IN       VARCHAR2,
187         p_task_type_id            IN       NUMBER,
188         p_description             IN       VARCHAR2,
189         p_task_priority_id        IN       NUMBER,
190         p_planned_start_date      IN       DATE,
191         p_planned_end_date        IN       DATE,
192         p_timezone_id             IN       NUMBER,
193         p_private_flag            IN       VARCHAR2,
194         p_alarm_start             IN       NUMBER,
195         p_alarm_on                IN       VARCHAR2,
196         p_category_id             IN       NUMBER,
197     	p_change_mode             IN       VARCHAR2,
198         x_return_status           OUT  NOCOPY VARCHAR2
199    )
200  IS
201     l_api_version    CONSTANT NUMBER	   := 1.0;
202     l_api_name	 CONSTANT VARCHAR2(30) := 'UPDATE_APPOINTMENT';
203     BEGIN
204     SAVEPOINT update_appointment;
205     x_return_status := fnd_api.g_ret_sts_success;
206 
207 
208     -- call new version, passing defaults for new functionality
209     update_appointment (
210        p_object_version_number    => p_object_version_number,
211        p_task_id                  => p_task_id ,
212        p_task_name                => p_task_name,
213        p_task_type_id             => p_task_type_id,
214        p_description              => p_description,
215        p_task_priority_id         => p_task_priority_id  ,
216        p_planned_start_date       => p_planned_start_date ,
217        p_planned_end_date         => p_planned_end_date,
218        p_timezone_id              => p_timezone_id   ,
219        p_private_flag             => p_private_flag  ,
220        p_alarm_start              => p_alarm_start  ,
221        p_alarm_on                 => p_alarm_on   ,
222        p_category_id              => p_category_id  ,
223        p_free_busy_type           => 'BUSY' ,
224        p_change_mode              => p_change_mode ,
225        x_return_status            => x_return_status
226    );
227 
228       IF NOT (x_return_status = fnd_api.g_ret_sts_success)
229       THEN
230      x_return_status := fnd_api.g_ret_sts_unexp_error;
231      RAISE fnd_api.g_exc_unexpected_error;
232       END IF;
233 
234     EXCEPTION
235     WHEN fnd_api.g_exc_unexpected_error
236     THEN
237 	ROLLBACK TO update_appointment;
238 	x_return_status := fnd_api.g_ret_sts_unexp_error;
239     WHEN OTHERS
240     THEN
241 	ROLLBACK TO update_appointment;
242 	x_return_status := fnd_api.g_ret_sts_unexp_error;
243     END;
244 
245 
246  PROCEDURE update_appointment (
247         p_object_version_number   IN   OUT NOCOPY NUMBER ,
248         p_task_id                 IN       NUMBER,
249         p_task_name               IN       VARCHAR2,
250         p_task_type_id            IN       NUMBER,
251         p_description             IN       VARCHAR2,
252         p_task_priority_id        IN       NUMBER,
253         p_planned_start_date      IN       DATE,
254         p_planned_end_date        IN       DATE,
255         p_timezone_id             IN       NUMBER,
256         p_private_flag            IN       VARCHAR2,
257         p_alarm_start             IN       NUMBER,
258         p_alarm_on                IN       VARCHAR2,
259         p_category_id             IN       NUMBER,
260         p_free_busy_type          IN       VARCHAR2,
261         p_change_mode             IN       VARCHAR2,
262         x_return_status           OUT  NOCOPY VARCHAR2
263 
264    )
265    IS
266     l_msg_count   NUMBER;
267     l_msg_data   VARCHAR2(2000);
268     l_alarm_start NUMBER;
269     l_planned_start_date DATE;
270     l_remind_date DATE;
271    BEGIN
272    fnd_msg_pub.initialize;
273    get_alarm_start(p_task_id, l_alarm_start, l_planned_start_date);
274    jtf_tasks_pvt.update_task(
275        p_api_version                   => 1.0,
276        p_object_version_number         => p_object_version_number,
277        p_task_id                       => p_task_id,
278        p_task_name                     => p_task_name,
279        p_task_type_id                  => p_task_type_id,
280        p_description                   => p_description,
284        p_timezone_id                   => p_timezone_id,
281        p_task_priority_id              => p_task_priority_id,
282        p_planned_start_date            => p_planned_start_date,
283        p_planned_end_date              => p_planned_end_date,
285        p_private_flag                  => p_private_flag,
286        p_alarm_start                   => p_alarm_start,
287        p_alarm_on                      => p_alarm_on,
288        p_source_object_type_code       => 'APPOINTMENT',
289        x_return_status                 => x_return_status,
290        x_msg_count                     => l_msg_count,
291        x_msg_data                      => l_msg_data,
292        p_category_id                   => p_category_id ,
293        p_enable_workflow               => 'N',
294        p_abort_workflow                => 'N',
295        p_change_mode                   => p_change_mode,
296        p_free_busy_type                => p_free_busy_type
297        );
298    IF x_return_status = fnd_api.g_ret_sts_success THEN
299      IF (l_alarm_start > 0 and (p_alarm_start = 0  OR p_alarm_start IS NULL)) OR
300        (NOT is_valid_alarm(p_alarm_start)) THEN
301      --kill the old workflow
302       jtf_cal_wf_pvt.updatereminders(
303             p_api_version   => 1.0,
304             p_commit        => 'T',
305             x_return_status => x_return_status,
306             x_msg_count     => l_msg_count,
307             x_msg_data      => l_msg_data,
308             p_taskid        => p_task_id,
309             p_reminddate    => NULL
310           );
311       -- update workflow if start date or remindme option changed
315             jtf_cal_wf_pvt.updatereminders(
312       ELSIF p_alarm_start > 0 AND is_valid_alarm(p_alarm_start) AND
313           (p_alarm_start <> l_alarm_start
314            OR p_planned_start_date <> l_planned_start_date) THEN
316             p_api_version   => 1.0,
317             p_commit        => 'T',
318             x_return_status => x_return_status,
319             x_msg_count     => l_msg_count,
320             x_msg_data      => l_msg_data,
321             p_taskid        => p_task_id,
322             p_reminddate    => p_planned_start_date - p_alarm_start/1440
323           );
324      END IF;
325     END IF;
326   END;
327 
328   PROCEDURE delete_appointment (
329       p_object_version_number       IN       NUMBER,
330       p_task_id                     IN       NUMBER,
331       p_delete_future_recurrences   IN       VARCHAR2,
332       x_return_status               OUT  NOCOPY  VARCHAR2
333    )
334    IS
335    l_msg_count   NUMBER;
336    l_msg_data   VARCHAR2(2000);
337    BEGIN
338      fnd_msg_pub.initialize;
339      jtf_tasks_pvt.delete_task (
340       p_api_version               => 1.0,
341       p_object_version_number     => p_object_version_number,
342       p_task_id                   => p_task_id,
343       p_delete_future_recurrences =>  p_delete_future_recurrences,
344       x_return_status             => x_return_status,
345       x_msg_count                 => l_msg_count,
346       x_msg_data                  => l_msg_data,
347       p_enable_workflow           => 'N',
348       p_abort_workflow            => 'N'
349    );
350   END;
351 END; -- End of package