DBA Data[Home] [Help]

PACKAGE BODY: APPS.CAC_VIEW_APPT_PVT

Source


1 PACKAGE BODY CAC_VIEW_APPT_PVT AS
2 /* $Header: cacvwsab.pls 120.1 2005/08/18 05:43:31 amigupta noship $ */
3 
4 FUNCTION is_valid_alarm(p_alarm_start IN NUMBER)
5   RETURN BOOLEAN
6   IS
7   BEGIN
8     IF p_alarm_start <> 0 AND p_alarm_start <> 5 AND p_alarm_start <> 10
9       AND p_alarm_start <> 15  AND p_alarm_start <> 30
10       AND p_alarm_start <> 60 AND p_alarm_start <> 120 AND p_alarm_start <> 1440
11       AND p_alarm_start <> 2880 AND p_alarm_start <> 4320 AND p_alarm_start <> 10080
12      THEN
13       RETURN FALSE;
14     END IF;
15     RETURN TRUE;
16   END;
17 
18 PROCEDURE get_alarm_start (p_task_id IN NUMBER,
19                             x_alarm_start OUT NOCOPY NUMBER,
20                             x_planned_start_date OUT NOCOPY DATE)
21   IS
22     CURSOR c_alarm IS
23    select alarm_start, planned_start_date
24      from jtf_tasks_b t
25    where t.task_id = p_task_id;
26 
27    l_alarm c_alarm%ROWTYPE;
28    BEGIN
29      OPEN c_alarm;
30      FETCH c_alarm INTO l_alarm;
31      IF c_alarm%NOTFOUND THEN
32        CLOSE c_alarm;
33        fnd_message.set_name ('JTF', 'JTF_INVALID_TASK_ID');
34        fnd_msg_pub.add;
35        RAISE fnd_api.g_exc_unexpected_error;
36      ELSE
37       CLOSE c_alarm;
38       x_alarm_start := l_alarm.alarm_start;
39       x_planned_start_date := l_alarm.planned_start_date;
40 
41     END IF;
42   END;
43 
44  PROCEDURE create_external_appointment (
45         p_task_name               IN       VARCHAR2,
46         p_task_type_id            IN       NUMBER,
47         p_description             IN       VARCHAR2,
48         p_task_priority_id        IN       NUMBER,
49         p_owner_type_code         IN       VARCHAR2,
50         p_owner_id                IN       NUMBER,
51         p_planned_start_date      IN       DATE,
52         p_planned_end_date        IN       DATE,
53         p_timezone_id             IN       NUMBER,
54         p_private_flag            IN       VARCHAR2,
55         p_alarm_start             IN       NUMBER,
56         p_alarm_on                IN       VARCHAR2,
57         p_category_id             IN       NUMBER,
58 	p_free_busy_type          IN       VARCHAR2,
59 	p_source_object_type_code IN       VARCHAR2,
60         x_return_status           OUT NOCOPY     VARCHAR2,
61         x_task_id                 OUT NOCOPY     NUMBER
62    )IS
63     l_msg_count   NUMBER;
64     l_msg_data   VARCHAR2(2000);
65    BEGIN
66 
67    fnd_msg_pub.initialize;
68    jtf_tasks_pvt.create_task(
69        p_api_version             => 1.0,
70        p_task_name               => p_task_name,
71        p_task_type_id            => p_task_type_id,
72        p_task_status_id          => 3, -- Accepted
73        p_description             => p_description,
74        p_task_priority_id        => p_task_priority_id ,
75        p_owner_type_code         => p_owner_type_code,
76        p_owner_id                => p_owner_id,
77        p_planned_start_date      => p_planned_start_date ,
78        p_planned_end_date        => p_planned_end_date,
79        p_timezone_id             => p_timezone_id,
80        p_source_object_type_code => p_source_object_type_code,
81        p_private_flag            => p_private_flag,
82        p_workflow_process_id     => 0,
83        p_alarm_start             => p_alarm_start,
84        p_alarm_on                => p_alarm_on,
85        p_alarm_interval_uom      => 'min',
86        x_return_status           => x_return_status,
87        x_msg_count               => l_msg_count,
88        x_msg_data                => l_msg_data,
89        x_task_id                 => x_task_id,
90        p_date_selected           => 'P',
91        p_category_id             => p_category_id,
92        p_show_on_calendar        => 'Y',
93        p_owner_status_id         => 3,--Accepted
94        p_enable_workflow         => 'N',
95        p_abort_workflow          => 'N',
96        p_entity                  => 'APPOINTMENT',
97        p_free_busy_type          => p_free_busy_type
98         ) ;
99 
100     IF x_return_status = fnd_api.g_ret_sts_success AND p_alarm_start > 0
101        AND is_valid_alarm(p_alarm_start) THEN
102            jtf_cal_wf_pvt.startreminders(
103             p_api_version   => 1.0,
104             p_commit        => 'T',
105             x_return_status => x_return_status,
106             x_msg_count     => l_msg_count,
107             x_msg_data      => l_msg_data,
108             p_invitor       => p_owner_id,
109             p_taskid        => x_task_id,
110             p_reminddate    => p_planned_start_date - p_alarm_start/1440
111           );
112      END IF;
113  END;
114 PROCEDURE update_external_appointment (
115         p_object_version_number   IN   OUT NOCOPY NUMBER ,
116         p_task_id                 IN       NUMBER,
117         p_task_name               IN       VARCHAR2,
118         p_task_type_id            IN       NUMBER,
119         p_description             IN       VARCHAR2,
120         p_task_priority_id        IN       NUMBER,
121         p_planned_start_date      IN       DATE,
122         p_planned_end_date        IN       DATE,
123         p_timezone_id             IN       NUMBER,
124         p_private_flag            IN       VARCHAR2,
125         p_alarm_start             IN       NUMBER,
126         p_alarm_on                IN       VARCHAR2,
127         p_category_id             IN       NUMBER,
128         p_free_busy_type          IN       VARCHAR2,
129         p_change_mode             IN       VARCHAR2,
130         x_return_status           OUT  NOCOPY VARCHAR2
131 
132    )
133    IS
134     l_msg_count   NUMBER;
135     l_msg_data   VARCHAR2(2000);
136     l_alarm_start NUMBER;
137     l_planned_start_date DATE;
138     l_remind_date DATE;
139    BEGIN
140    fnd_msg_pub.initialize;
141    get_alarm_start(p_task_id, l_alarm_start, l_planned_start_date);
142    jtf_tasks_pvt.update_task(
143        p_api_version                   => 1.0,
144        p_object_version_number         => p_object_version_number,
145        p_task_id                       => p_task_id,
146        p_task_name                     => p_task_name,
147        p_task_type_id                  => p_task_type_id,
148        p_description                   => p_description,
149        p_task_priority_id              => p_task_priority_id,
150        p_planned_start_date            => p_planned_start_date,
151        p_planned_end_date              => p_planned_end_date,
152        p_timezone_id                   => p_timezone_id,
153        p_private_flag                  => p_private_flag,
154        p_alarm_start                   => p_alarm_start,
155        p_alarm_on                      => p_alarm_on,
156        p_source_object_type_code       => 'EXTERNAL APPOINTMENT',
157        x_return_status                 => x_return_status,
158        x_msg_count                     => l_msg_count,
159        x_msg_data                      => l_msg_data,
160        p_category_id                   => p_category_id ,
161        p_enable_workflow               => 'N',
162        p_abort_workflow                => 'N',
163        p_change_mode                   => p_change_mode,
164        p_free_busy_type                => p_free_busy_type
165        );
166    IF x_return_status = fnd_api.g_ret_sts_success THEN
167      IF (l_alarm_start > 0 and (p_alarm_start = 0  OR p_alarm_start IS NULL)) OR
168        (NOT is_valid_alarm(p_alarm_start)) THEN
169      --kill the old workflow
170       jtf_cal_wf_pvt.updatereminders(
171             p_api_version   => 1.0,
172             p_commit        => 'T',
173             x_return_status => x_return_status,
174             x_msg_count     => l_msg_count,
175             x_msg_data      => l_msg_data,
176             p_taskid        => p_task_id,
177             p_reminddate    => NULL
178           );
179       -- update workflow if start date or remindme option changed
180       ELSIF p_alarm_start > 0 AND is_valid_alarm(p_alarm_start) AND
181           (p_alarm_start <> l_alarm_start
182            OR p_planned_start_date <> l_planned_start_date) THEN
183             jtf_cal_wf_pvt.updatereminders(
184             p_api_version   => 1.0,
185             p_commit        => 'T',
186             x_return_status => x_return_status,
187             x_msg_count     => l_msg_count,
188             x_msg_data      => l_msg_data,
189             p_taskid        => p_task_id,
190             p_reminddate    => p_planned_start_date - p_alarm_start/1440
191           );
192      END IF;
193     END IF;
194   END;
195 
196   PROCEDURE delete_external_appointment (
197       p_object_version_number       IN       NUMBER,
198       p_task_id                     IN       NUMBER,
199       p_delete_future_recurrences   IN       VARCHAR2,
200       x_return_status               OUT  NOCOPY  VARCHAR2
201    )
202    IS
203    l_msg_count   NUMBER;
204    l_msg_data   VARCHAR2(2000);
205    BEGIN
206      fnd_msg_pub.initialize;
207      jtf_tasks_pvt.delete_task (
208       p_api_version               => 1.0,
209       p_object_version_number     => p_object_version_number,
210       p_task_id                   => p_task_id,
211       p_delete_future_recurrences =>  p_delete_future_recurrences,
212       x_return_status             => x_return_status,
213       x_msg_count                 => l_msg_count,
214       x_msg_data                  => l_msg_data,
215       p_enable_workflow           => 'N',
216       p_abort_workflow            => 'N'
217    );
218   END;
219 
220 END; -- End of package