[Home] [Help]
PACKAGE BODY: APPS.AHL_VWP_TASKS_PVT
Source
1 PACKAGE BODY AHL_VWP_TASKS_PVT AS
2 /* $Header: AHLVTSKB.pls 120.29.12020000.2 2012/12/07 15:31:47 sareepar 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 -- 18-FEB-2010 MANISAGA Added attribute for DFF enablement and Route_id for navigation
41 -- to route page
42 -----------------------------------------------------------------
43 -- Define Global CONSTANTS --
44 -----------------------------------------------------------------
45 G_PKG_NAME CONSTANT VARCHAR2(30) := 'AHL_VWP_TASKS_PVT';
46 G_APP_NAME CONSTANT VARCHAR2(3) := 'AHL';
47 -----------------------------------------------------------------
48 -- Common constants and variables --
49 ------------------------------------
50 l_log_current_level NUMBER := fnd_log.g_current_runtime_level;
51 l_log_statement NUMBER := fnd_log.level_statement;
52 l_log_procedure NUMBER := fnd_log.level_procedure;
53 l_log_error NUMBER := fnd_log.level_error;
54 l_log_unexpected NUMBER := fnd_log.level_unexpected;
55 ---------------------------------------------------------------------
56 -- Define Record Types for record structures needed by the APIs --
57 ---------------------------------------------------------------------
58 -- NO RECORD TYPES
59
60 --------------------------------------------------------------------
61 -- Define Table Type for Records Structures --
62 --------------------------------------------------------------------
63 -- NO RECORD TYPES
64
65 --------------------------------------------------------------------
66 -- START: Defining local functions and procedures SIGNATURES --
67 --------------------------------------------------------------------
68 -- To Check_Visit_Task_Req_Items
69 PROCEDURE Check_Visit_Task_Req_Items (
70 p_task_rec IN AHL_VWP_RULES_PVT.Task_Rec_Type,
71 --Added by rnahata for Issue 105
72 p_validation_mode IN VARCHAR2 := Jtf_Plsql_Api.g_create,
73 x_return_status OUT NOCOPY VARCHAR2
74 );
75
76 -- To Check_Visit_Task_UK_Items
77 PROCEDURE Check_Visit_Task_UK_Items (
78 p_task_rec IN AHL_VWP_RULES_PVT.Task_Rec_Type,
79 p_validation_mode IN VARCHAR2 := Jtf_Plsql_Api.g_create,
80 x_return_status OUT NOCOPY VARCHAR2
81 );
82
83 -- To Check_Task_Items
84 PROCEDURE Check_Task_Items (
85 p_Task_rec IN AHL_VWP_RULES_PVT.task_rec_type,
86 p_validation_mode IN VARCHAR2 := Jtf_Plsql_Api.g_create,
87 x_return_status OUT NOCOPY VARCHAR2
88 );
89
90 -- To Validate_Visit_Task
91 PROCEDURE Validate_Visit_Task (
92 p_api_version IN NUMBER,
93 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
94 p_commit IN VARCHAR2 := Fnd_Api.g_false,
95 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
96 p_Task_rec IN AHL_VWP_RULES_PVT.task_rec_type,
97 x_return_status OUT NOCOPY VARCHAR2,
98 x_msg_count OUT NOCOPY NUMBER,
99 x_msg_data OUT NOCOPY VARCHAR2
100 );
101
102 -- To assign Null to missing attributes of visit while creation/updation.
103 PROCEDURE Default_Missing_Attribs(
104 p_x_task_rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type
105 );
106
107 -- To Create Unassociated Task
108 PROCEDURE Create_Unassociated_Task(
109 p_api_version IN NUMBER,
110 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
111 p_commit IN VARCHAR2 := Fnd_Api.g_false,
112 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
113 p_module_type IN VARCHAR2 := 'JSP',
114 p_x_task_Rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
115 x_return_status OUT NOCOPY VARCHAR2,
116 x_msg_count OUT NOCOPY NUMBER,
117 x_msg_data OUT NOCOPY VARCHAR2
118 );
119
120 -- To Create Summary Task
121 PROCEDURE Create_Summary_Task(
122 p_api_version IN NUMBER,
123 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
124 p_commit IN VARCHAR2 := Fnd_Api.g_false,
125 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
126 p_module_type IN VARCHAR2 :='JSP',
127 p_x_task_Rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
128 x_return_status OUT NOCOPY VARCHAR2,
129 x_msg_count OUT NOCOPY NUMBER,
130 x_msg_data OUT NOCOPY VARCHAR2
131 );
132
133 -- To Delete SR Task
134 PROCEDURE Delete_SR_Task (
135 p_api_version IN NUMBER,
136 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
137 p_commit IN VARCHAR2 := Fnd_Api.g_false,
138 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
139 p_module_type IN VARCHAR2:= 'JSP',
140 p_visit_task_ID IN NUMBER,
141 x_return_status OUT NOCOPY VARCHAR2,
142 x_msg_count OUT NOCOPY NUMBER,
143 x_msg_data OUT NOCOPY VARCHAR2
144 );
145
146 -- To Update Summary Task
147 PROCEDURE Update_Summary_Task(
148 p_api_version IN NUMBER,
149 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
150 p_commit IN VARCHAR2 := Fnd_Api.g_false,
151 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
152 p_module_type IN VARCHAR2 := 'JSP',
153 p_x_task_Rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
154 x_return_status OUT NOCOPY VARCHAR2,
155 x_msg_count OUT NOCOPY NUMBER,
156 x_msg_data OUT NOCOPY VARCHAR2
157 );
158
159 -- To Update Unassociated Task
160
161 PROCEDURE Update_Unassociated_Task(
162 p_api_version IN NUMBER,
163 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
164 p_commit IN VARCHAR2 := Fnd_Api.g_false,
165 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
166 p_module_type IN VARCHAR2 := 'JSP',
167 p_x_task_Rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
168 x_return_status OUT NOCOPY VARCHAR2,
169 x_msg_count OUT NOCOPY NUMBER,
170 x_msg_data OUT NOCOPY VARCHAR2
171 );
172
173 -- To Delete Unassociated Task
174 PROCEDURE Delete_Unassociated_Task (
175 p_api_version IN NUMBER,
176 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
177 p_commit IN VARCHAR2 := Fnd_Api.g_false,
178 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
179 p_module_type IN VARCHAR2 := 'JSP',
180 p_Visit_Task_Id IN NUMBER,
181 x_return_status OUT NOCOPY VARCHAR2,
182 x_msg_count OUT NOCOPY NUMBER,
183 x_msg_data OUT NOCOPY VARCHAR2
184 );
185
186 PROCEDURE Get_WorkOrder_Attribs(
187 p_x_prd_workorder_rec IN OUT NOCOPY AHL_PRD_WORKORDER_PVT.prd_workorder_rec
188 );
189
190 PROCEDURE Update_Tasks_in_Planning(
191 p_api_version IN NUMBER := 1.0,
192 p_init_msg_list IN VARCHAR2:= FND_API.G_FALSE,
193 p_commit IN VARCHAR2:= FND_API.G_FALSE,
194 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
195 p_module_type IN VARCHAR2:= 'JSP',
196 p_x_task_rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
197 x_return_status OUT NOCOPY VARCHAR2,
198 x_msg_count OUT NOCOPY NUMBER,
199 x_msg_data OUT NOCOPY VARCHAR2
200 );
201
202 PROCEDURE Update_Tasks_in_Production(
203 p_api_version IN NUMBER := 1.0,
204 p_init_msg_list IN VARCHAR2:= FND_API.G_FALSE,
205 p_commit IN VARCHAR2:= FND_API.G_FALSE,
206 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
207 p_module_type IN VARCHAR2:= 'JSP',
208 p_x_task_rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
209 x_return_status OUT NOCOPY VARCHAR2,
210 x_msg_count OUT NOCOPY NUMBER,
211 x_msg_data OUT NOCOPY VARCHAR2
212 );
213
214 --salogan added the following for supplier warranty starts
215 PROCEDURE Get_Entl_rec_for_Delete(
216 p_task_id IN NUMBER,
217 x_warranty_entl_tbl OUT NOCOPY AHL_WARRANTY_ENTL_PVT.Warranty_Entl_Tbl_Type
218 );
219 --salogan added the following for supplier warranty ends
220
221 -- VWPE 12730539:: PRAKKUM :: 26-JUL-2011 :: start
222 -- To Delete Stage Task
223 PROCEDURE Delete_Stage_Task(
224 p_api_version IN NUMBER,
225 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
226 p_commit IN VARCHAR2 := Fnd_Api.g_false,
227 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
228 p_module_type IN VARCHAR2 := 'JSP',
229 p_visit_task_ID IN NUMBER,
230 x_return_status OUT NOCOPY VARCHAR2,
231 x_msg_count OUT NOCOPY NUMBER,
232 x_msg_data OUT NOCOPY VARCHAR2
233 );
234 -- VWPE 12730539:: PRAKKUM :: 26-JUL-2011 :: end
235 --------------------------------------------------------------------
236 -- END: Defining local functions and procedures SIGNATURES --
237 --------------------------------------------------------------------
238
239 --------------------------------------------------------------------
240 -- START: Defining local functions and procedures BODY --
241 --------------------------------------------------------------------
242 --------------------------------------------------------------------
243 -- PROCEDURE
244 -- Default_Missing_Attribs
245 --
246 -- PURPOSE
247 -- For all optional fields check if its g_miss_num/g_miss_char/
248 -- g_miss_date then Null else the value
249
250 --------------------------------------------------------------------
251 -- Start default attributes for workorder
252 PROCEDURE Get_WorkOrder_Attribs(
253 p_x_prd_workorder_rec IN OUT NOCOPY AHL_PRD_WORKORDER_PVT.prd_workorder_rec
254 )
255 AS
256
257 CURSOR get_workorder_rec(c_workorder_id NUMBER)
258 IS
259 /*SELECT *
260 FROM AHL_ALL_WORKORDERS_V
261 WHERE workorder_id=c_workorder_id;
262 */
263 -- AnRaj: Changed query for perf issue#1, Bug 4919465
264 SELECT WO.OBJECT_VERSION_NUMBER OBJECT_VERSION_NUMBER,
265 WO.WORKORDER_NAME JOB_NUMBER,
266 WO.ROUTE_ID ROUTE_ID,
267 VST.ORGANIZATION_ID ORGANIZATION_ID,
268 WIP.FIRM_PLANNED_FLAG FIRM_PLANNED_FLAG,
269 WIP.CLASS_CODE CLASS_CODE,
270 WIP.OWNING_DEPARTMENT DEPARTMENT_ID ,
271 WO.STATUS_CODE JOB_STATUS_CODE,
272 WIP.SCHEDULED_START_DATE SCHEDULED_START_DATE,
273 WIP.SCHEDULED_COMPLETION_DATE SCHEDULED_END_DATE,
274 WO.ACTUAL_START_DATE ACTUAL_START_DATE,
275 WO.ACTUAL_END_DATE ACTUAL_END_DATE,
276 NVL2( WO.VISIT_TASK_ID,
277 nvl(VST.INVENTORY_ITEM_ID, (select inventory_item_id from ahl_visit_tasks_b where visit_id = vst.visit_id and rownum = 1) ),
278 VST.INVENTORY_ITEM_ID) INVENTORY_ITEM_ID,
279 NVL2( WO.VISIT_TASK_ID,
280 nvl (VST.ITEM_INSTANCE_ID, (select instance_id from ahl_visit_tasks_b where visit_id = vst.visit_id and rownum = 1) ),
281 VST.ITEM_INSTANCE_ID) ITEM_INSTANCE_ID,
282 WO.MASTER_WORKORDER_FLAG MASTER_WORKORDER_FLAG,
283 VST.PROJECT_ID PROJECT_ID,
284 NVL2( WO.VISIT_TASK_ID,VTS.PROJECT_TASK_ID,TO_NUMBER(NULL)) PROJECT_TASK_ID,
285 NVL2( WO.VISIT_TASK_ID,VTS.SERVICE_REQUEST_ID,TO_NUMBER(NULL)) INCIDENT_ID
286 FROM AHL_WORKORDERS WO,
287 AHL_VISITS_B VST,
288 AHL_VISIT_TASKS_B VTS,
289 WIP_DISCRETE_JOBS WIP
290 WHERE WIP.WIP_ENTITY_ID=WO.WIP_ENTITY_ID
291 AND WO.VISIT_ID = VST.VISIT_ID
292 AND WO.VISIT_ID = VTS.VISIT_ID(+)
293 AND WO.VISIT_TASK_ID = VTS.VISIT_TASK_ID(+)
294 AND WO.STATUS_CODE <> '22'
295 AND WORKORDER_ID = c_workorder_id;
296 l_prd_workorder_rec get_workorder_rec%ROWTYPE;
297
298 L_API_NAME CONSTANT VARCHAR2(30) := 'Get_WorkOrder_Attribs';
299 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
300 BEGIN
301 IF (l_log_procedure >= l_log_current_level) THEN
302 fnd_log.string(l_log_procedure,
303 L_DEBUG_KEY ||'.begin',
304 'At the start of PL SQL procedure.' ||
305 ' p_x_prd_workorder_rec.workorder_id : ' || p_x_prd_workorder_rec.workorder_id);
306 END IF;
307 p_x_prd_workorder_rec.DML_OPERATION := 'U';
308
309 OPEN get_workorder_rec(p_x_prd_workorder_rec.workorder_id);
310 FETCH get_workorder_rec INTO l_prd_workorder_rec;
311 IF get_workorder_rec%NOTFOUND THEN
312 FND_MESSAGE.SET_NAME('AHL','AHL_PRD_WO_NOT_FOUND');
313 FND_MSG_PUB.ADD;
314 CLOSE get_workorder_rec;
315 END IF;
316 CLOSE get_workorder_rec;
317 p_x_prd_workorder_rec.OBJECT_VERSION_NUMBER :=l_prd_workorder_rec.OBJECT_VERSION_NUMBER;
318 p_x_prd_workorder_rec.JOB_NUMBER :=l_prd_workorder_rec.JOB_NUMBER;
319 p_x_prd_workorder_rec.ROUTE_ID :=l_prd_workorder_rec.ROUTE_ID;
320 p_x_prd_workorder_rec.ORGANIZATION_ID :=l_prd_workorder_rec.ORGANIZATION_ID;
321 p_x_prd_workorder_rec.FIRM_PLANNED_FLAG :=l_prd_workorder_rec.FIRM_PLANNED_FLAG;
322 p_x_prd_workorder_rec.CLASS_CODE :=l_prd_workorder_rec.CLASS_CODE;
323 p_x_prd_workorder_rec.DEPARTMENT_ID :=l_prd_workorder_rec.DEPARTMENT_ID;
324 p_x_prd_workorder_rec.STATUS_CODE :=l_prd_workorder_rec.job_STATUS_CODE;
325 p_x_prd_workorder_rec.SCHEDULED_START_DATE :=l_prd_workorder_rec.SCHEDULED_START_DATE;
326 p_x_prd_workorder_rec.SCHEDULED_END_DATE :=l_prd_workorder_rec.SCHEDULED_END_DATE;
327 p_x_prd_workorder_rec.ACTUAL_START_DATE :=l_prd_workorder_rec.ACTUAL_START_DATE;
328 p_x_prd_workorder_rec.ACTUAL_END_DATE :=l_prd_workorder_rec.ACTUAL_END_DATE;
329 p_x_prd_workorder_rec.INVENTORY_ITEM_ID :=l_prd_workorder_rec.INVENTORY_ITEM_ID;
330 p_x_prd_workorder_rec.ITEM_INSTANCE_ID :=l_prd_workorder_rec.ITEM_INSTANCE_ID;
331 p_x_prd_workorder_rec.MASTER_WORKORDER_FLAG :=l_prd_workorder_rec.MASTER_WORKORDER_FLAG;
332 p_x_prd_workorder_rec.PROJECT_ID :=l_prd_workorder_rec.PROJECT_ID;
333 p_x_prd_workorder_rec.PROJECT_TASK_ID :=l_prd_workorder_rec.PROJECT_TASK_ID;
334 p_x_prd_workorder_rec.INCIDENT_ID :=l_prd_workorder_rec.INCIDENT_ID;
335
336 IF (l_log_procedure >= l_log_current_level) THEN
337 fnd_log.string(l_log_procedure,
338 L_DEBUG_KEY ||'.end',
339 'At the end of PL SQL procedure.');
340 END IF;
341 END Get_WorkOrder_Attribs;
342
343 -- end of the local procedure to set default attribs.
344
345 PROCEDURE Default_Missing_Attribs
346 ( p_x_task_rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type)
347 AS
348 L_API_NAME CONSTANT VARCHAR2(30) := 'Default_Missing_Attribs';
349 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
350 BEGIN
351 IF (l_log_procedure >= l_log_current_level) THEN
352 fnd_log.string(l_log_procedure,
353 L_DEBUG_KEY ||'.begin',
354 'At the start of PL SQL procedure.');
355 END IF;
356 IF p_x_task_rec.DURATION = Fnd_Api.G_MISS_NUM THEN
357 p_x_task_rec.DURATION := NULL;
358 ELSE
359 p_x_task_rec.DURATION := p_x_task_rec.DURATION;
360 END IF;
361
362 IF p_x_task_rec.PROJECT_TASK_ID = Fnd_Api.G_MISS_NUM THEN
363 p_x_task_rec.PROJECT_TASK_ID := NULL;
364 ELSE
365 p_x_task_rec.PROJECT_TASK_ID := p_x_task_rec.PROJECT_TASK_ID;
366 END IF;
367
368 IF p_x_task_rec.COST_PARENT_ID = Fnd_Api.G_MISS_NUM THEN
369 p_x_task_rec.COST_PARENT_ID := NULL;
370 ELSE
371 p_x_task_rec.COST_PARENT_ID := p_x_task_rec.COST_PARENT_ID;
372 END IF;
373
374 IF p_x_task_rec.MR_ROUTE_ID = Fnd_Api.G_MISS_NUM THEN
375 p_x_task_rec.MR_ROUTE_ID := NULL;
376 ELSE
377 p_x_task_rec.MR_ROUTE_ID := p_x_task_rec.MR_ROUTE_ID;
378 END IF;
379
380 IF p_x_task_rec.MR_ID = Fnd_Api.G_MISS_NUM THEN
381 p_x_task_rec.MR_ID := NULL;
382 ELSE
383 p_x_task_rec.MR_ID := p_x_task_rec.MR_ID;
384 END IF;
385
386 IF p_x_task_rec.UNIT_EFFECTIVITY_ID = Fnd_Api.G_MISS_NUM THEN
387 p_x_task_rec.UNIT_EFFECTIVITY_ID := NULL;
388 ELSE
389 p_x_task_rec.UNIT_EFFECTIVITY_ID := p_x_task_rec.UNIT_EFFECTIVITY_ID;
390 END IF;
391
392 IF p_x_task_rec.START_FROM_HOUR = Fnd_Api.G_MISS_NUM THEN
393 p_x_task_rec.START_FROM_HOUR := NULL;
394 ELSE
395 p_x_task_rec.START_FROM_HOUR := p_x_task_rec.START_FROM_HOUR;
396 END IF;
397
398 IF p_x_task_rec.PRIMARY_VISIT_TASK_ID = Fnd_Api.G_MISS_NUM THEN
399 p_x_task_rec.PRIMARY_VISIT_TASK_ID := NULL;
400 ELSE
401 p_x_task_rec.PRIMARY_VISIT_TASK_ID := p_x_task_rec.PRIMARY_VISIT_TASK_ID;
402 END IF;
403
404 IF p_x_task_rec.ORIGINATING_TASK_ID = Fnd_Api.G_MISS_NUM THEN
405 p_x_task_rec.ORIGINATING_TASK_ID := NULL;
406 ELSE
407 p_x_task_rec.ORIGINATING_TASK_ID := p_x_task_rec.ORIGINATING_TASK_ID;
408 END IF;
409
410 IF p_x_task_rec.SERVICE_REQUEST_ID = Fnd_Api.G_MISS_NUM THEN
411 p_x_task_rec.SERVICE_REQUEST_ID := NULL;
412 ELSE
413 p_x_task_rec.SERVICE_REQUEST_ID := p_x_task_rec.SERVICE_REQUEST_ID;
414 END IF;
415
416 IF p_x_task_rec.attribute_category = Fnd_Api.G_MISS_CHAR THEN
417 p_x_task_rec.attribute_category := NULL;
418 ELSE
419 p_x_task_rec.attribute_category := p_x_task_rec.attribute_category;
420 END IF;
421
422 --MANESING::Component Maintenance Planning Project, 07-Aug-2011, added target quantity
423 IF p_x_task_rec.TARGET_QTY = Fnd_Api.G_MISS_NUM THEN
424 p_x_task_rec.TARGET_QTY := NULL;
425 END IF;
426 --
427 IF (l_log_procedure >= l_log_current_level) THEN
428 fnd_log.string(l_log_procedure,
429 L_DEBUG_KEY ||'.end',
430 'At the end of PL SQL procedure.');
431 END IF;
432
433 END Default_Missing_Attribs;
434
435 --------------------------------------------------------------------
436 -- PROCEDURE
437 -- Get_Task_Details
438 --
439 -- PURPOSE
440 -- To display all task details for the update task UI screen
441 --------------------------------------------------------------------
442 PROCEDURE Get_Task_Details (
443 p_api_version IN NUMBER,
444 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
445 p_commit IN VARCHAR2 := Fnd_Api.g_false,
446 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
447 p_module_type IN VARCHAR2 :='JSP',
448 p_task_id IN NUMBER,
449 x_task_rec OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
450 x_return_status OUT NOCOPY VARCHAR2,
451 x_msg_count OUT NOCOPY NUMBER,
452 x_msg_data OUT NOCOPY VARCHAR2
453 )
454 IS
455 L_API_VERSION CONSTANT NUMBER := 1.0;
456 L_API_NAME CONSTANT VARCHAR2(30) := 'Get_Task_Details';
457 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
458
459 -- local variables defined for the procedure
460 l_task_rec AHL_VWP_RULES_PVT.Task_Rec_Type := NULL;
461 l_zone VARCHAR2(30);
462 l_sub_zone VARCHAR2(30);
463 l_uom VARCHAR2(30);
464 l_route_id NUMBER;
465 l_tol_after NUMBER;
466 l_tol_before NUMBER;
467 l_parent_num NUMBER;
468 l_origin_num NUMBER;
469 l_duration NUMBER;
470 l_proj_task_number VARCHAR(25); --PRAKKUM :: PIE :: 13-OCT-2010 :: Change l_proj_task_number type from NUMBER to VARCHAR2
471 l_task_start_date DATE;
472 l_task_end_date DATE;
473 l_due_by_date DATE;
474 l_msg_count NUMBER;
475
476 -- Define local cursors
477 -- To find visit related information
478 CURSOR c_visit (x_id IN NUMBER) IS
479 SELECT * FROM AHL_VISITS_VL
480 WHERE VISIT_ID = x_id;
481 c_visit_rec c_visit%ROWTYPE;
482
483 -- To find task related information when its for a visit
484 /*
485 CURSOR c_task (x_T_id IN NUMBER) IS
486 SELECT * FROM AHL_SEARCH_VISIT_TASK_V
487 WHERE TASK_ID = x_T_id;
488 c_task_rec c_task%ROWTYPE;
489 */
490
491 CURSOR c_task_type (x_T_id IN NUMBER) IS
492 SELECT TASK_TYPE_CODE,MR_ID
493 FROM ahl_visit_tasks_b
494 WHERE VISIT_TASK_ID = x_T_id;
495 c_task_type_rec c_task_type%ROWTYPE;
496
497 -- PRAKKUM :: FP:PIE :: 13-OCT-2010
498 -- Modify the following three task cursors to fetch Service Type code and meaning
499 CURSOR c_non_summary_task_details(x_T_id IN NUMBER) IS
500 SELECT AVTS.VISIT_ID VISIT_ID,
501 AVTS.VISIT_NUMBER VISIT_NUMBER,
502 AVTS.TEMPLATE_FLAG TEMPLATE_FLAG,
503 AVTS.STATUS_CODE VISIT_STATUS_CODE,
504 ATSK.VISIT_TASK_ID TASK_ID,
505 ATSK.VISIT_TASK_NUMBER TASK_NUMBER,
506 ATSKL.VISIT_TASK_NAME TASK_NAME,
507 ATSK.INVENTORY_ITEM_ID ITEM_ID,
508 MTSB.CONCATENATED_SEGMENTS ITEM_NAME,
509 ATSK.ITEM_ORGANIZATION_ID ITEM_ORGANIZATION_ID,
510 ATSK.INSTANCE_ID UNIT_ID,
511 ATSK.QUANTITY QUANTITY, --Added by rnahata for Issue 105
512 CSIS.SERIAL_NUMBER UNIT_NAME,
513 CSIS.INSTANCE_NUMBER INSTANCE_NUMBER, --Added by rnahata for Issue 105
514 CSIS.UNIT_OF_MEASURE UOM, --Added by rnahata for Issue 105
515 ATSK.MR_ROUTE_ID MR_ROUTE_ID,
516 AMRH.TITLE MR_NAME,
517 ARV.ROUTE_NO ROUTE_NAME,
518 ARV.ROUTE_TYPE_CODE ROUTE_TYPE_CODE,
519 LKUP4.MEANING ROUTE_TYPE,
520 AWO.WORKORDER_ID WORK_ORDER_ID,
521 AWO.WORKORDER_NAME WORKORDER_NAME,
522 AWO.STATUS_CODE WORKORDER_STATUS,
523 LKUP2.MEANING WORKORDER_STATUS_MEANING,
524 AWO.ACTUAL_START_DATE WORKORDER_START_DATE,
525 AWO.ACTUAL_END_DATE WORKORDER_END_DATE,
526 ATSK.SERVICE_REQUEST_ID SERVICE_REQ_ID,
527 SR.INCIDENT_NUMBER SERVICE_REQ_NAME,
528 ATSK.START_DATE_TIME START_DATE_TIME,
529 ATSK.END_DATE_TIME END_DATE_TIME,
530 -- SKPATHAK :: ER: 9147951 :: 11-JAN-2010 :: Fetch past start and end dates too
531 ATSK.PAST_TASK_START_DATE,
532 ATSK.PAST_TASK_END_DATE,
533 ATSK.TASK_TYPE_CODE TASK_TYPE_CODE,
534 LKUP1.MEANING TASK_TYPE_NAME,
535 ATSK.STATUS_CODE TASK_STATUS_CODE,
536 LKUP3.MEANING TASK_STATUS_NAME,
537 ATSK.STAGE_ID STAGE_ID,
538 ASTG.STAGE_NUM STAGE_NUM,
539 ASTG.STAGE_NAME STAGE_NAME,
540 AUEF.DUE_DATE DUE_BY_DATE,
541 ATSK.DEPARTMENT_ID DEPARTMENT_ID,
542 BDPT.DESCRIPTION DEPARTMENT_NAME,
543 ATSK.ORIGINATING_TASK_ID ORIGINATING_TASK_ID,
544 ORIGTSK.VISIT_TASK_NUMBER ORIGINATING_TASK_NUMBER,
545 ORIGTSK.VISIT_TASK_NAME ORIGINATING_TASK_NAME,
546 ATSK.MR_ID MR_ID,
547 ATSK.UNIT_EFFECTIVITY_ID UNIT_EFFECTIVITY_ID,
548 AMRH.DESCRIPTION MR_DESCRIPTION,
549 ATSK.SERVICE_TYPE_CODE SERVICE_TYPE_CODE,
550 PA.MEANING SERVICE_TYPE,
551 --MANESING::Component Maintenance Planning Project, 07-Aug-2011, added target quantity
552 ATSK.target_qty,
553 --manisaga added all the attributes and ROUTE_ID as part of DFF Enablement 0n 18-Feb-2010--Start
554 AMRR.ROUTE_ID,
555 ATSK.attribute_category,
556 ATSK.Attribute1,
557 ATSK.Attribute2,
558 ATSK.Attribute3,
559 ATSK.Attribute4,
560 ATSK.Attribute5,
561 ATSK.Attribute6,
562 ATSK.Attribute7,
563 ATSK.Attribute8,
564 ATSK.Attribute9,
565 ATSK.Attribute10,
566 ATSK.Attribute11,
567 ATSK.Attribute12,
568 ATSK.Attribute13,
569 ATSK.Attribute14,
570 ATSK.Attribute15
571 --manisaga added all the attributes and ROUTE_ID as part of DFF Enablement 0n 18-Feb-2010--End
572 FROM AHL_VISITS_B AVTS,
573 AHL_VISIT_TASKS_B ATSK,
574 AHL_VISIT_TASKS_TL ATSKL,
575 AHL_VISIT_TASKS_VL ORIGTSK,
576 AHL_MR_ROUTES AMRR,
577 AHL_MR_HEADERS_VL AMRH,
578 AHL_UNIT_EFFECTIVITIES_B AUEF,
579 CSI_ITEM_INSTANCES CSIS,
580 CS_INCIDENTS_ALL_B SR,
581 BOM_DEPARTMENTS BDPT,
582 FND_LOOKUP_VALUES LKUP1,
583 FND_LOOKUP_VALUES LKUP2,
584 FND_LOOKUP_VALUES LKUP3,
585 FND_LOOKUP_VALUES LKUP4,
586 AHL_VWP_STAGES_VL ASTG,
587 MTL_SYSTEM_ITEMS_B_KFV MTSB,
588 AHL_ROUTES_B ARV,
589 AHL_WORKORDERS AWO,
590 PA_LOOKUPS PA
591 WHERE ATSK.INSTANCE_ID = CSIS.INSTANCE_ID (+)
592 AND ATSK.ORIGINATING_TASK_ID = ORIGTSK.VISIT_TASK_ID(+)
593 AND ATSK.MR_ROUTE_ID = AMRR.MR_ROUTE_ID (+)
594 AND AMRR.MR_HEADER_ID= AMRH.MR_HEADER_ID (+)
595 AND AMRR.ROUTE_ID = ARV.ROUTE_ID (+)
596 AND LKUP4.LOOKUP_TYPE (+) = 'AHL_ROUTE_TYPE'
597 AND LKUP4.LOOKUP_CODE (+) = ARV.ROUTE_TYPE_CODE
598 AND LKUP4.LANGUAGE (+) = userenv('LANG')
599 AND ATSK.SERVICE_REQUEST_ID=SR.INCIDENT_ID (+)
600 AND ATSK.UNIT_EFFECTIVITY_ID=AUEF.UNIT_EFFECTIVITY_ID(+)
601 AND ATSK. INVENTORY_ITEM_ID = MTSB.INVENTORY_ITEM_ID(+)
602 AND ATSK. ITEM_ORGANIZATION_ID = MTSB.ORGANIZATION_ID(+)
603 AND LKUP1.LOOKUP_TYPE(+) = 'AHL_VWP_TASK_TYPE'
604 AND LKUP1.LANGUAGE (+) = userenv('LANG')
605 AND LKUP1.LOOKUP_CODE(+) = ATSK.TASK_TYPE_CODE
606 AND LKUP3.LOOKUP_TYPE(+) = 'AHL_VWP_TASK_STATUS'
607 AND LKUP3.LOOKUP_CODE(+) = ATSK.STATUS_CODE
608 AND LKUP3.LANGUAGE (+) = userenv('LANG')
609 AND AVTS.VISIT_ID = ATSK.VISIT_ID
610 AND AVTS.TEMPLATE_FLAG = 'N'
611 AND ATSK.DEPARTMENT_ID = BDPT.DEPARTMENT_ID(+)
612 AND ATSK.VISIT_TASK_ID = AWO.VISIT_TASK_ID(+)
613 AND NVL(ATSK.STATUS_CODE,'X') <> 'DELETED'
614 AND ATSK.TASK_TYPE_CODE <> 'SUMMARY'
615 AND LKUP2.LOOKUP_TYPE(+) = 'AHL_JOB_STATUS'
616 AND LKUP2.LOOKUP_CODE(+) = AWO.STATUS_CODE
617 AND LKUP2.LANGUAGE (+) = userenv('LANG')
618 AND ATSK.STAGE_ID = ASTG.STAGE_ID(+)
619 AND ATSK.VISIT_TASK_ID = ATSKL.VISIT_TASK_ID
620 AND ATSKL.LANGUAGE(+) = USERENV('LANG')
621 AND PA.LOOKUP_TYPE(+) = 'SERVICE TYPE'
622 AND PA.LOOKUP_CODE(+) = ATSK.SERVICE_TYPE_CODE
623 AND ATSK.VISIT_TASK_ID = x_T_id;
624
625 c_task_rec c_non_summary_task_details%ROWTYPE;
626
627 CURSOR c_mr_task_details (x_T_id IN NUMBER) IS
628 SELECT AVTS.VISIT_ID VISIT_ID,
629 AVTS.VISIT_NUMBER VISIT_NUMBER,
630 AVTS.TEMPLATE_FLAG TEMPLATE_FLAG,
631 AVTS.STATUS_CODE VISIT_STATUS_CODE,
632 ATSK.VISIT_TASK_ID TASK_ID,
633 ATSK.VISIT_TASK_NUMBER TASK_NUMBER,
634 ATSKL.VISIT_TASK_NAME TASK_NAME,
635 ATSK.INVENTORY_ITEM_ID ITEM_ID,
636 MTSB.CONCATENATED_SEGMENTS ITEM_NAME,
637 ATSK.ITEM_ORGANIZATION_ID ITEM_ORGANIZATION_ID,
638 ATSK.INSTANCE_ID UNIT_ID,
639 ATSK.QUANTITY QUANTITY, --Added by rnahata for Issue 105
640 CSIS.SERIAL_NUMBER UNIT_NAME,
641 CSIS.INSTANCE_NUMBER INSTANCE_NUMBER, --Added by rnahata for Issue 105
642 CSIS.UNIT_OF_MEASURE UOM, --Added by rnahata for Issue 105
643 ATSK.MR_ROUTE_ID MR_ROUTE_ID,
644 AMRH.TITLE MR_NAME,
645 to_char(NULL) ROUTE_NAME,
646 to_char(NULL) ROUTE_TYPE_CODE,
647 to_char(NULL) ROUTE_TYPE,
648 AWO.WORKORDER_ID WORK_ORDER_ID,
649 AWO.WORKORDER_NAME WORKORDER_NAME,
650 AWO.STATUS_CODE WORKORDER_STATUS,
651 LKUP2.MEANING WORKORDER_STATUS_MEANING,
652 AWO.ACTUAL_START_DATE WORKORDER_START_DATE,
653 AWO.ACTUAL_END_DATE WORKORDER_END_DATE,
654 ATSK.SERVICE_REQUEST_ID SERVICE_REQ_ID,
655 SR.INCIDENT_NUMBER SERVICE_REQ_NAME,
656 ATSK.START_DATE_TIME START_DATE_TIME,
657 ATSK.END_DATE_TIME END_DATE_TIME,
658 -- SKPATHAK :: ER: 9147951 :: 11-JAN-2010 :: Fetch past start and end dates too
659 ATSK.PAST_TASK_START_DATE,
660 ATSK.PAST_TASK_END_DATE,
661 ATSK.TASK_TYPE_CODE TASK_TYPE_CODE,
662 LKUP1.MEANING TASK_TYPE_NAME,
663 ATSK.STATUS_CODE TASK_STATUS_CODE,
664 LKUP3.MEANING TASK_STATUS_NAME,
665 ATSK.STAGE_ID STAGE_ID,
666 ASTG.STAGE_NUM STAGE_NUM,
667 ASTG.STAGE_NAME STAGE_NAME,
668 AUEF.DUE_DATE DUE_BY_DATE,
669 ATSK.DEPARTMENT_ID,
670 BDPT.DESCRIPTION DEPARTMENT_NAME,
671 ATSK.ORIGINATING_TASK_ID ORIGINATING_TASK_ID,
672 ORIGTSK.VISIT_TASK_NUMBER ORIGINATING_TASK_NUMBER,
673 ORIGTSK.VISIT_TASK_NAME ORIGINATING_TASK_NAME,
674 ATSK.MR_ID MR_ID,
675 ATSK.UNIT_EFFECTIVITY_ID UNIT_EFFECTIVITY_ID,
676 AMRH.DESCRIPTION MR_DESCRIPTION,
677 ATSK.SERVICE_TYPE_CODE SERVICE_TYPE_CODE,
678 PA.MEANING SERVICE_TYPE,
679 --MANESING::Component Maintenance Planning Project, 07-Aug-2011, added target quantity
680 ATSK.target_qty,
681 --manisaga added all the attributes and ROUTE_ID as part of DFF Enablement 0n 18-Feb-2010--Start
682 to_number(NULL) ROUTE_ID,
683 ATSK.attribute_category,
684 ATSK.Attribute1,
685 ATSK.Attribute2,
686 ATSK.Attribute3,
687 ATSK.Attribute4,
688 ATSK.Attribute5,
689 ATSK.Attribute6,
690 ATSK.Attribute7,
691 ATSK.Attribute8,
692 ATSK.Attribute9,
693 ATSK.Attribute10,
694 ATSK.Attribute11,
695 ATSK.Attribute12,
696 ATSK.Attribute13,
697 ATSK.Attribute14,
698 ATSK.Attribute15
699 --manisaga added all the attributes and ROUTE_ID as part of DFF Enablement 0n 18-Feb-2010--End
700 FROM AHL_VISITS_B AVTS,
701 AHL_VISIT_TASKS_B ATSK,
702 AHL_VISIT_TASKS_TL ATSKL,
703 AHL_VISIT_TASKS_VL ORIGTSK,
704 AHL_MR_HEADERS_VL AMRH,
705 AHL_UNIT_EFFECTIVITIES_B AUEF,
706 CSI_ITEM_INSTANCES CSIS,
707 CS_INCIDENTS_ALL_B SR,
708 AHL_VWP_STAGES_VL ASTG,
709 BOM_DEPARTMENTS BDPT,
710 FND_LOOKUP_VALUES LKUP1,
711 FND_LOOKUP_VALUES LKUP2,
712 FND_LOOKUP_VALUES LKUP3,
713 MTL_SYSTEM_ITEMS_B_KFV MTSB,
714 AHL_WORKORDERS AWO,
715 PA_LOOKUPS PA
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.UNIT_EFFECTIVITY_ID = AUEF.UNIT_EFFECTIVITY_ID(+)
720 AND ATSK.INVENTORY_ITEM_ID = MTSB.INVENTORY_ITEM_ID(+)
721 AND ATSK.ITEM_ORGANIZATION_ID = MTSB.ORGANIZATION_ID(+)
722 AND LKUP1.LOOKUP_TYPE(+) = 'AHL_VWP_TASK_TYPE'
723 AND LKUP1.LOOKUP_CODE(+) = ATSK.TASK_TYPE_CODE
724 AND LKUP1.LANGUAGE (+) = userenv('LANG')
725 AND LKUP3.LOOKUP_TYPE(+) = 'AHL_VWP_TASK_STATUS'
726 AND LKUP3.LOOKUP_CODE(+) = ATSK.STATUS_CODE
727 AND LKUP3.LANGUAGE (+) = userenv('LANG')
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.VISIT_TASK_ID = AWO.VISIT_TASK_ID(+)
732 AND ATSK.MR_ID IS NOT NULL
733 AND NVL(ATSK.STATUS_CODE,'X') <> 'DELETED'
734 AND ATSK.TASK_TYPE_CODE = 'SUMMARY'
735 AND AMRH.MR_HEADER_ID = ATSK.MR_ID
736 AND LKUP2.LOOKUP_TYPE(+) = 'AHL_JOB_STATUS'
737 AND LKUP2.LOOKUP_CODE(+) = AWO.STATUS_CODE
738 AND LKUP2.LANGUAGE (+) = userenv('LANG')
739 AND ATSK.STAGE_ID = ASTG.STAGE_ID(+)
740 AND ATSK.VISIT_TASK_ID = ATSKL.VISIT_TASK_ID
741 AND ATSKL.LANGUAGE(+) = USERENV('LANG')
742 AND PA.LOOKUP_TYPE(+) = 'SERVICE TYPE'
743 AND PA.LOOKUP_CODE(+) = ATSK.SERVICE_TYPE_CODE
744 AND ATSK.VISIT_TASK_ID = x_T_id;
745
746 CURSOR c_sr_task_details (x_T_id IN NUMBER) IS
747 SELECT AVTS.VISIT_ID VISIT_ID,
748 AVTS.VISIT_NUMBER VISIT_NUMBER,
749 AVTS.TEMPLATE_FLAG TEMPLATE_FLAG,
750 AVTS.STATUS_CODE VISIT_STATUS_CODE,
751 ATSK.VISIT_TASK_ID TASK_ID,
752 ATSK.VISIT_TASK_NUMBER TASK_NUMBER,
753 ATSK.VISIT_TASK_NAME TASK_NAME,
754 ATSK.INVENTORY_ITEM_ID ITEM_ID,
755 MTSB.CONCATENATED_SEGMENTS ITEM_NAME,
756 ATSK.ITEM_ORGANIZATION_ID ITEM_ORGANIZATION_ID,
757 ATSK.INSTANCE_ID UNIT_ID,
758 ATSK.QUANTITY QUANTITY, --Added by rnahata for Issue 105
759 CSIS.SERIAL_NUMBER UNIT_NAME,
760 CSIS.INSTANCE_NUMBER INSTANCE_NUMBER, --Added by rnahata for Issue 105
761 CSIS.UNIT_OF_MEASURE UOM, --Added by rnahata for Issue 105
762 to_number(null) MR_ROUTE_ID,
763 to_char(NULL) MR_NAME,
764 to_char(NULL) ROUTE_NAME,
765 to_char(NULL) ROUTE_TYPE_CODE,
766 to_char(NULL) ROUTE_TYPE,
767 AWO.WORKORDER_ID WORK_ORDER_ID,
768 AWO.WORKORDER_NAME WORKORDER_NAME,
769 AWO.STATUS_CODE WORKORDER_STATUS,
770 LKUP3.MEANING WORKORDER_STATUS_MEANING,
771 AWO.ACTUAL_START_DATE WORKORDER_START_DATE,
772 AWO.ACTUAL_END_DATE WORKORDER_END_DATE,
773 ATSK.SERVICE_REQUEST_ID SERVICE_REQ_ID,
774 SR.INCIDENT_NUMBER SERVICE_REQ_NAME,
775 ATSK.START_DATE_TIME START_DATE_TIME,
776 ATSK.END_DATE_TIME END_DATE_TIME,
777 -- SKPATHAK :: ER: 9147951 :: 11-JAN-2010 :: Fetch past start and end dates too
778 ATSK.PAST_TASK_START_DATE,
779 ATSK.PAST_TASK_END_DATE,
780 ATSK.TASK_TYPE_CODE TASK_TYPE_CODE,
781 LKUP1.MEANING TASK_TYPE_NAME,
782 ATSK.STATUS_CODE TASK_STATUS_CODE,
783 LKUP2.MEANING TASK_STATUS_NAME,
784 ATSK.STAGE_ID STAGE_ID,
785 ASTG.STAGE_NUM STAGE_NUM,
786 ASTG.STAGE_NAME STAGE_NAME,
787 to_date(NULL) DUE_BY_DATE,
788 ATSK.DEPARTMENT_ID DEPARTMENT_ID,
789 BDPT.DESCRIPTION DEPARTMENT_NAME,
790 ATSK.ORIGINATING_TASK_ID ORIGINATING_TASK_ID,
791 ORIGTSK.VISIT_TASK_NUMBER ORIGINATING_TASK_NUMBER,
792 ORIGTSK.VISIT_TASK_NAME ORIGINATING_TASK_NAME,
793 to_number(null) MR_ID,
794 ATSK.UNIT_EFFECTIVITY_ID UNIT_EFFECTIVITY_ID,
795 to_char(NULL) MR_DESCRIPTION,
796 ATSK.SERVICE_TYPE_CODE SERVICE_TYPE_CODE,
797 PA.MEANING SERVICE_TYPE,
798 --MANESING::Component Maintenance Planning Project, 07-Aug-2011, added target quantity
799 ATSK.target_qty,
800 --manisaga added all the attributes and ROUTE_ID as part of DFF Enablement 0n 18-Feb-2010--Start
801 to_number(NULL) ROUTE_ID,
802 ATSK.attribute_category,
803 ATSK.Attribute1,
804 ATSK.Attribute2,
805 ATSK.Attribute3,
806 ATSK.Attribute4,
807 ATSK.Attribute5,
808 ATSK.Attribute6,
809 ATSK.Attribute7,
810 ATSK.Attribute8,
811 ATSK.Attribute9,
812 ATSK.Attribute10,
813 ATSK.Attribute11,
814 ATSK.Attribute12,
815 ATSK.Attribute13,
816 ATSK.Attribute14,
817 ATSK.Attribute15
818 --manisaga added all the attributes and ROUTE_ID as part of DFF Enablement 0n 18-Feb-2010--End
819 FROM AHL_VISITS_VL AVTS,
820 AHL_VISIT_TASKS_VL ATSK,
821 AHL_VISIT_TASKS_VL ORIGTSK,
822 CSI_ITEM_INSTANCES CSIS,
823 CS_INCIDENTS_ALL_B SR,
824 AHL_VWP_STAGES_VL ASTG,
825 BOM_DEPARTMENTS BDPT,
826 FND_LOOKUP_VALUES_VL LKUP1,
827 FND_LOOKUP_VALUES_VL LKUP2,
828 FND_LOOKUP_VALUES_VL LKUP3,
829 MTL_SYSTEM_ITEMS_B_KFV MTSB,
830 AHL_WORKORDERS AWO,
831 PA_LOOKUPS PA
832 WHERE ATSK.INSTANCE_ID = CSIS.INSTANCE_ID (+)
833 AND ATSK.ORIGINATING_TASK_ID = ORIGTSK.VISIT_TASK_ID(+)
834 AND ATSK.SERVICE_REQUEST_ID = SR.INCIDENT_ID(+)
835 AND ATSK.INVENTORY_ITEM_ID = MTSB.INVENTORY_ITEM_ID(+)
836 AND ATSK.ITEM_ORGANIZATION_ID = MTSB.ORGANIZATION_ID(+)
837 AND ATSK.VISIT_TASK_ID = AWO.VISIT_TASK_ID(+)
838 AND LKUP1.LOOKUP_TYPE(+) = 'AHL_VWP_TASK_TYPE'
839 AND LKUP1.LOOKUP_CODE(+) = ATSK.TASK_TYPE_CODE
840 AND LKUP2.LOOKUP_TYPE(+) = 'AHL_VWP_TASK_STATUS'
841 AND LKUP2.LOOKUP_CODE(+) = ATSK.STATUS_CODE
842 AND LKUP3.LOOKUP_TYPE(+) = 'AHL_JOB_STATUS'
843 AND LKUP3.LOOKUP_CODE(+) = AWO.STATUS_CODE
844 AND AVTS.VISIT_ID = ATSK.VISIT_ID
845 AND AVTS.TEMPLATE_FLAG = 'N'
846 AND ATSK.DEPARTMENT_ID = BDPT.DEPARTMENT_ID(+)
847 AND ATSK.MR_ID IS NULL
848 AND NVL(ATSK.STATUS_CODE,'X') <> 'DELETED'
849 AND ATSK.TASK_TYPE_CODE = 'SUMMARY'
850 AND ATSK.STAGE_ID = ASTG.STAGE_ID(+)
851 AND PA.LOOKUP_TYPE(+) = 'SERVICE TYPE'
852 AND PA.LOOKUP_CODE(+) = ATSK.SERVICE_TYPE_CODE
853 AND ATSK.VISIT_TASK_ID = x_T_id;
854
855 -- To find all task related information which is not in visit/template search views
856 CURSOR c_task_data(p_task_id IN NUMBER) IS
857 SELECT T1.*, T2.TEMPLATE_FLAG, T2.ORGANIZATION_ID
858 FROM AHL_VISIT_TASKS_VL T1, AHL_VISITS_VL T2
859 WHERE T1.visit_task_id = p_task_id
860 AND T1.VISIT_ID = T2.VISIT_ID;
861 c_task_data_rec c_task_data%ROWTYPE;
862
863 -- To find task's unit effectivity related information
864 CURSOR c_unit_effectivity (p_ue_id IN NUMBER) IS
865 SELECT MR_Interval_Id, Due_Date FROM AHL_UNIT_EFFECTIVITIES_VL
866 WHERE (STATUS_CODE IS NULL OR STATUS_CODE IN ('INIT-DUE', 'DEFERRED'))
867 AND UNIT_EFFECTIVITY_ID = p_ue_id;
868 c_unit_effectivity_rec c_unit_effectivity%ROWTYPE;
869
870 -- To find task's route related information
871 CURSOR c_zone (p_route_id IN NUMBER) IS
872 /*
873 SELECT ZONE_CODE, SUB_ZONE_CODE, TIME_SPAN FROM AHL_ROUTES_V
874 WHERE ROUTE_ID = p_route_id;
875 */
876 /*
877 Modified by rnahata for Bug 6447221 / 6512871
878 Removed timespan fron cursor, since task duration will be calculated
879 based on route time span as well as resource requirements
880 */
881 -- AnRaj: Changed query for perf issue#4, Bug 4919465
882 SELECT ZONE_CODE, SUB_ZONE_CODE
883 FROM AHL_ROUTES_APP_V
884 WHERE ROUTE_ID = p_route_id;
885
886 -- To find task's route related information
887 CURSOR c_route (p_mr_route_id IN NUMBER) IS
888 SELECT A.ROUTE_ID
889 FROM AHL_MR_ROUTES A, AHL_MR_HEADERS_APP_V B
890 WHERE A.MR_HEADER_ID=B.MR_HEADER_ID
891 AND A.MR_ROUTE_ID = p_mr_route_id;
892
893 -- To find task's unit effectivity tolerance related information
894 CURSOR c_tolerance (p_interval_id IN NUMBER) IS
895 SELECT Tolerance_Before, Tolerance_After
896 FROM Ahl_MR_Intervals_APP_V WHERE MR_Interval_Id=p_interval_id;
897 c_tolerance_rec c_tolerance%ROWTYPE;
898
899 -- To find task's unit effectivity unit of measure related information
900 /* CURSOR c_unitofmeasure (l_tol_before IN NUMBER, l_tol_after IN NUMBER) IS
901 SELECT UOM.Unit_of_Measure
902 FROM MTL_Units_Of_Measure_vl UOM, CS_Counters C, Ahl_MR_Intervals_APP_V MRI
903 WHERE UOM.Uom_Code = C.Uom_Code AND C.Counter_Id = MRI.Counter_Id AND
904 Tolerance_Before = l_tol_before AND Tolerance_After = l_tol_after;
905 */
906 -- AnRaj: Changed query for perf issue#5, Bug 4919465
907 CURSOR c_unitofmeasure (p_interval_id IN NUMBER) IS
908 SELECT UOM.Unit_of_Measure
909 FROM MTL_Units_Of_Measure UOM,
910 csi_counter_template_b C,
911 AHL_MR_INTERVALS MRI
912 WHERE UOM.Uom_Code = C.Uom_Code
913 AND C.Counter_Id = MRI.Counter_Id
914 AND MR_INTERVAL_ID = p_interval_id;
915 c_unitofmeasure_rec c_unitofmeasure%ROWTYPE;
916
917 -- To find task number for cost_parent_id and originating task id
918 CURSOR c_number(x_id IN NUMBER) IS
919 SELECT Visit_Task_Number FROM Ahl_Visit_Tasks_B
920 WHERE Visit_Task_Id = x_id;
921
922 -- To find project task nubmer for project's task
923 CURSOR c_proj_task (x_id IN NUMBER) IS
924 SELECT TASK_NUMBER FROM PA_TASKS WHERE TASK_ID = x_id;
925
926 -- Added by Senthil for 11.5.10 enhancements.
927 CURSOR c_workorders (p_visit_id IN NUMBER, p_visit_task_id IN NUMBER)
928 IS
929 SELECT
930 /* scheduled_start_date,
931 scheduled_end_date
932 FROM
933 ahl_workorders_v
934 WHERE visit_id = p_visit_id
935 AND visit_task_id = p_visit_task_id;
936 */
937 -- AnRaj: Changed query for perf issue#2, Bug 4919465
938 wdj.scheduled_start_date scheduled_start_date,
939 wdj.scheduled_completion_date scheduled_end_date
940 FROM wip_discrete_jobs wdj,
941 ahl_workorders wo
942 WHERE wdj.wip_entity_id = wo.wip_entity_id
943 AND visit_id = p_visit_id
944 AND visit_task_id = p_visit_task_id;
945
946 -- salogan added for supplier warranty starts
947 -- Cursor to fetch entitlement records
948 CURSOR c_warranty_record (p_task_id IN NUMBER)
949 IS
950 SELECT ASWE.WARRANTY_ENTITLEMENT_ID,
951 AWCB.CONTRACT_NUMBER,
952 LKUP1.MEANING ENTITLEMENT_STATUS,
953 ASWE.ENTITLEMENT_STATUS_CODE,
954 AWCL.CLAIM_NAME,
955 LKUP2.MEANING CLAIM_STATUS,
956 AWCL.CLAIM_STATUS_CODE,
957 AHL_WARRANTY_ENTL_PVT.IS_TASK_WARRANTY_AVAILABLE(ATSK.VISIT_TASK_ID) TASK_WARRANTY_FLAG,
958 AHL_WARRANTY_CONTRACTS_PVT.IS_INSTANCE_WARRANTY_AVAILABLE(ATSK.INSTANCE_ID) INSTANCE_WARRANTY_FLAG,
959 NVL2(TO_NUMBER(ASWE.WARRANTY_ENTITLEMENT_ID)
960 , DECODE(ASWE.ENTITLEMENT_STATUS_CODE, 'NOT_APPLICABLE', 'Y', 'N')
961 , 'Y') WARRANTY_NOT_APPL_FLAG
962 FROM AHL_VISIT_TASKS_VL ATSK,
963 AHL_WARRANTY_ENTITLEMENTS ASWE,
964 AHL_WARRANTY_CLAIMS_B AWCL,
965 AHL_WARRANTY_CONTRACTS_B AWCB,
966 FND_LOOKUP_VALUES_VL LKUP1,
967 FND_LOOKUP_VALUES_VL LKUP2
968 WHERE ATSK.VISIT_TASK_ID = ASWE.VISIT_TASK_ID(+)
969 AND ASWE.WARRANTY_CONTRACT_ID = AWCB.WARRANTY_CONTRACT_ID(+)
970 AND ASWE.WARRANTY_CLAIM_ID = AWCL.WARRANTY_CLAIM_ID(+)
971 AND LKUP1.LOOKUP_TYPE(+) = 'AHL_WARRANTY_ENTLMNT_STATUS'
972 AND lkup1.lookup_code(+) = ASWE.entitlement_status_code
973 AND LKUP2.LOOKUP_TYPE(+) = 'AHL_WARRANTY_CLAIM_STATUS'
974 AND LKUP2.LOOKUP_CODE(+) = AWCL.CLAIM_STATUS_CODE
975 AND NVL(ATSK.STATUS_CODE,'X') <> 'DELETED'
976 AND ATSK.VISIT_TASK_ID = p_task_id;
977 c_warranty_rec c_warranty_record%ROWTYPE;
978 -- salogan added for supplier warranty ends
979
980 BEGIN
981 IF (l_log_procedure >= l_log_current_level) THEN
982 fnd_log.string(l_log_procedure,
983 L_DEBUG_KEY ||'.begin',
984 'At the start of PL SQL procedure.' ||
985 ', p_task_id = ' || p_task_id);
986 END IF;
987
988 -- Standard start of API savepoint
989 SAVEPOINT Get_Task_Details;
990
991 IF Fnd_Api.to_boolean (p_init_msg_list) THEN
992 Fnd_Msg_Pub.initialize;
993 END IF;
994
995 -- Initialize API return status to success
996 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
997
998 -- Standard call to check for call compatibility.
999 IF NOT Fnd_Api.compatible_api_call(
1000 l_api_version,
1001 p_api_version,
1002 l_api_name,
1003 G_PKG_NAME
1004 ) THEN
1005 RAISE Fnd_Api.g_exc_unexpected_error;
1006 END IF;
1007
1008 ------------------------Start of API Body------------------------------------
1009 ------------------------Cursor------------------------------------
1010
1011 -- Cursor for task related information in search task view
1012 /*
1013 OPEN c_task(p_task_id);
1014 FETCH c_task INTO c_task_rec;
1015 CLOSE c_task;
1016 */
1017
1018 OPEN c_task_type(p_task_id);
1019 FETCH c_task_type INTO c_task_type_rec;
1020 CLOSE c_task_type;
1021
1022 IF c_task_type_rec.task_type_code <> 'SUMMARY' THEN
1023 OPEN c_non_summary_task_details(p_task_id);
1024 FETCH c_non_summary_task_details INTO c_task_rec;
1025 CLOSE c_non_summary_task_details;
1026 ELSIF c_task_type_rec.task_type_code = 'SUMMARY' AND c_task_type_rec.mr_id IS NOT NULL THEN
1027 OPEN c_mr_task_details(p_task_id);
1028 FETCH c_mr_task_details INTO c_task_rec;
1029 CLOSE c_mr_task_details;
1030 ELSIF c_task_type_rec.task_type_code = 'SUMMARY' AND c_task_type_rec.mr_id IS NULL THEN
1031 OPEN c_sr_task_details(p_task_id);
1032 FETCH c_sr_task_details INTO c_task_rec;
1033 CLOSE c_sr_task_details;
1034 END IF;
1035
1036 -- Cursor for task related information not in search task view
1037 OPEN c_task_data(p_task_id);
1038 FETCH c_task_data INTO c_task_data_rec;
1039 CLOSE c_task_data;
1040
1041 -- Cursor to find visit information
1042 OPEN c_visit (c_task_data_rec.visit_id);
1043 FETCH c_visit INTO c_visit_rec;
1044 CLOSE c_visit;
1045
1046 -- For Debug Messages
1047 IF (l_log_statement >= l_log_current_level) THEN
1048 fnd_log.string(l_log_statement,
1049 L_DEBUG_KEY,
1050 ': task id = ' || p_task_id ||
1051 ': version, task name, task number = ' || c_task_data_rec.object_version_number || '---' || c_task_rec.task_name || '---' || c_task_rec.task_number ||
1052 ': item id, org id, itemname = ' || c_task_rec.item_id || '-' || c_task_rec.item_organization_id || '-' || c_task_rec.item_name ||
1053 ': mr_routeid, route_name, mr_name= ' || c_task_rec.mr_route_id || '-' || c_task_rec.route_name || '-' || c_task_rec.mr_name ||
1054 ': serial number = ' || c_task_rec.unit_name ||
1055 ': instance = ' || c_task_rec.instance_number ||
1056 ': quantity = ' || c_task_rec.quantity ||
1057 ': uom = ' || c_task_rec.uom ||
1058 ': servicenubmer, starthour, = ' || c_task_rec.service_req_name || '-' || c_task_data_rec.start_from_hour ||
1059 ': l_duration = ' || l_duration ||
1060 ': costid, originatingid = ' || c_task_data_rec.cost_parent_id || '-' || c_task_data_rec.originating_task_id ||
1061 ': task type code, value = ' || c_task_rec.task_type_code || '-' || c_task_rec.task_type_name ||
1062 ': department_id = ' || c_task_data_rec.department_id);
1063 END IF;
1064
1065 -- Check the Task Type code
1066 -- For PLANNED in case then get required data for Unit Effectivity
1067 IF c_task_rec.TASK_TYPE_CODE = 'PLANNED' THEN
1068 OPEN c_unit_effectivity(c_task_data_rec.unit_effectivity_id);
1069 FETCH c_unit_effectivity INTO c_unit_effectivity_rec;
1070 CLOSE c_unit_effectivity;
1071
1072 OPEN c_tolerance (c_unit_effectivity_rec.mr_interval_id);
1073 FETCH c_tolerance INTO c_tolerance_rec;
1074 CLOSE c_tolerance;
1075
1076 OPEN c_unitofmeasure (c_unit_effectivity_rec.mr_interval_id);
1077 FETCH c_unitofmeasure INTO c_unitofmeasure_rec;
1078 CLOSE c_unitofmeasure;
1079
1080 l_tol_after := c_tolerance_rec.tolerance_after ;
1081 l_tol_before := c_tolerance_rec.tolerance_before;
1082 l_due_by_date := TRUNC(c_unit_effectivity_rec.due_date) ;
1083 l_uom := c_unitofmeasure_rec.unit_of_measure ;
1084 ELSE
1085 l_tol_after := NULL ;
1086 l_tol_before := NULL ;
1087 l_due_by_date := NULL ;
1088 l_uom := NULL ;
1089 END IF;
1090
1091 IF c_task_rec.TASK_TYPE_CODE = 'PLANNED' OR c_task_rec.TASK_TYPE_CODE = 'UNPLANNED' THEN
1092 OPEN c_route(c_task_rec.mr_route_id);
1093 FETCH c_route INTO l_route_id;
1094 CLOSE c_route;
1095
1096 OPEN c_zone(l_route_id);
1097 FETCH c_zone INTO l_zone, l_sub_zone ;
1098 CLOSE c_zone;
1099 /*
1100 Added by rnahata for Bug 6447221 / 6512871
1101 Task duration will be calculated based on route time span as well as resource requirements
1102 */
1103 l_duration := AHL_VWP_TIMES_PVT.Get_task_duration(c_task_rec.quantity,l_route_id);
1104 ELSE
1105 l_zone := NULL;
1106 l_sub_zone := NULL;
1107 l_duration := c_task_data_rec.duration;
1108 END IF;
1109
1110 -- For finding visit task number for originating task id
1111 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
1112 OPEN c_number(c_task_data_rec.originating_task_id);
1113 FETCH c_number INTO l_origin_num;
1114 CLOSE c_number;
1115 ELSE
1116 l_origin_num := NULL;
1117 END IF;
1118
1119 -- For finding visit task number for cost parent id
1120 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
1121 OPEN c_number(c_task_data_rec.cost_parent_id);
1122 FETCH c_number INTO l_parent_num;
1123 CLOSE c_number;
1124 ELSE
1125 l_parent_num := NULL;
1126 END IF;
1127
1128 -- Added by Senthil for 11.5.10 Changes
1129 -- SKPATHAK :: 02-MAY-2011 :: VWPE
1130 -- Need to consider DRAFT status also
1131 IF ( upper(c_task_rec.visit_status_code) IN ('PLANNING','DRAFT') or
1132 (upper(c_task_rec.visit_status_code) = 'PARTIALLY RELEASED' and upper(c_task_rec.task_status_code) = 'PLANNING')) THEN
1133 --Fetch directly from visit task record
1134 l_task_start_date := c_task_rec.START_DATE_TIME;
1135 l_task_end_date := c_task_rec.END_DATE_TIME;
1136
1137 ELSE
1138 --Fetch from the workorder
1139 OPEN c_workorders(c_task_rec.visit_id,p_task_id);
1140 FETCH c_workorders INTO l_task_start_date,l_task_end_date;
1141 CLOSE c_workorders;
1142
1143 -- Added by sowsubra on July 24, 2007 for B6032334
1144 OPEN c_proj_task(c_task_data_rec.project_task_id);
1145 FETCH c_proj_task INTO l_proj_task_number;
1146 CLOSE c_proj_task;
1147 -- End Changes by sowsubra on July 24, 2007 for B6032334
1148
1149 END IF;
1150
1151 -- For Debug Messages
1152 IF (l_log_statement >= l_log_current_level) THEN
1153 fnd_log.string(l_log_statement,
1154 L_DEBUG_KEY,
1155 'l_origin_num = ' || l_origin_num ||
1156 'l_parent_num = ' || l_parent_num ||
1157 'l_task_start_date = ' || l_task_start_date ||
1158 'l_task_end_date = '|| l_task_end_date ||
1159 'l_proj_task_number = ' || l_proj_task_number );
1160 END IF;
1161
1162 -- salogan added for supplier warranty starts
1163 -- Open/fetch the values into the cursor type
1164 OPEN c_warranty_record (p_task_id);
1165 FETCH c_warranty_record INTO c_warranty_rec;
1166 CLOSE c_warranty_record;
1167
1168 IF (l_log_statement >= l_log_current_level) THEN
1169 fnd_log.string(l_log_statement,
1170 L_DEBUG_KEY,
1171 ': task id = ' || p_task_id ||
1172 ': WARRANTY ENTITLEMENT ID, MEANING ENTITLEMENT STATUS , ENTITLEMENT STATUS CODE = ' || c_warranty_rec.WARRANTY_ENTITLEMENT_ID || '-' || c_warranty_rec.ENTITLEMENT_STATUS || '-' || c_warranty_rec.ENTITLEMENT_STATUS_CODE ||
1173 ': CONTRACT NUMBER, CLAIM NAME, CLAIM STATUS , CLAIM STATUS CODE = ' || c_warranty_rec.CONTRACT_NUMBER || '-' || c_warranty_rec.CLAIM_NAME || '-' || c_warranty_rec.CLAIM_STATUS || '-' || c_warranty_rec.CLAIM_STATUS_CODE ||
1174 ': TASK WARRANTY FLAG, INSTANCE WARRANTY FLAG, WARRANTY NOT APPLICABLE FLAG= ' || c_warranty_rec.TASK_WARRANTY_FLAG || '-' || c_warranty_rec.INSTANCE_WARRANTY_FLAG || '-' || c_warranty_rec.WARRANTY_NOT_APPL_FLAG);
1175 END IF;
1176 -- salogan added for supplier warranty ends
1177
1178 -- For assigning all values of visit to output record type
1179 l_task_rec.visit_id := c_task_rec.visit_id ;
1180 l_task_rec.template_flag := c_task_rec.template_flag ;
1181 l_task_rec.visit_task_id := c_task_rec.task_id ;
1182 l_task_rec.visit_task_number := c_task_rec.task_number ;
1183 l_task_rec.visit_task_name := c_task_rec.task_name ;
1184 l_task_rec.object_version_number := c_task_data_rec.object_version_number ;
1185 l_task_rec.duration := l_duration ;
1186 l_task_rec.inventory_item_id := c_task_rec.item_id ;
1187 l_task_rec.item_organization_id := c_task_rec.item_organization_id ;
1188 l_task_rec.item_name := c_task_rec.item_name ;
1189 l_task_rec.department_id := c_task_rec.department_id ;
1190 l_task_rec.dept_name := c_task_rec.department_name;
1191 l_task_rec.serial_number := c_task_rec.unit_name ;
1192 l_task_rec.mr_route_id := c_task_rec.mr_route_id ;
1193 l_task_rec.route_number := c_task_rec.route_name ;
1194 l_task_rec.mr_title := c_task_rec.mr_name ;
1195 l_task_rec.mr_id := c_task_rec.mr_id;
1196 l_task_rec.zone_name := l_zone;
1197 l_task_rec.sub_zone_name := l_sub_zone;
1198 l_task_rec.tolerance_after := l_tol_after;
1199 l_task_rec.tolerance_before := l_tol_before;
1200 l_task_rec.tolerance_UOM := l_uom;
1201 l_task_rec.service_request_number := c_task_rec.service_req_name;
1202 l_task_rec.start_from_hour := c_task_data_rec.start_from_hour;
1203 l_task_rec.cost_parent_number := l_parent_num ;
1204 l_task_rec.orginating_task_number := l_origin_num ;
1205 l_task_rec.task_type_code := c_task_rec.task_type_code ;
1206 l_task_rec.task_type_value := c_task_rec.task_type_name;
1207 l_task_rec.due_by_date := l_due_by_date;
1208 --Post 11.5.10 Changed by cxcheng
1209 l_task_rec.task_start_date := l_task_start_date ;
1210 l_task_rec.task_end_date := l_task_end_date ;
1211 -- SKPATHAK :: ER: 9147951 :: 11-JAN-2010 :: Populate the past date details into the out param
1212 l_task_rec.past_task_start_date := c_task_rec.past_task_start_date;
1213 l_task_rec.past_task_end_date := c_task_rec.past_task_end_date;
1214 l_task_rec.description := c_task_data_rec.description ;
1215 l_task_rec.project_task_id := c_task_data_rec.project_task_id ;
1216 l_task_rec.project_task_number := l_proj_task_number ;
1217 l_task_rec.WO_Name := c_task_rec.workorder_name ;
1218 l_task_rec.WO_Status := c_task_rec.workorder_status_meaning ;
1219 l_task_rec.WO_Start_Date := c_task_rec.workorder_start_date ;
1220 l_task_rec.WO_End_Date := c_task_rec.workorder_end_date ;
1221 -- Post 11.5.10 Changes by Senthil.
1222 l_task_rec.STAGE_ID := c_task_rec.STAGE_ID;
1223 l_task_rec.STAGE_NAME := c_task_rec.STAGE_NAME;
1224 l_task_rec.TASK_TYPE_CODE := c_task_rec.TASK_TYPE_CODE;
1225 l_task_rec.TASK_TYPE_VALUE := c_task_rec.TASK_TYPE_NAME;
1226 l_task_rec.TASK_STATUS_CODE := c_task_rec.TASK_STATUS_CODE;
1227 l_task_rec.TASK_STATUS_VALUE := c_task_rec.TASK_STATUS_NAME;
1228 l_task_rec.instance_id := c_task_data_rec.instance_id;
1229 -- Begin changes by rnahata for Issue 105
1230 l_task_rec.quantity := c_task_rec.quantity;
1231 l_task_rec.UOM := c_task_rec.uom;
1232 l_task_rec.Instance_number := c_task_rec.instance_number;
1233 -- End changes by rnahata for Issue 105
1234
1235 -- PRAKKUM :: FP:PIE :: 13-OCT-2010 :: populate the Service Type attributes too, in the OUT parameter
1236 l_task_rec.service_type_code := c_task_rec.service_type_code;
1237 l_task_rec.service_type := c_task_rec.service_type;
1238
1239 --MANESING::Component Maintenance Planning Project, 07-Aug-2011, added target quantity
1240 l_task_rec.target_qty := c_task_rec.target_qty;
1241
1242 --manisaga assigned all the attributes from c_task_rec to output record and ROUTE_ID as part of DFF Enablement 0n 18-Feb-2010--Start
1243 l_task_rec.attribute_category := c_task_rec.attribute_category;
1244 l_task_rec.attribute1 := c_task_rec.attribute1;
1245 l_task_rec.attribute2 := c_task_rec.attribute2;
1246 l_task_rec.attribute3 := c_task_rec.attribute3;
1247 l_task_rec.attribute4 := c_task_rec.attribute4;
1248 l_task_rec.attribute5 := c_task_rec.attribute5;
1249 l_task_rec.attribute6 := c_task_rec.attribute6;
1250 l_task_rec.attribute7 := c_task_rec.attribute7;
1251 l_task_rec.attribute8 := c_task_rec.attribute8;
1252 l_task_rec.attribute9 := c_task_rec.attribute9;
1253 l_task_rec.attribute10 := c_task_rec.attribute10;
1254 l_task_rec.attribute11 := c_task_rec.attribute11;
1255 l_task_rec.attribute12 := c_task_rec.attribute12;
1256 l_task_rec.attribute13 := c_task_rec.attribute13;
1257 l_task_rec.attribute14 := c_task_rec.attribute14;
1258 l_task_rec.attribute15 := c_task_rec.attribute15;
1259 l_task_rec.route_id := c_task_rec.route_id;
1260 --manisaga assigned all the attributes from c_task_rec to output record and ROUTE_ID as part of DFF Enablement 0n 18-Feb-2010--End
1261
1262 -- salogan added for supplier warranty starts
1263 --populate the out record type with entitlemet details
1264 l_task_rec.WARRANTY_ENTITLEMENT_ID := c_warranty_rec.WARRANTY_ENTITLEMENT_ID;
1265 l_task_rec.CONTRACT_NUMBER := c_warranty_rec.CONTRACT_NUMBER;
1266 l_task_rec.ENTITLEMENT_STATUS := c_warranty_rec.ENTITLEMENT_STATUS;
1267 l_task_rec.ENTITLEMENT_STATUS_CODE := c_warranty_rec.ENTITLEMENT_STATUS_CODE;
1268 l_task_rec.CLAIM_NAME := c_warranty_rec.CLAIM_NAME;
1269 l_task_rec.CLAIM_STATUS := c_warranty_rec.CLAIM_STATUS;
1270 l_task_rec.CLAIM_STATUS_CODE := c_warranty_rec.CLAIM_STATUS_CODE;
1271 l_task_rec.TASK_WARRANTY := c_warranty_rec.TASK_WARRANTY_FLAG;
1272 l_task_rec.INSTANCE_WARRANTY := c_warranty_rec.INSTANCE_WARRANTY_FLAG;
1273 l_task_rec.WARRANTY_NOT_APPL_FLAG := c_warranty_rec.WARRANTY_NOT_APPL_FLAG;
1274 -- salogan added for supplier warranty ends
1275
1276 x_task_rec := l_task_rec;
1277
1278 ------------------------End of API Body------------------------------------
1279 -- Standard call to get message count and if count is 1, get message info
1280 /* Fnd_Msg_Pub.Count_And_Get
1281 ( p_count => x_msg_count,
1282 p_data => x_msg_data,
1283 p_encoded => Fnd_Api.g_false); */
1284
1285 --Standard check to count messages
1286 l_msg_count := Fnd_Msg_Pub.count_msg;
1287
1288 IF l_msg_count > 0 THEN
1289 x_msg_count := l_msg_count;
1290 x_return_status := Fnd_Api.G_RET_STS_ERROR;
1291 RAISE Fnd_Api.G_EXC_ERROR;
1292 END IF;
1293
1294 -- Debug info.
1295 IF (l_log_procedure >= l_log_current_level) THEN
1296 fnd_log.string(l_log_procedure,
1297 L_DEBUG_KEY ||'.end',
1298 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
1299 END IF;
1300 EXCEPTION
1301 WHEN Fnd_Api.G_EXC_ERROR THEN
1302 x_return_status := Fnd_Api.G_RET_STS_ERROR;
1303 ROLLBACK TO Get_Task_Details;
1304 Fnd_Msg_Pub.count_and_get( p_count => x_msg_count,
1305 p_data => x_msg_data,
1306 p_encoded => Fnd_Api.g_false);
1307 WHEN Fnd_Api.G_EXC_UNEXPECTED_ERROR THEN
1308 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
1309 ROLLBACK TO Get_Task_Details;
1310 Fnd_Msg_Pub.count_and_get( p_count => x_msg_count,
1311 p_data => x_msg_data,
1312 p_encoded => Fnd_Api.g_false);
1313 WHEN OTHERS THEN
1314 ROLLBACK TO Get_Task_Details;
1315 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
1316 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
1317 THEN
1318 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
1319 END IF;
1320 Fnd_Msg_Pub.count_and_get (
1321 p_encoded => Fnd_Api.g_false,
1322 p_count => x_msg_count,
1323 p_data => x_msg_data );
1324 END Get_Task_Details;
1325
1326 --------------------------------------------------------------------
1327 -- PROCEDURE
1328 -- Create_Task
1329 -- PURPOSE
1330 -- To create all types of tasks i.e Unassociated/Summary/Unplanned/Planned
1331 --------------------------------------------------------------------
1332 PROCEDURE Create_Task (
1333 p_api_version IN NUMBER,
1334 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
1335 p_commit IN VARCHAR2 := Fnd_Api.g_false,
1336 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
1337 p_module_type IN VARCHAR2 := 'JSP',
1338 p_x_task_rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
1339 x_return_status OUT NOCOPY VARCHAR2,
1340 x_msg_count OUT NOCOPY NUMBER,
1341 x_msg_data OUT NOCOPY VARCHAR2
1342 )
1343 IS
1344 -- Define local variables
1345 L_API_VERSION CONSTANT NUMBER := 1.0;
1346 L_API_NAME CONSTANT VARCHAR2(30) := 'CREATE TASK';
1347 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
1348 l_msg_count NUMBER;
1349 l_msg_data VARCHAR2(2000);
1350 l_return_status VARCHAR2(1);
1351 l_task_rec AHL_VWP_RULES_PVT.Task_Rec_Type := p_x_task_rec;
1352
1353 -- To find visit related information
1354 CURSOR c_visit(x_id IN NUMBER) IS
1355 SELECT * FROM AHL_VISITS_VL
1356 WHERE VISIT_ID = x_id;
1357 c_visit_rec c_visit%ROWTYPE;
1358
1359 --Kasridha:Changes for Component Maintenance Planning Begins
1360 l_is_comp_visit VARCHAR2(1);
1361 l_rpr_batch_task_id NUMBER;
1362 l_target_qty NUMBER := 0;
1363 l_summary_task_id NUMBER;
1364 l_task_type VARCHAR2(30);
1365 l_instance_id NUMBER;
1366 l_repair_batch_name VARCHAR2(100);
1367
1368 -- To find the repair batch task ID for a given instance
1369 CURSOR c_get_rprbatch_task (p_instance_id IN NUMBER,
1370 p_org_id IN NUMBER) IS
1371 SELECT visit_task_id FROM ahl_visit_tasks_b
1372 WHERE repair_batch_name = (AHL_CMP_UTIL_PKG.Get_Rpr_Batch_For_Inst(p_instance_id,
1373 p_org_id));
1374 CURSOR c_task_dtls (p_task_id IN NUMBER) IS
1375 SELECT task_type_code, cost_parent_id, instance_id FROM ahl_visit_tasks_b
1376 WHERE visit_task_id = p_task_id;
1377
1378 --Cursor to get the repair batch name for a given task
1379 CURSOR c_get_repair_batch_name(p_task_id IN NUMBER) IS
1380 SELECT repair_batch_name FROM ahl_visit_tasks_b WHERE
1381 visit_task_id = p_task_id
1382 AND repair_batch_name IS NOT NULL;
1383
1384 --Kasridha:Changes for Component Maintenance Planning Ends
1385
1386 BEGIN
1387 IF (l_log_procedure >= l_log_current_level) THEN
1388 fnd_log.string(l_log_procedure,
1389 L_DEBUG_KEY ||'.begin',
1390 'At the start of PL SQL procedure.');
1391 END IF;
1392
1393 --------------------- initialize -----------------------
1394 SAVEPOINT Create_Task;
1395
1396 -- Initialize message list if p_init_msg_list is set to TRUE.
1397 IF Fnd_Api.to_boolean(p_init_msg_list)
1398 THEN
1399 Fnd_Msg_Pub.initialize;
1400 END IF;
1401
1402 -- Initialize API return status to success
1403 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
1404
1405 -- Standard call to check for call compatibility.
1406 IF NOT Fnd_Api.COMPATIBLE_API_CALL(l_api_version,
1407 p_api_version,
1408 l_api_name,G_PKG_NAME)
1409 THEN
1410 RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
1411 END IF;
1412
1413 --------------------Start of API Body-----------------------------------
1414 -------------------Cursor values------------------------------------
1415 OPEN c_visit(l_task_rec.visit_id);
1416 FETCH c_visit INTO c_visit_rec;
1417 CLOSE c_visit;
1418
1419 IF (l_log_statement >= l_log_current_level) THEN
1420 fnd_log.string(l_log_statement,
1421 L_DEBUG_KEY,
1422 'Visit Id = ' || c_visit_rec.visit_id ||
1423 ', Status Code = ' || c_visit_rec.status_code);
1424 END IF;
1425 -- Kasridha: Changes for Component Maintenance Planning
1426 l_is_comp_visit := AHL_CMP_UTIL_PKG.Is_Comp_Visit(l_task_rec.visit_id);
1427 -- SKPATHAK :: ER: 9147951 :: 11-JAN-2010 :: STARTS
1428 IF (l_task_rec.PAST_TASK_START_DATE IS NOT NULL
1429 AND l_task_rec.PAST_TASK_START_DATE <> Fnd_Api.G_MISS_DATE) THEN
1430 IF (l_task_rec.PAST_TASK_END_DATE IS NULL
1431 OR l_task_rec.PAST_TASK_START_DATE = Fnd_Api.G_MISS_DATE) THEN
1432 -- if start date is entered but not end date, throw error
1433 Fnd_Message.SET_NAME('AHL','AHL_VWP_PAST_TASK_DATE_MAND');
1434 Fnd_Msg_Pub.ADD;
1435 RAISE FND_API.G_EXC_ERROR;
1436 END IF;
1437 IF (l_task_rec.PAST_TASK_START_DATE >= SYSDATE) THEN
1438 -- Throw error if start date is not in past
1439 Fnd_Message.SET_NAME('AHL','AHL_VWP_TASK_PAST_ST_DATE_INV');
1440 Fnd_Msg_Pub.ADD;
1441 RAISE FND_API.G_EXC_ERROR;
1442 END IF;
1443 IF (l_task_rec.PAST_TASK_START_DATE < NVL(c_visit_rec.START_DATE_TIME, l_task_rec.PAST_TASK_START_DATE)) THEN
1444 -- Throw error if past task start date is before the visit start date
1445 Fnd_Message.SET_NAME('AHL','AHL_VWP_TASK_START_DATE_INVLD');
1446 Fnd_Msg_Pub.ADD;
1447 RAISE FND_API.G_EXC_ERROR;
1448 END IF;
1449 IF (l_task_rec.PAST_TASK_START_DATE > l_task_rec.PAST_TASK_END_DATE) THEN
1450 -- Throw error if past task start date is after the past task end date
1451 Fnd_Message.SET_NAME('AHL','AHL_VWP_PAST_TASK_DATE_INVLD');
1452 Fnd_Msg_Pub.ADD;
1453 RAISE FND_API.G_EXC_ERROR;
1454 END IF;
1455 IF (l_task_rec.PAST_TASK_END_DATE > NVL(c_visit_rec.CLOSE_DATE_TIME,l_task_rec.PAST_TASK_END_DATE)) THEN
1456 -- Throw error if visit ends before the task
1457 Fnd_Message.SET_NAME('AHL','AHL_VWP_TASK_END_DATE_INVLD');
1458 Fnd_Msg_Pub.ADD;
1459 RAISE FND_API.G_EXC_ERROR;
1460 END IF;
1461 -- SKPATHAK :: Bug #9402556 :: 24-FEB-2010 :: Added call to Validate_Past_Task_Dates
1462 -- Validate past dates against visit stages, task hierarchy and cost parent hierarchy
1463 AHL_VWP_RULES_PVT.Validate_Past_Task_Dates ( p_task_rec => l_Task_rec,
1464 x_return_status => l_return_status);
1465 IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
1466 IF (l_log_statement >= l_log_current_level) THEN
1467 fnd_log.string(l_log_statement,
1468 L_DEBUG_KEY,
1469 'Returned success from AHL_VWP_RULES_PVT.Validate_Past_Task_Dates');
1470 END IF;
1471 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1472 RAISE FND_API.G_EXC_ERROR;
1473 ELSE
1474 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1475 END IF;
1476
1477 ELSE -- PAST_TASK_START_DATE is null
1478 -- SKPATHAK :: Bug #9402279 :: 24-FEB-2010
1479 -- Changed the condition from l_task_rec.PAST_TASK_START_DATE <> Fnd_Api.G_MISS_DATE
1480 -- to l_task_rec.PAST_TASK_END_DATE <> Fnd_Api.G_MISS_DATE
1481 IF (l_task_rec.PAST_TASK_END_DATE IS NOT NULL
1482 AND l_task_rec.PAST_TASK_END_DATE <> Fnd_Api.G_MISS_DATE) THEN
1483 Fnd_Message.SET_NAME('AHL','AHL_VWP_PAST_TASK_DATE_MAND');
1484 Fnd_Msg_Pub.ADD;
1485 RAISE FND_API.G_EXC_ERROR;
1486 END IF;
1487 l_task_rec.PAST_TASK_START_DATE := NULL;
1488 l_task_rec.PAST_TASK_END_DATE := NULL;
1489 END IF;
1490 -- SKPATHAK :: ER: 9147951 :: 11-JAN-2010 :: END
1491
1492 IF c_visit_rec.status_code IN ('CLOSED','CANCELLED') THEN
1493 Fnd_Message.SET_NAME('AHL','AHL_VWP_NOT_USE_VISIT');
1494 Fnd_Msg_Pub.ADD;
1495 RAISE Fnd_Api.G_EXC_ERROR;
1496 ELSE
1497 IF l_task_rec.task_type_code = 'SUMMARY' THEN
1498 IF (l_log_statement >= l_log_current_level) THEN
1499 fnd_log.string(l_log_statement,
1500 L_DEBUG_KEY,
1501 'Before Calling to Create_Summary_Task, TASK TYPE = ' || l_task_rec.task_type_code);
1502 END IF;
1503 Create_Summary_Task
1504 (
1505 p_api_version => l_api_version,
1506 p_init_msg_list => p_init_msg_list,
1507 p_commit => Fnd_Api.g_false,
1508 p_validation_level => p_validation_level,
1509 p_module_type => p_module_type,
1510 p_x_task_rec => l_task_rec,
1511 x_return_status => l_return_status,
1512 x_msg_count => l_msg_count,
1513 x_msg_data => l_msg_data
1514 );
1515
1516 IF (l_log_statement >= l_log_current_level) THEN
1517 fnd_log.string(l_log_statement,
1518 L_DEBUG_KEY,
1519 'After Calling Create_Summary_Task' ||
1520 ', TASK ID = ' || l_task_rec.visit_task_id ||
1521 ', TASK NUMBER = ' || l_task_rec.visit_task_number ||
1522 ', Return Status = ' || l_return_status );
1523 END IF;
1524 -- set OUT value
1525 p_x_task_rec.Visit_Task_ID := l_task_rec.Visit_Task_ID;
1526 p_x_task_rec.Visit_Task_Number := l_task_rec.Visit_Task_Number;
1527 ELSIF l_task_rec.task_type_code = 'PLANNED' THEN
1528 -- Call AHL_VWP_PLAN_TASKS_PVT
1529 IF (l_log_statement >= l_log_current_level) THEN
1530 fnd_log.string(l_log_statement,
1531 L_DEBUG_KEY,
1532 'Before Calling to AHL_VWP_PLAN_TASKS_PVT.Create_Planned_Task, TASK TYPE = ' || l_task_rec.task_type_code);
1533 END IF;
1534 AHL_VWP_PLAN_TASKS_PVT.Create_Planned_Task (
1535 p_api_version => l_api_version,
1536 p_init_msg_list => p_init_msg_list,
1537 p_commit => Fnd_Api.g_false,
1538 p_validation_level => p_validation_level,
1539 p_module_type => p_module_type,
1540 p_x_task_rec => l_task_rec,
1541 x_return_status => l_return_status,
1542 x_msg_count => l_msg_count,
1543 x_msg_data => l_msg_data
1544 );
1545 IF (l_log_statement >= l_log_current_level) THEN
1546 fnd_log.string(l_log_statement,
1547 L_DEBUG_KEY,
1548 'After Calling AHL_VWP_PLAN_TASKS_PVT.Create_Planned_Task' ||
1549 ', TASK ID = ' || l_task_rec.visit_task_id ||
1550 ', TASK NUMBER = ' || l_task_rec.visit_task_number ||
1551 ', Return Status = ' || l_return_status );
1552 END IF;
1553 ELSIF l_task_rec.task_type_code = 'UNPLANNED' THEN
1554 -- Call AHL_VWP_UNPLAN_TASKS_PVT
1555 IF (l_log_statement >= l_log_current_level) THEN
1556 fnd_log.string(l_log_statement,
1557 L_DEBUG_KEY,
1558 'Before Calling AHL_VWP_UNPLAN_TASKS_PVT.Create_Unplanned_Task, TASK TYPE = ' || l_task_rec.task_type_code);
1559 END IF;
1560 AHL_VWP_UNPLAN_TASKS_PVT.Create_Unplanned_Task (
1561 p_api_version => l_api_version,
1562 p_init_msg_list => p_init_msg_list,
1563 p_commit => Fnd_Api.g_false,
1564 p_validation_level => p_validation_level,
1565 p_module_type => p_module_type,
1566 p_x_task_rec => l_task_rec,
1567 x_return_status => l_return_status,
1568 x_msg_count => l_msg_count,
1569 x_msg_data => l_msg_data
1570 );
1571 IF (l_log_statement >= l_log_current_level) THEN
1572 fnd_log.string(l_log_statement,
1573 L_DEBUG_KEY,
1574 'After Calling AHL_VWP_UNPLAN_TASKS_PVT.Create_Unplanned_Task' ||
1575 ', TASK ID = ' || l_task_rec.visit_task_id ||
1576 ', TASK NUMBER = ' || l_task_rec.visit_task_number ||
1577 ', Return Status = ' || l_return_status );
1578 END IF;
1579 ELSE
1580 IF (l_log_statement >= l_log_current_level) THEN
1581 fnd_log.string(l_log_statement,
1582 L_DEBUG_KEY,
1583 'Before Calling Create_Unassociated_Task, TASK TYPE = ' || l_task_rec.task_type_code);
1584 END IF;
1585 Create_Unassociated_Task
1586 (
1587 p_api_version => l_api_version,
1588 p_init_msg_list => p_init_msg_list,
1589 p_commit => Fnd_Api.g_false,
1590 p_validation_level => p_validation_level,
1591 p_module_type => p_module_type,
1592 p_x_task_rec => l_task_rec,
1593 x_return_status => l_return_status,
1594 x_msg_count => l_msg_count,
1595 x_msg_data => l_msg_data
1596 );
1597 -- set OUT value
1598 p_x_task_rec.Visit_Task_ID := l_task_rec.Visit_Task_ID;
1599 p_x_task_rec.Visit_Task_Number := l_task_rec.Visit_Task_Number;
1600 IF (l_log_statement >= l_log_current_level) THEN
1601 fnd_log.string(l_log_statement,
1602 L_DEBUG_KEY,
1603 'After Calling Create_Unassociated_Task' ||
1604 'Task Id = ' || l_task_rec.visit_task_id ||
1605 'Task Number = ' || l_task_rec.visit_task_number ||
1606 'Return Status = ' || l_return_status );
1607 END IF;
1608 END IF; -- task type code check
1609 END IF; -- Visit check
1610
1611 --SKPATHAK :: Bug 13874699 :: 22-MAR-2012 :: Moved the below piece of code from after the plan visit call to before that call
1612 IF c_visit_rec.STATUS_CODE = 'RELEASED' THEN
1613 UPDATE AHL_VISITS_B
1614 SET STATUS_CODE = 'PARTIALLY RELEASED',
1615 OBJECT_VERSION_NUMBER = OBJECT_VERSION_NUMBER +1
1616 WHERE VISIT_ID =c_visit_rec.VISIT_ID ;
1617 END IF;
1618
1619
1620 -- SATHAPLI::Component Maintenance Planning Project, 18-JUL_2011
1621 -- If it's a component visit, then plan it for the repair batch SUMMARY tasks (workscope parent tasks)
1622 IF (l_is_comp_visit = 'Y' AND
1623 l_task_rec.task_type_code = 'SUMMARY' AND
1624 l_task_rec.mr_id IS NULL) THEN
1625 AHL_VWP_PROJ_PROD_PVT.plan_visit(
1626 p_api_version => l_api_version,
1627 p_init_msg_list => Fnd_Api.g_false,
1628 p_commit => Fnd_Api.g_false,
1629 p_validation_level => p_validation_level,
1630 p_caller => NULL,
1631 p_visit_id => l_task_rec.visit_id,
1632 x_return_status => l_return_status,
1633 x_msg_count => l_msg_count,
1634 x_msg_data => l_msg_data);
1635
1636 IF (l_log_statement >= l_log_current_level) THEN
1637 fnd_log.string(l_log_statement,
1638 L_DEBUG_KEY,
1639 'After Calling AHL_VWP_PROJ_PROD_PVT.plan_visit. Return Status = ' || l_return_status );
1640 END IF;
1641
1642 IF NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
1643 x_msg_count := l_msg_count;
1644 x_return_status := l_return_status;
1645 IF l_return_status = Fnd_Api.g_ret_sts_error THEN
1646 RAISE Fnd_Api.g_exc_error;
1647 ELSIF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1648 RAISE Fnd_Api.g_exc_unexpected_error;
1649 END IF;
1650 END IF;
1651 ELSE
1652 -- SKPATHAK :: 02-MAY-2011 :: VWPE: ER:12424063 :: STARTS
1653 -- If tasks are added to a visit in below mentioned statuses, draft WOs should be automatically created for the visit tasks
1654 IF ((c_visit_rec.status_code IN ('PLANNING', 'PARTIALLY RELEASED', 'RELEASED')) AND (l_task_rec.task_type_code <> 'SUMMARY') AND (l_return_status='S')) THEN
1655 AHL_VWP_PROJ_PROD_PVT.plan_visit(
1656 p_api_version => l_api_version,
1657 p_init_msg_list => Fnd_Api.g_false,
1658 p_commit => Fnd_Api.g_false,
1659 p_validation_level => p_validation_level,
1660 -- SKPATHAK :: 16-JUL-2011 :: VWPE: ER:12730539
1661 -- If this API is called during creation of an unassociated task, then need to necessarily call RELEASE_VISIT, so passing UNA as module type
1662 p_caller => 'UNA',
1663 p_visit_id => l_task_rec.visit_id,
1664 x_return_status => l_return_status,
1665 x_msg_count => l_msg_count,
1666 x_msg_data => l_msg_data);
1667
1668 IF (l_log_statement >= l_log_current_level) THEN
1669 fnd_log.string(l_log_statement,
1670 L_DEBUG_KEY,
1671 'After Calling AHL_VWP_PROJ_PROD_PVT.plan_visit. Return Status = ' || l_return_status );
1672 END IF;
1673
1674 IF NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
1675 x_msg_count := l_msg_count;
1676 x_return_status := l_return_status;
1677 IF l_return_status = Fnd_Api.g_ret_sts_error THEN
1678 RAISE Fnd_Api.g_exc_error;
1679 ELSIF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
1680 RAISE Fnd_Api.g_exc_unexpected_error;
1681 END IF;
1682 END IF;
1683 END IF;
1684 -- SKPATHAK :: 02-MAY-2011 :: VWPE: ER:12424063 :: END
1685 END IF;
1686
1687 -- post 115.10 changes end
1688
1689 -- SATHAPLI::Component Maintenance Planning Project, 13-DEC-2011
1690 -- Commenting out the entire cost parent id update done by KASRIDHA below, because:
1691 -- 1) This piece of code updates the second repair batch and subsequent ones with wrong cost parent id.
1692 -- 2) This piece of code will be called only if the user creates SUMMARY or UNASSOCIATED tasks from
1693 -- VWP UIs, in which case, the tasks should be created in the Visit only, and not in any repair batch.
1694 /*
1695 -- Kasridha : Changes for Component Maintenance Planning begins
1696 -- Set the cost parent ID for the summary task
1697 -- to the task ID of the repair batch.
1698 -- This is used to maintain the hierarchy for
1699 -- deriving the tasks in a repair batch
1700
1701 IF (l_log_statement >= l_log_current_level) THEN
1702 fnd_log.string(l_log_statement, L_DEBUG_KEY, 'Before setting the ' ||
1703 'repair batch task id to cost_parent_id');
1704 END IF;
1705
1706 IF l_is_comp_visit = 'Y' THEN
1707 IF (l_log_statement >= l_log_current_level) THEN
1708 fnd_log.string(l_log_statement, L_DEBUG_KEY, 'l_task_rec.TASK_TYPE_CODE'
1709 || l_task_rec.TASK_TYPE_CODE
1710 || 'l_task_rec.COST_PARENT_ID :: '
1711 || l_task_rec.COST_PARENT_ID);
1712 END IF;
1713
1714 IF (l_log_statement >= l_log_current_level) THEN
1715 fnd_log.string(l_log_statement, L_DEBUG_KEY, 'l_task_rec.instance_id'
1716 || l_task_rec.instance_id
1717 || 'l_task_rec.visit_task_id :: '
1718 || l_task_rec.visit_task_id);
1719 END IF;
1720
1721 OPEN c_task_dtls (l_task_rec.visit_task_id);
1722 FETCH c_task_dtls INTO l_task_type, l_summary_task_id, l_instance_id;
1723 CLOSE c_task_dtls;
1724
1725 IF(l_summary_task_id IS NULL) THEN
1726 l_summary_task_id := l_task_rec.visit_task_id;
1727 END IF;
1728
1729 OPEN c_get_rprbatch_task (l_instance_id, c_visit_rec.organization_id);
1730 FETCH c_get_rprbatch_task INTO l_rpr_batch_task_id;
1731 CLOSE c_get_rprbatch_task;
1732
1733 IF (l_log_statement >= l_log_current_level) THEN
1734 fnd_log.string(l_log_statement, L_DEBUG_KEY, 'RepairBatch Task ID: '
1735 || l_rpr_batch_task_id);
1736 END IF;
1737
1738 IF( l_summary_task_id IS NOT NULL AND l_rpr_batch_task_id IS NOT NULL
1739 AND l_rpr_batch_task_id <> l_task_rec.VISIT_TASK_ID) THEN
1740 UPDATE AHL_VISIT_TASKS_B
1741 SET cost_parent_id = l_rpr_batch_task_id
1742 WHERE visit_task_id = l_summary_task_id;
1743
1744 IF (l_log_statement >= l_log_current_level) THEN
1745 fnd_log.string(l_log_statement, L_DEBUG_KEY, 'Cost_parent_id set to : '
1746 || l_rpr_batch_task_id
1747 || ' for : ' || l_summary_task_id);
1748 END IF;
1749
1750 END IF;
1751
1752 END IF;
1753
1754 IF (l_log_statement >= l_log_current_level) THEN
1755 fnd_log.string(l_log_statement, L_DEBUG_KEY, 'After setting the repair batch'
1756 || ' task id to cost_parent_id');
1757 END IF;
1758 -- Kasridha : Changes for Component Maintenance Planning Ends
1759 */
1760
1761 --------------------End of API Body-------------------------------------
1762 --Standard check to count messages
1763 l_msg_count := Fnd_Msg_Pub.count_msg;
1764
1765 -- AJPRASAN :: VWPE :: Bug# 12424063 - Added the check for NOT overwriting x_return_status,
1766 -- if l_return_status is 'V'
1767 IF (l_return_status = 'V') THEN
1768 x_msg_count := l_msg_count;
1769 x_return_status := l_return_status;
1770 -- Raise Expected Error if l_return_status is 'E'
1771 ELSIF l_return_status = Fnd_Api.G_RET_STS_ERROR THEN
1772 x_msg_count := l_msg_count;
1773 x_return_status := Fnd_Api.G_RET_STS_ERROR;
1774 RAISE Fnd_Api.G_EXC_ERROR;
1775 -- Raise Unexpected Error on all other cases
1776 ELSIF l_msg_count > 0 OR l_return_status <> Fnd_Api.g_ret_sts_success THEN
1777 x_msg_count := l_msg_count;
1778 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
1779 RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
1780 END IF;
1781
1782 --Standard check for commit
1783 IF Fnd_Api.TO_BOOLEAN(p_commit) THEN
1784 COMMIT;
1785 END IF;
1786
1787 IF (l_log_procedure >= l_log_current_level) THEN
1788 fnd_log.string(l_log_procedure,
1789 L_DEBUG_KEY ||'.end',
1790 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
1791 END IF;
1792
1793 EXCEPTION
1794 WHEN Fnd_Api.g_exc_error THEN
1795 ROLLBACK TO Create_Task;
1796 x_return_status := Fnd_Api.g_ret_sts_error;
1797 Fnd_Msg_Pub.count_and_get(
1798 p_encoded => Fnd_Api.g_false,
1799 p_count => x_msg_count,
1800 p_data => x_msg_data
1801 );
1802 WHEN Fnd_Api.g_exc_unexpected_error THEN
1803 ROLLBACK TO Create_Task;
1804 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
1805 Fnd_Msg_Pub.count_and_get (
1806 p_encoded => Fnd_Api.g_false,
1807 p_count => x_msg_count,
1808 p_data => x_msg_data
1809 );
1810 WHEN OTHERS THEN
1811 ROLLBACK TO Create_Task;
1812 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
1813 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
1814 THEN
1815 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
1816 END IF;
1817 Fnd_Msg_Pub.count_and_get (
1818 p_encoded => Fnd_Api.g_false,
1819 p_count => x_msg_count,
1820 p_data => x_msg_data
1821 );
1822 END Create_Task;
1823
1824 --------------------------------------------------------------------
1825 -- PROCEDURE
1826 -- Create_Unassociated_Task
1827 -- PURPOSE
1828 -- To create Unassociated Task for the maintainance visit
1829 --------------------------------------------------------------------
1830 PROCEDURE Create_Unassociated_Task (
1831 p_api_version IN NUMBER,
1832 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
1833 p_commit IN VARCHAR2 := Fnd_Api.g_false,
1834 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
1835 p_module_type IN VARCHAR2 := 'JSP',
1836 p_x_task_rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
1837 x_return_status OUT NOCOPY VARCHAR2,
1838 x_msg_count OUT NOCOPY NUMBER,
1839 x_msg_data OUT NOCOPY VARCHAR2
1840 )
1841 IS
1842 L_API_VERSION CONSTANT NUMBER := 1.0;
1843 L_API_NAME CONSTANT VARCHAR2(30) := 'CREATE UNASSOCIATED TASK';
1844 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
1845
1846 -- Local variables defined for the procedure
1847 l_task_rec AHL_VWP_RULES_PVT.Task_Rec_Type := p_x_task_rec;
1848 l_msg_data VARCHAR2(2000);
1849 l_item_name VARCHAR2(40);
1850 l_rowid VARCHAR2(30);
1851 l_return_status VARCHAR2(1);
1852 l_msg_count NUMBER;
1853 l_item_id NUMBER;
1854 l_serial_id NUMBER;
1855 l_task_number NUMBER;
1856 l_org_id NUMBER;
1857 l_visit_task_id NUMBER;
1858 l_service_id NUMBER;
1859 l_cost_parent_id NUMBER;
1860 l_originating_task_id NUMBER;
1861 l_department_id NUMBER;
1862 l_entl_rec_tbl AHL_WARRANTY_ENTL_PVT.Warranty_Entl_Tbl_Type; --salogan added for supplier warranty
1863
1864 -- To find visit related information
1865 CURSOR c_visit(x_id IN NUMBER) IS
1866 SELECT * FROM AHL_VISITS_VL
1867 WHERE VISIT_ID = x_id;
1868 c_visit_rec c_visit%ROWTYPE;
1869
1870 -- To find Item ID and Item OrgID for Instance Id
1871 -- while creating unassociated task for a non-routine job
1872 CURSOR c_Serial (p_serial_id IN NUMBER) IS
1873 SELECT Inventory_Item_Id, Inv_Master_Organization_Id
1874 FROM CSI_ITEM_INSTANCES
1875 WHERE Instance_Id = p_serial_id;
1876
1877 -- Begin changes by rnahata for Issue 105
1878 --Cursor to fetch instance id when instance number is passed
1879 -- jaramana on Feb 14, 2008
1880 -- Changed data type to VARCHAR2
1881 CURSOR c_get_instance_id(p_instance_number IN VARCHAR2) IS
1882 SELECT instance_id FROM csi_item_instances csii
1883 WHERE instance_number = p_instance_number;
1884
1885 --Cursor to fetch instance quantity
1886 CURSOR c_get_instance_qty(p_instance_id IN NUMBER) IS
1887 SELECT quantity FROM csi_item_instances csii
1888 WHERE instance_id = p_instance_id;
1889
1890 l_instance_qty NUMBER := 0;
1891 -- End changes by rnahata for Issue 105
1892
1893 BEGIN
1894 --------------------Start of API Body-----------------------------------
1895 IF (l_log_procedure >= l_log_current_level) THEN
1896 fnd_log.string(l_log_procedure,
1897 L_DEBUG_KEY ||'.begin',
1898 'At the start of PL SQL procedure.' ||
1899 'Module Type = ' || p_module_type );
1900 END IF;
1901
1902 SAVEPOINT Create_Unassociated_Task;
1903
1904 -- Initialize message list if p_init_msg_list is set to TRUE.
1905 IF Fnd_Api.to_boolean(p_init_msg_list)
1906 THEN
1907 Fnd_Msg_Pub.initialize;
1908 END IF;
1909
1910 -- Initialize API return status to success
1911 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
1912
1913 -- Standard call to check for call compatibility.
1914 IF NOT Fnd_Api.COMPATIBLE_API_CALL(l_api_version,
1915 p_api_version,
1916 l_api_name,G_PKG_NAME)
1917 THEN
1918 RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
1919 END IF;
1920
1921 -- PRAKKUM :: FP:PIE :: 13-OCT-2010 :: validate Service Type attributes
1922 AHL_VWP_RULES_PVT.Validate_Service_Type(
1923 p_service_type => l_task_rec.service_type,
1924 p_module_type => p_module_type,
1925 p_unit_effectivity_id => l_task_rec.unit_effectivity_id,
1926 p_x_service_type_code => l_task_rec.service_type_code
1927 );
1928
1929 --------------------Value OR ID conversion---------------------------
1930 --Start API Body
1931 IF p_module_type = 'JSP' THEN
1932 --l_Task_rec.instance_id := NULL;
1933 l_Task_rec.cost_parent_id := NULL;
1934 l_Task_rec.originating_task_id := NULL;
1935 l_Task_rec.department_id := NULL;
1936 END IF;
1937
1938 -------------------Cursor values------------------------------------
1939 OPEN c_visit(l_task_rec.visit_id);
1940 FETCH c_visit INTO c_visit_rec;
1941 CLOSE c_visit;
1942
1943 IF (l_log_statement >= l_log_current_level) THEN
1944 fnd_log.string(l_log_statement,
1945 L_DEBUG_KEY,
1946 'Visit Id = ' || l_task_rec.visit_id || ', Status Code = ' || c_visit_rec.status_code );
1947 END IF;
1948
1949 IF c_visit_rec.status_code IN ('CLOSED','CANCELLED') THEN
1950 Fnd_Message.SET_NAME('AHL','AHL_VWP_NOT_USE_VISIT');
1951 Fnd_Msg_Pub.ADD;
1952 RAISE Fnd_Api.G_EXC_ERROR;
1953 /*
1954 Commented to fix bug # 4029318
1955 ELSIF c_visit_rec.status_code = 'RELEASED' OR c_visit_rec.status_code = 'PARTIALLY RELEASED' THEN
1956 Added the below condition for the call from Production for SR creation
1957 */
1958 ELSIF p_module_type = 'SR' THEN
1959
1960 IF (l_log_statement >= l_log_current_level) THEN
1961 fnd_log.string(l_log_statement,
1962 L_DEBUG_KEY,
1963 'Inside status code check = ' || c_visit_rec.status_code ||
1964 ', Instance ID = ' || l_Task_rec.instance_id );
1965 END IF;
1966
1967 OPEN c_serial(l_Task_rec.instance_id);
1968 FETCH c_serial INTO l_item_id, l_org_id;
1969 CLOSE c_serial;
1970
1971 --Assign the returned value
1972 l_Task_rec.inventory_item_id := l_item_id;
1973 l_Task_rec.item_organization_id := l_org_id;
1974 ELSE
1975 -- Visit in planning status --
1976 IF (l_log_statement >= l_log_current_level) THEN
1977 fnd_log.string(l_log_statement,
1978 L_DEBUG_KEY,
1979 'Before Convert Item Item ID= ' || l_Task_rec.inventory_item_id ||
1980 ', Item Org ID= ' || l_Task_rec.item_organization_id ||
1981 ', Item Name= ' || l_Task_rec.item_name );
1982 END IF;
1983 -- Post 11.5.10 Changes by Senthil.
1984 AHL_VWP_VISITS_STAGES_PVT.Check_Stage_Name_Or_Id(
1985 P_VISIT_ID => l_Task_rec.visit_id,
1986 P_STAGE_NAME => L_task_rec.STAGE_NAME,
1987 X_STAGE_ID => L_task_rec.STAGE_ID,
1988 X_RETURN_STATUS => l_return_status,
1989 x_error_msg_code => l_msg_data );
1990
1991 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success THEN
1992 Fnd_Message.SET_NAME('AHL','AHL_VWP_STAGE_NOT_EXISTS');
1993 Fnd_Msg_Pub.ADD;
1994 RAISE Fnd_Api.G_EXC_ERROR;
1995 END IF;
1996 --
1997 -- For ITEM
1998 -- Convert item name to item id
1999 IF (l_Task_rec.inventory_item_id IS NOT NULL AND
2000 l_Task_rec.inventory_item_id <> Fnd_Api.G_MISS_NUM) AND
2001 (l_Task_rec.item_organization_id IS NOT NULL AND
2002 l_Task_rec.item_organization_id <> Fnd_Api.G_MISS_NUM) THEN
2003
2004 AHL_VWP_RULES_PVT.Check_Item_Name_Or_Id
2005 (p_item_id => l_Task_rec.inventory_item_id,
2006 p_org_id => l_Task_rec.item_organization_id,
2007 p_item_name => l_Task_rec.item_name,
2008 x_item_id => l_item_id,
2009 x_org_id => l_org_id,
2010 x_item_name => l_item_name,
2011 x_return_status => l_return_status,
2012 x_error_msg_code => l_msg_data);
2013
2014 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success THEN
2015 Fnd_Message.SET_NAME('AHL','AHL_VWP_ITEM_NOT_EXISTS');
2016 Fnd_Msg_Pub.ADD;
2017 RAISE Fnd_Api.G_EXC_ERROR;
2018 END IF;
2019
2020 IF UPPER(l_Task_rec.item_name) <> UPPER(l_item_name) THEN
2021 IF (l_log_statement >= l_log_current_level) THEN
2022 fnd_log.string(l_log_statement,
2023 L_DEBUG_KEY,
2024 ': Compare item name');
2025 END IF;
2026
2027 Fnd_Message.SET_NAME('AHL','AHL_VWP_ITEM_USE_LOV');
2028 Fnd_Msg_Pub.ADD;
2029 RAISE Fnd_Api.G_EXC_ERROR;
2030 END IF;
2031 ELSE
2032 IF (l_log_statement >= l_log_current_level) THEN
2033 fnd_log.string(l_log_statement,
2034 L_DEBUG_KEY,
2035 ': Check item else loop');
2036 END IF;
2037 Fnd_Message.SET_NAME('AHL','AHL_VWP_ITEM_USE_LOV');
2038 Fnd_Msg_Pub.ADD;
2039 RAISE Fnd_Api.G_EXC_ERROR;
2040 END IF;
2041
2042 --Assign the returned value
2043 l_Task_rec.inventory_item_id := l_item_id;
2044 l_Task_rec.item_organization_id := l_org_id;
2045
2046 IF (l_log_statement >= l_log_current_level) THEN
2047 fnd_log.string(l_log_statement,
2048 L_DEBUG_KEY,
2049 ': Item ID= ' || l_Task_rec.inventory_item_id ||
2050 ': Item Org ID= ' || l_Task_rec.item_organization_id ||
2051 ': Item Name= ' || l_Task_rec.item_name ||
2052 ': Serial Number= ' || l_Task_rec.serial_number );
2053 END IF;
2054
2055 END IF; -- End of status_code check
2056
2057 ----------- Start defining and validate all LOVs on Create Visit's Task UI Screen---
2058 --
2059 -- For DEPARTMENT
2060 -- Convert department name to department id
2061 IF (l_task_rec.dept_name IS NOT NULL AND l_task_rec.dept_name <> Fnd_Api.G_MISS_CHAR ) THEN
2062
2063 IF (l_log_statement >= l_log_current_level) THEN
2064 fnd_log.string(l_log_statement,
2065 L_DEBUG_KEY,
2066 'Calling AHL_VWP_RULES_PVT.Check_Dept_Desc_Or_Id');
2067 END IF;
2068
2069 AHL_VWP_RULES_PVT.Check_Dept_Desc_Or_Id
2070 (p_organization_id => c_visit_rec.organization_id,
2071 p_dept_name => l_task_rec.dept_name,
2072 p_department_id => NULL,
2073 x_department_id => l_department_id,
2074 x_return_status => l_return_status,
2075 x_error_msg_code => l_msg_data);
2076
2077 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
2078 THEN
2079 Fnd_Message.SET_NAME('AHL','AHL_VWP_DEPT_NOT_EXISTS');
2080 Fnd_Msg_Pub.ADD;
2081 RAISE Fnd_Api.G_EXC_ERROR;
2082 END IF;
2083
2084 -- Changes for Post 11.5.10 by amagrawa
2085 Ahl_vwp_rules_pvt.CHECK_DEPARTMENT_SHIFT
2086 ( P_DEPT_ID => l_department_id,
2087 X_RETURN_STATUS => l_return_status);
2088
2089 IF (NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS) THEN
2090 Fnd_Message.SET_NAME('AHL','AHL_VWP_NO_DEPT_SHIFT');
2091 Fnd_Msg_Pub.ADD;
2092 RAISE Fnd_Api.G_EXC_ERROR;
2093 END IF;
2094 --Assign the returned value
2095 l_task_rec.department_id := l_department_id;
2096 END IF;
2097
2098 IF (l_log_statement >= l_log_current_level) THEN
2099 fnd_log.string(l_log_statement,
2100 L_DEBUG_KEY,
2101 ': Dept ID= ' || l_Task_rec.department_id );
2102 END IF;
2103
2104 -- For SERIAL NUMBER
2105 -- Convert serial number to instance/ serial id
2106 IF (l_Task_rec.serial_number IS NOT NULL AND
2107 l_Task_rec.serial_number <> Fnd_Api.G_MISS_CHAR) THEN
2108 IF (l_log_statement >= l_log_current_level) THEN
2109 fnd_log.string(l_log_statement,
2110 L_DEBUG_KEY,
2111 ': AHL_VWP_RULES_PVT.Check_Serial_Name_Or_Id ' );
2112 END IF;
2113 AHL_VWP_RULES_PVT.Check_Serial_Name_Or_Id
2114 (p_item_id => l_Task_rec.inventory_item_id,
2115 p_org_id => l_Task_rec.item_organization_id,
2116 p_serial_id => l_Task_rec.instance_id,
2117 p_serial_number => l_Task_rec.serial_number,
2118 x_serial_id => l_serial_id,
2119 x_return_status => l_return_status,
2120 x_error_msg_code => l_msg_data);
2121
2122 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success THEN
2123 Fnd_Message.SET_NAME('AHL','AHL_VWP_SERIAL_NOT_EXISTS');
2124 Fnd_Msg_Pub.ADD;
2125 RAISE Fnd_Api.G_EXC_ERROR;
2126 ELSE
2127 --Assign the returned value
2128 l_Task_rec.instance_id := l_serial_id;
2129
2130 IF (l_log_statement >= l_log_current_level) THEN
2131 fnd_log.string(l_log_statement,
2132 L_DEBUG_KEY,
2133 ': Before UC Check Serial ID= ' || l_Task_rec.instance_id ||
2134 ': Before UC Item ID= ' || l_Task_rec.inventory_item_id ||
2135 ': Before UC Item Org ID= ' || l_Task_rec.item_organization_id );
2136 END IF;
2137 /* sowsubra - start
2138 --BEGIN: jeli added for bug 3777720
2139 IF (AHL_VWP_RULES_PVT.instance_in_config_tree(l_task_rec.visit_id, l_task_rec.instance_id)
2140 = FND_API.G_RET_STS_ERROR) THEN
2141 --END: jeli added for bug 3777720
2142 Fnd_Message.SET_NAME('AHL','AHL_VWP_TASK_SERIAL');
2143 Fnd_Msg_Pub.ADD;
2144 RAISE Fnd_Api.G_EXC_ERROR;
2145 END IF;
2146 sowsubra - end */
2147 END IF;
2148 END IF;
2149
2150 IF (l_log_statement >= l_log_current_level) THEN
2151 fnd_log.string(l_log_statement,
2152 L_DEBUG_KEY,
2153 ': Serial ID= ' || l_Task_rec.instance_id ||
2154 ': Service Number= ' || l_Task_rec.service_request_number );
2155 -- Additional debug statement added by jaramana on Feb 14, 2008
2156 fnd_log.string(l_log_statement, L_DEBUG_KEY,
2157 'l_task_rec.instance_number = ' || l_Task_rec.instance_number ||
2158 ', l_task_rec.quantity = ' || l_Task_rec.quantity);
2159 END IF;
2160
2161 -- Begin changes by rnahata for Issue 105
2162 IF (l_Task_rec.instance_id IS NULL) THEN
2163 OPEN c_get_instance_id (l_Task_rec.instance_number);
2164 FETCH c_get_instance_id INTO l_Task_rec.instance_id;
2165 CLOSE c_get_instance_id;
2166 END IF;
2167
2168 OPEN c_get_instance_qty(l_Task_rec.instance_id);
2169 FETCH c_get_instance_qty INTO l_instance_qty;
2170 CLOSE c_get_instance_qty;
2171
2172 IF (l_Task_rec.QUANTITY is null) THEN
2173 Fnd_Message.SET_NAME('AHL','AHL_TASK_QTY_NULL');
2174 Fnd_Msg_Pub.ADD;
2175 RAISE Fnd_Api.G_EXC_ERROR;
2176 END IF;
2177
2178 IF (l_Task_rec.QUANTITY <= 0) THEN
2179 Fnd_Message.SET_NAME('AHL','AHL_POSITIVE_TSK_QTY');
2180 Fnd_Msg_Pub.ADD;
2181 RAISE Fnd_Api.G_EXC_ERROR;
2182 END IF;
2183
2184 IF (l_Task_rec.QUANTITY > l_instance_qty ) THEN
2185 Fnd_Message.SET_NAME('AHL','AHL_INCORRECT_TSK_QTY');
2186 Fnd_Msg_Pub.ADD;
2187 RAISE Fnd_Api.G_EXC_ERROR;
2188 END IF;
2189 -- End changes by rnahata for Issue 105
2190
2191 -- For COST PARENT TASK
2192 -- Convert cost parent number to id
2193 IF (l_Task_rec.cost_parent_number IS NOT NULL AND
2194 l_Task_rec.cost_parent_number <> Fnd_Api.G_MISS_NUM ) THEN
2195 IF (l_log_statement >= l_log_current_level) THEN
2196 fnd_log.string(l_log_statement,
2197 L_DEBUG_KEY,
2198 'Calling AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID ' );
2199 END IF;
2200 AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID
2201 (p_visit_task_id => l_Task_rec.cost_parent_id,
2202 p_visit_task_number => l_Task_rec.cost_parent_number,
2203 p_visit_id => l_Task_rec.visit_id,
2204 x_visit_task_id => l_cost_parent_id,
2205 x_return_status => l_return_status,
2206 x_error_msg_code => l_msg_data);
2207
2208 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
2209 THEN
2210 Fnd_Message.SET_NAME('AHL','AHL_VWP_PARENT_NOT_EXISTS');
2211 Fnd_Msg_Pub.ADD;
2212 RAISE Fnd_Api.g_exc_error;
2213 END IF;
2214
2215 --Assign the returned value
2216 l_Task_rec.cost_parent_id := l_cost_parent_id;
2217 END IF;
2218
2219 IF (l_log_statement >= l_log_current_level) THEN
2220 fnd_log.string(l_log_statement,
2221 L_DEBUG_KEY,
2222 ': Cost parent ID = ' || l_Task_rec.cost_parent_id);
2223 END IF;
2224
2225 -- To Check for cost parent task id not forming loop
2226 IF (l_Task_rec.cost_parent_id IS NOT NULL AND
2227 l_Task_rec.cost_parent_id <> Fnd_Api.G_MISS_NUM ) THEN
2228
2229 IF (l_log_statement >= l_log_current_level) THEN
2230 fnd_log.string(l_log_statement,
2231 L_DEBUG_KEY,
2232 'Calling AHL_VWP_RULES_PVT.Check_Cost_Parent_Loop ' );
2233 END IF;
2234 AHL_VWP_RULES_PVT.Check_Cost_Parent_Loop
2235 (p_visit_id => l_Task_rec.visit_id,
2236 p_visit_task_id => l_Task_rec.visit_task_id ,
2237 p_cost_parent_id => l_Task_rec.cost_parent_id
2238 );
2239 END IF;
2240
2241 IF (l_log_statement >= l_log_current_level) THEN
2242 fnd_log.string(l_log_statement,
2243 L_DEBUG_KEY,
2244 ': Originating Number = ' || l_Task_rec.orginating_task_number);
2245 END IF;
2246
2247 -- For ORIGINATING TASK
2248 -- Convert originating task number to id
2249 IF (l_Task_rec.orginating_task_number IS NOT NULL AND
2250 l_Task_rec.orginating_task_number <> Fnd_Api.G_MISS_NUM ) THEN
2251 IF (l_log_statement >= l_log_current_level) THEN
2252 fnd_log.string(l_log_statement,
2253 L_DEBUG_KEY,
2254 'Calling AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID ' );
2255 END IF;
2256 AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID
2257 (p_visit_task_id => l_Task_rec.originating_task_id,
2258 p_visit_task_number => l_Task_rec.orginating_task_number,
2259 p_visit_id => l_Task_rec.visit_id,
2260 x_visit_task_id => l_originating_task_id,
2261 x_return_status => l_return_status,
2262 x_error_msg_code => l_msg_data);
2263
2264 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
2265 THEN
2266 Fnd_Message.SET_NAME('AHL','AHL_VWP_ORIGINATING_NOT_EXISTS');
2267 Fnd_Msg_Pub.ADD;
2268 RAISE Fnd_Api.g_exc_error;
2269 END IF;
2270 --Assign the returned value
2271 l_Task_rec.originating_task_id := l_originating_task_id;
2272 END IF;
2273
2274 IF (l_log_statement >= l_log_current_level) THEN
2275 fnd_log.string(l_log_statement,
2276 L_DEBUG_KEY,
2277 ': Originating Task ID= ' || l_Task_rec.originating_task_id);
2278 END IF;
2279
2280 -- To Check for originating task id not forming loop
2281 IF (l_Task_rec.originating_task_id IS NOT NULL AND
2282 l_Task_rec.originating_task_id <> Fnd_Api.G_MISS_NUM ) THEN
2283
2284 AHL_VWP_RULES_PVT.Check_Origin_Task_Loop
2285 (p_visit_id => l_Task_rec.visit_id ,
2286 p_visit_task_id => l_Task_rec.visit_task_id ,
2287 p_originating_task_id => l_Task_rec.originating_task_id
2288 );
2289
2290 END IF;
2291 ----------- End defining and validate all LOVs on Create Visit's Task UI Screen---
2292
2293 ---------------------------------------------- Validate ----------------------------------------------
2294 -- IF c_visit_rec.status_code = 'PLANNING' THEN
2295 --Added the below condition for the call from Production for SR creation
2296 IF p_module_type <> 'SR' THEN
2297 IF (l_log_statement >= l_log_current_level) THEN
2298 fnd_log.string(l_log_statement,
2299 L_DEBUG_KEY,
2300 ': :ValidateCalling Validate_Visit_Task ');
2301 END IF;
2302 Validate_Visit_Task (
2303 p_api_version => l_api_version,
2304 p_init_msg_list => p_init_msg_list,
2305 p_commit => Fnd_Api.g_false,
2306 p_validation_level => p_validation_level,
2307 p_task_rec => l_task_rec,
2308 x_return_status => l_return_status,
2309 x_msg_count => x_msg_count,
2310 x_msg_data => x_msg_data
2311 );
2312
2313 IF l_return_status = Fnd_Api.g_ret_sts_error THEN
2314 RAISE Fnd_Api.g_exc_error;
2315 ELSIF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
2316 RAISE Fnd_Api.g_exc_unexpected_error;
2317 END IF;
2318 END IF;
2319 /* ELSE Commented to fix bug # 4029318 Senthil
2320 -- TASK NAME ==== NAME
2321 IF (l_task_rec.visit_task_name IS NULL OR l_task_rec.visit_task_name = Fnd_Api.G_MISS_CHAR) THEN
2322 Fnd_Message.set_name ('AHL', 'AHL_VWP_NAME_MISSING');
2323 Fnd_Msg_Pub.ADD;
2324 RAISE Fnd_Api.g_exc_error;
2325 END IF;
2326 END IF;
2327 */
2328 -- SKPATHAK :: 02-MAY-2011 :: VWPE: ER:12424063 :: STARTS
2329 -- If task id or task number is null, generate the same
2330 IF ((l_task_rec.visit_task_ID = Fnd_Api.g_miss_num ) OR (l_task_rec.visit_task_ID IS NULL)) THEN
2331 l_Visit_Task_ID := AHL_VWP_RULES_PVT.Get_Visit_Task_Id();
2332 l_task_rec.visit_task_ID := l_Visit_Task_ID;
2333 END IF;
2334
2335 -- Check for the Visit Number.
2336 IF ((l_task_rec.visit_task_number = Fnd_Api.g_miss_num ) OR (l_task_rec.visit_task_number IS NULL)) THEN
2337 l_task_number := AHL_VWP_RULES_PVT.Get_Visit_Task_Number(l_task_rec.visit_id);
2338 l_task_rec.visit_task_number := l_task_number;
2339 END IF;
2340 -- SKPATHAK :: 02-MAY-2011 :: VWPE: ER:12424063 :: ENDS
2341
2342 IF (l_log_statement >= l_log_current_level) THEN
2343 fnd_log.string(l_log_statement,
2344 L_DEBUG_KEY,
2345 ': Task ID= ' || l_Task_rec.visit_task_id ||
2346 ': Task number= ' || l_Task_rec.visit_task_number);
2347 END IF;
2348
2349 ----------------------- check miss_num/miss_char/miss_date-----------------------
2350 -- For all optional fields check if its g_miss_num/g_miss_char/g_miss_date
2351 -- then Null else the value call Default_Missing_Attribs procedure
2352 Default_Missing_Attribs
2353 (
2354 p_x_task_rec => l_Task_rec
2355 );
2356
2357 -------------------------- Insert --------------------------
2358 IF (l_log_statement >= l_log_current_level) THEN
2359 fnd_log.string(l_log_statement,
2360 L_DEBUG_KEY,
2361 'Before Calling Ahl_Visit_Tasks_Pkg.Insert_Row');
2362 END IF;
2363
2364 -- Invoke the table handler to create a record
2365 Ahl_Visit_Tasks_Pkg.Insert_Row (
2366 X_ROWID => l_rowid,
2367 X_VISIT_TASK_ID => l_task_rec.visit_task_id,
2368 X_VISIT_TASK_NUMBER => l_task_rec.visit_task_number,
2369 X_OBJECT_VERSION_NUMBER => 1,
2370 X_VISIT_ID => l_task_rec.visit_id,
2371 X_PROJECT_TASK_ID => NULL, --l_task_rec.project_task_id,
2372 X_COST_PARENT_ID => l_task_rec.cost_parent_id,
2373 X_MR_ROUTE_ID => NULL,
2374 X_MR_ID => NULL,
2375 X_DURATION => l_task_rec.duration,
2376 X_UNIT_EFFECTIVITY_ID => l_task_rec.unit_effectivity_id,
2377 X_START_FROM_HOUR => l_task_rec.start_from_hour,
2378 X_INVENTORY_ITEM_ID => l_task_rec.inventory_item_id,
2379 X_ITEM_ORGANIZATION_ID => l_task_rec.item_organization_id,
2380 X_INSTANCE_ID => l_task_rec.instance_id,
2381 X_PRIMARY_VISIT_TASK_ID => NULL, --l_task_rec.primary_visit_task_id,
2382 X_ORIGINATING_TASK_ID => l_task_rec.originating_task_id,
2383 X_SERVICE_REQUEST_ID => l_task_rec.service_request_id,
2384 X_TASK_TYPE_CODE => l_task_rec.task_type_code,
2385 -- PRAKKUM :: FP:PIE :: 13-OCT-2010 :: Service Type code added
2386 X_SERVICE_TYPE_CODE => l_task_rec.service_type_code,
2387 X_DEPARTMENT_ID => l_task_rec.department_id,
2388 X_SUMMARY_TASK_FLAG => 'N',
2389 X_PRICE_LIST_ID => NULL,
2390 X_STATUS_CODE => 'PLANNING',
2391 X_ESTIMATED_PRICE => NULL,
2392 X_ACTUAL_PRICE => NULL,
2393 X_ACTUAL_COST => NULL,
2394 -- Post 11.5.10 Changes by Senthil.
2395 X_STAGE_ID => l_task_rec.STAGE_ID,
2396 -- Added cxcheng POST11510--------------
2397 -- SKPATHAK :: ER: 9147951 :: 11-JAN-2010
2398 -- Pass past dates for the below 4 coloumns, and if it is null, pass null for all the 4 columns
2399 X_START_DATE_TIME => l_task_rec.PAST_TASK_START_DATE,
2400 X_END_DATE_TIME => l_task_rec.PAST_TASK_END_DATE,
2401 X_PAST_TASK_START_DATE => l_task_rec.PAST_TASK_START_DATE,
2402 X_PAST_TASK_END_DATE => l_task_rec.PAST_TASK_END_DATE,
2403 X_ATTRIBUTE_CATEGORY => l_task_rec.ATTRIBUTE_CATEGORY,
2404 X_ATTRIBUTE1 => l_task_rec.ATTRIBUTE1,
2405 X_ATTRIBUTE2 => l_task_rec.ATTRIBUTE2,
2406 X_ATTRIBUTE3 => l_task_rec.ATTRIBUTE3,
2407 X_ATTRIBUTE4 => l_task_rec.ATTRIBUTE4,
2408 X_ATTRIBUTE5 => l_task_rec.ATTRIBUTE5,
2409 X_ATTRIBUTE6 => l_task_rec.ATTRIBUTE6,
2410 X_ATTRIBUTE7 => l_task_rec.ATTRIBUTE7,
2411 X_ATTRIBUTE8 => l_task_rec.ATTRIBUTE8,
2412 X_ATTRIBUTE9 => l_task_rec.ATTRIBUTE9,
2413 X_ATTRIBUTE10 => l_task_rec.ATTRIBUTE10,
2414 X_ATTRIBUTE11 => l_task_rec.ATTRIBUTE11,
2415 X_ATTRIBUTE12 => l_task_rec.ATTRIBUTE12,
2416 X_ATTRIBUTE13 => l_task_rec.ATTRIBUTE13,
2417 X_ATTRIBUTE14 => l_task_rec.ATTRIBUTE14,
2418 X_ATTRIBUTE15 => l_task_rec.ATTRIBUTE15,
2419 X_VISIT_TASK_NAME => l_task_rec.visit_task_name,
2420 X_DESCRIPTION => l_task_rec.description,
2421 X_QUANTITY => l_Task_rec.quantity, -- Added by rnahata for Issue 105
2422 X_CREATION_DATE => SYSDATE,
2423 X_CREATED_BY => Fnd_Global.USER_ID,
2424 X_LAST_UPDATE_DATE => SYSDATE,
2425 X_LAST_UPDATED_BY => Fnd_Global.USER_ID,
2426 X_LAST_UPDATE_LOGIN => Fnd_Global.LOGIN_ID );
2427
2428 ------------------------- finish -------------------------------
2429
2430 -- salogan added for supplier warranty starts
2431 -- calling AHL_VWP_RULES_PVT.Get_Warranty_Rec_for_Create
2432 AHL_VWP_RULES_PVT.Get_Warranty_Rec_for_Create(
2433 p_task_id => l_task_rec.visit_task_id,
2434 p_instance_id => l_task_rec.instance_id,
2435 x_warranty_entl_tbl => l_entl_rec_tbl);
2436
2437 IF (l_log_statement >= l_log_current_level) THEN
2438 fnd_log.string(l_log_statement,
2439 L_DEBUG_KEY,
2440 'Before calling AHL_WARRANTY_ENTL_PVT.Process_Warranty_Entitlements.');
2441 END IF;
2442
2443 --Not passing p_commit the main API commits the data at the end
2444 AHL_WARRANTY_ENTL_PVT.Process_Warranty_Entitlements(
2445 p_api_version => l_api_version,
2446 p_validation_level => p_validation_level,
2447 p_module_type => p_module_type,
2448 p_user_role => AHL_WARRANTY_ENTL_PVT.G_USER_PLANNER,
2449 p_x_warranty_entl_tbl => l_entl_rec_tbl,
2450 x_return_status => l_return_status,
2451 x_msg_count => l_msg_count,
2452 x_msg_data => l_msg_data);
2453
2454 IF (l_log_statement >= l_log_current_level) THEN
2455 fnd_log.string(l_log_statement,
2456 L_DEBUG_KEY,
2457 'After calling AHL_WARRANTY_ENTL_PVT.Process_Warranty_Entitlements. Return Status = ' ||
2458 l_return_status);
2459 END IF;
2460
2461 l_msg_count := Fnd_Msg_Pub.count_msg;
2462 IF l_msg_count > 0 OR l_return_status <> Fnd_Api.g_ret_sts_success THEN
2463 x_msg_count := l_msg_count;
2464 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
2465 RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
2466 END IF;
2467 -- salogan added for supplier warranty ends
2468
2469 -- Added cxcheng POST11510--------------
2470 --Now adjust the times derivation for task
2471 IF (l_log_statement >= l_log_current_level) THEN
2472 fnd_log.string(l_log_statement,
2473 L_DEBUG_KEY,
2474 'Before Calling AHL_VWP_TIMES_PVT.Adjust_Task_Times' );
2475 END IF;
2476
2477 -- SKPATHAK :: ER: 9147951 :: 11-JAN-2010 :: Call Adjust_Task_Times only if past date is null
2478 IF l_task_rec.PAST_TASK_START_DATE IS NULL THEN
2479 AHL_VWP_TIMES_PVT.Adjust_Task_Times(p_api_version => 1.0,
2480 p_init_msg_list => Fnd_Api.G_FALSE,
2481 p_commit => Fnd_Api.G_FALSE,
2482 p_validation_level => Fnd_Api.G_VALID_LEVEL_FULL,
2483 x_return_status => l_return_status,
2484 x_msg_count => l_msg_count,
2485 x_msg_data => l_msg_data,
2486 p_task_id => l_task_rec.visit_task_id);
2487 END IF;
2488
2489 IF (l_log_statement >= l_log_current_level) THEN
2490 fnd_log.string(l_log_statement,
2491 L_DEBUG_KEY,
2492 'After Calling AHL_VWP_TIMES_PVT.Adjust_Task_Times, Return Status = '|| l_return_status );
2493 END IF;
2494
2495 --Standard check to count messages
2496 l_msg_count := Fnd_Msg_Pub.count_msg;
2497
2498 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
2499 x_msg_count := l_msg_count;
2500 x_return_status := Fnd_Api.G_RET_STS_ERROR;
2501 RAISE Fnd_Api.G_EXC_ERROR;
2502 END IF;
2503
2504 -- set OUT value
2505 p_x_task_rec.Visit_Task_ID := l_task_rec.Visit_Task_ID;
2506 --TCHIMIRA::BUG 9303368 :: 02-02-2010::Fetch the regenerated visit task number from DB using visit task ID
2507 --p_x_task_rec.Visit_Task_Number := l_task_rec.Visit_Task_Number;
2508 select VISIT_TASK_NUMBER INTO p_x_task_rec.Visit_Task_Number from AHL_VISIT_TASKS_B where VISIT_TASK_ID = p_x_task_rec.Visit_Task_ID;
2509
2510 IF (c_visit_rec.Any_Task_Chg_Flag = 'N') THEN
2511
2512 AHL_VWP_RULES_PVT.update_visit_task_flag(
2513 p_visit_id =>c_visit_rec.visit_id,
2514 p_flag =>'Y',
2515 x_return_status =>x_return_status);
2516
2517 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2518 RAISE FND_API.G_EXC_ERROR;
2519 END IF;
2520 END IF;
2521
2522 IF (l_log_statement >= l_log_current_level) THEN
2523 fnd_log.string(l_log_statement,
2524 L_DEBUG_KEY,
2525 ': After Insert ' || 'Task ID= ' || p_x_Task_rec.visit_task_id ||
2526 ', Task Number= ' || p_x_Task_rec.visit_task_number);
2527 END IF;
2528
2529 -- PRAKKUM :: FP:PIE :: 13-OCT-2010 ::
2530 -- Commented out the call to AHL_VWP_PROJ_PROD_PVT.Add_Task_to_Project as it is no longer in use
2531 /*
2532 -- Calling projects api to create project task for the newly added service request
2533 IF (l_task_rec.Visit_Task_ID IS NOT NULL AND p_module_type = 'SR' )THEN
2534 IF (l_log_statement >= l_log_current_level) THEN
2535 fnd_log.string(l_log_statement,
2536 L_DEBUG_KEY,
2537 'Before Calling AHL_VWP_PROJ_PROD_PVT.Add_Task_to_Project ' ||
2538 'Visit Task Id = ' || l_task_rec.Visit_Task_ID);
2539 END IF;
2540
2541 AHL_VWP_PROJ_PROD_PVT.Add_Task_to_Project(
2542 p_api_version => l_api_version,
2543 p_init_msg_list => p_init_msg_list,
2544 p_commit => Fnd_Api.g_false,
2545 p_validation_level => p_validation_level,
2546 p_module_type => p_module_type,
2547 p_visit_task_id => l_task_rec.Visit_Task_ID,
2548 x_return_status => l_return_status,
2549 x_msg_count => x_msg_count,
2550 x_msg_data => x_msg_data);
2551
2552 IF (l_log_statement >= l_log_current_level) THEN
2553 fnd_log.string(l_log_statement,
2554 L_DEBUG_KEY,
2555 'After Calling AHL_VWP_PROJ_PROD_PVT.Add_Task_to_Project, Return Status = ' ||l_return_status );
2556 END IF;
2557 END IF;
2558 */
2559 ---------------------------End of API Body---------------------------------------
2560 --Standard check to count messages
2561 l_msg_count := Fnd_Msg_Pub.count_msg;
2562
2563 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
2564 x_msg_count := l_msg_count;
2565 x_return_status := Fnd_Api.G_RET_STS_ERROR;
2566 RAISE Fnd_Api.G_EXC_ERROR;
2567 END IF;
2568
2569 --Standard check for commit
2570 IF Fnd_Api.TO_BOOLEAN(p_commit) THEN
2571 COMMIT;
2572 END IF;
2573
2574 IF (l_log_procedure >= l_log_current_level) THEN
2575 fnd_log.string(l_log_procedure,
2576 L_DEBUG_KEY ||'.end',
2577 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
2578 END IF;
2579
2580 EXCEPTION
2581 WHEN Fnd_Api.g_exc_error THEN
2582 ROLLBACK TO Create_Unassociated_Task;
2583 x_return_status := Fnd_Api.g_ret_sts_error;
2584 Fnd_Msg_Pub.count_and_get(
2585 p_encoded => Fnd_Api.g_false,
2586 p_count => x_msg_count,
2587 p_data => x_msg_data
2588 );
2589
2590 WHEN Fnd_Api.g_exc_unexpected_error THEN
2591 ROLLBACK TO Create_Unassociated_Task;
2592 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
2593 Fnd_Msg_Pub.count_and_get (
2594 p_encoded => Fnd_Api.g_false,
2595 p_count => x_msg_count,
2596 p_data => x_msg_data
2597 );
2598
2599 WHEN OTHERS THEN
2600 ROLLBACK TO Create_Unassociated_Task;
2601 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
2602 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
2603 THEN
2604 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
2605 END IF;
2606 Fnd_Msg_Pub.count_and_get (
2607 p_encoded => Fnd_Api.g_false,
2608 p_count => x_msg_count,
2609 p_data => x_msg_data
2610 );
2611
2612 END Create_Unassociated_Task;
2613
2614 --------------------------------------------------------------------
2615 -- PROCEDURE
2616 -- Create_Summary_Task
2617 -- PURPOSE
2618 -- To create Summary Task for the maintainance visit
2619 --------------------------------------------------------------------
2620 PROCEDURE Create_Summary_Task (
2621 p_api_version IN NUMBER,
2622 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
2623 p_commit IN VARCHAR2 := Fnd_Api.g_false,
2624 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
2625 p_module_type IN VARCHAR2 := 'JSP',
2626 p_x_task_rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
2627 x_return_status OUT NOCOPY VARCHAR2,
2628 x_msg_count OUT NOCOPY NUMBER,
2629 x_msg_data OUT NOCOPY VARCHAR2
2630 )
2631 IS
2632 L_API_VERSION CONSTANT NUMBER := 1.0;
2633 L_API_NAME CONSTANT VARCHAR2(30) := 'Create_Summary_Task';
2634 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
2635
2636 -- Local variables defined for the procedure
2637 l_task_rec AHL_VWP_RULES_PVT.Task_Rec_Type := p_x_task_rec;
2638 l_msg_data VARCHAR2(2000);
2639 l_item_name VARCHAR2(40);
2640 l_rowid VARCHAR2(30);
2641 l_return_status VARCHAR2(1);
2642 l_msg_count NUMBER;
2643 l_item_id NUMBER;
2644 l_serial_id NUMBER;
2645 l_task_number NUMBER;
2646 l_org_id NUMBER;
2647 l_visit_task_id NUMBER;
2648 l_service_id NUMBER;
2649 l_cost_parent_id NUMBER;
2650 l_originating_task_id NUMBER;
2651 l_department_id NUMBER;
2652 --salogan added the following for supplier warranty
2653 l_entl_rec_tbl AHL_WARRANTY_ENTL_PVT.Warranty_Entl_Tbl_Type;
2654
2655 -- To find visit related information
2656 CURSOR c_visit(x_id IN NUMBER) IS
2657 SELECT * FROM AHL_VISITS_VL
2658 WHERE VISIT_ID = x_id;
2659 c_visit_rec c_visit%ROWTYPE;
2660
2661 -- bug fix #4181411
2662 -- yazhou 17-Feb-2005
2663 CURSOR get_task_inst_dtls(c_visit_id IN NUMBER) IS
2664 SELECT inventory_item_id,item_organization_id
2665 FROM ahl_visit_tasks_b
2666 WHERE visit_id = c_visit_id
2667 AND nvl(status_code,'x') <> 'DELETED'
2668 AND ROWNUM = 1;
2669
2670 get_task_inst_rec get_task_inst_dtls%ROWTYPE;
2671
2672 BEGIN
2673 --------------------Start of API Body-----------------------------------
2674 IF (l_log_procedure >= l_log_current_level) THEN
2675 fnd_log.string(l_log_procedure,
2676 L_DEBUG_KEY ||'.begin',
2677 'At the start of PL SQL procedure.');
2678 END IF;
2679
2680 SAVEPOINT Create_Summary_Task;
2681
2682 -- Initialize message list if p_init_msg_list is set to TRUE.
2683 IF Fnd_Api.to_boolean(p_init_msg_list)
2684 THEN
2685 Fnd_Msg_Pub.initialize;
2686 END IF;
2687
2688 -- Initialize API return status to success
2689 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
2690
2691 -- Standard call to check for call compatibility.
2692 IF NOT Fnd_Api.COMPATIBLE_API_CALL(l_api_version,
2693 p_api_version,
2694 l_api_name,G_PKG_NAME)
2695 THEN
2696 RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
2697 END IF;
2698
2699 --------------------Value OR ID conversion---------------------------
2700 --Start API Body
2701 IF p_module_type = 'JSP'
2702 THEN
2703 l_Task_rec.instance_id := NULL;
2704 l_Task_rec.cost_parent_id := NULL;
2705 l_Task_rec.originating_task_id := NULL;
2706 l_Task_rec.department_id := NULL;
2707 END IF;
2708
2709 -------------------Cursor values------------------------------------
2710 OPEN c_visit(l_task_rec.visit_id);
2711 FETCH c_visit INTO c_visit_rec;
2712 CLOSE c_visit;
2713
2714 IF (l_log_statement >= l_log_current_level) THEN
2715 fnd_log.string(l_log_statement,
2716 L_DEBUG_KEY,
2717 ': Visit Id = ' || l_task_rec.visit_id ||
2718 ': Status Code ' || c_visit_rec.status_code);
2719 END IF;
2720
2721 IF c_visit_rec.status_code IN ('CLOSED','CANCELLED') THEN
2722 Fnd_Message.SET_NAME('AHL','AHL_VWP_NOT_USE_VISIT');
2723 Fnd_Msg_Pub.ADD;
2724 RAISE Fnd_Api.G_EXC_ERROR;
2725 ELSE
2726 ----------- Start defining and validate all LOVs on Create Visit's Task UI Screen---
2727 --
2728 -- For DEPARTMENT
2729 -- Convert department name to department id
2730 IF (l_task_rec.dept_name IS NOT NULL AND l_task_rec.dept_name <> Fnd_Api.G_MISS_CHAR ) THEN
2731 IF (l_log_statement >= l_log_current_level) THEN
2732 fnd_log.string(l_log_statement,
2733 L_DEBUG_KEY,
2734 'Calling AHL_VWP_RULES_PVT.Check_Dept_Desc_Or_Id ');
2735 END IF;
2736 AHL_VWP_RULES_PVT.Check_Dept_Desc_Or_Id
2737 (p_organization_id => c_visit_rec.organization_id,
2738 p_dept_name => l_task_rec.dept_name,
2739 p_department_id => NULL,
2740 x_department_id => l_department_id,
2741 x_return_status => l_return_status,
2742 x_error_msg_code => l_msg_data);
2743
2744 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
2745 THEN
2746 Fnd_Message.SET_NAME('AHL','AHL_VWP_DEPT_NOT_EXISTS');
2747 Fnd_Msg_Pub.ADD;
2748 RAISE Fnd_Api.G_EXC_ERROR;
2749 END IF;
2750
2751 -- Changes for Post 11.5.10 by amagrawa
2752 Ahl_vwp_rules_pvt.CHECK_DEPARTMENT_SHIFT
2753 ( P_DEPT_ID => l_department_id,
2754 X_RETURN_STATUS => l_return_status);
2755
2756 IF (NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS) THEN
2757 Fnd_Message.SET_NAME('AHL','AHL_VWP_NO_DEPT_SHIFT');
2758 Fnd_Msg_Pub.ADD;
2759 RAISE Fnd_Api.G_EXC_ERROR;
2760 END IF;
2761
2762 --Assign the returned value
2763 l_task_rec.department_id := l_department_id;
2764 END IF;
2765
2766 IF (l_log_statement >= l_log_current_level) THEN
2767 fnd_log.string(l_log_statement,
2768 L_DEBUG_KEY,
2769 ': Dept ID= ' || l_Task_rec.department_id ||
2770 ': Before Convert Item Item ID= ' || l_Task_rec.inventory_item_id ||
2771 ', Org ID= ' || l_Task_rec.item_organization_id ||
2772 ', Item Name= ' || l_Task_rec.item_name );
2773 END IF;
2774
2775 --
2776 -- For ITEM
2777 -- Convert item name to item id
2778
2779 IF (l_Task_rec.inventory_item_id IS NOT NULL AND
2780 l_Task_rec.inventory_item_id <> Fnd_Api.G_MISS_NUM) AND
2781 (l_Task_rec.item_organization_id IS NOT NULL AND
2782 l_Task_rec.item_organization_id <> Fnd_Api.G_MISS_NUM) THEN
2783
2784 IF (l_log_statement >= l_log_current_level) THEN
2785 fnd_log.string(l_log_statement,
2786 L_DEBUG_KEY,
2787 'Calling AHL_VWP_RULES_PVT.Check_Item_Name_Or_Id ' );
2788 END IF;
2789 AHL_VWP_RULES_PVT.Check_Item_Name_Or_Id
2790 (p_item_id => l_Task_rec.inventory_item_id,
2791 p_org_id => l_Task_rec.item_organization_id,
2792 p_item_name => l_Task_rec.item_name,
2793 x_item_id => l_item_id,
2794 x_org_id => l_org_id,
2795 x_item_name => l_item_name,
2796 x_return_status => l_return_status,
2797 x_error_msg_code => l_msg_data);
2798
2799 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
2800 THEN
2801 Fnd_Message.SET_NAME('AHL','AHL_VWP_ITEM_NOT_EXISTS');
2802 Fnd_Msg_Pub.ADD;
2803 RAISE Fnd_Api.G_EXC_ERROR;
2804 END IF;
2805
2806 IF UPPER(l_Task_rec.item_name) <> UPPER(l_item_name) THEN
2807 Fnd_Message.SET_NAME('AHL','AHL_VWP_ITEM_USE_LOV');
2808 Fnd_Msg_Pub.ADD;
2809 RAISE Fnd_Api.G_EXC_ERROR;
2810 END IF;
2811
2812 --Assign the returned value
2813 l_Task_rec.inventory_item_id := l_item_id;
2814 l_Task_rec.item_organization_id := l_org_id;
2815
2816 /* Commented as Item is not mandatory for Summary Task
2817 Post 11.5.10 Changes done by Senthil.
2818 ELSE
2819 Fnd_Message.SET_NAME('AHL','AHL_VWP_ITEM_USE_LOV');
2820 Fnd_Msg_Pub.ADD;
2821 RAISE Fnd_Api.G_EXC_ERROR;
2822 */
2823
2824 ELSE
2825 -- bug fix #4181411
2826 -- yazhou 17-Feb-2005
2827 IF (c_visit_rec.inventory_item_id IS NOT NULL AND
2828 c_visit_rec.inventory_item_id <> Fnd_Api.G_MISS_NUM) AND
2829 (c_visit_rec.item_organization_id IS NOT NULL AND
2830 c_visit_rec.item_organization_id <> Fnd_Api.G_MISS_NUM) THEN
2831
2832 l_Task_rec.inventory_item_id := c_visit_rec.inventory_item_id;
2833 l_Task_rec.item_organization_id := c_visit_rec.item_organization_id;
2834 ELSE
2835
2836 OPEN get_task_inst_dtls(l_task_rec.visit_id);
2837 FETCH get_task_inst_dtls INTO get_task_inst_rec;
2838 IF get_task_inst_dtls%NOTFOUND THEN
2839 Fnd_Message.SET_NAME('AHL','AHL_VWP_SUM_TASK_ITEM');
2840 Fnd_Msg_Pub.ADD;
2841 CLOSE get_task_inst_dtls;
2842 RAISE Fnd_Api.G_EXC_ERROR;
2843 END IF;
2844
2845 l_Task_rec.inventory_item_id := get_task_inst_rec.inventory_item_id;
2846 l_Task_rec.item_organization_id := get_task_inst_rec.item_organization_id;
2847
2848 CLOSE get_task_inst_dtls;
2849
2850 END IF;
2851
2852 END IF;
2853
2854 IF (l_log_statement >= l_log_current_level) THEN
2855 fnd_log.string(l_log_statement,
2856 L_DEBUG_KEY,
2857 'Item ID= ' || l_Task_rec.inventory_item_id ||
2858 ', Item Org ID= ' || l_Task_rec.item_organization_id ||
2859 ', Item Name= ' || l_Task_rec.item_name ||
2860 ', Serial Number= ' || l_Task_rec.serial_number);
2861 END IF;
2862
2863 -- For SERIAL NUMBER
2864 -- Convert serial number to instance/ serial id
2865 IF (l_Task_rec.serial_number IS NOT NULL AND
2866 l_Task_rec.serial_number <> Fnd_Api.G_MISS_CHAR) THEN
2867
2868 AHL_VWP_RULES_PVT.Check_Serial_Name_Or_Id
2869 (p_item_id => l_Task_rec.inventory_item_id,
2870 p_org_id => l_Task_rec.item_organization_id,
2871 p_serial_id => l_Task_rec.instance_id,
2872 p_serial_number => l_Task_rec.serial_number,
2873 x_serial_id => l_serial_id,
2874 x_return_status => l_return_status,
2875 x_error_msg_code => l_msg_data);
2876
2877 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success THEN
2878 Fnd_Message.SET_NAME('AHL','AHL_VWP_SERIAL_NOT_EXISTS');
2879 Fnd_Msg_Pub.ADD;
2880 RAISE Fnd_Api.G_EXC_ERROR;
2881 ELSE
2882 --Assign the returned value
2883 l_Task_rec.instance_id := l_serial_id;
2884
2885 IF (l_log_statement >= l_log_current_level) THEN
2886 fnd_log.string(l_log_statement,
2887 L_DEBUG_KEY,
2888 ': Before UC Check Serial ID= ' || l_Task_rec.instance_id ||
2889 ', Item ID= ' || l_Task_rec.inventory_item_id ||
2890 ', Org ID= ' || l_Task_rec.item_organization_id);
2891 END IF;
2892 /* sowsubra - start
2893 --BEGIN: jeli added for bug 3777720
2894 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
2895 --END: jeli added for bug 3777720
2896 Fnd_Message.SET_NAME('AHL','AHL_VWP_TASK_SERIAL');
2897 Fnd_Msg_Pub.ADD;
2898 RAISE Fnd_Api.G_EXC_ERROR;
2899 END IF;
2900 sowsubra - end */
2901 END IF;
2902 END IF;
2903
2904 IF (l_log_statement >= l_log_current_level) THEN
2905 fnd_log.string(l_log_statement,
2906 L_DEBUG_KEY,
2907 ': Serial ID= ' || l_Task_rec.instance_id ||
2908 ': Cost parent= ' || l_Task_rec.cost_parent_number);
2909 END IF;
2910
2911 --
2912 -- For COST PARENT TASK
2913 -- Convert cost parent number to id
2914 IF (l_Task_rec.cost_parent_number IS NOT NULL AND
2915 l_Task_rec.cost_parent_number <> Fnd_Api.G_MISS_NUM ) THEN
2916
2917 AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID
2918 (p_visit_task_id => l_Task_rec.cost_parent_id,
2919 p_visit_task_number => l_Task_rec.cost_parent_number,
2920 p_visit_id => l_Task_rec.visit_id,
2921 x_visit_task_id => l_cost_parent_id,
2922 x_return_status => l_return_status,
2923 x_error_msg_code => l_msg_data);
2924
2925 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
2926 THEN
2927 Fnd_Message.SET_NAME('AHL','AHL_VWP_PARENT_NOT_EXISTS');
2928 Fnd_Msg_Pub.ADD;
2929 RAISE Fnd_Api.g_exc_error;
2930 END IF;
2931
2932 --Assign the returned value
2933 l_Task_rec.cost_parent_id := l_cost_parent_id;
2934 END IF;
2935
2936 IF (l_log_statement >= l_log_current_level) THEN
2937 fnd_log.string(l_log_statement,
2938 L_DEBUG_KEY,
2939 ': Cost parent ID = ' || l_Task_rec.cost_parent_id);
2940 END IF;
2941
2942 -- To Check for cost parent task id not forming loop
2943 IF (l_Task_rec.cost_parent_id IS NOT NULL AND
2944 l_Task_rec.cost_parent_id <> Fnd_Api.G_MISS_NUM ) THEN
2945
2946 AHL_VWP_RULES_PVT.Check_Cost_Parent_Loop
2947 (p_visit_id => l_Task_rec.visit_id,
2948 p_visit_task_id => l_Task_rec.visit_task_id ,
2949 p_cost_parent_id => l_Task_rec.cost_parent_id
2950 );
2951
2952 END IF;
2953
2954 IF (l_log_statement >= l_log_current_level) THEN
2955 fnd_log.string(l_log_statement,
2956 L_DEBUG_KEY,
2957 ': Originating Number = ' || l_Task_rec.orginating_task_number);
2958 END IF;
2959
2960 --
2961 -- For ORIGINATING TASK
2962 -- Convert originating task number to id
2963 IF (l_Task_rec.orginating_task_number IS NOT NULL AND
2964 l_Task_rec.orginating_task_number <> Fnd_Api.G_MISS_NUM ) THEN
2965
2966 AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID
2967 (p_visit_task_id => l_Task_rec.originating_task_id,
2968 p_visit_task_number => l_Task_rec.orginating_task_number,
2969 p_visit_id => l_Task_rec.visit_id,
2970 x_visit_task_id => l_originating_task_id,
2971 x_return_status => l_return_status,
2972 x_error_msg_code => l_msg_data);
2973
2974 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
2975 THEN
2976 Fnd_Message.SET_NAME('AHL','AHL_VWP_ORIGINATING_NOT_EXISTS');
2977 Fnd_Msg_Pub.ADD;
2978 RAISE Fnd_Api.g_exc_error;
2979 END IF;
2980
2981 --Assign the returned value
2982 l_Task_rec.originating_task_id := l_originating_task_id;
2983 END IF;
2984
2985 IF (l_log_statement >= l_log_current_level) THEN
2986 fnd_log.string(l_log_statement,
2987 L_DEBUG_KEY,
2988 ': Originating Task ID= ' || l_Task_rec.originating_task_id);
2989 END IF;
2990
2991 -- To Check for originating task id not forming loop
2992 IF (l_Task_rec.originating_task_id IS NOT NULL AND
2993 l_Task_rec.originating_task_id <> Fnd_Api.G_MISS_NUM ) THEN
2994
2995 AHL_VWP_RULES_PVT.Check_Origin_Task_Loop
2996 (p_visit_id => l_Task_rec.visit_id ,
2997 p_visit_task_id => l_Task_rec.visit_task_id ,
2998 p_originating_task_id => l_Task_rec.originating_task_id
2999 );
3000
3001 END IF;
3002
3003 -- Validate target quantity
3004 IF (l_Task_rec.target_qty IS NOT NULL AND
3005 l_Task_rec.target_qty <> Fnd_Api.G_MISS_NUM AND
3006 l_Task_rec.target_qty < 0) THEN
3007 FND_MESSAGE.set_name(G_APP_NAME, 'AHL_CMP_TARGET_QTY_INVLD');
3008 FND_MSG_PUB.add;
3009 RAISE FND_API.G_EXC_ERROR;
3010 END IF;
3011 ----------- End defining and validate all LOVs on Create Visit's Task UI Screen---
3012
3013 ---------------------------------------------- Validate ----------------------------------------------
3014
3015 IF (l_log_statement >= l_log_current_level) THEN
3016 fnd_log.string(l_log_statement,
3017 L_DEBUG_KEY,
3018 'Before Calling Validate_Visit_Task');
3019 END IF;
3020
3021 Validate_Visit_Task (
3022 p_api_version => l_api_version,
3023 p_init_msg_list => p_init_msg_list,
3024 p_commit => Fnd_Api.g_false,
3025 p_validation_level => p_validation_level,
3026 p_task_rec => l_task_rec,
3027 x_return_status => l_return_status,
3028 x_msg_count => x_msg_count,
3029 x_msg_data => x_msg_data
3030 );
3031
3032 IF l_return_status = Fnd_Api.g_ret_sts_error THEN
3033 RAISE Fnd_Api.g_exc_error;
3034 ELSIF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
3035 RAISE Fnd_Api.g_exc_unexpected_error;
3036 END IF;
3037
3038 -- Check for the ID.
3039 IF l_task_rec.Visit_Task_ID = Fnd_Api.g_miss_num OR l_task_rec.Visit_Task_ID IS NULL THEN
3040 -- Check for the ID.
3041 l_Visit_Task_ID := AHL_VWP_RULES_PVT.Get_Visit_Task_Id();
3042 l_task_rec.visit_task_ID := l_Visit_Task_ID;
3043
3044 END IF;
3045
3046 -- SKPATHAK :: 02-MAY-2011 :: VWPE: ER:12424063 :: Check for the Task Number
3047 IF l_task_rec.visit_task_number = Fnd_Api.g_miss_num OR l_task_rec.visit_task_number IS NULL THEN
3048 l_task_number := AHL_VWP_RULES_PVT.Get_Visit_Task_Number(l_task_rec.visit_id);
3049 l_task_rec.visit_task_number := l_task_number;
3050 END IF;
3051
3052 IF (l_log_statement >= l_log_current_level) THEN
3053 fnd_log.string(l_log_statement,
3054 L_DEBUG_KEY,
3055 ': Task ID= ' || l_Task_rec.visit_task_id ||
3056 ': Task number= ' || l_Task_rec.visit_task_number ||
3057 ': Repair batch name= ' || l_Task_rec.REPAIR_BATCH_NAME);
3058 END IF;
3059
3060
3061
3062 ----------------------- Check miss_num/miss_char/miss_date-----------------------
3063 -- For all optional fields check if its g_miss_num/g_miss_char/g_miss_date
3064 -- then Null else the value call Default_Missing_Attribs procedure
3065 Default_Missing_Attribs
3066 (p_x_task_rec => l_Task_rec);
3067
3068 -------------------------- Insert ------------------------------------------------
3069
3070 IF (l_log_statement >= l_log_current_level) THEN
3071 fnd_log.string(l_log_statement,
3072 L_DEBUG_KEY,
3073 'Before Calling Ahl_Visit_Tasks_Pkg.Insert_Row' );
3074 END IF;
3075
3076 -- Invoke the table handler to create a record
3077 Ahl_Visit_Tasks_Pkg.Insert_Row (
3078 X_ROWID => l_rowid,
3079 X_VISIT_TASK_ID => l_task_rec.visit_task_id,
3080 X_VISIT_TASK_NUMBER => l_task_rec.visit_task_number,
3081 X_OBJECT_VERSION_NUMBER => 1,
3082 X_VISIT_ID => l_task_rec.visit_id,
3083 X_PROJECT_TASK_ID => NULL, --l_task_rec.project_task_id,
3084 X_COST_PARENT_ID => l_task_rec.cost_parent_id,
3085 X_MR_ROUTE_ID => NULL,
3086 X_MR_ID => NULL,
3087 X_DURATION => NULL,
3088 X_UNIT_EFFECTIVITY_ID => NULL,
3089 X_START_FROM_HOUR => NULL,
3090 X_INVENTORY_ITEM_ID => l_task_rec.inventory_item_id,
3091 X_ITEM_ORGANIZATION_ID => l_task_rec.item_organization_id,
3092 X_INSTANCE_ID => l_task_rec.instance_id,
3093 X_PRIMARY_VISIT_TASK_ID => NULL, --l_task_rec.primary_visit_task_id,
3094 X_ORIGINATING_TASK_ID => l_task_rec.originating_task_id,
3095 X_SERVICE_REQUEST_ID => l_task_rec.service_request_id,
3096 X_TASK_TYPE_CODE => l_task_rec.task_type_code,
3097 -- PRAKKUM :: FP:PIE :: 13-OCT-2010 :: Service Type code added, as this modified handler requires it
3098 X_SERVICE_TYPE_CODE => NULL,
3099 X_DEPARTMENT_ID => l_task_rec.department_id,
3100 X_SUMMARY_TASK_FLAG => 'Y',
3101 X_PRICE_LIST_ID => NULL,
3102 X_STATUS_CODE => 'PLANNING',
3103 X_ESTIMATED_PRICE => NULL,
3104 X_ACTUAL_PRICE => NULL,
3105 X_ACTUAL_COST => NULL,
3106 -- Post 11.5.10 Changes by Senthil.
3107 X_STAGE_ID => l_task_rec.STAGE_ID,
3108 -- Added cxcheng POST11510--------------
3109 -- SKPATHAK :: ER: 9147951 :: 11-JAN-2010 :: Pass past dates too
3110 X_START_DATE_TIME => NULL,
3111 X_END_DATE_TIME => NULL,
3112 X_PAST_TASK_START_DATE => NULL,
3113 X_PAST_TASK_END_DATE => NULL,
3114 --MANESING::Component Maintenance Planning Project, 07-Aug-2011, added target quantity
3115 X_TARGET_QTY => l_task_rec.TARGET_QTY,
3116 X_ATTRIBUTE_CATEGORY => l_task_rec.ATTRIBUTE_CATEGORY,
3117 X_ATTRIBUTE1 => l_task_rec.ATTRIBUTE1,
3118 X_ATTRIBUTE2 => l_task_rec.ATTRIBUTE2,
3119 X_ATTRIBUTE3 => l_task_rec.ATTRIBUTE3,
3120 X_ATTRIBUTE4 => l_task_rec.ATTRIBUTE4,
3121 X_ATTRIBUTE5 => l_task_rec.ATTRIBUTE5,
3122 X_ATTRIBUTE6 => l_task_rec.ATTRIBUTE6,
3123 X_ATTRIBUTE7 => l_task_rec.ATTRIBUTE7,
3124 X_ATTRIBUTE8 => l_task_rec.ATTRIBUTE8,
3125 X_ATTRIBUTE9 => l_task_rec.ATTRIBUTE9,
3126 X_ATTRIBUTE10 => l_task_rec.ATTRIBUTE10,
3127 X_ATTRIBUTE11 => l_task_rec.ATTRIBUTE11,
3128 X_ATTRIBUTE12 => l_task_rec.ATTRIBUTE12,
3129 X_ATTRIBUTE13 => l_task_rec.ATTRIBUTE13,
3130 X_ATTRIBUTE14 => l_task_rec.ATTRIBUTE14,
3131 X_ATTRIBUTE15 => l_task_rec.ATTRIBUTE15,
3132 X_VISIT_TASK_NAME => l_task_rec.visit_task_name,
3133 X_DESCRIPTION => l_task_rec.description,
3134 -- Added by rnahata for Issue 105 - Qty is zero for manully created summary tasks
3135 X_QUANTITY => 0,
3136 X_CREATION_DATE => SYSDATE,
3137 X_CREATED_BY => Fnd_Global.USER_ID,
3138 X_LAST_UPDATE_DATE => SYSDATE,
3139 X_LAST_UPDATED_BY => Fnd_Global.USER_ID,
3140 X_LAST_UPDATE_LOGIN => Fnd_Global.LOGIN_ID,
3141 X_REPAIR_BATCH_NAME => l_task_rec.REPAIR_BATCH_NAME --PRAKKUM :: 13/06/2012 :: Bug 14068468
3142 );
3143
3144 IF (l_log_statement >= l_log_current_level) THEN
3145 fnd_log.string(l_log_statement,
3146 L_DEBUG_KEY,
3147 'After Calling Ahl_Visit_Tasks_Pkg.Insert_Row' );
3148 END IF;
3149
3150 ------------------------- finish -------------------------------
3151
3152 -- salogan added for supplier warranty starts
3153 -- calling AHL_VWP_RULES_PVT.Get_Warranty_Rec_for_Create
3154 AHL_VWP_RULES_PVT.Get_Warranty_Rec_for_Create(
3155 p_task_id => l_task_rec.visit_task_id,
3156 p_instance_id => l_task_rec.instance_id,
3157 x_warranty_entl_tbl => l_entl_rec_tbl);
3158
3159 IF (l_log_statement >= l_log_current_level) THEN
3160 fnd_log.string(l_log_statement,
3161 L_DEBUG_KEY,
3162 'Before calling AHL_WARRANTY_ENTL_PVT.Process_Warranty_Entitlements.');
3163 END IF;
3164
3165 --Not passing p_commit the main API commits the data at the end
3166 AHL_WARRANTY_ENTL_PVT.Process_Warranty_Entitlements(
3167 p_api_version => l_api_version,
3168 p_validation_level => p_validation_level,
3169 p_module_type => p_module_type,
3170 p_user_role => AHL_WARRANTY_ENTL_PVT.G_USER_PLANNER,
3171 p_x_warranty_entl_tbl => l_entl_rec_tbl,
3172 x_return_status => l_return_status,
3173 x_msg_count => l_msg_count,
3174 x_msg_data => l_msg_data);
3175
3176 IF (l_log_statement >= l_log_current_level) THEN
3177 fnd_log.string(l_log_statement,
3178 L_DEBUG_KEY,
3179 'After calling AHL_WARRANTY_ENTL_PVT.Process_Warranty_Entitlements. Return Status = ' ||
3180 l_return_status);
3181 END IF;
3182
3183 l_msg_count := Fnd_Msg_Pub.count_msg;
3184 IF l_msg_count > 0 OR l_return_status <> Fnd_Api.g_ret_sts_success THEN
3185 x_msg_count := l_msg_count;
3186 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
3187 RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
3188 END IF;
3189 -- salogan added for supplier warranty ends
3190
3191 -- Added cxcheng POST11510--------------
3192 --Now adjust the times derivation for task
3193 IF (l_log_statement >= l_log_current_level) THEN
3194 fnd_log.string(l_log_statement,
3195 L_DEBUG_KEY,
3196 'Before Calling AHL_VWP_TIMES_PVT.Adjust_Task_Times' );
3197 END IF;
3198
3199 AHL_VWP_TIMES_PVT.Adjust_Task_Times(p_api_version => 1.0,
3200 p_init_msg_list => Fnd_Api.G_FALSE,
3201 p_commit => Fnd_Api.G_FALSE,
3202 p_validation_level => Fnd_Api.G_VALID_LEVEL_FULL,
3203 x_return_status => l_return_status,
3204 x_msg_count => l_msg_count,
3205 x_msg_data => l_msg_data,
3206 p_task_id => l_task_rec.visit_task_id);
3207
3208 IF (l_log_statement >= l_log_current_level) THEN
3209 fnd_log.string(l_log_statement,
3210 L_DEBUG_KEY,
3211 'After Calling AHL_VWP_TIMES_PVT.Adjust_Task_Times, Return Status = '|| l_return_status );
3212 END IF;
3213
3214 --Standard check to count messages
3215 l_msg_count := Fnd_Msg_Pub.count_msg;
3216
3217 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
3218 x_msg_count := l_msg_count;
3219 x_return_status := Fnd_Api.G_RET_STS_ERROR;
3220 RAISE Fnd_Api.G_EXC_ERROR;
3221 END IF;
3222
3223 -- set OUT value
3224 p_x_task_rec.Visit_Task_ID := l_task_rec.Visit_Task_ID;
3225 --TCHIMIRA::BUG 9246386 :: 02-02-2010::Fetch the regenerated visit task number from DB using visit task ID
3226 --p_x_task_rec.Visit_Task_Number := l_task_rec.Visit_Task_Number;
3227 select VISIT_TASK_NUMBER INTO p_x_task_rec.Visit_Task_Number from AHL_VISIT_TASKS_B where VISIT_TASK_ID = p_x_task_rec.Visit_Task_ID;
3228
3229 IF c_visit_rec.Any_Task_Chg_Flag='N' THEN
3230 AHL_VWP_RULES_PVT.update_visit_task_flag(
3231 p_visit_id =>c_visit_rec.visit_id,
3232 p_flag =>'Y',
3233 x_return_status =>x_return_status);
3234 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3235 RAISE FND_API.G_EXC_ERROR;
3236 END IF;
3237 END IF;
3238
3239 IF (l_log_statement >= l_log_current_level) THEN
3240 fnd_log.string(l_log_statement,
3241 L_DEBUG_KEY,
3242 ': After Insert ' || 'Task ID= ' || p_x_Task_rec.visit_task_id ||
3243 ': After Insert ' || 'Task Number= ' || p_x_Task_rec.visit_task_number);
3244 END IF;
3245
3246 END IF; -- Check for visit status code in case if closed or any other
3247
3248 ---------------------------End of API Body---------------------------------------
3249 --Standard check to count messages
3250 l_msg_count := Fnd_Msg_Pub.count_msg;
3251
3252 IF l_msg_count > 0 THEN
3253 x_msg_count := l_msg_count;
3254 x_return_status := Fnd_Api.G_RET_STS_ERROR;
3255 RAISE Fnd_Api.G_EXC_ERROR;
3256 END IF;
3257
3258 --Standard check for commit
3259 IF Fnd_Api.TO_BOOLEAN(p_commit) THEN
3260 COMMIT;
3261 END IF;
3262
3263 IF (l_log_procedure >= l_log_current_level) THEN
3264 fnd_log.string(l_log_procedure,
3265 L_DEBUG_KEY ||'.end',
3266 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
3267 END IF;
3268 EXCEPTION
3269 WHEN Fnd_Api.g_exc_error THEN
3270 ROLLBACK TO Create_Summary_Task;
3271 x_return_status := Fnd_Api.g_ret_sts_error;
3272 Fnd_Msg_Pub.count_and_get(
3273 p_encoded => Fnd_Api.g_false,
3274 p_count => x_msg_count,
3275 p_data => x_msg_data
3276 );
3277 WHEN Fnd_Api.g_exc_unexpected_error THEN
3278 ROLLBACK TO Create_Summary_Task;
3279 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
3280 Fnd_Msg_Pub.count_and_get (
3281 p_encoded => Fnd_Api.g_false,
3282 p_count => x_msg_count,
3283 p_data => x_msg_data
3284 );
3285 WHEN OTHERS THEN
3286 ROLLBACK TO Create_Summary_Task;
3287 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
3288 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
3289 THEN
3290 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
3291 END IF;
3292 Fnd_Msg_Pub.count_and_get (
3293 p_encoded => Fnd_Api.g_false,
3294 p_count => x_msg_count,
3295 p_data => x_msg_data
3296 );
3297 END Create_Summary_Task;
3298
3299 --------------------------------------------------------------------
3300 -- PROCEDURE
3301 -- Update_Task
3302 --
3303 -- PURPOSE
3304 -- To update all types of tasks i.e Unassociated/Summary/Unplanned/Planned Tasks.
3305 --------------------------------------------------------------------
3306 PROCEDURE Update_Task (
3307 p_api_version IN NUMBER,
3308 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
3309 p_commit IN VARCHAR2 := Fnd_Api.g_false,
3310 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
3311 p_module_type IN VARCHAR2 := 'JSP',
3312 p_x_task_rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
3313 x_return_status OUT NOCOPY VARCHAR2,
3314 x_msg_count OUT NOCOPY NUMBER,
3315 x_msg_data OUT NOCOPY VARCHAR2
3316 )
3317 IS
3318 L_API_VERSION CONSTANT NUMBER := 1.0;
3319 L_API_NAME CONSTANT VARCHAR2(30) := 'Update_Task';
3320 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
3321
3322 -- local variables defined for the procedure
3323 l_task_rec AHL_VWP_RULES_PVT.Task_Rec_Type := p_x_task_rec;
3324 l_msg_data VARCHAR2(2000);
3325 l_return_status VARCHAR2(1);
3326 l_msg_count NUMBER;
3327 l_visit_end_date DATE;
3328
3329 -- PRAKKUM :: FP PIE :: 13-OCT-2010
3330 -- Adding a new local variable.
3331 l_new_structure_flag VARCHAR2(1);
3332
3333 -- To find task related information
3334 CURSOR c_Task (x_id IN NUMBER) IS
3335 SELECT * FROM Ahl_Visit_Tasks_VL
3336 WHERE VISIT_TASK_ID = x_id;
3337 c_Task_rec c_Task%ROWTYPE;
3338
3339 -- SKPATHAK :: ER: 9147951 :: 11-JAN-2010
3340 -- get the start date and planned end date of the visit
3341 CURSOR c_Visit (x_id IN NUMBER) IS
3342 SELECT start_date_time, close_date_time FROM ahl_visits_b
3343 WHERE VISIT_ID = x_id;
3344 c_visit_rec c_Visit%ROWTYPE;
3345
3346
3347 BEGIN
3348 IF (l_log_procedure >= l_log_current_level) THEN
3349 fnd_log.string(l_log_procedure,
3350 L_DEBUG_KEY ||'.begin',
3351 'At the start of PL SQL procedure.');
3352 END IF;
3353
3354 --------------------- initialize -----------------------
3355 SAVEPOINT Update_Task;
3356
3357 IF Fnd_Api.to_boolean (p_init_msg_list) THEN
3358 Fnd_Msg_Pub.initialize;
3359 END IF;
3360
3361 -- Initialize API return status to success
3362 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
3363
3364 -- Standard call to check for call compatibility.
3365 IF NOT Fnd_Api.compatible_api_call(
3366 l_api_version,
3367 p_api_version,
3368 l_api_name,
3369 G_PKG_NAME
3370 ) THEN
3371 RAISE Fnd_Api.g_exc_unexpected_error;
3372 END IF;
3373 --------------------Start of API Body-----------------------------------
3374
3375 -------------------Cursor values------------------------------------
3376
3377 OPEN c_Task(l_Task_rec.visit_task_id);
3378 FETCH c_Task INTO c_Task_rec;
3379 CLOSE c_Task;
3380
3381 -- SKPATHAK :: ER: 9147951 :: 11-JAN-2010 :: STARTS
3382 OPEN c_Visit(l_Task_rec.visit_id);
3383 FETCH c_Visit INTO c_visit_rec;
3384 CLOSE c_Visit;
3385
3386 ---------------------------------------------- Start----------------------------------------------------------
3387
3388 IF c_Task_rec.status_code = 'RELEASED' THEN
3389 l_task_rec.PAST_TASK_START_DATE := c_Task_rec.PAST_TASK_START_DATE;
3390 l_task_rec.PAST_TASK_END_DATE := c_Task_rec.PAST_TASK_END_DATE;
3391 END IF;
3392
3393
3394 IF (l_task_rec.PAST_TASK_START_DATE IS NOT NULL
3395 AND l_task_rec.PAST_TASK_START_DATE <> Fnd_Api.G_MISS_DATE) THEN
3396 IF (l_task_rec.PAST_TASK_END_DATE IS NULL
3397 OR l_task_rec.PAST_TASK_START_DATE = Fnd_Api.G_MISS_DATE) THEN
3398 -- if start date is entered but not end date, throw error
3399 Fnd_Message.SET_NAME('AHL','AHL_VWP_PAST_TASK_DATE_MAND');
3400 Fnd_Msg_Pub.ADD;
3401 RAISE FND_API.G_EXC_ERROR;
3402 END IF;
3403 IF (l_Task_rec.PAST_TASK_START_DATE >= SYSDATE) THEN
3404 -- Throw error if start date is not in past
3405 Fnd_Message.SET_NAME('AHL','AHL_VWP_TASK_PAST_ST_DATE_INV');
3406 Fnd_Msg_Pub.ADD;
3407 RAISE FND_API.G_EXC_ERROR;
3408 END IF;
3409 IF (l_task_rec.PAST_TASK_START_DATE < NVL(c_visit_rec.START_DATE_TIME, l_task_rec.PAST_TASK_START_DATE)) THEN
3410 -- Throw error if past task start date is before the visit start date
3411 Fnd_Message.SET_NAME('AHL','AHL_VWP_TASK_START_DATE_INVLD');
3412 Fnd_Msg_Pub.ADD;
3413 RAISE FND_API.G_EXC_ERROR;
3414 END IF;
3415 IF (l_task_rec.PAST_TASK_START_DATE > l_task_rec.PAST_TASK_END_DATE) THEN
3416 -- Throw error if past task start date is after the past task end date
3417 Fnd_Message.SET_NAME('AHL','AHL_VWP_PAST_TASK_DATE_INVLD');
3418 Fnd_Msg_Pub.ADD;
3419 RAISE FND_API.G_EXC_ERROR;
3420 END IF;
3421 IF (l_Task_rec.PAST_TASK_END_DATE > NVL(c_visit_rec.CLOSE_DATE_TIME, l_Task_rec.PAST_TASK_END_DATE)) THEN
3422 -- Throw error if visit ends before the task
3423 Fnd_Message.SET_NAME('AHL','AHL_VWP_TASK_END_DATE_INVLD');
3424 Fnd_Msg_Pub.ADD;
3425 RAISE FND_API.G_EXC_ERROR;
3426 END IF;
3427 -- Validate past dates against visit stages, task hierarchy and cost parent hierarchy
3428 AHL_VWP_RULES_PVT.Validate_Past_Task_Dates ( p_task_rec => l_Task_rec,
3429 x_return_status => l_return_status);
3430 IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
3431 IF (l_log_statement >= l_log_current_level) THEN
3432 fnd_log.string(l_log_statement,
3433 L_DEBUG_KEY,
3434 'Returned success from AHL_VWP_RULES_PVT.Validate_Past_Task_Dates');
3435 END IF;
3436 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
3437 RAISE FND_API.G_EXC_ERROR;
3438 ELSE
3439 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3440 END IF;
3441 ELSE -- PAST_TASK_START_DATE is null
3442 -- SKPATHAK :: Bug #9402279 :: 24-FEB-2010
3443 -- Changed the condition from l_task_rec.PAST_TASK_START_DATE <> Fnd_Api.G_MISS_DATE
3444 -- to l_task_rec.PAST_TASK_END_DATE <> Fnd_Api.G_MISS_DATE
3445 IF (l_Task_rec.PAST_TASK_END_DATE IS NOT NULL
3446 AND l_Task_rec.PAST_TASK_END_DATE <> Fnd_Api.G_MISS_DATE) THEN
3447 Fnd_Message.SET_NAME('AHL','AHL_VWP_PAST_TASK_DATE_MAND');
3448 Fnd_Msg_Pub.ADD;
3449 RAISE FND_API.G_EXC_ERROR;
3450 END IF;
3451 -- If the earlier value of past task date is not null, cannot nullify the past date now
3452 IF c_Task_rec.PAST_TASK_START_DATE IS NOT NULL THEN
3453 Fnd_Message.SET_NAME('AHL','AHL_VWP_TASK_DATE_NOT_NULL');
3454 Fnd_Msg_Pub.ADD;
3455 RAISE FND_API.G_EXC_ERROR;
3456 END IF;
3457 l_Task_rec.PAST_TASK_START_DATE := NULL;
3458 l_Task_rec.PAST_TASK_END_DATE := NULL;
3459 END IF;
3460 -- SKPATHAK :: ER: 9147951 :: 11-JAN-2010 :: END
3461
3462
3463 IF (l_log_statement >= l_log_current_level) THEN
3464 fnd_log.string(l_log_statement,
3465 L_DEBUG_KEY,
3466 'Status Code = ' || c_Task_rec.status_code);
3467 END IF;
3468
3469 IF c_Task_rec.status_code = 'RELEASED' THEN
3470 IF (l_log_statement >= l_log_current_level) THEN
3471 fnd_log.string(l_log_statement,
3472 L_DEBUG_KEY,
3473 'Before calling Update_Tasks_in_Production');
3474 END IF;
3475
3476 Update_Tasks_in_Production
3477 (p_api_version => l_api_version,
3478 p_init_msg_list => p_init_msg_list,
3479 p_commit => Fnd_Api.g_false,
3480 p_validation_level => p_validation_level,
3481 p_module_type => p_module_type,
3482 p_x_task_rec => l_task_rec,
3483 x_return_status => l_return_status,
3484 x_msg_count => l_msg_count,
3485 x_msg_data => l_msg_data
3486 );
3487 IF (l_log_statement >= l_log_current_level) THEN
3488 fnd_log.string(l_log_statement,
3489 L_DEBUG_KEY,
3490 'After calling Update_Tasks_in_Production, Return Status = ' || l_return_status);
3491 END IF;
3492
3493 ELSE
3494 IF (l_log_statement >= l_log_current_level) THEN
3495 fnd_log.string(l_log_statement,
3496 L_DEBUG_KEY,
3497 'Before calling Update_Tasks_in_Planning');
3498 END IF;
3499 Update_Tasks_in_Planning
3500 (p_api_version => l_api_version,
3501 p_init_msg_list => p_init_msg_list,
3502 p_commit => Fnd_Api.g_false,
3503 p_validation_level => p_validation_level,
3504 p_module_type => p_module_type,
3505 p_x_task_rec => l_task_rec,
3506 x_return_status => l_return_status,
3507 x_msg_count => l_msg_count,
3508 x_msg_data => l_msg_data
3509 );
3510 IF (l_log_statement >= l_log_current_level) THEN
3511 fnd_log.string(l_log_statement,
3512 L_DEBUG_KEY,
3513 'After calling Update_Tasks_in_Planning,Return Status = '|| l_return_status);
3514 END IF;
3515 END IF;
3516
3517 -- PRAKKUM ::FP PIE :: 13-OCT-2010 :: BEGIN
3518
3519 IF (l_log_statement >= l_log_current_level) THEN
3520 fnd_log.string(l_log_statement, L_DEBUG_KEY, 'Before calling Use_New_Task_Structure.');
3521 END IF;
3522
3523 AHL_VWP_PROJ_PROD_PVT.Use_New_Task_Structure
3524 ( p_visit_id => c_Task_rec.visit_id,
3525 x_new_structure_flag => l_new_structure_flag
3526 );
3527
3528 IF l_new_structure_flag = 'Y' THEN
3529 IF c_Task_rec.project_task_id IS NOT NULL THEN
3530 IF ((NVL(c_Task_rec.cost_parent_id, -5) <> NVL(l_task_rec.COST_PARENT_ID,-5))) THEN
3531 IF (l_log_statement >= l_log_current_level) THEN
3532 fnd_log.string(l_log_statement,
3533 L_DEBUG_KEY,
3534 'Before calling AHL_VWP_PROJ_PROD_PVT.Update_Project_Task l_return_status= '|| l_return_status);
3535 END IF;
3536
3537 AHL_VWP_PROJ_PROD_PVT.Update_Project_Task (
3538 p_task_id => l_Task_rec.visit_task_id,
3539 x_return_status => l_return_status,
3540 x_msg_count => l_msg_count,
3541 x_msg_data => l_msg_data
3542 );
3543 IF (l_log_statement >= l_log_current_level) THEN
3544 fnd_log.string(l_log_statement,
3545 L_DEBUG_KEY,
3546 'After calling AHL_VWP_PROJ_PROD_PVT.Update_Project_Task l_return_status= '|| l_return_status);
3547 END IF;
3548
3549 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
3550 x_msg_count := FND_MSG_PUB.count_msg;
3551 IF (l_log_statement >= l_log_current_level) THEN
3552 fnd_log.string(l_log_statement, L_DEBUG_KEY, 'Errors from Update_Project_Task. Message count: ' || x_msg_count);
3553 END IF;
3554 IF l_return_status = FND_API.G_RET_STS_ERROR THEN
3555 RAISE FND_API.G_EXC_ERROR;
3556 ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
3557 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3558 END IF;
3559 ELSE
3560 IF (l_log_statement >= l_log_current_level) THEN
3561 fnd_log.string(l_log_statement, L_DEBUG_KEY, 'Returned Success from Update_Project_Task.');
3562 END IF;
3563 END IF;
3564
3565 END IF;
3566 END IF;
3567 END IF;
3568 -- PRAKKUM :: FP PIE :: 13-OCT-2010 :: END
3569
3570 -- Added to raise errors after calling respective API's
3571 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3572 RAISE FND_API.G_EXC_ERROR;
3573 END IF;
3574
3575 ------------------------End of API Body------------------------------------
3576 --Standard check to count messages
3577 l_msg_count := Fnd_Msg_Pub.count_msg;
3578
3579 IF l_msg_count > 0 THEN
3580 x_msg_count := l_msg_count;
3581 x_return_status := Fnd_Api.G_RET_STS_ERROR;
3582 RAISE Fnd_Api.G_EXC_ERROR;
3583 END IF;
3584
3585 --Standard check for commit
3586 IF Fnd_Api.TO_BOOLEAN(p_commit) THEN
3587 COMMIT;
3588 END IF;
3589
3590 IF (l_log_procedure >= l_log_current_level) THEN
3591 fnd_log.string(l_log_procedure,
3592 L_DEBUG_KEY ||'.end',
3593 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
3594 END IF;
3595
3596 EXCEPTION
3597 WHEN Fnd_Api.g_exc_error THEN
3598 ROLLBACK TO Update_Task;
3599 x_return_status := Fnd_Api.g_ret_sts_error;
3600 Fnd_Msg_Pub.count_and_get (
3601 p_encoded => Fnd_Api.g_false,
3602 p_count => x_msg_count,
3603 p_data => x_msg_data
3604 );
3605 WHEN Fnd_Api.g_exc_unexpected_error THEN
3606 ROLLBACK TO Update_Task;
3607 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
3608 Fnd_Msg_Pub.count_and_get (
3609 p_encoded => Fnd_Api.g_false,
3610 p_count => x_msg_count,
3611 p_data => x_msg_data
3612 );
3613 WHEN OTHERS THEN
3614 ROLLBACK TO Update_Task;
3615 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
3616 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
3617 THEN
3618 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
3619 END IF;
3620 Fnd_Msg_Pub.count_and_get (
3621 p_encoded => Fnd_Api.g_false,
3622 p_count => x_msg_count,
3623 p_data => x_msg_data
3624 );
3625 END Update_Task;
3626
3627 --------------------------------------------------------------------
3628 -- PROCEDURE
3629 -- Update_Tasks_in_Planning
3630 --
3631 -- PURPOSE
3632 -- To update visit task when in planning status
3633 --------------------------------------------------------------------
3634
3635 PROCEDURE Update_Tasks_in_Planning(
3636 p_api_version IN NUMBER := 1.0,
3637 p_init_msg_list IN VARCHAR2:= FND_API.G_FALSE,
3638 p_commit IN VARCHAR2:= FND_API.G_FALSE,
3639 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3640 p_module_type IN VARCHAR2:= 'JSP',
3641 p_x_task_rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
3642 x_return_status OUT NOCOPY VARCHAR2,
3643 x_msg_count OUT NOCOPY NUMBER,
3644 x_msg_data OUT NOCOPY VARCHAR2
3645
3646 ) IS
3647 L_API_VERSION CONSTANT NUMBER := 1.0;
3648 L_API_NAME CONSTANT VARCHAR2(30) := 'Update_Tasks_in_Planning';
3649 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
3650 l_return_status VARCHAR2(1);
3651 l_msg_data VARCHAR2(2000);
3652 l_msg_count NUMBER;
3653 l_count NUMBER;
3654 l_workorder_rec AHL_PRD_WORKORDER_PVT.prd_workorder_rec;
3655 l_workoper_tbl AHL_PRD_WORKORDER_PVT.prd_workoper_tbl;
3656
3657 -- To find visit related information
3658 CURSOR c_Visit (p_visit_id IN NUMBER) IS
3659 SELECT ROW_ID ,
3660 VISIT_ID ,
3661 VISIT_NUMBER ,
3662 OBJECT_VERSION_NUMBER ,
3663 LAST_UPDATE_DATE ,
3664 LAST_UPDATED_BY ,
3665 CREATION_DATE ,
3666 CREATED_BY ,
3667 LAST_UPDATE_LOGIN ,
3668 ORGANIZATION_ID ,
3669 DEPARTMENT_ID ,
3670 STATUS_CODE ,
3671 START_DATE_TIME ,
3672 VISIT_TYPE_CODE ,
3673 SIMULATION_PLAN_ID ,
3674 ITEM_INSTANCE_ID ,
3675 ITEM_ORGANIZATION_ID ,
3676 INVENTORY_ITEM_ID ,
3677 ASSO_PRIMARY_VISIT_ID ,
3678 SIMULATION_DELETE_FLAG,
3679 TEMPLATE_FLAG ,
3680 OUT_OF_SYNC_FLAG ,
3681 PROJECT_FLAG ,
3682 PROJECT_ID ,
3683 VISIT_NAME ,
3684 DESCRIPTION ,
3685 SERVICE_REQUEST_ID ,
3686 SPACE_CATEGORY_CODE ,
3687 CLOSE_DATE_TIME ,
3688 SCHEDULE_DESIGNATOR ,
3689 PRICE_LIST_ID ,
3690 ESTIMATED_PRICE ,
3691 ACTUAL_PRICE ,
3692 OUTSIDE_PARTY_FLAG ,
3693 ANY_TASK_CHG_FLAG ,
3694 ATTRIBUTE_CATEGORY ,
3695 ATTRIBUTE1 ,
3696 ATTRIBUTE2 ,
3697 ATTRIBUTE3 ,
3698 ATTRIBUTE4 ,
3699 ATTRIBUTE5 ,
3700 ATTRIBUTE6 ,
3701 ATTRIBUTE7 ,
3702 ATTRIBUTE8 ,
3703 ATTRIBUTE9 ,
3704 ATTRIBUTE10 ,
3705 ATTRIBUTE11 ,
3706 ATTRIBUTE12 ,
3707 ATTRIBUTE13 ,
3708 ATTRIBUTE14 ,
3709 ATTRIBUTE15
3710 FROM Ahl_Visits_VL
3711 WHERE VISIT_ID = p_visit_id;
3712
3713 l_Visit_rec c_Visit%ROWTYPE;
3714 l_Task_rec AHL_VWP_RULES_PVT.Task_Rec_Type default p_x_task_rec;
3715
3716 Cursor c_visit_task_det(p_visit_task_id in number)
3717 is
3718 Select ROW_ID ,
3719 VISIT_TASK_ID ,
3720 VISIT_TASK_NUMBER ,
3721 OBJECT_VERSION_NUMBER ,
3722 CREATION_DATE ,
3723 CREATED_BY ,
3724 LAST_UPDATE_DATE ,
3725 LAST_UPDATED_BY ,
3726 LAST_UPDATE_LOGIN ,
3727 VISIT_ID ,
3728 PROJECT_TASK_ID ,
3729 COST_PARENT_ID ,
3730 MR_ROUTE_ID ,
3731 MR_ID ,
3732 DURATION ,
3733 UNIT_EFFECTIVITY_ID ,
3734 VISIT_TASK_NAME ,
3735 DESCRIPTION ,
3736 START_FROM_HOUR ,
3737 INVENTORY_ITEM_ID ,
3738 ITEM_ORGANIZATION_ID ,
3739 INSTANCE_ID ,
3740 PRIMARY_VISIT_TASK_ID ,
3741 SUMMARY_TASK_FLAG ,
3742 ORIGINATING_TASK_ID ,
3743 SECURITY_GROUP_ID ,
3744 SERVICE_REQUEST_ID ,
3745 TASK_TYPE_CODE ,
3746 DEPARTMENT_ID ,
3747 PRICE_LIST_ID ,
3748 STATUS_CODE ,
3749 ACTUAL_COST ,
3750 ESTIMATED_PRICE ,
3751 ACTUAL_PRICE ,
3752 ATTRIBUTE_CATEGORY ,
3753 ATTRIBUTE1 ,
3754 ATTRIBUTE2 ,
3755 ATTRIBUTE3 ,
3756 ATTRIBUTE4 ,
3757 ATTRIBUTE5 ,
3758 ATTRIBUTE6 ,
3759 ATTRIBUTE7 ,
3760 ATTRIBUTE8 ,
3761 ATTRIBUTE9 ,
3762 ATTRIBUTE10 ,
3763 ATTRIBUTE11 ,
3764 ATTRIBUTE12 ,
3765 ATTRIBUTE13 ,
3766 ATTRIBUTE14 ,
3767 ATTRIBUTE15 ,
3768 QUANTITY , --Added by rnahata for Issue 105
3769 STAGE_ID
3770 from ahl_visit_tasks_vl
3771 where visit_task_id = p_visit_task_id;
3772
3773 l_old_Task_rec c_visit_task_det%rowtype;
3774
3775 -- To find if WIP job is created for the Visit
3776 CURSOR c_job(x_id IN NUMBER) IS
3777 SELECT COUNT(*) FROM AHL_WORKORDERS
3778 WHERE VISIT_ID = x_id
3779 AND MASTER_WORKORDER_FLAG = 'Y'
3780 AND STATUS_CODE = 17;
3781
3782 CURSOR c_Task_WO(x_task_id IN NUMBER) IS
3783 SELECT * FROM AHL_WORKORDERS
3784 WHERE VISIT_TASK_ID = x_task_id
3785 AND STATUS_CODE = 17;
3786 l_task_workrec c_Task_WO%ROWTYPE;
3787
3788 -- To find all tasks under this current visit related information
3789 CURSOR c_all_Task (x_id IN NUMBER) IS
3790 SELECT *
3791 FROM Ahl_Visit_Tasks_VL
3792 WHERE VISIT_TASK_ID = x_id;
3793 l_all_Task_rec c_all_Task%ROWTYPE;
3794
3795 l_workrec AHL_PRD_WORKORDER_PVT.PRD_WORKORDER_REC;
3796
3797 BEGIN
3798 IF (l_log_procedure >= l_log_current_level) THEN
3799 fnd_log.string(l_log_procedure,
3800 L_DEBUG_KEY ||'.begin',
3801 'At the start of PL SQL procedure.' ||
3802 'Visit ID ' || l_task_rec.visit_id ||
3803 'Visit Task ID ' || l_Task_rec.visit_task_id);
3804 END IF;
3805
3806 --------------------- initialize -----------------------
3807 SAVEPOINT Update_Tasks_in_Planning;
3808
3809 IF Fnd_Api.to_boolean (p_init_msg_list) THEN
3810 Fnd_Msg_Pub.initialize;
3811 END IF;
3812
3813 -- Initialize API return status to success
3814 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
3815
3816 -- Standard call to check for call compatibility.
3817 IF NOT Fnd_Api.compatible_api_call(
3818 l_api_version,
3819 p_api_version,
3820 l_api_name,
3821 G_PKG_NAME
3822 ) THEN
3823 RAISE Fnd_Api.g_exc_unexpected_error;
3824 END IF;
3825
3826 -- PRAKKUM :: FP:PIE :: 13-OCT-2010 :: validate Service Type attributes, before calling any other update API
3827 AHL_VWP_RULES_PVT.Validate_Service_Type(
3828 p_service_type => l_task_rec.service_type,
3829 p_module_type => p_module_type,
3830 p_unit_effectivity_id => l_task_rec.unit_effectivity_id,
3831 p_x_service_type_code => l_task_rec.service_type_code
3832 );
3833
3834 OPEN c_visit(l_task_rec.visit_id);
3835 FETCH c_visit INTO l_visit_rec;
3836 CLOSE c_visit;
3837
3838 OPEN c_visit_task_det(l_Task_rec.visit_task_id);
3839 FETCH c_visit_task_det INTO l_old_Task_rec;
3840 CLOSE c_visit_task_det;
3841
3842 IF (l_log_statement >= l_log_current_level) THEN
3843 fnd_log.string(l_log_statement,
3844 L_DEBUG_KEY,
3845 'Task type code = ' || l_old_Task_rec.task_type_code);
3846 END IF;
3847
3848 IF (l_old_Task_rec.task_type_code <> 'SUMMARY'
3849 AND l_Task_rec.stage_name IS NOT NULL) THEN
3850
3851 IF (l_log_statement >= l_log_current_level) THEN
3852 fnd_log.string(l_log_statement,
3853 L_DEBUG_KEY,
3854 ' Call AHL_VWP_VISITS_STAGES_PVT.VALIDATE_STAGE_UPDATES ');
3855 END IF;
3856 AHL_VWP_VISITS_STAGES_PVT.VALIDATE_STAGE_UPDATES(
3857 P_API_VERSION => 1.0,
3858 P_VISIT_ID => l_Task_rec.visit_id,
3859 P_VISIT_TASK_ID => l_Task_rec.visit_task_id,
3860 P_STAGE_NAME => L_task_rec.STAGE_NAME,
3861 X_STAGE_ID => L_task_rec.STAGE_ID,
3862 X_RETURN_STATUS => l_return_status,
3863 X_MSG_COUNT => l_msg_count,
3864 X_MSG_DATA => l_msg_data );
3865
3866 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
3867 x_msg_count := l_msg_count;
3868 x_return_status := Fnd_Api.G_RET_STS_ERROR;
3869 RAISE Fnd_Api.G_EXC_ERROR;
3870 END IF;
3871 END IF;
3872
3873 -- Code added to make sure that department name to id conversion takes place
3874 -- Irrespective of above API Being Called.
3875 IF (l_task_rec.dept_name IS NOT NULL AND l_task_rec.dept_name <> Fnd_Api.G_MISS_CHAR ) THEN
3876 AHL_VWP_RULES_PVT.Check_Dept_Desc_Or_Id
3877 (p_organization_id => l_visit_rec.organization_id,
3878 p_dept_name => l_task_rec.dept_name,
3879 p_department_id => NULL,
3880 x_department_id => l_task_rec.department_id,
3881 x_return_status => l_return_status,
3882 x_error_msg_code => l_msg_data);
3883
3884 IF (NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS) THEN
3885 Fnd_Message.SET_NAME('AHL','AHL_VWP_DEPT_NOT_EXISTS');
3886 Fnd_Msg_Pub.ADD;
3887 RAISE Fnd_Api.G_EXC_ERROR;
3888 END IF;
3889
3890 -- Changes for Post 11.5.10 by cxcheng
3891 Ahl_vwp_rules_pvt.CHECK_DEPARTMENT_SHIFT
3892 ( P_DEPT_ID => l_task_rec.department_id,
3893 X_RETURN_STATUS => l_return_status);
3894
3895 IF (NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS) THEN
3896 Fnd_Message.SET_NAME('AHL','AHL_VWP_NO_DEPT_SHIFT');
3897 Fnd_Msg_Pub.ADD;
3898 RAISE Fnd_Api.G_EXC_ERROR;
3899 END IF;
3900 ELSE
3901 l_task_rec.department_id := NULL;
3902 END IF;
3903
3904 IF (l_log_statement >= l_log_current_level) THEN
3905 fnd_log.string(l_log_statement,
3906 L_DEBUG_KEY,
3907 ' In Update task... ' ||
3908 ' l_task_rec.department_id '|| l_task_rec.department_id ||
3909 ' l_old_Task_rec.department_id'|| l_old_Task_rec.department_id);
3910 END IF;
3911
3912 -- If Task DEPARTMENT is changed after price/cost is estimated,
3913
3914 IF (NVL(l_task_rec.department_id, -999 ) <> NVL(l_old_Task_rec.department_id, -999)) THEN
3915
3916 -- If Task DEPARTMENT is changed after price/cost is estimated,
3917 -- the prices associated to Visit and all the Tasks in the visit will be cleared up
3918 OPEN c_job(l_visit_rec.visit_id);
3919 FETCH c_job INTO l_count;
3920 CLOSE c_job;
3921
3922 IF l_count > 0 THEN
3923 -- To update visit's prices
3924 UPDATE AHL_VISITS_B
3925 SET ACTUAL_PRICE = NULL, ESTIMATED_PRICE = NULL,
3926 OBJECT_VERSION_NUMBER = OBJECT_VERSION_NUMBER + 1
3927 WHERE VISIT_ID = l_visit_rec.visit_id;
3928
3929 IF (l_log_statement >= l_log_current_level) THEN
3930 fnd_log.string(l_log_statement,
3931 L_DEBUG_KEY,
3932 ' After Update Price for Visit');
3933 END IF;
3934
3935 -- To update all tasks prices of tasks under this visit
3936 OPEN c_all_task(l_visit_rec.visit_id);
3937 LOOP
3938 FETCH c_all_task INTO l_all_task_rec;
3939 EXIT WHEN c_all_task%NOTFOUND;
3940 -- Tasks found for visit
3941 -- To set prices to NULL in case if the visit's department is changed
3942 UPDATE AHL_VISIT_TASKS_B
3943 SET ACTUAL_PRICE = NULL, ESTIMATED_PRICE = NULL,
3944 OBJECT_VERSION_NUMBER = l_all_task_rec.object_version_number + 1
3945 WHERE VISIT_TASK_ID = l_all_task_rec.visit_task_id;
3946 END LOOP;
3947 CLOSE c_all_task;
3948
3949 IF (l_log_statement >= l_log_current_level) THEN
3950 fnd_log.string(l_log_statement,
3951 L_DEBUG_KEY,
3952 ' After Update Price for all Tasks');
3953 END IF;
3954
3955 END IF;
3956
3957 -- TASK DEPARTMENT UPDATED THEN
3958 -- Wip job for the current task to be updated with new department
3959 OPEN c_Task_WO(l_Task_rec.visit_task_id);
3960 FETCH c_Task_WO INTO l_task_workrec;
3961 IF c_Task_WO%FOUND THEN
3962 l_workorder_rec.WORKORDER_ID := l_task_workrec.workorder_id;
3963 l_workorder_rec.OBJECT_VERSION_NUMBER := l_task_workrec.object_version_number;
3964 IF l_Task_rec.department_id is NULL THEN
3965 l_workorder_rec.DEPARTMENT_ID := l_visit_rec.department_id;
3966 ELSE
3967 l_workorder_rec.DEPARTMENT_ID := l_Task_rec.department_id;
3968 END IF;
3969 CLOSE c_Task_WO;
3970
3971 IF (l_log_statement >= l_log_current_level) THEN
3972 fnd_log.string(l_log_statement,
3973 L_DEBUG_KEY,
3974 'Before Calling AHL_PRD_WORKORDER_PVT.update_job');
3975 END IF;
3976 AHL_PRD_WORKORDER_PVT.update_job
3977 (p_api_version =>1.0,
3978 p_init_msg_list =>fnd_api.g_false,
3979 p_commit =>fnd_api.g_false,
3980 p_validation_level =>p_validation_level,
3981 p_default =>fnd_api.g_false,
3982 p_module_type =>'API',
3983 x_return_status =>x_return_status,
3984 x_msg_count =>x_msg_count,
3985 x_msg_data =>x_msg_data,
3986 p_wip_load_flag =>'Y',
3987 p_x_prd_workorder_rec =>l_workorder_rec,
3988 P_X_PRD_WORKOPER_TBL =>l_workoper_tbl
3989 );
3990
3991 IF (l_log_statement >= l_log_current_level) THEN
3992 fnd_log.string(l_log_statement,
3993 L_DEBUG_KEY,
3994 'After Calling AHL_PRD_WORKORDER_PVT.update_job, Return Status = ' || x_return_status);
3995 END IF;
3996
3997 IF l_return_status <> Fnd_Api.g_ret_sts_success THEN
3998 RAISE Fnd_Api.G_EXC_ERROR;
3999 END IF;
4000
4001 --SKPATHAK :: VWPE: ER:12424063 :: 08-JUN-2011 :: close the cursor only if %notfound
4002 ELSE --c_Task_WO%FOUND
4003 CLOSE c_Task_wO;
4004 END IF;
4005
4006 END IF; -- Check for Dept change
4007
4008 IF (l_log_statement >= l_log_current_level) THEN
4009 fnd_log.string(l_log_statement,
4010 L_DEBUG_KEY,
4011 ': After calling update task for costing changes');
4012 END IF;
4013
4014 IF l_task_rec.task_type_code = 'SUMMARY' THEN
4015 IF (l_log_statement >= l_log_current_level)THEN
4016 fnd_log.string(l_log_statement,
4017 L_DEBUG_KEY,
4018 'Before Calling Update_Summary_Task, TASK TYPE = ' || l_task_rec.task_type_code);
4019 END IF;
4020
4021 Update_Summary_Task
4022 (
4023 p_api_version => l_api_version,
4024 p_init_msg_list => p_init_msg_list,
4025 p_commit => Fnd_Api.g_false,
4026 p_validation_level => p_validation_level,
4027 p_module_type => p_module_type,
4028 p_x_task_rec => l_task_rec,
4029 x_return_status => l_return_status,
4030 x_msg_count => l_msg_count,
4031 x_msg_data => l_msg_data
4032 );
4033 IF (l_log_statement >= l_log_current_level)THEN
4034 fnd_log.string(l_log_statement,
4035 L_DEBUG_KEY,
4036 'After Calling Update_Summary_Task, Return Status = ' || l_return_status);
4037 END IF;
4038 ELSIF l_task_rec.task_type_code = 'PLANNED' THEN
4039 -- Call AHL_VWP_PLAN_TASKS_PVT
4040
4041 IF (l_log_statement >= l_log_current_level)THEN
4042 fnd_log.string(l_log_statement,
4043 L_DEBUG_KEY,
4044 'Calling Update_Planned_Task, TASK TYPE = ' || l_task_rec.task_type_code);
4045 END IF;
4046
4047 AHL_VWP_PLAN_TASKS_PVT.Update_Planned_Task
4048 (
4049 p_api_version => l_api_version,
4050 p_init_msg_list => p_init_msg_list,
4051 p_commit => Fnd_Api.g_false,
4052 p_validation_level => p_validation_level,
4053 p_module_type => p_module_type,
4054 p_x_task_rec => l_task_rec,
4055 x_return_status => l_return_status,
4056 x_msg_count => l_msg_count,
4057 x_msg_data => l_msg_data
4058 );
4059 ELSIF l_task_rec.task_type_code = 'UNPLANNED' THEN
4060 -- Call AHL_VWP_UNPLAN_TASKS_PVT
4061 IF (l_log_statement >= l_log_current_level)THEN
4062 fnd_log.string(l_log_statement,
4063 L_DEBUG_KEY,
4064 'Calling Update_Unplanned_Task, TASK TYPE = ' || l_task_rec.task_type_code);
4065 END IF;
4066
4067 AHL_VWP_UNPLAN_TASKS_PVT.Update_Unplanned_Task
4068 (p_api_version => l_api_version,
4069 p_init_msg_list => p_init_msg_list,
4070 p_commit => Fnd_Api.g_false,
4071 p_validation_level => p_validation_level,
4072 p_module_type => p_module_type,
4073 p_x_task_rec => l_task_rec,
4074 x_return_status => l_return_status,
4075 x_msg_count => l_msg_count,
4076 x_msg_data => l_msg_data
4077 );
4078 ELSIF l_task_rec.task_type_code = 'UNASSOCIATED' THEN
4079 -- Call AHL_VWP_UNPLAN_TASKS_PVT
4080 IF (l_log_statement >= l_log_current_level)THEN
4081 fnd_log.string(l_log_statement,
4082 L_DEBUG_KEY,
4083 'Before Calling Update_Unassociated_Task');
4084 END IF;
4085
4086 Update_Unassociated_Task
4087 (p_api_version => l_api_version,
4088 p_init_msg_list => p_init_msg_list,
4089 p_commit => Fnd_Api.g_false,
4090 p_validation_level => p_validation_level,
4091 p_module_type => p_module_type,
4092 p_x_task_rec => l_task_rec,
4093 x_return_status => l_return_status,
4094 x_msg_count => l_msg_count,
4095 x_msg_data => l_msg_data
4096 );
4097
4098 IF (l_log_statement >= l_log_current_level)THEN
4099 fnd_log.string(l_log_statement,
4100 L_DEBUG_KEY,
4101 'After Calling Update_Unassociated_Task, Return Status = ' ||l_return_status );
4102 END IF;
4103 END IF;
4104
4105 -- Added to raise errors after calling respective API's
4106 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4107 RAISE FND_API.G_EXC_ERROR;
4108 END IF;
4109
4110 --------------------------------------------------------------------------
4111 ---- START 11.5.10 CHANGES FOR COSTING ----
4112 --------------------------------------------------------------------------
4113
4114 -- Conversion is done to make sure that the number to id conversion takes place
4115 -- Irrespective of above Update API Calls.
4116 -- Convert cost parent number to id
4117 IF (p_x_task_rec.cost_parent_number IS NOT NULL AND
4118 p_x_task_rec.cost_parent_number <> Fnd_Api.G_MISS_NUM ) THEN
4119
4120 IF (l_log_statement >= l_log_current_level)THEN
4121 fnd_log.string(l_log_statement,
4122 L_DEBUG_KEY,
4123 'Calling AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID ');
4124 END IF;
4125
4126 AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID
4127 (p_visit_task_id => p_x_task_rec.cost_parent_id,
4128 p_visit_task_number => p_x_task_rec.cost_parent_number,
4129 p_visit_id => p_x_task_rec.visit_id,
4130 x_visit_task_id => p_x_task_rec.cost_parent_id,
4131 x_return_status => l_return_status,
4132 x_error_msg_code => l_msg_data);
4133
4134 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4135 RAISE FND_API.G_EXC_ERROR;
4136 END IF;
4137 ELSE
4138 p_x_task_rec.cost_parent_id := null;
4139 END IF;
4140
4141 -- Updating Cost Parent should update the any_task_chg_flag
4142 IF (NVL(p_x_task_rec.cost_parent_id, -999 ) <> NVL(l_old_Task_rec.cost_parent_id, -999)) THEN
4143 IF l_visit_rec.any_task_chg_flag = 'N' THEN
4144 IF (l_log_statement >= l_log_current_level)THEN
4145 fnd_log.string(l_log_statement,
4146 L_DEBUG_KEY,
4147 'Before Calling AHL_VWP_RULES_PVT.Update_Visit_Task_Flag ' ||
4148 'Any_task_chg_flag = ' ||l_visit_rec.any_task_chg_flag);
4149 END IF;
4150
4151 AHL_VWP_RULES_PVT.Update_Visit_Task_Flag
4152 (p_visit_id => l_old_Task_rec.visit_id,
4153 p_flag => 'Y',
4154 x_return_status => x_return_status);
4155
4156 IF (l_log_statement >= l_log_current_level)THEN
4157 fnd_log.string(l_log_statement,
4158 L_DEBUG_KEY,
4159 'After Calling AHL_VWP_RULES_PVT.Update_Visit_Task_Flag, Return Status = ' ||x_return_status);
4160 END IF;
4161
4162 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4163 RAISE FND_API.G_EXC_ERROR;
4164 END IF;
4165 END IF;
4166 END IF; -- for cost_parent_id check
4167
4168 --------------------------------------------------------------------------
4169 ---- END 11.5.10 CHANGES FOR COSTING ----
4170 --------------------------------------------------------------------------
4171
4172 ------------------------End of API Body------------------------------------
4173 --Standard check to count messages
4174 l_msg_count := Fnd_Msg_Pub.count_msg;
4175
4176 IF l_msg_count > 0 THEN
4177 x_msg_count := l_msg_count;
4178 x_return_status := Fnd_Api.G_RET_STS_ERROR;
4179 RAISE Fnd_Api.G_EXC_ERROR;
4180 END IF;
4181
4182 --Standard check for commit
4183 IF Fnd_Api.TO_BOOLEAN(p_commit) THEN
4184 COMMIT;
4185 END IF;
4186
4187 IF (l_log_procedure >= l_log_current_level) THEN
4188 fnd_log.string(l_log_procedure,
4189 L_DEBUG_KEY ||'.end',
4190 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
4191 END IF;
4192
4193 EXCEPTION
4194 WHEN Fnd_Api.g_exc_error THEN
4195 ROLLBACK TO Update_Tasks_in_Planning;
4196 x_return_status := Fnd_Api.g_ret_sts_error;
4197 Fnd_Msg_Pub.count_and_get (
4198 p_encoded => Fnd_Api.g_false,
4199 p_count => x_msg_count,
4200 p_data => x_msg_data
4201 );
4202 WHEN Fnd_Api.g_exc_unexpected_error THEN
4203 ROLLBACK TO Update_Tasks_in_Planning;
4204 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
4205 Fnd_Msg_Pub.count_and_get (
4206 p_encoded => Fnd_Api.g_false,
4207 p_count => x_msg_count,
4208 p_data => x_msg_data
4209 );
4210 WHEN OTHERS THEN
4211 ROLLBACK TO Update_Tasks_in_Planning;
4212 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
4213 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
4214 THEN
4215 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
4216 END IF;
4217 Fnd_Msg_Pub.count_and_get (
4218 p_encoded => Fnd_Api.g_false,
4219 p_count => x_msg_count,
4220 p_data => x_msg_data
4221 );
4222
4223 END Update_Tasks_in_Planning;
4224
4225 --------------------------------------------------------------------
4226 -- PROCEDURE
4227 -- Update_Tasks_in_Production
4228 --
4229 -- PURPOSE
4230 -- To update visit task which are relaesed
4231 --------------------------------------------------------------------
4232
4233 PROCEDURE Update_Tasks_in_Production(
4234 p_api_version IN NUMBER := 1.0,
4235 p_init_msg_list IN VARCHAR2:= FND_API.G_FALSE,
4236 p_commit IN VARCHAR2:= FND_API.G_FALSE,
4237 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
4238 p_module_type IN VARCHAR2:= 'JSP',
4239 p_x_task_rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
4240 x_return_status OUT NOCOPY VARCHAR2,
4241 x_msg_count OUT NOCOPY NUMBER,
4242 x_msg_data OUT NOCOPY VARCHAR2
4243
4244 ) IS
4245
4246 L_API_VERSION CONSTANT NUMBER := 1.0;
4247 L_API_NAME CONSTANT VARCHAR2(30) := 'Update_Tasks_in_Production';
4248 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
4249 l_Task_rec AHL_VWP_RULES_PVT.Task_Rec_Type default p_x_task_rec;
4250
4251 Cursor c_visit_task_det(p_visit_task_id in number)
4252 is
4253 Select ROW_ID ,
4254 VISIT_TASK_ID ,
4255 VISIT_TASK_NUMBER ,
4256 OBJECT_VERSION_NUMBER ,
4257 CREATION_DATE ,
4258 CREATED_BY ,
4259 LAST_UPDATE_DATE ,
4260 LAST_UPDATED_BY ,
4261 LAST_UPDATE_LOGIN ,
4262 VISIT_ID ,
4263 PROJECT_TASK_ID ,
4264 COST_PARENT_ID ,
4265 MR_ROUTE_ID ,
4266 MR_ID ,
4267 DURATION ,
4268 UNIT_EFFECTIVITY_ID ,
4269 VISIT_TASK_NAME ,
4270 DESCRIPTION ,
4271 START_FROM_HOUR ,
4272 -- SKPATHAK :: ER: 9147951 :: 11-JAN-2010 :: Fetch past dates too
4273 PAST_TASK_START_DATE ,
4274 PAST_TASK_END_DATE ,
4275 INVENTORY_ITEM_ID ,
4276 ITEM_ORGANIZATION_ID ,
4277 INSTANCE_ID ,
4278 PRIMARY_VISIT_TASK_ID ,
4279 SUMMARY_TASK_FLAG ,
4280 ORIGINATING_TASK_ID ,
4281 SECURITY_GROUP_ID ,
4282 SERVICE_REQUEST_ID ,
4283 TASK_TYPE_CODE ,
4284 SERVICE_TYPE_CODE , -- PRAKKUM :: FP:PIE :: 13-OCT-2010 :: fetch Service Type code too
4285 DEPARTMENT_ID ,
4286 PRICE_LIST_ID ,
4287 STATUS_CODE ,
4288 ACTUAL_COST ,
4289 ESTIMATED_PRICE ,
4290 ACTUAL_PRICE ,
4291 ATTRIBUTE_CATEGORY ,
4292 ATTRIBUTE1 ,
4293 ATTRIBUTE2 ,
4294 ATTRIBUTE3 ,
4295 ATTRIBUTE4 ,
4296 ATTRIBUTE5 ,
4297 ATTRIBUTE6 ,
4298 ATTRIBUTE7 ,
4299 ATTRIBUTE8 ,
4300 ATTRIBUTE9 ,
4301 ATTRIBUTE10 ,
4302 ATTRIBUTE11 ,
4303 ATTRIBUTE12 ,
4304 ATTRIBUTE13 ,
4305 ATTRIBUTE14 ,
4306 ATTRIBUTE15 ,
4307 QUANTITY , --Added by rnahata for Issue 105
4308 STAGE_ID
4309 from ahl_visit_tasks_vl
4310 where visit_task_id = p_visit_task_id;
4311
4312 l_old_Task_rec c_visit_task_det%rowtype;
4313
4314 Cursor c_any_task_flg(p_visit_id in number)
4315 is
4316 Select any_task_chg_flag
4317 from ahl_visits_b
4318 where visit_id = p_visit_id;
4319
4320 l_any_task_chg_flag ahl_visits_b.any_task_chg_flag%type;
4321
4322 l_return_status VARCHAR2(1);
4323 l_cost_parent_id NUMBER;
4324 l_msg_data VARCHAR2(2000);
4325 l_msg_count NUMBER;
4326
4327 BEGIN
4328
4329 IF (l_log_procedure >= l_log_current_level) THEN
4330 fnd_log.string(l_log_procedure,
4331 L_DEBUG_KEY ||'.begin',
4332 'At the start of PL SQL procedure.' ||
4333 'Visit Task Id = ' || l_Task_rec.visit_task_id );
4334 END IF;
4335
4336 --------------------- initialize -----------------------
4337 SAVEPOINT Update_Tasks_in_Production;
4338
4339 IF Fnd_Api.to_boolean (p_init_msg_list) THEN
4340 Fnd_Msg_Pub.initialize;
4341 END IF;
4342
4343 -- Initialize API return status to success
4344 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
4345
4346 -- Standard call to check for call compatibility.
4347 IF NOT Fnd_Api.compatible_api_call(
4348 l_api_version,
4349 p_api_version,
4350 l_api_name,
4351 G_PKG_NAME
4352 ) THEN
4353 RAISE Fnd_Api.g_exc_unexpected_error;
4354 END IF;
4355
4356 OPEN c_visit_task_det(l_Task_rec.visit_task_id);
4357 FETCH c_visit_task_det INTO l_old_Task_rec;
4358 CLOSE c_visit_task_det;
4359
4360 IF (l_Task_rec.cost_parent_number IS NOT NULL AND
4361 l_Task_rec.cost_parent_number <> Fnd_Api.G_MISS_NUM ) THEN
4362
4363 AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID
4364 (p_visit_task_id => l_Task_rec.cost_parent_id,
4365 p_visit_task_number => l_Task_rec.cost_parent_number,
4366 p_visit_id => l_Task_rec.visit_id,
4367 x_visit_task_id => l_cost_parent_id,
4368 x_return_status => l_return_status,
4369 x_error_msg_code => l_msg_data);
4370
4371 -- PRAKKUM :: FP PIE :: 13-OCT-2010 :: Pass the cost parent to the in out param
4372 p_x_task_rec.cost_parent_id := l_cost_parent_id;
4373
4374 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
4375 THEN
4376 Fnd_Message.SET_NAME('AHL','AHL_VWP_PARENT_NOT_EXISTS');
4377 Fnd_Msg_Pub.ADD;
4378 RAISE Fnd_Api.g_exc_error;
4379 END IF;
4380 --Assign the returned value
4381 l_Task_rec.cost_parent_id := l_cost_parent_id;
4382 ELSE
4383 l_Task_rec.cost_parent_id := NULL;
4384 END IF;
4385
4386 -- To Check for cost parent task id not forming loop
4387 IF (l_Task_rec.cost_parent_id IS NOT NULL AND
4388 l_Task_rec.cost_parent_id <> Fnd_Api.G_MISS_NUM ) THEN
4389
4390 AHL_VWP_RULES_PVT.Check_Cost_Parent_Loop
4391 (p_visit_id => l_Task_rec.visit_id,
4392 p_visit_task_id => l_Task_rec.visit_task_id ,
4393 p_cost_parent_id => l_Task_rec.cost_parent_id
4394 );
4395 END IF;
4396
4397 -- Validate target quantity
4398 IF (l_Task_rec.target_qty IS NOT NULL AND
4399 l_Task_rec.target_qty <> Fnd_Api.G_MISS_NUM AND
4400 l_Task_rec.target_qty < 0) THEN
4401 FND_MESSAGE.set_name(G_APP_NAME, 'AHL_CMP_TARGET_QTY_INVLD');
4402 FND_MSG_PUB.add;
4403 RAISE FND_API.G_EXC_ERROR;
4404 END IF;
4405
4406 IF (l_log_statement >= l_log_current_level) THEN
4407 fnd_log.string(l_log_statement,
4408 L_DEBUG_KEY,
4409 'Before Calling Ahl_Visit_Tasks_Pkg.UPDATE_ROW');
4410 END IF;
4411
4412 Ahl_Visit_Tasks_Pkg.UPDATE_ROW (
4413 X_VISIT_TASK_ID => l_task_rec.visit_task_id,
4414 X_VISIT_TASK_NUMBER => l_old_Task_rec.visit_task_number,
4415 X_OBJECT_VERSION_NUMBER => l_task_rec.OBJECT_VERSION_NUMBER + 1,
4416 X_VISIT_ID => l_old_Task_rec.visit_id,
4417 X_PROJECT_TASK_ID => l_old_Task_rec.project_task_id,
4418 X_COST_PARENT_ID => l_task_rec.cost_parent_id,
4419 X_MR_ROUTE_ID => l_old_Task_rec.mr_route_id,
4420 X_MR_ID => l_old_Task_rec.mr_id,
4421 X_DURATION => l_task_rec.duration,
4422 X_UNIT_EFFECTIVITY_ID => l_old_Task_rec.unit_effectivity_id,
4423 X_START_FROM_HOUR => l_task_rec.start_from_hour,
4424 X_INVENTORY_ITEM_ID => l_old_Task_rec.inventory_item_id,
4425 X_ITEM_ORGANIZATION_ID => l_old_Task_rec.item_organization_id,
4426 X_INSTANCE_ID => l_Task_rec.instance_id,
4427 X_PRIMARY_VISIT_TASK_ID => l_old_Task_rec.primary_visit_task_id,
4428 X_ORIGINATING_TASK_ID => l_task_rec.originating_task_id,
4429 X_SERVICE_REQUEST_ID => l_task_rec.service_request_id,
4430 X_TASK_TYPE_CODE => l_task_rec.task_type_code,
4431 -- PRAKKUM :: FP:PIE :: 13-OCT-2010 :: update Service Type code too, as this modified handler requires it
4432 X_SERVICE_TYPE_CODE => l_old_Task_rec.service_type_code,
4433 X_DEPARTMENT_ID => l_task_rec.department_id,
4434 X_SUMMARY_TASK_FLAG => 'N',
4435 X_PRICE_LIST_ID => l_old_Task_rec.price_list_id,
4436 X_STATUS_CODE => l_old_Task_rec.status_code,
4437 X_ESTIMATED_PRICE => l_old_Task_rec.estimated_price,
4438 X_ACTUAL_PRICE => l_old_Task_rec.actual_price,
4439 X_ACTUAL_COST => l_old_Task_rec.actual_cost,
4440 -- Post 11.5.10 Changes by Senthil.
4441 X_STAGE_ID => l_Task_rec.stage_id,
4442 -- Added cxcheng POST11510--------------
4443 -- SKPATHAK :: ER: 9147951 :: 11-JAN-2010
4444 -- Pass past dates too, and if it is null, pass null for all the 4 columns below
4445 X_START_DATE_TIME => l_old_Task_rec.PAST_TASK_START_DATE,
4446 X_END_DATE_TIME => l_old_Task_rec.PAST_TASK_END_DATE,
4447 X_PAST_TASK_START_DATE => l_old_Task_rec.PAST_TASK_START_DATE,
4448 X_PAST_TASK_END_DATE => l_old_Task_rec.PAST_TASK_END_DATE,
4449 --MANESING::Component Maintenance Planning Project, 07-Aug-2011, added target quantity
4450 X_TARGET_QTY => l_Task_rec.target_qty,
4451
4452 -- manisaga commented the attribute from from l_old_task_rec and and added from
4453 -- l_task_rec for DFF implementation on 19-Feb-2010 --- Start
4454 /*
4455 X_ATTRIBUTE_CATEGORY => l_old_Task_rec.ATTRIBUTE_CATEGORY,
4456 X_ATTRIBUTE1 => l_old_Task_rec.ATTRIBUTE1,
4457 X_ATTRIBUTE2 => l_old_Task_rec.ATTRIBUTE2,
4458 X_ATTRIBUTE3 => l_old_Task_rec.ATTRIBUTE3,
4459 X_ATTRIBUTE4 => l_old_Task_rec.ATTRIBUTE4,
4460 X_ATTRIBUTE5 => l_old_Task_rec.ATTRIBUTE5,
4461 X_ATTRIBUTE6 => l_old_Task_rec.ATTRIBUTE6,
4462 X_ATTRIBUTE7 => l_old_Task_rec.ATTRIBUTE7,
4463 X_ATTRIBUTE8 => l_old_Task_rec.ATTRIBUTE8,
4464 X_ATTRIBUTE9 => l_old_Task_rec.ATTRIBUTE9,
4465 X_ATTRIBUTE10 => l_old_Task_rec.ATTRIBUTE10,
4466 X_ATTRIBUTE11 => l_old_Task_rec.ATTRIBUTE11,
4467 X_ATTRIBUTE12 => l_old_Task_rec.ATTRIBUTE12,
4468 X_ATTRIBUTE13 => l_old_Task_rec.ATTRIBUTE13,
4469 X_ATTRIBUTE14 => l_old_Task_rec.ATTRIBUTE14,
4470 X_ATTRIBUTE15 => l_old_Task_rec.ATTRIBUTE15,
4471 */
4472 X_ATTRIBUTE_CATEGORY => l_task_rec.ATTRIBUTE_CATEGORY,
4473 X_ATTRIBUTE1 => l_task_rec.ATTRIBUTE1,
4474 X_ATTRIBUTE2 => l_task_rec.ATTRIBUTE2,
4475 X_ATTRIBUTE3 => l_task_rec.ATTRIBUTE3,
4476 X_ATTRIBUTE4 => l_task_rec.ATTRIBUTE4,
4477 X_ATTRIBUTE5 => l_task_rec.ATTRIBUTE5,
4478 X_ATTRIBUTE6 => l_task_rec.ATTRIBUTE6,
4479 X_ATTRIBUTE7 => l_task_rec.ATTRIBUTE7,
4480 X_ATTRIBUTE8 => l_task_rec.ATTRIBUTE8,
4481 X_ATTRIBUTE9 => l_task_rec.ATTRIBUTE9,
4482 X_ATTRIBUTE10 => l_task_rec.ATTRIBUTE10,
4483 X_ATTRIBUTE11 => l_task_rec.ATTRIBUTE11,
4484 X_ATTRIBUTE12 => l_task_rec.ATTRIBUTE12,
4485 X_ATTRIBUTE13 => l_task_rec.ATTRIBUTE13,
4486 X_ATTRIBUTE14 => l_task_rec.ATTRIBUTE14,
4487 X_ATTRIBUTE15 => l_task_rec.ATTRIBUTE15,
4488 -- manisaga commented the attribute from from l_old_task_rec and and added from
4489 -- l_task_rec for DFF implementation on 19-Feb-2010 --- End
4490
4491 X_VISIT_TASK_NAME => l_task_rec.visit_task_name,
4492 X_DESCRIPTION => l_task_rec.description,
4493 X_QUANTITY => l_old_Task_rec.quantity, -- Added by rnahata for Issue 105
4494 X_LAST_UPDATE_DATE => SYSDATE,
4495 X_LAST_UPDATED_BY => Fnd_Global.USER_ID,
4496 X_LAST_UPDATE_LOGIN => Fnd_Global.LOGIN_ID );
4497
4498 IF (l_log_statement >= l_log_current_level) THEN
4499 fnd_log.string(l_log_statement,
4500 L_DEBUG_KEY,
4501 'After Calling Ahl_Visit_Tasks_Pkg.UPDATE_ROW');
4502 END IF;
4503
4504 -- Added cxcheng POST11510--------------
4505 --Now adjust the times derivation for task
4506 IF (l_log_statement >= l_log_current_level) THEN
4507 fnd_log.string(l_log_statement,
4508 L_DEBUG_KEY,
4509 'Before Calling AHL_VWP_TIMES_PVT.Adjust_Task_Times');
4510 END IF;
4511
4512 -- SKPATHAK :: ER: 9147951 :: 11-JAN-2010 :: Call Adjust_Task_Times only if past date is null
4513 IF l_old_Task_rec.PAST_TASK_START_DATE IS NULL THEN
4514 AHL_VWP_TIMES_PVT.Adjust_Task_Times(p_api_version => 1.0,
4515 p_init_msg_list => Fnd_Api.G_FALSE,
4516 p_commit => Fnd_Api.G_FALSE,
4517 p_validation_level => Fnd_Api.G_VALID_LEVEL_FULL,
4518 x_return_status => l_return_status,
4519 x_msg_count => l_msg_count,
4520 x_msg_data => l_msg_data,
4521 p_task_id => l_task_rec.visit_task_id);
4522 END IF;
4523
4524 IF (l_log_statement >= l_log_current_level) THEN
4525 fnd_log.string(l_log_statement,
4526 L_DEBUG_KEY,
4527 'After Calling AHL_VWP_TIMES_PVT.Adjust_Task_Times, Return Status = '|| l_return_status );
4528 END IF;
4529
4530 --Standard check to count messages
4531 l_msg_count := Fnd_Msg_Pub.count_msg;
4532
4533 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
4534 x_msg_count := l_msg_count;
4535 x_return_status := Fnd_Api.G_RET_STS_ERROR;
4536 RAISE Fnd_Api.G_EXC_ERROR;
4537 END IF;
4538
4539 IF NVL(l_task_rec.cost_parent_id,-30) <> NVL(l_old_Task_rec.cost_parent_id,-30)
4540 THEN
4541 OPEN c_any_task_flg(l_old_Task_rec.visit_id);
4542 FETCH c_any_task_flg INTO l_any_task_chg_flag;
4543 CLOSE c_any_task_flg;
4544
4545 IF l_any_task_chg_flag = 'N' THEN
4546 AHL_VWP_RULES_PVT.Update_Visit_Task_Flag
4547 (p_visit_id => l_old_Task_rec.visit_id,
4548 p_flag => 'Y',
4549 x_return_status => x_return_status);
4550 END IF;
4551 END IF;
4552
4553 --Standard check to count messages
4554 l_msg_count := Fnd_Msg_Pub.count_msg;
4555
4556 IF l_msg_count > 0 THEN
4557 x_msg_count := l_msg_count;
4558 x_return_status := Fnd_Api.G_RET_STS_ERROR;
4559 RAISE Fnd_Api.G_EXC_ERROR;
4560 END IF;
4561
4562 --Standard check for commit
4563 IF Fnd_Api.TO_BOOLEAN(p_commit) THEN
4564 COMMIT;
4565 END IF;
4566
4567 IF (l_log_procedure >= l_log_current_level) THEN
4568 fnd_log.string(l_log_procedure,
4569 L_DEBUG_KEY ||'.end',
4570 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
4571 END IF;
4572 EXCEPTION
4573 WHEN Fnd_Api.g_exc_error THEN
4574 ROLLBACK TO Update_Tasks_in_Production;
4575 x_return_status := Fnd_Api.g_ret_sts_error;
4576 Fnd_Msg_Pub.count_and_get (
4577 p_encoded => Fnd_Api.g_false,
4578 p_count => x_msg_count,
4579 p_data => x_msg_data
4580 );
4581 WHEN Fnd_Api.g_exc_unexpected_error THEN
4582 ROLLBACK TO Update_Tasks_in_Production;
4583 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
4584 Fnd_Msg_Pub.count_and_get (
4585 p_encoded => Fnd_Api.g_false,
4586 p_count => x_msg_count,
4587 p_data => x_msg_data
4588 );
4589 WHEN OTHERS THEN
4590 ROLLBACK TO Update_Tasks_in_Production;
4591 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
4592 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
4593 THEN
4594 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
4595 END IF;
4596 Fnd_Msg_Pub.count_and_get (
4597 p_encoded => Fnd_Api.g_false,
4598 p_count => x_msg_count,
4599 p_data => x_msg_data
4600 );
4601 END Update_Tasks_in_Production;
4602
4603 --------------------------------------------------------------------
4604 -- PROCEDURE
4605 -- Update_Unassociated_Task
4606 --
4607 -- PURPOSE
4608 -- To update Unassociated task for the Maintainance visit.
4609 --------------------------------------------------------------------
4610 PROCEDURE Update_Unassociated_Task (
4611 p_api_version IN NUMBER,
4612 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
4613 p_commit IN VARCHAR2 := Fnd_Api.g_false,
4614 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
4615 p_module_type IN VARCHAR2 := 'JSP',
4616 p_x_task_rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
4617 x_return_status OUT NOCOPY VARCHAR2,
4618 x_msg_count OUT NOCOPY NUMBER,
4619 x_msg_data OUT NOCOPY VARCHAR2
4620 )
4621 IS
4622 L_API_VERSION CONSTANT NUMBER := 1.0;
4623 L_API_NAME CONSTANT VARCHAR2(30) := 'Update_Unassociated_Task';
4624 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
4625 -- local variables defined for the procedure
4626 l_task_rec AHL_VWP_RULES_PVT.Task_Rec_Type := p_x_task_rec;
4627 l_return_status VARCHAR2(1);
4628 l_msg_data VARCHAR2(2000);
4629 l_msg_count NUMBER;
4630 l_serial_ID NUMBER;
4631 l_cost_parent_id NUMBER;
4632 l_originating_task_id NUMBER;
4633 l_department_id NUMBER;
4634 l_planned_order_flag VARCHAR2(1);
4635 l_entl_rec_tbl AHL_WARRANTY_ENTL_PVT.Warranty_Entl_Tbl_Type; --salogan added for supplier warranty
4636
4637 -- To find task related information
4638 CURSOR c_Task (x_id IN NUMBER) IS
4639 SELECT * FROM Ahl_Visit_Tasks_VL
4640 WHERE VISIT_TASK_ID = x_id;
4641 c_Task_rec c_Task%ROWTYPE;
4642 c_upd_Task_rec c_Task%ROWTYPE;
4643
4644 -- To find visit related information
4645 CURSOR c_Visit (x_id IN NUMBER) IS
4646 SELECT * FROM Ahl_Visits_VL
4647 WHERE VISIT_ID = x_id;
4648 c_Visit_rec c_Visit%ROWTYPE;
4649
4650 BEGIN
4651 IF (l_log_procedure >= l_log_current_level) THEN
4652 fnd_log.string(l_log_procedure,
4653 L_DEBUG_KEY ||'.begin',
4654 'At the start of PL SQL procedure.');
4655 END IF;
4656
4657 --------------------- initialize -----------------------
4658 SAVEPOINT Update_Unassociated_Task;
4659
4660 IF Fnd_Api.to_boolean (p_init_msg_list) THEN
4661 Fnd_Msg_Pub.initialize;
4662 END IF;
4663
4664 -- Initialize API return status to success
4665 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
4666
4667 -- Standard call to check for call compatibility.
4668 IF NOT Fnd_Api.compatible_api_call(
4669 l_api_version,
4670 p_api_version,
4671 l_api_name,
4672 G_PKG_NAME
4673 ) THEN
4674 RAISE Fnd_Api.g_exc_unexpected_error;
4675 END IF;
4676
4677 ---------------------------------------------- Start----------------------------------------------------------
4678 OPEN c_Visit(l_Task_rec.visit_id);
4679 FETCH c_Visit INTO c_Visit_rec;
4680 CLOSE c_Visit;
4681
4682 OPEN c_Task(l_Task_rec.visit_task_id);
4683 FETCH c_Task INTO c_Task_rec;
4684 CLOSE c_Task;
4685
4686 IF (l_log_statement >= l_log_current_level) THEN
4687 fnd_log.string(l_log_statement,
4688 L_DEBUG_KEY,
4689 ': Visit Id/Task Id = ' || l_task_rec.visit_id || '-' || l_task_rec.visit_task_id ||
4690 ': Inventory Id /org/name =' || l_task_rec.inventory_item_id || '-' || l_task_rec.item_organization_id || '-' || l_task_rec.item_name ||
4691 ': Cost Id -- Number=' || l_task_rec.cost_parent_id || '**' || l_task_rec.cost_parent_number ||
4692 ': Originating Id/Number=' || l_task_rec.originating_task_id || '**' || l_task_rec.orginating_task_number ||
4693 ': Object version number = ' || l_task_rec.object_version_number ||
4694 ': Duration from record = ' || l_task_rec.duration ||
4695 ': Visit start from hour/duration=' || '-' || l_task_rec.start_from_hour || '-' || l_task_rec.duration ||
4696 ': Task Type code/value=' || l_task_rec.task_type_code || '-' || l_task_rec.task_type_value ||
4697 ': department_id = ' || l_task_rec.department_id );
4698 END IF;
4699
4700 ----------- Start defining and validate all LOVs on Create Visit's Task UI Screen---
4701 --
4702 -- For DEPARTMENT
4703 -- Convert department name to department id
4704 IF (l_task_rec.dept_name IS NOT NULL AND l_task_rec.dept_name <> Fnd_Api.G_MISS_CHAR ) THEN
4705
4706 AHL_VWP_RULES_PVT.Check_Dept_Desc_Or_Id
4707 (p_organization_id => c_visit_rec.organization_id,
4708 p_dept_name => l_task_rec.dept_name,
4709 p_department_id => NULL,
4710 x_department_id => l_department_id,
4711 x_return_status => l_return_status,
4712 x_error_msg_code => l_msg_data);
4713
4714 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
4715 THEN
4716 Fnd_Message.SET_NAME('AHL','AHL_VWP_DEPT_NOT_EXISTS');
4717 Fnd_Msg_Pub.ADD;
4718 RAISE Fnd_Api.G_EXC_ERROR;
4719 END IF;
4720
4721 --Assign the returned value
4722 l_task_rec.department_id := l_department_id;
4723
4724 END IF;
4725
4726 IF (l_log_statement >= l_log_current_level) THEN
4727 fnd_log.string(l_log_statement,
4728 L_DEBUG_KEY,
4729 ': Dept ID= ' || l_Task_rec.department_id ||
4730 ': Serial Number= ' || l_Task_rec.serial_number);
4731
4732 END IF;
4733 --
4734 -- For SERIAL NUMBER
4735 -- Convert serial number to instance/ serial id
4736 IF (l_Task_rec.serial_number IS NOT NULL AND
4737 l_Task_rec.serial_number <> Fnd_Api.G_MISS_CHAR) THEN
4738
4739 IF (l_log_statement >= l_log_current_level) THEN
4740 fnd_log.string(l_log_statement,
4741 L_DEBUG_KEY,
4742 ' Calling AHL_VWP_RULES_PVT.Check_Serial_Name_Or_Id' );
4743 END IF;
4744
4745 AHL_VWP_RULES_PVT.Check_Serial_Name_Or_Id
4746 (p_item_id => l_Task_rec.inventory_item_id,
4747 p_org_id => l_Task_rec.item_organization_id,
4748 p_serial_id => l_Task_rec.instance_id,
4749 p_serial_number => l_Task_rec.serial_number,
4750 x_serial_id => l_serial_id,
4751 x_return_status => l_return_status,
4752 x_error_msg_code => l_msg_data);
4753
4754 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success THEN
4755 Fnd_Message.SET_NAME('AHL','AHL_VWP_SERIAL_NOT_EXISTS');
4756 Fnd_Msg_Pub.ADD;
4757 RAISE Fnd_Api.G_EXC_ERROR;
4758 ELSE
4759
4760 --Assign the returned value
4761 l_Task_rec.instance_id := l_serial_id;
4762
4763 IF (l_log_statement >= l_log_current_level) THEN
4764 fnd_log.string(l_log_statement,
4765 L_DEBUG_KEY,
4766 ': Before UC Check Serial ID= ' || l_Task_rec.instance_id ||
4767 ': Before UC Item ID= ' || l_Task_rec.inventory_item_id ||
4768 ': Before UC Item Org ID= ' || l_Task_rec.item_organization_id);
4769 END IF;
4770 /* sowsubra - start
4771 IF c_Visit_rec.item_instance_id IS NOT NULL THEN
4772
4773 --BEGIN: jeli added for bug 3777720
4774 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
4775 --END: jeli added for bug 3777720
4776 Fnd_Message.SET_NAME('AHL','AHL_VWP_TASK_SERIAL');
4777 Fnd_Msg_Pub.ADD;
4778 RAISE Fnd_Api.G_EXC_ERROR;
4779 END IF;
4780 END IF;
4781 sowsubra - end */
4782 END IF;
4783
4784 END IF;
4785
4786 IF (l_log_statement >= l_log_current_level) THEN
4787 fnd_log.string(l_log_statement,
4788 L_DEBUG_KEY,
4789 ': Serial ID= ' || l_Task_rec.instance_id ||
4790 ': Cost parent= ' || l_Task_rec.cost_parent_number);
4791 END IF;
4792 --
4793 -- For COST PARENT TASK
4794 -- Convert cost parent number to id
4795 IF (l_Task_rec.cost_parent_number IS NOT NULL AND
4796 l_Task_rec.cost_parent_number <> Fnd_Api.G_MISS_NUM ) THEN
4797
4798 AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID
4799 (p_visit_task_id => l_Task_rec.cost_parent_id,
4800 p_visit_task_number => l_Task_rec.cost_parent_number,
4801 p_visit_id => l_Task_rec.visit_id,
4802 x_visit_task_id => l_cost_parent_id,
4803 x_return_status => l_return_status,
4804 x_error_msg_code => l_msg_data);
4805
4806 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
4807 THEN
4808 Fnd_Message.SET_NAME('AHL','AHL_VWP_PARENT_NOT_EXISTS');
4809 Fnd_Msg_Pub.ADD;
4810 RAISE Fnd_Api.g_exc_error;
4811 END IF;
4812
4813 --Assign the returned value
4814 l_Task_rec.cost_parent_id := l_cost_parent_id;
4815 END IF;
4816
4817 IF (l_log_statement >= l_log_current_level) THEN
4818 fnd_log.string(l_log_statement,
4819 L_DEBUG_KEY,
4820 ': Cost parent ID = ' || l_Task_rec.cost_parent_id ||
4821 ': Validation: Start -- For COST PARENT ');
4822 END IF;
4823
4824 -- To Check for cost parent task id not forming loop
4825 IF (l_Task_rec.cost_parent_id IS NOT NULL AND
4826 l_Task_rec.cost_parent_id <> Fnd_Api.G_MISS_NUM ) THEN
4827
4828 AHL_VWP_RULES_PVT.Check_Cost_Parent_Loop
4829 (p_visit_id => l_Task_rec.visit_id,
4830 p_visit_task_id => l_Task_rec.visit_task_id ,
4831 p_cost_parent_id => l_Task_rec.cost_parent_id
4832 );
4833
4834 END IF;
4835
4836 IF (l_log_statement >= l_log_current_level) THEN
4837 fnd_log.string(l_log_statement,
4838 L_DEBUG_KEY,
4839 ': Validation: End -- For COST PARENT ' ||
4840 ': Originating Number = ' || l_Task_rec.orginating_task_number);
4841 END IF;
4842
4843 --
4844 -- For ORIGINATING TASK
4845 -- Convert originating task number to id
4846 IF (l_Task_rec.orginating_task_number IS NOT NULL AND
4847 l_Task_rec.orginating_task_number <> Fnd_Api.G_MISS_NUM ) THEN
4848
4849 IF (l_log_statement >= l_log_current_level) THEN
4850 fnd_log.string(l_log_statement,
4851 L_DEBUG_KEY,
4852 ' Calling AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID');
4853 END IF;
4854
4855 AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID
4856 (p_visit_task_id => l_Task_rec.originating_task_id,
4857 p_visit_task_number => l_Task_rec.orginating_task_number,
4858 p_visit_id => l_Task_rec.visit_id,
4859 x_visit_task_id => l_originating_task_id,
4860 x_return_status => l_return_status,
4861 x_error_msg_code => l_msg_data);
4862
4863 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
4864 THEN
4865 Fnd_Message.SET_NAME('AHL','AHL_VWP_ORIGINATING_NOT_EXISTS');
4866 Fnd_Msg_Pub.ADD;
4867 RAISE Fnd_Api.g_exc_error;
4868 END IF;
4869
4870 --Assign the returned value
4871 l_Task_rec.originating_task_id := l_originating_task_id;
4872 END IF;
4873
4874 IF (l_log_statement >= l_log_current_level) THEN
4875 fnd_log.string(l_log_statement,
4876 L_DEBUG_KEY,
4877 ': Originating Task ID= ' || l_Task_rec.originating_task_id ||
4878 ': Validation: Start -- For ORIGINATING TASK');
4879 END IF;
4880
4881 -- To Check for originating task id not forming loop
4882 IF (l_Task_rec.originating_task_id IS NOT NULL AND
4883 l_Task_rec.originating_task_id <> Fnd_Api.G_MISS_NUM ) THEN
4884
4885 AHL_VWP_RULES_PVT.Check_Origin_Task_Loop
4886 (p_visit_id => l_Task_rec.visit_id ,
4887 p_visit_task_id => l_Task_rec.visit_task_id ,
4888 p_originating_task_id => l_Task_rec.originating_task_id
4889 );
4890 END IF;
4891
4892 IF (l_log_statement >= l_log_current_level) THEN
4893 fnd_log.string(l_log_statement,
4894 L_DEBUG_KEY,
4895 ': Validation: End -- For ORIGINATING TASK');
4896 END IF;
4897
4898 ----------- End defining and validate all LOVs on Create Visit's Task UI Screen---
4899
4900 ----------------------- validate ----------------------
4901 IF (l_log_statement >= l_log_current_level) THEN
4902 fnd_log.string(l_log_statement,
4903 L_DEBUG_KEY,
4904 ':Validate ');
4905 END IF;
4906
4907 -- For all optional fields check if its g_miss_num/g_miss_char/g_miss_date
4908 -- then Null else the value call Default_Missing_Attribs procedure
4909 Default_Missing_Attribs
4910 (
4911 p_x_task_rec => l_Task_rec
4912 );
4913
4914 -- Post 11.5.10 Changes by Senthil.
4915 IF(L_task_rec.STAGE_ID IS NOT NULL OR L_task_rec.STAGE_NAME IS NOT NULL) THEN
4916 IF (l_log_statement >= l_log_current_level) THEN
4917 fnd_log.string(l_log_statement,
4918 L_DEBUG_KEY,
4919 'Before Calling AHL_VWP_VISITS_STAGES_PVT.VALIDATE_STAGE_UPDATES');
4920 END IF;
4921 AHL_VWP_VISITS_STAGES_PVT.VALIDATE_STAGE_UPDATES(
4922 P_API_VERSION => 1.0,
4923 P_VISIT_ID => l_Task_rec.visit_id,
4924 P_VISIT_TASK_ID => l_Task_rec.visit_task_id,
4925 P_STAGE_NAME => L_task_rec.STAGE_NAME,
4926 X_STAGE_ID => L_task_rec.STAGE_ID,
4927 X_RETURN_STATUS => l_return_status,
4928 X_MSG_COUNT => l_msg_count,
4929 X_MSG_DATA => l_msg_data );
4930 IF (l_log_statement >= l_log_current_level) THEN
4931 fnd_log.string(l_log_statement,
4932 L_DEBUG_KEY,
4933 'After Calling AHL_VWP_VISITS_STAGES_PVT.VALIDATE_STAGE_UPDATES, Return Status = ' || l_return_status );
4934 END IF;
4935
4936 END IF;
4937
4938 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
4939 x_msg_count := l_msg_count;
4940 x_return_status := Fnd_Api.G_RET_STS_ERROR;
4941 RAISE Fnd_Api.G_EXC_ERROR;
4942 END IF;
4943
4944 -- post 11.5.10 changes by Senthil end
4945
4946 IF p_validation_level >= Jtf_Plsql_Api.g_valid_level_item THEN
4947 Check_Task_Items (
4948 p_task_rec => p_x_task_rec,
4949 p_validation_mode => Jtf_Plsql_Api.g_update,
4950 x_return_status => l_return_status
4951 );
4952 IF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
4953 RAISE Fnd_Api.g_exc_unexpected_error;
4954 ELSIF l_return_status = Fnd_Api.g_ret_sts_error THEN
4955 RAISE Fnd_Api.g_exc_error;
4956 END IF;
4957 END IF;
4958
4959 -- Check Object version number.
4960 IF (c_task_rec.object_version_number <> l_task_rec.object_version_number) THEN
4961 Fnd_Message.Set_Name('AHL','AHL_COM_RECORD_CHANGED');
4962 Fnd_Msg_Pub.ADD;
4963 RAISE Fnd_Api.G_EXC_ERROR;
4964 END IF;
4965
4966 --Standard check to count messages
4967 l_msg_count := Fnd_Msg_Pub.count_msg;
4968
4969 IF l_msg_count > 0 THEN
4970 x_msg_count := l_msg_count;
4971 x_return_status := Fnd_Api.G_RET_STS_ERROR;
4972 RAISE Fnd_Api.G_EXC_ERROR;
4973 END IF;
4974
4975 -------------------------- update --------------------
4976 IF (l_log_statement >= l_log_current_level) THEN
4977 fnd_log.string(l_log_statement,
4978 L_DEBUG_KEY,
4979 'Before Calling Ahl_Visit_Tasks_Pkg.UPDATE_ROW');
4980 END IF;
4981
4982 Ahl_Visit_Tasks_Pkg.UPDATE_ROW (
4983 X_VISIT_TASK_ID => l_task_rec.visit_task_id,
4984 X_VISIT_TASK_NUMBER => c_task_rec.visit_task_number,
4985 X_OBJECT_VERSION_NUMBER => l_task_rec.OBJECT_VERSION_NUMBER + 1,
4986 X_VISIT_ID => l_task_rec.visit_id,
4987 X_PROJECT_TASK_ID => c_task_rec.project_task_id,
4988 X_COST_PARENT_ID => l_task_rec.cost_parent_id,
4989 X_MR_ROUTE_ID => c_task_rec.mr_route_id,
4990 X_MR_ID => c_task_rec.mr_id,
4991 X_DURATION => l_task_rec.duration,
4992 X_UNIT_EFFECTIVITY_ID => c_task_rec.unit_effectivity_id,
4993 X_START_FROM_HOUR => l_task_rec.start_from_hour,
4994 X_INVENTORY_ITEM_ID => c_task_rec.inventory_item_id,
4995 X_ITEM_ORGANIZATION_ID => c_task_rec.item_organization_id,
4996 X_INSTANCE_ID => l_Task_rec.instance_id,
4997 X_PRIMARY_VISIT_TASK_ID => c_task_rec.primary_visit_task_id,
4998 X_ORIGINATING_TASK_ID => l_task_rec.originating_task_id,
4999 X_SERVICE_REQUEST_ID => l_task_rec.service_request_id,
5000 X_TASK_TYPE_CODE => l_task_rec.task_type_code,
5001 -- PRAKKUM :: FP:PIE :: 13-OCT-2010 :: update Service Type code too
5002 X_SERVICE_TYPE_CODE => l_task_rec.service_type_code,
5003 X_DEPARTMENT_ID => l_task_rec.department_id,
5004 X_SUMMARY_TASK_FLAG => 'N',
5005 X_PRICE_LIST_ID => c_task_rec.price_list_id,
5006 X_STATUS_CODE => c_task_rec.status_code,
5007 X_ESTIMATED_PRICE => c_task_rec.estimated_price,
5008 X_ACTUAL_PRICE => c_task_rec.actual_price,
5009 X_ACTUAL_COST => c_task_rec.actual_cost,
5010 -- Post 11.5.10 Changes by Senthil.
5011 X_STAGE_ID => l_task_rec.STAGE_ID,
5012 -- Added cxcheng POST11510--------------
5013 -- SKPATHAK :: ER: 9147951 :: 11-JAN-2010
5014 -- Pass past dates too, and if it is null, pass null for all the 4 columns below
5015 X_START_DATE_TIME => NVL(l_task_rec.PAST_TASK_START_DATE,c_task_rec.START_DATE_TIME), --SKPATHAK :: Bug 13890788
5016 X_END_DATE_TIME => NVL(l_task_rec.PAST_TASK_END_DATE,c_task_rec.END_DATE_TIME), --SKPATHAK :: Bug 13890788
5017 X_PAST_TASK_START_DATE => l_task_rec.PAST_TASK_START_DATE,
5018 X_PAST_TASK_END_DATE => l_task_rec.PAST_TASK_END_DATE,
5019 --MANESING::Component Maintenance Planning Project, 07-Aug-2011, added target quantity
5020 X_TARGET_QTY => c_task_rec.target_qty,
5021
5022 -- manisaga commented the attribute from c_task_rec and added attributes from
5023 -- l_tasc_rec for DFF implementation on 19-Feb-2010 -- Start
5024 /*
5025 X_ATTRIBUTE_CATEGORY => c_task_rec.ATTRIBUTE_CATEGORY,
5026 X_ATTRIBUTE1 => c_task_rec.ATTRIBUTE1,
5027 X_ATTRIBUTE2 => c_task_rec.ATTRIBUTE2,
5028 X_ATTRIBUTE3 => c_task_rec.ATTRIBUTE3,
5029 X_ATTRIBUTE4 => c_task_rec.ATTRIBUTE4,
5030 X_ATTRIBUTE5 => c_task_rec.ATTRIBUTE5,
5031 X_ATTRIBUTE6 => c_task_rec.ATTRIBUTE6,
5032 X_ATTRIBUTE7 => c_task_rec.ATTRIBUTE7,
5033 X_ATTRIBUTE8 => c_task_rec.ATTRIBUTE8,
5034 X_ATTRIBUTE9 => c_task_rec.ATTRIBUTE9,
5035 X_ATTRIBUTE10 => c_task_rec.ATTRIBUTE10,
5036 X_ATTRIBUTE11 => c_task_rec.ATTRIBUTE11,
5037 X_ATTRIBUTE12 => c_task_rec.ATTRIBUTE12,
5038 X_ATTRIBUTE13 => c_task_rec.ATTRIBUTE13,
5039 X_ATTRIBUTE14 => c_task_rec.ATTRIBUTE14,
5040 X_ATTRIBUTE15 => c_task_rec.ATTRIBUTE15,
5041 */
5042 X_ATTRIBUTE_CATEGORY => l_task_rec.ATTRIBUTE_CATEGORY,
5043 X_ATTRIBUTE1 => l_task_rec.ATTRIBUTE1,
5044 X_ATTRIBUTE2 => l_task_rec.ATTRIBUTE2,
5045 X_ATTRIBUTE3 => l_task_rec.ATTRIBUTE3,
5046 X_ATTRIBUTE4 => l_task_rec.ATTRIBUTE4,
5047 X_ATTRIBUTE5 => l_task_rec.ATTRIBUTE5,
5048 X_ATTRIBUTE6 => l_task_rec.ATTRIBUTE6,
5049 X_ATTRIBUTE7 => l_task_rec.ATTRIBUTE7,
5050 X_ATTRIBUTE8 => l_task_rec.ATTRIBUTE8,
5051 X_ATTRIBUTE9 => l_task_rec.ATTRIBUTE9,
5052 X_ATTRIBUTE10 => l_task_rec.ATTRIBUTE10,
5053 X_ATTRIBUTE11 => l_task_rec.ATTRIBUTE11,
5054 X_ATTRIBUTE12 => l_task_rec.ATTRIBUTE12,
5055 X_ATTRIBUTE13 => l_task_rec.ATTRIBUTE13,
5056 X_ATTRIBUTE14 => l_task_rec.ATTRIBUTE14,
5057 X_ATTRIBUTE15 => l_task_rec.ATTRIBUTE15,
5058 -- manisaga commented the attribute from c_task_rec and added attributes from
5059 -- l_tasc_rec for DFF implementation on 19-Feb-2010 -- End
5060
5061 X_VISIT_TASK_NAME => l_task_rec.visit_task_name,
5062 X_DESCRIPTION => l_task_rec.description,
5063 X_QUANTITY => c_task_rec.quantity, -- Added by rnahata for Issue 105
5064 X_LAST_UPDATE_DATE => SYSDATE,
5065 X_LAST_UPDATED_BY => Fnd_Global.USER_ID,
5066 X_LAST_UPDATE_LOGIN => Fnd_Global.LOGIN_ID );
5067
5068 IF (l_log_statement >= l_log_current_level) THEN
5069 fnd_log.string(l_log_statement,
5070 L_DEBUG_KEY,
5071 'After Calling Ahl_Visit_Tasks_Pkg.UPDATE_ROW');
5072 END IF;
5073
5074 --salogan added for supplier warranty starts
5075 -- calling AHL_VWP_RULES_PVT.Get_Warranty_Rec_for_Update
5076 AHL_VWP_RULES_PVT.Get_Warranty_Rec_for_Update(
5077 p_task_rec => l_task_rec,
5078 x_warranty_entl_tbl => l_entl_rec_tbl);
5079
5080 IF (l_log_statement >= l_log_current_level) THEN
5081 fnd_log.string(l_log_statement,
5082 L_DEBUG_KEY,
5083 'Before calling AHL_WARRANTY_ENTL_PVT.Process_Warranty_Entitlements.');
5084 END IF;
5085
5086 --Not passing p_commit the main API commits the data at the end
5087 AHL_WARRANTY_ENTL_PVT.Process_Warranty_Entitlements(
5088 p_api_version => l_api_version,
5089 p_validation_level => p_validation_level,
5090 p_module_type => p_module_type,
5091 p_user_role => AHL_WARRANTY_ENTL_PVT.G_USER_PLANNER,
5092 p_x_warranty_entl_tbl => l_entl_rec_tbl,
5093 x_return_status => l_return_status,
5094 x_msg_count => l_msg_count,
5095 x_msg_data => l_msg_data);
5096
5097 IF (l_log_statement >= l_log_current_level) THEN
5098 fnd_log.string(l_log_statement,
5099 L_DEBUG_KEY,
5100 'After calling AHL_WARRANTY_ENTL_PVT.Process_Warranty_Entitlements. Return Status = ' ||
5101 l_return_status);
5102 END IF;
5103
5104 l_msg_count := Fnd_Msg_Pub.count_msg;
5105 IF l_msg_count > 0 OR l_return_status <> Fnd_Api.g_ret_sts_success THEN
5106 x_msg_count := l_msg_count;
5107 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
5108 RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
5109 END IF;
5110 --salogan added for supplier warranty ends
5111
5112 -- Added cxcheng POST11510--------------
5113 --Now adjust the times derivation for task
5114 IF (l_log_statement >= l_log_current_level) THEN
5115 fnd_log.string(l_log_statement,
5116 L_DEBUG_KEY,
5117 'Before Calling AHL_VWP_TIMES_PVT.Adjust_Task_Times');
5118 END IF;
5119
5120 -- SKPATHAK :: ER: 9147951 :: 11-JAN-2010 :: Call Adjust_Task_Times only if past date is null
5121 IF l_task_rec.PAST_TASK_START_DATE IS NULL THEN
5122 AHL_VWP_TIMES_PVT.Adjust_Task_Times(p_api_version => 1.0,
5123 p_init_msg_list => Fnd_Api.G_FALSE,
5124 p_commit => Fnd_Api.G_FALSE,
5125 p_validation_level => Fnd_Api.G_VALID_LEVEL_FULL,
5126 x_return_status => l_return_status,
5127 x_msg_count => l_msg_count,
5128 x_msg_data => l_msg_data,
5129 p_task_id => l_task_rec.visit_task_id);
5130 END IF;
5131
5132 IF (l_log_statement >= l_log_current_level) THEN
5133 fnd_log.string(l_log_statement,
5134 L_DEBUG_KEY,
5135 'After Calling AHL_VWP_TIMES_PVT.Adjust_Task_Times, Return Status = ' || l_return_status);
5136 END IF;
5137
5138 --Standard check to count messages
5139 l_msg_count := Fnd_Msg_Pub.count_msg;
5140
5141 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
5142 x_msg_count := l_msg_count;
5143 x_return_status := Fnd_Api.G_RET_STS_ERROR;
5144 RAISE Fnd_Api.G_EXC_ERROR;
5145 END IF;
5146
5147 IF NVL(l_task_rec.Duration, -10) <> NVL(c_task_rec.Duration, -10) OR
5148 NVL(l_task_rec.start_from_hour, -20) <> NVL(c_task_rec.start_from_hour, -20) OR
5149 NVL(l_task_rec.department_id, -20) <> NVL(c_task_rec.department_id, -20) OR
5150 NVL(l_task_rec.stage_id, -20) <> NVL(c_task_rec.stage_id, -20)
5151 THEN
5152
5153 OPEN c_Task(l_Task_rec.visit_task_id);
5154 FETCH c_Task INTO c_upd_Task_rec;
5155 CLOSE c_Task;
5156
5157 IF c_upd_Task_rec.start_date_time IS NOT NULL THEN
5158
5159 IF (l_log_statement >= l_log_current_level) THEN
5160 fnd_log.string(l_log_statement,
5161 L_DEBUG_KEY,
5162 'Before Calling AHL_LTP_REQST_MATRL_PVT.Process_Planned_Materials');
5163 END IF;
5164
5165 AHL_LTP_REQST_MATRL_PVT.Process_Planned_Materials (
5166 p_api_version => 1.0,
5167 p_init_msg_list => FND_API.g_false,
5168 p_commit => FND_API.g_false,
5169 p_validation_level => FND_API.g_valid_level_full,
5170 p_visit_id => l_task_rec.visit_id,
5171 p_visit_task_id => NULL,
5172 p_org_id => NULL,
5173 p_start_date => NULL,
5174 p_operation_flag => 'U',
5175 x_planned_order_flag => l_planned_order_flag ,
5176 x_return_status => l_return_status,
5177 x_msg_count => l_msg_count,
5178 x_msg_data => l_msg_data );
5179
5180 IF (l_log_statement >= l_log_current_level) THEN
5181 fnd_log.string(l_log_statement,
5182 L_DEBUG_KEY,
5183 'After Calling AHL_LTP_REQST_MATRL_PVT.Process_Planned_Materials' ||
5184 'Planned Order Flag : ' || l_planned_order_flag ||
5185 'Return Status = ' || l_return_status );
5186 END IF;
5187
5188 IF l_return_status <> 'S' THEN
5189 RAISE Fnd_Api.G_EXC_ERROR;
5190 END IF;
5191
5192 END IF; -- Start_date_time check.
5193
5194 IF c_visit_rec.any_task_chg_flag = 'N' THEN
5195 AHL_VWP_RULES_PVT.Update_Visit_Task_Flag
5196 (p_visit_id => l_task_rec.visit_id,
5197 p_flag => 'Y',
5198 x_return_status => x_return_status);
5199 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5200 RAISE FND_API.G_EXC_ERROR;
5201 END IF;
5202 END IF;
5203 END IF;
5204
5205 -------------------- finish --------------------------
5206
5207 ------------------------End of API Body------------------------------------
5208 --Standard check to count messages
5209 l_msg_count := Fnd_Msg_Pub.count_msg;
5210
5211 IF l_msg_count > 0 THEN
5212 x_msg_count := l_msg_count;
5213 x_return_status := Fnd_Api.G_RET_STS_ERROR;
5214 RAISE Fnd_Api.G_EXC_ERROR;
5215 END IF;
5216
5217 --Standard check for commit
5218 IF Fnd_Api.TO_BOOLEAN(p_commit) THEN
5219 COMMIT;
5220 END IF;
5221
5222 IF (l_log_procedure >= l_log_current_level) THEN
5223 fnd_log.string(l_log_procedure,
5224 L_DEBUG_KEY ||'.end',
5225 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
5226 END IF;
5227 EXCEPTION
5228 WHEN Fnd_Api.g_exc_error THEN
5229 ROLLBACK TO Update_Unassociated_Task;
5230 x_return_status := Fnd_Api.g_ret_sts_error;
5231 Fnd_Msg_Pub.count_and_get (
5232 p_encoded => Fnd_Api.g_false,
5233 p_count => x_msg_count,
5234 p_data => x_msg_data
5235 );
5236 WHEN Fnd_Api.g_exc_unexpected_error THEN
5237 ROLLBACK TO Update_Unassociated_Task;
5238 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
5239 Fnd_Msg_Pub.count_and_get (
5240 p_encoded => Fnd_Api.g_false,
5241 p_count => x_msg_count,
5242 p_data => x_msg_data
5243 );
5244 WHEN OTHERS THEN
5245 ROLLBACK TO Update_Unassociated_Task;
5246 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
5247 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
5248 THEN
5249 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
5250 END IF;
5251 Fnd_Msg_Pub.count_and_get (
5252 p_encoded => Fnd_Api.g_false,
5253 p_count => x_msg_count,
5254 p_data => x_msg_data
5255 );
5256 END Update_Unassociated_Task;
5257
5258 --------------------------------------------------------------------
5259 -- PROCEDURE
5260 -- Update_Summary_Task
5261 --
5262 -- PURPOSE
5263 -- To update Summary task for the Maintainance visit.
5264 --------------------------------------------------------------------
5265 PROCEDURE Update_Summary_Task (
5266 p_api_version IN NUMBER,
5267 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
5268 p_commit IN VARCHAR2 := Fnd_Api.g_false,
5269 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
5270 p_module_type IN VARCHAR2 := 'JSP',
5271 p_x_task_rec IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type,
5272 x_return_status OUT NOCOPY VARCHAR2,
5273 x_msg_count OUT NOCOPY NUMBER,
5274 x_msg_data OUT NOCOPY VARCHAR2
5275 )
5276 IS
5277 L_API_VERSION CONSTANT NUMBER := 1.0;
5278 L_API_NAME CONSTANT VARCHAR2(30) := 'Update_Summary_Task';
5279 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
5280
5281 -- local variables defined for the procedure
5282 l_task_rec AHL_VWP_RULES_PVT.Task_Rec_Type := p_x_task_rec;
5283 l_return_status VARCHAR2(1);
5284 l_msg_data VARCHAR2(2000);
5285
5286 l_msg_count NUMBER;
5287 l_serial_ID NUMBER;
5288 l_cost_parent_id NUMBER;
5289 l_originating_task_id NUMBER;
5290 l_department_id NUMBER;
5291 l_entl_rec_tbl AHL_WARRANTY_ENTL_PVT.Warranty_Entl_Tbl_Type; --salogan added for supplier warranty
5292
5293 -- To find task related information
5294 CURSOR c_Task (x_id IN NUMBER) IS
5295 SELECT * FROM Ahl_Visit_Tasks_VL
5296 WHERE VISIT_TASK_ID = x_id;
5297 c_Task_rec c_Task%ROWTYPE;
5298
5299 -- To find visit related information
5300 CURSOR c_Visit (x_id IN NUMBER) IS
5301 SELECT * FROM Ahl_Visits_VL
5302 WHERE VISIT_ID = x_id;
5303 c_Visit_rec c_Visit%ROWTYPE;
5304
5305 BEGIN
5306 IF (l_log_procedure >= l_log_current_level) THEN
5307 fnd_log.string(l_log_procedure,
5308 L_DEBUG_KEY ||'.begin',
5309 'At the start of PL SQL procedure.');
5310 END IF;
5311 --------------------- initialize -----------------------
5312 SAVEPOINT Update_Summary_Task;
5313
5314 IF Fnd_Api.to_boolean (p_init_msg_list) THEN
5315 Fnd_Msg_Pub.initialize;
5316 END IF;
5317
5318 -- Initialize API return status to success
5319 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
5320
5321 -- Standard call to check for call compatibility.
5322 IF NOT Fnd_Api.compatible_api_call(
5323 l_api_version,
5324 p_api_version,
5325 l_api_name,
5326 G_PKG_NAME
5327 ) THEN
5328 RAISE Fnd_Api.g_exc_unexpected_error;
5329 END IF;
5330
5331 ------------------------Start of API Body------------------------------------
5332 OPEN c_Visit(l_Task_rec.visit_id);
5333 FETCH c_Visit INTO c_Visit_rec;
5334 CLOSE c_Visit;
5335
5336 OPEN c_Task(l_Task_rec.visit_task_id);
5337 FETCH c_Task INTO c_Task_rec;
5338 CLOSE c_Task;
5339
5340 IF (l_log_statement >= l_log_current_level) THEN
5341 fnd_log.string(l_log_statement,
5342 L_DEBUG_KEY,
5343 ': Visit Id/Task Id = ' || l_task_rec.visit_id || '-' || l_task_rec.visit_task_id ||
5344 ': Inventory Id /org/name =' || l_task_rec.inventory_item_id || '-' || l_task_rec.item_organization_id || '-' || l_task_rec.item_name ||
5345 ': Cost Id -- Number=' || l_task_rec.cost_parent_id || '**' || l_task_rec.cost_parent_number ||
5346 ': Originating Id/Number=' || l_task_rec.originating_task_id || '**' || l_task_rec.orginating_task_number ||
5347 ': Object version number = ' || l_task_rec.object_version_number ||
5348 ': Duration from record = ' || l_task_rec.duration ||
5349 ': Visit start from hour/duration=' || '-' || l_task_rec.start_from_hour || '-' || l_task_rec.duration ||
5350 ': Task Type code/value=' || l_task_rec.task_type_code || '-' || l_task_rec.task_type_value ||
5351 ': department_id = ' || l_task_rec.department_id );
5352 END IF;
5353
5354 ----------- Start defining and validate all LOVs on Create Visit's Task UI Screen---
5355 --
5356 -- For DEPARTMENT
5357 -- Convert department name to department id
5358 IF (l_task_rec.dept_name IS NOT NULL AND l_task_rec.dept_name <> Fnd_Api.G_MISS_CHAR ) THEN
5359
5360 AHL_VWP_RULES_PVT.Check_Dept_Desc_Or_Id
5361 (p_organization_id => c_visit_rec.organization_id,
5362 p_dept_name => l_task_rec.dept_name,
5363 p_department_id => NULL,
5364 x_department_id => l_department_id,
5365 x_return_status => l_return_status,
5366 x_error_msg_code => l_msg_data);
5367
5368 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
5369 THEN
5370 Fnd_Message.SET_NAME('AHL','AHL_VWP_DEPT_NOT_EXISTS');
5371 Fnd_Msg_Pub.ADD;
5372 RAISE Fnd_Api.G_EXC_ERROR;
5373 END IF;
5374
5375 --Assign the returned value
5376 l_task_rec.department_id := l_department_id;
5377 END IF;
5378
5379 IF (l_log_statement >= l_log_current_level) THEN
5380 fnd_log.string(l_log_statement,
5381 L_DEBUG_KEY,
5382 ': Dept ID= ' || l_Task_rec.department_id );
5383 END IF;
5384
5385 -- Called only when updating serial number for manually created summary task
5386 -- which are without MR i.e MR_Id in cursor record c_task_rec will be Null
5387 IF c_Task_rec.MR_Id IS NULL THEN
5388
5389 IF (l_log_statement >= l_log_current_level) THEN
5390 fnd_log.string(l_log_statement,
5391 L_DEBUG_KEY,
5392 ': Serial Number= ' || l_Task_rec.serial_number);
5393 END IF;
5394
5395 --
5396 -- For SERIAL NUMBER
5397 -- Convert serial number to instance/ serial id
5398 IF (l_Task_rec.serial_number IS NOT NULL AND
5399 l_Task_rec.serial_number <> Fnd_Api.G_MISS_CHAR) THEN
5400
5401 AHL_VWP_RULES_PVT.Check_Serial_Name_Or_Id
5402 (p_item_id => l_Task_rec.inventory_item_id,
5403 p_org_id => l_Task_rec.item_organization_id,
5404 p_serial_id => l_Task_rec.instance_id,
5405 p_serial_number => l_Task_rec.serial_number,
5406 x_serial_id => l_serial_id,
5407 x_return_status => l_return_status,
5408 x_error_msg_code => l_msg_data);
5409
5410 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success THEN
5411 Fnd_Message.SET_NAME('AHL','AHL_VWP_SERIAL_NOT_EXISTS');
5412 Fnd_Msg_Pub.ADD;
5413 RAISE Fnd_Api.G_EXC_ERROR;
5414 ELSE
5415
5416 --Assign the returned value
5417 l_Task_rec.instance_id := l_serial_id;
5418
5419 IF (l_log_statement >= l_log_current_level) THEN
5420 fnd_log.string(l_log_statement,
5421 L_DEBUG_KEY,
5422 ': Before UC Check Serial ID= ' || l_Task_rec.instance_id ||
5423 ': Before UC Item ID= ' || l_Task_rec.inventory_item_id ||
5424 ': Before UC Item Org ID= ' || l_Task_rec.item_organization_id);
5425 END IF;
5426 /* sowsubra - start
5427 --BEGIN: jeli added for bug 3777720
5428 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
5429 --END: jeli added for bug 3777720
5430 Fnd_Message.SET_NAME('AHL','AHL_VWP_TASK_SERIAL');
5431 Fnd_Msg_Pub.ADD;
5432 RAISE Fnd_Api.G_EXC_ERROR;
5433 END IF;
5434 sowsubra - end */
5435
5436 END IF; -- End of l_return_status success check
5437
5438 END IF; -- End of l_Task_rec.serial_number Null check
5439
5440 IF (l_log_statement >= l_log_current_level) THEN
5441 fnd_log.string(l_log_statement,
5442 L_DEBUG_KEY,
5443 ': Serial ID= ' || l_Task_rec.instance_id);
5444 END IF;
5445
5446 ELSE
5447 l_Task_rec.instance_id := c_Task_rec.instance_id;
5448 END IF; -- End of c_Task_rec.MR_Id Null check
5449
5450 IF (l_log_statement >= l_log_current_level) THEN
5451 fnd_log.string(l_log_statement,
5452 L_DEBUG_KEY,
5453 ': Cost parent= ' || l_Task_rec.cost_parent_number);
5454 END IF;
5455
5456 --
5457 -- For COST PARENT TASK
5458 -- Convert cost parent number to id
5459 IF (l_Task_rec.cost_parent_number IS NOT NULL AND
5460 l_Task_rec.cost_parent_number <> Fnd_Api.G_MISS_NUM ) THEN
5461
5462 IF (l_log_statement >= l_log_current_level) THEN
5463 fnd_log.string(l_log_statement,
5464 L_DEBUG_KEY,
5465 ' Calling AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID');
5466 END IF;
5467
5468 AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID
5469 (p_visit_task_id => l_Task_rec.cost_parent_id,
5470 p_visit_task_number => l_Task_rec.cost_parent_number,
5471 p_visit_id => l_Task_rec.visit_id,
5472 x_visit_task_id => l_cost_parent_id,
5473 x_return_status => l_return_status,
5474 x_error_msg_code => l_msg_data);
5475
5476 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
5477 THEN
5478 Fnd_Message.SET_NAME('AHL','AHL_VWP_PARENT_NOT_EXISTS');
5479 Fnd_Msg_Pub.ADD;
5480 RAISE Fnd_Api.g_exc_error;
5481 END IF;
5482
5483 --Assign the returned value
5484 l_Task_rec.cost_parent_id := l_cost_parent_id;
5485 ELSE
5486 l_Task_rec.cost_parent_id := NULL;
5487 END IF;
5488
5489 -- To Check for cost parent task id not forming loop
5490 IF (l_Task_rec.cost_parent_id IS NOT NULL AND
5491 l_Task_rec.cost_parent_id <> Fnd_Api.G_MISS_NUM ) THEN
5492
5493 AHL_VWP_RULES_PVT.Check_Cost_Parent_Loop
5494 (p_visit_id => l_Task_rec.visit_id,
5495 p_visit_task_id => l_Task_rec.visit_task_id ,
5496 p_cost_parent_id => l_Task_rec.cost_parent_id
5497 );
5498 END IF;
5499
5500 IF (l_log_statement >= l_log_current_level) THEN
5501 fnd_log.string(l_log_statement,
5502 L_DEBUG_KEY,
5503 ': Cost parent ID = ' || l_Task_rec.cost_parent_id);
5504 END IF;
5505
5506 IF c_Task_rec.MR_Id IS NULL THEN
5507 IF (l_log_statement >= l_log_current_level) THEN
5508 fnd_log.string(l_log_statement,
5509 L_DEBUG_KEY,
5510 ': Originating Number = ' || l_Task_rec.orginating_task_number);
5511 END IF;
5512
5513 --
5514 -- For ORIGINATING TASK
5515 -- Convert originating task number to id
5516 IF (l_Task_rec.orginating_task_number IS NOT NULL AND
5517 l_Task_rec.orginating_task_number <> Fnd_Api.G_MISS_NUM ) THEN
5518
5519 IF (l_log_statement >= l_log_current_level) THEN
5520 fnd_log.string(l_log_statement,
5521 L_DEBUG_KEY,
5522 ' Calling AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID');
5523 END IF;
5524
5525 AHL_VWP_RULES_PVT.Check_Visit_Task_Number_OR_ID
5526 (p_visit_task_id => l_Task_rec.originating_task_id,
5527 p_visit_task_number => l_Task_rec.orginating_task_number,
5528 p_visit_id => l_Task_rec.visit_id,
5529 x_visit_task_id => l_originating_task_id,
5530 x_return_status => l_return_status,
5531 x_error_msg_code => l_msg_data);
5532
5533 IF NVL(l_return_status,'x') <> Fnd_Api.g_ret_sts_success
5534 THEN
5535 Fnd_Message.SET_NAME('AHL','AHL_VWP_ORIGINATING_NOT_EXISTS');
5536 Fnd_Msg_Pub.ADD;
5537 RAISE Fnd_Api.g_exc_error;
5538 END IF;
5539
5540 --Assign the returned value
5541 l_Task_rec.originating_task_id := l_originating_task_id;
5542 ELSE
5543 l_Task_rec.originating_task_id := NULL;
5544 END IF;
5545
5546 IF (l_log_statement >= l_log_current_level) THEN
5547 fnd_log.string(l_log_statement,
5548 L_DEBUG_KEY,
5549 ': Originating Task ID= ' || l_Task_rec.originating_task_id);
5550 END IF;
5551
5552 -- To Check for originating task id not forming loop
5553 IF (l_Task_rec.originating_task_id IS NOT NULL AND
5554 l_Task_rec.originating_task_id <> Fnd_Api.G_MISS_NUM ) THEN
5555
5556 AHL_VWP_RULES_PVT.Check_Origin_Task_Loop
5557 (p_visit_id => l_Task_rec.visit_id ,
5558 p_visit_task_id => l_Task_rec.visit_task_id ,
5559 p_originating_task_id => l_Task_rec.originating_task_id
5560 );
5561
5562 END IF;
5563
5564 ELSE
5565 l_Task_rec.originating_task_id := c_Task_rec.originating_task_id;
5566 END IF;
5567
5568 -- Validate target quantity
5569 IF (l_Task_rec.target_qty IS NOT NULL AND
5570 l_Task_rec.target_qty <> Fnd_Api.G_MISS_NUM AND
5571 l_Task_rec.target_qty < 0) THEN
5572 FND_MESSAGE.set_name(G_APP_NAME, 'AHL_CMP_TARGET_QTY_INVLD');
5573 FND_MSG_PUB.add;
5574 RAISE FND_API.G_EXC_ERROR;
5575 END IF;
5576 ----------- End defining and validate all LOVs on Create Visit's Task UI Screen---
5577
5578 ----------------------- validate ----------------------
5579
5580 IF (l_log_statement >= l_log_current_level) THEN
5581 fnd_log.string(l_log_statement,
5582 L_DEBUG_KEY,
5583 ':Validate');
5584 END IF;
5585
5586 -- For all optional fields check if its g_miss_num/g_miss_char/g_miss_date
5587 -- then Null else the value call Default_Missing_Attribs procedure
5588 Default_Missing_Attribs
5589 (
5590 p_x_task_rec => l_Task_rec
5591 );
5592
5593 IF p_validation_level >= Jtf_Plsql_Api.g_valid_level_item THEN
5594 Check_Task_Items (
5595 p_task_rec => p_x_task_rec,
5596 p_validation_mode => Jtf_Plsql_Api.g_update,
5597 x_return_status => l_return_status
5598 );
5599 IF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
5600 RAISE Fnd_Api.g_exc_unexpected_error;
5601 ELSIF l_return_status = Fnd_Api.g_ret_sts_error THEN
5602 RAISE Fnd_Api.g_exc_error;
5603 END IF;
5604 END IF;
5605
5606 -- Check Object version number.
5607 IF (c_task_rec.object_version_number <> l_task_rec.object_version_number) THEN
5608 Fnd_Message.Set_Name('AHL','AHL_COM_RECORD_CHANGED');
5609 Fnd_Msg_Pub.ADD;
5610 RAISE Fnd_Api.G_EXC_ERROR;
5611 END IF;
5612
5613 --Standard check to count messages
5614 l_msg_count := Fnd_Msg_Pub.count_msg;
5615
5616 IF l_msg_count > 0 THEN
5617 x_msg_count := l_msg_count;
5618 x_return_status := Fnd_Api.G_RET_STS_ERROR;
5619 RAISE Fnd_Api.G_EXC_ERROR;
5620 END IF;
5621
5622 -------------------------- update --------------------
5623 IF (l_log_statement >= l_log_current_level) THEN
5624 fnd_log.string(l_log_statement,
5625 L_DEBUG_KEY,
5626 'Before Calling Ahl_Visit_Tasks_Pkg.UPDATE_ROW');
5627 END IF;
5628
5629 Ahl_Visit_Tasks_Pkg.UPDATE_ROW (
5630 X_VISIT_TASK_ID => l_task_rec.visit_task_id,
5631 X_VISIT_TASK_NUMBER => c_task_rec.visit_task_number,
5632 X_OBJECT_VERSION_NUMBER => l_task_rec.OBJECT_VERSION_NUMBER + 1,
5633 X_VISIT_ID => l_task_rec.visit_id,
5634 X_PROJECT_TASK_ID => c_task_rec.project_task_id,
5635 X_COST_PARENT_ID => l_task_rec.cost_parent_id,
5636 X_MR_ROUTE_ID => c_task_rec.mr_route_id,
5637 X_MR_ID => c_task_rec.mr_id,
5638 X_DURATION => c_task_rec.duration,
5639 X_UNIT_EFFECTIVITY_ID => c_task_rec.unit_effectivity_id,
5640 X_START_FROM_HOUR => l_task_rec.start_from_hour,
5641 X_INVENTORY_ITEM_ID => c_task_rec.inventory_item_id,
5642 X_ITEM_ORGANIZATION_ID => c_task_rec.item_organization_id,
5643 X_INSTANCE_ID => l_Task_rec.instance_id,
5644 X_PRIMARY_VISIT_TASK_ID => c_task_rec.primary_visit_task_id,
5645 X_ORIGINATING_TASK_ID => l_task_rec.originating_task_id,
5646 X_SERVICE_REQUEST_ID => c_task_rec.service_request_id,
5647 X_TASK_TYPE_CODE => l_task_rec.task_type_code,
5648 -- PRAKKUM :: FP:PIE :: 13-OCT-2010 :: Service Type code added, as this modified handler requires it
5649 X_SERVICE_TYPE_CODE => NULL,
5650 X_DEPARTMENT_ID => l_task_rec.department_id,
5651 X_SUMMARY_TASK_FLAG => 'N',
5652 X_PRICE_LIST_ID => c_task_rec.price_list_id,
5653 X_STATUS_CODE => c_task_rec.status_code,
5654 X_ESTIMATED_PRICE => c_task_rec.estimated_price,
5655 X_ACTUAL_PRICE => c_task_rec.actual_price,
5656 X_ACTUAL_COST => c_task_rec.actual_cost,
5657 -- Post 11.5.10 Changes by Senthil.
5658 X_STAGE_ID => l_task_rec.STAGE_ID,
5659 -- Added cxcheng POST11510--------------
5660 -- SKPATHAK :: ER: 9147951 :: 11-JAN-2010 :: Pass past dates too
5661 X_START_DATE_TIME => NULL,
5662 X_END_DATE_TIME => NULL,
5663 X_PAST_TASK_START_DATE => NULL,
5664 X_PAST_TASK_END_DATE => NULL,
5665 --MANESING::Component Maintenance Planning Project, 07-Aug-2011, added target quantity
5666 X_TARGET_QTY => l_task_rec.target_qty,
5667
5668 -- manisaga removed attributes addition from c_task_rec and added from
5669 -- l_task_rec for DFF implementation on 19-Feb-2010 -- Start
5670 /*
5671 X_ATTRIBUTE_CATEGORY => c_task_rec.ATTRIBUTE_CATEGORY,
5672 X_ATTRIBUTE1 => c_task_rec.ATTRIBUTE1,
5673 X_ATTRIBUTE2 => c_task_rec.ATTRIBUTE2,
5674 X_ATTRIBUTE3 => c_task_rec.ATTRIBUTE3,
5675 X_ATTRIBUTE4 => c_task_rec.ATTRIBUTE4,
5676 X_ATTRIBUTE5 => c_task_rec.ATTRIBUTE5,
5677 X_ATTRIBUTE6 => c_task_rec.ATTRIBUTE6,
5678 X_ATTRIBUTE7 => c_task_rec.ATTRIBUTE7,
5679 X_ATTRIBUTE8 => c_task_rec.ATTRIBUTE8,
5680 X_ATTRIBUTE9 => c_task_rec.ATTRIBUTE9,
5681 X_ATTRIBUTE10 => c_task_rec.ATTRIBUTE10,
5682 X_ATTRIBUTE11 => c_task_rec.ATTRIBUTE11,
5683 X_ATTRIBUTE12 => c_task_rec.ATTRIBUTE12,
5684 X_ATTRIBUTE13 => c_task_rec.ATTRIBUTE13,
5685 X_ATTRIBUTE14 => c_task_rec.ATTRIBUTE14,
5686 X_ATTRIBUTE15 => c_task_rec.ATTRIBUTE15,
5687 */
5688 X_ATTRIBUTE_CATEGORY => l_task_rec.ATTRIBUTE_CATEGORY,
5689 X_ATTRIBUTE1 => l_task_rec.ATTRIBUTE1,
5690 X_ATTRIBUTE2 => l_task_rec.ATTRIBUTE2,
5691 X_ATTRIBUTE3 => l_task_rec.ATTRIBUTE3,
5692 X_ATTRIBUTE4 => l_task_rec.ATTRIBUTE4,
5693 X_ATTRIBUTE5 => l_task_rec.ATTRIBUTE5,
5694 X_ATTRIBUTE6 => l_task_rec.ATTRIBUTE6,
5695 X_ATTRIBUTE7 => l_task_rec.ATTRIBUTE7,
5696 X_ATTRIBUTE8 => l_task_rec.ATTRIBUTE8,
5697 X_ATTRIBUTE9 => l_task_rec.ATTRIBUTE9,
5698 X_ATTRIBUTE10 => l_task_rec.ATTRIBUTE10,
5699 X_ATTRIBUTE11 => l_task_rec.ATTRIBUTE11,
5700 X_ATTRIBUTE12 => l_task_rec.ATTRIBUTE12,
5701 X_ATTRIBUTE13 => l_task_rec.ATTRIBUTE13,
5702 X_ATTRIBUTE14 => l_task_rec.ATTRIBUTE14,
5703 X_ATTRIBUTE15 => l_task_rec.ATTRIBUTE15,
5704 -- manisaga removed attributes addition from c_task_rec and added from
5705 -- l_task_rec for DFF implementation on 19-Feb-2010 -- End
5706
5707 X_VISIT_TASK_NAME => l_task_rec.visit_task_name,
5708 X_DESCRIPTION => l_task_rec.description,
5709 -- Added by rnahata for Issue 105 - qty is zero for manually created summary tasks
5710 X_QUANTITY => 0,
5711 X_LAST_UPDATE_DATE => SYSDATE,
5712 X_LAST_UPDATED_BY => Fnd_Global.USER_ID,
5713 X_LAST_UPDATE_LOGIN => Fnd_Global.LOGIN_ID );
5714
5715 IF (l_log_statement >= l_log_current_level) THEN
5716 fnd_log.string(l_log_statement,
5717 L_DEBUG_KEY,
5718 'After Calling Ahl_Visit_Tasks_Pkg.UPDATE_ROW');
5719 END IF;
5720
5721 --salogan added for supplier warranty starts
5722 -- calling AHL_VWP_RULES_PVT.Get_Warranty_Rec_for_Update
5723 AHL_VWP_RULES_PVT.Get_Warranty_Rec_for_Update(
5724 p_task_rec => l_task_rec,
5725 x_warranty_entl_tbl => l_entl_rec_tbl);
5726
5727 IF (l_log_statement >= l_log_current_level) THEN
5728 fnd_log.string(l_log_statement,
5729 L_DEBUG_KEY,
5730 'Before calling AHL_WARRANTY_ENTL_PVT.Process_Warranty_Entitlements.');
5731 END IF;
5732
5733 --Not passing p_commit the main API commits the data at the end
5734 AHL_WARRANTY_ENTL_PVT.Process_Warranty_Entitlements(
5735 p_api_version => l_api_version,
5736 p_validation_level => p_validation_level,
5737 p_module_type => p_module_type,
5738 p_user_role => AHL_WARRANTY_ENTL_PVT.G_USER_PLANNER,
5739 p_x_warranty_entl_tbl => l_entl_rec_tbl,
5740 x_return_status => l_return_status,
5741 x_msg_count => l_msg_count,
5742 x_msg_data => l_msg_data);
5743
5744 IF (l_log_statement >= l_log_current_level) THEN
5745 fnd_log.string(l_log_statement,
5746 L_DEBUG_KEY,
5747 'After calling AHL_WARRANTY_ENTL_PVT.Process_Warranty_Entitlements. Return Status = ' ||
5748 l_return_status);
5749 END IF;
5750
5751 l_msg_count := Fnd_Msg_Pub.count_msg;
5752 IF l_msg_count > 0 OR l_return_status <> Fnd_Api.g_ret_sts_success THEN
5753 x_msg_count := l_msg_count;
5754 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
5755 RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
5756 END IF;
5757 --salogan added for supplier warranty ends
5758
5759 ------------------------End of API Body------------------------------------
5760 -- Added cxcheng POST11510--------------
5761 --Now adjust the times derivation for task
5762 IF (l_log_statement >= l_log_current_level) THEN
5763 fnd_log.string(l_log_statement,
5764 L_DEBUG_KEY,
5765 'Before calling AHL_VWP_TIMES_PVT.Adjust_Task_Times');
5766 END IF;
5767 AHL_VWP_TIMES_PVT.Adjust_Task_Times(p_api_version => 1.0,
5768 p_init_msg_list => Fnd_Api.G_FALSE,
5769 p_commit => Fnd_Api.G_FALSE,
5770 p_validation_level => Fnd_Api.G_VALID_LEVEL_FULL,
5771 x_return_status => l_return_status,
5772 x_msg_count => l_msg_count,
5773 x_msg_data => l_msg_data,
5774 p_task_id =>l_task_rec.visit_task_id);
5775 IF (l_log_statement >= l_log_current_level) THEN
5776 fnd_log.string(l_log_statement,
5777 L_DEBUG_KEY,
5778 'After Calling AHL_VWP_TIMES_PVT.Adjust_Task_Times, Return Status = ' || l_return_status);
5779 END IF;
5780
5781 --Standard check to count messages
5782 l_msg_count := Fnd_Msg_Pub.count_msg;
5783
5784 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
5785 x_msg_count := l_msg_count;
5786 x_return_status := Fnd_Api.G_RET_STS_ERROR;
5787 RAISE Fnd_Api.G_EXC_ERROR;
5788 END IF;
5789
5790 --Standard check for commit
5791 IF Fnd_Api.TO_BOOLEAN(p_commit) THEN
5792 COMMIT;
5793 END IF;
5794
5795 IF (l_log_procedure >= l_log_current_level) THEN
5796 fnd_log.string(l_log_procedure,
5797 L_DEBUG_KEY ||'.end',
5798 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
5799 END IF;
5800
5801 EXCEPTION
5802 WHEN Fnd_Api.g_exc_error THEN
5803 ROLLBACK TO Update_Summary_Task;
5804 x_return_status := Fnd_Api.g_ret_sts_error;
5805 Fnd_Msg_Pub.count_and_get (
5806 p_encoded => Fnd_Api.g_false,
5807 p_count => x_msg_count,
5808 p_data => x_msg_data
5809 );
5810 WHEN Fnd_Api.g_exc_unexpected_error THEN
5811 ROLLBACK TO Update_Summary_Task;
5812 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
5813 Fnd_Msg_Pub.count_and_get (
5814 p_encoded => Fnd_Api.g_false,
5815 p_count => x_msg_count,
5816 p_data => x_msg_data
5817 );
5818 WHEN OTHERS THEN
5819 ROLLBACK TO Update_Summary_Task;
5820 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
5821 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
5822 THEN
5823 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
5824 END IF;
5825 Fnd_Msg_Pub.count_and_get (
5826 p_encoded => Fnd_Api.g_false,
5827 p_count => x_msg_count,
5828 p_data => x_msg_data
5829 );
5830 END Update_Summary_Task;
5831
5832 --------------------------------------------------------------------
5833 -- PROCEDURE
5834 -- Delete_Task
5835 --
5836 -- PURPOSE
5837 -- To delete all types of tasks i.e Unassociated/Summary/Planned/Unplanned tasks.
5838 --------------------------------------------------------------------
5839 PROCEDURE Delete_Task (
5840 p_api_version IN NUMBER,
5841 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
5842 p_commit IN VARCHAR2 := Fnd_Api.g_false,
5843 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
5844 p_module_type IN VARCHAR2 := 'JSP',
5845 p_Visit_Task_Id IN NUMBER,
5846 x_return_status OUT NOCOPY VARCHAR2,
5847 x_msg_count OUT NOCOPY NUMBER,
5848 x_msg_data OUT NOCOPY VARCHAR2
5849 )
5850 IS
5851 L_API_VERSION CONSTANT NUMBER := 1.0;
5852 L_API_NAME CONSTANT VARCHAR2(30) := 'Delete_Task';
5853 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
5854 -- local variables defined for the procedure
5855 l_msg_data VARCHAR2(2000);
5856 l_return_status VARCHAR2(1);
5857 l_interaction_id NUMBER;
5858 l_msg_count NUMBER;
5859
5860 -- To find task related information
5861 CURSOR c_Task (x_id IN NUMBER) IS
5862 SELECT * FROM Ahl_Visit_Tasks_VL
5863 WHERE VISIT_TASK_ID = x_id;
5864 c_Task_rec c_Task%ROWTYPE;
5865
5866 -- To find visit related information
5867 CURSOR c_Visit (x_id IN NUMBER) IS
5868 SELECT * FROM Ahl_Visits_VL
5869 WHERE VISIT_ID = x_id;
5870 c_Visit_rec c_Visit%ROWTYPE;
5871
5872 CURSOR c_sr_ovn(c_sr_id IN NUMBER) IS
5873 SELECT object_version_number, incident_number
5874 FROM cs_incidents_all_b
5875 WHERE INCIDENT_ID = c_sr_id;
5876 c_sr_ovn_rec c_sr_ovn%ROWTYPE;
5877
5878 -- post 11.5.10
5879 -- yazhou start
5880
5881 CURSOR c_visit_task_exists(p_visit_id IN NUMBER)
5882 IS
5883 SELECT 'x'
5884 FROM ahl_visit_tasks_b
5885 WHERE visit_id = p_visit_id
5886 AND STATUS_CODE = 'PLANNING';
5887
5888 -- yazhou end
5889 -- amagrawa start
5890 CURSOR c_get_wo_details(x_id IN NUMBER)
5891 IS
5892 SELECT
5893 scheduled_start_date,
5894 SCHEDULED_COMPLETION_DATE
5895 FROM wip_discrete_jobs WHERE wip_entity_id =
5896 (
5897 SELECT
5898 wip_entity_id
5899 FROM ahl_workorders
5900 WHERE
5901 master_workorder_flag = 'Y' AND
5902 visit_task_id IS null AND
5903 status_code not in (22,7) and
5904 visit_id=x_id
5905 );
5906 c_get_wo_details_rec c_get_wo_details%ROWTYPE;
5907 -- amagrawa end
5908
5909 -- MANESING::Bug 13713141, 16-Apr-2012, added following cursors
5910 -- Cursor to find out the Repair Batch for the given task
5911 CURSOR get_rpr_batch_for_task_csr (c_visit_task_id NUMBER) IS
5912 SELECT repair_batch_name, status_code
5913 FROM AHL_VISIT_TASKS_B
5914 WHERE cost_parent_id IS NULL
5915 START WITH visit_task_id = c_visit_task_id
5916 CONNECT BY visit_task_id = Prior cost_parent_id;
5917
5918 -- Cursor to check if Repair Batch has planned tasks
5919 CURSOR chk_rpr_batch_has_planed_tasks (c_repair_batch_name VARCHAR2) IS
5920 SELECT 'X'
5921 FROM AHL_VISIT_TASKS_B
5922 WHERE cost_parent_id IS NOT NULL -- to filter repair batch task
5923 AND status_code = 'PLANNING'
5924 START WITH repair_batch_name = c_repair_batch_name
5925 CONNECT BY cost_parent_id = Prior visit_task_id;
5926
5927 l_dummy VARCHAR2(1);
5928 l_planned_order_flag VARCHAR2(1);
5929 l_repair_batch_name VARCHAR2(240);
5930 l_rpr_batch_status_code VARCHAR2(30);
5931
5932 BEGIN
5933
5934 IF (l_log_procedure >= l_log_current_level) THEN
5935 fnd_log.string(l_log_procedure,
5936 L_DEBUG_KEY ||'.begin',
5937 'At the start of PL SQL procedure.');
5938 END IF;
5939 --------------------- initialize -----------------------
5940 SAVEPOINT Delete_Task;
5941
5942 IF Fnd_Api.to_boolean (p_init_msg_list) THEN
5943 Fnd_Msg_Pub.initialize;
5944 END IF;
5945
5946 -- Initialize API return status to success
5947 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
5948
5949 -- Standard call to check for call compatibility.
5950 IF NOT Fnd_Api.compatible_api_call(
5951 l_api_version,
5952 p_api_version,
5953 l_api_name,
5954 G_PKG_NAME
5955 ) THEN
5956 RAISE Fnd_Api.g_exc_unexpected_error;
5957 END IF;
5958 --------------------Start of API Body-----------------------------------
5959
5960 -------------------Cursor values------------------------------------
5961 OPEN c_Task(p_visit_task_id);
5962 FETCH c_Task INTO c_Task_rec;
5963 CLOSE c_Task;
5964
5965 OPEN c_visit(c_task_rec.visit_id);
5966 FETCH c_visit INTO c_visit_rec;
5967 CLOSE c_visit;
5968
5969 OPEN c_sr_ovn(c_task_rec.service_request_id);
5970 FETCH c_sr_ovn into c_sr_ovn_rec;
5971 CLOSE c_sr_ovn;
5972
5973 IF (l_log_statement >= l_log_current_level) THEN
5974 fnd_log.string(l_log_statement,
5975 L_DEBUG_KEY,
5976 ': Visit Id = ' || c_visit_rec.visit_id ||
5977 ': Status Code ' || c_visit_rec.status_code ||
5978 ': Visit Id = ' || c_task_rec.visit_task_id);
5979 END IF;
5980
5981 ---------------------------------------------- Start----------------------------------------------------------
5982
5983 IF c_visit_rec.status_code IN ('CLOSED','CANCELLED') THEN
5984 Fnd_Message.SET_NAME('AHL','AHL_VWP_NOT_USE_VISIT');
5985 Fnd_Msg_Pub.ADD;
5986 RAISE Fnd_Api.G_EXC_ERROR;
5987 ELSIF c_task_rec.status_code = 'PLANNING' THEN
5988 IF c_task_rec.task_type_code = 'SUMMARY' THEN
5989
5990 IF (l_log_statement >= l_log_current_level) THEN
5991 fnd_log.string(l_log_statement,
5992 L_DEBUG_KEY,
5993 'Before Calling Delete_Summary_Task');
5994 END IF;
5995 Delete_Summary_Task
5996 ( p_api_version => l_api_version,
5997 p_init_msg_list => p_init_msg_list,
5998 p_commit => Fnd_Api.g_false,
5999 p_validation_level => p_validation_level,
6000 p_module_type => p_module_type,
6001 p_visit_task_id => p_visit_task_id,
6002 x_return_status => l_return_status,
6003 x_msg_count => l_msg_count,
6004 x_msg_data => l_msg_data
6005 );
6006
6007 IF (l_log_statement >= l_log_current_level) THEN
6008 fnd_log.string(l_log_statement,
6009 L_DEBUG_KEY,
6010 'After Calling Delete_Summary_Task, Return Status = ' || l_return_status );
6011 END IF;
6012
6013 ELSIF c_task_rec.task_type_code = 'PLANNED' THEN
6014
6015 IF (l_log_statement >= l_log_current_level) THEN
6016 fnd_log.string(l_log_statement,
6017 L_DEBUG_KEY,
6018 'Before Calling AHL_VWP_PLAN_TASKS_PVT.Delete_Planned_Task');
6019 END IF;
6020 AHL_VWP_PLAN_TASKS_PVT.Delete_Planned_Task
6021 ( p_api_version => l_api_version,
6022 p_init_msg_list => p_init_msg_list,
6023 p_commit => Fnd_Api.g_false,
6024 p_validation_level => p_validation_level,
6025 p_module_type => p_module_type,
6026 p_visit_task_id => p_visit_task_id,
6027 x_return_status => l_return_status,
6028 x_msg_count => l_msg_count,
6029 x_msg_data => l_msg_data
6030 );
6031
6032 IF (l_log_statement >= l_log_current_level) THEN
6033 fnd_log.string(l_log_statement,
6034 L_DEBUG_KEY,
6035 'After Calling AHL_VWP_PLAN_TASKS_PVT.Delete_Planned_Task, Return Status = ' || l_return_status);
6036 END IF;
6037
6038 ELSIF c_task_rec.task_type_code = 'UNPLANNED' THEN
6039
6040 IF (l_log_statement >= l_log_current_level) THEN
6041 fnd_log.string(l_log_statement,
6042 L_DEBUG_KEY,
6043 'Before Calling AHL_VWP_UNPLAN_TASKS_PVT.Delete_Unplanned_Task');
6044 END IF;
6045 AHL_VWP_UNPLAN_TASKS_PVT.Delete_Unplanned_Task
6046 ( p_api_version => l_api_version,
6047 p_init_msg_list => p_init_msg_list,
6048 p_commit => Fnd_Api.g_false,
6049 p_validation_level => p_validation_level,
6050 p_module_type => p_module_type,
6051 p_visit_task_id => p_visit_task_id,
6052 x_return_status => l_return_status,
6053 x_msg_count => l_msg_count,
6054 x_msg_data => l_msg_data
6055 );
6056
6057 IF (l_log_statement >= l_log_current_level) THEN
6058 fnd_log.string(l_log_statement,
6059 L_DEBUG_KEY,
6060 'After Calling AHL_VWP_UNPLAN_TASKS_PVT.Delete_Unplanned_Task, Return Status = ' || l_return_status );
6061 END IF;
6062 ELSIF c_task_rec.task_type_code = 'STAGE' THEN -- VWPE 12730539:: PRAKKUM :: 26-JUL-2011 :: to delete stage tasks
6063
6064 IF (l_log_statement >= l_log_current_level) THEN
6065 fnd_log.string(l_log_statement,
6066 L_DEBUG_KEY,
6067 'Before Calling Delete_Stage_Task');
6068 END IF;
6069 Delete_Stage_Task
6070 ( p_api_version => l_api_version,
6071 p_init_msg_list => p_init_msg_list,
6072 p_commit => Fnd_Api.g_false,
6073 p_validation_level => p_validation_level,
6074 p_module_type => p_module_type,
6075 p_visit_task_id => p_visit_task_id,
6076 x_return_status => l_return_status,
6077 x_msg_count => l_msg_count,
6078 x_msg_data => l_msg_data
6079 );
6080
6081 IF (l_log_statement >= l_log_current_level) THEN
6082 fnd_log.string(l_log_statement,
6083 L_DEBUG_KEY,
6084 'After Calling Delete_Stage_Task, Return Status = ' || l_return_status
6085 ||', l_msg_data= '||l_msg_data);
6086 END IF;
6087
6088 ELSE
6089
6090 IF (l_log_statement >= l_log_current_level) THEN
6091 fnd_log.string(l_log_statement,
6092 L_DEBUG_KEY,
6093 'Before Calling Delete_Unassociated_Task');
6094 END IF;
6095 Delete_Unassociated_Task
6096 (p_api_version => l_api_version,
6097 p_init_msg_list => p_init_msg_list,
6098 p_commit => Fnd_Api.g_false,
6099 p_validation_level => p_validation_level,
6100 p_module_type => p_module_type,
6101 p_visit_task_id => p_visit_task_id,
6102 x_return_status => l_return_status,
6103 x_msg_count => l_msg_count,
6104 x_msg_data => l_msg_data
6105 );
6106 IF (l_log_statement >= l_log_current_level) THEN
6107 fnd_log.string(l_log_statement,
6108 L_DEBUG_KEY,
6109 'After Calling Delete_Unassociated_Task, Return Status = ' || l_return_status);
6110 END IF;
6111
6112 END IF;
6113
6114 l_msg_count := Fnd_Msg_Pub.count_msg;
6115
6116 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
6117 x_msg_count := l_msg_count;
6118 x_return_status := Fnd_Api.G_RET_STS_ERROR;
6119 RAISE Fnd_Api.G_EXC_ERROR;
6120 END IF;
6121
6122 -- Added cxcheng POST11510--------------
6123 --Now adjust the times derivation for entire visit task could delete at
6124 --MR level
6125
6126 IF (l_log_statement >= l_log_current_level) THEN
6127 fnd_log.string(l_log_statement,
6128 L_DEBUG_KEY,
6129 'Before Calling AHL_VWP_TIMES_PVT.calculate_Task_Times');
6130 END IF;
6131
6132 AHL_VWP_TIMES_PVT.calculate_Task_Times(p_api_version => 1.0,
6133 p_init_msg_list => Fnd_Api.G_FALSE,
6134 p_commit => Fnd_Api.G_FALSE,
6135 p_validation_level => Fnd_Api.G_VALID_LEVEL_FULL,
6136 x_return_status => l_return_status,
6137 x_msg_count => l_msg_count,
6138 x_msg_data => l_msg_data,
6139 p_visit_id => c_task_rec.visit_id);
6140
6141 IF (l_log_statement >= l_log_current_level) THEN
6142 fnd_log.string(l_log_statement,
6143 L_DEBUG_KEY,
6144 'After Calling AHL_VWP_TIMES_PVT.calculate_Task_Times, Return Status = ' || l_return_status);
6145 END IF;
6146
6147 IF (l_log_statement >= l_log_current_level) THEN
6148 fnd_log.string(l_log_statement,
6149 L_DEBUG_KEY,
6150 'Before Calling AHL_LTP_REQST_MATRL_PVT.Process_Planned_Materials');
6151 END IF;
6152
6153 /* Operation flag changed to 'U' From 'R' by mpothuku on 02/07/05 */
6154 AHL_LTP_REQST_MATRL_PVT.Process_Planned_Materials
6155 (p_api_version => p_api_version,
6156 p_init_msg_list => Fnd_Api.G_FALSE,
6157 p_commit => Fnd_Api.G_FALSE,
6158 p_visit_id => c_task_rec.visit_id,
6159 p_visit_task_id => NULL,
6160 p_org_id => NULL,
6161 p_start_date => NULL,
6162 p_operation_flag => 'U',
6163 x_planned_order_flag => l_planned_order_flag ,
6164 x_return_status => l_return_status,
6165 x_msg_count => l_msg_count,
6166 x_msg_data => l_msg_data);
6167
6168 IF (l_log_statement >= l_log_current_level) THEN
6169 fnd_log.string(l_log_statement,
6170 L_DEBUG_KEY,
6171 'After Calling AHL_LTP_REQST_MATRL_PVT.Process_Planned_Materials, Return Status = ' || l_return_status);
6172 END IF;
6173
6174 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
6175 x_msg_count := l_msg_count;
6176 x_return_status := Fnd_Api.G_RET_STS_ERROR;
6177 RAISE Fnd_Api.G_EXC_ERROR;
6178 END IF;
6179
6180 -- post 11.5.10
6181 --yazhou start
6182 -- If visit is in partially released status
6183 -- and after this task is deleted, no other task is in Planning status
6184 -- then set the visit status to RELEASED
6185 IF c_visit_rec.status_code = 'PARTIALLY RELEASED' THEN
6186 -- yazhou end
6187
6188 OPEN c_visit_task_exists(c_visit_rec.visit_id);
6189 FETCH c_visit_task_exists INTO l_dummy;
6190 OPEN c_get_wo_details(c_task_rec.visit_id);
6191 FETCH c_get_wo_details into c_get_wo_details_rec;
6192
6193 IF (c_visit_task_exists%NOTFOUND and
6194 c_visit_rec.start_date_time = c_get_wo_details_rec.scheduled_start_date and
6195 c_visit_rec.close_date_time = c_get_wo_details_rec.scheduled_completion_date)
6196 THEN
6197 UPDATE ahl_visits_b
6198 SET status_code = 'RELEASED',
6199 object_version_number = object_version_number + 1
6200 WHERE visit_id = c_visit_rec.visit_id;
6201 END IF;
6202 CLOSE c_visit_task_exists;
6203 CLOSE c_get_wo_details;
6204
6205 -- post 11.5.10
6206 -- yazhou start
6207
6208 END IF;
6209
6210 -- yazhou end
6211
6212 /* MANESING::Bug 13713141, 16-Apr-2012, For Component Visits, Repair Batch status should also
6213 * change similar to the way Visit status changes as Repair Batches are like mini-visits.
6214 * So, if Repair Batch is in 'PARTIALLY RELEASED' status and after task deletion,
6215 * no other task is in Planning status, then change Repair Batch status to RELEASED.
6216 */
6217 IF (AHL_CMP_UTIL_PKG.Is_Comp_Visit (c_visit_rec.visit_id) = 'Y') THEN
6218
6219 -- find which Repair Batch, the deleted task belongs to
6220 OPEN get_rpr_batch_for_task_csr (p_visit_task_id);
6221 FETCH get_rpr_batch_for_task_csr INTO l_repair_batch_name, l_rpr_batch_status_code;
6222 IF (get_rpr_batch_for_task_csr%FOUND) THEN
6223
6224 -- change Repair Batch status as mentioned above
6225 IF (l_rpr_batch_status_code = 'PARTIALLY RELEASED') THEN
6226
6227 OPEN chk_rpr_batch_has_planed_tasks (l_repair_batch_name);
6228 FETCH chk_rpr_batch_has_planed_tasks INTO l_dummy;
6229 IF (chk_rpr_batch_has_planed_tasks%NOTFOUND) THEN
6230
6231 IF (l_log_statement >= l_log_current_level) THEN
6232 FND_LOG.string(l_log_statement, l_debug_key, 'Repair Batch ' || l_repair_batch_name || ' has no planned tasks.');
6233 END IF;
6234
6235 UPDATE AHL_VISIT_TASKS_B
6236 SET status_code = 'RELEASED',
6237 object_version_number = object_version_number + 1,
6238 last_update_date = SYSDATE,
6239 last_updated_by = Fnd_Global.USER_ID,
6240 last_update_login = Fnd_Global.LOGIN_ID
6241 WHERE repair_batch_name = l_repair_batch_name;
6242
6243 END IF;
6244 CLOSE chk_rpr_batch_has_planed_tasks;
6245
6246 END IF; -- IF l_rpr_batch_status_code = 'PARTIALLY RELEASED'
6247 END IF;
6248 CLOSE get_rpr_batch_for_task_csr;
6249
6250 END IF; -- IF Component Visit
6251
6252 -- yazhou 29-Jun-2006 starts
6253 -- bug#5359943
6254 -- Pass p_status_id as 1 (OPEN)
6255
6256 -- If SR Id of task is not null
6257 -- then update the status of the SR to OPEN
6258 IF (l_log_statement >= l_log_current_level) THEN
6259 fnd_log.string(l_log_statement,
6260 L_DEBUG_KEY,
6261 'Service Request Id = ' || c_task_rec.service_request_id);
6262 END IF;
6263 IF c_task_rec.service_request_id IS NOT NULL THEN
6264 IF (l_log_statement >= l_log_current_level) THEN
6265 fnd_log.string(l_log_statement,
6266 L_DEBUG_KEY,
6267 'Before Calling CS_ServiceRequest_PUB.Update_Status');
6268 END IF;
6269
6270 CS_ServiceRequest_PUB.Update_Status
6271 (
6272 p_api_version => 2.0,
6273 p_init_msg_list => p_init_msg_list,
6274 p_commit => FND_API.G_FALSE,
6275 p_resp_appl_id => NULL,
6276 p_resp_id => NULL,
6277 p_user_id => NULL,
6278 p_login_id => NULL,
6279 p_status_id => 1, --OPEN
6280 p_closed_date => NULL,
6281 p_audit_comments => NULL,
6282 p_called_by_workflow => FND_API.G_FALSE,
6283 p_workflow_process_id => NULL,
6284 p_comments => NULL,
6285 p_public_comment_flag => FND_API.G_FALSE,
6286 p_validate_sr_closure => 'N',
6287 p_auto_close_child_entities => 'N',
6288 p_request_id => NULL,
6289 p_request_number => c_sr_ovn_rec.incident_number,
6290 x_return_status => l_return_status,
6291 x_msg_count => l_msg_count,
6292 x_msg_data => l_msg_data,
6293 p_object_version_number => c_sr_ovn_rec.object_version_number,
6294 -- p_status => 'OPEN',
6295 x_interaction_id => l_interaction_id
6296 );
6297 -- yazhou 29-Jun-2006 ends
6298
6299 IF (l_log_statement >= l_log_current_level) THEN
6300 fnd_log.string(l_log_statement,
6301 L_DEBUG_KEY,
6302 'After Calling CS_ServiceRequest_PUB.Update_Status, Return Status = ' || l_return_status);
6303 END IF;
6304
6305 l_msg_count := Fnd_Msg_Pub.count_msg;
6306
6307 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
6308 x_msg_count := l_msg_count;
6309 x_return_status := Fnd_Api.G_RET_STS_ERROR;
6310 RAISE Fnd_Api.G_EXC_ERROR;
6311 END IF;
6312 END IF;
6313
6314 END IF;
6315
6316 -- Bug fix #4187213
6317 -- yazhou 16-Feb-2005
6318 IF c_visit_rec.Any_Task_Chg_Flag='N' THEN
6319 AHL_VWP_RULES_PVT.update_visit_task_flag(
6320 p_visit_id =>c_visit_rec.visit_id,
6321 p_flag =>'Y',
6322 x_return_status =>x_return_status);
6323
6324 IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6325 RAISE FND_API.G_EXC_ERROR;
6326 END IF;
6327 END IF;
6328 ------------------------End of API Body------------------------------------
6329
6330 --Standard check to count messages
6331 l_msg_count := Fnd_Msg_Pub.count_msg;
6332
6333 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
6334 x_msg_count := l_msg_count;
6335 x_return_status := Fnd_Api.G_RET_STS_ERROR;
6336 RAISE Fnd_Api.G_EXC_ERROR;
6337 END IF;
6338
6339 --Standard check for commit
6340 IF Fnd_Api.TO_BOOLEAN(p_commit) THEN
6341 COMMIT;
6342 END IF;
6343
6344 IF (l_log_procedure >= l_log_current_level) THEN
6345 fnd_log.string(l_log_procedure,
6346 L_DEBUG_KEY ||'.end',
6347 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
6348 END IF;
6349
6350 EXCEPTION
6351 WHEN Fnd_Api.g_exc_error THEN
6352 ROLLBACK TO Delete_Task;
6353 x_return_status := Fnd_Api.g_ret_sts_error;
6354 Fnd_Msg_Pub.count_and_get (
6355 p_encoded => Fnd_Api.g_false,
6356 p_count => x_msg_count,
6357 p_data => x_msg_data
6358 );
6359 WHEN Fnd_Api.g_exc_unexpected_error THEN
6360 ROLLBACK TO Delete_Task;
6361 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
6362 Fnd_Msg_Pub.count_and_get (
6363 p_encoded => Fnd_Api.g_false,
6364 p_count => x_msg_count,
6365 p_data => x_msg_data
6366 );
6367 WHEN OTHERS THEN
6368 ROLLBACK TO Delete_Task;
6369 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
6370 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
6371 THEN
6372 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
6373 END IF;
6374 Fnd_Msg_Pub.count_and_get (
6375 p_encoded => Fnd_Api.g_false,
6376 p_count => x_msg_count,
6377 p_data => x_msg_data
6378 );
6379 END Delete_Task;
6380
6381 --------------------------------------------------------------------
6382 -- PROCEDURE
6383 -- Delete_Unassociated_Task
6384 --
6385 -- PURPOSE
6386 -- To delete Unassociated tasks for the Maintenace visit.
6387 --------------------------------------------------------------------
6388
6389 PROCEDURE Delete_Unassociated_Task (
6390 p_api_version IN NUMBER,
6391 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
6392 p_commit IN VARCHAR2 := Fnd_Api.g_false,
6393 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
6394 p_module_type IN VARCHAR2 := 'JSP',
6395 p_visit_task_ID IN NUMBER,
6396 x_return_status OUT NOCOPY VARCHAR2,
6397 x_msg_count OUT NOCOPY NUMBER,
6398 x_msg_data OUT NOCOPY VARCHAR2
6399 )
6400
6401 IS
6402 l_api_version CONSTANT NUMBER := 1.0;
6403 l_api_name CONSTANT VARCHAR2(30) := 'Delete_Unassociated_Task';
6404 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
6405 -- local variables defined for the procedure
6406 l_visit_id NUMBER;
6407 l_task_id NUMBER;
6408 x_task_id NUMBER;
6409 l_est_price NUMBER;
6410 l_act_price NUMBER;
6411 l_count NUMBER;
6412 l_msg_count NUMBER;
6413 l_msg_data VARCHAR2(2000);
6414 l_return_status VARCHAR2(1);
6415
6416 -- To find all tasks related information
6417 CURSOR c_Task (x_id IN NUMBER) IS
6418 SELECT * FROM Ahl_Visit_Tasks_VL
6419 WHERE Visit_Task_ID = x_id;
6420 c_task_rec c_Task%ROWTYPE;
6421
6422 -- To find visit related information
6423 CURSOR c_Visit (x_id IN NUMBER) IS
6424 SELECT *
6425 FROM Ahl_Visits_VL
6426 WHERE VISIT_ID = x_id;
6427 c_visit_rec c_Visit%ROWTYPE;
6428
6429 -- To find any task which have primary visit task id as deleted task id
6430 --CURSOR c_primary (x_visit_id IN NUMBER, x_task_id IN NUMBER) IS
6431 CURSOR c_primary (x_task_id IN NUMBER) IS
6432 SELECT Visit_Task_Id, Object_Version_Number,visit_id
6433 FROM Ahl_Visit_Tasks_VL
6434 WHERE --VISIT_ID = x_visit_id AND
6435 PRIMARY_VISIT_TASK_ID = x_task_id
6436 AND status_code <> 'DELETED';
6437 c_primary_rec c_primary%ROWTYPE;
6438
6439 -- To find any task links for a deleted task
6440 CURSOR c_links (x_id IN NUMBER) IS
6441 SELECT COUNT(*) FROM Ahl_Task_Links L ,Ahl_Visit_Tasks_B T
6442 WHERE (T.VISIT_TASK_ID = L.VISIT_TASK_ID OR T.VISIT_TASK_ID = L.PARENT_TASK_ID)
6443 AND T.VISIT_TASK_ID = x_id;
6444
6445 -- To find if WIP job is created for the Visit
6446 CURSOR c_wo_exist(x_task_id IN NUMBER)
6447 IS
6448 select 'X' from ahl_workorders
6449 where VISIT_TASK_ID=x_task_id;
6450
6451 -- To find if WIP job is created for the Visit
6452 CURSOR c_workorders(x_task_id IN NUMBER)
6453 IS
6454 SELECT * FROM AHL_WORKORDERS
6455 WHERE VISIT_TASK_ID=x_task_id
6456 AND STATUS_CODE<>'22' AND STATUS_CODE<> '7';
6457
6458 l_workrec c_workorders%ROWTYPE;
6459 l_workorder_rec AHL_PRD_WORKORDER_PVT.PRD_WORKORDER_REC;
6460 l_workoper_tbl AHL_PRD_WORKORDER_PVT.PRD_WORKOPER_TBL;
6461 l_wip_load_flag VARCHAR2(1):= 'Y';
6462 l_workorder_present VARCHAR2(1);
6463 l_entl_rec_tbl AHL_WARRANTY_ENTL_PVT.Warranty_Entl_Tbl_Type; --salogan added for supplier warranty
6464
6465 BEGIN
6466 IF (l_log_procedure >= l_log_current_level) THEN
6467 fnd_log.string(l_log_procedure,
6468 L_DEBUG_KEY ||'.begin',
6469 'At the start of PL SQL procedure.');
6470 END IF;
6471
6472 --------------------- initialize -----------------------
6473 SAVEPOINT Delete_Unassociated_Task;
6474
6475 IF Fnd_Api.to_boolean (p_init_msg_list) THEN
6476 Fnd_Msg_Pub.initialize;
6477 END IF;
6478
6479 -- Initialize API return status to success
6480 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
6481
6482 -- Standard call to check for call compatibility.
6483 IF NOT Fnd_Api.compatible_api_call(
6484 l_api_version,
6485 p_api_version,
6486 l_api_name,
6487 G_PKG_NAME
6488 ) THEN
6489 RAISE Fnd_Api.g_exc_unexpected_error;
6490 END IF;
6491
6492 ------------------------Start of API Body------------------------------------
6493 IF (l_log_statement >= l_log_current_level) THEN
6494 fnd_log.string(l_log_statement,
6495 L_DEBUG_KEY,
6496 ':Task Id' || p_visit_task_ID);
6497 END IF;
6498
6499 -- To check if the input taskid exists in task entity.
6500 OPEN c_Task(p_Visit_Task_ID);
6501 FETCH c_Task INTO c_task_rec;
6502
6503 IF c_Task%NOTFOUND THEN
6504 CLOSE c_Task;
6505 IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.g_msg_lvl_error) THEN
6506 Fnd_Message.set_name('AHL', 'AHL_API_RECORD_NOT_FOUND');
6507 Fnd_Msg_Pub.ADD;
6508 END IF;
6509 RAISE Fnd_Api.g_exc_error;
6510 END IF;
6511 CLOSE c_Task;
6512
6513 -- To find the visit related information
6514 OPEN c_Visit(c_task_rec.visit_id);
6515 FETCH c_Visit INTO c_visit_rec;
6516 CLOSE c_Visit;
6517
6518 OPEN c_workorders(c_task_rec.visit_task_id);
6519 FETCH c_workorders INTO l_workrec;
6520
6521 IF c_workorders%FOUND THEN
6522
6523 IF l_workrec.status_code='17' THEN
6524 l_workorder_rec.workorder_id:=l_workrec.workorder_id;
6525 l_workorder_rec.visit_task_id:=p_visit_task_id;
6526
6527 Get_WorkOrder_Attribs(
6528 p_x_prd_workorder_rec => l_workorder_rec
6529 );
6530
6531 l_msg_count := FND_MSG_PUB.count_msg;
6532 IF l_msg_count > 0 THEN
6533 x_msg_count := l_msg_count;
6534 x_return_status := FND_API.G_RET_STS_ERROR;
6535 RAISE FND_API.G_EXC_ERROR;
6536 END IF;
6537
6538 l_workorder_rec.wip_entity_id := null;
6539 l_workorder_rec.STATUS_CODE:='22'; --Deleted Status Refer DLD to Verify.
6540
6541 IF (l_log_statement >= l_log_current_level) THEN
6542 fnd_log.string(l_log_statement,
6543 L_DEBUG_KEY,
6544 'Before Calling AHL_PRD_WORKORDER_PVT.update_job');
6545 END IF;
6546 AHL_PRD_WORKORDER_PVT.update_job
6547 (
6548 p_api_version => 1.0,
6549 p_init_msg_list => fnd_api.g_false,
6550 p_commit => fnd_api.g_false,
6551 p_validation_level => p_validation_level,
6552 p_default => fnd_api.g_false,
6553 p_module_type => NULL,
6554 x_return_status => x_return_status,
6555 x_msg_count => x_msg_count,
6556 x_msg_data => x_msg_data,
6557 p_wip_load_flag => 'Y',
6558 p_x_prd_workorder_rec => l_workorder_rec,
6559 p_x_prd_workoper_tbl => l_workoper_tbl
6560 );
6561
6562 IF (l_log_statement >= l_log_current_level) THEN
6563 fnd_log.string(l_log_statement,
6564 L_DEBUG_KEY,
6565 'After Calling AHL_PRD_WORKORDER_PVT.update_job, Return Status = ' || x_return_status);
6566 END IF;
6567
6568 l_msg_count := FND_MSG_PUB.count_msg;
6569 IF l_msg_count > 0 OR NVL(x_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
6570 x_msg_count := l_msg_count;
6571 x_return_status := FND_API.G_RET_STS_ERROR;
6572 RAISE FND_API.G_EXC_ERROR;
6573 END IF;
6574
6575 ELSE
6576 -- if status is not draft
6577 Fnd_Message.set_name ('AHL', 'AHL_VWP_TSK_CANNOT_DEL');
6578 Fnd_Msg_Pub.ADD;
6579 RAISE FND_API.G_EXC_ERROR;
6580 END IF; -- End of Job Status
6581 CLOSE c_workorders;
6582
6583 ELSE
6584
6585 CLOSE c_workorders;
6586
6587 END IF; -- End of check if the job is for the task
6588
6589 OPEN c_wo_exist(c_task_rec.visit_task_id);
6590 FETCH c_wo_exist INTO l_workorder_present;
6591
6592 IF c_wo_exist%FOUND THEN
6593 l_workorder_present :='Y';
6594 ELSE
6595 l_workorder_present :='N';
6596 END IF;
6597 CLOSE c_wo_exist;
6598
6599 l_visit_id := c_task_rec.visit_id;
6600 l_task_id := p_Visit_Task_ID;
6601
6602 --To update all tasks which have the deleting task as cost or originating task
6603 AHL_VWP_RULES_PVT.Update_Cost_Origin_Task
6604 (p_visit_task_id =>l_task_Id,
6605 x_return_status =>x_return_status
6606 );
6607
6608 IF NVL(x_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
6609 x_msg_count := l_msg_count;
6610 x_return_status := FND_API.G_RET_STS_ERROR;
6611 RAISE FND_API.G_EXC_ERROR;
6612 END IF;
6613
6614 -- To find if task deleted from a visit in the Primary Plan,
6615 -- then any task associated to it in a simulation visit must have the association removed.
6616 --OPEN c_primary (l_visit_id, l_task_id);
6617 IF(c_visit_rec.ASSO_PRIMARY_VISIT_ID is null) THEN
6618 OPEN c_primary (l_task_id);
6619 LOOP
6620 FETCH c_primary INTO c_primary_rec;
6621 EXIT WHEN c_primary%NOTFOUND;
6622 IF c_primary_rec.visit_task_id IS NOT NULL THEN
6623 UPDATE AHL_VISIT_TASKS_B SET PRIMARY_VISIT_TASK_ID = NULL,
6624 OBJECT_VERSION_NUMBER = c_primary_rec.object_version_number + 1
6625 WHERE --VISIT_ID = l_visit_id AND
6626 VISIT_TASK_ID = c_primary_rec.visit_task_id;
6627 IF (l_log_statement >= l_log_current_level) THEN
6628 fnd_log.string(l_log_statement,
6629 L_DEBUG_KEY,
6630 'Updated AHL_VISIT_TASKS_B for Visit Task Id = ' || c_primary_rec.visit_task_id);
6631 END IF;
6632 END IF;
6633 END LOOP;
6634 CLOSE c_primary;
6635 END IF;
6636
6637 -- To find if a task deleted has associated Children Tasks, tasks that define it as a parent,
6638 -- the association must be removed.
6639 OPEN c_links (l_task_id);
6640 FETCH c_links INTO l_count;
6641 IF l_count > 0 THEN
6642 DELETE Ahl_Task_Links
6643 WHERE VISIT_TASK_ID = l_task_id
6644 OR PARENT_TASK_ID = l_task_id;
6645 END IF;
6646 CLOSE c_links;
6647
6648 IF (l_log_statement >= l_log_current_level) THEN
6649 fnd_log.string(l_log_statement,
6650 L_DEBUG_KEY,
6651 'Project Task Id = ' || c_task_rec.PROJECT_TASK_ID);
6652 END IF;
6653
6654 -- When a visit's task is deleted than the related projects's task is also deleted
6655 IF c_task_rec.PROJECT_TASK_ID IS NOT NULL THEN
6656
6657 IF (l_log_statement >= l_log_current_level) THEN
6658 fnd_log.string(l_log_statement,
6659 L_DEBUG_KEY,
6660 'Before Calling AHL_VWP_PROJ_PROD_PVT.Delete_Task_to_Project');
6661 END IF;
6662 AHL_VWP_PROJ_PROD_PVT.Delete_Task_to_Project(
6663 /*p_api_version => l_api_version,
6664 p_init_msg_list => p_init_msg_list,
6665 p_commit => Fnd_Api.g_false,
6666 p_validation_level => p_validation_level,
6667 p_module_type => p_module_type,*/
6668 p_visit_task_id => c_task_rec.Visit_Task_ID,
6669 x_return_status => l_return_status);
6670 /*x_msg_count => x_msg_count,
6671 x_msg_data => x_msg_data);*/
6672
6673 l_msg_count := FND_MSG_PUB.count_msg;
6674 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
6675 x_msg_count := l_msg_count;
6676 x_return_status := FND_API.G_RET_STS_ERROR;
6677 RAISE FND_API.G_EXC_ERROR;
6678 END IF;
6679 END IF;
6680
6681 IF (l_log_statement >= l_log_current_level) THEN
6682 fnd_log.string(l_log_statement,
6683 L_DEBUG_KEY,
6684 'Value of l_workorder_present = ' || l_workorder_present);
6685 END IF;
6686
6687 IF l_workorder_present = 'N' THEN
6688
6689 -- Delete task translation (AHL_VISIT_TASKS_TL) table data
6690 DELETE FROM Ahl_Visit_Tasks_TL
6691 WHERE Visit_Task_ID = l_task_id;
6692
6693 IF (SQL%NOTFOUND) THEN
6694 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_error) THEN
6695 Fnd_Message.set_name ('AHL', 'AHL_API_RECORD_NOT_FOUND');
6696 Fnd_Msg_Pub.ADD;
6697 END IF;
6698 RAISE Fnd_Api.g_exc_error;
6699 END IF;
6700
6701 -- Delete task base (AHL_VISIT_TASKS_B) table data
6702 DELETE FROM Ahl_Visit_Tasks_B
6703 WHERE Visit_Task_ID = l_task_id;
6704
6705 IF (SQL%NOTFOUND) THEN
6706 Fnd_Message.set_name ('AHL', 'AHL_API_RECORD_NOT_FOUND');
6707 Fnd_Msg_Pub.ADD;
6708 RAISE Fnd_Api.g_exc_error;
6709 END IF;
6710
6711 ELSE
6712 UPDATE AHL_VISIT_TASKS_B
6713 SET STATUS_CODE='DELETED',UNIT_EFFECTIVITY_ID=NULL,
6714 OBJECT_VERSION_NUMBER=OBJECT_VERSION_NUMBER+1
6715 WHERE VISIT_TASK_ID=l_task_id;
6716
6717 --salogan added the following code for supplier warranty starts
6718 Get_Entl_rec_for_Delete(
6719 p_task_id => l_task_id,
6720 x_warranty_entl_tbl => l_entl_rec_tbl);
6721 IF (l_log_statement >= l_log_current_level) THEN
6722 fnd_log.string(l_log_statement,
6723 L_DEBUG_KEY,
6724 'Before calling AHL_WARRANTY_ENTL_PVT.Process_Warranty_Entitlements.');
6725 END IF;
6726
6727 --Not passing p_commit the main API commits the data at the end
6728 AHL_WARRANTY_ENTL_PVT.Process_Warranty_Entitlements(
6729 p_api_version => p_api_version,
6730 p_validation_level => p_validation_level,
6731 p_module_type => p_module_type,
6732 p_user_role => AHL_WARRANTY_ENTL_PVT.G_USER_PLANNER,
6733 p_x_warranty_entl_tbl => l_entl_rec_tbl,
6734 x_return_status => l_return_status,
6735 x_msg_count => l_msg_count,
6736 x_msg_data => l_msg_data);
6737
6738 IF (l_log_statement >= l_log_current_level) THEN
6739 fnd_log.string(l_log_statement,
6740 L_DEBUG_KEY,
6741 'After calling AHL_WARRANTY_ENTL_PVT.Process_Warranty_Entitlements. Return Status = ' ||
6742 l_return_status);
6743 END IF;
6744
6745 l_msg_count := Fnd_Msg_Pub.count_msg;
6746 IF l_msg_count > 0 OR l_return_status <> Fnd_Api.g_ret_sts_success THEN
6747 x_msg_count := l_msg_count;
6748 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
6749 RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
6750 END IF;
6751 -- salogan added for supplier warranty ends
6752
6753 IF (l_log_statement >= l_log_current_level) THEN
6754 fnd_log.string(l_log_statement,
6755 L_DEBUG_KEY,
6756 'Updation of the status to DELETED');
6757 END IF;
6758
6759 END IF; -- End of l_workorder_present flag check
6760
6761 ------------------------End of API Body------------------------------------
6762 IF Fnd_Api.to_boolean (p_commit) THEN
6763 COMMIT;
6764 END IF;
6765
6766 Fnd_Msg_Pub.count_and_get (
6767 p_encoded => Fnd_Api.g_false,
6768 p_count => x_msg_count,
6769 p_data => x_msg_data
6770 );
6771
6772 IF (l_log_procedure >= l_log_current_level) THEN
6773 fnd_log.string(l_log_procedure,
6774 L_DEBUG_KEY ||'.end',
6775 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
6776 END IF;
6777 EXCEPTION
6778 WHEN Fnd_Api.g_exc_error THEN
6779 ROLLBACK TO Delete_Unassociated_Task;
6780 x_return_status := Fnd_Api.g_ret_sts_error;
6781 Fnd_Msg_Pub.count_and_get (
6782 p_encoded => Fnd_Api.g_false,
6783 p_count => x_msg_count,
6784 p_data => x_msg_data
6785 );
6786 WHEN Fnd_Api.g_exc_unexpected_error THEN
6787 ROLLBACK TO Delete_Unassociated_Task;
6788 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
6789 Fnd_Msg_Pub.count_and_get (
6790 p_encoded => Fnd_Api.g_false,
6791 p_count => x_msg_count,
6792 p_data => x_msg_data
6793 );
6794 WHEN OTHERS THEN
6795 ROLLBACK TO Delete_Unassociated_Task;
6796 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
6797 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
6798 THEN
6799 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
6800 END IF;
6801 Fnd_Msg_Pub.count_and_get (
6802 p_encoded => Fnd_Api.g_false,
6803 p_count => x_msg_count,
6804 p_data => x_msg_data
6805 );
6806 END Delete_Unassociated_Task;
6807
6808 --------------------------------------------------------------------
6809 -- PROCEDURE
6810 -- Delete_SR_Task
6811 --
6812 -- PURPOSE
6813 -- Added for VWP Post 11.5.10 enhancements
6814 -- To delete SR tasks for the Maintenace visit.
6815 --------------------------------------------------------------------
6816
6817 PROCEDURE Delete_SR_Task (
6818 p_api_version IN NUMBER,
6819 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
6820 p_commit IN VARCHAR2 := Fnd_Api.g_false,
6821 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
6822 p_module_type IN VARCHAR2:= 'JSP',
6823 p_visit_task_ID IN NUMBER,
6824 x_return_status OUT NOCOPY VARCHAR2,
6825 x_msg_count OUT NOCOPY NUMBER,
6826 x_msg_data OUT NOCOPY VARCHAR2
6827 )
6828 IS
6829 l_api_version CONSTANT NUMBER := 1.0;
6830 l_api_name CONSTANT VARCHAR2(30) := 'Delete SR Task';
6831 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
6832
6833 -- local variables defined for the procedure
6834 l_orgin_id NUMBER;
6835 l_visit_id NUMBER;
6836 l_mr_id NUMBER;
6837 l_task_id NUMBER;
6838 l_cost_id NUMBER;
6839 l_est_price NUMBER;
6840 l_act_price NUMBER;
6841 l_count NUMBER;
6842 l_msg_count NUMBER;
6843 l_msg_data VARCHAR2(2000);
6844
6845 l_workorder_rec AHL_PRD_WORKORDER_PVT.PRD_WORKORDER_REC;
6846 l_workoper_tbl AHL_PRD_WORKORDER_PVT.PRD_WORKOPER_TBL;
6847
6848 l_return_status VARCHAR2(1);
6849 l_workorder_present VARCHAR2(1) := 'N';
6850 l_planned_order_flag VARCHAR2(1);
6851 l_entl_rec_tbl AHL_WARRANTY_ENTL_PVT.Warranty_Entl_Tbl_Type; --salogan added for supplier warranty
6852
6853 -- To find all tasks related information
6854 CURSOR c_Task (x_id IN NUMBER) IS
6855 SELECT *
6856 FROM Ahl_Visit_Tasks_VL
6857 WHERE Visit_Task_ID = x_id;
6858 c_task_rec c_Task%ROWTYPE;
6859
6860 -- To find visit related information
6861 CURSOR c_Visit (x_id IN NUMBER) IS
6862 SELECT *
6863 FROM Ahl_Visits_VL
6864 WHERE VISIT_ID = x_id;
6865 c_visit_rec c_Visit%ROWTYPE;
6866
6867 -- To find any task which have primary visit task id as deleted task id
6868 --CURSOR c_primary (x_visit_id IN NUMBER, x_task_id IN NUMBER) IS
6869 CURSOR c_primary (x_task_id IN NUMBER) IS
6870 SELECT Visit_Task_Id, Object_Version_Number
6871 FROM Ahl_Visit_Tasks_VL
6872 WHERE --VISIT_ID = x_visit_id AND
6873 PRIMARY_VISIT_TASK_ID = x_task_id
6874 AND STATUS_CODE <> 'DELETED';
6875 c_primary_rec c_primary%ROWTYPE;
6876
6877 -- To find any task links for a deleted task
6878 CURSOR c_links (x_id IN NUMBER) IS
6879 SELECT COUNT(*) FROM Ahl_Task_Links L ,Ahl_Visit_Tasks_B T
6880 WHERE (T.VISIT_TASK_ID = L.VISIT_TASK_ID
6881 OR T.VISIT_TASK_ID = L.PARENT_TASK_ID)
6882 AND T.VISIT_TASK_ID = x_id;
6883
6884 -- To find if WIP job is created for the Visit
6885 CURSOR c_workorders(x_task_id IN NUMBER) IS
6886 SELECT * FROM AHL_WORKORDERS
6887 WHERE VISIT_TASK_ID=x_task_id
6888 AND STATUS_CODE<>'22' AND STATUS_CODE<> '7';
6889 c_workrec c_workorders%ROWTYPE;
6890
6891 CURSOR c_SR_tasks(c_visit_id NUMBER, c_sr_id NUMBER)
6892 IS
6893 SELECT visit_task_id
6894 FROM ahl_visit_tasks_b
6895 WHERE visit_id = c_visit_id
6896 -- SKPATHAK :: Bug 9745921 :: 31-MAY-2010
6897 -- Added the below condition as the tasks fetched should not be in deleted status
6898 AND status_code <> 'DELETED'
6899 START WITH originating_task_id IS NULL
6900 AND SERVICE_REQUEST_ID = c_sr_id
6901 CONNECT BY PRIOR visit_task_id = originating_task_id
6902 order by visit_task_id desc;
6903
6904 BEGIN
6905 IF (l_log_procedure >= l_log_current_level) THEN
6906 fnd_log.string(l_log_procedure,
6907 L_DEBUG_KEY ||'.begin',
6908 'At the start of PL SQL procedure.');
6909 END IF;
6910
6911 SAVEPOINT Delete_SR_Task;
6912
6913 IF Fnd_Api.to_boolean (p_init_msg_list) THEN
6914 Fnd_Msg_Pub.initialize;
6915 END IF;
6916
6917 -- Initialize API return status to success
6918
6919 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
6920
6921 -- Standard call to check for call compatibility.
6922 IF NOT Fnd_Api.compatible_api_call(L_api_version,p_api_version,
6923 l_api_name, G_PKG_NAME)
6924 THEN
6925 RAISE Fnd_Api.g_exc_unexpected_error;
6926 END IF;
6927
6928 ------------------------Start of API Body------------------------------------
6929 IF (l_log_statement >= l_log_current_level) THEN
6930 fnd_log.string(l_log_statement,
6931 L_DEBUG_KEY,
6932 ':Task Id' || p_visit_task_ID);
6933 END IF;
6934
6935 -- To check if the input taskid exists in task entity.
6936 OPEN c_Task(p_Visit_Task_ID);
6937 FETCH c_Task INTO c_task_rec;
6938
6939 IF c_Task%NOTFOUND THEN
6940 CLOSE c_Task;
6941
6942 IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.g_msg_lvl_error)
6943 THEN
6944 Fnd_Message.set_name('AHL', 'AHL_API_RECORD_NOT_FOUND');
6945 Fnd_Msg_Pub.ADD;
6946 END IF;
6947 RAISE Fnd_Api.g_exc_error;
6948 ELSE
6949 l_orgin_id :=c_task_rec.ORIGINATING_TASK_ID;
6950 l_cost_id :=c_task_rec.cost_parent_id;
6951 l_visit_id :=c_task_rec.visit_id;
6952 l_mr_id :=c_task_rec.MR_ID;
6953 l_act_price :=c_task_rec.actual_price;
6954 l_est_price :=c_task_rec.estimated_price;
6955
6956 CLOSE c_Task;
6957
6958 -- To find the visit related information
6959 OPEN c_Visit(c_task_rec.visit_id);
6960 FETCH c_Visit INTO c_visit_rec;
6961 CLOSE c_Visit;
6962
6963 IF c_task_rec.service_request_id IS NOT NULL THEN
6964
6965 OPEN c_SR_tasks(c_task_rec.visit_id,c_task_rec.service_request_id);
6966 LOOP
6967 FETCH c_SR_tasks INTO l_task_id;
6968 EXIT WHEN c_SR_tasks%NOTFOUND;
6969
6970 OPEN c_workorders(l_task_id);
6971 FETCH c_workorders INTO c_workrec;
6972
6973 IF C_WORKORDERS%FOUND THEN
6974 IF (l_log_statement >= l_log_current_level) THEN
6975 fnd_log.string(l_log_statement,
6976 L_DEBUG_KEY,
6977 'Check Workorder Status = ' || c_workrec.status_code);
6978 END IF;
6979 IF c_workrec.status_code<>'17'
6980 THEN
6981 -- ADD THIS MESSAGE TO SEED115
6982 Fnd_Message.set_name ('AHL', 'AHL_VWP_TSK_CANNOT_DEL');
6983 FND_MESSAGE.SET_TOKEN('Task_Number',c_task_rec.visit_task_number);
6984 Fnd_Msg_Pub.ADD;
6985 CLOSE c_workorders;
6986 CLOSE c_SR_tasks;
6987 RAISE fnd_Api.g_exc_error;
6988 -- IF STATUS IS NOT DRAFT RAISE ERROR.
6989 ELSIF c_workrec.status_code='17'
6990 THEN
6991
6992 l_workorder_present :='Y';
6993 l_workorder_rec.workorder_id:=c_workrec.workorder_id;
6994 l_workorder_rec.visit_task_id:=l_task_id;
6995 Get_WorkOrder_Attribs
6996 (
6997 p_x_prd_workorder_rec =>l_workorder_rec
6998 );
6999
7000 l_msg_count := FND_MSG_PUB.count_msg;
7001
7002 IF l_msg_count > 0 THEN
7003 CLOSE c_workorders;
7004 CLOSE c_SR_tasks;
7005 x_msg_count := l_msg_count;
7006 x_return_status := FND_API.G_RET_STS_ERROR;
7007 RAISE FND_API.G_EXC_ERROR;
7008 END IF;
7009 l_workorder_rec.wip_entity_id := null;
7010 l_workorder_rec.STATUS_CODE:='22'; --Deleted Status Refer DLD to Verify.
7011
7012 -- SKPATHAK :: 18-JUL-2011 :: VWPE 12730539
7013 -- Rather than calling update_job, call cancel_visit_jobs
7014 IF (l_log_statement >= l_log_current_level)THEN
7015 fnd_log.string(l_log_statement,
7016 L_DEBUG_KEY,
7017 'Before Calling AHL_PRD_WORKORDER_PVT.cancel_visit_jobs. Visit Id: '||c_visit_rec.visit_id||',p_unit_effectivity_id: '||c_task_rec.unit_effectivity_id||', p_workorder_id: '||c_workrec.workorder_id);
7018 END IF;
7019
7020 /*AHL_PRD_WORKORDER_PVT.update_job
7021 (
7022 p_api_version =>1.0,
7023 p_init_msg_list =>fnd_api.g_false,
7024 p_commit =>fnd_api.g_false,
7025 p_validation_level =>p_validation_level,
7026 p_default =>fnd_api.g_false,
7027 p_module_type =>NULL,
7028
7029 x_return_status =>x_return_status,
7030 x_msg_count =>x_msg_count,
7031 x_msg_data =>x_msg_data,
7032
7033 p_wip_load_flag =>'Y',
7034 p_x_prd_workorder_rec =>l_workorder_rec,
7035 p_x_prd_workoper_tbl =>l_workoper_tbl
7036 );
7037
7038 IF (l_log_statement >= l_log_current_level) THEN
7039 fnd_log.string(l_log_statement,
7040 L_DEBUG_KEY,
7041 'After Calling AHL_PRD_WORKORDER_PVT.update_job, Return Status = ' || x_return_status);
7042 END IF;*/
7043
7044 AHL_PRD_WORKORDER_PVT.cancel_visit_jobs
7045 (
7046 p_api_version =>1.0,
7047 p_init_msg_list =>fnd_api.g_false,
7048 p_commit =>fnd_api.g_false,
7049 p_validation_level =>p_validation_level,
7050 p_default =>fnd_api.g_false,
7051 p_module_type =>NULL,
7052 x_return_status =>l_return_status,
7053 x_msg_count =>l_msg_count,
7054 x_msg_data =>l_msg_data,
7055 p_visit_id =>c_task_rec.visit_id,
7056 p_unit_effectivity_id =>c_task_rec.unit_effectivity_id,
7057 p_workorder_id =>NULL
7058 );
7059
7060 IF (l_log_statement >= l_log_current_level)THEN
7061 fnd_log.string(l_log_statement,
7062 L_DEBUG_KEY,
7063 'After Calling AHL_PRD_WORKORDER_PVT.cancel_visit_jobs, Return Status = ' || l_return_status );
7064 END IF;
7065
7066 l_msg_count := FND_MSG_PUB.count_msg;
7067 IF l_msg_count > 0 OR NVL(x_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
7068 CLOSE c_workorders;
7069 CLOSE c_SR_tasks;
7070 x_msg_count := l_msg_count;
7071 x_return_status := FND_API.G_RET_STS_ERROR;
7072 RAISE FND_API.G_EXC_ERROR;
7073 END IF;
7074
7075 END IF; -- End of If c_workrec.status_code<>'17' check
7076
7077 END IF; -- End of if c_workorders%found check
7078
7079 CLOSE c_workorders;
7080
7081 IF (l_log_statement >= l_log_current_level) THEN
7082 fnd_log.string(l_log_statement,
7083 L_DEBUG_KEY,
7084 ' Calling Update_Cost_Origin_Task, task id : '||l_task_ID );
7085 END IF;
7086
7087 -- To update all tasks which have the deleting task as cost or originating task
7088 AHL_VWP_RULES_PVT.Update_Cost_Origin_Task
7089 (
7090 p_visit_task_id =>l_task_ID,
7091 x_return_status =>x_return_status
7092 );
7093
7094 IF FND_MSG_PUB.count_msg>0 or NVL(x_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
7095 CLOSE c_SR_tasks;
7096 RAISE Fnd_Api.g_exc_error;
7097 END IF;
7098
7099 IF (l_log_statement >= l_log_current_level) THEN
7100 fnd_log.string(l_log_statement,
7101 L_DEBUG_KEY,
7102 'Check for Primary Visit');
7103 END IF;
7104
7105 --OPEN c_primary (l_visit_id, l_task_id);
7106 IF(c_visit_rec.ASSO_PRIMARY_VISIT_ID is null) THEN
7107 OPEN c_primary (l_task_id);
7108 LOOP
7109 FETCH c_primary INTO c_primary_rec;
7110 EXIT WHEN c_primary%NOTFOUND;
7111 IF c_primary_rec.visit_task_id IS NOT NULL
7112 THEN
7113 UPDATE AHL_VISIT_TASKS_B
7114 SET PRIMARY_VISIT_TASK_ID = NULL,
7115 OBJECT_VERSION_NUMBER = c_primary_rec.object_version_number + 1
7116 WHERE --VISIT_ID = l_visit_id AND
7117 VISIT_TASK_ID = c_primary_rec.visit_task_id;
7118 END IF;
7119 END LOOP;
7120 CLOSE c_primary;
7121 END IF;
7122
7123 IF c_task_rec.PROJECT_TASK_ID IS NOT NULL THEN
7124 IF (l_log_statement >= l_log_current_level) THEN
7125 fnd_log.string(l_log_statement,
7126 L_DEBUG_KEY,
7127 'Before Calling AHL_VWP_PROJ_PROD_PVT.Delete_Task_to_Project');
7128 END IF;
7129
7130 AHL_VWP_PROJ_PROD_PVT.Delete_Task_to_Project(
7131 /* p_api_version => l_api_version,
7132 p_init_msg_list => p_init_msg_list,
7133 p_commit => Fnd_Api.g_false,
7134 p_validation_level => p_validation_level,
7135 p_module_type => p_module_type,*/
7136 p_visit_task_id => l_task_id,
7137 x_return_status => l_return_status);
7138 /*x_msg_count => x_msg_count,
7139 x_msg_data => x_msg_data);*/
7140
7141 IF (l_log_statement >= l_log_current_level) THEN
7142 fnd_log.string(l_log_statement,
7143 L_DEBUG_KEY,
7144 'After Calling AHL_VWP_PROJ_PROD_PVT.Delete_Task_to_Project, Return Status = ' || l_return_status);
7145 END IF;
7146
7147 IF (fnd_msg_pub.count_msg > 0) OR
7148 NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
7149 CLOSE c_SR_tasks;
7150 RAISE Fnd_Api.g_exc_error;
7151 END IF;
7152
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 'Before deleting from AHL_TASK_LINKS table');
7159 END IF;
7160
7161 OPEN c_links (l_task_id);
7162 FETCH c_links INTO l_count;
7163 IF l_count > 0 THEN
7164 DELETE Ahl_Task_Links
7165 WHERE VISIT_TASK_ID = l_task_id
7166 OR PARENT_TASK_ID = l_task_id;
7167 END IF;
7168 CLOSE c_links;
7169
7170 IF (l_log_statement >= l_log_current_level) THEN
7171 fnd_log.string(l_log_statement,
7172 L_DEBUG_KEY,
7173 'Before updating task status to DELETED');
7174 END IF;
7175
7176 --IF NVL(l_workorder_present,'X') ='Y' THEN
7177 IF c_task_rec.service_request_id IS NOT NULL THEN
7178 UPDATE AHL_VISIT_TASKS_B
7179 SET STATUS_CODE='DELETED',UNIT_EFFECTIVITY_ID=NULL,
7180 OBJECT_VERSION_NUMBER=OBJECT_VERSION_NUMBER+1
7181 WHERE VISIT_TASK_ID=l_task_id;
7182
7183 --salogan added the following code for supplier warranty starts
7184 Get_Entl_rec_for_Delete(
7185 p_task_id => l_task_id,
7186 x_warranty_entl_tbl => l_entl_rec_tbl);
7187
7188 IF (l_log_statement >= l_log_current_level) THEN
7189 fnd_log.string(l_log_statement,
7190 L_DEBUG_KEY,
7191 'Before calling AHL_WARRANTY_ENTL_PVT.Process_Warranty_Entitlements.');
7192 END IF;
7193
7194 --Not passing p_commit the main API commits the data at the end
7195 AHL_WARRANTY_ENTL_PVT.Process_Warranty_Entitlements(
7196 p_api_version => p_api_version,
7197 p_validation_level => p_validation_level,
7198 p_module_type => p_module_type,
7199 p_user_role => AHL_WARRANTY_ENTL_PVT.G_USER_PLANNER,
7200 p_x_warranty_entl_tbl => l_entl_rec_tbl,
7201 x_return_status => l_return_status,
7202 x_msg_count => l_msg_count,
7203 x_msg_data => l_msg_data);
7204
7205 IF (l_log_statement >= l_log_current_level) THEN
7206 fnd_log.string(l_log_statement,
7207 L_DEBUG_KEY,
7208 'After calling AHL_WARRANTY_ENTL_PVT.Process_Warranty_Entitlements. Return Status = ' ||
7209 l_return_status);
7210 END IF;
7211
7212 l_msg_count := Fnd_Msg_Pub.count_msg;
7213 IF l_msg_count > 0 OR l_return_status <> Fnd_Api.g_ret_sts_success THEN
7214 x_msg_count := l_msg_count;
7215 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
7216 RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
7217 END IF;
7218 -- salogan added for supplier warranty ends
7219 ELSE
7220 DELETE FROM Ahl_Visit_Tasks_TL
7221 WHERE Visit_Task_ID = l_task_id;
7222
7223 IF (SQL%NOTFOUND) THEN
7224 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_error)
7225 THEN
7226 Fnd_Message.set_name ('AHL', 'AHL_API_RECORD_NOT_FOUND');
7227 Fnd_Msg_Pub.ADD;
7228 END IF;
7229 CLOSE c_SR_tasks;
7230 RAISE Fnd_Api.g_exc_error;
7231 END IF;
7232
7233 -- Delete task base (AHL_VISIT_TASKS_B) table data
7234
7235 IF (l_log_statement >= l_log_current_level) THEN
7236 fnd_log.string(l_log_statement,
7237 L_DEBUG_KEY,
7238 ':Delete from base task table');
7239 END IF;
7240
7241 DELETE FROM Ahl_Visit_Tasks_B
7242 WHERE Visit_Task_ID = l_task_id;
7243
7244 IF (SQL%NOTFOUND) THEN
7245 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_error)
7246 THEN
7247 Fnd_Message.set_name ('AHL', 'AHL_API_RECORD_NOT_FOUND');
7248 Fnd_Msg_Pub.ADD;
7249 END IF;
7250 CLOSE c_SR_tasks;
7251 RAISE Fnd_Api.g_exc_error;
7252 END IF;
7253 END IF;
7254
7255 IF NVL(c_visit_rec.actual_price,0) <> 0
7256 OR NVL(c_visit_rec.estimated_price,0) <> 0
7257 THEN
7258
7259 IF (l_log_statement >= l_log_current_level) THEN
7260 fnd_log.string(l_log_statement,
7261 L_DEBUG_KEY,
7262 'Before updating visit price by deducting task price');
7263 END IF;
7264
7265 l_act_price:= NVL(c_visit_rec.actual_price,0) - NVL(l_act_price,0);
7266 l_est_price:= NVL(c_visit_rec.estimated_price,0) - NVL(l_est_price,0);
7267
7268 UPDATE ahl_visits_b
7269 SET actual_price=l_act_price,
7270 estimated_price=l_est_price,
7271 OBJECT_VERSION_NUMBER=OBJECT_VERSION_NUMBER+1
7272 WHERE visit_id=l_visit_id;
7273 END IF;
7274
7275 END LOOP; -- End of c_SR_task Loop
7276 CLOSE c_SR_tasks;
7277
7278 END IF; --End of if c_task_rec.service_request is not null check
7279
7280 END IF; -- Task Null Check
7281
7282 IF (l_log_procedure >= l_log_current_level) THEN
7283 fnd_log.string(l_log_procedure,
7284 L_DEBUG_KEY ||'.end',
7285 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
7286 END IF;
7287 EXCEPTION
7288 WHEN Fnd_Api.g_exc_error THEN
7289 ROLLBACK TO Delete_SR_Task;
7290 x_return_status := Fnd_Api.g_ret_sts_error;
7291 Fnd_Msg_Pub.count_and_get (
7292 p_encoded => Fnd_Api.g_false,
7293 p_count => x_msg_count,
7294 p_data => x_msg_data
7295 );
7296 WHEN Fnd_Api.g_exc_unexpected_error THEN
7297 ROLLBACK TO Delete_SR_Task;
7298 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
7299 Fnd_Msg_Pub.count_and_get (
7300 p_encoded => Fnd_Api.g_false,
7301 p_count => x_msg_count,
7302 p_data => x_msg_data
7303 );
7304 WHEN OTHERS THEN
7305 ROLLBACK TO Delete_SR_Task;
7306 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
7307 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
7308 THEN
7309 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
7310 END IF;
7311 Fnd_Msg_Pub.count_and_get (
7312 p_encoded => Fnd_Api.g_false,
7313 p_count => x_msg_count,
7314 p_data => x_msg_data
7315 );
7316 END Delete_SR_Task;
7317
7318 --------------------------------------------------------------------
7319 -- PROCEDURE
7320 -- Delete_Summary_Task
7321 --
7322 -- PURPOSE
7323 -- To delete Summary tasks for the Maintenace visit.
7324 --------------------------------------------------------------------
7325 PROCEDURE Delete_Summary_Task (
7326 p_api_version IN NUMBER,
7327 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
7328 p_commit IN VARCHAR2 := Fnd_Api.g_false,
7329 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
7330 p_module_type IN VARCHAR2:= 'JSP',
7331 p_visit_task_ID IN NUMBER,
7332 x_return_status OUT NOCOPY VARCHAR2,
7333 x_msg_count OUT NOCOPY NUMBER,
7334 x_msg_data OUT NOCOPY VARCHAR2
7335 )
7336 IS
7337 l_api_version CONSTANT NUMBER := 1.0;
7338 l_api_name CONSTANT VARCHAR2(30) := 'Delete Summary Task';
7339 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
7340
7341 -- local variables defined for the procedure
7342 l_origin_id NUMBER;
7343 l_visit_id NUMBER;
7344 l_mr_id NUMBER;
7345 l_task_id NUMBER;
7346 l_cost_id NUMBER;
7347 l_est_price NUMBER;
7348 l_act_price NUMBER;
7349 l_count NUMBER;
7350 l_msg_count NUMBER;
7351 l_msg_data VARCHAR2(2000);
7352 l_dummy VARCHAR2(1);
7353
7354 l_workorder_rec AHL_PRD_WORKORDER_PVT.PRD_WORKORDER_REC;
7355 l_workoper_tbl AHL_PRD_WORKORDER_PVT.PRD_WORKOPER_TBL;
7356
7357 l_return_status VARCHAR2(1);
7358 l_workorder_present VARCHAR2(1) := 'N';
7359 l_planned_order_flag VARCHAR2(1);
7360 l_task_type VARCHAR2(80);
7361 l_unit_effectivity_id NUMBER;
7362 l_entl_rec_tbl AHL_WARRANTY_ENTL_PVT.Warranty_Entl_Tbl_Type; --salogan added for supplier warranty
7363
7364 -- To find all tasks related information
7365 CURSOR c_Task (x_id IN NUMBER) IS
7366 SELECT *
7367 FROM Ahl_Visit_Tasks_VL
7368 WHERE Visit_Task_ID = x_id;
7369 c_task_rec c_Task%ROWTYPE;
7370 l_task_rec c_Task%ROWTYPE;
7371 -- To find visit related information
7372 CURSOR c_Visit (x_id IN NUMBER) IS
7373 SELECT *
7374 FROM Ahl_Visits_VL
7375 WHERE VISIT_ID = x_id;
7376 c_visit_rec c_Visit%ROWTYPE;
7377
7378 -- To find any task which have primary visit task id as deleted task id
7379 --CURSOR c_primary (x_visit_id IN NUMBER, x_task_id IN NUMBER) IS
7380 -- SKPATHAK :: Bug 10414592 :: 21-DEC-2010
7381 -- Added Planned_Flag to this cursor to denote if the simulated visit's task belongs to a planned MR or not
7382 CURSOR c_primary (x_task_id IN NUMBER) IS
7383 SELECT task.Visit_Task_Id, task.object_version_number, task.unit_effectivity_id,
7384 NVL((SELECT distinct 'Y' FROM ahl_visit_tasks_b avt
7385 WHERE avt.unit_effectivity_id = task.unit_effectivity_id
7386 AND avt.task_type_code = 'PLANNED'), 'N') Planned_Flag
7387 FROM Ahl_Visit_Tasks_B task
7388 WHERE task.PRIMARY_VISIT_TASK_ID = x_task_id
7389 AND task.STATUS_CODE <> 'DELETED';
7390 c_primary_rec c_primary%ROWTYPE;
7391
7392 -- To find any task links for a deleted task
7393 CURSOR c_links (x_id IN NUMBER) IS
7394 SELECT COUNT(*) FROM Ahl_Task_Links L ,Ahl_Visit_Tasks_B T
7395 WHERE (T.VISIT_TASK_ID = L.VISIT_TASK_ID
7396 OR T.VISIT_TASK_ID = L.PARENT_TASK_ID)
7397 AND T.VISIT_TASK_ID = x_id;
7398
7399 -- To find if WIP job is created for the Visit
7400 CURSOR c_workorders(x_task_id IN NUMBER) IS
7401 SELECT * FROM AHL_WORKORDERS
7402 WHERE VISIT_TASK_ID=x_task_id
7403 AND STATUS_CODE <> '22' AND STATUS_CODE <> '7';
7404 c_workrec c_workorders%ROWTYPE;
7405
7406 -- yazhou 11Nov2005 starts
7407 -- Bug fix#4508169
7408
7409 --Dup-MR ER#6338208 - sowsubra
7410 CURSOR c_all_tasks(c_visit_id NUMBER, c_task_id NUMBER) IS
7411 SELECT visit_task_id
7412 FROM ahl_visit_tasks_b
7413 WHERE visit_id = c_visit_id
7414 AND STATUS_CODE <> 'DELETED'
7415 START WITH visit_task_id = c_task_id
7416 CONNECT BY PRIOR visit_task_id = originating_task_id
7417 order by visit_task_id desc;
7418
7419 -- yazhou 11Nov2005 ends
7420
7421 --Added by mpothuku on 02/03/05
7422 --To check if the unplanned tasks UE is associated with any other visits other than itself before its deletion.
7423 CURSOR check_unplanned_ue_assoc(c_ue_id IN NUMBER) IS
7424 SELECT 'X' from ahl_visit_tasks_b where unit_effectivity_id = c_ue_id and
7425 status_code <> 'DELETED';
7426 BEGIN
7427 IF (l_log_procedure >= l_log_current_level) THEN
7428 fnd_log.string(l_log_procedure,
7429 L_DEBUG_KEY ||'.begin',
7430 'At the start of PL SQL procedure.');
7431 END IF;
7432
7433 --------------------- initialize -----------------------
7434 SAVEPOINT Delete_Summary_Task;
7435 -- Check if API is called in debug mode. If yes, enable debug.
7436
7437 IF Fnd_Api.to_boolean (p_init_msg_list) THEN
7438 Fnd_Msg_Pub.initialize;
7439 END IF;
7440
7441 -- Initialize API return status to success
7442
7443 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
7444
7445 -- Standard call to check for call compatibility.
7446 IF NOT Fnd_Api.compatible_api_call(L_api_version,p_api_version,
7447 l_api_name, G_PKG_NAME)
7448 THEN
7449 RAISE Fnd_Api.g_exc_unexpected_error;
7450 END IF;
7451
7452 ------------------------Start of API Body------------------------------------
7453
7454 IF (l_log_statement >= l_log_current_level)THEN
7455 fnd_log.string(l_log_statement,
7456 L_DEBUG_KEY,
7457 ':Task Id' || p_visit_task_ID);
7458 END IF;
7459
7460 -- To check if the input taskid exists in task entity.
7461 OPEN c_Task(p_Visit_Task_Id);
7462 FETCH c_Task INTO c_task_rec;
7463
7464 IF c_Task%NOTFOUND THEN
7465 CLOSE c_Task;
7466
7467 IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.g_msg_lvl_error)
7468 THEN
7469 Fnd_Message.set_name('AHL', 'AHL_API_RECORD_NOT_FOUND');
7470 Fnd_Msg_Pub.ADD;
7471 END IF;
7472 RAISE Fnd_Api.g_exc_error;
7473
7474 END IF; -- End of if c_task%notfound then check
7475 CLOSE c_Task;
7476
7477 l_origin_id :=c_task_rec.ORIGINATING_TASK_ID;
7478 l_cost_id :=c_task_rec.cost_parent_id;
7479 l_visit_id :=c_task_rec.visit_id;
7480 l_mr_id :=c_task_rec.MR_ID;
7481 l_act_price :=c_task_rec.actual_price;
7482 l_est_price :=c_task_rec.estimated_price;
7483 l_task_id := p_Visit_Task_Id;
7484
7485 IF (l_log_statement >= l_log_current_level)THEN
7486 fnd_log.string(l_log_statement,
7487 L_DEBUG_KEY,
7488 ':Visit Id' || l_visit_id);
7489 END IF;
7490
7491 /* MANESING::Component Maintenance Planning Project, 05-Jul-2011
7492 * There is no need to consider Stage materials for Component Visits
7493 * as there won't be any Stage associated with them.
7494 */
7495 IF (AHL_CMP_UTIL_PKG.Is_Comp_Visit (l_visit_id) = 'N') THEN
7496
7497 -- SKPATHAK :: 20-JUN-2011 :: VWPE: ER:12673125 :: START
7498 -- For every MR, dis-associate the materials based on the MR Profile to the stage tasks
7499 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level) THEN
7500 fnd_log.string (fnd_log.level_statement,
7501 l_debug_key,
7502 'Before calling AHL_LTP_REQST_MATRL_PVT.Remove_Stage_Materials, c_task_rec.task_type_code= '||c_task_rec.task_type_code
7503 );
7504 END IF;
7505
7506 IF c_task_rec.task_type_code = 'SUMMARY' THEN
7507 AHL_LTP_REQST_MATRL_PVT.Remove_Stage_Materials (
7508 p_api_version => 1.0,
7509 p_init_msg_list => Fnd_Api.G_FALSE,
7510 p_commit => Fnd_Api.G_FALSE,
7511 p_validation_level => Fnd_Api.G_VALID_LEVEL_FULL,
7512 p_module_type => 'VST',
7513 p_visit_id => l_visit_id,
7514 p_mr_header_id => c_task_rec.MR_ID,
7515 p_instance_id => c_task_rec.instance_id,
7516 p_ue_id => c_task_rec.unit_effectivity_id,
7517 x_return_status => l_return_status,
7518 x_msg_count => l_msg_count,
7519 x_msg_data => l_msg_data);
7520 END IF;
7521
7522 IF (l_log_statement >= fnd_log.g_current_runtime_level) THEN
7523 fnd_log.string(fnd_log.level_statement,
7524 L_DEBUG_KEY,
7525 'After callingAHL_LTP_REQST_MATRL_PVT.Remove_Stage_Materials. l_return_status = ' || l_return_status);
7526 END IF;
7527
7528 -- Check Error Message stack.
7529 IF NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
7530 x_msg_count := l_msg_count;
7531 x_return_status := l_return_status;
7532 IF l_return_status = Fnd_Api.g_ret_sts_error THEN
7533 RAISE Fnd_Api.g_exc_error;
7534 ELSIF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
7535 RAISE Fnd_Api.g_exc_unexpected_error;
7536 END IF;
7537 END IF;
7538 -- SKPATHAK :: 20-JUN-2011 :: VWPE: ER:12673125 :: END
7539
7540 END IF; -- if AHL_CMP_UTIL_PKG.Is_Comp_Visit (l_visit_id) = 'N'
7541
7542 IF l_origin_id is not null THEN
7543 IF (l_log_statement >= l_log_current_level)THEN
7544 fnd_log.string(l_log_statement,
7545 L_DEBUG_KEY,
7546 'Before Calling Delete_Summary_Task' );
7547 END IF;
7548 Delete_Summary_Task(
7549 p_api_version =>p_api_version,
7550 p_init_msg_list =>Fnd_Api.g_false,
7551 p_commit =>Fnd_Api.g_false,
7552 p_validation_level =>Fnd_Api.g_valid_level_full,
7553 p_module_type =>NULL,
7554 p_Visit_Task_Id =>l_origin_id,
7555 x_return_status =>x_return_status,
7556 x_msg_count =>x_msg_count,
7557 x_msg_data =>x_msg_data);
7558
7559 IF (l_log_statement >= l_log_current_level)THEN
7560 fnd_log.string(l_log_statement,
7561 L_DEBUG_KEY,
7562 'After Calling Delete_Summary_Task, Return Status = ' || x_return_status);
7563 END IF;
7564
7565 IF x_return_status <> Fnd_Api.g_ret_sts_success THEN
7566 RAISE Fnd_Api.G_EXC_ERROR;
7567 END IF;
7568 Else
7569 -- To find the visit related information
7570 OPEN c_Visit(c_task_rec.visit_id);
7571 FETCH c_Visit INTO c_visit_rec;
7572 CLOSE c_Visit;
7573
7574 -- SKPATHAK :: 02-MAY-2011 :: VWPE: ER:12424063 :: Need to consider DRAFT status also
7575 IF (c_visit_rec.status_code NOT IN ('PLANNING', 'DRAFT', 'PARTIALLY RELEASED'))
7576 THEN
7577 Fnd_Message.set_name ('AHL', 'AHL_VWP_PLANNING_OPER');
7578 Fnd_Msg_Pub.ADD;
7579 RAISE fnd_Api.g_exc_error;
7580 END IF;
7581
7582 l_unit_effectivity_id := null;
7583 l_task_type := null;
7584
7585 IF c_task_rec.mr_id IS NOT NULL THEN
7586 -- yazhou 11Nov2005 starts
7587 -- Bug fix#4508169
7588 --Dup-MR ER#6338208 - sowsubra
7589 /*The cursor was fetching all the tasks, which had the same mr id. With this enhacement since
7590 we have multiple MR's associated to the same visit where each of it may either be already
7591 pushed to production or still needs to be pushed. Since the cursor returns all the tasks
7592 regardless whether or not they have been pushed to production, the cursor leads in throwing an
7593 error to the user not allowing them to delete the second occurrence of the MR which is not been
7594 pushed to production. Hence modified the cursor to take visit_id and the MR task_id that is
7595 being deleted.*/
7596
7597 OPEN c_all_tasks(c_task_rec.visit_id,p_visit_task_ID);
7598 -- yazhou 11Nov2005 ends
7599 LOOP
7600 FETCH c_all_tasks INTO l_task_id;
7601 EXIT WHEN c_all_tasks%NOTFOUND;
7602 OPEN c_workorders(l_task_id);
7603 FETCH c_workorders INTO c_workrec;
7604
7605 IF c_workorders%found THEN
7606
7607 IF (l_log_statement >= l_log_current_level)THEN
7608 fnd_log.string(l_log_statement,
7609 L_DEBUG_KEY,
7610 'Check Workorder Status = ' || c_workrec.status_code);
7611 END IF;
7612
7613 IF c_workrec.status_code<>'17'
7614 THEN
7615 -- ADD THIS MESSAGE TO SEED115
7616 Fnd_Message.set_name ('AHL', 'AHL_VWP_TSK_CANNOT_DEL');
7617 FND_MESSAGE.SET_TOKEN('Task_Number',c_task_rec.visit_task_number);
7618 Fnd_Msg_Pub.ADD;
7619 CLOSE c_workorders;
7620 CLOSE c_all_tasks;
7621 RAISE fnd_Api.g_exc_error;
7622 -- IF STATUS IS NOT DRAFT RAISE ERROR.
7623 ELSIF c_workrec.status_code='17' THEN
7624 l_workorder_present :='Y';
7625 l_workorder_rec.workorder_id:=c_workrec.workorder_id;
7626 l_workorder_rec.visit_task_id:=l_task_id;
7627 Get_WorkOrder_Attribs
7628 (
7629 p_x_prd_workorder_rec =>l_workorder_rec
7630 );
7631
7632 l_msg_count := FND_MSG_PUB.count_msg;
7633
7634 IF l_msg_count > 0 THEN
7635 x_msg_count := l_msg_count;
7636 x_return_status := FND_API.G_RET_STS_ERROR;
7637 CLOSE c_workorders;
7638 CLOSE c_all_tasks;
7639 RAISE FND_API.G_EXC_ERROR;
7640 END IF;
7641
7642 l_workorder_rec.wip_entity_id := null;
7643 l_workorder_rec.STATUS_CODE:='22'; --Deleted Status Refer DLD to Verify.
7644
7645 IF (l_log_statement >= l_log_current_level)THEN
7646 fnd_log.string(l_log_statement,
7647 L_DEBUG_KEY,
7648 'Before Calling AHL_PRD_WORKORDER_PVT.cancel_visit_jobs. Visit Id: '||c_visit_rec.visit_id||',p_unit_effectivity_id: '||c_task_rec.unit_effectivity_id||', p_workorder_id: '||c_workrec.workorder_id);
7649 END IF;
7650
7651 -- TCHIMIRA :: 01-JUL-2011 :: VWP: ER:12673125
7652 -- Commented the below call to AHL_PRD_WORKORDER_PVT.update_job as part of VWPE
7653 -- Instead call AHL_PRD_WORKORDER_PVT.Cancel_Visit_Jobs to cancel MR work orders
7654
7655 /*AHL_PRD_WORKORDER_PVT.update_job
7656 (
7657 p_api_version =>1.0,
7658 p_init_msg_list =>fnd_api.g_false,
7659 p_commit =>fnd_api.g_false,
7660 p_validation_level =>p_validation_level,
7661 p_default =>fnd_api.g_false,
7662 p_module_type =>NULL,
7663 x_return_status =>x_return_status,
7664 x_msg_count =>x_msg_count,
7665 x_msg_data =>x_msg_data,
7666 p_wip_load_flag =>'Y',
7667 p_x_prd_workorder_rec =>l_workorder_rec,
7668 p_x_prd_workoper_tbl =>l_workoper_tbl
7669 );*/
7670
7671 AHL_PRD_WORKORDER_PVT.cancel_visit_jobs
7672 (
7673 p_api_version =>1.0,
7674 p_init_msg_list =>fnd_api.g_false,
7675 p_commit =>fnd_api.g_false,
7676 p_validation_level =>p_validation_level,
7677 p_default =>fnd_api.g_false,
7678 p_module_type =>NULL,
7679 x_return_status =>l_return_status,
7680 x_msg_count =>l_msg_count,
7681 x_msg_data =>l_msg_data,
7682 p_visit_id =>c_task_rec.visit_id,
7683 p_unit_effectivity_id =>c_task_rec.unit_effectivity_id,
7684 p_workorder_id =>NULL
7685 );
7686
7687 IF (l_log_statement >= l_log_current_level)THEN
7688 fnd_log.string(l_log_statement,
7689 L_DEBUG_KEY,
7690 'After Calling AHL_PRD_WORKORDER_PVT.cancel_visit_jobs, Return Status = ' || l_return_status );
7691 END IF;
7692
7693 l_msg_count := FND_MSG_PUB.count_msg;
7694 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
7695 x_msg_count := l_msg_count;
7696 x_return_status := FND_API.G_RET_STS_ERROR;
7697 CLOSE c_workorders;
7698 CLOSE c_all_tasks;
7699 RAISE FND_API.G_EXC_ERROR;
7700 END IF;
7701 END IF; -- End of If c_workrec.status_code<>'17' check
7702 END IF; -- End of if c_workorders%found check
7703 CLOSE c_workorders;
7704
7705 IF (l_log_statement >= l_log_current_level)THEN
7706 fnd_log.string(l_log_statement,
7707 L_DEBUG_KEY,
7708 ' Calling AHL_VWP_RULES_PVT.Update_Cost_Origin_Task');
7709 END IF;
7710
7711 -- To update all tasks which have the deleting task as cost or originating task
7712 AHL_VWP_RULES_PVT.Update_Cost_Origin_Task
7713 (
7714 p_visit_task_id =>l_task_ID,
7715 x_return_status =>x_return_status
7716 );
7717
7718 IF NVL(x_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
7719 x_return_status := FND_API.G_RET_STS_ERROR;
7720 CLOSE c_all_tasks;
7721 RAISE FND_API.G_EXC_ERROR;
7722 END IF;
7723
7724 IF (l_log_statement >= l_log_current_level)THEN
7725 fnd_log.string(l_log_statement,
7726 L_DEBUG_KEY,
7727 'Check for Primary Visit');
7728 END IF;
7729
7730 /* mpothuku changed on 02/08/05 */
7731 --OPEN c_primary (l_visit_id, l_task_id);
7732 IF(c_visit_rec.ASSO_PRIMARY_VISIT_ID is null) THEN
7733 OPEN c_primary (l_task_id);
7734 LOOP
7735 FETCH c_primary INTO c_primary_rec;
7736 EXIT WHEN c_primary%NOTFOUND;
7737 IF c_primary_rec.visit_task_id IS NOT NULL
7738 THEN
7739 -- SKPATHAK :: Bug 10414592 :: 21-DEC-2010
7740 -- If the simulated visit's task belongs to a planned requirement, dis-associate all such tasks' UE and set the status as 'DELETED'
7741 IF (c_primary_rec.Planned_Flag = 'Y') THEN
7742 UPDATE AHL_VISIT_TASKS_B
7743 SET PRIMARY_VISIT_TASK_ID = NULL,
7744 OBJECT_VERSION_NUMBER = OBJECT_VERSION_NUMBER + 1,
7745 UNIT_EFFECTIVITY_ID = NULL,
7746 STATUS_CODE = 'DELETED'
7747 WHERE UNIT_EFFECTIVITY_ID = c_primary_rec.UNIT_EFFECTIVITY_ID
7748 AND PRIMARY_VISIT_TASK_ID IS NOT NULL;
7749 ELSE
7750 UPDATE AHL_VISIT_TASKS_B
7751 SET PRIMARY_VISIT_TASK_ID = NULL,
7752 OBJECT_VERSION_NUMBER = OBJECT_VERSION_NUMBER + 1
7753 WHERE VISIT_TASK_ID = c_primary_rec.visit_task_id
7754 AND PRIMARY_VISIT_TASK_ID IS NOT NULL;
7755 END IF; -- else of Planned_Flag = 'Y'
7756 END IF; -- visit_task_id IS NOT NULL
7757 END LOOP;
7758 CLOSE c_primary;
7759 END IF;
7760
7761 IF c_task_rec.PROJECT_TASK_ID IS NOT NULL THEN
7762
7763 IF (l_log_statement >= l_log_current_level)THEN
7764 fnd_log.string(l_log_statement,
7765 L_DEBUG_KEY,
7766 ' Calling AHL_VWP_PROJ_PROD_PVT.Delete_Task_to_Project API');
7767 END IF;
7768
7769 AHL_VWP_PROJ_PROD_PVT.Delete_Task_to_Project(
7770 /* p_api_version => l_api_version,
7771 p_init_msg_list => p_init_msg_list,
7772 p_commit => Fnd_Api.g_false,
7773 p_validation_level => p_validation_level,
7774 p_module_type => p_module_type,*/
7775 p_visit_task_id => l_task_id,
7776 x_return_status => l_return_status);
7777 /* x_msg_count => x_msg_count,
7778 x_msg_data => x_msg_data);*/
7779
7780 IF (fnd_msg_pub.count_msg > 0) OR NVL(x_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
7781 x_return_status := FND_API.G_RET_STS_ERROR;
7782 CLOSE c_all_tasks;
7783 RAISE FND_API.G_EXC_ERROR;
7784 END IF;
7785
7786 END IF;
7787
7788 IF (l_log_statement >= l_log_current_level)THEN
7789 fnd_log.string(l_log_statement,
7790 L_DEBUG_KEY,
7791 'Before deleting from AHL_TASK_LINKS table');
7792 END IF;
7793
7794 OPEN c_links (l_task_id);
7795 FETCH c_links INTO l_count;
7796 IF l_count > 0 THEN
7797 DELETE Ahl_Task_Links
7798 WHERE VISIT_TASK_ID = l_task_id
7799 OR PARENT_TASK_ID = l_task_id;
7800 END IF;
7801 CLOSE c_links;
7802
7803 IF (l_log_statement >= l_log_current_level)THEN
7804 fnd_log.string(l_log_statement,
7805 L_DEBUG_KEY,
7806 'Before updating task status to DELETED');
7807 END IF;
7808
7809 --IF NVL(l_workorder_present,'X') ='Y' THEN
7810 IF c_task_rec.mr_id IS NOT NULL OR c_task_rec.service_request_id IS NOT NULL THEN
7811 /* Change by mpothuku on 02/03/05 to delete the unit effectivities for Unplanned tasks after removing the association */
7812 IF (l_task_type IS NULL) THEN
7813 OPEN c_task(l_task_id);
7814 FETCH c_task INTO l_task_rec;
7815 CLOSE c_task;
7816 IF(l_task_rec.TASK_TYPE_CODE <> 'SUMMARY') THEN
7817 /* Find out if the UE is associated with any other Active Visits
7818 Ideally if any are found they should be Simulation Visits only */
7819 l_task_type := l_task_rec.TASK_TYPE_CODE;
7820 l_unit_effectivity_id := l_task_rec.UNIT_EFFECTIVITY_ID;
7821 END IF;
7822 END IF;
7823 UPDATE AHL_VISIT_TASKS_B
7824 SET STATUS_CODE='DELETED',UNIT_EFFECTIVITY_ID=NULL,
7825 OBJECT_VERSION_NUMBER=OBJECT_VERSION_NUMBER+1
7826 WHERE VISIT_TASK_ID=l_task_id;
7827
7828 --salogan added the following code for supplier warranty starts
7829 Get_Entl_rec_for_Delete(
7830 p_task_id => l_task_id,
7831 x_warranty_entl_tbl => l_entl_rec_tbl);
7832
7833 IF (l_log_statement >= l_log_current_level) THEN
7834 fnd_log.string(l_log_statement,
7835 L_DEBUG_KEY,
7836 'Before calling AHL_WARRANTY_ENTL_PVT.Process_Warranty_Entitlements.');
7837 END IF;
7838
7839 --Not passing p_commit the main API commits the data at the end
7840 AHL_WARRANTY_ENTL_PVT.Process_Warranty_Entitlements(
7841 p_api_version => p_api_version,
7842 p_validation_level => p_validation_level,
7843 p_module_type => p_module_type,
7844 p_user_role => AHL_WARRANTY_ENTL_PVT.G_USER_PLANNER,
7845 p_x_warranty_entl_tbl => l_entl_rec_tbl,
7846 x_return_status => l_return_status,
7847 x_msg_count => l_msg_count,
7848 x_msg_data => l_msg_data);
7849
7850 IF (l_log_statement >= l_log_current_level) THEN
7851 fnd_log.string(l_log_statement,
7852 L_DEBUG_KEY,
7853 'After calling AHL_WARRANTY_ENTL_PVT.Process_Warranty_Entitlements. Return Status = ' ||
7854 l_return_status);
7855 END IF;
7856
7857 l_msg_count := Fnd_Msg_Pub.count_msg;
7858 IF l_msg_count > 0 OR l_return_status <> Fnd_Api.g_ret_sts_success THEN
7859 x_msg_count := l_msg_count;
7860 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
7861 RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
7862 END IF;
7863 -- salogan added for supplier warranty ends
7864 ELSE
7865
7866 IF (l_log_statement >= l_log_current_level)THEN
7867 fnd_log.string(l_log_statement,
7868 L_DEBUG_KEY,
7869 'Before DELETE');
7870 END IF;
7871 DELETE FROM Ahl_Visit_Tasks_TL WHERE Visit_Task_ID = l_task_id;
7872 IF (SQL%NOTFOUND) THEN
7873 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_error)
7874 THEN
7875 Fnd_Message.set_name ('AHL', 'AHL_API_RECORD_NOT_FOUND');
7876 Fnd_Msg_Pub.ADD;
7877 END IF;
7878 CLOSE c_all_tasks;
7879 RAISE Fnd_Api.g_exc_error;
7880 END IF;
7881
7882 -- Delete task base (AHL_VISIT_TASKS_B) table data
7883 IF (l_log_statement >= l_log_current_level)THEN
7884 fnd_log.string(l_log_statement,
7885 L_DEBUG_KEY,
7886 ':Delete from base task table');
7887 END IF;
7888
7889 DELETE FROM Ahl_Visit_Tasks_B
7890 WHERE Visit_Task_ID = l_task_id;
7891
7892 IF (SQL%NOTFOUND) THEN
7893 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_error)
7894 THEN
7895 Fnd_Message.set_name ('AHL', 'AHL_API_RECORD_NOT_FOUND');
7896 Fnd_Msg_Pub.ADD;
7897 END IF;
7898 CLOSE c_all_tasks;
7899 RAISE Fnd_Api.g_exc_error;
7900 END IF;
7901 END IF;
7902
7903 IF NVL(c_visit_rec.actual_price,0) <> 0
7904 OR NVL(c_visit_rec.estimated_price,0) <> 0
7905 THEN
7906
7907 IF (l_log_statement >= l_log_current_level)THEN
7908 fnd_log.string(l_log_statement,
7909 L_DEBUG_KEY,
7910 'Before updating visit price by deducting task price');
7911 END IF;
7912
7913 l_act_price:= NVL(c_visit_rec.actual_price,0) - NVL(l_act_price,0);
7914 l_est_price:= NVL(c_visit_rec.estimated_price,0) - NVL(l_est_price,0);
7915
7916 UPDATE ahl_visits_b
7917 SET actual_price=l_act_price,
7918 estimated_price=l_est_price,
7919 OBJECT_VERSION_NUMBER=OBJECT_VERSION_NUMBER+1
7920 WHERE visit_id=l_visit_id;
7921 END IF;
7922
7923 END LOOP; -- End of c_all_task Loop
7924 CLOSE c_all_tasks;
7925
7926 --Added by mpothuku on 02/07/05. After the collection of the UE, delete it.
7927 IF(l_task_type = 'UNPLANNED') THEN
7928 OPEN check_unplanned_ue_assoc(l_unit_effectivity_id);
7929 FETCH check_unplanned_ue_assoc INTO l_dummy;
7930 IF (check_unplanned_ue_assoc%NOTFOUND) THEN
7931 CLOSE check_unplanned_ue_assoc;
7932
7933 IF (l_log_statement >= l_log_current_level)THEN
7934 fnd_log.string(l_log_statement,
7935 L_DEBUG_KEY,
7936 'Before DELETE_UNIT_EFFECTIVITY');
7937 END IF;
7938
7939 AHL_UMP_UNPLANNED_PVT.DELETE_UNIT_EFFECTIVITY
7940 (
7941 P_API_VERSION => p_api_version,
7942 p_init_msg_list => FND_API.G_FALSE,
7943 p_commit => FND_API.G_FALSE,
7944
7945 X_RETURN_STATUS => l_return_status,
7946 X_MSG_COUNT => l_msg_count,
7947 X_MSG_DATA => x_msg_data,
7948 P_UNIT_EFFECTIVITY_ID => l_unit_effectivity_id
7949 );
7950 IF (l_log_statement >= l_log_current_level)THEN
7951 fnd_log.string(l_log_statement,
7952 L_DEBUG_KEY,
7953 'After DELETE_UNIT_EFFECTIVITY');
7954 END IF;
7955 IF (l_msg_count > 0) OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
7956 x_return_status := FND_API.G_RET_STS_ERROR;
7957 RAISE FND_API.G_EXC_ERROR;
7958 END IF;
7959 ELSE
7960 CLOSE check_unplanned_ue_assoc;
7961 END IF;
7962 END IF;
7963 ----------TO DELETE SR TASKS-------
7964
7965 ELSIF c_task_rec.mr_id IS NULL AND c_task_rec.unit_effectivity_id is not null
7966 THEN
7967 IF (l_log_statement >= l_log_current_level)THEN
7968 fnd_log.string(l_log_statement,
7969 L_DEBUG_KEY,
7970 'Before Delete_SR_Task');
7971 END IF;
7972 Delete_SR_Task(
7973 p_api_version => p_api_version,
7974 p_init_msg_list => p_init_msg_list,
7975 p_commit => Fnd_Api.g_false,
7976 p_validation_level => p_validation_level,
7977 p_module_type => p_module_type,
7978 p_visit_task_ID => p_visit_task_ID,
7979 x_return_status => x_return_status,
7980 x_msg_count => x_msg_count,
7981 x_msg_data => x_msg_data
7982 );
7983 IF (l_log_statement >= l_log_current_level)THEN
7984 fnd_log.string(l_log_statement,
7985 L_DEBUG_KEY,
7986 'After Delete_SR_Task');
7987 END IF;
7988 IF (fnd_msg_pub.count_msg > 0 ) THEN
7989
7990 IF (l_log_statement >= l_log_current_level)THEN
7991 fnd_log.string(l_log_statement,
7992 L_DEBUG_KEY,
7993 'Error raised in Delete_SR_Task');
7994 END IF;
7995 RAISE Fnd_Api.G_EXC_ERROR;
7996 END IF;
7997
7998 ----------TO DELETE MANUALLY CREATED SUMMARY TASKS-------
7999 ELSIF L_MR_ID IS NULL
8000 THEN
8001
8002 l_visit_id := c_task_rec.visit_id;
8003 l_task_id := p_Visit_Task_Id;
8004
8005 IF (l_log_statement >= l_log_current_level) THEN
8006 fnd_log.string(l_log_statement,
8007 L_DEBUG_KEY,
8008 'Before AHL_VWP_RULES_PVT.Update_Cost_Origin_Task Call');
8009 END IF;
8010
8011 -- To update all tasks which have the deleting task as cost or originating task
8012 AHL_VWP_RULES_PVT.Update_Cost_Origin_Task
8013 (
8014 p_visit_task_id =>l_task_ID,
8015 x_return_status =>x_return_status
8016 );
8017
8018 IF (l_log_statement >= l_log_current_level) THEN
8019 fnd_log.string(l_log_statement,
8020 L_DEBUG_KEY,
8021 'Check for primary Visit');
8022 END IF;
8023 --OPEN c_primary (l_visit_id, l_task_id);
8024 IF (c_visit_rec.ASSO_PRIMARY_VISIT_ID is null) THEN
8025 OPEN c_primary (l_task_id);
8026 LOOP
8027 FETCH c_primary INTO c_primary_rec;
8028 EXIT WHEN c_primary%NOTFOUND;
8029 IF c_primary_rec.visit_task_id IS NOT NULL THEN
8030 UPDATE AHL_VISIT_TASKS_B
8031 SET PRIMARY_VISIT_TASK_ID = NULL,
8032 OBJECT_VERSION_NUMBER = c_primary_rec.object_version_number + 1
8033 WHERE --VISIT_ID = l_visit_id AND
8034 VISIT_TASK_ID = c_primary_rec.visit_task_id;
8035 END IF;
8036 END LOOP;
8037 CLOSE c_primary;
8038 END IF;
8039 IF (l_log_statement >= l_log_current_level) THEN
8040 fnd_log.string(l_log_statement,
8041 L_DEBUG_KEY,
8042 'Before deletion from Ahl_Task_Links table');
8043 END IF;
8044 OPEN c_links (l_task_id);
8045 FETCH c_links INTO l_count;
8046 IF l_count > 0 THEN
8047 DELETE Ahl_Task_Links
8048 WHERE VISIT_TASK_ID = l_task_id
8049 OR PARENT_TASK_ID = l_task_id;
8050 END IF;
8051 CLOSE c_links;
8052
8053 IF c_task_rec.PROJECT_TASK_ID IS NOT NULL
8054 THEN
8055 IF (l_log_statement >= l_log_current_level) THEN
8056 fnd_log.string(l_log_statement,
8057 L_DEBUG_KEY,
8058 ' Calling AHL_VWP_PROJ_PROD_PVT.Delete_Task_to_Project');
8059 END IF;
8060 AHL_VWP_PROJ_PROD_PVT.Delete_Task_to_Project
8061 (
8062 /* p_api_version => l_api_version,
8063 p_init_msg_list => p_init_msg_list,
8064 p_commit => Fnd_Api.g_false,
8065 p_validation_level => p_validation_level,
8066 p_module_type => p_module_type,*/
8067 p_visit_task_id => l_task_id,
8068 x_return_status => l_return_status);
8069 /* x_msg_count => x_msg_count,
8070 x_msg_data => x_msg_data);*/
8071
8072 IF l_return_status <> Fnd_Api.g_ret_sts_success THEN
8073 x_return_status := Fnd_Api.g_ret_sts_error;
8074 RAISE Fnd_Api.G_EXC_ERROR;
8075 END IF;
8076
8077 -- Update Task status to 'DELETED'
8078 UPDATE AHL_VISIT_TASKS_B
8079 SET STATUS_CODE='DELETED',UNIT_EFFECTIVITY_ID=NULL,
8080 OBJECT_VERSION_NUMBER=OBJECT_VERSION_NUMBER+1
8081 WHERE VISIT_TASK_ID=l_task_id;
8082
8083 --salogan added the following code for supplier warranty starts
8084 Get_Entl_rec_for_Delete(
8085 p_task_id => l_task_id,
8086 x_warranty_entl_tbl => l_entl_rec_tbl);
8087
8088 IF (l_log_statement >= l_log_current_level) THEN
8089 fnd_log.string(l_log_statement,
8090 L_DEBUG_KEY,
8091 'Before calling AHL_WARRANTY_ENTL_PVT.Process_Warranty_Entitlements.');
8092 END IF;
8093
8094 --Not passing p_commit the main API commits the data at the end
8095 AHL_WARRANTY_ENTL_PVT.Process_Warranty_Entitlements(
8096 p_api_version => p_api_version,
8097 p_validation_level => p_validation_level,
8098 p_module_type => p_module_type,
8099 p_user_role => AHL_WARRANTY_ENTL_PVT.G_USER_PLANNER,
8100 p_x_warranty_entl_tbl => l_entl_rec_tbl,
8101 x_return_status => l_return_status,
8102 x_msg_count => l_msg_count,
8103 x_msg_data => l_msg_data);
8104
8105 IF (l_log_statement >= l_log_current_level) THEN
8106 fnd_log.string(l_log_statement,
8107 L_DEBUG_KEY,
8108 'After calling AHL_WARRANTY_ENTL_PVT.Process_Warranty_Entitlements. Return Status = ' ||
8109 l_return_status);
8110 END IF;
8111
8112 l_msg_count := Fnd_Msg_Pub.count_msg;
8113 IF l_msg_count > 0 OR l_return_status <> Fnd_Api.g_ret_sts_success THEN
8114 x_msg_count := l_msg_count;
8115 x_return_status := Fnd_Api.G_RET_STS_UNEXP_ERROR;
8116 RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
8117 END IF;
8118 -- salogan added for supplier warranty ends
8119 ELSE
8120
8121 DELETE FROM Ahl_Visit_Tasks_TL
8122 WHERE Visit_Task_ID = l_task_id;
8123
8124 IF (SQL%NOTFOUND) THEN
8125 Fnd_Message.set_name ('AHL', 'AHL_API_RECORD_NOT_FOUND');
8126 Fnd_Msg_Pub.ADD;
8127 RAISE Fnd_Api.g_exc_error;
8128 END IF;
8129
8130 -- Delete task base (AHL_VISIT_TASKS_B) table data
8131 IF (l_log_statement >= l_log_current_level) THEN
8132 fnd_log.string(l_log_statement,
8133 L_DEBUG_KEY,
8134 ':Delete from base task table');
8135 END IF;
8136
8137 DELETE FROM Ahl_Visit_Tasks_B
8138 WHERE Visit_Task_ID = l_task_id;
8139
8140 IF (SQL%NOTFOUND) THEN
8141 Fnd_Message.set_name ('AHL', 'AHL_API_RECORD_NOT_FOUND');
8142 Fnd_Msg_Pub.ADD;
8143 RAISE Fnd_Api.g_exc_error;
8144 END IF;
8145
8146 END IF;
8147
8148 -- Removed call to AHL_LTP_REQST_MATRL_PVT.Process_Planned_Materials
8149 -- for mannually created summary task.
8150
8151 END IF; --End of if c_task_rec.mr_id is not null check
8152 END IF; --l_origin_id is null check
8153
8154 ------------------------End of API Body------------------------------------
8155 IF Fnd_Api.to_boolean (p_commit) THEN
8156 COMMIT;
8157 END IF;
8158
8159 Fnd_Msg_Pub.count_and_get (
8160 p_encoded => Fnd_Api.g_false,
8161 p_count => x_msg_count,
8162 p_data => x_msg_data
8163 );
8164
8165 IF (l_log_procedure >= l_log_current_level) THEN
8166 fnd_log.string(l_log_procedure,
8167 L_DEBUG_KEY ||'.end',
8168 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
8169 END IF;
8170
8171 EXCEPTION
8172 WHEN Fnd_Api.g_exc_error THEN
8173 ROLLBACK TO Delete_Summary_Task;
8174 x_return_status := Fnd_Api.g_ret_sts_error;
8175 Fnd_Msg_Pub.count_and_get (
8176 p_encoded => Fnd_Api.g_false,
8177 p_count => x_msg_count,
8178 p_data => x_msg_data
8179 );
8180 WHEN Fnd_Api.g_exc_unexpected_error THEN
8181 ROLLBACK TO Delete_Summary_Task;
8182 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
8183 Fnd_Msg_Pub.count_and_get (
8184 p_encoded => Fnd_Api.g_false,
8185 p_count => x_msg_count,
8186 p_data => x_msg_data
8187 );
8188 WHEN OTHERS THEN
8189 ROLLBACK TO Delete_Summary_Task;
8190 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
8191 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
8192 THEN
8193 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
8194 END IF;
8195 Fnd_Msg_Pub.count_and_get (
8196 p_encoded => Fnd_Api.g_false,
8197 p_count => x_msg_count,
8198 p_data => x_msg_data
8199 );
8200 END Delete_Summary_Task;
8201
8202 --------------------------------------------------------------------
8203 -- PROCEDURE
8204 -- Search_Task
8205 --
8206 --------------------------------------------------------------------
8207 PROCEDURE Search_Task (
8208 p_api_version IN NUMBER,
8209 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
8210 p_commit IN VARCHAR2 := Fnd_Api.g_false,
8211 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
8212 p_module_type IN VARCHAR2 := 'JSP',
8213 p_visit_id IN NUMBER,
8214
8215 p_x_srch_task_tbl IN OUT NOCOPY Srch_Task_Tbl_Type,
8216 x_return_status OUT NOCOPY VARCHAR2,
8217 x_msg_count OUT NOCOPY NUMBER,
8218 x_msg_data OUT NOCOPY VARCHAR2
8219 )
8220 IS
8221
8222 L_API_VERSION CONSTANT NUMBER := 1.0;
8223 L_API_NAME CONSTANT VARCHAR2(30) := 'Search_Task';
8224 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
8225
8226 -- Local variables defined for the procedure
8227 l_tasks_tbl Srch_Task_Tbl_Type := p_x_srch_task_tbl;
8228 l_task_type_code VARCHAR2(80);
8229 l_msg_count NUMBER;
8230 l_count NUMBER;
8231 x NUMBER:=0;
8232 z NUMBER:=0;
8233
8234 -- To find the task's related visit information
8235 CURSOR c_visit (x_id IN NUMBER) IS
8236 SELECT * FROM AHL_VISITS_VL
8237 WHERE VISIT_ID = x_id;
8238 c_visit_rec c_visit%ROWTYPE;
8239
8240 -- To find task type code, start, end time of a task
8241 --POST 11.5.10 cxcheng change --------------
8242 CURSOR get_task_times_csr (p_task_id IN NUMBER) IS
8243 SELECT task_type_code, start_date_time, end_date_time
8244 FROM AHL_VISIT_TASKS_B
8245 WHERE VISIT_TASK_ID = p_task_id;
8246
8247 BEGIN
8248 --------------------- initialize -----------------------
8249 SAVEPOINT Search_Task;
8250
8251 IF (l_log_procedure >= l_log_current_level) THEN
8252 fnd_log.string(l_log_procedure,
8253 L_DEBUG_KEY ||'.begin',
8254 'At the start of PL SQL procedure.');
8255 END IF;
8256
8257 -- Initialize message list if p_init_msg_list is set to TRUE.
8258 IF Fnd_Api.to_boolean(p_init_msg_list)
8259 THEN
8260 Fnd_Msg_Pub.initialize;
8261 END IF;
8262
8263 -- Initialize API return status to success
8264 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
8265
8266 -- Standard call to check for call compatibility.
8267 IF NOT Fnd_Api.COMPATIBLE_API_CALL(l_api_version,
8268 p_api_version,
8269 l_api_name,G_PKG_NAME)
8270 THEN
8271 RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
8272 END IF;
8273 ---------------------------Start of Body-------------------------------------
8274 IF (l_log_statement >= l_log_current_level) THEN
8275 fnd_log.string(l_log_statement,
8276 L_DEBUG_KEY,
8277 ': Visit Id ' || p_visit_id);
8278 END IF;
8279 OPEN c_visit (p_visit_id);
8280 FETCH c_visit INTO c_visit_rec;
8281 CLOSE c_visit;
8282
8283 IF (c_visit_rec.START_DATE_TIME IS NOT NULL
8284 AND c_visit_rec.START_DATE_TIME <> Fnd_Api.G_MISS_DATE
8285 AND c_visit_rec.DEPARTMENT_ID IS NOT NULL
8286 AND c_visit_rec.DEPARTMENT_ID <> FND_API.G_MISS_NUM) THEN
8287
8288 IF l_tasks_tbl.COUNT > 0 THEN
8289 x := l_tasks_tbl.FIRST;
8290 LOOP
8291 OPEN get_task_times_csr(l_tasks_tbl(x).TASK_ID);
8292 FETCH get_task_times_csr INTO l_task_type_code,
8293 l_tasks_tbl(x).TASK_START_TIME,
8294 l_tasks_tbl(x).TASK_END_TIME ;
8295 CLOSE get_task_times_csr;
8296
8297 EXIT WHEN x = l_tasks_tbl.LAST ;
8298 x := l_tasks_tbl.NEXT(x);
8299 END LOOP;
8300 END IF;
8301 p_x_srch_task_tbl := l_tasks_tbl;
8302 ELSE
8303 IF (l_log_statement >= l_log_current_level) THEN
8304 fnd_log.string(l_log_statement,
8305 L_DEBUG_KEY,
8306 ': Either Visit Start End Time Missing' || c_visit_rec.START_DATE_TIME ||
8307 ': Or Visit Department Missing' || c_visit_rec.DEPARTMENT_ID ||
8308 ': Or Department Shift for a Dept Missing' || l_count);
8309 END IF;
8310 IF l_tasks_tbl.COUNT > 0 THEN
8311 z := l_tasks_tbl.FIRST;
8312 LOOP
8313 l_tasks_tbl(z).TASK_START_TIME := NULL;
8314 l_tasks_tbl(z).TASK_END_TIME := NULL;
8315 EXIT WHEN z = l_tasks_tbl.LAST ;
8316 z :=l_tasks_tbl.NEXT(z);
8317 END LOOP;
8318 END IF;
8319 p_x_srch_task_tbl := l_tasks_tbl;
8320 END IF;
8321
8322 IF l_tasks_tbl.COUNT > 0 THEN
8323 X := l_tasks_tbl.FIRST;
8324 LOOP
8325 IF (l_log_statement >= l_log_current_level) THEN
8326 fnd_log.string(l_log_statement,
8327 L_DEBUG_KEY,
8328 'Value of Task Id : ' || l_tasks_tbl(X).Task_Id ||
8329 'Value of Start Date : ' || TO_CHAR(l_tasks_tbl(X).TASK_START_TIME, 'MM/DD/YY HH24:MI:SS') ||
8330 'Value of End Date : ' || TO_CHAR(l_tasks_tbl(X).TASK_END_TIME, 'MM/DD/YY HH24:MI:SS'));
8331 END IF;
8332
8333 EXIT WHEN X = l_tasks_tbl.LAST ;
8334 X := l_tasks_tbl.NEXT(X);
8335 END LOOP;
8336 END IF;
8337
8338 ---------------------------End of Body---------------------------------------
8339 --Standard check to count messages
8340 l_msg_count := Fnd_Msg_Pub.count_msg;
8341
8342 IF l_msg_count > 0 THEN
8343 x_msg_count := l_msg_count;
8344 x_return_status := Fnd_Api.G_RET_STS_ERROR;
8345 RAISE Fnd_Api.G_EXC_ERROR;
8346 END IF;
8347
8348 --Standard check for commit
8349 IF Fnd_Api.TO_BOOLEAN(p_commit) THEN
8350 COMMIT;
8351 END IF;
8352
8353 IF (l_log_procedure >= l_log_current_level) THEN
8354 fnd_log.string(l_log_procedure,
8355 L_DEBUG_KEY ||'.end',
8356 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
8357 END IF;
8358
8359 EXCEPTION
8360 WHEN Fnd_Api.g_exc_error THEN
8361 ROLLBACK TO Search_Task;
8362 x_return_status := Fnd_Api.g_ret_sts_error;
8363 Fnd_Msg_Pub.count_and_get(
8364 p_encoded => Fnd_Api.g_false,
8365 p_count => x_msg_count,
8366 p_data => x_msg_data
8367 );
8368 WHEN Fnd_Api.g_exc_unexpected_error THEN
8369 ROLLBACK TO Search_Task;
8370 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
8371 Fnd_Msg_Pub.count_and_get (
8372 p_encoded => Fnd_Api.g_false,
8373 p_count => x_msg_count,
8374 p_data => x_msg_data
8375 );
8376 WHEN OTHERS THEN
8377 ROLLBACK TO Search_Task;
8378 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
8379 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
8380 THEN
8381 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
8382 END IF;
8383 Fnd_Msg_Pub.count_and_get (
8384 p_encoded => Fnd_Api.g_false,
8385 p_count => x_msg_count,
8386 p_data => x_msg_data
8387 );
8388 END Search_Task;
8389
8390 --------------------------------------------------------------------
8391 -- PROCEDURE
8392 -- Validate_Visit_Task
8393 --
8394 -- PURPOSE
8395 --
8396 --------------------------------------------------------------------
8397 PROCEDURE Validate_Visit_Task (
8398 p_api_version IN NUMBER,
8399 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
8400 p_commit IN VARCHAR2 := Fnd_Api.g_false,
8401 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
8402 p_task_rec IN AHL_VWP_RULES_PVT.Task_Rec_Type,
8403
8404 x_return_status OUT NOCOPY VARCHAR2,
8405 x_msg_count OUT NOCOPY NUMBER,
8406 x_msg_data OUT NOCOPY VARCHAR2
8407 )
8408 IS
8409 L_API_VERSION CONSTANT NUMBER := 1.0;
8410 L_API_NAME CONSTANT VARCHAR2(30) := 'Validate_Visit_Task';
8411 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
8412
8413 l_return_status VARCHAR2(1);
8414 BEGIN
8415 --------------------- initialize -----------------------
8416
8417 IF (l_log_procedure >= l_log_current_level) THEN
8418 fnd_log.string(l_log_procedure,
8419 L_DEBUG_KEY ||'.begin',
8420 'At the start of PL SQL procedure.');
8421 END IF;
8422
8423 IF Fnd_Api.to_boolean (p_init_msg_list) THEN
8424 Fnd_Msg_Pub.initialize;
8425 END IF;
8426
8427 IF NOT Fnd_Api.compatible_api_call (
8428 l_api_version,
8429 p_api_version,
8430 l_api_name,
8431 G_PKG_NAME
8432 ) THEN
8433 RAISE Fnd_Api.g_exc_unexpected_error;
8434 END IF;
8435 x_return_status := Fnd_Api.g_ret_sts_success;
8436
8437 ---------------------- validate ------------------------
8438
8439 IF (l_log_statement >= l_log_current_level) THEN
8440 fnd_log.string(l_log_statement,
8441 L_DEBUG_KEY,
8442 ':Check items1');
8443 END IF;
8444
8445 IF p_validation_level >= Jtf_Plsql_Api.g_valid_level_item THEN
8446 Check_Task_Items (
8447 p_task_rec => p_task_rec,
8448 p_validation_mode => Jtf_Plsql_Api.g_create,
8449 x_return_status => l_return_status
8450 );
8451 IF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
8452 RAISE Fnd_Api.g_exc_unexpected_error;
8453 ELSIF l_return_status = Fnd_Api.g_ret_sts_error THEN
8454 RAISE Fnd_Api.g_exc_error;
8455 END IF;
8456 END IF;
8457
8458 IF (l_log_statement >= l_log_current_level) THEN
8459 fnd_log.string(l_log_statement,
8460 L_DEBUG_KEY,
8461 ':Check items2');
8462 END IF;
8463
8464 -------------------- finish --------------------------
8465 -- Standard call to get message count and if count is 1, get message info
8466 Fnd_Msg_Pub.count_and_get (
8467 p_encoded => Fnd_Api.g_false,
8468 p_count => x_msg_count,
8469 p_data => x_msg_data
8470 );
8471
8472 IF (l_log_procedure >= l_log_current_level) THEN
8473 fnd_log.string(l_log_procedure,
8474 L_DEBUG_KEY ||'.end',
8475 'At the end of PL SQL procedure. Return Status = ' || l_return_status);
8476 END IF;
8477 EXCEPTION
8478 WHEN Fnd_Api.g_exc_error THEN
8479 x_return_status := Fnd_Api.g_ret_sts_error;
8480 Fnd_Msg_Pub.count_and_get (
8481 p_encoded => Fnd_Api.g_false,
8482 p_count => x_msg_count,
8483 p_data => x_msg_data
8484 );
8485 WHEN Fnd_Api.g_exc_unexpected_error THEN
8486 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
8487 Fnd_Msg_Pub.count_and_get (
8488 p_encoded => Fnd_Api.g_false,
8489 p_count => x_msg_count,
8490 p_data => x_msg_data
8491 );
8492 WHEN OTHERS THEN
8493 x_return_status := Fnd_Api.g_ret_sts_unexp_error;
8494 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
8495 THEN
8496 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
8497 END IF;
8498 Fnd_Msg_Pub.count_and_get (
8499 p_encoded => Fnd_Api.g_false,
8500 p_count => x_msg_count,
8501 p_data => x_msg_data
8502 );
8503 END Validate_Visit_Task;
8504
8505 ---------------------------------------------------------------------
8506 -- PROCEDURE
8507 -- Check_Task_Items
8508 --
8509 -- PURPOSE
8510 --
8511 ---------------------------------------------------------------------
8512 PROCEDURE Check_Task_Items (
8513 p_task_rec IN AHL_VWP_RULES_PVT.Task_Rec_Type,
8514 p_validation_mode IN VARCHAR2 := Jtf_Plsql_Api.g_create,
8515
8516 x_return_status OUT NOCOPY VARCHAR2
8517 )
8518 IS
8519 L_API_NAME CONSTANT VARCHAR2(30) := 'Check_Task_Items';
8520 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
8521 BEGIN
8522 --
8523 IF (l_log_procedure >= l_log_current_level) THEN
8524 fnd_log.string(l_log_procedure,
8525 L_DEBUG_KEY ||'.begin',
8526 'At the start of PL SQL procedure.');
8527 END IF;
8528 x_return_status := Fnd_Api.g_ret_sts_success;
8529 -- Validate required items.
8530
8531 IF (l_log_statement >= l_log_current_level) THEN
8532 fnd_log.string(l_log_statement,
8533 L_DEBUG_KEY,
8534 'Check_Task_Items:Before Check_Visit_Task_Req_Items');
8535 END IF;
8536
8537 Check_Visit_Task_Req_Items (
8538 p_task_rec => p_task_rec,
8539 /* Added by rnahata for Issue 105 - serial number validation should be performed only at
8540 the time of creation of tasks as once created serial number cannot be edited.*/
8541 p_validation_mode => p_validation_mode,
8542 x_return_status => x_return_status
8543 );
8544 IF x_return_status <> Fnd_Api.g_ret_sts_success THEN
8545 RETURN;
8546 END IF;
8547
8548 --
8549 -- Validate uniqueness.
8550
8551 IF (l_log_statement >= l_log_current_level) THEN
8552 fnd_log.string(l_log_statement,
8553 L_DEBUG_KEY,
8554 'Check_Task_Items:Before Check_Visit_Task_UK_Items');
8555 END IF;
8556 Check_Visit_Task_UK_Items (
8557 p_task_rec => p_task_rec,
8558 p_validation_mode => p_validation_mode,
8559 x_return_status => x_return_status
8560 );
8561
8562 IF (l_log_procedure >= l_log_current_level) THEN
8563 fnd_log.string(l_log_procedure,
8564 L_DEBUG_KEY ||'.begin',
8565 'At the end of PL SQL procedure. Return Status ' ||x_return_status);
8566 END IF;
8567
8568 END Check_Task_Items;
8569
8570 ---------------------------------------------------------------------
8571 -- PROCEDURE
8572 -- Complete_Visit_Task_Rec
8573 --
8574 -- PURPOSE
8575 --
8576 ---------------------------------------------------------------------
8577 /*
8578 PROCEDURE Complete_Visit_Task_Rec (
8579 p_task_rec IN AHL_VWP_RULES_PVT.Task_Rec_Type,
8580 x_complete_rec OUT NOCOPY AHL_VWP_RULES_PVT.Task_Rec_Type
8581 )
8582 IS
8583 CURSOR c_Visit_Task IS
8584 SELECT *
8585 FROM Ahl_Visit_Tasks_vl
8586 WHERE Visit_Task_ID = p_task_rec.Visit_Task_ID;
8587 --
8588 -- This is the only exception for using %ROWTYPE.
8589 -- We are selecting from the VL view, which may
8590 -- have some denormalized columns as compared to
8591 -- the base tables.
8592 l_task_rec c_Visit_Task%ROWTYPE;
8593 BEGIN
8594 x_complete_rec := p_task_rec;
8595 OPEN c_Visit_Task;
8596 FETCH c_Visit_Task INTO l_task_rec;
8597 IF c_Visit_Task%NOTFOUND THEN
8598 CLOSE c_Visit_Task;
8599 IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.g_msg_lvl_error) THEN
8600 Fnd_Message.set_name('AHL', 'AHL_API_RECORD_NOT_FOUND');
8601 Fnd_Msg_Pub.ADD;
8602 END IF;
8603 RAISE Fnd_Api.g_exc_error;
8604 END IF;
8605 CLOSE c_Visit_Task;
8606
8607 END Complete_Visit_Task_Rec;
8608 */
8609
8610 ---------------------------------------------------------------------
8611 -- PROCEDURE
8612 -- Check_Visit_Task_Req_Items
8613 --
8614 -- PURPOSE
8615 --
8616 ---------------------------------------------------------------------
8617 PROCEDURE Check_Visit_Task_Req_Items (
8618 p_task_rec IN AHL_VWP_RULES_PVT.Task_Rec_Type,
8619 -- Added by rnahata for Issue 105 - validation mode parameter
8620 p_validation_mode IN VARCHAR2 := Jtf_Plsql_Api.g_create,
8621 x_return_status OUT NOCOPY VARCHAR2
8622 )
8623 IS
8624 L_API_NAME CONSTANT VARCHAR2(30) := 'Check_Visit_Task_Req_Items';
8625 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
8626
8627 -- Added by rnahata for Issue 105
8628 -- To fetch if the instance is serial controlled/non-serial controlled.
8629 CURSOR c_check_inst_nonserial(c_instance_id IN NUMBER) IS
8630 SELECT 'X'
8631 FROM mtl_system_items_b mtl, csi_item_instances csi
8632 WHERE csi.instance_id = c_instance_id
8633 AND csi.inventory_item_id = mtl.inventory_item_id
8634 AND NVL(csi.inv_organization_id, csi.inv_master_organization_id) = mtl.organization_id
8635 AND mtl.serial_number_control_code = 1;
8636
8637 l_serial_ctrl VARCHAR2(2) := NULL;
8638 BEGIN
8639
8640 IF (l_log_procedure >= l_log_current_level) THEN
8641 fnd_log.string(l_log_procedure,
8642 L_DEBUG_KEY ||'.begin',
8643 'At the start of PL SQL procedure.');
8644 END IF;
8645
8646 x_return_status := Fnd_Api.g_ret_sts_success;
8647
8648 -- TASK NAME ==== NAME
8649 IF (p_task_rec.VISIT_TASK_NAME IS NULL OR p_Task_rec.VISIT_TASK_NAME = Fnd_Api.G_MISS_CHAR) THEN
8650 Fnd_Message.set_name ('AHL', 'AHL_VWP_NAME_MISSING');
8651 Fnd_Msg_Pub.ADD;
8652 x_return_status := Fnd_Api.g_ret_sts_error;
8653 END IF;
8654
8655 IF UPPER(p_task_rec.TASK_TYPE_CODE) = 'UNASSOCIATED' THEN
8656
8657 -- ITEM ==== INVENTORY_ITEM_ID
8658 IF (p_Task_rec.item_name IS NULL OR p_Task_rec.item_name = Fnd_Api.G_MISS_CHAR ) THEN
8659 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_error) THEN
8660 Fnd_Message.set_name ('AHL', 'AHL_VWP_ITEM_MISSING');
8661 Fnd_Msg_Pub.ADD;
8662 END IF;
8663 x_return_status := Fnd_Api.g_ret_sts_error;
8664 END IF;
8665
8666 -- TASK DURATION ==== DURATION
8667 IF (p_task_rec.DURATION IS NULL OR p_Task_rec.DURATION = Fnd_Api.G_MISS_NUM) THEN
8668 Fnd_Message.set_name ('AHL', 'AHL_VWP_DURATION_MISSING');
8669 Fnd_Msg_Pub.ADD;
8670 x_return_status := Fnd_Api.g_ret_sts_error;
8671 END IF;
8672
8673 IF (p_task_rec.DURATION IS NOT NULL AND p_Task_rec.DURATION <> Fnd_Api.G_MISS_NUM) THEN
8674 IF p_task_rec.DURATION < 0 OR FLOOR(p_task_rec.DURATION) <> p_task_rec.DURATION THEN
8675 Fnd_Message.set_name ('AHL', 'AHL_VWP_ONLY_POSITIVE_VALUE');
8676 Fnd_Msg_Pub.ADD;
8677 x_return_status := Fnd_Api.g_ret_sts_error;
8678 END IF;
8679 END IF;
8680
8681 IF ( p_validation_mode = Jtf_Plsql_Api.g_create ) THEN
8682 -- Begin changes by rnahata for Issue 105
8683 -- Check if the serial number is present only for serialised instances.
8684 OPEN c_check_inst_nonserial (p_task_rec.instance_id);
8685 FETCH c_check_inst_nonserial INTO l_serial_ctrl;
8686 IF c_check_inst_nonserial%NOTFOUND THEN
8687 IF (p_Task_rec.SERIAL_NUMBER IS NULL OR p_Task_rec.SERIAL_NUMBER = Fnd_Api.G_MISS_CHAR) THEN
8688 Fnd_Message.set_name ('AHL', 'AHL_VWP_SERIAL_MISSING');
8689 Fnd_Msg_Pub.ADD;
8690 x_return_status := Fnd_Api.g_ret_sts_error;
8691 END IF;
8692 ELSE
8693 IF (p_Task_rec.SERIAL_NUMBER IS NOT NULL) THEN
8694 Fnd_Message.set_name ('AHL', 'AHL_VWP_SERIAL_NOT_NEEDED');
8695 Fnd_Msg_Pub.ADD;
8696 x_return_status := Fnd_Api.g_ret_sts_error;
8697 END IF;
8698 END IF;
8699 CLOSE c_check_inst_nonserial;
8700 -- End changes by rnahata for Issue 105
8701 END IF;
8702
8703 END IF;
8704
8705 IF (p_task_rec.START_FROM_HOUR IS NOT NULL AND p_Task_rec.START_FROM_HOUR <> Fnd_Api.G_MISS_NUM) THEN
8706 IF p_task_rec.START_FROM_HOUR < 0 OR FLOOR(p_task_rec.START_FROM_HOUR) <> p_task_rec.START_FROM_HOUR THEN
8707 Fnd_Message.set_name ('AHL', 'AHL_VWP_ONLY_POSITIVE_VALUE');
8708 Fnd_Msg_Pub.ADD;
8709 x_return_status := Fnd_Api.g_ret_sts_error;
8710 END IF;
8711 END IF;
8712
8713 IF (l_log_procedure >= l_log_current_level) THEN
8714 fnd_log.string(l_log_procedure,
8715 L_DEBUG_KEY ||'.end',
8716 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
8717 END IF;
8718 END Check_Visit_Task_Req_Items;
8719
8720 ---------------------------------------------------------------------
8721 -- PROCEDURE
8722 -- Check_Visit_Task_UK_Items
8723 --
8724 -- PURPOSE
8725 --
8726 ---------------------------------------------------------------------
8727 PROCEDURE Check_Visit_Task_UK_Items (
8728 p_task_rec IN AHL_VWP_RULES_PVT.Task_Rec_Type,
8729 p_validation_mode IN VARCHAR2 := Jtf_Plsql_Api.g_create,
8730 x_return_status OUT NOCOPY VARCHAR2
8731 )
8732 IS
8733 l_valid_flag VARCHAR2(1);
8734 L_API_NAME CONSTANT VARCHAR2(30) := 'Check_Visit_Task_UK_Items';
8735 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
8736 BEGIN
8737 x_return_status := Fnd_Api.g_ret_sts_success;
8738
8739 IF (l_log_procedure >= l_log_current_level) THEN
8740 fnd_log.string(l_log_procedure,
8741 L_DEBUG_KEY ||'.begin',
8742 'At the start of PL SQL procedure.');
8743 END IF;
8744 --
8745 -- For Task, when ID is passed in, we need to
8746 -- check if this ID is unique.
8747
8748 IF p_validation_mode = Jtf_Plsql_Api.g_create
8749 AND p_task_rec.Visit_Task_ID IS NOT NULL
8750 THEN
8751
8752 IF (l_log_statement >= l_log_current_level) THEN
8753 fnd_log.string(l_log_statement,
8754 L_DEBUG_KEY,
8755 ': = Check_Visit_Task_UK_Items Uniqueness Of ID');
8756 END IF;
8757
8758 -- FOR CREATION
8759 IF Ahl_Utility_Pvt.check_uniqueness(
8760 'Ahl_Visit_Tasks_vl',
8761 'Visit_Task_ID = ' || p_task_rec.Visit_Task_ID
8762 ) = Fnd_Api.g_false
8763 THEN
8764 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_error) THEN
8765 Fnd_Message.set_name ('AHL', 'AHL_VWP_DUPLICATE_TASK_ID');
8766 Fnd_Msg_Pub.ADD;
8767 END IF;
8768 x_return_status := Fnd_Api.g_ret_sts_error;
8769 RETURN;
8770 END IF;
8771 END IF;
8772
8773 IF (l_log_procedure >= l_log_current_level) THEN
8774 fnd_log.string(l_log_procedure,
8775 L_DEBUG_KEY ||'.end',
8776 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
8777 END IF;
8778 END Check_Visit_Task_UK_Items;
8779
8780 --------------------------------------------------------------------
8781 -- PROCEDURE
8782 -- Create_PUP_Tasks
8783 -- PURPOSE
8784 -- To create all types of tasks i.e Unassociated/Summary/Unplanned/Planned
8785 --------------------------------------------------------------------
8786 PROCEDURE Create_PUP_Tasks (
8787 p_api_version IN NUMBER,
8788 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
8789 p_commit IN VARCHAR2 := Fnd_Api.g_false,
8790 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
8791 p_module_type IN VARCHAR2 := 'JSP',
8792 p_x_task_tbl IN OUT NOCOPY AHL_VWP_RULES_PVT.Task_Tbl_Type,
8793 x_return_status OUT NOCOPY VARCHAR2,
8794 x_msg_count OUT NOCOPY NUMBER,
8795 x_msg_data OUT NOCOPY VARCHAR2
8796 )
8797 IS
8798 -- Define local variables
8799 L_API_VERSION CONSTANT NUMBER := 1.0;
8800 L_API_NAME CONSTANT VARCHAR2(30) := 'CREATE PUP TASKS';
8801 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
8802 l_msg_count NUMBER;
8803 l_msg_data VARCHAR2(2000);
8804 l_return_status VARCHAR2(1);
8805 l_task_tbl AHL_VWP_RULES_PVT.Task_Tbl_Type := p_x_task_tbl;
8806 -- Begin changes by rnahata for Issue 105
8807 l_instance_qty NUMBER := 0;
8808 l_instance_id NUMBER := 0;
8809 l_task_type VARCHAR2(30);
8810 -- End changes by rnahata for Issue 105
8811
8812 -- SKPATHAK :: ER: 9147951 :: 11-JAN-2010
8813 -- Flag to decide if call to AHL_VWP_TIMES_PVT.Calculate_Task_Times is needed
8814 l_past_dates_flag VARCHAR(1):= 'N' ;
8815
8816 -- To find visit related information
8817 CURSOR c_visit(x_id IN NUMBER) IS
8818 SELECT * FROM AHL_VISITS_VL
8819 WHERE VISIT_ID = x_id;
8820 c_visit_rec c_visit%ROWTYPE;
8821
8822 -- Begin changes by rnahata for Issue 105
8823 --To fetch instance quantity
8824 CURSOR c_get_instance_qty(p_instance_id IN NUMBER) IS
8825 SELECT quantity FROM csi_item_instances csii
8826 WHERE instance_id = p_instance_id;
8827
8828 --To fetch instance id for 'Planned' MRs
8829 CURSOR c_get_instance_id (p_unit_effectivity IN NUMBER) IS
8830 SELECT csi_item_instance_id FROM AHL_UNIT_EFFECTIVITIES_VL
8831 WHERE UNIT_EFFECTIVITY_ID = p_unit_effectivity;
8832 -- End changes by rnahata for Issue 105
8833
8834 --Kasridha:Changes for Component Maintenance Planning Begins
8835 l_is_comp_visit VARCHAR2(1);
8836 l_rts_wip_id NUMBER;
8837 l_rpr_batch_task_id NUMBER;
8838 l_target_qty NUMBER := 0;
8839 l_summary_task_id NUMBER;
8840 l_task_data AHL_VWP_RULES_PVT.Task_Tbl_Type := p_x_task_tbl;
8841 l_repair_batch_name VARCHAR2(100);
8842 l_task_status_code VARCHAR2(30);
8843 l_is_cost_parent_setting_done BOOLEAN;
8844 l_repair_batch_task_id NUMBER;
8845
8846 --To fetch the repair batch quantity for a given instance
8847 CURSOR c_get_target_qty (p_instance_id IN NUMBER, p_org_id IN NUMBER) IS
8848 SELECT target_qty
8849 FROM ahl_visit_tasks_b
8850 WHERE repair_batch_name =
8851 AHL_CMP_UTIL_PKG.Get_Rpr_Batch_For_Inst(p_instance_id,
8852 p_org_id);
8853 -- To find the repair batch task ID for a given instance
8854 CURSOR c_get_rprbatch_task (p_instance_id IN NUMBER, p_org_id NUMBER) IS
8855 SELECT visit_task_id FROM ahl_visit_tasks_b
8856 WHERE repair_batch_name = (AHL_CMP_UTIL_PKG.Get_Rpr_Batch_For_Inst(p_instance_id,
8857 p_org_id));
8858 CURSOR c_task_dtls (p_task_id IN NUMBER) IS
8859 SELECT task_type_code, cost_parent_id, instance_id, status_code FROM ahl_visit_tasks_b
8860 WHERE visit_task_id = p_task_id;
8861
8862 -- Cursor to get the RTS workorder for a repair batch
8863 CURSOR c_get_rts_wo_id(p_rpr_batch_task_id NUMBER, p_instance_id NUMBER) IS
8864 SELECT wip_entity_id FROM ahl_workorders
8865 WHERE status_code IN ('1', '3', '6', '19', '20', '17')
8866 --unreleased, released, on-hold, parts hold and pending QA approval(open workorders)
8867 AND visit_task_id IN
8868 (SELECT vt.visit_task_id FROM AHL_VISIT_TASKS_B vt
8869 WHERE vt.cost_parent_id IS NOT NULL
8870 AND NVL(vt.return_to_supply_flag,'N') = 'Y'
8871 AND vt.instance_id = p_instance_id
8872 START WITH vt.visit_task_id = p_rpr_batch_task_id
8873 CONNECT BY PRIOR vt.visit_task_id = vt.cost_parent_id
8874 );
8875 --Cursor to get the repair batch name for a given task
8876 CURSOR c_get_repair_batch_name(p_task_id IN NUMBER) IS
8877 SELECT repair_batch_name FROM ahl_visit_tasks_b WHERE
8878 visit_task_id = p_task_id
8879 AND repair_batch_name IS NOT NULL;
8880 --Kasridha:Changes for Component Maintenance Planning Ends
8881
8882 BEGIN
8883 --------------------- initialize -----------------------
8884 SAVEPOINT Create_PUP_Tasks;
8885
8886 IF (l_log_procedure >= l_log_current_level) THEN
8887 fnd_log.string(l_log_procedure,
8888 L_DEBUG_KEY ||'.begin',
8889 'At the start of PL SQL procedure.');
8890 END IF;
8891
8892 -- Initialize message list if p_init_msg_list is set to TRUE.
8893 IF Fnd_Api.to_boolean(p_init_msg_list)
8894 THEN
8895 Fnd_Msg_Pub.initialize;
8896 END IF;
8897
8898 -- Initialize API return status to success
8899 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
8900
8901 -- Standard call to check for call compatibility.
8902 IF NOT Fnd_Api.COMPATIBLE_API_CALL(l_api_version,
8903 p_api_version,
8904 l_api_name,G_PKG_NAME)
8905 THEN
8906 RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
8907 END IF;
8908
8909 --------------------Start of API Body-----------------------------------
8910 -------------------Cursor values------------------------------------
8911 -- if table has no data then return as there is nothing to input
8912 IF l_task_tbl.count = 0
8913 THEN
8914 RETURN;
8915 END IF;
8916
8917 OPEN c_visit(l_task_tbl(1).visit_id);
8918 FETCH c_visit INTO c_visit_rec;
8919 CLOSE c_visit;
8920
8921 IF (l_log_statement >= l_log_current_level) THEN
8922 fnd_log.string(l_log_statement,
8923 L_DEBUG_KEY,
8924 ': Visit Id = ' || c_visit_rec.visit_id ||
8925 ': Status Code ' || c_visit_rec.status_code );
8926 END IF;
8927
8928 -- SKPATHAK :: 02-MAY-2011 :: VWPE: ER:12424063 :: Tasks cannot be created for locked visits
8929 -- Added for Component maintenance Planning project
8930 -- Flag to identify whether its a component visit
8931 -- Added for Bug #13737408
8932 l_is_comp_visit := AHL_CMP_UTIL_PKG.Is_Comp_Visit (c_visit_rec.visit_id);
8933 IF l_is_comp_visit = 'N' AND c_visit_rec.locked_flag = 'Y' THEN
8934 Fnd_Message.SET_NAME('AHL','AHL_VWP_LOCKED_VISIT');
8935 Fnd_Msg_Pub.ADD;
8936 RAISE Fnd_Api.G_EXC_ERROR;
8937 END IF;
8938
8939 IF c_visit_rec.status_code IN ('CLOSED','CANCELLED') THEN
8940 Fnd_Message.SET_NAME('AHL','AHL_VWP_NOT_USE_VISIT');
8941 Fnd_Msg_Pub.ADD;
8942 RAISE Fnd_Api.G_EXC_ERROR;
8943 ELSE
8944 FOR i IN p_x_task_tbl.first .. p_x_task_tbl.last
8945 LOOP
8946 -- SKPATHAK :: ER: 9147951 :: 11-JAN-2010 :: STARTS
8947 IF (l_task_tbl(i).PAST_TASK_START_DATE IS NOT NULL
8948 AND l_task_tbl(i).PAST_TASK_START_DATE <> Fnd_Api.G_MISS_DATE) THEN
8949 IF (l_task_tbl(i).PAST_TASK_END_DATE IS NULL
8950 OR l_task_tbl(i).PAST_TASK_START_DATE = Fnd_Api.G_MISS_DATE) THEN
8951 -- if start date is entered but not end date, throw error
8952 Fnd_Message.SET_NAME('AHL','AHL_VWP_PAST_TASK_DATE_MAND');
8953 Fnd_Msg_Pub.ADD;
8954 RAISE FND_API.G_EXC_ERROR;
8955 END IF;
8956 -- If both past task start and end dates are non-null
8957 l_past_dates_flag := 'Y';
8958 IF (l_task_tbl(i).PAST_TASK_START_DATE >= SYSDATE) THEN
8959 -- Throw error if start date is not in past
8960 Fnd_Message.SET_NAME('AHL','AHL_VWP_TASK_PAST_ST_DATE_INV');
8961 Fnd_Msg_Pub.ADD;
8962 RAISE FND_API.G_EXC_ERROR;
8963 END IF;
8964 IF (l_task_tbl(i).PAST_TASK_START_DATE < NVL(c_visit_rec.START_DATE_TIME, l_task_tbl(i).PAST_TASK_START_DATE)) THEN
8965 -- Throw error if past task start date is before the visit start date
8966 Fnd_Message.SET_NAME('AHL','AHL_VWP_TASK_START_DATE_INVLD');
8967 Fnd_Msg_Pub.ADD;
8968 RAISE FND_API.G_EXC_ERROR;
8969 END IF;
8970 IF (l_task_tbl(i).PAST_TASK_START_DATE > l_task_tbl(i).PAST_TASK_END_DATE) THEN
8971 -- Throw error if past task start date is after the past task end date
8972 Fnd_Message.SET_NAME('AHL','AHL_VWP_PAST_TASK_DATE_INVLD');
8973 Fnd_Msg_Pub.ADD;
8974 RAISE FND_API.G_EXC_ERROR;
8975 END IF;
8976 IF (l_task_tbl(i).PAST_TASK_END_DATE > NVL(c_visit_rec.CLOSE_DATE_TIME, l_task_tbl(i).PAST_TASK_END_DATE)) THEN
8977 -- Throw error if visit ends before the task
8978 Fnd_Message.SET_NAME('AHL','AHL_VWP_TASK_END_DATE_INVLD');
8979 Fnd_Msg_Pub.ADD;
8980 RAISE FND_API.G_EXC_ERROR;
8981 END IF;
8982 ELSE -- PAST_TASK_START_DATE is null
8983 -- SKPATHAK :: Bug #9402279 :: 24-FEB-2010 :: Replaced l_task_tbl(1) with l_task_tbl(i)
8984 -- Also changed the condition from l_task_tbl(i).PAST_TASK_START_DATE <> Fnd_Api.G_MISS_DATE
8985 -- to l_task_tbl(i).PAST_TASK_END_DATE <> Fnd_Api.G_MISS_DATE
8986 IF (l_task_tbl(i).PAST_TASK_END_DATE IS NOT NULL
8987 AND l_task_tbl(i).PAST_TASK_END_DATE <> Fnd_Api.G_MISS_DATE) THEN
8988 Fnd_Message.SET_NAME('AHL','AHL_VWP_PAST_TASK_DATE_MAND');
8989 Fnd_Msg_Pub.ADD;
8990 RAISE FND_API.G_EXC_ERROR;
8991 END IF;
8992 l_task_tbl(i).PAST_TASK_START_DATE := NULL;
8993 l_task_tbl(i).PAST_TASK_END_DATE := NULL;
8994 END IF;
8995 -- SKPATHAK :: ER: 9147951 :: 11-JAN-2010 :: END
8996
8997 IF l_task_tbl(i).task_type_code = 'PLANNED' THEN
8998 -- Begin changes by rnahata for Issue 105
8999 OPEN c_get_instance_id (p_x_task_tbl(i).unit_effectivity_id);
9000 FETCH c_get_instance_id INTO l_instance_id;
9001 CLOSE c_get_instance_id;
9002
9003 OPEN c_get_instance_qty(l_instance_id);
9004 FETCH c_get_instance_qty INTO l_instance_qty;
9005 CLOSE c_get_instance_qty;
9006
9007 IF (l_task_tbl(i).QUANTITY is null) THEN
9008 l_task_tbl(i).QUANTITY := l_instance_qty;
9009 ELSE
9010 /*Kasridha : Changes for Component Maintenance Planning Begins
9011 Throw error only when the quantity is greater than
9012 repair quantity , for component visits */
9013
9014 /* Changes for Component Maintenance Planning
9015 Reverting the logic to check for instance quantity based on
9016 latest proposal
9017
9018 IF(l_is_comp_visit = 'Y')
9019 THEN
9020 OPEN c_get_target_qty (l_instance_id, c_visit_rec.organization_id);
9021 FETCH c_get_target_qty INTO l_target_qty;
9022 CLOSE c_get_target_qty;
9023
9024 IF(l_task_tbl(i).QUANTITY > NVL(l_target_qty, 0)) THEN
9025 Fnd_Message.SET_NAME('AHL','AHL_CMP_TSK_QTY_RPR_QTY');
9026 Fnd_Msg_Pub.ADD;
9027 RAISE Fnd_Api.G_EXC_ERROR;
9028 END IF;
9029
9030 ELSIF(l_task_tbl(i).QUANTITY > l_instance_qty ) THEN
9031 Fnd_Message.SET_NAME('AHL','AHL_INCORRECT_TSK_QTY');
9032 Fnd_Msg_Pub.ADD;
9033 RAISE Fnd_Api.G_EXC_ERROR;
9034 END IF;
9035 */
9036 IF(l_task_tbl(i).QUANTITY > l_instance_qty ) THEN
9037 Fnd_Message.SET_NAME('AHL','AHL_INCORRECT_TSK_QTY');
9038 Fnd_Msg_Pub.ADD;
9039 RAISE Fnd_Api.G_EXC_ERROR;
9040 END IF;
9041
9042 END IF;
9043
9044 -- Kasridha : Changes for Component Maintenance Planning Ends
9045
9046 -- Call AHL_VWP_PLAN_TASKS_PVT
9047 IF (l_log_statement >= l_log_current_level) THEN
9048 fnd_log.string(l_log_statement,
9049 L_DEBUG_KEY,
9050 'Before calling Create_Planned_Task, TASK TYPE = ' || l_task_tbl(i).task_type_code ||
9051 ', l_task_tbl(i).task_start_date = ' || l_task_tbl(i).task_start_date);
9052 END IF;
9053
9054 -- SKPATHAK :: Bug 8343599 :: 14_APR-2009
9055 -- Check if the user entered task start date is between the visit start and end dates
9056 IF (l_task_tbl(i).task_start_date < c_visit_rec.START_DATE_TIME OR
9057 l_task_tbl(i).task_start_date > c_visit_rec.CLOSE_DATE_TIME) THEN
9058 FND_MESSAGE.SET_NAME ('AHL', 'AHL_VWP_TSK_START_DATE_INVLD');
9059 FND_MESSAGE.SET_TOKEN('DATE', l_task_tbl(i).task_start_date);
9060 FND_MSG_PUB.ADD;
9061 RAISE FND_API.G_EXC_ERROR;
9062 END IF;
9063
9064 AHL_VWP_PLAN_TASKS_PVT.Create_Planned_Task (
9065 p_api_version => l_api_version,
9066 p_init_msg_list => p_init_msg_list,
9067 p_commit => FND_API.G_FALSE,
9068 p_validation_level => p_validation_level,
9069 p_module_type => p_module_type,
9070 p_x_task_rec => l_task_tbl(i),
9071 x_return_status => l_return_status,
9072 x_msg_count => l_msg_count,
9073 x_msg_data => l_msg_data
9074 );
9075
9076 IF (l_log_statement >= l_log_current_level) THEN
9077 fnd_log.string(l_log_statement,
9078 L_DEBUG_KEY,
9079 'After calling Create_Planned_Task, Return Status = ' ||
9080 l_return_status);
9081 END IF;
9082 l_msg_count := Fnd_Msg_Pub.count_msg;
9083
9084 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
9085 x_msg_count := l_msg_count;
9086 x_return_status := Fnd_Api.G_RET_STS_ERROR;
9087 RAISE Fnd_Api.G_EXC_ERROR;
9088 END IF;
9089
9090 ELSIF l_task_tbl(i).task_type_code = 'UNPLANNED' THEN
9091 -- Begin changes by rnahata for Issue 105
9092 OPEN c_get_instance_qty(l_task_tbl(i).instance_id);
9093 FETCH c_get_instance_qty INTO l_instance_qty;
9094 CLOSE c_get_instance_qty;
9095
9096 IF (l_task_tbl(i).QUANTITY is null) THEN
9097 Fnd_Message.SET_NAME('AHL','AHL_TASK_QTY_NULL');
9098 Fnd_Msg_Pub.ADD;
9099 RAISE Fnd_Api.G_EXC_ERROR;
9100 END IF;
9101
9102 IF (l_task_tbl(i).QUANTITY <= 0 ) THEN
9103 Fnd_Message.SET_NAME('AHL','AHL_POSITIVE_TSK_QTY');
9104 Fnd_Msg_Pub.ADD;
9105 RAISE Fnd_Api.G_EXC_ERROR;
9106 END IF;
9107 /*Kasridha : Changes for Component Maintenance Planning Begins
9108 Throw error only when the quantity is greater than
9109 repair quantity , for component visits */
9110 /* Kasridha: commented this validation as per
9111 the new proposal, for unplanned MRs this validation should
9112 not be present
9113 IF(l_is_comp_visit = 'Y')
9114 THEN
9115 OPEN c_get_target_qty (l_task_tbl(i).instance_id, c_visit_rec.organization_id);
9116 FETCH c_get_target_qty INTO l_target_qty;
9117 CLOSE c_get_target_qty;
9118
9119 IF(l_task_tbl(i).QUANTITY > NVL(l_target_qty, 0)) THEN
9120 Fnd_Message.SET_NAME('AHL','AHL_CMP_TSK_QTY_RPR_QTY');
9121 Fnd_Msg_Pub.ADD;
9122 RAISE Fnd_Api.G_EXC_ERROR;
9123 END IF;
9124
9125
9126 ELSIF(l_task_tbl(i).QUANTITY > l_instance_qty ) THEN
9127 Fnd_Message.SET_NAME('AHL','AHL_INCORRECT_TSK_QTY');
9128 Fnd_Msg_Pub.ADD;
9129 RAISE Fnd_Api.G_EXC_ERROR;
9130 END IF;
9131 */
9132
9133 IF(l_task_tbl(i).QUANTITY > l_instance_qty ) THEN
9134 Fnd_Message.SET_NAME('AHL','AHL_INCORRECT_TSK_QTY');
9135 Fnd_Msg_Pub.ADD;
9136 RAISE Fnd_Api.G_EXC_ERROR;
9137 END IF;
9138
9139 -- Kasridha : Changes for Component Maintenance Planning Ends
9140
9141 -- Call AHL_VWP_UNPLAN_TASKS_PVT
9142 IF (l_log_statement >= l_log_current_level) THEN
9143 fnd_log.string(l_log_statement,
9144 L_DEBUG_KEY,
9145 'Before Calling Create_Unplanned_Task, TASK TYPE = ' || l_task_tbl(i).task_type_code);
9146 END IF;
9147
9148 AHL_VWP_UNPLAN_TASKS_PVT.Create_Unplanned_Task (
9149 p_api_version => l_api_version,
9150 p_init_msg_list => p_init_msg_list,
9151 p_commit => FND_API.G_FALSE,
9152 p_validation_level => p_validation_level,
9153 p_module_type => p_module_type,
9154 p_x_task_rec => l_task_tbl(i),
9155 x_return_status => l_return_status,
9156 x_msg_count => l_msg_count,
9157 x_msg_data => l_msg_data
9158 );
9159
9160 IF (l_log_statement >= l_log_current_level) THEN
9161 fnd_log.string(l_log_statement,
9162 L_DEBUG_KEY,
9163 'After Calling Create_Unplanned_Task, Return Status = ' || l_return_status );
9164 END IF;
9165
9166 l_msg_count := Fnd_Msg_Pub.count_msg;
9167
9168 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
9169 x_msg_count := l_msg_count;
9170 x_return_status := Fnd_Api.G_RET_STS_ERROR;
9171 RAISE Fnd_Api.G_EXC_ERROR;
9172 END IF;
9173 END IF;
9174 END LOOP;
9175 END IF;
9176 l_task_data := l_task_tbl;
9177 -- SKPATHAK :: Bug 8343599 :: 14_APR-2009 :: Begin
9178 -- Skip calling AHL_VWP_TIMES_PVT.Calculate_Task_Times if
9179 -- the user has entered task start date for Non Routine
9180 -- SKPATHAK :: ER: 9147951 :: 11-JAN-2010 :: Added one more condition (l_past_dates_flag = 'N')
9181 IF (p_module_type <> 'SR' OR l_task_tbl(1).task_start_date IS NULL) AND (l_past_dates_flag = 'N') THEN
9182 IF (l_log_statement >= l_log_current_level) THEN
9183 fnd_log.string(l_log_statement,
9184 L_DEBUG_KEY,
9185 'Before Calling AHL_VWP_TIMES_PVT.Calculate_Task_Times');
9186 END IF;
9187 AHL_VWP_TIMES_PVT.Calculate_Task_Times(p_api_version => 1.0,
9188 p_init_msg_list => Fnd_Api.G_FALSE,
9189 p_commit => Fnd_Api.G_FALSE,
9190 p_validation_level => Fnd_Api.G_VALID_LEVEL_FULL,
9191 x_return_status => l_return_status,
9192 x_msg_count => l_msg_count,
9193 x_msg_data => l_msg_data,
9194 p_visit_id => c_visit_rec.VISIT_ID);
9195
9196 IF (l_log_statement >= l_log_current_level) THEN
9197 fnd_log.string(l_log_statement,
9198 L_DEBUG_KEY,
9199 'After Calling AHL_VWP_TIMES_PVT.Calculate_Task_Times. Return Status = ' || l_return_status );
9200 END IF;
9201
9202 IF NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
9203 x_msg_count := l_msg_count;
9204 x_return_status := Fnd_Api.G_RET_STS_ERROR;
9205 RAISE Fnd_Api.G_EXC_ERROR;
9206 END IF;
9207 END IF;
9208 -- SKPATHAK :: Bug 8343599 :: 14_APR-2009 :: End
9209
9210 --VWPE :: tchimira :: 19-FEB -2011 :: start
9211 -- We are making this call after AHL_VWP_TIMES_PVT.Calculate_Task_Times, so that by this point of time, we can access all the already validated task rules and task related info from the DB.
9212 IF (l_log_statement >= l_log_current_level) THEN
9213 fnd_log.string(l_log_statement,
9214 L_DEBUG_KEY,
9215 'Before Calling AHL_VWP_RULES_PVT.Handle_Task_Dependency');
9216 END IF;
9217 AHL_VWP_RULES_PVT.Handle_Task_Dependency(p_api_version => 1.0,
9218 p_init_msg_list => Fnd_Api.G_FALSE,
9219 p_commit => Fnd_Api.G_FALSE,
9220 p_validation_level => Fnd_Api.G_VALID_LEVEL_FULL,
9221 p_visit_id => c_visit_rec.VISIT_ID,
9222 p_task_tbl => l_task_tbl,
9223 x_return_status => l_return_status,
9224 x_msg_count => l_msg_count,
9225 x_msg_data => l_msg_data);
9226
9227 IF (l_log_statement >= l_log_current_level) THEN
9228 fnd_log.string(l_log_statement,
9229 L_DEBUG_KEY,
9230 'After Calling AHL_VWP_RULES_PVT.Handle_Task_Dependency. Return Status = ' || l_return_status );
9231 END IF;
9232 IF NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
9233 x_msg_count := l_msg_count;
9234 l_return_status := Fnd_Api.G_RET_STS_ERROR;
9235 x_return_status := l_return_status;
9236 IF l_return_status = Fnd_Api.g_ret_sts_error THEN
9237 RAISE Fnd_Api.g_exc_error;
9238 ELSIF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
9239 RAISE Fnd_Api.g_exc_unexpected_error;
9240 END IF;
9241 END IF;
9242 --VWPE :: tchimira :: 19-FEB -2011 :: end
9243
9244 IF c_visit_rec.STATUS_CODE = 'RELEASED' THEN
9245 UPDATE AHL_VISITS_B
9246 SET STATUS_CODE = 'PARTIALLY RELEASED',
9247 OBJECT_VERSION_NUMBER = OBJECT_VERSION_NUMBER +1
9248 WHERE VISIT_ID =c_visit_rec.VISIT_ID ;
9249 END IF;
9250
9251 IF (l_log_statement >= l_log_current_level) THEN
9252 fnd_log.string(l_log_statement,
9253 L_DEBUG_KEY,
9254 'Successful updation of the status');
9255 END IF;
9256 p_x_task_tbl:=l_task_tbl; --Added by rnahata for Bug 6939329
9257
9258 /*
9259 -- Kasridha: Changes for component Maintenance Planning Begins
9260 -- Before creating workorders, check whether an RTS workorder already exist.
9261 IF l_is_comp_visit = 'Y' AND l_task_tbl IS NOT NULL AND l_task_tbl.count <> 0 THEN
9262
9263 IF l_instance_id = 0 THEN
9264 FOR i IN l_task_data.FIRST .. l_task_data.LAST
9265 LOOP
9266 OPEN c_task_dtls (l_task_data(i).visit_task_id);
9267 FETCH c_task_dtls INTO l_task_type, l_summary_task_id, l_instance_id, l_task_status_code;
9268 CLOSE c_task_dtls;
9269 END LOOP;
9270 END IF;
9271
9272 OPEN c_get_rprbatch_task (l_instance_id, c_visit_rec.organization_id);
9273 FETCH c_get_rprbatch_task INTO l_rpr_batch_task_id;
9274 CLOSE c_get_rprbatch_task;
9275
9276 OPEN c_get_rts_wo_id(l_rpr_batch_task_id, l_instance_id);
9277 FETCH c_get_rts_wo_id INTO l_rts_wip_id;
9278 CLOSE c_get_rts_wo_id;
9279
9280 IF (l_log_statement >= l_log_current_level) THEN
9281 fnd_log.string(l_log_statement,
9282 L_DEBUG_KEY,
9283 'RTS Workorder existing in RB::' || l_rts_wip_id );
9284 END IF;
9285 END IF;
9286
9287 -- Kasridha: Changes for component Maintenance Planning Ends
9288 */
9289
9290 /* Kasridha : Changes for Component Maintenance Planning begins
9291 * Set the cost parent ID for the summary task
9292 * to the task ID of the repair batch.
9293 * This is used to maintain the hierarchy for
9294 * deriving the tasks in a repair batch
9295 */
9296 IF l_is_comp_visit = 'Y' AND l_task_tbl IS NOT NULL THEN
9297
9298 IF (l_log_statement >= l_log_current_level) THEN
9299 fnd_log.string(l_log_statement,
9300 L_DEBUG_KEY,
9301 'Before setting the repair batch task id to cost_parent_id');
9302 END IF;
9303
9304 l_is_cost_parent_setting_done := FALSE;
9305 FOR i IN l_task_tbl.first .. l_task_tbl.last
9306 LOOP
9307 IF (l_log_statement >= l_log_current_level) THEN
9308 fnd_log.string(l_log_statement,
9309 L_DEBUG_KEY,
9310 'l_task_tbl(i).TASK_TYPE_CODE' ||
9311 l_task_tbl(i).TASK_TYPE_CODE ||
9312 'l_task_tbl(i).COST_PARENT_ID :: ' ||
9313 l_task_tbl(i).COST_PARENT_ID);
9314 END IF;
9315
9316 IF (l_log_statement >= l_log_current_level) THEN
9317 fnd_log.string(l_log_statement,
9318 L_DEBUG_KEY,
9319 'l_task_tbl(i).instance_id' ||
9320 l_task_tbl(i).instance_id ||
9321 'l_task_tbl(i).visit_task_id :: ' ||
9322 l_task_tbl(i).visit_task_id);
9323 END IF;
9324
9325 OPEN c_task_dtls (l_task_tbl(i).visit_task_id);
9326 FETCH c_task_dtls INTO l_task_type, l_summary_task_id, l_instance_id, l_task_status_code;
9327 CLOSE c_task_dtls;
9328
9329 IF(l_task_type = 'SUMMARY' AND l_summary_task_id IS NULL) THEN
9330 l_summary_task_id := l_task_tbl(i).visit_task_id;
9331 END IF;
9332
9333 OPEN c_get_rprbatch_task (l_instance_id, c_visit_rec.organization_id);
9334 FETCH c_get_rprbatch_task INTO l_rpr_batch_task_id;
9335 CLOSE c_get_rprbatch_task;
9336 IF (l_log_statement >= l_log_current_level) THEN
9337 fnd_log.string(l_log_statement,
9338 L_DEBUG_KEY,
9339 'RepairBatch Task ID: ' || l_rpr_batch_task_id);
9340 END IF;
9341 IF( l_summary_task_id IS NOT NULL AND
9342 l_rpr_batch_task_id IS NOT NULL AND
9343 l_rpr_batch_task_id <> l_task_tbl(i).VISIT_TASK_ID) THEN
9344
9345 UPDATE AHL_VISIT_TASKS_B SET cost_parent_id = l_rpr_batch_task_id
9346 WHERE visit_task_id = l_summary_task_id;
9347
9348 l_is_cost_parent_setting_done := TRUE;
9349 l_repair_batch_task_id := l_rpr_batch_task_id;
9350
9351 IF (l_log_statement >= l_log_current_level) THEN
9352 fnd_log.string(l_log_statement,
9353 L_DEBUG_KEY,
9354 'Cost_parent_id set to : '
9355 || l_rpr_batch_task_id
9356 || ' for : ' || l_summary_task_id);
9357 END IF;
9358
9359 END IF;
9360
9361 END LOOP;
9362
9363 IF (l_log_statement >= l_log_current_level) THEN
9364 fnd_log.string(l_log_statement,
9365 L_DEBUG_KEY,
9366 'Cost parent changes ends' );
9367 END IF;
9368
9369
9370 /* MANESING::Bug 13713141, 16-Apr-2012, For Component Visits, Repair Batch status should also
9371 * change similar to the way Visit status changes as Repair Batches are like mini-visits.
9372 * So, if any new tasks are added to a Repair Batch which is in 'RELEASED' status, then its status
9373 * should be changed to 'PARTIALLY RELEASED'.
9374 */
9375 IF (l_is_cost_parent_setting_done) THEN
9376
9377 -- check Repair Batch status
9378 OPEN c_task_dtls (l_repair_batch_task_id);
9379 FETCH c_task_dtls INTO l_task_type, l_summary_task_id, l_instance_id, l_task_status_code;
9380 CLOSE c_task_dtls;
9381
9382 IF (l_task_status_code = 'RELEASED') THEN
9383
9384 IF (l_log_statement >= l_log_current_level) THEN
9385 FND_LOG.string(l_log_statement, l_debug_key, 'Changing Repair Batch ' || l_repair_batch_task_id || ' status to Partially Implemented.');
9386 END IF;
9387
9388 UPDATE AHL_VISIT_TASKS_B
9389 SET status_code = 'PARTIALLY RELEASED',
9390 object_version_number = object_version_number + 1,
9391 last_update_date = SYSDATE,
9392 last_updated_by = Fnd_Global.USER_ID,
9393 last_update_login = Fnd_Global.LOGIN_ID
9394 WHERE visit_task_id = l_repair_batch_task_id;
9395 END IF;
9396
9397 END IF; -- IF l_is_cost_parent_setting_done
9398
9399 --PRAKKUM :: 12/06/2012 :: Bug 14068468 :: Moved plan visit call to happen after cost parent is set
9400 -- SKPATHAK :: 02-MAY-2011 :: VWPE: ER:12424063 :: Automatically create draft WOs if tasks are added to a visit that is in any of the below three statuses
9401 IF ((c_visit_rec.status_code IN ('PLANNING', 'PARTIALLY RELEASED', 'RELEASED')) AND (p_module_type <> 'SR')) THEN
9402 AHL_VWP_PROJ_PROD_PVT.plan_visit(
9403 p_api_version => l_api_version,
9404 p_init_msg_list => Fnd_Api.G_FALSE,
9405 p_commit => Fnd_Api.G_FALSE,
9406 p_validation_level => p_validation_level,
9407 p_visit_id => l_task_tbl(1).visit_id,
9408 x_return_status => l_return_status,
9409 x_msg_count => l_msg_count,
9410 x_msg_data => l_msg_data);
9411
9412 IF (l_log_statement >= l_log_current_level) THEN
9413 fnd_log.string(l_log_statement,
9414 L_DEBUG_KEY,
9415 'After Calling AHL_VWP_PROJ_PROD_PVT.plan_visit. Return Status = ' || l_return_status );
9416 END IF;
9417
9418 IF NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
9419 x_msg_count := l_msg_count;
9420 x_return_status := l_return_status;
9421 IF l_return_status = Fnd_Api.g_ret_sts_error THEN
9422 RAISE Fnd_Api.g_exc_error;
9423 ELSIF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
9424 RAISE Fnd_Api.g_exc_unexpected_error;
9425 END IF;
9426 END IF;
9427 END IF;
9428
9429
9430 FOR i IN l_task_tbl.first .. l_task_tbl.last
9431 LOOP
9432 /* Kasridha : Call API for moving materials from planning to in-repair locator
9433 * when adding an MR to the repair batch.
9434 */
9435 IF c_visit_rec.status_code IN ('PLANNING', 'PARTIALLY RELEASED', 'RELEASED')
9436 THEN
9437
9438 IF (l_log_statement >= l_log_current_level) THEN
9439 fnd_log.string(l_log_statement,
9440 L_DEBUG_KEY,
9441 'Before Calling AHL_VWP_PROJ_PROD_PVT.Move_To_InRepair_Locator.');
9442 END IF;
9443 -- Get the task Details
9444 OPEN c_task_dtls (l_task_tbl(i).visit_task_id);
9445 FETCH c_task_dtls INTO l_task_type, l_summary_task_id, l_instance_id, l_task_status_code;
9446 CLOSE c_task_dtls;
9447
9448 -- Get the repair batch task Id
9449 OPEN c_get_rprbatch_task (l_instance_id, c_visit_rec.organization_id);
9450 FETCH c_get_rprbatch_task INTO l_rpr_batch_task_id;
9451 CLOSE c_get_rprbatch_task;
9452
9453 IF (l_log_statement >= l_log_current_level) THEN
9454 fnd_log.string(l_log_statement,
9455 L_DEBUG_KEY,
9456 'RepairBatch Task ID: ' || l_rpr_batch_task_id);
9457 END IF;
9458
9459 -- Get the RTS workorder ID
9460 OPEN c_get_rts_wo_id(l_rpr_batch_task_id, l_instance_id);
9461 FETCH c_get_rts_wo_id INTO l_rts_wip_id;
9462 CLOSE c_get_rts_wo_id;
9463
9464 -- Get the repair batch name
9465 OPEN c_get_repair_batch_name(l_rpr_batch_task_id);
9466 FETCH c_get_repair_batch_name INTO l_repair_batch_name;
9467 CLOSE c_get_repair_batch_name;
9468
9469
9470 IF l_rts_wip_id IS NOT NULL
9471 AND l_repair_batch_name IS NOT NULL THEN
9472 IF (l_log_statement >= l_log_current_level) THEN
9473 fnd_log.string(l_log_statement,
9474 L_DEBUG_KEY,
9475 'Calling AHL_CMP_PVT.Move_To_InRepair_Locator');
9476 END IF;
9477
9478 AHL_CMP_PVT.Move_To_InRepair_Locator(
9479 p_api_version => l_api_version,
9480 p_init_msg_list => Fnd_Api.g_false,
9481 p_commit => Fnd_Api.g_false,
9482 p_validation_level => p_validation_level,
9483 p_wip_entity_id => l_rts_wip_id,
9484 p_instance_id => l_instance_id,
9485 p_repair_batch_name => l_repair_batch_name,
9486 x_return_status => l_return_status,
9487 x_msg_count => l_msg_count,
9488 x_msg_data => l_msg_data);
9489
9490
9491 IF (l_log_statement >= l_log_current_level) THEN
9492 fnd_log.string(l_log_statement,
9493 L_DEBUG_KEY,
9494 'After Calling AHL_VWP_PROJ_PROD_PVT.Move_To_InRepair_Locator.' ||
9495 'Return Status = ' || l_return_status );
9496 END IF;
9497 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
9498 x_msg_count := l_msg_count;
9499 x_return_status := l_return_status;
9500 IF l_return_status = Fnd_Api.g_ret_sts_error THEN
9501 RAISE Fnd_Api.g_exc_error;
9502 ELSIF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
9503 RAISE Fnd_Api.g_exc_unexpected_error;
9504 END IF;
9505 ELSE
9506 FND_MSG_PUB.Initialize;
9507 END IF;
9508 END IF;
9509 END IF;
9510 END LOOP;
9511
9512 ELSE -- IF not component visit :: PRAKKUM :: 03/07/2012 :: Bug Internal :: Fixed issue in creating workorders on normal visits
9513
9514 IF (l_log_statement >= l_log_current_level) THEN
9515 fnd_log.string(l_log_statement,
9516 L_DEBUG_KEY,
9517 'Not a component visit - so create draft work orders');
9518 END IF;
9519
9520 -- SKPATHAK :: 02-MAY-2011 :: VWPE: ER:12424063 :: Automatically create draft WOs if tasks are added to a visit that is in any of the below three statuses
9521 IF ((c_visit_rec.status_code IN ('PLANNING', 'PARTIALLY RELEASED', 'RELEASED')) AND (p_module_type <> 'SR')) THEN
9522 AHL_VWP_PROJ_PROD_PVT.plan_visit(
9523 p_api_version => l_api_version,
9524 p_init_msg_list => Fnd_Api.G_FALSE,
9525 p_commit => Fnd_Api.G_FALSE,
9526 p_validation_level => p_validation_level,
9527 p_visit_id => l_task_tbl(1).visit_id,
9528 x_return_status => l_return_status,
9529 x_msg_count => l_msg_count,
9530 x_msg_data => l_msg_data);
9531
9532 IF (l_log_statement >= l_log_current_level) THEN
9533 fnd_log.string(l_log_statement,
9534 L_DEBUG_KEY,
9535 'After Calling AHL_VWP_PROJ_PROD_PVT.plan_visit. Return Status = ' || l_return_status );
9536 END IF;
9537
9538 IF NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
9539 x_msg_count := l_msg_count;
9540 x_return_status := l_return_status;
9541 IF l_return_status = Fnd_Api.g_ret_sts_error THEN
9542 RAISE Fnd_Api.g_exc_error;
9543 ELSIF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
9544 RAISE Fnd_Api.g_exc_unexpected_error;
9545 END IF;
9546 END IF;
9547 END IF;
9548
9549 END IF;
9550
9551 IF (l_log_statement >= l_log_current_level) THEN
9552 fnd_log.string(l_log_statement,
9553 L_DEBUG_KEY,
9554 'Component Maintenance changes ends' );
9555 END IF;
9556 -- Kasridha : Changes for Component Maintenance Planning Ends
9557 --------------------End of API Body-------------------------------------
9558 --Standard check to count messages
9559 l_msg_count := Fnd_Msg_Pub.count_msg;
9560
9561 IF l_msg_count > 0 THEN
9562 x_msg_count := l_msg_count;
9563 x_return_status := Fnd_Api.G_RET_STS_ERROR;
9564 RAISE Fnd_Api.G_EXC_ERROR;
9565 END IF;
9566
9567 --Standard check for commit
9568 IF Fnd_Api.TO_BOOLEAN(p_commit) THEN
9569 COMMIT;
9570 END IF;
9571
9572 IF (l_log_procedure >= l_log_current_level) THEN
9573 fnd_log.string(l_log_procedure,
9574 L_DEBUG_KEY ||'.end',
9575 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
9576 END IF;
9577 EXCEPTION
9578 WHEN Fnd_Api.g_exc_error THEN
9579 ROLLBACK TO Create_PUP_Tasks;
9580 x_return_status := Fnd_Api.g_ret_sts_error;
9581 Fnd_Msg_Pub.count_and_get(
9582 p_encoded => Fnd_Api.g_false,
9583 p_count => x_msg_count,
9584 p_data => x_msg_data
9585 );
9586 WHEN Fnd_Api.g_exc_unexpected_error THEN
9587 ROLLBACK TO Create_PUP_Tasks;
9588 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
9589 Fnd_Msg_Pub.count_and_get (
9590 p_encoded => Fnd_Api.g_false,
9591 p_count => x_msg_count,
9592 p_data => x_msg_data
9593 );
9594 WHEN OTHERS THEN
9595 ROLLBACK TO Create_PUP_Tasks;
9596 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
9597 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
9598 THEN
9599 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
9600 END IF;
9601 Fnd_Msg_Pub.count_and_get (
9602 p_encoded => Fnd_Api.g_false,
9603 p_count => x_msg_count,
9604 p_data => x_msg_data
9605 );
9606 END Create_PUP_Tasks;
9607
9608 -------------------------------------------------------------------
9609 -- Procedure name : Associate_Default_MRs
9610 -- Type : Private
9611 -- Function : To create Unassociated/Summary/Non-Routine task for a visit
9612 -- Parameters :
9613 --
9614 -- Standard IN Parameters :
9615 -- p_api_version IN NUMBER Required
9616 -- p_init_msg_list IN VARCHAR2 Default FND_API.G_FALSE
9617 -- p_commit IN VARCHAR2 Default FND_API.G_FALSE
9618 -- p_validation_level IN NUMBER Default FND_API.G_VALID_LEVEL_FULL
9619 -- p_module_type IN VARCHAR2 Default NULL.
9620 -- p_visit_rec IN AHL_VWP_VISITS_PVT.Visit_Rec_Type,
9621 --
9622 -- Standard OUT Parameters :
9623 -- x_return_status OUT VARCHAR2 Required
9624 -- x_msg_count OUT NUMBER Required
9625 -- x_msg_data OUT VARCHAR2 Required
9626 --
9627 -- Purpose:
9628 -- To associate default MR's during Transit Check Visit creation.
9629 -- Version :
9630 -- Initial Version 1.0
9631 -------------------------------------------------------------------
9632 PROCEDURE associate_default_mrs (
9633 p_api_version IN NUMBER,
9634 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
9635 p_commit IN VARCHAR2 := Fnd_Api.g_false,
9636 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
9637 p_module_type IN VARCHAR2 := 'JSP',
9638 x_return_status OUT NOCOPY VARCHAR2,
9639 x_msg_count OUT NOCOPY NUMBER,
9640 x_msg_data OUT NOCOPY VARCHAR2,
9641 p_visit_rec IN AHL_VWP_VISITS_PVT.Visit_Rec_Type
9642 ) AS
9643
9644 -- Define local variables
9645 L_API_VERSION CONSTANT NUMBER := 1.0;
9646 L_API_NAME CONSTANT VARCHAR2(30) := 'ASSOCIATE_DEFAULT_MRS';
9647 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
9648
9649 l_msg_count NUMBER;
9650 l_msg_data VARCHAR2(2000);
9651 l_return_status VARCHAR2(1);
9652 l_instance_id NUMBER;
9653
9654 J NUMBER;
9655
9656 CURSOR c_get_Item_Instance(p_visit_id NUMBER) IS
9657 SELECT ITEM_INSTANCE_ID
9658 FROM ahl_visits_b
9659 WHERE visit_id = p_visit_id;
9660
9661 -- SKPATHAK :: AVF ER: 13416865 :: 25-NOV-2011
9662 -- Do not fetch the planned MRs for automatic addition to visits
9663 CURSOR c_get_visit_applicable_mrs IS
9664 SELECT distinct appl_mr.mr_header_id
9665 FROM ahl_applicable_mrs appl_mr, ahl_mr_headers_b mr
9666 WHERE appl_mr.mr_header_id = mr.mr_header_id
9667 AND mr.implement_status_code NOT IN ('MANDATORY', 'OPTIONAL_IMPLEMENT');
9668
9669 -- Begin changes by rnahata for Issue 105
9670 --Cursor to fetch instance quantity
9671 CURSOR c_get_instance_qty(p_instance_id IN NUMBER) IS
9672 SELECT quantity FROM csi_item_instances csii
9673 WHERE instance_id = p_instance_id;
9674
9675 l_instance_qty NUMBER := 0;
9676 -- End changes by rnahata for Issue 105
9677
9678 l_Task_tbl AHL_VWP_RULES_PVT.Task_Tbl_Type;
9679
9680 BEGIN
9681 --------------------- initialize -----------------------
9682 SAVEPOINT associate_default_mrs;
9683
9684 -- Check if API is called in debug mode. If yes, enable debug.
9685 IF (l_log_procedure >= l_log_current_level) THEN
9686 fnd_log.string(l_log_procedure,
9687 L_DEBUG_KEY ||'.begin',
9688 'At the start of PL SQL procedure.');
9689 END IF;
9690
9691 -- Initialize message list if p_init_msg_list is set to TRUE.
9692 IF Fnd_Api.to_boolean(p_init_msg_list)
9693 THEN
9694 Fnd_Msg_Pub.initialize;
9695 END IF;
9696
9697 -- Initialize API return status to success
9698 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
9699
9700 -- Standard call to check for call compatibility.
9701 IF NOT Fnd_Api.COMPATIBLE_API_CALL(l_api_version,
9702 p_api_version,
9703 l_api_name,G_PKG_NAME)
9704 THEN
9705 RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
9706 END IF;
9707
9708 --------------------Start of API Body-----------------------------------
9709
9710 IF p_visit_rec.visit_type_code IS NOT NULL
9711 AND p_visit_rec.visit_id IS NOT NULL THEN
9712 OPEN c_get_Item_Instance(p_visit_rec.visit_id);
9713 FETCH c_get_Item_Instance INTO l_instance_id;
9714 CLOSE c_get_Item_Instance;
9715
9716 IF l_instance_id IS NOT NULL THEN
9717
9718 IF (l_log_statement >= l_log_current_level) THEN
9719 fnd_log.string(l_log_statement,
9720 L_DEBUG_KEY,
9721 ' Before calling AHL_FMP_PVT.GET_VISIT_APPLICABLE_MRS, l_instance_id = ' || l_instance_id);
9722 END IF;
9723 AHL_FMP_PVT.GET_VISIT_APPLICABLE_MRS(
9724 P_API_VERSION => 1.0,
9725 X_RETURN_STATUS => L_RETURN_STATUS,
9726 X_MSG_COUNT => L_MSG_COUNT,
9727 X_MSG_DATA => L_MSG_DATA,
9728 P_ITEM_INSTANCE_ID => l_instance_id,
9729 P_VISIT_TYPE_CODE => p_visit_rec.visit_type_code);
9730 --X_APPLICABLE_MR_TBL => l_mr_item_instance_tbl);
9731
9732 IF (l_log_statement >= l_log_current_level) THEN
9733 fnd_log.string(l_log_statement,
9734 L_DEBUG_KEY,
9735 'After calling AHL_FMP_PVT.GET_VISIT_APPLICABLE_MRS. Return status = ' || L_RETURN_STATUS || ', l_instance_id = ' || l_instance_id);
9736 END IF;
9737
9738 l_msg_count := Fnd_Msg_Pub.count_msg;
9739
9740 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
9741 x_msg_count := l_msg_count;
9742 x_return_status := Fnd_Api.G_RET_STS_ERROR;
9743 RAISE Fnd_Api.G_EXC_ERROR;
9744 END IF;
9745
9746 -- Begin changes by rnahata for Issue 105
9747 OPEN c_get_instance_qty(l_instance_id);
9748 FETCH c_get_instance_qty INTO l_instance_qty;
9749 CLOSE c_get_instance_qty;
9750 IF (l_log_statement >= l_log_current_level) THEN
9751 fnd_log.string(l_log_statement,
9752 L_DEBUG_KEY,
9753 'Richa -- l_instance_id = ' || l_instance_id || ', l_instance_qty = ' || l_instance_qty);
9754 END IF;
9755 -- End changes by rnahata for Issue 105
9756
9757 J := 0;
9758 FOR I in c_get_visit_applicable_mrs
9759 LOOP
9760 J := J+1;
9761 l_task_tbl(J).mr_id := I.mr_header_id;
9762 -- Begin changes by rnahata for Issue 105
9763 l_task_tbl(J).instance_id := l_instance_id;
9764 l_task_tbl(J).quantity := l_instance_qty;
9765 -- End changes by rnahata for Issue 105
9766 l_task_tbl(J).visit_id := p_visit_rec.visit_id;
9767 l_task_tbl(J).task_type_code := 'UNPLANNED';
9768 l_task_tbl(J).dept_name := p_visit_rec.dept_name;
9769 l_task_tbl(J).department_id := p_visit_rec.department_id;
9770 l_task_tbl(J).inventory_item_id := p_visit_rec.inventory_item_id;
9771 l_task_tbl(J).item_organization_id := p_visit_rec.item_organization_id;
9772 l_task_tbl(J).item_name := p_visit_rec.item_name;
9773 l_task_tbl(J).serial_number := p_visit_rec.serial_number;
9774 END LOOP;
9775
9776 IF (l_log_statement >= l_log_current_level) THEN
9777 fnd_log.string(l_log_statement,
9778 L_DEBUG_KEY,
9779 ' Calling AHL_VWP_TASKS_PVT.CREATE_PUP_TASKS ');
9780 END IF;
9781 AHL_VWP_TASKS_PVT.CREATE_PUP_TASKS(
9782 p_api_version => 1.0,
9783 p_module_type => p_module_type,
9784 p_x_task_tbl => l_task_tbl,
9785 x_return_status => l_return_status,
9786 x_msg_count => l_msg_count,
9787 x_msg_data => l_msg_data);
9788
9789 l_msg_count := Fnd_Msg_Pub.count_msg;
9790
9791 IF l_msg_count > 0 OR NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
9792 x_msg_count := l_msg_count;
9793 x_return_status := Fnd_Api.G_RET_STS_ERROR;
9794 RAISE Fnd_Api.G_EXC_ERROR;
9795 END IF;
9796
9797 END IF; -- Instance ID is not null.
9798
9799 END IF; -- Visit id and Visit type is not null.
9800 --------------------End of API Body-------------------------------------
9801 --Standard check to count messages
9802 l_msg_count := Fnd_Msg_Pub.count_msg;
9803
9804 IF l_msg_count > 0 THEN
9805 x_msg_count := l_msg_count;
9806 x_return_status := Fnd_Api.G_RET_STS_ERROR;
9807 RAISE Fnd_Api.G_EXC_ERROR;
9808 END IF;
9809
9810 IF (l_log_procedure >= l_log_current_level) THEN
9811 fnd_log.string(l_log_procedure,
9812 L_DEBUG_KEY ||'.end',
9813 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
9814 END IF;
9815 EXCEPTION
9816 WHEN Fnd_Api.g_exc_error THEN
9817 ROLLBACK TO associate_default_mrs;
9818 x_return_status := Fnd_Api.g_ret_sts_error;
9819 Fnd_Msg_Pub.count_and_get(
9820 p_encoded => Fnd_Api.g_false,
9821 p_count => x_msg_count,
9822 p_data => x_msg_data
9823 );
9824 WHEN Fnd_Api.g_exc_unexpected_error THEN
9825 ROLLBACK TO associate_default_mrs;
9826 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
9827 Fnd_Msg_Pub.count_and_get (
9828 p_encoded => Fnd_Api.g_false,
9829 p_count => x_msg_count,
9830 p_data => x_msg_data
9831 );
9832 WHEN OTHERS THEN
9833 ROLLBACK TO associate_default_mrs;
9834 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
9835 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
9836 THEN
9837 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
9838 END IF;
9839 Fnd_Msg_Pub.count_and_get (
9840 p_encoded => Fnd_Api.g_false,
9841 p_count => x_msg_count,
9842 p_data => x_msg_data
9843 );
9844 END associate_default_mrs;
9845
9846 -- salogan added for supplier warranty starts
9847 ------------------------------------------------------------------------------------
9848 -- Start of Comments
9849 -- Procedure name : Get_Entl_rec_for_Delete
9850 -- Type : Private
9851 -- Function : To delete the corresponding entitlement record from the Visit Task.
9852 -- Pre-reqs :
9853 -- Parameters : p_task_id IN NUMBER
9854 -- : x_warranty_entl_tbl OUT AHL_WARRANTY_ENTL_PVT.Warranty_Entl_Tbl_Type
9855 --
9856 -- End of Comments
9857
9858 PROCEDURE Get_Entl_rec_for_Delete(
9859 p_task_id IN NUMBER,
9860 x_warranty_entl_tbl OUT NOCOPY AHL_WARRANTY_ENTL_PVT.Warranty_Entl_Tbl_Type
9861 ) IS
9862 -- Standard variables
9863 L_API_NAME CONSTANT VARCHAR2(30) := 'Get_Entl_rec_for_Delete';
9864 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
9865 -- Local variables defined for the procedure
9866 l_warranty_entl_id NUMBER := null;
9867 l_sr_incident_id NUMBER := null;
9868 l_ovn NUMBER;
9869 l_entitlement_rec AHL_WARRANTY_ENTL_PVT.Warranty_Entl_Rec_Type;
9870
9871 -- Cursors defined for the procedure
9872 -- Cursor to fetch entitlemet details
9873 CURSOR c_get_warranty_entl_id (c_task_id IN NUMBER) IS
9874 SELECT AWSE.WARRANTY_ENTITLEMENT_ID, AWSE.SR_INCIDENT_ID, AWSE.OBJECT_VERSION_NUMBER
9875 FROM AHL_WARRANTY_ENTITLEMENTS AWSE
9876 WHERE AWSE.VISIT_TASK_ID = c_task_id;
9877
9878 BEGIN
9879 --------------------Start of API Body-----------------------------------
9880 IF(l_log_procedure >= l_log_current_level) THEN
9881 fnd_log.string(l_log_procedure,
9882 L_DEBUG_KEY ||'.begin',
9883 'At the start of PL SQL procedure.');
9884 END IF;
9885
9886 --------------------Get Entitlements Record For Update-------------------
9887 IF(p_task_id is null) THEN
9888 IF(l_log_statement >= l_log_current_level) THEN
9889 fnd_log.string(l_log_statement,
9890 L_DEBUG_KEY,
9891 'Passed task id is null');
9892 END IF;
9893 FND_MSG_PUB.add;
9894 END IF;
9895
9896 OPEN c_get_warranty_entl_id(p_task_id);
9897 FETCH c_get_warranty_entl_id into l_warranty_entl_id, l_sr_incident_id, l_ovn;
9898 CLOSE c_get_warranty_entl_id;
9899
9900 IF(l_warranty_entl_id IS NOT NULL) THEN --warranty entitlement exists
9901 IF(l_sr_incident_id IS NULL) THEN
9902 l_entitlement_rec.warranty_entitlement_id := l_warranty_entl_id;
9903 l_entitlement_rec.operation_flag := AHL_WARRANTY_ENTL_PVT.G_OP_DELETE;
9904 ELSE
9905 l_entitlement_rec.warranty_entitlement_id := l_warranty_entl_id;
9906 l_entitlement_rec.visit_task_id := FND_API.G_MISS_NUM;
9907 l_entitlement_rec.object_version_number := l_ovn;
9908 l_entitlement_rec.operation_flag := AHL_WARRANTY_ENTL_PVT.G_OP_UPDATE;
9909 END IF;
9910 x_warranty_entl_tbl(0) := l_entitlement_rec;
9911 END IF;
9912
9913 IF(l_log_procedure >= l_log_current_level) THEN
9914 fnd_log.string(l_log_procedure,
9915 L_DEBUG_KEY ||'.begin',
9916 ' Task Id : '|| l_entitlement_rec.visit_task_id ||
9917 ' Entitlement Id : '|| l_warranty_entl_id ||
9918 ' SR Incident Id : '|| l_sr_incident_id ||
9919 ' Operation Flag : '|| l_entitlement_rec.operation_flag ||
9920 ' End of API.');
9921 END IF;
9922
9923 END Get_Entl_rec_for_Delete;
9924 -- salogan added for supplier warranty ends
9925
9926 -- SKPATHAK :: 02-MAY-2011 :: VWPE: ER:12424063 :: STARTS
9927 --------------------------------------------------------------------
9928 -- PROCEDURE
9929 -- Create_Stage_Tasks
9930 -- PURPOSE
9931 -- To create visit tasks for visit stages
9932 --------------------------------------------------------------------
9933 PROCEDURE Create_Stage_Tasks (
9934 p_api_version IN NUMBER,
9935 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
9936 p_commit IN VARCHAR2 := Fnd_Api.g_false,
9937 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
9938 p_module_type IN VARCHAR2 := null,
9939 p_stage_id IN NUMBER,
9940 p_visit_id IN NUMBER,
9941 x_return_status OUT NOCOPY VARCHAR2,
9942 x_msg_count OUT NOCOPY NUMBER,
9943 x_msg_data OUT NOCOPY VARCHAR2
9944 )
9945 IS
9946 -- Define local variables
9947 L_API_VERSION CONSTANT NUMBER := 1.0;
9948 L_API_NAME CONSTANT VARCHAR2(30) := 'Create_Stage_Tasks';
9949 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
9950 l_msg_count NUMBER;
9951 l_msg_data VARCHAR2(2000);
9952 l_return_status VARCHAR2(1);
9953 l_visit_task_id NUMBER;
9954 l_visit_task_number NUMBER;
9955 l_dummy VARCHAR2(1);
9956 l_rowid ROWID;
9957
9958
9959 -- To validate the passed stage id
9960 Cursor val_visit_stage (x_visit_id IN NUMBER, x_stage_id IN NUMBER)
9961 IS
9962 SELECT 'X'
9963 FROM ahl_vwp_stages_b
9964 WHERE visit_id = x_visit_id
9965 AND stage_id = x_stage_id;
9966
9967 -- To validate the passed visit id
9968 Cursor val_visit (x_visit_id IN NUMBER)
9969 IS
9970 SELECT 'X'
9971 FROM ahl_visits_b
9972 WHERE visit_id = x_visit_id;
9973
9974 -- To fetch visit details
9975 CURSOR Get_Visit_Details (x_visit_id IN NUMBER) IS
9976 SELECT item_organization_id item_org_id, inventory_item_id item_id, item_instance_id instance_id, status_code
9977 FROM ahl_visits_b
9978 WHERE visit_id = x_visit_id;
9979
9980 -- TCHIMIRA :: 04-May-2012 :: Bug 14009280 :: START
9981 Cursor get_stage_dates (c_stage_id IN NUMBER) IS
9982 SELECT planned_start_date, planned_end_date
9983 FROM ahl_vwp_stages_b
9984 WHERE stage_id = c_stage_id;
9985
9986 Cursor get_visit_dates (c_visit_id IN NUMBER) IS
9987 SELECT start_date_time, close_date_time
9988 FROM ahl_visits_b
9989 WHERE visit_id = c_visit_id;
9990
9991 l_task_start_date DATE;
9992 l_task_end_date DATE;
9993 -- TCHIMIRA :: 04-May-2012 :: Bug 14009280 :: END
9994
9995
9996 visit_details_rec Get_Visit_Details%ROWTYPE;
9997
9998
9999 BEGIN
10000 --------------------- initialize -----------------------
10001 SAVEPOINT Create_Stage_Tasks;
10002
10003 IF (l_log_procedure >= l_log_current_level) THEN
10004 fnd_log.string(l_log_procedure,
10005 L_DEBUG_KEY ||'.begin',
10006 'At the start of PL SQL procedure. p_stage_id= '||p_stage_id||' and p_visit_id= '||p_visit_id);
10007 END IF;
10008
10009 -- Initialize message list if p_init_msg_list is set to TRUE.
10010 IF Fnd_Api.to_boolean(p_init_msg_list)
10011 THEN
10012 Fnd_Msg_Pub.initialize;
10013 END IF;
10014
10015 -- Initialize API return status to success
10016 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
10017
10018 -- Standard call to check for call compatibility.
10019 IF NOT Fnd_Api.COMPATIBLE_API_CALL(l_api_version,
10020 p_api_version,
10021 l_api_name,G_PKG_NAME)
10022 THEN
10023 RAISE Fnd_Api.G_EXC_UNEXPECTED_ERROR;
10024 END IF;
10025
10026 --------------------Start of API Body-----------------------------------
10027
10028 IF(p_visit_id IS NULL OR p_visit_id = FND_API.G_MISS_NUM) THEN
10029 FND_MESSAGE.Set_Name('AHL','AHL_VWP_CST_INPUT_MISS');
10030 FND_MSG_PUB.ADD;
10031 IF (l_log_statement >= l_log_current_level) THEN
10032 fnd_log.string(l_log_statement,
10033 L_DEBUG_KEY,
10034 'Visit id is mandatory but found null in input ');
10035 END IF;
10036 RAISE FND_API.G_EXC_ERROR;
10037 END IF;
10038
10039 -- Validate the visit id
10040 OPEN val_visit(p_visit_id);
10041 FETCH val_visit INTO l_dummy;
10042 IF (val_visit%NOTFOUND) THEN
10043 FND_MESSAGE.Set_Name('AHL','AHL_STAGE_ID_INVALID');
10044 FND_MSG_PUB.ADD;
10045
10046 IF (l_log_statement >= l_log_current_level) THEN
10047 fnd_log.string(l_log_statement,
10048 L_DEBUG_KEY,
10049 'Input visit id is INVALID ');
10050 END IF;
10051 CLOSE val_visit;
10052 RAISE FND_API.G_EXC_ERROR;
10053 END IF;
10054 CLOSE val_visit;
10055
10056 -- Validate the visit id + stage id combination
10057 -- SKPATHAK :: 20-JUN-2011 :: VWPE: ER:12673125
10058 -- Validate stage id only if stage id is not null
10059 IF p_stage_id IS NOT NULL THEN
10060 OPEN val_visit_stage(p_visit_id, p_stage_id);
10061 FETCH val_visit_stage INTO l_dummy;
10062 IF (val_visit_stage%NOTFOUND) THEN
10063 FND_MESSAGE.Set_Name('AHL','AHL_STAGE_ID_INVALID');
10064 FND_MSG_PUB.ADD;
10065
10066 IF (l_log_statement >= l_log_current_level) THEN
10067 fnd_log.string(l_log_statement,
10068 L_DEBUG_KEY,
10069 'Input stage id is INVALID ');
10070 END IF;
10071 CLOSE val_visit_stage;
10072 RAISE FND_API.G_EXC_ERROR;
10073 END IF;
10074 CLOSE val_visit_stage;
10075 END IF;
10076
10077 OPEN Get_Visit_Details (P_VISIT_ID);
10078 FETCH Get_Visit_Details INTO visit_details_rec;
10079 IF (Get_Visit_Details%NOTFOUND) THEN
10080 FND_MESSAGE.Set_Name('AHL','AHL_VISIT_ID_INVALID');
10081 FND_MSG_PUB.ADD;
10082
10083 IF (l_log_statement >= l_log_current_level) THEN
10084 fnd_log.string(l_log_statement,
10085 L_DEBUG_KEY,
10086 'Input visit id is INVALID ');
10087 END IF;
10088 CLOSE Get_Visit_Details;
10089 RAISE FND_API.G_EXC_ERROR;
10090 END IF;
10091 CLOSE Get_Visit_Details;
10092
10093 l_visit_task_id := AHL_VWP_RULES_PVT.Get_Visit_Task_Id();
10094 l_visit_task_number := AHL_VWP_RULES_PVT.Get_Visit_Task_Number(P_VISIT_ID);
10095
10096 -- TCHIMIRA :: 04-May-2012 :: Bug 14009280 :: START
10097 IF p_stage_id IS NOT NULL THEN
10098 OPEN get_stage_dates (p_stage_id);
10099 FETCH get_stage_dates INTO l_task_start_date, l_task_end_date;
10100 CLOSE get_stage_dates;
10101 ELSE
10102 OPEN get_visit_dates (p_visit_id);
10103 FETCH get_visit_dates INTO l_task_start_date, l_task_end_date;
10104 CLOSE get_visit_dates;
10105 END IF;
10106 -- TCHIMIRA :: 04-May-2012 :: Bug 14009280 :: END
10107
10108 -- Invoke the table handler to create a record of visit task for the above stage
10109 Ahl_Visit_Tasks_Pkg.Insert_Row (
10110 X_ROWID => l_rowid,
10111 X_VISIT_TASK_ID => l_visit_task_id,
10112 X_VISIT_TASK_NUMBER => l_visit_task_number,
10113 X_OBJECT_VERSION_NUMBER => 1,
10114 X_VISIT_ID => P_VISIT_ID,
10115 X_PROJECT_TASK_ID => NULL,
10116 X_COST_PARENT_ID => NULL,
10117 X_MR_ROUTE_ID => NULL,
10118 X_MR_ID => NULL,
10119 X_DURATION => NULL,
10120 X_UNIT_EFFECTIVITY_ID => NULL,
10121 X_START_FROM_HOUR => NULL,
10122 X_INVENTORY_ITEM_ID => visit_details_rec.item_id,
10123 X_ITEM_ORGANIZATION_ID => visit_details_rec.item_org_id,
10124 X_INSTANCE_ID => visit_details_rec.instance_id,
10125 X_PRIMARY_VISIT_TASK_ID => NULL,
10126 X_ORIGINATING_TASK_ID => NULL,
10127 X_SERVICE_REQUEST_ID => NULL,
10128 X_TASK_TYPE_CODE => 'STAGE',
10129 X_SERVICE_TYPE_CODE => NULL,
10130 X_DEPARTMENT_ID => NULL,
10131 X_SUMMARY_TASK_FLAG => 'N',
10132 X_PRICE_LIST_ID => NULL,
10133 X_STATUS_CODE => 'PLANNING',
10134 X_ESTIMATED_PRICE => NULL,
10135 X_ACTUAL_PRICE => NULL,
10136 X_ACTUAL_COST => NULL,
10137 -- If the task type is stage, then the stage_id corresponds to the stage for which task is created
10138 X_STAGE_ID => p_stage_id,
10139 -- TCHIMIRA :: 04-May-2012 :: Bug 14009280 :: populate the task dates
10140 X_START_DATE_TIME => l_task_start_date,
10141 X_END_DATE_TIME => l_task_end_date,
10142 X_PAST_TASK_START_DATE => NULL,
10143 X_PAST_TASK_END_DATE => NULL,
10144 X_ATTRIBUTE_CATEGORY => NULL,
10145 X_ATTRIBUTE1 => NULL,
10146 X_ATTRIBUTE2 => NULL,
10147 X_ATTRIBUTE3 => NULL,
10148 X_ATTRIBUTE4 => NULL,
10149 X_ATTRIBUTE5 => NULL,
10150 X_ATTRIBUTE6 => NULL,
10151 X_ATTRIBUTE7 => NULL,
10152 X_ATTRIBUTE8 => NULL,
10153 X_ATTRIBUTE9 => NULL,
10154 X_ATTRIBUTE10 => NULL,
10155 X_ATTRIBUTE11 => NULL,
10156 X_ATTRIBUTE12 => NULL,
10157 X_ATTRIBUTE13 => NULL,
10158 X_ATTRIBUTE14 => NULL,
10159 X_ATTRIBUTE15 => NULL,
10160 X_VISIT_TASK_NAME => 'Stage Task',
10161 X_DESCRIPTION => NULL,
10162 X_QUANTITY => 1,
10163 X_CREATION_DATE => SYSDATE,
10164 X_CREATED_BY => Fnd_Global.USER_ID,
10165 X_LAST_UPDATE_DATE => SYSDATE,
10166 X_LAST_UPDATED_BY => Fnd_Global.USER_ID,
10167 X_LAST_UPDATE_LOGIN => Fnd_Global.LOGIN_ID );
10168
10169
10170
10171 --------------------End of API Body-------------------------------------
10172 --Standard check to count messages
10173 l_msg_count := Fnd_Msg_Pub.count_msg;
10174
10175 -- SKPATHAK :: 02-MAY-2011 :: VWPE: ER:12424063 :: Automatically create draft WOs if tasks are added to a visit that is in any of the below three statuses
10176 IF visit_details_rec.status_code IN ('PLANNING', 'PARTIALLY RELEASED', 'RELEASED') THEN
10177 -- If the visit status is released, then change the status to partially released due to the addition of stage task to the visit
10178 UPDATE AHL_VISITS_B
10179 SET STATUS_CODE = 'PARTIALLY RELEASED',
10180 OBJECT_VERSION_NUMBER = OBJECT_VERSION_NUMBER + 1,
10181 LAST_UPDATE_DATE = SYSDATE,
10182 LAST_UPDATED_BY = Fnd_Global.USER_ID,
10183 LAST_UPDATE_LOGIN = Fnd_Global.LOGIN_ID
10184 WHERE VISIT_ID = p_visit_id
10185 AND STATUS_CODE = 'RELEASED';
10186
10187 AHL_VWP_PROJ_PROD_PVT.plan_visit(
10188 p_api_version => l_api_version,
10189 p_init_msg_list => p_init_msg_list,
10190 p_commit => Fnd_Api.g_false,
10191 p_validation_level => p_validation_level,
10192 -- SKPATHAK :: 20-JUN-2011 :: VWPE: ER:12673125
10193 -- If caller is create stage task API, then necessarily call RELEASE_VISIT
10194 p_caller => 'STG',
10195 p_visit_id => p_visit_id,
10196 x_return_status => l_return_status,
10197 x_msg_count => l_msg_count,
10198 x_msg_data => l_msg_data);
10199
10200 IF (l_log_statement >= l_log_current_level) THEN
10201 fnd_log.string(l_log_statement,
10202 L_DEBUG_KEY,
10203 'After Calling AHL_VWP_PROJ_PROD_PVT.plan_visit. Return Status = ' || l_return_status );
10204 END IF;
10205
10206 IF NVL(l_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
10207 x_msg_count := l_msg_count;
10208 x_return_status := l_return_status;
10209 IF l_return_status = Fnd_Api.g_ret_sts_error THEN
10210 RAISE Fnd_Api.g_exc_error;
10211 ELSIF l_return_status = Fnd_Api.g_ret_sts_unexp_error THEN
10212 RAISE Fnd_Api.g_exc_unexpected_error;
10213 END IF;
10214 END IF;
10215 END IF;
10216
10217 IF l_msg_count > 0 THEN
10218 x_msg_count := l_msg_count;
10219 RAISE Fnd_Api.G_EXC_ERROR;
10220 END IF;
10221
10222 --Standard check for commit
10223 IF Fnd_Api.TO_BOOLEAN(p_commit) THEN
10224 COMMIT;
10225 END IF;
10226
10227 IF (l_log_procedure >= l_log_current_level) THEN
10228 fnd_log.string(l_log_procedure,
10229 L_DEBUG_KEY ||'.end',
10230 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
10231 END IF;
10232 EXCEPTION
10233 WHEN Fnd_Api.g_exc_error THEN
10234 ROLLBACK TO Create_Stage_Tasks;
10235 x_return_status := Fnd_Api.g_ret_sts_error;
10236 Fnd_Msg_Pub.count_and_get(
10237 p_encoded => Fnd_Api.g_false,
10238 p_count => x_msg_count,
10239 p_data => x_msg_data
10240 );
10241 WHEN Fnd_Api.g_exc_unexpected_error THEN
10242 ROLLBACK TO Create_Stage_Tasks;
10243 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
10244 Fnd_Msg_Pub.count_and_get (
10245 p_encoded => Fnd_Api.g_false,
10246 p_count => x_msg_count,
10247 p_data => x_msg_data
10248 );
10249 WHEN OTHERS THEN
10250 ROLLBACK TO Create_Stage_Tasks;
10251 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
10252 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
10253 THEN
10254 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
10255 END IF;
10256 Fnd_Msg_Pub.count_and_get (
10257 p_encoded => Fnd_Api.g_false,
10258 p_count => x_msg_count,
10259 p_data => x_msg_data
10260 );
10261 END Create_Stage_Tasks;
10262 -- SKPATHAK :: 02-MAY-2011 :: VWPE: ER:12424063 :: ENDS
10263
10264 -- VWPE 12730539:: PRAKKUM :: 26-JUL-2011 :: start
10265 --------------------------------------------------------------------
10266 -- PROCEDURE
10267 -- Delete_Stage_Task
10268 --
10269 -- PURPOSE
10270 -- To delete stage task
10271 --------------------------------------------------------------------
10272
10273 PROCEDURE Delete_Stage_Task (
10274 p_api_version IN NUMBER,
10275 p_init_msg_list IN VARCHAR2 := Fnd_Api.g_false,
10276 p_commit IN VARCHAR2 := Fnd_Api.g_false,
10277 p_validation_level IN NUMBER := Fnd_Api.g_valid_level_full,
10278 p_module_type IN VARCHAR2 := 'JSP',
10279 p_visit_task_ID IN NUMBER,
10280 x_return_status OUT NOCOPY VARCHAR2,
10281 x_msg_count OUT NOCOPY NUMBER,
10282 x_msg_data OUT NOCOPY VARCHAR2
10283 )
10284
10285 IS
10286 l_api_version CONSTANT NUMBER := 1.0;
10287 l_api_name CONSTANT VARCHAR2(30) := 'Delete_Stage_Task';
10288 L_DEBUG_KEY CONSTANT VARCHAR2(100) := 'ahl.plsql.' || G_PKG_NAME || '.' || L_API_NAME;
10289 -- local variables defined for the procedure
10290 l_visit_id NUMBER;
10291 l_task_id NUMBER;
10292 l_count NUMBER;
10293 l_msg_count NUMBER;
10294 l_msg_data VARCHAR2(2000);
10295 l_return_status VARCHAR2(1);
10296
10297 -- To find all tasks related information
10298 CURSOR c_Task (x_id IN NUMBER) IS
10299 SELECT * FROM Ahl_Visit_Tasks_VL
10300 WHERE Visit_Task_ID = x_id;
10301 c_task_rec c_Task%ROWTYPE;
10302
10303 -- To find visit related information
10304 CURSOR c_Visit (x_id IN NUMBER) IS
10305 SELECT *
10306 FROM Ahl_Visits_VL
10307 WHERE VISIT_ID = x_id;
10308 c_visit_rec c_Visit%ROWTYPE;
10309
10310 -- To find any task which have primary visit task id as deleted task id
10311 --CURSOR c_primary (x_visit_id IN NUMBER, x_task_id IN NUMBER) IS
10312 CURSOR c_primary (x_task_id IN NUMBER) IS
10313 SELECT Visit_Task_Id, Object_Version_Number,visit_id
10314 FROM Ahl_Visit_Tasks_VL
10315 WHERE --VISIT_ID = x_visit_id AND
10316 PRIMARY_VISIT_TASK_ID = x_task_id
10317 AND status_code <> 'DELETED';
10318 c_primary_rec c_primary%ROWTYPE;
10319
10320 -- To find any task links for a deleted task
10321 CURSOR c_links (x_id IN NUMBER) IS
10322 SELECT COUNT(*) FROM Ahl_Task_Links L ,Ahl_Visit_Tasks_B T
10323 WHERE (T.VISIT_TASK_ID = L.VISIT_TASK_ID OR T.VISIT_TASK_ID = L.PARENT_TASK_ID)
10324 AND T.VISIT_TASK_ID = x_id;
10325
10326 -- To find if WIP job is created for the Visit
10327 CURSOR c_wo_exist(x_task_id IN NUMBER)
10328 IS
10329 select 'X' from ahl_workorders
10330 where VISIT_TASK_ID=x_task_id;
10331
10332 -- To find if WIP job is created for the Visit
10333 CURSOR c_workorders(x_task_id IN NUMBER)
10334 IS
10335 SELECT * FROM AHL_WORKORDERS
10336 WHERE VISIT_TASK_ID=x_task_id
10337 AND STATUS_CODE<>'22' AND STATUS_CODE<> '7';
10338
10339 -- SKPATHAK :: 12-DEC-2010 :: ER 13416865
10340 -- Comment the below since this validation is not needed as this API is only called in visit cancellation flow
10341 /*CURSOR c_stage_tasks_count (c_visit_id IN NUMBER, c_stage_id IN NUMBER)
10342 IS
10343 select count(1) as TASK_COUNT
10344 from AHL_VISIT_TASKS_VL
10345 where VISIT_ID = c_visit_id
10346 AND TASK_TYPE_CODE <> 'STAGE'
10347 AND STAGE_ID = c_stage_id;
10348
10349 l_stage_tasks_count NUMBER :=0;*/
10350
10351 l_workrec c_workorders%ROWTYPE;
10352 l_workorder_rec AHL_PRD_WORKORDER_PVT.PRD_WORKORDER_REC;
10353 l_workoper_tbl AHL_PRD_WORKORDER_PVT.PRD_WORKOPER_TBL;
10354 l_wip_load_flag VARCHAR2(1):= 'Y';
10355 l_workorder_present VARCHAR2(1);
10356 l_entl_rec_tbl AHL_WARRANTY_ENTL_PVT.Warranty_Entl_Tbl_Type; --salogan added for supplier warranty
10357
10358 BEGIN
10359 IF (l_log_procedure >= l_log_current_level) THEN
10360 fnd_log.string(l_log_procedure,
10361 L_DEBUG_KEY ||'.begin',
10362 'At the start of PL SQL procedure.');
10363 END IF;
10364
10365 --------------------- initialize -----------------------
10366 SAVEPOINT Delete_Stage_Task;
10367
10368 IF Fnd_Api.to_boolean (p_init_msg_list) THEN
10369 Fnd_Msg_Pub.initialize;
10370 END IF;
10371
10372 -- Initialize API return status to success
10373 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
10374
10375 -- Standard call to check for call compatibility.
10376 IF NOT Fnd_Api.compatible_api_call(
10377 l_api_version,
10378 p_api_version,
10379 l_api_name,
10380 G_PKG_NAME
10381 ) THEN
10382 RAISE Fnd_Api.g_exc_unexpected_error;
10383 END IF;
10384
10385 ------------------------Start of API Body------------------------------------
10386 IF (l_log_statement >= l_log_current_level) THEN
10387 fnd_log.string(l_log_statement,
10388 L_DEBUG_KEY,
10389 ':Task Id' || p_visit_task_ID);
10390 END IF;
10391
10392 -- To check if the input taskid exists in task entity.
10393 OPEN c_Task(p_Visit_Task_ID);
10394 FETCH c_Task INTO c_task_rec;
10395
10396 IF c_Task%NOTFOUND THEN
10397 CLOSE c_Task;
10398 IF Fnd_Msg_Pub.check_msg_level(Fnd_Msg_Pub.g_msg_lvl_error) THEN
10399 Fnd_Message.set_name('AHL', 'AHL_API_RECORD_NOT_FOUND');
10400 Fnd_Msg_Pub.ADD;
10401 END IF;
10402 RAISE Fnd_Api.g_exc_error;
10403 END IF;
10404 CLOSE c_Task;
10405
10406 l_visit_id := c_task_rec.visit_id;
10407 l_task_id := p_Visit_Task_Id;
10408
10409 -- To find the visit related information
10410 OPEN c_Visit(c_task_rec.visit_id);
10411 FETCH c_Visit INTO c_visit_rec;
10412 CLOSE c_Visit;
10413
10414 -- SKPATHAK :: 12-DEC-2010 :: ER 13416865
10415 -- Comment the below since this validation is not needed as this API is only called in vis1t cancellation flow
10416 /*OPEN c_stage_tasks_count (c_visit_rec.visit_id, c_task_rec.STAGE_ID);
10417 FETCH c_stage_tasks_count INTO l_stage_tasks_count;
10418 CLOSE c_stage_tasks_count;
10419
10420 IF l_stage_tasks_count>0 THEN
10421 Fnd_Message.SET_NAME('AHL','AHL_VWP_STG_NO_DEL_HAV_TASKS');
10422 Fnd_Msg_Pub.ADD;
10423 RAISE FND_API.G_EXC_ERROR;
10424 END IF;*/
10425
10426
10427 OPEN c_workorders(c_task_rec.visit_task_id);
10428 FETCH c_workorders INTO l_workrec;
10429
10430 IF c_workorders%FOUND THEN
10431
10432 IF l_workrec.status_code='17' THEN
10433 l_workorder_rec.workorder_id:=l_workrec.workorder_id;
10434 l_workorder_rec.visit_task_id:=p_visit_task_id;
10435
10436 Get_WorkOrder_Attribs(
10437 p_x_prd_workorder_rec => l_workorder_rec
10438 );
10439
10440 l_msg_count := FND_MSG_PUB.count_msg;
10441 IF l_msg_count > 0 THEN
10442 x_msg_count := l_msg_count;
10443 x_return_status := FND_API.G_RET_STS_ERROR;
10444 RAISE FND_API.G_EXC_ERROR;
10445 END IF;
10446
10447 l_workorder_rec.wip_entity_id := null;
10448 l_workorder_rec.STATUS_CODE:='22'; --Deleted Status Refer DLD to Verify.
10449
10450 IF (l_log_statement >= l_log_current_level) THEN
10451 fnd_log.string(l_log_statement,
10452 L_DEBUG_KEY,
10453 'Before Calling AHL_PRD_WORKORDER_PVT.update_job');
10454 END IF;
10455 AHL_PRD_WORKORDER_PVT.update_job
10456 (
10457 p_api_version => 1.0,
10458 p_init_msg_list => fnd_api.g_false,
10459 p_commit => fnd_api.g_false,
10460 p_validation_level => p_validation_level,
10461 p_default => fnd_api.g_false,
10462 p_module_type => NULL,
10463 x_return_status => x_return_status,
10464 x_msg_count => x_msg_count,
10465 x_msg_data => x_msg_data,
10466 p_wip_load_flag => 'Y',
10467 p_x_prd_workorder_rec => l_workorder_rec,
10468 p_x_prd_workoper_tbl => l_workoper_tbl
10469 );
10470
10471 IF (l_log_statement >= l_log_current_level) THEN
10472 fnd_log.string(l_log_statement,
10473 L_DEBUG_KEY,
10474 'After Calling AHL_PRD_WORKORDER_PVT.update_job, Return Status = ' || x_return_status);
10475 END IF;
10476
10477 l_msg_count := FND_MSG_PUB.count_msg;
10478 IF l_msg_count > 0 OR NVL(x_return_status,'x') <> FND_API.G_RET_STS_SUCCESS THEN
10479 x_msg_count := l_msg_count;
10480 x_return_status := FND_API.G_RET_STS_ERROR;
10481 RAISE FND_API.G_EXC_ERROR;
10482 END IF;
10483
10484 ELSE
10485 -- if status is not draft
10486 Fnd_Message.set_name ('AHL', 'AHL_VWP_TSK_CANNOT_DEL');
10487 Fnd_Msg_Pub.ADD;
10488 RAISE FND_API.G_EXC_ERROR;
10489 END IF; -- End of Job Status
10490 CLOSE c_workorders;
10491
10492 ELSE
10493
10494 CLOSE c_workorders;
10495
10496 END IF; -- End of check if the job is for the task
10497
10498 OPEN c_wo_exist(c_task_rec.visit_task_id);
10499 FETCH c_wo_exist INTO l_workorder_present;
10500
10501 IF c_wo_exist%FOUND THEN
10502 l_workorder_present :='Y';
10503 ELSE
10504 l_workorder_present :='N';
10505 END IF;
10506 CLOSE c_wo_exist;
10507
10508 IF (l_log_statement >= l_log_current_level) THEN
10509 fnd_log.string(l_log_statement,
10510 L_DEBUG_KEY,
10511 'Value of l_workorder_present = ' || l_workorder_present);
10512 END IF;
10513
10514 UPDATE AHL_VISIT_TASKS_B
10515 SET STATUS_CODE='DELETED',UNIT_EFFECTIVITY_ID=NULL,
10516 OBJECT_VERSION_NUMBER=OBJECT_VERSION_NUMBER+1
10517 WHERE VISIT_TASK_ID=l_task_id;
10518
10519 IF (l_log_statement >= l_log_current_level) THEN
10520 fnd_log.string(l_log_statement,
10521 L_DEBUG_KEY,
10522 'Updation of the status to DELETED');
10523 END IF;
10524
10525 ------------------------End of API Body------------------------------------
10526 IF Fnd_Api.to_boolean (p_commit) THEN
10527 COMMIT;
10528 END IF;
10529
10530 Fnd_Msg_Pub.count_and_get (
10531 p_encoded => Fnd_Api.g_false,
10532 p_count => x_msg_count,
10533 p_data => x_msg_data
10534 );
10535
10536 IF (l_log_procedure >= l_log_current_level) THEN
10537 fnd_log.string(l_log_procedure,
10538 L_DEBUG_KEY ||'.end',
10539 'At the end of PL SQL procedure. Return Status = ' || x_return_status);
10540 END IF;
10541 EXCEPTION
10542 WHEN Fnd_Api.g_exc_error THEN
10543 ROLLBACK TO Delete_Stage_Task;
10544 x_return_status := Fnd_Api.g_ret_sts_error;
10545 Fnd_Msg_Pub.count_and_get (
10546 p_encoded => Fnd_Api.g_false,
10547 p_count => x_msg_count,
10548 p_data => x_msg_data
10549 );
10550 WHEN Fnd_Api.g_exc_unexpected_error THEN
10551 ROLLBACK TO Delete_Stage_Task;
10552 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
10553 Fnd_Msg_Pub.count_and_get (
10554 p_encoded => Fnd_Api.g_false,
10555 p_count => x_msg_count,
10556 p_data => x_msg_data
10557 );
10558 WHEN OTHERS THEN
10559 ROLLBACK TO Delete_Stage_Task;
10560 x_return_status := Fnd_Api.g_ret_sts_unexp_error ;
10561 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
10562 THEN
10563 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
10564 END IF;
10565 Fnd_Msg_Pub.count_and_get (
10566 p_encoded => Fnd_Api.g_false,
10567 p_count => x_msg_count,
10568 p_data => x_msg_data
10569 );
10570 END Delete_Stage_Task;
10571 -- VWPE 12730539:: PRAKKUM :: 26-JUL-2011 :: end
10572
10573 END AHL_VWP_TASKS_PVT;