DBA Data[Home] [Help]

PACKAGE BODY: APPS.JTF_TASK_INST_TEMPLATES_PUB

Source


1 PACKAGE BODY jtf_task_inst_templates_pub AS
2 /* $Header: jtfpttmb.pls 115.6 2003/02/05 02:41:34 sachoudh ship $ */
3 
4   PROCEDURE create_task_from_template (
5       p_api_version IN NUMBER,
6       p_init_msg_list IN VARCHAR2 DEFAULT fnd_api.g_false,
7       p_commit IN VARCHAR2 DEFAULT fnd_api.g_false,
8       p_task_template_group_info IN task_template_group_info,
9       p_task_templates_tbl IN task_template_info_tbl,
10       p_task_contact_points_tbl IN task_contact_points_tbl,
11       x_return_status OUT NOCOPY VARCHAR2,
12       x_msg_count OUT NOCOPY NUMBER,
13       x_msg_data OUT NOCOPY VARCHAR2,
14       x_task_details_tbl OUT NOCOPY task_details_tbl
15    )
16    IS
17       l_api_version      CONSTANT NUMBER     := 1.0;
18       l_api_name         CONSTANT VARCHAR2(30)
19                := 'CREATE_TASK_FROM_TEMPLATE';
20       l_found                       BOOLEAN;
21       l_current_record              NUMBER;
22       l_recurrence_rule_id        NUMBER;
23       l_reccurence_generated      NUMBER;
24       l_task_id                   NUMBER;
25       l_dependent_on_task_id      NUMBER;
26       l_dependency_id             NUMBER;
27       l_source_object_type_code   jtf_objects_b.object_code%TYPE;
28       l_resource_req_id           jtf_task_rsc_reqs.resource_req_id%TYPE;
29 
30       CURSOR c_task_depends (
31          p_task_template_id IN NUMBER
32       )
33       IS
34       SELECT task_id,
35              dependent_on_task_id,
36              dependency_type_code,
37              adjustment_time,
38              adjustment_time_uom,
42          AND template_flag = jtf_task_utl.g_yes;
39              template_flag
40         FROM jtf_task_depends d
41        WHERE d.task_id = p_task_template_id
43    BEGIN
44       SAVEPOINT create_tasks_template_pub;
45       x_return_status := fnd_api.g_ret_sts_success;
46       IF fnd_api.to_boolean (p_init_msg_list)
47       THEN
48         fnd_msg_pub.initialize;
49       END IF;
50 
51       IF NOT fnd_api.compatible_api_call (
52                 l_api_version,
53                 p_api_version,
54                 l_api_name,
55                 'jtf_task_create_templates'
56              )
57       THEN
58          fnd_message.set_name ('JTF', 'JTF_TASK_INCOMPATIBLE_API');
59          fnd_message.set_token ('JTF_TASK_INCOMPATIBLE_API',l_api_name);
60          fnd_msg_pub.add;
61          RAISE fnd_api.g_exc_unexpected_error;
62       END IF;
63       -- Validate Template Group-------
64       jtf_task_templates_utl.validate_task_template_group (
65          p_task_template_group_id => p_task_template_group_info.task_template_group_id
66       );
67       -- Get source object code -----------------------
68       BEGIN
69          SELECT source_object_type_code
70            INTO l_source_object_type_code
71            FROM jtf_task_temp_groups_vl
72           WHERE task_template_group_id = p_task_template_group_info.task_template_group_id;
73       END;
74 
75       ------ Create Main Tasks.-------------------------
76  	  IF (p_task_templates_tbl.COUNT = 0)
77       THEN
78          jtf_task_templates_utl.create_template_group_tasks (
79            p_source_object_type_code => l_source_object_type_code,
80            p_task_template_group_info => p_task_template_group_info,
81            x_task_details_tbl => x_task_details_tbl,
82            x_msg_count => x_msg_count,
83            x_msg_data => x_msg_data,
84            x_return_status => x_return_status
85          );
86 
87          IF NOT (x_return_status = fnd_api.g_ret_sts_success)
88          THEN
89             RAISE fnd_api.g_exc_unexpected_error;
90          END IF;
91 
92       ELSE   -- p_task_templates_tbl.COUNT <> 0
93          FOR i IN 1 .. p_task_templates_tbl.COUNT
94          LOOP
95 	            -- checking for duplicate templates
96 	            FOR j IN 1 .. x_task_details_tbl.COUNT
97 	            LOOP
98 	               IF (x_task_details_tbl (j).task_template_id =
99 	                     p_task_templates_tbl (i).task_template_id)
100 	               THEN
101 	                  fnd_message.set_name ('JTF', 'JTF_TASK_DUPLICATE_TEMP');
102 	                  fnd_message.set_token (
103 	                     'P_TASK_TEMP_ID',
104 	                     p_task_templates_tbl (i).task_template_id
105 	                  );
106 	                  fnd_msg_pub.add;
107 	                  RAISE fnd_api.g_exc_unexpected_error;
108 	               END IF;
109 	            END LOOP;
110                 -- Creating tasks.
111                 jtf_task_templates_utl.validate_create_template (
112 	                  p_task_template_info => p_task_templates_tbl (i),
113 	                  p_source_object_type_code => l_source_object_type_code,
114 	                  p_task_template_group_info => p_task_template_group_info,
115 	                  x_task_id => l_task_id,
116 	                  x_msg_count => x_msg_count,
117 	                  x_msg_data => x_msg_data,
118 	                  x_return_status => x_return_status
119 	             );
120 
121 	            IF NOT (x_return_status = fnd_api.g_ret_sts_success)
122 	            THEN
123 	               RAISE fnd_api.g_exc_unexpected_error;
124 	            END IF;
125 
126 	            x_task_details_tbl (i).task_id := l_task_id;
127 	            x_task_details_tbl (i).task_template_id := p_task_templates_tbl (i).task_template_id;
128 
129          END LOOP; -- i IN 1..p_task_templates_tbl.COUNT
130       END IF;   -- .p_task_templates_tbl.COUNT = 0
131 
132       FOR i IN 1 .. x_task_details_tbl.COUNT
133       LOOP
134         -- calling task phones api
135 		jtf_task_templates_utl.create_task_phones (
136             p_task_contact_points_tbl => p_task_contact_points_tbl,
137             p_task_template_id => x_task_details_tbl (i).task_template_id,
138             p_task_contact_id => x_task_details_tbl (i).task_id,
139             x_return_status => x_return_status,
140             x_msg_count => x_msg_count,
141             x_msg_data => x_msg_data
142          );
143 
144          IF NOT (x_return_status = fnd_api.g_ret_sts_success)
145          THEN
146             RAISE fnd_api.g_exc_unexpected_error;
147          END IF;
148 
149          -- Resource Creation from Template
150          jtf_task_templates_utl.validate_create_task_resource (
151              p_task_template_id => x_task_details_tbl (i).task_template_id,
152              p_task_id => x_task_details_tbl (i).task_id,
153              x_resource_req_id => l_resource_req_id,
154              x_msg_count => x_msg_count,
155              x_msg_data => x_msg_data,
156              x_return_status => x_return_status
157          );
158 
159          IF NOT (x_return_status = fnd_api.g_ret_sts_success)
160          THEN
161             RAISE fnd_api.g_exc_unexpected_error;
162          END IF;
163 
164          -- Create dependencies
165          FOR task_depends IN c_task_depends (x_task_details_tbl (i).task_template_id)
166          LOOP
167             l_task_id := x_task_details_tbl (i).task_id;
168             l_found := FALSE;
169             l_current_record := 1;
170 
171             WHILE NOT l_found
172             LOOP
173                IF x_task_details_tbl (l_current_record).task_template_id =
174                      task_depends.dependent_on_task_id
175                THEN
176                   l_found := TRUE;
177                   l_dependent_on_task_id := x_task_details_tbl (l_current_record).task_id;
178                ELSIF l_current_record = x_task_details_tbl.COUNT
179                THEN
180                   EXIT;
181                END IF;
182 
183                l_current_record := l_current_record + 1;
184             END LOOP;
185 
186             IF l_found
187             THEN
188                jtf_task_dependency_pvt.create_task_dependency (
189                   p_api_version => 1.0,
190                   p_init_msg_list => fnd_api.g_false,
191                   p_commit => fnd_api.g_false,
192                   p_task_id => l_task_id,
193                   p_dependent_on_task_id => l_dependent_on_task_id,
194                   p_dependency_type_code => task_depends.dependency_type_code,
195                   p_template_flag => 'N',
196                   p_adjustment_time => task_depends.adjustment_time,
197                   p_adjustment_time_uom => task_depends.adjustment_time_uom,
198                   x_dependency_id => l_dependency_id,
199                   x_return_status => x_return_status,
200                   x_msg_data => x_msg_data,
201                   x_msg_count => x_msg_count
202                );
203 
204                IF NOT (x_return_status = fnd_api.g_ret_sts_success)
205                THEN
206                   RAISE fnd_api.g_exc_unexpected_error;
207                END IF;
208             END IF;
209          END LOOP;   -- end create dependencies
210 
211          ---- Creating recurrences
212          BEGIN
213             SELECT recurrence_rule_id
214               INTO l_recurrence_rule_id
215               FROM jtf_task_templates_vl
216              WHERE task_template_id = x_task_details_tbl (i).task_template_id;
217          END;
218 
219          IF l_recurrence_rule_id IS NOT NULL
220          THEN
221             l_task_id := x_task_details_tbl (i).task_id;
222             jtf_task_templates_utl.validate_create_recur (
223                p_recurrence_rule_id => l_recurrence_rule_id,
224                p_task_id => l_task_id,
225                x_reccurence_generated => l_reccurence_generated,
226                x_return_status => x_return_status,
227                x_msg_data => x_msg_data,
228                x_msg_count => x_msg_count
229             );
230 
231             IF NOT (x_return_status = fnd_api.g_ret_sts_success)
232             THEN
233                RAISE fnd_api.g_exc_unexpected_error;
234             END IF;
235          END IF;
236       END LOOP;   -- end creating recurrences
237 
238       IF fnd_api.to_boolean (p_commit)
239       THEN
240          COMMIT WORK;
241       END IF;
242 
243       fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
244 
245    EXCEPTION
246       WHEN fnd_api.g_exc_unexpected_error
247       THEN
248          ROLLBACK TO create_tasks_template_pub;
249          x_return_status := fnd_api.g_ret_sts_unexp_error;
250          fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
251 
252       WHEN OTHERS
253       THEN
254          ROLLBACK TO create_tasks_template_pub;
255          fnd_message.set_name ('JTF', 'JTF_TASK_UNKNOWN_ERROR');
256          fnd_message.set_token ('P_TEXT', SQLCODE || SQLERRM);
257          fnd_msg_pub.add;
258          x_return_status := fnd_api.g_ret_sts_unexp_error;
259          fnd_msg_pub.count_and_get (p_count => x_msg_count, p_data => x_msg_data);
260    END;
261 END;