372: l_chunk_size NUMBER;
373: l_clob_size NUMBER;
374:
375:
376: context DBMS_XMLGEN.ctxHandle;
377: l_x_res_txn_tbl AHL_PRD_RESOURCE_TRANX_PVT.PRD_RESOURCE_TXNS_TBL;
378:
379: BEGIN
380: --set the operating unit.
471: THEN
472: l_user_role := AHL_PRD_WO_LOGIN_PVT.Get_User_Role;
473: END IF;
474:
475: -- XML generated with dbms_xmlgen doesnt have encoding information. so we need to manually insert into the resultant CLOB.
476: dbms_lob.write(l_merged_lob,length(''),1,'');
477:
478: --Put the root node to maintain the XML completeness.
479: dbms_lob.write(l_merged_lob, length('
534:
535: dbms_lob.write(
536: l_merged_lob,
537: length('
538: length(l_merged_lob)+1, '
540:
541: dbms_lob.write(
542: l_merged_lob,
592: );
593: END IF;
594:
595:
596: context := dbms_xmlgen.newContext(l_wo_con_query || p_workorders_tbl(wo_count));
597: dbms_xmlgen.setRowsetTag(context,null);
598: dbms_xmlgen.setRowTag(context,'G_WORKORDER');
599: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
600: l_wo_details_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
593: END IF;
594:
595:
596: context := dbms_xmlgen.newContext(l_wo_con_query || p_workorders_tbl(wo_count));
597: dbms_xmlgen.setRowsetTag(context,null);
598: dbms_xmlgen.setRowTag(context,'G_WORKORDER');
599: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
600: l_wo_details_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
601: dbms_xmlgen.closeContext(context);
594:
595:
596: context := dbms_xmlgen.newContext(l_wo_con_query || p_workorders_tbl(wo_count));
597: dbms_xmlgen.setRowsetTag(context,null);
598: dbms_xmlgen.setRowTag(context,'G_WORKORDER');
599: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
600: l_wo_details_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
601: dbms_xmlgen.closeContext(context);
602:
595:
596: context := dbms_xmlgen.newContext(l_wo_con_query || p_workorders_tbl(wo_count));
597: dbms_xmlgen.setRowsetTag(context,null);
598: dbms_xmlgen.setRowTag(context,'G_WORKORDER');
599: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
600: l_wo_details_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
601: dbms_xmlgen.closeContext(context);
602:
603: -- free the temp variable for query after every iteration.
596: context := dbms_xmlgen.newContext(l_wo_con_query || p_workorders_tbl(wo_count));
597: dbms_xmlgen.setRowsetTag(context,null);
598: dbms_xmlgen.setRowTag(context,'G_WORKORDER');
599: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
600: l_wo_details_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
601: dbms_xmlgen.closeContext(context);
602:
603: -- free the temp variable for query after every iteration.
604: l_wo_con_query := null;
597: dbms_xmlgen.setRowsetTag(context,null);
598: dbms_xmlgen.setRowTag(context,'G_WORKORDER');
599: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
600: l_wo_details_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
601: dbms_xmlgen.closeContext(context);
602:
603: -- free the temp variable for query after every iteration.
604: l_wo_con_query := null;
605:
641: p_collection_id => l_collection_id,
642: x_query_string => l_query_string
643: );
644:
645: context := dbms_xmlgen.newContext(l_query_string);
646: dbms_xmlgen.setRowsetTag(context,'G_WO_QA_LIST');
647: dbms_xmlgen.setRowTag(context,'G_WO_QA');
648: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
649: l_wo_qa_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
642: x_query_string => l_query_string
643: );
644:
645: context := dbms_xmlgen.newContext(l_query_string);
646: dbms_xmlgen.setRowsetTag(context,'G_WO_QA_LIST');
647: dbms_xmlgen.setRowTag(context,'G_WO_QA');
648: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
649: l_wo_qa_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
650: dbms_xmlgen.closeContext(context);
643: );
644:
645: context := dbms_xmlgen.newContext(l_query_string);
646: dbms_xmlgen.setRowsetTag(context,'G_WO_QA_LIST');
647: dbms_xmlgen.setRowTag(context,'G_WO_QA');
648: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
649: l_wo_qa_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
650: dbms_xmlgen.closeContext(context);
651:
644:
645: context := dbms_xmlgen.newContext(l_query_string);
646: dbms_xmlgen.setRowsetTag(context,'G_WO_QA_LIST');
647: dbms_xmlgen.setRowTag(context,'G_WO_QA');
648: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
649: l_wo_qa_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
650: dbms_xmlgen.closeContext(context);
651:
652: -- Write to lob only when some data exists.
645: context := dbms_xmlgen.newContext(l_query_string);
646: dbms_xmlgen.setRowsetTag(context,'G_WO_QA_LIST');
647: dbms_xmlgen.setRowTag(context,'G_WO_QA');
648: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
649: l_wo_qa_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
650: dbms_xmlgen.closeContext(context);
651:
652: -- Write to lob only when some data exists.
653: IF dbms_lob.getlength(l_wo_qa_lob) > 0
646: dbms_xmlgen.setRowsetTag(context,'G_WO_QA_LIST');
647: dbms_xmlgen.setRowTag(context,'G_WO_QA');
648: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
649: l_wo_qa_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
650: dbms_xmlgen.closeContext(context);
651:
652: -- Write to lob only when some data exists.
653: IF dbms_lob.getlength(l_wo_qa_lob) > 0
654: THEN
713: p_collection_id => l_collection_id,
714: x_query_string => l_query_string
715: );
716:
717: context := dbms_xmlgen.newContext(l_query_string);
718: -- Top tag need to be present.
719: dbms_xmlgen.setRowsetTag(context,'G_DUMMY_TOP_OP_QA');
720: dbms_xmlgen.setRowTag(context,'G_WO_OP_QA');
721: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
715: );
716:
717: context := dbms_xmlgen.newContext(l_query_string);
718: -- Top tag need to be present.
719: dbms_xmlgen.setRowsetTag(context,'G_DUMMY_TOP_OP_QA');
720: dbms_xmlgen.setRowTag(context,'G_WO_OP_QA');
721: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
722: l_op_qa_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
723: dbms_xmlgen.closeContext(context);
716:
717: context := dbms_xmlgen.newContext(l_query_string);
718: -- Top tag need to be present.
719: dbms_xmlgen.setRowsetTag(context,'G_DUMMY_TOP_OP_QA');
720: dbms_xmlgen.setRowTag(context,'G_WO_OP_QA');
721: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
722: l_op_qa_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
723: dbms_xmlgen.closeContext(context);
724:
717: context := dbms_xmlgen.newContext(l_query_string);
718: -- Top tag need to be present.
719: dbms_xmlgen.setRowsetTag(context,'G_DUMMY_TOP_OP_QA');
720: dbms_xmlgen.setRowTag(context,'G_WO_OP_QA');
721: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
722: l_op_qa_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
723: dbms_xmlgen.closeContext(context);
724:
725: -- Write to lob only when some data exists.
718: -- Top tag need to be present.
719: dbms_xmlgen.setRowsetTag(context,'G_DUMMY_TOP_OP_QA');
720: dbms_xmlgen.setRowTag(context,'G_WO_OP_QA');
721: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
722: l_op_qa_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
723: dbms_xmlgen.closeContext(context);
724:
725: -- Write to lob only when some data exists.
726: IF dbms_lob.getlength(l_op_qa_lob) > 0
719: dbms_xmlgen.setRowsetTag(context,'G_DUMMY_TOP_OP_QA');
720: dbms_xmlgen.setRowTag(context,'G_WO_OP_QA');
721: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
722: l_op_qa_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
723: dbms_xmlgen.closeContext(context);
724:
725: -- Write to lob only when some data exists.
726: IF dbms_lob.getlength(l_op_qa_lob) > 0
727: THEN
763: /********************************************************************
764: * Create XML data related to turnover notes
765: ********************************************************************/
766:
767: context := dbms_xmlgen.newContext(l_to_notes || p_workorders_tbl(wo_count));
768: dbms_xmlgen.setRowsetTag(context, 'G_TO_NOTES_LIST');-- turn this off if not required
769: dbms_xmlgen.setRowTag(context,'G_TO_NOTES');
770: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
771: l_ton_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
764: * Create XML data related to turnover notes
765: ********************************************************************/
766:
767: context := dbms_xmlgen.newContext(l_to_notes || p_workorders_tbl(wo_count));
768: dbms_xmlgen.setRowsetTag(context, 'G_TO_NOTES_LIST');-- turn this off if not required
769: dbms_xmlgen.setRowTag(context,'G_TO_NOTES');
770: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
771: l_ton_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
772: dbms_xmlgen.closeContext(context);
765: ********************************************************************/
766:
767: context := dbms_xmlgen.newContext(l_to_notes || p_workorders_tbl(wo_count));
768: dbms_xmlgen.setRowsetTag(context, 'G_TO_NOTES_LIST');-- turn this off if not required
769: dbms_xmlgen.setRowTag(context,'G_TO_NOTES');
770: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
771: l_ton_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
772: dbms_xmlgen.closeContext(context);
773:
766:
767: context := dbms_xmlgen.newContext(l_to_notes || p_workorders_tbl(wo_count));
768: dbms_xmlgen.setRowsetTag(context, 'G_TO_NOTES_LIST');-- turn this off if not required
769: dbms_xmlgen.setRowTag(context,'G_TO_NOTES');
770: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
771: l_ton_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
772: dbms_xmlgen.closeContext(context);
773:
774: -- Write to lob only when some data exists.
767: context := dbms_xmlgen.newContext(l_to_notes || p_workorders_tbl(wo_count));
768: dbms_xmlgen.setRowsetTag(context, 'G_TO_NOTES_LIST');-- turn this off if not required
769: dbms_xmlgen.setRowTag(context,'G_TO_NOTES');
770: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
771: l_ton_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
772: dbms_xmlgen.closeContext(context);
773:
774: -- Write to lob only when some data exists.
775: IF dbms_lob.getlength(l_ton_lob) > 0
768: dbms_xmlgen.setRowsetTag(context, 'G_TO_NOTES_LIST');-- turn this off if not required
769: dbms_xmlgen.setRowTag(context,'G_TO_NOTES');
770: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
771: l_ton_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
772: dbms_xmlgen.closeContext(context);
773:
774: -- Write to lob only when some data exists.
775: IF dbms_lob.getlength(l_ton_lob) > 0
776: THEN
826: 'operation details query string --->'||l_op_con_query
827: );
828: END IF;
829:
830: context := dbms_xmlgen.newContext(l_op_con_query);
831:
832: dbms_xmlgen.setRowsetTag(context,null);-- turn this off if not required
833: dbms_xmlgen.setRowTag(context,'G_OP_REC');
834: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
828: END IF;
829:
830: context := dbms_xmlgen.newContext(l_op_con_query);
831:
832: dbms_xmlgen.setRowsetTag(context,null);-- turn this off if not required
833: dbms_xmlgen.setRowTag(context,'G_OP_REC');
834: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
835: l_op_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
836: dbms_xmlgen.closeContext(context);
829:
830: context := dbms_xmlgen.newContext(l_op_con_query);
831:
832: dbms_xmlgen.setRowsetTag(context,null);-- turn this off if not required
833: dbms_xmlgen.setRowTag(context,'G_OP_REC');
834: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
835: l_op_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
836: dbms_xmlgen.closeContext(context);
837:
830: context := dbms_xmlgen.newContext(l_op_con_query);
831:
832: dbms_xmlgen.setRowsetTag(context,null);-- turn this off if not required
833: dbms_xmlgen.setRowTag(context,'G_OP_REC');
834: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
835: l_op_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
836: dbms_xmlgen.closeContext(context);
837:
838: -- Free temp variable once the query is executed for next iteration.
831:
832: dbms_xmlgen.setRowsetTag(context,null);-- turn this off if not required
833: dbms_xmlgen.setRowTag(context,'G_OP_REC');
834: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
835: l_op_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
836: dbms_xmlgen.closeContext(context);
837:
838: -- Free temp variable once the query is executed for next iteration.
839: l_op_con_query := null;
832: dbms_xmlgen.setRowsetTag(context,null);-- turn this off if not required
833: dbms_xmlgen.setRowTag(context,'G_OP_REC');
834: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
835: l_op_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
836: dbms_xmlgen.closeContext(context);
837:
838: -- Free temp variable once the query is executed for next iteration.
839: l_op_con_query := null;
840:
882: FOR j IN l_x_res_txn_tbl.FIRST .. l_x_res_txn_tbl.LAST LOOP
883:
884: l_dummy_string := '
885: l_dummy_string := l_dummy_string ||'
886: l_dummy_string := l_dummy_string || '
887: l_dummy_string := l_dummy_string || '
888: l_dummy_string := l_dummy_string || '
889: dbms_lob.write(l_merged_lob, length(l_dummy_string),length(l_merged_lob)+1, l_dummy_string);
890: END LOOP;
883:
884: l_dummy_string := '
885: l_dummy_string := l_dummy_string ||'
886: l_dummy_string := l_dummy_string || '
887: l_dummy_string := l_dummy_string || '
888: l_dummy_string := l_dummy_string || '
889: dbms_lob.write(l_merged_lob, length(l_dummy_string),length(l_merged_lob)+1, l_dummy_string);
890: END LOOP;
891:
884: l_dummy_string := '
885: l_dummy_string := l_dummy_string ||'
886: l_dummy_string := l_dummy_string || '
887: l_dummy_string := l_dummy_string || '
888: l_dummy_string := l_dummy_string || '
889: dbms_lob.write(l_merged_lob, length(l_dummy_string),length(l_merged_lob)+1, l_dummy_string);
890: END LOOP;
891:
892: --Insert the end tag for current resource transaction.
910: * Create XML data for material requirements of a workorder
911: ********************************************************************/
912:
913: -- Query and process workorder materials
914: context := dbms_xmlgen.newContext(l_wo_materials || p_workorders_tbl(wo_count));
915: dbms_xmlgen.setRowsetTag(context, 'G_WO_MAT_LIST');
916: dbms_xmlgen.setRowTag(context,'G_WO_MAT');
917: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
918: l_wo_mat_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
911: ********************************************************************/
912:
913: -- Query and process workorder materials
914: context := dbms_xmlgen.newContext(l_wo_materials || p_workorders_tbl(wo_count));
915: dbms_xmlgen.setRowsetTag(context, 'G_WO_MAT_LIST');
916: dbms_xmlgen.setRowTag(context,'G_WO_MAT');
917: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
918: l_wo_mat_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
919: dbms_xmlgen.closeContext(context);
912:
913: -- Query and process workorder materials
914: context := dbms_xmlgen.newContext(l_wo_materials || p_workorders_tbl(wo_count));
915: dbms_xmlgen.setRowsetTag(context, 'G_WO_MAT_LIST');
916: dbms_xmlgen.setRowTag(context,'G_WO_MAT');
917: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
918: l_wo_mat_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
919: dbms_xmlgen.closeContext(context);
920:
913: -- Query and process workorder materials
914: context := dbms_xmlgen.newContext(l_wo_materials || p_workorders_tbl(wo_count));
915: dbms_xmlgen.setRowsetTag(context, 'G_WO_MAT_LIST');
916: dbms_xmlgen.setRowTag(context,'G_WO_MAT');
917: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
918: l_wo_mat_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
919: dbms_xmlgen.closeContext(context);
920:
921: -- Write to lob only when some data exists.
914: context := dbms_xmlgen.newContext(l_wo_materials || p_workorders_tbl(wo_count));
915: dbms_xmlgen.setRowsetTag(context, 'G_WO_MAT_LIST');
916: dbms_xmlgen.setRowTag(context,'G_WO_MAT');
917: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
918: l_wo_mat_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
919: dbms_xmlgen.closeContext(context);
920:
921: -- Write to lob only when some data exists.
922: IF dbms_lob.getlength(l_wo_mat_lob) > 0
915: dbms_xmlgen.setRowsetTag(context, 'G_WO_MAT_LIST');
916: dbms_xmlgen.setRowTag(context,'G_WO_MAT');
917: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
918: l_wo_mat_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
919: dbms_xmlgen.closeContext(context);
920:
921: -- Write to lob only when some data exists.
922: IF dbms_lob.getlength(l_wo_mat_lob) > 0
923: THEN
943: * Create XML data for Document associations to a workorder
944: ********************************************************************/
945:
946: -- Query and process workorder materials
947: context := dbms_xmlgen.newContext(
948: l_route_doc || p_workorders_tbl(wo_count) || ' '||
949: l_op_doc || p_workorders_tbl(wo_count) || ' '||
950: l_mr_doc || p_workorders_tbl(wo_count) || ' '||
951: l_mc_doc || p_workorders_tbl(wo_count) || ' '
950: l_mr_doc || p_workorders_tbl(wo_count) || ' '||
951: l_mc_doc || p_workorders_tbl(wo_count) || ' '
952: --||l_pc_doc || p_workorders_tbl(wo_count)
953: );
954: dbms_xmlgen.setRowsetTag(context,'G_WO_DOC_LIST');
955: dbms_xmlgen.setRowTag(context,'G_WO_DOC');
956: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
957: l_wo_doc_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
958: dbms_xmlgen.closeContext(context);
951: l_mc_doc || p_workorders_tbl(wo_count) || ' '
952: --||l_pc_doc || p_workorders_tbl(wo_count)
953: );
954: dbms_xmlgen.setRowsetTag(context,'G_WO_DOC_LIST');
955: dbms_xmlgen.setRowTag(context,'G_WO_DOC');
956: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
957: l_wo_doc_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
958: dbms_xmlgen.closeContext(context);
959:
952: --||l_pc_doc || p_workorders_tbl(wo_count)
953: );
954: dbms_xmlgen.setRowsetTag(context,'G_WO_DOC_LIST');
955: dbms_xmlgen.setRowTag(context,'G_WO_DOC');
956: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
957: l_wo_doc_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
958: dbms_xmlgen.closeContext(context);
959:
960: -- Write to lob only when some data exists.
953: );
954: dbms_xmlgen.setRowsetTag(context,'G_WO_DOC_LIST');
955: dbms_xmlgen.setRowTag(context,'G_WO_DOC');
956: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
957: l_wo_doc_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
958: dbms_xmlgen.closeContext(context);
959:
960: -- Write to lob only when some data exists.
961: IF dbms_lob.getlength(l_wo_doc_lob) > 0
954: dbms_xmlgen.setRowsetTag(context,'G_WO_DOC_LIST');
955: dbms_xmlgen.setRowTag(context,'G_WO_DOC');
956: dbms_xmlgen.setConvertSpecialChars ( context, TRUE);
957: l_wo_doc_lob := dbms_xmlgen.getXML(context,DBMS_XMLGEN.NONE);
958: dbms_xmlgen.closeContext(context);
959:
960: -- Write to lob only when some data exists.
961: IF dbms_lob.getlength(l_wo_doc_lob) > 0
962: THEN