[Home] [Help]
PACKAGE BODY: APPS.AHL_PRD_PRINT_PVT
Source
1 PACKAGE BODY "AHL_PRD_PRINT_PVT" AS
2 /* $Header: AHLVPPRB.pls 120.43.12020000.2 2012/12/07 11:40:50 sareepar ship $ */
3
4 G_PKG_NAME VARCHAR2(30) :='AHL_PRD_PRINT_PVT';
5
6 -- Constants to identify locator and item number elements
7 G_ITEM_NUMBER_CHAR NUMBER := 10;
8 G_LOCATOR_CHAR NUMBER := 15;
9
10
11 --moved to specification.
12 --FUNCTION get_xsl_clob RETURN CLOB;
13
14 TYPE PDF_REC_TYPE IS RECORD(job_card_id VARCHAR2(100),pdf_path VARCHAR2(2000),pdf_ErrorMessage VARCHAR2(2000), status VARCHAR2(240));
15 TYPE PDF_TABLE_TYPE IS TABLE OF PDF_REC_TYPE INDEX BY BINARY_INTEGER;
16 TYPE workorder_id_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
17 PROCEDURE parse_enigma_response(
18 p_workpackage_id IN VARCHAR2,
19 p_enigma_response IN CLOB,
20 x_pdf_table OUT NOCOPY PDF_TABLE_TYPE
21 );
22
23 procedure build_qa_query(
24 p_plan_id IN NUMBER,
25 p_collection_id IN NUMBER,
26 x_query_string OUT NOCOPY VARCHAR2
27 );
28
29 Procedure build_xml_qa_query(
30 p_plan_id IN NUMBER,
31 p_collection_id IN NUMBER,
32 x_query_string OUT NOCOPY VARCHAR2
33 );
34
35 PROCEDURE Get_Route_KFF_Desc (
36 p_concat_segs IN VARCHAR2,
37 x_mti_seglist OUT NOCOPY fnd_flex_ext.SegmentArray,
38 x_return_status OUT NOCOPY VARCHAR2);
39
40 PROCEDURE Get_job_card_det ( l_merged_lob IN OUT NOCOPY CLOB,
41 l_wo_id_tbl IN OUT NOCOPY workorder_id_tbl_type,
42 x_return_status OUT NOCOPY VARCHAR2);
43
44 TYPE EMP_DETAILS_REC_TYPE IS RECORD(employee_id NUMBER, employee_name VARCHAR2(240));
45
46 -- Table to hold employee_id and employee name
47 TYPE EMP_TABLE_TYPE IS TABLE OF EMP_DETAILS_REC_TYPE INDEX BY BINARY_INTEGER;
48
49 ----------------------------------------------------------------------------
50 --Function which returns offset for current server timezone as per the profile
51 --setting in SERVER_TIMEZONE_ID
52 ----------------------------------------------------------------------------
53 FUNCTION get_tz_offset
54 RETURN VARCHAR2
55 IS
56
57 CURSOR c_get_tz_code
58 IS
59 SELECT
60 timezone_code
61 FROM
62 fnd_timezones_vl
63 WHERE
64 upgrade_tz_id = fnd_profile.VALUE('SERVER_TIMEZONE_ID');
65
66 CURSOR c_get_tz_offset(c_tz_code IN VARCHAR2)
67 IS
68 SELECT substr(tz_offset(c_tz_code),0,6)
69 FROM
70 dual;
71
72 l_tz_offset VARCHAR2(100);
73 l_tz_code VARCHAR2(50);
74
75 BEGIN
76 -- Code added for bug # 5199935
77 -- Ref https://metalink.oracle.com/metalink/plsql/f?p=130:14:2578122075547395620::::p14_database_id,p14_docid,
78 --p14_show_header,p14_show_help,p14_black_frame,p14_font:NOT,340512.1,1,1,1,helvetica#aref2
79 OPEN c_get_tz_code;
80 FETCH c_get_tz_code INTO l_tz_code;
81 CLOSE c_get_tz_code;
82
83 OPEN c_get_tz_offset(l_tz_code);
84 FETCH c_get_tz_offset INTO l_tz_offset;
85 CLOSE c_get_tz_offset;
86 -- Code added for bug # 5199935
87
88 RETURN l_tz_offset;
89 END get_tz_offset;
90
91 ------------------------------------------------------------------------------------------------
92 -- Procedure to generate XML data for workorder(s).
93 ------------------------------------------------------------------------------------------------
94 PROCEDURE Gen_Wo_Xml(
95 p_api_version IN NUMBER :=1.0,
96 p_init_msg_list IN VARCHAR2 :=FND_API.G_FALSE,
97 p_commit IN VARCHAR2 :=FND_API.G_FALSE,
98 p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL,
99 p_default IN VARCHAR2 :=FND_API.G_FALSE,
100 p_module_type IN VARCHAR2 :=NULL,
101 x_return_status OUT NOCOPY VARCHAR2,
102 x_msg_count OUT NOCOPY NUMBER,
103 x_msg_data OUT NOCOPY VARCHAR2,
104 p_workorders_tbl IN WORKORDER_TBL_TYPE,
105 p_employee_id IN NUMBER,
106 p_user_role IN VARCHAR2,-- required for resource transactions
107 p_material_req_flag IN VARCHAR2 := 'N',--not required any more
108 x_xml_data OUT NOCOPY CLOB,
109 p_concurrent_flag IN VARCHAR2 := 'N'-- pass as N non concurrent programs
110 )
111 IS
112
113
114
115 --1. Gather workorder header details.
116 l_wo_details VARCHAR2(5000) := '
117 SELECT
118 wo.job_number,
119 wo.job_description,
120 wo.job_status_meaning,
121 wo.visit_number,
122 wo.organization_name,
123 wo.department_name,
124 decode(wo.scheduled_start_date, null, null, TO_CHAR(wo.scheduled_start_date,''YYYY-MM-DD'')||''T''||TO_CHAR(wo.scheduled_start_date, ''hh24:mi:ss'')||AHL_PRD_PRINT_PVT.get_tz_offset ) scheduled_start_date,
125 decode(wo.scheduled_end_date, null, null, TO_CHAR(wo.scheduled_end_date, ''YYYY-MM-DD'')||''T''||TO_CHAR(wo.scheduled_end_date, ''hh24:mi:ss'')||AHL_PRD_PRINT_PVT.get_tz_offset ) scheduled_end_date,
126 decode(wo.actual_start_date, null, null, TO_CHAR(wo.actual_start_date,''YYYY-MM-DD'')||''T''||TO_CHAR(wo.actual_start_date, ''hh24:mi:ss'')||AHL_PRD_PRINT_PVT.get_tz_offset )actual_start_date,
127 decode(wo.actual_end_date, null, null, TO_CHAR(wo.actual_end_date, ''YYYY-MM-DD'')||''T''||TO_CHAR(wo.actual_end_date, ''hh24:mi:ss'')||AHL_PRD_PRINT_PVT.get_tz_offset ) actual_end_date,
128 wo.unit_name,
129 wo.wo_part_number,
130 wo.serial_number,
131 wo.mr_title,
132 ro.ROUTE_NO route_title
133 FROM
134 AHL_SEARCH_WORKORDERS_V wo,
135 ahl_routes_app_v ro, ';
136
137
138 l_wo_details_where VARCHAR2(500) := ' WHERE
139 wo.route_id = ro.route_id(+) and
140 WODE.workorder_id = wo.workorder_id and
141 wo.workorder_id = ';
142
143 --2. Gather turnover notes for the workorder.
144 l_to_notes VARCHAR2(3000) := '
145 SELECT
146 decode(ENTERED_DATE, null, null, TO_CHAR(ENTERED_DATE, ''YYYY-MM-DD'')||''T''||TO_CHAR(ENTERED_DATE, ''hh24:mi:ss'')||AHL_PRD_PRINT_PVT.get_tz_offset ) ENTERED_DATE,
147 ENTERED_BY_NAME ,
148 notes
149 FROM
150 JTF_NOTES_VL
151 WHERE
152 source_object_code = ''AHL_WO_TURNOVER_NOTES'' and
153 source_object_id = ';
154
155 --3. Gather operation details.
156 l_op_details_1 VARCHAR2(500) := '
157 SELECT
158 OPERATION_SEQUENCE_NUM,
159 OPERATION_CODE,
160 DESCRIPTION,
161 STATUS,';
162
163 --AHL_PRD_UTIL_PKG.Get_Op_TotalHours_Assigned(WIP_ENTITY_ID,operation_sequence_num) "Total_Hours",
164 --AHL_PRD_UTIL_PKG.Get_Op_transacted_hours(WIP_ENTITY_ID,operation_sequence_num) "Hours_Worked",
165
166 l_op_details_2 VARCHAR2(1000) := '
167 decode(SCHEDULED_START_DATE, null, null, TO_CHAR(SCHEDULED_START_DATE, ''YYYY-MM-DD'')||''T''||TO_CHAR(SCHEDULED_START_DATE, ''hh24:mi:ss'')||AHL_PRD_PRINT_PVT.get_tz_offset )SCHEDULED_START_DATE,
168 decode(ACTUAL_START_DATE, null, null, TO_CHAR(ACTUAL_START_DATE, ''YYYY-MM-DD'')||''T''||TO_CHAR(ACTUAL_START_DATE, ''hh24:mi:ss'')||AHL_PRD_PRINT_PVT.get_tz_offset ) ACTUAL_START_DATE,
169 decode(ACTUAL_END_DATE, null, null, TO_CHAR(ACTUAL_END_DATE, ''YYYY-MM-DD'')||''T''||TO_CHAR(ACTUAL_END_DATE, ''hh24:mi:ss'')||AHL_PRD_PRINT_PVT.get_tz_offset ) ACTUAL_END_DATE
170 FROM
171 ahl_workorder_operations_v
172 WHERE
173 workorder_operation_id = ';
174
175
176 --4. Gather material requirements.
177 l_wo_materials VARCHAR2(3000) := '
178 SELECT
179 CONCATENATED_SEGMENTS,
180 OPERATION_SEQUENCE,
181 DESCRIPTION,
182 REQUESTED_QUANTITY required_quantity,
183 decode(REQUESTED_DATE, null, null, TO_CHAR(REQUESTED_DATE, ''YYYY-MM-DD'')||''T''||TO_CHAR(REQUESTED_DATE, ''hh24:mi:ss'')||AHL_PRD_PRINT_PVT.get_tz_offset ) required_date,
184 SCHEDULE_QUANTITY,
185 decode(SCHEDULE_DATE, null, null, TO_CHAR(SCHEDULE_DATE, ''YYYY-MM-DD'')||''T''||TO_CHAR(SCHEDULE_DATE, ''hh24:mi:ss'')||AHL_PRD_PRINT_PVT.get_tz_offset ) SCHEDULE_DATE,
186 ISSUED_QTY,
187 UOM
188 FROM
189 AHL_JOB_OPER_MATERIALS_V
190 WHERE
191 WORKORDER_ID = ';
192
193 --9. gather document requirements.
194 --1. docs associated to Routes
195 l_route_doc VARCHAR2(1000) := '
196 SELECT
197 DOC.DOCUMENT_NO,
198 DOC.DOCUMENT_TITLE,
199 DOC.ASO_OBJECT_TYPE_DESC,
200 DOC.REVISION_NO,
201 DOC.CHAPTER,
202 DOC.SECTION,
203 DOC.SUBJECT,
204 DOC.PAGE,
205 DOC.FIGURE,
206 DOC.NOTE
207 FROM
208 AHL_WORKORDERS WO,
209 AHL_DOCUMENT_ASSOS_V DOC
210 WHERE
211 WO.ROUTE_ID = DOC.ASO_OBJECT_ID
212 AND DOC.ASO_OBJECT_TYPE_CODE = ''ROUTE''
213 AND WO.WORKORDER_ID = ';
214
215 --2. docs associated to operations
216 l_op_doc VARCHAR2(2000) := '
217 UNION ALL
218 SELECT
219 DOC.DOCUMENT_NO,
220 DOC.DOCUMENT_TITLE,
221 DOC.ASO_OBJECT_TYPE_DESC,
222 DOC.REVISION_NO,
223 DOC.CHAPTER,
224 DOC.SECTION,
225 DOC.SUBJECT,
226 DOC.PAGE,
227 DOC.FIGURE,
228 DOC.NOTE
229 FROM
230 AHL_WORKORDER_OPERATIONS WOP,
231 AHL_DOCUMENT_ASSOS_V DOC
232 WHERE
233 WOP.OPERATION_ID = DOC.ASO_OBJECT_ID
234 AND DOC.ASO_OBJECT_TYPE_CODE = ''OPERATION''
235 AND WOP.WORKORDER_ID = ';
236
237 -- 3. docs associated to MRs
238 l_mr_doc VARCHAR2(2000) := '
239 UNION ALL
240 SELECT
241 DOC.DOCUMENT_NO,
242 DOC.DOCUMENT_TITLE,
243 DOC.ASO_OBJECT_TYPE_DESC,
244 DOC.REVISION_NO,
245 DOC.CHAPTER,
246 DOC.SECTION,
247 DOC.SUBJECT,
248 DOC.PAGE,
249 DOC.FIGURE,
250 DOC.NOTE
251 FROM
252 AHL_WORKORDERS WO,
253 AHL_VISIT_TASKS_B VST,
254 AHL_DOCUMENT_ASSOS_V DOC
255 WHERE
256 WO.VISIT_TASK_ID = VST.VISIT_TASK_ID
257 AND VST.MR_ID = DOC.ASO_OBJECT_ID
258 AND DOC.ASO_OBJECT_TYPE_CODE = ''MR''
259 AND WO.WORKORDER_ID = ';
260
261 --4. Docs associated to MCs
262 l_mc_doc VARCHAR2(2000) := '
263 UNION ALL
264 -- MC DOCUMENT ASSOCIATIONS
265 SELECT
266 DOC.DOCUMENT_NO,
267 DOC.DOCUMENT_TITLE,
268 DOC.ASO_OBJECT_TYPE_DESC,
269 DOC.REVISION_NO,
270 DOC.CHAPTER,
271 DOC.SECTION,
272 DOC.SUBJECT,
273 DOC.PAGE,
274 DOC.FIGURE,
275 DOC.NOTE
276 FROM
277 AHL_WORKORDERS WO,
278 CSI_II_RELATIONSHIPS CSI,
279 AHL_VISIT_TASKS_B VTS,
280 AHL_DOCUMENT_ASSOS_V DOC
281 WHERE
282 WO.VISIT_TASK_ID = VTS.VISIT_TASK_ID
283 AND VTS.INSTANCE_ID = CSI.SUBJECT_ID
284 AND CSI.RELATIONSHIP_TYPE_CODE = ''COMPONENT-OF''
285 AND (SYSDATE BETWEEN NVL(CSI.ACTIVE_START_DATE, SYSDATE) AND NVL(CSI.ACTIVE_END_DATE, SYSDATE))
286 AND CSI.POSITION_REFERENCE = TO_CHAR(DOC.ASO_OBJECT_ID)
287 AND DOC.ASO_OBJECT_TYPE_CODE = ''MC''
288 AND WO.WORKORDER_ID = ';
289
290 --5. Docs associated to PC node
291 l_pc_doc VARCHAR2(2000) := '
292 UNION ALL
293 SELECT
294 DOC.DOCUMENT_NO,
295 DOC.DOCUMENT_TITLE,
296 DOC.ASO_OBJECT_TYPE_DESC,
297 DOC.REVISION_NO,
298 DOC.CHAPTER,
299 DOC.SECTION,
300 DOC.SUBJECT,
301 DOC.PAGE,
302 DOC.FIGURE,
303 DOC.NOTE
304 FROM
305 AHL_WORKORDERS WO,
306 AHL_PC_ASSOCIATIONS PCA,
307 AHL_VISIT_TASKS_B VTS,
308 AHL_DOCUMENT_ASSOS_V DOC
309 WHERE
310 WO.VISIT_TASK_ID=VTS.VISIT_TASK_ID
311 AND AHL_UTIL_UC_PKG.GET_UC_HEADER_ID(VTS.INSTANCE_ID) = PCA.UNIT_ITEM_ID
312 AND PCA.PC_NODE_ID = DOC.ASO_OBJECT_ID
313 AND DOC.ASO_OBJECT_TYPE_CODE = ''PC''
314 AND WO.WORKORDER_ID = ';
315
316
317 CURSOR get_wo_employees(p_wo_id IN NUMBER, p_employee_id IN NUMBER) IS
318 SELECT DISTINCT
319 wass.employee_id,
320 pf.full_name employee_name
321 FROM
322 ahl_Work_Assignments wass,
323 ahl_Operation_Resources opr,
324 ahl_Workorder_Operations wop,
325 per_people_f pf,
326 per_Person_Types Pt
327 WHERE
328 wass.Operation_Resource_Id = opr.operation_resource_id and
329 opr.Workorder_Operation_Id = wop.workorder_operation_id and
330 wop.workorder_id = p_wo_id and
331 wass.employee_id = nvl(p_employee_id, wass.employee_id) and
332 wass.employee_id = pf.PERSON_ID and
333 pt.Person_Type_Id = Pf.Person_Type_Id And
334 pt.System_Person_Type ='EMP' And
335 ( Trunc(Sysdate) Between Pf.Effective_Start_Date And
336 Pf.Effective_End_Date);
337
338 -- cursor to get operations of a workorder
339 CURSOR c_wo_operations(p_workorder_id IN NUMBER) IS
340 SELECT
341 workorder_operation_id,
342 operation_sequence_num
343 FROM
344 ahl_workorder_operations
345 WHERE
346 workorder_id = p_workorder_id;
347
348 --Cursor for getting workorder plan_id and collection id
349 CURSOR get_wo_qa_ids_csr(p_workorder_id IN NUMBER) IS
350 SELECT
351 PLAN_ID,
352 COLLECTION_ID
353 FROM
354 AHL_WORKORDERS
355 WHERE
356 workorder_id = p_workorder_id;
357
358 --Cursor for getting workorder operation plan_id and collection id
359 CURSOR get_op_qa_ids_csr(p_wo_id IN NUMBER) IS
360 SELECT
361 OPERATION_SEQUENCE_NUM, --balaji added for Bug 6777371
362 PLAN_ID,
363 COLLECTION_ID
364 FROM
365 AHL_WORKORDER_OPERATIONS
366 WHERE
367 workorder_id = p_wo_id;
368
369 --declare all local variables here.
370 l_api_name CONSTANT VARCHAR2(30) := 'Gen_Wo_Xml';
371 l_api_version CONSTANT NUMBER := 1.0;
372 l_wo_details_lob CLOB;
373 l_merged_lob CLOB;
374 l_temp_lob CLOB;
375 l_ton_lob CLOB;
376 l_op_lob CLOB;
377 l_wo_mat_lob CLOB;
378 l_wo_doc_lob CLOB;
379 l_wo_qa_lob CLOB;
380 l_op_qa_lob CLOB;
381 l_offset NUMBER;
382 l_next_offset NUMBER;
383 wo_count NUMBER;
384 l_emp_tbl EMP_TABLE_TYPE;
385 l_employee_id NUMBER;
386 l_dummy_string VARCHAR2(1000);
387 i NUMBER;
388 j NUMBER;
389 l_plan_id NUMBER;
390 l_collection_id NUMBER;
391 l_op_seq_num NUMBER; --balaji added for Bug 6777371
392 l_emp_name VARCHAR2(100);
393 l_query_string VARCHAR2(30000); --pdoki changed for Bug 6777371
394 --l_op_details VARCHAR2(2000);
395 l_op_con_query VARCHAR2(3000);
396 l_wo_con_query VARCHAR2(3000);
397 l_count NUMBER;
398 l_user_role VARCHAR2(40);
399 l_fnd_offset NUMBER;
400 l_chunk_size NUMBER;
401 l_clob_size NUMBER;
402
403
404 context DBMS_XMLGEN.ctxHandle;
405 l_x_res_txn_tbl AHL_PRD_RESOURCE_TRANX_PVT.PRD_RESOURCE_TXNS_TBL;
406
407 BEGIN
408 --set the operating unit.
409 mo_global.init('AHL');
410
411 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
412
413 fnd_log.string
414 (
415 fnd_log.level_procedure,
416 'ahl.plsql.'||g_pkg_name||'.'||l_api_name||'.begin',
417 'At the start of Gen_Wo_Xml'
418 );
419 END IF;
420
421 --SAVEPOINT Gen_Wo_Xml;
422
423
424 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
425 fnd_log.string
426 (
427 fnd_log.level_statement,
428 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
429 'API input Parameters '
430 );
431 fnd_log.string
432 (
433 fnd_log.level_statement,
434 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
435 '************************'
436 );
437 fnd_log.string
438 (
439 fnd_log.level_statement,
440 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
441 'p_employee_id -> '||p_employee_id
442 );
443 fnd_log.string
444 (
445 fnd_log.level_statement,
446 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
447 'p_user_role -> '||p_user_role
448 );
449 fnd_log.string
450 (
451 fnd_log.level_statement,
452 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
453 'p_concurrent_flag -> '||p_concurrent_flag
454 );
455 fnd_log.string
456 (
457 fnd_log.level_statement,
458 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
459 'p_workorders_tbl size -> '||p_workorders_tbl.count
460 );
461
462 fnd_log.string
463 (
464 fnd_log.level_statement,
465 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
466 'mo operating unit -> '||mo_global.get_current_org_id()
467 );
468 fnd_log.string
469 (
470 fnd_log.level_statement,
471 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
472 'AHL_PRD_PRINT_PVT.get_tz_offset -> '||AHL_PRD_PRINT_PVT.get_tz_offset
473 );
474 END IF;
475
476 -- Initialize return status to success initially
477 x_return_status:= FND_API.G_RET_STS_SUCCESS;
478
479 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
480 p_api_version,
481 l_api_name,G_PKG_NAME)
482 THEN
483 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
484 END IF;
485
486 -- Initialize message list if p_init_msg_list is set to TRUE.
487 IF FND_API.to_boolean(p_init_msg_list) THEN
488 FND_MSG_PUB.initialize;
489 END IF;
490
491 -- Open a temporary lob for merging the contents.
492 dbms_lob.createTemporary( l_merged_lob, true );
493 dbms_lob.open( l_merged_lob, dbms_lob.lob_readwrite );
494
495 --determine the user role based on employee parameter if it is not passed already in the input. Concurrent program is an example
496 l_user_role := p_user_role;
497
498 IF p_user_role IS NULL
499 THEN
500 l_user_role := AHL_PRD_WO_LOGIN_PVT.Get_User_Role;
501 END IF;
502
503 -- XML generated with dbms_xmlgen doesnt have encoding information. so we need to manually insert into the resultant CLOB.
504 dbms_lob.write(l_merged_lob,length('<?xml version="1.0" encoding="UTF-8"?>'),1,'<?xml version="1.0" encoding="UTF-8"?>');
505
506 --Put the root node to maintain the XML completeness.
507 dbms_lob.write(l_merged_lob, length('<G_WORKCARD_LIST>'),length(l_merged_lob)+1, '<G_WORKCARD_LIST>');
508
509 /***************************************************************************************
510 *Start Actual API processing here
511 ***************************************************************************************/
512 -- Process all workorders in the input.
513 IF p_workorders_tbl.COUNT > 0 THEN
514 FOR wo_count IN p_workorders_tbl.FIRST .. p_workorders_tbl.LAST
515 LOOP
516 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
517 fnd_log.string
518 (
519 fnd_log.level_statement,
520 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
521 'p_workorders_tbl('||wo_count||') --> '||p_workorders_tbl(wo_count)
522 );
523 END IF;
524
525 i := 1;
526 FOR emp_rec in get_wo_employees(p_workorders_tbl(wo_count), p_employee_id)
527 LOOP
528 l_emp_tbl(i).employee_id := emp_rec.employee_id;
529 l_emp_tbl(i).employee_name := emp_rec.employee_name;
530 i := i + 1;
531 END LOOP;
532
533 -- If no employees are assigned to work on the workcard
534 -- the report card has to be printed atleast once. hence
535 -- put some dummy value for the loop to get through.
536 IF l_emp_tbl.COUNT = 0 THEN--AND p_employee_id IS NULL THEN
537 l_emp_tbl(1).employee_id := -9999;
538 END IF;
539
540 IF l_emp_tbl.COUNT > 0 THEN
541 FOR l_count IN l_emp_tbl.FIRST..l_emp_tbl.LAST
542 LOOP
543
544 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
545 fnd_log.string
546 (
547 fnd_log.level_statement,
548 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
549 'l_emp_tbl('||l_count||') --> '||l_emp_tbl(l_count).employee_id
550 );
551 END IF;
552
553 --copy the workcard start tag
554 dbms_lob.write(l_merged_lob, length('<G_WORKCARD>'),length(l_merged_lob)+1, '<G_WORKCARD>');
555
556 /********************************************************************
557 * Create XML data related to employee
558 ********************************************************************/
559 -- add employee details to the XML output
560 IF l_emp_tbl(l_count).employee_name IS NOT NULL
561 THEN
562
563 dbms_lob.write(
564 l_merged_lob,
565 length('<G_EMP_NAME><EMP_NAME>'||l_emp_tbl(l_count).employee_name),
566 length(l_merged_lob)+1, '<G_EMP_NAME><EMP_NAME>'||dbms_xmlgen.convert(l_emp_tbl(l_count).employee_name)
567 );
568
569 dbms_lob.write(
570 l_merged_lob,
571 length('</EMP_NAME></G_EMP_NAME>'),
572 length(l_merged_lob)+1,
573 '</EMP_NAME></G_EMP_NAME>'
574 );
575 END IF;
576
577 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
578 fnd_log.string
579 (
580 fnd_log.level_statement,
581 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
582 'After Processing Employee info '
583 );
584 END IF;
585
586 /********************************************************************
587 * Create XML data related workorder header
588 ********************************************************************/
589
590 -- Query and processing workorder details
591 l_wo_con_query := l_wo_details || '(
592 SELECT
593 wop.workorder_id,
594 TO_CHAR(MIN(AHL_PRD_UTIL_PKG.Get_Op_Assigned_Start_Date('||
595 l_emp_tbl(l_count).employee_id ||
596 ',wop.workorder_id
597 ,wop.operation_sequence_num
598 ,''LINE''
599 )),
600 ''YYYY-MM-DD hh:mm:ss+HH:MM'') Assigned_Start_Date,
601 TO_CHAR(MAX(AHL_PRD_UTIL_PKG.Get_Op_Assigned_Start_Date('||
602 l_emp_tbl(l_count).employee_id ||
603 ',wop.workorder_id
604 ,wop.operation_sequence_num
605 ,''LINE'')),
606 ''YYYY-MM-DD hh:mm:ss+HH:MM'') Assigned_End_Date
607 FROM
608 AHL_WORKORDER_OPERATIONS WOP
609 GROUP BY workorder_id
610 ) WODE ';
611
612 l_wo_con_query := l_wo_con_query || l_wo_details_where;
613
614 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
615 fnd_log.string
616 (
617 fnd_log.level_statement,
618 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
619 'Workorder details query string --->'||l_wo_con_query
620 );
621 END IF;
622
623
624 context := dbms_xmlgen.newContext(l_wo_con_query || p_workorders_tbl(wo_count));
625 dbms_xmlgen.setRowsetTag(context,null);
626 dbms_xmlgen.setRowTag(context,'G_WORKORDER');
627 dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
628 l_wo_details_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
629 dbms_xmlgen.closeContext(context);
630
631 -- free the temp variable for query after every iteration.
632 l_wo_con_query := null;
633
634 -- Write to lob only when some data exists.
635 IF dbms_lob.getlength(l_wo_details_lob) > 0
636 THEN
637 -- The generated XML itself puts the XML instruction tag which is already there
638 -- in final CLOB. so copy only rest of the details to the final output.
639 l_offset := dbms_lob.INSTR(l_wo_details_lob, '>');
640
641 -- copy workorder details into final lob
642 dbms_lob.copy(l_merged_lob, l_wo_details_lob, dbms_lob.getlength(l_wo_details_lob), dbms_lob.getlength(l_merged_lob)+1, l_offset+ 1);
643 END IF;
644
645 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
646 fnd_log.string
647 (
648 fnd_log.level_statement,
649 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
650 'After Processing Workorder Header Info '
651 );
652 END IF;
653
654 /********************************************************************
655 * Create XML data related to workorder quality
656 ********************************************************************/
657
658 -- Query and processing workorder details
659 --get the collection_id and plan_id for the workorder.
660 OPEN get_wo_qa_ids_csr(p_workorders_tbl(wo_count));
661 FETCH get_wo_qa_ids_csr INTO l_plan_id, l_collection_id;
662 CLOSE get_wo_qa_ids_csr;
663
664 IF l_plan_id IS NOT NULL AND l_collection_id IS NOT NULL
665 THEN
666
667 build_qa_query(
668 p_plan_id => l_plan_id,
669 p_collection_id => l_collection_id,
670 x_query_string => l_query_string
671 );
672
673 context := dbms_xmlgen.newContext(l_query_string);
674 dbms_xmlgen.setRowsetTag(context,'G_WO_QA_LIST');
675 dbms_xmlgen.setRowTag(context,'G_WO_QA');
676 dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
677 l_wo_qa_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
678 dbms_xmlgen.closeContext(context);
679
680 -- Write to lob only when some data exists.
681 IF dbms_lob.getlength(l_wo_qa_lob) > 0
682 THEN
683 -- The generated XML itself puts the XML instruction tag which is already there
684 -- in final CLOB. so copy only rest of the details to the final output.
685 l_offset := dbms_lob.INSTR(l_wo_qa_lob, '>');
686
687 -- copy workorder details into final lob
688 dbms_lob.copy(l_merged_lob, l_wo_qa_lob, dbms_lob.getlength(l_wo_qa_lob), dbms_lob.getlength(l_merged_lob)+1, l_offset+ 1);
689 END IF;
690 END IF;
691
692 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
693 fnd_log.string
694 (
695 fnd_log.level_statement,
696 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
697 'After Processing Workorder Quality Info '
698 );
699 END IF;
700
701 /********************************************************************
702 * Create XML data related to workorder operation quality details
703 ********************************************************************/
704
705 -- Query and processing workorder details
706 --get the collection_id and plan_id for the workorder.
707 -- Balaji modified the code for Bug # 6777371.
708 -- Multiple Operations under the Work Order need to be accomodated.
709 -- Bug # 6777371 -- start
710 /*
711 OPEN get_op_qa_ids_csr(p_workorders_tbl(wo_count));
712 FETCH get_op_qa_ids_csr INTO l_plan_id, l_collection_id;
713 CLOSE get_op_qa_ids_csr;
714 */
715 dbms_lob.write(
716 l_merged_lob,
717 length('<G_WO_OP_QA_LIST>'),
718 length(l_merged_lob)+1,
719 '<G_WO_OP_QA_LIST>'
720 );
721
722 FOR get_op_qa_ids_rec IN get_op_qa_ids_csr(p_workorders_tbl(wo_count))
723 LOOP
724
725 l_plan_id := get_op_qa_ids_rec.plan_id;
726 l_collection_id := get_op_qa_ids_rec.collection_id;
727 l_op_seq_num := get_op_qa_ids_rec.operation_sequence_num;
728
729 IF l_plan_id IS NOT NULL AND l_collection_id IS NOT NULL
730 THEN
731
732 dbms_lob.write(
733 l_merged_lob,
734 length('<G_WO_OP_QA_HEADER><QA_WO_OP_SEQ_NO>'||l_op_seq_num||'</QA_WO_OP_SEQ_NO>'),
735 length(l_merged_lob)+1,
736 '<G_WO_OP_QA_HEADER><QA_WO_OP_SEQ_NO>'||l_op_seq_num||'</QA_WO_OP_SEQ_NO>'
737 );
738
739 build_qa_query(
740 p_plan_id => l_plan_id,
741 p_collection_id => l_collection_id,
742 x_query_string => l_query_string
743 );
744
745 context := dbms_xmlgen.newContext(l_query_string);
746 -- Top tag need to be present.
747 dbms_xmlgen.setRowsetTag(context,'G_DUMMY_TOP_OP_QA');
748 dbms_xmlgen.setRowTag(context,'G_WO_OP_QA');
749 dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
750 l_op_qa_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
751 dbms_xmlgen.closeContext(context);
752
753 -- Write to lob only when some data exists.
754 IF dbms_lob.getlength(l_op_qa_lob) > 0
755 THEN
756 -- The generated XML itself puts the XML instruction tag which is already there
757 -- in final CLOB. so copy only rest of the details to the final output.
758 l_offset := dbms_lob.INSTR(l_op_qa_lob, '>');
759
760 -- copy workorder details into final lob
761 dbms_lob.copy(l_merged_lob, l_op_qa_lob, dbms_lob.getlength(l_op_qa_lob), dbms_lob.getlength(l_merged_lob)+1, l_offset+ 1);
762 END IF;
763
764 dbms_lob.write(
765 l_merged_lob,
766 length('</G_WO_OP_QA_HEADER>'),
767 length(l_merged_lob)+1,
768 '</G_WO_OP_QA_HEADER>'
769 );
770
771 END IF;
772 END LOOP;
773 -- Bug # 6777371 -- end
774
775 dbms_lob.write(
776 l_merged_lob,
777 length('</G_WO_OP_QA_LIST>'),
778 length(l_merged_lob)+1,
779 '</G_WO_OP_QA_LIST>'
780 );
781
782 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
783 fnd_log.string
784 (
785 fnd_log.level_statement,
786 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
787 'After Processing Workorder Operation Quality Info '
788 );
789 END IF;
790
791 /********************************************************************
792 * Create XML data related to turnover notes
793 ********************************************************************/
794
795 context := dbms_xmlgen.newContext(l_to_notes || p_workorders_tbl(wo_count));
796 dbms_xmlgen.setRowsetTag(context, 'G_TO_NOTES_LIST');-- turn this off if not required
797 dbms_xmlgen.setRowTag(context,'G_TO_NOTES');
798 dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
799 l_ton_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
800 dbms_xmlgen.closeContext(context);
801
802 -- Write to lob only when some data exists.
803 IF dbms_lob.getlength(l_ton_lob) > 0
804 THEN
805 -- The generated XML itself puts the XML instruction tag which is already there
806 -- in final CLOB. so copy only rest of the details to the final output.
807 l_offset := dbms_lob.INSTR(l_ton_lob, '>');
808
809 -- copy workorder details into final lob
810 dbms_lob.copy(l_merged_lob, l_ton_lob, dbms_lob.getlength(l_ton_lob), dbms_lob.getlength(l_merged_lob)+1, l_offset+ 1);
811 END IF;
812
813 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
814 fnd_log.string
815 (
816 fnd_log.level_statement,
817 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
818 'After Processing turnover notes '
819 );
820 END IF;
821
822
823 /********************************************************************
824 * Create XML data for workorder operations
825 ********************************************************************/
826
827 --For each operation of the workorder gather operation details and add it to
828 --output
829 FOR l_op_rec IN c_wo_operations(p_workorders_tbl(wo_count))
830 LOOP
831
832 l_op_con_query := l_op_details_1;
833
834 --bind total hours and hours worked
835 l_op_con_query := l_op_con_query || 'NVL(AHL_PRD_UTIL_PKG.Get_Op_TotalHours_Assigned('
836 || l_emp_tbl(l_count).employee_id
837 ||', WORKORDER_ID '
838 ||', operation_sequence_num '
839 ||', '''||l_user_role||''' ),0) "TOTAL_HOURS", ';
840
841 l_op_con_query := l_op_con_query || 'NVL(AHL_PRD_UTIL_PKG.Get_Op_transacted_hours('
842 || l_emp_tbl(l_count).employee_id
843 ||', WIP_ENTITY_ID '
844 ||', operation_sequence_num '
845 ||', '''||l_user_role||''' ),0) "HOURS_WORKED", ';
846
847 l_op_con_query := l_op_con_query || l_op_details_2 || l_op_rec.workorder_operation_id;
848
849 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
850 fnd_log.string
851 (
852 fnd_log.level_statement,
853 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
854 'operation details query string --->'||l_op_con_query
855 );
856 END IF;
857
858 context := dbms_xmlgen.newContext(l_op_con_query);
859
860 dbms_xmlgen.setRowsetTag(context,null);-- turn this off if not required
861 dbms_xmlgen.setRowTag(context,'G_OP_REC');
862 dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
863 l_op_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
864 dbms_xmlgen.closeContext(context);
865
866 -- Free temp variable once the query is executed for next iteration.
867 l_op_con_query := null;
868
869 -- Write to lob only when some data exists.
870 IF dbms_lob.getlength(l_op_lob) > 0
871 THEN
872 -- The generated XML itself puts the XML instruction tag which is already there
873 -- in final CLOB. so copy only rest of the details to the final output.
874 l_offset := dbms_lob.INSTR(l_op_lob, '>');
875
876 -- copy workorder details into final lob
877 dbms_lob.copy(l_merged_lob, l_op_lob, dbms_lob.getlength(l_op_lob), dbms_lob.getlength(l_merged_lob)+1, l_offset+ 1);
878 /********************************************************************
879 * Create XML data for resource transactions
880 ********************************************************************/
881 --Invoke AHL_PRD_RESOURCE_TRANX_PVT.Get_Resource_Txn_Defaults to get
882 --resource transaction details for the operation as follows.
883
884 AHL_PRD_RESOURCE_TRANX_PVT.Get_Resource_Txn_Defaults(
885 P_api_version => 1.0,
886 P_init_msg_list => FND_API.G_FALSE,
887 p_module_type => null,
888 x_return_status => x_return_status,
889 x_msg_count => x_msg_count,
890 x_msg_data => x_msg_data,
891 p_employee_id => l_emp_tbl(l_count).employee_id,
892 p_workorder_id => p_workorders_tbl(wo_count),
893 p_operation_seq_num => l_op_rec.operation_sequence_num,
894 p_function_name => l_user_role,
895 --p_user_role => p_user_role,
896 x_resource_txn_tbl => l_x_res_txn_tbl
897 );
898
899 --For every resource transaction data returned create and include xml data as below
900
901 IF l_x_res_txn_tbl.COUNT > 0
902 THEN
903 -- The end tag of operation has to come after its resource transaction records.
904 --hence overwrite the end tag
905 l_offset := dbms_lob.INSTR(l_merged_lob, '</G_OP_REC>', length(l_merged_lob)-12, 1);
906
907 --Insert the start tag for current resource transaction.
908 dbms_lob.write(l_merged_lob, length('<G_RES_TXN_LIST>'),l_offset, '<G_RES_TXN_LIST>');
909
910 FOR j IN l_x_res_txn_tbl.FIRST .. l_x_res_txn_tbl.LAST LOOP
911
912 l_dummy_string := '<G_OP_RES_REC>'||'<OPERATION_SEQUENCE>'||l_x_res_txn_tbl(j).operation_sequence_num||'</OPERATION_SEQUENCE>';
913 l_dummy_string := l_dummy_string ||'<RESOURCE_SEQUENCE>'||l_x_res_txn_tbl(j).resource_sequence_num||'</RESOURCE_SEQUENCE>';
914 l_dummy_string := l_dummy_string || '<RESOURCE_TYPE>'||dbms_xmlgen.convert(l_x_res_txn_tbl(j).resource_type_name)||'</RESOURCE_TYPE>';
915 l_dummy_string := l_dummy_string || '<RESOURCE_NAME>'||dbms_xmlgen.convert(l_x_res_txn_tbl(j).resource_name)||'</RESOURCE_NAME>';
916 l_dummy_string := l_dummy_string || '<EMPLOYEE_NAME>'||dbms_xmlgen.convert(l_x_res_txn_tbl(j).employee_name)||'</EMPLOYEE_NAME>'||'</G_OP_RES_REC>';
917 dbms_lob.write(l_merged_lob, length(l_dummy_string),length(l_merged_lob)+1, l_dummy_string);
918 END LOOP;
919
920 --Insert the end tag for current resource transaction.
921 dbms_lob.write(l_merged_lob, length('</G_RES_TXN_LIST>'),length(l_merged_lob)+1, '</G_RES_TXN_LIST>');
922 dbms_lob.write(l_merged_lob, length('</G_OP_REC>'),length(l_merged_lob)+1, '</G_OP_REC>');
923 END IF;
924 END IF;
925 END LOOP;
926
927 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
928 fnd_log.string
929 (
930 fnd_log.level_statement,
931 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
932 'After Processing Workorder Operations '
933 );
934 END IF;
935
936
937 /********************************************************************
938 * Create XML data for material requirements of a workorder
939 ********************************************************************/
940
941 -- Query and process workorder materials
942 context := dbms_xmlgen.newContext(l_wo_materials || p_workorders_tbl(wo_count));
943 dbms_xmlgen.setRowsetTag(context, 'G_WO_MAT_LIST');
944 dbms_xmlgen.setRowTag(context,'G_WO_MAT');
945 dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
946 l_wo_mat_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
947 dbms_xmlgen.closeContext(context);
948
949 -- Write to lob only when some data exists.
950 IF dbms_lob.getlength(l_wo_mat_lob) > 0
951 THEN
952 -- The generated XML itself puts the XML instruction tag which is already there
953 -- in final CLOB. so copy only rest of the details to the final output.
954 l_offset := dbms_lob.INSTR(l_wo_mat_lob, '>');
955
956 -- copy workorder details into final lob
957 dbms_lob.copy(l_merged_lob, l_wo_mat_lob, dbms_lob.getlength(l_wo_mat_lob), dbms_lob.getlength(l_merged_lob)+1, l_offset+ 1);
958
959 END IF;
960
961 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
962 fnd_log.string
963 (
964 fnd_log.level_statement,
965 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
966 'After Processing Workorder Material requirements '
967 );
968 END IF;
969
970 /********************************************************************
971 * Create XML data for Document associations to a workorder
972 ********************************************************************/
973
974 -- Query and process workorder materials
975 context := dbms_xmlgen.newContext(
976 l_route_doc || p_workorders_tbl(wo_count) || ' '||
977 l_op_doc || p_workorders_tbl(wo_count) || ' '||
978 l_mr_doc || p_workorders_tbl(wo_count) || ' '||
979 l_mc_doc || p_workorders_tbl(wo_count) || ' '
980 --||l_pc_doc || p_workorders_tbl(wo_count)
981 );
982 dbms_xmlgen.setRowsetTag(context,'G_WO_DOC_LIST');
983 dbms_xmlgen.setRowTag(context,'G_WO_DOC');
984 dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
985 l_wo_doc_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
986 dbms_xmlgen.closeContext(context);
987
988 -- Write to lob only when some data exists.
989 IF dbms_lob.getlength(l_wo_doc_lob) > 0
990 THEN
991 -- The generated XML itself puts the XML instruction tag which is already there
992 -- in final CLOB. so copy only rest of the details to the final output.
993 l_offset := dbms_lob.INSTR(l_wo_doc_lob, '>');
994
995 -- copy workorder details into final lob
996 dbms_lob.copy(l_merged_lob, l_wo_doc_lob, dbms_lob.getlength(l_wo_doc_lob), dbms_lob.getlength(l_merged_lob)+1, l_offset+ 1);
997
998 END IF;
999
1000 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1001 fnd_log.string
1002 (
1003 fnd_log.level_statement,
1004 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
1005 'After Processing Document associations to workorders'
1006 );
1007 END IF;
1008
1009 --copy the workcard end tag
1010 dbms_lob.write(l_merged_lob, length('</G_WORKCARD>'),length(l_merged_lob)+1, '</G_WORKCARD>');
1011 END LOOP;
1012
1013 END IF;
1014
1015 END LOOP;
1016 END IF;
1017 /***************************************************************************************
1018 *End Actual API processing here
1019 ***************************************************************************************/
1020
1021 -- Insert ending root node to maintain the XML completeness.
1022 dbms_lob.write(l_merged_lob, length('</G_WORKCARD_LIST>'),length(l_merged_lob)+1, '</G_WORKCARD_LIST>');
1023
1024 x_xml_data := l_merged_lob;
1025
1026 --Close and release the temporary lobs
1027 dbms_lob.close( l_merged_lob );
1028 --dbms_lob.close(l_wo_details_lob);
1029 dbms_lob.freeTemporary( l_merged_lob );
1030
1031 /*
1032 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1033 l_fnd_offset := 1;
1034 l_chunk_size := 3000;
1035 l_clob_size := LENGTH(x_xml_data);
1036
1037 WHILE (l_clob_size > 0) LOOP
1038 fnd_log.string
1039 (
1040 fnd_log.level_statement,
1041 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
1042 'xml data ->'||substr(x_xml_data, l_chunk_size, l_fnd_offset)
1043 );
1044 l_clob_size := l_clob_size - l_chunk_size;
1045 l_fnd_offset := l_fnd_offset + l_chunk_size;
1046 END LOOP;
1047
1048 END IF;
1049 */
1050
1051 IF (fnd_log.level_procedure >= fnd_log.g_current_runtime_level)THEN
1052 fnd_log.string
1053 (
1054 fnd_log.level_procedure,
1055 'ahl.plsql.'||g_pkg_name||'.'||l_api_name||'.end',
1056 'At the end of AHL_PRD_PRINT_PVT'
1057 );
1058 END IF;
1059
1060 EXCEPTION
1061 WHEN OTHERS THEN
1062
1063 x_return_status := Fnd_Api.g_ret_sts_unexp_error;
1064
1065 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1066 fnd_log.string
1067 (
1068 fnd_log.level_statement,
1069 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
1070 'xml data ->'||dbms_lob.substr(x_xml_data, dbms_lob.getlength(x_xml_data), 1)
1071 );
1072 END IF;
1073
1074 IF Fnd_Msg_Pub.check_msg_level (Fnd_Msg_Pub.g_msg_lvl_unexp_error)
1075 THEN
1076 Fnd_Msg_Pub.add_exc_msg (G_PKG_NAME, l_api_name);
1077 END IF;
1078
1079 Fnd_Msg_Pub.count_and_get (
1080 p_encoded => Fnd_Api.g_false,
1081 p_count => x_msg_count,
1082 p_data => x_msg_data
1083 );
1084
1085
1086
1087 END Gen_Wo_Xml;
1088
1089
1090 -- procedure to collect all the QA data and return it as a string.
1091 procedure build_qa_query(
1092 p_plan_id IN NUMBER,
1093 p_collection_id IN NUMBER,
1094 x_query_string OUT NOCOPY VARCHAR2
1095 )
1096 IS
1097
1098 --cursor for getting QA Chars
1099 CURSOR get_qa_chars_csr(p_plan_id IN NUMBER) IS
1100 SELECT
1101 char_id,
1102 organization_id,
1103 prompt_sequence ,
1104 prompt,
1105 enabled_flag,
1106 default_value,
1107 default_value_id,
1108 result_column_name,
1109 values_exist_flag,
1110 displayed_flag,
1111 plan_name,
1112 plan_description,
1113 char_name,
1114 datatype,
1115 hardcoded_column,
1116 developer_name
1117 FROM
1118 QA_PLAN_CHARS_V QA
1119 WHERE
1120 plan_id = p_plan_id;
1121
1122 --local variable to hold the query string to retrieve qa results
1123 l_query_string VARCHAR2(30000) := null; --pdoki changed for Bug 6777371
1124 l_rec_count NUMBER;
1125 l_result_column_name VARCHAR2(100);
1126 l_item_found VARCHAR2(1);
1127 l_locator_found VARCHAR2(1);
1128 l_item_hardcoded_column VARCHAR2(100);
1129 l_locator_hardcoded_column VARCHAR(100);
1130 l_dummy_query VARCHAR2(3000);
1131 l_api_name CONSTANT VARCHAR2(30) := 'build_qa_query';
1132
1133 BEGIN
1134
1135 l_query_string := 'SELECT RESULTS.COLLECTION_ID, RESULTS.OCCURRENCE ';
1136
1137 l_dummy_query := ' UNION ALL SELECT null collection_id, null occurrence';
1138
1139 l_rec_count := 1;
1140
1141 -- retrieve all chars associated with the qa plan
1142 FOR qa_csr IN get_qa_chars_csr(p_plan_id) LOOP
1143
1144 IF qa_csr.char_id = G_ITEM_NUMBER_CHAR THEN
1145 -- its an item number
1146 l_query_string := l_query_string ||' ,XMLConcat(XMLELEMENT("LABEL", '''|| qa_csr.prompt ||''' )';
1147 l_query_string := l_query_string || ', XMLELEMENT("VALUE", ITEM.' || 'CONCATENATED_SEGMENTS' || ' ) ) COLL_ELEMENT';
1148
1149 l_dummy_query := l_dummy_query ||' ,XMLConcat(XMLELEMENT("LABEL", '''|| null ||''' )';
1150 l_dummy_query := l_dummy_query || ', XMLELEMENT("VALUE", '''|| null ||''' ) ) COLL_ELEMENT';
1151
1152 l_item_found := FND_API.G_TRUE;
1153 l_item_hardcoded_column := qa_csr.hardcoded_column;
1154 --l_column_name_tbl(l_rec_count) := result_column;
1155 ELSIF qa_csr.char_id = G_LOCATOR_CHAR THEN
1156
1157 l_query_string := l_query_string ||' ,XMLConcat(XMLELEMENT("LABEL", '''|| qa_csr.prompt ||''' )';
1158 l_query_string := l_query_string || ', XMLELEMENT("VALUE", LOCATOR.' || 'CONCATENATED_SEGMENTS' || ' ) ) COLL_ELEMENT';
1159
1160 l_dummy_query := l_dummy_query ||' ,XMLConcat(XMLELEMENT("LABEL", '''|| null ||''' )';
1161 l_dummy_query := l_dummy_query || ', XMLELEMENT("VALUE", '''|| null ||''' ) ) COLL_ELEMENT';
1162
1163 l_locator_found := FND_API.G_TRUE;
1164 l_locator_hardcoded_column := qa_csr.hardcoded_column;
1165 --l_column_name_tbl(l_rec_count) := result_column;
1166 ELSE
1167 IF qa_csr.hardcoded_column IS NOT NULL
1168 THEN
1169 l_result_column_name := qa_csr.developer_name;
1170 ELSE
1171 l_result_column_name := qa_csr.result_column_name;
1172 END IF;
1173 l_query_string := l_query_string ||' ,XMLConcat(XMLELEMENT("LABEL", '''|| qa_csr.prompt ||''' )';
1174 l_query_string := l_query_string || ', XMLELEMENT("VALUE", RESULTS.' || l_result_column_name || ' ) ) COLL_ELEMENT';
1175
1176 l_dummy_query := l_dummy_query ||' ,XMLConcat(XMLELEMENT("LABEL", '''|| null ||''' )';
1177 l_dummy_query := l_dummy_query || ', XMLELEMENT("VALUE", '''|| null ||''' ) ) COLL_ELEMENT';
1178 END IF;
1179
1180
1181 l_rec_count := l_rec_count + 1;
1182
1183 END LOOP;
1184
1185 --l_query_string := l_query_string || ' ,'''||TO_CHAR(l_rec_count-1)||''''||' AS FIELD_COUNT';
1186
1187 -- Results will all be included in the from clause
1188 l_query_string := l_query_string || ' FROM QA_RESULTS_V RESULTS ';
1189
1190 -- Append required FROM clauses for the API.
1191 IF l_item_found = FND_API.G_TRUE THEN
1192 l_query_string := l_query_string || ' , MTL_SYSTEM_ITEMS_KFV ITEM ';
1193 END IF;
1194
1195 IF l_locator_found = FND_API.G_TRUE THEN
1196 l_query_string := l_query_string || ' , MTL_ITEM_LOCATIONS_KFV LOCATOR ';
1197 END IF;
1198
1199 -- Append collection id to the where clause
1200 l_query_string := l_query_string || ' WHERE RESULTS.COLLECTION_ID = ' || p_collection_id;
1201
1202 -- Append required FROM clauses for the API.
1203 IF l_item_found = FND_API.G_TRUE THEN
1204 l_query_string := l_query_string || ' AND ITEM.inventory_item_id (+) = RESULTS.' || l_item_hardcoded_column;
1205 l_query_string := l_query_string || ' AND ITEM.organization_id (+) = RESULTS.organization_id ';
1206 END IF;
1207
1208 IF l_locator_found = FND_API.G_TRUE THEN
1209 l_query_string := l_query_string || ' AND LOCATOR.inventory_location_id (+) = RESULTS.' || l_locator_hardcoded_column;
1210 l_query_string := l_query_string || ' AND LOCATOR.organization_id (+) = RESULTS.organization_id ';
1211 END IF;
1212
1213 --l_query_string := l_query_string || ' ORDER BY RESULTS.OCCURRENCE ';
1214
1215 --add dummy query to the original query
1216 l_query_string := l_query_string || l_dummy_query || ' FROM DUAL CONNECT BY 1 = 1 and level <= 3';
1217 x_query_string := l_query_string;
1218
1219 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
1220 fnd_log.string
1221 (
1222 fnd_log.level_statement,
1223 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
1224 'Quality Collection query string --->'||l_query_string
1225 );
1226 END IF;
1227
1228 END build_qa_query;
1229
1230 ------------------------------------------------------------------------------------------------
1231 -- Procedure to generate XML data for Workcard concurrent program
1232 ------------------------------------------------------------------------------------------------
1233 PROCEDURE Gen_Workcard_Xml(
1234 errbuf OUT NOCOPY VARCHAR2,
1235 retcode OUT NOCOPY NUMBER,
1236 p_api_version IN NUMBER,
1237 p_visit_id IN NUMBER,
1238 p_stage_id IN NUMBER,
1239 p_wo_no_from IN VARCHAR2,
1240 p_wo_no_to IN VARCHAR2,
1241 p_sch_start_from IN VARCHAR2,
1242 p_sch_start_to IN VARCHAR2,
1243 p_employee_id IN NUMBER
1244 )
1245 IS
1246
1247 --declare local variables here.
1248 l_return_status VARCHAR2(30);
1249 l_msg_count NUMBER;
1250 l_api_name VARCHAR2(30) := 'Gen_Workcard_Xml';
1251 l_api_version NUMBER := 1.0;
1252 l_workorder_tbl WORKORDER_TBL_TYPE;
1253 l_wo_count NUMBER;
1254 l_clob CLOB;
1255 l_bind_value_tbl AHL_OSP_UTIL_PKG.ahl_conditions_tbl;
1256 l_vst_wocard_csr AHL_OSP_UTIL_PKG.ahl_search_csr;
1257 l_bind_index NUMBER;
1258 l_query_string VARCHAR2(2000);
1259 i NUMBER;
1260 l_workorder_id NUMBER;
1261 l_offset NUMBER;
1262 l_chunk_size NUMBER;
1263 l_clob_size NUMBER;
1264
1265 BEGIN
1266
1267 --set the operating unit.
1268 mo_global.init('AHL');
1269
1270 -- this step is not required. peforming since was not getting the output.
1271 -- dbms_application_info.set_client_info('600');
1272
1273 -- Initialize error message stack by default
1274 FND_MSG_PUB.Initialize;
1275
1276 fnd_file.put_line(fnd_file.log, '*************API input parameters**************');
1277 fnd_file.put_line(fnd_file.log, 'API inputs p_api_version -> '||p_api_version);
1278 fnd_file.put_line(fnd_file.log, 'API inputs p_visit_id -> '||p_visit_id);
1279 fnd_file.put_line(fnd_file.log, 'API inputs p_stage_id -> '||p_stage_id);
1280 fnd_file.put_line(fnd_file.log, 'API inputs p_wo_no_from -> '||p_wo_no_from);
1281 fnd_file.put_line(fnd_file.log, 'API inputs p_wo_no_to -> '||p_wo_no_to);
1282 fnd_file.put_line(fnd_file.log, 'API inputs p_sch_start_from -> '||p_sch_start_from);
1283 fnd_file.put_line(fnd_file.log, 'API inputs p_sch_start_to -> '||p_sch_start_to);
1284 fnd_file.put_line(fnd_file.log, 'API inputs p_employee_id -> '||p_employee_id);
1285 fnd_file.put_line(fnd_file.log, '*************API input parameters**************');
1286
1287 l_query_string := ' select
1288 wo.workorder_id
1289 from
1290 ahl_workorders wo,
1291 wip_discrete_jobs wipd,
1292 ahl_visits_b vst,
1293 ahl_visit_tasks_b vtsk
1294 where
1295 wo.visit_id = vst.visit_id and
1296 wo.wip_entity_id = wipd.wip_entity_id and
1297 wo.visit_task_id = vtsk.visit_task_id and
1298 vst.visit_id = vtsk.visit_id and
1299 wo.status_code in (3, 4, 5, 6, 7, 12, 19) and
1300 wo.master_workorder_flag <> ''Y'' and
1301 vst.status_code in (''RELEASED'',''PARTIALLY RELEASED'') ';
1302
1303 l_bind_index := 1;
1304
1305 IF p_visit_id IS NOT NULL THEN
1306 l_query_string := l_query_string || ' AND wo.visit_id = :'||l_bind_index;
1307 l_bind_value_tbl(l_bind_index) := p_visit_id;
1308 l_bind_index := l_bind_index + 1;
1309 END IF;
1310
1311 IF p_stage_id IS NOT NULL THEN
1312 l_query_string := l_query_string || ' AND vtsk.stage_id = :'||l_bind_index;
1313 l_bind_value_tbl(l_bind_index) := p_stage_id;
1314 l_bind_index := l_bind_index + 1;
1315 END IF;
1316
1317 IF p_wo_no_from IS NOT NULL AND p_wo_no_to IS NOT NULL THEN
1318 l_query_string := l_query_string || ' AND wo.workorder_name between :'||l_bind_index||' and :'||(l_bind_index+1);
1319 l_bind_value_tbl(l_bind_index) := p_wo_no_from;
1320 l_bind_value_tbl(l_bind_index+1) := p_wo_no_to;
1321 l_bind_index := l_bind_index + 2;
1322 END IF;
1323
1324 IF p_sch_start_from IS NOT NULL THEN
1325 l_query_string := l_query_string || ' AND wipd.scheduled_start_date >= :'||l_bind_index;
1326 l_bind_value_tbl(l_bind_index) := fnd_date.canonical_to_date(p_sch_start_from);
1327 l_bind_index := l_bind_index + 1;
1328 END IF;
1329
1330 IF p_sch_start_to IS NOT NULL THEN
1331 l_query_string := l_query_string || ' AND wipd.scheduled_completion_date <= :'||l_bind_index;
1332 l_bind_value_tbl(l_bind_index) := fnd_date.canonical_to_date(p_sch_start_to);
1333 l_bind_index := l_bind_index + 1;
1334 END IF;
1335
1336 fnd_file.put_line(fnd_file.log, l_query_string);
1337
1338 AHL_OSP_UTIL_PKG.OPEN_SEARCH_CURSOR(l_vst_wocard_csr, l_bind_value_tbl, l_query_string);
1339
1340 i := 1;
1341 LOOP
1342 FETCH l_vst_wocard_csr INTO l_workorder_id;
1343 EXIT WHEN l_vst_wocard_csr%NOTFOUND;
1344 l_workorder_tbl(i) := l_workorder_id;
1345 i := i + 1;
1346 END LOOP;
1347
1348 CLOSE l_vst_wocard_csr;
1349
1350
1351 fnd_file.put_line(fnd_file.log, 'No of workorders ->'||l_workorder_tbl.COUNT);
1352
1353 IF l_workorder_tbl.COUNT > 0
1354 THEN
1355 Gen_Wo_Xml(
1356 p_api_version => 1.0,
1357 p_init_msg_list => FND_API.G_TRUE,
1358 p_commit => FND_API.G_TRUE,
1359 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
1360 p_default => FND_API.G_TRUE,
1361 p_module_type => NULL,
1362 x_return_status => l_return_status,
1363 x_msg_count => l_msg_count,
1364 x_msg_data => errbuf,
1365 p_workorders_tbl => l_workorder_tbl,
1366 p_employee_id => p_employee_id,
1367 p_user_role => null,
1368 p_material_req_flag => 'N',
1369 x_xml_data => l_clob,
1370 p_concurrent_flag => 'Y'
1371 );
1372
1373 l_offset := 1;
1374 l_chunk_size := 3000;
1375 l_clob_size := dbms_lob.getlength(l_clob);
1376
1377 WHILE (l_clob_size > 0) LOOP
1378 fnd_file.put(fnd_file.log, dbms_lob.substr (l_clob, l_chunk_size, l_offset));
1379 l_clob_size := l_clob_size - l_chunk_size;
1380 l_offset := l_offset + l_chunk_size;
1381 END LOOP;
1382
1383 l_msg_count := FND_MSG_PUB.Count_Msg;
1384 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)
1385 THEN
1386 retcode := 2; -- error based only on return status
1387 ELSIF (l_msg_count > 0 AND l_return_status = FND_API.G_RET_STS_SUCCESS)
1388 THEN
1389 retcode := 1; -- warning based on return status + msg count
1390 ELSE
1391 --fnd_file.put_line(fnd_file.output, dbms_lob.substr(l_clob, dbms_lob.getlength(l_clob), 1));
1392
1393 l_offset := 1;
1394 l_chunk_size := 3000;
1395 l_clob_size := dbms_lob.getlength(l_clob);
1396
1397 WHILE (l_clob_size > 0) LOOP
1398 fnd_file.put(fnd_file.output, dbms_lob.substr (l_clob, l_chunk_size, l_offset));
1399 l_clob_size := l_clob_size - l_chunk_size;
1400 l_offset := l_offset + l_chunk_size;
1401 END LOOP;
1402
1403 retcode := 0; -- success, since nothing is wrong
1404 END IF;
1405 END IF;
1406 END Gen_Workcard_Xml;
1407
1408 PROCEDURE Process_JCG_Request (
1409 p_api_version IN NUMBER :=1.0,
1410 p_init_msg_list IN VARCHAR2 :=FND_API.G_FALSE,
1411 p_commit IN VARCHAR2 :=FND_API.G_FALSE,
1412 p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL,
1413 p_default IN VARCHAR2 :=FND_API.G_FALSE,
1414 p_module_type IN VARCHAR2 :=NULL,
1415 x_return_status OUT NOCOPY VARCHAR2,
1416 x_msg_count OUT NOCOPY NUMBER,
1417 x_msg_data OUT NOCOPY VARCHAR2,
1418 p_operation_flag IN VARCHAR2,
1419 p_x_jcg_id IN OUT NOCOPY NUMBER,
1420 p_object_type IN VARCHAR2 := NULL,
1421 p_object_id IN NUMBER := NULL,
1422 p_status_code IN VARCHAR2,
1423 p_file_location IN Varchar2 := NULL,
1424 p_split_flag IN VARCHAR2 := 'N',
1425 p_xml_data_filename IN VARCHAR2 := NULL,
1426 p_error_message IN VARCHAR2 := NULL,
1427 p_concurrent_request_id IN NUMBER := NULL
1428 )
1429 IS
1430
1431 Cursor get_jcg_req_rec_csr(c_jcg_id NUMBER)
1432 IS
1433 Select OBJECT_VERSION_NUMBER,OBJECT_TYPE_CODE,OBJECT_ID from AHL_ENIGMA_JCG_DETAILS
1434 Where JCG_REQUEST_ID = c_jcg_id
1435 FOR UPDATE of STATUS_CODE;
1436
1437 Cursor jcg_req_exists_csr(c_jcg_id NUMBER)
1438 IS
1439 Select OBJECT_VERSION_NUMBER,OBJECT_TYPE_CODE,OBJECT_ID from AHL_ENIGMA_JCG_DETAILS
1440 where jcg_request_id = c_jcg_id
1441 FOR UPDATE of STATUS_CODE;
1442
1443 Cursor get_other_jcg_req_id_csr(c_object_type VARCHAR2, c_object_id NUMBER, c_jcg_id NUMBER)
1444 IS
1445 Select JCG_REQUEST_ID from AHL_ENIGMA_JCG_DETAILS
1446 Where OBJECT_TYPE_CODE = c_object_type
1447 AND OBJECT_ID = c_object_id
1448 AND JCG_REQUEST_ID < c_jcg_id ;
1449
1450 Cursor get_other_jcg_non_s_csr(c_object_type VARCHAR2, c_object_id NUMBER, c_jcg_id NUMBER)
1451 IS
1452 Select JCG_REQUEST_ID from AHL_ENIGMA_JCG_DETAILS
1453 Where OBJECT_TYPE_CODE = c_object_type
1454 AND OBJECT_ID = c_object_id
1455 AND STATUS_CODE IN ('E','P')
1456 AND JCG_REQUEST_ID < c_jcg_id ;
1457
1458 l_jcg_id NUMBER;
1459 l_api_name VARCHAR2(30) := 'Process_JCG_Request';
1460 l_user_id NUMBER;
1461 l_ovn NUMBER;
1462 l_login_id NUMBER;
1463 l_object_id NUMBER;
1464 l_object_type VARCHAR2(80);
1465
1466
1467 l_log_current_level NUMBER := FND_LOG.g_current_runtime_level;
1468 l_api_version NUMBER := 1.0;
1469 l_log_statement NUMBER := FND_LOG.level_statement;
1470 l_log_procedure NUMBER := FND_LOG.level_procedure;
1471 l_log_error NUMBER := FND_LOG.level_error;
1472 l_log_unexpected NUMBER := FND_LOG.level_unexpected;
1473
1474 BEGIN
1475
1476 IF (l_log_procedure >= l_log_current_level)THEN
1477 fnd_log.string(
1478 l_log_procedure,
1479 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
1480 'At Begin of the Procedure Process_JCG_Request'
1481 );
1482 END IF;
1483
1484 -- Standard start of API savepoint
1485 SAVEPOINT Process_JCG_Request_PVT;
1486
1487 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
1488
1489 IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
1490 p_api_version,
1491 l_api_name,G_PKG_NAME)
1492 THEN
1493 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1494 END IF;
1495
1496 -- Initialize message list if p_init_msg_list is set to TRUE.
1497 IF FND_API.to_boolean(p_init_msg_list) THEN
1498 FND_MSG_PUB.initialize;
1499 END IF;
1500
1501 IF (l_log_statement >= l_log_current_level)THEN
1502 fnd_log.string(
1503 l_log_statement,
1504 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
1505 'Before Basic Validations for the procedure.'
1506 );
1507 END IF;
1508
1509 -- Baisc Validation
1510 IF(p_operation_flag IS NULL) THEN
1511 FND_MESSAGE.Set_Name('AHL','AHL_PRD_JCG_DML_FLAG_NULL');
1512 FND_MSG_PUB.ADD;
1513 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1514 END IF;
1515
1516 IF (p_status_code IS NULL) THEN
1517
1518 IF (l_log_error >= l_log_current_level)THEN
1519 fnd_log.string(
1520 l_log_error,
1521 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
1522 'Mandatory input, Status_Code is NULL.'
1523 );
1524 END IF;
1525
1526 FND_MESSAGE.Set_Name('AHL','AHL_PRD_JCG_STATUS_CODE_NULL');
1527 FND_MSG_PUB.ADD;
1528 RAISE FND_API.G_EXC_ERROR;
1529 END IF;
1530
1531 IF (p_operation_flag = 'C') THEN
1532
1533 IF (p_object_type IS NULL) THEN
1534 FND_MESSAGE.Set_Name('AHL','AHL_PRD_JCG_OBJECT_TYPE_NULL');
1535 FND_MSG_PUB.ADD;
1536 RAISE FND_API.G_EXC_ERROR;
1537 END IF;
1538 IF (p_object_id IS NULL) THEN
1539 FND_MESSAGE.Set_Name('AHL','AHL_PRD_JCG_OBJECT_ID_NULL');
1540 FND_MSG_PUB.ADD;
1541 RAISE FND_API.G_EXC_ERROR;
1542 END IF;
1543
1544 ELSIF (p_operation_flag = 'U') THEN
1545
1546 IF (p_x_jcg_id IS NULL) THEN
1547 FND_MESSAGE.Set_Name('AHL','AHL_PRD_JCG_ID_NULL');
1548 FND_MSG_PUB.ADD;
1549 RAISE FND_API.G_EXC_ERROR;
1550 END IF;
1551
1552 IF (p_file_location IS NULL AND (p_status_code = 'S' OR p_status_code = 'Complete' )) THEN
1553 FND_MESSAGE.Set_Name('AHL','AHL_PRD_JCG_FILE_LOC_NULL');
1554 FND_MSG_PUB.ADD;
1555 RAISE FND_API.G_EXC_ERROR;
1556 END IF;
1557
1558 END IF;
1559
1560 IF (l_log_statement >= l_log_current_level)THEN
1561 fnd_log.string(
1562 l_log_statement,
1563 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
1564 'After Basic Validations for the procedure.'
1565 );
1566 END IF;
1567 --End Basic Validations.
1568
1569 l_user_id := to_number(fnd_global.USER_ID);
1570 l_login_id := to_number(fnd_global.LOGIN_ID);
1571
1572 IF (p_operation_flag = 'C' ) THEN
1573
1574 IF (l_log_statement >= l_log_current_level)THEN
1575 fnd_log.string(
1576 l_log_statement,
1577 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
1578 'Before inserting a new row in AHL_ENIGMA_JCG_DETAILS.'
1579 );
1580 END IF;
1581
1582 INSERT INTO AHL_ENIGMA_JCG_DETAILS ( JCG_REQUEST_ID,
1583 OBJECT_TYPE_CODE,
1584 OBJECT_ID,
1585 STATUS_CODE,
1586 FILE_LOCATION,
1587 SPLIT_FLAG,
1588 XML_DATA_FILENAME,
1589 OBJECT_VERSION_NUMBER,
1590 ERROR_MESSAGE,
1591 CONCURRENT_REQUEST_ID,
1592 LAST_UPDATE_DATE,
1593 LAST_UPDATED_BY,
1594 CREATION_DATE ,
1595 CREATED_BY,
1596 LAST_UPDATE_LOGIN,
1597 SECURITY_GROUP_ID
1598 )
1599 VALUES (AHL_ENIGMA_JCG_DETAILS_S.NEXTVAL,
1600 p_object_type,
1601 p_object_id,
1602 p_status_code,
1603 p_file_location,
1604 p_split_flag,
1605 p_xml_data_filename,
1606 1,
1607 p_error_message,
1608 p_concurrent_request_id,
1609 sysdate,
1610 l_user_id,
1611 sysdate,
1612 l_user_id,
1613 l_login_id,
1614 NULL
1615 )
1616 RETURNING JCG_REQUEST_ID INTO p_x_jcg_id;
1617
1618 IF(p_status_code = 'S') THEN
1619 FOR jcg_rec in get_other_jcg_req_id_csr(p_object_type,p_object_id,p_x_jcg_id)
1620 LOOP
1621 OPEN jcg_req_exists_csr (jcg_rec.jcg_request_id);
1622 FETCH jcg_req_exists_csr INTO l_ovn,l_object_type,l_object_id;
1623 IF(jcg_req_exists_csr%found)THEN
1624 DELETE FROM AHL_ENIGMA_JCG_DETAILS WHERE JCG_REQUEST_ID = jcg_rec.JCG_REQUEST_ID ;
1625 END IF;
1626 CLOSE jcg_req_exists_csr;
1627 END LOOP;
1628 END IF;
1629
1630 IF(p_status_code = 'E') THEN
1631 FOR jcg_rec in get_other_jcg_non_s_csr(p_object_type,p_object_id,p_x_jcg_id)
1632 LOOP
1633 OPEN jcg_req_exists_csr (jcg_rec.jcg_request_id);
1634 FETCH jcg_req_exists_csr INTO l_ovn,l_object_type,l_object_id;
1635 IF(jcg_req_exists_csr%found)THEN
1636 DELETE FROM AHL_ENIGMA_JCG_DETAILS WHERE JCG_REQUEST_ID = jcg_rec.JCG_REQUEST_ID ;
1637 END IF;
1638 CLOSE jcg_req_exists_csr;
1639 END LOOP;
1640 END IF;
1641
1642 ELSIF (p_operation_flag = 'U' ) THEN
1643
1644 OPEN get_jcg_req_rec_csr (p_x_jcg_id);
1645 FETCH get_jcg_req_rec_csr into l_ovn,l_object_type,l_object_id;
1646
1647 IF (get_jcg_req_rec_csr%NOTFOUND) THEN
1648 CLOSE get_jcg_req_rec_csr;
1649 return;
1650 /*
1651 FND_MESSAGE.Set_Name('AHL','AHL_PRD_JCG_ID_INVALID');
1652 FND_MSG_PUB.ADD;
1653 CLOSE get_jcg_req_rec_csr;
1654 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1655 */
1656 END IF;
1657
1658
1659
1660 IF (l_log_statement >= l_log_current_level)THEN
1661 fnd_log.string(
1662 l_log_statement,
1663 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
1664 'Before updating a new row in AHL_ENIGMA_JCG_DETAILS.'
1665 );
1666 END IF;
1667
1668 UPDATE AHL_ENIGMA_JCG_DETAILS SET FILE_LOCATION = p_file_location,
1669 STATUS_CODE = p_status_code,
1670 OBJECT_VERSION_NUMBER = l_ovn+1,
1671 ERROR_MESSAGE = p_error_message,
1672 LAST_UPDATE_DATE = sysdate,
1673 LAST_UPDATED_BY = l_user_id,
1674 LAST_UPDATE_LOGIN = l_login_id,
1675 security_group_id = null,
1676 CONCURRENT_REQUEST_ID = p_concurrent_request_id
1677 WHERE JCG_REQUEST_ID = p_x_jcg_id ;
1678
1679 IF(p_status_code = 'S') THEN
1680 FOR jcg_rec in get_other_jcg_req_id_csr(l_object_type,l_object_id,p_x_jcg_id)
1681 LOOP
1682 OPEN jcg_req_exists_csr (jcg_rec.jcg_request_id);
1683 FETCH jcg_req_exists_csr INTO l_ovn,l_object_type,l_object_id;
1684 IF(jcg_req_exists_csr%found)THEN
1685 DELETE FROM AHL_ENIGMA_JCG_DETAILS WHERE JCG_REQUEST_ID = jcg_rec.JCG_REQUEST_ID ;
1686 END IF;
1687 CLOSE jcg_req_exists_csr;
1688 END LOOP;
1689 END IF;
1690
1691 IF(p_status_code = 'E') THEN
1692 FOR jcg_rec in get_other_jcg_non_s_csr(l_object_type,l_object_id,p_x_jcg_id)
1693 LOOP
1694 OPEN jcg_req_exists_csr (jcg_rec.jcg_request_id);
1695 FETCH jcg_req_exists_csr INTO l_ovn,l_object_type,l_object_id;
1696 IF(jcg_req_exists_csr%found)THEN
1697 DELETE FROM AHL_ENIGMA_JCG_DETAILS WHERE JCG_REQUEST_ID = jcg_rec.JCG_REQUEST_ID ;
1698 END IF;
1699 CLOSE jcg_req_exists_csr;
1700 END LOOP;
1701 END IF;
1702
1703 CLOSE get_jcg_req_rec_csr;
1704
1705 END IF;
1706
1707 IF (l_log_procedure >= l_log_current_level)THEN
1708 fnd_log.string(
1709 l_log_procedure,
1710 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
1711 'At END of the Procedure Process_JCG_Request,p_x_jcg_id = '|| p_x_jcg_id || ' p_status_code = '||p_status_code
1712 );
1713 END IF;
1714
1715 EXCEPTION
1716 WHEN FND_API.G_EXC_ERROR THEN
1717 x_return_status := FND_API.G_RET_STS_ERROR;
1718 Rollback to Process_JCG_Request_PVT;
1719 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1720 p_data => x_msg_data,
1721 p_encoded => fnd_api.g_false);
1722
1723 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1724 IF (l_log_statement >= l_log_current_level)THEN
1725 fnd_log.string(
1726 l_log_statement,
1727 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
1728 'unExpected Error-'
1729 );
1730 END IF;
1731 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1732 Rollback to Process_JCG_Request_PVT;
1733 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1734 p_data => x_msg_data,
1735 p_encoded => fnd_api.g_false);
1736
1737 WHEN OTHERS THEN
1738 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1739 Rollback to Process_JCG_Request_PVT;
1740 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
1741 p_procedure_name => 'Process_JCG_Request',
1742 p_error_text => SUBSTR(SQLERRM,1,240));
1743 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
1744 p_data => x_msg_data,
1745 p_encoded => fnd_api.g_false);
1746 IF (l_log_unexpected >= l_log_current_level)THEN
1747 fnd_log.string(
1748 l_log_unexpected,
1749 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
1750 'Unexpected Error Others '
1751 );
1752 END IF;
1753
1754 END Process_JCG_Request;
1755
1756 FUNCTION Generated_JobCard_Exists(
1757 p_object_type IN VARCHAR2,
1758 p_object_id IN NUMBER
1759 )
1760 RETURN VARCHAR2
1761 IS
1762
1763 Cursor check_job_card_csr(c_object_type VARCHAR2, c_object_id NUMBER)
1764 IS
1765 Select 'X' from AHL_ENIGMA_JCG_DETAILS
1766 Where OBJECT_TYPE_CODE = c_object_type
1767 AND OBJECT_ID = c_object_id
1768 AND STATUS_CODE = 'S';
1769
1770 l_api_name VARCHAR2(30) := 'Generated_JobCard_Exists';
1771 x_jcg_exists VARCHAR2(1);
1772 l_var VARCHAR2(1);
1773 BEGIN
1774
1775 x_jcg_exists := 'N';
1776
1777 OPEN check_job_card_csr(p_object_type,p_object_id);
1778 FETCH check_job_card_csr into l_var;
1779
1780 IF (check_job_card_csr%NOTFOUND) THEN
1781 x_jcg_exists := 'N';
1782 ELSE
1783 x_jcg_exists := 'Y';
1784 END IF;
1785 CLOSE check_job_card_csr;
1786
1787 RETURN x_jcg_exists;
1788
1789 END Generated_JobCard_Exists;
1790
1791 FUNCTION Get_JC_File_Location(
1792 p_object_type IN VARCHAR2,
1793 p_object_id IN NUMBER
1794 )
1795 RETURN VARCHAR2
1796 IS
1797
1798 Cursor get_file_location_csr(c_object_type VARCHAR2, c_object_id NUMBER)
1799 IS
1800 Select FILE_LOCATION from AHL_ENIGMA_JCG_DETAILS
1801 where JCG_REQUEST_ID = (Select max(JCG_REQUEST_ID) from (
1802 Select JCG_REQUEST_ID from AHL_ENIGMA_JCG_DETAILS
1803 Where OBJECT_TYPE_CODE = c_object_type
1804 AND OBJECT_ID = c_object_id
1805 AND STATUS_CODE = 'S'
1806 ));
1807
1808 l_api_name VARCHAR2(30) := 'Get_JC_File_Location';
1809 x_file_location VARCHAR2(4000);
1810
1811
1812 BEGIN
1813
1814 x_file_location := NULL;
1815
1816 OPEN get_file_location_csr(p_object_type,p_object_id);
1817 FETCH get_file_location_csr into x_file_location;
1818 IF(get_file_location_csr%FOUND)THEN
1819 x_file_location := FND_PROFILE.VALUE('AHL_ENIGMA_PDF_LOCATION') || x_file_location;
1820 END IF;
1821 CLOSE get_file_location_csr;
1822
1823 RETURN x_file_location;
1824
1825 END Get_JC_File_Location;
1826
1827 FUNCTION Get_Latest_JCG_Status(
1828 p_object_type IN VARCHAR2,
1829 p_object_id IN NUMBER
1830 )
1831 RETURN VARCHAR2
1832 IS
1833
1834 Cursor get_latest_status_csr(c_object_type VARCHAR2, c_object_id NUMBER)
1835 IS
1836 Select STATUS_CODE from AHL_ENIGMA_JCG_DETAILS
1837 where JCG_REQUEST_ID = (Select max(JCG_REQUEST_ID) from (
1838 Select JCG_REQUEST_ID from AHL_ENIGMA_JCG_DETAILS
1839 Where OBJECT_TYPE_CODE = c_object_type
1840 AND OBJECT_ID = c_object_id
1841 ));
1842
1843 l_api_name VARCHAR2(30) := 'Get_Latest_JCG_Status';
1844 x_latest_status VARCHAR2(1);
1845
1846
1847 BEGIN
1848
1849 x_latest_status := NULL;
1850
1851 OPEN get_latest_status_csr(p_object_type,p_object_id);
1852 FETCH get_latest_status_csr into x_latest_status;
1853 IF(get_latest_status_csr%NOTFOUND)THEN
1854 x_latest_status := 'N';
1855 END IF;
1856 CLOSE get_latest_status_csr;
1857
1858 RETURN x_latest_status;
1859
1860 END Get_Latest_JCG_Status;
1861
1862 FUNCTION Get_JCG_Error_Msg(
1863 p_object_type IN VARCHAR2,
1864 p_object_id IN NUMBER
1865 )
1866 RETURN VARCHAR2
1867 IS
1868
1869 Cursor get_jcg_error_csr(c_object_type VARCHAR2, c_object_id NUMBER)
1870 IS
1871 Select ERROR_MESSAGE from AHL_ENIGMA_JCG_DETAILS
1872 where JCG_REQUEST_ID = (Select max(JCG_REQUEST_ID) from (
1873 Select JCG_REQUEST_ID from AHL_ENIGMA_JCG_DETAILS
1874 Where OBJECT_TYPE_CODE = c_object_type
1875 AND OBJECT_ID = c_object_id
1876 AND STATUS_CODE = 'E'
1877 ));
1878
1879 l_api_name VARCHAR2(30) := 'Get_JCG_Error_Msg';
1880 x_error_msg VARCHAR2(4000);
1881
1882
1883 BEGIN
1884
1885 x_error_msg := NULL;
1886
1887 OPEN get_jcg_error_csr(p_object_type,p_object_id);
1888 FETCH get_jcg_error_csr into x_error_msg;
1889 CLOSE get_jcg_error_csr;
1890
1891 IF(x_error_msg IS NOT NULL) THEN
1892 x_error_msg := AHL_UTIL_PKG.Get_Message_String('AHL_COM_PRINT_REQ_ERROR') || ' ' ||x_error_msg;
1893 END IF;
1894
1895 RETURN x_error_msg;
1896
1897 END Get_JCG_Error_Msg;
1898
1899 --apattark added for generating xml
1900
1901 PROCEDURE Generate_JCG_XML
1902 (p_api_version IN NUMBER :=1.0,
1903 p_init_msg_list IN VARCHAR2 :=FND_API.G_FALSE,
1904 --p_commit IN VARCHAR2 :=FND_API.G_FALSE,
1905 p_validation_level IN NUMBER :=FND_API.G_VALID_LEVEL_FULL,
1906 p_object_type IN VARCHAR2,
1907 p_object_id IN NUMBER,
1908 p_split_flag IN VARCHAR2,
1909 x_return_status OUT NOCOPY VARCHAR2,
1910 x_msg_data OUT NOCOPY VARCHAR2,
1911 x_msg_count OUT NOCOPY NUMBER ,
1912 x_file_name OUT NOCOPY VARCHAR2
1913 --l_merged_lob OUT NOCOPY CLOB -- for testing purpose only ,not required
1914 )
1915 AS
1916 context DBMS_XMLGEN.ctxHandle;
1917
1918 dummy VARCHAR2 (2500);
1919
1920 --TYPE workorder_id_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
1921 TYPE ue_id_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
1922 l_ue_id_tbl ue_id_tbl_type;
1923 l_wo_id_tbl workorder_id_tbl_type;
1924 g_pkg_name VARCHAR2(30) :='AHL_PRD_PRINT_PVT';
1925 l_api_name CONSTANT VARCHAR2(30) := 'Generate_JCG_XML';
1926 l_index NUMBER ;
1927 l_mr_id NUMBER ;
1928 l_ue_id NUMBER ;
1929 l_visit_id NUMBER ;
1930 l_route_id NUMBER ;
1931 l_workorder_id NUMBER;
1932 l_wo_id NUMBER;
1933 l_instance_id NUMBER;
1934 l_uc_id NUMBER;
1935 l_relationship_id NUMBER;
1936 l_position_meaning VARCHAR2(80);
1937 l_count_instance_id NUMBER;
1938 l_visit_no VARCHAR2(80);
1939 l_wo_no VARCHAR2(80);
1940 l_unit_name VARCHAR2(80);
1941 l_collection_id NUMBER;
1942 l_occurence NUMBER;
1943 l_plan_id NUMBER;
1944 l_msg_count NUMBER := 0;
1945 l_msg_data VARCHAR2(1000) := '';
1946 l_return_status VARCHAR2(1) := 'S';
1947 l_query_string VARCHAR2(5000);
1948 l_accomplishment_date DATE;
1949 l_unit_eff_id NUMBER;
1950 l_dummy_flag BOOLEAN;
1951 l_dummy_status VARCHAR2(100);
1952 l_dummy_return BOOLEAN;
1953 l_counter_value NUMBER := null;
1954 l_net_reading NUMBER := null;
1955 l_concat_segment VARCHAR2(100);
1956 l_mti_seglist fnd_flex_ext.SegmentArray;
1957 kff_return_status VARCHAR2(1);
1958 l_nr_flag VARCHAR2(1);
1959
1960 l_merged_lob CLOB;
1961 l_wo_mat_lob CLOB;
1962 l_wo_res_lob CLOB;
1963 l_wo_op_lob CLOB;
1964 l_wo_doc_lob CLOB;
1965 l_wo_route_lob CLOB;
1966 l_route_KFF_lob CLOB;
1967 l_route_DFF_lob CLOB;
1968 l_mat_dff_lob CLOB;
1969 l_res_dff_lob CLOB;
1970 l_op_dffs_lob CLOB;
1971 l_qa_plan_lob CLOB;
1972 l_mr_det_lob CLOB;
1973 l_wo_mr_lob CLOB;
1974 l_panel_det_lob CLOB;
1975 l_qa_wo_plan_lob CLOB;
1976 l_qa_wo_res_lob CLOB;
1977 l_qa_res_lob CLOB;
1978 l_counter_lob CLOB;
1979 l_inst_remove_lob CLOB;
1980 l_tool_det_lob CLOB;
1981 l_mr_doc_lob CLOB;
1982 l_visit_det_lob CLOB;
1983 l_childmr_details_lob CLOB;
1984 l_offset NUMBER;
1985
1986 l_log_unexpected NUMBER; -- := FND_LOG.level_unexpected;
1987 l_log_statement NUMBER; -- := FND_LOG.level_statement;
1988 l_log_current_level NUMBER; -- := FND_LOG.g_current_runtime_level;
1989
1990
1991 -- start to create file
1992 -- x_file_name VARCHAR2(100) := 'Output.XML';
1993 -- p_dir VARCHAR2(100) := '/slot/ems1561/oracle/db/tech_st/10.2.0/temp';
1994 p_dir VARCHAR2(500);
1995 c_amount CONSTANT BINARY_INTEGER := 32767;
1996 l_buffer VARCHAR2(32767);
1997 l_chr10 PLS_INTEGER;
1998 l_clobLen PLS_INTEGER;
1999 l_fHandler UTL_FILE.FILE_TYPE;
2000 l_pos PLS_INTEGER := 1;
2001
2002 --end to create file
2003
2004 CURSOR get_header_det_csr (c_wo_id IN NUMBER) IS
2005 SELECT HROU.NAME ORG_NAME,
2006 DECODE(WIP.DATE_RELEASED, NULL, NULL,
2007 TO_CHAR(WIP.DATE_RELEASED,'YYYY-MM-DD')
2008 ||'T'
2009 ||TO_CHAR(WIP.DATE_RELEASED, 'hh24:mi:ss') ) DATE_RELEASED
2010 FROM AHL_WORKORDERS WO ,
2011 WIP_DISCRETE_JOBS WIP ,
2012 AHL_VISITS_B VST ,
2013 HR_ALL_ORGANIZATION_UNITS HROU
2014 WHERE WO.WIP_ENTITY_ID = WIP.WIP_ENTITY_ID
2015 AND VST.ORGANIZATION_ID = HROU.ORGANIZATION_ID
2016 AND WO.VISIT_ID = VST.VISIT_ID
2017 AND WO.WORKORDER_ID = c_wo_id;
2018
2019 CURSOR get_header_det1_csr (c_uc_id IN NUMBER) IS
2020 SELECT UC.NAME UC_NAME ,
2021 FND1.MEANING MODEL_MEANING
2022 FROM AHL_UNIT_CONFIG_HEADERS UC ,
2023 AHL_MC_HEADERS_B MC ,
2024 FND_LOOKUP_VALUES_VL FND1
2025 WHERE UC.MASTER_CONFIG_ID = MC.MC_HEADER_ID
2026 AND FND1.LOOKUP_CODE(+) = MC.MODEL_CODE
2027 AND FND1.LOOKUP_TYPE(+) = 'AHL_ENIGMA_MODEL_CODE'
2028 AND UC.UNIT_CONFIG_HEADER_ID = c_uc_id;
2029
2030
2031 CURSOR wo_details_csr (c_wo_id IN NUMBER) IS
2032 /*
2033 SELECT
2034 WO.object_version_number,
2035 WO.job_number,
2036 WO.job_description,
2037 WO.job_status_meaning,
2038 WO.department_name,
2039 decode(WO.scheduled_start_date, null, null, TO_CHAR(WO.scheduled_start_date,'YYYY-MM-DD')||'T'||TO_CHAR(WO.scheduled_start_date, 'hh24:mi:ss') ) scheduled_start_date,
2040 decode(WO.scheduled_end_date, null, null, TO_CHAR(WO.scheduled_end_date, 'YYYY-MM-DD')||'T'||TO_CHAR(WO.scheduled_end_date, 'hh24:mi:ss') ) scheduled_end_date,
2041 WO.unit_name,
2042 WO.wo_part_number,
2043 WO.item_instance_number,
2044 WO.serial_number ,
2045 WO.lot_number,
2046 WO.visit_number,
2047 RO.model_meaning,
2048 --WIP.date_released,
2049 decode(WIP.DATE_RELEASED, null, null, TO_CHAR(WIP.DATE_RELEASED,'YYYY-MM-DD')||'T'||TO_CHAR(WIP.DATE_RELEASED, 'hh24:mi:ss') ) DATE_RELEASED,
2050 WIP.net_quantity,
2051 UE.ata_code,
2052 WO.incident_number,
2053 HZ.party_name,
2054 --UE.originating_wo_id
2055 (select job_number from ahl_workorders_v WO , AHL_UNIT_EFFECTIVITIES_B UE where
2056 WO.workorder_id = UE.ORIGINATING_WO_ID
2057 and WO.unit_effectivity_id = UE.unit_effectivity_id) OriginatingWorkorder,
2058 WO.item_instance_id,
2059 decode(WO.plan_id,null,'F','T') isQualityEnabled
2060 FROM AHL_WORKORDERS_V WO, WIP_DISCRETE_JOBS WIP, AHL_ROUTES_V RO, AHL_UNIT_EFFECTIVITIES_B UE, HZ_PARTIES HZ, CSI_ITEM_INSTANCES CSI
2061 WHERE WO.wip_entity_id = WIP.wip_entity_id
2062 AND WO.route_id = RO.route_id (+)
2063 AND UE.unit_effectivity_id(+) = WO.unit_effectivity_id
2064 AND CSI.instance_id = WO.ITEM_INSTANCE_ID(+)
2065 AND CSI.owner_party_id(+) = HZ.party_id
2066 AND workorder_id = c_wo_id;
2067 */
2068 SELECT WO.OBJECT_VERSION_NUMBER,
2069 WO.JOB_NUMBER ,
2070 WO.JOB_DESCRIPTION ,
2071 WO.JOB_STATUS_MEANING ,
2072 WO.DEPARTMENT_NAME ,
2073 DECODE(WO.SCHEDULED_START_DATE, NULL, NULL, TO_CHAR(WO.SCHEDULED_START_DATE,'YYYY-MM-DD')
2074 ||'T'
2075 ||TO_CHAR(WO.SCHEDULED_START_DATE, 'hh24:mi:ss') ) SCHEDULED_START_DATE,
2076 DECODE(WO.SCHEDULED_END_DATE, NULL, NULL, TO_CHAR(WO.SCHEDULED_END_DATE, 'YYYY-MM-DD')
2077 ||'T'
2078 ||TO_CHAR(WO.SCHEDULED_END_DATE, 'hh24:mi:ss') ) SCHEDULED_END_DATE,
2079 WO.UNIT_NAME ,
2080 WO.WO_PART_NUMBER ,
2081 WO.ITEM_INSTANCE_NUMBER ,
2082 WO.SERIAL_NUMBER ,
2083 WO.LOT_NUMBER ,
2084 WO.VISIT_NUMBER ,
2085 --RO.MODEL_MEANING ,
2086 MODELTYPE.MEANING MODEL_MEANING ,
2087 DECODE(WIP.DATE_RELEASED, NULL, NULL, TO_CHAR(WIP.DATE_RELEASED,'YYYY-MM-DD')
2088 ||'T'
2089 ||TO_CHAR(WIP.DATE_RELEASED, 'hh24:mi:ss') ) DATE_RELEASED,
2090 WIP.NET_QUANTITY ,
2091 --UE.ATA_CODE ,
2092 DECODE(RO.ENIGMA_ROUTE_ID, NULL, NULL, SUBSTR(route_no, instr(route_no, ':',1,1)+1)) ATA_CODE,
2093 -- fix for bug# 10016417
2094 --(SELECT CSIN.INCIDENT_NUMBER
2095 --FROM CS_INCIDENTS_ALL_B CSIN
2096 --WHERE CSIN.INCIDENT_ID = UE.cs_incident_id
2097 --)
2098 (SELECT CSIN.INCIDENT_NUMBER
2099 FROM CS_INCIDENTS_ALL_B CSIN, AHL_VISIT_TASKS_B TSK
2100 WHERE CSIN.INCIDENT_ID = TSK.SERVICE_REQUEST_ID
2101 AND TSK.VISIT_TASK_ID = WO.VISIT_TASK_ID
2102 )
2103 INCIDENT_NUMBER,
2104 (SELECT HZ.PARTY_NAME
2105 FROM HZ_PARTIES HZ
2106 WHERE HZ.PARTY_ID = CSI.OWNER_PARTY_ID
2107 )
2108 PARTY_NAME,
2109 (SELECT WORKORDER_NAME
2110 FROM AHL_WORKORDERS WO --,
2111 --AHL_UNIT_EFFECTIVITIES_B UE1
2112 WHERE WO.WORKORDER_ID = UE.ORIGINATING_WO_ID
2113 --AND WO.UNIT_EFFECTIVITY_ID = UE.UNIT_EFFECTIVITY_ID
2114 )
2115 ORIGINATINGWORKORDER,
2116 WO.ITEM_INSTANCE_ID ,
2117 DECODE(W.PLAN_ID,NULL,'F','T') ISQUALITYENABLED,
2118 WO.ROUTE_ID
2119 FROM AHL_WORKORDER_TASKS_V WO ,
2120 WIP_DISCRETE_JOBS WIP ,
2121 AHL_ROUTES_B RO ,
2122 AHL_UNIT_EFFECTIVITIES_B UE ,
2123 --HZ_PARTIES HZ ,
2124 CSI_ITEM_INSTANCES CSI ,
2125 --CS_INCIDENTS_ALL_B CSIN ,
2126 --AHL_VISIT_TASKS_VL VTS ,
2127 AHL_WORKORDERS W ,
2128 (SELECT LOOKUP_CODE ,
2129 MEANING
2130 FROM FND_LOOKUP_VALUES
2131 WHERE LOOKUP_TYPE = 'AHL_ENIGMA_MODEL_CODE'
2132 AND LANGUAGE = USERENV('LANG')
2133 )
2134 MODELTYPE
2135 WHERE WO.WIP_ENTITY_ID = WIP.WIP_ENTITY_ID
2136 AND WO.ROUTE_ID = RO.ROUTE_ID (+)
2137 AND UE.UNIT_EFFECTIVITY_ID(+) = WO.UNIT_EFFECTIVITY_ID
2138 AND CSI.INSTANCE_ID = WO.ITEM_INSTANCE_ID
2139 --AND CSI.OWNER_PARTY_ID(+) = HZ.PARTY_ID
2140 AND MODELTYPE.LOOKUP_CODE(+) = RO.MODEL_CODE
2141 --AND VTS.SERVICE_REQUEST_ID = CSIN.INCIDENT_ID(+)
2142 --AND WO.VISIT_TASK_ID = VTS.VISIT_TASK_ID
2143 AND W.workorder_id = WO.workorder_id
2144 AND WO.WORKORDER_ID = c_wo_id;
2145
2146
2147 CURSOR mat_details_csr (c_wo_id IN NUMBER)
2148 IS
2149 SELECT MSI.CONCATENATED_SEGMENTS,
2150 WRO.OPERATION_SEQ_NUM OPERATION_SEQUENCE ,
2151 MSI.DESCRIPTION ,
2152 IG.NAME ,
2153 WRO.REQUIRED_QUANTITY REQUESTED_QUANTITY ,
2154 DECODE(WRO.date_required, NULL, NULL, TO_CHAR(WRO.date_required, 'YYYY-MM-DD')
2155 ||'T'
2156 ||TO_CHAR(WRO.date_required, 'hh24:mi:ss') ) required_date,
2157 WRO.QUANTITY_ISSUED ISSUED_QTY ,
2158 MSI.PRIMARY_UNIT_OF_MEASURE UOM ,
2159 ASM.SCHEDULED_MATERIAL_ID,
2160 (SELECT f.meaning from fnd_lookup_values_vl f
2161 WHERE f.lookup_type = 'ITEM_TYPE' and f.lookup_code = msi.item_type) item_type
2162 FROM --AHL_JOB_OPER_MATERIALS_V JM,
2163 WIP_REQUIREMENT_OPERATIONS WRO, AHL_SCHEDULE_MATERIALS ASM,
2164 AHL_ITEM_GROUPS_B IG, AHL_WORKORDERS WO, MTL_SYSTEM_ITEMS_KFV MSI
2165 WHERE WO.wip_entity_id = WRO.wip_entity_id
2166 AND WO.visit_task_id = ASM.visit_task_id
2167 AND ASM.operation_sequence = WRO.operation_seq_num
2168 AND ASM.inventory_item_id = WRO.inventory_item_id
2169 AND WRO.organization_id = MSI.organization_id
2170 AND WRO.inventory_item_id = MSI.inventory_item_id
2171 AND IG.ITEM_GROUP_ID(+) = ASM.ITEM_GROUP_ID
2172 AND WO.WORKORDER_ID = c_wo_id
2173 ORDER BY 2;
2174
2175 CURSOR res_req_details_csr(c_wo_id IN NUMBER)
2176 IS
2177 SELECT WOR.OPERATION_SEQ_NUM operation_sequence,
2178 WOR.RESOURCE_SEQ_NUM resource_sequence ,
2179 BOM.RESOURCE_CODE resource_code,
2180 BOM.DESCRIPTION resource_name,
2181 MFG.MEANING resource_type_name,
2182 WOR.ASSIGNED_UNITS quantity,
2183 DECODE(nvl(WOR.ASSIGNED_UNITS,0), 0, 0, WOR.USAGE_RATE_OR_AMOUNT/WOR.ASSIGNED_UNITS) duration ,
2184 (SELECT A.UNIT_OF_MEASURE FROM MTL_UNITS_OF_MEASURE A
2185 WHERE A.UOM_CODE=BOM.UNIT_OF_MEASURE) uom_name,
2186 WOR.RESOURCE_ID,
2187 (select awo.operation_id from AHL_WORKORDER_OPERATIONS AWO
2188 where AWO.workorder_id = wo.workorder_id
2189 and awo.operation_sequence_num = WOR.OPERATION_SEQ_NUM) operation_id
2190 FROM WIP_OPERATION_RESOURCES WOR,
2191 BOM_RESOURCES BOM, MFG_LOOKUPS MFG, AHL_WORKORDERS WO
2192 WHERE WO.workorder_id = c_wo_id
2193 AND WOR.resource_id = BOM.resource_id
2194 AND WO.wip_entity_id = WOR.wip_entity_id
2195 AND MFG.LOOKUP_TYPE(+) = 'BOM_RESOURCE_TYPE'
2196 AND MFG.LOOKUP_CODE(+) = BOM.RESOURCE_TYPE
2197 ORDER BY 1,2;
2198
2199 CURSOR get_wo_id(c_visit_id IN NUMBER)
2200 IS
2201 SELECT workorder_id
2202 --from ahl_workorders_v
2203 FROM ahl_workorders
2204 WHERE visit_id = c_visit_id
2205 AND master_workorder_flag = 'N'
2206 AND STATUS_CODE NOT IN ( '7','12','14','15','17','22' )
2207 order by workorder_name;
2208
2209 CURSOR get_ue_wo_id(c_ue_id IN NUMBER)
2210 IS
2211 SELECT wo.WORKORDER_ID
2212 --FROM AHL_WORKORDERS_V
2213 FROM AHL_WORKORDERS WO,
2214 ahl_visit_tasks_b tsk
2215 WHERE wo.visit_task_id = tsk.visit_task_id
2216 AND wo.master_workorder_flag = 'N'
2217 AND WO.STATUS_CODE NOT IN ('7','12','14','15','17','22')
2218 AND tsk.UNIT_EFFECTIVITY_ID = c_ue_id
2219 order by WO.workorder_name;
2220
2221 CURSOR op_details_csr(c_wo_id IN NUMBER)
2222 IS
2223 SELECT WO.operation_sequence_num,
2224 WO.operation_code ,
2225 WO.description ,
2226 WO.status ,
2227 WO.department_name ,
2228 --WO.scheduled_start_date ,
2229 --WO.scheduled_end_date ,
2230 DECODE(WO.scheduled_start_date, NULL, NULL, TO_CHAR(WO.scheduled_start_date,'YYYY-MM-DD')
2231 ||'T'
2232 ||TO_CHAR(WO.scheduled_start_date, 'hh24:mi:ss') ) scheduled_start_date,
2233 DECODE(WO.scheduled_end_date, NULL, NULL, TO_CHAR(WO.scheduled_end_date, 'YYYY-MM-DD')
2234 ||'T'
2235 ||TO_CHAR(WO.scheduled_end_date, 'hh24:mi:ss') ) scheduled_end_date,
2236 DECODE(WO.plan_id,NULL,'F','T') isQualityEnabled ,
2237 WO.workorder_operation_id
2238 FROM AHL_WORKORDER_OPERATIONS_V WO --AHL_OPERATIONS_B OP
2239 WHERE -- WO.operation_id = OP.operation_id(+) and
2240 WO.workorder_id = c_wo_id
2241 ORDER BY 1 ;
2242
2243 Cursor route_details_csr(c_route_id IN NUMBER) IS
2244 /*
2245 select
2246 object_version_number,
2247 route_no,
2248 title,
2249 route_type,
2250 revision_number,
2251 enigma_doc_id,
2252 enigma_route_id,
2253 zone,
2254 sub_zone,
2255 process,
2256 job_card_lyt_meaning,
2257 model_code
2258 from AHL_ROUTES_V
2259 where route_id = c_route_id;
2260 */
2261 SELECT R.object_version_number ,
2262 R.route_no ,
2263 T.title ,
2264 RTTYPE.MEANING route_type ,
2265 R.revision_number ,
2266 R.enigma_doc_id ,
2267 R.enigma_route_id ,
2268 ZONE.MEANING zone ,
2269 SUBZONE.MEANING sub_zone ,
2270 PROCESS.MEANING process ,
2271 JOBCARDLYT.MEANING job_card_lyt_meaning ,
2272 R.model_code ,
2273 R.last_update_date
2274 FROM AHL_ROUTES_B R ,
2275 AHL_ROUTES_TL T ,
2276 (SELECT LOOKUP_CODE ,
2277 MEANING
2278 FROM FND_LOOKUP_VALUES
2279 WHERE LOOKUP_TYPE = 'AHL_RM_JOB_CARD_LYT'
2280 AND LANGUAGE = USERENV('LANG')
2281 )
2282 JOBCARDLYT ,
2283 (SELECT LOOKUP_CODE,
2284 MEANING
2285 FROM FND_LOOKUP_VALUES
2286 WHERE LOOKUP_TYPE = 'AHL_SUB_ZONE'
2287 AND LANGUAGE = USERENV('LANG')
2288 )
2289 SUBZONE ,
2290 (SELECT LOOKUP_CODE,
2291 MEANING
2292 FROM FND_LOOKUP_VALUES
2293 WHERE LOOKUP_TYPE = 'AHL_PROCESS_CODE'
2294 AND LANGUAGE = USERENV('LANG')
2295 )
2296 PROCESS ,
2297 (SELECT LOOKUP_CODE,
2298 MEANING
2299 FROM FND_LOOKUP_VALUES
2300 WHERE LOOKUP_TYPE = 'AHL_ZONE'
2301 AND LANGUAGE = USERENV('LANG')
2302 )
2303 ZONE ,
2304 (SELECT LOOKUP_CODE,
2305 MEANING
2306 FROM FND_LOOKUP_VALUES
2307 WHERE LOOKUP_TYPE = 'AHL_ROUTE_TYPE'
2308 AND LANGUAGE = USERENV('LANG')
2309 )
2310 RTTYPE
2311 WHERE R.ROUTE_ID = T.ROUTE_ID
2312 AND T.LANGUAGE = USERENV('LANG')
2313 AND JOBCARDLYT.LOOKUP_CODE (+) = R.JOBCARDLYT_CODE
2314 AND ZONE.LOOKUP_CODE (+) = R.ZONE_CODE
2315 AND SUBZONE.LOOKUP_CODE (+) = R.SUB_ZONE_CODE
2316 AND PROCESS.LOOKUP_CODE (+) = R.PROCESS_CODE
2317 AND RTTYPE.LOOKUP_CODE (+) = R.ROUTE_TYPE_CODE
2318 AND R.route_id = c_route_id;
2319
2320 CURSOR op_det_csr(c_route_id IN NUMBER, c_wo_id IN NUMBER)
2321 IS
2322 SELECT DISTINCT WO.OPERATION_SEQUENCE_NUM,
2323 WO.OPERATION_CODE ,
2324 WO.DESCRIPTION ,
2325 WO.OPERATION_TYPE ,
2326 OP.ENIGMA_DOC_ID ,
2327 OP.OPERATION_ID ,
2328 OP.REVISION_NUMBER ,
2329 OP.LAST_UPDATE_DATE
2330 FROM AHL_WORKORDER_OPERATIONS_V WO,
2331 AHL_ROUTE_OPERATIONS RP ,
2332 AHL_OPERATIONS_B OP
2333 WHERE RP.OPERATION_ID(+) = WO.OPERATION_ID
2334 AND WO.OPERATION_ID = OP.OPERATION_ID(+)
2335 AND RP.route_id = c_route_id
2336 AND WO.workorder_id = c_wo_id
2337 ORDER BY 1;
2338
2339 CURSOR get_mr_details_csr(c_ue_id IN NUMBER)
2340 IS
2341 /* SELECT ue.title ,
2342 ue.description ,
2343 ue.version_number Version ,
2344 ue.program_type ProgramType ,
2345 mr.program_subtype ProgramSubtype ,
2346 ue.counter_name DueCounterName ,
2347 ue.due_counter_value DueCounterValue ,
2348 mi.unit_of_measure UOM ,
2349 mi.interval_value IntervalValue ,
2350 mi.start_value StartValue ,
2351 mi.start_date StartDate ,
2352 ue.due_date DueDate ,
2353 ue.csi_item_instance_id ,
2354 mr.mr_header_id ,
2355 mr.last_update_date
2356 FROM ahl_mr_headers_v mr ,
2357 ahl_unit_effectivities_v ue,
2358 ahl_mr_intervals_v mi
2359 WHERE ue.mr_header_id = mr.mr_header_id
2360 AND ue.mr_interval_id = mi.mr_interval_id(+)
2361 AND ue.unit_effectivity_id = c_ue_id;
2362 */
2363
2364 SELECT MRB.title ,
2365 MRT.description ,
2366 MRB.version_number Version ,
2367 F1.MEANING ProgramType ,
2368 SUBTYPE.MEANING ProgramSubtype ,
2369 C.NAME DueCounterName ,
2370 B.due_counter_value DueCounterValue ,
2371 I.unit_of_measure UOM ,
2372 I.interval_value IntervalValue ,
2373 I.start_value StartValue ,
2374 I.start_date StartDate ,
2375 B.due_date DueDate ,
2376 B.csi_item_instance_id ,
2377 MRB.mr_header_id ,
2378 MRB.last_update_date
2379 FROM ahl_mr_headers_b MRB ,
2380 ahl_unit_effectivities_b B,
2381 ahl_mr_intervals_v I ,
2382 fnd_lookup_values F1 ,
2383 csi_counter_template_vl C ,
2384 ahl_mr_headers_tl MRT ,
2385 (SELECT LOOKUP_CODE,
2386 MEANING
2387 FROM FND_LOOKUP_VALUES
2388 WHERE LOOKUP_TYPE = 'AHL_FMP_MR_PROGRAM_SUBTYPE'
2389 AND LANGUAGE = USERENV('LANG')
2390 ) SUBTYPE
2391 WHERE B.mr_header_id = MRB.mr_header_id
2392 AND B.mr_interval_id = I.mr_interval_id(+)
2393 AND B.object_type = 'MR'
2394 AND F1.lookup_code = MRB.program_type_code
2395 AND F1.lookup_type = 'AHL_FMP_MR_PROGRAM_TYPE'
2396 AND F1.language = USERENV('LANG')
2397 AND I.counter_id = C.counter_id(+)
2398 AND B.mr_interval_id = I.mr_interval_id(+)
2399 AND MRB.mr_header_id = MRT.mr_header_id
2400 AND MRT.language = USERENV('LANG')
2401 AND SUBTYPE.lookup_code(+) = MRB.program_subtype_code
2402 AND B.unit_effectivity_id = c_ue_id;
2403
2404 CURSOR qa_plan_csr(c_qa_plan_id IN NUMBER)
2405 IS
2406 SELECT DISTINCT plan_name,
2407 plan_description
2408 FROM QA_PLAN_CHARS_V
2409 WHERE plan_id = c_qa_plan_id;
2410
2411 CURSOR get_op_qa_res_csr(c_wo_op_id IN NUMBER)
2412 IS
2413 SELECT plan_id,
2414 collection_id
2415 FROM AHL_WORKORDER_OPERATIONS
2416 WHERE workorder_operation_id = c_wo_op_id;
2417
2418 CURSOR get_wo_qa_res_csr(c_wo_id IN NUMBER)
2419 IS
2420 SELECT plan_id,
2421 collection_id
2422 FROM AHL_WORKORDERS
2423 WHERE workorder_id = c_wo_id;
2424
2425 CURSOR qa_result_csr(c_collection_id IN NUMBER)
2426 IS
2427 SELECT occurrence
2428 FROM QA_RESULTS
2429 WHERE collection_id = c_collection_id;
2430
2431 CURSOR get_visit_no(c_visit_id IN NUMBER)
2432 IS
2433 SELECT visit_number
2434 FROM ahl_visits_b
2435 WHERE visit_id = c_visit_id;
2436
2437 CURSOR get_wo_no(c_wo_id IN NUMBER)
2438 IS
2439 SELECT workorder_name
2440 FROM ahl_workorders
2441 WHERE workorder_id = c_wo_id;
2442
2443 CURSOR qa_plan_attr_csr (c_plan_id IN NUMBER)
2444 IS
2445 SELECT char_id CharId ,
2446 prompt_sequence PromptSequence,
2447 prompt Prompt ,
2448 default_value DefaultValue ,
2449 enabled_flag ,
2450 displayed_flag
2451 FROM QA_PLAN_CHARS
2452 WHERE plan_id = c_plan_id
2453 ORDER BY 2;
2454
2455 CURSOR route_ffs_csr(c_route_id IN NUMBER)
2456 IS
2457 SELECT segment1 ,
2458 segment2 ,
2459 segment3 ,
2460 segment4 ,
2461 segment5 ,
2462 segment6 ,
2463 segment7 ,
2464 segment8 ,
2465 segment9 ,
2466 segment10 ,
2467 segment11 ,
2468 segment12 ,
2469 segment13 ,
2470 segment14 ,
2471 segment15 ,
2472 attribute1 ,
2473 attribute2 ,
2474 attribute3 ,
2475 attribute4 ,
2476 attribute5 ,
2477 attribute6 ,
2478 attribute7 ,
2479 attribute8 ,
2480 attribute9 ,
2481 attribute10 ,
2482 attribute11 ,
2483 attribute12 ,
2484 attribute13 ,
2485 attribute14 ,
2486 attribute15
2487 FROM ahl_routes_b
2488 WHERE route_id = c_route_id;
2489
2490 CURSOR panel_details_csr (c_route_id IN NUMBER)
2491 IS
2492 SELECT panel_type ,
2493 panel_type_desc
2494 FROM AHL_RT_OPER_ACCESS_PANELS_V
2495 WHERE ASSOCIATION_TYPE_CODE = 'ROUTE'
2496 AND object_id = c_route_id;
2497
2498 CURSOR chk_route_res_csr (p_route_id IN NUMBER)
2499 IS
2500 SELECT 'Y'
2501 FROM AHL_RT_OPER_RESOURCES AR
2502 WHERE AR.association_type_code='ROUTE'
2503 AND AR.object_id=p_route_id
2504 AND ROWNUM < 2;
2505
2506 CURSOR nr_details_csr (c_ue_id IN NUMBER)
2507 IS
2508 SELECT CS.INCIDENT_ID,
2509 UE.UNIT_EFFECTIVITY_ID,
2510 (SELECT cit.name
2511 || '-'
2512 || cs.incident_number
2513 FROM cs_incidents_all_vl cs,
2514 cs_incident_types_vl cit
2515 WHERE cs.incident_type_id = cit.incident_type_id
2516 AND cs.incident_id = UE.Cs_Incident_id) title,
2517 UE.FLIGHT_NUMBER,
2518 CS_TYPE.NAME,
2519 (SELECT MEANING
2520 FROM FND_LOOKUP_VALUES
2521 WHERE LOOKUP_TYPE = 'AHL_LOG_SERIES_CODE'
2522 AND LOOKUP_CODE =UE.LOG_SERIES_CODE
2523 AND LANGUAGE = USERENV('LANG')
2524 ) UE_LOG_SERIES,
2525 UE.LOG_SERIES_NUMBER LOG_NUMBER,
2526 MTL.CONCATENATED_SEGMENTS UE_ITEM_NUMBER,
2527 CSI.SERIAL_NUMBER UE_SERIAL_NUMBER ,
2528 (SELECT MEANING
2529 FROM FND_LOOKUP_VALUES
2530 WHERE LOOKUP_TYPE = 'AHL_UNIT_EFFECTIVITY_STATUS'
2531 AND LOOKUP_CODE = UE.STATUS_CODE
2532 AND LANGUAGE = USERENV('LANG')
2533 ) UE_STATUS,
2534 --CS.CREATION_DATE ,
2535 DECODE(CS.CREATION_DATE, NULL, NULL, TO_CHAR(CS.CREATION_DATE,'YYYY-MM-DD')
2536 ||'T'
2537 ||TO_CHAR(CS.CREATION_DATE, 'hh24:mi:ss') ) CREATION_DATE ,
2538 WO.WORKORDER_NAME ,
2539 PARTY.PARTY_NAME SR_CUSTOMER_NAME,
2540 DECODE(SR_CONT.CONTACT_TYPE,'PERSON',PARTY.PARTY_NAME,
2541 (SELECT CS_EMPL.FULL_NAME
2542 FROM PER_ALL_PEOPLE_F CS_EMPL
2543 WHERE TRUNC(SYSDATE) BETWEEN CS_EMPL.EFFECTIVE_START_DATE AND CS_EMPL.EFFECTIVE_END_DATE
2544 AND CS_EMPL.PERSON_ID = SR_CONT.PARTY_ID
2545 )) SR_CONTACT_NAME,
2546 CS.PROBLEM_CODE ,
2547 (SELECT CS_TL.SUMMARY
2548 FROM CS_INCIDENTS_ALL_TL CS_TL
2549 WHERE LANGUAGE = USERENV('LANG')
2550 AND CS.INCIDENT_ID = CS_TL.INCIDENT_ID
2551 ) SR_PROBLEM_SUMMARY ,
2552 (SELECT CS_SEV.NAME
2553 FROM CS_INCIDENT_SEVERITIES_TL CS_SEV
2554 WHERE LANGUAGE = USERENV('LANG')
2555 AND CS.INCIDENT_SEVERITY_ID = CS_SEV.INCIDENT_SEVERITY_ID
2556 ) SR_INCIDENT_SEVERITY,
2557 CS.EXPECTED_RESOLUTION_DATE,
2558 CS.RESOLUTION_CODE,
2559 UE_ATA_LKUP.MEANING UE_ATA_MEANING ,
2560 UE_ATA_LKUP.DESCRIPTION UE_ATA_DESC,
2561 (SELECT MEANING
2562 FROM FND_LOOKUP_VALUES
2563 WHERE LOOKUP_TYPE = 'AHL_MEL_CDL_TYPE'
2564 AND LOOKUP_CODE =UE.MEL_CDL_TYPE_CODE
2565 AND LANGUAGE = USERENV('LANG')
2566 ) UE_MEL_CDL_TYPE,
2567 AHL_UMP_NONROUTINES_PVT.GET_MEL_CDL_STATUS(UE.UNIT_EFFECTIVITY_ID, 'F') UE_MEL_CDL_STATUS,
2568 ATASEQ.UE_ATA_PC_NODE_NAME,
2569 ATASEQ.UE_ATA_REPAIR_CATEGORY,
2570 UE.DUE_DATE,
2571 ATASEQ.UE_ATA_REPAIR_TIME,
2572 (SELECT JNTT.NOTES_DETAIL
2573 FROM JTF_NOTES_B JNTB,
2574 JTF_NOTES_TL JNTT
2575 WHERE JNTB.JTF_NOTE_ID = JNTT.JTF_NOTE_ID
2576 AND JNTT.LANGUAGE = USERENV('LANG')
2577 AND JNTB.SOURCE_OBJECT_CODE = 'AHL_MEL_CDL'
2578 AND JNTB.SOURCE_OBJECT_ID = ATASEQ.MEL_CDL_ATA_SEQUENCE_ID
2579 ) UE_ATA_REMARKS,
2580 CS.INCIDENT_OCCURRED_DATE,
2581 ATASEQ.UE_ATA_HEADER_REVISION,
2582 (Select wip.date_released
2583 from wip_discrete_jobs wip,
2584 ahl_workorders wo
2585 where wo.wip_entity_id = wip.wip_entity_id
2586 and wo.master_workorder_flag = 'Y'
2587 and wo.visit_task_id = visit_task.visit_task_id
2588 ) RELEASE_DATE
2589 FROM
2590 AHL_UNIT_EFFECTIVITIES_B UE,
2591 MTL_SYSTEM_ITEMS_KFV MTL ,
2592 CSI_ITEM_INSTANCES CSI ,
2593 CS_INCIDENTS_ALL_B CS,
2594 AHL_WORKORDERS WO,
2595 AHL_VISIT_TASKS_B VISIT_TASK,
2596 HZ_PARTIES PARTY ,
2597 CS_INCIDENT_TYPES_TL CS_TYPE,
2598 (SELECT INCIDENT_ID ,
2599 PARTY_ID ,
2600 CONTACT_TYPE
2601 FROM CS_HZ_SR_CONTACT_POINTS
2602 WHERE PRIMARY_FLAG = 'Y'
2603 ) SR_CONT ,
2604 (SELECT LOOKUP_CODE,
2605 MEANING ,
2606 DESCRIPTION
2607 FROM FND_LOOKUP_VALUES
2608 WHERE LOOKUP_TYPE = 'AHL_ATA_CODE'
2609 AND LANGUAGE = USERENV('LANG')
2610 ) UE_ATA_LKUP,
2611 (SELECT UDF.UNIT_EFFECTIVITY_ID ,
2612 ATA.MEL_CDL_ATA_SEQUENCE_ID ,
2613 SRURG.NAME UE_ATA_REPAIR_CATEGORY ,
2614 REPCAT.REPAIR_TIME UE_ATA_REPAIR_TIME ,
2615 PCN.NAME UE_ATA_PC_NODE_NAME ,
2616 HDR.REVISION UE_ATA_HEADER_REVISION
2617 FROM AHL_UNIT_DEFERRALS_B UDF,
2618 AHL_MEL_CDL_ATA_SEQUENCES ATA ,
2619 AHL_MEL_CDL_HEADERS HDR ,
2620 AHL_PC_NODES_B PCN ,
2621 AHL_REPAIR_CATEGORIES REPCAT ,
2622 CS_INCIDENT_URGENCIES_TL SRURG
2623 WHERE UDF.UNIT_DEFERRAL_TYPE IN ('MEL', 'CDL')
2624 AND UDF.ATA_SEQUENCE_ID = ATA.MEL_CDL_ATA_SEQUENCE_ID
2625 AND ATA.MEL_CDL_HEADER_ID = HDR.MEL_CDL_HEADER_ID
2626 AND HDR.PC_NODE_ID = PCN.PC_NODE_ID
2627 AND ATA.REPAIR_CATEGORY_ID = REPCAT.REPAIR_CATEGORY_ID
2628 AND REPCAT.SR_URGENCY_ID = SRURG.INCIDENT_URGENCY_ID
2629 AND SRURG.LANGUAGE = USERENV('LANG')
2630 ) ATASEQ
2631 WHERE
2632 UE.OBJECT_TYPE = 'SR'
2633 AND UE.CS_INCIDENT_ID = CS.INCIDENT_ID
2634 AND CSI.INVENTORY_ITEM_ID = MTL.INVENTORY_ITEM_ID
2635 AND CSI.LAST_VLD_ORGANIZATION_ID = MTL.ORGANIZATION_ID
2636 AND UE.CSI_ITEM_INSTANCE_ID = CSI.INSTANCE_ID
2637 AND UE.UNIT_EFFECTIVITY_ID = VISIT_TASK.UNIT_EFFECTIVITY_ID(+)
2638 AND VISIT_TASK.VISIT_TASK_ID = WO.VISIT_TASK_ID(+)
2639 AND VISIT_TASK.TASK_TYPE_CODE IN ('SUMMARY', 'UNASSOCIATED')
2640 AND CS.CUSTOMER_ID = PARTY.PARTY_ID
2641 AND SR_CONT.INCIDENT_ID(+) = CS.INCIDENT_ID
2642 AND UE.ATA_CODE = UE_ATA_LKUP.LOOKUP_CODE(+)
2643 AND ATASEQ.UNIT_EFFECTIVITY_ID(+) = UE.UNIT_EFFECTIVITY_ID
2644 AND CS.INCIDENT_TYPE_ID = CS_TYPE.INCIDENT_TYPE_ID
2645 AND CS_TYPE.LANGUAGE = USERENV('LANG')
2646 AND UE.UNIT_EFFECTIVITY_ID = c_ue_id;
2647
2648
2649 CURSOR get_child_ue (c_ue_id IN NUMBER) IS
2650 SELECT c_ue_id FROM DUAL
2651 union
2652 SELECT unit_effectivity_id
2653 FROM AHL_UNIT_EFFECTIVITIES_B UE,
2654 (
2655 SELECT related_ue_id
2656 FROM AHL_UE_RELATIONSHIPS
2657 START WITH ue_id = c_ue_id
2658 AND relationship_code = 'PARENT'
2659 CONNECT BY ue_id = PRIOR related_ue_id
2660 AND relationship_code = 'PARENT'
2661 )CH
2662 WHERE UE.unit_effectivity_id = CH.related_ue_id;
2663
2664 CURSOR get_nr_mr (c_ue_id IN NUMBER) IS
2665 SELECT DISTINCT
2666 VST1.UNIT_EFFECTIVITY_ID
2667 FROM AHL_VISIT_TASKS_B VST,
2668 AHL_UNIT_EFFECTIVITIES_B UE,
2669 AHL_VISIT_TASKS_B VST1
2670 WHERE VST.SERVICE_REQUEST_ID = VST1.SERVICE_REQUEST_ID
2671 AND VST.UNIT_EFFECTIVITY_ID = UE.UNIT_EFFECTIVITY_ID
2672 AND UE.UNIT_EFFECTIVITY_ID = c_ue_id;
2673
2674 CURSOR mr_child_details_csr(c_ue_id IN NUMBER)
2675 IS
2676 SELECT UE.unit_effectivity_id ,
2677 MRB.TITLE
2678 FROM AHL_UNIT_EFFECTIVITIES_B UE,
2679 AHL_MR_HEADERS_B MRB,
2680 (
2681 SELECT related_ue_id
2682 FROM AHL_UE_RELATIONSHIPS
2683 START WITH ue_id = c_ue_id
2684 AND relationship_code = 'PARENT'
2685 CONNECT BY ue_id = PRIOR related_ue_id
2686 AND relationship_code = 'PARENT'
2687 )CH
2688 WHERE UE.unit_effectivity_id = CH.related_ue_id
2689 AND UE.MR_HEADER_ID = MRB.MR_HEADER_ID;
2690
2691 CURSOR nr_mr_details_csr(c_incident_id IN NUMBER)
2692 IS
2693 SELECT DISTINCT
2694 VST.UNIT_EFFECTIVITY_ID ,
2695 MRB.TITLE
2696 FROM AHL_MR_HEADERS_B MRB,
2697 AHL_VISIT_TASKS_B VST
2698 WHERE VST.SERVICE_REQUEST_ID = c_incident_id
2699 AND VST.MR_ID = MRB.MR_HEADER_ID;
2700
2701 l_route_doc VARCHAR2(4000) := '
2702 SELECT DOC.DOCUMENT_NO "DocumentNumber" ,
2703 DOC.DOCUMENT_TITLE "DocumentTitle" ,
2704 DOC.DOC_TYPE_CODE "DocumentType" ,
2705 DOCV.DOC_SUB_TYPE_CODE "DocumentSubType" ,
2706 DOC.ASO_OBJECT_TYPE_DESC "AsoObjectTypeDesc" ,
2707 NULL "OperationSequenceNumber",
2708 DOC.REVISION_NO "RevisionNumber" ,
2709 DOC.CHAPTER "Chapter" ,
2710 DOC.SECTION "Section" ,
2711 DOC.SUBJECT "Subject" ,
2712 DOC.PAGE "Page" ,
2713 DOC.FIGURE "Figure" ,
2714 DOC.NOTE "Note"
2715 FROM --AHL_WORKORDERS WO ,
2716 AHL_DOCUMENT_ASSOS_V DOC,
2717 AHL_DOCUMENTS_V DOCV
2718 WHERE --WO.ROUTE_ID = DOC.ASO_OBJECT_ID
2719 DOC.DOCUMENT_ID = DOCV.DOCUMENT_ID
2720 AND DOC.ASO_OBJECT_TYPE_CODE = ''ROUTE''
2721 AND DOC.ASO_OBJECT_ID = :1';
2722 --AND WO.WORKORDER_ID = :1';
2723
2724
2725 l_op_doc VARCHAR2(4000) := '
2726 SELECT DOC.DOCUMENT_NO "DocumentNumber" ,
2727 DOC.DOCUMENT_TITLE "DocumentTitle" ,
2728 DOC.DOC_TYPE_CODE "DocumentType" ,
2729 DOCV.DOC_SUB_TYPE_CODE "DocumentSubType" ,
2730 DOC.ASO_OBJECT_TYPE_DESC "AsoObjectTypeDesc" ,
2731 WOP.OPERATION_SEQUENCE_NUM "OperationSequenceNumber",
2732 DOC.REVISION_NO "RevisionNumber" ,
2733 DOC.CHAPTER "Chapter" ,
2734 DOC.SECTION "Section" ,
2735 DOC.SUBJECT "Subject" ,
2736 DOC.PAGE "Page" ,
2737 DOC.FIGURE "Figure" ,
2738 DOC.NOTE "Note"
2739 FROM AHL_WORKORDER_OPERATIONS WOP,
2740 AHL_DOCUMENT_ASSOS_V DOC ,
2741 AHL_DOCUMENTS_V DOCV
2742 WHERE WOP.OPERATION_ID = DOC.ASO_OBJECT_ID
2743 AND DOC.DOCUMENT_ID = DOCV.DOCUMENT_ID
2744 AND DOC.ASO_OBJECT_TYPE_CODE = ''OPERATION''
2745 AND WOP.WORKORDER_ID = :1
2746 AND WOP.OPERATION_ID = :2';
2747
2748 l_mr_doc_details VARCHAR2(4000) := '
2749 SELECT DOC.DOCUMENT_NO "DocumentNumber" ,
2750 DOC.DOCUMENT_TITLE "DocumentTitle" ,
2751 DOC.DOC_TYPE_CODE "DocumentType" ,
2752 DOCV.DOC_SUB_TYPE_CODE "DocumentSubType" ,
2753 DOC.ASO_OBJECT_TYPE_DESC "AsoObjectTypeDesc" ,
2754 NULL "OperationSequenceNumber",
2755 DOC.REVISION_NO "RevisionNumber" ,
2756 DOC.CHAPTER "Chapter" ,
2757 DOC.SECTION "Section" ,
2758 DOC.SUBJECT "Subject" ,
2759 DOC.PAGE "Page" ,
2760 DOC.FIGURE "Figure" ,
2761 DOC.NOTE "Note"
2762 FROM AHL_DOCUMENT_ASSOS_V DOC ,
2763 --AHL_UNIT_EFFECTIVITIES_B UE,
2764 AHL_DOCUMENTS_V DOCV
2765 WHERE --UE.MR_HEADER_ID = DOC.ASO_OBJECT_ID
2766 DOC.ASO_OBJECT_ID = :1
2767 AND DOC.DOCUMENT_ID = DOCV.DOCUMENT_ID
2768 AND DOC.ASO_OBJECT_TYPE_CODE = ''MR''';
2769 --AND UE.UNIT_EFFECTIVITY_ID = :1';
2770
2771 l_mat_dffs VARCHAR2(1000) := '
2772 SELECT MA.ATTRIBUTE_CATEGORY "AttributeCategory",
2773 MA.ATTRIBUTE1 "Attribute1" ,
2774 MA.ATTRIBUTE2 "Attribute2" ,
2775 MA.ATTRIBUTE3 "Attribute3" ,
2776 MA.ATTRIBUTE4 "Attribute4" ,
2777 MA.ATTRIBUTE5 "Attribute5" ,
2778 MA.ATTRIBUTE6 "Attribute6" ,
2779 MA.ATTRIBUTE7 "Attribute7" ,
2780 MA.ATTRIBUTE8 "Attribute8" ,
2781 MA.ATTRIBUTE9 "Attribute9" ,
2782 MA.ATTRIBUTE10 "Attribute10" ,
2783 MA.ATTRIBUTE11 "Attribute11" ,
2784 MA.ATTRIBUTE12 "Attribute12" ,
2785 MA.ATTRIBUTE13 "Attribute13" ,
2786 MA.ATTRIBUTE14 "Attribute14" ,
2787 MA.ATTRIBUTE15 "Attribute15"
2788 FROM AHL_SCHEDULE_MATERIALS MA--, AHL_JOB_OPER_MATERIALS_V MV
2789 WHERE MA.SCHEDULED_MATERIAL_ID = :1';
2790
2791
2792 l_res_dffs VARCHAR2(1500) := '
2793 SELECT RE.ATTRIBUTE_CATEGORY "AttributeCategory",
2794 RE.ATTRIBUTE1 "Attribute1" ,
2795 RE.ATTRIBUTE2 "Attribute2" ,
2796 RE.ATTRIBUTE3 "Attribute3" ,
2797 RE.ATTRIBUTE4 "Attribute4" ,
2798 RE.ATTRIBUTE5 "Attribute5" ,
2799 RE.ATTRIBUTE6 "Attribute6" ,
2800 RE.ATTRIBUTE7 "Attribute7" ,
2801 RE.ATTRIBUTE8 "Attribute8" ,
2802 RE.ATTRIBUTE9 "Attribute9" ,
2803 RE.ATTRIBUTE10 "Attribute10" ,
2804 RE.ATTRIBUTE11 "Attribute11" ,
2805 RE.ATTRIBUTE12 "Attribute12" ,
2806 RE.ATTRIBUTE13 "Attribute13" ,
2807 RE.ATTRIBUTE14 "Attribute14" ,
2808 RE.ATTRIBUTE15 "Attribute15"
2809 FROM AHL_RT_OPER_RESOURCES RE, ahl_resource_mappings ar, bom_resources br
2810 WHERE br.organization_id = ar.BOM_ORG_ID
2811 AND br.resource_id = ar.BOM_RESOURCE_ID
2812 AND br.resource_id = :1
2813 AND ar.aso_resource_id = re.aso_resource_id
2814 AND re.ASSOCIATION_TYPE_CODE = :2
2815 AND re.object_id = :3';
2816
2817 l_op_dffs VARCHAR2(1000) := '
2818 SELECT OP.ATTRIBUTE_CATEGORY "AttributeCategory",
2819 OP.ATTRIBUTE1 "Attribute1" ,
2820 OP.ATTRIBUTE2 "Attribute2" ,
2821 OP.ATTRIBUTE3 "Attribute3" ,
2822 OP.ATTRIBUTE4 "Attribute4" ,
2823 OP.ATTRIBUTE5 "Attribute5" ,
2824 OP.ATTRIBUTE6 "Attribute6" ,
2825 OP.ATTRIBUTE7 "Attribute7" ,
2826 OP.ATTRIBUTE8 "Attribute8" ,
2827 OP.ATTRIBUTE9 "Attribute9" ,
2828 OP.ATTRIBUTE10 "Attribute10" ,
2829 OP.ATTRIBUTE11 "Attribute11" ,
2830 OP.ATTRIBUTE12 "Attribute12" ,
2831 OP.ATTRIBUTE13 "Attribute13" ,
2832 OP.ATTRIBUTE14 "Attribute14" ,
2833 OP.ATTRIBUTE15 "Attribute15"
2834 FROM AHL_OPERATIONS_B OP
2835 WHERE OP.OPERATION_ID = :1';
2836
2837 l_qa_plan_attr VARCHAR2(1000) := '
2838 SELECT char_id "CharId" ,
2839 prompt_sequence "PromptSequence",
2840 prompt "Prompt" ,
2841 default_value "DefaultValue"
2842 FROM QA_PLAN_CHARS
2843 WHERE plan_id = :1';
2844
2845 l_qa_res_details VARCHAR2(1000) := '
2846 SELECT QC.char_id "CharId",
2847 CI.attribute_value "AttributeValue"
2848 FROM CSI_IEA_VALUES CI,
2849 QA_PLAN_CHARS QC ,
2850 QA_RESULTS_V QR
2851 WHERE QC.plan_id = QR.plan_id
2852 AND CI.instance_id(+) = QR.csi_instance_id
2853 AND QR.collection_id = :1';
2854
2855
2856 l_counter_det VARCHAR2(1000) := '
2857 SELECT cc.counter_template_name "CounterName",
2858 (SELECT ccr.net_reading
2859 FROM csi_counter_readings ccr
2860 WHERE ccr.counter_value_id = cc.CTR_VAL_MAX_SEQ_NO
2861 AND NVL(ccr.disabled_flag,''N'') = ''N''
2862 )
2863 "CurrentReading"
2864 --FROM csi_counter_associations cca, csi_counters_vl cc, ahl_workorders_v wo
2865 FROM csi_counter_associations cca,
2866 csi_counters_vl cc ,
2867 ahl_workorders WO ,
2868 ahl_visit_tasks_b tsk
2869 WHERE cca.counter_id = cc.counter_id
2870 AND wo.visit_task_id = tsk.visit_task_id
2871 AND source_object_code = ''CP''
2872 --AND source_object_id = wo.item_instance_id
2873 AND source_object_id = tsk.instance_id
2874 AND wo.workorder_id = :1';
2875
2876 l_counter_details VARCHAR2(500) := '
2877 SELECT cc.counter_template_name "CounterName",
2878 (SELECT ccr.net_reading
2879 FROM csi_counter_readings ccr
2880 WHERE ccr.counter_value_id = cc.CTR_VAL_MAX_SEQ_NO
2881 AND NVL(ccr.disabled_flag,''N'') = ''N''
2882 )
2883 "CurrentReading"
2884 FROM csi_counter_associations cca,
2885 csi_counters_vl cc
2886 WHERE cca.counter_id = cc.counter_id
2887 AND source_object_code = ''CP''
2888 AND source_object_id = :1';
2889
2890 l_inst_remove_det VARCHAR2(2000) := '
2891 SELECT OFFI.concatenated_segments RemovedItem ,
2892 OFFC.serial_number RemovedSerial ,
2893 PC.removed_quantity RemovedQuantity ,
2894 OFFC.lot_number RemovedLot ,
2895 OFFC.inventory_revision RemovedRevision ,
2896 ONI.concatenated_segments InstalledItem ,
2897 ONC.serial_number InstalledSerial ,
2898 PC.installed_quantity InstalledQuantity,
2899 ONC.lot_number InstalledLot ,
2900 ONC.inventory_revision InstalledRevision,
2901 DIS.position_reference position
2902 FROM ahl_part_changes_v PC ,
2903 csi_item_instances OFFC ,
2904 mtl_system_items_kfv OFFI,
2905 csi_item_instances ONC ,
2906 mtl_system_items_kfv ONI ,
2907 ahl_prd_dispositions_v DIS
2908 WHERE PC.part_change_id = DIS.part_change_id
2909 AND PC.removed_instance_id = OFFC.instance_id (+)
2910 AND PC.installed_instance_id = ONC.instance_id (+)
2911 AND OFFC.inventory_item_id = OFFI.inventory_item_id (+)
2912 AND OFFC.inv_master_organization_id = OFFI.organization_id (+)
2913 AND ONC.inventory_item_id = ONI.inventory_item_id (+)
2914 AND ONC.inv_master_organization_id = ONI.organization_id (+)
2915 AND DIS.status <> ''Terminated''
2916 AND DIS.workorder_id = :1';
2917
2918 l_tools_det VARCHAR2(1000) := '
2919 SELECT PP.OPERATION_SEQUENCE "OperationSequenceNumber",
2920 PP.RESOURCE_SEQUENCE "ResourceSequenceNumber" ,
2921 PP.RESOURCE_CODE "Item" ,
2922 PP.RESOURCE_TYPE_NAME "ItemType" ,
2923 PP.RESOURCE_NAME "Description" ,
2924 PP.QUANTITY "Quantity" ,
2925 PP.DURATION "Duration" ,
2926 PP.UOM_NAME "UOM"
2927 FROM AHL_PP_REQUIREMENT_V PP,
2928 AHL_WORKORDERS WO
2929 WHERE PP.JOB_ID = WO.WORKORDER_ID
2930 AND PP.resource_type_code = 1
2931 AND WO.WORKORDER_ID = :1';
2932
2933 l_visit_details VARCHAR2(3000) := '
2934 SELECT AVB.VISIT_ID "VisitId",
2935 AVB.VISIT_NUMBER "VisitNumber",
2936 --TO_CHAR(AVB.START_DATE_TIME, ''YYYY-MM-DD hh24:mi:ss'') "PlannedStartDate",
2937 DECODE(AVB.START_DATE_TIME, NULL, NULL, TO_CHAR(AVB.START_DATE_TIME,''YYYY-MM-DD'')
2938 ||''T''
2939 ||TO_CHAR(AVB.START_DATE_TIME, ''hh24:mi:ss'') ) "PlannedStartDate",
2940 --TO_CHAR(AVB.CLOSE_DATE_TIME, ''YYYY-MM-DD hh24:mi:ss'') "PlannedEndDate",
2941 DECODE(AVB.CLOSE_DATE_TIME, NULL, NULL, TO_CHAR(AVB.CLOSE_DATE_TIME,''YYYY-MM-DD'')
2942 ||''T''
2943 ||TO_CHAR(AVB.CLOSE_DATE_TIME, ''hh24:mi:ss'') ) "PlannedEndDate",
2944 (SELECT --TO_CHAR(WDJ.DATE_RELEASED, ''YYYY-MM-DD hh24:mi:ss'')
2945 DECODE(WDJ.DATE_RELEASED, NULL, NULL, TO_CHAR(WDJ.DATE_RELEASED,''YYYY-MM-DD'')
2946 ||''T''
2947 ||TO_CHAR(WDJ.DATE_RELEASED, ''hh24:mi:ss'') )
2948 FROM AHL_WORKORDERS WO,
2949 WIP_DISCRETE_JOBS WDJ
2950 WHERE WDJ.WIP_ENTITY_ID = WO.WIP_ENTITY_ID
2951 AND WO.VISIT_TASK_ID IS NULL
2952 AND AVB.VISIT_ID = WO.VISIT_ID
2953 ) "ReleaseDate",
2954 AHL_UTILITY_PVT.GET_UNIT_NAME(AVB.ITEM_INSTANCE_ID) "UnitName",
2955 MTSB.CONCATENATED_SEGMENTS "Item",
2956 CSIS.SERIAL_NUMBER "SerialNumber",
2957 FLVT.MEANING "VisitType",
2958 HROU.NAME "Organization",
2959 BDPT.DESCRIPTION "Department",
2960 -- (Select INCIDENT_NUMBER from CS_INCIDENTS_ALL_B where INCIDENT_ID = AVB.SERVICE_REQUEST_ID) "NonRoutineTitle",
2961 MTLI.subinventory_code "SubInventory",
2962 DECODE(MSI.segment19, NULL, MTLI.concatenated_segments, INV_PROJECT.GET_LOCSEGS(MTLI.concatenated_segments)
2963 || fnd_flex_ext.get_delimiter(''INV'', ''MTLL'', 101)
2964 || INV_ProjectLocator_PUB.get_project_number(MSI.segment19)
2965 || fnd_flex_ext.get_delimiter(''INV'', ''MTLL'', 101)
2966 || INV_ProjectLocator_PUB.get_task_number(MSI.segment20)) "Locator",
2967 (Select INCIDENT_NUMBER from CS_INCIDENTS_ALL_B where INCIDENT_ID = AVB.SERVICE_REQUEST_ID) "NonRoutineTitle"
2968 FROM AHL_VISITS_B AVB,
2969 MTL_SYSTEM_ITEMS_B_KFV MTSB,
2970 CSI_ITEM_INSTANCES CSIS,
2971 FND_LOOKUP_VALUES_VL FLVT,
2972 HR_ALL_ORGANIZATION_UNITS HROU,
2973 BOM_DEPARTMENTS BDPT,
2974 mtl_item_locations_kfv MTLI,
2975 mtl_item_locations MSI
2976 WHERE VISIT_ID = :1
2977 AND AVB.INVENTORY_ITEM_ID = MTSB.INVENTORY_ITEM_ID(+)
2978 AND AVB.ITEM_ORGANIZATION_ID = MTSB.ORGANIZATION_ID(+)
2979 AND AVB.ITEM_INSTANCE_ID = CSIS.INSTANCE_ID(+)
2980 AND FLVT.LOOKUP_TYPE(+) = ''AHL_PLANNING_VISIT_TYPE''
2981 AND FLVT.LOOKUP_CODE(+) = AVB.VISIT_TYPE_CODE
2982 AND AVB.ORGANIZATION_ID = HROU.ORGANIZATION_ID(+)
2983 AND AVB.DEPARTMENT_ID = BDPT.DEPARTMENT_ID(+)
2984 AND MTLI.inventory_location_id(+) = AVB.inv_locator_id
2985 AND MSI.inventory_location_id(+) = AVB.inv_locator_id';
2986
2987 l_child_mr_details VARCHAR2(1000) :=
2988 'SELECT unit_effectivity_id "UnitEffectivityId",
2989 MRB.TITLE "Title"
2990 FROM AHL_UNIT_EFFECTIVITIES_B UE,
2991 AHL_MR_HEADERS_B MRB,
2992 (
2993 SELECT related_ue_id
2994 FROM AHL_UE_RELATIONSHIPS
2995 START WITH ue_id = :1
2996 AND relationship_code = ''PARENT''
2997 CONNECT BY ue_id = PRIOR related_ue_id
2998 AND relationship_code = ''PARENT''
2999 )CH
3000 WHERE UE.unit_effectivity_id = CH.related_ue_id
3001 AND UE.MR_HEADER_ID = MRB.MR_HEADER_ID';
3002
3003 l_child_nr_details VARCHAR2(1000) := '
3004 SELECT DISTINCT
3005 VST.UNIT_EFFECTIVITY_ID "UnitEffectivityId",
3006 MRB.TITLE "Title"
3007 FROM AHL_MR_HEADERS_B MRB,
3008 AHL_VISIT_TASKS_B VST
3009 WHERE VST.SERVICE_REQUEST_ID = :1
3010 AND VST.MR_ID = MRB.MR_HEADER_ID
3011 ';
3012
3013 wo_details_rec wo_details_csr%ROWTYPE;
3014 mat_details_rec mat_details_csr%ROWTYPE;
3015 res_req_details_rec res_req_details_csr%ROWTYPE;
3016 op_details_rec op_details_csr%ROWTYPE;
3017 -- doc_details_rec doc_details_csr%ROWTYPE;
3018 route_details_rec route_details_csr%ROWTYPE;
3019 qa_plan_rec qa_plan_csr%ROWTYPE;
3020 wo_op_details_rec op_det_csr%ROWTYPE;
3021 get_header_det_rec get_header_det_csr%ROWTYPE;
3022 get_header_det1_rec get_header_det1_csr%ROWTYPE;
3023 get_mr_details_rec get_mr_details_csr%ROWTYPE;
3024 qa_plan_attr_rec qa_plan_attr_csr%ROWTYPE;
3025 route_ffs_rec route_ffs_csr%ROWTYPE;
3026 panel_details_rec panel_details_csr%ROWTYPE;
3027 l_qa_plan_id NUMBER;
3028 l_task_type VARCHAR2(30);
3029 nr_details_rec nr_details_csr%ROWTYPE;
3030 mr_child_details_rec mr_child_details_csr%ROWTYPE;
3031 nr_mr_details_rec nr_mr_details_csr%ROWTYPE;
3032
3033 l_route_op_res_found VARCHAR2(1);--R for Route, O for Operation and 'N' for none (bug 10048778 )
3034
3035
3036 Begin
3037
3038 SAVEPOINT Generate_JCG_XML_PVT;
3039 x_return_status := Fnd_Api.G_RET_STS_SUCCESS;
3040 -- initialize log levels
3041 l_log_unexpected := FND_LOG.level_unexpected;
3042 l_log_statement := FND_LOG.level_statement;
3043 l_log_current_level := FND_LOG.g_current_runtime_level;
3044
3045 IF (l_log_statement >= l_log_current_level)THEN
3046 fnd_log.string (
3047 l_log_statement, 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,'p_object_id : ' || p_object_id);
3048 fnd_log.string (
3049 l_log_statement, 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,'p_object_type : ' || p_object_type);
3050 fnd_log.string (
3051 l_log_statement, 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,'p_split_flag : ' || p_split_flag);
3052 END IF;
3053
3054 -- Call pre customer hook api call
3055
3056 IF (JTF_USR_HKS.Ok_to_execute('AHL_PRD_PRINT_PVT', 'GENERATE_JCG_XML', 'B', 'C' )) then
3057 ahl_prd_print_CUHK.GENERATE_JCG_XML_pre(
3058 p_object_type => p_object_type,
3059 p_object_id => p_object_id,
3060 p_split_flag => p_split_flag,
3061 x_msg_count => l_msg_count,
3062 x_msg_data => l_msg_data,
3063 x_return_status => l_return_status);
3064 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
3065 RAISE FND_API.G_EXC_ERROR;
3066 ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3067 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3068 END IF;
3069 END IF;
3070
3071 p_dir := FND_PROFILE.VALUE('AHL_ENIGMA_JCG_XML_FILEPATH');
3072 x_file_name := p_object_type ||'-' || p_object_id || '-' || TO_CHAR(SYSDATE,'dd-Mon-yyyy-hh24-mi-ss') || '.xml';
3073
3074 IF (l_log_statement >= l_log_current_level)THEN
3075 fnd_log.string (
3076 l_log_statement, 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,'p_dir : ' || p_dir);
3077 fnd_log.string (
3078 l_log_statement, 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,'x_file_name : ' || x_file_name);
3079 END IF;
3080
3081 dbms_lob.createTemporary( l_merged_lob, true );
3082 dbms_lob.open( l_merged_lob, dbms_lob.lob_readwrite );
3083 IF (p_object_type = 'WO') THEN
3084 l_wo_id_tbl(1) := p_object_id;
3085
3086 BEGIN
3087 SELECT visit_id
3088 INTO l_visit_id
3089 FROM ahl_workorders
3090 WHERE workorder_id = l_wo_id_tbl(1);
3091 EXCEPTION
3092 WHEN OTHERS THEN
3093 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3094 END;
3095
3096 ELSIF (p_object_type = 'VST') THEN
3097 l_visit_id := p_object_id;
3098 BEGIN
3099 SELECT vst.unit_effectivity_id
3100 BULK COLLECT INTO l_ue_id_tbl
3101 FROM ahl_visit_tasks_b vst, ahl_unit_effectivities_b ue, ahl_workorders wo
3102 WHERE vst.visit_id = l_visit_id
3103 and vst.task_type_code = 'SUMMARY'
3104 and wo.visit_task_id = vst.visit_task_id
3105 and wo.status_code NOT IN ('7','12','14','15','17','22')
3106 and wo.master_workorder_flag = 'Y'
3107 and vst.unit_effectivity_id = ue.unit_effectivity_id
3108 order by ue.object_type;
3109 END;
3110
3111 ELSIF (p_object_type = 'MR' OR p_object_type = 'NR') THEN
3112 l_ue_id_tbl(1) := p_object_id;
3113
3114 BEGIN
3115 SELECT visit_id
3116 INTO l_visit_id
3117 FROM ahl_visit_tasks_b
3118 WHERE unit_effectivity_id = l_ue_id_tbl(1)
3119 AND NVL(status_code,'DELETED') <> 'DELETED'
3120 AND task_type_code = 'SUMMARY';
3121
3122 IF (p_object_type = 'MR') THEN
3123 OPEN get_child_ue(l_ue_id_tbl(1));
3124 FETCH get_child_ue BULK COLLECT INTO l_ue_id_tbl;
3125 CLOSE get_child_ue;
3126
3127 ELSIF (p_object_type = 'NR') THEN
3128 OPEN get_nr_mr(l_ue_id_tbl(1));
3129 FETCH get_nr_mr BULK COLLECT INTO l_ue_id_tbl;
3130 CLOSE get_nr_mr;
3131
3132 END IF;
3133
3134 EXCEPTION
3135 WHEN OTHERS THEN
3136 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3137 END;
3138
3139 END IF;
3140
3141 IF (l_log_statement >= l_log_current_level)THEN
3142 fnd_log.string (
3143 l_log_statement, 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,'Starting to create LOB');
3144 END IF;
3145
3146 dbms_lob.write(l_merged_lob, length('<?xml version="1.0" encoding="UTF-8" ?>
3147 <WorkPackage xmlns="http://www.oracle.com/ns/ahl/prd/EnigmaWorkPackage">'),length(l_merged_lob)+1, '<?xml version="1.0" encoding="UTF-8" ?>
3148 <WorkPackage xmlns="http://www.oracle.com/ns/ahl/prd/EnigmaWorkPackage">');
3149 dbms_lob.write(l_merged_lob, length('<wpmeta>'),length(l_merged_lob)+1, '<wpmeta>');
3150 dbms_lob.write(l_merged_lob, length('<UserId>'),length(l_merged_lob)+1, '<UserId>');
3151 dbms_lob.write(l_merged_lob, length(fnd_global.user_id),length(l_merged_lob)+1, fnd_global.user_id);
3152 dbms_lob.write(l_merged_lob, length('</UserId>'),length(l_merged_lob)+1, '</UserId>');
3153 dbms_lob.write(l_merged_lob, length('<User>'),length(l_merged_lob)+1, '<User>');
3154 dummy := DBMS_XMLGEN.CONVERT(fnd_global.user_name);
3155 dbms_lob.write(l_merged_lob, length(dummy),length(l_merged_lob)+1, dummy);
3156 dbms_lob.write(l_merged_lob, length('</User>'),length(l_merged_lob)+1, '</User>');
3157 dbms_lob.write(l_merged_lob, length('<WorkPackageGenerationDate>'),length(l_merged_lob)+1, '<WorkPackageGenerationDate>');
3158 dbms_lob.write(l_merged_lob, length(TO_CHAR(sysdate,'YYYY-MM-DD')||'T'||TO_CHAR(sysdate, 'hh24:mi:ss')),length(l_merged_lob)+1, TO_CHAR(sysdate,'YYYY-MM-DD')||'T'||TO_CHAR(sysdate, 'hh24:mi:ss'));
3159 dbms_lob.write(l_merged_lob, length('</WorkPackageGenerationDate>'),length(l_merged_lob)+1, '</WorkPackageGenerationDate>');
3160 dbms_lob.write(l_merged_lob, length('<RequestType>'),length(l_merged_lob)+1, '<RequestType>');
3161 dbms_lob.write(l_merged_lob, length(p_object_type),length(l_merged_lob)+1, p_object_type);
3162 dbms_lob.write(l_merged_lob, length('</RequestType>'),length(l_merged_lob)+1, '</RequestType>');
3163 dbms_lob.write(l_merged_lob, length('<RequestObjectId>'),length(l_merged_lob)+1, '<RequestObjectId>');
3164 dbms_lob.write(l_merged_lob, length(p_object_id),length(l_merged_lob)+1, p_object_id);
3165 dbms_lob.write(l_merged_lob, length('</RequestObjectId>'),length(l_merged_lob)+1, '</RequestObjectId>');
3166 dbms_lob.write(l_merged_lob, length('<SplitFlag>'),length(l_merged_lob)+1, '<SplitFlag>');
3167 dbms_lob.write(l_merged_lob, length(p_split_flag),length(l_merged_lob)+1, p_split_flag);
3168 dbms_lob.write(l_merged_lob, length('</SplitFlag>'),length(l_merged_lob)+1, '</SplitFlag>');
3169
3170 --added new
3171 dbms_lob.write(l_merged_lob, length('</wpmeta>'),length(l_merged_lob)+1, '</wpmeta>');
3172
3173 /** VisitDetails ===== VisitDetailsType **/
3174 context := dbms_xmlgen.newContext(l_visit_details);
3175 DBMS_XMLGEN.setbindvalue (context, '1', l_visit_id);
3176 dbms_xmlgen.setRowsetTag(context, 'VisitDetails');
3177 dbms_xmlgen.setRowTag(context,null);
3178 dbms_xmlgen.setConvertSpecialChars(context, TRUE);
3179 DBMS_XMLGEN.setNullHandling(context, 2);
3180 l_visit_det_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
3181 dbms_xmlgen.closeContext(context);
3182 -- Write to lob only when some data exists.
3183 IF dbms_lob.getlength(l_visit_det_lob) > 0
3184 THEN
3185 l_offset := dbms_lob.INSTR(l_visit_det_lob, '>');
3186
3187 dbms_lob.copy(l_merged_lob, l_visit_det_lob, dbms_lob.getlength(l_visit_det_lob), dbms_lob.getlength(l_merged_lob)+1, l_offset+ 1);
3188
3189 END IF;
3190
3191 IF (l_log_statement >= l_log_current_level)THEN
3192 fnd_log.string (
3193 l_log_statement, 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,'After visit details');
3194 END IF;
3195
3196 IF (p_object_type = 'WO') THEN
3197 BEGIN
3198
3199 SELECT VST.unit_effectivity_id
3200 INTO l_ue_id_tbl(1)
3201 FROM ahl_workorders WO,
3202 ahl_visit_tasks_b VST
3203 WHERE WO.visit_task_id = VST.visit_task_id
3204 AND WO.workorder_id = l_wo_id_tbl(1);
3205
3206 EXCEPTION
3207 WHEN OTHERS THEN
3208 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3209 END;
3210 END IF;
3211
3212 IF (l_ue_id_tbl.COUNT <> 0) THEN
3213
3214 FOR l_index_ue IN l_ue_id_tbl.FIRST .. l_ue_id_tbl.LAST
3215 LOOP
3216 l_nr_flag := 'A';
3217 l_ue_id := l_ue_id_tbl(l_index_ue);
3218
3219 IF (p_object_type <> 'WO') THEN
3220 OPEN get_ue_wo_id(l_ue_id);
3221 FETCH get_ue_wo_id BULK COLLECT
3222 INTO l_wo_id_tbl;
3223 CLOSE get_ue_wo_id;
3224 END IF;
3225
3226
3227 --IF (p_object_type <> 'NR') THEN
3228 OPEN get_mr_details_csr(l_ue_id);
3229 FETCH get_mr_details_csr INTO get_mr_details_rec;
3230 IF (get_mr_details_csr%FOUND) THEN
3231 dbms_lob.write(l_merged_lob, LENGTH('<MrPackage>'),LENGTH(l_merged_lob)+1, '<MrPackage>');
3232 l_nr_flag := 'N';
3233 IF (l_log_statement >= l_log_current_level)THEN
3234 fnd_log.string (
3235 l_log_statement, 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,'Checkpoint 0: mr_header_id:' || get_mr_details_rec.mr_header_id);
3236 END IF;
3237
3238 ahl_ump_util_pkg.get_last_accomplishment(get_mr_details_rec.csi_item_instance_id, get_mr_details_rec.mr_header_id, l_accomplishment_date, l_unit_eff_id, l_dummy_flag, l_dummy_status, l_dummy_return);
3239
3240 -- apattark fix for bug #11843858
3241 l_counter_value := NULL;
3242 l_net_reading := NULL;
3243 --apattark end for bug #11843858
3244
3245 IF (l_unit_eff_id is not null) THEN
3246 BEGIN
3247 select counter_value,
3248 (select ccr.net_reading
3249 from csi_counter_readings ccr
3250 where ccr.counter_value_id = cc.CTR_VAL_MAX_SEQ_NO
3251 and nvl(ccr.disabled_flag,'N') = 'N') net_reading
3252 into l_counter_value, l_net_reading
3253 from ahl_unit_accomplishmnts ua, csi_counter_associations cca, csi_counters_vl cc
3254 where ua.unit_effectivity_id = l_unit_eff_id
3255 and ua.counter_id = cc.counter_id
3256 and cc.counter_template_name = get_mr_details_rec.DueCounterName
3257 and cca.counter_id = cc.counter_id
3258 and source_object_code = 'CP'
3259 and source_object_id = get_mr_details_rec.csi_item_instance_id;
3260 EXCEPTION
3261 WHEN OTHERS THEN
3262 NULL;
3263 END;
3264
3265 END IF;
3266
3267 dbms_lob.write(l_merged_lob, LENGTH('<UnitEffectivityId>'),LENGTH(l_merged_lob)+1, '<UnitEffectivityId>');
3268 dbms_lob.write(l_merged_lob, LENGTH(l_ue_id),LENGTH(l_merged_lob)+1, l_ue_id);
3269 dbms_lob.write(l_merged_lob, LENGTH('</UnitEffectivityId>'),LENGTH(l_merged_lob)+1, '</UnitEffectivityId>');
3270 /** to be added: new release date **/
3271 dbms_lob.write(l_merged_lob, LENGTH('<Title>'),LENGTH(l_merged_lob)+1, '<Title>');
3272 dummy := DBMS_XMLGEN.CONVERT(get_mr_details_rec.title);
3273 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3274 dbms_lob.write(l_merged_lob, LENGTH('</Title>'),LENGTH(l_merged_lob)+1, '</Title>');
3275 IF (get_mr_details_rec.description IS NOT NULL) THEN
3276 dbms_lob.write(l_merged_lob, LENGTH('<Descripton>'),LENGTH(l_merged_lob)+1, '<Descripton>');
3277 dummy := DBMS_XMLGEN.CONVERT(get_mr_details_rec.Description);
3278 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3279 dbms_lob.write(l_merged_lob, LENGTH('</Descripton>'),LENGTH(l_merged_lob)+1, '</Descripton>');
3280 ELSE
3281 dbms_lob.write(l_merged_lob, LENGTH('<Descripton/>'),LENGTH(l_merged_lob)+1, '<Descripton/>');
3282 END IF;
3283
3284 dbms_lob.write(l_merged_lob, length('<Version>'),length(l_merged_lob)+1, '<Version>');
3285 dummy := DBMS_XMLGEN.CONVERT(get_mr_details_rec.Version);
3286 dbms_lob.write(l_merged_lob, length(dummy),length(l_merged_lob)+1, dummy);
3287 dbms_lob.write(l_merged_lob, length('</Version>'),length(l_merged_lob)+1, '</Version>');
3288
3289 dbms_lob.write(l_merged_lob, LENGTH('<RevisionDate>'),LENGTH(l_merged_lob)+1, '<RevisionDate>');
3290 dummy := DBMS_XMLGEN.CONVERT(get_mr_details_rec.LAST_UPDATE_DATE);
3291 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3292 dbms_lob.write(l_merged_lob, LENGTH('</RevisionDate>'),LENGTH(l_merged_lob)+1, '</RevisionDate>');
3293
3294
3295 dbms_lob.write(l_merged_lob, length('<ProgramType>'),length(l_merged_lob)+1, '<ProgramType>');
3296 dummy := DBMS_XMLGEN.CONVERT(get_mr_details_rec.ProgramType);
3297 dbms_lob.write(l_merged_lob, length(dummy),length(l_merged_lob)+1, dummy);
3298 dbms_lob.write(l_merged_lob, length('</ProgramType>'),length(l_merged_lob)+1, '</ProgramType>');
3299
3300 IF (get_mr_details_rec.ProgramSubType IS NOT NULL) THEN
3301 dbms_lob.write(l_merged_lob, LENGTH('<ProgramSubType>'),LENGTH(l_merged_lob)+1, '<ProgramSubType>');
3302 dummy := DBMS_XMLGEN.CONVERT(get_mr_details_rec.ProgramSubType);
3303 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3304 dbms_lob.write(l_merged_lob, LENGTH('</ProgramSubType>'),LENGTH(l_merged_lob)+1, '</ProgramSubType>');
3305 ELSE
3306 dbms_lob.write(l_merged_lob, LENGTH('<ProgramSubType/>'),LENGTH(l_merged_lob)+1, '<ProgramSubType/>');
3307 END IF;
3308 IF (get_mr_details_rec.DueDate IS NOT NULL) THEN
3309 dbms_lob.write(l_merged_lob, LENGTH('<DueDate>'),LENGTH(l_merged_lob)+1, '<DueDate>');
3310 dbms_lob.write(l_merged_lob, LENGTH(get_mr_details_rec.DueDate),LENGTH(l_merged_lob)+1, get_mr_details_rec.DueDate);
3311 dbms_lob.write(l_merged_lob, LENGTH('</DueDate>'),LENGTH(l_merged_lob)+1, '</DueDate>');
3312 ELSE
3313 dbms_lob.write(l_merged_lob, LENGTH('<DueDate/>'),LENGTH(l_merged_lob)+1, '<DueDate/>');
3314 END IF;
3315 IF (get_mr_details_rec.DueCounterName IS NOT NULL) THEN
3316 dbms_lob.write(l_merged_lob, LENGTH('<DueCounterName>'),LENGTH(l_merged_lob)+1, '<DueCounterName>');
3317 dummy := DBMS_XMLGEN.CONVERT(get_mr_details_rec.DueCounterName);
3318 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3319 dbms_lob.write(l_merged_lob, LENGTH('</DueCounterName>'),LENGTH(l_merged_lob)+1, '</DueCounterName>');
3320 ELSE
3321 dbms_lob.write(l_merged_lob, LENGTH('<DueCounterName/>'),LENGTH(l_merged_lob)+1, '<DueCounterName/>');
3322 END IF;
3323 IF (l_net_reading IS NOT NULL) THEN
3324 dbms_lob.write(l_merged_lob, LENGTH('<CurrentReading>'),LENGTH(l_merged_lob)+1, '<CurrentReading>');
3325 dbms_lob.write(l_merged_lob, LENGTH(l_net_reading),LENGTH(l_merged_lob)+1, l_net_reading);
3326 dbms_lob.write(l_merged_lob, LENGTH('</CurrentReading>'),LENGTH(l_merged_lob)+1, '</CurrentReading>');
3327 ELSE
3328 dbms_lob.write(l_merged_lob, LENGTH('<CurrentReading/>'),LENGTH(l_merged_lob)+1, '<CurrentReading/>');
3329 END IF;
3330 IF (get_mr_details_rec.DueCounterValue IS NOT NULL) THEN
3331 dbms_lob.write(l_merged_lob, LENGTH('<DueCounterValue>'),LENGTH(l_merged_lob)+1, '<DueCounterValue>');
3332 dummy := DBMS_XMLGEN.CONVERT(get_mr_details_rec.DueCounterValue);
3333 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3334 dbms_lob.write(l_merged_lob, LENGTH('</DueCounterValue>'),LENGTH(l_merged_lob)+1, '</DueCounterValue>');
3335 ELSE
3336 dbms_lob.write(l_merged_lob, LENGTH('<DueCounterValue/>'),LENGTH(l_merged_lob)+1, '<DueCounterValue/>');
3337 END IF;
3338 IF (get_mr_details_rec.UOM is not null) THEN
3339 dbms_lob.write(l_merged_lob, LENGTH('<UOM>'),LENGTH(l_merged_lob)+1, '<UOM>');
3340 dummy := DBMS_XMLGEN.CONVERT(get_mr_details_rec.UOM);
3341 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3342 dbms_lob.write(l_merged_lob, LENGTH('</UOM>'),LENGTH(l_merged_lob)+1, '</UOM>');
3343 ELSE
3344 dbms_lob.write(l_merged_lob, LENGTH('<UOM/>'),LENGTH(l_merged_lob)+1, '<UOM/>');
3345 END IF;
3346
3347 IF (l_counter_value IS NOT NULL) THEN
3348 dbms_lob.write(l_merged_lob, LENGTH('<LastAccomplishmentValue>'),LENGTH(l_merged_lob)+1, '<LastAccomplishmentValue>');
3349 dbms_lob.write(l_merged_lob, LENGTH(l_counter_value),LENGTH(l_merged_lob)+1, l_counter_value);
3350 dbms_lob.write(l_merged_lob, LENGTH('</LastAccomplishmentValue>'),LENGTH(l_merged_lob)+1, '</LastAccomplishmentValue>');
3351 ELSE
3352 dbms_lob.write(l_merged_lob, LENGTH('<LastAccomplishmentValue/>'),LENGTH(l_merged_lob)+1, '<LastAccomplishmentValue/>');
3353 END IF;
3354 IF (get_mr_details_rec.IntervalValue IS NOT NULL) THEN
3355 dbms_lob.write(l_merged_lob, LENGTH('<IntervalValue>'),LENGTH(l_merged_lob)+1, '<IntervalValue>');
3356 dbms_lob.write(l_merged_lob, LENGTH(get_mr_details_rec.IntervalValue),LENGTH(l_merged_lob)+1, get_mr_details_rec.IntervalValue);
3357 dbms_lob.write(l_merged_lob, LENGTH('</IntervalValue>'),LENGTH(l_merged_lob)+1, '</IntervalValue>');
3358 ELSE
3359 dbms_lob.write(l_merged_lob, LENGTH('<IntervalValue/>'),LENGTH(l_merged_lob)+1, '<IntervalValue/>');
3360 END IF;
3361 IF (get_mr_details_rec.StartValue IS NOT NULL) THEN
3362 dbms_lob.write(l_merged_lob, LENGTH('<StartValue>'),LENGTH(l_merged_lob)+1, '<StartValue>');
3363 dbms_lob.write(l_merged_lob, LENGTH(get_mr_details_rec.StartValue),LENGTH(l_merged_lob)+1, get_mr_details_rec.StartValue);
3364 dbms_lob.write(l_merged_lob, LENGTH('</StartValue>'),LENGTH(l_merged_lob)+1, '</StartValue>');
3365 ELSE
3366 dbms_lob.write(l_merged_lob, LENGTH('<StartValue/>'),LENGTH(l_merged_lob)+1, '<StartValue/>');
3367 END IF;
3368 IF (get_mr_details_rec.StartDate IS NOT NULL) THEN
3369 dbms_lob.write(l_merged_lob, LENGTH('<StartDate>'),LENGTH(l_merged_lob)+1, '<StartDate>');
3370 dbms_lob.write(l_merged_lob, LENGTH(get_mr_details_rec.StartDate),LENGTH(l_merged_lob)+1, get_mr_details_rec.StartDate);
3371 dbms_lob.write(l_merged_lob, LENGTH('</StartDate>'),LENGTH(l_merged_lob)+1, '</StartDate>');
3372 ELSE
3373 dbms_lob.write(l_merged_lob, LENGTH('<StartDate/>'),LENGTH(l_merged_lob)+1, '<StartDate/>');
3374 END IF;
3375
3376 IF (l_unit_eff_id IS NOT NULL) THEN
3377 IF (l_accomplishment_date IS NOT NULL) THEN
3378 dbms_lob.write(l_merged_lob, LENGTH('<LastAccomplishmentDate>'),LENGTH(l_merged_lob)+1, '<LastAccomplishmentDate>');
3379 dbms_lob.write(l_merged_lob, LENGTH(l_accomplishment_date),LENGTH(l_merged_lob)+1, l_accomplishment_date);
3380 dbms_lob.write(l_merged_lob, LENGTH('</LastAccomplishmentDate>'),LENGTH(l_merged_lob)+1, '</LastAccomplishmentDate>');
3381 ELSE
3382 dbms_lob.write(l_merged_lob, LENGTH('<LastAccomplishmentDate/>'),LENGTH(l_merged_lob)+1, '<LastAccomplishmentDate/>');
3383 END IF;
3384 END IF;
3385
3386 context := dbms_xmlgen.newContext(l_mr_doc_details);
3387 --DBMS_XMLGEN.setbindvalue (context, '1', l_ue_id);
3388 DBMS_XMLGEN.setbindvalue (context, '1', get_mr_details_rec.mr_header_id);
3389 dbms_xmlgen.setRowsetTag(context, 'AssociatedDocuments');
3390 dbms_xmlgen.setRowTag(context,'AssociatedDocument');
3391 dbms_xmlgen.setConvertSpecialChars(context, TRUE);
3392 DBMS_XMLGEN.setNullHandling(context, 2);
3393 l_mr_doc_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
3394 dbms_xmlgen.closeContext(context);
3395 -- Write to lob only when some data exists.
3396 IF dbms_lob.getlength(l_mr_doc_lob) > 0
3397 THEN
3398 l_offset := dbms_lob.INSTR(l_mr_doc_lob, '>');
3399
3400 dbms_lob.copy(l_merged_lob, l_mr_doc_lob, dbms_lob.getlength(l_mr_doc_lob), dbms_lob.getlength(l_merged_lob)+1, l_offset+ 1);
3401
3402 END IF;
3403
3404 END IF; -- get_mr_details_csr%FOUND
3405 CLOSE get_mr_details_csr;
3406 --END IF;
3407
3408 IF (l_log_statement >= l_log_current_level) THEN
3409 fnd_log.string (
3410 l_log_statement, 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,'Checkpoint 1');
3411 END IF;
3412
3413 /** NrPackage ===== NRDetailsType **/
3414
3415 OPEN nr_details_csr(l_ue_id);
3416 FETCH nr_details_csr INTO nr_details_rec;
3417
3418 IF (nr_details_csr%FOUND) THEN
3419
3420 dbms_lob.write(l_merged_lob, LENGTH('<NrPackage>'),LENGTH(l_merged_lob)+1, '<NrPackage>');
3421 l_nr_flag := 'Y';
3422 dbms_lob.write(l_merged_lob, LENGTH('<UnitEffectivityId>'),LENGTH(l_merged_lob)+1, '<UnitEffectivityId>');
3423 dbms_lob.write(l_merged_lob, LENGTH(nr_details_rec.UNIT_EFFECTIVITY_ID),LENGTH(l_merged_lob)+1, nr_details_rec.UNIT_EFFECTIVITY_ID);
3424 dbms_lob.write(l_merged_lob, LENGTH('</UnitEffectivityId>'),LENGTH(l_merged_lob)+1, '</UnitEffectivityId>');
3425 IF (nr_details_rec.RELEASE_DATE IS NOT NULL) THEN
3426 dbms_lob.write(l_merged_lob, LENGTH('<ReleaseDate>'),LENGTH(l_merged_lob)+1, '<ReleaseDate>');
3427 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.RELEASE_DATE);
3428 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3429 dbms_lob.write(l_merged_lob, LENGTH('</ReleaseDate>'),LENGTH(l_merged_lob)+1, '</ReleaseDate>');
3430 ELSE
3431 dbms_lob.write(l_merged_lob, LENGTH('<ReleaseDate/>'),LENGTH(l_merged_lob)+1, '<ReleaseDate/>');
3432 END IF;
3433 IF (nr_details_rec.TITLE IS NOT NULL) THEN
3434 dbms_lob.write(l_merged_lob, LENGTH('<Title>'),LENGTH(l_merged_lob)+1, '<Title>');
3435 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.TITLE);
3436 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3437 dbms_lob.write(l_merged_lob, LENGTH('</Title>'),LENGTH(l_merged_lob)+1, '</Title>');
3438 ELSE
3439 dbms_lob.write(l_merged_lob, LENGTH('<Title/>'),LENGTH(l_merged_lob)+1, '<Title/>');
3440 END IF;
3441 IF (nr_details_rec.NAME IS NOT NULL) THEN
3442 dbms_lob.write(l_merged_lob, LENGTH('<NonRoutineType>'),LENGTH(l_merged_lob)+1, '<NonRoutineType>');
3443 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.NAME);
3444 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3445 dbms_lob.write(l_merged_lob, LENGTH('</NonRoutineType>'),LENGTH(l_merged_lob)+1, '</NonRoutineType>');
3446 ELSE
3447 dbms_lob.write(l_merged_lob, LENGTH('<NonRoutineType/>'),LENGTH(l_merged_lob)+1, '<NonRoutineType/>');
3448 END IF;
3449 IF (nr_details_rec.FLIGHT_NUMBER IS NOT NULL) THEN
3450 dbms_lob.write(l_merged_lob, LENGTH('<FlightNumber>'),LENGTH(l_merged_lob)+1, '<FlightNumber>');
3451 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.FLIGHT_NUMBER);
3452 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3453 dbms_lob.write(l_merged_lob, LENGTH('</FlightNumber>'),LENGTH(l_merged_lob)+1, '</FlightNumber>');
3454 ELSE
3455 dbms_lob.write(l_merged_lob, LENGTH('<FlightNumber/>'),LENGTH(l_merged_lob)+1, '<FlightNumber/>');
3456 END IF;
3457 IF (nr_details_rec.UE_LOG_SERIES IS NOT NULL) THEN
3458 dbms_lob.write(l_merged_lob, LENGTH('<LogSeries>'),LENGTH(l_merged_lob)+1, '<LogSeries>');
3459 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.UE_LOG_SERIES);
3460 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3461 dbms_lob.write(l_merged_lob, LENGTH('</LogSeries>'),LENGTH(l_merged_lob)+1, '</LogSeries>');
3462 ELSE
3463 dbms_lob.write(l_merged_lob, LENGTH('<LogSeries/>'),LENGTH(l_merged_lob)+1, '<LogSeries/>');
3464 END IF;
3465 IF (nr_details_rec.LOG_NUMBER IS NOT NULL) THEN
3466 dbms_lob.write(l_merged_lob, LENGTH('<LogNumber>'),LENGTH(l_merged_lob)+1, '<LogNumber>');
3467 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.LOG_NUMBER);
3468 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3469 dbms_lob.write(l_merged_lob, LENGTH('</LogNumber>'),LENGTH(l_merged_lob)+1, '</LogNumber>');
3470 ELSE
3471 dbms_lob.write(l_merged_lob, LENGTH('<LogNumber/>'),LENGTH(l_merged_lob)+1, '<LogNumber/>');
3472 END IF;
3473 IF (nr_details_rec.UE_ITEM_NUMBER IS NOT NULL) THEN
3474 dbms_lob.write(l_merged_lob, LENGTH('<Item>'),LENGTH(l_merged_lob)+1, '<Item>');
3475 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.UE_ITEM_NUMBER);
3476 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3477 dbms_lob.write(l_merged_lob, LENGTH('</Item>'),LENGTH(l_merged_lob)+1, '</Item>');
3478 ELSE
3479 dbms_lob.write(l_merged_lob, LENGTH('<Item/>'),LENGTH(l_merged_lob)+1, '<Item/>');
3480 END IF;
3481 IF (nr_details_rec.UE_SERIAL_NUMBER IS NOT NULL) THEN
3482 dbms_lob.write(l_merged_lob, LENGTH('<SerialNumber>'),LENGTH(l_merged_lob)+1, '<SerialNumber>');
3483 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.UE_SERIAL_NUMBER);
3484 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3485 dbms_lob.write(l_merged_lob, LENGTH('</SerialNumber>'),LENGTH(l_merged_lob)+1, '</SerialNumber>');
3486 ELSE
3487 dbms_lob.write(l_merged_lob, LENGTH('<SerialNumber/>'),LENGTH(l_merged_lob)+1, '<SerialNumber/>');
3488 END IF;
3489 IF (nr_details_rec.UE_STATUS IS NOT NULL) THEN
3490 dbms_lob.write(l_merged_lob, LENGTH('<Status>'),LENGTH(l_merged_lob)+1, '<Status>');
3491 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.UE_STATUS);
3492 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3493 dbms_lob.write(l_merged_lob, LENGTH('</Status>'),LENGTH(l_merged_lob)+1, '</Status>');
3494 ELSE
3495 dbms_lob.write(l_merged_lob, LENGTH('<Status/>'),LENGTH(l_merged_lob)+1, '<Status/>');
3496 END IF;
3497 IF (nr_details_rec.CREATION_DATE IS NOT NULL) THEN
3498 dbms_lob.write(l_merged_lob, LENGTH('<RequestDate>'),LENGTH(l_merged_lob)+1, '<RequestDate>');
3499 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.CREATION_DATE);
3500 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3501 dbms_lob.write(l_merged_lob, LENGTH('</RequestDate>'),LENGTH(l_merged_lob)+1, '</RequestDate>');
3502 ELSE
3503 dbms_lob.write(l_merged_lob, LENGTH('<RequestDate/>'),LENGTH(l_merged_lob)+1, '<RequestDate/>');
3504 END IF;
3505 IF (nr_details_rec.INCIDENT_OCCURRED_DATE IS NOT NULL) THEN
3506 dbms_lob.write(l_merged_lob, LENGTH('<IncidentDate>'),LENGTH(l_merged_lob)+1, '<IncidentDate>');
3507 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.INCIDENT_OCCURRED_DATE);
3508 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3509 dbms_lob.write(l_merged_lob, LENGTH('</IncidentDate>'),LENGTH(l_merged_lob)+1, '</IncidentDate>');
3510 ELSE
3511 dbms_lob.write(l_merged_lob, LENGTH('<IncidentDate/>'),LENGTH(l_merged_lob)+1, '<IncidentDate/>');
3512 END IF;
3513 IF (nr_details_rec.WORKORDER_NAME IS NOT NULL) THEN
3514 dbms_lob.write(l_merged_lob, LENGTH('<WorkorderNo>'),LENGTH(l_merged_lob)+1, '<WorkorderNo>');
3515 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.WORKORDER_NAME);
3516 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3517 dbms_lob.write(l_merged_lob, LENGTH('</WorkorderNo>'),LENGTH(l_merged_lob)+1, '</WorkorderNo>');
3518 ELSE
3519 dbms_lob.write(l_merged_lob, LENGTH('<WorkorderNo/>'),LENGTH(l_merged_lob)+1, '<WorkorderNo/>');
3520 END IF;
3521 IF (nr_details_rec.SR_CUSTOMER_NAME IS NOT NULL) THEN
3522 dbms_lob.write(l_merged_lob, LENGTH('<Customer>'),LENGTH(l_merged_lob)+1, '<Customer>');
3523 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.SR_CUSTOMER_NAME);
3524 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3525 dbms_lob.write(l_merged_lob, LENGTH('</Customer>'),LENGTH(l_merged_lob)+1, '</Customer>');
3526 ELSE
3527 dbms_lob.write(l_merged_lob, LENGTH('<Customer/>'),LENGTH(l_merged_lob)+1, '<Customer/>');
3528 END IF;
3529 IF (nr_details_rec.SR_CONTACT_NAME IS NOT NULL) THEN
3530 dbms_lob.write(l_merged_lob, LENGTH('<Contact>'),LENGTH(l_merged_lob)+1, '<Contact>');
3531 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.SR_CONTACT_NAME);
3532 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3533 dbms_lob.write(l_merged_lob, LENGTH('</Contact>'),LENGTH(l_merged_lob)+1, '</Contact>');
3534 ELSE
3535 dbms_lob.write(l_merged_lob, LENGTH('<Contact/>'),LENGTH(l_merged_lob)+1, '<Contact/>');
3536 END IF;
3537 IF (nr_details_rec.PROBLEM_CODE IS NOT NULL) THEN
3538 dbms_lob.write(l_merged_lob, LENGTH('<ProblemCode>'),LENGTH(l_merged_lob)+1, '<ProblemCode>');
3539 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.PROBLEM_CODE);
3540 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3541 dbms_lob.write(l_merged_lob, LENGTH('</ProblemCode>'),LENGTH(l_merged_lob)+1, '</ProblemCode>');
3542 ELSE
3543 dbms_lob.write(l_merged_lob, LENGTH('<ProblemCode/>'),LENGTH(l_merged_lob)+1, '<ProblemCode/>');
3544 END IF;
3545 IF (nr_details_rec.SR_PROBLEM_SUMMARY IS NOT NULL) THEN
3546 dbms_lob.write(l_merged_lob, LENGTH('<ProblemSummary>'),LENGTH(l_merged_lob)+1, '<ProblemSummary>');
3547 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.SR_PROBLEM_SUMMARY);
3548 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3549 dbms_lob.write(l_merged_lob, LENGTH('</ProblemSummary>'),LENGTH(l_merged_lob)+1, '</ProblemSummary>');
3550 ELSE
3551 dbms_lob.write(l_merged_lob, LENGTH('<ProblemSummary/>'),LENGTH(l_merged_lob)+1, '<ProblemSummary/>');
3552 END IF;
3553 IF (nr_details_rec.SR_INCIDENT_SEVERITY IS NOT NULL) THEN
3554 dbms_lob.write(l_merged_lob, LENGTH('<Severity>'),LENGTH(l_merged_lob)+1, '<Severity>');
3555 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.SR_INCIDENT_SEVERITY);
3556 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3557 dbms_lob.write(l_merged_lob, LENGTH('</Severity>'),LENGTH(l_merged_lob)+1, '</Severity>');
3558 ELSE
3559 dbms_lob.write(l_merged_lob, LENGTH('<Severity/>'),LENGTH(l_merged_lob)+1, '<Severity/>');
3560 END IF;
3561 IF (nr_details_rec.EXPECTED_RESOLUTION_DATE IS NOT NULL) THEN
3562 dbms_lob.write(l_merged_lob, LENGTH('<ResolveByDate>'),LENGTH(l_merged_lob)+1, '<ResolveByDate>');
3563 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.EXPECTED_RESOLUTION_DATE);
3564 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3565 dbms_lob.write(l_merged_lob, LENGTH('</ResolveByDate>'),LENGTH(l_merged_lob)+1, '</ResolveByDate>');
3566 ELSE
3567 dbms_lob.write(l_merged_lob, LENGTH('<ResolveByDate/>'),LENGTH(l_merged_lob)+1, '<ResolveByDate/>');
3568 END IF;
3569 IF (nr_details_rec.RESOLUTION_CODE IS NOT NULL) THEN
3570 dbms_lob.write(l_merged_lob, LENGTH('<ResolutionCode>'),LENGTH(l_merged_lob)+1, '<ResolutionCode>');
3571 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.RESOLUTION_CODE);
3572 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3573 dbms_lob.write(l_merged_lob, LENGTH('</ResolutionCode>'),LENGTH(l_merged_lob)+1, '</ResolutionCode>');
3574 ELSE
3575 dbms_lob.write(l_merged_lob, LENGTH('<ResolutionCode/>'),LENGTH(l_merged_lob)+1, '<ResolutionCode/>');
3576 END IF;
3577 IF (nr_details_rec.UE_ATA_MEANING IS NOT NULL) THEN
3578 dbms_lob.write(l_merged_lob, LENGTH('<PositionATA>'),LENGTH(l_merged_lob)+1, '<PositionATA>');
3579 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.UE_ATA_MEANING);
3580 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3581 dbms_lob.write(l_merged_lob, LENGTH('</PositionATA>'),LENGTH(l_merged_lob)+1, '</PositionATA>');
3582 ELSE
3583 dbms_lob.write(l_merged_lob, LENGTH('<PositionATA/>'),LENGTH(l_merged_lob)+1, '<PositionATA/>');
3584 END IF;
3585 IF (nr_details_rec.UE_ATA_DESC IS NOT NULL) THEN
3586 dbms_lob.write(l_merged_lob, LENGTH('<AtaDesc>'),LENGTH(l_merged_lob)+1, '<AtaDesc>');
3587 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.UE_ATA_DESC);
3588 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3589 dbms_lob.write(l_merged_lob, LENGTH('</AtaDesc>'),LENGTH(l_merged_lob)+1, '</AtaDesc>');
3590 ELSE
3591 dbms_lob.write(l_merged_lob, LENGTH('<AtaDesc/>'),LENGTH(l_merged_lob)+1, '<AtaDesc/>');
3592 END IF;
3593 IF (nr_details_rec.UE_MEL_CDL_TYPE IS NOT NULL) THEN
3594 dbms_lob.write(l_merged_lob, LENGTH('<MelCdlType>'),LENGTH(l_merged_lob)+1, '<MelCdlType>');
3595 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.UE_MEL_CDL_TYPE);
3596 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3597 dbms_lob.write(l_merged_lob, LENGTH('</MelCdlType>'),LENGTH(l_merged_lob)+1, '</MelCdlType>');
3598 ELSE
3599 dbms_lob.write(l_merged_lob, LENGTH('<MelCdlType/>'),LENGTH(l_merged_lob)+1, '<MelCdlType/>');
3600 END IF;
3601 IF (nr_details_rec.UE_MEL_CDL_STATUS IS NOT NULL) THEN
3602 dbms_lob.write(l_merged_lob, LENGTH('<MelCdlStatus>'),LENGTH(l_merged_lob)+1, '<MelCdlStatus>');
3603 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.UE_MEL_CDL_STATUS);
3604 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3605 dbms_lob.write(l_merged_lob, LENGTH('</MelCdlStatus>'),LENGTH(l_merged_lob)+1, '</MelCdlStatus>');
3606 ELSE
3607 dbms_lob.write(l_merged_lob, LENGTH('<MelCdlStatus/>'),LENGTH(l_merged_lob)+1, '<MelCdlStatus/>');
3608 END IF;
3609 IF (nr_details_rec.UE_ATA_PC_NODE_NAME IS NOT NULL) THEN
3610 dbms_lob.write(l_merged_lob, LENGTH('<PcNode>'),LENGTH(l_merged_lob)+1, '<PcNode>');
3611 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.UE_ATA_PC_NODE_NAME);
3612 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3613 dbms_lob.write(l_merged_lob, LENGTH('</PcNode>'),LENGTH(l_merged_lob)+1, '</PcNode>');
3614 ELSE
3615 dbms_lob.write(l_merged_lob, LENGTH('<PcNode/>'),LENGTH(l_merged_lob)+1, '<PcNode/>');
3616 END IF;
3617 IF (nr_details_rec.UE_ATA_HEADER_REVISION IS NOT NULL) THEN
3618 dbms_lob.write(l_merged_lob, LENGTH('<RevNo>'),LENGTH(l_merged_lob)+1, '<RevNo>');
3619 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.UE_ATA_HEADER_REVISION);
3620 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3621 dbms_lob.write(l_merged_lob, LENGTH('</RevNo>'),LENGTH(l_merged_lob)+1, '</RevNo>');
3622 ELSE
3623 dbms_lob.write(l_merged_lob, LENGTH('<RevNo/>'),LENGTH(l_merged_lob)+1, '<RevNo/>');
3624 END IF;
3625 IF (nr_details_rec.UE_ATA_REPAIR_CATEGORY IS NOT NULL) THEN
3626 dbms_lob.write(l_merged_lob, LENGTH('<RepairCategory>'),LENGTH(l_merged_lob)+1, '<RepairCategory>');
3627 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.UE_ATA_REPAIR_CATEGORY);
3628 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3629 dbms_lob.write(l_merged_lob, LENGTH('</RepairCategory>'),LENGTH(l_merged_lob)+1, '</RepairCategory>');
3630 ELSE
3631 dbms_lob.write(l_merged_lob, LENGTH('<RepairCategory/>'),LENGTH(l_merged_lob)+1, '<RepairCategory/>');
3632 END IF;
3633 IF (nr_details_rec.DUE_DATE IS NOT NULL) THEN
3634 dbms_lob.write(l_merged_lob, LENGTH('<DueDate>'),LENGTH(l_merged_lob)+1, '<DueDate>');
3635 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.DUE_DATE);
3636 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3637 dbms_lob.write(l_merged_lob, LENGTH('</DueDate>'),LENGTH(l_merged_lob)+1, '</DueDate>');
3638 ELSE
3639 dbms_lob.write(l_merged_lob, LENGTH('<DueDate/>'),LENGTH(l_merged_lob)+1, '<DueDate/>');
3640 END IF;
3641 IF (nr_details_rec.UE_ATA_REPAIR_TIME IS NOT NULL) THEN
3642 dbms_lob.write(l_merged_lob, LENGTH('<RepairTime>'),LENGTH(l_merged_lob)+1, '<RepairTime>');
3643 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.UE_ATA_REPAIR_TIME);
3644 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3645 dbms_lob.write(l_merged_lob, LENGTH('</RepairTime>'),LENGTH(l_merged_lob)+1, '</RepairTime>');
3646 ELSE
3647 dbms_lob.write(l_merged_lob, LENGTH('<RepairTime/>'),LENGTH(l_merged_lob)+1, '<RepairTime/>');
3648 END IF;
3649 IF (nr_details_rec.UE_ATA_REMARKS IS NOT NULL) THEN
3650 dbms_lob.write(l_merged_lob, LENGTH('<Remarks>'),LENGTH(l_merged_lob)+1, '<Remarks>');
3651 dummy := DBMS_XMLGEN.CONVERT(nr_details_rec.UE_ATA_REMARKS);
3652 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3653 dbms_lob.write(l_merged_lob, LENGTH('</Remarks>'),LENGTH(l_merged_lob)+1, '</Remarks>');
3654 ELSE
3655 dbms_lob.write(l_merged_lob, LENGTH('<Remarks/>'),LENGTH(l_merged_lob)+1, '<Remarks/>');
3656 END IF;
3657
3658 END IF;
3659 CLOSE nr_details_csr;
3660
3661 IF (p_object_type = 'VST')THEN
3662 BEGIN
3663 SELECT workorder_id
3664 INTO l_wo_id
3665 FROM ahl_workorders
3666 WHERE visit_task_id IS NULL
3667 AND visit_id = p_object_id;
3668
3669 SELECT UC.UNIT_CONFIG_HEADER_ID, UC.NAME, VST.item_instance_id
3670 INTO l_uc_id, l_unit_name, l_count_instance_id
3671 FROM AHL_VISITS_B VST, AHL_UNIT_CONFIG_HEADERS UC
3672 WHERE UC.CSI_ITEM_INSTANCE_ID(+) = VST.ITEM_INSTANCE_ID
3673 AND VST.VISIT_ID = p_object_id;
3674
3675 EXCEPTION
3676 WHEN OTHERS THEN
3677 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3678 END;
3679
3680 ELSIF (p_object_type = 'WO') THEN
3681 l_wo_id := p_object_id;
3682 l_uc_id := AHL_PRD_PARTS_CHANGE_PVT.Get_UnitConfig_ID(l_wo_id);
3683 SELECT VT.instance_id
3684 INTO l_count_instance_id
3685 FROM ahl_workorders WO,
3686 ahl_visit_tasks_b VT
3687 WHERE WO.visit_task_id = VT.visit_task_id
3688 AND WO.workorder_id = l_wo_id;
3689
3690 ELSIF (p_object_type = 'MR' OR p_object_type = 'NR')THEN
3691 SELECT WO.workorder_id, VT.INSTANCE_ID
3692 INTO l_wo_id, l_count_instance_id
3693 FROM ahl_workorders WO,
3694 ahl_visit_tasks_b vt
3695 WHERE wo.visit_task_id = vt.visit_task_id
3696 AND vt.task_type_code = 'SUMMARY'
3697 AND vt.UNIT_EFFECTIVITY_ID = p_object_id ;
3698
3699 l_uc_id := AHL_PRD_PARTS_CHANGE_PVT.Get_UnitConfig_ID(l_wo_id);
3700
3701 END IF;
3702 IF (l_log_statement >= l_log_current_level)THEN
3703 fnd_log.string ( l_log_statement, 'ahl.plsql.'
3704 ||g_pkg_name
3705 ||'.'
3706 ||l_api_name ,'Checkpoint 2 : l_uc_id : '
3707 || l_uc_id);
3708 END IF;
3709
3710 IF (l_nr_flag = 'Y' OR l_nr_flag = 'N') THEN
3711
3712 IF (l_count_instance_id IS NOT NULL) THEN
3713 context := dbms_xmlgen.newContext(l_counter_details);
3714 DBMS_XMLGEN.setbindvalue (context, '1', l_count_instance_id);
3715 dbms_xmlgen.setRowsetTag(context, 'ItemCounters');
3716 dbms_xmlgen.setRowTag(context,'ItemCounter');
3717 dbms_xmlgen.setConvertSpecialChars(context, TRUE);
3718 DBMS_XMLGEN.setNullHandling(context, 2);
3719 l_counter_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
3720 dbms_xmlgen.closeContext(context);
3721 -- Write to lob only when some data exists.
3722 IF dbms_lob.getlength(l_counter_lob) > 0 THEN
3723 l_offset := dbms_lob.INSTR(l_counter_lob, '>');
3724 -- copy workorder details into final lob
3725 dbms_lob.copy(l_merged_lob, l_counter_lob, dbms_lob.getlength(l_counter_lob), dbms_lob.getlength(l_merged_lob)+1, l_offset+ 1);
3726 END IF;
3727 END IF;
3728
3729 IF (l_wo_id_tbl.COUNT <> 0) THEN
3730 Get_job_card_det (l_merged_lob => l_merged_lob,
3731 l_wo_id_tbl => l_wo_id_tbl,
3732 x_return_status => l_return_status);
3733 END IF;
3734 END IF;
3735
3736 IF (l_nr_flag = 'N') THEN
3737 OPEN mr_child_details_csr(l_ue_id);
3738 LOOP
3739 FETCH mr_child_details_csr INTO mr_child_details_rec;
3740 EXIT WHEN mr_child_details_csr%NOTFOUND;
3741 dbms_lob.write(l_merged_lob, LENGTH('<ChildMR>'),LENGTH(l_merged_lob)+1, '<ChildMR>');
3742 IF (mr_child_details_rec.Unit_Effectivity_Id IS NOT NULL) THEN
3743 dbms_lob.write(l_merged_lob, LENGTH('<UnitEffectivityId>'),LENGTH(l_merged_lob)+1, '<UnitEffectivityId>');
3744 dummy := DBMS_XMLGEN.CONVERT(mr_child_details_rec.Unit_Effectivity_Id);
3745 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3746 dbms_lob.write(l_merged_lob, LENGTH('</UnitEffectivityId>'),LENGTH(l_merged_lob)+1, '</UnitEffectivityId>');
3747 END IF;
3748 IF (mr_child_details_rec.Title IS NOT NULL) THEN
3749 dbms_lob.write(l_merged_lob, LENGTH('<Title>'),LENGTH(l_merged_lob)+1, '<Title>');
3750 dummy := DBMS_XMLGEN.CONVERT(mr_child_details_rec.Title);
3751 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3752 dbms_lob.write(l_merged_lob, LENGTH('</Title>'),LENGTH(l_merged_lob)+1, '</Title>');
3753 END IF;
3754 dbms_lob.write(l_merged_lob, LENGTH('</ChildMR>'),LENGTH(l_merged_lob)+1, '</ChildMR>');
3755 END LOOP;
3756 CLOSE mr_child_details_csr;
3757
3758 ELSIF (l_nr_flag = 'Y') THEN
3759 OPEN nr_mr_details_csr(nr_details_rec.INCIDENT_ID);
3760 LOOP
3761 FETCH nr_mr_details_csr INTO nr_mr_details_rec;
3762 EXIT WHEN nr_mr_details_csr%NOTFOUND;
3763 dbms_lob.write(l_merged_lob, LENGTH('<ChildMR>'),LENGTH(l_merged_lob)+1, '<ChildMR>');
3764 IF (nr_mr_details_rec.Unit_Effectivity_Id IS NOT NULL) THEN
3765 dbms_lob.write(l_merged_lob, LENGTH('<UnitEffectivityId>'),LENGTH(l_merged_lob)+1, '<UnitEffectivityId>');
3766 dummy := DBMS_XMLGEN.CONVERT(nr_mr_details_rec.Unit_Effectivity_Id);
3767 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3768 dbms_lob.write(l_merged_lob, LENGTH('</UnitEffectivityId>'),LENGTH(l_merged_lob)+1, '</UnitEffectivityId>');
3769 END IF;
3770 IF (nr_mr_details_rec.Title IS NOT NULL) THEN
3771 dbms_lob.write(l_merged_lob, LENGTH('<Title>'),LENGTH(l_merged_lob)+1, '<Title>');
3772 dummy := DBMS_XMLGEN.CONVERT(nr_mr_details_rec.Title);
3773 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
3774 dbms_lob.write(l_merged_lob, LENGTH('</Title>'),LENGTH(l_merged_lob)+1, '</Title>');
3775 END IF;
3776 dbms_lob.write(l_merged_lob, LENGTH('</ChildMR>'),LENGTH(l_merged_lob)+1, '</ChildMR>');
3777 END LOOP;
3778 CLOSE nr_mr_details_csr;
3779 END IF;
3780
3781 IF(l_nr_flag = 'N') THEN
3782 dbms_lob.write(l_merged_lob, length('</MrPackage>'),length(l_merged_lob)+1, '</MrPackage>');
3783 ELSIF(l_nr_flag = 'Y') THEN
3784 dbms_lob.write(l_merged_lob, length('</NrPackage>'),length(l_merged_lob)+1, '</NrPackage>');
3785 END IF;
3786
3787 END LOOP;
3788 END IF;
3789
3790 IF (p_object_type = 'VST') THEN
3791 BEGIN
3792 SELECT wo.workorder_id
3793 BULK COLLECT INTO l_wo_id_tbl
3794 FROM ahl_workorders wo,
3795 ahl_visit_tasks_b vt
3796 WHERE wo.visit_task_id = vt.visit_task_id
3797 AND vt.task_type_code = 'UNASSOCIATED'
3798 AND wo.status_code NOT IN ('7','12','14','15','17','22')
3799 AND vt.visit_id = l_visit_id;
3800 END;
3801
3802 IF (l_wo_id_tbl.COUNT <> 0) THEN
3803 Get_job_card_det (l_merged_lob => l_merged_lob,
3804 l_wo_id_tbl => l_wo_id_tbl,
3805 x_return_status => l_return_status);
3806 END IF;
3807 END IF;
3808
3809 IF (p_object_type = 'WO') THEN
3810 BEGIN
3811 SELECT vt.task_type_code
3812 INTO l_task_type
3813 FROM ahl_workorders wo,
3814 ahl_visit_tasks_b vt
3815 WHERE wo.visit_task_id = vt.visit_task_id
3816 AND wo.workorder_id = l_wo_id_tbl(1);
3817 END;
3818
3819 IF (l_task_type = 'UNASSOCIATED') THEN
3820 Get_job_card_det (l_merged_lob => l_merged_lob,
3821 l_wo_id_tbl => l_wo_id_tbl,
3822 x_return_status => l_return_status);
3823 END IF;
3824 END IF;
3825 dbms_lob.write(l_merged_lob, length('</WorkPackage>'),length(l_merged_lob)+1, '</WorkPackage>');
3826
3827 dbms_lob.close( l_merged_lob );
3828 IF (l_log_statement >= l_log_current_level)THEN
3829 fnd_log.string (
3830 l_log_statement, 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
3831 'Checkpoint 20: Done creating LOB ');
3832 END IF;
3833
3834 -- Writing the file before transformation only if logging is enabled.
3835 IF (l_log_statement >= l_log_current_level)THEN
3836 fnd_log.string (
3837 l_log_statement, 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
3838 'Writing ORIG file ');
3839 DBMS_XSLPROCESSOR.CLOB2FILE(l_merged_lob,p_dir,'ORIG-' || x_file_name);
3840 fnd_log.string (
3841 l_log_statement, 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
3842 'Done Writing ORIG file ');
3843 END IF;
3844
3845 -- dbms_lob.freeTemporary( l_merged_lob );
3846
3847 --post user hook api call
3848
3849 IF (JTF_USR_HKS.Ok_to_execute('AHL_PRD_PRINT_PVT', 'GENERATE_JCG_XML', 'A', 'C' )) then
3850 -- start to create file
3851 -- DBMS_XSLPROCESSOR.CLOB2FILE(l_merged_lob,p_dir,'ORIG-' || x_file_name);
3852 -- call customer hook here
3853 -- end to create file
3854 IF (l_log_statement >= l_log_current_level)THEN
3855 fnd_log.string (
3856 l_log_statement, 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
3857 'Invoking post hook ');
3858 END IF;
3859 ahl_prd_print_CUHK.GENERATE_JCG_XML_post(
3860 p_object_type => p_object_type,
3861 p_object_id => p_object_id,
3862 p_split_flag => p_split_flag,
3863 p_ahl_wrkpkg_xml => l_merged_lob,
3864 p_jcg_wrkpkg_location => p_dir,
3865 x_jcg_wrkpkg_file => x_file_name,
3866 x_msg_count => l_msg_count,
3867 x_msg_data => l_msg_data,
3868 x_return_status => l_return_status);
3869
3870 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
3871 fnd_log.string
3872 (
3873 fnd_log.level_statement,
3874 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
3875 'after call to ahl_prd_print_CUHK.GENERATE_JCG_XML_post:l_return_status:' || l_return_status);
3876 fnd_log.string
3877 (
3878 fnd_log.level_statement,
3879 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
3880 'p_jcg_wrkpkg_location:x_jcg_wrkpkg_file:' || p_dir || ':' || x_file_name);
3881 END IF;
3882
3883 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
3884 RAISE FND_API.G_EXC_ERROR;
3885 ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3886 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3887 END IF;
3888
3889 IF (x_file_name IS NULL) THEN
3890 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3891 END IF;
3892
3893 ELSE
3894 -- user hook is not enabled .. apply transformation and write file
3895 IF (l_log_statement >= l_log_current_level)THEN
3896 fnd_log.string (
3897 l_log_statement, 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
3898 'hook not enabled - applying transformation');
3899 END IF;
3900 APPLY_TRANSFORMATION(
3901 p_indoc => l_merged_lob,
3902 p_xsl_doc => get_xsl_clob,
3903 p_xml_output_dir => p_dir,
3904 p_xml_output_filename => x_file_name,
3905 x_msg_count => l_msg_count,
3906 x_msg_data => l_msg_data,
3907 x_return_status => l_return_status
3908 );
3909 IF (l_log_statement >= l_log_current_level)THEN
3910 fnd_log.string (
3911 l_log_statement, 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
3912 'Applied transformation - l_return_status : ' || l_return_status);
3913 fnd_log.string (
3914 l_log_statement, 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
3915 'Applied transformation - l_msg_data : ' || l_msg_data);
3916 END IF;
3917 IF (l_return_status = FND_API.G_RET_STS_ERROR) THEN
3918 RAISE FND_API.G_EXC_ERROR;
3919 ELSIF (l_return_status = FND_API.G_RET_STS_UNEXP_ERROR) THEN
3920 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3921 END IF;
3922
3923 END IF;
3924
3925 /*
3926 EXCEPTION
3927 WHEN FND_API.G_EXC_ERROR THEN
3928 x_return_status := FND_API.G_RET_STS_ERROR;
3929 Rollback to Generate_JCG_XML_PVT;
3930 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3931 p_data => x_msg_data,
3932 p_encoded => fnd_api.g_false);
3933 IF (l_log_unexpected >= l_log_current_level)THEN
3934 fnd_log.string(
3935 l_log_unexpected,
3936 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
3937 'Standard Error : x_msg_count : '|| x_msg_count || ': x_msg_data : ' || x_msg_data
3938 );
3939 END IF;
3940 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3941 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3942 Rollback to Generate_JCG_XML_PVT;
3943 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3944 p_data => x_msg_data,
3945 p_encoded => fnd_api.g_false);
3946 IF (l_log_unexpected >= l_log_current_level)THEN
3947 fnd_log.string(
3948 l_log_unexpected,
3949 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
3950 'Unexpected Error : x_msg_count : '|| x_msg_count || ': x_msg_data : ' || x_msg_data
3951 );
3952 END IF;
3953
3954 WHEN OTHERS THEN
3955 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3956 Rollback to Generate_JCG_XML_PVT;
3957 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
3958 p_procedure_name => 'Generate_JCG_XML',
3959 p_error_text => SUBSTR(SQLERRM,1,240));
3960 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
3961 p_data => x_msg_data,
3962 p_encoded => fnd_api.g_false);
3963 IF (l_log_unexpected >= l_log_current_level)THEN
3964 fnd_log.string(
3965 l_log_unexpected,
3966 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
3967 'Unexpected Error Others : x_msg_count : '|| x_msg_count || ': x_msg_data : ' || x_msg_data
3968 );
3969 END IF;
3970 */
3971 END Generate_JCG_XML;
3972
3973
3974 -- Start of Comments --
3975 -- Procedure name : generate_jcg_request
3976 -- Type : Private/called from concurrent program
3977 -- Function : Creates Job Cards for CMRO Visits, MRs or Work Order. Prepares the XML data
3978 -- and fires the request to Enigma Web Service using Oracle Workflow Event.
3979 -- Pre-reqs :
3980
3981 -- generate_jcg_request Parameters :
3982 -- p_object_type - idenifier for object type i.e VISIT, MR, WORKORDER
3983 -- p_object_id - unique key for corresponding visit id, unit_effectivity_id or work order id
3984 -- p_user_id FND user id,
3985 -- p_resp_id Responsibility ID
3986
3987 PROCEDURE Generate_JCG_Request(
3988 errbuf OUT NOCOPY VARCHAR2,
3989 retcode OUT NOCOPY NUMBER,
3990 p_jcg_id IN NUMBER,
3991 p_user_id IN NUMBER,
3992 p_resp_id IN NUMBER) IS
3993
3994 l_api_name CONSTANT VARCHAR2(30) := 'generate_jcg_request';
3995 l_msg_count NUMBER;
3996 l_msg_data VARCHAR2(3000);
3997 l_return_status VARCHAR2(1);
3998
3999 l_xml_file_name VARCHAR2(2000);
4000 l_jcg_id NUMBER;
4001
4002 -- workflow variables
4003 l_xmldocument varchar2(32000);
4004 -- commented as we are not going to use business events.
4005 /*l_eventdata clob;
4006 l_message varchar2(10);
4007 l_parameter_list wf_parameter_list_t := wf_parameter_list_t();*/
4008 l_conc_request_id NUMBER;
4009 -- for invocation of asynchronous BPEL process AhlJCGHandlerService
4010 soap_request varchar2(3000);
4011 soap_respond varchar2(300);
4012 http_req utl_http.req;
4013 http_resp utl_http.resp;
4014 l_bpel_process_end_point varchar2(2000);
4015
4016 CURSOR get_jcg_details(p_jcg_id IN NUMBER) IS
4017 SELECT JCG_REQUEST_ID,OBJECT_TYPE_CODE,OBJECT_ID,SPLIT_FLAG
4018 FROM ahl_enigma_jcg_details
4019 WHERE JCG_REQUEST_ID = p_jcg_id;
4020
4021 l_object_type_code VARCHAR2(30);
4022 l_object_id NUMBER;
4023 l_split_flag VARCHAR2(30);
4024 l_enigma_request_id VARCHAR2(240);
4025 l_err_update_status VARCHAR2(30);
4026
4027 BEGIN
4028 l_conc_request_id := fnd_global.conc_request_id;
4029 fnd_file.put_line(FND_FILE.LOG,'Start time:' || to_char(sysdate, 'Month DD, YYYY HH24:MI:SS'));
4030 fnd_file.put_line(FND_FILE.LOG,'Entered AHL_PRD_PRINT_PVT.Generate_JCG_Request: cc id : ' || l_conc_request_id );
4031 fnd_file.new_line(FND_FILE.LOG,1);
4032 -- initialize return status.
4033 retcode := 0;
4034 l_return_status := FND_API.G_RET_STS_SUCCESS;
4035 fnd_global.apps_initialize(p_user_id, p_resp_id , 867/*APPLICATION ID for AHL constant */);
4036 mo_global.init('AHL');
4037
4038 OPEN get_jcg_details(p_jcg_id);
4039 FETCH get_jcg_details INTO l_jcg_id,l_object_type_code,l_object_id,l_split_flag;
4040 IF(get_jcg_details%NOTFOUND)THEN
4041 close get_jcg_details;
4042 retcode := 1;
4043 fnd_file.put_line(fnd_file.log,'Request Identifier could not be found : p_jcg_id : ' || p_jcg_id);
4044 fnd_file.put_line(FND_FILE.LOG,'Another user may have issued a print request for same object at a later time.');
4045 fnd_file.put_line(FND_FILE.LOG,'End time:' || to_char(sysdate, 'Month DD, YYYY HH24:MI:SS'));
4046 RETURN;
4047 END IF;
4048 CLOSE get_jcg_details;
4049 l_enigma_request_id :=to_char(l_jcg_id) ||':'|| to_char(p_user_id) || ':'||to_char(p_resp_id) ;
4050
4051 fnd_file.put_line(FND_FILE.LOG,'Calling Generate_JCG_XML');
4052
4053 Generate_JCG_XML
4054 (p_api_version => 1.0,
4055 p_init_msg_list => FND_API.G_TRUE,
4056 --p_commit IN VARCHAR2 :=FND_API.G_FALSE,
4057 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
4058 p_object_type => l_object_type_code,
4059 p_object_id => l_object_id,
4060 p_split_flag => l_split_flag,
4061 x_return_status => l_return_status,
4062 x_msg_data => l_msg_data,
4063 x_msg_count => l_msg_count ,
4064 x_file_name => l_xml_file_name
4065 -- l_merged_lob OUT NOCOPY CLOB -- for testing purpose only ,not required
4066 );
4067 l_msg_count := FND_MSG_PUB.Count_Msg;
4068 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
4069 retcode := 2; -- error based only on return status
4070 ELSIF (l_msg_count > 0 AND l_return_status = FND_API.G_RET_STS_SUCCESS) THEN
4071 retcode := 1; -- warning based on return status + msg count
4072 END IF;
4073 fnd_file.put_line(FND_FILE.LOG,'Generate_JCG_XML l_msg_count : ' || l_msg_count);
4074 fnd_file.put_line(FND_FILE.LOG,'Generate_JCG_XML l_return_status : ' || l_return_status);
4075 fnd_file.put_line(FND_FILE.LOG,'Generate_JCG_XML retcode : ' || retcode);
4076 fnd_file.put_line(FND_FILE.LOG,'Generate_JCG_XML l_msg_data : ' || l_msg_data);
4077 fnd_file.put_line(FND_FILE.LOG,'Generate_JCG_XML l_xml_file_name : ' || l_xml_file_name);
4078 fnd_file.new_line(FND_FILE.LOG,1);
4079
4080 IF( retcode = 2 ) THEN
4081 fnd_file.put_line(FND_FILE.LOG,'Generate_JCG_XML returned errors');
4082 RAISE FND_API.G_EXC_ERROR;
4083 END IF;
4084 fnd_file.put_line(fnd_file.log,'Calling Process_JCG_Request');
4085
4086 OPEN get_jcg_details(p_jcg_id);
4087 FETCH get_jcg_details INTO l_jcg_id,l_object_type_code,l_object_id,l_split_flag;
4088 IF(get_jcg_details%NOTFOUND)THEN
4089 close get_jcg_details;
4090 retcode := 0;
4091 fnd_file.put_line(fnd_file.log,'Point 2: Request Identifier could not be found : p_jcg_id : ' || p_jcg_id);
4092 fnd_file.put_line(FND_FILE.LOG,'A print request issued later than this one has completed.');
4093 fnd_file.put_line(FND_FILE.LOG,'End time:' || to_char(sysdate, 'Month DD, YYYY HH24:MI:SS'));
4094 RETURN;
4095 end if;
4096 CLOSE get_jcg_details;
4097
4098 Process_JCG_Request(
4099 p_api_version => 1.0,
4100 p_init_msg_list => FND_API.G_FALSE,
4101 p_commit => FND_API.G_FALSE,
4102 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
4103 p_default => FND_API.G_FALSE,
4104 p_module_type => NULL,
4105 x_return_status => l_return_status,
4106 x_msg_data => l_msg_data,
4107 x_msg_count => l_msg_count ,
4108 p_operation_flag => 'U',
4109 p_x_jcg_id => l_jcg_id,
4110 p_object_type => l_object_type_code,
4111 p_object_id => l_object_id,
4112 p_status_code => 'P',--status processing
4113 p_file_location => NULL,
4114 p_split_flag => l_split_flag,
4115 p_xml_data_filename => l_xml_file_name,
4116 p_error_message => NULL,
4117 p_CONCURRENT_REQUEST_ID => l_conc_request_id --fnd_global.conc_request_id
4118 );
4119 l_msg_count := FND_MSG_PUB.Count_Msg;
4120 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
4121 retcode := 2; -- error based only on return status
4122 ELSIF (l_msg_count > 0 AND l_return_status = FND_API.G_RET_STS_SUCCESS) THEN
4123 retcode := 1; -- warning based on return status + msg count
4124 END IF;
4125 fnd_file.put_line(FND_FILE.LOG,'Process_JCG_Request l_msg_count : ' || l_msg_count);
4126 fnd_file.put_line(FND_FILE.LOG,'Process_JCG_Request l_return_status : ' || l_return_status);
4127 fnd_file.put_line(FND_FILE.LOG,'Process_JCG_Request retcode : ' || retcode);
4128 fnd_file.put_line(FND_FILE.LOG,'Process_JCG_Request l_msg_data : ' || l_msg_data);
4129 fnd_file.put_line(FND_FILE.LOG,'Process_JCG_Request l_jcg_id : ' || l_jcg_id);
4130 fnd_file.new_line(FND_FILE.LOG,1);
4131
4132 IF( retcode =2 ) THEN
4133 fnd_file.put_line(FND_FILE.LOG,'Process_JCG_Request returned errors');
4134 RAISE FND_API.G_EXC_ERROR;
4135 END IF;
4136
4137 fnd_file.put_line(FND_FILE.LOG,'Preparing to request Enigma to print');
4138 l_xml_file_name := FND_PROFILE.VALUE('AHL_ENIGMA_JCG_XML_FILEPATH') ||'/' ||l_xml_file_name;
4139
4140 /*l_xmldocument := '<runJobCard xmlns="http://service.sdk.webservices.enigma.com">'||
4141 '<a_WorkpackageFilePath>'|| + l_xml_file_name ||'</a_WorkpackageFilePath><a_userName>'||
4142 --'JCG'-- fnd_global.user_name
4143 fnd_global.user_name
4144 || '</a_userName></runJobCard>';
4145
4146 fnd_file.put_line(FND_FILE.LOG,'Event Data : ' || l_xmldocument);
4147 fnd_file.new_line(FND_FILE.LOG,1);
4148
4149 dbms_lob.createtemporary(l_eventdata, FALSE, DBMS_LOB.CALL);
4150 dbms_lob.write(l_eventdata, length(l_xmldocument), 1,
4151 l_xmldocument);
4152 -- Raise the Event with the message
4153 fnd_file.put_line(FND_FILE.LOG,'Raising event with key : ' || l_jcg_id);
4154 fnd_file.new_line(FND_FILE.LOG,1);
4155 wf_event.raise(
4156 p_event_name => 'oracle.apps.ahl.prd.EnigmaJCGEvent',
4157 p_event_key => l_enigma_request_id ,
4158 p_event_data => l_eventdata,
4159 p_parameters => l_parameter_list);
4160
4161 l_parameter_list.DELETE;
4162 fnd_file.put_line(FND_FILE.LOG,'Done Raising event with key : ' || l_jcg_id);*/
4163
4164 soap_request:= '<?xml version = ''1.0'' encoding = ''UTF-8''?>
4165 <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
4166 xmlns:ns="http://xmlns.oracle.com/AhlJCGHandlerService">
4167 <env:Header/>
4168 <env:Body>
4169 <ns:runJobCard>
4170 <ns:a_JCGRequestID>' || l_enigma_request_id ||'</ns:a_JCGRequestID>
4171 <ns:a_WorkpackageFilePath>'|| l_xml_file_name ||'</ns:a_WorkpackageFilePath>
4172 <ns:a_userName>' || fnd_global.user_name ||'</ns:a_userName>
4173 </ns:runJobCard>
4174 </env:Body>
4175 </env:Envelope>';
4176 /* invoke BPEL process AhlTestJCGHandlerService - populate from profile*/
4177 l_bpel_process_end_point := FND_PROFILE.VALUE('AHL_ENIGMA_JCGHBPEL_EPOINT');
4178 --l_bpel_process_end_point := 'http://rws60140rems.us.oracle.com:7777/orabpel/Ebsmh0yd212domain1/AhlJCGHandlerService/1.0';
4179
4180 fnd_file.put_line(FND_FILE.LOG,'BPEL process Address:' || l_bpel_process_end_point);
4181 fnd_file.put_line(FND_FILE.LOG,'XML file name for printing: :' || l_xml_file_name);
4182 fnd_file.put_line(FND_FILE.LOG,'initiating BPEL process:' || to_char(sysdate, 'Month DD, YYYY HH24:MI:SS'));
4183 http_req:= utl_http.begin_request( l_bpel_process_end_point, 'POST', 'HTTP/1.1');
4184 utl_http.set_header(http_req, 'Content-Type', 'text/xml');
4185 utl_http.set_header(http_req, 'Content-Length', length(soap_request));
4186 utl_http.set_header(http_req, 'SOAPAction', 'initiate');
4187 utl_http.write_text(http_req, soap_request);
4188 http_resp:= utl_http.get_response(http_req);-- do not try to read response
4189 utl_http.end_response(http_resp);
4190 fnd_file.put_line(FND_FILE.LOG,'Done initiating BPEL process:' || to_char(sysdate, 'Month DD, YYYY HH24:MI:SS'));
4191 fnd_file.new_line(FND_FILE.LOG,1);
4192 commit;
4193 fnd_file.put_line(FND_FILE.LOG,'End time:CC:' || to_char(sysdate, 'Month DD, YYYY HH24:MI:SS'));
4194
4195 EXCEPTION
4196 WHEN FND_API.G_EXC_ERROR THEN
4197 retcode := 2;
4198 FND_MSG_PUB.count_and_get( p_count => l_msg_count,
4199 p_data => l_msg_data,
4200 p_encoded => fnd_api.g_false);
4201 errbuf := l_msg_data;
4202 l_err_update_status := HANDLE_JCG_ERRORS(l_enigma_request_id , to_char(l_conc_request_id) || ':' || l_msg_data);
4203 fnd_file.put_line(FND_FILE.LOG,'Exceptions FND_API.G_EXC_ERROR: Generate_JCG_Request returned errors ');
4204 fnd_file.put_line(FND_FILE.LOG,'Error Update Status :' || l_err_update_status);
4205 fnd_file.new_line(FND_FILE.LOG,1);
4206
4207 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4208 retcode := 2;
4209 FND_MSG_PUB.count_and_get( p_count => l_msg_count,
4210 p_data => l_msg_data,
4211 p_encoded => fnd_api.g_false);
4212 errbuf := l_msg_data;
4213 l_err_update_status := HANDLE_JCG_ERRORS(l_enigma_request_id , to_char(l_conc_request_id) || ':' || l_msg_data);
4214 fnd_file.put_line(FND_FILE.LOG,'Exceptions FND_API.G_EXC_UNEXPECTED_ERROR: Generate_JCG_Request returned errors ');
4215 fnd_file.put_line(FND_FILE.LOG,'Error Update Status :' || l_err_update_status);
4216 fnd_file.new_line(FND_FILE.LOG,1);
4217
4218 WHEN OTHERS THEN
4219 retcode := 2;
4220 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
4221 p_procedure_name => 'generate_jcg_request',
4222 p_error_text => SUBSTR(SQLERRM,1,240));
4223 FND_MSG_PUB.count_and_get( p_count => l_msg_count,
4224 p_data => l_msg_data,
4225 p_encoded => fnd_api.g_false);
4226 errbuf := l_msg_data;
4227 l_err_update_status := HANDLE_JCG_ERRORS(l_enigma_request_id , to_char(l_conc_request_id) || ':' || l_msg_data);
4228 fnd_file.put_line(FND_FILE.LOG,'Exceptions OTHERS: Generate_JCG_Request returned errors ');
4229 fnd_file.put_line(FND_FILE.LOG,'Error Update Status :' || l_err_update_status);
4230 fnd_file.new_line(FND_FILE.LOG,1);
4231 END generate_jcg_request;
4232
4233 -- Start of Comments --
4234 -- Procedure name : print_workcard
4235 -- Type : Private
4236 -- Function : Handles front end requests to print Job Cards for CMRO Visits, MRs or Work Order
4237 -- Pre-reqs :
4238 -- Parameters :
4239 --
4240 -- Standard IN Parameters :
4241 -- p_api_version IN NUMBER Required
4242 -- p_init_msg_list IN VARCHAR2 Default FND_API.G_FALSE
4243 -- p_commit IN VARCHAR2 Default FND_API.G_FALSE
4244 -- p_validation_level IN NUMBER Default FND_API.G_VALID_LEVEL_FULL
4245 -- p_default IN VARCHAR2 Default FND_API.G_TRUE
4246 -- Based on this flag, the API will set the default attributes.
4247 -- p_module_type In VARCHAR2 Default NULL
4248 -- This will be null.
4249 -- Standard OUT Parameters :
4250 -- x_return_status OUT VARCHAR2 Required
4251 -- x_msg_count OUT NUMBER Required
4252 -- x_msg_data OUT VARCHAR2 Required
4253 --
4254 -- print_workcard Parameters :
4255 -- p_object_type - idenifier for object type i.e VISIT, MR, WORKORDER
4256 -- p_object_id - unique key for corresponding visit id, unit_effectivity_id or work order id
4257 -- p_user_id FND user id,
4258 -- p_resp_id Responsibility ID
4259 PROCEDURE print_workcard (
4260 p_api_version IN NUMBER :=1.0,
4261 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
4262 p_commit IN VARCHAR2 := FND_API.G_FALSE,
4263 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
4264 p_default IN VARCHAR2 := FND_API.G_TRUE,
4265 p_module_type IN VARCHAR2 := NULL,
4266 x_return_status OUT NOCOPY VARCHAR2,
4267 x_msg_count OUT NOCOPY NUMBER,
4268 x_msg_data OUT NOCOPY VARCHAR2,
4269 p_object_type IN VARCHAR2,
4270 p_object_id IN NUMBER,
4271 p_split_flag IN VARCHAR2 := 'N') IS
4272
4273 l_log_current_level NUMBER := FND_LOG.g_current_runtime_level;
4274 l_log_statement NUMBER := FND_LOG.level_statement;
4275 l_log_procedure NUMBER := FND_LOG.level_procedure;
4276 l_log_error NUMBER := FND_LOG.level_error;
4277 l_log_unexpected NUMBER := FND_LOG.level_unexpected;
4278
4279 l_api_version CONSTANT NUMBER := 1.0;
4280 l_api_name CONSTANT VARCHAR2(30) := 'print_workcard';
4281
4282 l_req_id NUMBER;
4283 l_user_id NUMBER;
4284 l_resp_id NUMBER;
4285
4286 l_jcg_id NUMBER;
4287 l_msg_count NUMBER;
4288 l_msg_data VARCHAR2(3000);
4289 l_return_status VARCHAR2(1);
4290
4291
4292 BEGIN
4293 -- Standard start of API savepoint
4294 SAVEPOINT GENERATE_JCG_REQUEST_PVT;
4295
4296 -- Standard call to check for call compatibility
4297 IF NOT FND_API.Compatible_API_Call(l_api_version, p_api_version, l_api_name,
4298 G_PKG_NAME) THEN
4299 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4300 END IF;
4301
4302 -- Initialize message list if p_init_msg_list is set to TRUE
4303 IF FND_API.To_Boolean(p_init_msg_list) THEN
4304 FND_MSG_PUB.Initialize;
4305 END IF;
4306
4307 l_user_id := FND_GLOBAL.USER_ID;
4308 l_resp_id := FND_GLOBAL.RESP_ID;
4309
4310 IF (l_log_statement >= l_log_current_level)THEN
4311 fnd_log.string( l_log_statement,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4312 'Starting process'
4313 );
4314 fnd_log.string( l_log_statement,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4315 'Firing cocurrent rquest for: p_object_type : ' || p_object_type || ': p_object_id : ' || p_object_id
4316 );
4317 fnd_log.string( l_log_statement,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4318 'Firing cocurrent rquest for: l_user_id : ' || l_user_id || ': l_resp_id : ' || l_resp_id
4319 );
4320 fnd_log.string( l_log_statement,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4321 'Firing cocurrent rquest for: User name : ' || FND_GLOBAL.USER_NAME || ': Resp Name : ' || FND_GLOBAL.RESP_NAME
4322 );
4323 fnd_log.string( l_log_statement,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4324 'Firing cocurrent rquest for: p_split_flag : ' || p_split_flag
4325 );
4326 END IF;
4327
4328 -- Initialize Procedure return status to success
4329 x_return_status := FND_API.G_RET_STS_SUCCESS;
4330
4331 Process_JCG_Request(
4332 p_api_version => 1.0,
4333 p_init_msg_list => FND_API.G_FALSE,
4334 p_commit => FND_API.G_FALSE,
4335 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
4336 p_default => FND_API.G_FALSE,
4337 p_module_type => NULL,
4338 x_return_status => l_return_status,
4339 x_msg_data => l_msg_data,
4340 x_msg_count => l_msg_count ,
4341 p_operation_flag => 'C',
4342 p_x_jcg_id => l_jcg_id,
4343 p_object_type => p_object_type,
4344 p_object_id => p_object_id,
4345 p_status_code => 'P',--status processing
4346 p_file_location => NULL,
4347 p_split_flag => p_split_flag,
4348 p_xml_data_filename => NULL,
4349 p_error_message => NULL,
4350 p_CONCURRENT_REQUEST_ID => NULL
4351 );
4352
4353 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
4354 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4355 END IF;
4356 l_req_id := fnd_request.submit_request('AHL','AHLJCGREQ',NULL,NULL,FALSE, l_jcg_id,l_user_id,l_resp_id);
4357 IF (l_req_id = 0 OR l_req_id IS NULL) THEN
4358 IF (l_log_unexpected >= l_log_current_level)THEN
4359 fnd_log.string( l_log_unexpected,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4360 'Tried to submit concurrent request but failed'
4361 );
4362 END IF;
4363 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4364 ELSE
4365 IF (l_log_statement >= l_log_current_level)THEN
4366 fnd_log.string( l_log_statement,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4367 'Concurrent request ID:' || l_req_id
4368 );
4369 END IF;
4370 END IF; -- l_req_id = 0 OR ..
4371
4372 -- Standard check of p_commit
4373 IF FND_API.TO_BOOLEAN(p_commit) THEN
4374 COMMIT WORK;
4375 END IF;
4376
4377 -- Standard call to get message count and if count is 1, get message info
4378 FND_MSG_PUB.Count_And_Get
4379 ( p_count => x_msg_count,
4380 p_data => x_msg_data,
4381 p_encoded => fnd_api.g_false
4382 );
4383
4384 --
4385 EXCEPTION
4386 WHEN FND_API.G_EXC_ERROR THEN
4387 x_return_status := FND_API.G_RET_STS_ERROR;
4388 Rollback to GENERATE_JCG_REQUEST_PVT;
4389 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
4390 p_data => x_msg_data,
4391 p_encoded => fnd_api.g_false);
4392
4393
4394 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4395 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4396 Rollback to GENERATE_JCG_REQUEST_PVT;
4397 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
4398 p_data => x_msg_data,
4399 p_encoded => fnd_api.g_false);
4400
4401 WHEN OTHERS THEN
4402 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4403 Rollback to GENERATE_JCG_REQUEST_PVT;
4404 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4405 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
4406 p_procedure_name => 'print_workcard',
4407 p_error_text => SUBSTR(SQLERRM,1,240));
4408 END IF;
4409 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
4410 p_data => x_msg_data,
4411 p_encoded => fnd_api.g_false);
4412
4413 END print_workcard;
4414
4415 --- Function to handle Enigma JCG Web Service response
4416 FUNCTION HANDLE_ENIGMAJCG_RESP(p_subscription_guid in raw,
4417 p_event in out NOCOPY WF_EVENT_T) return varchar2
4418 IS
4419 l_ret_resp VARCHAR2(10);
4420 BEGIN
4421 l_ret_resp := HANDLE_JCG_RESPONSE(p_event.GetEventKey(), p_event.getEventData());
4422 IF(l_ret_resp <> 'SUCCESS')THEN
4423 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4424 END IF;
4425 RETURN 'SUCCESS';
4426 EXCEPTION
4427 WHEN OTHERS THEN
4428 WF_CORE.CONTEXT('AHL_PRD_PRINT_PVT','HANDLE_ENIGMAJCG_RESP',
4429 p_event.getEventName(), p_subscription_guid);
4430 WF_EVENT.setErrorInfo(p_event, 'ERROR');
4431 RETURN 'ERROR';
4432
4433 END HANDLE_ENIGMAJCG_RESP;
4434
4435 --- Function to handle Enigma JCG Web Service response
4436 FUNCTION HANDLE_ENIGMAJCG_FAULTS(p_subscription_guid in raw,
4437 p_event in out NOCOPY WF_EVENT_T) return varchar2
4438 IS
4439 l_ret_resp VARCHAR2(10);
4440 BEGIN
4441 l_ret_resp := HANDLE_JCG_ERRORS(p_event.GetEventKey(), p_event.getErrorMessage());
4442 IF(l_ret_resp <> 'SUCCESS')THEN
4443 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4444 END IF;
4445 RETURN 'SUCCESS';
4446 EXCEPTION
4447 WHEN OTHERS THEN
4448 WF_CORE.CONTEXT('AHL_PRD_PRINT_PVT','HANDLE_ENIGMAJCG_RESP',
4449 p_event.getEventName(), p_subscription_guid);
4450 WF_EVENT.setErrorInfo(p_event, 'ERROR');
4451 RETURN 'ERROR';
4452
4453 END HANDLE_ENIGMAJCG_FAULTS;
4454
4455 --- Function to handle Enigma JCG Web Service response from BPEL
4456 FUNCTION HANDLE_JCG_RESPONSE(p_request_id IN VARCHAR2,
4457 p_enigma_response IN CLOB) return varchar2
4458 IS
4459 l_log_current_level NUMBER;
4460 l_log_statement NUMBER;
4461 l_log_procedure NUMBER;
4462 l_log_error NUMBER;
4463 l_log_unexpected NUMBER;
4464
4465
4466 l_api_name CONSTANT VARCHAR2(30) := 'HANDLE_JCG_RESPONSE';
4467 l_msg_count NUMBER;
4468 l_msg_data VARCHAR2(3000);
4469 l_return_status VARCHAR2(1);
4470 l_jcg_id NUMBER;
4471 l_user_id NUMBER;
4472 l_resp_id NUMBER;
4473
4474 l_clob_chunk_count integer;
4475 l_log_segment_size integer;
4476 i integer;
4477
4478 l_pdf_table PDF_TABLE_TYPE;
4479
4480 CURSOR get_jcg_details(p_jcg_id IN NUMBER) IS
4481 SELECT JCG_REQUEST_ID,OBJECT_TYPE_CODE,OBJECT_ID,SPLIT_FLAG,CONCURRENT_REQUEST_ID
4482 FROM ahl_enigma_jcg_details
4483 WHERE JCG_REQUEST_ID = p_jcg_id;
4484
4485 l_jcg_details_rec get_jcg_details%rowtype;
4486 l_pdf_resp_count integer;
4487 l_jcg_req_status VARCHAR2(30);
4488
4489 l_object_type_code VARCHAR2(30);
4490 l_object_id NUMBER;
4491 l_x_jcg_id NUMBER;
4492
4493 cursor does_more_recent_jcg_exist(p_jcg_id in number,p_object_type_code in varchar2,p_object_id in number,
4494 p_concurrent_request_id in number) is
4495 select 'x' from ahl_enigma_jcg_details
4496 where object_type_code = p_object_type_code
4497 and object_id = p_object_id
4498 and jcg_request_id > p_jcg_id
4499 AND concurrent_request_id > p_concurrent_request_id;
4500
4501 l_junc VARCHAR2(1);
4502
4503
4504 BEGIN
4505
4506 SAVEPOINT HANDLE_JCG_RESPONSE;
4507
4508 l_jcg_id := to_number(substr(p_request_id,1,instr(p_request_id,':',1,1)-1));
4509 l_user_id := to_number((substr(p_request_id,instr(p_request_id,':',1,1)+1,(instr(p_request_id,':',1,2) - instr(p_request_id,':',1,1))-1)));
4510 l_resp_id := to_number(substr(p_request_id,instr(p_request_id,':',1,2)+1));
4511 -- set application context for user that initiated request
4512 fnd_global.apps_initialize(l_user_id, l_resp_id , 867);
4513 mo_global.init('AHL');
4514
4515 l_log_current_level := FND_LOG.g_current_runtime_level;
4516 l_log_statement := FND_LOG.level_statement;
4517 l_log_procedure := FND_LOG.level_procedure;
4518 l_log_error := FND_LOG.level_error;
4519 l_log_unexpected := FND_LOG.level_unexpected;
4520
4521 IF (l_log_procedure >= l_log_current_level)THEN
4522 fnd_log.string( l_log_procedure,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4523 'Starting processing response' );
4524 END IF;
4525 IF (l_log_statement >= l_log_current_level)THEN
4526 fnd_log.string( l_log_statement,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4527 'p_request_id:' || p_request_id );
4528 fnd_log.string( l_log_statement,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4529 'l_user_id:' || l_user_id );
4530 fnd_log.string( l_log_statement,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4531 'l_resp_id:' || l_resp_id );
4532 fnd_log.string( l_log_statement,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4533 'l_jcg_id:' || l_jcg_id );
4534 l_log_segment_size := 3500;
4535 l_clob_chunk_count := ceil(DBMS_LOB.GETLENGTH(p_enigma_response)/l_log_segment_size);
4536 i :=1;
4537 while i<=l_clob_chunk_count LOOP
4538 fnd_log.string( l_log_statement,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4539 'l_eventData: part : ' || i || ': ' || DBMS_LOB.substr(p_enigma_response,l_log_segment_size,1+l_log_segment_size*(i -1) ));
4540 i := i+1;
4541 END LOOP;
4542 END IF;
4543
4544
4545
4546 OPEN get_jcg_details(l_jcg_id);
4547 FETCH get_jcg_details INTO l_jcg_details_rec;
4548 IF get_jcg_details%NOTFOUND THEN
4549 IF (l_log_statement >= l_log_current_level)THEN
4550 fnd_log.string( l_log_statement,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4551 'l_jcg_id:' || l_jcg_id );
4552 fnd_log.string( l_log_statement,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4553 'This request was fired in past and a later request got processed. Hence ignoring this request' );
4554 END IF;
4555 CLOSE get_jcg_details;
4556 RETURN 'SUCCESS';
4557 END IF;
4558 CLOSE get_jcg_details;
4559
4560 IF (l_log_statement >= l_log_current_level)THEN
4561 fnd_log.string( l_log_statement,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4562 'Parsing Enigma response' );
4563 END IF;
4564
4565 parse_enigma_response(
4566 p_workpackage_id => l_jcg_details_rec.object_type_code || '-' || l_jcg_details_rec.object_id,
4567 p_enigma_response => p_enigma_response,
4568 x_pdf_table => l_pdf_table -- OUT NOCOPY PDF_TABLE_TYPE
4569 );
4570
4571 IF (l_log_statement >= l_log_current_level)THEN
4572 fnd_log.string( l_log_statement,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4573 'Done Parsing: now printing response' );
4574 END IF;
4575
4576 l_pdf_resp_count :=0;
4577 IF (l_pdf_table IS NOT NULL AND l_pdf_table.COUNT > 0 )THEN
4578 l_pdf_resp_count := l_pdf_table.COUNT;
4579 END IF;
4580 IF (l_log_statement >= l_log_current_level)THEN
4581 IF (l_pdf_resp_count > 0 )THEN
4582 FOR k IN l_pdf_table.FIRST..l_pdf_table.LAST LOOP
4583 fnd_log.string( l_log_statement,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,substr(
4584 '[Job Card ID :' || l_pdf_table(k).job_card_id || ']' ||
4585 '[PDF PATH : ' || l_pdf_table(k).pdf_path || ']' ||
4586 '[Status : ' || l_pdf_table(k).status || ']' ||
4587 '[pdf_ErrorMessage : ' || l_pdf_table(k).pdf_ErrorMessage || ']',1,4000));
4588 END LOOP;
4589 END IF;
4590 END IF;
4591 -- error response or successful response with no split.
4592 IF (l_pdf_resp_count =1 OR (NVL(l_jcg_details_rec.SPLIT_FLAG,'N') = 'N' AND l_pdf_resp_count >=1 ))THEN
4593 IF(l_pdf_table(1).status IN ('Completed','Warning'))THEN
4594 l_jcg_req_status := 'S';
4595 ELSE
4596 l_jcg_req_status := 'E';
4597 END IF;
4598 Process_JCG_Request(
4599 p_api_version => 1.0,
4600 p_init_msg_list => FND_API.G_FALSE,
4601 p_commit => FND_API.G_FALSE,
4602 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
4603 p_default => FND_API.G_FALSE,
4604 p_module_type => NULL,
4605 x_return_status => l_return_status,
4606 x_msg_data => l_msg_data,
4607 x_msg_count => l_msg_count ,
4608 p_operation_flag => 'U',
4609 p_x_jcg_id => l_jcg_id,
4610 p_object_type => null,
4611 p_object_id => null,
4612 p_status_code => l_jcg_req_status,
4613 p_file_location => l_pdf_table(1).pdf_path,
4614 p_split_flag => NULL,
4615 p_xml_data_filename => NULL,
4616 p_error_message => substr(l_pdf_table(1).pdf_ErrorMessage,1,4000),
4617 p_CONCURRENT_REQUEST_ID => l_jcg_details_rec.CONCURRENT_REQUEST_ID
4618 );
4619 ELSIF (l_pdf_resp_count > 1 )THEN -- response for split flag as 'Y'
4620 FOR k IN l_pdf_table.FIRST..l_pdf_table.LAST LOOP
4621
4622 l_object_type_code := substr(l_pdf_table(k).job_card_id,1,instr(l_pdf_table(k).job_card_id,'-',1,1)-1);
4623
4624 IF(instr(l_pdf_table(k).job_card_id,'-',1,2) > 0)THEN
4625 l_object_id := to_number(substr(l_pdf_table(k).job_card_id,instr(l_pdf_table(k).job_card_id,'-',1,1)+1,(instr(l_pdf_table(k).job_card_id,'-',1,2) - instr(l_pdf_table(k).job_card_id,'-',1,1))-1));
4626 ELSE
4627 l_object_id := to_number(substr(l_pdf_table(k).job_card_id,instr(l_pdf_table(k).job_card_id,'-',1,1)+1));
4628 END IF;
4629
4630 IF(l_object_type_code = l_jcg_details_rec.object_type_code AND
4631 l_object_id = l_jcg_details_rec.object_id)THEN
4632 IF(l_pdf_table(k).status IN ('Completed','Warning'))THEN
4633 l_jcg_req_status := 'S';
4634 ELSE
4635 l_jcg_req_status := 'E';
4636 end if;
4637 Process_JCG_Request(
4638 p_api_version => 1.0,
4639 p_init_msg_list => FND_API.G_FALSE,
4640 p_commit => FND_API.G_FALSE,
4641 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
4642 p_default => FND_API.G_FALSE,
4643 p_module_type => NULL,
4644 x_return_status => l_return_status,
4645 x_msg_data => l_msg_data,
4646 x_msg_count => l_msg_count ,
4647 p_operation_flag => 'U',
4648 p_x_jcg_id => l_jcg_id,
4649 p_object_type => NULL,
4650 p_object_id => NULL,
4651 p_status_code => l_jcg_req_status,--status processing
4652 p_file_location => l_pdf_table(k).pdf_path,
4653 p_split_flag => NULL,
4654 p_xml_data_filename => NULL,
4655 p_error_message => substr(l_pdf_table(1).pdf_ErrorMessage,1,4000),
4656 p_CONCURRENT_REQUEST_ID => l_jcg_details_rec.CONCURRENT_REQUEST_ID
4657 );
4658 ELSE
4659 IF(l_pdf_table(k).status IN ('Completed','Warning'))THEN
4660 l_jcg_req_status := 'S';
4661 ELSE
4662 l_jcg_req_status := 'E';
4663 end if;
4664 open does_more_recent_jcg_exist(l_jcg_details_rec.JCG_REQUEST_ID ,l_object_type_code,
4665 l_object_id, l_jcg_details_rec.concurrent_request_id);
4666 fetch does_more_recent_jcg_exist into l_junc;
4667 if(does_more_recent_jcg_exist%notfound)then
4668 Process_JCG_Request(
4669 p_api_version => 1.0,
4670 p_init_msg_list => FND_API.G_FALSE,
4671 p_commit => FND_API.G_FALSE,
4672 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
4673 p_default => FND_API.G_FALSE,
4674 p_module_type => NULL,
4675 x_return_status => l_return_status,
4676 x_msg_data => l_msg_data,
4677 x_msg_count => l_msg_count ,
4678 p_operation_flag => 'C',
4679 p_x_jcg_id => l_x_jcg_id,
4680 p_object_type => l_object_type_code,
4681 p_object_id => l_object_id,
4682 p_status_code => l_jcg_req_status,--status processing
4683 p_file_location => l_pdf_table(k).pdf_path,
4684 p_split_flag => NULL,
4685 p_xml_data_filename => NULL,
4686 p_error_message => substr(l_pdf_table(k).pdf_ErrorMessage,1,4000),
4687 p_CONCURRENT_REQUEST_ID => l_jcg_details_rec.CONCURRENT_REQUEST_ID
4688 );
4689 end if;
4690 close does_more_recent_jcg_exist;
4691 END IF;
4692 END LOOP;
4693 ELSE -- no meaningful response was returned by Enigma
4694 Process_JCG_Request(
4695 p_api_version => 1.0,
4696 p_init_msg_list => FND_API.G_FALSE,
4697 p_commit => FND_API.G_FALSE,
4698 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
4699 p_default => FND_API.G_FALSE,
4700 p_module_type => NULL,
4701 x_return_status => l_return_status,
4702 x_msg_data => l_msg_data,
4703 x_msg_count => l_msg_count ,
4704 p_operation_flag => 'U',
4705 p_x_jcg_id => l_jcg_id,
4706 p_object_type => null,
4707 p_object_id => null,
4708 p_status_code => 'E',--status processing
4709 p_file_location => NULL,
4710 p_split_flag => NULL,
4711 p_xml_data_filename => NULL,
4712 p_error_message => 'An empty response was returned by Enigma',
4713 p_CONCURRENT_REQUEST_ID => l_jcg_details_rec.CONCURRENT_REQUEST_ID
4714 );
4715 END IF;
4716
4717 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
4718 RAISE FND_API.G_EXC_ERROR;
4719 END IF;
4720 IF (l_log_procedure >= l_log_current_level)THEN
4721 fnd_log.string( l_log_procedure,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4722 'Finsihed processing response' );
4723 END IF;
4724
4725 COMMIT;
4726
4727
4728 RETURN 'SUCCESS';
4729
4730
4731 EXCEPTION
4732 WHEN FND_API.G_EXC_ERROR THEN
4733 Rollback to HANDLE_JCG_RESPONSE;
4734
4735 FND_MSG_PUB.count_and_get( p_count => l_msg_count,
4736 p_data => l_msg_data,
4737 p_encoded => fnd_api.g_false);
4738 RETURN HANDLE_JCG_ERRORS(p_request_id, l_msg_data );
4739
4740 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4741 Rollback to HANDLE_JCG_RESPONSE;
4742 FND_MSG_PUB.count_and_get( p_count => l_msg_count,
4743 p_data => l_msg_data,
4744 p_encoded => fnd_api.g_false);
4745 RETURN HANDLE_JCG_ERRORS(p_request_id, l_msg_data );
4746
4747 WHEN OTHERS THEN
4748 Rollback to HANDLE_JCG_RESPONSE;
4749 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
4750 p_procedure_name => l_api_name,
4751 p_error_text => SUBSTR(SQLERRM,1,240));
4752 FND_MSG_PUB.count_and_get( p_count => l_msg_count,
4753 p_data => l_msg_data,
4754 p_encoded => fnd_api.g_false);
4755 RETURN HANDLE_JCG_ERRORS(p_request_id, l_msg_data );
4756 END HANDLE_JCG_RESPONSE;
4757
4758
4759
4760 --- Function to handle Enigma JCG Web Service flow errors
4761 FUNCTION HANDLE_JCG_ERRORS(p_request_id IN VARCHAR2,
4762 p_error_msg in VARCHAR2) return varchar2
4763 IS
4764
4765 l_log_current_level NUMBER;
4766 l_log_statement NUMBER;
4767 l_log_procedure NUMBER;
4768 l_log_error NUMBER;
4769 l_log_unexpected NUMBER;
4770
4771 l_api_name CONSTANT VARCHAR2(30) := 'HANDLE_JCG_ERRORS';
4772 l_msg_count NUMBER;
4773 l_msg_data VARCHAR2(3000);
4774 l_return_status VARCHAR2(1);
4775 l_jcg_id NUMBER;
4776 l_user_id NUMBER;
4777 l_resp_id NUMBER;
4778
4779 CURSOR get_jcg_details(p_jcg_id IN NUMBER) IS
4780 SELECT JCG_REQUEST_ID,OBJECT_TYPE_CODE,OBJECT_ID,SPLIT_FLAG,CONCURRENT_REQUEST_ID
4781 FROM ahl_enigma_jcg_details
4782 WHERE JCG_REQUEST_ID = p_jcg_id;
4783
4784 l_jcg_details_rec get_jcg_details%rowtype;
4785 l_error_msg VARCHAR2(4000);
4786
4787 BEGIN
4788
4789 SAVEPOINT HANDLE_JCG_ERRORS;
4790
4791 l_jcg_id := to_number(substr(p_request_id,1,instr(p_request_id,':',1,1)-1));
4792 l_user_id := to_number((substr(p_request_id,instr(p_request_id,':',1,1)+1,(instr(p_request_id,':',1,2) - instr(p_request_id,':',1,1))-1)));
4793 l_resp_id := to_number(substr(p_request_id,instr(p_request_id,':',1,2)+1));
4794 -- set application context for user that initiated request
4795 fnd_global.apps_initialize(l_user_id, l_resp_id , 867);
4796 mo_global.init('AHL');
4797
4798 l_log_current_level := FND_LOG.g_current_runtime_level;
4799 l_log_statement := FND_LOG.level_statement;
4800 l_log_procedure := FND_LOG.level_procedure;
4801 l_log_error := FND_LOG.level_error;
4802 l_log_unexpected := FND_LOG.level_unexpected;
4803
4804 IF (l_log_procedure >= l_log_current_level)THEN
4805 fnd_log.string( l_log_procedure,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4806 'Starting processing errors' );
4807 END IF;
4808 IF (l_log_statement >= l_log_current_level)THEN
4809 fnd_log.string( l_log_statement,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4810 'p_request_id:' || p_request_id );
4811 fnd_log.string( l_log_statement,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4812 'l_user_id:' || l_user_id );
4813 fnd_log.string( l_log_statement,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4814 'l_resp_id:' || l_resp_id );
4815 fnd_log.string( l_log_statement,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4816 'l_jcg_id:' || l_jcg_id );
4817 fnd_log.string( l_log_statement,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4818 'l_error_message:' || p_error_msg );
4819 END IF;
4820 l_error_msg := substr(p_error_msg,1,4000);
4821
4822 IF p_error_msg = 'AHL_PRD_BPEL_JCGH_BFAULT' THEN
4823 FND_MESSAGE.SET_NAME('AHL', 'AHL_PRD_BPEL_JCGH_BFAULT');
4824 l_error_msg := FND_MESSAGE.get;
4825 ELSIF p_error_msg = 'AHL_PRD_BPEL_JCGH_INVFAULT' THEN
4826 FND_MESSAGE.SET_NAME('AHL', 'AHL_PRD_BPEL_JCGH_INVFAULT');
4827 l_error_msg := FND_MESSAGE.get;
4828 END IF;
4829 OPEN get_jcg_details(l_jcg_id);
4830 FETCH get_jcg_details INTO l_jcg_details_rec;
4831 IF get_jcg_details%NOTFOUND THEN
4832 IF (l_log_statement >= l_log_current_level)THEN
4833 fnd_log.string( l_log_statement,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4834 'l_jcg_id:' || l_jcg_id );
4835 fnd_log.string( l_log_statement,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4836 'This request was fired in past and a later request got processed. Hence ignoring this request' );
4837 END IF;
4838 CLOSE get_jcg_details;
4839 RETURN 'SUCCESS';
4840 END IF;
4841 CLOSE get_jcg_details;
4842
4843
4844
4845 Process_JCG_Request(
4846 p_api_version => 1.0,
4847 p_init_msg_list => FND_API.G_FALSE,
4848 p_commit => FND_API.G_FALSE,
4849 p_validation_level => FND_API.G_VALID_LEVEL_FULL,
4850 p_default => FND_API.G_FALSE,
4851 p_module_type => NULL,
4852 x_return_status => l_return_status,
4853 x_msg_data => l_msg_data,
4854 x_msg_count => l_msg_count ,
4855 p_operation_flag => 'U',
4856 p_x_jcg_id => l_jcg_id,
4857 p_object_type => null,
4858 p_object_id => null,
4859 p_status_code => 'E',--status processing
4860 p_file_location => NULL,
4861 p_split_flag => NULL,
4862 p_xml_data_filename => NULL,
4863 p_error_message => l_error_msg,
4864 p_CONCURRENT_REQUEST_ID => l_jcg_details_rec.CONCURRENT_REQUEST_ID
4865 );
4866
4867 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
4868 RAISE FND_API.G_EXC_ERROR;
4869 END IF;
4870 IF (l_log_procedure >= l_log_current_level)THEN
4871 fnd_log.string( l_log_procedure,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4872 'Finsihed processing errors' );
4873 END IF;
4874
4875 COMMIT;
4876
4877
4878 RETURN 'SUCCESS';
4879
4880
4881 EXCEPTION
4882 WHEN FND_API.G_EXC_ERROR THEN
4883 Rollback to HANDLE_JCG_ERRORS;
4884
4885 FND_MSG_PUB.count_and_get( p_count => l_msg_count,
4886 p_data => l_msg_data,
4887 p_encoded => fnd_api.g_false);
4888 IF (l_log_error >= l_log_current_level)THEN
4889 fnd_log.string( l_log_error,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4890 'l_eventkey:' || p_request_id );
4891 fnd_log.string( l_log_error,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4892 'l_msg_data:' || l_msg_data );
4893 END IF;
4894 RETURN 'ERROR';
4895
4896 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4897 Rollback to HANDLE_JCG_ERRORS;
4898 FND_MSG_PUB.count_and_get( p_count => l_msg_count,
4899 p_data => l_msg_data,
4900 p_encoded => fnd_api.g_false);
4901 IF (l_log_unexpected >= l_log_current_level)THEN
4902 fnd_log.string( l_log_unexpected,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4903 'p_request_id:' || p_request_id );
4904 fnd_log.string( l_log_unexpected,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4905 'l_msg_data:' || l_msg_data );
4906 END IF;
4907 RETURN 'ERROR';
4908 WHEN OTHERS THEN
4909 Rollback to HANDLE_JCG_ERRORS;
4910 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
4911 p_procedure_name => l_api_name,
4912 p_error_text => SUBSTR(SQLERRM,1,240));
4913 FND_MSG_PUB.count_and_get( p_count => l_msg_count,
4914 p_data => l_msg_data,
4915 p_encoded => fnd_api.g_false);
4916 IF (l_log_unexpected >= l_log_current_level)THEN
4917 fnd_log.string( l_log_unexpected,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4918 'p_request_id:' || p_request_id );
4919 fnd_log.string( l_log_unexpected,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
4920 'l_msg_data:' || l_msg_data );
4921 END IF;
4922 RETURN 'ERROR';
4923
4924 END HANDLE_JCG_ERRORS;
4925
4926 PROCEDURE parse_enigma_response(
4927 p_workpackage_id IN VARCHAR2,
4928 p_enigma_response IN CLOB,
4929 x_pdf_table OUT NOCOPY PDF_TABLE_TYPE )
4930 IS
4931 l_log_current_level NUMBER;
4932 l_log_statement NUMBER;
4933 l_log_procedure NUMBER;
4934 l_log_error NUMBER;
4935 l_log_unexpected NUMBER;
4936 l_api_name CONSTANT VARCHAR2(30) := 'parse_enigma_response';
4937 nl XMLDOM.DOMNODELIST;
4938 len1 NUMBER;
4939 len2 NUMBER;
4940 n XMLDOM.DOMNODE;
4941 e XMLDOM.DOMELEMENT;
4942 l_parser DBMS_XMLPARSER.parser;
4943 l_indomdoc DBMS_XMLDOM.DOMDocument;
4944 l_pdf_rec PDF_REC_TYPE;
4945 l_index INTEGER;
4946 l_node_name VARCHAR2(2000);
4947 l_parse_jobcards BOOLEAN;
4948 BEGIN
4949 l_log_current_level := FND_LOG.g_current_runtime_level;
4950 l_log_statement := FND_LOG.level_statement;
4951 l_log_procedure := FND_LOG.level_procedure;
4952 l_log_error := FND_LOG.level_error;
4953 l_log_unexpected := FND_LOG.level_unexpected;
4954 IF (l_log_procedure >= l_log_current_level)THEN
4955 fnd_log.string( l_log_procedure,'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,'Entering procedure');
4956 END IF;
4957 l_parser := DBMS_XMLPARSER.newParser;
4958 --DBMS_XMLPARSER.parseBuffer(l_parser,p_enigma_response);
4959 -- fix for bug 9834092
4960 DBMS_XMLPARSER.parseClob(l_parser,p_enigma_response);
4961 l_indomdoc := DBMS_XMLPARSER.getDocument(l_parser);
4962 -- get all elements
4963 nl := XMLDOM.getElementsByTagName(l_indomdoc, '*');
4964 len1 := XMLDOM.getLength(nl);
4965 -- loop through elements
4966 l_index := 0;
4967 l_parse_jobcards := TRUE;
4968 FOR j IN 0..len1-1
4969 LOOP
4970 n := XMLDOM.item(nl, j);
4971 e := XMLDOM.makeElement(n);
4972 l_node_name := XMLDOM.getNodeName(n);
4973 l_node_name := SUBSTR(l_node_name,instr(l_node_name,':',1,1)+1 );
4974 -- dbms_output.put_line( 'parsed:' || l_node_name );
4975 IF (l_node_name = 'woErrorMessage') THEN
4976 l_pdf_rec := NULL;
4977 l_index := l_index+1;
4978 END IF;
4979 IF (l_node_name ='woErrorMessage')THEN
4980 l_pdf_rec.pdf_ErrorMessage := xmldom.getNodeValue(xmldom.getFirstChild(n));
4981 ELSIF (l_node_name ='woStatus')THEN
4982 l_pdf_rec.job_card_id := p_workpackage_id;
4983 l_pdf_rec.status := xmldom.getNodeValue(xmldom.getFirstChild(n));
4984 IF(l_pdf_rec.status NOT IN( 'Completed','Warning'))THEN
4985 x_pdf_table(l_index) := l_pdf_rec;
4986 l_parse_jobcards := FALSE;
4987 END IF;
4988 END IF;
4989 END LOOP;
4990 IF(l_parse_jobcards)THEN
4991 l_index := 0;
4992 ELSE
4993 RETURN;--Error at header level for printing.. not need to go further
4994 END IF;
4995 -- parse job cards pdfs
4996 FOR j IN 0..len1-1
4997 LOOP
4998 n := XMLDOM.item(nl, j);
4999 e := XMLDOM.makeElement(n);
5000 l_node_name := XMLDOM.getNodeName(n);
5001 l_node_name := SUBSTR(l_node_name,instr(l_node_name,':',1,1)+1 );
5002 IF(l_node_name = 'pdfStatus') THEN
5003 l_pdf_rec := NULL;
5004 l_index := l_index+1;
5005 END IF;
5006 IF(l_node_name = 'jobCardID') THEN
5007 l_pdf_rec.job_card_id := xmldom.getNodeValue(xmldom.getFirstChild(n));
5008 ELSIF(l_node_name ='pdfPath')THEN
5009 l_pdf_rec.pdf_path := xmldom.getNodeValue(xmldom.getFirstChild(n));
5010 ELSIF(l_node_name ='pdfErrorMessage')THEN
5011 l_pdf_rec.pdf_ErrorMessage := xmldom.getNodeValue(xmldom.getFirstChild(n));
5012 ELSIF(l_node_name ='status')THEN
5013 l_pdf_rec.status := xmldom.getNodeValue(xmldom.getFirstChild(n));
5014 x_pdf_table(l_index) := l_pdf_rec;
5015 END IF;
5016 END LOOP;
5017 DBMS_XMLDOM.freeDocument(l_indomdoc);
5018 DBMS_XMLPARSER.freeParser(l_parser);
5019 END parse_enigma_response;
5020
5021 PROCEDURE APPLY_TRANSFORMATION(
5022 p_indoc IN CLOB,
5023 --p_xsl_full_path IN VARCHAR2,
5024 p_xsl_doc IN CLOB,
5025 p_xml_output_dir IN VARCHAR2,
5026 p_xml_output_filename IN VARCHAR2,
5027 x_return_status OUT NOCOPY VARCHAR2,
5028 x_msg_count OUT NOCOPY NUMBER,
5029 x_msg_data OUT NOCOPY VARCHAR2
5030 )IS
5031 l_parser DBMS_XMLPARSER.parser;
5032 l_indomdoc DBMS_XMLDOM.DOMDocument;
5033 l_xsltdomdoc DBMS_XMLDOM.DOMDocument;
5034 l_xsl DBMS_XSLPROCESSOR.stylesheet;
5035 l_outdomdocf DBMS_XMLDOM.DOMDocumentFragment;
5036 l_outnode DBMS_XMLDOM.DOMNode;
5037 l_proc DBMS_XSLPROCESSOR.processor;
5038 l_clob CLOB;
5039 l_clob_file CLOB;
5040 l_vchar_header VARCHAR2(40);
5041 BEGIN
5042 -- Initialize Procedure return status to success
5043 x_return_status := FND_API.G_RET_STS_SUCCESS;
5044 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
5045 fnd_log.string (
5046 fnd_log.level_statement, 'ahl.plsql.'||g_pkg_name||'.'||'APPLY_TRANSFORMATION' ,'Starting transformation');
5047 END IF;
5048 l_vchar_header := '<?xml version="1.0" encoding="UTF-8" ?>';
5049 l_parser := DBMS_XMLPARSER.newParser;
5050 DBMS_XMLPARSER.parseClob(l_parser, p_indoc);
5051 -- following statement commented since input is clob and not a input xml full path
5052 --DBMS_XMLPARSER.parse(l_parser,p_xml_input_fullpath);
5053 l_indomdoc := DBMS_XMLPARSER.getDocument(l_parser);
5054 --DBMS_XMLPARSER.parse(l_parser, p_xsl_full_path);
5055 DBMS_XMLPARSER.parseClob(l_parser, p_xsl_doc);
5056 l_xsltdomdoc := DBMS_XMLPARSER.getDocument(l_parser);
5057 l_xsl := DBMS_XSLPROCESSOR.newStyleSheet(l_xsltdomdoc, '');
5058 l_proc := DBMS_XSLPROCESSOR.newProcessor;
5059
5060 DBMS_LOB.createTemporary( l_clob, true );
5061 DBMS_LOB.open( l_clob, DBMS_LOB.lob_readwrite );
5062 DBMS_LOB.write(l_clob,length(l_vchar_header),length(l_clob)+1,l_vchar_header);
5063
5064 --DBMS_XSLPROCESSOR.processXSL(l_proc, l_xsl, l_indomdoc,p_xml_output_dir,p_xml_output_filename);
5065 DBMS_XSLPROCESSOR.processXSL(l_proc, l_xsl, l_indomdoc,l_clob);
5066
5067 --DBMS_LOB.APPEND(l_clob_header,l_clob);
5068 DBMS_LOB.createTemporary( l_clob_file, true );
5069 DBMS_LOB.open( l_clob_file, DBMS_LOB.lob_readwrite );
5070 DBMS_LOB.write(l_clob_file,length(l_vchar_header),length(l_clob_file)+1,l_vchar_header);
5071 DBMS_LOB.copy(l_clob_file,l_clob,4294967295,40,1);
5072
5073 DBMS_XSLPROCESSOR.CLOB2FILE(l_clob_file,p_xml_output_dir,p_xml_output_filename);
5074
5075 DBMS_LOB.close(l_clob_file);
5076 DBMS_LOB.close(l_clob);
5077 DBMS_XMLDOM.freeDocument(l_indomdoc);
5078 DBMS_XMLDOM.freeDocument(l_xsltdomdoc);
5079 DBMS_XMLPARSER.freeParser(l_parser);
5080 DBMS_XSLPROCESSOR.freeProcessor(l_proc);
5081 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
5082 fnd_log.string (
5083 fnd_log.level_statement, 'ahl.plsql.'||g_pkg_name||'.'||'APPLY_TRANSFORMATION' ,'done transformation');
5084 END IF;
5085 EXCEPTION
5086 WHEN OTHERS THEN
5087 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5088 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
5089 p_procedure_name => 'APPLY_TRANSFORMATION',
5090 p_error_text => SUBSTR(SQLERRM,1,240));
5091 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
5092 p_data => x_msg_data,
5093 p_encoded => fnd_api.g_false);
5094
5095 END APPLY_TRANSFORMATION;
5096
5097 PROCEDURE APPLY_TRANSFORMATION(
5098 p_xml_input_fullpath IN VARCHAR2,
5099 p_xsl_doc IN CLOB,
5100 p_xml_output_dir IN VARCHAR2,
5101 p_xml_output_filename IN VARCHAR2,
5102 x_return_status OUT NOCOPY VARCHAR2,
5103 x_msg_count OUT NOCOPY NUMBER,
5104 x_msg_data OUT NOCOPY VARCHAR2
5105 )IS
5106 l_parser DBMS_XMLPARSER.parser;
5107 l_indomdoc DBMS_XMLDOM.DOMDocument;
5108 l_xsltdomdoc DBMS_XMLDOM.DOMDocument;
5109 l_xsl DBMS_XSLPROCESSOR.stylesheet;
5110 l_outdomdocf DBMS_XMLDOM.DOMDocumentFragment;
5111 l_outnode DBMS_XMLDOM.DOMNode;
5112 l_proc DBMS_XSLPROCESSOR.processor;
5113 l_clob CLOB;
5114 l_clob_file CLOB;
5115 l_vchar_header VARCHAR2(40);
5116 BEGIN
5117 -- Initialize Procedure return status to success
5118 x_return_status := FND_API.G_RET_STS_SUCCESS;
5119 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
5120 fnd_log.string (
5121 fnd_log.level_statement, 'ahl.plsql.'||g_pkg_name||'.'||'APPLY_TRANSFORMATION' ,'Starting transformation');
5122 END IF;
5123 l_vchar_header := '<?xml version="1.0" encoding="UTF-8" ?>';
5124 l_parser := DBMS_XMLPARSER.newParser;
5125 -- following statement commented since input is a input xml full path and not a clob
5126 --DBMS_XMLPARSER.parseBuffer(l_parser, p_indoc);
5127
5128 DBMS_XMLPARSER.parse(l_parser,p_xml_input_fullpath);
5129 l_indomdoc := DBMS_XMLPARSER.getDocument(l_parser);
5130 DBMS_XMLPARSER.parseClob(l_parser, p_xsl_doc);
5131 l_xsltdomdoc := DBMS_XMLPARSER.getDocument(l_parser);
5132 l_xsl := DBMS_XSLPROCESSOR.newStyleSheet(l_xsltdomdoc, '');
5133 l_proc := DBMS_XSLPROCESSOR.newProcessor;
5134
5135 DBMS_LOB.createTemporary( l_clob, true );
5136 DBMS_LOB.open( l_clob, DBMS_LOB.lob_readwrite );
5137 DBMS_LOB.write(l_clob,length(l_vchar_header),length(l_clob)+1,l_vchar_header);
5138
5139 --DBMS_XSLPROCESSOR.processXSL(l_proc, l_xsl, l_indomdoc,p_xml_output_dir,p_xml_output_filename);
5140 DBMS_XSLPROCESSOR.processXSL(l_proc, l_xsl, l_indomdoc,l_clob);
5141
5142 --DBMS_LOB.APPEND(l_clob_header,l_clob);
5143 DBMS_LOB.createTemporary( l_clob_file, true );
5144 DBMS_LOB.open( l_clob_file, DBMS_LOB.lob_readwrite );
5145 DBMS_LOB.write(l_clob_file,length(l_vchar_header),length(l_clob_file)+1,l_vchar_header);
5146 DBMS_LOB.copy(l_clob_file,l_clob,4294967295,40,1);
5147
5148 DBMS_XSLPROCESSOR.CLOB2FILE(l_clob_file,p_xml_output_dir,p_xml_output_filename);
5149
5150 DBMS_LOB.close(l_clob_file);
5151 DBMS_LOB.close(l_clob);
5152 DBMS_XMLDOM.freeDocument(l_indomdoc);
5153 DBMS_XMLDOM.freeDocument(l_xsltdomdoc);
5154 DBMS_XMLPARSER.freeParser(l_parser);
5155 DBMS_XSLPROCESSOR.freeProcessor(l_proc);
5156 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
5157 fnd_log.string (
5158 fnd_log.level_statement, 'ahl.plsql.'||g_pkg_name||'.'||'APPLY_TRANSFORMATION' ,'Done transformation');
5159 END IF;
5160 EXCEPTION
5161 WHEN OTHERS THEN
5162 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5163 fnd_msg_pub.add_exc_msg(p_pkg_name => G_PKG_NAME,
5164 p_procedure_name => 'APPLY_TRANSFORMATION',
5165 p_error_text => SUBSTR(SQLERRM,1,240));
5166 FND_MSG_PUB.count_and_get( p_count => x_msg_count,
5167 p_data => x_msg_data,
5168 p_encoded => fnd_api.g_false);
5169
5170 END APPLY_TRANSFORMATION;
5171
5172 FUNCTION get_xsl_clob RETURN CLOB
5173 IS
5174 l_xsl_clob clob;
5175 l_xsl_part1 varchar2(30000);
5176 l_xsl_part2 varchar2(30000);
5177 l_xsl_part3 varchar2(30000);
5178 l_xsl_part4 varchar2(30000);
5179 l_xsl_part5 varchar2(30000);
5180 l_xsl_part6 varchar2(30000);
5181 l_xsl_part7 varchar2(30000);
5182 l_xsl_part8 VARCHAR2(30000);
5183 BEGIN
5184 l_xsl_part1 := '<?xml version="1.0" encoding="UTF-8" ?>
5185 <?oracle-xsl-mapper
5186 <!-- SPECIFICATION OF MAP SOURCES AND TARGETS, DO NOT MODIFY. -->
5187 <mapSources>
5188 <source type="XSD">
5189 <schema location="EnigmaWorkPackage.xsd"/>
5190 <rootElement name="WorkPackage" namespace="http://www.oracle.com/ns/ahl/prd/EnigmaWorkPackage"/>
5191 </source>
5192 </mapSources>
5193 <mapTargets>
5194 <target type="WSDL">
5195 <schema location="VisitLevelTransformation.wsdl"/>
5196 <rootElement name="workpackage" namespace=""/>
5197 </target>
5198 </mapTargets>
5199 <mapGenType type="ALL"/>
5200 <!-- GENERATED BY ORACLE XSL MAPPER 10.1.3.4.0(build 080718.0645) AT [FRI OCT 22 18:46:38 PDT 2010]. -->
5201 ?>
5202 <xsl:stylesheet version="1.0"
5203 xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
5204 xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
5205 xmlns:ehdr="http://www.oracle.com/XSL/Transform/java/oracle.tip.esb.server.headers.ESBHeaderFunctions"
5206 xmlns:client="http://xmlns.oracle.com/VisitLevelTransformation"
5207 xmlns:ns0="http://www.w3.org/2001/XMLSchema"
5208 xmlns:hwf="http://xmlns.oracle.com/bpel/workflow/xpath"
5209 xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20"
5210 xmlns:xref="http://www.oracle.com/XSL/Transform/java/oracle.tip.xref.xpath.XRefXPathFunctions"
5211 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
5212 xmlns:ora="http://schemas.oracle.com/xpath/extension"
5213 xmlns:ids="http://xmlns.oracle.com/bpel/services/IdentityService/xpath"
5214 xmlns:orcl="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc"
5215 xmlns:wp="http://www.oracle.com/ns/ahl/prd/EnigmaWorkPackage"
5216 exclude-result-prefixes="xsl ns0 wp plnk client bpws ehdr hwf xp20 xref ora ids orcl">
5217 <xsl:template match="/">
5218 <workpackage>
5219 <xsl:attribute name="id">
5220 <xsl:value-of select=''translate(concat(/wp:WorkPackage/wp:wpmeta/wp:RequestType,"-",/wp:WorkPackage/wp:wpmeta/wp:RequestObjectId,"-",/wp:WorkPackage/wp:wpmeta/wp:WorkPackageGenerationDate),":","-")''/>
5221 </xsl:attribute>
5222 <xsl:attribute name="OEM"/>
5223 <xsl:attribute name="tailnumber">
5224 <xsl:value-of select="/wp:WorkPackage/wp:VisitDetails/wp:UnitName"/>
5225 </xsl:attribute>
5226 <xsl:attribute name="priority">
5227 <xsl:value-of select=''concat("1","")''/>
5228 </xsl:attribute>
5229 <xsl:attribute name="revdate">
5230 <xsl:value-of select="/wp:WorkPackage/wp:wpmeta/wp:WorkPackageGenerationDate"/>
5231 </xsl:attribute>
5232 <xsl:attribute name="issuedate">
5233 <xsl:value-of select="/wp:WorkPackage/wp:wpmeta/wp:WorkPackageGenerationDate"/>
5234 </xsl:attribute>
5235 <xsl:attribute name="user">
5236 <xsl:value-of select="/wp:WorkPackage/wp:wpmeta/wp:User"/>
5237 </xsl:attribute>
5238 <xsl:attribute name="increfdoc"/>
5239 <xsl:attribute name="cover"/>
5240 <xsl:choose>
5241 <xsl:when test=''/wp:WorkPackage/wp:wpmeta/wp:SplitFlag = "N"''>
5242 <xsl:attribute name="single">
5243 <xsl:value-of select=''concat("true","")''/>
5244 </xsl:attribute>
5245 </xsl:when>
5246 <xsl:otherwise>
5247 <xsl:attribute name="single">
5248 <xsl:value-of select=''concat("false","")''/>
5249 </xsl:attribute>
5250 </xsl:otherwise>
5251 </xsl:choose>
5252 <xsl:attribute name="logo">
5253 <xsl:value-of select=''concat("","")''/>
5254 </xsl:attribute>
5255 <wpmeta>
5256 <type>
5257 <xsl:attribute name="value">
5258 <xsl:value-of select="/wp:WorkPackage/wp:wpmeta/wp:RequestType"/>
5259 </xsl:attribute>
5260 </type>
5261 <visitDetails>
5262 <visitno>
5263 <xsl:attribute name="value">
5264 <xsl:value-of select="/wp:WorkPackage/wp:VisitDetails/wp:VisitNumber"/>
5265 </xsl:attribute>
5266 </visitno>
5267 <visittype>
5268 <xsl:attribute name="value">
5269 <xsl:value-of select="/wp:WorkPackage/wp:VisitDetails/wp:VisitType"/>
5270 </xsl:attribute>
5271 </visittype>
5272 <plannedstartdate>
5273 <xsl:attribute name="value">
5274 <xsl:value-of select="/wp:WorkPackage/wp:VisitDetails/wp:PlannedStartDate"/>
5275 </xsl:attribute>
5276 </plannedstartdate>
5277 <plannedenddate>
5278 <xsl:attribute name="value">
5279 <xsl:value-of select="/wp:WorkPackage/wp:VisitDetails/wp:PlannedEndDate"/>
5280 </xsl:attribute>
5281 </plannedenddate>
5282 <organization>
5283 <xsl:attribute name="value">
5284 <xsl:value-of select="/wp:WorkPackage/wp:VisitDetails/wp:Organization"/>
5285 </xsl:attribute>
5286 </organization>
5287 <department>
5288 <xsl:attribute name="value">
5289 <xsl:value-of select="/wp:WorkPackage/wp:VisitDetails/wp:Department"/>
5290 </xsl:attribute>
5291 </department>
5292 <nrtitle>
5293 <xsl:attribute name="value">
5294 <xsl:value-of select="/wp:WorkPackage/wp:VisitDetails/wp:NonRoutineTitle"/>
5295 </xsl:attribute>
5296 </nrtitle>
5297 <subinventory>
5298 <xsl:attribute name="value">
5299 <xsl:value-of select="/wp:WorkPackage/wp:VisitDetails/wp:SubInventory"/>
5300 </xsl:attribute>
5301 </subinventory>
5302 <locator>
5303 <xsl:attribute name="value">
5304 <xsl:value-of select="/wp:WorkPackage/wp:VisitDetails/wp:Locator"/>
5305 </xsl:attribute>
5306 </locator>
5307 <releasedate>
5308 <xsl:attribute name="value">
5309 <xsl:value-of select="/wp:WorkPackage/wp:VisitDetails/wp:ReleaseDate"/>
5310 </xsl:attribute>
5311 </releasedate>
5312 </visitDetails>
5313 <orgvalprint>
5314 <xsl:attribute name="value">
5315 <xsl:value-of select="/wp:WorkPackage/wp:VisitDetails/wp:Organization"/>
5316 </xsl:attribute>
5317 </orgvalprint>
5318 <orgcertificate>
5319 <xsl:attribute name="value"/>
5320 </orgcertificate>
5321 <acnha>
5322 <xsl:attribute name="value">
5323 <xsl:value-of select="/wp:WorkPackage/wp:VisitDetails/wp:UnitName"/>
5324 </xsl:attribute>
5325 </acnha>
5326 <engine>
5327 <xsl:attribute name="value">
5328 <xsl:value-of select="/wp:WorkPackage/wp:VisitDetails/wp:UnitName"/>
5329 </xsl:attribute>
5330 </engine>
5331 </wpmeta>';
5332 l_xsl_part2 := '<xsl:for-each select="/wp:WorkPackage/wp:MrPackage">
5333 <mrpackage>
5334 <xsl:attribute name="id">
5335 <xsl:value-of select=''concat("MR-",wp:UnitEffectivityId)''/>
5336 </xsl:attribute>
5337 <xsl:attribute name="mrtitle">
5338 <xsl:value-of select="wp:Title"/>
5339 </xsl:attribute>
5340 <xsl:attribute name="mrdesc">
5341 <xsl:value-of select="wp:Descripton"/>
5342 </xsl:attribute>
5343 <xsl:attribute name="progtype">
5344 <xsl:value-of select="wp:ProgramType"/>
5345 </xsl:attribute>
5346 <xsl:attribute name="progsubtype">
5347 <xsl:value-of select="wp:ProgramSubType"/>
5348 </xsl:attribute>
5349 <xsl:attribute name="revdate">
5350 <xsl:value-of select="wp:RevisionDate"/>
5351 </xsl:attribute>
5352 <xsl:attribute name="revno">
5353 <xsl:value-of select="wp:Version"/>
5354 </xsl:attribute>
5355 <xsl:attribute name="releasedate">
5356 <xsl:value-of select="wp:ReleaseDate"/>
5357 </xsl:attribute>
5358 <xsl:attribute name="duecounter">
5359 <xsl:value-of select=''concat(wp:DueCounterValue," ",wp:UOM)''/>
5360 </xsl:attribute>
5361 <xsl:attribute name="accompcounter">
5362 <xsl:value-of select=''concat(wp:LastAccomplishmentValue," ",wp:UOM)''/>
5363 </xsl:attribute>
5364 <xsl:attribute name="intercounter">
5365 <xsl:value-of select=''concat(wp:IntervalValue," ",wp:UOM)''/>
5366 </xsl:attribute>
5367 <xsl:for-each select="wp:ChildMR">
5368 <childMR>
5369 <xsl:attribute name="id">
5370 <xsl:value-of select=''concat("MR-",wp:UnitEffectivityId)''/>
5371 </xsl:attribute>
5372 <xsl:attribute name="mrtitle">
5373 <xsl:value-of select="wp:Title"/>
5374 </xsl:attribute>
5375 </childMR>
5376 </xsl:for-each>';
5377 l_xsl_part3 := '<xsl:for-each select="wp:job_card">
5378 <job_card>
5379 <xsl:attribute name="id">
5380 <xsl:value-of select=''concat("WO-",wp:WorkorderId)''/>
5381 </xsl:attribute>
5382 <xsl:attribute name="revdate">
5383 <xsl:value-of select="../../wp:wpmeta/wp:WorkPackageGenerationDate"/>
5384 </xsl:attribute>
5385 <xsl:attribute name="user">
5386 <xsl:value-of select="../../wp:wpmeta/wp:User"/>
5387 </xsl:attribute>
5388 <xsl:attribute name="issuedate">
5389 <xsl:value-of select="../../wp:wpmeta/wp:WorkPackageGenerationDate"/>
5390 </xsl:attribute>
5391 <jcmeta>
5392 <workorderid>
5393 <xsl:attribute name="value">
5394 <xsl:value-of select="wp:WorkorderNumber"/>
5395 </xsl:attribute>
5396 </workorderid>
5397 <originwo>
5398 <xsl:attribute name="value">
5399 <xsl:value-of select="wp:OriginatingWorkorder"/>
5400 </xsl:attribute>
5401 </originwo>
5402 <xsl:for-each select="wp:ItemCounters/wp:ItemCounter">
5403 <counter>
5404 <xsl:attribute name="name">
5405 <xsl:value-of select="wp:CounterName"/>
5406 </xsl:attribute>
5407 <xsl:attribute name="lastreading">
5408 <xsl:value-of select="wp:CurrentReading"/>
5409 </xsl:attribute>
5410 </counter>
5411 </xsl:for-each>
5412 <item>
5413 <xsl:attribute name="value">
5414 <xsl:value-of select="wp:ItemNumber"/>
5415 </xsl:attribute>
5416 </item>
5417 <sn>
5418 <xsl:attribute name="value">
5419 <xsl:value-of select="wp:SerialNumber"/>
5420 </xsl:attribute>
5421 </sn>
5422 <instance>
5423 <xsl:attribute name="value">
5424 <xsl:value-of select="wp:InstanceNumber"/>
5425 </xsl:attribute>
5426 </instance>
5427 <qty>
5428 <xsl:attribute name="value">
5429 <xsl:value-of select="wp:Quantity"/>
5430 </xsl:attribute>
5431 </qty>
5432 <position>
5433 <xsl:attribute name="value">
5434 <xsl:value-of select="wp:Position"/>
5435 </xsl:attribute>
5436 </position>
5437 <owner>
5438 <xsl:attribute name="value">
5439 <xsl:value-of select="wp:ItemOwner"/>
5440 </xsl:attribute>
5441 </owner>
5442 <unit>
5443 <xsl:attribute name="value">
5444 <xsl:value-of select="wp:UnitName"/>
5445 </xsl:attribute>
5446 </unit>
5447 <routeno>
5448 <xsl:attribute name="value">
5449 <xsl:value-of select="wp:Route/wp:RouteNumber"/>
5450 </xsl:attribute>
5451 </routeno>
5452 <desc>
5453 <xsl:attribute name="value">
5454 <xsl:value-of select="wp:Description"/>
5455 </xsl:attribute>
5456 </desc>
5457 <revdate>
5458 <xsl:attribute name="value">
5459 <xsl:value-of select="wp:Route/wp:RevisionDate"/>
5460 </xsl:attribute>
5461 </revdate>
5462 <revno>
5463 <xsl:attribute name="value">
5464 <xsl:value-of select="wp:Route/wp:Revision"/>
5465 </xsl:attribute>
5466 </revno>
5467 <nonroutine>
5468 <xsl:attribute name="value">
5469 <xsl:value-of select="wp:NonRoutineNumber"/>
5470 </xsl:attribute>
5471 </nonroutine>
5472 <resources>
5473 <xsl:for-each select="wp:ResourceRequirements/wp:ResourceRequirement">
5474 <resource>
5475 <xsl:attribute name="operseq">
5476 <xsl:value-of select="wp:OperationSequenceNumber"/>
5477 </xsl:attribute>
5478 <xsl:attribute name="resourcetype">
5479 <xsl:value-of select="wp:ResourceType"/>
5480 </xsl:attribute>
5481 <xsl:attribute name="resourceCode">
5482 <xsl:value-of select="wp:ResourceCode"/>
5483 </xsl:attribute>
5484 <xsl:attribute name="desc">
5485 <xsl:value-of select="wp:Description"/>
5486 </xsl:attribute>
5487 <xsl:attribute name="qty">
5488 <xsl:value-of select="wp:Quantity"/>
5489 </xsl:attribute>
5490 <DFF1>
5491 <xsl:attribute name="value">
5492 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute1"/>
5493 </xsl:attribute>
5494 </DFF1>
5495 <DFF2>
5496 <xsl:attribute name="value">
5497 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute2"/>
5498 </xsl:attribute>
5499 </DFF2>
5500 <DFF3>
5501 <xsl:attribute name="value">
5502 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute3"/>
5503 </xsl:attribute>
5504 </DFF3>
5505 <DFF4>
5506 <xsl:attribute name="value">
5507 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute4"/>
5508 </xsl:attribute>
5509 </DFF4>
5510 <DFF5>
5511 <xsl:attribute name="value">
5512 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute5"/>
5513 </xsl:attribute>
5514 </DFF5>
5515 <DFF6>
5516 <xsl:attribute name="value">
5517 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute6"/>
5518 </xsl:attribute>
5519 </DFF6>
5520 <DFF7>
5521 <xsl:attribute name="value">
5522 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute7"/>
5523 </xsl:attribute>
5524 </DFF7>
5525 <DFF8>
5526 <xsl:attribute name="value">
5527 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute8"/>
5528 </xsl:attribute>
5529 </DFF8>
5530 <DFF9>
5531 <xsl:attribute name="value">
5532 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute9"/>
5533 </xsl:attribute>
5534 </DFF9>
5535 <DFF10>
5536 <xsl:attribute name="value">
5537 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute10"/>
5538 </xsl:attribute>
5539 </DFF10>
5540 <DFF11>
5541 <xsl:attribute name="value">
5542 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute11"/>
5543 </xsl:attribute>
5544 </DFF11>
5545 <DFF12>
5546 <xsl:attribute name="value">
5547 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute12"/>
5548 </xsl:attribute>
5549 </DFF12>
5550 <DFF13>
5551 <xsl:attribute name="value">
5552 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute13"/>
5553 </xsl:attribute>
5554 </DFF13>
5555 <DFF14>
5556 <xsl:attribute name="value">
5557 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute14"/>
5558 </xsl:attribute>
5559 </DFF14>
5560 <DFF15>
5561 <xsl:attribute name="value">
5562 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute15"/>
5563 </xsl:attribute>
5564 </DFF15>
5565 </resource>
5566 </xsl:for-each>
5567 </resources>
5568 <tools>
5569 <xsl:for-each select="wp:Tools/wp:Tool">
5570 <tool>
5571 <xsl:attribute name="itemtype">
5572 <xsl:value-of select="wp:ItemType"/>
5573 </xsl:attribute>
5574 <xsl:attribute name="itemno">
5575 <xsl:value-of select="wp:Item"/>
5576 </xsl:attribute>
5577 <xsl:attribute name="desc">
5578 <xsl:value-of select="wp:Description"/>
5579 </xsl:attribute>
5580 <xsl:attribute name="qty">
5581 <xsl:value-of select="wp:Quantity"/>
5582 </xsl:attribute>
5583 </tool>
5584 </xsl:for-each>
5585 </tools>
5586 <materials>
5587 <xsl:for-each select="wp:MaterialRequirements/wp:MaterialRequirement">
5588 <material>
5589 <xsl:attribute name="operseq">
5590 <xsl:value-of select="wp:OperationSequenceNumber"/>
5591 </xsl:attribute>
5592 <xsl:attribute name="itemno">
5593 <xsl:value-of select="wp:ItemNumber"/>
5594 </xsl:attribute>
5595 <xsl:attribute name="desc">
5596 <xsl:value-of select="wp:ItemDescription"/>
5597 </xsl:attribute>
5598 <xsl:attribute name="itemgroup">
5599 <xsl:value-of select="wp:ItemGroup"/>
5600 </xsl:attribute>
5601 <xsl:attribute name="itemtype">
5602 <xsl:value-of select="wp:ItemType"/>
5603 </xsl:attribute>
5604 <xsl:attribute name="qty">
5605 <xsl:value-of select=''concat(wp:RequiredQuantity," ",wp:UOM)''/>
5606 </xsl:attribute>
5607 <xsl:attribute name="reqdate">
5608 <xsl:value-of select="wp:RequiredDate"/>
5609 </xsl:attribute>
5610 </material>
5611 </xsl:for-each>
5612 </materials>
5613 <QCP>
5614 <xsl:if test=''wp:IsQualityEnabled = "T"''>
5615 <table>
5616 <xsl:attribute name="id">
5617 <xsl:value-of select="wp:QaPlan/wp:PlanName"/>
5618 </xsl:attribute>
5619 <xsl:attribute name="cols">
5620 <xsl:value-of select="count(wp:QaPlan/wp:QualityPlanAttribute)"/>
5621 </xsl:attribute>
5622 <xsl:for-each select="wp:QaPlan/wp:QualityPlanAttribute">
5623 <columntitle>
5624 <name>
5625 <xsl:value-of select="wp:Prompt"/>
5626 </name>
5627 </columntitle>
5628 </xsl:for-each>
5629 <rows>
5630 <xsl:for-each select="wp:QaResults/wp:QualityResultRec">
5631 <row>
5632 <xsl:for-each select="wp:QualityPlanAttribute">
5633 <columnvalue>
5634 <xsl:value-of select="wp:AttributeValue"/>
5635 </columnvalue>
5636 </xsl:for-each>
5637 </row>
5638 </xsl:for-each>
5639 </rows>
5640 </table>
5641 </xsl:if>
5642 </QCP>
5643 <woOperations>
5644 <xsl:for-each select="wp:WoOperations/wp:WoOperation">
5645 <woOperation>
5646 <xsl:attribute name="operseq">
5647 <xsl:value-of select="wp:OperationSequenceNumber"/>
5648 </xsl:attribute>
5649 <xsl:attribute name="desc">
5650 <xsl:value-of select="wp:OperationDesc"/>
5651 </xsl:attribute>
5652 <QCP>
5653 <xsl:if test=''wp:IsQualityEnabled = "T"''>
5654 <table>
5655 <xsl:attribute name="id">
5656 <xsl:value-of select="wp:QaPlan/wp:PlanName"/>
5657 </xsl:attribute>
5658 <xsl:attribute name="cols">
5659 <xsl:value-of select="count(wp:QaPlan/wp:QualityPlanAttribute)"/>
5660 </xsl:attribute>
5661 <xsl:for-each select="wp:QaPlan/wp:QualityPlanAttribute">
5662 <columntitle>
5663 <name>
5664 <xsl:value-of select="wp:Prompt"/>
5665 </name>
5666 </columntitle>
5667 </xsl:for-each>
5668 <rows>
5669 <xsl:for-each select="wp:QaResults/wp:QualityResultRec">
5670 <row>
5671 <xsl:for-each select="wp:QualityPlanAttribute">
5672 <columnvalue>
5673 <xsl:value-of select="wp:AttributeValue"/>
5674 </columnvalue>
5675 </xsl:for-each>
5676 </row>
5677 </xsl:for-each>
5678 </rows>
5679 </table>
5680 </xsl:if>
5681 </QCP>
5682 </woOperation>
5683 </xsl:for-each>
5684 </woOperations>
5685 <releasedate>
5686 <xsl:attribute name="value">
5687 <xsl:value-of select="wp:ReleaseDate"/>
5688 </xsl:attribute>
5689 </releasedate>
5690 </jcmeta>';
5691 l_xsl_part4 := '<routes>
5692 <route>
5693 <xsl:attribute name="id">
5694 <xsl:value-of select="wp:Route/wp:RouteId"/>
5695 </xsl:attribute>
5696 <xsl:attribute name="ata">
5697 <xsl:value-of select="wp:ATACode"/>
5698 </xsl:attribute>
5699 <xsl:attribute name="type">
5700 <xsl:value-of select="wp:Route/wp:RouteType"/>
5701 </xsl:attribute>
5702 <xsl:attribute name="src">
5703 <xsl:value-of select="wp:Route/wp:EnigmaDocId"/>
5704 </xsl:attribute>
5705 <routemeta>
5706 <routeno>
5707 <xsl:attribute name="value">
5708 <xsl:value-of select="wp:Route/wp:RouteNumber"/>
5709 </xsl:attribute>
5710 </routeno>
5711 <title>
5712 <xsl:attribute name="value">
5713 <xsl:value-of select="wp:Route/wp:RouteTitle"/>
5714 </xsl:attribute>
5715 </title>
5716 <process>
5717 <xsl:attribute name="value">
5718 <xsl:value-of select="wp:Route/wp:Process"/>
5719 </xsl:attribute>
5720 </process>
5721 <model>
5722 <xsl:attribute name="value">
5723 <xsl:value-of select="wp:Route/wp:ModelCode"/>
5724 </xsl:attribute>
5725 </model>
5726 <layout>
5727 <xsl:attribute name="value">
5728 <xsl:value-of select="wp:Route/wp:JobCardType"/>
5729 </xsl:attribute>
5730 </layout>
5731 <zone>
5732 <xsl:attribute name="value">
5733 <xsl:value-of select="wp:Route/wp:Zone"/>
5734 </xsl:attribute>
5735 </zone>
5736 <xsl:for-each select="wp:Route/wp:AssociatedDocuments/wp:AssociatedDocument">
5737 <refdoc>
5738 <xsl:attribute name="docsubtype">
5739 <xsl:value-of select="wp:DocumentSubType"/>
5740 </xsl:attribute>
5741 <xsl:attribute name="docno">
5742 <xsl:value-of select="wp:DocumentNumber"/>
5743 </xsl:attribute>
5744 <xsl:attribute name="docrev">
5745 <xsl:value-of select="wp:RevisionNumber"/>
5746 </xsl:attribute>
5747 <xsl:attribute name="docata">
5748 <xsl:value-of select=''concat(wp:Chapter,"-",wp:Section,"-",wp:Subject)''/>
5749 </xsl:attribute>
5750 <xsl:attribute name="title">
5751 <xsl:value-of select="wp:DocumentTitle"/>
5752 </xsl:attribute>
5753 </refdoc>
5754 </xsl:for-each>
5755 <KFF1>
5756 <xsl:attribute name="value">
5757 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment1Desc"/>
5758 </xsl:attribute>
5759 </KFF1>
5760 <KFF2>
5761 <xsl:attribute name="value">
5762 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment2Desc"/>
5763 </xsl:attribute>
5764 </KFF2>
5765 <KFF3>
5766 <xsl:attribute name="value">
5767 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment3Desc"/>
5768 </xsl:attribute>
5769 </KFF3>
5770 <KFF4>
5771 <xsl:attribute name="value">
5772 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment4Desc"/>
5773 </xsl:attribute>
5774 </KFF4>
5775 <KFF5>
5776 <xsl:attribute name="value">
5777 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment5Desc"/>
5778 </xsl:attribute>
5779 </KFF5>
5780 <KFF6>
5781 <xsl:attribute name="value">
5782 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment6Desc"/>
5783 </xsl:attribute>
5784 </KFF6>
5785 <KFF7>
5786 <xsl:attribute name="value">
5787 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment7Desc"/>
5788 </xsl:attribute>
5789 </KFF7>
5790 <KFF8>
5791 <xsl:attribute name="value">
5792 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment8Desc"/>
5793 </xsl:attribute>
5794 </KFF8>
5795 <KFF9>
5796 <xsl:attribute name="value">
5797 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment9Desc"/>
5798 </xsl:attribute>
5799 </KFF9>
5800 <KFF10>
5801 <xsl:attribute name="value">
5802 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment10Desc"/>
5803 </xsl:attribute>
5804 </KFF10>
5805 <KFF11>
5806 <xsl:attribute name="value">
5807 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment11Desc"/>
5808 </xsl:attribute>
5809 </KFF11>
5810 <KFF12>
5811 <xsl:attribute name="value">
5812 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment12Desc"/>
5813 </xsl:attribute>
5814 </KFF12>
5815 <KFF13>
5816 <xsl:attribute name="value">
5817 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment13Desc"/>
5818 </xsl:attribute>
5819 </KFF13>
5820 <KFF14>
5821 <xsl:attribute name="value">
5822 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment14Desc"/>
5823 </xsl:attribute>
5824 </KFF14>
5825 <KFF15>
5826 <xsl:attribute name="value">
5827 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment15Desc"/>
5828 </xsl:attribute>
5829 </KFF15>
5830 <DFF1>
5831 <xsl:attribute name="value">
5832 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute1"/>
5833 </xsl:attribute>
5834 </DFF1>
5835 <DFF2>
5836 <xsl:attribute name="value">
5837 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute2"/>
5838 </xsl:attribute>
5839 </DFF2>
5840 <DFF3>
5841 <xsl:attribute name="value">
5842 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute3"/>
5843 </xsl:attribute>
5844 </DFF3>
5845 <DFF4>
5846 <xsl:attribute name="value">
5847 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute4"/>
5848 </xsl:attribute>
5849 </DFF4>
5850 <DFF5>
5851 <xsl:attribute name="value">
5852 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute5"/>
5853 </xsl:attribute>
5854 </DFF5>
5855 <DFF6>
5856 <xsl:attribute name="value">
5857 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute6"/>
5858 </xsl:attribute>
5859 </DFF6>
5860 <DFF7>
5861 <xsl:attribute name="value">
5862 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute7"/>
5863 </xsl:attribute>
5864 </DFF7>
5865 <DFF8>
5866 <xsl:attribute name="value">
5867 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute8"/>
5868 </xsl:attribute>
5869 </DFF8>
5870 <DFF9>
5871 <xsl:attribute name="value">
5872 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute9"/>
5873 </xsl:attribute>
5874 </DFF9>
5875 <DFF10>
5876 <xsl:attribute name="value">
5877 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute10"/>
5878 </xsl:attribute>
5879 </DFF10>
5880 <DFF11>
5881 <xsl:attribute name="value">
5882 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute11"/>
5883 </xsl:attribute>
5884 </DFF11>
5885 <DFF12>
5886 <xsl:attribute name="value">
5887 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute12"/>
5888 </xsl:attribute>
5889 </DFF12>
5890 <DFF13>
5891 <xsl:attribute name="value">
5892 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute13"/>
5893 </xsl:attribute>
5894 </DFF13>
5895 <DFF14>
5896 <xsl:attribute name="value">
5897 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute14"/>
5898 </xsl:attribute>
5899 </DFF14>
5900 <DFF15>
5901 <xsl:attribute name="value">
5902 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute15"/>
5903 </xsl:attribute>
5904 </DFF15>
5905 <xsl:for-each select="wp:Route/wp:Operations/wp:Operation">
5906 <operation>
5907 <xsl:attribute name="operationid">
5908 <xsl:value-of select="wp:OperationCode"/>
5909 </xsl:attribute>
5910 <xsl:attribute name="src">
5911 <xsl:value-of select="wp:EnigmaDocId"/>
5912 </xsl:attribute>
5913 <operseq>
5914 <xsl:attribute name="value">
5915 <xsl:value-of select="wp:OperationSequenceNumber"/>
5916 </xsl:attribute>
5917 </operseq>
5918 <operno>
5919 <xsl:attribute name="value">
5920 <xsl:value-of select="wp:OperationCode"/>
5921 </xsl:attribute>
5922 </operno>
5923 <xsl:for-each select="wp:AssociatedDocuments/wp:AssociatedDocument">
5924 <refdoc>
5925 <xsl:attribute name="docsubtype">
5926 <xsl:value-of select="wp:DocumentSubType"/>
5927 </xsl:attribute>
5928 <xsl:attribute name="docno">
5929 <xsl:value-of select="wp:DocumentNumber"/>
5930 </xsl:attribute>
5931 <xsl:attribute name="docrev">
5932 <xsl:value-of select="wp:RevisionNumber"/>
5933 </xsl:attribute>
5934 <xsl:attribute name="docata">
5935 <xsl:value-of select=''concat(wp:Chapter,"-",wp:Section,"-",wp:Subject)''/>
5936 </xsl:attribute>
5937 <xsl:attribute name="title">
5938 <xsl:value-of select="wp:DocumentTitle"/>
5939 </xsl:attribute>
5940 </refdoc>
5941 </xsl:for-each>
5942 <DFF1>
5943 <xsl:attribute name="value">
5944 <xsl:value-of select="wp:OperationDFFs/wp:Attribute1"/>
5945 </xsl:attribute>
5946 </DFF1>
5947 <DFF2>
5948 <xsl:attribute name="value">
5949 <xsl:value-of select="wp:OperationDFFs/wp:Attribute2"/>
5950 </xsl:attribute>
5951 </DFF2>
5952 <DFF3>
5953 <xsl:attribute name="value">
5954 <xsl:value-of select="wp:OperationDFFs/wp:Attribute3"/>
5955 </xsl:attribute>
5956 </DFF3>
5957 <DFF4>
5958 <xsl:attribute name="value">
5959 <xsl:value-of select="wp:OperationDFFs/wp:Attribute4"/>
5960 </xsl:attribute>
5961 </DFF4>
5962 <DFF5>
5963 <xsl:attribute name="value">
5964 <xsl:value-of select="wp:OperationDFFs/wp:Attribute5"/>
5965 </xsl:attribute>
5966 </DFF5>
5967 <DFF6>
5968 <xsl:attribute name="value">
5969 <xsl:value-of select="wp:OperationDFFs/wp:Attribute6"/>
5970 </xsl:attribute>
5971 </DFF6>
5972 <DFF7>
5973 <xsl:attribute name="value">
5974 <xsl:value-of select="wp:OperationDFFs/wp:Attribute7"/>
5975 </xsl:attribute>
5976 </DFF7>
5977 <DFF8>
5978 <xsl:attribute name="value">
5979 <xsl:value-of select="wp:OperationDFFs/wp:Attribute8"/>
5980 </xsl:attribute>
5981 </DFF8>
5982 <DFF9>
5983 <xsl:attribute name="value">
5984 <xsl:value-of select="wp:OperationDFFs/wp:Attribute9"/>
5985 </xsl:attribute>
5986 </DFF9>
5987 <DFF10>
5988 <xsl:attribute name="value">
5989 <xsl:value-of select="wp:OperationDFFs/wp:Attribute10"/>
5990 </xsl:attribute>
5991 </DFF10>
5992 <DFF11>
5993 <xsl:attribute name="value">
5994 <xsl:value-of select="wp:OperationDFFs/wp:Attribute11"/>
5995 </xsl:attribute>
5996 </DFF11>
5997 <DFF12>
5998 <xsl:attribute name="value">
5999 <xsl:value-of select="wp:OperationDFFs/wp:Attribute12"/>
6000 </xsl:attribute>
6001 </DFF12>
6002 <DFF13>
6003 <xsl:attribute name="value">
6004 <xsl:value-of select="wp:OperationDFFs/wp:Attribute13"/>
6005 </xsl:attribute>
6006 </DFF13>
6007 <DFF14>
6008 <xsl:attribute name="value">
6009 <xsl:value-of select="wp:OperationDFFs/wp:Attribute14"/>
6010 </xsl:attribute>
6011 </DFF14>
6012 <DFF15>
6013 <xsl:attribute name="value">
6014 <xsl:value-of select="wp:OperationDFFs/wp:Attribute15"/>
6015 </xsl:attribute>
6016 </DFF15>
6017 <title>
6018 <xsl:attribute name="value">
6019 <xsl:value-of select="wp:OpDescription"/>
6020 </xsl:attribute>
6021 </title>
6022 <revno>
6023 <xsl:attribute name="value">
6024 <xsl:value-of select="wp:Revision"/>
6025 </xsl:attribute>
6026 </revno>
6027 <revdate>
6028 <xsl:attribute name="value">
6029 <xsl:value-of select="wp:RevisionDate"/>
6030 </xsl:attribute>
6031 </revdate>
6032 </operation>
6033 </xsl:for-each>
6034 </routemeta>
6035 </route>
6036 </routes>
6037 </job_card>
6038 </xsl:for-each>
6039 <xsl:for-each select="wp:AssociatedDocuments/wp:AssociatedDocument">
6040 <docrecord>
6041 <docsubtype>
6042 <xsl:attribute name="value">
6043 <xsl:value-of select="wp:DocumentSubType"/>
6044 </xsl:attribute>
6045 </docsubtype>
6046 <docno>
6047 <xsl:attribute name="value">
6048 <xsl:value-of select="wp:DocumentNumber"/>
6049 </xsl:attribute>
6050 </docno>
6051 </docrecord>
6052 </xsl:for-each>
6053 </mrpackage>
6054 </xsl:for-each>';
6055 l_xsl_part5 := '<xsl:for-each select="/wp:WorkPackage/wp:NrPackage">
6056 <nrpackage>
6057 <xsl:attribute name="id">
6058 <xsl:value-of select=''concat("NR-",wp:UnitEffectivityId)''/>
6059 </xsl:attribute>
6060 <xsl:attribute name="nrtitle">
6061 <xsl:value-of select="wp:Title"/>
6062 </xsl:attribute>
6063 <xsl:attribute name="nrtype">
6064 <xsl:value-of select="wp:NonRoutineType"/>
6065 </xsl:attribute>
6066 <xsl:attribute name="flightNumber">
6067 <xsl:value-of select="wp:FlightNumber"/>
6068 </xsl:attribute>
6069 <xsl:attribute name="logseries">
6070 <xsl:value-of select="wp:LogSeries"/>
6071 </xsl:attribute>
6072 <xsl:attribute name="lognumber">
6073 <xsl:value-of select="wp:LogNumber"/>
6074 </xsl:attribute>
6075 <xsl:attribute name="item">
6076 <xsl:value-of select="wp:Item"/>
6077 </xsl:attribute>
6078 <xsl:attribute name="serial">
6079 <xsl:value-of select="wp:SerialNumber"/>
6080 </xsl:attribute>
6081 <xsl:attribute name="status">
6082 <xsl:value-of select="wp:Status"/>
6083 </xsl:attribute>
6084 <xsl:attribute name="requestdate">
6085 <xsl:value-of select="wp:RequestDate"/>
6086 </xsl:attribute>
6087 <xsl:attribute name="incidentdate">
6088 <xsl:value-of select="wp:IncidentDate"/>
6089 </xsl:attribute>
6090 <xsl:attribute name="releasedate">
6091 <xsl:value-of select="wp:ReleaseDate"/>
6092 </xsl:attribute>
6093 <xsl:attribute name="workorderno">
6094 <xsl:value-of select="wp:WorkorderNo"/>
6095 </xsl:attribute>
6096 <xsl:attribute name="customer">
6097 <xsl:value-of select="wp:Customer"/>
6098 </xsl:attribute>
6099 <xsl:attribute name="contact">
6100 <xsl:value-of select="wp:Contact"/>
6101 </xsl:attribute>
6102 <xsl:attribute name="problemcode">
6103 <xsl:value-of select="wp:ProblemCode"/>
6104 </xsl:attribute>
6105 <xsl:attribute name="problemsummary">
6106 <xsl:value-of select="wp:ProblemSummary"/>
6107 </xsl:attribute>
6108 <xsl:attribute name="severity">
6109 <xsl:value-of select="wp:Severity"/>
6110 </xsl:attribute>
6111 <xsl:attribute name="resolvebydate">
6112 <xsl:value-of select="wp:ResolveByDate"/>
6113 </xsl:attribute>
6114 <xsl:attribute name="resolutioncode">
6115 <xsl:value-of select="wp:ResolutionCode"/>
6116 </xsl:attribute>
6117 <xsl:attribute name="positionATA">
6118 <xsl:value-of select="wp:PositionATA"/>
6119 </xsl:attribute>
6120 <xsl:attribute name="ataDesc">
6121 <xsl:value-of select="wp:AtaDesc"/>
6122 </xsl:attribute>
6123 <xsl:attribute name="melcdltype">
6124 <xsl:value-of select="wp:MelCdlType"/>
6125 </xsl:attribute>
6126 <xsl:attribute name="melcdlstatus">
6127 <xsl:value-of select="wp:MelCdlStatus"/>
6128 </xsl:attribute>
6129 <xsl:attribute name="pcnode">
6130 <xsl:value-of select="wp:PcNode"/>
6131 </xsl:attribute>
6132 <xsl:attribute name="revno">
6133 <xsl:value-of select="wp:RevNo"/>
6134 </xsl:attribute>
6135 <xsl:attribute name="repaircategory">
6136 <xsl:value-of select="wp:RepairCategory"/>
6137 </xsl:attribute>
6138 <xsl:attribute name="duedate">
6139 <xsl:value-of select="wp:DueDate"/>
6140 </xsl:attribute>
6141 <xsl:attribute name="repairtime">
6142 <xsl:value-of select="wp:RepairTime"/>
6143 </xsl:attribute>
6144 <xsl:attribute name="remarks">
6145 <xsl:value-of select="wp:Remarks"/>
6146 </xsl:attribute>
6147 <xsl:for-each select="wp:ChildMR">
6148 <childMR>
6149 <xsl:attribute name="id">
6150 <xsl:value-of select=''concat("MR-",wp:UnitEffectivityId)''/>
6151 </xsl:attribute>
6152 <xsl:attribute name="mrtitle">
6153 <xsl:value-of select="wp:Title"/>
6154 </xsl:attribute>
6155 </childMR>
6156 </xsl:for-each>';
6157 l_xsl_part6 := '<xsl:for-each select="wp:job_card">
6158 <job_card>
6159 <xsl:attribute name="id">
6160 <xsl:value-of select=''concat("WO","-",wp:WorkorderId)''/>
6161 </xsl:attribute>
6162 <xsl:attribute name="revdate">
6163 <xsl:value-of select="../../wp:wpmeta/wp:WorkPackageGenerationDate"/>
6164 </xsl:attribute>
6165 <xsl:attribute name="user">
6166 <xsl:value-of select="../../wp:wpmeta/wp:User"/>
6167 </xsl:attribute>
6168 <xsl:attribute name="issuedate">
6169 <xsl:value-of select="../../wp:wpmeta/wp:WorkPackageGenerationDate"/>
6170 </xsl:attribute>
6171 <jcmeta>
6172 <workorderid>
6173 <xsl:attribute name="value">
6174 <xsl:value-of select="wp:WorkorderNumber"/>
6175 </xsl:attribute>
6176 </workorderid>
6177 <originwo>
6178 <xsl:attribute name="value">
6179 <xsl:value-of select="wp:OriginatingWorkorder"/>
6180 </xsl:attribute>
6181 </originwo>
6182 <xsl:for-each select="wp:ItemCounters/wp:ItemCounter">
6183 <counter>
6184 <xsl:attribute name="name">
6185 <xsl:value-of select="wp:CounterName"/>
6186 </xsl:attribute>
6187 <xsl:attribute name="lastreading">
6188 <xsl:value-of select="wp:CurrentReading"/>
6189 </xsl:attribute>
6190 </counter>
6191 </xsl:for-each>
6192 <item>
6193 <xsl:attribute name="value">
6194 <xsl:value-of select="wp:ItemNumber"/>
6195 </xsl:attribute>
6196 </item>
6197 <sn>
6198 <xsl:attribute name="value">
6199 <xsl:value-of select="wp:SerialNumber"/>
6200 </xsl:attribute>
6201 </sn>
6202 <instance>
6203 <xsl:attribute name="value">
6204 <xsl:value-of select="wp:InstanceNumber"/>
6205 </xsl:attribute>
6206 </instance>
6207 <qty>
6208 <xsl:attribute name="value">
6209 <xsl:value-of select="wp:Quantity"/>
6210 </xsl:attribute>
6211 </qty>
6212 <position>
6213 <xsl:attribute name="value">
6214 <xsl:value-of select="wp:Position"/>
6215 </xsl:attribute>
6216 </position>
6217 <owner>
6218 <xsl:attribute name="value">
6219 <xsl:value-of select="wp:ItemOwner"/>
6220 </xsl:attribute>
6221 </owner>
6222 <unit>
6223 <xsl:attribute name="value">
6224 <xsl:value-of select="wp:UnitName"/>
6225 </xsl:attribute>
6226 </unit>
6227 <routeno>
6228 <xsl:attribute name="value">
6229 <xsl:value-of select="wp:Route/wp:RouteNumber"/>
6230 </xsl:attribute>
6231 </routeno>
6232 <desc>
6233 <xsl:attribute name="value">
6234 <xsl:value-of select="wp:Description"/>
6235 </xsl:attribute>
6236 </desc>
6237 <revdate>
6238 <xsl:attribute name="value">
6239 <xsl:value-of select="wp:Route/wp:RevisionDate"/>
6240 </xsl:attribute>
6241 </revdate>
6242 <revno>
6243 <xsl:attribute name="value">
6244 <xsl:value-of select="wp:Route/wp:Revision"/>
6245 </xsl:attribute>
6246 </revno>
6247 <nonroutine>
6248 <xsl:attribute name="value">
6249 <xsl:value-of select="wp:NonRoutineNumber"/>
6250 </xsl:attribute>
6251 </nonroutine>
6252 <resources>
6253 <xsl:for-each select="wp:ResourceRequirements/wp:ResourceRequirement">
6254 <resource>
6255 <xsl:attribute name="operseq">
6256 <xsl:value-of select="wp:OperationSequenceNumber"/>
6257 </xsl:attribute>
6258 <xsl:attribute name="resourcetype">
6259 <xsl:value-of select="wp:ResourceType"/>
6260 </xsl:attribute>
6261 <xsl:attribute name="resourceCode">
6262 <xsl:value-of select="wp:ResourceCode"/>
6263 </xsl:attribute>
6264 <xsl:attribute name="desc">
6265 <xsl:value-of select="wp:Description"/>
6266 </xsl:attribute>
6267 <xsl:attribute name="qty">
6268 <xsl:value-of select="wp:Quantity"/>
6269 </xsl:attribute>
6270 <DFF1>
6271 <xsl:attribute name="value">
6272 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute1"/>
6273 </xsl:attribute>
6274 </DFF1>
6275 <DFF2>
6276 <xsl:attribute name="value">
6277 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute2"/>
6278 </xsl:attribute>
6279 </DFF2>
6280 <DFF3>
6281 <xsl:attribute name="value">
6282 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute3"/>
6283 </xsl:attribute>
6284 </DFF3>
6285 <DFF4>
6286 <xsl:attribute name="value">
6287 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute4"/>
6288 </xsl:attribute>
6289 </DFF4>
6290 <DFF5>
6291 <xsl:attribute name="value">
6292 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute5"/>
6293 </xsl:attribute>
6294 </DFF5>
6295 <DFF6>
6296 <xsl:attribute name="value">
6297 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute6"/>
6298 </xsl:attribute>
6299 </DFF6>
6300 <DFF7>
6301 <xsl:attribute name="value">
6302 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute7"/>
6303 </xsl:attribute>
6304 </DFF7>
6305 <DFF8>
6306 <xsl:attribute name="value">
6307 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute8"/>
6308 </xsl:attribute>
6309 </DFF8>
6310 <DFF9>
6311 <xsl:attribute name="value">
6312 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute9"/>
6313 </xsl:attribute>
6314 </DFF9>
6315 <DFF10>
6316 <xsl:attribute name="value">
6317 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute10"/>
6318 </xsl:attribute>
6319 </DFF10>
6320 <DFF11>
6321 <xsl:attribute name="value">
6322 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute11"/>
6323 </xsl:attribute>
6324 </DFF11>
6325 <DFF12>
6326 <xsl:attribute name="value">
6327 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute12"/>
6328 </xsl:attribute>
6329 </DFF12>
6330 <DFF13>
6331 <xsl:attribute name="value">
6332 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute13"/>
6333 </xsl:attribute>
6334 </DFF13>
6335 <DFF14>
6336 <xsl:attribute name="value">
6337 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute14"/>
6338 </xsl:attribute>
6339 </DFF14>
6340 <DFF15>
6341 <xsl:attribute name="value">
6342 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute15"/>
6343 </xsl:attribute>
6344 </DFF15>
6345 </resource>
6346 </xsl:for-each>
6347 </resources>
6348 <tools>
6349 <xsl:for-each select="wp:Tools/wp:Tool">
6350 <tool>
6351 <xsl:attribute name="itemtype">
6352 <xsl:value-of select="wp:ItemType"/>
6353 </xsl:attribute>
6354 <xsl:attribute name="itemno">
6355 <xsl:value-of select="wp:Item"/>
6356 </xsl:attribute>
6357 <xsl:attribute name="desc">
6358 <xsl:value-of select="wp:Description"/>
6359 </xsl:attribute>
6360 <xsl:attribute name="qty">
6361 <xsl:value-of select="wp:Quantity"/>
6362 </xsl:attribute>
6363 </tool>
6364 </xsl:for-each>
6365 </tools>
6366 <materials>
6367 <xsl:for-each select="wp:MaterialRequirements/wp:MaterialRequirement">
6368 <material>
6369 <xsl:attribute name="operseq">
6370 <xsl:value-of select="wp:OperationSequenceNumber"/>
6371 </xsl:attribute>
6372 <xsl:attribute name="itemno">
6373 <xsl:value-of select="wp:ItemNumber"/>
6374 </xsl:attribute>
6375 <xsl:attribute name="desc">
6376 <xsl:value-of select="wp:ItemDescription"/>
6377 </xsl:attribute>
6378 <xsl:attribute name="itemgroup">
6379 <xsl:value-of select="wp:ItemGroup"/>
6380 </xsl:attribute>
6381 <xsl:attribute name="itemtype">
6382 <xsl:value-of select="wp:ItemType"/>
6383 </xsl:attribute>
6384 <xsl:attribute name="qty">
6385 <xsl:value-of select=''concat(wp:RequiredQuantity," ",wp:UOM)''/>
6386 </xsl:attribute>
6387 <xsl:attribute name="reqdate">
6388 <xsl:value-of select="wp:RequiredDate"/>
6389 </xsl:attribute>
6390 </material>
6391 </xsl:for-each>
6392 </materials>
6393 <QCP>
6394 <xsl:if test=''wp:IsQualityEnabled = "T"''>
6395 <table>
6396 <xsl:attribute name="id">
6397 <xsl:value-of select="wp:QaPlan/wp:PlanName"/>
6398 </xsl:attribute>
6399 <xsl:attribute name="cols">
6400 <xsl:value-of select="count(wp:QaPlan/wp:QualityPlanAttribute)"/>
6401 </xsl:attribute>
6402 <xsl:for-each select="wp:QaPlan/wp:QualityPlanAttribute">
6403 <columntitle>
6404 <name>
6405 <xsl:value-of select="wp:Prompt"/>
6406 </name>
6407 </columntitle>
6408 </xsl:for-each>
6409 <rows>
6410 <xsl:for-each select="wp:QaResults/wp:QualityResultRec">
6411 <row>
6412 <xsl:for-each select="wp:QualityPlanAttribute">
6413 <columnvalue>
6414 <xsl:value-of select="wp:AttributeValue"/>
6415 </columnvalue>
6416 </xsl:for-each>
6417 </row>
6418 </xsl:for-each>
6419 </rows>
6420 </table>
6421 </xsl:if>
6422 </QCP>
6423 <woOperations>
6424 <xsl:for-each select="wp:WoOperations/wp:WoOperation">
6425 <woOperation>
6426 <xsl:attribute name="operseq">
6427 <xsl:value-of select="wp:OperationSequenceNumber"/>
6428 </xsl:attribute>
6429 <xsl:attribute name="desc">
6430 <xsl:value-of select="wp:OperationDesc"/>
6431 </xsl:attribute>
6432 <QCP>
6433 <xsl:if test=''wp:IsQualityEnabled = "T"''>
6434 <table>
6435 <xsl:attribute name="id">
6436 <xsl:value-of select="wp:QaPlan/wp:PlanName"/>
6437 </xsl:attribute>
6438 <xsl:attribute name="cols">
6439 <xsl:value-of select="count(wp:QaPlan/wp:QualityPlanAttribute)"/>
6440 </xsl:attribute>
6441 <xsl:for-each select="wp:QaPlan/wp:QualityPlanAttribute">
6442 <columntitle>
6443 <name>
6444 <xsl:value-of select="wp:Prompt"/>
6445 </name>
6446 </columntitle>
6447 </xsl:for-each>
6448 <rows>
6449 <xsl:for-each select="wp:QaResults/wp:QualityResultRec">
6450 <row>
6451 <xsl:for-each select="wp:QualityPlanAttribute">
6452 <columnvalue>
6453 <xsl:value-of select="wp:AttributeValue"/>
6454 </columnvalue>
6455 </xsl:for-each>
6456 </row>
6457 </xsl:for-each>
6458 </rows>
6459 </table>
6460 </xsl:if>
6461 </QCP>
6462 </woOperation>
6463 </xsl:for-each>
6464 </woOperations>
6465 <releasedate>
6466 <xsl:attribute name="value">
6467 <xsl:value-of select="wp:ReleaseDate"/>
6468 </xsl:attribute>
6469 </releasedate>
6470 </jcmeta>';
6471 l_xsl_part7 := '<routes>
6472 <route>
6473 <xsl:attribute name="id">
6474 <xsl:value-of select="wp:Route/wp:RouteId"/>
6475 </xsl:attribute>
6476 <xsl:attribute name="ata">
6477 <xsl:value-of select="wp:ATACode"/>
6478 </xsl:attribute>
6479 <xsl:attribute name="type">
6480 <xsl:value-of select="wp:Route/wp:RouteType"/>
6481 </xsl:attribute>
6482 <xsl:attribute name="src">
6483 <xsl:value-of select="wp:Route/wp:EnigmaDocId"/>
6484 </xsl:attribute>
6485 <routemeta>
6486 <routeno>
6487 <xsl:attribute name="value">
6488 <xsl:value-of select="wp:Route/wp:RouteNumber"/>
6489 </xsl:attribute>
6490 </routeno>
6491 <title>
6492 <xsl:attribute name="value">
6493 <xsl:value-of select="wp:Route/wp:RouteTitle"/>
6494 </xsl:attribute>
6495 </title>
6496 <process>
6497 <xsl:attribute name="value">
6498 <xsl:value-of select="wp:Route/wp:Process"/>
6499 </xsl:attribute>
6500 </process>
6501 <model>
6502 <xsl:attribute name="value">
6503 <xsl:value-of select="wp:Route/wp:ModelCode"/>
6504 </xsl:attribute>
6505 </model>
6506 <layout>
6507 <xsl:attribute name="value">
6508 <xsl:value-of select="wp:Route/wp:JobCardType"/>
6509 </xsl:attribute>
6510 </layout>
6511 <zone>
6512 <xsl:attribute name="value">
6513 <xsl:value-of select="wp:Route/wp:Zone"/>
6514 </xsl:attribute>
6515 </zone>
6516 <xsl:for-each select="wp:Route/wp:AssociatedDocuments/wp:AssociatedDocument">
6517 <refdoc>
6518 <xsl:attribute name="docsubtype">
6519 <xsl:value-of select="wp:DocumentSubType"/>
6520 </xsl:attribute>
6521 <xsl:attribute name="docno">
6522 <xsl:value-of select="wp:DocumentNumber"/>
6523 </xsl:attribute>
6524 <xsl:attribute name="docrev">
6525 <xsl:value-of select="wp:RevisionNumber"/>
6526 </xsl:attribute>
6527 <xsl:attribute name="docata">
6528 <xsl:value-of select=''concat(wp:Chapter,"-",wp:Section,"-",wp:Subject)''/>
6529 </xsl:attribute>
6530 <xsl:attribute name="title">
6531 <xsl:value-of select="wp:DocumentTitle"/>
6532 </xsl:attribute>
6533 </refdoc>
6534 </xsl:for-each>
6535 <KFF1>
6536 <xsl:attribute name="value">
6537 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment1Desc"/>
6538 </xsl:attribute>
6539 </KFF1>
6540 <KFF2>
6541 <xsl:attribute name="value">
6542 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment2Desc"/>
6543 </xsl:attribute>
6544 </KFF2>
6545 <KFF3>
6546 <xsl:attribute name="value">
6547 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment3Desc"/>
6548 </xsl:attribute>
6549 </KFF3>
6550 <KFF4>
6551 <xsl:attribute name="value">
6552 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment4Desc"/>
6553 </xsl:attribute>
6554 </KFF4>
6555 <KFF5>
6556 <xsl:attribute name="value">
6557 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment5Desc"/>
6558 </xsl:attribute>
6559 </KFF5>
6560 <KFF6>
6561 <xsl:attribute name="value">
6562 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment6Desc"/>
6563 </xsl:attribute>
6564 </KFF6>
6565 <KFF7>
6566 <xsl:attribute name="value">
6567 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment7Desc"/>
6568 </xsl:attribute>
6569 </KFF7>
6570 <KFF8>
6571 <xsl:attribute name="value">
6572 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment8Desc"/>
6573 </xsl:attribute>
6574 </KFF8>
6575 <KFF9>
6576 <xsl:attribute name="value">
6577 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment9Desc"/>
6578 </xsl:attribute>
6579 </KFF9>
6580 <KFF10>
6581 <xsl:attribute name="value">
6582 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment10Desc"/>
6583 </xsl:attribute>
6584 </KFF10>
6585 <KFF11>
6586 <xsl:attribute name="value">
6587 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment11Desc"/>
6588 </xsl:attribute>
6589 </KFF11>
6590 <KFF12>
6591 <xsl:attribute name="value">
6592 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment12Desc"/>
6593 </xsl:attribute>
6594 </KFF12>
6595 <KFF13>
6596 <xsl:attribute name="value">
6597 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment13Desc"/>
6598 </xsl:attribute>
6599 </KFF13>
6600 <KFF14>
6601 <xsl:attribute name="value">
6602 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment14Desc"/>
6603 </xsl:attribute>
6604 </KFF14>
6605 <KFF15>
6606 <xsl:attribute name="value">
6607 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment15Desc"/>
6608 </xsl:attribute>
6609 </KFF15>
6610 <DFF1>
6611 <xsl:attribute name="value">
6612 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute1"/>
6613 </xsl:attribute>
6614 </DFF1>
6615 <DFF2>
6616 <xsl:attribute name="value">
6617 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute2"/>
6618 </xsl:attribute>
6619 </DFF2>
6620 <DFF3>
6621 <xsl:attribute name="value">
6622 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute3"/>
6623 </xsl:attribute>
6624 </DFF3>
6625 <DFF4>
6626 <xsl:attribute name="value">
6627 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute4"/>
6628 </xsl:attribute>
6629 </DFF4>
6630 <DFF5>
6631 <xsl:attribute name="value">
6632 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute5"/>
6633 </xsl:attribute>
6634 </DFF5>
6635 <DFF6>
6636 <xsl:attribute name="value">
6637 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute6"/>
6638 </xsl:attribute>
6639 </DFF6>
6640 <DFF7>
6641 <xsl:attribute name="value">
6642 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute7"/>
6643 </xsl:attribute>
6644 </DFF7>
6645 <DFF8>
6646 <xsl:attribute name="value">
6647 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute8"/>
6648 </xsl:attribute>
6649 </DFF8>
6650 <DFF9>
6651 <xsl:attribute name="value">
6652 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute9"/>
6653 </xsl:attribute>
6654 </DFF9>
6655 <DFF10>
6656 <xsl:attribute name="value">
6657 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute10"/>
6658 </xsl:attribute>
6659 </DFF10>
6660 <DFF11>
6661 <xsl:attribute name="value">
6662 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute11"/>
6663 </xsl:attribute>
6664 </DFF11>
6665 <DFF12>
6666 <xsl:attribute name="value">
6667 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute12"/>
6668 </xsl:attribute>
6669 </DFF12>
6670 <DFF13>
6671 <xsl:attribute name="value">
6672 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute13"/>
6673 </xsl:attribute>
6674 </DFF13>
6675 <DFF14>
6676 <xsl:attribute name="value">
6677 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute14"/>
6678 </xsl:attribute>
6679 </DFF14>
6680 <DFF15>
6681 <xsl:attribute name="value">
6682 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute15"/>
6683 </xsl:attribute>
6684 </DFF15>
6685 <xsl:for-each select="wp:Route/wp:Operations/wp:Operation">
6686 <operation>
6687 <xsl:attribute name="operationid">
6688 <xsl:value-of select="wp:OperationCode"/>
6689 </xsl:attribute>
6690 <xsl:attribute name="src">
6691 <xsl:value-of select="wp:EnigmaDocId"/>
6692 </xsl:attribute>
6693 <operseq>
6694 <xsl:attribute name="value">
6695 <xsl:value-of select="wp:OperationSequenceNumber"/>
6696 </xsl:attribute>
6697 </operseq>
6698 <operno>
6699 <xsl:attribute name="value">
6700 <xsl:value-of select="wp:OperationCode"/>
6701 </xsl:attribute>
6702 </operno>
6703 <xsl:for-each select="wp:AssociatedDocuments/wp:AssociatedDocument">
6704 <refdoc>
6705 <xsl:attribute name="docsubtype">
6706 <xsl:value-of select="wp:DocumentSubType"/>
6707 </xsl:attribute>
6708 <xsl:attribute name="docno">
6709 <xsl:value-of select="wp:DocumentNumber"/>
6710 </xsl:attribute>
6711 <xsl:attribute name="docrev">
6712 <xsl:value-of select="wp:RevisionNumber"/>
6713 </xsl:attribute>
6714 <xsl:attribute name="docata">
6715 <xsl:value-of select=''concat(wp:Chapter,"-",wp:Section,"-",wp:Subject)''/>
6716 </xsl:attribute>
6717 <xsl:attribute name="title">
6718 <xsl:value-of select="wp:DocumentTitle"/>
6719 </xsl:attribute>
6720 </refdoc>
6721 </xsl:for-each>
6722 <DFF1>
6723 <xsl:attribute name="value">
6724 <xsl:value-of select="wp:OperationDFFs/wp:Attribute1"/>
6725 </xsl:attribute>
6726 </DFF1>
6727 <DFF2>
6728 <xsl:attribute name="value">
6729 <xsl:value-of select="wp:OperationDFFs/wp:Attribute2"/>
6730 </xsl:attribute>
6731 </DFF2>
6732 <DFF3>
6733 <xsl:attribute name="value">
6734 <xsl:value-of select="wp:OperationDFFs/wp:Attribute3"/>
6735 </xsl:attribute>
6736 </DFF3>
6737 <DFF4>
6738 <xsl:attribute name="value">
6739 <xsl:value-of select="wp:OperationDFFs/wp:Attribute4"/>
6740 </xsl:attribute>
6741 </DFF4>
6742 <DFF5>
6743 <xsl:attribute name="value">
6744 <xsl:value-of select="wp:OperationDFFs/wp:Attribute5"/>
6745 </xsl:attribute>
6746 </DFF5>
6747 <DFF6>
6748 <xsl:attribute name="value">
6749 <xsl:value-of select="wp:OperationDFFs/wp:Attribute6"/>
6750 </xsl:attribute>
6751 </DFF6>
6752 <DFF7>
6753 <xsl:attribute name="value">
6754 <xsl:value-of select="wp:OperationDFFs/wp:Attribute7"/>
6755 </xsl:attribute>
6756 </DFF7>
6757 <DFF8>
6758 <xsl:attribute name="value">
6759 <xsl:value-of select="wp:OperationDFFs/wp:Attribute8"/>
6760 </xsl:attribute>
6761 </DFF8>
6762 <DFF9>
6763 <xsl:attribute name="value">
6764 <xsl:value-of select="wp:OperationDFFs/wp:Attribute9"/>
6765 </xsl:attribute>
6766 </DFF9>
6767 <DFF10>
6768 <xsl:attribute name="value">
6769 <xsl:value-of select="wp:OperationDFFs/wp:Attribute10"/>
6770 </xsl:attribute>
6771 </DFF10>
6772 <DFF11>
6773 <xsl:attribute name="value">
6774 <xsl:value-of select="wp:OperationDFFs/wp:Attribute11"/>
6775 </xsl:attribute>
6776 </DFF11>
6777 <DFF12>
6778 <xsl:attribute name="value">
6779 <xsl:value-of select="wp:OperationDFFs/wp:Attribute12"/>
6780 </xsl:attribute>
6781 </DFF12>
6782 <DFF13>
6783 <xsl:attribute name="value">
6784 <xsl:value-of select="wp:OperationDFFs/wp:Attribute13"/>
6785 </xsl:attribute>
6786 </DFF13>
6787 <DFF14>
6788 <xsl:attribute name="value">
6789 <xsl:value-of select="wp:OperationDFFs/wp:Attribute14"/>
6790 </xsl:attribute>
6791 </DFF14>
6792 <DFF15>
6793 <xsl:attribute name="value">
6794 <xsl:value-of select="wp:OperationDFFs/wp:Attribute15"/>
6795 </xsl:attribute>
6796 </DFF15>
6797 <title>
6798 <xsl:attribute name="value">
6799 <xsl:value-of select="wp:OpDescription"/>
6800 </xsl:attribute>
6801 </title>
6802 <revno>
6803 <xsl:attribute name="value">
6804 <xsl:value-of select="wp:Revision"/>
6805 </xsl:attribute>
6806 </revno>
6807 <revdate>
6808 <xsl:attribute name="value">
6809 <xsl:value-of select="wp:RevisionDate"/>
6810 </xsl:attribute>
6811 </revdate>
6812 </operation>
6813 </xsl:for-each>
6814 </routemeta>
6815 </route>
6816 </routes>
6817 </job_card>
6818 </xsl:for-each>
6819 </nrpackage>
6820 </xsl:for-each>';
6821 l_xsl_part8 := '<xsl:for-each select="/wp:WorkPackage/wp:job_card">
6822 <job_card>
6823 <xsl:attribute name="id">
6824 <xsl:value-of select=''concat("WO","-",wp:WorkorderId)''/>
6825 </xsl:attribute>
6826 <xsl:attribute name="revdate">
6827 <xsl:value-of select="../wp:wpmeta/wp:WorkPackageGenerationDate"/>
6828 </xsl:attribute>
6829 <xsl:attribute name="user">
6830 <xsl:value-of select="../wp:wpmeta/wp:User"/>
6831 </xsl:attribute>
6832 <xsl:attribute name="issuedate">
6833 <xsl:value-of select="../wp:wpmeta/wp:WorkPackageGenerationDate"/>
6834 </xsl:attribute>
6835 <jcmeta>
6836 <workorderid>
6837 <xsl:attribute name="value">
6838 <xsl:value-of select="wp:WorkorderNumber"/>
6839 </xsl:attribute>
6840 </workorderid>
6841 <originwo>
6842 <xsl:attribute name="value">
6843 <xsl:value-of select="wp:OriginatingWorkorder"/>
6844 </xsl:attribute>
6845 </originwo>
6846 <xsl:for-each select="wp:ItemCounters/wp:ItemCounter">
6847 <counter>
6848 <xsl:attribute name="name">
6849 <xsl:value-of select="wp:CounterName"/>
6850 </xsl:attribute>
6851 <xsl:attribute name="lastreading">
6852 <xsl:value-of select="wp:CurrentReading"/>
6853 </xsl:attribute>
6854 </counter>
6855 </xsl:for-each>
6856 <item>
6857 <xsl:attribute name="value">
6858 <xsl:value-of select="wp:ItemNumber"/>
6859 </xsl:attribute>
6860 </item>
6861 <sn>
6862 <xsl:attribute name="value">
6863 <xsl:value-of select="wp:SerialNumber"/>
6864 </xsl:attribute>
6865 </sn>
6866 <instance>
6867 <xsl:attribute name="value">
6868 <xsl:value-of select="wp:InstanceNumber"/>
6869 </xsl:attribute>
6870 </instance>
6871 <qty>
6872 <xsl:attribute name="value">
6873 <xsl:value-of select="wp:Quantity"/>
6874 </xsl:attribute>
6875 </qty>
6876 <position>
6877 <xsl:attribute name="value">
6878 <xsl:value-of select="wp:Position"/>
6879 </xsl:attribute>
6880 </position>
6881 <owner>
6882 <xsl:attribute name="value">
6883 <xsl:value-of select="wp:ItemOwner"/>
6884 </xsl:attribute>
6885 </owner>
6886 <unit>
6887 <xsl:attribute name="value">
6888 <xsl:value-of select="wp:UnitName"/>
6889 </xsl:attribute>
6890 </unit>
6891 <routeno>
6892 <xsl:attribute name="value">
6893 <xsl:value-of select="wp:Route/wp:RouteNumber"/>
6894 </xsl:attribute>
6895 </routeno>
6896 <desc>
6897 <xsl:attribute name="value">
6898 <xsl:value-of select="wp:Description"/>
6899 </xsl:attribute>
6900 </desc>
6901 <revdate>
6902 <xsl:attribute name="value">
6903 <xsl:value-of select="wp:Route/wp:RevisionDate"/>
6904 </xsl:attribute>
6905 </revdate>
6906 <revno>
6907 <xsl:attribute name="value">
6908 <xsl:value-of select="wp:Route/wp:Revision"/>
6909 </xsl:attribute>
6910 </revno>
6911 <nonroutine>
6912 <xsl:attribute name="value">
6913 <xsl:value-of select="wp:NonRoutineNumber"/>
6914 </xsl:attribute>
6915 </nonroutine>
6916 <resources>
6917 <xsl:for-each select="wp:ResourceRequirements/wp:ResourceRequirement">
6918 <resource>
6919 <xsl:attribute name="operseq">
6920 <xsl:value-of select="wp:OperationSequenceNumber"/>
6921 </xsl:attribute>
6922 <xsl:attribute name="resourcetype">
6923 <xsl:value-of select="wp:ResourceType"/>
6924 </xsl:attribute>
6925 <xsl:attribute name="resourceCode">
6926 <xsl:value-of select="wp:ResourceCode"/>
6927 </xsl:attribute>
6928 <xsl:attribute name="desc">
6929 <xsl:value-of select="wp:Description"/>
6930 </xsl:attribute>
6931 <xsl:attribute name="qty">
6932 <xsl:value-of select="wp:Quantity"/>
6933 </xsl:attribute>
6934 <DFF1>
6935 <xsl:attribute name="value">
6936 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute1"/>
6937 </xsl:attribute>
6938 </DFF1>
6939 <DFF2>
6940 <xsl:attribute name="value">
6941 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute2"/>
6942 </xsl:attribute>
6943 </DFF2>
6944 <DFF3>
6945 <xsl:attribute name="value">
6946 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute3"/>
6947 </xsl:attribute>
6948 </DFF3>
6949 <DFF4>
6950 <xsl:attribute name="value">
6951 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute4"/>
6952 </xsl:attribute>
6953 </DFF4>
6954 <DFF5>
6955 <xsl:attribute name="value">
6956 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute5"/>
6957 </xsl:attribute>
6958 </DFF5>
6959 <DFF6>
6960 <xsl:attribute name="value">
6961 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute6"/>
6962 </xsl:attribute>
6963 </DFF6>
6964 <DFF7>
6965 <xsl:attribute name="value">
6966 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute7"/>
6967 </xsl:attribute>
6968 </DFF7>
6969 <DFF8>
6970 <xsl:attribute name="value">
6971 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute8"/>
6972 </xsl:attribute>
6973 </DFF8>
6974 <DFF9>
6975 <xsl:attribute name="value">
6976 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute9"/>
6977 </xsl:attribute>
6978 </DFF9>
6979 <DFF10>
6980 <xsl:attribute name="value">
6981 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute10"/>
6982 </xsl:attribute>
6983 </DFF10>
6984 <DFF11>
6985 <xsl:attribute name="value">
6986 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute11"/>
6987 </xsl:attribute>
6988 </DFF11>
6989 <DFF12>
6990 <xsl:attribute name="value">
6991 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute12"/>
6992 </xsl:attribute>
6993 </DFF12>
6994 <DFF13>
6995 <xsl:attribute name="value">
6996 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute13"/>
6997 </xsl:attribute>
6998 </DFF13>
6999 <DFF14>
7000 <xsl:attribute name="value">
7001 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute14"/>
7002 </xsl:attribute>
7003 </DFF14>
7004 <DFF15>
7005 <xsl:attribute name="value">
7006 <xsl:value-of select="wp:ResourceDFFs/wp:Attribute15"/>
7007 </xsl:attribute>
7008 </DFF15>
7009 </resource>
7010 </xsl:for-each>
7011 </resources>
7012 <tools>
7013 <xsl:for-each select="wp:Tools/wp:Tool">
7014 <tool>
7015 <xsl:attribute name="itemtype">
7016 <xsl:value-of select="wp:ItemType"/>
7017 </xsl:attribute>
7018 <xsl:attribute name="itemno">
7019 <xsl:value-of select="wp:Item"/>
7020 </xsl:attribute>
7021 <xsl:attribute name="desc">
7022 <xsl:value-of select="wp:Description"/>
7023 </xsl:attribute>
7024 <xsl:attribute name="qty">
7025 <xsl:value-of select="wp:Quantity"/>
7026 </xsl:attribute>
7027 </tool>
7028 </xsl:for-each>
7029 </tools>
7030 <materials>
7031 <xsl:for-each select="wp:MaterialRequirements/wp:MaterialRequirement">
7032 <material>
7033 <xsl:attribute name="operseq">
7034 <xsl:value-of select="wp:OperationSequenceNumber"/>
7035 </xsl:attribute>
7036 <xsl:attribute name="itemno">
7037 <xsl:value-of select="wp:ItemNumber"/>
7038 </xsl:attribute>
7039 <xsl:attribute name="desc">
7040 <xsl:value-of select="wp:ItemDescription"/>
7041 </xsl:attribute>
7042 <xsl:attribute name="itemgroup">
7043 <xsl:value-of select="wp:ItemGroup"/>
7044 </xsl:attribute>
7045 <xsl:attribute name="itemtype">
7046 <xsl:value-of select="wp:ItemType"/>
7047 </xsl:attribute>
7048 <xsl:attribute name="qty">
7049 <xsl:value-of select=''concat(wp:RequiredQuantity," ",wp:UOM)''/>
7050 </xsl:attribute>
7051 <xsl:attribute name="reqdate">
7052 <xsl:value-of select="wp:RequiredDate"/>
7053 </xsl:attribute>
7054 </material>
7055 </xsl:for-each>
7056 </materials>
7057 <QCP>
7058 <xsl:if test=''wp:IsQualityEnabled = "T"''>
7059 <table>
7060 <xsl:attribute name="id">
7061 <xsl:value-of select="wp:QaPlan/wp:PlanName"/>
7062 </xsl:attribute>
7063 <xsl:attribute name="cols">
7064 <xsl:value-of select="count(wp:QaPlan/wp:QualityPlanAttribute)"/>
7065 </xsl:attribute>
7066 <xsl:for-each select="wp:QaPlan/wp:QualityPlanAttribute">
7067 <columntitle>
7068 <name>
7069 <xsl:value-of select="wp:Prompt"/>
7070 </name>
7071 </columntitle>
7072 </xsl:for-each>
7073 <rows>
7074 <xsl:for-each select="wp:QaResults/wp:QualityResultRec">
7075 <row>
7076 <xsl:for-each select="wp:QualityPlanAttribute">
7077 <columnvalue>
7078 <xsl:value-of select="wp:AttributeValue"/>
7079 </columnvalue>
7080 </xsl:for-each>
7081 </row>
7082 </xsl:for-each>
7083 </rows>
7084 </table>
7085 </xsl:if>
7086 </QCP>
7087 <woOperations>
7088 <xsl:for-each select="wp:WoOperations/wp:WoOperation">
7089 <woOperation>
7090 <xsl:attribute name="operseq">
7091 <xsl:value-of select="wp:OperationSequenceNumber"/>
7092 </xsl:attribute>
7093 <xsl:attribute name="desc">
7094 <xsl:value-of select="wp:OperationDesc"/>
7095 </xsl:attribute>
7096 <QCP>
7097 <xsl:if test=''wp:IsQualityEnabled = "T"''>
7098 <table>
7099 <xsl:attribute name="id">
7100 <xsl:value-of select="wp:QaPlan/wp:PlanName"/>
7101 </xsl:attribute>
7102 <xsl:attribute name="cols">
7103 <xsl:value-of select="count(wp:QaPlan/wp:QualityPlanAttribute)"/>
7104 </xsl:attribute>
7105 <xsl:for-each select="wp:QaPlan/wp:QualityPlanAttribute">
7106 <columntitle>
7107 <name>
7108 <xsl:value-of select="wp:Prompt"/>
7109 </name>
7110 </columntitle>
7111 </xsl:for-each>
7112 <rows>
7113 <xsl:for-each select="wp:QaResults/wp:QualityResultRec">
7114 <row>
7115 <xsl:for-each select="wp:QualityPlanAttribute">
7116 <columnvalue>
7117 <xsl:value-of select="wp:AttributeValue"/>
7118 </columnvalue>
7119 </xsl:for-each>
7120 </row>
7121 </xsl:for-each>
7122 </rows>
7123 </table>
7124 </xsl:if>
7125 </QCP>
7126 </woOperation>
7127 </xsl:for-each>
7128 </woOperations>
7129 <releasedate>
7130 <xsl:attribute name="value">
7131 <xsl:value-of select="wp:ReleaseDate"/>
7132 </xsl:attribute>
7133 </releasedate>
7134 </jcmeta>
7135 <routes>
7136 <route>
7137 <xsl:attribute name="id">
7138 <xsl:value-of select="wp:Route/wp:RouteId"/>
7139 </xsl:attribute>
7140 <xsl:attribute name="ata">
7141 <xsl:value-of select="wp:ATACode"/>
7142 </xsl:attribute>
7143 <xsl:attribute name="type">
7144 <xsl:value-of select="wp:Route/wp:RouteType"/>
7145 </xsl:attribute>
7146 <xsl:attribute name="src">
7147 <xsl:value-of select="wp:Route/wp:EnigmaDocId"/>
7148 </xsl:attribute>
7149 <routemeta>
7150 <routeno>
7151 <xsl:attribute name="value">
7152 <xsl:value-of select="wp:Route/wp:RouteNumber"/>
7153 </xsl:attribute>
7154 </routeno>
7155 <title>
7156 <xsl:attribute name="value">
7157 <xsl:value-of select="wp:Route/wp:RouteTitle"/>
7158 </xsl:attribute>
7159 </title>
7160 <process>
7161 <xsl:attribute name="value">
7162 <xsl:value-of select="wp:Route/wp:Process"/>
7163 </xsl:attribute>
7164 </process>
7165 <model>
7166 <xsl:attribute name="value">
7167 <xsl:value-of select="wp:Route/wp:ModelCode"/>
7168 </xsl:attribute>
7169 </model>
7170 <layout>
7171 <xsl:attribute name="value">
7172 <xsl:value-of select="wp:Route/wp:JobCardType"/>
7173 </xsl:attribute>
7174 </layout>
7175 <zone>
7176 <xsl:attribute name="value">
7177 <xsl:value-of select="wp:Route/wp:Zone"/>
7178 </xsl:attribute>
7179 </zone>
7180 <xsl:for-each select="wp:Route/wp:AssociatedDocuments/wp:AssociatedDocument">
7181 <refdoc>
7182 <xsl:attribute name="docsubtype">
7183 <xsl:value-of select="wp:DocumentSubType"/>
7184 </xsl:attribute>
7185 <xsl:attribute name="docno">
7186 <xsl:value-of select="wp:DocumentNumber"/>
7187 </xsl:attribute>
7188 <xsl:attribute name="docrev">
7189 <xsl:value-of select="wp:RevisionNumber"/>
7190 </xsl:attribute>
7191 <xsl:attribute name="docata">
7192 <xsl:value-of select=''concat(wp:Chapter,"-",wp:Section,"-",wp:Subject)''/>
7193 </xsl:attribute>
7194 <xsl:attribute name="title">
7195 <xsl:value-of select="wp:DocumentTitle"/>
7196 </xsl:attribute>
7197 </refdoc>
7198 </xsl:for-each>
7199 <KFF1>
7200 <xsl:attribute name="value">
7201 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment1Desc"/>
7202 </xsl:attribute>
7203 </KFF1>
7204 <KFF2>
7205 <xsl:attribute name="value">
7206 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment2Desc"/>
7207 </xsl:attribute>
7208 </KFF2>
7209 <KFF3>
7210 <xsl:attribute name="value">
7211 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment3Desc"/>
7212 </xsl:attribute>
7213 </KFF3>
7214 <KFF4>
7215 <xsl:attribute name="value">
7216 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment4Desc"/>
7217 </xsl:attribute>
7218 </KFF4>
7219 <KFF5>
7220 <xsl:attribute name="value">
7221 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment5Desc"/>
7222 </xsl:attribute>
7223 </KFF5>
7224 <KFF6>
7225 <xsl:attribute name="value">
7226 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment6Desc"/>
7227 </xsl:attribute>
7228 </KFF6>
7229 <KFF7>
7230 <xsl:attribute name="value">
7231 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment7Desc"/>
7232 </xsl:attribute>
7233 </KFF7>
7234 <KFF8>
7235 <xsl:attribute name="value">
7236 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment8Desc"/>
7237 </xsl:attribute>
7238 </KFF8>
7239 <KFF9>
7240 <xsl:attribute name="value">
7241 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment9Desc"/>
7242 </xsl:attribute>
7243 </KFF9>
7244 <KFF10>
7245 <xsl:attribute name="value">
7246 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment10Desc"/>
7247 </xsl:attribute>
7248 </KFF10>
7249 <KFF11>
7250 <xsl:attribute name="value">
7251 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment11Desc"/>
7252 </xsl:attribute>
7253 </KFF11>
7254 <KFF12>
7255 <xsl:attribute name="value">
7256 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment12Desc"/>
7257 </xsl:attribute>
7258 </KFF12>
7259 <KFF13>
7260 <xsl:attribute name="value">
7261 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment13Desc"/>
7262 </xsl:attribute>
7263 </KFF13>
7264 <KFF14>
7265 <xsl:attribute name="value">
7266 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment14Desc"/>
7267 </xsl:attribute>
7268 </KFF14>
7269 <KFF15>
7270 <xsl:attribute name="value">
7271 <xsl:value-of select="wp:Route/wp:RouteKFFs/wp:Segment15Desc"/>
7272 </xsl:attribute>
7273 </KFF15>
7274 <DFF1>
7275 <xsl:attribute name="value">
7276 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute1"/>
7277 </xsl:attribute>
7278 </DFF1>
7279 <DFF2>
7280 <xsl:attribute name="value">
7281 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute2"/>
7282 </xsl:attribute>
7283 </DFF2>
7284 <DFF3>
7285 <xsl:attribute name="value">
7286 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute3"/>
7287 </xsl:attribute>
7288 </DFF3>
7289 <DFF4>
7290 <xsl:attribute name="value">
7291 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute4"/>
7292 </xsl:attribute>
7293 </DFF4>
7294 <DFF5>
7295 <xsl:attribute name="value">
7296 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute5"/>
7297 </xsl:attribute>
7298 </DFF5>
7299 <DFF6>
7300 <xsl:attribute name="value">
7301 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute6"/>
7302 </xsl:attribute>
7303 </DFF6>
7304 <DFF7>
7305 <xsl:attribute name="value">
7306 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute7"/>
7307 </xsl:attribute>
7308 </DFF7>
7309 <DFF8>
7310 <xsl:attribute name="value">
7311 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute8"/>
7312 </xsl:attribute>
7313 </DFF8>
7314 <DFF9>
7315 <xsl:attribute name="value">
7316 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute9"/>
7317 </xsl:attribute>
7318 </DFF9>
7319 <DFF10>
7320 <xsl:attribute name="value">
7321 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute10"/>
7322 </xsl:attribute>
7323 </DFF10>
7324 <DFF11>
7325 <xsl:attribute name="value">
7326 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute11"/>
7327 </xsl:attribute>
7328 </DFF11>
7329 <DFF12>
7330 <xsl:attribute name="value">
7331 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute12"/>
7332 </xsl:attribute>
7333 </DFF12>
7334 <DFF13>
7335 <xsl:attribute name="value">
7336 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute13"/>
7337 </xsl:attribute>
7338 </DFF13>
7339 <DFF14>
7340 <xsl:attribute name="value">
7341 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute14"/>
7342 </xsl:attribute>
7343 </DFF14>
7344 <DFF15>
7345 <xsl:attribute name="value">
7346 <xsl:value-of select="wp:Route/wp:RouteDFFs/wp:Attribute15"/>
7347 </xsl:attribute>
7348 </DFF15>
7349 <xsl:for-each select="wp:Route/wp:Operations/wp:Operation">
7350 <operation>
7351 <xsl:attribute name="operationid">
7352 <xsl:value-of select="wp:OperationCode"/>
7353 </xsl:attribute>
7354 <xsl:attribute name="src">
7355 <xsl:value-of select="wp:EnigmaDocId"/>
7356 </xsl:attribute>
7357 <operseq>
7358 <xsl:attribute name="value">
7359 <xsl:value-of select="wp:OperationSequenceNumber"/>
7360 </xsl:attribute>
7361 </operseq>
7362 <operno>
7363 <xsl:attribute name="value">
7364 <xsl:value-of select="wp:OperationCode"/>
7365 </xsl:attribute>
7366 </operno>
7367 <xsl:for-each select="wp:AssociatedDocuments/wp:AssociatedDocument">
7368 <refdoc>
7369 <xsl:attribute name="docsubtype">
7370 <xsl:value-of select="wp:DocumentSubType"/>
7371 </xsl:attribute>
7372 <xsl:attribute name="docno">
7373 <xsl:value-of select="wp:DocumentNumber"/>
7374 </xsl:attribute>
7375 <xsl:attribute name="docrev">
7376 <xsl:value-of select="wp:RevisionNumber"/>
7377 </xsl:attribute>
7378 <xsl:attribute name="docata">
7379 <xsl:value-of select=''concat(wp:Chapter,"-",wp:Section,"-",wp:Subject)''/>
7380 </xsl:attribute>
7381 <xsl:attribute name="title">
7382 <xsl:value-of select="wp:DocumentTitle"/>
7383 </xsl:attribute>
7384 </refdoc>
7385 </xsl:for-each>
7386 <DFF1>
7387 <xsl:attribute name="value">
7388 <xsl:value-of select="wp:OperationDFFs/wp:Attribute1"/>
7389 </xsl:attribute>
7390 </DFF1>
7391 <DFF2>
7392 <xsl:attribute name="value">
7393 <xsl:value-of select="wp:OperationDFFs/wp:Attribute2"/>
7394 </xsl:attribute>
7395 </DFF2>
7396 <DFF3>
7397 <xsl:attribute name="value">
7398 <xsl:value-of select="wp:OperationDFFs/wp:Attribute3"/>
7399 </xsl:attribute>
7400 </DFF3>
7401 <DFF4>
7402 <xsl:attribute name="value">
7403 <xsl:value-of select="wp:OperationDFFs/wp:Attribute4"/>
7404 </xsl:attribute>
7405 </DFF4>
7406 <DFF5>
7407 <xsl:attribute name="value">
7408 <xsl:value-of select="wp:OperationDFFs/wp:Attribute5"/>
7409 </xsl:attribute>
7410 </DFF5>
7411 <DFF6>
7412 <xsl:attribute name="value">
7413 <xsl:value-of select="wp:OperationDFFs/wp:Attribute6"/>
7414 </xsl:attribute>
7415 </DFF6>
7416 <DFF7>
7417 <xsl:attribute name="value">
7418 <xsl:value-of select="wp:OperationDFFs/wp:Attribute7"/>
7419 </xsl:attribute>
7420 </DFF7>
7421 <DFF8>
7422 <xsl:attribute name="value">
7423 <xsl:value-of select="wp:OperationDFFs/wp:Attribute8"/>
7424 </xsl:attribute>
7425 </DFF8>
7426 <DFF9>
7427 <xsl:attribute name="value">
7428 <xsl:value-of select="wp:OperationDFFs/wp:Attribute9"/>
7429 </xsl:attribute>
7430 </DFF9>
7431 <DFF10>
7432 <xsl:attribute name="value">
7433 <xsl:value-of select="wp:OperationDFFs/wp:Attribute10"/>
7434 </xsl:attribute>
7435 </DFF10>
7436 <DFF11>
7437 <xsl:attribute name="value">
7438 <xsl:value-of select="wp:OperationDFFs/wp:Attribute11"/>
7439 </xsl:attribute>
7440 </DFF11>
7441 <DFF12>
7442 <xsl:attribute name="value">
7443 <xsl:value-of select="wp:OperationDFFs/wp:Attribute12"/>
7444 </xsl:attribute>
7445 </DFF12>
7446 <DFF13>
7447 <xsl:attribute name="value">
7448 <xsl:value-of select="wp:OperationDFFs/wp:Attribute13"/>
7449 </xsl:attribute>
7450 </DFF13>
7451 <DFF14>
7452 <xsl:attribute name="value">
7453 <xsl:value-of select="wp:OperationDFFs/wp:Attribute14"/>
7454 </xsl:attribute>
7455 </DFF14>
7456 <DFF15>
7457 <xsl:attribute name="value">
7458 <xsl:value-of select="wp:OperationDFFs/wp:Attribute15"/>
7459 </xsl:attribute>
7460 </DFF15>
7461 <title>
7462 <xsl:attribute name="value">
7463 <xsl:value-of select="wp:OpDescription"/>
7464 </xsl:attribute>
7465 </title>
7466 <revno>
7467 <xsl:attribute name="value">
7468 <xsl:value-of select="wp:Revision"/>
7469 </xsl:attribute>
7470 </revno>
7471 <revdate>
7472 <xsl:attribute name="value">
7473 <xsl:value-of select="wp:RevisionDate"/>
7474 </xsl:attribute>
7475 </revdate>
7476 </operation>
7477 </xsl:for-each>
7478 </routemeta>
7479 </route>
7480 </routes>
7481 </job_card>
7482 </xsl:for-each>
7483 </workpackage>
7484 </xsl:template>
7485 </xsl:stylesheet>';
7486 dbms_lob.createtemporary( l_xsl_clob, true );
7487 dbms_lob.open( l_xsl_clob, dbms_lob.lob_readwrite );
7488 dbms_lob.write(l_xsl_clob, length(l_xsl_part1),length(l_xsl_clob)+1, l_xsl_part1);
7489 dbms_lob.write(l_xsl_clob, length(l_xsl_part2),length(l_xsl_clob)+1, l_xsl_part2);
7490 dbms_lob.write(l_xsl_clob, length(l_xsl_part3),length(l_xsl_clob)+1, l_xsl_part3);
7491 dbms_lob.write(l_xsl_clob, length(l_xsl_part4),length(l_xsl_clob)+1, l_xsl_part4);
7492 dbms_lob.write(l_xsl_clob, length(l_xsl_part5),length(l_xsl_clob)+1, l_xsl_part5);
7493 dbms_lob.write(l_xsl_clob, length(l_xsl_part6),length(l_xsl_clob)+1, l_xsl_part6);
7494 dbms_lob.write(l_xsl_clob, length(l_xsl_part7),length(l_xsl_clob)+1, l_xsl_part7);
7495 dbms_lob.write(l_xsl_clob, length(l_xsl_part8),length(l_xsl_clob)+1, l_xsl_part8);
7496 dbms_lob.close( l_xsl_clob );
7497 RETURN l_xsl_clob;
7498 END get_xsl_clob;
7499
7500 Procedure build_xml_qa_query(
7501 p_plan_id IN NUMBER,
7502 p_collection_id IN NUMBER,
7503 x_query_string OUT NOCOPY VARCHAR2
7504 )
7505 IS
7506
7507 --cursor for getting QA Chars
7508 CURSOR get_qa_chars_csr(p_plan_id IN NUMBER) IS
7509 SELECT
7510 char_id,
7511 organization_id,
7512 prompt_sequence ,
7513 prompt,
7514 enabled_flag,
7515 default_value,
7516 default_value_id,
7517 result_column_name,
7518 values_exist_flag,
7519 displayed_flag,
7520 plan_name,
7521 plan_description,
7522 char_name,
7523 datatype,
7524 hardcoded_column,
7525 developer_name
7526 FROM
7527 QA_PLAN_CHARS_V QA
7528 WHERE
7529 plan_id = p_plan_id
7530 AND enabled_flag = 1
7531 AND displayed_flag = 1
7532 order by prompt_sequence;
7533
7534 --local variable to hold the query string to retrieve qa results
7535 l_query_string VARCHAR2(30000) := null; --pdoki changed for Bug 6777371
7536 l_rec_count NUMBER;
7537 l_result_column_name VARCHAR2(100);
7538 l_item_found VARCHAR2(1);
7539 l_locator_found VARCHAR2(1);
7540 l_item_hardcoded_column VARCHAR2(100);
7541 l_locator_hardcoded_column VARCHAR(100);
7542 l_dummy_query VARCHAR2(3000);
7543 l_api_name CONSTANT VARCHAR2(30) := 'build_qa_query';
7544
7545 BEGIN
7546
7547 l_query_string := 'SELECT RESULTS.OCCURRENCE "Occurence"';
7548
7549 l_dummy_query := ' UNION ALL SELECT null "Occurence"';
7550
7551 l_rec_count := 1;
7552
7553 -- retrieve all chars associated with the qa plan
7554 FOR qa_csr IN get_qa_chars_csr(p_plan_id) LOOP
7555
7556 IF qa_csr.char_id = G_ITEM_NUMBER_CHAR THEN
7557 -- its an item number
7558 l_query_string := l_query_string ||' ,XMLConcat(XMLELEMENT("CharId", '''|| qa_csr.char_id ||''' )';
7559 l_query_string := l_query_string || ', XMLELEMENT("AttributeValue", ITEM.' || 'CONCATENATED_SEGMENTS' || ' ) ) "QualityPlanAttribute"';
7560
7561 l_dummy_query := l_dummy_query ||' ,XMLConcat(XMLELEMENT("LABEL", '''|| null ||''' )';
7562 l_dummy_query := l_dummy_query || ', XMLELEMENT("AttributeValue", '''|| null ||''' ) ) "QualityPlanAttribute"';
7563
7564 l_item_found := FND_API.G_TRUE;
7565 l_item_hardcoded_column := qa_csr.hardcoded_column;
7566 --l_column_name_tbl(l_rec_count) := result_column;
7567 ELSIF qa_csr.char_id = G_LOCATOR_CHAR THEN
7568
7569 l_query_string := l_query_string ||' ,XMLConcat(XMLELEMENT("CharId", '''|| qa_csr.char_id ||''' )';
7570 l_query_string := l_query_string || ', XMLELEMENT("AttributeValue", LOCATOR.' || 'CONCATENATED_SEGMENTS' || ' ) ) "QualityPlanAttribute"';
7571
7572 l_dummy_query := l_dummy_query ||' ,XMLConcat(XMLELEMENT("LABEL", '''|| null ||''' )';
7573 l_dummy_query := l_dummy_query || ', XMLELEMENT("AttributeValue", '''|| null ||''' ) ) "QualityPlanAttribute"';
7574
7575 l_locator_found := FND_API.G_TRUE;
7576 l_locator_hardcoded_column := qa_csr.hardcoded_column;
7577 --l_column_name_tbl(l_rec_count) := result_column;
7578 ELSE
7579 IF qa_csr.hardcoded_column IS NOT NULL
7580 THEN
7581 l_result_column_name := qa_csr.developer_name;
7582 ELSE
7583 l_result_column_name := qa_csr.result_column_name;
7584 END IF;
7585 l_query_string := l_query_string ||' ,XMLConcat(XMLELEMENT("CharId", '''|| qa_csr.char_id ||''' )';
7586 l_query_string := l_query_string || ', XMLELEMENT("AttributeValue", RESULTS.' || l_result_column_name || ' ) ) "QualityPlanAttribute"';
7587
7588 l_dummy_query := l_dummy_query ||' ,XMLConcat(XMLELEMENT("LABEL", '''|| null ||''' )';
7589 l_dummy_query := l_dummy_query || ', XMLELEMENT("AttributeValue", '''|| null ||''' ) ) "QualityPlanAttribute"';
7590 END IF;
7591
7592 l_rec_count := l_rec_count + 1;
7593
7594 END LOOP;
7595
7596 -- Results will all be included in the from clause
7597 l_query_string := l_query_string || ' FROM QA_RESULTS_V RESULTS ';
7598
7599 -- Append required FROM clauses for the API.
7600 IF l_item_found = FND_API.G_TRUE THEN
7601 l_query_string := l_query_string || ' , MTL_SYSTEM_ITEMS_KFV ITEM ';
7602 END IF;
7603
7604 IF l_locator_found = FND_API.G_TRUE THEN
7605 l_query_string := l_query_string || ' , MTL_ITEM_LOCATIONS_KFV LOCATOR ';
7606 END IF;
7607
7608 -- Append collection id to the where clause
7609 l_query_string := l_query_string || ' WHERE RESULTS.COLLECTION_ID = :1' ;
7610
7611 -- Append required FROM clauses for the API.
7612 IF l_item_found = FND_API.G_TRUE THEN
7613 l_query_string := l_query_string || ' AND ITEM.inventory_item_id (+) = RESULTS.' || l_item_hardcoded_column;
7614 l_query_string := l_query_string || ' AND ITEM.organization_id (+) = RESULTS.organization_id ';
7615 END IF;
7616
7617 IF l_locator_found = FND_API.G_TRUE THEN
7618 l_query_string := l_query_string || ' AND LOCATOR.inventory_location_id (+) = RESULTS.' || l_locator_hardcoded_column;
7619 l_query_string := l_query_string || ' AND LOCATOR.organization_id (+) = RESULTS.organization_id ';
7620 END IF;
7621 l_query_string := l_query_string || ' order by 1 ';
7622
7623 --add dummy query to the original query
7624 -- l_query_string := l_query_string || l_dummy_query || ' FROM DUAL CONNECT BY 1 = 1 and level <= 3';
7625 x_query_string := l_query_string;
7626
7627 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
7628 fnd_log.string
7629 (
7630 fnd_log.level_statement,
7631 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
7632 'Formed Quality Collection query string for plan id:' || p_plan_id || ' : Collection Id:' || p_collection_id
7633 );
7634 END IF;
7635
7636 END build_xml_qa_query;
7637
7638 PROCEDURE Get_Route_KFF_Desc (p_concat_segs IN VARCHAR2,
7639 x_mti_seglist OUT NOCOPY fnd_flex_ext.SegmentArray,
7640 x_return_status OUT NOCOPY VARCHAR2)
7641 IS
7642 l_flex_nseg NUMBER;
7643 l_flex_seglist fnd_flex_key_api.segment_list;
7644 l_fftype fnd_flex_key_api.flexfield_type;
7645 l_ffstru fnd_flex_key_api.structure_type;
7646 l_segment_type fnd_flex_key_api.segment_type;
7647 l_delim VARCHAR2(1);
7648
7649 l_loc_nseg number;
7650 l_loc_seglist fnd_flex_ext.SegmentArray;
7651 l_mti_seglist fnd_flex_ext.SegmentArray;
7652 l_concat_seg_desc VARCHAR2(4000);
7653
7654 l_valid_flag BOOLEAN;
7655 l_temp_string VARCHAR2(1000);
7656
7657 l_api_name CONSTANT VARCHAR2(50) := 'Get_Route_KFF_Desc';
7658 BEGIN
7659
7660 x_return_status := FND_API.G_RET_STS_SUCCESS;
7661
7662 -- initialize the KFF descriptions.
7663 FOR i IN 1..15 LOOP
7664 l_mti_seglist(i) := null;
7665 END LOOP;
7666
7667 fnd_flex_key_api.set_session_mode('seed_data');
7668
7669 -- find flex field type
7670 l_fftype := fnd_flex_key_api.find_flexfield('AHL', 'AHLR');
7671
7672 -- find flex structure type
7673 l_ffstru := fnd_flex_key_api.find_structure(l_fftype, 101);
7674
7675 -- find segment list for the key flex field
7676 fnd_flex_key_api.get_segments(l_fftype, l_ffstru, TRUE, l_flex_nseg, l_flex_seglist);
7677
7678 -- find segment delimiter
7679 l_delim := l_ffstru.segment_separator;
7680
7681 l_temp_string := trim(replace(p_concat_segs,l_delim,' '));
7682
7683 IF (l_temp_string IS NOT NULL) THEN
7684 -- validate locator segments.
7685 l_valid_flag := fnd_flex_keyval.validate_segs(
7686 operation => 'CHECK_SEGMENTS'
7687 , appl_short_name => 'AHL'
7688 , key_flex_code => 'AHLR'
7689 , structure_number => 101
7690 , concat_segments => p_concat_segs
7691 , values_or_ids => 'I'
7692 );
7693
7694 IF NOT(l_valid_flag) THEN
7695 -- do not raise error.
7696 -- In this case populate KFF descriptions as null.
7697 x_return_status := FND_API.G_RET_STS_ERROR;
7698 /*
7699 FND_MESSAGE.Set_Name('AHL','AHL_INPUT_NUM_LOC_SEGS_INVALID');
7700 FND_MESSAGE.Set_Token('LOC_SEG',p_concat_segs);
7701 FND_MSG_PUB.ADD;
7702 --dbms_output.put_line('ERROR:'|| fnd_flex_keyval.error_message);
7703 --dbms_output.put_line('ERROR:'|| fnd_flex_keyval.error_segment);
7704 */
7705 IF (fnd_log.level_statement >= fnd_log.g_current_runtime_level)THEN
7706 fnd_log.string
7707 (
7708 fnd_log.level_statement,
7709 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
7710 'FND Flex KeyVal Error:Mesg:Segment:' || fnd_flex_keyval.error_message || ':' || fnd_flex_keyval.error_segment
7711 );
7712 END IF;
7713
7714 RETURN;
7715 END IF;
7716
7717 -- get values for the concatenated segment descriptions
7718 l_concat_seg_desc := fnd_flex_keyval.concatenated_descriptions;
7719
7720 -- breakup locator concat values into segments.
7721 l_loc_nseg := fnd_flex_ext.breakup_segments (l_concat_seg_desc, l_delim, l_loc_seglist);
7722
7723 FOR l_loop IN 1..l_flex_nseg LOOP
7724
7725 l_segment_type := fnd_flex_key_api.find_segment(l_fftype, l_ffstru, l_flex_seglist(l_loop));
7726 --dbms_output.put_line('l_segment_type is : ' || l_segment_type.column_name);
7727
7728 l_mti_seglist(To_number(Substr(l_segment_type.column_name, 8))) := l_loc_seglist(l_loop);
7729 --dbms_output.put_line('To_number(Substr(l_segment_type.column_name, 8)):' || To_number(Substr(l_segment_type.column_name, 8)));
7730 --dbms_output.put_line('l_loc_seglist(l_loop):' || l_loc_seglist(l_loop));
7731
7732 END LOOP;
7733 END IF; -- l_temp_string
7734
7735 x_mti_seglist := l_mti_seglist;
7736
7737 END Get_Route_KFF_Desc;
7738
7739 PROCEDURE Get_job_card_det ( l_merged_lob IN OUT NOCOPY CLOB,
7740 l_wo_id_tbl IN OUT NOCOPY workorder_id_tbl_type,
7741 x_return_status OUT NOCOPY VARCHAR2)
7742 IS
7743
7744 context DBMS_XMLGEN.ctxHandle;
7745
7746 dummy VARCHAR2 (1000);
7747
7748 --TYPE workorder_id_tbl_type IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
7749 --l_wo_id_tbl workorder_id_tbl_type;
7750 g_pkg_name VARCHAR2(30) :='AHL_PRD_PRINT_PVT';
7751 l_api_name CONSTANT VARCHAR2(30) := 'Gen_JCG_Xml';
7752 l_index NUMBER ;
7753 l_mr_id NUMBER ;
7754 l_ue_id NUMBER ;
7755 l_visit_id NUMBER ;
7756 l_route_id NUMBER ;
7757 l_workorder_id NUMBER;
7758 l_wo_id NUMBER;
7759 l_instance_id NUMBER;
7760 l_uc_id NUMBER;
7761 l_relationship_id NUMBER;
7762 l_position_meaning VARCHAR2(80);
7763 l_count_instance_id NUMBER;
7764 l_visit_no VARCHAR2(80);
7765 l_wo_no VARCHAR2(80);
7766 l_unit_name VARCHAR2(80);
7767 l_collection_id NUMBER;
7768 l_occurence NUMBER;
7769 l_plan_id NUMBER;
7770 l_msg_count NUMBER := 0;
7771 l_msg_data VARCHAR2(1000) := '';
7772 l_return_status VARCHAR2(1) := 'S';
7773 l_query_string VARCHAR2(5000);
7774 l_accomplishment_date DATE;
7775 l_unit_eff_id NUMBER;
7776 l_dummy_flag BOOLEAN;
7777 l_dummy_status VARCHAR2(100);
7778 l_dummy_return BOOLEAN;
7779 l_counter_value NUMBER := null;
7780 l_net_reading NUMBER := null;
7781 l_concat_segment VARCHAR2(100);
7782 l_mti_seglist fnd_flex_ext.SegmentArray;
7783 kff_return_status VARCHAR2(1);
7784
7785 --l_merged_lob CLOB;
7786 l_wo_mat_lob CLOB;
7787 l_wo_res_lob CLOB;
7788 l_wo_op_lob CLOB;
7789 l_wo_doc_lob CLOB;
7790 l_wo_route_lob CLOB;
7791 l_route_KFF_lob CLOB;
7792 l_route_DFF_lob CLOB;
7793 l_mat_dff_lob CLOB;
7794 l_res_dff_lob CLOB;
7795 l_op_dffs_lob CLOB;
7796 l_qa_plan_lob CLOB;
7797 l_mr_det_lob CLOB;
7798 l_wo_mr_lob CLOB;
7799 l_panel_det_lob CLOB;
7800 l_qa_wo_plan_lob CLOB;
7801 l_qa_wo_res_lob CLOB;
7802 l_qa_res_lob CLOB;
7803 l_counter_lob CLOB;
7804 l_inst_remove_lob CLOB;
7805 l_tool_det_lob CLOB;
7806 l_mr_doc_lob CLOB;
7807 l_visit_det_lob CLOB;
7808 l_childmr_details_lob CLOB;
7809 l_offset NUMBER;
7810
7811 l_log_unexpected NUMBER := FND_LOG.level_unexpected;
7812 l_log_statement NUMBER := FND_LOG.level_statement;
7813 l_log_current_level NUMBER := FND_LOG.g_current_runtime_level;
7814
7815
7816 -- start to create file
7817 -- x_file_name VARCHAR2(100) := 'Output.XML';
7818 -- p_dir VARCHAR2(100) := '/slot/ems1561/oracle/db/tech_st/10.2.0/temp';
7819 p_dir VARCHAR2(500);
7820 c_amount CONSTANT BINARY_INTEGER := 32767;
7821 l_buffer VARCHAR2(32767);
7822 l_chr10 PLS_INTEGER;
7823 l_clobLen PLS_INTEGER;
7824 l_fHandler UTL_FILE.FILE_TYPE;
7825 l_pos PLS_INTEGER := 1;
7826
7827 --end to create file
7828
7829
7830 CURSOR wo_details_csr (c_wo_id IN NUMBER) IS
7831
7832 SELECT WO.OBJECT_VERSION_NUMBER,
7833 WO.JOB_NUMBER ,
7834 WO.JOB_DESCRIPTION ,
7835 WO.JOB_STATUS_MEANING ,
7836 WO.DEPARTMENT_NAME ,
7837 DECODE(WO.SCHEDULED_START_DATE, NULL, NULL, TO_CHAR(WO.SCHEDULED_START_DATE,'YYYY-MM-DD')
7838 ||'T'
7839 ||TO_CHAR(WO.SCHEDULED_START_DATE, 'hh24:mi:ss') ) SCHEDULED_START_DATE,
7840 DECODE(WO.SCHEDULED_END_DATE, NULL, NULL, TO_CHAR(WO.SCHEDULED_END_DATE, 'YYYY-MM-DD')
7841 ||'T'
7842 ||TO_CHAR(WO.SCHEDULED_END_DATE, 'hh24:mi:ss') ) SCHEDULED_END_DATE,
7843 WO.UNIT_NAME ,
7844 WO.WO_PART_NUMBER ,
7845 WO.ITEM_INSTANCE_NUMBER ,
7846 WO.SERIAL_NUMBER ,
7847 WO.LOT_NUMBER ,
7848 WO.VISIT_NUMBER ,
7849 --RO.MODEL_MEANING ,
7850 MODELTYPE.MEANING MODEL_MEANING ,
7851 DECODE(WIP.DATE_RELEASED, NULL, NULL, TO_CHAR(WIP.DATE_RELEASED,'YYYY-MM-DD')
7852 ||'T'
7853 ||TO_CHAR(WIP.DATE_RELEASED, 'hh24:mi:ss') ) DATE_RELEASED,
7854 --WIP.NET_QUANTITY ,
7855 (Select quantity from ahl_visit_tasks_b where visit_task_id = w.visit_task_id) NET_QUANTITY,
7856 --UE.ATA_CODE ,
7857 DECODE(RO.ENIGMA_ROUTE_ID, NULL, NULL, SUBSTR(route_no, instr(route_no, ':',1,1)+1)) ATA_CODE,
7858 -- fix for bug# 10016417
7859 --(SELECT CSIN.INCIDENT_NUMBER
7860 --FROM CS_INCIDENTS_ALL_B CSIN
7861 --WHERE CSIN.INCIDENT_ID = UE.cs_incident_id
7862 --)
7863 /*(SELECT CSIN.INCIDENT_NUMBER
7864 FROM CS_INCIDENTS_ALL_B CSIN, AHL_VISIT_TASKS_B TSK
7865 WHERE CSIN.INCIDENT_ID = TSK.SERVICE_REQUEST_ID
7866 AND TSK.VISIT_TASK_ID = WO.VISIT_TASK_ID
7867 )
7868 INCIDENT_NUMBER,*/
7869 INCIDENTDET.INCIDENT_NUMBER,
7870 INCIDENTDET.NAME INCIDENT_TYPE,
7871 INCIDENTDET.SUMMARY INCIDENT_SUMMARY,
7872 (SELECT HZ.PARTY_NAME
7873 FROM HZ_PARTIES HZ
7874 WHERE HZ.PARTY_ID = CSI.OWNER_PARTY_ID
7875 )
7876 PARTY_NAME,
7877 (SELECT WORKORDER_NAME
7878 FROM AHL_WORKORDERS WO --,
7879 --AHL_UNIT_EFFECTIVITIES_B UE1
7880 WHERE WO.WORKORDER_ID = UE.ORIGINATING_WO_ID
7881 --AND WO.UNIT_EFFECTIVITY_ID = UE.UNIT_EFFECTIVITY_ID
7882 )
7883 ORIGINATINGWORKORDER,
7884 WO.ITEM_INSTANCE_ID ,
7885 DECODE(W.PLAN_ID,NULL,'F','T') ISQUALITYENABLED,
7886 WO.ROUTE_ID
7887 FROM AHL_WORKORDER_TASKS_V WO ,
7888 WIP_DISCRETE_JOBS WIP ,
7889 AHL_ROUTES_B RO ,
7890 AHL_UNIT_EFFECTIVITIES_B UE ,
7891 --HZ_PARTIES HZ ,
7892 CSI_ITEM_INSTANCES CSI ,
7893 --CS_INCIDENTS_ALL_B CSIN ,
7894 --AHL_VISIT_TASKS_VL VTS ,
7895 AHL_WORKORDERS W ,
7896 (SELECT LOOKUP_CODE ,
7897 MEANING
7898 FROM FND_LOOKUP_VALUES
7899 WHERE LOOKUP_TYPE = 'AHL_ENIGMA_MODEL_CODE'
7900 AND LANGUAGE = USERENV('LANG')
7901 )
7902 MODELTYPE,
7903 (SELECT CS.INCIDENT_NUMBER,
7904 CS_TYPE.NAME,
7905 CS_TL.SUMMARY,
7906 TSK.VISIT_TASK_ID
7907 FROM CS_INCIDENTS_ALL_B CS,
7908 AHL_VISIT_TASKS_B TSK,
7909 CS_INCIDENT_TYPES_TL CS_TYPE,
7910 CS_INCIDENTS_ALL_TL CS_TL
7911 WHERE CS.INCIDENT_ID = TSK.SERVICE_REQUEST_ID
7912 --AND TSK.VISIT_TASK_ID = WO.VISIT_TASK_ID
7913 AND CS.INCIDENT_TYPE_ID = CS_TYPE.INCIDENT_TYPE_ID
7914 AND CS.INCIDENT_ID = CS_TL.INCIDENT_ID
7915 AND CS_TYPE.LANGUAGE = USERENV('LANG')
7916 AND CS_TL.LANGUAGE = USERENV('LANG')
7917 ) INCIDENTDET
7918 WHERE WO.WIP_ENTITY_ID = WIP.WIP_ENTITY_ID
7919 AND WO.ROUTE_ID = RO.ROUTE_ID (+)
7920 AND UE.UNIT_EFFECTIVITY_ID(+) = WO.UNIT_EFFECTIVITY_ID
7921 AND CSI.INSTANCE_ID = WO.ITEM_INSTANCE_ID
7922 --AND CSI.OWNER_PARTY_ID(+) = HZ.PARTY_ID
7923 AND MODELTYPE.LOOKUP_CODE(+) = RO.MODEL_CODE
7924 --AND VTS.SERVICE_REQUEST_ID = CSIN.INCIDENT_ID(+)
7925 --AND WO.VISIT_TASK_ID = VTS.VISIT_TASK_ID
7926 AND W.workorder_id = WO.workorder_id
7927 AND INCIDENTDET.VISIT_TASK_ID(+) = WO.VISIT_TASK_ID
7928 AND WO.WORKORDER_ID = c_wo_id;
7929
7930
7931 CURSOR mat_details_csr (c_wo_id IN NUMBER)
7932 IS
7933 SELECT MSI.CONCATENATED_SEGMENTS,
7934 WRO.OPERATION_SEQ_NUM OPERATION_SEQUENCE ,
7935 MSI.DESCRIPTION ,
7936 IG.NAME ,
7937 WRO.REQUIRED_QUANTITY REQUESTED_QUANTITY ,
7938 DECODE(WRO.date_required, NULL, NULL, TO_CHAR(WRO.date_required, 'YYYY-MM-DD')
7939 ||'T'
7940 ||TO_CHAR(WRO.date_required, 'hh24:mi:ss') ) required_date,
7941 WRO.QUANTITY_ISSUED ISSUED_QTY ,
7942 MSI.PRIMARY_UNIT_OF_MEASURE UOM ,
7943 ASM.SCHEDULED_MATERIAL_ID,
7944 (SELECT f.meaning from fnd_lookup_values_vl f
7945 WHERE f.lookup_type = 'ITEM_TYPE' and f.lookup_code = msi.item_type) item_type
7946 FROM --AHL_JOB_OPER_MATERIALS_V JM,
7947 WIP_REQUIREMENT_OPERATIONS WRO, AHL_SCHEDULE_MATERIALS ASM,
7948 AHL_ITEM_GROUPS_B IG, AHL_WORKORDERS WO, MTL_SYSTEM_ITEMS_KFV MSI,AHL_WORKORDER_OPERATIONS AWOP
7949 WHERE WO.wip_entity_id = WRO.wip_entity_id
7950 AND WO.visit_task_id = ASM.visit_task_id
7951 AND ASM.operation_sequence = WRO.operation_seq_num
7952 AND ASM.inventory_item_id = WRO.inventory_item_id
7953 AND WRO.organization_id = MSI.organization_id
7954 AND WRO.inventory_item_id = MSI.inventory_item_id
7955 AND IG.ITEM_GROUP_ID(+) = ASM.ITEM_GROUP_ID
7956 AND ASM.status in ('ACTIVE', 'IN-SERVICE', 'HISTORY')
7957 AND AWOP.workorder_operation_id = ASM.workorder_operation_id
7958 AND AWOP.WORKORDER_ID = WO.WORKORDER_ID
7959 AND WO.WORKORDER_ID = c_wo_id
7960 ORDER BY 2;
7961
7962 CURSOR res_req_details_csr(c_wo_id IN NUMBER)
7963 IS
7964 SELECT WOR.OPERATION_SEQ_NUM operation_sequence,
7965 WOR.RESOURCE_SEQ_NUM resource_sequence ,
7966 BOM.RESOURCE_CODE resource_code,
7967 BOM.DESCRIPTION resource_name,
7968 MFG.MEANING resource_type_name,
7969 WOR.ASSIGNED_UNITS quantity,
7970 DECODE(nvl(WOR.ASSIGNED_UNITS,0), 0, 0, WOR.USAGE_RATE_OR_AMOUNT/WOR.ASSIGNED_UNITS) duration ,
7971 (SELECT A.UNIT_OF_MEASURE FROM MTL_UNITS_OF_MEASURE A
7972 WHERE A.UOM_CODE=BOM.UNIT_OF_MEASURE) uom_name,
7973 WOR.RESOURCE_ID,
7974 (select awo.operation_id from AHL_WORKORDER_OPERATIONS AWO
7975 where AWO.workorder_id = wo.workorder_id
7976 and awo.operation_sequence_num = WOR.OPERATION_SEQ_NUM) operation_id
7977 FROM WIP_OPERATION_RESOURCES WOR,
7978 BOM_RESOURCES BOM, MFG_LOOKUPS MFG, AHL_WORKORDERS WO
7979 WHERE WO.workorder_id = c_wo_id
7980 AND WOR.resource_id = BOM.resource_id
7981 AND WO.wip_entity_id = WOR.wip_entity_id
7982 AND MFG.LOOKUP_TYPE(+) = 'BOM_RESOURCE_TYPE'
7983 AND MFG.LOOKUP_CODE(+) = BOM.RESOURCE_TYPE
7984 ORDER BY 1,2;
7985
7986
7987 CURSOR op_details_csr(c_wo_id IN NUMBER)
7988 IS
7989 SELECT WO.operation_sequence_num,
7990 WO.operation_code ,
7991 WO.description ,
7992 WO.status ,
7993 WO.department_name ,
7994 --WO.scheduled_start_date ,
7995 --WO.scheduled_end_date ,
7996 DECODE(WO.scheduled_start_date, NULL, NULL, TO_CHAR(WO.scheduled_start_date,'YYYY-MM-DD')
7997 ||'T'
7998 ||TO_CHAR(WO.scheduled_start_date, 'hh24:mi:ss') ) scheduled_start_date,
7999 DECODE(WO.scheduled_end_date, NULL, NULL, TO_CHAR(WO.scheduled_end_date, 'YYYY-MM-DD')
8000 ||'T'
8001 ||TO_CHAR(WO.scheduled_end_date, 'hh24:mi:ss') ) scheduled_end_date,
8002 DECODE(WO.plan_id,NULL,'F','T') isQualityEnabled ,
8003 WO.workorder_operation_id
8004 FROM AHL_WORKORDER_OPERATIONS_V WO --AHL_OPERATIONS_B OP
8005 WHERE -- WO.operation_id = OP.operation_id(+) and
8006 WO.workorder_id = c_wo_id
8007 ORDER BY 1 ;
8008
8009 Cursor route_details_csr(c_route_id IN NUMBER) IS
8010
8011 SELECT R.object_version_number ,
8012 R.route_no ,
8013 T.title ,
8014 RTTYPE.MEANING route_type ,
8015 R.revision_number ,
8016 R.enigma_doc_id ,
8017 R.enigma_route_id ,
8018 ZONE.MEANING zone ,
8019 SUBZONE.MEANING sub_zone ,
8020 PROCESS.MEANING process ,
8021 JOBCARDLYT.MEANING job_card_lyt_meaning ,
8022 R.model_code ,
8023 R.last_update_date
8024 FROM AHL_ROUTES_B R ,
8025 AHL_ROUTES_TL T ,
8026 (SELECT LOOKUP_CODE ,
8027 MEANING
8028 FROM FND_LOOKUP_VALUES
8029 WHERE LOOKUP_TYPE = 'AHL_RM_JOB_CARD_LYT'
8030 AND LANGUAGE = USERENV('LANG')
8031 )
8032 JOBCARDLYT ,
8033 (SELECT LOOKUP_CODE,
8034 MEANING
8035 FROM FND_LOOKUP_VALUES
8036 WHERE LOOKUP_TYPE = 'AHL_SUB_ZONE'
8037 AND LANGUAGE = USERENV('LANG')
8038 )
8039 SUBZONE ,
8040 (SELECT LOOKUP_CODE,
8041 MEANING
8042 FROM FND_LOOKUP_VALUES
8043 WHERE LOOKUP_TYPE = 'AHL_PROCESS_CODE'
8044 AND LANGUAGE = USERENV('LANG')
8045 )
8046 PROCESS ,
8047 (SELECT LOOKUP_CODE,
8048 MEANING
8049 FROM FND_LOOKUP_VALUES
8050 WHERE LOOKUP_TYPE = 'AHL_ZONE'
8051 AND LANGUAGE = USERENV('LANG')
8052 )
8053 ZONE ,
8054 (SELECT LOOKUP_CODE,
8055 MEANING
8056 FROM FND_LOOKUP_VALUES
8057 WHERE LOOKUP_TYPE = 'AHL_ROUTE_TYPE'
8058 AND LANGUAGE = USERENV('LANG')
8059 )
8060 RTTYPE
8061 WHERE R.ROUTE_ID = T.ROUTE_ID
8062 AND T.LANGUAGE = USERENV('LANG')
8063 AND JOBCARDLYT.LOOKUP_CODE (+) = R.JOBCARDLYT_CODE
8064 AND ZONE.LOOKUP_CODE (+) = R.ZONE_CODE
8065 AND SUBZONE.LOOKUP_CODE (+) = R.SUB_ZONE_CODE
8066 AND PROCESS.LOOKUP_CODE (+) = R.PROCESS_CODE
8067 AND RTTYPE.LOOKUP_CODE (+) = R.ROUTE_TYPE_CODE
8068 AND R.route_id = c_route_id;
8069
8070 CURSOR op_det_csr(c_route_id IN NUMBER, c_wo_id IN NUMBER)
8071 IS
8072 SELECT DISTINCT
8073 WO.OPERATION_SEQUENCE_NUM,
8074 WO.OPERATION_CODE ,
8075 WO.DESCRIPTION ,
8076 WO.OPERATION_TYPE ,
8077 OP.ENIGMA_DOC_ID ,
8078 OP.OPERATION_ID ,
8079 OP.REVISION_NUMBER ,
8080 OP.LAST_UPDATE_DATE
8081
8082 FROM AHL_WORKORDER_OPERATIONS_V WO,
8083 AHL_ROUTE_OPERATIONS RP ,
8084 AHL_OPERATIONS_B OP
8085 WHERE RP.OPERATION_ID(+) = WO.OPERATION_ID
8086 AND WO.OPERATION_ID = OP.OPERATION_ID(+)
8087 AND RP.route_id = c_route_id
8088 AND WO.workorder_id = c_wo_id
8089 ORDER BY 1;
8090
8091 CURSOR qa_plan_csr(c_qa_plan_id IN NUMBER)
8092 IS
8093 SELECT DISTINCT plan_name,
8094 plan_description
8095 FROM QA_PLAN_CHARS_V
8096 WHERE plan_id = c_qa_plan_id;
8097
8098 CURSOR get_op_qa_res_csr(c_wo_op_id IN NUMBER)
8099 IS
8100 SELECT plan_id,
8101 collection_id
8102 FROM AHL_WORKORDER_OPERATIONS
8103 WHERE workorder_operation_id = c_wo_op_id;
8104
8105 CURSOR get_wo_qa_res_csr(c_wo_id IN NUMBER)
8106 IS
8107 SELECT plan_id,
8108 collection_id
8109 FROM AHL_WORKORDERS
8110 WHERE workorder_id = c_wo_id;
8111
8112 CURSOR qa_result_csr(c_collection_id IN NUMBER)
8113 IS
8114 SELECT occurrence
8115 FROM QA_RESULTS
8116 WHERE collection_id = c_collection_id;
8117
8118 CURSOR get_visit_no(c_visit_id IN NUMBER)
8119 IS
8120 SELECT visit_number
8121 FROM ahl_visits_b
8122 WHERE visit_id = c_visit_id;
8123
8124 CURSOR get_wo_no(c_wo_id IN NUMBER)
8125 IS
8126 SELECT workorder_name
8127 FROM ahl_workorders
8128 WHERE workorder_id = c_wo_id;
8129
8130 CURSOR qa_plan_attr_csr (c_plan_id IN NUMBER)
8131 IS
8132 SELECT char_id CharId ,
8133 prompt_sequence PromptSequence,
8134 prompt Prompt ,
8135 default_value DefaultValue ,
8136 enabled_flag ,
8137 displayed_flag
8138 FROM QA_PLAN_CHARS
8139 WHERE plan_id = c_plan_id
8140 ORDER BY 2;
8141
8142 CURSOR route_ffs_csr(c_route_id IN NUMBER)
8143 IS
8144 SELECT segment1 ,
8145 segment2 ,
8146 segment3 ,
8147 segment4 ,
8148 segment5 ,
8149 segment6 ,
8150 segment7 ,
8151 segment8 ,
8152 segment9 ,
8153 segment10 ,
8154 segment11 ,
8155 segment12 ,
8156 segment13 ,
8157 segment14 ,
8158 segment15 ,
8159 attribute1 ,
8160 attribute2 ,
8161 attribute3 ,
8162 attribute4 ,
8163 attribute5 ,
8164 attribute6 ,
8165 attribute7 ,
8166 attribute8 ,
8167 attribute9 ,
8168 attribute10 ,
8169 attribute11 ,
8170 attribute12 ,
8171 attribute13 ,
8172 attribute14 ,
8173 attribute15
8174 FROM ahl_routes_b
8175 WHERE route_id = c_route_id;
8176
8177 CURSOR panel_details_csr (c_route_id IN NUMBER)
8178 IS
8179 SELECT panel_type ,
8180 panel_type_desc
8181 FROM AHL_RT_OPER_ACCESS_PANELS_V
8182 WHERE ASSOCIATION_TYPE_CODE = 'ROUTE'
8183 AND object_id = c_route_id;
8184
8185 CURSOR chk_route_res_csr (p_route_id IN NUMBER)
8186 IS
8187 SELECT 'Y'
8188 FROM AHL_RT_OPER_RESOURCES AR
8189 WHERE AR.association_type_code='ROUTE'
8190 AND AR.object_id=p_route_id
8191 AND ROWNUM < 2;
8192
8193 l_route_doc VARCHAR2(4000) := '
8194 SELECT DOC.DOCUMENT_NO "DocumentNumber" ,
8195 DOC.DOCUMENT_TITLE "DocumentTitle" ,
8196 DOC.DOC_TYPE_CODE "DocumentType" ,
8197 DOCV.DOC_SUB_TYPE_CODE "DocumentSubType" ,
8198 DOC.ASO_OBJECT_TYPE_DESC "AsoObjectTypeDesc" ,
8199 NULL "OperationSequenceNumber",
8200 DOC.REVISION_NO "RevisionNumber" ,
8201 DOC.CHAPTER "Chapter" ,
8202 DOC.SECTION "Section" ,
8203 DOC.SUBJECT "Subject" ,
8204 DOC.PAGE "Page" ,
8205 DOC.FIGURE "Figure" ,
8206 DOC.NOTE "Note"
8207 FROM --AHL_WORKORDERS WO ,
8208 AHL_DOCUMENT_ASSOS_V DOC,
8209 AHL_DOCUMENTS_V DOCV
8210 WHERE --WO.ROUTE_ID = DOC.ASO_OBJECT_ID
8211 DOC.DOCUMENT_ID = DOCV.DOCUMENT_ID
8212 AND DOC.ASO_OBJECT_TYPE_CODE = ''ROUTE''
8213 AND DOC.ASO_OBJECT_ID = :1';
8214 --AND WO.WORKORDER_ID = :1';
8215
8216
8217 l_op_doc VARCHAR2(4000) := '
8218 SELECT DOC.DOCUMENT_NO "DocumentNumber" ,
8219 DOC.DOCUMENT_TITLE "DocumentTitle" ,
8220 DOC.DOC_TYPE_CODE "DocumentType" ,
8221 DOCV.DOC_SUB_TYPE_CODE "DocumentSubType" ,
8222 DOC.ASO_OBJECT_TYPE_DESC "AsoObjectTypeDesc" ,
8223 WOP.OPERATION_SEQUENCE_NUM "OperationSequenceNumber",
8224 DOC.REVISION_NO "RevisionNumber" ,
8225 DOC.CHAPTER "Chapter" ,
8226 DOC.SECTION "Section" ,
8227 DOC.SUBJECT "Subject" ,
8228 DOC.PAGE "Page" ,
8229 DOC.FIGURE "Figure" ,
8230 DOC.NOTE "Note"
8231 FROM AHL_WORKORDER_OPERATIONS WOP,
8232 AHL_DOCUMENT_ASSOS_V DOC ,
8233 AHL_DOCUMENTS_V DOCV
8234 WHERE WOP.OPERATION_ID = DOC.ASO_OBJECT_ID
8235 AND DOC.DOCUMENT_ID = DOCV.DOCUMENT_ID
8236 AND DOC.ASO_OBJECT_TYPE_CODE = ''OPERATION''
8237 AND WOP.WORKORDER_ID = :1
8238 AND WOP.OPERATION_ID = :2';
8239
8240 l_mat_dffs VARCHAR2(1000) := '
8241 SELECT MA.ATTRIBUTE_CATEGORY "AttributeCategory",
8242 MA.ATTRIBUTE1 "Attribute1" ,
8243 MA.ATTRIBUTE2 "Attribute2" ,
8244 MA.ATTRIBUTE3 "Attribute3" ,
8245 MA.ATTRIBUTE4 "Attribute4" ,
8246 MA.ATTRIBUTE5 "Attribute5" ,
8247 MA.ATTRIBUTE6 "Attribute6" ,
8248 MA.ATTRIBUTE7 "Attribute7" ,
8249 MA.ATTRIBUTE8 "Attribute8" ,
8250 MA.ATTRIBUTE9 "Attribute9" ,
8251 MA.ATTRIBUTE10 "Attribute10" ,
8252 MA.ATTRIBUTE11 "Attribute11" ,
8253 MA.ATTRIBUTE12 "Attribute12" ,
8254 MA.ATTRIBUTE13 "Attribute13" ,
8255 MA.ATTRIBUTE14 "Attribute14" ,
8256 MA.ATTRIBUTE15 "Attribute15"
8257 FROM AHL_SCHEDULE_MATERIALS MA--, AHL_JOB_OPER_MATERIALS_V MV
8258 WHERE MA.SCHEDULED_MATERIAL_ID = :1';
8259
8260
8261 l_res_dffs VARCHAR2(1500) := '
8262 SELECT RE.ATTRIBUTE_CATEGORY "AttributeCategory",
8263 RE.ATTRIBUTE1 "Attribute1" ,
8264 RE.ATTRIBUTE2 "Attribute2" ,
8265 RE.ATTRIBUTE3 "Attribute3" ,
8266 RE.ATTRIBUTE4 "Attribute4" ,
8267 RE.ATTRIBUTE5 "Attribute5" ,
8268 RE.ATTRIBUTE6 "Attribute6" ,
8269 RE.ATTRIBUTE7 "Attribute7" ,
8270 RE.ATTRIBUTE8 "Attribute8" ,
8271 RE.ATTRIBUTE9 "Attribute9" ,
8272 RE.ATTRIBUTE10 "Attribute10" ,
8273 RE.ATTRIBUTE11 "Attribute11" ,
8274 RE.ATTRIBUTE12 "Attribute12" ,
8275 RE.ATTRIBUTE13 "Attribute13" ,
8276 RE.ATTRIBUTE14 "Attribute14" ,
8277 RE.ATTRIBUTE15 "Attribute15"
8278 FROM AHL_RT_OPER_RESOURCES RE, ahl_resource_mappings ar, bom_resources br
8279 WHERE br.organization_id = ar.BOM_ORG_ID
8280 AND br.resource_id = ar.BOM_RESOURCE_ID
8281 AND br.resource_id = :1
8282 AND ar.aso_resource_id = re.aso_resource_id
8283 AND re.ASSOCIATION_TYPE_CODE = :2
8284 AND re.object_id = :3';
8285
8286 l_op_dffs VARCHAR2(1000) := '
8287 SELECT OP.ATTRIBUTE_CATEGORY "AttributeCategory",
8288 OP.ATTRIBUTE1 "Attribute1" ,
8289 OP.ATTRIBUTE2 "Attribute2" ,
8290 OP.ATTRIBUTE3 "Attribute3" ,
8291 OP.ATTRIBUTE4 "Attribute4" ,
8292 OP.ATTRIBUTE5 "Attribute5" ,
8293 OP.ATTRIBUTE6 "Attribute6" ,
8294 OP.ATTRIBUTE7 "Attribute7" ,
8295 OP.ATTRIBUTE8 "Attribute8" ,
8296 OP.ATTRIBUTE9 "Attribute9" ,
8297 OP.ATTRIBUTE10 "Attribute10" ,
8298 OP.ATTRIBUTE11 "Attribute11" ,
8299 OP.ATTRIBUTE12 "Attribute12" ,
8300 OP.ATTRIBUTE13 "Attribute13" ,
8301 OP.ATTRIBUTE14 "Attribute14" ,
8302 OP.ATTRIBUTE15 "Attribute15"
8303 FROM AHL_OPERATIONS_B OP
8304 WHERE OP.OPERATION_ID = :1';
8305
8306 l_qa_plan_attr VARCHAR2(1000) := '
8307 SELECT char_id "CharId" ,
8308 prompt_sequence "PromptSequence",
8309 prompt "Prompt" ,
8310 default_value "DefaultValue"
8311 FROM QA_PLAN_CHARS
8312 WHERE plan_id = :1';
8313
8314 l_qa_res_details VARCHAR2(1000) := '
8315 SELECT QC.char_id "CharId",
8316 CI.attribute_value "AttributeValue"
8317 FROM CSI_IEA_VALUES CI,
8318 QA_PLAN_CHARS QC ,
8319 QA_RESULTS_V QR
8320 WHERE QC.plan_id = QR.plan_id
8321 AND CI.instance_id(+) = QR.csi_instance_id
8322 AND QR.collection_id = :1';
8323
8324 l_counter_det VARCHAR2(1000) := '
8325 SELECT cc.counter_template_name "CounterName",
8326 (SELECT ccr.net_reading
8327 FROM csi_counter_readings ccr
8328 WHERE ccr.counter_value_id = cc.CTR_VAL_MAX_SEQ_NO
8329 AND NVL(ccr.disabled_flag,''N'') = ''N''
8330 )
8331 "CurrentReading"
8332 --FROM csi_counter_associations cca, csi_counters_vl cc, ahl_workorders_v wo
8333 FROM csi_counter_associations cca,
8334 csi_counters_vl cc ,
8335 ahl_workorders WO ,
8336 ahl_visit_tasks_b tsk
8337 WHERE cca.counter_id = cc.counter_id
8338 AND wo.visit_task_id = tsk.visit_task_id
8339 AND source_object_code = ''CP''
8340 --AND source_object_id = wo.item_instance_id
8341 AND source_object_id = tsk.instance_id
8342 AND wo.workorder_id = :1';
8343
8344 l_counter_details VARCHAR2(500) := '
8345 SELECT cc.counter_template_name "CounterName",
8346 (SELECT ccr.net_reading
8347 FROM csi_counter_readings ccr
8348 WHERE ccr.counter_value_id = cc.CTR_VAL_MAX_SEQ_NO
8349 AND NVL(ccr.disabled_flag,''N'') = ''N''
8350 )
8351 "CurrentReading"
8352 FROM csi_counter_associations cca,
8353 csi_counters_vl cc
8354 WHERE cca.counter_id = cc.counter_id
8355 AND source_object_code = ''CP''
8356 AND source_object_id = :1';
8357
8358 l_inst_remove_det VARCHAR2(2000) := '
8359 SELECT OFFI.concatenated_segments RemovedItem ,
8360 OFFC.serial_number RemovedSerial ,
8361 PC.removed_quantity RemovedQuantity ,
8362 OFFC.lot_number RemovedLot ,
8363 OFFC.inventory_revision RemovedRevision ,
8364 ONI.concatenated_segments InstalledItem ,
8365 ONC.serial_number InstalledSerial ,
8366 PC.installed_quantity InstalledQuantity,
8367 ONC.lot_number InstalledLot ,
8368 ONC.inventory_revision InstalledRevision,
8369 DIS.position_reference position
8370 FROM ahl_part_changes_v PC ,
8371 csi_item_instances OFFC ,
8372 mtl_system_items_kfv OFFI,
8373 csi_item_instances ONC ,
8374 mtl_system_items_kfv ONI ,
8375 ahl_prd_dispositions_v DIS
8376 WHERE PC.part_change_id = DIS.part_change_id
8377 AND PC.removed_instance_id = OFFC.instance_id (+)
8378 AND PC.installed_instance_id = ONC.instance_id (+)
8379 AND OFFC.inventory_item_id = OFFI.inventory_item_id (+)
8380 AND OFFC.inv_master_organization_id = OFFI.organization_id (+)
8381 AND ONC.inventory_item_id = ONI.inventory_item_id (+)
8382 AND ONC.inv_master_organization_id = ONI.organization_id (+)
8383 AND DIS.status <> ''Terminated''
8384 AND DIS.workorder_id = :1';
8385
8386 l_tools_det VARCHAR2(1000) := '
8387 SELECT PP.OPERATION_SEQUENCE "OperationSequenceNumber",
8388 PP.RESOURCE_SEQUENCE "ResourceSequenceNumber" ,
8389 PP.RESOURCE_CODE "Item" ,
8390 PP.RESOURCE_TYPE_NAME "ItemType" ,
8391 PP.RESOURCE_NAME "Description" ,
8392 PP.QUANTITY "Quantity" ,
8393 PP.DURATION "Duration" ,
8394 PP.UOM_NAME "UOM"
8395 FROM AHL_PP_REQUIREMENT_V PP,
8396 AHL_WORKORDERS WO
8397 WHERE PP.JOB_ID = WO.WORKORDER_ID
8398 AND PP.resource_type_code = 1
8399 AND WO.WORKORDER_ID = :1';
8400
8401 wo_details_rec wo_details_csr%ROWTYPE;
8402 mat_details_rec mat_details_csr%ROWTYPE;
8403 res_req_details_rec res_req_details_csr%ROWTYPE;
8404 op_details_rec op_details_csr%ROWTYPE;
8405 route_details_rec route_details_csr%ROWTYPE;
8406 qa_plan_rec qa_plan_csr%ROWTYPE;
8407 wo_op_details_rec op_det_csr%ROWTYPE;
8408 qa_plan_attr_rec qa_plan_attr_csr%ROWTYPE;
8409 route_ffs_rec route_ffs_csr%ROWTYPE;
8410 panel_details_rec panel_details_csr%ROWTYPE;
8411 l_qa_plan_id NUMBER;
8412 l_route_op_res_found VARCHAR2(1);--R for Route, O for Operation and 'N' for none (bug 10048778 )
8413
8414 BEGIN
8415
8416 --l_merged_lob := p_merged_lob;
8417 FOR l_index IN l_wo_id_tbl.FIRST .. l_wo_id_tbl.LAST
8418 LOOP
8419 l_workorder_id := l_wo_id_tbl(l_index);
8420 OPEN wo_details_csr(l_workorder_id);
8421 -- LOOP
8422 FETCH wo_details_csr
8423 INTO wo_details_rec;
8424
8425 --EXIT WHEN wo_details_csr%NOTFOUND;
8426 IF (l_log_statement >= l_log_current_level)THEN
8427 fnd_log.string ( l_log_statement, 'ahl.plsql.'
8428 ||g_pkg_name
8429 ||'.'
8430 ||l_api_name ,'Checkpoint 3 : l_workorder_id : '
8431 || l_workorder_id);
8432 END IF;
8433 l_route_id := wo_details_rec.route_id;
8434
8435 dbms_lob.write(l_merged_lob, LENGTH('<job_card>'),LENGTH(l_merged_lob)+1, '<job_card>');
8436
8437 dbms_lob.write(l_merged_lob, LENGTH('<WorkorderId>'),LENGTH(l_merged_lob)+1, '<WorkorderId>');
8438 dbms_lob.write(l_merged_lob, LENGTH(l_workorder_id),LENGTH(l_merged_lob)+1, l_workorder_id);
8439 dbms_lob.write(l_merged_lob, LENGTH('</WorkorderId>'),LENGTH(l_merged_lob)+1, '</WorkorderId>');
8440 dbms_lob.write(l_merged_lob, LENGTH('<ObjectVersionNumber>'),LENGTH(l_merged_lob)+1, '<ObjectVersionNumber>');
8441 dbms_lob.write(l_merged_lob, LENGTH(wo_details_rec.object_version_number),LENGTH(l_merged_lob)+1, wo_details_rec.object_version_number);
8442 dbms_lob.write(l_merged_lob, LENGTH('</ObjectVersionNumber>'),LENGTH(l_merged_lob)+1, '</ObjectVersionNumber>');
8443 dbms_lob.write(l_merged_lob, LENGTH('<WorkorderNumber>'),LENGTH(l_merged_lob)+1, '<WorkorderNumber>');
8444 dummy := DBMS_XMLGEN.CONVERT(wo_details_rec.job_number);
8445 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8446 dbms_lob.write(l_merged_lob, LENGTH('</WorkorderNumber>'),LENGTH(l_merged_lob)+1, '</WorkorderNumber>');
8447 IF (wo_details_rec.job_description IS NOT NULL) THEN
8448 dbms_lob.write(l_merged_lob, LENGTH('<Description>'),LENGTH(l_merged_lob)+1, '<Description>');
8449 dummy := DBMS_XMLGEN.CONVERT(wo_details_rec.job_description);
8450 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8451 dbms_lob.write(l_merged_lob, LENGTH('</Description>'),LENGTH(l_merged_lob)+1, '</Description>');
8452 ELSE
8453 dbms_lob.write(l_merged_lob, LENGTH('<Description/>'),LENGTH(l_merged_lob)+1, '<Description/>');
8454 END IF;
8455 dbms_lob.write(l_merged_lob, LENGTH('<Status>'),LENGTH(l_merged_lob)+1, '<Status>');
8456 dummy := DBMS_XMLGEN.CONVERT(wo_details_rec.job_status_meaning);
8457 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8458 dbms_lob.write(l_merged_lob, LENGTH('</Status>'),LENGTH(l_merged_lob)+1, '</Status>');
8459 dbms_lob.write(l_merged_lob, LENGTH('<DepartmentName>'),LENGTH(l_merged_lob)+1, '<DepartmentName>');
8460 dummy := DBMS_XMLGEN.CONVERT(wo_details_rec.department_name);
8461 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8462 dbms_lob.write(l_merged_lob, LENGTH('</DepartmentName>'),LENGTH(l_merged_lob)+1, '</DepartmentName>');
8463 dbms_lob.write(l_merged_lob, LENGTH('<ScheduledStartDate>'),LENGTH(l_merged_lob)+1, '<ScheduledStartDate>');
8464 dbms_lob.write(l_merged_lob, LENGTH(wo_details_rec.scheduled_start_date),LENGTH(l_merged_lob)+1, wo_details_rec.scheduled_start_date);
8465 dbms_lob.write(l_merged_lob, LENGTH('</ScheduledStartDate>'),LENGTH(l_merged_lob)+1, '</ScheduledStartDate>');
8466 dbms_lob.write(l_merged_lob, LENGTH('<ScheduledEndDate>'),LENGTH(l_merged_lob)+1, '<ScheduledEndDate>');
8467 dbms_lob.write(l_merged_lob, LENGTH(wo_details_rec.scheduled_end_date),LENGTH(l_merged_lob)+1, wo_details_rec.scheduled_end_date);
8468 dbms_lob.write(l_merged_lob, LENGTH('</ScheduledEndDate>'),LENGTH(l_merged_lob)+1, '</ScheduledEndDate>');
8469 IF (wo_details_rec.date_released IS NOT NULL) THEN
8470 dbms_lob.write(l_merged_lob, LENGTH('<ReleaseDate>'),LENGTH(l_merged_lob)+1, '<ReleaseDate>');
8471 dbms_lob.write(l_merged_lob, LENGTH(wo_details_rec.date_released),LENGTH(l_merged_lob)+1, wo_details_rec.date_released);
8472 dbms_lob.write(l_merged_lob, LENGTH('</ReleaseDate>'),LENGTH(l_merged_lob)+1, '</ReleaseDate>');
8473 ELSE
8474 dbms_lob.write(l_merged_lob, LENGTH('<ReleaseDate/>'),LENGTH(l_merged_lob)+1, '<ReleaseDate/>');
8475 END IF;
8476 IF (wo_details_rec.unit_name IS NOT NULL) THEN
8477 dbms_lob.write(l_merged_lob, LENGTH('<UnitName>'),LENGTH(l_merged_lob)+1, '<UnitName>');
8478 dummy := DBMS_XMLGEN.CONVERT(wo_details_rec.unit_name);
8479 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8480 dbms_lob.write(l_merged_lob, LENGTH('</UnitName>'),LENGTH(l_merged_lob)+1, '</UnitName>');
8481 ELSE
8482 dbms_lob.write(l_merged_lob, LENGTH('<UnitName/>'),LENGTH(l_merged_lob)+1, '<UnitName/>');
8483 END IF;
8484 IF (wo_details_rec.model_meaning IS NOT NULL) THEN
8485 dbms_lob.write(l_merged_lob, LENGTH('<Model>'),LENGTH(l_merged_lob)+1, '<Model>');
8486 dummy := DBMS_XMLGEN.CONVERT(wo_details_rec.model_meaning);
8487 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8488 dbms_lob.write(l_merged_lob, LENGTH('</Model>'),LENGTH(l_merged_lob)+1, '</Model>');
8489 ELSE
8490 dbms_lob.write(l_merged_lob, LENGTH('<Model/>'),LENGTH(l_merged_lob)+1, '<Model/>');
8491 END IF;
8492 IF (wo_details_rec.wo_part_number IS NOT NULL) THEN
8493 dbms_lob.write(l_merged_lob, LENGTH('<ItemNumber>'),LENGTH(l_merged_lob)+1, '<ItemNumber>');
8494 dummy := DBMS_XMLGEN.CONVERT(wo_details_rec.wo_part_number);
8495 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8496 dbms_lob.write(l_merged_lob, LENGTH('</ItemNumber>'),LENGTH(l_merged_lob)+1, '</ItemNumber>');
8497 ELSE
8498 dbms_lob.write(l_merged_lob, LENGTH('<ItemNumber/>'),LENGTH(l_merged_lob)+1, '<ItemNumber/>');
8499 END IF;
8500 IF (wo_details_rec.item_instance_number IS NOT NULL) THEN
8501 dbms_lob.write(l_merged_lob, LENGTH('<InstanceNumber>'),LENGTH(l_merged_lob)+1, '<InstanceNumber>');
8502 dummy := DBMS_XMLGEN.CONVERT(wo_details_rec.item_instance_number);
8503 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8504 dbms_lob.write(l_merged_lob, LENGTH('</InstanceNumber>'),LENGTH(l_merged_lob)+1, '</InstanceNumber>');
8505 ELSE
8506 dbms_lob.write(l_merged_lob, LENGTH('<InstanceNumber/>'),LENGTH(l_merged_lob)+1, '<InstanceNumber/>');
8507 END IF;
8508 IF (wo_details_rec.serial_number IS NOT NULL) THEN
8509 dbms_lob.write(l_merged_lob, LENGTH('<SerialNumber>'),LENGTH(l_merged_lob)+1, '<SerialNumber>');
8510 dummy := DBMS_XMLGEN.CONVERT(wo_details_rec.serial_number);
8511 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8512 dbms_lob.write(l_merged_lob, LENGTH('</SerialNumber>'),LENGTH(l_merged_lob)+1, '</SerialNumber>');
8513 ELSE
8514 dbms_lob.write(l_merged_lob, LENGTH('<SerialNumber/>'),LENGTH(l_merged_lob)+1, '<SerialNumber/>');
8515 END IF;
8516 IF (wo_details_rec.net_quantity IS NOT NULL) THEN
8517 dbms_lob.write(l_merged_lob, LENGTH('<Quantity>'),LENGTH(l_merged_lob)+1, '<Quantity>');
8518 dbms_lob.write(l_merged_lob, LENGTH(wo_details_rec.net_quantity),LENGTH(l_merged_lob)+1, wo_details_rec.net_quantity);
8519 dbms_lob.write(l_merged_lob, LENGTH('</Quantity>'),LENGTH(l_merged_lob)+1, '</Quantity>');
8520 ELSE
8521 dbms_lob.write(l_merged_lob, LENGTH('<Quantity/>'),LENGTH(l_merged_lob)+1, '<Quantity/>');
8522 END IF;
8523 IF (wo_details_rec.lot_number IS NOT NULL) THEN
8524 dbms_lob.write(l_merged_lob, LENGTH('<LotNumber>'),LENGTH(l_merged_lob)+1, '<LotNumber>');
8525 dummy := DBMS_XMLGEN.CONVERT(wo_details_rec.lot_number);
8526 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8527 dbms_lob.write(l_merged_lob, LENGTH('</LotNumber>'),LENGTH(l_merged_lob)+1, '</LotNumber>');
8528 ELSE
8529 dbms_lob.write(l_merged_lob, LENGTH('<LotNumber/>'),LENGTH(l_merged_lob)+1, '<LotNumber/>');
8530 END IF;
8531 IF (wo_details_rec.party_name IS NOT NULL) THEN
8532 dbms_lob.write(l_merged_lob, LENGTH('<ItemOwner>'),LENGTH(l_merged_lob)+1, '<ItemOwner>');
8533 dummy := DBMS_XMLGEN.CONVERT(wo_details_rec.party_name);
8534 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8535 dbms_lob.write(l_merged_lob, LENGTH('</ItemOwner>'),LENGTH(l_merged_lob)+1, '</ItemOwner>');
8536 ELSE
8537 dbms_lob.write(l_merged_lob, LENGTH('<ItemOwner/>'),LENGTH(l_merged_lob)+1, '<ItemOwner/>');
8538 END IF;
8539 dbms_lob.write(l_merged_lob, LENGTH('<VisitNumber>'),LENGTH(l_merged_lob)+1, '<VisitNumber>');
8540 dbms_lob.write(l_merged_lob, LENGTH(wo_details_rec.visit_number),LENGTH(l_merged_lob)+1, wo_details_rec.visit_number);
8541 dbms_lob.write(l_merged_lob, LENGTH('</VisitNumber>'),LENGTH(l_merged_lob)+1, '</VisitNumber>');
8542 IF (wo_details_rec.ata_code IS NOT NULL) THEN
8543 dbms_lob.write(l_merged_lob, LENGTH('<ATACode>'),LENGTH(l_merged_lob)+1, '<ATACode>');
8544 dummy := DBMS_XMLGEN.CONVERT(wo_details_rec.ata_code);
8545 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8546 dbms_lob.write(l_merged_lob, LENGTH('</ATACode>'),LENGTH(l_merged_lob)+1, '</ATACode>');
8547 ELSE
8548 dbms_lob.write(l_merged_lob, LENGTH('<ATACode/>'),LENGTH(l_merged_lob)+1, '<ATACode/>');
8549 END IF;
8550 l_relationship_id := AHL_UTIL_UC_PKG.Map_Instance_to_RelID(wo_details_rec.item_instance_id);
8551 IF (l_relationship_id IS NOT NULL) THEN
8552 BEGIN
8553 SELECT FLV.meaning
8554 INTO l_position_meaning
8555 FROM ahl_mc_relationships MC,
8556 FND_LOOKUP_VALUES_VL FLV
8557 WHERE FLV.LOOKUP_CODE = MC.POSITION_REF_CODE
8558 AND FLV.LOOKUP_TYPE = 'AHL_POSITION_REFERENCE'
8559 AND FLV.ENABLED_FLAG = 'Y'
8560 AND FLV.END_DATE_ACTIVE >= sysdate
8561 AND MC.relationship_id = l_relationship_id;
8562 EXCEPTION
8563 WHEN OTHERS THEN
8564 null;
8565 END;
8566
8567 IF (l_position_meaning IS NOT NULL) THEN
8568 dbms_lob.write(l_merged_lob, LENGTH('<Position>'),LENGTH(l_merged_lob)+1, '<Position>');
8569 dummy := DBMS_XMLGEN.CONVERT(l_position_meaning);
8570 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8571 dbms_lob.write(l_merged_lob, LENGTH('</Position>'),LENGTH(l_merged_lob)+1, '</Position>');
8572 ELSE
8573 dbms_lob.write(l_merged_lob, LENGTH('<Position/>'),LENGTH(l_merged_lob)+1, '<Position/>');
8574 END IF;
8575 ELSE
8576 dbms_lob.write(l_merged_lob, LENGTH('<Position/>'),LENGTH(l_merged_lob)+1, '<Position/>');
8577 END IF;
8578 IF (wo_details_rec.incident_number IS NOT NULL) THEN
8579 dbms_lob.write(l_merged_lob, LENGTH('<NonRoutineNumber>'),LENGTH(l_merged_lob)+1, '<NonRoutineNumber>');
8580 dummy := DBMS_XMLGEN.CONVERT(wo_details_rec.incident_number);
8581 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8582 dbms_lob.write(l_merged_lob, LENGTH('</NonRoutineNumber>'),LENGTH(l_merged_lob)+1, '</NonRoutineNumber>');
8583 ELSE
8584 dbms_lob.write(l_merged_lob, LENGTH('<NonRoutineNumber/>'),LENGTH(l_merged_lob)+1, '<NonRoutineNumber/>');
8585 END IF;
8586 IF (wo_details_rec.incident_type IS NOT NULL) THEN
8587 dbms_lob.write(l_merged_lob, LENGTH('<NonRoutineType>'),LENGTH(l_merged_lob)+1, '<NonRoutineType>');
8588 dummy := DBMS_XMLGEN.CONVERT(wo_details_rec.incident_type);
8589 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8590 dbms_lob.write(l_merged_lob, LENGTH('</NonRoutineType>'),LENGTH(l_merged_lob)+1, '</NonRoutineType>');
8591 ELSE
8592 dbms_lob.write(l_merged_lob, LENGTH('<NonRoutineType/>'),LENGTH(l_merged_lob)+1, '<NonRoutineType/>');
8593 END IF;
8594 IF (wo_details_rec.incident_summary IS NOT NULL) THEN
8595 dbms_lob.write(l_merged_lob, LENGTH('<ProblemSummary>'),LENGTH(l_merged_lob)+1, '<ProblemSummary>');
8596 dummy := DBMS_XMLGEN.CONVERT(wo_details_rec.incident_summary);
8597 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8598 dbms_lob.write(l_merged_lob, LENGTH('</ProblemSummary>'),LENGTH(l_merged_lob)+1, '</ProblemSummary>');
8599 ELSE
8600 dbms_lob.write(l_merged_lob, LENGTH('<ProblemSummary/>'),LENGTH(l_merged_lob)+1, '<ProblemSummary/>');
8601 END IF;
8602 IF (wo_details_rec.OriginatingWorkorder IS NOT NULL) THEN
8603 dbms_lob.write(l_merged_lob, LENGTH('<OriginatingWorkorder>'),LENGTH(l_merged_lob)+1, '<OriginatingWorkorder>');
8604 dummy := DBMS_XMLGEN.CONVERT(wo_details_rec.OriginatingWorkorder);
8605 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8606 dbms_lob.write(l_merged_lob, LENGTH('</OriginatingWorkorder>'),LENGTH(l_merged_lob)+1, '</OriginatingWorkorder>');
8607 ELSE
8608 dbms_lob.write(l_merged_lob, LENGTH('<OriginatingWorkorder/>'),LENGTH(l_merged_lob)+1, '<OriginatingWorkorder/>');
8609 END IF;
8610
8611 --counter details
8612 IF (l_log_statement >= l_log_current_level)THEN
8613 fnd_log.string (
8614 l_log_statement, 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,'Checkpoint 4 : l_workorder_id : ' || l_workorder_id);
8615 END IF;
8616 context := dbms_xmlgen.newContext(l_counter_det );
8617 DBMS_XMLGEN.setbindvalue (context, '1', l_workorder_id);
8618
8619 dbms_xmlgen.setRowsetTag(context, 'ItemCounters');
8620 dbms_xmlgen.setRowTag(context,'ItemCounter');
8621 dbms_xmlgen.setConvertSpecialChars(context, TRUE);
8622 l_counter_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
8623 dbms_xmlgen.closeContext(context);
8624 -- Write to lob only when some data exists.
8625 IF dbms_lob.getlength(l_counter_lob) > 0
8626 THEN
8627 l_offset := dbms_lob.INSTR(l_counter_lob, '>');
8628
8629 dbms_lob.copy(l_merged_lob, l_counter_lob, dbms_lob.getlength(l_counter_lob), dbms_lob.getlength(l_merged_lob)+1, l_offset+ 1);
8630
8631 END IF;
8632
8633 dbms_lob.write(l_merged_lob, length('<Route>'),length(l_merged_lob)+1, '<Route>');
8634 OPEN route_details_csr(l_route_id);
8635 LOOP
8636 FETCH route_details_csr INTO route_details_rec;
8637 EXIT WHEN route_details_csr%NOTFOUND;
8638 IF (l_log_statement >= l_log_current_level)THEN
8639 fnd_log.string (
8640 l_log_statement, 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,'Checkpoint 5 : l_route_id : ' || l_route_id);
8641 END IF;
8642
8643 dbms_lob.write(l_merged_lob, LENGTH('<RouteId>'),LENGTH(l_merged_lob)+1, '<RouteId>');
8644 dbms_lob.write(l_merged_lob, LENGTH(l_route_id),LENGTH(l_merged_lob)+1, l_route_id);
8645 dbms_lob.write(l_merged_lob, LENGTH('</RouteId>'),LENGTH(l_merged_lob)+1, '</RouteId>');
8646 dbms_lob.write(l_merged_lob, LENGTH('<ObjectVersionNumber>'),LENGTH(l_merged_lob)+1, '<ObjectVersionNumber>');
8647 dbms_lob.write(l_merged_lob, LENGTH(route_details_rec.object_version_number),LENGTH(l_merged_lob)+1, route_details_rec.object_version_number);
8648 dbms_lob.write(l_merged_lob, LENGTH('</ObjectVersionNumber>'),LENGTH(l_merged_lob)+1, '</ObjectVersionNumber>');
8649 dbms_lob.write(l_merged_lob, LENGTH('<RouteNumber>'),LENGTH(l_merged_lob)+1, '<RouteNumber>');
8650 dummy := DBMS_XMLGEN.CONVERT(route_details_rec.route_no);
8651 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8652 dbms_lob.write(l_merged_lob, LENGTH('</RouteNumber>'),LENGTH(l_merged_lob)+1, '</RouteNumber>');
8653 dbms_lob.write(l_merged_lob, LENGTH('<RouteTitle>'),LENGTH(l_merged_lob)+1, '<RouteTitle>');
8654 dummy := DBMS_XMLGEN.CONVERT(route_details_rec.title);
8655 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8656 dbms_lob.write(l_merged_lob, LENGTH('</RouteTitle>'),LENGTH(l_merged_lob)+1, '</RouteTitle>');
8657 IF (route_details_rec.route_type IS NOT NULL) THEN
8658 dbms_lob.write(l_merged_lob, LENGTH('<RouteType>'),LENGTH(l_merged_lob)+1, '<RouteType>');
8659 dummy := DBMS_XMLGEN.CONVERT(route_details_rec.route_type);
8660 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8661 dbms_lob.write(l_merged_lob, LENGTH('</RouteType>'),LENGTH(l_merged_lob)+1, '</RouteType>');
8662 ELSE
8663 dbms_lob.write(l_merged_lob, LENGTH('<RouteType/>'),LENGTH(l_merged_lob)+1, '<RouteType/>');
8664 END IF;
8665 dbms_lob.write(l_merged_lob, LENGTH('<Revision>'),LENGTH(l_merged_lob)+1, '<Revision>');
8666 dummy := DBMS_XMLGEN.CONVERT(route_details_rec.revision_number);
8667 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8668 dbms_lob.write(l_merged_lob, LENGTH('</Revision>'),LENGTH(l_merged_lob)+1, '</Revision>');
8669
8670 dbms_lob.write(l_merged_lob, LENGTH('<RevisionDate>'),LENGTH(l_merged_lob)+1, '<RevisionDate>');
8671 dummy := DBMS_XMLGEN.CONVERT(route_details_rec.LAST_UPDATE_DATE);
8672 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8673 dbms_lob.write(l_merged_lob, LENGTH('</RevisionDate>'),LENGTH(l_merged_lob)+1, '</RevisionDate>');
8674
8675
8676 IF (route_details_rec.enigma_doc_id IS NOT NULL) THEN
8677 dbms_lob.write(l_merged_lob, LENGTH('<EnigmaDocId>'),LENGTH(l_merged_lob)+1, '<EnigmaDocId>');
8678 dummy := DBMS_XMLGEN.CONVERT(route_details_rec.enigma_doc_id);
8679 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8680 dbms_lob.write(l_merged_lob, LENGTH('</EnigmaDocId>'),LENGTH(l_merged_lob)+1, '</EnigmaDocId>');
8681 ELSE
8682 dbms_lob.write(l_merged_lob, LENGTH('<EnigmaDocId/>'),LENGTH(l_merged_lob)+1, '<EnigmaDocId/>');
8683 END IF;
8684 IF (route_details_rec.enigma_route_id IS NOT NULL) THEN
8685 dbms_lob.write(l_merged_lob, LENGTH('<EnigmaRouteId>'),LENGTH(l_merged_lob)+1, '<EnigmaRouteId>');
8686 dummy := DBMS_XMLGEN.CONVERT(route_details_rec.enigma_route_id);
8687 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8688 dbms_lob.write(l_merged_lob, LENGTH('</EnigmaRouteId>'),LENGTH(l_merged_lob)+1, '</EnigmaRouteId>');
8689 ELSE
8690 dbms_lob.write(l_merged_lob, LENGTH('<EnigmaRouteId/>'),LENGTH(l_merged_lob)+1, '<EnigmaRouteId/>');
8691 END IF;
8692 IF (route_details_rec.zone IS NOT NULL) THEN
8693 dbms_lob.write(l_merged_lob, LENGTH('<Zone>'),LENGTH(l_merged_lob)+1, '<Zone>');
8694 dummy := DBMS_XMLGEN.CONVERT(route_details_rec.zone);
8695 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8696 dbms_lob.write(l_merged_lob, LENGTH('</Zone>'),LENGTH(l_merged_lob)+1, '</Zone>');
8697 ELSE
8698 dbms_lob.write(l_merged_lob, LENGTH('<Zone/>'),LENGTH(l_merged_lob)+1, '<Zone/>');
8699 END IF;
8700 IF (route_details_rec.sub_zone IS NOT NULL) THEN
8701 dbms_lob.write(l_merged_lob, LENGTH('<SubZone>'),LENGTH(l_merged_lob)+1, '<SubZone>');
8702 dummy := DBMS_XMLGEN.CONVERT(route_details_rec.sub_zone);
8703 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8704 dbms_lob.write(l_merged_lob, LENGTH('</SubZone>'),LENGTH(l_merged_lob)+1, '</SubZone>');
8705 ELSE
8706 dbms_lob.write(l_merged_lob, LENGTH('<SubZone/>'),LENGTH(l_merged_lob)+1, '<SubZone/>');
8707 END IF;
8708 IF (route_details_rec.process IS NOT NULL) THEN
8709 dbms_lob.write(l_merged_lob, LENGTH('<Process>'),LENGTH(l_merged_lob)+1, '<Process>');
8710 dummy := DBMS_XMLGEN.CONVERT(route_details_rec.process);
8711 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8712 dbms_lob.write(l_merged_lob, LENGTH('</Process>'),LENGTH(l_merged_lob)+1, '</Process>');
8713 ELSE
8714 dbms_lob.write(l_merged_lob, LENGTH('<Process/>'),LENGTH(l_merged_lob)+1, '<Process/>');
8715 END IF;
8716 IF (route_details_rec.job_card_lyt_meaning IS NOT NULL) THEN
8717 dbms_lob.write(l_merged_lob, LENGTH('<JobCardType>'),LENGTH(l_merged_lob)+1, '<JobCardType>');
8718 dummy := DBMS_XMLGEN.CONVERT(route_details_rec.job_card_lyt_meaning);
8719 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8720 dbms_lob.write(l_merged_lob, LENGTH('</JobCardType>'),LENGTH(l_merged_lob)+1, '</JobCardType>');
8721 ELSE
8722 dbms_lob.write(l_merged_lob, LENGTH('<JobCardType/>'),LENGTH(l_merged_lob)+1, '<JobCardType/>');
8723 END IF;
8724 IF (route_details_rec.model_code IS NOT NULL) THEN
8725 dbms_lob.write(l_merged_lob, LENGTH('<ModelCode>'),LENGTH(l_merged_lob)+1, '<ModelCode>');
8726 dummy := DBMS_XMLGEN.CONVERT(route_details_rec.model_code);
8727 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8728 dbms_lob.write(l_merged_lob, LENGTH('</ModelCode>'),LENGTH(l_merged_lob)+1, '</ModelCode>');
8729 ELSE
8730 dbms_lob.write(l_merged_lob, LENGTH('<ModelCode/>'),LENGTH(l_merged_lob)+1, '<ModelCode/>');
8731 END IF;
8732
8733 IF (l_log_statement >= l_log_current_level)THEN
8734 fnd_log.string ( l_log_statement, 'ahl.plsql.'
8735 ||g_pkg_name
8736 ||'.'
8737 ||l_api_name ,'Checkpoint 6 : l_route_id : '
8738 || l_route_id);
8739 END IF;
8740
8741 OPEN route_ffs_csr(l_route_id);
8742 FETCH route_ffs_csr
8743 INTO route_ffs_rec;
8744
8745 CLOSE route_ffs_csr;
8746
8747 IF (l_log_statement >= l_log_current_level)THEN
8748 fnd_log.string ( l_log_statement, 'ahl.plsql.'
8749 ||g_pkg_name
8750 ||'.'
8751 ||l_api_name ,'Checkpoint 7 : l_route_id : '
8752 || l_route_id);
8753 END IF;
8754
8755 dbms_lob.write(l_merged_lob, LENGTH('<RouteKFFs>'),LENGTH(l_merged_lob)+1, '<RouteKFFs>');
8756 IF (route_ffs_rec.Segment1 IS NOT NULL) THEN
8757 dbms_lob.write(l_merged_lob, LENGTH('<Segment1>'),LENGTH(l_merged_lob)+1, '<Segment1>');
8758 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Segment1);
8759 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8760 dbms_lob.write(l_merged_lob, LENGTH('</Segment1>'),LENGTH(l_merged_lob)+1, '</Segment1>');
8761 ELSE
8762 dbms_lob.write(l_merged_lob, LENGTH('<Segment1/>'),LENGTH(l_merged_lob)+1, '<Segment1/>');
8763 END IF;
8764 IF (route_ffs_rec.Segment2 IS NOT NULL) THEN
8765 dbms_lob.write(l_merged_lob, LENGTH('<Segment2>'),LENGTH(l_merged_lob)+1, '<Segment2>');
8766 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Segment2);
8767 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8768 dbms_lob.write(l_merged_lob, LENGTH('</Segment2>'),LENGTH(l_merged_lob)+1, '</Segment2>');
8769 ELSE
8770 dbms_lob.write(l_merged_lob, LENGTH('<Segment2/>'),LENGTH(l_merged_lob)+1, '<Segment2/>');
8771 END IF;
8772 IF (route_ffs_rec.Segment3 IS NOT NULL) THEN
8773 dbms_lob.write(l_merged_lob, LENGTH('<Segment3>'),LENGTH(l_merged_lob)+1, '<Segment3>');
8774 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Segment3);
8775 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8776 dbms_lob.write(l_merged_lob, LENGTH('</Segment3>'),LENGTH(l_merged_lob)+1, '</Segment3>');
8777 ELSE
8778 dbms_lob.write(l_merged_lob, LENGTH('<Segment3/>'),LENGTH(l_merged_lob)+1, '<Segment3/>');
8779 END IF;
8780 IF (route_ffs_rec.Segment4 IS NOT NULL) THEN
8781 dbms_lob.write(l_merged_lob, LENGTH('<Segment4>'),LENGTH(l_merged_lob)+1, '<Segment4>');
8782 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Segment4);
8783 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8784 dbms_lob.write(l_merged_lob, LENGTH('</Segment4>'),LENGTH(l_merged_lob)+1, '</Segment4>');
8785 ELSE
8786 dbms_lob.write(l_merged_lob, LENGTH('<Segment4/>'),LENGTH(l_merged_lob)+1, '<Segment4/>');
8787 END IF;
8788 IF (route_ffs_rec.Segment5 IS NOT NULL) THEN
8789 dbms_lob.write(l_merged_lob, LENGTH('<Segment5>'),LENGTH(l_merged_lob)+1, '<Segment5>');
8790 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Segment5);
8791 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8792 dbms_lob.write(l_merged_lob, LENGTH('</Segment5>'),LENGTH(l_merged_lob)+1, '</Segment5>');
8793 ELSE
8794 dbms_lob.write(l_merged_lob, LENGTH('<Segment5/>'),LENGTH(l_merged_lob)+1, '<Segment5/>');
8795 END IF;
8796 IF (route_ffs_rec.Segment6 IS NOT NULL) THEN
8797 dbms_lob.write(l_merged_lob, LENGTH('<Segment6>'),LENGTH(l_merged_lob)+1, '<Segment6>');
8798 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Segment6);
8799 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8800 dbms_lob.write(l_merged_lob, LENGTH('</Segment6>'),LENGTH(l_merged_lob)+1, '</Segment6>');
8801 ELSE
8802 dbms_lob.write(l_merged_lob, LENGTH('<Segment6/>'),LENGTH(l_merged_lob)+1, '<Segment6/>');
8803 END IF;
8804 IF (route_ffs_rec.Segment7 IS NOT NULL) THEN
8805 dbms_lob.write(l_merged_lob, LENGTH('<Segment7>'),LENGTH(l_merged_lob)+1, '<Segment7>');
8806 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Segment7);
8807 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8808 dbms_lob.write(l_merged_lob, LENGTH('</Segment7>'),LENGTH(l_merged_lob)+1, '</Segment7>');
8809 ELSE
8810 dbms_lob.write(l_merged_lob, LENGTH('<Segment7/>'),LENGTH(l_merged_lob)+1, '<Segment7/>');
8811 END IF;
8812 IF (route_ffs_rec.Segment8 IS NOT NULL) THEN
8813 dbms_lob.write(l_merged_lob, LENGTH('<Segment8>'),LENGTH(l_merged_lob)+1, '<Segment8>');
8814 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Segment8);
8815 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8816 dbms_lob.write(l_merged_lob, LENGTH('</Segment8>'),LENGTH(l_merged_lob)+1, '</Segment8>');
8817 ELSE
8818 dbms_lob.write(l_merged_lob, LENGTH('<Segment8/>'),LENGTH(l_merged_lob)+1, '<Segment8/>');
8819 END IF;
8820 IF (route_ffs_rec.Segment9 IS NOT NULL) THEN
8821 dbms_lob.write(l_merged_lob, LENGTH('<Segment9>'),LENGTH(l_merged_lob)+1, '<Segment9>');
8822 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Segment1);
8823 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8824 dbms_lob.write(l_merged_lob, LENGTH('</Segment9>'),LENGTH(l_merged_lob)+1, '</Segment9>');
8825 ELSE
8826 dbms_lob.write(l_merged_lob, LENGTH('<Segment9/>'),LENGTH(l_merged_lob)+1, '<Segment9/>');
8827 END IF;
8828 IF (route_ffs_rec.Segment10 IS NOT NULL) THEN
8829 dbms_lob.write(l_merged_lob, LENGTH('<Segment10>'),LENGTH(l_merged_lob)+1, '<Segment10>');
8830 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Segment10);
8831 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8832 dbms_lob.write(l_merged_lob, LENGTH('</Segment10>'),LENGTH(l_merged_lob)+1, '</Segment10>');
8833 ELSE
8834 dbms_lob.write(l_merged_lob, LENGTH('<Segment10/>'),LENGTH(l_merged_lob)+1, '<Segment10/>');
8835 END IF;
8836 IF (route_ffs_rec.Segment11 IS NOT NULL) THEN
8837 dbms_lob.write(l_merged_lob, LENGTH('<Segment11>'),LENGTH(l_merged_lob)+1, '<Segment11>');
8838 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Segment11);
8839 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8840 dbms_lob.write(l_merged_lob, LENGTH('</Segment11>'),LENGTH(l_merged_lob)+1, '</Segment11>');
8841 ELSE
8842 dbms_lob.write(l_merged_lob, LENGTH('<Segment11/>'),LENGTH(l_merged_lob)+1, '<Segment11/>');
8843 END IF;
8844 IF (route_ffs_rec.Segment12 IS NOT NULL) THEN
8845 dbms_lob.write(l_merged_lob, LENGTH('<Segment12>'),LENGTH(l_merged_lob)+1, '<Segment12>');
8846 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Segment12);
8847 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8848 dbms_lob.write(l_merged_lob, LENGTH('</Segment12>'),LENGTH(l_merged_lob)+1, '</Segment12>');
8849 ELSE
8850 dbms_lob.write(l_merged_lob, LENGTH('<Segment12/>'),LENGTH(l_merged_lob)+1, '<Segment12/>');
8851 END IF;
8852 IF (route_ffs_rec.Segment13 IS NOT NULL) THEN
8853 dbms_lob.write(l_merged_lob, LENGTH('<Segment13>'),LENGTH(l_merged_lob)+1, '<Segment13>');
8854 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Segment13);
8855 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8856 dbms_lob.write(l_merged_lob, LENGTH('</Segment13>'),LENGTH(l_merged_lob)+1, '</Segment13>');
8857 ELSE
8858 dbms_lob.write(l_merged_lob, LENGTH('<Segment13/>'),LENGTH(l_merged_lob)+1, '<Segment13/>');
8859 END IF;
8860 IF (route_ffs_rec.Segment14 IS NOT NULL) THEN
8861 dbms_lob.write(l_merged_lob, LENGTH('<Segment14>'),LENGTH(l_merged_lob)+1, '<Segment14>');
8862 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Segment14);
8863 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8864 dbms_lob.write(l_merged_lob, LENGTH('</Segment14>'),LENGTH(l_merged_lob)+1, '</Segment14>');
8865 ELSE
8866 dbms_lob.write(l_merged_lob, LENGTH('<Segment14/>'),LENGTH(l_merged_lob)+1, '<Segment14/>');
8867 END IF;
8868 IF (route_ffs_rec.Segment15 IS NOT NULL) THEN
8869 dbms_lob.write(l_merged_lob, LENGTH('<Segment15>'),LENGTH(l_merged_lob)+1, '<Segment15>');
8870 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Segment15);
8871 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8872 dbms_lob.write(l_merged_lob, LENGTH('</Segment15>'),LENGTH(l_merged_lob)+1, '</Segment15>');
8873 ELSE
8874 dbms_lob.write(l_merged_lob, LENGTH('<Segment15/>'),LENGTH(l_merged_lob)+1, '<Segment15/>');
8875 END IF;
8876
8877 BEGIN
8878 select concatenated_segments into l_concat_segment
8879 from ahl_routes_b_kfv
8880 where route_id = l_route_id;
8881 EXCEPTION
8882 WHEN OTHERS THEN
8883 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8884 END;
8885
8886 IF (l_log_statement >= l_log_current_level)THEN
8887 fnd_log.string ( l_log_statement, 'ahl.plsql.'
8888 ||g_pkg_name
8889 ||'.'
8890 ||l_api_name ,'Checkpoint 7.1 : l_route_id:concatenated_segments:'
8891 || l_route_id || ':' || l_concat_segment);
8892 END IF;
8893
8894 Get_Route_KFF_Desc(l_concat_segment, l_mti_seglist, kff_return_status);
8895
8896 IF (l_log_statement >= l_log_current_level)THEN
8897 fnd_log.string ( l_log_statement, 'ahl.plsql.'
8898 ||g_pkg_name
8899 ||'.'
8900 ||l_api_name ,'Checkpoint 7.2 : l_route_id:kff_return_status:'
8901 || l_route_id || ':' || kff_return_status);
8902 END IF;
8903
8904 IF (kff_return_status = FND_API.G_RET_STS_SUCCESS) THEN
8905
8906 IF (l_mti_seglist(1) IS NOT NULL) THEN
8907 dbms_lob.write(l_merged_lob, LENGTH('<Segment1Desc>'),LENGTH(l_merged_lob)+1, '<Segment1Desc>');
8908 dummy := DBMS_XMLGEN.CONVERT(l_mti_seglist(1));
8909 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8910 dbms_lob.write(l_merged_lob, LENGTH('</Segment1Desc>'),LENGTH(l_merged_lob)+1, '</Segment1Desc>');
8911 ELSE
8912 dbms_lob.write(l_merged_lob, LENGTH('<Segment1Desc/>'),LENGTH(l_merged_lob)+1, '<Segment1Desc/>');
8913 END IF;
8914 IF (l_mti_seglist(2) IS NOT NULL) THEN
8915 dbms_lob.write(l_merged_lob, LENGTH('<Segment2Desc>'),LENGTH(l_merged_lob)+1, '<Segment2Desc>');
8916 dummy := DBMS_XMLGEN.CONVERT(l_mti_seglist(2));
8917 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8918 dbms_lob.write(l_merged_lob, LENGTH('</Segment2Desc>'),LENGTH(l_merged_lob)+1, '</Segment2Desc>');
8919 ELSE
8920 dbms_lob.write(l_merged_lob, LENGTH('<Segment2Desc/>'),LENGTH(l_merged_lob)+1, '<Segment2Desc/>');
8921 END IF;
8922 IF (l_mti_seglist(3) IS NOT NULL) THEN
8923 dbms_lob.write(l_merged_lob, LENGTH('<Segment3Desc>'),LENGTH(l_merged_lob)+1, '<Segment3Desc>');
8924 dummy := DBMS_XMLGEN.CONVERT(l_mti_seglist(3));
8925 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8926 dbms_lob.write(l_merged_lob, LENGTH('</Segment3Desc>'),LENGTH(l_merged_lob)+1, '</Segment3Desc>');
8927 ELSE
8928 dbms_lob.write(l_merged_lob, LENGTH('<Segment3Desc/>'),LENGTH(l_merged_lob)+1, '<Segment3Desc/>');
8929 END IF;
8930 IF (l_mti_seglist(4) IS NOT NULL) THEN
8931 dbms_lob.write(l_merged_lob, LENGTH('<Segment4Desc>'),LENGTH(l_merged_lob)+1, '<Segment4Desc>');
8932 dummy := DBMS_XMLGEN.CONVERT(l_mti_seglist(4));
8933 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8934 dbms_lob.write(l_merged_lob, LENGTH('</Segment4Desc>'),LENGTH(l_merged_lob)+1, '</Segment4Desc>');
8935 ELSE
8936 dbms_lob.write(l_merged_lob, LENGTH('<Segment4Desc/>'),LENGTH(l_merged_lob)+1, '<Segment4Desc/>');
8937 END IF;
8938 IF (l_mti_seglist(5) IS NOT NULL) THEN
8939 dbms_lob.write(l_merged_lob, LENGTH('<Segment5Desc>'),LENGTH(l_merged_lob)+1, '<Segment5Desc>');
8940 dummy := DBMS_XMLGEN.CONVERT(l_mti_seglist(5));
8941 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8942 dbms_lob.write(l_merged_lob, LENGTH('</Segment5Desc>'),LENGTH(l_merged_lob)+1, '</Segment5Desc>');
8943 ELSE
8944 dbms_lob.write(l_merged_lob, LENGTH('<Segment5Desc/>'),LENGTH(l_merged_lob)+1, '<Segment5Desc/>');
8945 END IF;
8946 IF (l_mti_seglist(6) IS NOT NULL) THEN
8947 dbms_lob.write(l_merged_lob, LENGTH('<Segment6Desc>'),LENGTH(l_merged_lob)+1, '<Segment6Desc>');
8948 dummy := DBMS_XMLGEN.CONVERT(l_mti_seglist(6));
8949 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8950 dbms_lob.write(l_merged_lob, LENGTH('</Segment6Desc>'),LENGTH(l_merged_lob)+1, '</Segment6Desc>');
8951 ELSE
8952 dbms_lob.write(l_merged_lob, LENGTH('<Segment6Desc/>'),LENGTH(l_merged_lob)+1, '<Segment6Desc/>');
8953 END IF;
8954 IF (l_mti_seglist(7) IS NOT NULL) THEN
8955 dbms_lob.write(l_merged_lob, LENGTH('<Segment7Desc>'),LENGTH(l_merged_lob)+1, '<Segment7Desc>');
8956 dummy := DBMS_XMLGEN.CONVERT(l_mti_seglist(7));
8957 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8958 dbms_lob.write(l_merged_lob, LENGTH('</Segment7Desc>'),LENGTH(l_merged_lob)+1, '</Segment7Desc>');
8959 ELSE
8960 dbms_lob.write(l_merged_lob, LENGTH('<Segment7Desc/>'),LENGTH(l_merged_lob)+1, '<Segment7Desc/>');
8961 END IF;
8962 IF (l_mti_seglist(8) IS NOT NULL) THEN
8963 dbms_lob.write(l_merged_lob, LENGTH('<Segment8Desc>'),LENGTH(l_merged_lob)+1, '<Segment8Desc>');
8964 dummy := DBMS_XMLGEN.CONVERT(l_mti_seglist(8));
8965 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8966 dbms_lob.write(l_merged_lob, LENGTH('</Segment8Desc>'),LENGTH(l_merged_lob)+1, '</Segment8Desc>');
8967 ELSE
8968 dbms_lob.write(l_merged_lob, LENGTH('<Segment8Desc/>'),LENGTH(l_merged_lob)+1, '<Segment8Desc/>');
8969 END IF;
8970 IF (l_mti_seglist(9) IS NOT NULL) THEN
8971 dbms_lob.write(l_merged_lob, LENGTH('<Segment9Desc>'),LENGTH(l_merged_lob)+1, '<Segment9Desc>');
8972 dummy := DBMS_XMLGEN.CONVERT(l_mti_seglist(9));
8973 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8974 dbms_lob.write(l_merged_lob, LENGTH('</Segment9Desc>'),LENGTH(l_merged_lob)+1, '</Segment9Desc>');
8975 ELSE
8976 dbms_lob.write(l_merged_lob, LENGTH('<Segment9Desc/>'),LENGTH(l_merged_lob)+1, '<Segment9Desc/>');
8977 END IF;
8978 IF (l_mti_seglist(10) IS NOT NULL) THEN
8979 dbms_lob.write(l_merged_lob, LENGTH('<Segment10Desc>'),LENGTH(l_merged_lob)+1, '<Segment10Desc>');
8980 dummy := DBMS_XMLGEN.CONVERT(l_mti_seglist(10));
8981 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8982 dbms_lob.write(l_merged_lob, LENGTH('</Segment10Desc>'),LENGTH(l_merged_lob)+1, '</Segment10Desc>');
8983 ELSE
8984 dbms_lob.write(l_merged_lob, LENGTH('<Segment10Desc/>'),LENGTH(l_merged_lob)+1, '<Segment10Desc/>');
8985 END IF;
8986 IF (l_mti_seglist(11) IS NOT NULL) THEN
8987 dbms_lob.write(l_merged_lob, LENGTH('<Segment11Desc>'),LENGTH(l_merged_lob)+1, '<Segment11Desc>');
8988 dummy := DBMS_XMLGEN.CONVERT(l_mti_seglist(11));
8989 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8990 dbms_lob.write(l_merged_lob, LENGTH('</Segment11Desc>'),LENGTH(l_merged_lob)+1, '</Segment11Desc>');
8991 ELSE
8992 dbms_lob.write(l_merged_lob, LENGTH('<Segment11Desc/>'),LENGTH(l_merged_lob)+1, '<Segment11Desc/>');
8993 END IF;
8994 IF (l_mti_seglist(12) IS NOT NULL) THEN
8995 dbms_lob.write(l_merged_lob, LENGTH('<Segment12Desc>'),LENGTH(l_merged_lob)+1, '<Segment12Desc>');
8996 dummy := DBMS_XMLGEN.CONVERT(l_mti_seglist(12));
8997 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
8998 dbms_lob.write(l_merged_lob, LENGTH('</Segment12Desc>'),LENGTH(l_merged_lob)+1, '</Segment12Desc>');
8999 ELSE
9000 dbms_lob.write(l_merged_lob, LENGTH('<Segment12Desc/>'),LENGTH(l_merged_lob)+1, '<Segment12Desc/>');
9001 END IF;
9002 IF (l_mti_seglist(13) IS NOT NULL) THEN
9003 dbms_lob.write(l_merged_lob, LENGTH('<Segment13Desc>'),LENGTH(l_merged_lob)+1, '<Segment13Desc>');
9004 dummy := DBMS_XMLGEN.CONVERT(l_mti_seglist(13));
9005 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9006 dbms_lob.write(l_merged_lob, LENGTH('</Segment13Desc>'),LENGTH(l_merged_lob)+1, '</Segment13Desc>');
9007 ELSE
9008 dbms_lob.write(l_merged_lob, LENGTH('<Segment13Desc/>'),LENGTH(l_merged_lob)+1, '<Segment13Desc/>');
9009 END IF;
9010 IF (l_mti_seglist(14) IS NOT NULL) THEN
9011 dbms_lob.write(l_merged_lob, LENGTH('<Segment14Desc>'),LENGTH(l_merged_lob)+1, '<Segment14Desc>');
9012 dummy := DBMS_XMLGEN.CONVERT(l_mti_seglist(14));
9013 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9014 dbms_lob.write(l_merged_lob, LENGTH('</Segment14Desc>'),LENGTH(l_merged_lob)+1, '</Segment14Desc>');
9015 ELSE
9016 dbms_lob.write(l_merged_lob, LENGTH('<Segment14Desc/>'),LENGTH(l_merged_lob)+1, '<Segment14Desc/>');
9017 END IF;
9018 IF (l_mti_seglist(15) IS NOT NULL) THEN
9019 dbms_lob.write(l_merged_lob, LENGTH('<Segment15Desc>'),LENGTH(l_merged_lob)+1, '<Segment15Desc>');
9020 dummy := DBMS_XMLGEN.CONVERT(l_mti_seglist(15));
9021 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9022 dbms_lob.write(l_merged_lob, LENGTH('</Segment15Desc>'),LENGTH(l_merged_lob)+1, '</Segment15Desc>');
9023 ELSE
9024 dbms_lob.write(l_merged_lob, LENGTH('<Segment15Desc/>'),LENGTH(l_merged_lob)+1, '<Segment15Desc/>');
9025 END IF;
9026 END IF;
9027
9028 dbms_lob.write(l_merged_lob, LENGTH('</RouteKFFs>'),LENGTH(l_merged_lob)+1, '</RouteKFFs>');
9029
9030 IF (l_log_statement >= l_log_current_level)THEN
9031 fnd_log.string ( l_log_statement, 'ahl.plsql.'
9032 ||g_pkg_name
9033 ||'.'
9034 ||l_api_name ,'Checkpoint 7.3 : Route DFF: l_route_id:'
9035 || l_route_id);
9036 END IF;
9037
9038 -- Route DFFs
9039 dbms_lob.write(l_merged_lob, LENGTH('<RouteDFFs>'),LENGTH(l_merged_lob)+1, '<RouteDFFs>');
9040 IF (route_ffs_rec.Attribute1 IS NOT NULL) THEN
9041 dbms_lob.write(l_merged_lob, LENGTH('<Attribute1>'),LENGTH(l_merged_lob)+1, '<Attribute1>');
9042 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Attribute1);
9043 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9044 dbms_lob.write(l_merged_lob, LENGTH('</Attribute1>'),LENGTH(l_merged_lob)+1, '</Attribute1>');
9045 ELSE
9046 dbms_lob.write(l_merged_lob, LENGTH('<Attribute1/>'),LENGTH(l_merged_lob)+1, '<Attribute1/>');
9047 END IF;
9048 IF (route_ffs_rec.Attribute2 IS NOT NULL) THEN
9049 dbms_lob.write(l_merged_lob, LENGTH('<Attribute2>'),LENGTH(l_merged_lob)+1, '<Attribute2>');
9050 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Attribute2);
9051 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9052 dbms_lob.write(l_merged_lob, LENGTH('</Attribute2>'),LENGTH(l_merged_lob)+1, '</Attribute2>');
9053 ELSE
9054 dbms_lob.write(l_merged_lob, LENGTH('<Attribute2/>'),LENGTH(l_merged_lob)+1, '<Attribute2/>');
9055 END IF;
9056 IF (route_ffs_rec.Attribute3 IS NOT NULL) THEN
9057 dbms_lob.write(l_merged_lob, LENGTH('<Attribute3>'),LENGTH(l_merged_lob)+1, '<Attribute3>');
9058 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Attribute3);
9059 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9060 dbms_lob.write(l_merged_lob, LENGTH('</Attribute3>'),LENGTH(l_merged_lob)+1, '</Attribute3>');
9061 ELSE
9062 dbms_lob.write(l_merged_lob, LENGTH('<Attribute3/>'),LENGTH(l_merged_lob)+1, '<Attribute3/>');
9063 END IF;
9064 IF (route_ffs_rec.Attribute4 IS NOT NULL) THEN
9065 dbms_lob.write(l_merged_lob, LENGTH('<Attribute4>'),LENGTH(l_merged_lob)+1, '<Attribute4>');
9066 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Attribute4);
9067 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9068 dbms_lob.write(l_merged_lob, LENGTH('</Attribute4>'),LENGTH(l_merged_lob)+1, '</Attribute4>');
9069 ELSE
9070 dbms_lob.write(l_merged_lob, LENGTH('<Attribute4/>'),LENGTH(l_merged_lob)+1, '<Attribute4/>');
9071 END IF;
9072 IF (route_ffs_rec.Attribute5 IS NOT NULL) THEN
9073 dbms_lob.write(l_merged_lob, LENGTH('<Attribute5>'),LENGTH(l_merged_lob)+1, '<Attribute5>');
9074 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Attribute5);
9075 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9076 dbms_lob.write(l_merged_lob, LENGTH('</Attribute5>'),LENGTH(l_merged_lob)+1, '</Attribute5>');
9077 ELSE
9078 dbms_lob.write(l_merged_lob, LENGTH('<Attribute5/>'),LENGTH(l_merged_lob)+1, '<Attribute5/>');
9079 END IF;
9080 IF (route_ffs_rec.Attribute6 IS NOT NULL) THEN
9081 dbms_lob.write(l_merged_lob, LENGTH('<Attribute6>'),LENGTH(l_merged_lob)+1, '<Attribute6>');
9082 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Attribute6);
9083 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9084 dbms_lob.write(l_merged_lob, LENGTH('</Attribute6>'),LENGTH(l_merged_lob)+1, '</Attribute6>');
9085 ELSE
9086 dbms_lob.write(l_merged_lob, LENGTH('<Attribute6/>'),LENGTH(l_merged_lob)+1, '<Attribute6/>');
9087 END IF;
9088 IF (route_ffs_rec.Attribute7 IS NOT NULL) THEN
9089 dbms_lob.write(l_merged_lob, LENGTH('<Attribute7>'),LENGTH(l_merged_lob)+1, '<Attribute7>');
9090 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Attribute7);
9091 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9092 dbms_lob.write(l_merged_lob, LENGTH('</Attribute7>'),LENGTH(l_merged_lob)+1, '</Attribute7>');
9093 ELSE
9094 dbms_lob.write(l_merged_lob, LENGTH('<Attribute7/>'),LENGTH(l_merged_lob)+1, '<Attribute7/>');
9095 END IF;
9096 IF (route_ffs_rec.Attribute8 IS NOT NULL) THEN
9097 dbms_lob.write(l_merged_lob, LENGTH('<Attribute8>'),LENGTH(l_merged_lob)+1, '<Attribute8>');
9098 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Attribute8);
9099 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9100 dbms_lob.write(l_merged_lob, LENGTH('</Attribute8>'),LENGTH(l_merged_lob)+1, '</Attribute8>');
9101 ELSE
9102 dbms_lob.write(l_merged_lob, LENGTH('<Attribute8/>'),LENGTH(l_merged_lob)+1, '<Attribute8/>');
9103 END IF;
9104 IF (route_ffs_rec.Attribute9 IS NOT NULL) THEN
9105 dbms_lob.write(l_merged_lob, LENGTH('<Attribute9>'),LENGTH(l_merged_lob)+1, '<Attribute9>');
9106 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Attribute1);
9107 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9108 dbms_lob.write(l_merged_lob, LENGTH('</Attribute9>'),LENGTH(l_merged_lob)+1, '</Attribute9>');
9109 ELSE
9110 dbms_lob.write(l_merged_lob, LENGTH('<Attribute9/>'),LENGTH(l_merged_lob)+1, '<Attribute9/>');
9111 END IF;
9112 IF (route_ffs_rec.Attribute10 IS NOT NULL) THEN
9113 dbms_lob.write(l_merged_lob, LENGTH('<Attribute10>'),LENGTH(l_merged_lob)+1, '<Attribute10>');
9114 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Attribute10);
9115 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9116 dbms_lob.write(l_merged_lob, LENGTH('</Attribute10>'),LENGTH(l_merged_lob)+1, '</Attribute10>');
9117 ELSE
9118 dbms_lob.write(l_merged_lob, LENGTH('<Attribute10/>'),LENGTH(l_merged_lob)+1, '<Attribute10/>');
9119 END IF;
9120 IF (route_ffs_rec.Attribute11 IS NOT NULL) THEN
9121 dbms_lob.write(l_merged_lob, LENGTH('<Attribute11>'),LENGTH(l_merged_lob)+1, '<Attribute11>');
9122 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Attribute11);
9123 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9124 dbms_lob.write(l_merged_lob, LENGTH('</Attribute11>'),LENGTH(l_merged_lob)+1, '</Attribute11>');
9125 ELSE
9126 dbms_lob.write(l_merged_lob, LENGTH('<Attribute11/>'),LENGTH(l_merged_lob)+1, '<Attribute11/>');
9127 END IF;
9128 IF (route_ffs_rec.Attribute12 IS NOT NULL) THEN
9129 dbms_lob.write(l_merged_lob, LENGTH('<Attribute12>'),LENGTH(l_merged_lob)+1, '<Attribute12>');
9130 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Attribute12);
9131 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9132 dbms_lob.write(l_merged_lob, LENGTH('</Attribute12>'),LENGTH(l_merged_lob)+1, '</Attribute12>');
9133 ELSE
9134 dbms_lob.write(l_merged_lob, LENGTH('<Attribute12/>'),LENGTH(l_merged_lob)+1, '<Attribute12/>');
9135 END IF;
9136 IF (route_ffs_rec.Attribute13 IS NOT NULL) THEN
9137 dbms_lob.write(l_merged_lob, LENGTH('<Attribute13>'),LENGTH(l_merged_lob)+1, '<Attribute13>');
9138 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Attribute13);
9139 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9140 dbms_lob.write(l_merged_lob, LENGTH('</Attribute13>'),LENGTH(l_merged_lob)+1, '</Attribute13>');
9141 ELSE
9142 dbms_lob.write(l_merged_lob, LENGTH('<Attribute13/>'),LENGTH(l_merged_lob)+1, '<Attribute13/>');
9143 END IF;
9144 IF (route_ffs_rec.Attribute14 IS NOT NULL) THEN
9145 dbms_lob.write(l_merged_lob, LENGTH('<Attribute14>'),LENGTH(l_merged_lob)+1, '<Attribute14>');
9146 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Attribute14);
9147 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9148 dbms_lob.write(l_merged_lob, LENGTH('</Attribute14>'),LENGTH(l_merged_lob)+1, '</Attribute14>');
9149 ELSE
9150 dbms_lob.write(l_merged_lob, LENGTH('<Attribute14/>'),LENGTH(l_merged_lob)+1, '<Attribute14/>');
9151 END IF;
9152 IF (route_ffs_rec.Attribute15 IS NOT NULL) THEN
9153 dbms_lob.write(l_merged_lob, LENGTH('<Attribute15>'),LENGTH(l_merged_lob)+1, '<Attribute15>');
9154 dummy := DBMS_XMLGEN.CONVERT(route_ffs_rec.Attribute15);
9155 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9156 dbms_lob.write(l_merged_lob, LENGTH('</Attribute15>'),LENGTH(l_merged_lob)+1, '</Attribute15>');
9157 ELSE
9158 dbms_lob.write(l_merged_lob, LENGTH('<Attribute15/>'),LENGTH(l_merged_lob)+1, '<Attribute15/>');
9159 END IF;
9160 dbms_lob.write(l_merged_lob, LENGTH('</RouteDFFs>'),LENGTH(l_merged_lob)+1, '</RouteDFFs>');
9161
9162 OPEN panel_details_csr(l_route_id);
9163 dbms_lob.write(l_merged_lob, LENGTH('<AccessPanels>'),LENGTH(l_merged_lob)+1, '<AccessPanels>');
9164 LOOP
9165 FETCH panel_details_csr
9166 INTO panel_details_rec;
9167
9168 EXIT WHEN panel_details_csr%NOTFOUND;
9169 dbms_lob.write(l_merged_lob, LENGTH('<AccessPanel>'),LENGTH(l_merged_lob)+1, '<AccessPanel>');
9170 IF (panel_details_rec.panel_type IS NOT NULL) THEN
9171 dbms_lob.write(l_merged_lob, LENGTH('<PanelType>'),LENGTH(l_merged_lob)+1, '<PanelType>');
9172 dummy := DBMS_XMLGEN.CONVERT(panel_details_rec.panel_type);
9173 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9174 dbms_lob.write(l_merged_lob, LENGTH('</PanelType>'),LENGTH(l_merged_lob)+1, '</PanelType>');
9175 ELSE
9176 dbms_lob.write(l_merged_lob, LENGTH('<PanelType/>'),LENGTH(l_merged_lob)+1, '<PanelType/>');
9177 END IF;
9178 IF (panel_details_rec.panel_type_desc IS NOT NULL) THEN
9179 dbms_lob.write(l_merged_lob, LENGTH('<PanelDesc>'),LENGTH(l_merged_lob)+1, '<PanelDesc>');
9180 dummy := DBMS_XMLGEN.CONVERT(panel_details_rec.panel_type_desc);
9181 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9182 dbms_lob.write(l_merged_lob, LENGTH('</PanelDesc>'),LENGTH(l_merged_lob)+1, '</PanelDesc>');
9183 ELSE
9184 dbms_lob.write(l_merged_lob, LENGTH('<PanelDesc/>'),LENGTH(l_merged_lob)+1, '<PanelDesc/>');
9185 END IF;
9186 dbms_lob.write(l_merged_lob, LENGTH('</AccessPanel>'),LENGTH(l_merged_lob)+1, '</AccessPanel>');
9187 END LOOP;
9188 dbms_lob.write(l_merged_lob, LENGTH('</AccessPanels>'),LENGTH(l_merged_lob)+1, '</AccessPanels>');
9189 CLOSE panel_details_csr;
9190
9191 dbms_lob.write(l_merged_lob, LENGTH('<Operations>'),LENGTH(l_merged_lob)+1, '<Operations>');
9192 OPEN op_det_csr(l_route_id, l_workorder_id);
9193 LOOP
9194 FETCH op_det_csr
9195 INTO wo_op_details_rec;
9196 EXIT WHEN op_det_csr%NOTFOUND;
9197 dbms_lob.write(l_merged_lob, LENGTH('<Operation>'),LENGTH(l_merged_lob)+1, '<Operation>');
9198 IF (wo_op_details_rec.OPERATION_SEQUENCE_NUM IS NOT NULL) THEN
9199 dbms_lob.write(l_merged_lob, LENGTH('<OperationSequenceNumber>'),LENGTH(l_merged_lob)+1, '<OperationSequenceNumber>');
9200 dbms_lob.write(l_merged_lob, LENGTH(wo_op_details_rec.OPERATION_SEQUENCE_NUM),LENGTH(l_merged_lob)+1, wo_op_details_rec.OPERATION_SEQUENCE_NUM);
9201 dbms_lob.write(l_merged_lob, LENGTH('</OperationSequenceNumber>'),LENGTH(l_merged_lob)+1, '</OperationSequenceNumber>');
9202 ELSE
9203 dbms_lob.write(l_merged_lob, LENGTH('<OperationSequenceNumber/>'),LENGTH(l_merged_lob)+1, '<OperationSequenceNumber/>');
9204 END IF;
9205 IF (wo_op_details_rec.OPERATION_CODE IS NOT NULL) THEN
9206 dbms_lob.write(l_merged_lob, LENGTH('<OperationCode>'),LENGTH(l_merged_lob)+1, '<OperationCode>');
9207 dummy := DBMS_XMLGEN.CONVERT(wo_op_details_rec.OPERATION_CODE);
9208 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9209 dbms_lob.write(l_merged_lob, LENGTH('</OperationCode>'),LENGTH(l_merged_lob)+1, '</OperationCode>');
9210 ELSE
9211 dbms_lob.write(l_merged_lob, LENGTH('<OperationCode/>'),LENGTH(l_merged_lob)+1, '<OperationCode/>');
9212 END IF;
9213 IF (wo_op_details_rec.DESCRIPTION IS NOT NULL) THEN
9214 dbms_lob.write(l_merged_lob, LENGTH('<OpDescription>'),LENGTH(l_merged_lob)+1, '<OpDescription>');
9215 dummy := DBMS_XMLGEN.CONVERT(wo_op_details_rec.DESCRIPTION);
9216 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9217 dbms_lob.write(l_merged_lob, LENGTH('</OpDescription>'),LENGTH(l_merged_lob)+1, '</OpDescription>');
9218 ELSE
9219 dbms_lob.write(l_merged_lob, LENGTH('<OpDescription/>'),LENGTH(l_merged_lob)+1, '<OpDescription/>');
9220 END IF;
9221 IF (wo_op_details_rec.OPERATION_TYPE IS NOT NULL) THEN
9222 dbms_lob.write(l_merged_lob, LENGTH('<OperationType>'),LENGTH(l_merged_lob)+1, '<OperationType>');
9223 dummy := DBMS_XMLGEN.CONVERT(wo_op_details_rec.OPERATION_TYPE);
9224 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9225 dbms_lob.write(l_merged_lob, LENGTH('</OperationType>'),LENGTH(l_merged_lob)+1, '</OperationType>');
9226 ELSE
9227 dbms_lob.write(l_merged_lob, LENGTH('<OperationType/>'),LENGTH(l_merged_lob)+1, '<OperationType/>');
9228 END IF;
9229 IF (wo_op_details_rec.REVISION_NUMBER is not null) THEN
9230 dbms_lob.write(l_merged_lob, LENGTH('<Revision>'),LENGTH(l_merged_lob)+1, '<Revision>');
9231 dummy := DBMS_XMLGEN.CONVERT(wo_op_details_rec.REVISION_NUMBER);
9232 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9233 dbms_lob.write(l_merged_lob, LENGTH('</Revision>'),LENGTH(l_merged_lob)+1, '</Revision>');
9234 ELSE
9235 dbms_lob.write(l_merged_lob, LENGTH('<Revision/>'),LENGTH(l_merged_lob)+1, '<Revision/>');
9236 END IF;
9237
9238 dbms_lob.write(l_merged_lob, LENGTH('<RevisionDate>'),LENGTH(l_merged_lob)+1, '<RevisionDate>');
9239 dummy := DBMS_XMLGEN.CONVERT(wo_op_details_rec.LAST_UPDATE_DATE);
9240 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9241 dbms_lob.write(l_merged_lob, LENGTH('</RevisionDate>'),LENGTH(l_merged_lob)+1, '</RevisionDate>');
9242
9243
9244 IF (wo_op_details_rec.ENIGMA_DOC_ID IS NOT NULL) THEN
9245 dbms_lob.write(l_merged_lob, LENGTH('<EnigmaDocId>'),LENGTH(l_merged_lob)+1, '<EnigmaDocId>');
9246 dummy := DBMS_XMLGEN.CONVERT(wo_op_details_rec.ENIGMA_DOC_ID);
9247 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9248 dbms_lob.write(l_merged_lob, LENGTH('</EnigmaDocId>'),LENGTH(l_merged_lob)+1, '</EnigmaDocId>');
9249 ELSE
9250 dbms_lob.write(l_merged_lob, LENGTH('<EnigmaDocId/>'),LENGTH(l_merged_lob)+1, '<EnigmaDocId/>');
9251 END IF;
9252
9253 IF (l_log_statement >= l_log_current_level)THEN
9254 fnd_log.string (
9255 l_log_statement, 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,'Checkpoint 8 : wo_op_details_rec.operation_id : ' || wo_op_details_rec.operation_id);
9256 END IF;
9257 IF (wo_op_details_rec.operation_id IS NOT NULL) THEN
9258 context := dbms_xmlgen.newContext(l_op_dffs );
9259 DBMS_XMLGEN.setbindvalue (context, '1', wo_op_details_rec.operation_id);
9260
9261 dbms_xmlgen.setRowsetTag(context, 'OperationDFFs');
9262 dbms_xmlgen.setRowTag(context,null);
9263 dbms_xmlgen.setConvertSpecialChars(context, TRUE);
9264 DBMS_XMLGEN.setNullHandling(context, 2);
9265 l_op_dffs_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
9266 dbms_xmlgen.closeContext(context);
9267 -- Write to lob only when some data exists.
9268 IF dbms_lob.getlength(l_op_dffs_lob) > 0
9269 THEN
9270
9271 l_offset := dbms_lob.INSTR(l_op_dffs_lob, '>');
9272
9273 -- copy workorder details into final lob
9274 dbms_lob.copy(l_merged_lob, l_op_dffs_lob, dbms_lob.getlength(l_op_dffs_lob), dbms_lob.getlength(l_merged_lob)+1, l_offset+ 1);
9275
9276 END IF;
9277 END IF;
9278 IF (wo_op_details_rec.operation_id IS NOT NULL) THEN
9279 context := dbms_xmlgen.newContext(l_op_doc );
9280 DBMS_XMLGEN.setbindvalue (context, '1', l_workorder_id);
9281 DBMS_XMLGEN.setbindvalue (context, '2', wo_op_details_rec.operation_id);
9282 dbms_xmlgen.setRowsetTag(context, 'AssociatedDocuments');
9283 dbms_xmlgen.setRowTag(context,'AssociatedDocument');
9284 dbms_xmlgen.setConvertSpecialChars(context, TRUE);
9285 DBMS_XMLGEN.setNullHandling(context, 2);
9286 l_wo_doc_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
9287 dbms_xmlgen.closeContext(context);
9288 -- Write to lob only when some data exists.
9289 IF dbms_lob.getlength(l_wo_doc_lob) > 0
9290 THEN
9291 l_offset := dbms_lob.INSTR(l_wo_doc_lob, '>');
9292
9293 -- copy workorder details into final lob
9294 dbms_lob.copy(l_merged_lob, l_wo_doc_lob, dbms_lob.getlength(l_wo_doc_lob), dbms_lob.getlength(l_merged_lob)+1, l_offset+ 1);
9295
9296 END IF;
9297 END IF;
9298 dbms_lob.write(l_merged_lob, length('</Operation>'),length(l_merged_lob)+1, '</Operation>');
9299 END LOOP;
9300 CLOSE op_det_csr;
9301 dbms_lob.write(l_merged_lob, length('</Operations>'),length(l_merged_lob)+1, '</Operations>');
9302
9303 context := dbms_xmlgen.newContext(l_route_doc);
9304 --DBMS_XMLGEN.setbindvalue (context, '1', l_workorder_id);
9305 DBMS_XMLGEN.setbindvalue (context, '1', l_route_id);
9306
9307 dbms_xmlgen.setRowsetTag(context, 'AssociatedDocuments');
9308 dbms_xmlgen.setRowTag(context,'AssociatedDocument');
9309 dbms_xmlgen.setConvertSpecialChars(context, TRUE);
9310 DBMS_XMLGEN.setNullHandling(context, 2);
9311 l_wo_doc_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
9312 dbms_xmlgen.closeContext(context);
9313 -- Write to lob only when some data exists.
9314 IF dbms_lob.getlength(l_wo_doc_lob) > 0
9315 THEN
9316 l_offset := dbms_lob.INSTR(l_wo_doc_lob, '>');
9317
9318 -- copy workorder details into final lob
9319 dbms_lob.copy(l_merged_lob, l_wo_doc_lob, dbms_lob.getlength(l_wo_doc_lob), dbms_lob.getlength(l_merged_lob)+1, l_offset+ 1);
9320
9321 END IF;
9322
9323 END LOOP;
9324 CLOSE route_details_csr;
9325 dbms_lob.write(l_merged_lob, length('</Route>'),length(l_merged_lob)+1, '</Route>');
9326
9327 dbms_lob.write(l_merged_lob, length('<WoOperations>'),length(l_merged_lob)+1, '<WoOperations>');
9328
9329 OPEN op_details_csr (l_workorder_id);
9330 LOOP
9331 FETCH op_details_csr
9332 INTO op_details_rec;
9333
9334 EXIT WHEN op_details_csr%NOTFOUND;
9335 IF (l_log_statement >= l_log_current_level)THEN
9336 fnd_log.string ( l_log_statement, 'ahl.plsql.'
9337 ||g_pkg_name
9338 ||'.'
9339 ||l_api_name ,'Checkpoint 9 : l_workorder_id : '
9340 || l_workorder_id);
9341 END IF;
9342 dbms_lob.write(l_merged_lob, LENGTH('<WoOperation>'),LENGTH(l_merged_lob)+1, '<WoOperation>');
9343 dbms_lob.write(l_merged_lob, LENGTH('<OperationSequenceNumber>'),LENGTH(l_merged_lob)+1, '<OperationSequenceNumber>');
9344 dbms_lob.write(l_merged_lob, LENGTH(op_details_rec.operation_sequence_num),LENGTH(l_merged_lob)+1, op_details_rec.operation_sequence_num);
9345 dbms_lob.write(l_merged_lob, LENGTH('</OperationSequenceNumber>'),LENGTH(l_merged_lob)+1, '</OperationSequenceNumber>');
9346 IF (op_details_rec.operation_code IS NOT NULL) THEN
9347 dbms_lob.write(l_merged_lob, LENGTH('<OperationCode>'),LENGTH(l_merged_lob)+1, '<OperationCode>');
9348 dummy := DBMS_XMLGEN.CONVERT(op_details_rec.operation_code);
9349 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9350 dbms_lob.write(l_merged_lob, LENGTH('</OperationCode>'),LENGTH(l_merged_lob)+1, '</OperationCode>');
9351 ELSE
9352 dbms_lob.write(l_merged_lob, LENGTH('<OperationCode/>'),LENGTH(l_merged_lob)+1, '<OperationCode/>');
9353 END IF;
9354 IF (op_details_rec.description IS NOT NULL) THEN
9355 dbms_lob.write(l_merged_lob, LENGTH('<OperationDesc>'),LENGTH(l_merged_lob)+1, '<OperationDesc>');
9356 dummy := DBMS_XMLGEN.CONVERT(op_details_rec.description);
9357 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9358 dbms_lob.write(l_merged_lob, LENGTH('</OperationDesc>'),LENGTH(l_merged_lob)+1, '</OperationDesc>');
9359 ELSE
9360 dbms_lob.write(l_merged_lob, LENGTH('<OperationDesc/>'),LENGTH(l_merged_lob)+1, '<OperationDesc/>');
9361 END IF;
9362 IF (op_details_rec.status IS NOT NULL) THEN
9363 dbms_lob.write(l_merged_lob, LENGTH('<Status>'),LENGTH(l_merged_lob)+1, '<Status>');
9364 dummy := DBMS_XMLGEN.CONVERT(op_details_rec.status);
9365 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9366 dbms_lob.write(l_merged_lob, LENGTH('</Status>'),LENGTH(l_merged_lob)+1, '</Status>');
9367 ELSE
9368 dbms_lob.write(l_merged_lob, LENGTH('<Status/>'),LENGTH(l_merged_lob)+1, '<Status/>');
9369 END IF;
9370 IF (op_details_rec.department_name IS NOT NULL) THEN
9371 dbms_lob.write(l_merged_lob, LENGTH('<DepartmentName>'),LENGTH(l_merged_lob)+1, '<DepartmentName>');
9372 dummy := DBMS_XMLGEN.CONVERT(op_details_rec.department_name);
9373 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9374 dbms_lob.write(l_merged_lob, LENGTH('</DepartmentName>'),LENGTH(l_merged_lob)+1, '</DepartmentName>');
9375 ELSE
9376 dbms_lob.write(l_merged_lob, LENGTH('<DepartmentName/>'),LENGTH(l_merged_lob)+1, '<DepartmentName/>');
9377 END IF;
9378 dbms_lob.write(l_merged_lob, LENGTH('<ScheduledStartDate>'),LENGTH(l_merged_lob)+1, '<ScheduledStartDate>');
9379 dbms_lob.write(l_merged_lob, LENGTH(op_details_rec.scheduled_start_date),LENGTH(l_merged_lob)+1, op_details_rec.scheduled_start_date);
9380 dbms_lob.write(l_merged_lob, LENGTH('</ScheduledStartDate>'),LENGTH(l_merged_lob)+1, '</ScheduledStartDate>');
9381 dbms_lob.write(l_merged_lob, LENGTH('<ScheduledEndDate>'),LENGTH(l_merged_lob)+1, '<ScheduledEndDate>');
9382 dbms_lob.write(l_merged_lob, LENGTH(op_details_rec.scheduled_end_date),LENGTH(l_merged_lob)+1, op_details_rec.scheduled_end_date);
9383 dbms_lob.write(l_merged_lob, LENGTH('</ScheduledEndDate>'),LENGTH(l_merged_lob)+1, '</ScheduledEndDate>');
9384 IF (op_details_rec.IsQualityEnabled IS NOT NULL) THEN
9385 dbms_lob.write(l_merged_lob, LENGTH('<IsQualityEnabled>'),LENGTH(l_merged_lob)+1, '<IsQualityEnabled>');
9386 dbms_lob.write(l_merged_lob, LENGTH(op_details_rec.IsQualityEnabled),LENGTH(l_merged_lob)+1, op_details_rec.IsQualityEnabled);
9387 dbms_lob.write(l_merged_lob, LENGTH('</IsQualityEnabled>'),LENGTH(l_merged_lob)+1, '</IsQualityEnabled>');
9388 ELSE
9389 dbms_lob.write(l_merged_lob, LENGTH('<IsQualityEnabled/>'),LENGTH(l_merged_lob)+1, '<IsQualityEnabled/>');
9390 END IF;
9391 dbms_lob.write(l_merged_lob, LENGTH('<QaPlan>'),LENGTH(l_merged_lob)+1, '<QaPlan>');
9392 /*
9393 OPEN get_op_qa_ids_csr(op_details_rec.workorder_operation_id);
9394 LOOP
9395 FETCH get_op_qa_ids_csr INTO l_qa_plan_id;
9396 EXIT WHEN get_op_qa_ids_csr%NOTFOUND;
9397 */
9398
9399 OPEN get_op_qa_res_csr(op_details_rec.workorder_operation_id);
9400 LOOP
9401 FETCH get_op_qa_res_csr
9402 INTO l_qa_plan_id,
9403 l_collection_id;
9404
9405 EXIT WHEN get_op_qa_res_csr%NOTFOUND;
9406 IF (l_log_statement >= l_log_current_level)THEN
9407 fnd_log.string ( l_log_statement, 'ahl.plsql.'
9408 ||g_pkg_name
9409 ||'.'
9410 ||l_api_name ,'Checkpoint 10 : l_qa_plan_id : '
9411 || l_qa_plan_id);
9412 END IF;
9413 IF (l_qa_plan_id IS NOT NULL) THEN
9414 OPEN qa_plan_csr (l_qa_plan_id);
9415 LOOP
9416 FETCH qa_plan_csr
9417 INTO qa_plan_rec;
9418
9419 EXIT
9420 WHEN qa_plan_csr%NOTFOUND;
9421
9422 IF (l_log_statement >= l_log_current_level)THEN
9423 fnd_log.string ( l_log_statement, 'ahl.plsql.'
9424 ||g_pkg_name
9425 ||'.'
9426 ||l_api_name ,'Checkpoint 11 : l_qa_plan_id : '
9427 || l_qa_plan_id);
9428 END IF;
9429 dbms_lob.write(l_merged_lob, LENGTH('<PlanName>'),LENGTH(l_merged_lob)+1, '<PlanName>');
9430 dummy := DBMS_XMLGEN.CONVERT(qa_plan_rec.plan_name);
9431 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9432 dbms_lob.write(l_merged_lob, LENGTH('</PlanName>'),LENGTH(l_merged_lob)+1, '</PlanName>');
9433 IF (qa_plan_rec.plan_description IS NOT NULL) THEN
9434 dbms_lob.write(l_merged_lob, LENGTH('<PlanDescription>'),LENGTH(l_merged_lob)+1, '<PlanDescription>');
9435 dummy := DBMS_XMLGEN.CONVERT(qa_plan_rec.plan_description);
9436 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9437 dbms_lob.write(l_merged_lob, LENGTH('</PlanDescription>'),LENGTH(l_merged_lob)+1, '</PlanDescription>');
9438 ELSE
9439 dbms_lob.write(l_merged_lob, LENGTH('<PlanDescription/>'),LENGTH(l_merged_lob)+1, '<PlanDescription/>');
9440 END IF;
9441
9442 OPEN qa_plan_attr_csr(l_qa_plan_id);
9443 LOOP
9444 FETCH qa_plan_attr_csr
9445 INTO qa_plan_attr_rec;
9446
9447 EXIT
9448 WHEN qa_plan_attr_csr%NOTFOUND;
9449 IF (qa_plan_attr_rec.enabled_flag = 1 AND qa_plan_attr_rec.displayed_flag = 1) THEN
9450
9451 dbms_lob.write(l_merged_lob, LENGTH('<QualityPlanAttribute>'),LENGTH(l_merged_lob)+1, '<QualityPlanAttribute>');
9452 dbms_lob.write(l_merged_lob, LENGTH('<CharId>'),LENGTH(l_merged_lob)+1, '<CharId>');
9453 dbms_lob.write(l_merged_lob, LENGTH(qa_plan_attr_rec.CharId),LENGTH(l_merged_lob)+1, qa_plan_attr_rec.CharId);
9454 dbms_lob.write(l_merged_lob, LENGTH('</CharId>'),LENGTH(l_merged_lob)+1, '</CharId>');
9455 dbms_lob.write(l_merged_lob, LENGTH('<PromptSequence>'),LENGTH(l_merged_lob)+1, '<PromptSequence>');
9456 dbms_lob.write(l_merged_lob, LENGTH(qa_plan_attr_rec.PromptSequence),LENGTH(l_merged_lob)+1, qa_plan_attr_rec.PromptSequence);
9457 dbms_lob.write(l_merged_lob, LENGTH('</PromptSequence>'),LENGTH(l_merged_lob)+1, '</PromptSequence>');
9458 IF (qa_plan_attr_rec.Prompt IS NOT NULL) THEN
9459 dbms_lob.write(l_merged_lob, LENGTH('<Prompt>'),LENGTH(l_merged_lob)+1, '<Prompt>');
9460 dummy := DBMS_XMLGEN.CONVERT(qa_plan_attr_rec.Prompt);
9461 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9462 dbms_lob.write(l_merged_lob, LENGTH('</Prompt>'),LENGTH(l_merged_lob)+1, '</Prompt>');
9463 ELSE
9464 dbms_lob.write(l_merged_lob, LENGTH('<Prompt/>'),LENGTH(l_merged_lob)+1, '<Prompt/>');
9465 END IF;
9466 IF (qa_plan_attr_rec.DefaultValue IS NOT NULL) THEN
9467 dbms_lob.write(l_merged_lob, LENGTH('<DefaultValue>'),LENGTH(l_merged_lob)+1, '<DefaultValue>');
9468 dummy := DBMS_XMLGEN.CONVERT(qa_plan_attr_rec.DefaultValue);
9469 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9470 dbms_lob.write(l_merged_lob, LENGTH('</DefaultValue>'),LENGTH(l_merged_lob)+1, '</DefaultValue>');
9471 ELSE
9472 dbms_lob.write(l_merged_lob, LENGTH('<DefaultValue/>'),LENGTH(l_merged_lob)+1, '<DefaultValue/>');
9473 END IF;
9474 dbms_lob.write(l_merged_lob, LENGTH('</QualityPlanAttribute>'),LENGTH(l_merged_lob)+1, '</QualityPlanAttribute>');
9475 END IF;
9476 END LOOP;
9477 CLOSE qa_plan_attr_csr;
9478 END LOOP;
9479 CLOSE qa_plan_csr;
9480 END IF;
9481 END LOOP;
9482 --CLOSE get_op_qa_ids_csr;
9483 CLOSE get_op_qa_res_csr;
9484
9485 dbms_lob.write(l_merged_lob, LENGTH('</QaPlan>'),LENGTH(l_merged_lob)+1, '</QaPlan>');
9486
9487 IF (l_log_statement >= l_log_current_level)THEN
9488 fnd_log.string ( l_log_statement, 'ahl.plsql.'
9489 ||g_pkg_name
9490 ||'.'
9491 ||l_api_name ,'Checkpoint 12 : l_qa_plan_id : '
9492 || l_qa_plan_id);
9493 END IF;
9494 IF l_qa_plan_id IS NOT NULL
9495 AND l_collection_id IS NOT NULL THEN
9496 BUILD_XML_QA_QUERY( p_plan_id => l_qa_plan_id,
9497 p_collection_id => l_collection_id,
9498 x_query_string => l_query_string );
9499
9500
9501 IF (l_log_statement >= l_log_current_level)THEN
9502 fnd_log.string ( l_log_statement, 'ahl.plsql.'
9503 ||g_pkg_name
9504 ||'.'
9505 ||l_api_name ,'Checkpoint 13 ');
9506 END IF;
9507 IF (l_collection_id IS NOT NULL) THEN
9508 context := dbms_xmlgen.newContext(l_query_string);
9509 DBMS_XMLGEN.setbindvalue (context, '1',l_collection_id);
9510 dbms_xmlgen.setRowsetTag(context, 'QaResults');
9511 dbms_xmlgen.setRowTag(context,'QualityResultRec');
9512 dbms_xmlgen.setConvertSpecialChars(context, TRUE);
9513 DBMS_XMLGEN.setNullHandling(context, 2);
9514 l_qa_res_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
9515 dbms_xmlgen.closeContext(context);
9516 -- Write to lob only when some data exists.
9517 IF dbms_lob.getlength(l_qa_res_lob) > 0 THEN
9518 l_offset := dbms_lob.INSTR(l_qa_res_lob, '>');
9519 -- copy workorder details into final lob
9520 dbms_lob.copy(l_merged_lob, l_qa_res_lob, dbms_lob.getlength(l_qa_res_lob), dbms_lob.getlength(l_merged_lob)+1, l_offset+ 1);
9521 --dbms_lob.write(l_merged_lob, length('</QaResultRec>'),length(l_merged_lob)+1, '</QaResultRec>');
9522 END IF;
9523 -- END LOOP;
9524 -- CLOSE qa_result_csr;
9525 END IF;
9526 END IF;
9527 --END LOOP;
9528 --CLOSE get_op_qa_res_csr;
9529 --dbms_lob.write(l_merged_lob, length('</QaResults>'),length(l_merged_lob)+1, '</QaResults>');
9530 dbms_lob.write(l_merged_lob, LENGTH('</WoOperation>'),LENGTH(l_merged_lob)+1, '</WoOperation>');
9531 END LOOP;
9532 CLOSE op_details_csr;
9533 dbms_lob.write(l_merged_lob, LENGTH('</WoOperations>'),LENGTH(l_merged_lob)+1, '</WoOperations>');
9534
9535 -- not sure if required
9536
9537 dbms_lob.write(l_merged_lob, length('<IsQualityEnabled>'),length(l_merged_lob)+1, '<IsQualityEnabled>');
9538 dbms_lob.write(l_merged_lob, length(wo_details_rec.isQualityEnabled),length(l_merged_lob)+1, wo_details_rec.isQualityEnabled);
9539 dbms_lob.write(l_merged_lob, length('</IsQualityEnabled>'),length(l_merged_lob)+1, '</IsQualityEnabled>');
9540
9541 dbms_lob.write(l_merged_lob, length('<QaPlan>'),length(l_merged_lob)+1, '<QaPlan>');
9542
9543 OPEN get_wo_qa_res_csr(l_workorder_id);
9544 LOOP
9545 FETCH get_wo_qa_res_csr
9546 INTO l_qa_plan_id,
9547 l_collection_id;
9548
9549 EXIT
9550 WHEN get_wo_qa_res_csr%NOTFOUND;
9551 --dbms_lob.write(l_merged_lob, length('<QaPlan>'),length(l_merged_lob)+1, '<QaPlan>');
9552 IF (l_qa_plan_id IS NOT NULL) THEN
9553 OPEN qa_plan_csr (l_qa_plan_id);
9554 LOOP
9555 FETCH qa_plan_csr
9556 INTO qa_plan_rec;
9557
9558 EXIT
9559 WHEN qa_plan_csr%NOTFOUND;
9560 dbms_lob.write(l_merged_lob, LENGTH('<PlanName>'),LENGTH(l_merged_lob)+1, '<PlanName>');
9561 dummy := DBMS_XMLGEN.CONVERT(qa_plan_rec.plan_name);
9562 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9563 dbms_lob.write(l_merged_lob, LENGTH('</PlanName>'),LENGTH(l_merged_lob)+1, '</PlanName>');
9564 IF (qa_plan_rec.plan_description IS NOT NULL) THEN
9565 dbms_lob.write(l_merged_lob, LENGTH('<PlanDescription>'),LENGTH(l_merged_lob)+1, '<PlanDescription>');
9566 dummy := DBMS_XMLGEN.CONVERT(qa_plan_rec.plan_description);
9567 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9568 dbms_lob.write(l_merged_lob, LENGTH('</PlanDescription>'),LENGTH(l_merged_lob)+1, '</PlanDescription>');
9569 ELSE
9570 dbms_lob.write(l_merged_lob, LENGTH('<PlanDescription/>'),LENGTH(l_merged_lob)+1, '<PlanDescription/>');
9571 END IF;
9572
9573 OPEN qa_plan_attr_csr(l_qa_plan_id);
9574 LOOP
9575 FETCH qa_plan_attr_csr
9576 INTO qa_plan_attr_rec;
9577
9578 EXIT
9579 WHEN qa_plan_attr_csr%NOTFOUND;
9580 IF (qa_plan_attr_rec.enabled_flag = 1 AND qa_plan_attr_rec.displayed_flag = 1) THEN
9581 dbms_lob.write(l_merged_lob, LENGTH('<QualityPlanAttribute>'),LENGTH(l_merged_lob)+1, '<QualityPlanAttribute>');
9582 dbms_lob.write(l_merged_lob, LENGTH('<CharId>'),LENGTH(l_merged_lob)+1, '<CharId>');
9583 dbms_lob.write(l_merged_lob, LENGTH(qa_plan_attr_rec.CharId),LENGTH(l_merged_lob)+1, qa_plan_attr_rec.CharId);
9584 dbms_lob.write(l_merged_lob, LENGTH('</CharId>'),LENGTH(l_merged_lob)+1, '</CharId>');
9585 dbms_lob.write(l_merged_lob, LENGTH('<PromptSequence>'),LENGTH(l_merged_lob)+1, '<PromptSequence>');
9586 dbms_lob.write(l_merged_lob, LENGTH(qa_plan_attr_rec.PromptSequence),LENGTH(l_merged_lob)+1, qa_plan_attr_rec.PromptSequence);
9587 dbms_lob.write(l_merged_lob, LENGTH('</PromptSequence>'),LENGTH(l_merged_lob)+1, '</PromptSequence>');
9588 IF (qa_plan_attr_rec.Prompt IS NOT NULL) THEN
9589 dbms_lob.write(l_merged_lob, LENGTH('<Prompt>'),LENGTH(l_merged_lob)+1, '<Prompt>');
9590 dummy := DBMS_XMLGEN.CONVERT(qa_plan_attr_rec.Prompt);
9591 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9592 dbms_lob.write(l_merged_lob, LENGTH('</Prompt>'),LENGTH(l_merged_lob)+1, '</Prompt>');
9593 ELSE
9594 dbms_lob.write(l_merged_lob, LENGTH('<Prompt/>'),LENGTH(l_merged_lob)+1, '<Prompt/>');
9595 END IF;
9596 IF (qa_plan_attr_rec.DefaultValue IS NOT NULL) THEN
9597 dbms_lob.write(l_merged_lob, LENGTH('<DefaultValue>'),LENGTH(l_merged_lob)+1, '<DefaultValue>');
9598 dummy := DBMS_XMLGEN.CONVERT(qa_plan_attr_rec.DefaultValue);
9599 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9600 dbms_lob.write(l_merged_lob, LENGTH('</DefaultValue>'),LENGTH(l_merged_lob)+1, '</DefaultValue>');
9601 ELSE
9602 dbms_lob.write(l_merged_lob, LENGTH('<DefaultValue/>'),LENGTH(l_merged_lob)+1, '<DefaultValue/>');
9603 END IF;
9604 dbms_lob.write(l_merged_lob, LENGTH('</QualityPlanAttribute>'),LENGTH(l_merged_lob)+1, '</QualityPlanAttribute>');
9605 END IF;
9606 END LOOP;
9607 CLOSE qa_plan_attr_csr;
9608 END LOOP;
9609 CLOSE qa_plan_csr;
9610 END IF;
9611 END LOOP;
9612 CLOSE get_wo_qa_res_csr;
9613 dbms_lob.write(l_merged_lob, LENGTH('</QaPlan>'),LENGTH(l_merged_lob)+1, '</QaPlan>');
9614
9615 IF (l_log_statement >= l_log_current_level)THEN
9616 fnd_log.string (
9617 l_log_statement, 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,'Checkpoint 14: wo qa result' || l_workorder_id);
9618 END IF;
9619 IF l_qa_plan_id IS NOT NULL AND l_collection_id IS NOT NULL
9620 THEN
9621
9622 build_xml_qa_query(
9623 p_plan_id => l_qa_plan_id,
9624 p_collection_id => l_collection_id,
9625 x_query_string => l_query_string
9626 );
9627 IF (l_collection_id IS NOT NULL) THEN
9628 context := dbms_xmlgen.newContext(l_query_string);
9629 DBMS_XMLGEN.setbindvalue (context, '1',l_collection_id);
9630 dbms_xmlgen.setRowsetTag(context, 'QaResults');
9631 dbms_xmlgen.setRowTag(context,'QualityResultRec');
9632 dbms_xmlgen.setConvertSpecialChars(context, TRUE);
9633 DBMS_XMLGEN.setNullHandling(context, 2);
9634 l_qa_wo_res_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
9635 dbms_xmlgen.closeContext(context);
9636 -- Write to lob only when some data exists.
9637 IF dbms_lob.getlength(l_qa_wo_res_lob) > 0
9638 THEN
9639
9640 l_offset := dbms_lob.INSTR(l_qa_wo_res_lob, '>');
9641
9642 -- copy workorder details into final lob
9643 dbms_lob.copy(l_merged_lob, l_qa_wo_res_lob, dbms_lob.getlength(l_qa_wo_res_lob), dbms_lob.getlength(l_merged_lob)+1, l_offset+ 1);
9644
9645 --dbms_lob.write(l_merged_lob, length('</QualityResultRec>'),length(l_merged_lob)+1, '</QualityResultRec>');
9646 END IF;
9647 END IF;
9648 -- END LOOP;
9649 -- CLOSE qa_result_csr;
9650 END IF;
9651 --END LOOP;
9652 --CLOSE get_wo_qa_res_csr;
9653 --dbms_lob.write(l_merged_lob, length('</QaResults>'),length(l_merged_lob)+1, '</QaResults>');
9654
9655
9656
9657
9658 --documents associated with workorder
9659
9660 IF (l_log_statement >= l_log_current_level)THEN
9661 fnd_log.string (
9662 l_log_statement, 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,'Checkpoint 15: Document : ' || l_workorder_id);
9663 END IF;
9664
9665 dbms_lob.write(l_merged_lob, LENGTH('<MaterialRequirements>'),LENGTH(l_merged_lob)+1, '<MaterialRequirements>');
9666 OPEN mat_details_csr(l_workorder_id);
9667 LOOP
9668 FETCH mat_details_csr
9669 INTO mat_details_rec;
9670
9671 EXIT
9672 WHEN mat_details_csr%NOTFOUND;
9673 IF (l_log_statement >= l_log_current_level)THEN
9674 fnd_log.string ( l_log_statement, 'ahl.plsql.'
9675 ||g_pkg_name
9676 ||'.'
9677 ||l_api_name ,'Checkpoint 16: Document : '
9678 || l_workorder_id);
9679 END IF;
9680 dbms_lob.write(l_merged_lob, LENGTH('<MaterialRequirement>'),LENGTH(l_merged_lob)+1, '<MaterialRequirement>');
9681 dbms_lob.write(l_merged_lob, LENGTH('<OperationSequenceNumber>'),LENGTH(l_merged_lob)+1, '<OperationSequenceNumber>');
9682 dbms_lob.write(l_merged_lob, LENGTH(mat_details_rec.OPERATION_SEQUENCE),LENGTH(l_merged_lob)+1, mat_details_rec.OPERATION_SEQUENCE);
9683 dbms_lob.write(l_merged_lob, LENGTH('</OperationSequenceNumber>'),LENGTH(l_merged_lob)+1, '</OperationSequenceNumber>');
9684 dbms_lob.write(l_merged_lob, LENGTH('<ItemNumber>'),LENGTH(l_merged_lob)+1, '<ItemNumber>');
9685 dummy := DBMS_XMLGEN.CONVERT(mat_details_rec.CONCATENATED_SEGMENTS);
9686 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9687 dbms_lob.write(l_merged_lob, LENGTH('</ItemNumber>'),LENGTH(l_merged_lob)+1, '</ItemNumber>');
9688 IF (mat_details_rec.DESCRIPTION IS NOT NULL) THEN
9689 dbms_lob.write(l_merged_lob, LENGTH('<ItemDescription>'),LENGTH(l_merged_lob)+1, '<ItemDescription>');
9690 dummy := DBMS_XMLGEN.CONVERT(mat_details_rec.DESCRIPTION);
9691 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9692 dbms_lob.write(l_merged_lob, LENGTH('</ItemDescription>'),LENGTH(l_merged_lob)+1, '</ItemDescription>');
9693 ELSE
9694 dbms_lob.write(l_merged_lob, LENGTH('<ItemDescription/>'),LENGTH(l_merged_lob)+1, '<ItemDescription/>');
9695 END IF;
9696 IF (mat_details_rec.name IS NOT NULL) THEN
9697 dbms_lob.write(l_merged_lob, LENGTH('<ItemGroup>'),LENGTH(l_merged_lob)+1, '<ItemGroup>');
9698 dummy := DBMS_XMLGEN.CONVERT(mat_details_rec.name);
9699 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9700 dbms_lob.write(l_merged_lob, LENGTH('</ItemGroup>'),LENGTH(l_merged_lob)+1, '</ItemGroup>');
9701 ELSE
9702 dbms_lob.write(l_merged_lob, LENGTH('<ItemGroup/>'),LENGTH(l_merged_lob)+1, '<ItemGroup/>');
9703 END IF;
9704 IF (mat_details_rec.item_type IS NOT NULL) THEN
9705 dbms_lob.write(l_merged_lob, LENGTH('<ItemType>'),LENGTH(l_merged_lob)+1, '<ItemType>');
9706 dummy := DBMS_XMLGEN.CONVERT(mat_details_rec.item_type);
9707 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9708 dbms_lob.write(l_merged_lob, LENGTH('</ItemType>'),LENGTH(l_merged_lob)+1, '</ItemType>');
9709 ELSE
9710 dbms_lob.write(l_merged_lob, LENGTH('<ItemType/>'),LENGTH(l_merged_lob)+1, '<ItemType/>');
9711 END IF;
9712 dbms_lob.write(l_merged_lob, LENGTH('<RequiredQuantity>'),LENGTH(l_merged_lob)+1, '<RequiredQuantity>');
9713 dbms_lob.write(l_merged_lob, LENGTH(mat_details_rec.REQUESTED_QUANTITY),LENGTH(l_merged_lob)+1, mat_details_rec.REQUESTED_QUANTITY);
9714 dbms_lob.write(l_merged_lob, LENGTH('</RequiredQuantity>'),LENGTH(l_merged_lob)+1, '</RequiredQuantity>');
9715 dbms_lob.write(l_merged_lob, LENGTH('<UOM>'),LENGTH(l_merged_lob)+1, '<UOM>');
9716 dummy := DBMS_XMLGEN.CONVERT(mat_details_rec.UOM);
9717 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9718 dbms_lob.write(l_merged_lob, LENGTH('</UOM>'),LENGTH(l_merged_lob)+1, '</UOM>');
9719 dbms_lob.write(l_merged_lob, LENGTH('<RequiredDate>'),LENGTH(l_merged_lob)+1, '<RequiredDate>');
9720 dbms_lob.write(l_merged_lob, LENGTH(mat_details_rec.required_date),LENGTH(l_merged_lob)+1, mat_details_rec.required_date);
9721 dbms_lob.write(l_merged_lob, LENGTH('</RequiredDate>'),LENGTH(l_merged_lob)+1, '</RequiredDate>');
9722 IF (l_log_statement >= l_log_current_level)THEN
9723 fnd_log.string ( l_log_statement, 'ahl.plsql.'
9724 ||g_pkg_name
9725 ||'.'
9726 ||l_api_name , 'Checkpoint 17: mat_details_rec.SCHEDULED_MATERIAL_ID : '
9727 || mat_details_rec.SCHEDULED_MATERIAL_ID);
9728 END IF;
9729 IF (mat_details_rec.SCHEDULED_MATERIAL_ID IS NOT NULL) THEN
9730 context := dbms_xmlgen.newContext(l_mat_dffs);
9731 DBMS_XMLGEN.setbindvalue (context, '1', mat_details_rec.SCHEDULED_MATERIAL_ID);
9732 dbms_xmlgen.setRowsetTag(context, 'MaterialDFFs');
9733 dbms_xmlgen.setRowTag(context,NULL);
9734 dbms_xmlgen.setConvertSpecialChars(context, TRUE);
9735 DBMS_XMLGEN.setNullHandling(context, 2);
9736 l_mat_dff_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
9737 dbms_xmlgen.closeContext(context);
9738 -- Write to lob only when some data exists.
9739 IF dbms_lob.getlength(l_mat_dff_lob) > 0 THEN
9740 l_offset := dbms_lob.INSTR(l_mat_dff_lob, '>');
9741 -- copy workorder details into final lob
9742 dbms_lob.copy(l_merged_lob, l_mat_dff_lob, dbms_lob.getlength(l_mat_dff_lob), dbms_lob.getlength(l_merged_lob)+1, l_offset+ 1);
9743 END IF;
9744 -- 344 not sure if DFF required
9745 END IF;
9746 dbms_lob.write(l_merged_lob, LENGTH('</MaterialRequirement>'),LENGTH(l_merged_lob)+1, '</MaterialRequirement>');
9747 END LOOP;
9748 CLOSE mat_details_csr;
9749 dbms_lob.write(l_merged_lob, LENGTH('</MaterialRequirements>'),LENGTH(l_merged_lob)+1, '</MaterialRequirements>');
9750 dbms_lob.write(l_merged_lob, LENGTH('<ResourceRequirements>'),LENGTH(l_merged_lob)+1, '<ResourceRequirements>');
9751
9752 -- resource requirement details
9753
9754 -- first find out if resources are derived from route or operations.
9755 -- added to support route/op resource dffs.
9756 l_route_op_res_found := 'N';
9757 IF(l_route_id IS NOT NULL)THEN
9758 OPEN chk_route_res_csr(l_route_id);
9759 FETCH chk_route_res_csr INTO l_route_op_res_found;
9760 IF (chk_route_res_csr%NOTFOUND) THEN
9761 l_route_op_res_found := 'O';
9762 ELSE
9763 l_route_op_res_found := 'R';
9764 END IF;
9765 CLOSE chk_route_res_csr;
9766 END IF;
9767
9768 OPEN res_req_details_csr(l_workorder_id);
9769 LOOP
9770 FETCH res_req_details_csr
9771 INTO res_req_details_rec;
9772
9773 EXIT WHEN res_req_details_csr%NOTFOUND;
9774 IF (l_log_statement >= l_log_current_level)THEN
9775 fnd_log.string ( l_log_statement, 'ahl.plsql.'
9776 ||g_pkg_name
9777 ||'.'
9778 ||l_api_name , 'Checkpoint 18: resources :'
9779 || l_workorder_id);
9780 END IF;
9781 dbms_lob.write(l_merged_lob, LENGTH('<ResourceRequirement>'),LENGTH(l_merged_lob)+1, '<ResourceRequirement>');
9782 dbms_lob.write(l_merged_lob, LENGTH('<OperationSequenceNumber>'),LENGTH(l_merged_lob)+1, '<OperationSequenceNumber>');
9783 dbms_lob.write(l_merged_lob, LENGTH(res_req_details_rec.operation_sequence),LENGTH(l_merged_lob)+1, res_req_details_rec.operation_sequence);
9784 dbms_lob.write(l_merged_lob, LENGTH('</OperationSequenceNumber>'),LENGTH(l_merged_lob)+1, '</OperationSequenceNumber>');
9785 dbms_lob.write(l_merged_lob, LENGTH('<ResourceSequenceNumber>'),LENGTH(l_merged_lob)+1, '<ResourceSequenceNumber>');
9786 dbms_lob.write(l_merged_lob, LENGTH(res_req_details_rec.resource_sequence),LENGTH(l_merged_lob)+1, res_req_details_rec.resource_sequence);
9787 dbms_lob.write(l_merged_lob, LENGTH('</ResourceSequenceNumber>'),LENGTH(l_merged_lob)+1, '</ResourceSequenceNumber>');
9788 dbms_lob.write(l_merged_lob, LENGTH('<ResourceCode>'),LENGTH(l_merged_lob)+1, '<ResourceCode>');
9789 dummy := DBMS_XMLGEN.CONVERT(res_req_details_rec.resource_code);
9790 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9791 dbms_lob.write(l_merged_lob, LENGTH('</ResourceCode>'),LENGTH(l_merged_lob)+1, '</ResourceCode>');
9792 IF (res_req_details_rec.resource_type_name IS NOT NULL) THEN
9793 dbms_lob.write(l_merged_lob, LENGTH('<ResourceType>'),LENGTH(l_merged_lob)+1, '<ResourceType>');
9794 dummy := DBMS_XMLGEN.CONVERT(res_req_details_rec.resource_type_name);
9795 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9796 dbms_lob.write(l_merged_lob, LENGTH('</ResourceType>'),LENGTH(l_merged_lob)+1, '</ResourceType>');
9797 ELSE
9798 dbms_lob.write(l_merged_lob, LENGTH('<ResourceType/>'),LENGTH(l_merged_lob)+1, '<ResourceType/>');
9799 END IF;
9800 -- resource_name
9801 IF (res_req_details_rec.resource_name IS NOT NULL) THEN
9802 dbms_lob.write(l_merged_lob, LENGTH('<Description>'),LENGTH(l_merged_lob)+1, '<Description>');
9803 dummy := DBMS_XMLGEN.CONVERT(res_req_details_rec.resource_name);
9804 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9805 dbms_lob.write(l_merged_lob, LENGTH('</Description>'),LENGTH(l_merged_lob)+1, '</Description>');
9806 ELSE
9807 dbms_lob.write(l_merged_lob, LENGTH('<Description/>'),LENGTH(l_merged_lob)+1, '<Description/>');
9808 END IF;
9809 dbms_lob.write(l_merged_lob, LENGTH('<Quantity>'),LENGTH(l_merged_lob)+1, '<Quantity>');
9810 dbms_lob.write(l_merged_lob, LENGTH(res_req_details_rec.quantity),LENGTH(l_merged_lob)+1, res_req_details_rec.quantity);
9811 dbms_lob.write(l_merged_lob, LENGTH('</Quantity>'),LENGTH(l_merged_lob)+1, '</Quantity>');
9812 dbms_lob.write(l_merged_lob, LENGTH('<Duration>'),LENGTH(l_merged_lob)+1, '<Duration>');
9813 dbms_lob.write(l_merged_lob, LENGTH(res_req_details_rec.duration),LENGTH(l_merged_lob)+1, res_req_details_rec.duration);
9814 dbms_lob.write(l_merged_lob, LENGTH('</Duration>'),LENGTH(l_merged_lob)+1, '</Duration>');
9815 IF (res_req_details_rec.uom_name IS NOT NULL) THEN
9816 dbms_lob.write(l_merged_lob, LENGTH('<UOM>'),LENGTH(l_merged_lob)+1, '<UOM>');
9817 dummy := DBMS_XMLGEN.CONVERT(res_req_details_rec.uom_name);
9818 dbms_lob.write(l_merged_lob, LENGTH(dummy),LENGTH(l_merged_lob)+1, dummy);
9819 dbms_lob.write(l_merged_lob, LENGTH('</UOM>'),LENGTH(l_merged_lob)+1, '</UOM>');
9820 ELSE
9821 dbms_lob.write(l_merged_lob, LENGTH('<UOM/>'),LENGTH(l_merged_lob)+1, '<UOM/>');
9822 END IF;
9823
9824 IF (l_log_statement >= l_log_current_level)THEN
9825 fnd_log.string (
9826 l_log_statement, 'ahl.plsql.'||g_pkg_name||'.'||l_api_name ,
9827 'Checkpoint 19: before resource DFF' || l_workorder_id);
9828 END IF;
9829 IF(l_route_op_res_found IN('R','O'))THEN -- fix for bug 10048778
9830 IF ((res_req_details_rec.resource_id IS NOT NULL)
9831 AND ((l_route_op_res_found = 'R' AND l_route_id IS NOT NULL)
9832 OR (l_route_op_res_found = 'O' AND res_req_details_rec.operation_id IS NOT NULL))) THEN
9833 context := dbms_xmlgen.newContext(l_res_dffs);
9834 --DBMS_XMLGEN.setbindvalue (context, '1',l_workorder_id);
9835 --DBMS_XMLGEN.setbindvalue (context, '2',l_workorder_id);
9836 DBMS_XMLGEN.setbindvalue (context, '1',res_req_details_rec.resource_id);
9837 IF (l_route_op_res_found = 'R') THEN
9838 DBMS_XMLGEN.setbindvalue (context, '2','ROUTE');
9839 DBMS_XMLGEN.setbindvalue (context, '3',l_route_id);
9840 ELSE
9841 DBMS_XMLGEN.setbindvalue (context, '2','OPERATION');
9842 DBMS_XMLGEN.setbindvalue (context, '3',res_req_details_rec.operation_id);
9843 END IF;
9844 dbms_xmlgen.setRowsetTag(context, 'ResourceDFFs');
9845 dbms_xmlgen.setRowTag(context,null);
9846 dbms_xmlgen.setConvertSpecialChars(context, TRUE);
9847 DBMS_XMLGEN.setNullHandling(context, 2);
9848 l_res_dff_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
9849 dbms_xmlgen.closeContext(context);
9850 -- Write to lob only when some data exists.
9851 IF dbms_lob.getlength(l_res_dff_lob) > 0
9852 THEN
9853 l_offset := dbms_lob.INSTR(l_res_dff_lob, '>');
9854
9855 -- copy workorder details into final lob
9856 dbms_lob.copy(l_merged_lob, l_res_dff_lob, dbms_lob.getlength(l_res_dff_lob), dbms_lob.getlength(l_merged_lob)+1, l_offset+ 1);
9857
9858 END IF;
9859 END IF;
9860 END IF;
9861
9862 dbms_lob.write(l_merged_lob, length('</ResourceRequirement>'),length(l_merged_lob)+1, '</ResourceRequirement>');
9863 END LOOP;
9864 CLOSE res_req_details_csr;
9865
9866
9867 dbms_lob.write(l_merged_lob, length('</ResourceRequirements>'),length(l_merged_lob)+1, '</ResourceRequirements>');
9868
9869 --Tools record
9870
9871 context := dbms_xmlgen.newContext(l_tools_det);
9872 DBMS_XMLGEN.setbindvalue (context, '1',l_workorder_id);
9873
9874 dbms_xmlgen.setRowsetTag(context, 'Tools');
9875 dbms_xmlgen.setRowTag(context,'Tool');
9876 dbms_xmlgen.setConvertSpecialChars(context, TRUE);
9877 DBMS_XMLGEN.setNullHandling(context, 2);
9878 l_tool_det_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
9879 dbms_xmlgen.closeContext(context);
9880 -- Write to lob only when some data exists.
9881 IF dbms_lob.getlength(l_tool_det_lob) > 0
9882 THEN
9883 l_offset := dbms_lob.INSTR(l_tool_det_lob, '>');
9884
9885 -- copy workorder details into final lob
9886 dbms_lob.copy(l_merged_lob, l_tool_det_lob, dbms_lob.getlength(l_tool_det_lob), dbms_lob.getlength(l_merged_lob)+1, l_offset+ 1);
9887
9888 END IF;
9889 /*
9890 context := dbms_xmlgen.newContext(l_inst_remove_det || l_workorder_id);
9891 dbms_xmlgen.setRowsetTag(context, 'ComponentRemovalInstalls');
9892 dbms_xmlgen.setRowTag(context,'ComponentRemovalInstall');
9893 dbms_xmlgen.setConvertSpecialChars(context, TRUE);
9894 l_inst_remove_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
9895 dbms_xmlgen.closeContext(context);
9896 -- Write to lob only when some data exists.
9897 IF dbms_lob.getlength(l_inst_remove_lob) > 0
9898 THEN
9899 l_offset := dbms_lob.INSTR(l_inst_remove_lob, '>');
9900
9901 -- copy workorder details into final lob
9902 dbms_lob.copy(l_merged_lob, l_inst_remove_lob, dbms_lob.getlength(l_inst_remove_lob), dbms_lob.getlength(l_merged_lob)+1, l_offset+ 1);
9903
9904 END IF;
9905 */
9906
9907 --END LOOP;
9908 dbms_lob.write(l_merged_lob, length('</job_card>'),length(l_merged_lob)+1, '</job_card>');
9909 CLOSE wo_details_csr;
9910 END LOOP;
9911 END Get_job_card_det;
9912 END AHL_PRD_PRINT_PVT;