[Home] [Help]
PACKAGE BODY: APPS.AHL_VWP_TASKS_PVT
Source
1 PACKAGE BODY AHL_VWP_TASKS_PVT AS
2 /* $Header: AHLVTSKB.pls 120.16 2008/04/29 07:00:02 rnahata ship $ */
3 -----------------------------------------------------------
4 -- PACKAGE
5 -- Ahl_Vwp_Tasks_Pvt
6 --
7 -- PURPOSE
8 -- This package body is a Private API for managing VWP Tasks procedures
9 -- in Complex Maintainance, Repair and Overhauling(CMRO).
10 -- It defines global constants, various local functions and procedures.
11 --
12 -- PROCEDURES
13 -- Check_Task_Items -- Complete_Visit_Task_Rec
14 -- Check_Visit_Task_Req_Items-- Check_Visit_Task_UK_Items
15 -- Validate_Visit_Task -- Default_Missing_Attribs
16
17 -- Create_Task -- Update_Task
18 -- Create_Summary_Task -- Update_Summary_Task
19 -- Create_Unassociated_Task -- Update_Unassociated_Task
20 -- Update_Tasks_in_Production
21
22 -- Delete_Task -- Get_Task_Details
23 -- Delete_Summary_Task -- Delete_Unassociated_Task
24 --
25 -- NOTES
26 --
27 --
28 -- HISTORY
29 -- 12-MAY-2002 Shbhanda Created.
30 -- 06-AUG-2003 SHBHANDA 11.5.10 Changes.
31 --
32 -- 21-AUG-2003 RTADIKON Changes to reflect VWP/Costing Changes.
33 -- 13-Sep-2004 SJAYACHA Commented call to update_project as this
34 -- needs to be done before deleting the Visit.
35 -- 02-NOV-2007 RBHAVSAR Added PROCEDURE level logs when entering and exiting a procedure.
36 -- Returned the status before returning from the procedure.
37 -- Replaced all fnd_log.level_procedure with STATEMENT
38 -- level logs and added more STATEMENT level logs at
39 -- key decision points.
40 -----------------------------------------------------------------
41 -- Define Global CONSTANTS --
42 -----------------------------------------------------------------
43 G_PKG_NAME CONSTANT VARCHAR2(30):= 'AHL_VWP_TASKS_PVT';
44 -----------------------------------------------------------------
45 -- Common constants and variables --
46 ------------------------------------
47 l_log_current_level NUMBER := fnd_log.g_current_runtime_level;
48 l_log_statement NUMBER := fnd_log.level_statement;
49 l_log_procedure NUMBER := fnd_log.level_procedure;
50 l_log_error NUMBER := fnd_log.level_error;
51 l_log_unexpected NUMBER := fnd_log.level_unexpected;
52 ---------------------------------------------------------------------
53 -- Define Record Types for record structures needed by the APIs --
54 ---------------------------------------------------------------------
55 -- NO RECORD TYPES
56
57 --------------------------------------------------------------------
58 -- Define Table Type for Records Structures --
59 --------------------------------------------------------------------
60 -- NO RECORD TYPES
61
62 --------------------------------------------------------------------
63 -- START: Defining local functions and procedures SIGNATURES --
64 --------------------------------------------------------------------
65 -- To Check_Visit_Task_Req_Items
66 PROCEDURE Check_Visit_Task_Req_Items (
67 p_task_rec IN AHL_VWP_RULES_PVT.Task_Rec_Type,
68 --Added by rnahata for Issue 105
69 p_validation_mode IN VARCHAR2 := Jtf_Plsql_Api.g_create,
70 x_return_status OUT NOCOPY VARCHAR2
71 );
72
73 -- To Check_Visit_Task_UK_Items
74 PROCEDURE Check_Visit_Task_UK_Items (
75 p_task_rec IN AHL_VWP_RULES_PVT.Task_Rec_Type,
76 p_validation_mode IN VARCHAR2 := Jtf_Plsql_Api.g_create,
77 x_return_status OUT NOCOPY VARCHAR2
78 );
79
80 -- To Check_Task_Items
81 PROCEDURE Check_Task_Items (
82 p_Task_rec IN AHL_VWP_RULES_PVT.task_rec_type,
83 p_validation_mode IN VARCHAR2 := Jtf_Plsql_Api.g_create,
84 x_return_status OUT NOCOPY VARCHAR2
85 );
86
87 -- To Validate_Visit_Task
88 PROCEDURE Validate_Visit_Task (
89 p_api_version IN NUMBER,
90 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
91 p_commit IN VARCHAR2 := Fnd_Api.g_false,
92 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
93 p_Task_rec IN AHL_VWP_RULES_PVT.task_rec_type,
94 x_return_status OUT NOCOPY VARCHAR2,
95 x_msg_count OUT NOCOPY NUMBER,
96 x_msg_data OUT NOCOPY VARCHAR2
97 );
98
99 -- To assign Null to missing attributes of visit while creation/updation.
100 PROCEDURE Default_Missing_Attribs(
101 p_x_task_rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type
102 );
103
104 -- To Create Unassociated Task
105 PROCEDURE Create_Unassociated_Task(
106 p_api_version IN NUMBER,
107 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
108 p_commit IN VARCHAR2 := Fnd_Api.g_false,
109 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
110 p_module_type IN VARCHAR2 := 'JSP',
111 p_x_task_Rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
112 x_return_status OUT NOCOPY VARCHAR2,
113 x_msg_count OUT NOCOPY NUMBER,
114 x_msg_data OUT NOCOPY VARCHAR2
115 );
116
117 -- To Create Summary Task
118 PROCEDURE Create_Summary_Task(
119 p_api_version IN NUMBER,
120 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
121 p_commit IN VARCHAR2 := Fnd_Api.g_false,
122 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
123 p_module_type IN VARCHAR2 :='JSP',
124 p_x_task_Rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
125 x_return_status OUT NOCOPY VARCHAR2,
126 x_msg_count OUT NOCOPY NUMBER,
127 x_msg_data OUT NOCOPY VARCHAR2
128 );
129
130 -- To Delete SR Task
131 PROCEDURE Delete_SR_Task (
132 p_api_version IN NUMBER,
133 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
134 p_commit IN VARCHAR2 := Fnd_Api.g_false,
135 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
136 p_module_type IN VARCHAR2:= 'JSP',
137 p_visit_task_ID IN NUMBER,
138 x_return_status OUT NOCOPY VARCHAR2,
139 x_msg_count OUT NOCOPY NUMBER,
140 x_msg_data OUT NOCOPY VARCHAR2
141 );
142
143 -- To Update Summary Task
144 PROCEDURE Update_Summary_Task(
145 p_api_version IN NUMBER,
146 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
147 p_commit IN VARCHAR2 := Fnd_Api.g_false,
148 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
149 p_module_type IN VARCHAR2 := 'JSP',
150 p_x_task_Rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
151 x_return_status OUT NOCOPY VARCHAR2,
152 x_msg_count OUT NOCOPY NUMBER,
153 x_msg_data OUT NOCOPY VARCHAR2
154 );
155
156 -- To Update Unassociated Task
157
158 PROCEDURE Update_Unassociated_Task(
159 p_api_version IN NUMBER,
160 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
161 p_commit IN VARCHAR2 := Fnd_Api.g_false,
162 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
163 p_module_type IN VARCHAR2 := 'JSP',
164 p_x_task_Rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
165 x_return_status OUT NOCOPY VARCHAR2,
166 x_msg_count OUT NOCOPY NUMBER,
167 x_msg_data OUT NOCOPY VARCHAR2
168 );
169
170 -- To Delete Unassociated Task
171 PROCEDURE Delete_Unassociated_Task (
172 p_api_version IN NUMBER,
173 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
174 p_commit IN VARCHAR2 := Fnd_Api.g_false,
175 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
176 p_module_type IN VARCHAR2 := 'JSP',
177 p_Visit_Task_Id IN NUMBER,
178 x_return_status OUT NOCOPY VARCHAR2,
179 x_msg_count OUT NOCOPY NUMBER,
180 x_msg_data OUT NOCOPY VARCHAR2
181 );
182
183 PROCEDURE Get_WorkOrder_Attribs(
184 p_x_prd_workorder_rec IN OUT NOCOPY AHL_PRD_WORKORDER_PVT.prd_workorder_rec
185 );
186
187 PROCEDURE Update_Tasks_in_Planning(
188 p_api_version IN NUMBER := 1.0,
189 p_init_msg_list IN VARCHAR2:= FND_API.G_FALSE,
190 p_commit IN VARCHAR2:= FND_API.G_FALSE,
191 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
192 p_module_type IN VARCHAR2:= 'JSP',
193 p_x_task_rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
194 x_return_status OUT NOCOPY VARCHAR2,
195 x_msg_count OUT NOCOPY NUMBER,
196 x_msg_data OUT NOCOPY VARCHAR2
197 );
198
199 PROCEDURE Update_Tasks_in_Production(
200 p_api_version IN NUMBER := 1.0,
201 p_init_msg_list IN VARCHAR2:= FND_API.G_FALSE,
202 p_commit IN VARCHAR2:= FND_API.G_FALSE,
203 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
204 p_module_type IN VARCHAR2:= 'JSP',
205 p_x_task_rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
206 x_return_status OUT NOCOPY VARCHAR2,
207 x_msg_count OUT NOCOPY NUMBER,
208 x_msg_data OUT NOCOPY VARCHAR2
209 );
210
211 --------------------------------------------------------------------
212 -- END: Defining local functions and procedures SIGNATURES --
213 --------------------------------------------------------------------
214
215 --------------------------------------------------------------------
216 -- START: Defining local functions and procedures BODY --
217 --------------------------------------------------------------------
218 --------------------------------------------------------------------
219 -- PROCEDURE
220 -- Default_Missing_Attribs
221 --
222 -- PURPOSE
223 -- For all optional fields check if its g_miss_num/g_miss_char/
224 -- g_miss_date then Null else the value
225
226 --------------------------------------------------------------------
227 -- Start default attributes for workorder
228 PROCEDURE Get_WorkOrder_Attribs(
229 p_x_prd_workorder_rec IN OUT NOCOPY AHL_PRD_WORKORDER_PVT.prd_workorder_rec
230 )
231 AS
232
233 CURSOR get_workorder_rec(c_workorder_id NUMBER)
234 IS
235 /*SELECT *
236 FROM AHL_ALL_WORKORDERS_V
237 WHERE workorder_id=c_workorder_id;
238 */
239 -- AnRaj: Changed query for perf issue#1, Bug 4919465
240 SELECT WO.OBJECT_VERSION_NUMBER OBJECT_VERSION_NUMBER,
241 WO.WORKORDER_NAME JOB_NUMBER,
242 WO.ROUTE_ID ROUTE_ID,
243 VST.ORGANIZATION_ID ORGANIZATION_ID,
244 WIP.FIRM_PLANNED_FLAG FIRM_PLANNED_FLAG,
245 WIP.CLASS_CODE CLASS_CODE,
246 WIP.OWNING_DEPARTMENT DEPARTMENT_ID ,
247 WO.STATUS_CODE JOB_STATUS_CODE,
248 WIP.SCHEDULED_START_DATE SCHEDULED_START_DATE,
249 WIP.SCHEDULED_COMPLETION_DATE SCHEDULED_END_DATE,
250 WO.ACTUAL_START_DATE ACTUAL_START_DATE,
251 WO.ACTUAL_END_DATE ACTUAL_END_DATE,
252 NVL2( WO.VISIT_TASK_ID,
253 nvl(VST.INVENTORY_ITEM_ID, (select inventory_item_id from ahl_visit_tasks_b where visit_id = vst.visit_id and rownum = 1) ),
254 VST.INVENTORY_ITEM_ID) INVENTORY_ITEM_ID,
255 NVL2( WO.VISIT_TASK_ID,
256 nvl (VST.ITEM_INSTANCE_ID, (select instance_id from ahl_visit_tasks_b where visit_id = vst.visit_id and rownum = 1) ),
257 VST.ITEM_INSTANCE_ID) ITEM_INSTANCE_ID,
258 WO.MASTER_WORKORDER_FLAG MASTER_WORKORDER_FLAG,
259 VST.PROJECT_ID PROJECT_ID,
260 NVL2( WO.VISIT_TASK_ID,VTS.PROJECT_TASK_ID,TO_NUMBER(NULL)) PROJECT_TASK_ID,
261 NVL2( WO.VISIT_TASK_ID,VTS.SERVICE_REQUEST_ID,TO_NUMBER(NULL)) INCIDENT_ID
262 FROM AHL_WORKORDERS WO,
263 AHL_VISITS_B VST,
264 AHL_VISIT_TASKS_B VTS,
265 WIP_DISCRETE_JOBS WIP
266 WHERE WIP.WIP_ENTITY_ID=WO.WIP_ENTITY_ID
267 AND WO.VISIT_ID = VST.VISIT_ID
268 AND WO.VISIT_ID = VTS.VISIT_ID(+)
269 AND WO.VISIT_TASK_ID = VTS.VISIT_TASK_ID(+)
270 AND WO.STATUS_CODE <> '22'
271 AND WORKORDER_ID = c_workorder_id;
272 l_prd_workorder_rec get_workorder_rec%ROWTYPE;
273
274 L_API_NAME CONSTANT VARCHAR2(30) := 'Get_WorkOrder_Attribs';
275 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
276 BEGIN
277 IF (l_log_procedure >= l_log_current_level) THEN
278 fnd_log.string(l_log_procedure,
279 L_DEBUG_KEY ||'.begin',
280 'At the start of PL SQL procedure.' ||
281 ' p_x_prd_workorder_rec.workorder_id : ' || p_x_prd_workorder_rec.workorder_id);
282 END IF;
283 p_x_prd_workorder_rec.DML_OPERATION := 'U';
284
285 OPEN get_workorder_rec(p_x_prd_workorder_rec.workorder_id);
286 FETCH get_workorder_rec INTO l_prd_workorder_rec;
287 IF get_workorder_rec%NOTFOUND THEN
288 FND_MESSAGE.SET_NAME('AHL','AHL_PRD_WO_NOT_FOUND');
289 FND_MSG_PUB.ADD;
290 CLOSE get_workorder_rec;
291 END IF;
292 CLOSE get_workorder_rec;
293 p_x_prd_workorder_rec.OBJECT_VERSION_NUMBER :=l_prd_workorder_rec.OBJECT_VERSION_NUMBER;
294 p_x_prd_workorder_rec.JOB_NUMBER :=l_prd_workorder_rec.JOB_NUMBER;
295 p_x_prd_workorder_rec.ROUTE_ID :=l_prd_workorder_rec.ROUTE_ID;
296 p_x_prd_workorder_rec.ORGANIZATION_ID :=l_prd_workorder_rec.ORGANIZATION_ID;
297 p_x_prd_workorder_rec.FIRM_PLANNED_FLAG :=l_prd_workorder_rec.FIRM_PLANNED_FLAG;
298 p_x_prd_workorder_rec.CLASS_CODE :=l_prd_workorder_rec.CLASS_CODE;
299 p_x_prd_workorder_rec.DEPARTMENT_ID :=l_prd_workorder_rec.DEPARTMENT_ID;
300 p_x_prd_workorder_rec.STATUS_CODE :=l_prd_workorder_rec.job_STATUS_CODE;
301 p_x_prd_workorder_rec.SCHEDULED_START_DATE :=l_prd_workorder_rec.SCHEDULED_START_DATE;
302 p_x_prd_workorder_rec.SCHEDULED_END_DATE :=l_prd_workorder_rec.SCHEDULED_END_DATE;
303 p_x_prd_workorder_rec.ACTUAL_START_DATE :=l_prd_workorder_rec.ACTUAL_START_DATE;
304 p_x_prd_workorder_rec.ACTUAL_END_DATE :=l_prd_workorder_rec.ACTUAL_END_DATE;
305 p_x_prd_workorder_rec.INVENTORY_ITEM_ID :=l_prd_workorder_rec.INVENTORY_ITEM_ID;
306 p_x_prd_workorder_rec.ITEM_INSTANCE_ID :=l_prd_workorder_rec.ITEM_INSTANCE_ID;
307 p_x_prd_workorder_rec.MASTER_WORKORDER_FLAG :=l_prd_workorder_rec.MASTER_WORKORDER_FLAG;
308 p_x_prd_workorder_rec.PROJECT_ID :=l_prd_workorder_rec.PROJECT_ID;
309 p_x_prd_workorder_rec.PROJECT_TASK_ID :=l_prd_workorder_rec.PROJECT_TASK_ID;
310 p_x_prd_workorder_rec.INCIDENT_ID :=l_prd_workorder_rec.INCIDENT_ID;
311
312 IF (l_log_procedure >= l_log_current_level) THEN
313 fnd_log.string(l_log_procedure,
314 L_DEBUG_KEY ||'.end',
315 'At the end of PL SQL procedure.');
316 END IF;
317 END Get_WorkOrder_Attribs;
318
319 -- end of the local procedure to set default attribs.
320
321 PROCEDURE Default_Missing_Attribs
322 ( p_x_task_rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type)
323 AS
324 L_API_NAME CONSTANT VARCHAR2(30) := 'Default_Missing_Attribs';
325 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
326 BEGIN
327 IF (l_log_procedure >= l_log_current_level) THEN
328 fnd_log.string(l_log_procedure,
329 L_DEBUG_KEY ||'.begin',
330 'At the start of PL SQL procedure.');
331 END IF;
332 IF p_x_task_rec.DURATION = Fnd_Api.G_MISS_NUM THEN
333 p_x_task_rec.DURATION := NULL;
334 ELSE
335 p_x_task_rec.DURATION := p_x_task_rec.DURATION;
336 END IF;
337
338 IF p_x_task_rec.PROJECT_TASK_ID = Fnd_Api.G_MISS_NUM THEN
339 p_x_task_rec.PROJECT_TASK_ID := NULL;
340 ELSE
341 p_x_task_rec.PROJECT_TASK_ID := p_x_task_rec.PROJECT_TASK_ID;
342 END IF;
343
344 IF p_x_task_rec.COST_PARENT_ID = Fnd_Api.G_MISS_NUM THEN
345 p_x_task_rec.COST_PARENT_ID := NULL;
346 ELSE
347 p_x_task_rec.COST_PARENT_ID := p_x_task_rec.COST_PARENT_ID;
348 END IF;
349
350 IF p_x_task_rec.MR_ROUTE_ID = Fnd_Api.G_MISS_NUM THEN
351 p_x_task_rec.MR_ROUTE_ID := NULL;
352 ELSE
353 p_x_task_rec.MR_ROUTE_ID := p_x_task_rec.MR_ROUTE_ID;
354 END IF;
355
356 IF p_x_task_rec.MR_ID = Fnd_Api.G_MISS_NUM THEN
357 p_x_task_rec.MR_ID := NULL;
358 ELSE
359 p_x_task_rec.MR_ID := p_x_task_rec.MR_ID;
360 END IF;
361
362 IF p_x_task_rec.UNIT_EFFECTIVITY_ID = Fnd_Api.G_MISS_NUM THEN
363 p_x_task_rec.UNIT_EFFECTIVITY_ID := NULL;
364 ELSE
365 p_x_task_rec.UNIT_EFFECTIVITY_ID := p_x_task_rec.UNIT_EFFECTIVITY_ID;
366 END IF;
367
368 IF p_x_task_rec.START_FROM_HOUR = Fnd_Api.G_MISS_NUM THEN
369 p_x_task_rec.START_FROM_HOUR := NULL;
370 ELSE
371 p_x_task_rec.START_FROM_HOUR := p_x_task_rec.START_FROM_HOUR;
372 END IF;
373
374 IF p_x_task_rec.PRIMARY_VISIT_TASK_ID = Fnd_Api.G_MISS_NUM THEN
375 p_x_task_rec.PRIMARY_VISIT_TASK_ID := NULL;
376 ELSE
377 p_x_task_rec.PRIMARY_VISIT_TASK_ID := p_x_task_rec.PRIMARY_VISIT_TASK_ID;
378 END IF;
379
380 IF p_x_task_rec.ORIGINATING_TASK_ID = Fnd_Api.G_MISS_NUM THEN
381 p_x_task_rec.ORIGINATING_TASK_ID := NULL;
382 ELSE
383 p_x_task_rec.ORIGINATING_TASK_ID := p_x_task_rec.ORIGINATING_TASK_ID;
384 END IF;
385
386 IF p_x_task_rec.SERVICE_REQUEST_ID = Fnd_Api.G_MISS_NUM THEN
387 p_x_task_rec.SERVICE_REQUEST_ID := NULL;
388 ELSE
389 p_x_task_rec.SERVICE_REQUEST_ID := p_x_task_rec.SERVICE_REQUEST_ID;
390 END IF;
391
392 IF p_x_task_rec.attribute_category = Fnd_Api.G_MISS_CHAR THEN
393 p_x_task_rec.attribute_category := NULL;
394 ELSE
395 p_x_task_rec.attribute_category := p_x_task_rec.attribute_category;
396 END IF;
397 --
398 IF (l_log_procedure >= l_log_current_level) THEN
399 fnd_log.string(l_log_procedure,
400 L_DEBUG_KEY ||'.end',
401 'At the end of PL SQL procedure.');
402 END IF;
403
404 END Default_Missing_Attribs;
405
406 --------------------------------------------------------------------
407 -- PROCEDURE
408 -- Get_Task_Details
409 --
410 -- PURPOSE
411 -- To display all task details for the update task UI screen
412 --------------------------------------------------------------------
413 PROCEDURE Get_Task_Details (
414 p_api_version IN NUMBER,
415 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
416 p_commit IN VARCHAR2 := Fnd_Api.g_false,
417 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
418 p_module_type IN VARCHAR2 :='JSP',
419 p_task_id IN NUMBER,
420 x_task_rec OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
421 x_return_status OUT NOCOPY VARCHAR2,
422 x_msg_count OUT NOCOPY NUMBER,
423 x_msg_data OUT NOCOPY VARCHAR2
424 )
425 IS
426 L_API_VERSION CONSTANT NUMBER := 1.0;
427 L_API_NAME CONSTANT VARCHAR2(30) := 'Get_Task_Details';
428 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
429
430 -- local variables defined for the procedure
431 l_task_rec AHL_VWP_RULES_PVT.Task_Rec_Type := NULL;
432 l_zone VARCHAR2(30);
433 l_sub_zone VARCHAR2(30);
434 l_uom VARCHAR2(30);
435 l_route_id NUMBER;
436 l_tol_after NUMBER;
437 l_tol_before NUMBER;
438 l_parent_num NUMBER;
439 l_origin_num NUMBER;
440 l_duration NUMBER;
441 l_proj_task_number NUMBER;
442 l_task_start_date DATE;
443 l_task_end_date DATE;
444 l_due_by_date DATE;
445 l_msg_count NUMBER;
446
447 -- Define local cursors
448 -- To find visit related information
449 CURSOR c_visit (x_id IN NUMBER) IS
450 SELECT * FROM AHL_VISITS_VL
451 WHERE VISIT_ID = x_id;
452 c_visit_rec c_visit%ROWTYPE;
453
454 -- To find task related information when its for a visit
455 /*
456 CURSOR c_task (x_T_id IN NUMBER) IS
457 SELECT * FROM AHL_SEARCH_VISIT_TASK_V
458 WHERE TASK_ID = x_T_id;
459 c_task_rec c_task%ROWTYPE;
460 */
461
462 CURSOR c_task_type (x_T_id IN NUMBER) IS
463 SELECT TASK_TYPE_CODE,MR_ID
464 FROM ahl_visit_tasks_b
465 WHERE VISIT_TASK_ID = x_T_id;
466 c_task_type_rec c_task_type%ROWTYPE;
467
468 CURSOR c_non_summary_task_details(x_T_id IN NUMBER) IS
469 SELECT AVTS.VISIT_ID VISIT_ID,
470 AVTS.VISIT_NUMBER VISIT_NUMBER,
471 AVTS.TEMPLATE_FLAG TEMPLATE_FLAG,
472 AVTS.STATUS_CODE VISIT_STATUS_CODE,
473 ATSK.VISIT_TASK_ID TASK_ID,
474 ATSK.VISIT_TASK_NUMBER TASK_NUMBER,
475 ATSKL.VISIT_TASK_NAME TASK_NAME,
476 ATSK.INVENTORY_ITEM_ID ITEM_ID,
477 MTSB.CONCATENATED_SEGMENTS ITEM_NAME,
478 ATSK.ITEM_ORGANIZATION_ID ITEM_ORGANIZATION_ID,
479 ATSK.INSTANCE_ID UNIT_ID,
480 ATSK.QUANTITY QUANTITY, --Added by rnahata for Issue 105
481 CSIS.SERIAL_NUMBER UNIT_NAME,
482 CSIS.INSTANCE_NUMBER INSTANCE_NUMBER, --Added by rnahata for Issue 105
483 CSIS.UNIT_OF_MEASURE UOM, --Added by rnahata for Issue 105
484 ATSK.MR_ROUTE_ID MR_ROUTE_ID,
485 AMRH.TITLE MR_NAME,
486 ARV.ROUTE_NO ROUTE_NAME,
487 ARV.ROUTE_TYPE_CODE ROUTE_TYPE_CODE,
488 LKUP4.MEANING ROUTE_TYPE,
489 AWO.WORKORDER_ID WORK_ORDER_ID,
490 AWO.WORKORDER_NAME WORKORDER_NAME,
491 AWO.STATUS_CODE WORKORDER_STATUS,
492 LKUP2.MEANING WORKORDER_STATUS_MEANING,
493 AWO.ACTUAL_START_DATE WORKORDER_START_DATE,
494 AWO.ACTUAL_END_DATE WORKORDER_END_DATE,
495 ATSK.SERVICE_REQUEST_ID SERVICE_REQ_ID,
496 SR.INCIDENT_NUMBER SERVICE_REQ_NAME,
497 ATSK.START_DATE_TIME START_DATE_TIME,
498 ATSK.END_DATE_TIME END_DATE_TIME,
499 ATSK.TASK_TYPE_CODE TASK_TYPE_CODE,
500 LKUP1.MEANING TASK_TYPE_NAME,
501 ATSK.STATUS_CODE TASK_STATUS_CODE,
502 LKUP3.MEANING TASK_STATUS_NAME,
503 ATSK.STAGE_ID STAGE_ID,
504 ASTG.STAGE_NUM STAGE_NUM,
505 ASTG.STAGE_NAME STAGE_NAME,
506 AUEF.DUE_DATE DUE_BY_DATE,
507 ATSK.DEPARTMENT_ID DEPARTMENT_ID,
508 BDPT.DESCRIPTION DEPARTMENT_NAME,
509 ATSK.ORIGINATING_TASK_ID ORIGINATING_TASK_ID,
510 ORIGTSK.VISIT_TASK_NUMBER ORIGINATING_TASK_NUMBER,
511 ORIGTSK.VISIT_TASK_NAME ORIGINATING_TASK_NAME,
512 ATSK.MR_ID MR_ID,
513 ATSK.UNIT_EFFECTIVITY_ID UNIT_EFFECTIVITY_ID,
514 AMRH.DESCRIPTION MR_DESCRIPTION
515 FROM AHL_VISITS_B AVTS,
516 AHL_VISIT_TASKS_B ATSK,
517 AHL_VISIT_TASKS_TL ATSKL,
518 AHL_VISIT_TASKS_VL ORIGTSK,
519 AHL_MR_ROUTES AMRR,
520 AHL_MR_HEADERS_VL AMRH,
521 AHL_UNIT_EFFECTIVITIES_B AUEF,
522 CSI_ITEM_INSTANCES CSIS,
523 CS_INCIDENTS_ALL_B SR,
524 BOM_DEPARTMENTS BDPT,
525 FND_LOOKUP_VALUES LKUP1,
526 FND_LOOKUP_VALUES LKUP2,
527 FND_LOOKUP_VALUES LKUP3,
528 FND_LOOKUP_VALUES LKUP4,
529 AHL_VWP_STAGES_VL ASTG,
530 MTL_SYSTEM_ITEMS_B_KFV MTSB,
531 AHL_ROUTES_B ARV,
532 AHL_WORKORDERS AWO
533 WHERE ATSK.INSTANCE_ID = CSIS.INSTANCE_ID (+)
534 AND ATSK.ORIGINATING_TASK_ID = ORIGTSK.VISIT_TASK_ID(+)
535 AND ATSK.MR_ROUTE_ID = AMRR.MR_ROUTE_ID (+)
536 AND AMRR.MR_HEADER_ID= AMRH.MR_HEADER_ID (+)
537 AND AMRR.ROUTE_ID = ARV.ROUTE_ID (+)
538 AND LKUP4.LOOKUP_TYPE (+) = 'AHL_ROUTE_TYPE'
539 AND LKUP4.LOOKUP_CODE (+) = ARV.ROUTE_TYPE_CODE
540 AND LKUP4.LANGUAGE (+) = userenv('LANG')
541 AND ATSK.SERVICE_REQUEST_ID=SR.INCIDENT_ID (+)
542 AND ATSK.UNIT_EFFECTIVITY_ID=AUEF.UNIT_EFFECTIVITY_ID(+)
543 AND ATSK. INVENTORY_ITEM_ID = MTSB.INVENTORY_ITEM_ID(+)
544 AND ATSK. ITEM_ORGANIZATION_ID = MTSB.ORGANIZATION_ID(+)
545 AND LKUP1.LOOKUP_TYPE(+) = 'AHL_VWP_TASK_TYPE'
546 AND LKUP1.LANGUAGE (+) = userenv('LANG')
547 AND LKUP1.LOOKUP_CODE(+) = ATSK.TASK_TYPE_CODE
548 AND LKUP3.LOOKUP_TYPE(+) = 'AHL_VWP_TASK_STATUS'
549 AND LKUP3.LOOKUP_CODE(+) = ATSK.STATUS_CODE
550 AND LKUP3.LANGUAGE (+) = userenv('LANG')
551 AND AVTS.VISIT_ID = ATSK.VISIT_ID
552 AND AVTS.TEMPLATE_FLAG = 'N'
553 AND ATSK.DEPARTMENT_ID = BDPT.DEPARTMENT_ID(+)
554 AND ATSK.VISIT_TASK_ID = AWO.VISIT_TASK_ID(+)
555 AND NVL(ATSK.STATUS_CODE,'X') <> 'DELETED'
556 AND ATSK.TASK_TYPE_CODE <> 'SUMMARY'
557 AND LKUP2.LOOKUP_TYPE(+) = 'AHL_JOB_STATUS'
558 AND LKUP2.LOOKUP_CODE(+) = AWO.STATUS_CODE
559 AND LKUP2.LANGUAGE (+) = userenv('LANG')
560 AND ATSK.STAGE_ID = ASTG.STAGE_ID(+)
561 AND ATSK.VISIT_TASK_ID = ATSKL.VISIT_TASK_ID
562 AND ATSKL.LANGUAGE(+) = USERENV('LANG')
563 AND ATSK.VISIT_TASK_ID = x_T_id;
564
565 c_task_rec c_non_summary_task_details%ROWTYPE;
566
567 CURSOR c_mr_task_details (x_T_id IN NUMBER) IS
568 SELECT AVTS.VISIT_ID VISIT_ID,
569 AVTS.VISIT_NUMBER VISIT_NUMBER,
570 AVTS.TEMPLATE_FLAG TEMPLATE_FLAG,
571 AVTS.STATUS_CODE VISIT_STATUS_CODE,
572 ATSK.VISIT_TASK_ID TASK_ID,
573 ATSK.VISIT_TASK_NUMBER TASK_NUMBER,
574 ATSKL.VISIT_TASK_NAME TASK_NAME,
575 ATSK.INVENTORY_ITEM_ID ITEM_ID,
576 MTSB.CONCATENATED_SEGMENTS ITEM_NAME,
577 ATSK.ITEM_ORGANIZATION_ID ITEM_ORGANIZATION_ID,
578 ATSK.INSTANCE_ID UNIT_ID,
579 ATSK.QUANTITY QUANTITY, --Added by rnahata for Issue 105
580 CSIS.SERIAL_NUMBER UNIT_NAME,
581 CSIS.INSTANCE_NUMBER INSTANCE_NUMBER, --Added by rnahata for Issue 105
582 CSIS.UNIT_OF_MEASURE UOM, --Added by rnahata for Issue 105
583 ATSK.MR_ROUTE_ID MR_ROUTE_ID,
584 AMRH.TITLE MR_NAME,
585 to_char(NULL) ROUTE_NAME,
586 to_char(NULL) ROUTE_TYPE_CODE,
587 to_char(NULL) ROUTE_TYPE,
588 AWO.WORKORDER_ID WORK_ORDER_ID,
589 AWO.WORKORDER_NAME WORKORDER_NAME,
590 AWO.STATUS_CODE WORKORDER_STATUS,
591 LKUP2.MEANING WORKORDER_STATUS_MEANING,
592 AWO.ACTUAL_START_DATE WORKORDER_START_DATE,
593 AWO.ACTUAL_END_DATE WORKORDER_END_DATE,
594 ATSK.SERVICE_REQUEST_ID SERVICE_REQ_ID,
595 SR.INCIDENT_NUMBER SERVICE_REQ_NAME,
596 ATSK.START_DATE_TIME START_DATE_TIME,
597 ATSK.END_DATE_TIME END_DATE_TIME,
598 ATSK.TASK_TYPE_CODE TASK_TYPE_CODE,
599 LKUP1.MEANING TASK_TYPE_NAME,
600 ATSK.STATUS_CODE TASK_STATUS_CODE,
601 LKUP3.MEANING TASK_STATUS_NAME,
602 ATSK.STAGE_ID STAGE_ID,
603 ASTG.STAGE_NUM STAGE_NUM,
604 ASTG.STAGE_NAME STAGE_NAME,
605 AUEF.DUE_DATE DUE_BY_DATE,
606 ATSK.DEPARTMENT_ID,
607 BDPT.DESCRIPTION DEPARTMENT_NAME,
608 ATSK.ORIGINATING_TASK_ID ORIGINATING_TASK_ID,
609 ORIGTSK.VISIT_TASK_NUMBER ORIGINATING_TASK_NUMBER,
610 ORIGTSK.VISIT_TASK_NAME ORIGINATING_TASK_NAME,
611 ATSK.MR_ID MR_ID,
612 ATSK.UNIT_EFFECTIVITY_ID UNIT_EFFECTIVITY_ID,
613 AMRH.DESCRIPTION MR_DESCRIPTION
614 FROM AHL_VISITS_B AVTS,
615 AHL_VISIT_TASKS_B ATSK,
616 AHL_VISIT_TASKS_TL ATSKL,
617 AHL_VISIT_TASKS_VL ORIGTSK,
618 AHL_MR_HEADERS_VL AMRH,
619 AHL_UNIT_EFFECTIVITIES_B AUEF,
620 CSI_ITEM_INSTANCES CSIS,
621 CS_INCIDENTS_ALL_B SR,
622 AHL_VWP_STAGES_VL ASTG,
623 BOM_DEPARTMENTS BDPT,
624 FND_LOOKUP_VALUES LKUP1,
625 FND_LOOKUP_VALUES LKUP2,
626 FND_LOOKUP_VALUES LKUP3,
627 MTL_SYSTEM_ITEMS_B_KFV MTSB,
628 AHL_WORKORDERS AWO
629 WHERE ATSK.INSTANCE_ID = CSIS.INSTANCE_ID (+)
630 AND ATSK.ORIGINATING_TASK_ID = ORIGTSK.VISIT_TASK_ID(+)
631 AND ATSK.SERVICE_REQUEST_ID = SR.INCIDENT_ID(+)
632 AND ATSK.UNIT_EFFECTIVITY_ID = AUEF.UNIT_EFFECTIVITY_ID(+)
633 AND ATSK.INVENTORY_ITEM_ID = MTSB.INVENTORY_ITEM_ID(+)
634 AND ATSK.ITEM_ORGANIZATION_ID = MTSB.ORGANIZATION_ID(+)
635 AND LKUP1.LOOKUP_TYPE(+) = 'AHL_VWP_TASK_TYPE'
636 AND LKUP1.LOOKUP_CODE(+) = ATSK.TASK_TYPE_CODE
637 AND LKUP1.LANGUAGE (+) = userenv('LANG')
638 AND LKUP3.LOOKUP_TYPE(+) = 'AHL_VWP_TASK_STATUS'
639 AND LKUP3.LOOKUP_CODE(+) = ATSK.STATUS_CODE
640 AND LKUP3.LANGUAGE (+) = userenv('LANG')
641 AND AVTS.VISIT_ID = ATSK.VISIT_ID
642 AND AVTS.TEMPLATE_FLAG = 'N'
643 AND ATSK.DEPARTMENT_ID = BDPT.DEPARTMENT_ID(+)
644 AND ATSK.VISIT_TASK_ID = AWO.VISIT_TASK_ID(+)
645 AND ATSK.MR_ID IS NOT NULL
646 AND NVL(ATSK.STATUS_CODE,'X') <> 'DELETED'
647 AND ATSK.TASK_TYPE_CODE = 'SUMMARY'
648 AND AMRH.MR_HEADER_ID = ATSK.MR_ID
649 AND LKUP2.LOOKUP_TYPE(+) = 'AHL_JOB_STATUS'
650 AND LKUP2.LOOKUP_CODE(+) = AWO.STATUS_CODE
651 AND LKUP2.LANGUAGE (+) = userenv('LANG')
652 AND ATSK.STAGE_ID = ASTG.STAGE_ID(+)
653 AND ATSK.VISIT_TASK_ID = ATSKL.VISIT_TASK_ID
654 AND ATSKL.LANGUAGE(+) = USERENV('LANG')
655 AND ATSK.VISIT_TASK_ID = x_T_id;
656
657 CURSOR c_sr_task_details (x_T_id IN NUMBER) IS
658 SELECT AVTS.VISIT_ID VISIT_ID,
659 AVTS.VISIT_NUMBER VISIT_NUMBER,
660 AVTS.TEMPLATE_FLAG TEMPLATE_FLAG,
661 AVTS.STATUS_CODE VISIT_STATUS_CODE,
662 ATSK.VISIT_TASK_ID TASK_ID,
663 ATSK.VISIT_TASK_NUMBER TASK_NUMBER,
664 ATSK.VISIT_TASK_NAME TASK_NAME,
665 ATSK.INVENTORY_ITEM_ID ITEM_ID,
666 MTSB.CONCATENATED_SEGMENTS ITEM_NAME,
667 ATSK.ITEM_ORGANIZATION_ID ITEM_ORGANIZATION_ID,
668 ATSK.INSTANCE_ID UNIT_ID,
669 ATSK.QUANTITY QUANTITY, --Added by rnahata for Issue 105
670 CSIS.SERIAL_NUMBER UNIT_NAME,
671 CSIS.INSTANCE_NUMBER INSTANCE_NUMBER, --Added by rnahata for Issue 105
672 CSIS.UNIT_OF_MEASURE UOM, --Added by rnahata for Issue 105
673 to_number(null) MR_ROUTE_ID,
674 to_char(NULL) MR_NAME,
675 to_char(NULL) ROUTE_NAME,
676 to_char(NULL) ROUTE_TYPE_CODE,
677 to_char(NULL) ROUTE_TYPE,
678 AWO.WORKORDER_ID WORK_ORDER_ID,
679 AWO.WORKORDER_NAME WORKORDER_NAME,
680 AWO.STATUS_CODE WORKORDER_STATUS,
681 LKUP3.MEANING WORKORDER_STATUS_MEANING,
682 AWO.ACTUAL_START_DATE WORKORDER_START_DATE,
683 AWO.ACTUAL_END_DATE WORKORDER_END_DATE,
684 ATSK.SERVICE_REQUEST_ID SERVICE_REQ_ID,
685 SR.INCIDENT_NUMBER SERVICE_REQ_NAME,
686 ATSK.START_DATE_TIME START_DATE_TIME,
687 ATSK.END_DATE_TIME END_DATE_TIME,
688 ATSK.TASK_TYPE_CODE TASK_TYPE_CODE,
689 LKUP1.MEANING TASK_TYPE_NAME,
690 ATSK.STATUS_CODE TASK_STATUS_CODE,
691 LKUP2.MEANING TASK_STATUS_NAME,
692 ATSK.STAGE_ID STAGE_ID,
693 ASTG.STAGE_NUM STAGE_NUM,
694 ASTG.STAGE_NAME STAGE_NAME,
695 to_date(NULL) DUE_BY_DATE,
696 ATSK.DEPARTMENT_ID DEPARTMENT_ID,
697 BDPT.DESCRIPTION DEPARTMENT_NAME,
698 ATSK.ORIGINATING_TASK_ID ORIGINATING_TASK_ID,
699 ORIGTSK.VISIT_TASK_NUMBER ORIGINATING_TASK_NUMBER,
700 ORIGTSK.VISIT_TASK_NAME ORIGINATING_TASK_NAME,
701 to_number(null) MR_ID,
702 ATSK.UNIT_EFFECTIVITY_ID UNIT_EFFECTIVITY_ID,
703 to_char(NULL) MR_DESCRIPTION
704 FROM AHL_VISITS_VL AVTS,
705 AHL_VISIT_TASKS_VL ATSK,
706 AHL_VISIT_TASKS_VL ORIGTSK,
707 CSI_ITEM_INSTANCES CSIS,
708 CS_INCIDENTS_ALL_B SR,
709 AHL_VWP_STAGES_VL ASTG,
710 BOM_DEPARTMENTS BDPT,
711 FND_LOOKUP_VALUES_VL LKUP1,
712 FND_LOOKUP_VALUES_VL LKUP2,
713 FND_LOOKUP_VALUES_VL LKUP3,
714 MTL_SYSTEM_ITEMS_B_KFV MTSB,
715 AHL_WORKORDERS AWO
716 WHERE ATSK.INSTANCE_ID = CSIS.INSTANCE_ID (+)
717 AND ATSK.ORIGINATING_TASK_ID = ORIGTSK.VISIT_TASK_ID(+)
718 AND ATSK.SERVICE_REQUEST_ID = SR.INCIDENT_ID(+)
719 AND ATSK.INVENTORY_ITEM_ID = MTSB.INVENTORY_ITEM_ID(+)
720 AND ATSK.ITEM_ORGANIZATION_ID = MTSB.ORGANIZATION_ID(+)
721 AND ATSK.VISIT_TASK_ID = AWO.VISIT_TASK_ID(+)
722 AND LKUP1.LOOKUP_TYPE(+) = 'AHL_VWP_TASK_TYPE'
723 AND LKUP1.LOOKUP_CODE(+) = ATSK.TASK_TYPE_CODE
724 AND LKUP2.LOOKUP_TYPE(+) = 'AHL_VWP_TASK_STATUS'
725 AND LKUP2.LOOKUP_CODE(+) = ATSK.STATUS_CODE
726 AND LKUP3.LOOKUP_TYPE(+) = 'AHL_JOB_STATUS'
727 AND LKUP3.LOOKUP_CODE(+) = AWO.STATUS_CODE
728 AND AVTS.VISIT_ID = ATSK.VISIT_ID
729 AND AVTS.TEMPLATE_FLAG = 'N'
730 AND ATSK.DEPARTMENT_ID = BDPT.DEPARTMENT_ID(+)
731 AND ATSK.MR_ID IS NULL
732 AND NVL(ATSK.STATUS_CODE,'X') <> 'DELETED'
733 AND ATSK.TASK_TYPE_CODE = 'SUMMARY'
734 AND ATSK.STAGE_ID = ASTG.STAGE_ID(+)
735 AND ATSK.VISIT_TASK_ID = x_T_id;
736
737 -- To find all task related information which is not in visit/template search views
738 CURSOR c_task_data(p_task_id IN NUMBER) IS
739 SELECT T1.*, T2.TEMPLATE_FLAG, T2.ORGANIZATION_ID
740 FROM AHL_VISIT_TASKS_VL T1, AHL_VISITS_VL T2
741 WHERE T1.visit_task_id = p_task_id
742 AND T1.VISIT_ID = T2.VISIT_ID;
743 c_task_data_rec c_task_data%ROWTYPE;
744
745 -- To find task's unit effectivity related information
746 CURSOR c_unit_effectivity (p_ue_id IN NUMBER) IS
747 SELECT MR_Interval_Id, Due_Date FROM AHL_UNIT_EFFECTIVITIES_VL
748 WHERE (STATUS_CODE IS NULL OR STATUS_CODE IN ('INIT-DUE', 'DEFERRED'))
749 AND UNIT_EFFECTIVITY_ID = p_ue_id;
750 c_unit_effectivity_rec c_unit_effectivity%ROWTYPE;
751
752 -- To find task's route related information
753 CURSOR c_zone (p_route_id IN NUMBER) IS
754 /*
755 SELECT ZONE_CODE, SUB_ZONE_CODE, TIME_SPAN FROM AHL_ROUTES_V
756 WHERE ROUTE_ID = p_route_id;
757 */
758 /*
759 Modified by rnahata for Bug 6447221 / 6512871
760 Removed timespan fron cursor, since task duration will be calculated
761 based on route time span as well as resource requirements
762 */
763 -- AnRaj: Changed query for perf issue#4, Bug 4919465
764 SELECT ZONE_CODE, SUB_ZONE_CODE
765 FROM AHL_ROUTES_APP_V
766 WHERE ROUTE_ID = p_route_id;
767
768 -- To find task's route related information
769 CURSOR c_route (p_mr_route_id IN NUMBER) IS
770 SELECT A.ROUTE_ID
771 FROM AHL_MR_ROUTES A, AHL_MR_HEADERS_APP_V B
772 WHERE A.MR_HEADER_ID=B.MR_HEADER_ID
773 AND A.MR_ROUTE_ID = p_mr_route_id;
774
775 -- To find task's unit effectivity tolerance related information
776 CURSOR c_tolerance (p_interval_id IN NUMBER) IS
777 SELECT Tolerance_Before, Tolerance_After
778 FROM Ahl_MR_Intervals_APP_V WHERE MR_Interval_Id=p_interval_id;
779 c_tolerance_rec c_tolerance%ROWTYPE;
780
781 -- To find task's unit effectivity unit of measure related information
782 /* CURSOR c_unitofmeasure (l_tol_before IN NUMBER, l_tol_after IN NUMBER) IS
783 SELECT UOM.Unit_of_Measure
784 FROM MTL_Units_Of_Measure_vl UOM, CS_Counters C, Ahl_MR_Intervals_APP_V MRI
785 WHERE UOM.Uom_Code = C.Uom_Code AND C.Counter_Id = MRI.Counter_Id AND
786 Tolerance_Before = l_tol_before AND Tolerance_After = l_tol_after;
787 */
788 -- AnRaj: Changed query for perf issue#5, Bug 4919465
789 CURSOR c_unitofmeasure (p_interval_id IN NUMBER) IS
790 SELECT UOM.Unit_of_Measure
791 FROM MTL_Units_Of_Measure UOM,
792 csi_counter_template_b C,
793 AHL_MR_INTERVALS MRI
794 WHERE UOM.Uom_Code = C.Uom_Code
795 AND C.Counter_Id = MRI.Counter_Id
796 AND MR_INTERVAL_ID = p_interval_id;
797 c_unitofmeasure_rec c_unitofmeasure%ROWTYPE;
798
799 -- To find task number for cost_parent_id and originating task id
800 CURSOR c_number(x_id IN NUMBER) IS
801 SELECT Visit_Task_Number FROM Ahl_Visit_Tasks_B
802 WHERE Visit_Task_Id = x_id;
803
804 -- To find project task nubmer for project's task
805 CURSOR c_proj_task (x_id IN NUMBER) IS
806 SELECT TASK_NUMBER FROM PA_TASKS WHERE TASK_ID = x_id;
807
808 -- Added by Senthil for 11.5.10 enhancements.
809 CURSOR c_workorders (p_visit_id IN NUMBER, p_visit_task_id IN NUMBER)
810 IS
811 SELECT
812 /* scheduled_start_date,
813 scheduled_end_date
814 FROM
815 ahl_workorders_v
816 WHERE visit_id = p_visit_id
817 AND visit_task_id = p_visit_task_id;
818 */
819 -- AnRaj: Changed query for perf issue#2, Bug 4919465
820 wdj.scheduled_start_date scheduled_start_date,
821 wdj.scheduled_completion_date scheduled_end_date
822 FROM wip_discrete_jobs wdj,
823 ahl_workorders wo
824 WHERE wdj.wip_entity_id = wo.wip_entity_id
825 AND visit_id = p_visit_id
826 AND visit_task_id = p_visit_task_id;
827
828 BEGIN
829 IF (l_log_procedure >= l_log_current_level) THEN
830 fnd_log.string(l_log_procedure,
831 L_DEBUG_KEY ||'.begin',
832 'At the start of PL SQL procedure.' ||
833 ', p_task_id = ' || p_task_id);
834 END IF;
835
836 -- Standard start of API savepoint
837 SAVEPOINT Get_Task_Details;
838
839 IF Fnd_Api.to_boolean (p_init_msg_list) THEN
840 Fnd_Msg_Pub.initialize;
841 END IF;
842
843 -- Initialize API return status to success
844 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
845
846 -- Standard call to check for call compatibility.
847 IF NOT Fnd_Api.compatible_api_call(
848 l_api_version,
849 p_api_version,
850 l_api_name,
851 G_PKG_NAME
852 ) THEN
853 RAISE Fnd_Api.g_exc_unexpected_error;
854 END IF;
855
856 ------------------------Start of API Body------------------------------------
857 ------------------------Cursor------------------------------------
858
859 -- Cursor for task related information in search task view
860 /*
861 OPEN c_task(p_task_id);
862 FETCH c_task INTO c_task_rec;
863 CLOSE c_task;
864 */
865
866 OPEN c_task_type(p_task_id);
867 FETCH c_task_type INTO c_task_type_rec;
868 CLOSE c_task_type;
869
870 IF c_task_type_rec.task_type_code <> 'SUMMARY' THEN
871 OPEN c_non_summary_task_details(p_task_id);
872 FETCH c_non_summary_task_details INTO c_task_rec;
873 CLOSE c_non_summary_task_details;
874 ELSIF c_task_type_rec.task_type_code = 'SUMMARY' AND c_task_type_rec.mr_id IS NOT NULL THEN
875 OPEN c_mr_task_details(p_task_id);
876 FETCH c_mr_task_details INTO c_task_rec;
877 CLOSE c_mr_task_details;
878 ELSIF c_task_type_rec.task_type_code = 'SUMMARY' AND c_task_type_rec.mr_id IS NULL THEN
879 OPEN c_sr_task_details(p_task_id);
880 FETCH c_sr_task_details INTO c_task_rec;
881 CLOSE c_sr_task_details;
882 END IF;
883
884 -- Cursor for task related information not in search task view
885 OPEN c_task_data(p_task_id);
886 FETCH c_task_data INTO c_task_data_rec;
887 CLOSE c_task_data;
888
889 -- Cursor to find visit information
890 OPEN c_visit (c_task_data_rec.visit_id);
891 FETCH c_visit INTO c_visit_rec;
892 CLOSE c_visit;
893
894 -- For Debug Messages
895 IF (l_log_statement >= l_log_current_level) THEN
896 fnd_log.string(l_log_statement,
897 L_DEBUG_KEY,
898 ': task id = ' || p_task_id ||
899 ': version, task name, task number = ' || c_task_data_rec.object_version_number || '---' || c_task_rec.task_name || '---' || c_task_rec.task_number ||
900 ': item id, org id, itemname = ' || c_task_rec.item_id || '-' || c_task_rec.item_organization_id || '-' || c_task_rec.item_name ||
901 ': mr_routeid, route_name, mr_name= ' || c_task_rec.mr_route_id || '-' || c_task_rec.route_name || '-' || c_task_rec.mr_name ||
902 ': serial number = ' || c_task_rec.unit_name ||
903 ': instance = ' || c_task_rec.instance_number ||
904 ': quantity = ' || c_task_rec.quantity ||
905 ': uom = ' || c_task_rec.uom ||
906 ': servicenubmer, starthour, = ' || c_task_rec.service_req_name || '-' || c_task_data_rec.start_from_hour ||
907 ': l_duration = ' || l_duration ||
908 ': costid, originatingid = ' || c_task_data_rec.cost_parent_id || '-' || c_task_data_rec.originating_task_id ||
909 ': task type code, value = ' || c_task_rec.task_type_code || '-' || c_task_rec.task_type_name ||
910 ': department_id = ' || c_task_data_rec.department_id);
911 END IF;
912
913 -- Check the Task Type code
914 -- For PLANNED in case then get required data for Unit Effectivity
915 IF c_task_rec.TASK_TYPE_CODE = 'PLANNED' THEN
916 OPEN c_unit_effectivity(c_task_data_rec.unit_effectivity_id);
917 FETCH c_unit_effectivity INTO c_unit_effectivity_rec;
918 CLOSE c_unit_effectivity;
919
920 OPEN c_tolerance (c_unit_effectivity_rec.mr_interval_id);
921 FETCH c_tolerance INTO c_tolerance_rec;
922 CLOSE c_tolerance;
923
924 OPEN c_unitofmeasure (c_unit_effectivity_rec.mr_interval_id);
925 FETCH c_unitofmeasure INTO c_unitofmeasure_rec;
926 CLOSE c_unitofmeasure;
927
928 l_tol_after := c_tolerance_rec.tolerance_after ;
929 l_tol_before := c_tolerance_rec.tolerance_before;
930 l_due_by_date := TRUNC(c_unit_effectivity_rec.due_date) ;
931 l_uom := c_unitofmeasure_rec.unit_of_measure ;
932 ELSE
933 l_tol_after := NULL ;
934 l_tol_before := NULL ;
935 l_due_by_date := NULL ;
936 l_uom := NULL ;
937 END IF;
938
939 IF c_task_rec.TASK_TYPE_CODE = 'PLANNED' OR c_task_rec.TASK_TYPE_CODE = 'UNPLANNED' THEN
940 OPEN c_route(c_task_rec.mr_route_id);
941 FETCH c_route INTO l_route_id;
942 CLOSE c_route;
943
944 OPEN c_zone(l_route_id);
945 FETCH c_zone INTO l_zone, l_sub_zone ;
946 CLOSE c_zone;
947 /*
948 Added by rnahata for Bug 6447221 / 6512871
949 Task duration will be calculated based on route time span as well as resource requirements
950 */
951 l_duration := AHL_VWP_TIMES_PVT.Get_task_duration(c_task_rec.quantity,l_route_id);
952 ELSE
953 l_zone := NULL;
954 l_sub_zone := NULL;
955 l_duration := c_task_data_rec.duration;
956 END IF;
957
958 -- For finding visit task number for originating task id
959 IF c_task_data_rec.originating_task_id IS NOT NULL AND c_task_data_rec.originating_task_id <> Fnd_Api.g_miss_num THEN
960 OPEN c_number(c_task_data_rec.originating_task_id);
961 FETCH c_number INTO l_origin_num;
962 CLOSE c_number;
963 ELSE
964 l_origin_num := NULL;
965 END IF;
966
967 -- For finding visit task number for cost parent id
968 IF c_task_data_rec.cost_parent_id IS NOT NULL AND c_task_data_rec.cost_parent_id <> Fnd_Api.g_miss_num THEN
969 OPEN c_number(c_task_data_rec.cost_parent_id);
970 FETCH c_number INTO l_parent_num;
971 CLOSE c_number;
972 ELSE
973 l_parent_num := NULL;
974 END IF;
975
976 -- Added by Senthil for 11.5.10 Changes
977 IF ( upper(c_task_rec.visit_status_code) = 'PLANNING' or
978 (upper(c_task_rec.visit_status_code) = 'PARTIALLY RELEASED' and upper(c_task_rec.task_status_code) = 'PLANNING')) THEN
979 --Fetch directly from visit task record
980 l_task_start_date := c_task_rec.START_DATE_TIME;
981 l_task_end_date := c_task_rec.END_DATE_TIME;
982
983 ELSE
984 --Fetch from the workorder
985 OPEN c_workorders(c_task_rec.visit_id,p_task_id);
986 FETCH c_workorders INTO l_task_start_date,l_task_end_date;
987 CLOSE c_workorders;
988
989 -- Added by sowsubra on July 24, 2007 for B6032334
990 OPEN c_proj_task(c_task_data_rec.project_task_id);
991 FETCH c_proj_task INTO l_proj_task_number;
992 CLOSE c_proj_task;
993 -- End Changes by sowsubra on July 24, 2007 for B6032334
994
995 END IF;
996
997 -- For Debug Messages
998 IF (l_log_statement >= l_log_current_level) THEN
999 fnd_log.string(l_log_statement,
1000 L_DEBUG_KEY,
1001 'l_origin_num = ' || l_origin_num ||
1002 'l_parent_num = ' || l_parent_num ||
1003 'l_task_start_date = ' || l_task_start_date ||
1004 'l_task_end_date = '|| l_task_end_date ||
1005 'l_proj_task_number = ' || l_proj_task_number );
1006 END IF;
1007
1008 -- For assigning all values of visit to output record type
1009 l_task_rec.visit_id := c_task_rec.visit_id ;
1010 l_task_rec.template_flag := c_task_rec.template_flag ;
1011 l_task_rec.visit_task_id := c_task_rec.task_id ;
1012 l_task_rec.visit_task_number := c_task_rec.task_number ;
1013 l_task_rec.visit_task_name := c_task_rec.task_name ;
1014 l_task_rec.object_version_number := c_task_data_rec.object_version_number ;
1015 l_task_rec.duration := l_duration ;
1016 l_task_rec.inventory_item_id := c_task_rec.item_id ;
1017 l_task_rec.item_organization_id := c_task_rec.item_organization_id ;
1018 l_task_rec.item_name := c_task_rec.item_name ;
1019 l_task_rec.department_id := c_task_rec.department_id ;
1020 l_task_rec.dept_name := c_task_rec.department_name;
1021 l_task_rec.serial_number := c_task_rec.unit_name ;
1022 l_task_rec.mr_route_id := c_task_rec.mr_route_id ;
1023 l_task_rec.route_number := c_task_rec.route_name ;
1024 l_task_rec.mr_title := c_task_rec.mr_name ;
1025 l_task_rec.mr_id := c_task_rec.mr_id;
1026 l_task_rec.zone_name := l_zone;
1027 l_task_rec.sub_zone_name := l_sub_zone;
1028 l_task_rec.tolerance_after := l_tol_after;
1029 l_task_rec.tolerance_before := l_tol_before;
1030 l_task_rec.tolerance_UOM := l_uom;
1031 l_task_rec.service_request_number := c_task_rec.service_req_name;
1032 l_task_rec.start_from_hour := c_task_data_rec.start_from_hour;
1033 l_task_rec.cost_parent_number := l_parent_num ;
1034 l_task_rec.orginating_task_number := l_origin_num ;
1035 l_task_rec.task_type_code := c_task_rec.task_type_code ;
1036 l_task_rec.task_type_value := c_task_rec.task_type_name;
1037 l_task_rec.due_by_date := l_due_by_date;
1038 --Post 11.5.10 Changed by cxcheng
1039 l_task_rec.task_start_date := l_task_start_date ;
1040 l_task_rec.task_end_date := l_task_end_date ;
1041 l_task_rec.description := c_task_data_rec.description ;
1042 l_task_rec.project_task_id := c_task_data_rec.project_task_id ;
1043 l_task_rec.project_task_number := l_proj_task_number ;
1044 l_task_rec.WO_Name := c_task_rec.workorder_name ;
1045 l_task_rec.WO_Status := c_task_rec.workorder_status_meaning ;
1046 l_task_rec.WO_Start_Date := c_task_rec.workorder_start_date ;
1047 l_task_rec.WO_End_Date := c_task_rec.workorder_end_date ;
1048 -- Post 11.5.10 Changes by Senthil.
1049 l_task_rec.STAGE_ID := c_task_rec.STAGE_ID;
1050 l_task_rec.STAGE_NAME := c_task_rec.STAGE_NAME;
1051 l_task_rec.TASK_TYPE_CODE := c_task_rec.TASK_TYPE_CODE;
1052 l_task_rec.TASK_TYPE_VALUE := c_task_rec.TASK_TYPE_NAME;
1053 l_task_rec.TASK_STATUS_CODE := c_task_rec.TASK_STATUS_CODE;
1054 l_task_rec.TASK_STATUS_VALUE := c_task_rec.TASK_STATUS_NAME;
1055 l_task_rec.instance_id := c_task_data_rec.instance_id;
1056 -- Begin changes by rnahata for Issue 105
1057 l_task_rec.quantity := c_task_rec.quantity;
1058 l_task_rec.UOM := c_task_rec.uom;
1059 l_task_rec.Instance_number := c_task_rec.instance_number;
1060 -- End changes by rnahata for Issue 105
1061
1062 x_task_rec := l_task_rec;
1063
1064 ------------------------End of API Body------------------------------------
1065 -- Standard call to get message count and if count is 1, get message info
1066 /* Fnd_Msg_Pub.Count_And_Get
1067 ( p_count => x_msg_count,
1068 p_data => x_msg_data,
1069 p_encoded => Fnd_Api.g_false); */
1070
1071 --Standard check to count messages
1072 l_msg_count := Fnd_Msg_Pub.count_msg;
1073
1074 IF l_msg_count > 0 THEN
1075 x_msg_count := l_msg_count;
1076 x_return_status := Fnd_Api.G_RET_STS_ERROR;
1077 RAISE Fnd_Api.G_EXC_ERROR;
1078 END IF;
1079
1080 -- Debug info.
1081 IF (l_log_procedure >= l_log_current_level) THEN
1082 fnd_log.string(l_log_procedure,
1083 L_DEBUG_KEY ||'.end',
1084 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
1085 END IF;
1086 EXCEPTION
1087 WHEN Fnd_Api.G_EXC_ERROR THEN
1088 x_return_status := Fnd_Api.G_RET_STS_ERROR;
1089 ROLLBACK TO Get_Task_Details;
1090 Fnd_Msg_Pub.count_and_get( p_count => x_msg_count,
1091 p_data => x_msg_data,
1092 p_encoded => Fnd_Api.g_false);
1093 WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
1094 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
1095 ROLLBACK TO Get_Task_Details;
1096 Fnd_Msg_Pub.count_and_get( p_count => x_msg_count,
1097 p_data => x_msg_data,
1098 p_encoded => Fnd_Api.g_false);
1099 WHEN OTHERS THEN
1100 ROLLBACK TO Get_Task_Details;
1101 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
1102 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
1103 THEN
1104 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
1105 END IF;
1106 Fnd_Msg_Pub.count_and_get (
1107 p_encoded => Fnd_Api.g_false,
1108 p_count => x_msg_count,
1109 p_data => x_msg_data );
1110 END Get_Task_Details;
1111
1112 --------------------------------------------------------------------
1113 -- PROCEDURE
1114 -- Create_Task
1115 -- PURPOSE
1116 -- To create all types of tasks i.e Unassociated/Summary/Unplanned/Planned
1117 --------------------------------------------------------------------
1118 PROCEDURE Create_Task (
1119 p_api_version IN NUMBER,
1120 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
1121 p_commit IN VARCHAR2 := Fnd_Api.g_false,
1122 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
1123 p_module_type IN VARCHAR2 := 'JSP',
1124 p_x_task_rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
1125 x_return_status OUT NOCOPY VARCHAR2,
1126 x_msg_count OUT NOCOPY NUMBER,
1127 x_msg_data OUT NOCOPY VARCHAR2
1128 )
1129 IS
1130 -- Define local variables
1131 L_API_VERSION CONSTANT NUMBER := 1.0;
1132 L_API_NAME CONSTANT VARCHAR2(30) := 'CREATE TASK';
1133 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
1134 l_msg_count NUMBER;
1135 l_msg_data VARCHAR2(2000);
1136 l_return_status VARCHAR2(1);
1137 l_task_rec AHL_VWP_RULES_PVT.Task_Rec_Type := p_x_task_rec;
1138
1139 -- To find visit related information
1140 CURSOR c_visit(x_id IN NUMBER) IS
1141 SELECT * FROM AHL_VISITS_VL
1142 WHERE VISIT_ID = x_id;
1143 c_visit_rec c_visit%ROWTYPE;
1144 BEGIN
1145 IF (l_log_procedure >= l_log_current_level) THEN
1146 fnd_log.string(l_log_procedure,
1147 L_DEBUG_KEY ||'.begin',
1148 'At the start of PL SQL procedure.');
1149 END IF;
1150
1151 --------------------- initialize -----------------------
1152 SAVEPOINT Create_Task;
1153
1154 -- Initialize message list if p_init_msg_list is set to TRUE.
1155 IF Fnd_Api.to_boolean(p_init_msg_list)
1156 THEN
1157 Fnd_Msg_Pub.initialize;
1158 END IF;
1159
1160 -- Initialize API return status to success
1161 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
1162
1163 -- Standard call to check for call compatibility.
1164 IF NOT Fnd_Api.COMPATIBLE_API_CALL(l_api_version,
1165 p_api_version,
1166 l_api_name,G_PKG_NAME)
1167 THEN
1168 RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
1169 END IF;
1170
1171 --------------------Start of API Body-----------------------------------
1172 -------------------Cursor values------------------------------------
1173 OPEN c_visit(l_task_rec.visit_id);
1174 FETCH c_visit INTO c_visit_rec;
1175 CLOSE c_visit;
1176
1177 IF (l_log_statement >= l_log_current_level) THEN
1178 fnd_log.string(l_log_statement,
1179 L_DEBUG_KEY,
1180 'Visit Id = ' || c_visit_rec.visit_id ||
1181 ', Status Code = ' || c_visit_rec.status_code);
1182 END IF;
1183
1184 IF c_visit_rec.status_code IN ('CLOSED','CANCELLED') THEN
1185 Fnd_Message.SET_NAME('AHL','AHL_VWP_NOT_USE_VISIT');
1186 Fnd_Msg_Pub.ADD;
1187 RAISE Fnd_Api.G_EXC_ERROR;
1188 ELSE
1189 IF l_task_rec.task_type_code = 'SUMMARY' THEN
1190 IF (l_log_statement >= l_log_current_level) THEN
1191 fnd_log.string(l_log_statement,
1192 L_DEBUG_KEY,
1193 'Before Calling to Create_Summary_Task, TASK TYPE = ' || l_task_rec.task_type_code);
1194 END IF;
1195 Create_Summary_Task
1196 (
1197 p_api_version => l_api_version,
1198 p_init_msg_list => p_init_msg_list,
1199 p_commit => Fnd_Api.g_false,
1200 p_validation_level => p_validation_level,
1201 p_module_type => p_module_type,
1202 p_x_task_rec => l_task_rec,
1203 x_return_status => l_return_status,
1204 x_msg_count => l_msg_count,
1205 x_msg_data => l_msg_data
1206 );
1207
1208 IF (l_log_statement >= l_log_current_level) THEN
1209 fnd_log.string(l_log_statement,
1210 L_DEBUG_KEY,
1211 'After Calling Create_Summary_Task' ||
1212 ', TASK ID = ' || l_task_rec.visit_task_id ||
1213 ', TASK NUMBER = ' || l_task_rec.visit_task_number ||
1214 ', Return Status = ' || l_return_status );
1215 END IF;
1216 -- set OUT value
1217 p_x_task_rec.Visit_Task_ID := l_task_rec.Visit_Task_ID;
1218 p_x_task_rec.Visit_Task_Number := l_task_rec.Visit_Task_Number;
1219 ELSIF l_task_rec.task_type_code = 'PLANNED' THEN
1220 -- Call AHL_VWP_PLAN_TASKS_PVT
1221 IF (l_log_statement >= l_log_current_level) THEN
1222 fnd_log.string(l_log_statement,
1223 L_DEBUG_KEY,
1224 'Before Calling to AHL_VWP_PLAN_TASKS_PVT.Create_Planned_Task, TASK TYPE = ' || l_task_rec.task_type_code);
1225 END IF;
1226 AHL_VWP_PLAN_TASKS_PVT.Create_Planned_Task (
1227 p_api_version => l_api_version,
1228 p_init_msg_list => p_init_msg_list,
1229 p_commit => Fnd_Api.g_false,
1230 p_validation_level => p_validation_level,
1231 p_module_type => p_module_type,
1232 p_x_task_rec => l_task_rec,
1233 x_return_status => l_return_status,
1234 x_msg_count => l_msg_count,
1235 x_msg_data => l_msg_data
1236 );
1237 IF (l_log_statement >= l_log_current_level) THEN
1238 fnd_log.string(l_log_statement,
1239 L_DEBUG_KEY,
1240 'After Calling AHL_VWP_PLAN_TASKS_PVT.Create_Planned_Task' ||
1241 ', TASK ID = ' || l_task_rec.visit_task_id ||
1242 ', TASK NUMBER = ' || l_task_rec.visit_task_number ||
1243 ', Return Status = ' || l_return_status );
1244 END IF;
1245 ELSIF l_task_rec.task_type_code = 'UNPLANNED' THEN
1246 -- Call AHL_VWP_UNPLAN_TASKS_PVT
1247 IF (l_log_statement >= l_log_current_level) THEN
1248 fnd_log.string(l_log_statement,
1249 L_DEBUG_KEY,
1250 'Before Calling AHL_VWP_UNPLAN_TASKS_PVT.Create_Unplanned_Task, TASK TYPE = ' || l_task_rec.task_type_code);
1251 END IF;
1252 AHL_VWP_UNPLAN_TASKS_PVT.Create_Unplanned_Task (
1253 p_api_version => l_api_version,
1254 p_init_msg_list => p_init_msg_list,
1255 p_commit => Fnd_Api.g_false,
1256 p_validation_level => p_validation_level,
1257 p_module_type => p_module_type,
1258 p_x_task_rec => l_task_rec,
1259 x_return_status => l_return_status,
1260 x_msg_count => l_msg_count,
1261 x_msg_data => l_msg_data
1262 );
1263 IF (l_log_statement >= l_log_current_level) THEN
1264 fnd_log.string(l_log_statement,
1265 L_DEBUG_KEY,
1266 'After Calling AHL_VWP_UNPLAN_TASKS_PVT.Create_Unplanned_Task' ||
1267 ', TASK ID = ' || l_task_rec.visit_task_id ||
1268 ', TASK NUMBER = ' || l_task_rec.visit_task_number ||
1269 ', Return Status = ' || l_return_status );
1270 END IF;
1271 ELSE
1272 IF (l_log_statement >= l_log_current_level) THEN
1273 fnd_log.string(l_log_statement,
1274 L_DEBUG_KEY,
1275 'Before Calling Create_Unassociated_Task, TASK TYPE = ' || l_task_rec.task_type_code);
1276 END IF;
1277 Create_Unassociated_Task
1278 (
1279 p_api_version => l_api_version,
1280 p_init_msg_list => p_init_msg_list,
1281 p_commit => Fnd_Api.g_false,
1282 p_validation_level => p_validation_level,
1283 p_module_type => p_module_type,
1284 p_x_task_rec => l_task_rec,
1285 x_return_status => l_return_status,
1286 x_msg_count => l_msg_count,
1287 x_msg_data => l_msg_data
1288 );
1289 -- set OUT value
1290 p_x_task_rec.Visit_Task_ID := l_task_rec.Visit_Task_ID;
1291 p_x_task_rec.Visit_Task_Number := l_task_rec.Visit_Task_Number;
1292 IF (l_log_statement >= l_log_current_level) THEN
1293 fnd_log.string(l_log_statement,
1294 L_DEBUG_KEY,
1295 'After Calling Create_Unassociated_Task' ||
1296 'Task Id = ' || l_task_rec.visit_task_id ||
1297 'Task Number = ' || l_task_rec.visit_task_number ||
1298 'Return Status = ' || l_return_status );
1299 END IF;
1300 END IF; -- task type code check
1301 END IF; -- Visit check
1302
1303 -- post 115.10 changes start
1304
1305 IF c_visit_rec.STATUS_CODE = 'RELEASED' THEN
1306 UPDATE AHL_VISITS_B
1307 SET STATUS_CODE = 'PARTIALLY RELEASED',
1308 OBJECT_VERSION_NUMBER = OBJECT_VERSION_NUMBER +1
1309 WHERE VISIT_ID =c_visit_rec.VISIT_ID ;
1310 END IF;
1311
1312 -- post 115.10 changes end
1313
1314 --------------------End of API Body-------------------------------------
1315 --Standard check to count messages
1316 l_msg_count := Fnd_Msg_Pub.count_msg;
1317
1318 IF l_msg_count > 0 OR l_return_status <> Fnd_Api.g_ret_sts_success THEN
1319 x_msg_count := l_msg_count;
1320 x_return_status := Fnd_Api.G_RET_STS_ERROR;
1321 RAISE Fnd_Api.G_EXC_ERROR;
1322 END IF;
1323
1324 --Standard check for commit
1325 IF Fnd_Api.TO_BOOLEAN(p_commit) THEN
1326 COMMIT;
1327 END IF;
1328
1329 IF (l_log_procedure >= l_log_current_level) THEN
1330 fnd_log.string(l_log_procedure,
1331 L_DEBUG_KEY ||'.end',
1332 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
1333 END IF;
1334
1335 EXCEPTION
1336 WHEN Fnd_Api.g_exc_error THEN
1337 ROLLBACK TO Create_Task;
1338 x_return_status := Fnd_Api.g_ret_sts_error;
1339 Fnd_Msg_Pub.count_and_get(
1340 p_encoded => Fnd_Api.g_false,
1341 p_count => x_msg_count,
1342 p_data => x_msg_data
1343 );
1344 WHEN Fnd_Api.g_exc_unexpected_error THEN
1345 ROLLBACK TO Create_Task;
1346 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
1347 Fnd_Msg_Pub.count_and_get (
1348 p_encoded => Fnd_Api.g_false,
1349 p_count => x_msg_count,
1350 p_data => x_msg_data
1351 );
1352 WHEN OTHERS THEN
1353 ROLLBACK TO Create_Task;
1354 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
1355 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
1356 THEN
1357 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
1358 END IF;
1359 Fnd_Msg_Pub.count_and_get (
1360 p_encoded => Fnd_Api.g_false,
1361 p_count => x_msg_count,
1362 p_data => x_msg_data
1363 );
1364 END Create_Task;
1365
1366 --------------------------------------------------------------------
1367 -- PROCEDURE
1368 -- Create_Unassociated_Task
1369 -- PURPOSE
1370 -- To create Unassociated Task for the maintainance visit
1371 --------------------------------------------------------------------
1372 PROCEDURE Create_Unassociated_Task (
1373 p_api_version IN NUMBER,
1374 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
1375 p_commit IN VARCHAR2 := Fnd_Api.g_false,
1376 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
1377 p_module_type IN VARCHAR2 := 'JSP',
1378 p_x_task_rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
1379 x_return_status OUT NOCOPY VARCHAR2,
1380 x_msg_count OUT NOCOPY NUMBER,
1381 x_msg_data OUT NOCOPY VARCHAR2
1382 )
1383 IS
1384 L_API_VERSION CONSTANT NUMBER := 1.0;
1385 L_API_NAME CONSTANT VARCHAR2(30) := 'CREATE UNASSOCIATED TASK';
1386 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
1387
1388 -- Local variables defined for the procedure
1389 l_task_rec AHL_VWP_RULES_PVT.Task_Rec_Type := p_x_task_rec;
1390 l_msg_data VARCHAR2(2000);
1391 l_item_name VARCHAR2(40);
1392 l_rowid VARCHAR2(30);
1393 l_return_status VARCHAR2(1);
1394 l_msg_count NUMBER;
1395 l_item_id NUMBER;
1396 l_serial_id NUMBER;
1397 l_task_number NUMBER;
1398 l_org_id NUMBER;
1399 l_visit_task_id NUMBER;
1400 l_service_id NUMBER;
1401 l_cost_parent_id NUMBER;
1402 l_originating_task_id NUMBER;
1403 l_department_id NUMBER;
1404
1405 -- To find visit related information
1406 CURSOR c_visit(x_id IN NUMBER) IS
1407 SELECT * FROM AHL_VISITS_VL
1408 WHERE VISIT_ID = x_id;
1409 c_visit_rec c_visit%ROWTYPE;
1410
1411 -- To find Item ID and Item OrgID for Instance Id
1412 -- while creating unassociated task for a non-routine job
1413 CURSOR c_Serial (p_serial_id IN NUMBER) IS
1414 SELECT Inventory_Item_Id, Inv_Master_Organization_Id
1415 FROM CSI_ITEM_INSTANCES
1416 WHERE Instance_Id = p_serial_id;
1417
1418 -- Begin changes by rnahata for Issue 105
1419 --Cursor to fetch instance id when instance number is passed
1420 -- jaramana on Feb 14, 2008
1421 -- Changed data type to VARCHAR2
1422 CURSOR c_get_instance_id(p_instance_number IN VARCHAR2) IS
1423 SELECT instance_id FROM csi_item_instances csii
1424 WHERE instance_number = p_instance_number;
1425
1426 --Cursor to fetch instance quantity
1427 CURSOR c_get_instance_qty(p_instance_id IN NUMBER) IS
1428 SELECT quantity FROM csi_item_instances csii
1429 WHERE instance_id = p_instance_id;
1430
1431 l_instance_qty NUMBER := 0;
1432 -- End changes by rnahata for Issue 105
1433
1434 BEGIN
1435 --------------------Start of API Body-----------------------------------
1436 IF (l_log_procedure >= l_log_current_level) THEN
1437 fnd_log.string(l_log_procedure,
1438 L_DEBUG_KEY ||'.begin',
1439 'At the start of PL SQL procedure.' ||
1440 'Module Type = ' || p_module_type );
1441 END IF;
1442
1443 SAVEPOINT Create_Unassociated_Task;
1444
1445 -- Initialize message list if p_init_msg_list is set to TRUE.
1446 IF Fnd_Api.to_boolean(p_init_msg_list)
1447 THEN
1448 Fnd_Msg_Pub.initialize;
1449 END IF;
1450
1451 -- Initialize API return status to success
1452 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
1453
1454 -- Standard call to check for call compatibility.
1455 IF NOT Fnd_Api.COMPATIBLE_API_CALL(l_api_version,
1456 p_api_version,
1457 l_api_name,G_PKG_NAME)
1458 THEN
1459 RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
1460 END IF;
1461
1462 --------------------Value OR ID conversion---------------------------
1463 --Start API Body
1464 IF p_module_type = 'JSP' THEN
1465 --l_Task_rec.instance_id := NULL;
1466 l_Task_rec.cost_parent_id := NULL;
1467 l_Task_rec.originating_task_id := NULL;
1468 l_Task_rec.department_id := NULL;
1469 END IF;
1470
1471 -------------------Cursor values------------------------------------
1472 OPEN c_visit(l_task_rec.visit_id);
1473 FETCH c_visit INTO c_visit_rec;
1474 CLOSE c_visit;
1475
1476 IF (l_log_statement >= l_log_current_level) THEN
1477 fnd_log.string(l_log_statement,
1478 L_DEBUG_KEY,
1479 'Visit Id = ' || l_task_rec.visit_id || ', Status Code = ' || c_visit_rec.status_code );
1480 END IF;
1481
1482 IF c_visit_rec.status_code IN ('CLOSED','CANCELLED') THEN
1483 Fnd_Message.SET_NAME('AHL','AHL_VWP_NOT_USE_VISIT');
1484 Fnd_Msg_Pub.ADD;
1485 RAISE Fnd_Api.G_EXC_ERROR;
1486 /*
1487 Commented to fix bug # 4029318
1488 ELSIF c_visit_rec.status_code = 'RELEASED' OR c_visit_rec.status_code = 'PARTIALLY RELEASED' THEN
1489 Added the below condition for the call from Production for SR creation
1490 */
1491 ELSIF p_module_type = 'SR' THEN
1492
1493 IF (l_log_statement >= l_log_current_level) THEN
1494 fnd_log.string(l_log_statement,
1495 L_DEBUG_KEY,
1496 'Inside status code check = ' || c_visit_rec.status_code ||
1497 ', Instance ID = ' || l_Task_rec.instance_id );
1498 END IF;
1499
1500 OPEN c_serial(l_Task_rec.instance_id);
1501 FETCH c_serial INTO l_item_id, l_org_id;
1502 CLOSE c_serial;
1503
1504 --Assign the returned value
1505 l_Task_rec.inventory_item_id := l_item_id;
1506 l_Task_rec.item_organization_id := l_org_id;
1507 ELSE
1508 -- Visit in planning status --
1509 IF (l_log_statement >= l_log_current_level) THEN
1510 fnd_log.string(l_log_statement,
1511 L_DEBUG_KEY,
1512 'Before Convert Item Item ID= ' || l_Task_rec.inventory_item_id ||
1513 ', Item Org ID= ' || l_Task_rec.item_organization_id ||
1514 ', Item Name= ' || l_Task_rec.item_name );
1515 END IF;
1516 -- Post 11.5.10 Changes by Senthil.
1517 AHL_VWP_VISITS_STAGES_PVT.Check_Stage_Name_Or_Id(
1518 P_VISIT_ID => l_Task_rec.visit_id,
1519 P_STAGE_NAME => L_task_rec.STAGE_NAME,
1520 X_STAGE_ID => L_task_rec.STAGE_ID,
1521 X_RETURN_STATUS => l_return_status,
1522 x_error_msg_code => l_msg_data );
1523
1524 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success THEN
1525 Fnd_Message.SET_NAME('AHL','AHL_VWP_STAGE_NOT_EXISTS');
1526 Fnd_Msg_Pub.ADD;
1527 RAISE Fnd_Api.G_EXC_ERROR;
1528 END IF;
1529 --
1530 -- For ITEM
1531 -- Convert item name to item id
1532 IF (l_Task_rec.inventory_item_id IS NOT NULL AND
1533 l_Task_rec.inventory_item_id <> Fnd_Api.G_MISS_NUM) AND
1534 (l_Task_rec.item_organization_id IS NOT NULL AND
1535 l_Task_rec.item_organization_id <> Fnd_Api.G_MISS_NUM) THEN
1536
1537 AHL_VWP_RULES_PVT.Check_Item_Name_Or_Id
1538 (p_item_id => l_Task_rec.inventory_item_id,
1539 p_org_id => l_Task_rec.item_organization_id,
1540 p_item_name => l_Task_rec.item_name,
1541 x_item_id => l_item_id,
1542 x_org_id => l_org_id,
1543 x_item_name => l_item_name,
1544 x_return_status => l_return_status,
1545 x_error_msg_code => l_msg_data);
1546
1547 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success THEN
1548 Fnd_Message.SET_NAME('AHL','AHL_VWP_ITEM_NOT_EXISTS');
1549 Fnd_Msg_Pub.ADD;
1550 RAISE Fnd_Api.G_EXC_ERROR;
1551 END IF;
1552
1553 IF UPPER(l_Task_rec.item_name) <> UPPER(l_item_name) THEN
1554 IF (l_log_statement >= l_log_current_level) THEN
1555 fnd_log.string(l_log_statement,
1556 L_DEBUG_KEY,
1557 ': Compare item name');
1558 END IF;
1559
1560 Fnd_Message.SET_NAME('AHL','AHL_VWP_ITEM_USE_LOV');
1561 Fnd_Msg_Pub.ADD;
1562 RAISE Fnd_Api.G_EXC_ERROR;
1563 END IF;
1564 ELSE
1565 IF (l_log_statement >= l_log_current_level) THEN
1566 fnd_log.string(l_log_statement,
1567 L_DEBUG_KEY,
1568 ': Check item else loop');
1569 END IF;
1570 Fnd_Message.SET_NAME('AHL','AHL_VWP_ITEM_USE_LOV');
1571 Fnd_Msg_Pub.ADD;
1572 RAISE Fnd_Api.G_EXC_ERROR;
1573 END IF;
1574
1575 --Assign the returned value
1576 l_Task_rec.inventory_item_id := l_item_id;
1577 l_Task_rec.item_organization_id := l_org_id;
1578
1579 IF (l_log_statement >= l_log_current_level) THEN
1580 fnd_log.string(l_log_statement,
1581 L_DEBUG_KEY,
1582 ': Item ID= ' || l_Task_rec.inventory_item_id ||
1583 ': Item Org ID= ' || l_Task_rec.item_organization_id ||
1584 ': Item Name= ' || l_Task_rec.item_name ||
1585 ': Serial Number= ' || l_Task_rec.serial_number );
1586 END IF;
1587
1588 END IF; -- End of status_code check
1589
1590 ----------- Start defining and validate all LOVs on Create Visit's Task UI Screen---
1591 --
1592 -- For DEPARTMENT
1593 -- Convert department name to department id
1594 IF (l_task_rec.dept_name IS NOT NULL AND l_task_rec.dept_name <> Fnd_Api.G_MISS_CHAR ) THEN
1595
1596 IF (l_log_statement >= l_log_current_level) THEN
1597 fnd_log.string(l_log_statement,
1598 L_DEBUG_KEY,
1599 'Calling AHL_VWP_RULES_PVT.Check_Dept_Desc_Or_Id');
1600 END IF;
1601
1602 AHL_VWP_RULES_PVT.Check_Dept_Desc_Or_Id
1603 (p_organization_id => c_visit_rec.organization_id,
1604 p_dept_name => l_task_rec.dept_name,
1605 p_department_id => NULL,
1606 x_department_id => l_department_id,
1607 x_return_status => l_return_status,
1608 x_error_msg_code => l_msg_data);
1609
1610 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
1611 THEN
1612 Fnd_Message.SET_NAME('AHL','AHL_VWP_DEPT_NOT_EXISTS');
1613 Fnd_Msg_Pub.ADD;
1614 RAISE Fnd_Api.G_EXC_ERROR;
1615 END IF;
1616
1617 -- Changes for Post 11.5.10 by amagrawa
1618 Ahl_vwp_rules_pvt.CHECK_DEPARTMENT_SHIFT
1619 ( P_DEPT_ID => l_department_id,
1620 X_RETURN_STATUS => l_return_status);
1621
1622 IF (NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS) THEN
1623 Fnd_Message.SET_NAME('AHL','AHL_VWP_NO_DEPT_SHIFT');
1624 Fnd_Msg_Pub.ADD;
1625 RAISE Fnd_Api.G_EXC_ERROR;
1626 END IF;
1627 --Assign the returned value
1628 l_task_rec.department_id := l_department_id;
1629 END IF;
1630
1631 IF (l_log_statement >= l_log_current_level) THEN
1632 fnd_log.string(l_log_statement,
1633 L_DEBUG_KEY,
1634 ': Dept ID= ' || l_Task_rec.department_id );
1635 END IF;
1636
1637 -- For SERIAL NUMBER
1638 -- Convert serial number to instance/ serial id
1639 IF (l_Task_rec.serial_number IS NOT NULL AND
1640 l_Task_rec.serial_number <> Fnd_Api.G_MISS_CHAR) THEN
1641 IF (l_log_statement >= l_log_current_level) THEN
1642 fnd_log.string(l_log_statement,
1643 L_DEBUG_KEY,
1644 ': AHL_VWP_RULES_PVT.Check_Serial_Name_Or_Id ' );
1645 END IF;
1646 AHL_VWP_RULES_PVT.Check_Serial_Name_Or_Id
1647 (p_item_id => l_Task_rec.inventory_item_id,
1648 p_org_id => l_Task_rec.item_organization_id,
1649 p_serial_id => l_Task_rec.instance_id,
1650 p_serial_number => l_Task_rec.serial_number,
1651 x_serial_id => l_serial_id,
1652 x_return_status => l_return_status,
1653 x_error_msg_code => l_msg_data);
1654
1655 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success THEN
1656 Fnd_Message.SET_NAME('AHL','AHL_VWP_SERIAL_NOT_EXISTS');
1657 Fnd_Msg_Pub.ADD;
1658 RAISE Fnd_Api.G_EXC_ERROR;
1659 ELSE
1660 --Assign the returned value
1661 l_Task_rec.instance_id := l_serial_id;
1662
1663 IF (l_log_statement >= l_log_current_level) THEN
1664 fnd_log.string(l_log_statement,
1665 L_DEBUG_KEY,
1666 ': Before UC Check Serial ID= ' || l_Task_rec.instance_id ||
1667 ': Before UC Item ID= ' || l_Task_rec.inventory_item_id ||
1668 ': Before UC Item Org ID= ' || l_Task_rec.item_organization_id );
1669 END IF;
1670 /* sowsubra - start
1671 --BEGIN: jeli added for bug 3777720
1672 IF (AHL_VWP_RULES_PVT.instance_in_config_tree(l_task_rec.visit_id, l_task_rec.instance_id)
1673 = FND_API.G_RET_STS_ERROR) THEN
1674 --END: jeli added for bug 3777720
1675 Fnd_Message.SET_NAME('AHL','AHL_VWP_TASK_SERIAL');
1676 Fnd_Msg_Pub.ADD;
1677 RAISE Fnd_Api.G_EXC_ERROR;
1678 END IF;
1679 sowsubra - end */
1680 END IF;
1681 END IF;
1682
1683 IF (l_log_statement >= l_log_current_level) THEN
1684 fnd_log.string(l_log_statement,
1685 L_DEBUG_KEY,
1686 ': Serial ID= ' || l_Task_rec.instance_id ||
1687 ': Service Number= ' || l_Task_rec.service_request_number );
1688 -- Additional debug statement added by jaramana on Feb 14, 2008
1689 fnd_log.string(l_log_statement, L_DEBUG_KEY,
1690 'l_task_rec.instance_number = ' || l_Task_rec.instance_number ||
1691 ', l_task_rec.quantity = ' || l_Task_rec.quantity);
1692 END IF;
1693
1694 -- Begin changes by rnahata for Issue 105
1695 IF (l_Task_rec.instance_id IS NULL) THEN
1696 OPEN c_get_instance_id (l_Task_rec.instance_number);
1697 FETCH c_get_instance_id INTO l_Task_rec.instance_id;
1698 CLOSE c_get_instance_id;
1699 END IF;
1700
1701 OPEN c_get_instance_qty(l_Task_rec.instance_id);
1702 FETCH c_get_instance_qty INTO l_instance_qty;
1703 CLOSE c_get_instance_qty;
1704
1705 IF (l_Task_rec.QUANTITY is null) THEN
1706 Fnd_Message.SET_NAME('AHL','AHL_TASK_QTY_NULL');
1707 Fnd_Msg_Pub.ADD;
1708 RAISE Fnd_Api.G_EXC_ERROR;
1709 END IF;
1710
1711 IF (l_Task_rec.QUANTITY <= 0) THEN
1712 Fnd_Message.SET_NAME('AHL','AHL_POSITIVE_TSK_QTY');
1713 Fnd_Msg_Pub.ADD;
1714 RAISE Fnd_Api.G_EXC_ERROR;
1715 END IF;
1716
1717 IF (l_Task_rec.QUANTITY > l_instance_qty ) THEN
1718 Fnd_Message.SET_NAME('AHL','AHL_INCORRECT_TSK_QTY');
1719 Fnd_Msg_Pub.ADD;
1720 RAISE Fnd_Api.G_EXC_ERROR;
1721 END IF;
1722 -- End changes by rnahata for Issue 105
1723
1724 -- For COST PARENT TASK
1725 -- Convert cost parent number to id
1726 IF (l_Task_rec.cost_parent_number IS NOT NULL AND
1727 l_Task_rec.cost_parent_number <> Fnd_Api.G_MISS_NUM ) THEN
1728 IF (l_log_statement >= l_log_current_level) THEN
1729 fnd_log.string(l_log_statement,
1730 L_DEBUG_KEY,
1731 'Calling AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID ' );
1732 END IF;
1733 AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID
1734 (p_visit_task_id => l_Task_rec.cost_parent_id,
1735 p_visit_task_number => l_Task_rec.cost_parent_number,
1736 p_visit_id => l_Task_rec.visit_id,
1737 x_visit_task_id => l_cost_parent_id,
1738 x_return_status => l_return_status,
1739 x_error_msg_code => l_msg_data);
1740
1741 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
1742 THEN
1743 Fnd_Message.SET_NAME('AHL','AHL_VWP_PARENT_NOT_EXISTS');
1744 Fnd_Msg_Pub.ADD;
1745 RAISE Fnd_Api.g_exc_error;
1746 END IF;
1747
1748 --Assign the returned value
1749 l_Task_rec.cost_parent_id := l_cost_parent_id;
1750 END IF;
1751
1752 IF (l_log_statement >= l_log_current_level) THEN
1753 fnd_log.string(l_log_statement,
1754 L_DEBUG_KEY,
1755 ': Cost parent ID = ' || l_Task_rec.cost_parent_id);
1756 END IF;
1757
1758 -- To Check for cost parent task id not forming loop
1759 IF (l_Task_rec.cost_parent_id IS NOT NULL AND
1760 l_Task_rec.cost_parent_id <> Fnd_Api.G_MISS_NUM ) THEN
1761
1762 IF (l_log_statement >= l_log_current_level) THEN
1763 fnd_log.string(l_log_statement,
1764 L_DEBUG_KEY,
1765 'Calling AHL_VWP_RULES_PVT.Check_Cost_Parent_Loop ' );
1766 END IF;
1767 AHL_VWP_RULES_PVT.Check_Cost_Parent_Loop
1768 (p_visit_id => l_Task_rec.visit_id,
1769 p_visit_task_id => l_Task_rec.visit_task_id ,
1770 p_cost_parent_id => l_Task_rec.cost_parent_id
1771 );
1772 END IF;
1773
1774 IF (l_log_statement >= l_log_current_level) THEN
1775 fnd_log.string(l_log_statement,
1776 L_DEBUG_KEY,
1777 ': Originating Number = ' || l_Task_rec.orginating_task_number);
1778 END IF;
1779
1780 -- For ORIGINATING TASK
1781 -- Convert originating task number to id
1782 IF (l_Task_rec.orginating_task_number IS NOT NULL AND
1783 l_Task_rec.orginating_task_number <> Fnd_Api.G_MISS_NUM ) THEN
1784 IF (l_log_statement >= l_log_current_level) THEN
1785 fnd_log.string(l_log_statement,
1786 L_DEBUG_KEY,
1787 'Calling AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID ' );
1788 END IF;
1789 AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID
1790 (p_visit_task_id => l_Task_rec.originating_task_id,
1791 p_visit_task_number => l_Task_rec.orginating_task_number,
1792 p_visit_id => l_Task_rec.visit_id,
1793 x_visit_task_id => l_originating_task_id,
1794 x_return_status => l_return_status,
1795 x_error_msg_code => l_msg_data);
1796
1797 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
1798 THEN
1799 Fnd_Message.SET_NAME('AHL','AHL_VWP_ORIGINATING_NOT_EXISTS');
1800 Fnd_Msg_Pub.ADD;
1801 RAISE Fnd_Api.g_exc_error;
1802 END IF;
1803 --Assign the returned value
1804 l_Task_rec.originating_task_id := l_originating_task_id;
1805 END IF;
1806
1807 IF (l_log_statement >= l_log_current_level) THEN
1808 fnd_log.string(l_log_statement,
1809 L_DEBUG_KEY,
1810 ': Originating Task ID= ' || l_Task_rec.originating_task_id);
1811 END IF;
1812
1813 -- To Check for originating task id not forming loop
1814 IF (l_Task_rec.originating_task_id IS NOT NULL AND
1815 l_Task_rec.originating_task_id <> Fnd_Api.G_MISS_NUM ) THEN
1816
1817 AHL_VWP_RULES_PVT.Check_Origin_Task_Loop
1818 (p_visit_id => l_Task_rec.visit_id ,
1819 p_visit_task_id => l_Task_rec.visit_task_id ,
1820 p_originating_task_id => l_Task_rec.originating_task_id
1821 );
1822
1823 END IF;
1824 ----------- End defining and validate all LOVs on Create Visit's Task UI Screen---
1825
1826 ---------------------------------------------- Validate ----------------------------------------------
1827 -- IF c_visit_rec.status_code = 'PLANNING' THEN
1828 --Added the below condition for the call from Production for SR creation
1829 IF p_module_type <> 'SR' THEN
1830 IF (l_log_statement >= l_log_current_level) THEN
1831 fnd_log.string(l_log_statement,
1832 L_DEBUG_KEY,
1833 ': :ValidateCalling Validate_Visit_Task ');
1834 END IF;
1835 Validate_Visit_Task (
1836 p_api_version => l_api_version,
1837 p_init_msg_list => p_init_msg_list,
1838 p_commit => Fnd_Api.g_false,
1839 p_validation_level => p_validation_level,
1840 p_task_rec => l_task_rec,
1841 x_return_status => l_return_status,
1842 x_msg_count => x_msg_count,
1843 x_msg_data => x_msg_data
1844 );
1845
1846 IF l_return_status = Fnd_Api.g_ret_sts_error THEN
1847 RAISE Fnd_Api.g_exc_error;
1848 ELSIF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1849 RAISE Fnd_Api.g_exc_unexpected_error;
1850 END IF;
1851 END IF;
1852 /* ELSE Commented to fix bug # 4029318 Senthil
1853 -- TASK NAME ==== NAME
1854 IF (l_task_rec.visit_task_name IS NULL OR l_task_rec.visit_task_name = Fnd_Api.G_MISS_CHAR) THEN
1855 Fnd_Message.set_name ('AHL', 'AHL_VWP_NAME_MISSING');
1856 Fnd_Msg_Pub.ADD;
1857 RAISE Fnd_Api.g_exc_error;
1858 END IF;
1859 END IF;
1860 */
1861 l_Visit_Task_ID := AHL_VWP_RULES_PVT.Get_Visit_Task_Id();
1862 l_task_rec.visit_task_ID := l_Visit_Task_ID;
1863
1864 -- Check for the Visit Number.
1865 l_task_number := AHL_VWP_RULES_PVT.Get_Visit_Task_Number(l_task_rec.visit_id);
1866 l_task_rec.visit_task_number := l_task_number;
1867
1868 IF (l_log_statement >= l_log_current_level) THEN
1869 fnd_log.string(l_log_statement,
1870 L_DEBUG_KEY,
1871 ': Task ID= ' || l_Task_rec.visit_task_id ||
1872 ': Task number= ' || l_Task_rec.visit_task_number);
1873 END IF;
1874
1875 ----------------------- check miss_num/miss_char/miss_date-----------------------
1876 -- For all optional fields check if its g_miss_num/g_miss_char/g_miss_date
1877 -- then Null else the value call Default_Missing_Attribs procedure
1878 Default_Missing_Attribs
1879 (
1880 p_x_task_rec => l_Task_rec
1881 );
1882
1883 -------------------------- Insert --------------------------
1884 IF (l_log_statement >= l_log_current_level) THEN
1885 fnd_log.string(l_log_statement,
1886 L_DEBUG_KEY,
1887 'Before Calling Ahl_Visit_Tasks_Pkg.Insert_Row');
1888 END IF;
1889
1890 -- Invoke the table handler to create a record
1891 Ahl_Visit_Tasks_Pkg.Insert_Row (
1892 X_ROWID => l_rowid,
1893 X_VISIT_TASK_ID => l_task_rec.visit_task_id,
1894 X_VISIT_TASK_NUMBER => l_task_rec.visit_task_number,
1895 X_OBJECT_VERSION_NUMBER => 1,
1896 X_VISIT_ID => l_task_rec.visit_id,
1897 X_PROJECT_TASK_ID => NULL, --l_task_rec.project_task_id,
1898 X_COST_PARENT_ID => l_task_rec.cost_parent_id,
1899 X_MR_ROUTE_ID => NULL,
1900 X_MR_ID => NULL,
1901 X_DURATION => l_task_rec.duration,
1902 X_UNIT_EFFECTIVITY_ID => l_task_rec.unit_effectivity_id,
1903 X_START_FROM_HOUR => l_task_rec.start_from_hour,
1904 X_INVENTORY_ITEM_ID => l_task_rec.inventory_item_id,
1905 X_ITEM_ORGANIZATION_ID => l_task_rec.item_organization_id,
1906 X_INSTANCE_ID => l_task_rec.instance_id,
1907 X_PRIMARY_VISIT_TASK_ID => NULL, --l_task_rec.primary_visit_task_id,
1908 X_ORIGINATING_TASK_ID => l_task_rec.originating_task_id,
1909 X_SERVICE_REQUEST_ID => l_task_rec.service_request_id,
1910 X_TASK_TYPE_CODE => l_task_rec.task_type_code,
1911 X_DEPARTMENT_ID => l_task_rec.department_id,
1912 X_SUMMARY_TASK_FLAG => 'N',
1913 X_PRICE_LIST_ID => NULL,
1914 X_STATUS_CODE => 'PLANNING',
1915 X_ESTIMATED_PRICE => NULL,
1916 X_ACTUAL_PRICE => NULL,
1917 X_ACTUAL_COST => NULL,
1918 -- Post 11.5.10 Changes by Senthil.
1919 X_STAGE_ID => l_task_rec.STAGE_ID,
1920 -- Added cxcheng POST11510--------------
1921 X_START_DATE_TIME => NULL,
1922 X_END_DATE_TIME => NULL,
1923 X_ATTRIBUTE_CATEGORY => l_task_rec.ATTRIBUTE_CATEGORY,
1924 X_ATTRIBUTE1 => l_task_rec.ATTRIBUTE1,
1925 X_ATTRIBUTE2 => l_task_rec.ATTRIBUTE2,
1926 X_ATTRIBUTE3 => l_task_rec.ATTRIBUTE3,
1927 X_ATTRIBUTE4 => l_task_rec.ATTRIBUTE4,
1928 X_ATTRIBUTE5 => l_task_rec.ATTRIBUTE5,
1929 X_ATTRIBUTE6 => l_task_rec.ATTRIBUTE6,
1930 X_ATTRIBUTE7 => l_task_rec.ATTRIBUTE7,
1931 X_ATTRIBUTE8 => l_task_rec.ATTRIBUTE8,
1932 X_ATTRIBUTE9 => l_task_rec.ATTRIBUTE9,
1933 X_ATTRIBUTE10 => l_task_rec.ATTRIBUTE10,
1934 X_ATTRIBUTE11 => l_task_rec.ATTRIBUTE11,
1935 X_ATTRIBUTE12 => l_task_rec.ATTRIBUTE12,
1936 X_ATTRIBUTE13 => l_task_rec.ATTRIBUTE13,
1937 X_ATTRIBUTE14 => l_task_rec.ATTRIBUTE14,
1938 X_ATTRIBUTE15 => l_task_rec.ATTRIBUTE15,
1939 X_VISIT_TASK_NAME => l_task_rec.visit_task_name,
1940 X_DESCRIPTION => l_task_rec.description,
1941 X_QUANTITY => l_Task_rec.quantity, -- Added by rnahata for Issue 105
1942 X_CREATION_DATE => SYSDATE,
1943 X_CREATED_BY => Fnd_Global.USER_ID,
1944 X_LAST_UPDATE_DATE => SYSDATE,
1945 X_LAST_UPDATED_BY => Fnd_Global.USER_ID,
1946 X_LAST_UPDATE_LOGIN => Fnd_Global.LOGIN_ID );
1947
1948 ------------------------- finish -------------------------------
1949
1950 -- Added cxcheng POST11510--------------
1951 --Now adjust the times derivation for task
1952 IF (l_log_statement >= l_log_current_level) THEN
1953 fnd_log.string(l_log_statement,
1954 L_DEBUG_KEY,
1955 'Before Calling AHL_VWP_TIMES_PVT.Adjust_Task_Times' );
1956 END IF;
1957
1958 AHL_VWP_TIMES_PVT.Adjust_Task_Times(p_api_version => 1.0,
1959 p_init_msg_list => Fnd_Api.G_FALSE,
1960 p_commit => Fnd_Api.G_FALSE,
1961 p_validation_level => Fnd_Api.G_VALID_LEVEL_FULL,
1962 x_return_status => l_return_status,
1963 x_msg_count => l_msg_count,
1964 x_msg_data => l_msg_data,
1965 p_task_id => l_task_rec.visit_task_id);
1966
1967 IF (l_log_statement >= l_log_current_level) THEN
1968 fnd_log.string(l_log_statement,
1969 L_DEBUG_KEY,
1970 'After Calling AHL_VWP_TIMES_PVT.Adjust_Task_Times, Return Status = '|| l_return_status );
1971 END IF;
1972
1973 --Standard check to count messages
1974 l_msg_count := Fnd_Msg_Pub.count_msg;
1975
1976 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
1977 x_msg_count := l_msg_count;
1978 x_return_status := Fnd_Api.G_RET_STS_ERROR;
1979 RAISE Fnd_Api.G_EXC_ERROR;
1980 END IF;
1981
1982 -- set OUT value
1983 p_x_task_rec.Visit_Task_ID := l_task_rec.Visit_Task_ID;
1984 p_x_task_rec.Visit_Task_Number := l_task_rec.Visit_Task_Number;
1985
1986 IF (c_visit_rec.Any_Task_Chg_Flag = 'N') THEN
1987
1988 AHL_VWP_RULES_PVT.update_visit_task_flag(
1989 p_visit_id =>c_visit_rec.visit_id,
1990 p_flag =>'Y',
1991 x_return_status =>x_return_status);
1992
1993 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1994 RAISE FND_API.G_EXC_ERROR;
1995 END IF;
1996 END IF;
1997
1998 IF (l_log_statement >= l_log_current_level) THEN
1999 fnd_log.string(l_log_statement,
2000 L_DEBUG_KEY,
2001 ': After Insert ' || 'Task ID= ' || p_x_Task_rec.visit_task_id ||
2002 ', Task Number= ' || p_x_Task_rec.visit_task_number);
2003 END IF;
2004
2005 -- Calling projects api to create project task for the newly added service request
2006 IF (l_task_rec.Visit_Task_ID IS NOT NULL AND p_module_type = 'SR' )THEN
2007 IF (l_log_statement >= l_log_current_level) THEN
2008 fnd_log.string(l_log_statement,
2009 L_DEBUG_KEY,
2010 'Before Calling AHL_VWP_PROJ_PROD_PVT.Add_Task_to_Project ' ||
2011 'Visit Task Id = ' || l_task_rec.Visit_Task_ID);
2012 END IF;
2013
2014 AHL_VWP_PROJ_PROD_PVT.Add_Task_to_Project(
2015 p_api_version => l_api_version,
2016 p_init_msg_list => p_init_msg_list,
2017 p_commit => Fnd_Api.g_false,
2018 p_validation_level => p_validation_level,
2019 p_module_type => p_module_type,
2020 p_visit_task_id => l_task_rec.Visit_Task_ID,
2021 x_return_status => l_return_status,
2022 x_msg_count => x_msg_count,
2023 x_msg_data => x_msg_data);
2024
2025 IF (l_log_statement >= l_log_current_level) THEN
2026 fnd_log.string(l_log_statement,
2027 L_DEBUG_KEY,
2028 'After Calling AHL_VWP_PROJ_PROD_PVT.Add_Task_to_Project, Return Status = ' ||l_return_status );
2029 END IF;
2030 END IF;
2031
2032 ---------------------------End of API Body---------------------------------------
2033 --Standard check to count messages
2034 l_msg_count := Fnd_Msg_Pub.count_msg;
2035
2036 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
2037 x_msg_count := l_msg_count;
2038 x_return_status := Fnd_Api.G_RET_STS_ERROR;
2039 RAISE Fnd_Api.G_EXC_ERROR;
2040 END IF;
2041
2042 --Standard check for commit
2043 IF Fnd_Api.TO_BOOLEAN(p_commit) THEN
2044 COMMIT;
2045 END IF;
2046
2047 IF (l_log_procedure >= l_log_current_level) THEN
2048 fnd_log.string(l_log_procedure,
2049 L_DEBUG_KEY ||'.end',
2050 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
2051 END IF;
2052
2053 EXCEPTION
2054 WHEN Fnd_Api.g_exc_error THEN
2055 ROLLBACK TO Create_Unassociated_Task;
2056 x_return_status := Fnd_Api.g_ret_sts_error;
2057 Fnd_Msg_Pub.count_and_get(
2058 p_encoded => Fnd_Api.g_false,
2059 p_count => x_msg_count,
2060 p_data => x_msg_data
2061 );
2062
2063 WHEN Fnd_Api.g_exc_unexpected_error THEN
2064 ROLLBACK TO Create_Unassociated_Task;
2065 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
2066 Fnd_Msg_Pub.count_and_get (
2067 p_encoded => Fnd_Api.g_false,
2068 p_count => x_msg_count,
2069 p_data => x_msg_data
2070 );
2071
2072 WHEN OTHERS THEN
2073 ROLLBACK TO Create_Unassociated_Task;
2074 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
2075 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
2076 THEN
2077 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
2078 END IF;
2079 Fnd_Msg_Pub.count_and_get (
2080 p_encoded => Fnd_Api.g_false,
2081 p_count => x_msg_count,
2082 p_data => x_msg_data
2083 );
2084
2085 END Create_Unassociated_Task;
2086
2087 --------------------------------------------------------------------
2088 -- PROCEDURE
2089 -- Create_Summary_Task
2090 -- PURPOSE
2091 -- To create Summary Task for the maintainance visit
2092 --------------------------------------------------------------------
2093 PROCEDURE Create_Summary_Task (
2094 p_api_version IN NUMBER,
2095 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
2096 p_commit IN VARCHAR2 := Fnd_Api.g_false,
2097 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
2098 p_module_type IN VARCHAR2 := 'JSP',
2099 p_x_task_rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
2100 x_return_status OUT NOCOPY VARCHAR2,
2101 x_msg_count OUT NOCOPY NUMBER,
2102 x_msg_data OUT NOCOPY VARCHAR2
2103 )
2104 IS
2105 L_API_VERSION CONSTANT NUMBER := 1.0;
2106 L_API_NAME CONSTANT VARCHAR2(30) := 'Create_Summary_Task';
2107 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
2108
2109 -- Local variables defined for the procedure
2110 l_task_rec AHL_VWP_RULES_PVT.Task_Rec_Type := p_x_task_rec;
2111 l_msg_data VARCHAR2(2000);
2112 l_item_name VARCHAR2(40);
2113 l_rowid VARCHAR2(30);
2114 l_return_status VARCHAR2(1);
2115 l_msg_count NUMBER;
2116 l_item_id NUMBER;
2117 l_serial_id NUMBER;
2118 l_task_number NUMBER;
2119 l_org_id NUMBER;
2120 l_visit_task_id NUMBER;
2121 l_service_id NUMBER;
2122 l_cost_parent_id NUMBER;
2123 l_originating_task_id NUMBER;
2124 l_department_id NUMBER;
2125
2126 -- To find visit related information
2127 CURSOR c_visit(x_id IN NUMBER) IS
2128 SELECT * FROM AHL_VISITS_VL
2129 WHERE VISIT_ID = x_id;
2130 c_visit_rec c_visit%ROWTYPE;
2131
2132 -- bug fix #4181411
2133 -- yazhou 17-Feb-2005
2134 CURSOR get_task_inst_dtls(c_visit_id IN NUMBER) IS
2135 SELECT inventory_item_id,item_organization_id
2136 FROM ahl_visit_tasks_b
2137 WHERE visit_id = c_visit_id
2138 AND nvl(status_code,'x') <> 'DELETED'
2139 AND ROWNUM = 1;
2140
2141 get_task_inst_rec get_task_inst_dtls%ROWTYPE;
2142
2143 BEGIN
2144 --------------------Start of API Body-----------------------------------
2145 IF (l_log_procedure >= l_log_current_level) THEN
2146 fnd_log.string(l_log_procedure,
2147 L_DEBUG_KEY ||'.begin',
2148 'At the start of PL SQL procedure.');
2149 END IF;
2150
2151 SAVEPOINT Create_Summary_Task;
2152
2153 -- Initialize message list if p_init_msg_list is set to TRUE.
2154 IF Fnd_Api.to_boolean(p_init_msg_list)
2155 THEN
2156 Fnd_Msg_Pub.initialize;
2157 END IF;
2158
2159 -- Initialize API return status to success
2160 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
2161
2162 -- Standard call to check for call compatibility.
2163 IF NOT Fnd_Api.COMPATIBLE_API_CALL(l_api_version,
2164 p_api_version,
2165 l_api_name,G_PKG_NAME)
2166 THEN
2167 RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
2168 END IF;
2169
2170 --------------------Value OR ID conversion---------------------------
2171 --Start API Body
2172 IF p_module_type = 'JSP'
2173 THEN
2174 l_Task_rec.instance_id := NULL;
2175 l_Task_rec.cost_parent_id := NULL;
2176 l_Task_rec.originating_task_id := NULL;
2177 l_Task_rec.department_id := NULL;
2178 END IF;
2179
2180 -------------------Cursor values------------------------------------
2181 OPEN c_visit(l_task_rec.visit_id);
2182 FETCH c_visit INTO c_visit_rec;
2183 CLOSE c_visit;
2184
2185 IF (l_log_statement >= l_log_current_level) THEN
2186 fnd_log.string(l_log_statement,
2187 L_DEBUG_KEY,
2188 ': Visit Id = ' || l_task_rec.visit_id ||
2189 ': Status Code ' || c_visit_rec.status_code);
2190 END IF;
2191
2192 IF c_visit_rec.status_code IN ('CLOSED','CANCELLED') THEN
2193 Fnd_Message.SET_NAME('AHL','AHL_VWP_NOT_USE_VISIT');
2194 Fnd_Msg_Pub.ADD;
2195 RAISE Fnd_Api.G_EXC_ERROR;
2196 ELSE
2197 ----------- Start defining and validate all LOVs on Create Visit's Task UI Screen---
2198 --
2199 -- For DEPARTMENT
2200 -- Convert department name to department id
2201 IF (l_task_rec.dept_name IS NOT NULL AND l_task_rec.dept_name <> Fnd_Api.G_MISS_CHAR ) THEN
2202 IF (l_log_statement >= l_log_current_level) THEN
2203 fnd_log.string(l_log_statement,
2204 L_DEBUG_KEY,
2205 'Calling AHL_VWP_RULES_PVT.Check_Dept_Desc_Or_Id ');
2206 END IF;
2207 AHL_VWP_RULES_PVT.Check_Dept_Desc_Or_Id
2208 (p_organization_id => c_visit_rec.organization_id,
2209 p_dept_name => l_task_rec.dept_name,
2210 p_department_id => NULL,
2211 x_department_id => l_department_id,
2212 x_return_status => l_return_status,
2213 x_error_msg_code => l_msg_data);
2214
2215 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
2216 THEN
2217 Fnd_Message.SET_NAME('AHL','AHL_VWP_DEPT_NOT_EXISTS');
2218 Fnd_Msg_Pub.ADD;
2219 RAISE Fnd_Api.G_EXC_ERROR;
2220 END IF;
2221
2222 -- Changes for Post 11.5.10 by amagrawa
2223 Ahl_vwp_rules_pvt.CHECK_DEPARTMENT_SHIFT
2224 ( P_DEPT_ID => l_department_id,
2225 X_RETURN_STATUS => l_return_status);
2226
2227 IF (NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS) THEN
2228 Fnd_Message.SET_NAME('AHL','AHL_VWP_NO_DEPT_SHIFT');
2229 Fnd_Msg_Pub.ADD;
2230 RAISE Fnd_Api.G_EXC_ERROR;
2231 END IF;
2232
2233 --Assign the returned value
2234 l_task_rec.department_id := l_department_id;
2235 END IF;
2236
2237 IF (l_log_statement >= l_log_current_level) THEN
2238 fnd_log.string(l_log_statement,
2239 L_DEBUG_KEY,
2240 ': Dept ID= ' || l_Task_rec.department_id ||
2241 ': Before Convert Item Item ID= ' || l_Task_rec.inventory_item_id ||
2242 ', Org ID= ' || l_Task_rec.item_organization_id ||
2243 ', Item Name= ' || l_Task_rec.item_name );
2244 END IF;
2245
2246 --
2247 -- For ITEM
2248 -- Convert item name to item id
2249
2250 IF (l_Task_rec.inventory_item_id IS NOT NULL AND
2251 l_Task_rec.inventory_item_id <> Fnd_Api.G_MISS_NUM) AND
2252 (l_Task_rec.item_organization_id IS NOT NULL AND
2253 l_Task_rec.item_organization_id <> Fnd_Api.G_MISS_NUM) THEN
2254
2255 IF (l_log_statement >= l_log_current_level) THEN
2256 fnd_log.string(l_log_statement,
2257 L_DEBUG_KEY,
2258 'Calling AHL_VWP_RULES_PVT.Check_Item_Name_Or_Id ' );
2259 END IF;
2260 AHL_VWP_RULES_PVT.Check_Item_Name_Or_Id
2261 (p_item_id => l_Task_rec.inventory_item_id,
2262 p_org_id => l_Task_rec.item_organization_id,
2263 p_item_name => l_Task_rec.item_name,
2264 x_item_id => l_item_id,
2265 x_org_id => l_org_id,
2266 x_item_name => l_item_name,
2267 x_return_status => l_return_status,
2268 x_error_msg_code => l_msg_data);
2269
2270 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
2271 THEN
2272 Fnd_Message.SET_NAME('AHL','AHL_VWP_ITEM_NOT_EXISTS');
2273 Fnd_Msg_Pub.ADD;
2274 RAISE Fnd_Api.G_EXC_ERROR;
2275 END IF;
2276
2277 IF UPPER(l_Task_rec.item_name) <> UPPER(l_item_name) THEN
2278 Fnd_Message.SET_NAME('AHL','AHL_VWP_ITEM_USE_LOV');
2279 Fnd_Msg_Pub.ADD;
2280 RAISE Fnd_Api.G_EXC_ERROR;
2281 END IF;
2282
2283 --Assign the returned value
2284 l_Task_rec.inventory_item_id := l_item_id;
2285 l_Task_rec.item_organization_id := l_org_id;
2286
2287 /* Commented as Item is not mandatory for Summary Task
2288 Post 11.5.10 Changes done by Senthil.
2289 ELSE
2290 Fnd_Message.SET_NAME('AHL','AHL_VWP_ITEM_USE_LOV');
2291 Fnd_Msg_Pub.ADD;
2292 RAISE Fnd_Api.G_EXC_ERROR;
2293 */
2294
2295 ELSE
2296 -- bug fix #4181411
2297 -- yazhou 17-Feb-2005
2298 IF (c_visit_rec.inventory_item_id IS NOT NULL AND
2299 c_visit_rec.inventory_item_id <> Fnd_Api.G_MISS_NUM) AND
2300 (c_visit_rec.item_organization_id IS NOT NULL AND
2301 c_visit_rec.item_organization_id <> Fnd_Api.G_MISS_NUM) THEN
2302
2303 l_Task_rec.inventory_item_id := c_visit_rec.inventory_item_id;
2304 l_Task_rec.item_organization_id := c_visit_rec.item_organization_id;
2305 ELSE
2306
2307 OPEN get_task_inst_dtls(l_task_rec.visit_id);
2308 FETCH get_task_inst_dtls INTO get_task_inst_rec;
2309 IF get_task_inst_dtls%NOTFOUND THEN
2310 Fnd_Message.SET_NAME('AHL','AHL_VWP_SUM_TASK_ITEM');
2311 Fnd_Msg_Pub.ADD;
2312 CLOSE get_task_inst_dtls;
2313 RAISE Fnd_Api.G_EXC_ERROR;
2314 END IF;
2315
2316 l_Task_rec.inventory_item_id := get_task_inst_rec.inventory_item_id;
2317 l_Task_rec.item_organization_id := get_task_inst_rec.item_organization_id;
2318
2319 CLOSE get_task_inst_dtls;
2320
2321 END IF;
2322
2323 END IF;
2324
2325 IF (l_log_statement >= l_log_current_level) THEN
2326 fnd_log.string(l_log_statement,
2327 L_DEBUG_KEY,
2328 'Item ID= ' || l_Task_rec.inventory_item_id ||
2329 ', Item Org ID= ' || l_Task_rec.item_organization_id ||
2330 ', Item Name= ' || l_Task_rec.item_name ||
2331 ', Serial Number= ' || l_Task_rec.serial_number);
2332 END IF;
2333
2334 -- For SERIAL NUMBER
2335 -- Convert serial number to instance/ serial id
2336 IF (l_Task_rec.serial_number IS NOT NULL AND
2337 l_Task_rec.serial_number <> Fnd_Api.G_MISS_CHAR) THEN
2338
2339 AHL_VWP_RULES_PVT.Check_Serial_Name_Or_Id
2340 (p_item_id => l_Task_rec.inventory_item_id,
2341 p_org_id => l_Task_rec.item_organization_id,
2342 p_serial_id => l_Task_rec.instance_id,
2343 p_serial_number => l_Task_rec.serial_number,
2344 x_serial_id => l_serial_id,
2345 x_return_status => l_return_status,
2346 x_error_msg_code => l_msg_data);
2347
2348 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success THEN
2349 Fnd_Message.SET_NAME('AHL','AHL_VWP_SERIAL_NOT_EXISTS');
2350 Fnd_Msg_Pub.ADD;
2351 RAISE Fnd_Api.G_EXC_ERROR;
2352 ELSE
2353 --Assign the returned value
2354 l_Task_rec.instance_id := l_serial_id;
2355
2356 IF (l_log_statement >= l_log_current_level) THEN
2357 fnd_log.string(l_log_statement,
2358 L_DEBUG_KEY,
2359 ': Before UC Check Serial ID= ' || l_Task_rec.instance_id ||
2360 ', Item ID= ' || l_Task_rec.inventory_item_id ||
2361 ', Org ID= ' || l_Task_rec.item_organization_id);
2362 END IF;
2363 /* sowsubra - start
2364 --BEGIN: jeli added for bug 3777720
2365 IF (AHL_VWP_RULES_PVT.instance_in_config_tree(l_task_rec.visit_id, l_task_rec.instance_id) = FND_API.G_RET_STS_ERROR) THEN
2366 --END: jeli added for bug 3777720
2367 Fnd_Message.SET_NAME('AHL','AHL_VWP_TASK_SERIAL');
2368 Fnd_Msg_Pub.ADD;
2369 RAISE Fnd_Api.G_EXC_ERROR;
2370 END IF;
2371 sowsubra - end */
2372 END IF;
2373 END IF;
2374
2375 IF (l_log_statement >= l_log_current_level) THEN
2376 fnd_log.string(l_log_statement,
2377 L_DEBUG_KEY,
2378 ': Serial ID= ' || l_Task_rec.instance_id ||
2379 ': Cost parent= ' || l_Task_rec.cost_parent_number);
2380 END IF;
2381
2382 --
2383 -- For COST PARENT TASK
2384 -- Convert cost parent number to id
2385 IF (l_Task_rec.cost_parent_number IS NOT NULL AND
2386 l_Task_rec.cost_parent_number <> Fnd_Api.G_MISS_NUM ) THEN
2387
2388 AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID
2389 (p_visit_task_id => l_Task_rec.cost_parent_id,
2390 p_visit_task_number => l_Task_rec.cost_parent_number,
2391 p_visit_id => l_Task_rec.visit_id,
2392 x_visit_task_id => l_cost_parent_id,
2393 x_return_status => l_return_status,
2394 x_error_msg_code => l_msg_data);
2395
2396 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
2397 THEN
2398 Fnd_Message.SET_NAME('AHL','AHL_VWP_PARENT_NOT_EXISTS');
2399 Fnd_Msg_Pub.ADD;
2400 RAISE Fnd_Api.g_exc_error;
2401 END IF;
2402
2403 --Assign the returned value
2404 l_Task_rec.cost_parent_id := l_cost_parent_id;
2405 END IF;
2406
2407 IF (l_log_statement >= l_log_current_level) THEN
2408 fnd_log.string(l_log_statement,
2409 L_DEBUG_KEY,
2410 ': Cost parent ID = ' || l_Task_rec.cost_parent_id);
2411 END IF;
2412
2413 -- To Check for cost parent task id not forming loop
2414 IF (l_Task_rec.cost_parent_id IS NOT NULL AND
2415 l_Task_rec.cost_parent_id <> Fnd_Api.G_MISS_NUM ) THEN
2416
2417 AHL_VWP_RULES_PVT.Check_Cost_Parent_Loop
2418 (p_visit_id => l_Task_rec.visit_id,
2419 p_visit_task_id => l_Task_rec.visit_task_id ,
2420 p_cost_parent_id => l_Task_rec.cost_parent_id
2421 );
2422
2423 END IF;
2424
2425 IF (l_log_statement >= l_log_current_level) THEN
2426 fnd_log.string(l_log_statement,
2427 L_DEBUG_KEY,
2428 ': Originating Number = ' || l_Task_rec.orginating_task_number);
2429 END IF;
2430
2431 --
2432 -- For ORIGINATING TASK
2433 -- Convert originating task number to id
2434 IF (l_Task_rec.orginating_task_number IS NOT NULL AND
2435 l_Task_rec.orginating_task_number <> Fnd_Api.G_MISS_NUM ) THEN
2436
2437 AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID
2438 (p_visit_task_id => l_Task_rec.originating_task_id,
2439 p_visit_task_number => l_Task_rec.orginating_task_number,
2440 p_visit_id => l_Task_rec.visit_id,
2441 x_visit_task_id => l_originating_task_id,
2442 x_return_status => l_return_status,
2443 x_error_msg_code => l_msg_data);
2444
2445 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
2446 THEN
2447 Fnd_Message.SET_NAME('AHL','AHL_VWP_ORIGINATING_NOT_EXISTS');
2448 Fnd_Msg_Pub.ADD;
2449 RAISE Fnd_Api.g_exc_error;
2450 END IF;
2451
2452 --Assign the returned value
2453 l_Task_rec.originating_task_id := l_originating_task_id;
2454 END IF;
2455
2456 IF (l_log_statement >= l_log_current_level) THEN
2457 fnd_log.string(l_log_statement,
2458 L_DEBUG_KEY,
2459 ': Originating Task ID= ' || l_Task_rec.originating_task_id);
2460 END IF;
2461
2462 -- To Check for originating task id not forming loop
2463 IF (l_Task_rec.originating_task_id IS NOT NULL AND
2464 l_Task_rec.originating_task_id <> Fnd_Api.G_MISS_NUM ) THEN
2465
2466 AHL_VWP_RULES_PVT.Check_Origin_Task_Loop
2467 (p_visit_id => l_Task_rec.visit_id ,
2468 p_visit_task_id => l_Task_rec.visit_task_id ,
2469 p_originating_task_id => l_Task_rec.originating_task_id
2470 );
2471
2472 END IF;
2473 ----------- End defining and validate all LOVs on Create Visit's Task UI Screen---
2474
2475 ---------------------------------------------- Validate ----------------------------------------------
2476
2477 IF (l_log_statement >= l_log_current_level) THEN
2478 fnd_log.string(l_log_statement,
2479 L_DEBUG_KEY,
2480 'Before Calling Validate_Visit_Task');
2481 END IF;
2482
2483 Validate_Visit_Task (
2484 p_api_version => l_api_version,
2485 p_init_msg_list => p_init_msg_list,
2486 p_commit => Fnd_Api.g_false,
2487 p_validation_level => p_validation_level,
2488 p_task_rec => l_task_rec,
2489 x_return_status => l_return_status,
2490 x_msg_count => x_msg_count,
2491 x_msg_data => x_msg_data
2492 );
2493
2494 IF l_return_status = Fnd_Api.g_ret_sts_error THEN
2495 RAISE Fnd_Api.g_exc_error;
2496 ELSIF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
2497 RAISE Fnd_Api.g_exc_unexpected_error;
2498 END IF;
2499
2500 -- Check for the ID.
2501 IF l_task_rec.Visit_Task_ID = Fnd_Api.g_miss_num OR l_task_rec.Visit_Task_ID IS NULL THEN
2502 -- Check for the ID.
2503 l_Visit_Task_ID := AHL_VWP_RULES_PVT.Get_Visit_Task_Id();
2504 l_task_rec.visit_task_ID := l_Visit_Task_ID;
2505
2506 -- Check for the Visit Number.
2507 l_task_number := AHL_VWP_RULES_PVT.Get_Visit_Task_Number(l_task_rec.visit_id);
2508 l_task_rec.visit_task_number := l_task_number;
2509
2510 IF (l_log_statement >= l_log_current_level) THEN
2511 fnd_log.string(l_log_statement,
2512 L_DEBUG_KEY,
2513 ': Task ID= ' || l_Task_rec.visit_task_id ||
2514 ': Task number= ' || l_Task_rec.visit_task_number);
2515 END IF;
2516
2517 END IF;
2518
2519 ----------------------- Check miss_num/miss_char/miss_date-----------------------
2520 -- For all optional fields check if its g_miss_num/g_miss_char/g_miss_date
2521 -- then Null else the value call Default_Missing_Attribs procedure
2522 Default_Missing_Attribs
2523 (p_x_task_rec => l_Task_rec);
2524
2525 -------------------------- Insert ------------------------------------------------
2526
2527 IF (l_log_statement >= l_log_current_level) THEN
2528 fnd_log.string(l_log_statement,
2529 L_DEBUG_KEY,
2530 'Before Calling Ahl_Visit_Tasks_Pkg.Insert_Row' );
2531 END IF;
2532
2533 -- Invoke the table handler to create a record
2534 Ahl_Visit_Tasks_Pkg.Insert_Row (
2535 X_ROWID => l_rowid,
2536 X_VISIT_TASK_ID => l_task_rec.visit_task_id,
2537 X_VISIT_TASK_NUMBER => l_task_rec.visit_task_number,
2538 X_OBJECT_VERSION_NUMBER => 1,
2539 X_VISIT_ID => l_task_rec.visit_id,
2540 X_PROJECT_TASK_ID => NULL, --l_task_rec.project_task_id,
2541 X_COST_PARENT_ID => l_task_rec.cost_parent_id,
2542 X_MR_ROUTE_ID => NULL,
2543 X_MR_ID => NULL,
2544 X_DURATION => NULL,
2545 X_UNIT_EFFECTIVITY_ID => NULL,
2546 X_START_FROM_HOUR => NULL,
2547 X_INVENTORY_ITEM_ID => l_task_rec.inventory_item_id,
2548 X_ITEM_ORGANIZATION_ID => l_task_rec.item_organization_id,
2549 X_INSTANCE_ID => l_task_rec.instance_id,
2550 X_PRIMARY_VISIT_TASK_ID => NULL, --l_task_rec.primary_visit_task_id,
2551 X_ORIGINATING_TASK_ID => l_task_rec.originating_task_id,
2552 X_SERVICE_REQUEST_ID => l_task_rec.service_request_id,
2553 X_TASK_TYPE_CODE => l_task_rec.task_type_code,
2554 X_DEPARTMENT_ID => l_task_rec.department_id,
2555 X_SUMMARY_TASK_FLAG => 'Y',
2556 X_PRICE_LIST_ID => NULL,
2557 X_STATUS_CODE => 'PLANNING',
2558 X_ESTIMATED_PRICE => NULL,
2559 X_ACTUAL_PRICE => NULL,
2560 X_ACTUAL_COST => NULL,
2561 -- Post 11.5.10 Changes by Senthil.
2562 X_STAGE_ID => l_task_rec.STAGE_ID,
2563 -- Added cxcheng POST11510--------------
2564 X_START_DATE_TIME => NULL,
2565 X_END_DATE_TIME => NULL,
2566 X_ATTRIBUTE_CATEGORY => l_task_rec.ATTRIBUTE_CATEGORY,
2567 X_ATTRIBUTE1 => l_task_rec.ATTRIBUTE1,
2568 X_ATTRIBUTE2 => l_task_rec.ATTRIBUTE2,
2569 X_ATTRIBUTE3 => l_task_rec.ATTRIBUTE3,
2570 X_ATTRIBUTE4 => l_task_rec.ATTRIBUTE4,
2571 X_ATTRIBUTE5 => l_task_rec.ATTRIBUTE5,
2572 X_ATTRIBUTE6 => l_task_rec.ATTRIBUTE6,
2573 X_ATTRIBUTE7 => l_task_rec.ATTRIBUTE7,
2574 X_ATTRIBUTE8 => l_task_rec.ATTRIBUTE8,
2575 X_ATTRIBUTE9 => l_task_rec.ATTRIBUTE9,
2576 X_ATTRIBUTE10 => l_task_rec.ATTRIBUTE10,
2577 X_ATTRIBUTE11 => l_task_rec.ATTRIBUTE11,
2578 X_ATTRIBUTE12 => l_task_rec.ATTRIBUTE12,
2579 X_ATTRIBUTE13 => l_task_rec.ATTRIBUTE13,
2580 X_ATTRIBUTE14 => l_task_rec.ATTRIBUTE14,
2581 X_ATTRIBUTE15 => l_task_rec.ATTRIBUTE15,
2582 X_VISIT_TASK_NAME => l_task_rec.visit_task_name,
2583 X_DESCRIPTION => l_task_rec.description,
2584 -- Added by rnahata for Issue 105 - Qty is zero for manully created summary tasks
2585 X_QUANTITY => 0,
2586 X_CREATION_DATE => SYSDATE,
2587 X_CREATED_BY => Fnd_Global.USER_ID,
2588 X_LAST_UPDATE_DATE => SYSDATE,
2589 X_LAST_UPDATED_BY => Fnd_Global.USER_ID,
2590 X_LAST_UPDATE_LOGIN => Fnd_Global.LOGIN_ID );
2591
2592 IF (l_log_statement >= l_log_current_level) THEN
2593 fnd_log.string(l_log_statement,
2594 L_DEBUG_KEY,
2595 'After Calling Ahl_Visit_Tasks_Pkg.Insert_Row' );
2596 END IF;
2597
2598 ------------------------- finish -------------------------------
2599 -- Added cxcheng POST11510--------------
2600 --Now adjust the times derivation for task
2601 IF (l_log_statement >= l_log_current_level) THEN
2602 fnd_log.string(l_log_statement,
2603 L_DEBUG_KEY,
2604 'Before Calling AHL_VWP_TIMES_PVT.Adjust_Task_Times' );
2605 END IF;
2606
2607 AHL_VWP_TIMES_PVT.Adjust_Task_Times(p_api_version => 1.0,
2608 p_init_msg_list => Fnd_Api.G_FALSE,
2609 p_commit => Fnd_Api.G_FALSE,
2610 p_validation_level => Fnd_Api.G_VALID_LEVEL_FULL,
2611 x_return_status => l_return_status,
2612 x_msg_count => l_msg_count,
2613 x_msg_data => l_msg_data,
2614 p_task_id => l_task_rec.visit_task_id);
2615
2616 IF (l_log_statement >= l_log_current_level) THEN
2617 fnd_log.string(l_log_statement,
2618 L_DEBUG_KEY,
2619 'After Calling AHL_VWP_TIMES_PVT.Adjust_Task_Times, Return Status = '|| l_return_status );
2620 END IF;
2621
2622 --Standard check to count messages
2623 l_msg_count := Fnd_Msg_Pub.count_msg;
2624
2625 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
2626 x_msg_count := l_msg_count;
2627 x_return_status := Fnd_Api.G_RET_STS_ERROR;
2628 RAISE Fnd_Api.G_EXC_ERROR;
2629 END IF;
2630
2631 -- set OUT value
2632 p_x_task_rec.Visit_Task_ID := l_task_rec.Visit_Task_ID;
2633 p_x_task_rec.Visit_Task_Number := l_task_rec.Visit_Task_Number;
2634
2635 IF c_visit_rec.Any_Task_Chg_Flag='N' THEN
2636 AHL_VWP_RULES_PVT.update_visit_task_flag(
2637 p_visit_id =>c_visit_rec.visit_id,
2638 p_flag =>'Y',
2639 x_return_status =>x_return_status);
2640 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2641 RAISE FND_API.G_EXC_ERROR;
2642 END IF;
2643 END IF;
2644
2645 IF (l_log_statement >= l_log_current_level) THEN
2646 fnd_log.string(l_log_statement,
2647 L_DEBUG_KEY,
2648 ': After Insert ' || 'Task ID= ' || p_x_Task_rec.visit_task_id ||
2649 ': After Insert ' || 'Task Number= ' || p_x_Task_rec.visit_task_number);
2650 END IF;
2651
2652 END IF; -- Check for visit status code in case if closed or any other
2653
2654 ---------------------------End of API Body---------------------------------------
2655 --Standard check to count messages
2656 l_msg_count := Fnd_Msg_Pub.count_msg;
2657
2658 IF l_msg_count > 0 THEN
2659 x_msg_count := l_msg_count;
2660 x_return_status := Fnd_Api.G_RET_STS_ERROR;
2661 RAISE Fnd_Api.G_EXC_ERROR;
2662 END IF;
2663
2664 --Standard check for commit
2665 IF Fnd_Api.TO_BOOLEAN(p_commit) THEN
2666 COMMIT;
2667 END IF;
2668
2669 IF (l_log_procedure >= l_log_current_level) THEN
2670 fnd_log.string(l_log_procedure,
2671 L_DEBUG_KEY ||'.end',
2672 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
2673 END IF;
2674 EXCEPTION
2675 WHEN Fnd_Api.g_exc_error THEN
2676 ROLLBACK TO Create_Summary_Task;
2677 x_return_status := Fnd_Api.g_ret_sts_error;
2678 Fnd_Msg_Pub.count_and_get(
2679 p_encoded => Fnd_Api.g_false,
2680 p_count => x_msg_count,
2681 p_data => x_msg_data
2682 );
2683 WHEN Fnd_Api.g_exc_unexpected_error THEN
2684 ROLLBACK TO Create_Summary_Task;
2685 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
2686 Fnd_Msg_Pub.count_and_get (
2687 p_encoded => Fnd_Api.g_false,
2688 p_count => x_msg_count,
2689 p_data => x_msg_data
2690 );
2691 WHEN OTHERS THEN
2692 ROLLBACK TO Create_Summary_Task;
2693 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
2694 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
2695 THEN
2696 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
2697 END IF;
2698 Fnd_Msg_Pub.count_and_get (
2699 p_encoded => Fnd_Api.g_false,
2700 p_count => x_msg_count,
2701 p_data => x_msg_data
2702 );
2703 END Create_Summary_Task;
2704
2705 --------------------------------------------------------------------
2706 -- PROCEDURE
2707 -- Update_Task
2708 --
2709 -- PURPOSE
2710 -- To update all types of tasks i.e Unassociated/Summary/Unplanned/Planned Tasks.
2711 --------------------------------------------------------------------
2712 PROCEDURE Update_Task (
2713 p_api_version IN NUMBER,
2714 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
2715 p_commit IN VARCHAR2 := Fnd_Api.g_false,
2716 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
2717 p_module_type IN VARCHAR2 := 'JSP',
2718 p_x_task_rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
2719 x_return_status OUT NOCOPY VARCHAR2,
2720 x_msg_count OUT NOCOPY NUMBER,
2721 x_msg_data OUT NOCOPY VARCHAR2
2722 )
2723 IS
2724 L_API_VERSION CONSTANT NUMBER := 1.0;
2725 L_API_NAME CONSTANT VARCHAR2(30) := 'Update_Task';
2726 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
2727
2728 -- local variables defined for the procedure
2729 l_task_rec AHL_VWP_RULES_PVT.Task_Rec_Type := p_x_task_rec;
2730 l_msg_data VARCHAR2(2000);
2731 l_return_status VARCHAR2(1);
2732 l_msg_count NUMBER;
2733 l_visit_end_date DATE;
2734
2735 -- To find task related information
2736 CURSOR c_Task (x_id IN NUMBER) IS
2737 SELECT * FROM Ahl_Visit_Tasks_VL
2738 WHERE VISIT_TASK_ID = x_id;
2739 c_Task_rec c_Task%ROWTYPE;
2740
2741 BEGIN
2742 IF (l_log_procedure >= l_log_current_level) THEN
2743 fnd_log.string(l_log_procedure,
2744 L_DEBUG_KEY ||'.begin',
2745 'At the start of PL SQL procedure.');
2746 END IF;
2747
2748 --------------------- initialize -----------------------
2749 SAVEPOINT Update_Task;
2750
2751 IF Fnd_Api.to_boolean (p_init_msg_list) THEN
2752 Fnd_Msg_Pub.initialize;
2753 END IF;
2754
2755 -- Initialize API return status to success
2756 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
2757
2758 -- Standard call to check for call compatibility.
2759 IF NOT Fnd_Api.compatible_api_call(
2760 l_api_version,
2761 p_api_version,
2762 l_api_name,
2763 G_PKG_NAME
2764 ) THEN
2765 RAISE Fnd_Api.g_exc_unexpected_error;
2766 END IF;
2767 --------------------Start of API Body-----------------------------------
2768
2769 -------------------Cursor values------------------------------------
2770
2771 OPEN c_Task(l_Task_rec.visit_task_id);
2772 FETCH c_Task INTO c_Task_rec;
2773 CLOSE c_Task;
2774
2775 ---------------------------------------------- Start----------------------------------------------------------
2776
2777 IF (l_log_statement >= l_log_current_level) THEN
2778 fnd_log.string(l_log_statement,
2779 L_DEBUG_KEY,
2780 'Status Code = ' || c_Task_rec.status_code);
2781 END IF;
2782
2783 IF c_Task_rec.status_code = 'RELEASED' THEN
2784 IF (l_log_statement >= l_log_current_level) THEN
2785 fnd_log.string(l_log_statement,
2786 L_DEBUG_KEY,
2787 'Before calling Update_Tasks_in_Production');
2788 END IF;
2789
2790 Update_Tasks_in_Production
2791 (p_api_version => l_api_version,
2792 p_init_msg_list => p_init_msg_list,
2793 p_commit => Fnd_Api.g_false,
2794 p_validation_level => p_validation_level,
2795 p_module_type => p_module_type,
2796 p_x_task_rec => l_task_rec,
2797 x_return_status => l_return_status,
2798 x_msg_count => l_msg_count,
2799 x_msg_data => l_msg_data
2800 );
2801 IF (l_log_statement >= l_log_current_level) THEN
2802 fnd_log.string(l_log_statement,
2803 L_DEBUG_KEY,
2804 'After calling Update_Tasks_in_Production, Return Status = ' || l_return_status);
2805 END IF;
2806
2807 ELSE
2808 IF (l_log_statement >= l_log_current_level) THEN
2809 fnd_log.string(l_log_statement,
2810 L_DEBUG_KEY,
2811 'Before calling Update_Tasks_in_Planning');
2812 END IF;
2813 Update_Tasks_in_Planning
2814 (p_api_version => l_api_version,
2815 p_init_msg_list => p_init_msg_list,
2816 p_commit => Fnd_Api.g_false,
2817 p_validation_level => p_validation_level,
2818 p_module_type => p_module_type,
2819 p_x_task_rec => l_task_rec,
2820 x_return_status => l_return_status,
2821 x_msg_count => l_msg_count,
2822 x_msg_data => l_msg_data
2823 );
2824 IF (l_log_statement >= l_log_current_level) THEN
2825 fnd_log.string(l_log_statement,
2826 L_DEBUG_KEY,
2827 'After calling Update_Tasks_in_Planning,Return Status = '|| l_return_status);
2828 END IF;
2829 END IF;
2830
2831 -- Added to raise errors after calling respective API's
2832 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2833 RAISE FND_API.G_EXC_ERROR;
2834 END IF;
2835
2836 ------------------------End of API Body------------------------------------
2837 --Standard check to count messages
2838 l_msg_count := Fnd_Msg_Pub.count_msg;
2839
2840 IF l_msg_count > 0 THEN
2841 x_msg_count := l_msg_count;
2842 x_return_status := Fnd_Api.G_RET_STS_ERROR;
2843 RAISE Fnd_Api.G_EXC_ERROR;
2844 END IF;
2845
2846 --Standard check for commit
2847 IF Fnd_Api.TO_BOOLEAN(p_commit) THEN
2848 COMMIT;
2849 END IF;
2850
2851 IF (l_log_procedure >= l_log_current_level) THEN
2852 fnd_log.string(l_log_procedure,
2853 L_DEBUG_KEY ||'.end',
2854 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
2855 END IF;
2856
2857 EXCEPTION
2858 WHEN Fnd_Api.g_exc_error THEN
2859 ROLLBACK TO Update_Task;
2860 x_return_status := Fnd_Api.g_ret_sts_error;
2861 Fnd_Msg_Pub.count_and_get (
2862 p_encoded => Fnd_Api.g_false,
2863 p_count => x_msg_count,
2864 p_data => x_msg_data
2865 );
2866 WHEN Fnd_Api.g_exc_unexpected_error THEN
2867 ROLLBACK TO Update_Task;
2868 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
2869 Fnd_Msg_Pub.count_and_get (
2870 p_encoded => Fnd_Api.g_false,
2871 p_count => x_msg_count,
2872 p_data => x_msg_data
2873 );
2874 WHEN OTHERS THEN
2875 ROLLBACK TO Update_Task;
2876 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
2877 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
2878 THEN
2879 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
2880 END IF;
2881 Fnd_Msg_Pub.count_and_get (
2882 p_encoded => Fnd_Api.g_false,
2883 p_count => x_msg_count,
2884 p_data => x_msg_data
2885 );
2886 END Update_Task;
2887
2888 --------------------------------------------------------------------
2889 -- PROCEDURE
2890 -- Update_Tasks_in_Planning
2891 --
2892 -- PURPOSE
2893 -- To update visit task when in planning status
2894 --------------------------------------------------------------------
2895
2896 PROCEDURE Update_Tasks_in_Planning(
2897 p_api_version IN NUMBER := 1.0,
2898 p_init_msg_list IN VARCHAR2:= FND_API.G_FALSE,
2899 p_commit IN VARCHAR2:= FND_API.G_FALSE,
2900 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
2901 p_module_type IN VARCHAR2:= 'JSP',
2902 p_x_task_rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
2903 x_return_status OUT NOCOPY VARCHAR2,
2904 x_msg_count OUT NOCOPY NUMBER,
2905 x_msg_data OUT NOCOPY VARCHAR2
2906
2907 ) IS
2908 L_API_VERSION CONSTANT NUMBER := 1.0;
2909 L_API_NAME CONSTANT VARCHAR2(30) := 'Update_Tasks_in_Planning';
2910 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
2911 l_return_status VARCHAR2(1);
2912 l_msg_data VARCHAR2(2000);
2913 l_msg_count NUMBER;
2914 l_count NUMBER;
2915 l_workorder_rec AHL_PRD_WORKORDER_PVT.prd_workorder_rec;
2916 l_workoper_tbl AHL_PRD_WORKORDER_PVT.prd_workoper_tbl;
2917
2918 -- To find visit related information
2919 CURSOR c_Visit (p_visit_id IN NUMBER) IS
2920 SELECT ROW_ID ,
2921 VISIT_ID ,
2922 VISIT_NUMBER ,
2923 OBJECT_VERSION_NUMBER ,
2924 LAST_UPDATE_DATE ,
2925 LAST_UPDATED_BY ,
2926 CREATION_DATE ,
2927 CREATED_BY ,
2928 LAST_UPDATE_LOGIN ,
2929 ORGANIZATION_ID ,
2930 DEPARTMENT_ID ,
2931 STATUS_CODE ,
2932 START_DATE_TIME ,
2933 VISIT_TYPE_CODE ,
2934 SIMULATION_PLAN_ID ,
2935 ITEM_INSTANCE_ID ,
2936 ITEM_ORGANIZATION_ID ,
2937 INVENTORY_ITEM_ID ,
2938 ASSO_PRIMARY_VISIT_ID ,
2939 SIMULATION_DELETE_FLAG,
2940 TEMPLATE_FLAG ,
2941 OUT_OF_SYNC_FLAG ,
2942 PROJECT_FLAG ,
2943 PROJECT_ID ,
2944 VISIT_NAME ,
2945 DESCRIPTION ,
2946 SERVICE_REQUEST_ID ,
2947 SPACE_CATEGORY_CODE ,
2948 CLOSE_DATE_TIME ,
2949 SCHEDULE_DESIGNATOR ,
2950 PRICE_LIST_ID ,
2951 ESTIMATED_PRICE ,
2952 ACTUAL_PRICE ,
2953 OUTSIDE_PARTY_FLAG ,
2954 ANY_TASK_CHG_FLAG ,
2955 ATTRIBUTE_CATEGORY ,
2956 ATTRIBUTE1 ,
2957 ATTRIBUTE2 ,
2958 ATTRIBUTE3 ,
2959 ATTRIBUTE4 ,
2960 ATTRIBUTE5 ,
2961 ATTRIBUTE6 ,
2962 ATTRIBUTE7 ,
2963 ATTRIBUTE8 ,
2964 ATTRIBUTE9 ,
2965 ATTRIBUTE10 ,
2966 ATTRIBUTE11 ,
2967 ATTRIBUTE12 ,
2968 ATTRIBUTE13 ,
2969 ATTRIBUTE14 ,
2970 ATTRIBUTE15
2971 FROM Ahl_Visits_VL
2972 WHERE VISIT_ID = p_visit_id;
2973
2974 l_Visit_rec c_Visit%ROWTYPE;
2975 l_Task_rec AHL_VWP_RULES_PVT.Task_Rec_Type default p_x_task_rec;
2976
2977 Cursor c_visit_task_det(p_visit_task_id in number)
2978 is
2979 Select ROW_ID ,
2980 VISIT_TASK_ID ,
2981 VISIT_TASK_NUMBER ,
2982 OBJECT_VERSION_NUMBER ,
2983 CREATION_DATE ,
2984 CREATED_BY ,
2985 LAST_UPDATE_DATE ,
2986 LAST_UPDATED_BY ,
2987 LAST_UPDATE_LOGIN ,
2988 VISIT_ID ,
2989 PROJECT_TASK_ID ,
2990 COST_PARENT_ID ,
2991 MR_ROUTE_ID ,
2992 MR_ID ,
2993 DURATION ,
2994 UNIT_EFFECTIVITY_ID ,
2995 VISIT_TASK_NAME ,
2996 DESCRIPTION ,
2997 START_FROM_HOUR ,
2998 INVENTORY_ITEM_ID ,
2999 ITEM_ORGANIZATION_ID ,
3000 INSTANCE_ID ,
3001 PRIMARY_VISIT_TASK_ID ,
3002 SUMMARY_TASK_FLAG ,
3003 ORIGINATING_TASK_ID ,
3004 SECURITY_GROUP_ID ,
3005 SERVICE_REQUEST_ID ,
3006 TASK_TYPE_CODE ,
3007 DEPARTMENT_ID ,
3008 PRICE_LIST_ID ,
3009 STATUS_CODE ,
3010 ACTUAL_COST ,
3011 ESTIMATED_PRICE ,
3012 ACTUAL_PRICE ,
3013 ATTRIBUTE_CATEGORY ,
3014 ATTRIBUTE1 ,
3015 ATTRIBUTE2 ,
3016 ATTRIBUTE3 ,
3017 ATTRIBUTE4 ,
3018 ATTRIBUTE5 ,
3019 ATTRIBUTE6 ,
3020 ATTRIBUTE7 ,
3021 ATTRIBUTE8 ,
3022 ATTRIBUTE9 ,
3023 ATTRIBUTE10 ,
3024 ATTRIBUTE11 ,
3025 ATTRIBUTE12 ,
3026 ATTRIBUTE13 ,
3027 ATTRIBUTE14 ,
3028 ATTRIBUTE15 ,
3029 QUANTITY , --Added by rnahata for Issue 105
3030 STAGE_ID
3031 from ahl_visit_tasks_vl
3032 where visit_task_id = p_visit_task_id;
3033
3034 l_old_Task_rec c_visit_task_det%rowtype;
3035
3036 -- To find if WIP job is created for the Visit
3037 CURSOR c_job(x_id IN NUMBER) IS
3038 SELECT COUNT(*) FROM AHL_WORKORDERS
3039 WHERE VISIT_ID = x_id
3040 AND MASTER_WORKORDER_FLAG = 'Y'
3041 AND STATUS_CODE = 17;
3042
3043 CURSOR c_Task_WO(x_task_id IN NUMBER) IS
3044 SELECT * FROM AHL_WORKORDERS
3045 WHERE VISIT_TASK_ID = x_task_id
3046 AND STATUS_CODE = 17;
3047 l_task_workrec c_Task_WO%ROWTYPE;
3048
3049 -- To find all tasks under this current visit related information
3050 CURSOR c_all_Task (x_id IN NUMBER) IS
3051 SELECT *
3052 FROM Ahl_Visit_Tasks_VL
3053 WHERE VISIT_TASK_ID = x_id;
3054 l_all_Task_rec c_all_Task%ROWTYPE;
3055
3056 l_workrec AHL_PRD_WORKORDER_PVT.PRD_WORKORDER_REC;
3057
3058 BEGIN
3059 IF (l_log_procedure >= l_log_current_level) THEN
3060 fnd_log.string(l_log_procedure,
3061 L_DEBUG_KEY ||'.begin',
3062 'At the start of PL SQL procedure.' ||
3063 'Visit ID ' || l_task_rec.visit_id ||
3064 'Visit Task ID ' || l_Task_rec.visit_task_id);
3065 END IF;
3066
3067 --------------------- initialize -----------------------
3068 SAVEPOINT Update_Tasks_in_Planning;
3069
3070 IF Fnd_Api.to_boolean (p_init_msg_list) THEN
3071 Fnd_Msg_Pub.initialize;
3072 END IF;
3073
3074 -- Initialize API return status to success
3075 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
3076
3077 -- Standard call to check for call compatibility.
3078 IF NOT Fnd_Api.compatible_api_call(
3079 l_api_version,
3080 p_api_version,
3081 l_api_name,
3082 G_PKG_NAME
3083 ) THEN
3084 RAISE Fnd_Api.g_exc_unexpected_error;
3085 END IF;
3086
3087 OPEN c_visit(l_task_rec.visit_id);
3088 FETCH c_visit INTO l_visit_rec;
3089 CLOSE c_visit;
3090
3091 OPEN c_visit_task_det(l_Task_rec.visit_task_id);
3092 FETCH c_visit_task_det INTO l_old_Task_rec;
3093 CLOSE c_visit_task_det;
3094
3095 IF (l_log_statement >= l_log_current_level) THEN
3096 fnd_log.string(l_log_statement,
3097 L_DEBUG_KEY,
3098 'Task type code = ' || l_old_Task_rec.task_type_code);
3099 END IF;
3100
3101 IF (l_old_Task_rec.task_type_code <> 'SUMMARY'
3102 AND l_Task_rec.stage_name IS NOT NULL) THEN
3103
3104 IF (l_log_statement >= l_log_current_level) THEN
3105 fnd_log.string(l_log_statement,
3106 L_DEBUG_KEY,
3107 ' Call AHL_VWP_VISITS_STAGES_PVT.VALIDATE_STAGE_UPDATES ');
3108 END IF;
3109 AHL_VWP_VISITS_STAGES_PVT.VALIDATE_STAGE_UPDATES(
3110 P_API_VERSION => 1.0,
3111 P_VISIT_ID => l_Task_rec.visit_id,
3112 P_VISIT_TASK_ID => l_Task_rec.visit_task_id,
3113 P_STAGE_NAME => L_task_rec.STAGE_NAME,
3114 X_STAGE_ID => L_task_rec.STAGE_ID,
3115 X_RETURN_STATUS => l_return_status,
3116 X_MSG_COUNT => l_msg_count,
3117 X_MSG_DATA => l_msg_data );
3118
3119 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
3120 x_msg_count := l_msg_count;
3121 x_return_status := Fnd_Api.G_RET_STS_ERROR;
3122 RAISE Fnd_Api.G_EXC_ERROR;
3123 END IF;
3124 END IF;
3125
3126 -- Code added to make sure that department name to id conversion takes place
3127 -- Irrespective of above API Being Called.
3128 IF (l_task_rec.dept_name IS NOT NULL AND l_task_rec.dept_name <> Fnd_Api.G_MISS_CHAR ) THEN
3129 AHL_VWP_RULES_PVT.Check_Dept_Desc_Or_Id
3130 (p_organization_id => l_visit_rec.organization_id,
3131 p_dept_name => l_task_rec.dept_name,
3132 p_department_id => NULL,
3133 x_department_id => l_task_rec.department_id,
3134 x_return_status => l_return_status,
3135 x_error_msg_code => l_msg_data);
3136
3137 IF (NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS) THEN
3138 Fnd_Message.SET_NAME('AHL','AHL_VWP_DEPT_NOT_EXISTS');
3139 Fnd_Msg_Pub.ADD;
3140 RAISE Fnd_Api.G_EXC_ERROR;
3141 END IF;
3142
3143 -- Changes for Post 11.5.10 by cxcheng
3144 Ahl_vwp_rules_pvt.CHECK_DEPARTMENT_SHIFT
3145 ( P_DEPT_ID => l_task_rec.department_id,
3146 X_RETURN_STATUS => l_return_status);
3147
3148 IF (NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS) THEN
3149 Fnd_Message.SET_NAME('AHL','AHL_VWP_NO_DEPT_SHIFT');
3150 Fnd_Msg_Pub.ADD;
3151 RAISE Fnd_Api.G_EXC_ERROR;
3152 END IF;
3153 ELSE
3154 l_task_rec.department_id := NULL;
3155 END IF;
3156
3157 IF (l_log_statement >= l_log_current_level) THEN
3158 fnd_log.string(l_log_statement,
3159 L_DEBUG_KEY,
3160 ' In Update task... ' ||
3161 ' l_task_rec.department_id '|| l_task_rec.department_id ||
3162 ' l_old_Task_rec.department_id'|| l_old_Task_rec.department_id);
3163 END IF;
3164
3165 -- If Task DEPARTMENT is changed after price/cost is estimated,
3166
3167 IF (NVL(l_task_rec.department_id, -999 ) <> NVL(l_old_Task_rec.department_id, -999)) THEN
3168
3169 -- If Task DEPARTMENT is changed after price/cost is estimated,
3170 -- the prices associated to Visit and all the Tasks in the visit will be cleared up
3171 OPEN c_job(l_visit_rec.visit_id);
3172 FETCH c_job INTO l_count;
3173 CLOSE c_job;
3174
3175 IF l_count > 0 THEN
3176 -- To update visit's prices
3177 UPDATE AHL_VISITS_B
3178 SET ACTUAL_PRICE = NULL, ESTIMATED_PRICE = NULL,
3179 OBJECT_VERSION_NUMBER = OBJECT_VERSION_NUMBER + 1
3180 WHERE VISIT_ID = l_visit_rec.visit_id;
3181
3182 IF (l_log_statement >= l_log_current_level) THEN
3183 fnd_log.string(l_log_statement,
3184 L_DEBUG_KEY,
3185 ' After Update Price for Visit');
3186 END IF;
3187
3188 -- To update all tasks prices of tasks under this visit
3189 OPEN c_all_task(l_visit_rec.visit_id);
3190 LOOP
3191 FETCH c_all_task INTO l_all_task_rec;
3192 EXIT WHEN c_all_task%NOTFOUND;
3193 -- Tasks found for visit
3194 -- To set prices to NULL in case if the visit's department is changed
3195 UPDATE AHL_VISIT_TASKS_B
3196 SET ACTUAL_PRICE = NULL, ESTIMATED_PRICE = NULL,
3197 OBJECT_VERSION_NUMBER = l_all_task_rec.object_version_number + 1
3198 WHERE VISIT_TASK_ID = l_all_task_rec.visit_task_id;
3199 END LOOP;
3200 CLOSE c_all_task;
3201
3202 IF (l_log_statement >= l_log_current_level) THEN
3203 fnd_log.string(l_log_statement,
3204 L_DEBUG_KEY,
3205 ' After Update Price for all Tasks');
3206 END IF;
3207
3208 END IF;
3209
3210 -- TASK DEPARTMENT UPDATED THEN
3211 -- Wip job for the current task to be updated with new department
3212 OPEN c_Task_WO(l_Task_rec.visit_task_id);
3213 FETCH c_Task_WO INTO l_task_workrec;
3214 IF c_Task_WO%FOUND THEN
3215 l_workorder_rec.WORKORDER_ID := l_task_workrec.workorder_id;
3216 l_workorder_rec.OBJECT_VERSION_NUMBER := l_task_workrec.object_version_number;
3217 IF l_Task_rec.department_id is NULL THEN
3218 l_workorder_rec.DEPARTMENT_ID := l_visit_rec.department_id;
3219 ELSE
3220 l_workorder_rec.DEPARTMENT_ID := l_Task_rec.department_id;
3221 END IF;
3222 CLOSE c_Task_WO;
3223
3224 IF (l_log_statement >= l_log_current_level) THEN
3225 fnd_log.string(l_log_statement,
3226 L_DEBUG_KEY,
3227 'Before Calling AHL_PRD_WORKORDER_PVT.update_job');
3228 END IF;
3229 AHL_PRD_WORKORDER_PVT.update_job
3230 (p_api_version =>1.0,
3231 p_init_msg_list =>fnd_api.g_false,
3232 p_commit =>fnd_api.g_false,
3233 p_validation_level =>p_validation_level,
3234 p_default =>fnd_api.g_false,
3235 p_module_type =>'API',
3236 x_return_status =>x_return_status,
3237 x_msg_count =>x_msg_count,
3238 x_msg_data =>x_msg_data,
3239 p_wip_load_flag =>'Y',
3240 p_x_prd_workorder_rec =>l_workorder_rec,
3241 P_X_PRD_WORKOPER_TBL =>l_workoper_tbl
3242 );
3243
3244 IF (l_log_statement >= l_log_current_level) THEN
3245 fnd_log.string(l_log_statement,
3246 L_DEBUG_KEY,
3247 'After Calling AHL_PRD_WORKORDER_PVT.update_job, Return Status = ' || x_return_status);
3248 END IF;
3249
3250 IF l_return_status <> Fnd_Api.g_ret_sts_success THEN
3251 RAISE Fnd_Api.G_EXC_ERROR;
3252 END IF;
3253
3254 END IF;
3255 CLOSE c_Task_wO;
3256
3257 END IF; -- Check for Dept change
3258
3259 IF (l_log_statement >= l_log_current_level) THEN
3260 fnd_log.string(l_log_statement,
3261 L_DEBUG_KEY,
3262 ': After calling update task for costing changes');
3263 END IF;
3264
3265 IF l_task_rec.task_type_code = 'SUMMARY' THEN
3266 IF (l_log_statement >= l_log_current_level)THEN
3267 fnd_log.string(l_log_statement,
3268 L_DEBUG_KEY,
3269 'Before Calling Update_Summary_Task, TASK TYPE = ' || l_task_rec.task_type_code);
3270 END IF;
3271
3272 Update_Summary_Task
3273 (
3274 p_api_version => l_api_version,
3275 p_init_msg_list => p_init_msg_list,
3276 p_commit => Fnd_Api.g_false,
3277 p_validation_level => p_validation_level,
3278 p_module_type => p_module_type,
3279 p_x_task_rec => l_task_rec,
3280 x_return_status => l_return_status,
3281 x_msg_count => l_msg_count,
3282 x_msg_data => l_msg_data
3283 );
3284 IF (l_log_statement >= l_log_current_level)THEN
3285 fnd_log.string(l_log_statement,
3286 L_DEBUG_KEY,
3287 'After Calling Update_Summary_Task, Return Status = ' || l_return_status);
3288 END IF;
3289 ELSIF l_task_rec.task_type_code = 'PLANNED' THEN
3290 -- Call AHL_VWP_PLAN_TASKS_PVT
3291
3292 IF (l_log_statement >= l_log_current_level)THEN
3293 fnd_log.string(l_log_statement,
3294 L_DEBUG_KEY,
3295 'Calling Update_Planned_Task, TASK TYPE = ' || l_task_rec.task_type_code);
3296 END IF;
3297
3298 AHL_VWP_PLAN_TASKS_PVT.Update_Planned_Task
3299 (
3300 p_api_version => l_api_version,
3301 p_init_msg_list => p_init_msg_list,
3302 p_commit => Fnd_Api.g_false,
3303 p_validation_level => p_validation_level,
3304 p_module_type => p_module_type,
3305 p_x_task_rec => l_task_rec,
3306 x_return_status => l_return_status,
3307 x_msg_count => l_msg_count,
3308 x_msg_data => l_msg_data
3309 );
3310 ELSIF l_task_rec.task_type_code = 'UNPLANNED' THEN
3311 -- Call AHL_VWP_UNPLAN_TASKS_PVT
3312 IF (l_log_statement >= l_log_current_level)THEN
3313 fnd_log.string(l_log_statement,
3314 L_DEBUG_KEY,
3315 'Calling Update_Unplanned_Task, TASK TYPE = ' || l_task_rec.task_type_code);
3316 END IF;
3317
3318 AHL_VWP_UNPLAN_TASKS_PVT.Update_Unplanned_Task
3319 (p_api_version => l_api_version,
3320 p_init_msg_list => p_init_msg_list,
3321 p_commit => Fnd_Api.g_false,
3322 p_validation_level => p_validation_level,
3323 p_module_type => p_module_type,
3324 p_x_task_rec => l_task_rec,
3325 x_return_status => l_return_status,
3326 x_msg_count => l_msg_count,
3327 x_msg_data => l_msg_data
3328 );
3329 ELSIF l_task_rec.task_type_code = 'UNASSOCIATED' THEN
3330 -- Call AHL_VWP_UNPLAN_TASKS_PVT
3331 IF (l_log_statement >= l_log_current_level)THEN
3332 fnd_log.string(l_log_statement,
3333 L_DEBUG_KEY,
3334 'Before Calling Update_Unassociated_Task');
3335 END IF;
3336
3337 Update_Unassociated_Task
3338 (p_api_version => l_api_version,
3339 p_init_msg_list => p_init_msg_list,
3340 p_commit => Fnd_Api.g_false,
3341 p_validation_level => p_validation_level,
3342 p_module_type => p_module_type,
3343 p_x_task_rec => l_task_rec,
3344 x_return_status => l_return_status,
3345 x_msg_count => l_msg_count,
3346 x_msg_data => l_msg_data
3347 );
3348
3349 IF (l_log_statement >= l_log_current_level)THEN
3350 fnd_log.string(l_log_statement,
3351 L_DEBUG_KEY,
3352 'After Calling Update_Unassociated_Task, Return Status = ' ||l_return_status );
3353 END IF;
3354 END IF;
3355
3356 -- Added to raise errors after calling respective API's
3357 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3358 RAISE FND_API.G_EXC_ERROR;
3359 END IF;
3360
3361 --------------------------------------------------------------------------
3362 ---- START 11.5.10 CHANGES FOR COSTING ----
3363 --------------------------------------------------------------------------
3364
3365 -- Conversion is done to make sure that the number to id conversion takes place
3366 -- Irrespective of above Update API Calls.
3367 -- Convert cost parent number to id
3368 IF (p_x_task_rec.cost_parent_number IS NOT NULL AND
3369 p_x_task_rec.cost_parent_number <> Fnd_Api.G_MISS_NUM ) THEN
3370
3371 IF (l_log_statement >= l_log_current_level)THEN
3372 fnd_log.string(l_log_statement,
3373 L_DEBUG_KEY,
3374 'Calling AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID ');
3375 END IF;
3376
3377 AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID
3378 (p_visit_task_id => p_x_task_rec.cost_parent_id,
3379 p_visit_task_number => p_x_task_rec.cost_parent_number,
3380 p_visit_id => p_x_task_rec.visit_id,
3381 x_visit_task_id => p_x_task_rec.cost_parent_id,
3382 x_return_status => l_return_status,
3383 x_error_msg_code => l_msg_data);
3384
3385 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3386 RAISE FND_API.G_EXC_ERROR;
3387 END IF;
3388 ELSE
3389 p_x_task_rec.cost_parent_id := null;
3390 END IF;
3391
3392 -- Updating Cost Parent should update the any_task_chg_flag
3393 IF (NVL(p_x_task_rec.cost_parent_id, -999 ) <> NVL(l_old_Task_rec.cost_parent_id, -999)) THEN
3394 IF l_visit_rec.any_task_chg_flag = 'N' THEN
3395 IF (l_log_statement >= l_log_current_level)THEN
3396 fnd_log.string(l_log_statement,
3397 L_DEBUG_KEY,
3398 'Before Calling AHL_VWP_RULES_PVT.Update_Visit_Task_Flag ' ||
3399 'Any_task_chg_flag = ' ||l_visit_rec.any_task_chg_flag);
3400 END IF;
3401
3402 AHL_VWP_RULES_PVT.Update_Visit_Task_Flag
3403 (p_visit_id => l_old_Task_rec.visit_id,
3404 p_flag => 'Y',
3405 x_return_status => x_return_status);
3406
3407 IF (l_log_statement >= l_log_current_level)THEN
3408 fnd_log.string(l_log_statement,
3409 L_DEBUG_KEY,
3410 'After Calling AHL_VWP_RULES_PVT.Update_Visit_Task_Flag, Return Status = ' ||x_return_status);
3411 END IF;
3412
3413 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3414 RAISE FND_API.G_EXC_ERROR;
3415 END IF;
3416 END IF;
3417 END IF; -- for cost_parent_id check
3418
3419 --------------------------------------------------------------------------
3420 ---- END 11.5.10 CHANGES FOR COSTING ----
3421 --------------------------------------------------------------------------
3422
3423 ------------------------End of API Body------------------------------------
3424 --Standard check to count messages
3425 l_msg_count := Fnd_Msg_Pub.count_msg;
3426
3427 IF l_msg_count > 0 THEN
3428 x_msg_count := l_msg_count;
3429 x_return_status := Fnd_Api.G_RET_STS_ERROR;
3430 RAISE Fnd_Api.G_EXC_ERROR;
3431 END IF;
3432
3433 --Standard check for commit
3434 IF Fnd_Api.TO_BOOLEAN(p_commit) THEN
3435 COMMIT;
3436 END IF;
3437
3438 IF (l_log_procedure >= l_log_current_level) THEN
3439 fnd_log.string(l_log_procedure,
3440 L_DEBUG_KEY ||'.end',
3441 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
3442 END IF;
3443
3444 EXCEPTION
3445 WHEN Fnd_Api.g_exc_error THEN
3446 ROLLBACK TO Update_Tasks_in_Planning;
3447 x_return_status := Fnd_Api.g_ret_sts_error;
3448 Fnd_Msg_Pub.count_and_get (
3449 p_encoded => Fnd_Api.g_false,
3450 p_count => x_msg_count,
3451 p_data => x_msg_data
3452 );
3453 WHEN Fnd_Api.g_exc_unexpected_error THEN
3454 ROLLBACK TO Update_Tasks_in_Planning;
3455 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
3456 Fnd_Msg_Pub.count_and_get (
3457 p_encoded => Fnd_Api.g_false,
3458 p_count => x_msg_count,
3459 p_data => x_msg_data
3460 );
3461 WHEN OTHERS THEN
3462 ROLLBACK TO Update_Tasks_in_Planning;
3463 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
3464 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
3465 THEN
3466 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
3467 END IF;
3468 Fnd_Msg_Pub.count_and_get (
3469 p_encoded => Fnd_Api.g_false,
3470 p_count => x_msg_count,
3471 p_data => x_msg_data
3472 );
3473
3474 END Update_Tasks_in_Planning;
3475
3476 --------------------------------------------------------------------
3477 -- PROCEDURE
3478 -- Update_Tasks_in_Production
3479 --
3480 -- PURPOSE
3481 -- To update visit task which are relaesed
3482 --------------------------------------------------------------------
3483
3484 PROCEDURE Update_Tasks_in_Production(
3485 p_api_version IN NUMBER := 1.0,
3486 p_init_msg_list IN VARCHAR2:= FND_API.G_FALSE,
3487 p_commit IN VARCHAR2:= FND_API.G_FALSE,
3488 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3489 p_module_type IN VARCHAR2:= 'JSP',
3490 p_x_task_rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
3491 x_return_status OUT NOCOPY VARCHAR2,
3492 x_msg_count OUT NOCOPY NUMBER,
3493 x_msg_data OUT NOCOPY VARCHAR2
3494
3495 ) IS
3496
3497 L_API_VERSION CONSTANT NUMBER := 1.0;
3498 L_API_NAME CONSTANT VARCHAR2(30) := 'Update_Tasks_in_Production';
3499 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
3500 l_Task_rec AHL_VWP_RULES_PVT.Task_Rec_Type default p_x_task_rec;
3501
3502 Cursor c_visit_task_det(p_visit_task_id in number)
3503 is
3504 Select ROW_ID ,
3505 VISIT_TASK_ID ,
3506 VISIT_TASK_NUMBER ,
3507 OBJECT_VERSION_NUMBER ,
3508 CREATION_DATE ,
3509 CREATED_BY ,
3510 LAST_UPDATE_DATE ,
3511 LAST_UPDATED_BY ,
3512 LAST_UPDATE_LOGIN ,
3513 VISIT_ID ,
3514 PROJECT_TASK_ID ,
3515 COST_PARENT_ID ,
3516 MR_ROUTE_ID ,
3517 MR_ID ,
3518 DURATION ,
3519 UNIT_EFFECTIVITY_ID ,
3520 VISIT_TASK_NAME ,
3521 DESCRIPTION ,
3522 START_FROM_HOUR ,
3523 INVENTORY_ITEM_ID ,
3524 ITEM_ORGANIZATION_ID ,
3525 INSTANCE_ID ,
3526 PRIMARY_VISIT_TASK_ID ,
3527 SUMMARY_TASK_FLAG ,
3528 ORIGINATING_TASK_ID ,
3529 SECURITY_GROUP_ID ,
3530 SERVICE_REQUEST_ID ,
3531 TASK_TYPE_CODE ,
3532 DEPARTMENT_ID ,
3533 PRICE_LIST_ID ,
3534 STATUS_CODE ,
3535 ACTUAL_COST ,
3536 ESTIMATED_PRICE ,
3537 ACTUAL_PRICE ,
3538 ATTRIBUTE_CATEGORY ,
3539 ATTRIBUTE1 ,
3540 ATTRIBUTE2 ,
3541 ATTRIBUTE3 ,
3542 ATTRIBUTE4 ,
3543 ATTRIBUTE5 ,
3544 ATTRIBUTE6 ,
3545 ATTRIBUTE7 ,
3546 ATTRIBUTE8 ,
3547 ATTRIBUTE9 ,
3548 ATTRIBUTE10 ,
3549 ATTRIBUTE11 ,
3550 ATTRIBUTE12 ,
3551 ATTRIBUTE13 ,
3552 ATTRIBUTE14 ,
3553 ATTRIBUTE15 ,
3554 QUANTITY , --Added by rnahata for Issue 105
3555 STAGE_ID
3556 from ahl_visit_tasks_vl
3557 where visit_task_id = p_visit_task_id;
3558
3559 l_old_Task_rec c_visit_task_det%rowtype;
3560
3561 Cursor c_any_task_flg(p_visit_id in number)
3562 is
3563 Select any_task_chg_flag
3564 from ahl_visits_b
3565 where visit_id = p_visit_id;
3566
3567 l_any_task_chg_flag ahl_visits_b.any_task_chg_flag%type;
3568
3569 l_return_status VARCHAR2(1);
3570 l_cost_parent_id NUMBER;
3571 l_msg_data VARCHAR2(2000);
3572 l_msg_count NUMBER;
3573
3574 BEGIN
3575
3576 IF (l_log_procedure >= l_log_current_level) THEN
3577 fnd_log.string(l_log_procedure,
3578 L_DEBUG_KEY ||'.begin',
3579 'At the start of PL SQL procedure.' ||
3580 'Visit Task Id = ' || l_Task_rec.visit_task_id );
3581 END IF;
3582
3583 --------------------- initialize -----------------------
3584 SAVEPOINT Update_Tasks_in_Production;
3585
3586 IF Fnd_Api.to_boolean (p_init_msg_list) THEN
3587 Fnd_Msg_Pub.initialize;
3588 END IF;
3589
3590 -- Initialize API return status to success
3591 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
3592
3593 -- Standard call to check for call compatibility.
3594 IF NOT Fnd_Api.compatible_api_call(
3595 l_api_version,
3596 p_api_version,
3597 l_api_name,
3598 G_PKG_NAME
3599 ) THEN
3600 RAISE Fnd_Api.g_exc_unexpected_error;
3601 END IF;
3602
3603 OPEN c_visit_task_det(l_Task_rec.visit_task_id);
3604 FETCH c_visit_task_det INTO l_old_Task_rec;
3605 CLOSE c_visit_task_det;
3606
3607 IF (l_Task_rec.cost_parent_number IS NOT NULL AND
3608 l_Task_rec.cost_parent_number <> Fnd_Api.G_MISS_NUM ) THEN
3609
3610 AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID
3611 (p_visit_task_id => l_Task_rec.cost_parent_id,
3612 p_visit_task_number => l_Task_rec.cost_parent_number,
3613 p_visit_id => l_Task_rec.visit_id,
3614 x_visit_task_id => l_cost_parent_id,
3615 x_return_status => l_return_status,
3616 x_error_msg_code => l_msg_data);
3617
3618 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
3619 THEN
3620 Fnd_Message.SET_NAME('AHL','AHL_VWP_PARENT_NOT_EXISTS');
3621 Fnd_Msg_Pub.ADD;
3622 RAISE Fnd_Api.g_exc_error;
3623 END IF;
3624 --Assign the returned value
3625 l_Task_rec.cost_parent_id := l_cost_parent_id;
3626 ELSE
3627 l_Task_rec.cost_parent_id := NULL;
3628 END IF;
3629
3630 -- To Check for cost parent task id not forming loop
3631 IF (l_Task_rec.cost_parent_id IS NOT NULL AND
3632 l_Task_rec.cost_parent_id <> Fnd_Api.G_MISS_NUM ) THEN
3633
3634 AHL_VWP_RULES_PVT.Check_Cost_Parent_Loop
3635 (p_visit_id => l_Task_rec.visit_id,
3636 p_visit_task_id => l_Task_rec.visit_task_id ,
3637 p_cost_parent_id => l_Task_rec.cost_parent_id
3638 );
3639 END IF;
3640
3641 IF (l_log_statement >= l_log_current_level) THEN
3642 fnd_log.string(l_log_statement,
3643 L_DEBUG_KEY,
3644 'Before Calling Ahl_Visit_Tasks_Pkg.UPDATE_ROW');
3645 END IF;
3646
3647 Ahl_Visit_Tasks_Pkg.UPDATE_ROW (
3648 X_VISIT_TASK_ID => l_task_rec.visit_task_id,
3649 X_VISIT_TASK_NUMBER => l_old_Task_rec.visit_task_number,
3650 X_OBJECT_VERSION_NUMBER => l_task_rec.OBJECT_VERSION_NUMBER + 1,
3651 X_VISIT_ID => l_old_Task_rec.visit_id,
3652 X_PROJECT_TASK_ID => l_old_Task_rec.project_task_id,
3653 X_COST_PARENT_ID => l_task_rec.cost_parent_id,
3654 X_MR_ROUTE_ID => l_old_Task_rec.mr_route_id,
3655 X_MR_ID => l_old_Task_rec.mr_id,
3656 X_DURATION => l_task_rec.duration,
3657 X_UNIT_EFFECTIVITY_ID => l_old_Task_rec.unit_effectivity_id,
3658 X_START_FROM_HOUR => l_task_rec.start_from_hour,
3659 X_INVENTORY_ITEM_ID => l_old_Task_rec.inventory_item_id,
3660 X_ITEM_ORGANIZATION_ID => l_old_Task_rec.item_organization_id,
3661 X_INSTANCE_ID => l_Task_rec.instance_id,
3662 X_PRIMARY_VISIT_TASK_ID => l_old_Task_rec.primary_visit_task_id,
3663 X_ORIGINATING_TASK_ID => l_task_rec.originating_task_id,
3664 X_SERVICE_REQUEST_ID => l_task_rec.service_request_id,
3665 X_TASK_TYPE_CODE => l_task_rec.task_type_code,
3666 X_DEPARTMENT_ID => l_task_rec.department_id,
3667 X_SUMMARY_TASK_FLAG => 'N',
3668 X_PRICE_LIST_ID => l_old_Task_rec.price_list_id,
3669 X_STATUS_CODE => l_old_Task_rec.status_code,
3670 X_ESTIMATED_PRICE => l_old_Task_rec.estimated_price,
3671 X_ACTUAL_PRICE => l_old_Task_rec.actual_price,
3672 X_ACTUAL_COST => l_old_Task_rec.actual_cost,
3673 -- Post 11.5.10 Changes by Senthil.
3674 X_STAGE_ID => l_Task_rec.stage_id,
3675 -- Added cxcheng POST11510--------------
3676 X_START_DATE_TIME => NULL,
3677 X_END_DATE_TIME => NULL,
3678 X_ATTRIBUTE_CATEGORY => l_old_Task_rec.ATTRIBUTE_CATEGORY,
3679 X_ATTRIBUTE1 => l_old_Task_rec.ATTRIBUTE1,
3680 X_ATTRIBUTE2 => l_old_Task_rec.ATTRIBUTE2,
3681 X_ATTRIBUTE3 => l_old_Task_rec.ATTRIBUTE3,
3682 X_ATTRIBUTE4 => l_old_Task_rec.ATTRIBUTE4,
3683 X_ATTRIBUTE5 => l_old_Task_rec.ATTRIBUTE5,
3684 X_ATTRIBUTE6 => l_old_Task_rec.ATTRIBUTE6,
3685 X_ATTRIBUTE7 => l_old_Task_rec.ATTRIBUTE7,
3686 X_ATTRIBUTE8 => l_old_Task_rec.ATTRIBUTE8,
3687 X_ATTRIBUTE9 => l_old_Task_rec.ATTRIBUTE9,
3688 X_ATTRIBUTE10 => l_old_Task_rec.ATTRIBUTE10,
3689 X_ATTRIBUTE11 => l_old_Task_rec.ATTRIBUTE11,
3690 X_ATTRIBUTE12 => l_old_Task_rec.ATTRIBUTE12,
3691 X_ATTRIBUTE13 => l_old_Task_rec.ATTRIBUTE13,
3692 X_ATTRIBUTE14 => l_old_Task_rec.ATTRIBUTE14,
3693 X_ATTRIBUTE15 => l_old_Task_rec.ATTRIBUTE15,
3694 X_VISIT_TASK_NAME => l_task_rec.visit_task_name,
3695 X_DESCRIPTION => l_task_rec.description,
3696 X_QUANTITY => l_old_Task_rec.quantity, -- Added by rnahata for Issue 105
3697 X_LAST_UPDATE_DATE => SYSDATE,
3698 X_LAST_UPDATED_BY => Fnd_Global.USER_ID,
3699 X_LAST_UPDATE_LOGIN => Fnd_Global.LOGIN_ID );
3700
3701 IF (l_log_statement >= l_log_current_level) THEN
3702 fnd_log.string(l_log_statement,
3703 L_DEBUG_KEY,
3704 'After Calling Ahl_Visit_Tasks_Pkg.UPDATE_ROW');
3705 END IF;
3706
3707 -- Added cxcheng POST11510--------------
3708 --Now adjust the times derivation for task
3709 IF (l_log_statement >= l_log_current_level) THEN
3710 fnd_log.string(l_log_statement,
3711 L_DEBUG_KEY,
3712 'Before Calling AHL_VWP_TIMES_PVT.Adjust_Task_Times');
3713 END IF;
3714 AHL_VWP_TIMES_PVT.Adjust_Task_Times(p_api_version => 1.0,
3715 p_init_msg_list => Fnd_Api.G_FALSE,
3716 p_commit => Fnd_Api.G_FALSE,
3717 p_validation_level => Fnd_Api.G_VALID_LEVEL_FULL,
3718 x_return_status => l_return_status,
3719 x_msg_count => l_msg_count,
3720 x_msg_data => l_msg_data,
3721 p_task_id => l_task_rec.visit_task_id);
3722
3723 IF (l_log_statement >= l_log_current_level) THEN
3724 fnd_log.string(l_log_statement,
3725 L_DEBUG_KEY,
3726 'After Calling AHL_VWP_TIMES_PVT.Adjust_Task_Times, Return Status = '|| l_return_status );
3727 END IF;
3728
3729 --Standard check to count messages
3730 l_msg_count := Fnd_Msg_Pub.count_msg;
3731
3732 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
3733 x_msg_count := l_msg_count;
3734 x_return_status := Fnd_Api.G_RET_STS_ERROR;
3735 RAISE Fnd_Api.G_EXC_ERROR;
3736 END IF;
3737
3738 IF NVL(l_task_rec.cost_parent_id,-30) <> NVL(l_old_Task_rec.cost_parent_id,-30)
3739 THEN
3740 OPEN c_any_task_flg(l_old_Task_rec.visit_id);
3741 FETCH c_any_task_flg INTO l_any_task_chg_flag;
3742 CLOSE c_any_task_flg;
3743
3744 IF l_any_task_chg_flag = 'N' THEN
3745 AHL_VWP_RULES_PVT.Update_Visit_Task_Flag
3746 (p_visit_id => l_old_Task_rec.visit_id,
3747 p_flag => 'Y',
3748 x_return_status => x_return_status);
3749 END IF;
3750 END IF;
3751
3752 --Standard check to count messages
3753 l_msg_count := Fnd_Msg_Pub.count_msg;
3754
3755 IF l_msg_count > 0 THEN
3756 x_msg_count := l_msg_count;
3757 x_return_status := Fnd_Api.G_RET_STS_ERROR;
3758 RAISE Fnd_Api.G_EXC_ERROR;
3759 END IF;
3760
3761 --Standard check for commit
3762 IF Fnd_Api.TO_BOOLEAN(p_commit) THEN
3763 COMMIT;
3764 END IF;
3765
3766 IF (l_log_procedure >= l_log_current_level) THEN
3767 fnd_log.string(l_log_procedure,
3768 L_DEBUG_KEY ||'.end',
3769 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
3770 END IF;
3771 EXCEPTION
3772 WHEN Fnd_Api.g_exc_error THEN
3773 ROLLBACK TO Update_Tasks_in_Production;
3774 x_return_status := Fnd_Api.g_ret_sts_error;
3775 Fnd_Msg_Pub.count_and_get (
3776 p_encoded => Fnd_Api.g_false,
3777 p_count => x_msg_count,
3778 p_data => x_msg_data
3779 );
3780 WHEN Fnd_Api.g_exc_unexpected_error THEN
3781 ROLLBACK TO Update_Tasks_in_Production;
3782 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
3783 Fnd_Msg_Pub.count_and_get (
3784 p_encoded => Fnd_Api.g_false,
3785 p_count => x_msg_count,
3786 p_data => x_msg_data
3787 );
3788 WHEN OTHERS THEN
3789 ROLLBACK TO Update_Tasks_in_Production;
3790 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
3791 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
3792 THEN
3793 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
3794 END IF;
3795 Fnd_Msg_Pub.count_and_get (
3796 p_encoded => Fnd_Api.g_false,
3797 p_count => x_msg_count,
3798 p_data => x_msg_data
3799 );
3800 END Update_Tasks_in_Production;
3801
3802 --------------------------------------------------------------------
3803 -- PROCEDURE
3804 -- Update_Unassociated_Task
3805 --
3806 -- PURPOSE
3807 -- To update Unassociated task for the Maintainance visit.
3808 --------------------------------------------------------------------
3809 PROCEDURE Update_Unassociated_Task (
3810 p_api_version IN NUMBER,
3811 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
3812 p_commit IN VARCHAR2 := Fnd_Api.g_false,
3813 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
3814 p_module_type IN VARCHAR2 := 'JSP',
3815 p_x_task_rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
3816 x_return_status OUT NOCOPY VARCHAR2,
3817 x_msg_count OUT NOCOPY NUMBER,
3818 x_msg_data OUT NOCOPY VARCHAR2
3819 )
3820 IS
3821 L_API_VERSION CONSTANT NUMBER := 1.0;
3822 L_API_NAME CONSTANT VARCHAR2(30) := 'Update_Unassociated_Task';
3823 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
3824 -- local variables defined for the procedure
3825 l_task_rec AHL_VWP_RULES_PVT.Task_Rec_Type := p_x_task_rec;
3826 l_return_status VARCHAR2(1);
3827 l_msg_data VARCHAR2(2000);
3828 l_msg_count NUMBER;
3829 l_serial_ID NUMBER;
3830 l_cost_parent_id NUMBER;
3831 l_originating_task_id NUMBER;
3832 l_department_id NUMBER;
3833 l_planned_order_flag VARCHAR2(1);
3834
3835 -- To find task related information
3836 CURSOR c_Task (x_id IN NUMBER) IS
3837 SELECT * FROM Ahl_Visit_Tasks_VL
3838 WHERE VISIT_TASK_ID = x_id;
3839 c_Task_rec c_Task%ROWTYPE;
3840 c_upd_Task_rec c_Task%ROWTYPE;
3841
3842 -- To find visit related information
3843 CURSOR c_Visit (x_id IN NUMBER) IS
3844 SELECT * FROM Ahl_Visits_VL
3845 WHERE VISIT_ID = x_id;
3846 c_Visit_rec c_Visit%ROWTYPE;
3847
3848 BEGIN
3849 IF (l_log_procedure >= l_log_current_level) THEN
3850 fnd_log.string(l_log_procedure,
3851 L_DEBUG_KEY ||'.begin',
3852 'At the start of PL SQL procedure.');
3853 END IF;
3854
3855 --------------------- initialize -----------------------
3856 SAVEPOINT Update_Unassociated_Task;
3857
3858 IF Fnd_Api.to_boolean (p_init_msg_list) THEN
3859 Fnd_Msg_Pub.initialize;
3860 END IF;
3861
3862 -- Initialize API return status to success
3863 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
3864
3865 -- Standard call to check for call compatibility.
3866 IF NOT Fnd_Api.compatible_api_call(
3867 l_api_version,
3868 p_api_version,
3869 l_api_name,
3870 G_PKG_NAME
3871 ) THEN
3872 RAISE Fnd_Api.g_exc_unexpected_error;
3873 END IF;
3874
3875 ---------------------------------------------- Start----------------------------------------------------------
3876 OPEN c_Visit(l_Task_rec.visit_id);
3877 FETCH c_Visit INTO c_Visit_rec;
3878 CLOSE c_Visit;
3879
3880 OPEN c_Task(l_Task_rec.visit_task_id);
3881 FETCH c_Task INTO c_Task_rec;
3882 CLOSE c_Task;
3883
3884 IF (l_log_statement >= l_log_current_level) THEN
3885 fnd_log.string(l_log_statement,
3886 L_DEBUG_KEY,
3887 ': Visit Id/Task Id = ' || l_task_rec.visit_id || '-' || l_task_rec.visit_task_id ||
3888 ': Inventory Id /org/name =' || l_task_rec.inventory_item_id || '-' || l_task_rec.item_organization_id || '-' || l_task_rec.item_name ||
3889 ': Cost Id -- Number=' || l_task_rec.cost_parent_id || '**' || l_task_rec.cost_parent_number ||
3890 ': Originating Id/Number=' || l_task_rec.originating_task_id || '**' || l_task_rec.orginating_task_number ||
3891 ': Object version number = ' || l_task_rec.object_version_number ||
3892 ': Duration from record = ' || l_task_rec.duration ||
3893 ': Visit start from hour/duration=' || '-' || l_task_rec.start_from_hour || '-' || l_task_rec.duration ||
3894 ': Task Type code/value=' || l_task_rec.task_type_code || '-' || l_task_rec.task_type_value ||
3895 ': department_id = ' || l_task_rec.department_id );
3896 END IF;
3897
3898 ----------- Start defining and validate all LOVs on Create Visit's Task UI Screen---
3899 --
3900 -- For DEPARTMENT
3901 -- Convert department name to department id
3902 IF (l_task_rec.dept_name IS NOT NULL AND l_task_rec.dept_name <> Fnd_Api.G_MISS_CHAR ) THEN
3903
3904 AHL_VWP_RULES_PVT.Check_Dept_Desc_Or_Id
3905 (p_organization_id => c_visit_rec.organization_id,
3906 p_dept_name => l_task_rec.dept_name,
3907 p_department_id => NULL,
3908 x_department_id => l_department_id,
3909 x_return_status => l_return_status,
3910 x_error_msg_code => l_msg_data);
3911
3912 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
3913 THEN
3914 Fnd_Message.SET_NAME('AHL','AHL_VWP_DEPT_NOT_EXISTS');
3915 Fnd_Msg_Pub.ADD;
3916 RAISE Fnd_Api.G_EXC_ERROR;
3917 END IF;
3918
3919 --Assign the returned value
3920 l_task_rec.department_id := l_department_id;
3921
3922 END IF;
3923
3924 IF (l_log_statement >= l_log_current_level) THEN
3925 fnd_log.string(l_log_statement,
3926 L_DEBUG_KEY,
3927 ': Dept ID= ' || l_Task_rec.department_id ||
3928 ': Serial Number= ' || l_Task_rec.serial_number);
3929
3930 END IF;
3931 --
3932 -- For SERIAL NUMBER
3933 -- Convert serial number to instance/ serial id
3934 IF (l_Task_rec.serial_number IS NOT NULL AND
3935 l_Task_rec.serial_number <> Fnd_Api.G_MISS_CHAR) THEN
3936
3937 IF (l_log_statement >= l_log_current_level) THEN
3938 fnd_log.string(l_log_statement,
3939 L_DEBUG_KEY,
3940 ' Calling AHL_VWP_RULES_PVT.Check_Serial_Name_Or_Id' );
3941 END IF;
3942
3943 AHL_VWP_RULES_PVT.Check_Serial_Name_Or_Id
3944 (p_item_id => l_Task_rec.inventory_item_id,
3945 p_org_id => l_Task_rec.item_organization_id,
3946 p_serial_id => l_Task_rec.instance_id,
3947 p_serial_number => l_Task_rec.serial_number,
3948 x_serial_id => l_serial_id,
3949 x_return_status => l_return_status,
3950 x_error_msg_code => l_msg_data);
3951
3952 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success THEN
3953 Fnd_Message.SET_NAME('AHL','AHL_VWP_SERIAL_NOT_EXISTS');
3954 Fnd_Msg_Pub.ADD;
3955 RAISE Fnd_Api.G_EXC_ERROR;
3956 ELSE
3957
3958 --Assign the returned value
3959 l_Task_rec.instance_id := l_serial_id;
3960
3961 IF (l_log_statement >= l_log_current_level) THEN
3962 fnd_log.string(l_log_statement,
3963 L_DEBUG_KEY,
3964 ': Before UC Check Serial ID= ' || l_Task_rec.instance_id ||
3965 ': Before UC Item ID= ' || l_Task_rec.inventory_item_id ||
3966 ': Before UC Item Org ID= ' || l_Task_rec.item_organization_id);
3967 END IF;
3968 /* sowsubra - start
3969 IF c_Visit_rec.item_instance_id IS NOT NULL THEN
3970
3971 --BEGIN: jeli added for bug 3777720
3972 IF (AHL_VWP_RULES_PVT.instance_in_config_tree(l_task_rec.visit_id, l_task_rec.instance_id) = FND_API.G_RET_STS_ERROR) THEN
3973 --END: jeli added for bug 3777720
3974 Fnd_Message.SET_NAME('AHL','AHL_VWP_TASK_SERIAL');
3975 Fnd_Msg_Pub.ADD;
3976 RAISE Fnd_Api.G_EXC_ERROR;
3977 END IF;
3978 END IF;
3979 sowsubra - end */
3980 END IF;
3981
3982 END IF;
3983
3984 IF (l_log_statement >= l_log_current_level) THEN
3985 fnd_log.string(l_log_statement,
3986 L_DEBUG_KEY,
3987 ': Serial ID= ' || l_Task_rec.instance_id ||
3988 ': Cost parent= ' || l_Task_rec.cost_parent_number);
3989 END IF;
3990 --
3991 -- For COST PARENT TASK
3992 -- Convert cost parent number to id
3993 IF (l_Task_rec.cost_parent_number IS NOT NULL AND
3994 l_Task_rec.cost_parent_number <> Fnd_Api.G_MISS_NUM ) THEN
3995
3996 AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID
3997 (p_visit_task_id => l_Task_rec.cost_parent_id,
3998 p_visit_task_number => l_Task_rec.cost_parent_number,
3999 p_visit_id => l_Task_rec.visit_id,
4000 x_visit_task_id => l_cost_parent_id,
4001 x_return_status => l_return_status,
4002 x_error_msg_code => l_msg_data);
4003
4004 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
4005 THEN
4006 Fnd_Message.SET_NAME('AHL','AHL_VWP_PARENT_NOT_EXISTS');
4007 Fnd_Msg_Pub.ADD;
4008 RAISE Fnd_Api.g_exc_error;
4009 END IF;
4010
4011 --Assign the returned value
4012 l_Task_rec.cost_parent_id := l_cost_parent_id;
4013 END IF;
4014
4015 IF (l_log_statement >= l_log_current_level) THEN
4016 fnd_log.string(l_log_statement,
4017 L_DEBUG_KEY,
4018 ': Cost parent ID = ' || l_Task_rec.cost_parent_id ||
4019 ': Validation: Start -- For COST PARENT ');
4020 END IF;
4021
4022 -- To Check for cost parent task id not forming loop
4023 IF (l_Task_rec.cost_parent_id IS NOT NULL AND
4024 l_Task_rec.cost_parent_id <> Fnd_Api.G_MISS_NUM ) THEN
4025
4026 AHL_VWP_RULES_PVT.Check_Cost_Parent_Loop
4027 (p_visit_id => l_Task_rec.visit_id,
4028 p_visit_task_id => l_Task_rec.visit_task_id ,
4029 p_cost_parent_id => l_Task_rec.cost_parent_id
4030 );
4031
4032 END IF;
4033
4034 IF (l_log_statement >= l_log_current_level) THEN
4035 fnd_log.string(l_log_statement,
4036 L_DEBUG_KEY,
4037 ': Validation: End -- For COST PARENT ' ||
4038 ': Originating Number = ' || l_Task_rec.orginating_task_number);
4039 END IF;
4040
4041 --
4042 -- For ORIGINATING TASK
4043 -- Convert originating task number to id
4044 IF (l_Task_rec.orginating_task_number IS NOT NULL AND
4045 l_Task_rec.orginating_task_number <> Fnd_Api.G_MISS_NUM ) THEN
4046
4047 IF (l_log_statement >= l_log_current_level) THEN
4048 fnd_log.string(l_log_statement,
4049 L_DEBUG_KEY,
4050 ' Calling AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID');
4051 END IF;
4052
4053 AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID
4054 (p_visit_task_id => l_Task_rec.originating_task_id,
4055 p_visit_task_number => l_Task_rec.orginating_task_number,
4056 p_visit_id => l_Task_rec.visit_id,
4057 x_visit_task_id => l_originating_task_id,
4058 x_return_status => l_return_status,
4059 x_error_msg_code => l_msg_data);
4060
4061 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
4062 THEN
4063 Fnd_Message.SET_NAME('AHL','AHL_VWP_ORIGINATING_NOT_EXISTS');
4064 Fnd_Msg_Pub.ADD;
4065 RAISE Fnd_Api.g_exc_error;
4066 END IF;
4067
4068 --Assign the returned value
4069 l_Task_rec.originating_task_id := l_originating_task_id;
4070 END IF;
4071
4072 IF (l_log_statement >= l_log_current_level) THEN
4073 fnd_log.string(l_log_statement,
4074 L_DEBUG_KEY,
4075 ': Originating Task ID= ' || l_Task_rec.originating_task_id ||
4076 ': Validation: Start -- For ORIGINATING TASK');
4077 END IF;
4078
4079 -- To Check for originating task id not forming loop
4080 IF (l_Task_rec.originating_task_id IS NOT NULL AND
4081 l_Task_rec.originating_task_id <> Fnd_Api.G_MISS_NUM ) THEN
4082
4083 AHL_VWP_RULES_PVT.Check_Origin_Task_Loop
4084 (p_visit_id => l_Task_rec.visit_id ,
4085 p_visit_task_id => l_Task_rec.visit_task_id ,
4086 p_originating_task_id => l_Task_rec.originating_task_id
4087 );
4088 END IF;
4089
4090 IF (l_log_statement >= l_log_current_level) THEN
4091 fnd_log.string(l_log_statement,
4092 L_DEBUG_KEY,
4093 ': Validation: End -- For ORIGINATING TASK');
4094 END IF;
4095
4096 ----------- End defining and validate all LOVs on Create Visit's Task UI Screen---
4097
4098 ----------------------- validate ----------------------
4099 IF (l_log_statement >= l_log_current_level) THEN
4100 fnd_log.string(l_log_statement,
4101 L_DEBUG_KEY,
4102 ':Validate ');
4103 END IF;
4104
4105 -- For all optional fields check if its g_miss_num/g_miss_char/g_miss_date
4106 -- then Null else the value call Default_Missing_Attribs procedure
4107 Default_Missing_Attribs
4108 (
4109 p_x_task_rec => l_Task_rec
4110 );
4111
4112 -- Post 11.5.10 Changes by Senthil.
4113 IF(L_task_rec.STAGE_ID IS NOT NULL OR L_task_rec.STAGE_NAME IS NOT NULL) THEN
4114 IF (l_log_statement >= l_log_current_level) THEN
4115 fnd_log.string(l_log_statement,
4116 L_DEBUG_KEY,
4117 'Before Calling AHL_VWP_VISITS_STAGES_PVT.VALIDATE_STAGE_UPDATES');
4118 END IF;
4119 AHL_VWP_VISITS_STAGES_PVT.VALIDATE_STAGE_UPDATES(
4120 P_API_VERSION => 1.0,
4121 P_VISIT_ID => l_Task_rec.visit_id,
4122 P_VISIT_TASK_ID => l_Task_rec.visit_task_id,
4123 P_STAGE_NAME => L_task_rec.STAGE_NAME,
4124 X_STAGE_ID => L_task_rec.STAGE_ID,
4125 X_RETURN_STATUS => l_return_status,
4126 X_MSG_COUNT => l_msg_count,
4127 X_MSG_DATA => l_msg_data );
4128 IF (l_log_statement >= l_log_current_level) THEN
4129 fnd_log.string(l_log_statement,
4130 L_DEBUG_KEY,
4131 'After Calling AHL_VWP_VISITS_STAGES_PVT.VALIDATE_STAGE_UPDATES, Return Status = ' || l_return_status );
4132 END IF;
4133
4134 END IF;
4135
4136 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
4137 x_msg_count := l_msg_count;
4138 x_return_status := Fnd_Api.G_RET_STS_ERROR;
4139 RAISE Fnd_Api.G_EXC_ERROR;
4140 END IF;
4141
4142 -- post 11.5.10 changes by Senthil end
4143
4144 IF p_validation_level >= Jtf_Plsql_Api.g_valid_level_item THEN
4145 Check_Task_Items (
4146 p_task_rec => p_x_task_rec,
4147 p_validation_mode => Jtf_Plsql_Api.g_update,
4148 x_return_status => l_return_status
4149 );
4150 IF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
4151 RAISE Fnd_Api.g_exc_unexpected_error;
4152 ELSIF l_return_status = Fnd_Api.g_ret_sts_error THEN
4153 RAISE Fnd_Api.g_exc_error;
4154 END IF;
4155 END IF;
4156
4157 -- Check Object version number.
4158 IF (c_task_rec.object_version_number <> l_task_rec.object_version_number) THEN
4159 Fnd_Message.Set_Name('AHL','AHL_COM_RECORD_CHANGED');
4160 Fnd_Msg_Pub.ADD;
4161 RAISE Fnd_Api.G_EXC_ERROR;
4162 END IF;
4163
4164 --Standard check to count messages
4165 l_msg_count := Fnd_Msg_Pub.count_msg;
4166
4167 IF l_msg_count > 0 THEN
4168 x_msg_count := l_msg_count;
4169 x_return_status := Fnd_Api.G_RET_STS_ERROR;
4170 RAISE Fnd_Api.G_EXC_ERROR;
4171 END IF;
4172
4173 -------------------------- update --------------------
4174 IF (l_log_statement >= l_log_current_level) THEN
4175 fnd_log.string(l_log_statement,
4176 L_DEBUG_KEY,
4177 'Before Calling Ahl_Visit_Tasks_Pkg.UPDATE_ROW');
4178 END IF;
4179
4180 Ahl_Visit_Tasks_Pkg.UPDATE_ROW (
4181 X_VISIT_TASK_ID => l_task_rec.visit_task_id,
4182 X_VISIT_TASK_NUMBER => c_task_rec.visit_task_number,
4183 X_OBJECT_VERSION_NUMBER => l_task_rec.OBJECT_VERSION_NUMBER + 1,
4184 X_VISIT_ID => l_task_rec.visit_id,
4185 X_PROJECT_TASK_ID => c_task_rec.project_task_id,
4186 X_COST_PARENT_ID => l_task_rec.cost_parent_id,
4187 X_MR_ROUTE_ID => c_task_rec.mr_route_id,
4188 X_MR_ID => c_task_rec.mr_id,
4189 X_DURATION => l_task_rec.duration,
4190 X_UNIT_EFFECTIVITY_ID => c_task_rec.unit_effectivity_id,
4191 X_START_FROM_HOUR => l_task_rec.start_from_hour,
4192 X_INVENTORY_ITEM_ID => c_task_rec.inventory_item_id,
4193 X_ITEM_ORGANIZATION_ID => c_task_rec.item_organization_id,
4194 X_INSTANCE_ID => l_Task_rec.instance_id,
4195 X_PRIMARY_VISIT_TASK_ID => c_task_rec.primary_visit_task_id,
4196 X_ORIGINATING_TASK_ID => l_task_rec.originating_task_id,
4197 X_SERVICE_REQUEST_ID => l_task_rec.service_request_id,
4198 X_TASK_TYPE_CODE => l_task_rec.task_type_code,
4199 X_DEPARTMENT_ID => l_task_rec.department_id,
4200 X_SUMMARY_TASK_FLAG => 'N',
4201 X_PRICE_LIST_ID => c_task_rec.price_list_id,
4202 X_STATUS_CODE => c_task_rec.status_code,
4203 X_ESTIMATED_PRICE => c_task_rec.estimated_price,
4204 X_ACTUAL_PRICE => c_task_rec.actual_price,
4205 X_ACTUAL_COST => c_task_rec.actual_cost,
4206 -- Post 11.5.10 Changes by Senthil.
4207 X_STAGE_ID => l_task_rec.STAGE_ID,
4208 -- Added cxcheng POST11510--------------
4209 X_START_DATE_TIME => NULL,
4210 X_END_DATE_TIME => NULL,
4211 X_ATTRIBUTE_CATEGORY => c_task_rec.ATTRIBUTE_CATEGORY,
4212 X_ATTRIBUTE1 => c_task_rec.ATTRIBUTE1,
4213 X_ATTRIBUTE2 => c_task_rec.ATTRIBUTE2,
4214 X_ATTRIBUTE3 => c_task_rec.ATTRIBUTE3,
4215 X_ATTRIBUTE4 => c_task_rec.ATTRIBUTE4,
4216 X_ATTRIBUTE5 => c_task_rec.ATTRIBUTE5,
4217 X_ATTRIBUTE6 => c_task_rec.ATTRIBUTE6,
4218 X_ATTRIBUTE7 => c_task_rec.ATTRIBUTE7,
4219 X_ATTRIBUTE8 => c_task_rec.ATTRIBUTE8,
4220 X_ATTRIBUTE9 => c_task_rec.ATTRIBUTE9,
4221 X_ATTRIBUTE10 => c_task_rec.ATTRIBUTE10,
4222 X_ATTRIBUTE11 => c_task_rec.ATTRIBUTE11,
4223 X_ATTRIBUTE12 => c_task_rec.ATTRIBUTE12,
4224 X_ATTRIBUTE13 => c_task_rec.ATTRIBUTE13,
4225 X_ATTRIBUTE14 => c_task_rec.ATTRIBUTE14,
4226 X_ATTRIBUTE15 => c_task_rec.ATTRIBUTE15,
4227 X_VISIT_TASK_NAME => l_task_rec.visit_task_name,
4228 X_DESCRIPTION => l_task_rec.description,
4229 X_QUANTITY => c_task_rec.quantity, -- Added by rnahata for Issue 105
4230 X_LAST_UPDATE_DATE => SYSDATE,
4231 X_LAST_UPDATED_BY => Fnd_Global.USER_ID,
4232 X_LAST_UPDATE_LOGIN => Fnd_Global.LOGIN_ID );
4233
4234 IF (l_log_statement >= l_log_current_level) THEN
4235 fnd_log.string(l_log_statement,
4236 L_DEBUG_KEY,
4237 'After Calling Ahl_Visit_Tasks_Pkg.UPDATE_ROW');
4238 END IF;
4239
4240 -- Added cxcheng POST11510--------------
4241 --Now adjust the times derivation for task
4242 IF (l_log_statement >= l_log_current_level) THEN
4243 fnd_log.string(l_log_statement,
4244 L_DEBUG_KEY,
4245 'Before Calling AHL_VWP_TIMES_PVT.Adjust_Task_Times');
4246 END IF;
4247 AHL_VWP_TIMES_PVT.Adjust_Task_Times(p_api_version => 1.0,
4248 p_init_msg_list => Fnd_Api.G_FALSE,
4249 p_commit => Fnd_Api.G_FALSE,
4250 p_validation_level => Fnd_Api.G_VALID_LEVEL_FULL,
4251 x_return_status => l_return_status,
4252 x_msg_count => l_msg_count,
4253 x_msg_data => l_msg_data,
4254 p_task_id => l_task_rec.visit_task_id);
4255
4256 IF (l_log_statement >= l_log_current_level) THEN
4257 fnd_log.string(l_log_statement,
4258 L_DEBUG_KEY,
4259 'After Calling AHL_VWP_TIMES_PVT.Adjust_Task_Times, Return Status = ' || l_return_status);
4260 END IF;
4261
4262 --Standard check to count messages
4263 l_msg_count := Fnd_Msg_Pub.count_msg;
4264
4265 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
4266 x_msg_count := l_msg_count;
4267 x_return_status := Fnd_Api.G_RET_STS_ERROR;
4268 RAISE Fnd_Api.G_EXC_ERROR;
4269 END IF;
4270
4271 IF NVL(l_task_rec.Duration, -10) <> NVL(c_task_rec.Duration, -10) OR
4272 NVL(l_task_rec.start_from_hour, -20) <> NVL(c_task_rec.start_from_hour, -20) OR
4273 NVL(l_task_rec.department_id, -20) <> NVL(c_task_rec.department_id, -20) OR
4274 NVL(l_task_rec.stage_id, -20) <> NVL(c_task_rec.stage_id, -20)
4275 THEN
4276
4277 OPEN c_Task(l_Task_rec.visit_task_id);
4278 FETCH c_Task INTO c_upd_Task_rec;
4279 CLOSE c_Task;
4280
4281 IF c_upd_Task_rec.start_date_time IS NOT NULL THEN
4282
4283 IF (l_log_statement >= l_log_current_level) THEN
4284 fnd_log.string(l_log_statement,
4285 L_DEBUG_KEY,
4286 'Before Calling AHL_LTP_REQST_MATRL_PVT.Process_Planned_Materials');
4287 END IF;
4288
4289 AHL_LTP_REQST_MATRL_PVT.Process_Planned_Materials (
4290 p_api_version => 1.0,
4291 p_init_msg_list => FND_API.g_false,
4292 p_commit => FND_API.g_false,
4293 p_validation_level => FND_API.g_valid_level_full,
4294 p_visit_id => l_task_rec.visit_id,
4295 p_visit_task_id => NULL,
4296 p_org_id => NULL,
4297 p_start_date => NULL,
4298 p_operation_flag => 'U',
4299 x_planned_order_flag => l_planned_order_flag ,
4300 x_return_status => l_return_status,
4301 x_msg_count => l_msg_count,
4302 x_msg_data => l_msg_data );
4303
4304 IF (l_log_statement >= l_log_current_level) THEN
4305 fnd_log.string(l_log_statement,
4306 L_DEBUG_KEY,
4307 'After Calling AHL_LTP_REQST_MATRL_PVT.Process_Planned_Materials' ||
4308 'Planned Order Flag : ' || l_planned_order_flag ||
4309 'Return Status = ' || l_return_status );
4310 END IF;
4311
4312 IF l_return_status <> 'S' THEN
4313 RAISE Fnd_Api.G_EXC_ERROR;
4314 END IF;
4315
4316 END IF; -- Start_date_time check.
4317
4318 IF c_visit_rec.any_task_chg_flag = 'N' THEN
4319 AHL_VWP_RULES_PVT.Update_Visit_Task_Flag
4320 (p_visit_id => l_task_rec.visit_id,
4321 p_flag => 'Y',
4322 x_return_status => x_return_status);
4323 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4324 RAISE FND_API.G_EXC_ERROR;
4325 END IF;
4326 END IF;
4327 END IF;
4328
4329 -------------------- finish --------------------------
4330
4331 ------------------------End of API Body------------------------------------
4332 --Standard check to count messages
4333 l_msg_count := Fnd_Msg_Pub.count_msg;
4334
4335 IF l_msg_count > 0 THEN
4336 x_msg_count := l_msg_count;
4337 x_return_status := Fnd_Api.G_RET_STS_ERROR;
4338 RAISE Fnd_Api.G_EXC_ERROR;
4339 END IF;
4340
4341 --Standard check for commit
4342 IF Fnd_Api.TO_BOOLEAN(p_commit) THEN
4343 COMMIT;
4344 END IF;
4345
4346 IF (l_log_procedure >= l_log_current_level) THEN
4347 fnd_log.string(l_log_procedure,
4348 L_DEBUG_KEY ||'.end',
4349 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
4350 END IF;
4351 EXCEPTION
4352 WHEN Fnd_Api.g_exc_error THEN
4353 ROLLBACK TO Update_Unassociated_Task;
4354 x_return_status := Fnd_Api.g_ret_sts_error;
4355 Fnd_Msg_Pub.count_and_get (
4356 p_encoded => Fnd_Api.g_false,
4357 p_count => x_msg_count,
4358 p_data => x_msg_data
4359 );
4360 WHEN Fnd_Api.g_exc_unexpected_error THEN
4361 ROLLBACK TO Update_Unassociated_Task;
4362 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
4363 Fnd_Msg_Pub.count_and_get (
4364 p_encoded => Fnd_Api.g_false,
4365 p_count => x_msg_count,
4366 p_data => x_msg_data
4367 );
4368 WHEN OTHERS THEN
4369 ROLLBACK TO Update_Unassociated_Task;
4370 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
4371 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
4372 THEN
4373 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
4374 END IF;
4375 Fnd_Msg_Pub.count_and_get (
4376 p_encoded => Fnd_Api.g_false,
4377 p_count => x_msg_count,
4378 p_data => x_msg_data
4379 );
4380 END Update_Unassociated_Task;
4381
4382 --------------------------------------------------------------------
4383 -- PROCEDURE
4384 -- Update_Summary_Task
4385 --
4386 -- PURPOSE
4387 -- To update Summary task for the Maintainance visit.
4388 --------------------------------------------------------------------
4389 PROCEDURE Update_Summary_Task (
4390 p_api_version IN NUMBER,
4391 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
4392 p_commit IN VARCHAR2 := Fnd_Api.g_false,
4393 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
4394 p_module_type IN VARCHAR2 := 'JSP',
4395 p_x_task_rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
4396 x_return_status OUT NOCOPY VARCHAR2,
4397 x_msg_count OUT NOCOPY NUMBER,
4398 x_msg_data OUT NOCOPY VARCHAR2
4399 )
4400 IS
4401 L_API_VERSION CONSTANT NUMBER := 1.0;
4402 L_API_NAME CONSTANT VARCHAR2(30) := 'Update_Summary_Task';
4403 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
4404
4405 -- local variables defined for the procedure
4406 l_task_rec AHL_VWP_RULES_PVT.Task_Rec_Type := p_x_task_rec;
4407 l_return_status VARCHAR2(1);
4408 l_msg_data VARCHAR2(2000);
4409
4410 l_msg_count NUMBER;
4411 l_serial_ID NUMBER;
4412 l_cost_parent_id NUMBER;
4413 l_originating_task_id NUMBER;
4414 l_department_id NUMBER;
4415
4416 -- To find task related information
4417 CURSOR c_Task (x_id IN NUMBER) IS
4418 SELECT * FROM Ahl_Visit_Tasks_VL
4419 WHERE VISIT_TASK_ID = x_id;
4420 c_Task_rec c_Task%ROWTYPE;
4421
4422 -- To find visit related information
4423 CURSOR c_Visit (x_id IN NUMBER) IS
4424 SELECT * FROM Ahl_Visits_VL
4425 WHERE VISIT_ID = x_id;
4426 c_Visit_rec c_Visit%ROWTYPE;
4427
4428 BEGIN
4429 IF (l_log_procedure >= l_log_current_level) THEN
4430 fnd_log.string(l_log_procedure,
4431 L_DEBUG_KEY ||'.begin',
4432 'At the start of PL SQL procedure.');
4433 END IF;
4434 --------------------- initialize -----------------------
4435 SAVEPOINT Update_Summary_Task;
4436
4437 IF Fnd_Api.to_boolean (p_init_msg_list) THEN
4438 Fnd_Msg_Pub.initialize;
4439 END IF;
4440
4441 -- Initialize API return status to success
4442 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
4443
4444 -- Standard call to check for call compatibility.
4445 IF NOT Fnd_Api.compatible_api_call(
4446 l_api_version,
4447 p_api_version,
4448 l_api_name,
4449 G_PKG_NAME
4450 ) THEN
4451 RAISE Fnd_Api.g_exc_unexpected_error;
4452 END IF;
4453
4454 ------------------------Start of API Body------------------------------------
4455 OPEN c_Visit(l_Task_rec.visit_id);
4456 FETCH c_Visit INTO c_Visit_rec;
4457 CLOSE c_Visit;
4458
4459 OPEN c_Task(l_Task_rec.visit_task_id);
4460 FETCH c_Task INTO c_Task_rec;
4461 CLOSE c_Task;
4462
4463 IF (l_log_statement >= l_log_current_level) THEN
4464 fnd_log.string(l_log_statement,
4465 L_DEBUG_KEY,
4466 ': Visit Id/Task Id = ' || l_task_rec.visit_id || '-' || l_task_rec.visit_task_id ||
4467 ': Inventory Id /org/name =' || l_task_rec.inventory_item_id || '-' || l_task_rec.item_organization_id || '-' || l_task_rec.item_name ||
4468 ': Cost Id -- Number=' || l_task_rec.cost_parent_id || '**' || l_task_rec.cost_parent_number ||
4469 ': Originating Id/Number=' || l_task_rec.originating_task_id || '**' || l_task_rec.orginating_task_number ||
4470 ': Object version number = ' || l_task_rec.object_version_number ||
4471 ': Duration from record = ' || l_task_rec.duration ||
4472 ': Visit start from hour/duration=' || '-' || l_task_rec.start_from_hour || '-' || l_task_rec.duration ||
4473 ': Task Type code/value=' || l_task_rec.task_type_code || '-' || l_task_rec.task_type_value ||
4474 ': department_id = ' || l_task_rec.department_id );
4475 END IF;
4476
4477 ----------- Start defining and validate all LOVs on Create Visit's Task UI Screen---
4478 --
4479 -- For DEPARTMENT
4480 -- Convert department name to department id
4481 IF (l_task_rec.dept_name IS NOT NULL AND l_task_rec.dept_name <> Fnd_Api.G_MISS_CHAR ) THEN
4482
4483 AHL_VWP_RULES_PVT.Check_Dept_Desc_Or_Id
4484 (p_organization_id => c_visit_rec.organization_id,
4485 p_dept_name => l_task_rec.dept_name,
4486 p_department_id => NULL,
4487 x_department_id => l_department_id,
4488 x_return_status => l_return_status,
4489 x_error_msg_code => l_msg_data);
4490
4491 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
4492 THEN
4493 Fnd_Message.SET_NAME('AHL','AHL_VWP_DEPT_NOT_EXISTS');
4494 Fnd_Msg_Pub.ADD;
4495 RAISE Fnd_Api.G_EXC_ERROR;
4496 END IF;
4497
4498 --Assign the returned value
4499 l_task_rec.department_id := l_department_id;
4500 END IF;
4501
4502 IF (l_log_statement >= l_log_current_level) THEN
4503 fnd_log.string(l_log_statement,
4504 L_DEBUG_KEY,
4505 ': Dept ID= ' || l_Task_rec.department_id );
4506 END IF;
4507
4508 -- Called only when updating serial number for manually created summary task
4509 -- which are without MR i.e MR_Id in cursor record c_task_rec will be Null
4510 IF c_Task_rec.MR_Id IS NULL THEN
4511
4512 IF (l_log_statement >= l_log_current_level) THEN
4513 fnd_log.string(l_log_statement,
4514 L_DEBUG_KEY,
4515 ': Serial Number= ' || l_Task_rec.serial_number);
4516 END IF;
4517
4518 --
4519 -- For SERIAL NUMBER
4520 -- Convert serial number to instance/ serial id
4521 IF (l_Task_rec.serial_number IS NOT NULL AND
4522 l_Task_rec.serial_number <> Fnd_Api.G_MISS_CHAR) THEN
4523
4524 AHL_VWP_RULES_PVT.Check_Serial_Name_Or_Id
4525 (p_item_id => l_Task_rec.inventory_item_id,
4526 p_org_id => l_Task_rec.item_organization_id,
4527 p_serial_id => l_Task_rec.instance_id,
4528 p_serial_number => l_Task_rec.serial_number,
4529 x_serial_id => l_serial_id,
4530 x_return_status => l_return_status,
4531 x_error_msg_code => l_msg_data);
4532
4533 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success THEN
4534 Fnd_Message.SET_NAME('AHL','AHL_VWP_SERIAL_NOT_EXISTS');
4535 Fnd_Msg_Pub.ADD;
4536 RAISE Fnd_Api.G_EXC_ERROR;
4537 ELSE
4538
4539 --Assign the returned value
4540 l_Task_rec.instance_id := l_serial_id;
4541
4542 IF (l_log_statement >= l_log_current_level) THEN
4543 fnd_log.string(l_log_statement,
4544 L_DEBUG_KEY,
4545 ': Before UC Check Serial ID= ' || l_Task_rec.instance_id ||
4546 ': Before UC Item ID= ' || l_Task_rec.inventory_item_id ||
4547 ': Before UC Item Org ID= ' || l_Task_rec.item_organization_id);
4548 END IF;
4549 /* sowsubra - start
4550 --BEGIN: jeli added for bug 3777720
4551 IF (AHL_VWP_RULES_PVT.instance_in_config_tree(l_task_rec.visit_id, l_task_rec.instance_id) = FND_API.G_RET_STS_ERROR) THEN
4552 --END: jeli added for bug 3777720
4553 Fnd_Message.SET_NAME('AHL','AHL_VWP_TASK_SERIAL');
4554 Fnd_Msg_Pub.ADD;
4555 RAISE Fnd_Api.G_EXC_ERROR;
4556 END IF;
4557 sowsubra - end */
4558
4559 END IF; -- End of l_return_status success check
4560
4561 END IF; -- End of l_Task_rec.serial_number Null check
4562
4563 IF (l_log_statement >= l_log_current_level) THEN
4564 fnd_log.string(l_log_statement,
4565 L_DEBUG_KEY,
4566 ': Serial ID= ' || l_Task_rec.instance_id);
4567 END IF;
4568
4569 ELSE
4570 l_Task_rec.instance_id := c_Task_rec.instance_id;
4571 END IF; -- End of c_Task_rec.MR_Id Null check
4572
4573 IF (l_log_statement >= l_log_current_level) THEN
4574 fnd_log.string(l_log_statement,
4575 L_DEBUG_KEY,
4576 ': Cost parent= ' || l_Task_rec.cost_parent_number);
4577 END IF;
4578
4579 --
4580 -- For COST PARENT TASK
4581 -- Convert cost parent number to id
4582 IF (l_Task_rec.cost_parent_number IS NOT NULL AND
4583 l_Task_rec.cost_parent_number <> Fnd_Api.G_MISS_NUM ) THEN
4584
4585 IF (l_log_statement >= l_log_current_level) THEN
4586 fnd_log.string(l_log_statement,
4587 L_DEBUG_KEY,
4588 ' Calling AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID');
4589 END IF;
4590
4591 AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID
4592 (p_visit_task_id => l_Task_rec.cost_parent_id,
4593 p_visit_task_number => l_Task_rec.cost_parent_number,
4594 p_visit_id => l_Task_rec.visit_id,
4595 x_visit_task_id => l_cost_parent_id,
4596 x_return_status => l_return_status,
4597 x_error_msg_code => l_msg_data);
4598
4599 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
4600 THEN
4601 Fnd_Message.SET_NAME('AHL','AHL_VWP_PARENT_NOT_EXISTS');
4602 Fnd_Msg_Pub.ADD;
4603 RAISE Fnd_Api.g_exc_error;
4604 END IF;
4605
4606 --Assign the returned value
4607 l_Task_rec.cost_parent_id := l_cost_parent_id;
4608 ELSE
4609 l_Task_rec.cost_parent_id := NULL;
4610 END IF;
4611
4612 -- To Check for cost parent task id not forming loop
4613 IF (l_Task_rec.cost_parent_id IS NOT NULL AND
4614 l_Task_rec.cost_parent_id <> Fnd_Api.G_MISS_NUM ) THEN
4615
4616 AHL_VWP_RULES_PVT.Check_Cost_Parent_Loop
4617 (p_visit_id => l_Task_rec.visit_id,
4618 p_visit_task_id => l_Task_rec.visit_task_id ,
4619 p_cost_parent_id => l_Task_rec.cost_parent_id
4620 );
4621 END IF;
4622
4623 IF (l_log_statement >= l_log_current_level) THEN
4624 fnd_log.string(l_log_statement,
4625 L_DEBUG_KEY,
4626 ': Cost parent ID = ' || l_Task_rec.cost_parent_id);
4627 END IF;
4628
4629 IF c_Task_rec.MR_Id IS NULL THEN
4630 IF (l_log_statement >= l_log_current_level) THEN
4631 fnd_log.string(l_log_statement,
4632 L_DEBUG_KEY,
4633 ': Originating Number = ' || l_Task_rec.orginating_task_number);
4634 END IF;
4635
4636 --
4637 -- For ORIGINATING TASK
4638 -- Convert originating task number to id
4639 IF (l_Task_rec.orginating_task_number IS NOT NULL AND
4640 l_Task_rec.orginating_task_number <> Fnd_Api.G_MISS_NUM ) THEN
4641
4642 IF (l_log_statement >= l_log_current_level) THEN
4643 fnd_log.string(l_log_statement,
4644 L_DEBUG_KEY,
4645 ' Calling AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID');
4646 END IF;
4647
4648 AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID
4649 (p_visit_task_id => l_Task_rec.originating_task_id,
4650 p_visit_task_number => l_Task_rec.orginating_task_number,
4651 p_visit_id => l_Task_rec.visit_id,
4652 x_visit_task_id => l_originating_task_id,
4653 x_return_status => l_return_status,
4654 x_error_msg_code => l_msg_data);
4655
4656 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
4657 THEN
4658 Fnd_Message.SET_NAME('AHL','AHL_VWP_ORIGINATING_NOT_EXISTS');
4659 Fnd_Msg_Pub.ADD;
4660 RAISE Fnd_Api.g_exc_error;
4661 END IF;
4662
4663 --Assign the returned value
4664 l_Task_rec.originating_task_id := l_originating_task_id;
4665 ELSE
4666 l_Task_rec.originating_task_id := NULL;
4667 END IF;
4668
4669 IF (l_log_statement >= l_log_current_level) THEN
4670 fnd_log.string(l_log_statement,
4671 L_DEBUG_KEY,
4672 ': Originating Task ID= ' || l_Task_rec.originating_task_id);
4673 END IF;
4674
4675 -- To Check for originating task id not forming loop
4676 IF (l_Task_rec.originating_task_id IS NOT NULL AND
4677 l_Task_rec.originating_task_id <> Fnd_Api.G_MISS_NUM ) THEN
4678
4679 AHL_VWP_RULES_PVT.Check_Origin_Task_Loop
4680 (p_visit_id => l_Task_rec.visit_id ,
4681 p_visit_task_id => l_Task_rec.visit_task_id ,
4682 p_originating_task_id => l_Task_rec.originating_task_id
4683 );
4684
4685 END IF;
4686
4687 ELSE
4688 l_Task_rec.originating_task_id := c_Task_rec.originating_task_id;
4689 END IF;
4690
4691 ----------- End defining and validate all LOVs on Create Visit's Task UI Screen---
4692
4693 ----------------------- validate ----------------------
4694
4695 IF (l_log_statement >= l_log_current_level) THEN
4696 fnd_log.string(l_log_statement,
4697 L_DEBUG_KEY,
4698 ':Validate');
4699 END IF;
4700
4701 -- For all optional fields check if its g_miss_num/g_miss_char/g_miss_date
4702 -- then Null else the value call Default_Missing_Attribs procedure
4703 Default_Missing_Attribs
4704 (
4705 p_x_task_rec => l_Task_rec
4706 );
4707
4708 IF p_validation_level >= Jtf_Plsql_Api.g_valid_level_item THEN
4709 Check_Task_Items (
4710 p_task_rec => p_x_task_rec,
4711 p_validation_mode => Jtf_Plsql_Api.g_update,
4712 x_return_status => l_return_status
4713 );
4714 IF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
4715 RAISE Fnd_Api.g_exc_unexpected_error;
4716 ELSIF l_return_status = Fnd_Api.g_ret_sts_error THEN
4717 RAISE Fnd_Api.g_exc_error;
4718 END IF;
4719 END IF;
4720
4721 -- Check Object version number.
4722 IF (c_task_rec.object_version_number <> l_task_rec.object_version_number) THEN
4723 Fnd_Message.Set_Name('AHL','AHL_COM_RECORD_CHANGED');
4724 Fnd_Msg_Pub.ADD;
4725 RAISE Fnd_Api.G_EXC_ERROR;
4726 END IF;
4727
4728 --Standard check to count messages
4729 l_msg_count := Fnd_Msg_Pub.count_msg;
4730
4731 IF l_msg_count > 0 THEN
4732 x_msg_count := l_msg_count;
4733 x_return_status := Fnd_Api.G_RET_STS_ERROR;
4734 RAISE Fnd_Api.G_EXC_ERROR;
4735 END IF;
4736
4737 -------------------------- update --------------------
4738 IF (l_log_statement >= l_log_current_level) THEN
4739 fnd_log.string(l_log_statement,
4740 L_DEBUG_KEY,
4741 'Before Calling Ahl_Visit_Tasks_Pkg.UPDATE_ROW');
4742 END IF;
4743
4744 Ahl_Visit_Tasks_Pkg.UPDATE_ROW (
4745 X_VISIT_TASK_ID => l_task_rec.visit_task_id,
4746 X_VISIT_TASK_NUMBER => c_task_rec.visit_task_number,
4747 X_OBJECT_VERSION_NUMBER => l_task_rec.OBJECT_VERSION_NUMBER + 1,
4748 X_VISIT_ID => l_task_rec.visit_id,
4749 X_PROJECT_TASK_ID => c_task_rec.project_task_id,
4750 X_COST_PARENT_ID => l_task_rec.cost_parent_id,
4751 X_MR_ROUTE_ID => c_task_rec.mr_route_id,
4752 X_MR_ID => c_task_rec.mr_id,
4753 X_DURATION => c_task_rec.duration,
4754 X_UNIT_EFFECTIVITY_ID => c_task_rec.unit_effectivity_id,
4755 X_START_FROM_HOUR => l_task_rec.start_from_hour,
4756 X_INVENTORY_ITEM_ID => c_task_rec.inventory_item_id,
4757 X_ITEM_ORGANIZATION_ID => c_task_rec.item_organization_id,
4758 X_INSTANCE_ID => l_Task_rec.instance_id,
4759 X_PRIMARY_VISIT_TASK_ID => c_task_rec.primary_visit_task_id,
4760 X_ORIGINATING_TASK_ID => l_task_rec.originating_task_id,
4761 X_SERVICE_REQUEST_ID => c_task_rec.service_request_id,
4762 X_TASK_TYPE_CODE => l_task_rec.task_type_code,
4763 X_DEPARTMENT_ID => l_task_rec.department_id,
4764 X_SUMMARY_TASK_FLAG => 'N',
4765 X_PRICE_LIST_ID => c_task_rec.price_list_id,
4766 X_STATUS_CODE => c_task_rec.status_code,
4767 X_ESTIMATED_PRICE => c_task_rec.estimated_price,
4768 X_ACTUAL_PRICE => c_task_rec.actual_price,
4769 X_ACTUAL_COST => c_task_rec.actual_cost,
4770 -- Post 11.5.10 Changes by Senthil.
4771 X_STAGE_ID => l_task_rec.STAGE_ID,
4772 -- Added cxcheng POST11510--------------
4773 X_START_DATE_TIME => NULL,
4774 X_END_DATE_TIME => NULL,
4775 X_ATTRIBUTE_CATEGORY => c_task_rec.ATTRIBUTE_CATEGORY,
4776 X_ATTRIBUTE1 => c_task_rec.ATTRIBUTE1,
4777 X_ATTRIBUTE2 => c_task_rec.ATTRIBUTE2,
4778 X_ATTRIBUTE3 => c_task_rec.ATTRIBUTE3,
4779 X_ATTRIBUTE4 => c_task_rec.ATTRIBUTE4,
4780 X_ATTRIBUTE5 => c_task_rec.ATTRIBUTE5,
4781 X_ATTRIBUTE6 => c_task_rec.ATTRIBUTE6,
4782 X_ATTRIBUTE7 => c_task_rec.ATTRIBUTE7,
4783 X_ATTRIBUTE8 => c_task_rec.ATTRIBUTE8,
4784 X_ATTRIBUTE9 => c_task_rec.ATTRIBUTE9,
4785 X_ATTRIBUTE10 => c_task_rec.ATTRIBUTE10,
4786 X_ATTRIBUTE11 => c_task_rec.ATTRIBUTE11,
4787 X_ATTRIBUTE12 => c_task_rec.ATTRIBUTE12,
4788 X_ATTRIBUTE13 => c_task_rec.ATTRIBUTE13,
4789 X_ATTRIBUTE14 => c_task_rec.ATTRIBUTE14,
4790 X_ATTRIBUTE15 => c_task_rec.ATTRIBUTE15,
4791 X_VISIT_TASK_NAME => l_task_rec.visit_task_name,
4792 X_DESCRIPTION => l_task_rec.description,
4793 -- Added by rnahata for Issue 105 - qty is zero for manually created summary tasks
4794 X_QUANTITY => 0,
4795 X_LAST_UPDATE_DATE => SYSDATE,
4796 X_LAST_UPDATED_BY => Fnd_Global.USER_ID,
4797 X_LAST_UPDATE_LOGIN => Fnd_Global.LOGIN_ID );
4798
4799 IF (l_log_statement >= l_log_current_level) THEN
4800 fnd_log.string(l_log_statement,
4801 L_DEBUG_KEY,
4802 'After Calling Ahl_Visit_Tasks_Pkg.UPDATE_ROW');
4803 END IF;
4804
4805 ------------------------End of API Body------------------------------------
4806 -- Added cxcheng POST11510--------------
4807 --Now adjust the times derivation for task
4808 IF (l_log_statement >= l_log_current_level) THEN
4809 fnd_log.string(l_log_statement,
4810 L_DEBUG_KEY,
4811 'Before calling AHL_VWP_TIMES_PVT.Adjust_Task_Times');
4812 END IF;
4813 AHL_VWP_TIMES_PVT.Adjust_Task_Times(p_api_version => 1.0,
4814 p_init_msg_list => Fnd_Api.G_FALSE,
4815 p_commit => Fnd_Api.G_FALSE,
4816 p_validation_level => Fnd_Api.G_VALID_LEVEL_FULL,
4817 x_return_status => l_return_status,
4818 x_msg_count => l_msg_count,
4819 x_msg_data => l_msg_data,
4820 p_task_id =>l_task_rec.visit_task_id);
4821 IF (l_log_statement >= l_log_current_level) THEN
4822 fnd_log.string(l_log_statement,
4823 L_DEBUG_KEY,
4824 'After Calling AHL_VWP_TIMES_PVT.Adjust_Task_Times, Return Status = ' || l_return_status);
4825 END IF;
4826
4827 --Standard check to count messages
4828 l_msg_count := Fnd_Msg_Pub.count_msg;
4829
4830 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
4831 x_msg_count := l_msg_count;
4832 x_return_status := Fnd_Api.G_RET_STS_ERROR;
4833 RAISE Fnd_Api.G_EXC_ERROR;
4834 END IF;
4835
4836 --Standard check for commit
4837 IF Fnd_Api.TO_BOOLEAN(p_commit) THEN
4838 COMMIT;
4839 END IF;
4840
4841 IF (l_log_procedure >= l_log_current_level) THEN
4842 fnd_log.string(l_log_procedure,
4843 L_DEBUG_KEY ||'.end',
4844 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
4845 END IF;
4846
4847 EXCEPTION
4848 WHEN Fnd_Api.g_exc_error THEN
4849 ROLLBACK TO Update_Summary_Task;
4850 x_return_status := Fnd_Api.g_ret_sts_error;
4851 Fnd_Msg_Pub.count_and_get (
4852 p_encoded => Fnd_Api.g_false,
4853 p_count => x_msg_count,
4854 p_data => x_msg_data
4855 );
4856 WHEN Fnd_Api.g_exc_unexpected_error THEN
4857 ROLLBACK TO Update_Summary_Task;
4858 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
4859 Fnd_Msg_Pub.count_and_get (
4860 p_encoded => Fnd_Api.g_false,
4861 p_count => x_msg_count,
4862 p_data => x_msg_data
4863 );
4864 WHEN OTHERS THEN
4865 ROLLBACK TO Update_Summary_Task;
4866 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
4867 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
4868 THEN
4869 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
4870 END IF;
4871 Fnd_Msg_Pub.count_and_get (
4872 p_encoded => Fnd_Api.g_false,
4873 p_count => x_msg_count,
4874 p_data => x_msg_data
4875 );
4876 END Update_Summary_Task;
4877
4878 --------------------------------------------------------------------
4879 -- PROCEDURE
4880 -- Delete_Task
4881 --
4882 -- PURPOSE
4883 -- To delete all types of tasks i.e Unassociated/Summary/Planned/Unplanned tasks.
4884 --------------------------------------------------------------------
4885 PROCEDURE Delete_Task (
4886 p_api_version IN NUMBER,
4887 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
4888 p_commit IN VARCHAR2 := Fnd_Api.g_false,
4889 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
4890 p_module_type IN VARCHAR2 := 'JSP',
4891 p_Visit_Task_Id IN NUMBER,
4892 x_return_status OUT NOCOPY VARCHAR2,
4893 x_msg_count OUT NOCOPY NUMBER,
4894 x_msg_data OUT NOCOPY VARCHAR2
4895 )
4896 IS
4897 L_API_VERSION CONSTANT NUMBER := 1.0;
4898 L_API_NAME CONSTANT VARCHAR2(30) := 'Delete_Task';
4899 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
4900 -- local variables defined for the procedure
4901 l_msg_data VARCHAR2(2000);
4902 l_return_status VARCHAR2(1);
4903 l_interaction_id NUMBER;
4904 l_msg_count NUMBER;
4905
4906 -- To find task related information
4907 CURSOR c_Task (x_id IN NUMBER) IS
4908 SELECT * FROM Ahl_Visit_Tasks_VL
4909 WHERE VISIT_TASK_ID = x_id;
4910 c_Task_rec c_Task%ROWTYPE;
4911
4912 -- To find visit related information
4913 CURSOR c_Visit (x_id IN NUMBER) IS
4914 SELECT * FROM Ahl_Visits_VL
4915 WHERE VISIT_ID = x_id;
4916 c_Visit_rec c_Visit%ROWTYPE;
4917
4918 CURSOR c_sr_ovn(c_sr_id IN NUMBER) IS
4919 SELECT object_version_number, incident_number
4920 FROM cs_incidents_all_b
4921 WHERE INCIDENT_ID = c_sr_id;
4922 c_sr_ovn_rec c_sr_ovn%ROWTYPE;
4923
4924 -- post 11.5.10
4925 -- yazhou start
4926
4927 CURSOR c_visit_task_exists(p_visit_id IN NUMBER)
4928 IS
4929 SELECT 'x'
4930 FROM ahl_visit_tasks_b
4931 WHERE visit_id = p_visit_id
4932 AND STATUS_CODE = 'PLANNING';
4933
4934 -- yazhou end
4935 -- amagrawa start
4936 CURSOR c_get_wo_details(x_id IN NUMBER)
4937 IS
4938 SELECT
4939 scheduled_start_date,
4940 SCHEDULED_COMPLETION_DATE
4941 FROM wip_discrete_jobs WHERE wip_entity_id =
4942 (
4943 SELECT
4944 wip_entity_id
4945 FROM ahl_workorders
4946 WHERE
4947 master_workorder_flag = 'Y' AND
4948 visit_task_id IS null AND
4949 status_code not in (22,7) and
4950 visit_id=x_id
4951 );
4952 c_get_wo_details_rec c_get_wo_details%ROWTYPE;
4953 -- amagrawa end
4954
4955 l_dummy VARCHAR2(1);
4956
4957 l_planned_order_flag VARCHAR2(1);
4958
4959 BEGIN
4960
4961 IF (l_log_procedure >= l_log_current_level) THEN
4962 fnd_log.string(l_log_procedure,
4963 L_DEBUG_KEY ||'.begin',
4964 'At the start of PL SQL procedure.');
4965 END IF;
4966 --------------------- initialize -----------------------
4967 SAVEPOINT Delete_Task;
4968
4969 IF Fnd_Api.to_boolean (p_init_msg_list) THEN
4970 Fnd_Msg_Pub.initialize;
4971 END IF;
4972
4973 -- Initialize API return status to success
4974 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
4975
4976 -- Standard call to check for call compatibility.
4977 IF NOT Fnd_Api.compatible_api_call(
4978 l_api_version,
4979 p_api_version,
4980 l_api_name,
4981 G_PKG_NAME
4982 ) THEN
4983 RAISE Fnd_Api.g_exc_unexpected_error;
4984 END IF;
4985 --------------------Start of API Body-----------------------------------
4986
4987 -------------------Cursor values------------------------------------
4988 OPEN c_Task(p_visit_task_id);
4989 FETCH c_Task INTO c_Task_rec;
4990 CLOSE c_Task;
4991
4992 OPEN c_visit(c_task_rec.visit_id);
4993 FETCH c_visit INTO c_visit_rec;
4994 CLOSE c_visit;
4995
4996 OPEN c_sr_ovn(c_task_rec.service_request_id);
4997 FETCH c_sr_ovn into c_sr_ovn_rec;
4998 CLOSE c_sr_ovn;
4999
5000 IF (l_log_statement >= l_log_current_level) THEN
5001 fnd_log.string(l_log_statement,
5002 L_DEBUG_KEY,
5003 ': Visit Id = ' || c_visit_rec.visit_id ||
5004 ': Status Code ' || c_visit_rec.status_code ||
5005 ': Visit Id = ' || c_task_rec.visit_task_id);
5006 END IF;
5007
5008 ---------------------------------------------- Start----------------------------------------------------------
5009
5010 IF c_visit_rec.status_code IN ('CLOSED','CANCELLED') THEN
5011 Fnd_Message.SET_NAME('AHL','AHL_VWP_NOT_USE_VISIT');
5012 Fnd_Msg_Pub.ADD;
5013 RAISE Fnd_Api.G_EXC_ERROR;
5014 ELSIF c_task_rec.status_code = 'PLANNING' THEN
5015 IF c_task_rec.task_type_code = 'SUMMARY' THEN
5016
5017 IF (l_log_statement >= l_log_current_level) THEN
5018 fnd_log.string(l_log_statement,
5019 L_DEBUG_KEY,
5020 'Before Calling Delete_Summary_Task');
5021 END IF;
5022 Delete_Summary_Task
5023 ( p_api_version => l_api_version,
5024 p_init_msg_list => p_init_msg_list,
5025 p_commit => Fnd_Api.g_false,
5026 p_validation_level => p_validation_level,
5027 p_module_type => p_module_type,
5028 p_visit_task_id => p_visit_task_id,
5029 x_return_status => l_return_status,
5030 x_msg_count => l_msg_count,
5031 x_msg_data => l_msg_data
5032 );
5033
5034 IF (l_log_statement >= l_log_current_level) THEN
5035 fnd_log.string(l_log_statement,
5036 L_DEBUG_KEY,
5037 'After Calling Delete_Summary_Task, Return Status = ' || l_return_status );
5038 END IF;
5039
5040 ELSIF c_task_rec.task_type_code = 'PLANNED' THEN
5041
5042 IF (l_log_statement >= l_log_current_level) THEN
5043 fnd_log.string(l_log_statement,
5044 L_DEBUG_KEY,
5045 'Before Calling AHL_VWP_PLAN_TASKS_PVT.Delete_Planned_Task');
5046 END IF;
5047 AHL_VWP_PLAN_TASKS_PVT.Delete_Planned_Task
5048 ( p_api_version => l_api_version,
5049 p_init_msg_list => p_init_msg_list,
5050 p_commit => Fnd_Api.g_false,
5051 p_validation_level => p_validation_level,
5052 p_module_type => p_module_type,
5053 p_visit_task_id => p_visit_task_id,
5054 x_return_status => l_return_status,
5055 x_msg_count => l_msg_count,
5056 x_msg_data => l_msg_data
5057 );
5058
5059 IF (l_log_statement >= l_log_current_level) THEN
5060 fnd_log.string(l_log_statement,
5061 L_DEBUG_KEY,
5062 'After Calling AHL_VWP_PLAN_TASKS_PVT.Delete_Planned_Task, Return Status = ' || l_return_status);
5063 END IF;
5064
5065 ELSIF c_task_rec.task_type_code = 'UNPLANNED' THEN
5066
5067 IF (l_log_statement >= l_log_current_level) THEN
5068 fnd_log.string(l_log_statement,
5069 L_DEBUG_KEY,
5070 'Before Calling AHL_VWP_UNPLAN_TASKS_PVT.Delete_Unplanned_Task');
5071 END IF;
5072 AHL_VWP_UNPLAN_TASKS_PVT.Delete_Unplanned_Task
5073 ( p_api_version => l_api_version,
5074 p_init_msg_list => p_init_msg_list,
5075 p_commit => Fnd_Api.g_false,
5076 p_validation_level => p_validation_level,
5077 p_module_type => p_module_type,
5078 p_visit_task_id => p_visit_task_id,
5079 x_return_status => l_return_status,
5080 x_msg_count => l_msg_count,
5081 x_msg_data => l_msg_data
5082 );
5083
5084 IF (l_log_statement >= l_log_current_level) THEN
5085 fnd_log.string(l_log_statement,
5086 L_DEBUG_KEY,
5087 'After Calling AHL_VWP_UNPLAN_TASKS_PVT.Delete_Unplanned_Task, Return Status = ' || l_return_status );
5088 END IF;
5089
5090 ELSE
5091
5092 IF (l_log_statement >= l_log_current_level) THEN
5093 fnd_log.string(l_log_statement,
5094 L_DEBUG_KEY,
5095 'Before Calling Delete_Unassociated_Task');
5096 END IF;
5097 Delete_Unassociated_Task
5098 (p_api_version => l_api_version,
5099 p_init_msg_list => p_init_msg_list,
5100 p_commit => Fnd_Api.g_false,
5101 p_validation_level => p_validation_level,
5102 p_module_type => p_module_type,
5103 p_visit_task_id => p_visit_task_id,
5104 x_return_status => l_return_status,
5105 x_msg_count => l_msg_count,
5106 x_msg_data => l_msg_data
5107 );
5108 IF (l_log_statement >= l_log_current_level) THEN
5109 fnd_log.string(l_log_statement,
5110 L_DEBUG_KEY,
5111 'After Calling Delete_Unassociated_Task, Return Status = ' || l_return_status);
5112 END IF;
5113
5114 END IF;
5115
5116 l_msg_count := Fnd_Msg_Pub.count_msg;
5117
5118 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
5119 x_msg_count := l_msg_count;
5120 x_return_status := Fnd_Api.G_RET_STS_ERROR;
5121 RAISE Fnd_Api.G_EXC_ERROR;
5122 END IF;
5123
5124 -- Added cxcheng POST11510--------------
5125 --Now adjust the times derivation for entire visit task could delete at
5126 --MR level
5127
5128 IF (l_log_statement >= l_log_current_level) THEN
5129 fnd_log.string(l_log_statement,
5130 L_DEBUG_KEY,
5131 'Before Calling AHL_VWP_TIMES_PVT.calculate_Task_Times');
5132 END IF;
5133
5134 AHL_VWP_TIMES_PVT.calculate_Task_Times(p_api_version => 1.0,
5135 p_init_msg_list => Fnd_Api.G_FALSE,
5136 p_commit => Fnd_Api.G_FALSE,
5137 p_validation_level => Fnd_Api.G_VALID_LEVEL_FULL,
5138 x_return_status => l_return_status,
5139 x_msg_count => l_msg_count,
5140 x_msg_data => l_msg_data,
5141 p_visit_id => c_task_rec.visit_id);
5142
5143 IF (l_log_statement >= l_log_current_level) THEN
5144 fnd_log.string(l_log_statement,
5145 L_DEBUG_KEY,
5146 'After Calling AHL_VWP_TIMES_PVT.calculate_Task_Times, Return Status = ' || l_return_status);
5147 END IF;
5148
5149 IF (l_log_statement >= l_log_current_level) THEN
5150 fnd_log.string(l_log_statement,
5151 L_DEBUG_KEY,
5152 'Before Calling AHL_LTP_REQST_MATRL_PVT.Process_Planned_Materials');
5153 END IF;
5154
5155 /* Operation flag changed to 'U' From 'R' by mpothuku on 02/07/05 */
5156 AHL_LTP_REQST_MATRL_PVT.Process_Planned_Materials
5157 (p_api_version => p_api_version,
5158 p_init_msg_list => Fnd_Api.G_FALSE,
5159 p_commit => Fnd_Api.G_FALSE,
5160 p_visit_id => c_task_rec.visit_id,
5161 p_visit_task_id => NULL,
5162 p_org_id => NULL,
5163 p_start_date => NULL,
5164 p_operation_flag => 'U',
5165 x_planned_order_flag => l_planned_order_flag ,
5166 x_return_status => l_return_status,
5167 x_msg_count => l_msg_count,
5168 x_msg_data => l_msg_data);
5169
5170 IF (l_log_statement >= l_log_current_level) THEN
5171 fnd_log.string(l_log_statement,
5172 L_DEBUG_KEY,
5173 'After Calling AHL_LTP_REQST_MATRL_PVT.Process_Planned_Materials, Return Status = ' || l_return_status);
5174 END IF;
5175
5176 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
5177 x_msg_count := l_msg_count;
5178 x_return_status := Fnd_Api.G_RET_STS_ERROR;
5179 RAISE Fnd_Api.G_EXC_ERROR;
5180 END IF;
5181
5182 -- post 11.5.10
5183 --yazhou start
5184 -- If visit is in partially released status
5185 -- and after this task is deleted, no other task is in Planning status
5186 -- then set the visit status to RELEASED
5187 IF c_visit_rec.status_code = 'PARTIALLY RELEASED' THEN
5188 -- yazhou end
5189
5190 OPEN c_visit_task_exists(c_visit_rec.visit_id);
5191 FETCH c_visit_task_exists INTO l_dummy;
5192 OPEN c_get_wo_details(c_task_rec.visit_id);
5193 FETCH c_get_wo_details into c_get_wo_details_rec;
5194
5195 IF (c_visit_task_exists%NOTFOUND and
5196 c_visit_rec.start_date_time = c_get_wo_details_rec.scheduled_start_date and
5197 c_visit_rec.close_date_time = c_get_wo_details_rec.scheduled_completion_date)
5198 THEN
5199 UPDATE ahl_visits_b
5200 SET status_code = 'RELEASED',
5201 object_version_number = object_version_number + 1
5202 WHERE visit_id = c_visit_rec.visit_id;
5203 END IF;
5204 CLOSE c_visit_task_exists;
5205 CLOSE c_get_wo_details;
5206
5207 -- post 11.5.10
5208 -- yazhou start
5209
5210 END IF;
5211
5212 -- yazhou end
5213
5214 -- yazhou 29-Jun-2006 starts
5215 -- bug#5359943
5216 -- Pass p_status_id as 1 (OPEN)
5217
5218 -- If SR Id of task is not null
5219 -- then update the status of the SR to OPEN
5220 IF (l_log_statement >= l_log_current_level) THEN
5221 fnd_log.string(l_log_statement,
5222 L_DEBUG_KEY,
5223 'Service Request Id = ' || c_task_rec.service_request_id);
5224 END IF;
5225 IF c_task_rec.service_request_id IS NOT NULL THEN
5226 IF (l_log_statement >= l_log_current_level) THEN
5227 fnd_log.string(l_log_statement,
5228 L_DEBUG_KEY,
5229 'Before Calling CS_ServiceRequest_PUB.Update_Status');
5230 END IF;
5231
5232 CS_ServiceRequest_PUB.Update_Status
5233 (
5234 p_api_version => 2.0,
5235 p_init_msg_list => p_init_msg_list,
5236 p_commit => FND_API.G_FALSE,
5237 p_resp_appl_id => NULL,
5238 p_resp_id => NULL,
5239 p_user_id => NULL,
5240 p_login_id => NULL,
5241 p_status_id => 1, --OPEN
5242 p_closed_date => NULL,
5243 p_audit_comments => NULL,
5244 p_called_by_workflow => FND_API.G_FALSE,
5245 p_workflow_process_id => NULL,
5246 p_comments => NULL,
5247 p_public_comment_flag => FND_API.G_FALSE,
5248 p_validate_sr_closure => 'N',
5249 p_auto_close_child_entities => 'N',
5250 p_request_id => NULL,
5251 p_request_number => c_sr_ovn_rec.incident_number,
5252 x_return_status => l_return_status,
5253 x_msg_count => l_msg_count,
5254 x_msg_data => l_msg_data,
5255 p_object_version_number => c_sr_ovn_rec.object_version_number,
5256 -- p_status => 'OPEN',
5257 x_interaction_id => l_interaction_id
5258 );
5259 -- yazhou 29-Jun-2006 ends
5260
5261 IF (l_log_statement >= l_log_current_level) THEN
5262 fnd_log.string(l_log_statement,
5263 L_DEBUG_KEY,
5264 'After Calling CS_ServiceRequest_PUB.Update_Status, Return Status = ' || l_return_status);
5265 END IF;
5266
5267 l_msg_count := Fnd_Msg_Pub.count_msg;
5268
5269 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
5270 x_msg_count := l_msg_count;
5271 x_return_status := Fnd_Api.G_RET_STS_ERROR;
5272 RAISE Fnd_Api.G_EXC_ERROR;
5273 END IF;
5274 END IF;
5275
5276 END IF;
5277
5278 -- Bug fix #4187213
5279 -- yazhou 16-Feb-2005
5280 IF c_visit_rec.Any_Task_Chg_Flag='N' THEN
5281 AHL_VWP_RULES_PVT.update_visit_task_flag(
5282 p_visit_id =>c_visit_rec.visit_id,
5283 p_flag =>'Y',
5284 x_return_status =>x_return_status);
5285
5286 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5287 RAISE FND_API.G_EXC_ERROR;
5288 END IF;
5289 END IF;
5290 ------------------------End of API Body------------------------------------
5291
5292 --Standard check to count messages
5293 l_msg_count := Fnd_Msg_Pub.count_msg;
5294
5295 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
5296 x_msg_count := l_msg_count;
5297 x_return_status := Fnd_Api.G_RET_STS_ERROR;
5298 RAISE Fnd_Api.G_EXC_ERROR;
5299 END IF;
5300
5301 --Standard check for commit
5302 IF Fnd_Api.TO_BOOLEAN(p_commit) THEN
5303 COMMIT;
5304 END IF;
5305
5306 IF (l_log_procedure >= l_log_current_level) THEN
5307 fnd_log.string(l_log_procedure,
5308 L_DEBUG_KEY ||'.end',
5309 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
5310 END IF;
5311
5312 EXCEPTION
5313 WHEN Fnd_Api.g_exc_error THEN
5314 ROLLBACK TO Delete_Task;
5315 x_return_status := Fnd_Api.g_ret_sts_error;
5316 Fnd_Msg_Pub.count_and_get (
5317 p_encoded => Fnd_Api.g_false,
5318 p_count => x_msg_count,
5319 p_data => x_msg_data
5320 );
5321 WHEN Fnd_Api.g_exc_unexpected_error THEN
5322 ROLLBACK TO Delete_Task;
5323 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
5324 Fnd_Msg_Pub.count_and_get (
5325 p_encoded => Fnd_Api.g_false,
5326 p_count => x_msg_count,
5327 p_data => x_msg_data
5328 );
5329 WHEN OTHERS THEN
5330 ROLLBACK TO Delete_Task;
5331 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
5332 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
5333 THEN
5334 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
5335 END IF;
5336 Fnd_Msg_Pub.count_and_get (
5337 p_encoded => Fnd_Api.g_false,
5338 p_count => x_msg_count,
5339 p_data => x_msg_data
5340 );
5341 END Delete_Task;
5342
5343 --------------------------------------------------------------------
5344 -- PROCEDURE
5345 -- Delete_Unassociated_Task
5346 --
5347 -- PURPOSE
5348 -- To delete Unassociated tasks for the Maintenace visit.
5349 --------------------------------------------------------------------
5350
5351 PROCEDURE Delete_Unassociated_Task (
5352 p_api_version IN NUMBER,
5353 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
5354 p_commit IN VARCHAR2 := Fnd_Api.g_false,
5355 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
5356 p_module_type IN VARCHAR2 := 'JSP',
5357 p_visit_task_ID IN NUMBER,
5358 x_return_status OUT NOCOPY VARCHAR2,
5359 x_msg_count OUT NOCOPY NUMBER,
5360 x_msg_data OUT NOCOPY VARCHAR2
5361 )
5362
5363 IS
5364 l_api_version CONSTANT NUMBER := 1.0;
5365 l_api_name CONSTANT VARCHAR2(30) := 'Delete_Unassociated_Task';
5366 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
5367 -- local variables defined for the procedure
5368 l_visit_id NUMBER;
5369 l_task_id NUMBER;
5370 x_task_id NUMBER;
5371 l_est_price NUMBER;
5372 l_act_price NUMBER;
5373 l_count NUMBER;
5374 l_msg_count NUMBER;
5375 l_msg_data VARCHAR2(2000);
5376 l_return_status VARCHAR2(1);
5377
5378 -- To find all tasks related information
5379 CURSOR c_Task (x_id IN NUMBER) IS
5380 SELECT * FROM Ahl_Visit_Tasks_VL
5381 WHERE Visit_Task_ID = x_id;
5382 c_task_rec c_Task%ROWTYPE;
5383
5384 -- To find visit related information
5385 CURSOR c_Visit (x_id IN NUMBER) IS
5386 SELECT *
5387 FROM Ahl_Visits_VL
5388 WHERE VISIT_ID = x_id;
5389 c_visit_rec c_Visit%ROWTYPE;
5390
5391 -- To find any task which have primary visit task id as deleted task id
5392 --CURSOR c_primary (x_visit_id IN NUMBER, x_task_id IN NUMBER) IS
5393 CURSOR c_primary (x_task_id IN NUMBER) IS
5394 SELECT Visit_Task_Id, Object_Version_Number,visit_id
5395 FROM Ahl_Visit_Tasks_VL
5396 WHERE --VISIT_ID = x_visit_id AND
5397 PRIMARY_VISIT_TASK_ID = x_task_id
5398 AND status_code <> 'DELETED';
5399 c_primary_rec c_primary%ROWTYPE;
5400
5401 -- To find any task links for a deleted task
5402 CURSOR c_links (x_id IN NUMBER) IS
5403 SELECT COUNT(*) FROM Ahl_Task_Links L ,Ahl_Visit_Tasks_B T
5404 WHERE (T.VISIT_TASK_ID = L.VISIT_TASK_ID OR T.VISIT_TASK_ID = L.PARENT_TASK_ID)
5405 AND T.VISIT_TASK_ID = x_id;
5406
5407 -- To find if WIP job is created for the Visit
5408 CURSOR c_wo_exist(x_task_id IN NUMBER)
5409 IS
5410 select 'X' from ahl_workorders
5411 where VISIT_TASK_ID=x_task_id;
5412
5413 -- To find if WIP job is created for the Visit
5414 CURSOR c_workorders(x_task_id IN NUMBER)
5415 IS
5416 SELECT * FROM AHL_WORKORDERS
5417 WHERE VISIT_TASK_ID=x_task_id
5418 AND STATUS_CODE<>'22' AND STATUS_CODE<> '7';
5419
5420 l_workrec c_workorders%ROWTYPE;
5421 l_workorder_rec AHL_PRD_WORKORDER_PVT.PRD_WORKORDER_REC;
5422 l_workoper_tbl AHL_PRD_WORKORDER_PVT.PRD_WORKOPER_TBL;
5423 l_wip_load_flag VARCHAR2(1):= 'Y';
5424 l_workorder_present VARCHAR2(1);
5425
5426 BEGIN
5427 IF (l_log_procedure >= l_log_current_level) THEN
5428 fnd_log.string(l_log_procedure,
5429 L_DEBUG_KEY ||'.begin',
5430 'At the start of PL SQL procedure.');
5431 END IF;
5432
5433 --------------------- initialize -----------------------
5434 SAVEPOINT Delete_Unassociated_Task;
5435
5436 IF Fnd_Api.to_boolean (p_init_msg_list) THEN
5437 Fnd_Msg_Pub.initialize;
5438 END IF;
5439
5440 -- Initialize API return status to success
5441 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
5442
5443 -- Standard call to check for call compatibility.
5444 IF NOT Fnd_Api.compatible_api_call(
5445 l_api_version,
5446 p_api_version,
5447 l_api_name,
5448 G_PKG_NAME
5449 ) THEN
5450 RAISE Fnd_Api.g_exc_unexpected_error;
5451 END IF;
5452
5453 ------------------------Start of API Body------------------------------------
5454 IF (l_log_statement >= l_log_current_level) THEN
5455 fnd_log.string(l_log_statement,
5456 L_DEBUG_KEY,
5457 ':Task Id' || p_visit_task_ID);
5458 END IF;
5459
5460 -- To check if the input taskid exists in task entity.
5461 OPEN c_Task(p_Visit_Task_ID);
5462 FETCH c_Task INTO c_task_rec;
5463
5464 IF c_Task%NOTFOUND THEN
5465 CLOSE c_Task;
5466 IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.g_msg_lvl_error) THEN
5467 Fnd_Message.set_name('AHL', 'AHL_API_RECORD_NOT_FOUND');
5468 Fnd_Msg_Pub.ADD;
5469 END IF;
5470 RAISE Fnd_Api.g_exc_error;
5471 END IF;
5472 CLOSE c_Task;
5473
5474 -- To find the visit related information
5475 OPEN c_Visit(c_task_rec.visit_id);
5476 FETCH c_Visit INTO c_visit_rec;
5477 CLOSE c_Visit;
5478
5479 OPEN c_workorders(c_task_rec.visit_task_id);
5480 FETCH c_workorders INTO l_workrec;
5481
5482 IF c_workorders%FOUND THEN
5483
5484 IF l_workrec.status_code='17' THEN
5485 l_workorder_rec.workorder_id:=l_workrec.workorder_id;
5486 l_workorder_rec.visit_task_id:=p_visit_task_id;
5487
5488 Get_WorkOrder_Attribs(
5489 p_x_prd_workorder_rec => l_workorder_rec
5490 );
5491
5492 l_msg_count := FND_MSG_PUB.count_msg;
5493 IF l_msg_count > 0 THEN
5494 x_msg_count := l_msg_count;
5495 x_return_status := FND_API.G_RET_STS_ERROR;
5496 RAISE FND_API.G_EXC_ERROR;
5497 END IF;
5498
5499 l_workorder_rec.wip_entity_id := null;
5500 l_workorder_rec.STATUS_CODE:='22'; --Deleted Status Refer DLD to Verify.
5501
5502 IF (l_log_statement >= l_log_current_level) THEN
5503 fnd_log.string(l_log_statement,
5504 L_DEBUG_KEY,
5505 'Before Calling AHL_PRD_WORKORDER_PVT.update_job');
5506 END IF;
5507 AHL_PRD_WORKORDER_PVT.update_job
5508 (
5509 p_api_version => 1.0,
5510 p_init_msg_list => fnd_api.g_false,
5511 p_commit => fnd_api.g_false,
5512 p_validation_level => p_validation_level,
5513 p_default => fnd_api.g_false,
5514 p_module_type => NULL,
5515 x_return_status => x_return_status,
5516 x_msg_count => x_msg_count,
5517 x_msg_data => x_msg_data,
5518 p_wip_load_flag => 'Y',
5519 p_x_prd_workorder_rec => l_workorder_rec,
5520 p_x_prd_workoper_tbl => l_workoper_tbl
5521 );
5522
5523 IF (l_log_statement >= l_log_current_level) THEN
5524 fnd_log.string(l_log_statement,
5525 L_DEBUG_KEY,
5526 'After Calling AHL_PRD_WORKORDER_PVT.update_job, Return Status = ' || x_return_status);
5527 END IF;
5528
5529 l_msg_count := FND_MSG_PUB.count_msg;
5530 IF l_msg_count > 0 OR NVL(x_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
5531 x_msg_count := l_msg_count;
5532 x_return_status := FND_API.G_RET_STS_ERROR;
5533 RAISE FND_API.G_EXC_ERROR;
5534 END IF;
5535
5536 ELSE
5537 -- if status is not draft
5538 Fnd_Message.set_name ('AHL', 'AHL_VWP_TSK_CANNOT_DEL');
5539 Fnd_Msg_Pub.ADD;
5540 RAISE FND_API.G_EXC_ERROR;
5541 END IF; -- End of Job Status
5542 CLOSE c_workorders;
5543
5544 ELSE
5545
5546 CLOSE c_workorders;
5547
5548 END IF; -- End of check if the job is for the task
5549
5550 OPEN c_wo_exist(c_task_rec.visit_task_id);
5551 FETCH c_wo_exist INTO l_workorder_present;
5552
5553 IF c_wo_exist%FOUND THEN
5554 l_workorder_present :='Y';
5555 ELSE
5556 l_workorder_present :='N';
5557 END IF;
5558 CLOSE c_wo_exist;
5559
5560 l_visit_id := c_task_rec.visit_id;
5561 l_task_id := p_Visit_Task_ID;
5562
5563 --To update all tasks which have the deleting task as cost or originating task
5564 AHL_VWP_RULES_PVT.Update_Cost_Origin_Task
5565 (p_visit_task_id =>l_task_Id,
5566 x_return_status =>x_return_status
5567 );
5568
5569 IF NVL(x_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
5570 x_msg_count := l_msg_count;
5571 x_return_status := FND_API.G_RET_STS_ERROR;
5572 RAISE FND_API.G_EXC_ERROR;
5573 END IF;
5574
5575 -- To find if task deleted from a visit in the Primary Plan,
5576 -- then any task associated to it in a simulation visit must have the association removed.
5577 --OPEN c_primary (l_visit_id, l_task_id);
5578 IF(c_visit_rec.ASSO_PRIMARY_VISIT_ID is null) THEN
5579 OPEN c_primary (l_task_id);
5580 LOOP
5581 FETCH c_primary INTO c_primary_rec;
5582 EXIT WHEN c_primary%NOTFOUND;
5583 IF c_primary_rec.visit_task_id IS NOT NULL THEN
5584 UPDATE AHL_VISIT_TASKS_B SET PRIMARY_VISIT_TASK_ID = NULL,
5585 OBJECT_VERSION_NUMBER = c_primary_rec.object_version_number + 1
5586 WHERE --VISIT_ID = l_visit_id AND
5587 VISIT_TASK_ID = c_primary_rec.visit_task_id;
5588 IF (l_log_statement >= l_log_current_level) THEN
5589 fnd_log.string(l_log_statement,
5590 L_DEBUG_KEY,
5591 'Updated AHL_VISIT_TASKS_B for Visit Task Id = ' || c_primary_rec.visit_task_id);
5592 END IF;
5593 END IF;
5594 END LOOP;
5595 CLOSE c_primary;
5596 END IF;
5597
5598 -- To find if a task deleted has associated Children Tasks, tasks that define it as a parent,
5599 -- the association must be removed.
5600 OPEN c_links (l_task_id);
5601 FETCH c_links INTO l_count;
5602 IF l_count > 0 THEN
5603 DELETE Ahl_Task_Links
5604 WHERE VISIT_TASK_ID = l_task_id
5605 OR PARENT_TASK_ID = l_task_id;
5606 END IF;
5607 CLOSE c_links;
5608
5609 IF (l_log_statement >= l_log_current_level) THEN
5610 fnd_log.string(l_log_statement,
5611 L_DEBUG_KEY,
5612 'Project Task Id = ' || c_task_rec.PROJECT_TASK_ID);
5613 END IF;
5614
5615 -- When a visit's task is deleted than the related projects's task is also deleted
5616 IF c_task_rec.PROJECT_TASK_ID IS NOT NULL THEN
5617
5618 IF (l_log_statement >= l_log_current_level) THEN
5619 fnd_log.string(l_log_statement,
5620 L_DEBUG_KEY,
5621 'Before Calling AHL_VWP_PROJ_PROD_PVT.Delete_Task_to_Project');
5622 END IF;
5623 AHL_VWP_PROJ_PROD_PVT.Delete_Task_to_Project(
5624 /*p_api_version => l_api_version,
5625 p_init_msg_list => p_init_msg_list,
5626 p_commit => Fnd_Api.g_false,
5627 p_validation_level => p_validation_level,
5628 p_module_type => p_module_type,*/
5629 p_visit_task_id => c_task_rec.Visit_Task_ID,
5630 x_return_status => l_return_status);
5631 /*x_msg_count => x_msg_count,
5632 x_msg_data => x_msg_data);*/
5633
5634 l_msg_count := FND_MSG_PUB.count_msg;
5635 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
5636 x_msg_count := l_msg_count;
5637 x_return_status := FND_API.G_RET_STS_ERROR;
5638 RAISE FND_API.G_EXC_ERROR;
5639 END IF;
5640 END IF;
5641
5642 IF (l_log_statement >= l_log_current_level) THEN
5643 fnd_log.string(l_log_statement,
5644 L_DEBUG_KEY,
5645 'Value of l_workorder_present = ' || l_workorder_present);
5646 END IF;
5647
5648 IF l_workorder_present = 'N' THEN
5649
5650 -- Delete task translation (AHL_VISIT_TASKS_TL) table data
5651 DELETE FROM Ahl_Visit_Tasks_TL
5652 WHERE Visit_Task_ID = l_task_id;
5653
5654 IF (SQL%NOTFOUND) THEN
5655 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_error) THEN
5656 Fnd_Message.set_name ('AHL', 'AHL_API_RECORD_NOT_FOUND');
5657 Fnd_Msg_Pub.ADD;
5658 END IF;
5659 RAISE Fnd_Api.g_exc_error;
5660 END IF;
5661
5662 -- Delete task base (AHL_VISIT_TASKS_B) table data
5663 DELETE FROM Ahl_Visit_Tasks_B
5664 WHERE Visit_Task_ID = l_task_id;
5665
5666 IF (SQL%NOTFOUND) THEN
5667 Fnd_Message.set_name ('AHL', 'AHL_API_RECORD_NOT_FOUND');
5668 Fnd_Msg_Pub.ADD;
5669 RAISE Fnd_Api.g_exc_error;
5670 END IF;
5671
5672 ELSE
5673 UPDATE AHL_VISIT_TASKS_B
5674 SET STATUS_CODE='DELETED',UNIT_EFFECTIVITY_ID=NULL,
5675 OBJECT_VERSION_NUMBER=OBJECT_VERSION_NUMBER+1
5676 WHERE VISIT_TASK_ID=l_task_id;
5677
5678 IF (l_log_statement >= l_log_current_level) THEN
5679 fnd_log.string(l_log_statement,
5680 L_DEBUG_KEY,
5681 'Updation of the status to DELETED');
5682 END IF;
5683
5684 END IF; -- End of l_workorder_present flag check
5685
5686 ------------------------End of API Body------------------------------------
5687 IF Fnd_Api.to_boolean (p_commit) THEN
5688 COMMIT;
5689 END IF;
5690
5691 Fnd_Msg_Pub.count_and_get (
5692 p_encoded => Fnd_Api.g_false,
5693 p_count => x_msg_count,
5694 p_data => x_msg_data
5695 );
5696
5697 IF (l_log_procedure >= l_log_current_level) THEN
5698 fnd_log.string(l_log_procedure,
5699 L_DEBUG_KEY ||'.end',
5700 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
5701 END IF;
5702 EXCEPTION
5703 WHEN Fnd_Api.g_exc_error THEN
5704 ROLLBACK TO Delete_Unassociated_Task;
5705 x_return_status := Fnd_Api.g_ret_sts_error;
5706 Fnd_Msg_Pub.count_and_get (
5707 p_encoded => Fnd_Api.g_false,
5708 p_count => x_msg_count,
5709 p_data => x_msg_data
5710 );
5711 WHEN Fnd_Api.g_exc_unexpected_error THEN
5712 ROLLBACK TO Delete_Unassociated_Task;
5713 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
5714 Fnd_Msg_Pub.count_and_get (
5715 p_encoded => Fnd_Api.g_false,
5716 p_count => x_msg_count,
5717 p_data => x_msg_data
5718 );
5719 WHEN OTHERS THEN
5720 ROLLBACK TO Delete_Unassociated_Task;
5721 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
5722 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
5723 THEN
5724 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
5725 END IF;
5726 Fnd_Msg_Pub.count_and_get (
5727 p_encoded => Fnd_Api.g_false,
5728 p_count => x_msg_count,
5729 p_data => x_msg_data
5730 );
5731 END Delete_Unassociated_Task;
5732
5733 --------------------------------------------------------------------
5734 -- PROCEDURE
5735 -- Delete_SR_Task
5736 --
5737 -- PURPOSE
5738 -- Added for VWP Post 11.5.10 enhancements
5739 -- To delete SR tasks for the Maintenace visit.
5740 --------------------------------------------------------------------
5741
5742 PROCEDURE Delete_SR_Task (
5743 p_api_version IN NUMBER,
5744 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
5745 p_commit IN VARCHAR2 := Fnd_Api.g_false,
5746 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
5747 p_module_type IN VARCHAR2:= 'JSP',
5748 p_visit_task_ID IN NUMBER,
5749 x_return_status OUT NOCOPY VARCHAR2,
5750 x_msg_count OUT NOCOPY NUMBER,
5751 x_msg_data OUT NOCOPY VARCHAR2
5752 )
5753 IS
5754 l_api_version CONSTANT NUMBER := 1.0;
5755 l_api_name CONSTANT VARCHAR2(30) := 'Delete SR Task';
5756 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
5757
5758 -- local variables defined for the procedure
5759 l_orgin_id NUMBER;
5760 l_visit_id NUMBER;
5761 l_mr_id NUMBER;
5762 l_task_id NUMBER;
5763 l_cost_id NUMBER;
5764 l_est_price NUMBER;
5765 l_act_price NUMBER;
5766 l_count NUMBER;
5767 l_msg_count NUMBER;
5768
5769 l_workorder_rec AHL_PRD_WORKORDER_PVT.PRD_WORKORDER_REC;
5770 l_workoper_tbl AHL_PRD_WORKORDER_PVT.PRD_WORKOPER_TBL;
5771
5772 l_return_status VARCHAR2(1);
5773 l_workorder_present VARCHAR2(1) := 'N';
5774 l_planned_order_flag VARCHAR2(1);
5775
5776 -- To find all tasks related information
5777 CURSOR c_Task (x_id IN NUMBER) IS
5778 SELECT *
5779 FROM Ahl_Visit_Tasks_VL
5780 WHERE Visit_Task_ID = x_id;
5781 c_task_rec c_Task%ROWTYPE;
5782
5783 -- To find visit related information
5784 CURSOR c_Visit (x_id IN NUMBER) IS
5785 SELECT *
5786 FROM Ahl_Visits_VL
5787 WHERE VISIT_ID = x_id;
5788 c_visit_rec c_Visit%ROWTYPE;
5789
5790 -- To find any task which have primary visit task id as deleted task id
5791 --CURSOR c_primary (x_visit_id IN NUMBER, x_task_id IN NUMBER) IS
5792 CURSOR c_primary (x_task_id IN NUMBER) IS
5793 SELECT Visit_Task_Id, Object_Version_Number
5794 FROM Ahl_Visit_Tasks_VL
5795 WHERE --VISIT_ID = x_visit_id AND
5796 PRIMARY_VISIT_TASK_ID = x_task_id
5797 AND STATUS_CODE <> 'DELETED';
5798 c_primary_rec c_primary%ROWTYPE;
5799
5800 -- To find any task links for a deleted task
5801 CURSOR c_links (x_id IN NUMBER) IS
5802 SELECT COUNT(*) FROM Ahl_Task_Links L ,Ahl_Visit_Tasks_B T
5803 WHERE (T.VISIT_TASK_ID = L.VISIT_TASK_ID
5804 OR T.VISIT_TASK_ID = L.PARENT_TASK_ID)
5805 AND T.VISIT_TASK_ID = x_id;
5806
5807 -- To find if WIP job is created for the Visit
5808 CURSOR c_workorders(x_task_id IN NUMBER) IS
5809 SELECT * FROM AHL_WORKORDERS
5810 WHERE VISIT_TASK_ID=x_task_id
5811 AND STATUS_CODE<>'22' AND STATUS_CODE<> '7';
5812 c_workrec c_workorders%ROWTYPE;
5813
5814 CURSOR c_SR_tasks(c_visit_id NUMBER, c_sr_id NUMBER)
5815 IS
5816 SELECT visit_task_id
5817 FROM ahl_visit_tasks_b
5818 WHERE visit_id = c_visit_id
5819 START WITH originating_task_id IS NULL
5820 AND SERVICE_REQUEST_ID = c_sr_id
5821 CONNECT BY PRIOR visit_task_id = originating_task_id
5822 order by visit_task_id desc;
5823
5824 BEGIN
5825 IF (l_log_procedure >= l_log_current_level) THEN
5826 fnd_log.string(l_log_procedure,
5827 L_DEBUG_KEY ||'.begin',
5828 'At the start of PL SQL procedure.');
5829 END IF;
5830
5831 SAVEPOINT Delete_SR_Task;
5832
5833 IF Fnd_Api.to_boolean (p_init_msg_list) THEN
5834 Fnd_Msg_Pub.initialize;
5835 END IF;
5836
5837 -- Initialize API return status to success
5838
5839 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
5840
5841 -- Standard call to check for call compatibility.
5842 IF NOT Fnd_Api.compatible_api_call(L_api_version,p_api_version,
5843 l_api_name, G_PKG_NAME)
5844 THEN
5845 RAISE Fnd_Api.g_exc_unexpected_error;
5846 END IF;
5847
5848 ------------------------Start of API Body------------------------------------
5849 IF (l_log_statement >= l_log_current_level) THEN
5850 fnd_log.string(l_log_statement,
5851 L_DEBUG_KEY,
5852 ':Task Id' || p_visit_task_ID);
5853 END IF;
5854
5855 -- To check if the input taskid exists in task entity.
5856 OPEN c_Task(p_Visit_Task_ID);
5857 FETCH c_Task INTO c_task_rec;
5858
5859 IF c_Task%NOTFOUND THEN
5860 CLOSE c_Task;
5861
5862 IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.g_msg_lvl_error)
5863 THEN
5864 Fnd_Message.set_name('AHL', 'AHL_API_RECORD_NOT_FOUND');
5865 Fnd_Msg_Pub.ADD;
5866 END IF;
5867 RAISE Fnd_Api.g_exc_error;
5868 ELSE
5869 l_orgin_id :=c_task_rec.ORIGINATING_TASK_ID;
5870 l_cost_id :=c_task_rec.cost_parent_id;
5871 l_visit_id :=c_task_rec.visit_id;
5872 l_mr_id :=c_task_rec.MR_ID;
5873 l_act_price :=c_task_rec.actual_price;
5874 l_est_price :=c_task_rec.estimated_price;
5875
5876 CLOSE c_Task;
5877
5878 -- To find the visit related information
5879 OPEN c_Visit(c_task_rec.visit_id);
5880 FETCH c_Visit INTO c_visit_rec;
5881 CLOSE c_Visit;
5882
5883 IF c_task_rec.service_request_id IS NOT NULL THEN
5884
5885 OPEN c_SR_tasks(c_task_rec.visit_id,c_task_rec.service_request_id);
5886 LOOP
5887 FETCH c_SR_tasks INTO l_task_id;
5888 EXIT WHEN c_SR_tasks%NOTFOUND;
5889
5890 OPEN c_workorders(l_task_id);
5891 FETCH c_workorders INTO c_workrec;
5892
5893 IF C_WORKORDERS%FOUND THEN
5894 IF (l_log_statement >= l_log_current_level) THEN
5895 fnd_log.string(l_log_statement,
5896 L_DEBUG_KEY,
5897 'Check Workorder Status = ' || c_workrec.status_code);
5898 END IF;
5899 IF c_workrec.status_code<>'17'
5900 THEN
5901 -- ADD THIS MESSAGE TO SEED115
5902 Fnd_Message.set_name ('AHL', 'AHL_VWP_TSK_CANNOT_DEL');
5903 FND_MESSAGE.SET_TOKEN('Task_Number',c_task_rec.visit_task_number);
5904 Fnd_Msg_Pub.ADD;
5905 CLOSE c_workorders;
5906 CLOSE c_SR_tasks;
5907 RAISE fnd_Api.g_exc_error;
5908 -- IF STATUS IS NOT DRAFT RAISE ERROR.
5909 ELSIF c_workrec.status_code='17'
5910 THEN
5911
5912 l_workorder_present :='Y';
5913 l_workorder_rec.workorder_id:=c_workrec.workorder_id;
5914 l_workorder_rec.visit_task_id:=l_task_id;
5915 Get_WorkOrder_Attribs
5916 (
5917 p_x_prd_workorder_rec =>l_workorder_rec
5918 );
5919
5920 l_msg_count := FND_MSG_PUB.count_msg;
5921
5922 IF l_msg_count > 0 THEN
5923 CLOSE c_workorders;
5924 CLOSE c_SR_tasks;
5925 x_msg_count := l_msg_count;
5926 x_return_status := FND_API.G_RET_STS_ERROR;
5927 RAISE FND_API.G_EXC_ERROR;
5928 END IF;
5929 l_workorder_rec.wip_entity_id := null;
5930 l_workorder_rec.STATUS_CODE:='22'; --Deleted Status Refer DLD to Verify.
5931
5932 IF (l_log_statement >= l_log_current_level) THEN
5933 fnd_log.string(l_log_statement,
5934 L_DEBUG_KEY,
5935 'Before Calling AHL_PRD_WORKORDER_PVT.update_job');
5936 END IF;
5937
5938 AHL_PRD_WORKORDER_PVT.update_job
5939 (
5940 p_api_version =>1.0,
5941 p_init_msg_list =>fnd_api.g_false,
5942 p_commit =>fnd_api.g_false,
5943 p_validation_level =>p_validation_level,
5944 p_default =>fnd_api.g_false,
5945 p_module_type =>NULL,
5946
5947 x_return_status =>x_return_status,
5948 x_msg_count =>x_msg_count,
5949 x_msg_data =>x_msg_data,
5950
5951 p_wip_load_flag =>'Y',
5952 p_x_prd_workorder_rec =>l_workorder_rec,
5953 p_x_prd_workoper_tbl =>l_workoper_tbl
5954 );
5955
5956 IF (l_log_statement >= l_log_current_level) THEN
5957 fnd_log.string(l_log_statement,
5958 L_DEBUG_KEY,
5959 'After Calling AHL_PRD_WORKORDER_PVT.update_job, Return Status = ' || x_return_status);
5960 END IF;
5961
5962 l_msg_count := FND_MSG_PUB.count_msg;
5963 IF l_msg_count > 0 OR NVL(x_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
5964 CLOSE c_workorders;
5965 CLOSE c_SR_tasks;
5966 x_msg_count := l_msg_count;
5967 x_return_status := FND_API.G_RET_STS_ERROR;
5968 RAISE FND_API.G_EXC_ERROR;
5969 END IF;
5970
5971 END IF; -- End of If c_workrec.status_code<>'17' check
5972
5973 END IF; -- End of if c_workorders%found check
5974
5975 CLOSE c_workorders;
5976
5977 IF (l_log_statement >= l_log_current_level) THEN
5978 fnd_log.string(l_log_statement,
5979 L_DEBUG_KEY,
5980 ' Calling Update_Cost_Origin_Task, task id : '||l_task_ID );
5981 END IF;
5982
5983 -- To update all tasks which have the deleting task as cost or originating task
5984 AHL_VWP_RULES_PVT.Update_Cost_Origin_Task
5985 (
5986 p_visit_task_id =>l_task_ID,
5987 x_return_status =>x_return_status
5988 );
5989
5990 IF FND_MSG_PUB.count_msg>0 or NVL(x_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
5991 CLOSE c_SR_tasks;
5992 RAISE Fnd_Api.g_exc_error;
5993 END IF;
5994
5995 IF (l_log_statement >= l_log_current_level) THEN
5996 fnd_log.string(l_log_statement,
5997 L_DEBUG_KEY,
5998 'Check for Primary Visit');
5999 END IF;
6000
6001 --OPEN c_primary (l_visit_id, l_task_id);
6002 IF(c_visit_rec.ASSO_PRIMARY_VISIT_ID is null) THEN
6003 OPEN c_primary (l_task_id);
6004 LOOP
6005 FETCH c_primary INTO c_primary_rec;
6006 EXIT WHEN c_primary%NOTFOUND;
6007 IF c_primary_rec.visit_task_id IS NOT NULL
6008 THEN
6009 UPDATE AHL_VISIT_TASKS_B
6010 SET PRIMARY_VISIT_TASK_ID = NULL,
6011 OBJECT_VERSION_NUMBER = c_primary_rec.object_version_number + 1
6012 WHERE --VISIT_ID = l_visit_id AND
6013 VISIT_TASK_ID = c_primary_rec.visit_task_id;
6014 END IF;
6015 END LOOP;
6016 CLOSE c_primary;
6017 END IF;
6018
6019 IF c_task_rec.PROJECT_TASK_ID IS NOT NULL THEN
6020 IF (l_log_statement >= l_log_current_level) THEN
6021 fnd_log.string(l_log_statement,
6022 L_DEBUG_KEY,
6023 'Before Calling AHL_VWP_PROJ_PROD_PVT.Delete_Task_to_Project');
6024 END IF;
6025
6026 AHL_VWP_PROJ_PROD_PVT.Delete_Task_to_Project(
6027 /* p_api_version => l_api_version,
6028 p_init_msg_list => p_init_msg_list,
6029 p_commit => Fnd_Api.g_false,
6030 p_validation_level => p_validation_level,
6031 p_module_type => p_module_type,*/
6032 p_visit_task_id => l_task_id,
6033 x_return_status => l_return_status);
6034 /*x_msg_count => x_msg_count,
6035 x_msg_data => x_msg_data);*/
6036
6037 IF (l_log_statement >= l_log_current_level) THEN
6038 fnd_log.string(l_log_statement,
6039 L_DEBUG_KEY,
6040 'After Calling AHL_VWP_PROJ_PROD_PVT.Delete_Task_to_Project, Return Status = ' || l_return_status);
6041 END IF;
6042
6043 IF (fnd_msg_pub.count_msg > 0) OR
6044 NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
6045 CLOSE c_SR_tasks;
6046 RAISE Fnd_Api.g_exc_error;
6047 END IF;
6048
6049 END IF;
6050
6051 IF (l_log_statement >= l_log_current_level) THEN
6052 fnd_log.string(l_log_statement,
6053 L_DEBUG_KEY,
6054 'Before deleting from AHL_TASK_LINKS table');
6055 END IF;
6056
6057 OPEN c_links (l_task_id);
6058 FETCH c_links INTO l_count;
6059 IF l_count > 0 THEN
6060 DELETE Ahl_Task_Links
6061 WHERE VISIT_TASK_ID = l_task_id
6062 OR PARENT_TASK_ID = l_task_id;
6063 END IF;
6064 CLOSE c_links;
6065
6066 IF (l_log_statement >= l_log_current_level) THEN
6067 fnd_log.string(l_log_statement,
6068 L_DEBUG_KEY,
6069 'Before updating task status to DELETED');
6070 END IF;
6071
6072 --IF NVL(l_workorder_present,'X') ='Y' THEN
6073 IF c_task_rec.service_request_id IS NOT NULL THEN
6074 UPDATE AHL_VISIT_TASKS_B
6075 SET STATUS_CODE='DELETED',UNIT_EFFECTIVITY_ID=NULL,
6076 OBJECT_VERSION_NUMBER=OBJECT_VERSION_NUMBER+1
6077 WHERE VISIT_TASK_ID=l_task_id;
6078 ELSE
6079 DELETE FROM Ahl_Visit_Tasks_TL
6080 WHERE Visit_Task_ID = l_task_id;
6081
6082 IF (SQL%NOTFOUND) THEN
6083 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_error)
6084 THEN
6085 Fnd_Message.set_name ('AHL', 'AHL_API_RECORD_NOT_FOUND');
6086 Fnd_Msg_Pub.ADD;
6087 END IF;
6088 CLOSE c_SR_tasks;
6089 RAISE Fnd_Api.g_exc_error;
6090 END IF;
6091
6092 -- Delete task base (AHL_VISIT_TASKS_B) table data
6093
6094 IF (l_log_statement >= l_log_current_level) THEN
6095 fnd_log.string(l_log_statement,
6096 L_DEBUG_KEY,
6097 ':Delete from base task table');
6098 END IF;
6099
6100 DELETE FROM Ahl_Visit_Tasks_B
6101 WHERE Visit_Task_ID = l_task_id;
6102
6103 IF (SQL%NOTFOUND) THEN
6104 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_error)
6105 THEN
6106 Fnd_Message.set_name ('AHL', 'AHL_API_RECORD_NOT_FOUND');
6107 Fnd_Msg_Pub.ADD;
6108 END IF;
6109 CLOSE c_SR_tasks;
6110 RAISE Fnd_Api.g_exc_error;
6111 END IF;
6112 END IF;
6113
6114 IF NVL(c_visit_rec.actual_price,0) <> 0
6115 OR NVL(c_visit_rec.estimated_price,0) <> 0
6116 THEN
6117
6118 IF (l_log_statement >= l_log_current_level) THEN
6119 fnd_log.string(l_log_statement,
6120 L_DEBUG_KEY,
6121 'Before updating visit price by deducting task price');
6122 END IF;
6123
6124 l_act_price:= NVL(c_visit_rec.actual_price,0) - NVL(l_act_price,0);
6125 l_est_price:= NVL(c_visit_rec.estimated_price,0) - NVL(l_est_price,0);
6126
6127 UPDATE ahl_visits_b
6128 SET actual_price=l_act_price,
6129 estimated_price=l_est_price,
6130 OBJECT_VERSION_NUMBER=OBJECT_VERSION_NUMBER+1
6131 WHERE visit_id=l_visit_id;
6132 END IF;
6133
6134 END LOOP; -- End of c_SR_task Loop
6135 CLOSE c_SR_tasks;
6136
6137 END IF; --End of if c_task_rec.service_request is not null check
6138
6139 END IF; -- Task Null Check
6140
6141 IF (l_log_procedure >= l_log_current_level) THEN
6142 fnd_log.string(l_log_procedure,
6143 L_DEBUG_KEY ||'.end',
6144 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
6145 END IF;
6146 EXCEPTION
6147 WHEN Fnd_Api.g_exc_error THEN
6148 ROLLBACK TO Delete_SR_Task;
6149 x_return_status := Fnd_Api.g_ret_sts_error;
6150 Fnd_Msg_Pub.count_and_get (
6151 p_encoded => Fnd_Api.g_false,
6152 p_count => x_msg_count,
6153 p_data => x_msg_data
6154 );
6155 WHEN Fnd_Api.g_exc_unexpected_error THEN
6156 ROLLBACK TO Delete_SR_Task;
6157 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
6158 Fnd_Msg_Pub.count_and_get (
6159 p_encoded => Fnd_Api.g_false,
6160 p_count => x_msg_count,
6161 p_data => x_msg_data
6162 );
6163 WHEN OTHERS THEN
6164 ROLLBACK TO Delete_SR_Task;
6165 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
6166 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
6167 THEN
6168 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
6169 END IF;
6170 Fnd_Msg_Pub.count_and_get (
6171 p_encoded => Fnd_Api.g_false,
6172 p_count => x_msg_count,
6173 p_data => x_msg_data
6174 );
6175 END Delete_SR_Task;
6176
6177 --------------------------------------------------------------------
6178 -- PROCEDURE
6179 -- Delete_Summary_Task
6180 --
6181 -- PURPOSE
6182 -- To delete Summary tasks for the Maintenace visit.
6183 --------------------------------------------------------------------
6184 PROCEDURE Delete_Summary_Task (
6185 p_api_version IN NUMBER,
6186 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
6187 p_commit IN VARCHAR2 := Fnd_Api.g_false,
6188 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
6189 p_module_type IN VARCHAR2:= 'JSP',
6190 p_visit_task_ID IN NUMBER,
6191 x_return_status OUT NOCOPY VARCHAR2,
6192 x_msg_count OUT NOCOPY NUMBER,
6193 x_msg_data OUT NOCOPY VARCHAR2
6194 )
6195 IS
6196 l_api_version CONSTANT NUMBER := 1.0;
6197 l_api_name CONSTANT VARCHAR2(30) := 'Delete Summary Task';
6198 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
6199
6200 -- local variables defined for the procedure
6201 l_origin_id NUMBER;
6202 l_visit_id NUMBER;
6203 l_mr_id NUMBER;
6204 l_task_id NUMBER;
6205 l_cost_id NUMBER;
6206 l_est_price NUMBER;
6207 l_act_price NUMBER;
6208 l_count NUMBER;
6209 l_msg_count NUMBER;
6210 l_dummy VARCHAR2(1);
6211
6212 l_workorder_rec AHL_PRD_WORKORDER_PVT.PRD_WORKORDER_REC;
6213 l_workoper_tbl AHL_PRD_WORKORDER_PVT.PRD_WORKOPER_TBL;
6214
6215 l_return_status VARCHAR2(1);
6216 l_workorder_present VARCHAR2(1) := 'N';
6217 l_planned_order_flag VARCHAR2(1);
6218 l_task_type VARCHAR2(80);
6219 l_unit_effectivity_id NUMBER;
6220
6221 -- To find all tasks related information
6222 CURSOR c_Task (x_id IN NUMBER) IS
6223 SELECT *
6224 FROM Ahl_Visit_Tasks_VL
6225 WHERE Visit_Task_ID = x_id;
6226 c_task_rec c_Task%ROWTYPE;
6227 l_task_rec c_Task%ROWTYPE;
6228 -- To find visit related information
6229 CURSOR c_Visit (x_id IN NUMBER) IS
6230 SELECT *
6231 FROM Ahl_Visits_VL
6232 WHERE VISIT_ID = x_id;
6233 c_visit_rec c_Visit%ROWTYPE;
6234
6235 -- To find any task which have primary visit task id as deleted task id
6236 --CURSOR c_primary (x_visit_id IN NUMBER, x_task_id IN NUMBER) IS
6237 CURSOR c_primary (x_task_id IN NUMBER) IS
6238 SELECT Visit_Task_Id, Object_Version_Number
6239 FROM Ahl_Visit_Tasks_VL
6240 WHERE --VISIT_ID = x_visit_id AND
6241 PRIMARY_VISIT_TASK_ID = x_task_id
6242 AND STATUS_CODE <> 'DELETED';
6243 c_primary_rec c_primary%ROWTYPE;
6244
6245 -- To find any task links for a deleted task
6246 CURSOR c_links (x_id IN NUMBER) IS
6247 SELECT COUNT(*) FROM Ahl_Task_Links L ,Ahl_Visit_Tasks_B T
6248 WHERE (T.VISIT_TASK_ID = L.VISIT_TASK_ID
6249 OR T.VISIT_TASK_ID = L.PARENT_TASK_ID)
6250 AND T.VISIT_TASK_ID = x_id;
6251
6252 -- To find if WIP job is created for the Visit
6253 CURSOR c_workorders(x_task_id IN NUMBER) IS
6254 SELECT * FROM AHL_WORKORDERS
6255 WHERE VISIT_TASK_ID=x_task_id
6256 AND STATUS_CODE <> '22' AND STATUS_CODE <> '7';
6257 c_workrec c_workorders%ROWTYPE;
6258
6259 -- yazhou 11Nov2005 starts
6260 -- Bug fix#4508169
6261
6262 --Dup-MR ER#6338208 - sowsubra
6263 CURSOR c_all_tasks(c_visit_id NUMBER, c_task_id NUMBER) IS
6264 SELECT visit_task_id
6265 FROM ahl_visit_tasks_b
6266 WHERE visit_id = c_visit_id
6267 AND STATUS_CODE <> 'DELETED'
6268 START WITH visit_task_id = c_task_id
6269 CONNECT BY PRIOR visit_task_id = originating_task_id
6270 order by visit_task_id desc;
6271
6272 -- yazhou 11Nov2005 ends
6273
6274 --Added by mpothuku on 02/03/05
6275 --To check if the unplanned tasks UE is associated with any other visits other than itself before its deletion.
6276 CURSOR check_unplanned_ue_assoc(c_ue_id IN NUMBER) IS
6277 SELECT 'X' from ahl_visit_tasks_b where unit_effectivity_id = c_ue_id and
6278 status_code <> 'DELETED';
6279 BEGIN
6280 IF (l_log_procedure >= l_log_current_level) THEN
6281 fnd_log.string(l_log_procedure,
6282 L_DEBUG_KEY ||'.begin',
6283 'At the start of PL SQL procedure.');
6284 END IF;
6285
6286 --------------------- initialize -----------------------
6287 SAVEPOINT Delete_Summary_Task;
6288 -- Check if API is called in debug mode. If yes, enable debug.
6289
6290 IF Fnd_Api.to_boolean (p_init_msg_list) THEN
6291 Fnd_Msg_Pub.initialize;
6292 END IF;
6293
6294 -- Initialize API return status to success
6295
6296 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
6297
6298 -- Standard call to check for call compatibility.
6299 IF NOT Fnd_Api.compatible_api_call(L_api_version,p_api_version,
6300 l_api_name, G_PKG_NAME)
6301 THEN
6302 RAISE Fnd_Api.g_exc_unexpected_error;
6303 END IF;
6304
6305 ------------------------Start of API Body------------------------------------
6306
6307 IF (l_log_statement >= l_log_current_level)THEN
6308 fnd_log.string(l_log_statement,
6309 L_DEBUG_KEY,
6310 ':Task Id' || p_visit_task_ID);
6311 END IF;
6312
6313 -- To check if the input taskid exists in task entity.
6314 OPEN c_Task(p_Visit_Task_Id);
6315 FETCH c_Task INTO c_task_rec;
6316
6317 IF c_Task%NOTFOUND THEN
6318 CLOSE c_Task;
6319
6320 IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.g_msg_lvl_error)
6321 THEN
6322 Fnd_Message.set_name('AHL', 'AHL_API_RECORD_NOT_FOUND');
6323 Fnd_Msg_Pub.ADD;
6324 END IF;
6325 RAISE Fnd_Api.g_exc_error;
6326
6327 END IF; -- End of if c_task%notfound then check
6328 CLOSE c_Task;
6329
6330 l_origin_id :=c_task_rec.ORIGINATING_TASK_ID;
6331 l_cost_id :=c_task_rec.cost_parent_id;
6332 l_visit_id :=c_task_rec.visit_id;
6333 l_mr_id :=c_task_rec.MR_ID;
6334 l_act_price :=c_task_rec.actual_price;
6335 l_est_price :=c_task_rec.estimated_price;
6336 l_task_id := p_Visit_Task_Id;
6337
6338 IF (l_log_statement >= l_log_current_level)THEN
6339 fnd_log.string(l_log_statement,
6340 L_DEBUG_KEY,
6341 ':Visit Id' || l_visit_id);
6342 END IF;
6343
6344 IF l_origin_id is not null THEN
6345 IF (l_log_statement >= l_log_current_level)THEN
6346 fnd_log.string(l_log_statement,
6347 L_DEBUG_KEY,
6348 'Before Calling Delete_Summary_Task' );
6349 END IF;
6350 Delete_Summary_Task(
6351 p_api_version =>p_api_version,
6352 p_init_msg_list =>Fnd_Api.g_false,
6353 p_commit =>Fnd_Api.g_false,
6354 p_validation_level =>Fnd_Api.g_valid_level_full,
6355 p_module_type =>NULL,
6356 p_Visit_Task_Id =>l_origin_id,
6357 x_return_status =>x_return_status,
6358 x_msg_count =>x_msg_count,
6359 x_msg_data =>x_msg_data);
6360
6361 IF (l_log_statement >= l_log_current_level)THEN
6362 fnd_log.string(l_log_statement,
6363 L_DEBUG_KEY,
6364 'After Calling Delete_Summary_Task, Return Status = ' || x_return_status);
6365 END IF;
6366
6367 IF x_return_status <> Fnd_Api.g_ret_sts_success THEN
6368 RAISE Fnd_Api.G_EXC_ERROR;
6369 END IF;
6370 Else
6371 -- To find the visit related information
6372 OPEN c_Visit(c_task_rec.visit_id);
6373 FETCH c_Visit INTO c_visit_rec;
6374 CLOSE c_Visit;
6375
6376 IF (c_visit_rec.status_code <> 'PLANNING' and c_visit_rec.status_code <> 'PARTIALLY RELEASED')
6377 THEN
6378 Fnd_Message.set_name ('AHL', 'AHL_VWP_PLANNING_OPER');
6379 Fnd_Msg_Pub.ADD;
6380 RAISE fnd_Api.g_exc_error;
6381 END IF;
6382
6383 l_unit_effectivity_id := null;
6384 l_task_type := null;
6385
6386 IF c_task_rec.mr_id IS NOT NULL THEN
6387
6388 -- yazhou 11Nov2005 starts
6389 -- Bug fix#4508169
6390 --Dup-MR ER#6338208 - sowsubra
6391 /*The cursor was fetching all the tasks, which had the same mr id. With this enhacement since
6392 we have multiple MR's associated to the same visit where each of it may either be already
6393 pushed to production or still needs to be pushed. Since the cursor returns all the tasks
6394 regardless whether or not they have been pushed to production, the cursor leads in throwing an
6395 error to the user not allowing them to delete the second occurrence of the MR which is not been
6396 pushed to production. Hence modified the cursor to take visit_id and the MR task_id that is
6397 being deleted.*/
6398
6399 OPEN c_all_tasks(c_task_rec.visit_id,p_visit_task_ID);
6400 -- yazhou 11Nov2005 ends
6401 LOOP
6402 FETCH c_all_tasks INTO l_task_id;
6403 EXIT WHEN c_all_tasks%NOTFOUND;
6404
6405 OPEN c_workorders(l_task_id);
6406 FETCH c_workorders INTO c_workrec;
6407
6408 IF c_workorders%found THEN
6409
6410 IF (l_log_statement >= l_log_current_level)THEN
6411 fnd_log.string(l_log_statement,
6412 L_DEBUG_KEY,
6413 'Check Workorder Status = ' || c_workrec.status_code);
6414 END IF;
6415
6416 IF c_workrec.status_code<>'17'
6417 THEN
6418 -- ADD THIS MESSAGE TO SEED115
6419 Fnd_Message.set_name ('AHL', 'AHL_VWP_TSK_CANNOT_DEL');
6420 FND_MESSAGE.SET_TOKEN('Task_Number',c_task_rec.visit_task_number);
6421 Fnd_Msg_Pub.ADD;
6422 CLOSE c_workorders;
6423 CLOSE c_all_tasks;
6424 RAISE fnd_Api.g_exc_error;
6425 -- IF STATUS IS NOT DRAFT RAISE ERROR.
6426 ELSIF c_workrec.status_code='17' THEN
6427 l_workorder_present :='Y';
6428 l_workorder_rec.workorder_id:=c_workrec.workorder_id;
6429 l_workorder_rec.visit_task_id:=l_task_id;
6430 Get_WorkOrder_Attribs
6431 (
6432 p_x_prd_workorder_rec =>l_workorder_rec
6433 );
6434
6435 l_msg_count := FND_MSG_PUB.count_msg;
6436
6437 IF l_msg_count > 0 THEN
6438 x_msg_count := l_msg_count;
6439 x_return_status := FND_API.G_RET_STS_ERROR;
6440 CLOSE c_workorders;
6441 CLOSE c_all_tasks;
6442 RAISE FND_API.G_EXC_ERROR;
6443 END IF;
6444
6445 l_workorder_rec.wip_entity_id := null;
6446 l_workorder_rec.STATUS_CODE:='22'; --Deleted Status Refer DLD to Verify.
6447
6448 IF (l_log_statement >= l_log_current_level)THEN
6449 fnd_log.string(l_log_statement,
6450 L_DEBUG_KEY,
6451 'Before Calling AHL_PRD_WORKORDER_PVT.update_job ');
6452 END IF;
6453
6454 AHL_PRD_WORKORDER_PVT.update_job
6455 (
6456 p_api_version =>1.0,
6457 p_init_msg_list =>fnd_api.g_false,
6458 p_commit =>fnd_api.g_false,
6459 p_validation_level =>p_validation_level,
6460 p_default =>fnd_api.g_false,
6461 p_module_type =>NULL,
6462 x_return_status =>x_return_status,
6463 x_msg_count =>x_msg_count,
6464 x_msg_data =>x_msg_data,
6465 p_wip_load_flag =>'Y',
6466 p_x_prd_workorder_rec =>l_workorder_rec,
6467 p_x_prd_workoper_tbl =>l_workoper_tbl
6468 );
6469
6470 IF (l_log_statement >= l_log_current_level)THEN
6471 fnd_log.string(l_log_statement,
6472 L_DEBUG_KEY,
6473 'After Calling AHL_PRD_WORKORDER_PVT.update_job, Return Status = ' || x_return_status );
6474 END IF;
6475
6476 l_msg_count := FND_MSG_PUB.count_msg;
6477 IF l_msg_count > 0 OR NVL(x_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
6478 x_msg_count := l_msg_count;
6479 x_return_status := FND_API.G_RET_STS_ERROR;
6480 CLOSE c_workorders;
6481 CLOSE c_all_tasks;
6482 RAISE FND_API.G_EXC_ERROR;
6483 END IF;
6484 END IF; -- End of If c_workrec.status_code<>'17' check
6485 END IF; -- End of if c_workorders%found check
6486 CLOSE c_workorders;
6487
6488 IF (l_log_statement >= l_log_current_level)THEN
6489 fnd_log.string(l_log_statement,
6490 L_DEBUG_KEY,
6491 ' Calling AHL_VWP_RULES_PVT.Update_Cost_Origin_Task');
6492 END IF;
6493
6494 -- To update all tasks which have the deleting task as cost or originating task
6495 AHL_VWP_RULES_PVT.Update_Cost_Origin_Task
6496 (
6497 p_visit_task_id =>l_task_ID,
6498 x_return_status =>x_return_status
6499 );
6500
6501 IF NVL(x_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
6502 x_return_status := FND_API.G_RET_STS_ERROR;
6503 CLOSE c_all_tasks;
6504 RAISE FND_API.G_EXC_ERROR;
6505 END IF;
6506
6507 IF (l_log_statement >= l_log_current_level)THEN
6508 fnd_log.string(l_log_statement,
6509 L_DEBUG_KEY,
6510 'Check for Primary Visit');
6511 END IF;
6512
6513 /* mpothuku changed on 02/08/05 */
6514 --OPEN c_primary (l_visit_id, l_task_id);
6515 IF(c_visit_rec.ASSO_PRIMARY_VISIT_ID is null) THEN
6516 OPEN c_primary (l_task_id);
6517 LOOP
6518 FETCH c_primary INTO c_primary_rec;
6519 EXIT WHEN c_primary%NOTFOUND;
6520 IF c_primary_rec.visit_task_id IS NOT NULL
6521 THEN
6522 UPDATE AHL_VISIT_TASKS_B
6523 SET PRIMARY_VISIT_TASK_ID = NULL,
6524 OBJECT_VERSION_NUMBER = c_primary_rec.object_version_number + 1
6525 WHERE --VISIT_ID = l_visit_id
6526 VISIT_TASK_ID = c_primary_rec.visit_task_id;
6527 END IF;
6528 END LOOP;
6529 CLOSE c_primary;
6530 END IF;
6531
6532 IF c_task_rec.PROJECT_TASK_ID IS NOT NULL THEN
6533
6534 IF (l_log_statement >= l_log_current_level)THEN
6535 fnd_log.string(l_log_statement,
6536 L_DEBUG_KEY,
6537 ' Calling AHL_VWP_PROJ_PROD_PVT.Delete_Task_to_Project API');
6538 END IF;
6539
6540 AHL_VWP_PROJ_PROD_PVT.Delete_Task_to_Project(
6541 /* p_api_version => l_api_version,
6542 p_init_msg_list => p_init_msg_list,
6543 p_commit => Fnd_Api.g_false,
6544 p_validation_level => p_validation_level,
6545 p_module_type => p_module_type,*/
6546 p_visit_task_id => l_task_id,
6547 x_return_status => l_return_status);
6548 /* x_msg_count => x_msg_count,
6549 x_msg_data => x_msg_data);*/
6550
6551 IF (fnd_msg_pub.count_msg > 0) OR NVL(x_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
6552 x_return_status := FND_API.G_RET_STS_ERROR;
6553 CLOSE c_all_tasks;
6554 RAISE FND_API.G_EXC_ERROR;
6555 END IF;
6556
6557 END IF;
6558
6559 IF (l_log_statement >= l_log_current_level)THEN
6560 fnd_log.string(l_log_statement,
6561 L_DEBUG_KEY,
6562 'Before deleting from AHL_TASK_LINKS table');
6563 END IF;
6564
6565 OPEN c_links (l_task_id);
6566 FETCH c_links INTO l_count;
6567 IF l_count > 0 THEN
6568 DELETE Ahl_Task_Links
6569 WHERE VISIT_TASK_ID = l_task_id
6570 OR PARENT_TASK_ID = l_task_id;
6571 END IF;
6572 CLOSE c_links;
6573
6574 IF (l_log_statement >= l_log_current_level)THEN
6575 fnd_log.string(l_log_statement,
6576 L_DEBUG_KEY,
6577 'Before updating task status to DELETED');
6578 END IF;
6579
6580 --IF NVL(l_workorder_present,'X') ='Y' THEN
6581 IF c_task_rec.mr_id IS NOT NULL OR c_task_rec.service_request_id IS NOT NULL THEN
6582 /* Change by mpothuku on 02/03/05 to delete the unit effectivities for Unplanned tasks after removing the association */
6583 IF (l_task_type IS NULL) THEN
6584 OPEN c_task(l_task_id);
6585 FETCH c_task INTO l_task_rec;
6586 CLOSE c_task;
6587 IF(l_task_rec.TASK_TYPE_CODE <> 'SUMMARY') THEN
6588 /* Find out if the UE is associated with any other Active Visits
6589 Ideally if any are found they should be Simulation Visits only */
6590 l_task_type := l_task_rec.TASK_TYPE_CODE;
6591 l_unit_effectivity_id := l_task_rec.UNIT_EFFECTIVITY_ID;
6592 END IF;
6593 END IF;
6594 UPDATE AHL_VISIT_TASKS_B
6595 SET STATUS_CODE='DELETED',UNIT_EFFECTIVITY_ID=NULL,
6596 OBJECT_VERSION_NUMBER=OBJECT_VERSION_NUMBER+1
6597 WHERE VISIT_TASK_ID=l_task_id;
6598 ELSE
6599
6600 IF (l_log_statement >= l_log_current_level)THEN
6601 fnd_log.string(l_log_statement,
6602 L_DEBUG_KEY,
6603 'Before DELETE');
6604 END IF;
6605 DELETE FROM Ahl_Visit_Tasks_TL WHERE Visit_Task_ID = l_task_id;
6606 IF (SQL%NOTFOUND) THEN
6607 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_error)
6608 THEN
6609 Fnd_Message.set_name ('AHL', 'AHL_API_RECORD_NOT_FOUND');
6610 Fnd_Msg_Pub.ADD;
6611 END IF;
6612 CLOSE c_all_tasks;
6613 RAISE Fnd_Api.g_exc_error;
6614 END IF;
6615
6616 -- Delete task base (AHL_VISIT_TASKS_B) table data
6617 IF (l_log_statement >= l_log_current_level)THEN
6618 fnd_log.string(l_log_statement,
6619 L_DEBUG_KEY,
6620 ':Delete from base task table');
6621 END IF;
6622
6623 DELETE FROM Ahl_Visit_Tasks_B
6624 WHERE Visit_Task_ID = l_task_id;
6625
6626 IF (SQL%NOTFOUND) THEN
6627 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_error)
6628 THEN
6629 Fnd_Message.set_name ('AHL', 'AHL_API_RECORD_NOT_FOUND');
6630 Fnd_Msg_Pub.ADD;
6631 END IF;
6632 CLOSE c_all_tasks;
6633 RAISE Fnd_Api.g_exc_error;
6634 END IF;
6635 END IF;
6636
6637 IF NVL(c_visit_rec.actual_price,0) <> 0
6638 OR NVL(c_visit_rec.estimated_price,0) <> 0
6639 THEN
6640
6641 IF (l_log_statement >= l_log_current_level)THEN
6642 fnd_log.string(l_log_statement,
6643 L_DEBUG_KEY,
6644 'Before updating visit price by deducting task price');
6645 END IF;
6646
6647 l_act_price:= NVL(c_visit_rec.actual_price,0) - NVL(l_act_price,0);
6648 l_est_price:= NVL(c_visit_rec.estimated_price,0) - NVL(l_est_price,0);
6649
6650 UPDATE ahl_visits_b
6651 SET actual_price=l_act_price,
6652 estimated_price=l_est_price,
6653 OBJECT_VERSION_NUMBER=OBJECT_VERSION_NUMBER+1
6654 WHERE visit_id=l_visit_id;
6655 END IF;
6656
6657 END LOOP; -- End of c_all_task Loop
6658 CLOSE c_all_tasks;
6659
6660 --Added by mpothuku on 02/07/05. After the collection of the UE, delete it.
6661 IF(l_task_type = 'UNPLANNED') THEN
6662 OPEN check_unplanned_ue_assoc(l_unit_effectivity_id);
6663 FETCH check_unplanned_ue_assoc INTO l_dummy;
6664 IF (check_unplanned_ue_assoc%NOTFOUND) THEN
6665 CLOSE check_unplanned_ue_assoc;
6666
6667 IF (l_log_statement >= l_log_current_level)THEN
6668 fnd_log.string(l_log_statement,
6669 L_DEBUG_KEY,
6670 'Before DELETE_UNIT_EFFECTIVITY');
6671 END IF;
6672
6673 AHL_UMP_UNPLANNED_PVT.DELETE_UNIT_EFFECTIVITY
6674 (
6675 P_API_VERSION => p_api_version,
6676 p_init_msg_list => FND_API.G_FALSE,
6677 p_commit => FND_API.G_FALSE,
6678
6679 X_RETURN_STATUS => l_return_status,
6680 X_MSG_COUNT => l_msg_count,
6681 X_MSG_DATA => x_msg_data,
6682 P_UNIT_EFFECTIVITY_ID => l_unit_effectivity_id
6683 );
6684 IF (l_log_statement >= l_log_current_level)THEN
6685 fnd_log.string(l_log_statement,
6686 L_DEBUG_KEY,
6687 'After DELETE_UNIT_EFFECTIVITY');
6688 END IF;
6689 IF (l_msg_count > 0) OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
6690 x_return_status := FND_API.G_RET_STS_ERROR;
6691 RAISE FND_API.G_EXC_ERROR;
6692 END IF;
6693 ELSE
6694 CLOSE check_unplanned_ue_assoc;
6695 END IF;
6696 END IF;
6697 ----------TO DELETE SR TASKS-------
6698
6699 ELSIF c_task_rec.mr_id IS NULL AND c_task_rec.unit_effectivity_id is not null
6700 THEN
6701 IF (l_log_statement >= l_log_current_level)THEN
6702 fnd_log.string(l_log_statement,
6703 L_DEBUG_KEY,
6704 'Before Delete_SR_Task');
6705 END IF;
6706 Delete_SR_Task(
6707 p_api_version => p_api_version,
6708 p_init_msg_list => p_init_msg_list,
6709 p_commit => Fnd_Api.g_false,
6710 p_validation_level => p_validation_level,
6711 p_module_type => p_module_type,
6712 p_visit_task_ID => p_visit_task_ID,
6713 x_return_status => x_return_status,
6714 x_msg_count => x_msg_count,
6715 x_msg_data => x_msg_data
6716 );
6717 IF (l_log_statement >= l_log_current_level)THEN
6718 fnd_log.string(l_log_statement,
6719 L_DEBUG_KEY,
6720 'After Delete_SR_Task');
6721 END IF;
6722 IF (fnd_msg_pub.count_msg > 0 ) THEN
6723
6724 IF (l_log_statement >= l_log_current_level)THEN
6725 fnd_log.string(l_log_statement,
6726 L_DEBUG_KEY,
6727 'Error raised in Delete_SR_Task');
6728 END IF;
6729 RAISE Fnd_Api.G_EXC_ERROR;
6730 END IF;
6731
6732 ----------TO DELETE MANUALLY CREATED SUMMARY TASKS-------
6733 ELSIF L_MR_ID IS NULL
6734 THEN
6735
6736 l_visit_id := c_task_rec.visit_id;
6737 l_task_id := p_Visit_Task_Id;
6738
6739 IF (l_log_statement >= l_log_current_level) THEN
6740 fnd_log.string(l_log_statement,
6741 L_DEBUG_KEY,
6742 'Before AHL_VWP_RULES_PVT.Update_Cost_Origin_Task Call');
6743 END IF;
6744
6745 -- To update all tasks which have the deleting task as cost or originating task
6746 AHL_VWP_RULES_PVT.Update_Cost_Origin_Task
6747 (
6748 p_visit_task_id =>l_task_ID,
6749 x_return_status =>x_return_status
6750 );
6751
6752 IF (l_log_statement >= l_log_current_level) THEN
6753 fnd_log.string(l_log_statement,
6754 L_DEBUG_KEY,
6755 'Check for primary Visit');
6756 END IF;
6757 --OPEN c_primary (l_visit_id, l_task_id);
6758 IF (c_visit_rec.ASSO_PRIMARY_VISIT_ID is null) THEN
6759 OPEN c_primary (l_task_id);
6760 LOOP
6761 FETCH c_primary INTO c_primary_rec;
6762 EXIT WHEN c_primary%NOTFOUND;
6763 IF c_primary_rec.visit_task_id IS NOT NULL THEN
6764 UPDATE AHL_VISIT_TASKS_B
6765 SET PRIMARY_VISIT_TASK_ID = NULL,
6766 OBJECT_VERSION_NUMBER = c_primary_rec.object_version_number + 1
6767 WHERE --VISIT_ID = l_visit_id AND
6768 VISIT_TASK_ID = c_primary_rec.visit_task_id;
6769 END IF;
6770 END LOOP;
6771 CLOSE c_primary;
6772 END IF;
6773 IF (l_log_statement >= l_log_current_level) THEN
6774 fnd_log.string(l_log_statement,
6775 L_DEBUG_KEY,
6776 'Before deletion from Ahl_Task_Links table');
6777 END IF;
6778 OPEN c_links (l_task_id);
6779 FETCH c_links INTO l_count;
6780 IF l_count > 0 THEN
6781 DELETE Ahl_Task_Links
6782 WHERE VISIT_TASK_ID = l_task_id
6783 OR PARENT_TASK_ID = l_task_id;
6784 END IF;
6785 CLOSE c_links;
6786
6787 IF c_task_rec.PROJECT_TASK_ID IS NOT NULL
6788 THEN
6789 IF (l_log_statement >= l_log_current_level) THEN
6790 fnd_log.string(l_log_statement,
6791 L_DEBUG_KEY,
6792 ' Calling AHL_VWP_PROJ_PROD_PVT.Delete_Task_to_Project');
6793 END IF;
6794 AHL_VWP_PROJ_PROD_PVT.Delete_Task_to_Project
6795 (
6796 /* p_api_version => l_api_version,
6797 p_init_msg_list => p_init_msg_list,
6798 p_commit => Fnd_Api.g_false,
6799 p_validation_level => p_validation_level,
6800 p_module_type => p_module_type,*/
6801 p_visit_task_id => l_task_id,
6802 x_return_status => l_return_status);
6803 /* x_msg_count => x_msg_count,
6804 x_msg_data => x_msg_data);*/
6805
6806 IF l_return_status <> Fnd_Api.g_ret_sts_success THEN
6807 x_return_status := Fnd_Api.g_ret_sts_error;
6808 RAISE Fnd_Api.G_EXC_ERROR;
6809 END IF;
6810
6811 -- Update Task status to 'DELETED'
6812 UPDATE AHL_VISIT_TASKS_B
6813 SET STATUS_CODE='DELETED',UNIT_EFFECTIVITY_ID=NULL,
6814 OBJECT_VERSION_NUMBER=OBJECT_VERSION_NUMBER+1
6815 WHERE VISIT_TASK_ID=l_task_id;
6816 ELSE
6817
6818 DELETE FROM Ahl_Visit_Tasks_TL
6819 WHERE Visit_Task_ID = l_task_id;
6820
6821 IF (SQL%NOTFOUND) THEN
6822 Fnd_Message.set_name ('AHL', 'AHL_API_RECORD_NOT_FOUND');
6823 Fnd_Msg_Pub.ADD;
6824 RAISE Fnd_Api.g_exc_error;
6825 END IF;
6826
6827 -- Delete task base (AHL_VISIT_TASKS_B) table data
6828 IF (l_log_statement >= l_log_current_level) THEN
6829 fnd_log.string(l_log_statement,
6830 L_DEBUG_KEY,
6831 ':Delete from base task table');
6832 END IF;
6833
6834 DELETE FROM Ahl_Visit_Tasks_B
6835 WHERE Visit_Task_ID = l_task_id;
6836
6837 IF (SQL%NOTFOUND) THEN
6838 Fnd_Message.set_name ('AHL', 'AHL_API_RECORD_NOT_FOUND');
6839 Fnd_Msg_Pub.ADD;
6840 RAISE Fnd_Api.g_exc_error;
6841 END IF;
6842
6843 END IF;
6844
6845 -- Removed call to AHL_LTP_REQST_MATRL_PVT.Process_Planned_Materials
6846 -- for mannually created summary task.
6847
6848 END IF; --End of if c_task_rec.mr_id is not null check
6849 END IF; --l_origin_id is null check
6850
6851 ------------------------End of API Body------------------------------------
6852 IF Fnd_Api.to_boolean (p_commit) THEN
6853 COMMIT;
6854 END IF;
6855
6856 Fnd_Msg_Pub.count_and_get (
6857 p_encoded => Fnd_Api.g_false,
6858 p_count => x_msg_count,
6859 p_data => x_msg_data
6860 );
6861
6862 IF (l_log_procedure >= l_log_current_level) THEN
6863 fnd_log.string(l_log_procedure,
6864 L_DEBUG_KEY ||'.end',
6865 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
6866 END IF;
6867
6868 EXCEPTION
6869 WHEN Fnd_Api.g_exc_error THEN
6870 ROLLBACK TO Delete_Summary_Task;
6871 x_return_status := Fnd_Api.g_ret_sts_error;
6872 Fnd_Msg_Pub.count_and_get (
6873 p_encoded => Fnd_Api.g_false,
6874 p_count => x_msg_count,
6875 p_data => x_msg_data
6876 );
6877 WHEN Fnd_Api.g_exc_unexpected_error THEN
6878 ROLLBACK TO Delete_Summary_Task;
6879 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
6880 Fnd_Msg_Pub.count_and_get (
6881 p_encoded => Fnd_Api.g_false,
6882 p_count => x_msg_count,
6883 p_data => x_msg_data
6884 );
6885 WHEN OTHERS THEN
6886 ROLLBACK TO Delete_Summary_Task;
6887 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
6888 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
6889 THEN
6890 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
6891 END IF;
6892 Fnd_Msg_Pub.count_and_get (
6893 p_encoded => Fnd_Api.g_false,
6894 p_count => x_msg_count,
6895 p_data => x_msg_data
6896 );
6897 END Delete_Summary_Task;
6898
6899 --------------------------------------------------------------------
6900 -- PROCEDURE
6901 -- Search_Task
6902 --
6903 --------------------------------------------------------------------
6904 PROCEDURE Search_Task (
6905 p_api_version IN NUMBER,
6906 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
6907 p_commit IN VARCHAR2 := Fnd_Api.g_false,
6908 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
6909 p_module_type IN VARCHAR2 := 'JSP',
6910 p_visit_id IN NUMBER,
6911
6912 p_x_srch_task_tbl IN OUT NOCOPY Srch_Task_Tbl_Type,
6913 x_return_status OUT NOCOPY VARCHAR2,
6914 x_msg_count OUT NOCOPY NUMBER,
6915 x_msg_data OUT NOCOPY VARCHAR2
6916 )
6917 IS
6918
6919 L_API_VERSION CONSTANT NUMBER := 1.0;
6920 L_API_NAME CONSTANT VARCHAR2(30) := 'Search_Task';
6921 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
6922
6923 -- Local variables defined for the procedure
6924 l_tasks_tbl Srch_Task_Tbl_Type := p_x_srch_task_tbl;
6925 l_task_type_code VARCHAR2(80);
6926 l_msg_count NUMBER;
6927 l_count NUMBER;
6928 x NUMBER:=0;
6929 z NUMBER:=0;
6930
6931 -- To find the task's related visit information
6932 CURSOR c_visit (x_id IN NUMBER) IS
6933 SELECT * FROM AHL_VISITS_VL
6934 WHERE VISIT_ID = x_id;
6935 c_visit_rec c_visit%ROWTYPE;
6936
6937 -- To find task type code, start, end time of a task
6938 --POST 11.5.10 cxcheng change --------------
6939 CURSOR get_task_times_csr (p_task_id IN NUMBER) IS
6940 SELECT task_type_code, start_date_time, end_date_time
6941 FROM AHL_VISIT_TASKS_B
6942 WHERE VISIT_TASK_ID = p_task_id;
6943
6944 BEGIN
6945 --------------------- initialize -----------------------
6946 SAVEPOINT Search_Task;
6947
6948 IF (l_log_procedure >= l_log_current_level) THEN
6949 fnd_log.string(l_log_procedure,
6950 L_DEBUG_KEY ||'.begin',
6951 'At the start of PL SQL procedure.');
6952 END IF;
6953
6954 -- Initialize message list if p_init_msg_list is set to TRUE.
6955 IF Fnd_Api.to_boolean(p_init_msg_list)
6956 THEN
6957 Fnd_Msg_Pub.initialize;
6958 END IF;
6959
6960 -- Initialize API return status to success
6961 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
6962
6963 -- Standard call to check for call compatibility.
6964 IF NOT Fnd_Api.COMPATIBLE_API_CALL(l_api_version,
6965 p_api_version,
6966 l_api_name,G_PKG_NAME)
6967 THEN
6968 RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
6969 END IF;
6970 ---------------------------Start of Body-------------------------------------
6971 IF (l_log_statement >= l_log_current_level) THEN
6972 fnd_log.string(l_log_statement,
6973 L_DEBUG_KEY,
6974 ': Visit Id ' || p_visit_id);
6975 END IF;
6976 OPEN c_visit (p_visit_id);
6977 FETCH c_visit INTO c_visit_rec;
6978 CLOSE c_visit;
6979
6980 IF (c_visit_rec.START_DATE_TIME IS NOT NULL
6981 AND c_visit_rec.START_DATE_TIME <> Fnd_Api.G_MISS_DATE
6982 AND c_visit_rec.DEPARTMENT_ID IS NOT NULL
6983 AND c_visit_rec.DEPARTMENT_ID <> FND_API.G_MISS_NUM) THEN
6984
6985 IF l_tasks_tbl.COUNT > 0 THEN
6986 x := l_tasks_tbl.FIRST;
6987 LOOP
6988 OPEN get_task_times_csr(l_tasks_tbl(x).TASK_ID);
6989 FETCH get_task_times_csr INTO l_task_type_code,
6990 l_tasks_tbl(x).TASK_START_TIME,
6991 l_tasks_tbl(x).TASK_END_TIME ;
6992 CLOSE get_task_times_csr;
6993
6994 EXIT WHEN x = l_tasks_tbl.LAST ;
6995 x := l_tasks_tbl.NEXT(x);
6996 END LOOP;
6997 END IF;
6998 p_x_srch_task_tbl := l_tasks_tbl;
6999 ELSE
7000 IF (l_log_statement >= l_log_current_level) THEN
7001 fnd_log.string(l_log_statement,
7002 L_DEBUG_KEY,
7003 ': Either Visit Start End Time Missing' || c_visit_rec.START_DATE_TIME ||
7004 ': Or Visit Department Missing' || c_visit_rec.DEPARTMENT_ID ||
7005 ': Or Department Shift for a Dept Missing' || l_count);
7006 END IF;
7007 IF l_tasks_tbl.COUNT > 0 THEN
7008 z := l_tasks_tbl.FIRST;
7009 LOOP
7010 l_tasks_tbl(z).TASK_START_TIME := NULL;
7011 l_tasks_tbl(z).TASK_END_TIME := NULL;
7012 EXIT WHEN z = l_tasks_tbl.LAST ;
7013 z :=l_tasks_tbl.NEXT(z);
7014 END LOOP;
7015 END IF;
7016 p_x_srch_task_tbl := l_tasks_tbl;
7017 END IF;
7018
7019 IF l_tasks_tbl.COUNT > 0 THEN
7020 X := l_tasks_tbl.FIRST;
7021 LOOP
7022 IF (l_log_statement >= l_log_current_level) THEN
7023 fnd_log.string(l_log_statement,
7024 L_DEBUG_KEY,
7025 'Value of Task Id : ' || l_tasks_tbl(X).Task_Id ||
7026 'Value of Start Date : ' || TO_CHAR(l_tasks_tbl(X).TASK_START_TIME, 'MM/DD/YY HH24:MI:SS') ||
7027 'Value of End Date : ' || TO_CHAR(l_tasks_tbl(X).TASK_END_TIME, 'MM/DD/YY HH24:MI:SS'));
7028 END IF;
7029
7030 EXIT WHEN X = l_tasks_tbl.LAST ;
7031 X := l_tasks_tbl.NEXT(X);
7032 END LOOP;
7033 END IF;
7034
7035 ---------------------------End of Body---------------------------------------
7036 --Standard check to count messages
7037 l_msg_count := Fnd_Msg_Pub.count_msg;
7038
7039 IF l_msg_count > 0 THEN
7040 x_msg_count := l_msg_count;
7041 x_return_status := Fnd_Api.G_RET_STS_ERROR;
7042 RAISE Fnd_Api.G_EXC_ERROR;
7043 END IF;
7044
7045 --Standard check for commit
7046 IF Fnd_Api.TO_BOOLEAN(p_commit) THEN
7047 COMMIT;
7048 END IF;
7049
7050 IF (l_log_procedure >= l_log_current_level) THEN
7051 fnd_log.string(l_log_procedure,
7052 L_DEBUG_KEY ||'.end',
7053 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
7054 END IF;
7055
7056 EXCEPTION
7057 WHEN Fnd_Api.g_exc_error THEN
7058 ROLLBACK TO Search_Task;
7059 x_return_status := Fnd_Api.g_ret_sts_error;
7060 Fnd_Msg_Pub.count_and_get(
7061 p_encoded => Fnd_Api.g_false,
7062 p_count => x_msg_count,
7063 p_data => x_msg_data
7064 );
7065 WHEN Fnd_Api.g_exc_unexpected_error THEN
7066 ROLLBACK TO Search_Task;
7067 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
7068 Fnd_Msg_Pub.count_and_get (
7069 p_encoded => Fnd_Api.g_false,
7070 p_count => x_msg_count,
7071 p_data => x_msg_data
7072 );
7073 WHEN OTHERS THEN
7074 ROLLBACK TO Search_Task;
7075 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
7076 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
7077 THEN
7078 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
7079 END IF;
7080 Fnd_Msg_Pub.count_and_get (
7081 p_encoded => Fnd_Api.g_false,
7082 p_count => x_msg_count,
7083 p_data => x_msg_data
7084 );
7085 END Search_Task;
7086
7087 --------------------------------------------------------------------
7088 -- PROCEDURE
7089 -- Validate_Visit_Task
7090 --
7091 -- PURPOSE
7092 --
7093 --------------------------------------------------------------------
7094 PROCEDURE Validate_Visit_Task (
7095 p_api_version IN NUMBER,
7096 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
7097 p_commit IN VARCHAR2 := Fnd_Api.g_false,
7098 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
7099 p_task_rec IN AHL_VWP_RULES_PVT.Task_Rec_Type,
7100
7101 x_return_status OUT NOCOPY VARCHAR2,
7102 x_msg_count OUT NOCOPY NUMBER,
7103 x_msg_data OUT NOCOPY VARCHAR2
7104 )
7105 IS
7106 L_API_VERSION CONSTANT NUMBER := 1.0;
7107 L_API_NAME CONSTANT VARCHAR2(30) := 'Validate_Visit_Task';
7108 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
7109
7110 l_return_status VARCHAR2(1);
7111 BEGIN
7112 --------------------- initialize -----------------------
7113
7114 IF (l_log_procedure >= l_log_current_level) THEN
7115 fnd_log.string(l_log_procedure,
7116 L_DEBUG_KEY ||'.begin',
7117 'At the start of PL SQL procedure.');
7118 END IF;
7119
7120 IF Fnd_Api.to_boolean (p_init_msg_list) THEN
7121 Fnd_Msg_Pub.initialize;
7122 END IF;
7123
7124 IF NOT Fnd_Api.compatible_api_call (
7125 l_api_version,
7126 p_api_version,
7127 l_api_name,
7128 G_PKG_NAME
7129 ) THEN
7130 RAISE Fnd_Api.g_exc_unexpected_error;
7131 END IF;
7132 x_return_status := Fnd_Api.g_ret_sts_success;
7133
7134 ---------------------- validate ------------------------
7135
7136 IF (l_log_statement >= l_log_current_level) THEN
7137 fnd_log.string(l_log_statement,
7138 L_DEBUG_KEY,
7139 ':Check items1');
7140 END IF;
7141
7142 IF p_validation_level >= Jtf_Plsql_Api.g_valid_level_item THEN
7143 Check_Task_Items (
7144 p_task_rec => p_task_rec,
7145 p_validation_mode => Jtf_Plsql_Api.g_create,
7146 x_return_status => l_return_status
7147 );
7148 IF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
7149 RAISE Fnd_Api.g_exc_unexpected_error;
7150 ELSIF l_return_status = Fnd_Api.g_ret_sts_error THEN
7151 RAISE Fnd_Api.g_exc_error;
7152 END IF;
7153 END IF;
7154
7155 IF (l_log_statement >= l_log_current_level) THEN
7156 fnd_log.string(l_log_statement,
7157 L_DEBUG_KEY,
7158 ':Check items2');
7159 END IF;
7160
7161 -------------------- finish --------------------------
7162 -- Standard call to get message count and if count is 1, get message info
7163 Fnd_Msg_Pub.count_and_get (
7164 p_encoded => Fnd_Api.g_false,
7165 p_count => x_msg_count,
7166 p_data => x_msg_data
7167 );
7168
7169 IF (l_log_procedure >= l_log_current_level) THEN
7170 fnd_log.string(l_log_procedure,
7171 L_DEBUG_KEY ||'.end',
7172 'At the end of PL SQL procedure. Return Status = ' || l_return_status);
7173 END IF;
7174 EXCEPTION
7175 WHEN Fnd_Api.g_exc_error THEN
7176 x_return_status := Fnd_Api.g_ret_sts_error;
7177 Fnd_Msg_Pub.count_and_get (
7178 p_encoded => Fnd_Api.g_false,
7179 p_count => x_msg_count,
7180 p_data => x_msg_data
7181 );
7182 WHEN Fnd_Api.g_exc_unexpected_error THEN
7183 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
7184 Fnd_Msg_Pub.count_and_get (
7185 p_encoded => Fnd_Api.g_false,
7186 p_count => x_msg_count,
7187 p_data => x_msg_data
7188 );
7189 WHEN OTHERS THEN
7190 x_return_status := Fnd_Api.g_ret_sts_unexp_error;
7191 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
7192 THEN
7193 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
7194 END IF;
7195 Fnd_Msg_Pub.count_and_get (
7196 p_encoded => Fnd_Api.g_false,
7197 p_count => x_msg_count,
7198 p_data => x_msg_data
7199 );
7200 END Validate_Visit_Task;
7201
7202 ---------------------------------------------------------------------
7203 -- PROCEDURE
7204 -- Check_Task_Items
7205 --
7206 -- PURPOSE
7207 --
7208 ---------------------------------------------------------------------
7209 PROCEDURE Check_Task_Items (
7210 p_task_rec IN AHL_VWP_RULES_PVT.Task_Rec_Type,
7211 p_validation_mode IN VARCHAR2 := Jtf_Plsql_Api.g_create,
7212
7213 x_return_status OUT NOCOPY VARCHAR2
7214 )
7215 IS
7216 L_API_NAME CONSTANT VARCHAR2(30) := 'Check_Task_Items';
7217 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
7218 BEGIN
7219 --
7220 IF (l_log_procedure >= l_log_current_level) THEN
7221 fnd_log.string(l_log_procedure,
7222 L_DEBUG_KEY ||'.begin',
7223 'At the start of PL SQL procedure.');
7224 END IF;
7225 x_return_status := Fnd_Api.g_ret_sts_success;
7226 -- Validate required items.
7227
7228 IF (l_log_statement >= l_log_current_level) THEN
7229 fnd_log.string(l_log_statement,
7230 L_DEBUG_KEY,
7231 'Check_Task_Items:Before Check_Visit_Task_Req_Items');
7232 END IF;
7233
7234 Check_Visit_Task_Req_Items (
7235 p_task_rec => p_task_rec,
7236 /* Added by rnahata for Issue 105 - serial number validation should be performed only at
7237 the time of creation of tasks as once created serial number cannot be edited.*/
7238 p_validation_mode => p_validation_mode,
7239 x_return_status => x_return_status
7240 );
7241 IF x_return_status <> Fnd_Api.g_ret_sts_success THEN
7242 RETURN;
7243 END IF;
7244
7245 --
7246 -- Validate uniqueness.
7247
7248 IF (l_log_statement >= l_log_current_level) THEN
7249 fnd_log.string(l_log_statement,
7250 L_DEBUG_KEY,
7251 'Check_Task_Items:Before Check_Visit_Task_UK_Items');
7252 END IF;
7253 Check_Visit_Task_UK_Items (
7254 p_task_rec => p_task_rec,
7255 p_validation_mode => p_validation_mode,
7256 x_return_status => x_return_status
7257 );
7258
7259 IF (l_log_procedure >= l_log_current_level) THEN
7260 fnd_log.string(l_log_procedure,
7261 L_DEBUG_KEY ||'.begin',
7262 'At the end of PL SQL procedure. Return Status ' ||x_return_status);
7263 END IF;
7264
7265 END Check_Task_Items;
7266
7267 ---------------------------------------------------------------------
7268 -- PROCEDURE
7269 -- Complete_Visit_Task_Rec
7270 --
7271 -- PURPOSE
7272 --
7273 ---------------------------------------------------------------------
7274 /*
7275 PROCEDURE Complete_Visit_Task_Rec (
7276 p_task_rec IN AHL_VWP_RULES_PVT.Task_Rec_Type,
7277 x_complete_rec OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type
7278 )
7279 IS
7280 CURSOR c_Visit_Task IS
7281 SELECT *
7282 FROM Ahl_Visit_Tasks_vl
7283 WHERE Visit_Task_ID = p_task_rec.Visit_Task_ID;
7284 --
7285 -- This is the only exception for using %ROWTYPE.
7286 -- We are selecting from the VL view, which may
7287 -- have some denormalized columns as compared to
7288 -- the base tables.
7289 l_task_rec c_Visit_Task%ROWTYPE;
7290 BEGIN
7291 x_complete_rec := p_task_rec;
7292 OPEN c_Visit_Task;
7293 FETCH c_Visit_Task INTO l_task_rec;
7294 IF c_Visit_Task%NOTFOUND THEN
7295 CLOSE c_Visit_Task;
7296 IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.g_msg_lvl_error) THEN
7297 Fnd_Message.set_name('AHL', 'AHL_API_RECORD_NOT_FOUND');
7298 Fnd_Msg_Pub.ADD;
7299 END IF;
7300 RAISE Fnd_Api.g_exc_error;
7301 END IF;
7302 CLOSE c_Visit_Task;
7303
7304 END Complete_Visit_Task_Rec;
7305 */
7306
7307 ---------------------------------------------------------------------
7308 -- PROCEDURE
7309 -- Check_Visit_Task_Req_Items
7310 --
7311 -- PURPOSE
7312 --
7313 ---------------------------------------------------------------------
7314 PROCEDURE Check_Visit_Task_Req_Items (
7315 p_task_rec IN AHL_VWP_RULES_PVT.Task_Rec_Type,
7316 -- Added by rnahata for Issue 105 - validation mode parameter
7317 p_validation_mode IN VARCHAR2 := Jtf_Plsql_Api.g_create,
7318 x_return_status OUT NOCOPY VARCHAR2
7319 )
7320 IS
7321 L_API_NAME CONSTANT VARCHAR2(30) := 'Check_Visit_Task_Req_Items';
7322 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
7323
7324 -- Added by rnahata for Issue 105
7325 -- To fetch if the instance is serial controlled/non-serial controlled.
7326 CURSOR c_check_inst_nonserial(c_instance_id IN NUMBER) IS
7327 SELECT 'X'
7328 FROM mtl_system_items_b mtl, csi_item_instances csi
7329 WHERE csi.instance_id = c_instance_id
7330 AND csi.inventory_item_id = mtl.inventory_item_id
7331 AND NVL(csi.inv_organization_id, csi.inv_master_organization_id) = mtl.organization_id
7332 AND mtl.serial_number_control_code = 1;
7333
7334 l_serial_ctrl VARCHAR2(2) := NULL;
7335 BEGIN
7336
7337 IF (l_log_procedure >= l_log_current_level) THEN
7338 fnd_log.string(l_log_procedure,
7339 L_DEBUG_KEY ||'.begin',
7340 'At the start of PL SQL procedure.');
7341 END IF;
7342
7343 x_return_status := Fnd_Api.g_ret_sts_success;
7344
7345 -- TASK NAME ==== NAME
7346 IF (p_task_rec.VISIT_TASK_NAME IS NULL OR p_Task_rec.VISIT_TASK_NAME = Fnd_Api.G_MISS_CHAR) THEN
7347 Fnd_Message.set_name ('AHL', 'AHL_VWP_NAME_MISSING');
7348 Fnd_Msg_Pub.ADD;
7349 x_return_status := Fnd_Api.g_ret_sts_error;
7350 END IF;
7351
7352 IF UPPER(p_task_rec.TASK_TYPE_CODE) = 'UNASSOCIATED' THEN
7353
7354 -- ITEM ==== INVENTORY_ITEM_ID
7355 IF (p_Task_rec.item_name IS NULL OR p_Task_rec.item_name = Fnd_Api.G_MISS_CHAR ) THEN
7356 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_error) THEN
7357 Fnd_Message.set_name ('AHL', 'AHL_VWP_ITEM_MISSING');
7358 Fnd_Msg_Pub.ADD;
7359 END IF;
7360 x_return_status := Fnd_Api.g_ret_sts_error;
7361 END IF;
7362
7363 -- TASK DURATION ==== DURATION
7364 IF (p_task_rec.DURATION IS NULL OR p_Task_rec.DURATION = Fnd_Api.G_MISS_NUM) THEN
7365 Fnd_Message.set_name ('AHL', 'AHL_VWP_DURATION_MISSING');
7366 Fnd_Msg_Pub.ADD;
7367 x_return_status := Fnd_Api.g_ret_sts_error;
7368 END IF;
7369
7370 IF (p_task_rec.DURATION IS NOT NULL AND p_Task_rec.DURATION <> Fnd_Api.G_MISS_NUM) THEN
7371 IF p_task_rec.DURATION < 0 OR FLOOR(p_task_rec.DURATION) <> p_task_rec.DURATION THEN
7372 Fnd_Message.set_name ('AHL', 'AHL_VWP_ONLY_POSITIVE_VALUE');
7373 Fnd_Msg_Pub.ADD;
7374 x_return_status := Fnd_Api.g_ret_sts_error;
7375 END IF;
7376 END IF;
7377
7378 IF ( p_validation_mode = Jtf_Plsql_Api.g_create ) THEN
7379 -- Begin changes by rnahata for Issue 105
7380 -- Check if the serial number is present only for serialised instances.
7381 OPEN c_check_inst_nonserial (p_task_rec.instance_id);
7382 FETCH c_check_inst_nonserial INTO l_serial_ctrl;
7383 IF c_check_inst_nonserial%NOTFOUND THEN
7384 IF (p_Task_rec.SERIAL_NUMBER IS NULL OR p_Task_rec.SERIAL_NUMBER = Fnd_Api.G_MISS_CHAR) THEN
7385 Fnd_Message.set_name ('AHL', 'AHL_VWP_SERIAL_MISSING');
7386 Fnd_Msg_Pub.ADD;
7387 x_return_status := Fnd_Api.g_ret_sts_error;
7388 END IF;
7389 ELSE
7390 IF (p_Task_rec.SERIAL_NUMBER IS NOT NULL) THEN
7391 Fnd_Message.set_name ('AHL', 'AHL_VWP_SERIAL_NOT_NEEDED');
7392 Fnd_Msg_Pub.ADD;
7393 x_return_status := Fnd_Api.g_ret_sts_error;
7394 END IF;
7395 END IF;
7396 CLOSE c_check_inst_nonserial;
7397 -- End changes by rnahata for Issue 105
7398 END IF;
7399
7400 END IF;
7401
7402 IF (p_task_rec.START_FROM_HOUR IS NOT NULL AND p_Task_rec.START_FROM_HOUR <> Fnd_Api.G_MISS_NUM) THEN
7403 IF p_task_rec.START_FROM_HOUR < 0 OR FLOOR(p_task_rec.START_FROM_HOUR) <> p_task_rec.START_FROM_HOUR THEN
7404 Fnd_Message.set_name ('AHL', 'AHL_VWP_ONLY_POSITIVE_VALUE');
7405 Fnd_Msg_Pub.ADD;
7406 x_return_status := Fnd_Api.g_ret_sts_error;
7407 END IF;
7408 END IF;
7409
7410 IF (l_log_procedure >= l_log_current_level) THEN
7411 fnd_log.string(l_log_procedure,
7412 L_DEBUG_KEY ||'.end',
7413 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
7414 END IF;
7415 END Check_Visit_Task_Req_Items;
7416
7417 ---------------------------------------------------------------------
7418 -- PROCEDURE
7419 -- Check_Visit_Task_UK_Items
7420 --
7421 -- PURPOSE
7422 --
7423 ---------------------------------------------------------------------
7424 PROCEDURE Check_Visit_Task_UK_Items (
7425 p_task_rec IN AHL_VWP_RULES_PVT.Task_Rec_Type,
7426 p_validation_mode IN VARCHAR2 := Jtf_Plsql_Api.g_create,
7427 x_return_status OUT NOCOPY VARCHAR2
7428 )
7429 IS
7430 l_valid_flag VARCHAR2(1);
7431 L_API_NAME CONSTANT VARCHAR2(30) := 'Check_Visit_Task_UK_Items';
7432 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
7433 BEGIN
7434 x_return_status := Fnd_Api.g_ret_sts_success;
7435
7436 IF (l_log_procedure >= l_log_current_level) THEN
7437 fnd_log.string(l_log_procedure,
7438 L_DEBUG_KEY ||'.begin',
7439 'At the start of PL SQL procedure.');
7440 END IF;
7441 --
7442 -- For Task, when ID is passed in, we need to
7443 -- check if this ID is unique.
7444
7445 IF p_validation_mode = Jtf_Plsql_Api.g_create
7446 AND p_task_rec.Visit_Task_ID IS NOT NULL
7447 THEN
7448
7449 IF (l_log_statement >= l_log_current_level) THEN
7450 fnd_log.string(l_log_statement,
7451 L_DEBUG_KEY,
7452 ': = Check_Visit_Task_UK_Items Uniqueness Of ID');
7453 END IF;
7454
7455 -- FOR CREATION
7456 IF Ahl_Utility_Pvt.check_uniqueness(
7457 'Ahl_Visit_Tasks_vl',
7458 'Visit_Task_ID = ' || p_task_rec.Visit_Task_ID
7459 ) = Fnd_Api.g_false
7460 THEN
7461 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_error) THEN
7462 Fnd_Message.set_name ('AHL', 'AHL_VWP_DUPLICATE_TASK_ID');
7463 Fnd_Msg_Pub.ADD;
7464 END IF;
7465 x_return_status := Fnd_Api.g_ret_sts_error;
7466 RETURN;
7467 END IF;
7468 END IF;
7469
7470 IF (l_log_procedure >= l_log_current_level) THEN
7471 fnd_log.string(l_log_procedure,
7472 L_DEBUG_KEY ||'.end',
7473 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
7474 END IF;
7475 END Check_Visit_Task_UK_Items;
7476
7477 --------------------------------------------------------------------
7478 -- PROCEDURE
7479 -- Create_PUP_Tasks
7480 -- PURPOSE
7481 -- To create all types of tasks i.e Unassociated/Summary/Unplanned/Planned
7482 --------------------------------------------------------------------
7483 PROCEDURE Create_PUP_Tasks (
7484 p_api_version IN NUMBER,
7485 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
7486 p_commit IN VARCHAR2 := Fnd_Api.g_false,
7487 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
7488 p_module_type IN VARCHAR2 := 'JSP',
7489 p_x_task_tbl IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Tbl_Type,
7490 x_return_status OUT NOCOPY VARCHAR2,
7491 x_msg_count OUT NOCOPY NUMBER,
7492 x_msg_data OUT NOCOPY VARCHAR2
7493 )
7494 IS
7495 -- Define local variables
7496 L_API_VERSION CONSTANT NUMBER := 1.0;
7497 L_API_NAME CONSTANT VARCHAR2(30) := 'CREATE PUP TASKS';
7498 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
7499 l_msg_count NUMBER;
7500 l_msg_data VARCHAR2(2000);
7501 l_return_status VARCHAR2(1);
7502 l_task_tbl AHL_VWP_RULES_PVT.Task_Tbl_Type := p_x_task_tbl;
7503 -- Begin changes by rnahata for Issue 105
7504 l_instance_qty NUMBER := 0;
7505 l_instance_id NUMBER := 0;
7506 -- End changes by rnahata for Issue 105
7507
7508 -- To find visit related information
7509 CURSOR c_visit(x_id IN NUMBER) IS
7510 SELECT * FROM AHL_VISITS_VL
7511 WHERE VISIT_ID = x_id;
7512 c_visit_rec c_visit%ROWTYPE;
7513
7514 -- Begin changes by rnahata for Issue 105
7515 --To fetch instance quantity
7516 CURSOR c_get_instance_qty(p_instance_id IN NUMBER) IS
7517 SELECT quantity FROM csi_item_instances csii
7518 WHERE instance_id = p_instance_id;
7519
7520 --To fetch instance id for 'Planned' MRs
7521 CURSOR c_get_instance_id (p_unit_effectivity IN NUMBER) IS
7522 SELECT csi_item_instance_id FROM AHL_UNIT_EFFECTIVITIES_VL
7523 WHERE UNIT_EFFECTIVITY_ID = p_unit_effectivity;
7524 -- End changes by rnahata for Issue 105
7525
7526 BEGIN
7527 --------------------- initialize -----------------------
7528 SAVEPOINT Create_PUP_Tasks;
7529
7530 IF (l_log_procedure >= l_log_current_level) THEN
7531 fnd_log.string(l_log_procedure,
7532 L_DEBUG_KEY ||'.begin',
7533 'At the start of PL SQL procedure.');
7534 END IF;
7535
7536 -- Initialize message list if p_init_msg_list is set to TRUE.
7537 IF Fnd_Api.to_boolean(p_init_msg_list)
7538 THEN
7539 Fnd_Msg_Pub.initialize;
7540 END IF;
7541
7542 -- Initialize API return status to success
7543 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
7544
7545 -- Standard call to check for call compatibility.
7546 IF NOT Fnd_Api.COMPATIBLE_API_CALL(l_api_version,
7547 p_api_version,
7548 l_api_name,G_PKG_NAME)
7549 THEN
7550 RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
7551 END IF;
7552
7553 --------------------Start of API Body-----------------------------------
7554 -------------------Cursor values------------------------------------
7555 -- if table has no data then return as there is nothing to input
7556 IF l_task_tbl.count = 0
7557 THEN
7558 RETURN;
7559 END IF;
7560
7561 OPEN c_visit(l_task_tbl(1).visit_id);
7562 FETCH c_visit INTO c_visit_rec;
7563 CLOSE c_visit;
7564
7565 IF (l_log_statement >= l_log_current_level) THEN
7566 fnd_log.string(l_log_statement,
7567 L_DEBUG_KEY,
7568 ': Visit Id = ' || c_visit_rec.visit_id ||
7569 ': Status Code ' || c_visit_rec.status_code );
7570 END IF;
7571
7572 IF c_visit_rec.status_code IN ('CLOSED','CANCELLED') THEN
7573 Fnd_Message.SET_NAME('AHL','AHL_VWP_NOT_USE_VISIT');
7574 Fnd_Msg_Pub.ADD;
7575 RAISE Fnd_Api.G_EXC_ERROR;
7576 ELSE
7577 FOR i IN p_x_task_tbl.first .. p_x_task_tbl.last
7578 LOOP
7579 IF l_task_tbl(i).task_type_code = 'PLANNED' THEN
7580 -- Begin changes by rnahata for Issue 105
7581 OPEN c_get_instance_id (p_x_task_tbl(i).unit_effectivity_id);
7582 FETCH c_get_instance_id INTO l_instance_id;
7583 CLOSE c_get_instance_id;
7584
7585 OPEN c_get_instance_qty(l_instance_id);
7586 FETCH c_get_instance_qty INTO l_instance_qty;
7587 CLOSE c_get_instance_qty;
7588
7589 IF (l_task_tbl(i).QUANTITY is null) THEN
7590 l_task_tbl(i).QUANTITY := l_instance_qty;
7591 ELSE
7592 IF (l_task_tbl(i).QUANTITY > l_instance_qty ) THEN
7593 Fnd_Message.SET_NAME('AHL','AHL_INCORRECT_TSK_QTY');
7594 Fnd_Msg_Pub.ADD;
7595 RAISE Fnd_Api.G_EXC_ERROR;
7596 END IF;
7597 END IF;
7598 -- End changes by rnahata for Issue 105
7599
7600 -- Call AHL_VWP_PLAN_TASKS_PVT
7601 IF (l_log_statement >= l_log_current_level) THEN
7602 fnd_log.string(l_log_statement,
7603 L_DEBUG_KEY,
7604 'Before calling Create_Planned_Task, TASK TYPE = ' ||
7605 l_task_tbl(i).task_type_code);
7606 END IF;
7607
7608 AHL_VWP_PLAN_TASKS_PVT.Create_Planned_Task (
7609 p_api_version => l_api_version,
7610 p_init_msg_list => p_init_msg_list,
7611 p_commit => FND_API.G_FALSE,
7612 p_validation_level => p_validation_level,
7613 p_module_type => p_module_type,
7614 p_x_task_rec => l_task_tbl(i),
7615 x_return_status => l_return_status,
7616 x_msg_count => l_msg_count,
7617 x_msg_data => l_msg_data
7618 );
7619
7620 IF (l_log_statement >= l_log_current_level) THEN
7621 fnd_log.string(l_log_statement,
7622 L_DEBUG_KEY,
7623 'After calling Create_Planned_Task, Return Status = ' ||
7624 l_return_status);
7625 END IF;
7626 l_msg_count := Fnd_Msg_Pub.count_msg;
7627
7628 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
7629 x_msg_count := l_msg_count;
7630 x_return_status := Fnd_Api.G_RET_STS_ERROR;
7631 RAISE Fnd_Api.G_EXC_ERROR;
7632 END IF;
7633
7634 ELSIF l_task_tbl(i).task_type_code = 'UNPLANNED' THEN
7635 -- Begin changes by rnahata for Issue 105
7636 OPEN c_get_instance_qty(l_task_tbl(i).instance_id);
7637 FETCH c_get_instance_qty INTO l_instance_qty;
7638 CLOSE c_get_instance_qty;
7639
7640 IF (l_task_tbl(i).QUANTITY is null) THEN
7641 Fnd_Message.SET_NAME('AHL','AHL_TASK_QTY_NULL');
7642 Fnd_Msg_Pub.ADD;
7643 RAISE Fnd_Api.G_EXC_ERROR;
7644 END IF;
7645
7646 IF (l_task_tbl(i).QUANTITY <= 0 ) THEN
7647 Fnd_Message.SET_NAME('AHL','AHL_POSITIVE_TSK_QTY');
7648 Fnd_Msg_Pub.ADD;
7649 RAISE Fnd_Api.G_EXC_ERROR;
7650 END IF;
7651
7652 IF (l_task_tbl(i).QUANTITY > l_instance_qty ) THEN
7653 Fnd_Message.SET_NAME('AHL','AHL_INCORRECT_TSK_QTY');
7654 Fnd_Msg_Pub.ADD;
7655 RAISE Fnd_Api.G_EXC_ERROR;
7656 END IF;
7657 -- End changes by rnahata for Issue 105
7658
7659 -- Call AHL_VWP_UNPLAN_TASKS_PVT
7660 IF (l_log_statement >= l_log_current_level) THEN
7661 fnd_log.string(l_log_statement,
7662 L_DEBUG_KEY,
7663 'Before Calling Create_Unplanned_Task, TASK TYPE = ' || l_task_tbl(i).task_type_code);
7664 END IF;
7665
7666 AHL_VWP_UNPLAN_TASKS_PVT.Create_Unplanned_Task (
7667 p_api_version => l_api_version,
7668 p_init_msg_list => p_init_msg_list,
7669 p_commit => FND_API.G_FALSE,
7670 p_validation_level => p_validation_level,
7671 p_module_type => p_module_type,
7672 p_x_task_rec => l_task_tbl(i),
7673 x_return_status => l_return_status,
7674 x_msg_count => l_msg_count,
7675 x_msg_data => l_msg_data
7676 );
7677
7678 IF (l_log_statement >= l_log_current_level) THEN
7679 fnd_log.string(l_log_statement,
7680 L_DEBUG_KEY,
7681 'After Calling Create_Unplanned_Task, Return Status = ' || l_return_status );
7682 END IF;
7683
7684 l_msg_count := Fnd_Msg_Pub.count_msg;
7685
7686 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
7687 x_msg_count := l_msg_count;
7688 x_return_status := Fnd_Api.G_RET_STS_ERROR;
7689 RAISE Fnd_Api.G_EXC_ERROR;
7690 END IF;
7691 END IF;
7692 END LOOP;
7693 END IF;
7694
7695 IF (l_log_statement >= l_log_current_level) THEN
7696 fnd_log.string(l_log_statement,
7697 L_DEBUG_KEY,
7698 'Before Calling AHL_VWP_TIMES_PVT.Calculate_Task_Times');
7699 END IF;
7700 AHL_VWP_TIMES_PVT.Calculate_Task_Times(p_api_version => 1.0,
7701 p_init_msg_list => Fnd_Api.G_FALSE,
7702 p_commit => Fnd_Api.G_FALSE,
7703 p_validation_level => Fnd_Api.G_VALID_LEVEL_FULL,
7704 x_return_status => l_return_status,
7705 x_msg_count => l_msg_count,
7706 x_msg_data => l_msg_data,
7707 p_visit_id => c_visit_rec.VISIT_ID);
7708
7709 IF (l_log_statement >= l_log_current_level) THEN
7710 fnd_log.string(l_log_statement,
7711 L_DEBUG_KEY,
7712 'After Calling AHL_VWP_TIMES_PVT.Calculate_Task_Times. Return Status = ' || l_return_status );
7713 END IF;
7714
7715 IF NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
7716 x_msg_count := l_msg_count;
7717 x_return_status := Fnd_Api.G_RET_STS_ERROR;
7718 RAISE Fnd_Api.G_EXC_ERROR;
7719 END IF;
7720
7721 IF c_visit_rec.STATUS_CODE = 'RELEASED' THEN
7722 UPDATE AHL_VISITS_B
7723 SET STATUS_CODE = 'PARTIALLY RELEASED',
7724 OBJECT_VERSION_NUMBER = OBJECT_VERSION_NUMBER +1
7725 WHERE VISIT_ID =c_visit_rec.VISIT_ID ;
7726 END IF;
7727
7728 IF (l_log_statement >= l_log_current_level) THEN
7729 fnd_log.string(l_log_statement,
7730 L_DEBUG_KEY,
7731 'Succesful updation of the status');
7732 END IF;
7733 p_x_task_tbl:=l_task_tbl; --Added by rnahata for Bug 6939329
7734 --------------------End of API Body-------------------------------------
7735 --Standard check to count messages
7736 l_msg_count := Fnd_Msg_Pub.count_msg;
7737
7738 IF l_msg_count > 0 THEN
7739 x_msg_count := l_msg_count;
7740 x_return_status := Fnd_Api.G_RET_STS_ERROR;
7741 RAISE Fnd_Api.G_EXC_ERROR;
7742 END IF;
7743
7744 --Standard check for commit
7745 IF Fnd_Api.TO_BOOLEAN(p_commit) THEN
7746 COMMIT;
7747 END IF;
7748
7749 IF (l_log_procedure >= l_log_current_level) THEN
7750 fnd_log.string(l_log_procedure,
7751 L_DEBUG_KEY ||'.end',
7752 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
7753 END IF;
7754 EXCEPTION
7755 WHEN Fnd_Api.g_exc_error THEN
7756 ROLLBACK TO Create_PUP_Tasks;
7757 x_return_status := Fnd_Api.g_ret_sts_error;
7758 Fnd_Msg_Pub.count_and_get(
7759 p_encoded => Fnd_Api.g_false,
7760 p_count => x_msg_count,
7761 p_data => x_msg_data
7762 );
7763 WHEN Fnd_Api.g_exc_unexpected_error THEN
7764 ROLLBACK TO Create_PUP_Tasks;
7765 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
7766 Fnd_Msg_Pub.count_and_get (
7767 p_encoded => Fnd_Api.g_false,
7768 p_count => x_msg_count,
7769 p_data => x_msg_data
7770 );
7771 WHEN OTHERS THEN
7772 ROLLBACK TO Create_PUP_Tasks;
7773 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
7774 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
7775 THEN
7776 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
7777 END IF;
7778 Fnd_Msg_Pub.count_and_get (
7779 p_encoded => Fnd_Api.g_false,
7780 p_count => x_msg_count,
7781 p_data => x_msg_data
7782 );
7783 END Create_PUP_Tasks;
7784
7785 -------------------------------------------------------------------
7786 -- Procedure name : Associate_Default_MRs
7787 -- Type : Private
7788 -- Function : To create Unassociated/Summary/Non-Routine task for a visit
7789 -- Parameters :
7790 --
7791 -- Standard IN Parameters :
7792 -- p_api_version IN NUMBER Required
7793 -- p_init_msg_list IN VARCHAR2 Default FND_API.G_FALSE
7794 -- p_commit IN VARCHAR2 Default FND_API.G_FALSE
7795 -- p_validation_level IN NUMBER Default FND_API.G_VALID_LEVEL_FULL
7796 -- p_module_type IN VARCHAR2 Default NULL.
7797 -- p_visit_rec IN AHL_VWP_VISITS_PVT.Visit_Rec_Type,
7798 --
7799 -- Standard OUT Parameters :
7800 -- x_return_status OUT VARCHAR2 Required
7801 -- x_msg_count OUT NUMBER Required
7802 -- x_msg_data OUT VARCHAR2 Required
7803 --
7804 -- Purpose:
7805 -- To associate default MR's during Transit Check Visit creation.
7806 -- Version :
7807 -- Initial Version 1.0
7808 -------------------------------------------------------------------
7809 PROCEDURE associate_default_mrs (
7810 p_api_version IN NUMBER,
7811 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
7812 p_commit IN VARCHAR2 := Fnd_Api.g_false,
7813 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
7814 p_module_type IN VARCHAR2 := 'JSP',
7815 x_return_status OUT NOCOPY VARCHAR2,
7816 x_msg_count OUT NOCOPY NUMBER,
7817 x_msg_data OUT NOCOPY VARCHAR2,
7818 p_visit_rec IN AHL_VWP_VISITS_PVT.Visit_Rec_Type
7819 ) AS
7820
7821 -- Define local variables
7822 L_API_VERSION CONSTANT NUMBER := 1.0;
7823 L_API_NAME CONSTANT VARCHAR2(30) := 'ASSOCIATE_DEFAULT_MRS';
7824 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
7825
7826 l_msg_count NUMBER;
7827 l_msg_data VARCHAR2(2000);
7828 l_return_status VARCHAR2(1);
7829 l_instance_id NUMBER;
7830
7831 J NUMBER;
7832
7833 CURSOR c_get_Item_Instance(p_visit_id NUMBER) IS
7834 SELECT ITEM_INSTANCE_ID
7835 FROM ahl_visits_b
7836 WHERE visit_id = p_visit_id;
7837
7838 CURSOR c_get_visit_applicable_mrs IS
7839 SELECT distinct mr_header_id
7840 FROM ahl_applicable_mrs;
7841
7842 -- Begin changes by rnahata for Issue 105
7843 --Cursor to fetch instance quantity
7844 CURSOR c_get_instance_qty(p_instance_id IN NUMBER) IS
7845 SELECT quantity FROM csi_item_instances csii
7846 WHERE instance_id = p_instance_id;
7847
7848 l_instance_qty NUMBER := 0;
7849 -- End changes by rnahata for Issue 105
7850
7851 l_Task_tbl AHL_VWP_RULES_PVT.Task_Tbl_Type;
7852
7853 BEGIN
7854 --------------------- initialize -----------------------
7855 SAVEPOINT associate_default_mrs;
7856
7857 -- Check if API is called in debug mode. If yes, enable debug.
7858 IF (l_log_procedure >= l_log_current_level) THEN
7859 fnd_log.string(l_log_procedure,
7860 L_DEBUG_KEY ||'.begin',
7861 'At the start of PL SQL procedure.');
7862 END IF;
7863
7864 -- Initialize message list if p_init_msg_list is set to TRUE.
7865 IF Fnd_Api.to_boolean(p_init_msg_list)
7866 THEN
7867 Fnd_Msg_Pub.initialize;
7868 END IF;
7869
7870 -- Initialize API return status to success
7871 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
7872
7873 -- Standard call to check for call compatibility.
7874 IF NOT Fnd_Api.COMPATIBLE_API_CALL(l_api_version,
7875 p_api_version,
7876 l_api_name,G_PKG_NAME)
7877 THEN
7878 RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
7879 END IF;
7880
7881 --------------------Start of API Body-----------------------------------
7882
7883 IF p_visit_rec.visit_type_code IS NOT NULL
7884 AND p_visit_rec.visit_id IS NOT NULL THEN
7885 OPEN c_get_Item_Instance(p_visit_rec.visit_id);
7886 FETCH c_get_Item_Instance INTO l_instance_id;
7887 CLOSE c_get_Item_Instance;
7888
7889 IF l_instance_id IS NOT NULL THEN
7890
7891 IF (l_log_statement >= l_log_current_level) THEN
7892 fnd_log.string(l_log_statement,
7893 L_DEBUG_KEY,
7894 ' Before calling AHL_FMP_PVT.GET_VISIT_APPLICABLE_MRS, l_instance_id = ' || l_instance_id);
7895 END IF;
7896 AHL_FMP_PVT.GET_VISIT_APPLICABLE_MRS(
7897 P_API_VERSION => 1.0,
7898 X_RETURN_STATUS => L_RETURN_STATUS,
7899 X_MSG_COUNT => L_MSG_COUNT,
7900 X_MSG_DATA => L_MSG_DATA,
7901 P_ITEM_INSTANCE_ID => l_instance_id,
7902 P_VISIT_TYPE_CODE => p_visit_rec.visit_type_code);
7903 --X_APPLICABLE_MR_TBL => l_mr_item_instance_tbl);
7904
7905 IF (l_log_statement >= l_log_current_level) THEN
7906 fnd_log.string(l_log_statement,
7907 L_DEBUG_KEY,
7908 'After calling AHL_FMP_PVT.GET_VISIT_APPLICABLE_MRS. Return status = ' || L_RETURN_STATUS || ', l_instance_id = ' || l_instance_id);
7909 END IF;
7910
7911 l_msg_count := Fnd_Msg_Pub.count_msg;
7912
7913 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
7914 x_msg_count := l_msg_count;
7915 x_return_status := Fnd_Api.G_RET_STS_ERROR;
7916 RAISE Fnd_Api.G_EXC_ERROR;
7917 END IF;
7918
7919 -- Begin changes by rnahata for Issue 105
7920 OPEN c_get_instance_qty(l_instance_id);
7921 FETCH c_get_instance_qty INTO l_instance_qty;
7922 CLOSE c_get_instance_qty;
7923 IF (l_log_statement >= l_log_current_level) THEN
7924 fnd_log.string(l_log_statement,
7925 L_DEBUG_KEY,
7926 'Richa -- l_instance_id = ' || l_instance_id || ', l_instance_qty = ' || l_instance_qty);
7927 END IF;
7928 -- End changes by rnahata for Issue 105
7929
7930 J := 0;
7931 FOR I in c_get_visit_applicable_mrs
7932 LOOP
7933 J := J+1;
7934 l_task_tbl(J).mr_id := I.mr_header_id;
7935 -- Begin changes by rnahata for Issue 105
7936 l_task_tbl(J).instance_id := l_instance_id;
7937 l_task_tbl(J).quantity := l_instance_qty;
7938 -- End changes by rnahata for Issue 105
7939 l_task_tbl(J).visit_id := p_visit_rec.visit_id;
7940 l_task_tbl(J).task_type_code := 'UNPLANNED';
7941 l_task_tbl(J).dept_name := p_visit_rec.dept_name;
7942 l_task_tbl(J).department_id := p_visit_rec.department_id;
7943 l_task_tbl(J).inventory_item_id := p_visit_rec.inventory_item_id;
7944 l_task_tbl(J).item_organization_id := p_visit_rec.item_organization_id;
7945 l_task_tbl(J).item_name := p_visit_rec.item_name;
7946 l_task_tbl(J).serial_number := p_visit_rec.serial_number;
7947 END LOOP;
7948
7949 IF (l_log_statement >= l_log_current_level) THEN
7950 fnd_log.string(l_log_statement,
7951 L_DEBUG_KEY,
7952 ' Calling AHL_VWP_TASKS_PVT.CREATE_PUP_TASKS ');
7953 END IF;
7954 AHL_VWP_TASKS_PVT.CREATE_PUP_TASKS(
7955 p_api_version => 1.0,
7956 p_module_type => p_module_type,
7957 p_x_task_tbl => l_task_tbl,
7958 x_return_status => l_return_status,
7959 x_msg_count => l_msg_count,
7960 x_msg_data => l_msg_data);
7961
7962 l_msg_count := Fnd_Msg_Pub.count_msg;
7963
7964 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
7965 x_msg_count := l_msg_count;
7966 x_return_status := Fnd_Api.G_RET_STS_ERROR;
7967 RAISE Fnd_Api.G_EXC_ERROR;
7968 END IF;
7969
7970 END IF; -- Instance ID is not null.
7971
7972 END IF; -- Visit id and Visit type is not null.
7973 --------------------End of API Body-------------------------------------
7974 --Standard check to count messages
7975 l_msg_count := Fnd_Msg_Pub.count_msg;
7976
7977 IF l_msg_count > 0 THEN
7978 x_msg_count := l_msg_count;
7979 x_return_status := Fnd_Api.G_RET_STS_ERROR;
7980 RAISE Fnd_Api.G_EXC_ERROR;
7981 END IF;
7982
7983 IF (l_log_procedure >= l_log_current_level) THEN
7984 fnd_log.string(l_log_procedure,
7985 L_DEBUG_KEY ||'.end',
7986 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
7987 END IF;
7988 EXCEPTION
7989 WHEN Fnd_Api.g_exc_error THEN
7990 ROLLBACK TO associate_default_mrs;
7991 x_return_status := Fnd_Api.g_ret_sts_error;
7992 Fnd_Msg_Pub.count_and_get(
7993 p_encoded => Fnd_Api.g_false,
7994 p_count => x_msg_count,
7995 p_data => x_msg_data
7996 );
7997 WHEN Fnd_Api.g_exc_unexpected_error THEN
7998 ROLLBACK TO associate_default_mrs;
7999 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
8000 Fnd_Msg_Pub.count_and_get (
8001 p_encoded => Fnd_Api.g_false,
8002 p_count => x_msg_count,
8003 p_data => x_msg_data
8004 );
8005 WHEN OTHERS THEN
8006 ROLLBACK TO associate_default_mrs;
8007 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
8008 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
8009 THEN
8010 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
8011 END IF;
8012 Fnd_Msg_Pub.count_and_get (
8013 p_encoded => Fnd_Api.g_false,
8014 p_count => x_msg_count,
8015 p_data => x_msg_data
8016 );
8017 END associate_default_mrs;
8018 END AHL_VWP_TASKS_PVT;