DBA Data[Home] [Help]

PACKAGE BODY: APPS.AHL_VWP_TASKS_LINKS_PVT

Source


1 PACKAGE BODY AHL_VWP_TASKS_LINKS_PVT AS
2  /* $Header: AHLVTLNB.pls 120.0.12020000.2 2012/12/07 14:57:16 sareepar ship $ */
3 G_PKG_NAME  VARCHAR2(30)  := 'AHL_VWP_TASKS_LINKS_PVT';
4 
5 G_DEBUG                  VARCHAR2(1):=AHL_DEBUG_PUB.is_log_enabled;
6 PROCEDURE DEFAULT_MISSING_ATTRIBS
7 (p_x_task_link_tbl              IN OUT NOCOPY AHL_VWP_TASKS_LINKS_PVT.TASK_LINK_TBL)
8 AS
9 BEGIN
10         IF p_x_task_link_TBL.count >0
11         THEN
12 
13                 FOR i IN  p_x_task_link_TBL.FIRST.. p_x_task_link_TBL.LAST
14                 LOOP
15 
16                 IF p_x_task_link_tbl(i).TASK_LINK_ID= FND_API.G_MISS_NUM
17                 THEN
18                 p_x_task_link_tbl(i).TASK_LINK_ID:=NULL;
19                 END IF;
20                 IF p_x_task_link_tbl(i).OBJECT_VERSION_NUMBER= FND_API.G_MISS_NUM
21                 THEN
22                 p_x_task_link_tbl(i).OBJECT_VERSION_NUMBER:=NULL;
23                 END IF;
24                 IF p_x_task_link_tbl(i).LAST_UPDATE_DATE=FND_API.G_MISS_DATE
25                 THEN
26                 p_x_task_link_tbl(i).LAST_UPDATE_DATE:=NULL;
27                 END IF;
28                 IF p_x_task_link_tbl(i).LAST_UPDATED_BY= FND_API.G_MISS_NUM
29                 THEN
30                 p_x_task_link_tbl(i).LAST_UPDATED_BY:=NULL;
31                 END IF;
32                 IF p_x_task_link_tbl(i).CREATION_DATE=FND_API.G_MISS_DATE
33                 THEN
34                 p_x_task_link_tbl(i).CREATION_DATE:=NULL;
35                 END IF;
36                 IF p_x_task_link_tbl(i).CREATED_BY= FND_API.G_MISS_NUM
37                 THEN
38                 p_x_task_link_tbl(i).CREATED_BY:=NULL;
39                 END IF;
40                 IF p_x_task_link_tbl(i).LAST_UPDATE_LOGIN= FND_API.G_MISS_NUM
41                 THEN
42                 p_x_task_link_tbl(i).LAST_UPDATE_LOGIN:=NULL;
43                 END IF;
44                 IF p_x_task_link_tbl(i).VISIT_TASK_ID= FND_API.G_MISS_NUM
45                 THEN
46                 p_x_task_link_tbl(i).VISIT_TASK_ID:=NULL;
47                 END IF;
48                 IF p_x_task_link_tbl(i).PARENT_TASK_ID= FND_API.G_MISS_NUM
49                 THEN
50                 p_x_task_link_tbl(i).PARENT_TASK_ID:=NULL;
51                 END IF;
52 
53                 IF  p_x_task_link_TBL(i).ATTRIBUTE_CATEGORY= FND_API.G_MISS_CHAR
54                 THEN
55                         p_x_task_link_TBL(i).ATTRIBUTE_CATEGORY:=NULL;
56                 END IF;
57 
58                 IF p_x_task_link_TBL(i).ATTRIBUTE1=FND_API.G_MISS_CHAR
59                 THEN
60                         p_x_task_link_TBL(i).ATTRIBUTE1:=NULL;
61                 END IF;
62 
63                 IF p_x_task_link_TBL(i).ATTRIBUTE2=FND_API.G_MISS_CHAR
64                 THEN
65                         p_x_task_link_TBL(i).ATTRIBUTE2:=NULL;
66                 END IF;
67 
68                 IF p_x_task_link_TBL(i).ATTRIBUTE3=FND_API.G_MISS_CHAR
69                 THEN
70                         p_x_task_link_TBL(i).ATTRIBUTE3:=NULL;
71                 END IF;
72 
73                 IF p_x_task_link_TBL(i).ATTRIBUTE4 IS NULL OR p_x_task_link_TBL(i).ATTRIBUTE4=FND_API.G_MISS_CHAR
74                 THEN
75                         p_x_task_link_TBL(i).ATTRIBUTE4:=NULL;
76                 END IF;
77 
78                 IF p_x_task_link_TBL(i).ATTRIBUTE5=FND_API.G_MISS_CHAR
79                 THEN
80                         p_x_task_link_TBL(i).ATTRIBUTE5:=NULL;
81                 END IF;
82 
83                 IF p_x_task_link_TBL(i).ATTRIBUTE6=FND_API.G_MISS_CHAR
84                 THEN
85                         p_x_task_link_TBL(i).ATTRIBUTE6:=NULL;
86                 END IF;
87 
88                 IF p_x_task_link_TBL(i).ATTRIBUTE7=FND_API.G_MISS_CHAR
89                 THEN
90                         p_x_task_link_TBL(i).ATTRIBUTE7:=NULL;
91                 END IF;
92 
93                 IF p_x_task_link_TBL(i).ATTRIBUTE8=FND_API.G_MISS_CHAR
94                 THEN
95                         p_x_task_link_TBL(i).ATTRIBUTE8:=NULL;
96                 END IF;
97 
98                 IF p_x_task_link_TBL(i).ATTRIBUTE9=FND_API.G_MISS_CHAR
99                 THEN
100                         p_x_task_link_TBL(i).ATTRIBUTE9:=NULL;
101                 END IF;
102 
103                 IF p_x_task_link_TBL(i).ATTRIBUTE10=FND_API.G_MISS_CHAR
104                 THEN
105                         p_x_task_link_TBL(i).ATTRIBUTE10:=NULL;
106                 END IF;
107 
108                 IF  p_x_task_link_TBL(i).ATTRIBUTE11=FND_API.G_MISS_CHAR
109                 THEN
110                         p_x_task_link_TBL(i).ATTRIBUTE11:=NULL;
111                 END IF;
112 
113                 IF p_x_task_link_TBL(i).ATTRIBUTE12=FND_API.G_MISS_CHAR
114                 THEN
115                         p_x_task_link_TBL(i).ATTRIBUTE12:=NULL;
116                 END IF;
117 
118                 IF p_x_task_link_TBL(i).ATTRIBUTE13=FND_API.G_MISS_CHAR
119                 THEN
120                         p_x_task_link_TBL(i).ATTRIBUTE13:=NULL;
121                 END IF;
122 
123                 IF p_x_task_link_TBL(i).ATTRIBUTE14=FND_API.G_MISS_CHAR
124                 THEN
125                         p_x_task_link_TBL(i).ATTRIBUTE14:=NULL;
126                 END IF;
127 
128                 IF p_x_task_link_TBL(i).ATTRIBUTE15=FND_API.G_MISS_CHAR
129                 THEN
130                         p_x_task_link_TBL(i).ATTRIBUTE15:=NULL;
131                 END IF;
132                 END LOOP;
133         END IF;
134 END;
135 
136  PROCEDURE VALIDATE_VWP_LINKS
137  (
138  x_return_status                OUT NOCOPY VARCHAR2,
139  x_msg_count                    OUT NOCOPY NUMBER,
140  x_msg_data                     OUT NOCOPY VARCHAR2,
141  p_task_link_rec          IN     TASK_LINK_rEC
142  )
143 as
144 
145 -- Check For Unique Combination
146 
147   CURSOR CHECK_UNIQ(C_PARENT_TASK_ID NUMBER,C_visit_Task_id NUMBER)
148       IS
149   select count(*)
150   from  AHL_TASK_LINKS
151   where VISIT_TASK_ID=C_VISIT_TASK_ID
152   and   PARENT_TASK_ID=C_PARENT_TASK_ID;
153 
154   -- Changes done for Post 11.5.10  by senthil.
155 
156 -- Commented as per review comments
157 /*CURSOR  c_child_task(p_child_task_id IN NUMBER)
158 IS
159 select stage_num from ahl_vwp_stages_b where stage_id = (SELECT  stage_id
160 FROM    ahl_visit_tasks_vl
161 WHERE   visit_task_id = p_child_task_id);
162 
163 l_child_stage_num  number;
164 */
165 
166 -- VWP ER-12424063:: tchimira :: 15-APR-2011:: start
167 -- Get the passed p_parent_task_id and all its successive parent tasks
168 CURSOR  c_get_parent_tasks(p_parent_task_id IN NUMBER, p_child_task_id IN NUMBER)
169 IS
170 select link.parent_task_id from ahl_task_links link
171 start with link.visit_task_id = p_child_task_id
172 and link.parent_task_id = p_parent_task_id
173 connect by prior link.parent_task_id = link.visit_task_id;
174 
175 -- Get the passed p_child_task_id and all its successive child tasks
176 CURSOR  c_get_child_tasks(p_parent_task_id IN NUMBER, p_child_task_id IN NUMBER)
177 IS
178 select link.visit_task_id from ahl_task_links link
179 start with link.parent_task_id = p_parent_task_id
180 and link.visit_task_id = p_child_task_id
181 connect by prior link.visit_task_id = link.parent_task_id;
182 
183 --Get stage id for a given task
184 CURSOR  c_get_stage_id(p_task_id IN NUMBER)
185 IS
186 SELECT stage_id FROM ahl_visit_tasks_b
187 WHERE visit_task_id = p_task_id;
188 
189 --Check if the task rule being created voilates the already defined stage rules
190 CURSOR c_validate_rules (p_parent_stage_id IN NUMBER, p_child_stage_id IN NUMBER)
191 IS
192 SELECT 'X' FROM ahl_stage_links
193 WHERE subject_id = p_child_stage_id
194 AND relation_type <> 'PARALLEL'
195 START WITH object_id = p_parent_stage_id
196 CONNECT BY PRIOR subject_id = object_id;
197 
198 l_parent_stage_id NUMBER;
199 l_child_stage_id NUMBER;
200 l_val_dummy VARCHAR2(1);
201 
202 --VWP ER-12424063:: tchimira ::15-APR-2011:: end
203 
204 --Commented as is never used
205 /*CURSOR c_job_status(p_visit_task_id IN NUMBER)
206 IS
207 SELECT status_code,
208        confirm_failure_flag
209 FROM   ahl_workorders
210 WHERE  visit_task_id = p_visit_task_id;
211 */
212 
213 CURSOR  c_task_status(p_task_id IN NUMBER)
214 IS
215 select 'X'
216 FROM    ahl_visit_tasks_b
217 WHERE   visit_task_id = p_task_id
218 AND    status_code = 'RELEASED';
219 
220 CURSOR  c_task_type_code(p_task_id IN NUMBER)
221 IS
222 select 'X'
223 FROM    ahl_visit_tasks_b
224 WHERE   visit_task_id = p_task_id
225 AND    task_type_code = 'SUMMARY';
226 
227 -- As per latest Post 11.5.10 DLD if the task are in release status
228 -- user cannot create dependencies.
229 -- Commented by amagrawa as user can associate only task in  planning status to task hierarchy
230 /*CURSOR c_children_check_status(p_parent_visit_task_id IN NUMBER)
231 IS
232 SELECT 'X'
233 FROM   ahl_task_links lin,
234        ahl_visit_tasks_b vt
235 WHERE  lin.visit_task_id = vt.visit_task_id
236 AND    vt.status_code = 'RELEASED'
237 START WITH  lin.parent_task_id = p_parent_visit_task_id
238 CONNECT BY PRIOR lin.visit_task_id = lin.parent_task_id;
239 */
240 CURSOR c_task_number(p_task_id IN NUMBER)
241 IS
242 SELECT VISIT_TASK_NUMBER
243 FROM ahl_visit_tasks_b
244 where visit_task_id = p_task_id;
245 
246 l_dummy VARCHAR2(1);
247 l_parent_task_number number;
248 l_child_task_number number;
249 
250  L_API_NAME           CONSTANT VARCHAR2(30) := 'VALIDATE_VWP_LINKS';
251  L_FULL_NAME          CONSTANT VARCHAR2(60) := G_PKG_NAME || '.' || L_API_NAME;
252  L_DEBUG            CONSTANT VARCHAR2(90) := 'ahl.plsql.'||L_FULL_NAME;
253  l_counter2              NUMBER:=0;
254  l_child_task_id          number;
255  l_parent_task_id         number;
256 
257  BEGIN
258 
259         x_return_status:=FND_API.G_RET_STS_SUCCESS;
260 
261 
262          -- Changes done for Post 11.5.10  by senthil.
263         /*IF p_task_link_rec.HIERARCHY_INDICATOR='AFTER' --Commented by tchimira as per vwp ER-12424063 on 14-FEB-2011
264         THEN
265                 l_parent_task_id := p_task_link_rec.visit_task_id;
266                 l_child_task_id  := p_task_link_rec.parent_task_id;
267         ELSE  */
268                 l_parent_task_id := p_task_link_rec.parent_task_id;
269                 l_child_task_id  := p_task_link_rec.visit_task_id;
270         --END IF;
271 
272 -- Added by amagrawa to check for a task in summary status
273         OPEN c_task_type_code(p_task_link_rec.parent_task_id);
274         FETCH c_task_type_code INTO l_dummy;
275         IF c_task_type_code%FOUND THEN
276          --Added by amagrawa
277                  open c_task_number(p_task_link_rec.parent_task_id);
278          FETCH c_task_number into l_parent_task_number;
279                  CLOSE c_task_number;
280                 --End of change by amagrawa
281         CLOSE c_task_type_code;
282                 FND_MESSAGE.SET_NAME('AHL','AHL_VWP_TASK_SUMMARY');
283                 FND_MESSAGE.SET_TOKEN('TASK_NUM',l_parent_task_number);
284                 FND_MSG_PUB.ADD;
285                 RAISE FND_API.G_EXC_ERROR;
286         END IF;
287         CLOSE c_task_type_code;
288 
289         OPEN c_task_status(l_parent_task_id);
290         FETCH c_task_status INTO l_dummy;
291         IF c_task_status%FOUND THEN
292          --Added by amagrawa
293                  open c_task_number(l_parent_task_id);
294                         FETCH c_task_number into l_parent_task_number;
295                  CLOSE c_task_number;
296                 --End of change by amagrawa
297         CLOSE c_task_status;
298                 FND_MESSAGE.SET_NAME('AHL','AHL_VWP_TASK_PARENT_REL');
299                 FND_MESSAGE.SET_TOKEN('TASK_NUM',l_parent_task_number);
300                 FND_MSG_PUB.ADD;
301                 RAISE FND_API.G_EXC_ERROR;
302         END IF;
303         CLOSE c_task_status;
304 
305 
306         OPEN c_task_status(l_child_task_id);
307         FETCH c_task_status INTO l_dummy;
308         IF c_task_status%FOUND THEN
309            --Added by amagrawa
310       open c_task_number(l_child_task_id);
311       FETCH c_task_number into l_child_task_number;
312       CLOSE c_task_number;
313     --End of change by amagrawa
314         CLOSE c_task_status;
315                 FND_MESSAGE.SET_NAME('AHL','AHL_VWP_TASK_CHILD_REL');
316                 FND_MESSAGE.SET_TOKEN('TASK_NUM',l_child_task_number);
317                 FND_MSG_PUB.ADD;
318                 RAISE FND_API.G_EXC_ERROR;
319         END IF;
320         CLOSE c_task_status;
321 
322         IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
323          fnd_log.string(fnd_log.level_statement, L_DEBUG, 'parent task id= '||l_parent_task_id||', child task id is= '||l_child_task_id);
324         END IF;
325 
326         --VWP ER-12424063:: tchimira ::15-APR-2011:: start
327         --Instead of comparing stage number for validation errors, compare stage rules.
328 
329 	-- Loop through all the successive parents of the passed task rule
330         FOR parent_task_rec IN c_get_parent_tasks(l_parent_task_id, l_child_task_id) LOOP
331 
332 	  -- Loop through all the successive chidlren of the passed task rule
333 	  FOR child_task_rec IN c_get_child_tasks(l_parent_task_id, l_child_task_id) LOOP
334 
335             OPEN c_get_stage_id (parent_task_rec.parent_task_id);
336             FETCH c_get_stage_id INTO l_parent_stage_id;
337             CLOSE c_get_stage_id;
338 
339             OPEN c_get_stage_id (child_task_rec.visit_task_id);
340             FETCH c_get_stage_id INTO l_child_stage_id;
341             CLOSE c_get_stage_id;
342 
343             IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
344               fnd_log.string(fnd_log.level_statement, L_DEBUG, 'parent stage id= '||l_parent_stage_id||', child stage id= '||l_child_stage_id);
345             END IF;
346 
347 	    --If child task's stage starts before parent task's stage, throw an error
348             IF l_parent_stage_id IS NOT NULL AND l_child_stage_id IS NOT NULL THEN
349               OPEN c_validate_rules (l_parent_stage_id, l_child_stage_id);
350               FETCH c_validate_rules INTO l_val_dummy;
351               IF c_validate_rules%FOUND THEN
352                 CLOSE c_validate_rules;
353 
354                 OPEN c_task_number(l_parent_task_id);
355                 FETCH c_task_number into l_parent_task_number;
356                 CLOSE c_task_number;
357 
358                 OPEN c_task_number(l_child_task_id);
359                 FETCH c_task_number into l_child_task_number;
360                 CLOSE c_task_number;
361                 --added by tchimira for VWPE 12730539
362                 IF p_task_link_rec.visit_Task_number IS NULL THEN
363                   l_child_task_number := NULL;
364                   l_parent_task_number := NULL;
365                 END IF;
366                 FND_MESSAGE.SET_NAME('AHL','AHL_VWP_CHILD_STG_GT');
367                 FND_MESSAGE.SET_TOKEN('CHILD_TASK_NUM',l_child_task_number);
368                 FND_MESSAGE.SET_TOKEN('PARENT_TASK_NUM',l_parent_task_number);
369                 FND_MSG_PUB.ADD;
370                 RAISE FND_API.G_EXC_ERROR;
371               END IF; -- if c_validate_rules not found
372               CLOSE c_validate_rules;
373             END IF; -- if either parent or child stage id is null
374           END LOOP; -- loop through child tasks
375         END LOOP; -- loop through parent tasks
376         --VWP ER-12424063:: tchimira ::15-APR-2011:: end
377 
378         IF  p_task_link_rec.dml_operation<>'D'
379         THEN
380 
381                 IF (p_task_link_rec.task_link_id IS NULL OR p_task_link_rec.task_link_id=FND_API.G_MISS_NUM) AND p_task_link_rec.dml_operation<>'C'
382                 THEN
383                         FND_MESSAGE.SET_NAME('AHL','AHL_VWP_VISIT_LINK_ID_NULL');
384                         FND_MSG_PUB.ADD;
385                         RAISE FND_API.G_EXC_ERROR;
386                 END IF;
387 
388                 IF (p_task_link_rec.OBJECT_VERSION_NUMBER IS NULL OR p_task_link_rec.OBJECT_VERSION_NUMBER=FND_API.G_MISS_NUM)  and p_task_link_rec.dml_operation<>'C'
389                 THEN
390                         FND_MESSAGE.SET_NAME('AHL','AHL_COM_OBJECT_VERS_NUM_NULL');
391                         FND_MSG_PUB.ADD;
392                         RAISE FND_API.G_EXC_ERROR;
393                 END IF;
394 
395 
396 -- Check for uniq ness of the  Route Sequences
397 
398                 IF (p_task_link_rec.visit_Task_id IS NOT NULL AND p_task_link_rec.visit_Task_id<>FND_API.G_MISS_NUM
399                 AND p_task_link_rec.PARENT_TASK_ID IS NOT NULL AND p_task_link_rec.PARENT_TASK_ID<>FND_API.G_MISS_NUM)
400                 THEN
401                       IF G_DEBUG='Y' THEN
402                         AHL_DEBUG_PUB.debug(L_FULL_NAME|| 'Enter Validate 02','+VWP_HIERARCHY+');
403                       END IF;
404          -- Commented by amagrawa based on review comments
405                    /*   IF p_task_link_rec.HIERARCHY_INDICATOR='AFTER'
406                       THEN
407                                 OPEN  check_uniq(p_task_link_rec.visit_Task_id,p_task_link_rec.PARENT_TASK_ID);
408                       ELSE
409                                 OPEN  check_uniq(p_task_link_rec.PARENT_TASK_ID,p_task_link_rec.visit_Task_id);
410                       END IF;
411                       */
412                       -- Added by amagrawa based on review comments
413                       OPEN  check_uniq(l_parent_task_id ,l_child_task_id);
414                       IF G_DEBUG='Y' THEN
415                          AHL_DEBUG_PUB.debug(L_FULL_NAME||'l_parent_task_id '||l_parent_task_id||'l_child_task_id '||l_child_task_id);
416                       END IF;
417 		      FETCH check_uniq INTO l_counter2;
418 
419                      IF G_DEBUG='Y' THEN
420                         AHL_DEBUG_PUB.debug(L_FULL_NAME||'Count Records'||to_char(l_counter2),'+VWP_HIERARCHY+');
421                      END IF;
422                       --VWP ER-12424063:: tchimira:: changed the condition  l_counter2>0 to l_counter2>1
423                       -- and added one more condition
424                       IF  ((l_counter2>1) AND (p_task_link_rec.visit_Task_number IS NOT NULL))
425                       THEN
426                           FND_MESSAGE.SET_NAME('AHL','AHL_VWP_TASK_LINK_DUP');
427                           FND_MESSAGE.SET_TOKEN('RECORD',p_task_link_rec.visit_Task_number,false);
428                           FND_MSG_PUB.ADD;
429                                               RAISE FND_API.G_EXC_ERROR;
430                       END IF;
431                       CLOSE check_UNIQ;
432 
433                 END IF;
434         END IF;
435 EXCEPTION
436  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
437     X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
438     FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
439                                p_count => x_msg_count,
440                                p_data  => x_msg_data);
441 
442  WHEN FND_API.G_EXC_ERROR THEN
443     X_return_status := FND_API.G_RET_STS_ERROR;
444     FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
445                                p_count => x_msg_count,
446                                p_data  => X_msg_data);
447  WHEN OTHERS THEN
448     X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
449     IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
450     THEN
451     fnd_msg_pub.add_exc_msg(p_pkg_name        =>  G_PKG_NAME,
452                             p_procedure_name  =>  L_API_NAME,
453                             p_error_text      => SUBSTR(SQLERRM,1,240));
454     END IF;
455     FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
456                                      p_count => x_msg_count,
457                                p_data  => X_msg_data);
458  END;
459 
460 
461 --Tranlate Value to id.
462 
463 PROCEDURE TRANS_VALUE_ID
464  (
465  x_return_status                OUT NOCOPY VARCHAR2,
466  x_msg_count                    OUT NOCOPY NUMBER,
467  x_msg_data                     OUT NOCOPY VARCHAR2,
468  p_x_task_link_rec           IN OUT NOCOPY TASK_LINK_REC
469  )
470 as
471 CURSOR get_task_info(c_visit_task_id Number,C_PARENT_TASK_NUMBER VARCHAR2)
472  IS
473 SELECT *
474    FROM AHL_VISIT_TASKS_VL
475    WHERE VISIT_TASK_NUMBER=C_PARENT_TASK_NUMBER
476    AND SUMMARY_TASK_FLAG='N'
477    AND VISIT_ID = (select visit_id
478                    from AHL_VISIT_TASKS_B
479                    where VISIT_TASK_ID = c_visit_task_id);
480 
481  l_task_det              get_task_info%rowtype;
482  BEGIN
483 
484         x_return_status:=FND_API.G_RET_STS_SUCCESS;
485 
486         IF p_x_task_link_rec.visit_task_number is  null  OR p_x_task_link_rec.visit_task_number=FND_API.G_MISS_CHAR
487         THEN
488                      FND_MESSAGE.SET_NAME('AHL','AHL_VWP_TASK_NUMBER_NULL');
489                      FND_MSG_PUB.ADD;
490                      RAISE FND_API.G_EXC_ERROR;
491 
492         ELSE
493                  OPEN  get_task_info(p_x_task_link_rec.VISIT_TASK_ID,p_x_task_link_rec.visit_task_number);
494                  FETCH get_task_info INTO l_task_det;
495 
496                  IF get_task_info%NOTFOUND
497                  THEN
498                      FND_MESSAGE.SET_NAME('AHL','AHL_VWP_CONTEXT_TSK_INV');
499                      FND_MESSAGE.SET_TOKEN('RECORD',p_x_task_link_rec.visit_Task_number,false);
500                      FND_MSG_PUB.ADD;
501                      RAISE FND_API.G_EXC_ERROR;
502                  ELSE
503                              p_x_task_link_rec.parent_task_id:=l_task_det.visit_task_id;
504 -- Commented by amagrawa based on review comments.
505 --                             p_x_task_link_rec.visit_task_number:=l_task_det.visit_task_number;
506                              p_x_task_link_rec.visit_task_name:=l_task_det.visit_task_name;
507                  END IF;
508                  CLOSE get_task_info;
509         END IF;
510 
511 EXCEPTION
512  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
513     X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
514     FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
515                                p_count => x_msg_count,
516                                p_data  => x_msg_data);
517 
518  WHEN FND_API.G_EXC_ERROR THEN
519     X_return_status := FND_API.G_RET_STS_ERROR;
520     FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
521                                p_count => x_msg_count,
522                                p_data  => X_msg_data);
523  WHEN OTHERS THEN
524     X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
525     IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
526     THEN
527     fnd_msg_pub.add_exc_msg(p_pkg_name        =>  G_PKG_NAME,
528                             p_procedure_name  =>  'TRANS_VALUE_ID',
529                             p_error_text      => SUBSTR(SQLERRM,1,240));
530     END IF;
531     FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
532                                p_count => x_msg_count,
533                                p_data  => X_msg_data);
534  END;
535 
536 
537 PROCEDURE  NON_CYCLIC_ENF
538 (
539  x_return_status                OUT NOCOPY VARCHAR2,
540  x_msg_count                    OUT NOCOPY NUMBER,
541  x_msg_data                     OUT NOCOPY VARCHAR2,
542  P_VISIT_TASK_ID             IN NUMBER,
543  P_VISIT_TASK_NUMBER         IN VARCHAR2
544 )
545 AS
546 l_cyclic_loop           EXCEPTION;
547 PRAGMA                  EXCEPTION_INIT(l_cyclic_loop,-1436);
548 l_counter               NUMBER;
549 BEGIN
550         x_return_status:=FND_API.G_RET_STS_SUCCESS;
551 
552         SELECT COUNT(*) INTO l_counter
553         FROM  AHL_TASK_LINKS A
554         START WITH VISIT_TASK_ID=P_VISIT_TASK_ID
555         CONNECT BY PRIOR VISIT_TASK_ID =PARENT_TASK_ID;
556 EXCEPTION
557 WHEN l_cyclic_loop THEN
558         IF P_VISIT_TASK_NUMBER IS NOT NULL THEN
559           FND_MESSAGE.SET_NAME('AHL','AHL_VWP_VISIT_TASK_ID_CYC');
560           FND_MESSAGE.SET_TOKEN('RECORD',P_VISIT_TASK_NUMBER ,false);
561           FND_MSG_PUB.ADD;
562         -- Added by tchimira for VWPE 12730539
563         ELSE
564           FND_MESSAGE.SET_NAME('AHL','AHL_VWP_WBS_INVALID'); --WBS rule and Route Dependency are in violation
565           FND_MSG_PUB.ADD;
566         END IF;
567         x_return_status := FND_API.G_RET_STS_ERROR;
568  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
569     X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
570     FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
571                                p_count => x_msg_count,
572                                p_data  => x_msg_data);
573 
574  WHEN FND_API.G_EXC_ERROR THEN
575     X_return_status := FND_API.G_RET_STS_ERROR;
576     FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
577                                p_count => x_msg_count,
578                                p_data  => X_msg_data);
579  WHEN OTHERS THEN
580     X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
581     IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
582     THEN
583     fnd_msg_pub.add_exc_msg(p_pkg_name        => G_PKG_NAME,
584                             p_procedure_name  => 'NON_CYCLIC_ENF',
585                             p_error_text      => SUBSTR(SQLERRM,1,240));
586     END IF;
587     FND_MSG_PUB.count_and_get( p_encoded => FND_API.G_FALSE,
588                                      p_count => x_msg_count,
589                                p_data  => X_msg_data);
590  END;
591 
592     -- Post 11.5.10 Changes by Senthil
593 PROCEDURE Create_Task_Links
594 (
595 P_task_link_rec  IN OUT NOCOPY TASK_LINK_REC
596 )
597 
598 IS
599 
600 -- Modified by amagrawa
601 CURSOR  CHECK_TASK_ID(C_TASK_NUMBER IN NUMBER, C_TASK_ID IN NUMBER)
602 IS
603 select VISIT_TASK_ID from AHL_VISIT_TASKS_B where visit_task_number = C_TASK_NUMBER and
604 visit_id = (select visit_id from ahl_visit_tasks_b where visit_task_id = C_TASK_ID );
605 
606 -- Added by tchimira for VWPE 12730539
607 CURSOR  VALIDATE_TASK_ID(C_TASK_ID IN NUMBER)
608 IS
609 select VISIT_TASK_ID from AHL_VISIT_TASKS_B
610 where  visit_task_id = C_TASK_ID;
611 
612 --Added below two lines by tchimira for VWP ER-12424063 on 14-FEB-2011
613 L_API_NAME           CONSTANT VARCHAR2(30) := 'Create_Task_Links';
614 L_FULL_NAME          CONSTANT VARCHAR2(60) := G_PKG_NAME || '.' || L_API_NAME;
615 
616 l_flip_vtid NUMBER;
617 l_return_Status VARCHAR2(1);
618 l_msg_count NUMBER;
619 l_msg_data VARCHAR2(2000);
620 l_visit_task_id NUMBER;
621 
622 BEGIN
623 
624    --     Select ahl_task_links_s.nextval into l_task_link_id from dual;
625 -- Validate the values entered by the user
626 
627       IF(P_task_link_rec.visit_task_number is NULL or length(trim(P_task_link_rec.visit_task_number)) = 0 )
628       THEN      --Added by tchimira for VWPE 12730539
629                 OPEN VALIDATE_TASK_ID(P_task_link_rec.visit_task_id);
630                 FETCH VALIDATE_TASK_ID INTO l_visit_task_id;
631                      IF (VALIDATE_TASK_ID%NOTFOUND) THEN
632                            FND_MESSAGE.SET_NAME('AHL','AHL_VWP_CONTEXT_TSK_INV');
633                            FND_MESSAGE.SET_TOKEN('RECORD',P_task_link_rec.visit_task_number,false);
634                            FND_MSG_PUB.ADD;
635                      END IF;
636                      CLOSE VALIDATE_TASK_ID;
637       ELSE
638                 OPEN CHECK_TASK_ID(P_task_link_rec.visit_task_number,P_task_link_rec.visit_task_id);
639                 FETCH CHECK_TASK_ID INTO l_visit_task_id;
640                      IF (CHECK_TASK_ID%FOUND) THEN
641                            P_task_link_rec.parent_task_id := l_visit_task_id;
642                         ELSE
643                            FND_MESSAGE.SET_NAME('AHL','AHL_VWP_CONTEXT_TSK_INV');
644                            FND_MESSAGE.SET_TOKEN('RECORD',P_task_link_rec.visit_task_number,false);
645                            FND_MSG_PUB.ADD;
646                      END IF;
647                      CLOSE Check_Task_ID;
648        END IF;
649 
650         l_msg_count := FND_MSG_PUB.count_msg;
651         IF l_msg_count > 0
652         THEN
653                 RAISE FND_API.G_EXC_ERROR;
654         END IF;
655 
656 
657 
658         --commented the below 6 lines by tchimira for vwp ER-12424063 on 14-FEB-2011
659         /*IF P_task_link_rec.HIERARCHY_INDICATOR='AFTER'
660         THEN
661                       l_flip_vtid:=P_task_link_rec.VISIT_TASK_ID;
662                       P_task_link_rec.VISIT_TASK_ID:=P_task_link_rec.PARENT_TASK_ID;
663                       P_task_link_rec.PARENT_TASK_ID:=l_flip_vtid;
664         END IF;*/
665 
666                       --Added new 'PRECEDENCE_CONSTRAINT'column by tchimira - VWP ER-12424063 ::14-FEB-2011
667                       INSERT INTO AHL_TASK_LINKS(
668                       TASK_LINK_ID,
669                       OBJECT_VERSION_NUMBER,
670                       LAST_UPDATE_DATE,
671                       LAST_UPDATED_BY,
672                       CREATION_DATE,
673                       CREATED_BY,
674                       LAST_UPDATE_LOGIN,
675                       VISIT_TASK_ID,
676                       PARENT_TASK_ID,
677                       ATTRIBUTE_CATEGORY,
678                       ATTRIBUTE1,
679                       ATTRIBUTE2,
680                       ATTRIBUTE3,
681                       ATTRIBUTE4,
682                       ATTRIBUTE5,
683                       ATTRIBUTE6,
684                       ATTRIBUTE7,
685                       ATTRIBUTE8,
686                       ATTRIBUTE9,
687                       ATTRIBUTE10,
688                       ATTRIBUTE11,
689                       ATTRIBUTE12,
690                       ATTRIBUTE13,
691                       ATTRIBUTE14,
692                       ATTRIBUTE15,
693                       PRECEDENCE_CONSTRAINT)
694                       values
695                       (
696                       ahl_task_links_s.nextval,
697                       1,
698                       sysdate,
699                       fnd_global.user_id,
700                       sysdate,
701                       fnd_global.user_id,
702                       fnd_global.user_id,
703                       P_task_link_rec.VISIT_TASK_ID,
704                       P_task_link_rec.PARENT_TASK_ID,
705                       P_task_link_rec.ATTRIBUTE_CATEGORY,
706                       P_task_link_rec.ATTRIBUTE1,
707                       P_task_link_rec.ATTRIBUTE2,
708                       P_task_link_rec.ATTRIBUTE3,
709                       P_task_link_rec.ATTRIBUTE4,
710                       P_task_link_rec.ATTRIBUTE5,
711                       P_task_link_rec.ATTRIBUTE6,
712                       P_task_link_rec.ATTRIBUTE7,
713                       P_task_link_rec.ATTRIBUTE8,
714                       P_task_link_rec.ATTRIBUTE9,
715                       P_task_link_rec.ATTRIBUTE10,
716                       P_task_link_rec.ATTRIBUTE11,
717                       P_task_link_rec.ATTRIBUTE12,
718                       P_task_link_rec.ATTRIBUTE13,
719                       P_task_link_rec.ATTRIBUTE14,
720                       P_task_link_rec.ATTRIBUTE15,
721                       P_task_link_rec.HIERARCHY_INDICATOR);
722 
723 	 NON_CYCLIC_ENF
724          (
725          x_return_status             =>l_return_Status,
726          x_msg_count                 =>l_msg_count,
727          x_msg_data                  =>l_msg_data,
728          p_visit_Task_id              =>P_task_link_rec.visit_Task_id,
729          p_visit_Task_number          =>P_task_link_rec.visit_Task_number
730          );
731 
732         -- Added by amagrawa based on review comments.
733         IF l_return_Status <>'S' THEN
734           IF l_return_Status = FND_API.G_RET_STS_ERROR THEN
735               RAISE FND_API.G_EXC_ERROR;
736           ELSIF l_return_Status = FND_API.G_RET_STS_UNEXP_ERROR THEN
737               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
738           END IF;
739 
740         END IF;
741 
742         -- VWP ER-12424063:: tchimira:: call validate vwp links after insering the task rule::start
743         -- Validate the Links
744 
745         VALIDATE_VWP_LINKS
746          (
747          x_return_status  =>l_return_Status,
748          x_msg_count      =>l_msg_count,
749          x_msg_data       =>l_msg_data,
750          p_task_link_rec  =>P_task_link_rec
751          );
752 
753         IF l_return_Status <>'S' THEN
754           IF l_return_Status = FND_API.G_RET_STS_ERROR THEN
755              RAISE FND_API.G_EXC_ERROR;
756           ELSIF l_return_Status = FND_API.G_RET_STS_UNEXP_ERROR THEN
757              RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
758           END IF;
759         END IF;
760         -- VWP ER-12424063:: tchimira:: call validate vwp links after insering the task rule::end
761 
762       -- Added cxcheng POST11510--------------
763       --Now adjust the times derivation for the child task
764       AHL_VWP_TIMES_PVT.Adjust_Task_Times(p_api_version => 1.0,
765                                     p_init_msg_list => Fnd_Api.G_FALSE,
766                                     p_commit        => Fnd_Api.G_FALSE,
767                                     p_validation_level      => Fnd_Api.G_VALID_LEVEL_FULL,
768                                     x_return_status      => l_return_status,
769                                     x_msg_count          => l_msg_count,
770                                     x_msg_data           => l_msg_data,
771                                     p_task_id            => P_task_link_rec.visit_task_id);
772 
773 
774       -- Added by amagrawa based on review comments.
775       IF l_return_Status <>'S'
776       THEN
777          IF l_return_Status = FND_API.G_RET_STS_ERROR
778          THEN
779             RAISE FND_API.G_EXC_ERROR;
780          ELSIF l_return_Status = FND_API.G_RET_STS_UNEXP_ERROR
781          THEN
782             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
783          END IF;
784 
785       END IF;
786 
787       l_msg_count := FND_MSG_PUB.count_msg;
788       IF l_msg_count > 0
789       THEN
790              RAISE FND_API.G_EXC_ERROR;
791       END IF;
792 
793 END Create_Task_Links;
794 
795          -- End of Post 11.5.10 Changes by Senthil
796 
797 PROCEDURE DELETE_TASK_LINKS
798  ( p_task_link_id              IN NUMBER,
799    p_object_version_number     IN NUMBER)
800 as
801 --
802 cursor child_task_csr (p_task_link_id IN NUMBER) IS
803 SELECT  visit_task_id
804 FROM   ahl_task_links
805 WHERE  task_link_id = p_task_link_id;
806 --
807 l_return_Status VARCHAR2(1);
808 l_msg_count NUMBER;
809 l_msg_data VARCHAR2(2000);
810 l_child_task_id NUMBER;
811 --
812 BEGIN
813        --Find the child task link
814         OPEN child_task_csr(p_task_link_id);
815         FETCH child_task_csr INTO l_child_task_id;
816         CLOSE child_task_csr;
817 
818         DELETE AHL_TASK_LINKS
819         WHERE  TASK_LINK_ID=p_task_link_id
820         AND OBJECT_VERSION_NUMBER=p_object_version_number;
821         IF SQL%ROWCOUNT=0
822         THEN
823            FND_MESSAGE.SET_NAME('AHL','AHL_COM_RECORD_CHANGED');
824            FND_MSG_PUB.ADD;
825            RAISE FND_API.G_EXC_ERROR;
826         END IF;
827 
828 
829     -- Added cxcheng POST11510--------------
830     --Now adjust the times derivation for the child task. Parent doesn't matter
831      AHL_VWP_TIMES_PVT.Adjust_Task_Times(p_api_version => 1.0,
832                                     p_init_msg_list => Fnd_Api.G_FALSE,
833                                     p_commit        => Fnd_Api.G_FALSE,
834                                     p_validation_level      => Fnd_Api.G_VALID_LEVEL_FULL,
835                                     x_return_status      => l_return_status,
836                                     x_msg_count          => l_msg_count,
837                                     x_msg_data           => l_msg_data,
838                                     p_task_id            => l_child_task_id);
839 
840       -- Added by amagrawa based on review comments.
841        IF l_return_Status <>'S'
842         THEN
843             IF l_return_Status = FND_API.G_RET_STS_ERROR
844             THEN
845                                             RAISE FND_API.G_EXC_ERROR;
846             ELSIF l_return_Status = FND_API.G_RET_STS_UNEXP_ERROR
847             THEN
848                                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
849                         END IF;
850 
851         END IF;
852 
853         l_msg_count := FND_MSG_PUB.count_msg;
854         IF l_msg_count > 0
855         THEN
856                 RAISE FND_API.G_EXC_ERROR;
857         END IF;
858 
859 END DELETE_TASK_LINKS;
860 
861 PROCEDURE PROCESS_TASK_LINKS
862  (
863  p_api_version               IN     NUMBER      := 1.0,
864  p_init_msg_list             IN     VARCHAR2    := FND_API.G_TRUE,
865  p_commit                    IN     VARCHAR2    := FND_API.G_FALSE ,
866  p_validation_level          IN     NUMBER      := FND_API.G_VALID_LEVEL_FULL,
867  p_default                   IN     VARCHAR2    := FND_API.G_FALSE,
868  p_module_type               IN     VARCHAR2    := NULL,
869  x_return_status                OUT NOCOPY VARCHAR2,
870  x_msg_count                    OUT NOCOPY NUMBER,
871  x_msg_data                     OUT NOCOPY VARCHAR2,
872  p_x_task_link_tbl           IN OUT NOCOPY TASK_LINK_TBL
873  )
874 as
875  -- for finding the status of a task. Added in 11.5.10
876  -- amagrawa Modified the cursor declaration based on review comments.
877  CURSOR task_status_csr(p_task_id IN NUMBER) IS
878         SELECT STATUS_CODE
879         FROM AHL_VISIT_TASKS_B
880         WHERE VISIT_TASK_ID=p_task_id;
881 --      AND VISIT_TASK_NUMBER= p_task_no ;
882 
883  -- Cursor find all details about visit
884  CURSOR c_Visit (p_task_id IN NUMBER) IS
885       SELECT Any_Task_Chg_Flag,visit_id FROM Ahl_Visits_VL
886       WHERE  VISIT_ID = (
887                          SELECT visit_id FROM AHL_VISIT_TASKS_B
888                          WHERE visit_task_id = p_task_id
889                         );
890 
891  l_visit_csr_rec    c_Visit%ROWTYPE;
892 
893  -- Cursor to find visit_task_id from task_link_id
894  CURSOR c_task_link (p_task_link_id IN NUMBER) IS
895       SELECT visit_task_id FROM AHL_TASK_LINKS
896       WHERE task_link_id = p_task_link_id;
897 
898 
899  l_api_name     CONSTANT VARCHAR2(30) := 'PROCESS_TASK_LINKS';
900  -- Added by amagrawa
901  L_FULL_NAME    CONSTANT VARCHAR2(60) := G_PKG_NAME || '.' || L_API_NAME;
902  l_api_version  CONSTANT NUMBER       := 1.0;
903  l_msg_count             NUMBER;
904  l_msg_data              VARCHAR2(2000);
905  l_return_status         VARCHAR2(1);
906  l_init_msg_list         VARCHAR2(10):=FND_API.G_TRUE;
907  l_commit                VARCHAR2(1):= FND_API.G_FALSE;
908  l_TASK_LINK_tbl         TASK_LINK_TBL:=p_x_task_link_tbl;
909  L_TASK_LINK_REC         TASK_LINK_REC;
910  l_status_code           VARCHAR2(30);
911  l_task_id               NUMBER;
912  l_counter NUMBER:=0;
913 
914    l_planned_order_flag VARCHAR2(1);
915 
916    l_visit_end_date DATE;
917 
918  BEGIN
919 
920        SAVEPOINT PROCESS_TASK_LINKS;
921 
922     -- Standard call to check for call compatibility.
923 
924        IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
925                                        p_api_version,
926                                        l_api_name,G_PKG_NAME)  THEN
927          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
928        END IF;
929 
930     -- Initialize message list if p_init_msg_list is set to TRUE.
931        IF FND_API.to_boolean(l_init_msg_list) THEN
932          FND_MSG_PUB.initialize;
933        END IF;
934 
935 
936         IF G_DEBUG='Y' THEN
937                  AHL_DEBUG_PUB.enable_debug;
938          END IF;
939 
940     -- Debug info.
941 -- Commented by amagrawa based on review comments
942 --       IF AHL_DEBUG_PUB.G_FILE_DEBUG THEN
943           IF G_DEBUG='Y' THEN
944                          AHL_DEBUG_PUB.debug( L_FULL_NAME||':Enter VWP_HIERARCHY');
945          END IF;
946 --       END IF;
947 
948     -- AHL_DEBUG_PUB.enable_debug;
949 
950 
951     -- Initialize API return status to success
952 
953        x_return_status := FND_API.G_RET_STS_SUCCESS;
954 
955 
956    --Start of API Body
957 
958      if p_x_task_link_tbl.count >0
959      then
960 
961      FOR i IN  P_X_TASK_LINK_TBL.FIRST.. P_X_TASK_LINK_TBL.LAST
962      LOOP
963 
964      IF P_X_TASK_LINK_TBL(I).DML_operation<>'D'
965      THEN
966 
967         l_TASK_LINK_rec.object_version_number   :=l_TASK_LINK_tbl(i).object_version_number;
968         l_TASK_LINK_rec.visit_task_id           :=l_TASK_LINK_tbl(i).visit_task_id;
969 -- Commented by amagrawa based on review comments.
970  --       l_TASK_LINK_rec.parent_task_id          :=l_TASK_LINK_tbl(i).parent_task_id;
971         l_TASK_LINK_rec.hierarchy_indicator     :=l_TASK_LINK_tbl(i).hierarchy_indicator;
972         l_TASK_LINK_rec.visit_task_nUMBER       :=l_TASK_LINK_tbl(i).visit_task_number;
973         l_TASK_LINK_rec.visit_task_id           :=l_TASK_LINK_tbl(i).visit_task_id;
974         l_TASK_LINK_rec.dml_operation           :=l_TASK_LINK_tbl(i).DML_OPERATION;
975 
976          TRANS_VALUE_ID
977          (
978          x_return_status             =>x_return_Status,
979          x_msg_count                 =>l_msg_count,
980          x_msg_data                  =>l_msg_data,
981          P_X_TASK_LINK_rec           =>   l_TASK_LINK_rec);
982 
983          -- Added by amagrawa based on review comments.
984             IF x_return_Status <>'S'
985         THEN
986             IF x_return_Status = FND_API.G_RET_STS_ERROR
987             THEN
988                                             RAISE FND_API.G_EXC_ERROR;
989             ELSIF x_return_Status = FND_API.G_RET_STS_UNEXP_ERROR
990             THEN
991                                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
992                         END IF;
993         END IF;
994 
995          l_TASK_LINK_tbl(i).parent_task_id:=l_TASK_LINK_rec.parent_task_id;
996          l_TASK_LINK_tbl(i).visit_task_name:=l_TASK_LINK_rec.visit_task_name;
997 -- Commented by amagrawa based on review comments.
998  --        l_TASK_LINK_tbl(i).visit_task_number:=l_TASK_LINK_rec.visit_task_number;
999      END IF;
1000 
1001      END LOOP;
1002      end if;
1003 
1004 -- Commented by amagrawa based on review comments.
1005     /*    l_msg_count := FND_MSG_PUB.count_msg;
1006         IF l_msg_count > 0 THEN
1007            X_msg_count := l_msg_count;
1008            X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1009            RAISE FND_API.G_EXC_ERROR;
1010         END IF;
1011 */
1012         IF G_DEBUG='Y' THEN
1013                  AHL_DEBUG_PUB.debug( L_FULL_NAME||' After  Translate','+VWP_HIERARCHY+');
1014          END IF;
1015 
1016         IF P_X_TASK_LINK_TBL.COUNT >0
1017         THEN
1018 
1019 
1020         DEFAULT_MISSING_ATTRIBS
1021         (
1022         p_x_TASK_LINK_TBL             =>L_TASK_LINK_tbl
1023         );
1024 
1025         END IF;
1026 
1027      -- Calling for Validation
1028 
1029      if p_x_task_link_tbl.count >0
1030      then
1031         l_counter:= p_x_task_link_tbl.first;
1032         l_task_id := p_x_task_link_tbl(l_counter).visit_task_id;
1033 
1034         IF l_task_id IS NULL and (p_x_task_link_tbl(l_counter).DML_OPERATION) = 'D' THEN
1035                 OPEN c_task_link(p_x_task_link_tbl(l_counter).task_link_id);
1036                 FETCH c_task_link INTO l_task_id;
1037                 CLOSE c_task_link;
1038         END IF;
1039 
1040         IF G_DEBUG='Y' THEN
1041                  AHL_DEBUG_PUB.debug( L_FULL_NAME||' Task Hierarchy l_task_id -> '||l_task_id);
1042         END IF;
1043 
1044      FOR i IN  l_TASK_LINK_TBL.FIRST.. l_TASK_LINK_TBL.LAST
1045      LOOP
1046        OPEN task_status_csr(l_TASK_LINK_tbl(i).parent_task_id);
1047        FETCH task_status_csr INTO l_status_code;
1048        CLOSE task_status_csr;
1049 
1050        IF l_status_code <>'PLANNING' THEN
1051 
1052           FND_MESSAGE.SET_NAME('AHL','AHL_VWP_INV_TASK_STATUS');
1053           FND_MESSAGE.SET_TOKEN('RECORD',l_TASK_LINK_tbl(i).visit_task_number ,false);
1054           FND_MSG_PUB.ADD;
1055           x_return_status := FND_API.G_RET_STS_ERROR;
1056 
1057        ELSE
1058         l_TASK_LINK_rec.object_version_number   :=l_TASK_LINK_tbl(i).object_version_number;
1059         l_TASK_LINK_rec.visit_task_id           :=l_TASK_LINK_tbl(i).visit_task_id;
1060         l_TASK_LINK_rec.parent_task_id          :=l_TASK_LINK_tbl(i).parent_task_id;
1061         l_TASK_LINK_rec.hierarchy_indicator     :=l_TASK_LINK_tbl(i).hierarchy_indicator;
1062         l_TASK_LINK_rec.visit_task_nUMBER       :=l_TASK_LINK_tbl(i).visit_task_number;
1063         l_TASK_LINK_rec.visit_task_id           :=l_TASK_LINK_tbl(i).visit_task_id;
1064         l_TASK_LINK_rec.dml_operation           :=l_TASK_LINK_tbl(i).DML_OPERATION;
1065 
1066 
1067 --       IF (p_validation_level = FND_API.G_VALID_LEVEL_FULL )
1068 --       THEN
1069 /*        IF l_TASK_LINK_TBL(i).DML_OPERATION<>'D'
1070        THEN
1071 
1072          VALIDATE_VWP_LINKS
1073          (
1074          x_return_status             =>x_return_Status,
1075          x_msg_count                 =>l_msg_count,
1076          x_msg_data                  =>l_msg_data,
1077          p_task_link_rec             =>l_TASK_LINK_rec);
1078 
1079         END IF;
1080 */
1081 
1082 
1083 
1084        IF l_TASK_LINK_TBL(i).DML_OPERATION='D'
1085        THEN
1086 
1087            -- Post 11.5.10 Changes by Senthil
1088                 DELETE_TASK_LINKS
1089                  (
1090                  p_task_link_id      => l_task_link_tbl(i).task_link_id,
1091                  p_object_version_number   => l_task_link_tbl(i).object_version_number
1092                  );
1093 
1094 /*              DELETE AHL_TASK_LINKS WHERE  TASK_LINK_ID=l_task_link_tbl(i).task_link_id
1095                 AND OBJECT_VERSION_NUMBER=l_task_link_tbl(i).OBJECT_VERSION_NUMBER;
1096                 IF SQL%ROWCOUNT=0
1097                 THEN
1098                    FND_MESSAGE.SET_NAME('AHL','AHL_COM_RECORD_CHANGED');
1099                    FND_MSG_PUB.ADD;
1100                 END IF;
1101                 */
1102 
1103              -- End of Post 11.5.10 Changes by Senthil
1104         ELSIF P_X_TASK_LINK_tbl(i).DML_operation='C'
1105         THEN
1106         -- Post 11.5.10 Changes by Senthil
1107            Create_Task_Links ( p_task_link_rec  =>P_X_TASK_LINK_tbl(i));
1108          -- End of Post 11.5.10 Changes by Senthil
1109         END IF;
1110       END IF;
1111      END LOOP;
1112 
1113 
1114      OPEN C_VISIT(l_task_id);
1115      fetch c_visit into l_visit_csr_rec;
1116      IF C_VISIT%FOUND THEN
1117             IF p_module_type = 'JSP' and P_X_TASK_LINK_tbl.count > 0 THEN
1118 
1119           l_visit_end_date:= AHL_VWP_TIMES_PVT.get_visit_end_time(l_visit_csr_rec.visit_id);
1120 
1121           IF l_visit_end_date IS NOT NULL THEN
1122 
1123                 AHL_LTP_REQST_MATRL_PVT.Process_Planned_Materials
1124                   (p_api_version            => p_api_version,
1125                    p_init_msg_list          => Fnd_Api.G_FALSE,
1126                    p_commit                 => Fnd_Api.G_FALSE,
1127                    p_visit_id               => l_visit_csr_rec.visit_id,
1128                    p_visit_task_id          => NULL,
1129                    p_org_id                 => NULL,
1130                    p_start_date             => NULL,
1131                    p_operation_flag         => 'U',
1132                    x_planned_order_flag     => l_planned_order_flag ,
1133                         x_return_status           => l_return_status,
1134                         x_msg_count               => l_msg_count,
1135                         x_msg_data                => l_msg_data);
1136 
1137 
1138 
1139                 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
1140                         X_msg_count := l_msg_count;
1141                         X_return_status := Fnd_Api.G_RET_STS_ERROR;
1142                         RAISE Fnd_Api.G_EXC_ERROR;
1143                 END IF;
1144 
1145              END IF;
1146 
1147           END IF;
1148 
1149          IF l_visit_csr_rec.Any_Task_Chg_Flag='N'
1150              THEN
1151                          AHL_VWP_RULES_PVT.update_visit_task_flag(
1152                                  p_visit_id         =>l_visit_csr_rec.visit_id,
1153                                  p_flag             =>'Y',
1154                                  x_return_status    =>x_return_status);
1155                   END IF;
1156                   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1157                         CLOSE C_VISIT;
1158                                 RAISE FND_API.G_EXC_ERROR;
1159                   END IF;
1160      END IF;
1161      CLOSE C_VISIT;
1162 
1163      END IF;
1164         l_msg_count := FND_MSG_PUB.count_msg;
1165         IF l_msg_count > 0 THEN
1166            X_msg_count := l_msg_count;
1167            X_return_status := FND_API.G_RET_STS_ERROR;
1168            RAISE FND_API.G_EXC_ERROR;
1169         END IF;
1170 
1171 
1172          IF FND_API.TO_BOOLEAN(p_commit) THEN
1173             COMMIT;
1174          END IF;
1175     -- Debug info
1176 
1177    IF G_DEBUG='Y' THEN
1178                  AHL_DEBUG_PUB.debug( 'End of Private api  PROCESS_TASK_LINKS','+visit_Task_id+');
1179          END IF;
1180 
1181     -- Check if API is called in debug mode. If yes, disable debug.
1182 
1183    IF G_DEBUG='Y' THEN
1184                  AHL_DEBUG_PUB.disable_debug;
1185          END IF;
1186 
1187 EXCEPTION
1188  WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1189     ROLLBACK TO PROCESS_TASK_LINKS;
1190     X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1191     FND_MSG_PUB.count_and_get( p_encoded =>FND_API.G_FALSE,
1192                                p_count => x_msg_count,
1193                                p_data  => x_msg_data);
1194 
1195  WHEN FND_API.G_EXC_ERROR THEN
1196     ROLLBACK TO PROCESS_TASK_LINKS;
1197     X_return_status := FND_API.G_RET_STS_ERROR;
1198     FND_MSG_PUB.count_and_get( p_encoded =>FND_API.G_FALSE,
1199                                p_count => x_msg_count,
1200                                p_data  => X_msg_data);
1201  WHEN OTHERS THEN
1202     ROLLBACK TO PROCESS_TASK_LINKS;
1203     X_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1204     IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1205     THEN
1206     fnd_msg_pub.add_exc_msg(p_pkg_name        =>  'AHL_VWP_TASKS_LINKS_PVT',
1207                             p_procedure_name  =>  'PROCESS_TASK_LINKS',
1208                             p_error_text      => SUBSTR(SQLERRM,1,240));
1209     END IF;
1210     FND_MSG_PUB.count_and_get( p_encoded =>FND_API.G_FALSE,
1211                                p_count => x_msg_count,
1212                                p_data  => X_msg_data);
1213 END;
1214 
1215 END AHL_VWP_TASKS_LINKS_PVT;