DBA Data[Home] [Help]

PACKAGE BODY: APPS.PA_TASK_TYPE_UTILS

Source


1 PACKAGE BODY pa_task_type_utils AS
2 /*$Header: PATTUTLB.pls 120.2 2005/08/25 03:28:25 sunkalya noship $*/
3 
4 FUNCTION is_task_type_unique(p_task_type      IN  VARCHAR2,
5                              p_task_type_id   IN  NUMBER := NULL) RETURN VARCHAR2
6 IS
7   l_task_type_unique VARCHAR2(1);
8 
9   CURSOR c1 IS
10   SELECT 'X'
11   FROM pa_task_types
12   WHERE task_type = p_task_type
13   AND object_type = 'PA_TASKS'  /* bug 3279978 FP M Enhancement */
14   AND ((task_type_id <> p_task_type_id AND p_task_type_id IS NOT NULL)
15        OR p_task_type_id IS NULL);
16 
17 BEGIN
18   OPEN c1;
19   FETCH c1 INTO l_task_type_unique;
20   IF c1%FOUND THEN
21     RETURN 'N';
22   ELSE
23     RETURN 'Y';
24   END IF;
25 
26   CLOSE c1;
27 
28 EXCEPTION
29     WHEN OTHERS THEN
30        FND_MSG_PUB.add_exc_msg
31          (p_pkg_name => 'PA_TASK_TYPE_UTILS.is_task_type_unique',
32           p_procedure_name => PA_DEBUG.G_Err_Stack );
33        RAISE;
34 END is_task_type_unique;
35 
36 
37 PROCEDURE change_task_type_allowed(p_task_id IN NUMBER,
38           p_from_task_type_id     IN NUMBER,
39           p_to_task_type_id       IN NUMBER,
40           x_change_allowed        OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
41           x_return_status         OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
42           x_msg_count             OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
43           x_msg_data             OUT NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
44 
45 IS
46   CURSOR c1(p_task_type_id IN NUMBER) IS
47     SELECT prog_entry_enable_flag, wq_enable_flag, percent_comp_enable_flag, remain_effort_enable_flag
48     FROM pa_task_types
49     WHERE task_type_id = p_task_type_id;
50 
51   CURSOR c2(p_task_type_id IN NUMBER) IS
52     SELECT prog_entry_enable_flag, wq_enable_flag, percent_comp_enable_flag, remain_effort_enable_flag
53     FROM pa_task_types
54     WHERE task_type_id = p_task_type_id;
55 
56   v_c1 c1%ROWTYPE;
57   v_c2 c2%ROWTYPE;
58 
59 --hsiu: bug 2663532
60   CURSOR c3(p_task_id NUMBER) IS
61     select a.project_id, a.proj_element_id
62       from pa_proj_element_versions a,
63            pa_proj_element_versions b
64      where b.proj_element_id = p_task_id
65        and b.parent_structure_version_id = a.element_version_id
66        and b.project_id = a.project_id;
67   v_c3 c3%ROWTYPE;
68 --end bug 2663532
69 
70 BEGIN
71 
72   x_return_status := FND_API.G_RET_STS_SUCCESS;
73   x_change_allowed := 'N';
74 
75   OPEN c1(p_from_task_type_id);
76   FETCH c1 INTO v_c1;
77   CLOSE c1;
78 
79   OPEN c2(p_to_task_type_id);
80   FETCH c2 INTO v_c2;
81   CLOSE c2;
82 
83   OPEN c3(p_task_id);
84   FETCH c3 INTO v_c3;
85   CLOSE c3;
86 
87   IF (PA_PROGRESS_UTILS.check_task_has_progress(p_task_id) = 'N') THEN
88     IF (v_c1.prog_entry_enable_flag = 'Y' AND v_c2.prog_entry_enable_flag = 'N') AND
89        ('Y' = PA_PROJECT_STRUCTURE_UTILS.CHECK_PUBLISHED_VER_EXISTS(v_c3.project_id, v_c3.proj_element_id)
90          AND 'Y' = PA_WORKPLAN_ATTR_UTILS.CHECK_WP_VERSIONING_ENABLED(v_c3.project_id)) THEN
91       x_change_allowed := 'N';
92     ELSE
93       x_change_allowed := 'Y';
94     END IF;
95   ELSE
96     -- If the change is Y -> N, then it is NOT allowed.
97     IF ((v_c1.prog_entry_enable_flag = 'Y' AND v_c2.prog_entry_enable_flag = 'N')
98          AND ('Y' = PA_PROJECT_STRUCTURE_UTILS.CHECK_PUBLISHED_VER_EXISTS(v_c3.project_id, v_c3.proj_element_id)
99          AND 'Y' = PA_WORKPLAN_ATTR_UTILS.CHECK_WP_VERSIONING_ENABLED(v_c3.project_id)))
100        OR
101        (v_c1.wq_enable_flag = 'Y' AND v_c2.wq_enable_flag = 'N')
102        OR
103        (v_c1.percent_comp_enable_flag = 'Y' AND v_c2.percent_comp_enable_flag = 'N')
104        OR
105        (v_c1.remain_effort_enable_flag = 'Y' AND v_c2.remain_effort_enable_flag = 'N')
106     THEN
107       x_change_allowed := 'N';
108 --added by hsiu
109     ELSE
110       x_change_allowed := 'Y';
111 --end changes
112     END IF;
113 
114   END IF;
115 
116 EXCEPTION
117     WHEN OTHERS THEN
118        FND_MSG_PUB.add_exc_msg
119          (p_pkg_name => 'PA_TASK_TYPE_UTILS.change_task_type_allowed',
120           p_procedure_name => PA_DEBUG.G_Err_Stack );
121        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
122        RAISE;
123 END change_task_type_allowed;
124 
125 
126 PROCEDURE change_wi_allowed(p_task_id IN NUMBER,
127           x_return_status         OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
128           x_msg_count             OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
129           x_msg_data             OUT NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
130 
131 IS
132   l_msg_index_out NUMBER;
133   --Bug: 4537865
134   l_new_msg_data  VARCHAR2(2000);
135   --Bug: 4537865
136   l_change_wi_not_allowed EXCEPTION;
137 
138 BEGIN
139   x_return_status := FND_API.G_RET_STS_SUCCESS;
140 
141   IF PA_PROGRESS_UTILS.check_task_has_progress(p_task_id) = 'Y' THEN
142     RAISE l_change_wi_not_allowed;
143   END IF;
144 
145 EXCEPTION
146     WHEN l_change_wi_not_allowed THEN
147       PA_UTILS.add_message('PA','PA_CHANGE_WI_NOT_ALLOWED');
148 		 x_return_status := FND_API.G_RET_STS_ERROR;
149 		 x_msg_data := 'PA_CHANGE_WI_NOT_ALLOWED';
150 		 x_msg_count := FND_MSG_PUB.Count_Msg;
151 		 If x_msg_count = 1 THEN
152 				pa_interface_utils_pub.get_messages
153 					(p_encoded        => FND_API.G_TRUE,
154 					p_msg_index      => 1,
155 					p_msg_count      => x_msg_count,
156 					p_msg_data       => x_msg_data,
157 				      --p_data           => x_msg_data,		--Bug: 4537865
158 					p_data		 => l_new_msg_data,	--Bug: 4537865
159 						p_msg_index_out  => l_msg_index_out );
160 		--Bug: 4537865
161 		x_msg_data := l_new_msg_data;
162 		--Bug: 4537865
163 		 End if;
164     WHEN OTHERS THEN
165 	x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ; -- 4537865
166        FND_MSG_PUB.add_exc_msg
167          (p_pkg_name => 'PA_TASK_TYPE_UTILS.change_work_item_allowed',
168           p_procedure_name => PA_DEBUG.G_Err_Stack );
169        RAISE;
170 
171 END change_wi_allowed;
172 
173 
174 PROCEDURE change_uom_allowed(p_task_id IN NUMBER,
175           x_return_status         OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
176           x_msg_count             OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
177           x_msg_data             OUT NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
178 
179 IS
180   l_msg_index_out NUMBER;
181   --Bug: 4537865
182   l_new_msg_data	   VARCHAR2(2000);
183   l_change_uom_not_allowed EXCEPTION;
184 
185 BEGIN
186   x_return_status := FND_API.G_RET_STS_SUCCESS;
187 
188   IF PA_PROGRESS_UTILS.check_task_has_progress(p_task_id) = 'Y' THEN
189     RAISE l_change_uom_not_allowed;
190   END IF;
191 
192 EXCEPTION
193     WHEN l_change_uom_not_allowed THEN
194       PA_UTILS.add_message('PA','PA_CHANGE_UOM_NOT_ALLOWED');
195 		 x_return_status := FND_API.G_RET_STS_ERROR;
196 		 x_msg_data := 'PA_CHANGE_UOM_NOT_ALLOWED';
197 		 x_msg_count := FND_MSG_PUB.Count_Msg;
198 		 If x_msg_count = 1 THEN
199 				pa_interface_utils_pub.get_messages
200 					(p_encoded        => FND_API.G_TRUE,
201 					p_msg_index      => 1,
202 					p_msg_count      => x_msg_count,
203 					p_msg_data       => x_msg_data,
204 				      --p_data           => x_msg_data,	--Bug: 4537865
205 					p_data		 => l_new_msg_data,	--Bug: 4537865
206 						p_msg_index_out  => l_msg_index_out );
207 		--Bug: 4537865
208 		x_msg_data := l_new_msg_data;
209 		--Bug: 4537865
210 		 End if;
211     WHEN OTHERS THEN
212         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ; -- 4537865
213        FND_MSG_PUB.add_exc_msg
214          (p_pkg_name => 'PA_TASK_TYPE_UTILS.change_uom_allowed',
215           p_procedure_name => PA_DEBUG.G_Err_Stack );
216        RAISE;
217 
218 END change_uom_allowed;
219 
220 
221 PROCEDURE check_planned_quantity(p_planned_quantity IN NUMBER,
222           p_actual_work_quantity  IN  NUMBER,
223           x_return_status         OUT NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
224           x_msg_count             OUT NOCOPY NUMBER, --File.Sql.39 bug 4440895
225           x_msg_data             OUT NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
226 
227 IS
228   l_msg_index_out NUMBER;
229   --bug: 4537865
230   l_new_msg_data  VARCHAR2(2000);
231   --bug: 4537865
232   l_planned_quantity_error EXCEPTION;
233 
234 BEGIN
235   x_return_status := FND_API.G_RET_STS_SUCCESS;
236   IF p_planned_quantity < p_actual_work_quantity THEN
237     RAISE l_planned_quantity_error;
238   END IF;
239 
240 EXCEPTION
241     WHEN l_planned_quantity_error THEN
242       PA_UTILS.add_message('PA','PA_PLANNED_QUANTITY_ERROR');
243 		 x_return_status := FND_API.G_RET_STS_ERROR;
244 		 x_msg_data := 'PA_PLANNED_QUANTITY_ERROR';
245 		 x_msg_count := FND_MSG_PUB.Count_Msg;
246 		 If x_msg_count = 1 THEN
247 				pa_interface_utils_pub.get_messages
248 					(p_encoded        => FND_API.G_TRUE,
249 					p_msg_index      => 1,
250 					p_msg_count      => x_msg_count,
251 					p_msg_data       => x_msg_data,
252 				      --p_data           => x_msg_data,		--Bug: 4537865
253 					p_data		 => l_new_msg_data,	--Bug: 4537865
254 						p_msg_index_out  => l_msg_index_out );
255 		--Bug: 4537865
256 		x_msg_data := l_new_msg_data;
257 		--Bug: 4537865
258 		 End if;
259     WHEN OTHERS THEN
260        FND_MSG_PUB.add_exc_msg
261          (p_pkg_name => 'PA_TASK_TYPE_UTILS.change_task_type_allowed',
262           p_procedure_name => PA_DEBUG.G_Err_Stack );
263        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
264        RAISE;
265 
266 END check_planned_quantity;
267 
268  FUNCTION check_page_layout_referenced(
269  p_page_id    NUMBER ) RETURN BOOLEAN
270  is
271   Cursor c_task_type_ref
272   is
273   Select 'X' from pa_task_types
274   where task_progress_entry_page_id = p_page_id
275   AND object_type = 'PA_TASKS';  /* bug 3279978 FP M Enhancement */
276 
277   l_dummy varchar2(1);
278   l_return_value boolean := FALSE;
279 
280  Begin
281    open c_task_type_ref;
282    fetch c_task_type_ref into l_dummy;
283    if (c_task_type_ref%FOUND) then
284      l_return_value := TRUE;
285    end if;
286    close c_task_type_ref;
287 
288    return l_return_value;
289 
290  End check_page_layout_referenced;
291 
292 
293 PROCEDURE validate_progress_attributes(
294            p_prog_entry_enable_flag        IN VARCHAR2
295           ,p_prog_entry_req_flag           IN VARCHAR2
296           ,p_initial_progress_status_code  IN VARCHAR2
297           ,p_task_prog_entry_page_id       IN NUMBER
298           ,p_wq_enable_flag                IN VARCHAR2
299           ,p_work_item_code                IN VARCHAR2
300           ,p_uom_code                      IN VARCHAR2
301           ,p_actual_wq_entry_code          IN VARCHAR2
302           ,p_percent_comp_enable_flag      IN VARCHAR2
303           ,p_base_percent_comp_deriv_code  IN VARCHAR2
304           ,p_task_weighting_deriv_code     IN VARCHAR2
305           ,p_remain_effort_enable_flag     IN VARCHAR2
306           ,x_return_status                 OUT NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
307           ,x_msg_count                     OUT NOCOPY NUMBER --File.Sql.39 bug 4440895
308           ,x_msg_data                      OUT NOCOPY VARCHAR2) --File.Sql.39 bug 4440895
309 
310 IS
311   l_prog_entry_enable_invalid EXCEPTION;
312   l_wq_enable_invalid  EXCEPTION;
313   l_percent_comp_enable_invalid EXCEPTION;
314   l_prog_entry_attr_missing EXCEPTION;
315   l_wq_attr_missing EXCEPTION;
316   l_percent_comp_attr_missing EXCEPTION;
317   l_base_deriv_method_invalid EXCEPTION;
318 
319   l_msg_index_out NUMBER;
320   -- Bug: 4537865
321   l_new_msg_data  VARCHAR2(2000);
322   -- Bug: 4537865
323 
324 BEGIN
325 
326   x_return_status := FND_API.G_RET_STS_SUCCESS;
327 
328   IF p_prog_entry_enable_flag = 'N' THEN
329     IF ( p_prog_entry_req_flag            = 'Y'
330        OR p_initial_progress_status_code  IS NOT NULL
331        OR p_task_prog_entry_page_id       IS NOT NULL
332        OR p_wq_enable_flag                = 'Y'
333        OR p_work_item_code                IS NOT NULL
334        OR p_uom_code                      IS NOT NULL
335        OR p_actual_wq_entry_code          IS NOT NULL
336        OR p_percent_comp_enable_flag      = 'Y'
337        OR p_base_percent_comp_deriv_code  IS NOT NULL
338        OR p_task_weighting_deriv_code     IS NOT NULL
339        OR p_remain_effort_enable_flag     = 'Y'      ) THEN
340 
341       RAISE l_prog_entry_enable_invalid;
342 
343     END IF;
344 
345   ELSE
346 
347     IF p_prog_entry_enable_flag = 'Y' AND p_initial_progress_status_code IS NULL THEN
348 
349       RAISE l_prog_entry_attr_missing;
350 
351     END IF;
352 
353     IF p_wq_enable_flag = 'Y' AND (p_work_item_code IS NULL OR p_uom_code IS NULL
354                                    OR p_actual_wq_entry_code IS NULL) THEN
355 
356       RAISE l_wq_attr_missing;
357 
358     END IF;
359 
360     IF p_percent_comp_enable_flag = 'Y' AND p_base_percent_comp_deriv_code IS NULL THEN
361 
362       RAISE l_percent_comp_attr_missing;
363 
364     END IF;
365 
366     -- 2621629: Added validation for base % complete derivation method.
367     IF p_percent_comp_enable_flag = 'Y' AND p_wq_enable_flag = 'N' AND p_base_percent_comp_deriv_code = 'WQ_DERIVED' THEN
368 
369       RAISE l_base_deriv_method_invalid;
370 
371     END IF;
372 
373     IF p_wq_enable_flag = 'N' AND (p_work_item_code IS NOT NULL OR p_uom_code IS NOT NULL
374                                    OR p_actual_wq_entry_code IS NOT NULL) THEN
375 
376       RAISE l_wq_enable_invalid;
377 
378     END IF;
379 
380     IF p_percent_comp_enable_flag = 'N' AND p_base_percent_comp_deriv_code IS NOT NULL THEN
381 
382       RAISE l_percent_comp_enable_invalid;
383 
384     END IF;
385 
386   END IF;
387 
388 EXCEPTION
389     WHEN l_prog_entry_enable_invalid THEN
390       PA_UTILS.add_message('PA','PA_PROG_ENTRY_ENABLE_INVALID');
391 		 x_return_status := FND_API.G_RET_STS_ERROR;
392 		 x_msg_data := 'PA_PROG_ENTRY_ENABLE_INVALID';
393 		 x_msg_count := FND_MSG_PUB.Count_Msg;
394 		 If x_msg_count = 1 THEN
395 				pa_interface_utils_pub.get_messages
396 					(p_encoded        => FND_API.G_TRUE,
397 					p_msg_index      => 1,
398 					p_msg_count      => x_msg_count,
399 					p_msg_data       => x_msg_data,
400 				      --p_data           => x_msg_data,		--Bug: 4537865
401 					p_data		 => l_new_msg_data,	--Bug: 4537865
402 						p_msg_index_out  => l_msg_index_out );
403 		--Bug: 4537865
404 		x_msg_data := l_new_msg_data;
405 		--Bug: 4537865
406 		 End if;
407 
408     WHEN l_prog_entry_attr_missing THEN
409       PA_UTILS.add_message('PA','PA_PROG_ENTRY_ATTR_MISSING');
410 		 x_return_status := FND_API.G_RET_STS_ERROR;
411 		 x_msg_data := 'PA_PROG_ENTRY_ATTR_MISSING';
412 		 x_msg_count := FND_MSG_PUB.Count_Msg;
413 		 If x_msg_count = 1 THEN
414 				pa_interface_utils_pub.get_messages
415 					(p_encoded        => FND_API.G_TRUE,
416 					p_msg_index      => 1,
417 					p_msg_count      => x_msg_count,
418 					p_msg_data       => x_msg_data,
419 				      --p_data           => x_msg_data,		--Bug: 4537865
420 					p_data		 => l_new_msg_data,	--Bug: 4537865
421 						p_msg_index_out  => l_msg_index_out );
422 		--Bug: 4537865
423 		x_msg_data := l_new_msg_data;
424 		--Bug: 4537865
425 		 End if;
426 
427     WHEN l_wq_enable_invalid THEN
428       PA_UTILS.add_message('PA','PA_WQ_ENABLE_INVALID');
429 		 x_return_status := FND_API.G_RET_STS_ERROR;
430 		 x_msg_data := 'PA_WQ_ENABLE_INVALID';
431 		 x_msg_count := FND_MSG_PUB.Count_Msg;
432 		 If x_msg_count = 1 THEN
433 				pa_interface_utils_pub.get_messages
434 					(p_encoded        => FND_API.G_TRUE,
435 					p_msg_index      => 1,
436 					p_msg_count      => x_msg_count,
437 					p_msg_data       => x_msg_data,
438 				      --p_data           => x_msg_data,		--Bug: 4537865
439 					p_data		 => l_new_msg_data,	--Bug: 4537865
440 						p_msg_index_out  => l_msg_index_out );
441 			--Bug: 4537865
442 			x_msg_data := l_new_msg_data;
443 			--Bug: 4537865
444 		 End if;
445 
446      WHEN l_wq_attr_missing THEN
447       PA_UTILS.add_message('PA','PA_WQ_ATTR_MISSING');
448 		 x_return_status := FND_API.G_RET_STS_ERROR;
449 		 x_msg_data := 'PA_WQ_ATTR_MISSING';
450 		 x_msg_count := FND_MSG_PUB.Count_Msg;
451 		 If x_msg_count = 1 THEN
452 				pa_interface_utils_pub.get_messages
453 					(p_encoded        => FND_API.G_TRUE,
454 					p_msg_index      => 1,
455 					p_msg_count      => x_msg_count,
456 					p_msg_data       => x_msg_data,
457 				      --p_data           => x_msg_data,		--Bug: 4537865
458 					p_data		 => l_new_msg_data,	--Bug: 4537865
459 						p_msg_index_out  => l_msg_index_out );
460 		--Bug: 4537865
461 		x_msg_data := l_new_msg_data;
462 		--Bug: 4537865
463 		 End if;
464 
465     WHEN l_percent_comp_enable_invalid THEN
466       PA_UTILS.add_message('PA','PA_PERCENT_COMP_ENABLE_INVALID');
467 		 x_return_status := FND_API.G_RET_STS_ERROR;
468 		 x_msg_data := 'PA_PERCENT_COMP_ENABLE_INVALID';
469 		 x_msg_count := FND_MSG_PUB.Count_Msg;
470 		 If x_msg_count = 1 THEN
471 				pa_interface_utils_pub.get_messages
472 					(p_encoded        => FND_API.G_TRUE,
473 					p_msg_index      => 1,
474 					p_msg_count      => x_msg_count,
475 					p_msg_data       => x_msg_data,
476 				      --p_data           => x_msg_data,		--Bug: 4537865
477 					p_data		 => l_new_msg_data,	--Bug: 4537865
478 						p_msg_index_out  => l_msg_index_out );
479 		--Bug: 4537865
480 		x_msg_data := l_new_msg_data;
481 		--Bug: 4537865
482 		 End if;
483 
484      WHEN l_percent_comp_attr_missing THEN
485       PA_UTILS.add_message('PA','PA_PERCENT_COMP_ATTR_MISSING');
486 		 x_return_status := FND_API.G_RET_STS_ERROR;
487 		 x_msg_data := 'PA_PERCENT_COMP_ATTR_MISSING';
488 		 x_msg_count := FND_MSG_PUB.Count_Msg;
489 		 If x_msg_count = 1 THEN
490 				pa_interface_utils_pub.get_messages
491 					(p_encoded        => FND_API.G_TRUE,
492 					p_msg_index      => 1,
493 					p_msg_count      => x_msg_count,
494 					p_msg_data       => x_msg_data,
495 				      --p_data           => x_msg_data,		--Bug: 4537865
496 					p_data		 => l_new_msg_data,	--Bug: 4537865
497 						p_msg_index_out  => l_msg_index_out );
498 		--Bug: 4537865
499 		x_msg_data := l_new_msg_data;
500 		--Bug: 4537865
501 		 End if;
502 
503     WHEN l_base_deriv_method_invalid THEN
504       PA_UTILS.add_message('PA','PA_BASE_DERIV_METHOD_INVALID');
505 		 x_return_status := FND_API.G_RET_STS_ERROR;
506 		 x_msg_data := 'PA_BASE_DERIV_METHOD_INVALID';
507 		 x_msg_count := FND_MSG_PUB.Count_Msg;
508 		 If x_msg_count = 1 THEN
509 				pa_interface_utils_pub.get_messages
510 					(p_encoded        => FND_API.G_TRUE,
511 					p_msg_index      => 1,
512 					p_msg_count      => x_msg_count,
513 					p_msg_data       => x_msg_data,
514 				      --p_data           => x_msg_data,		--Bug: 4537865
515 					p_data		 => l_new_msg_data,	--Bug: 4537865
516 						p_msg_index_out  => l_msg_index_out );
517 		--Bug: 4537865
518 		x_msg_data := l_new_msg_data;
519 		--Bug: 4537865
520 		 End if;
521 
522     WHEN OTHERS THEN
523        FND_MSG_PUB.add_exc_msg
524          (p_pkg_name => 'PA_TASK_TYPE_UTILS.validate_progress_attributes',
525           p_procedure_name => PA_DEBUG.G_Err_Stack );
526        RAISE;
527 
528 END validate_progress_attributes;
529 
530 FUNCTION check_tk_type_effective(p_task_type_id IN NUMBER)
531          RETURN VARCHAR2
532 IS
533   CURSOR c1 IS
534     select 'Y'
535       from pa_task_types
536      where task_type_id = p_task_type_id
537        and sysdate > start_date_active
538        and (end_date_active IS NULL or end_date_active > sysdate);
539   l_dummy VARCHAR2(1);
540 BEGIN
541   OPEN c1;
542   FETCH c1 into l_dummy;
543   IF c1%NOTFOUND THEN
544     l_dummy := 'N';
545   END IF;
546   CLOSE c1;
547   return l_dummy;
548 END check_tk_type_effective;
549 
550 FUNCTION check_tk_type_progressable(p_task_type_id IN NUMBER)
551          RETURN VARCHAR2
552 IS
553   CURSOR c1 IS
554     select 'Y'
555       from pa_task_types
556      where task_type_id = p_task_type_id
557        and PROG_ENTRY_ENABLE_FLAG = 'Y';
558   l_dummy VARCHAR2(1);
559 
560 BEGIN
561   OPEN c1;
562   FETCH c1 into l_dummy;
563   IF c1%NOTFOUND THEN
564     l_dummy := 'N';
565   END IF;
566   CLOSE c1;
567   return l_dummy;
568 END check_tk_type_progressable;
569 
570 
571 FUNCTION check_tk_type_wq_enabled(p_task_type_id IN NUMBER)
572          RETURN VARCHAR2
573 IS
574   CURSOR c1 IS
575     select 'Y'
576       from pa_task_types
577      where task_type_id = p_task_type_id
578        and WQ_ENABLE_FLAG = 'Y';
579   l_dummy VARCHAR2(1);
580 BEGIN
581   OPEN c1;
582   FETCH c1 into l_dummy;
583   IF c1%NOTFOUND THEN
584     l_dummy := 'N';
585   END IF;
586   CLOSE c1;
587   return l_dummy;
588 END check_tk_type_wq_enabled;
589 
590 END pa_task_type_utils;