227: SELECT transaction_document
228: FROM hr_api_transactions
229: WHERE transaction_id = p_transaction_id;
230: txnClob CLOB;
231: txnXml xmldom.DOMElement;
232: nl xmldom.DOMNodeList;
233: nl2 xmldom.DOMNodeList;
234: nl3 xmldom.DOMNodeList;
235: nl4 xmldom.DOMNodeList;
228: FROM hr_api_transactions
229: WHERE transaction_id = p_transaction_id;
230: txnClob CLOB;
231: txnXml xmldom.DOMElement;
232: nl xmldom.DOMNodeList;
233: nl2 xmldom.DOMNodeList;
234: nl3 xmldom.DOMNodeList;
235: nl4 xmldom.DOMNodeList;
236: len1 number;
229: WHERE transaction_id = p_transaction_id;
230: txnClob CLOB;
231: txnXml xmldom.DOMElement;
232: nl xmldom.DOMNodeList;
233: nl2 xmldom.DOMNodeList;
234: nl3 xmldom.DOMNodeList;
235: nl4 xmldom.DOMNodeList;
236: len1 number;
237: len2 number;
230: txnClob CLOB;
231: txnXml xmldom.DOMElement;
232: nl xmldom.DOMNodeList;
233: nl2 xmldom.DOMNodeList;
234: nl3 xmldom.DOMNodeList;
235: nl4 xmldom.DOMNodeList;
236: len1 number;
237: len2 number;
238: n xmldom.DOMNode;
231: txnXml xmldom.DOMElement;
232: nl xmldom.DOMNodeList;
233: nl2 xmldom.DOMNodeList;
234: nl3 xmldom.DOMNodeList;
235: nl4 xmldom.DOMNodeList;
236: len1 number;
237: len2 number;
238: n xmldom.DOMNode;
239: n1 xmldom.DOMNode;
234: nl3 xmldom.DOMNodeList;
235: nl4 xmldom.DOMNodeList;
236: len1 number;
237: len2 number;
238: n xmldom.DOMNode;
239: n1 xmldom.DOMNode;
240: e xmldom.DOMElement;
241: nnm xmldom.DOMNamedNodeMap;
242: attrname varchar2(100);
235: nl4 xmldom.DOMNodeList;
236: len1 number;
237: len2 number;
238: n xmldom.DOMNode;
239: n1 xmldom.DOMNode;
240: e xmldom.DOMElement;
241: nnm xmldom.DOMNamedNodeMap;
242: attrname varchar2(100);
243: attrval varchar2(100);
236: len1 number;
237: len2 number;
238: n xmldom.DOMNode;
239: n1 xmldom.DOMNode;
240: e xmldom.DOMElement;
241: nnm xmldom.DOMNamedNodeMap;
242: attrname varchar2(100);
243: attrval varchar2(100);
244: l_clob CLOB;
237: len2 number;
238: n xmldom.DOMNode;
239: n1 xmldom.DOMNode;
240: e xmldom.DOMElement;
241: nnm xmldom.DOMNamedNodeMap;
242: attrname varchar2(100);
243: attrval varchar2(100);
244: l_clob CLOB;
245: l_filedata CLOB;
260: CLOSE csr_clob;
261: IF txnClob IS NOT NULL THEN -- process only when there is a non null transaction document.
262: txnXml := hr_transaction_swi.convertCLOBtoXMLElement(txnClob);
263: -- Process the FndDocuments rows and populate the pl/sql table
264: nl := xmldom.getElementsByTagName(txnXml, 'FndDocumentsVlEORow');
265: len1 := xmldom.getLength(nl);
266: -- loop through elements
267: FOR j in 0..len1-1 LOOP
268: n := xmldom.item(nl, j);
261: IF txnClob IS NOT NULL THEN -- process only when there is a non null transaction document.
262: txnXml := hr_transaction_swi.convertCLOBtoXMLElement(txnClob);
263: -- Process the FndDocuments rows and populate the pl/sql table
264: nl := xmldom.getElementsByTagName(txnXml, 'FndDocumentsVlEORow');
265: len1 := xmldom.getLength(nl);
266: -- loop through elements
267: FOR j in 0..len1-1 LOOP
268: n := xmldom.item(nl, j);
269: e := xmldom.makeElement(n);
264: nl := xmldom.getElementsByTagName(txnXml, 'FndDocumentsVlEORow');
265: len1 := xmldom.getLength(nl);
266: -- loop through elements
267: FOR j in 0..len1-1 LOOP
268: n := xmldom.item(nl, j);
269: e := xmldom.makeElement(n);
270: gt_doc(j+1).post_State := xmldom.getAttribute(e, 'PS');
271: gt_doc(j+1).Document_id := hr_transaction_swi.getNumberValue(n,'DocumentId',null);
272: gt_doc(j+1).Created_By := hr_transaction_swi.getNumberValue(n,'CreatedBy',null);
265: len1 := xmldom.getLength(nl);
266: -- loop through elements
267: FOR j in 0..len1-1 LOOP
268: n := xmldom.item(nl, j);
269: e := xmldom.makeElement(n);
270: gt_doc(j+1).post_State := xmldom.getAttribute(e, 'PS');
271: gt_doc(j+1).Document_id := hr_transaction_swi.getNumberValue(n,'DocumentId',null);
272: gt_doc(j+1).Created_By := hr_transaction_swi.getNumberValue(n,'CreatedBy',null);
273: gt_doc(j+1).creation_date := hr_transaction_swi.getDateValue(n,'CreationDate',null);
266: -- loop through elements
267: FOR j in 0..len1-1 LOOP
268: n := xmldom.item(nl, j);
269: e := xmldom.makeElement(n);
270: gt_doc(j+1).post_State := xmldom.getAttribute(e, 'PS');
271: gt_doc(j+1).Document_id := hr_transaction_swi.getNumberValue(n,'DocumentId',null);
272: gt_doc(j+1).Created_By := hr_transaction_swi.getNumberValue(n,'CreatedBy',null);
273: gt_doc(j+1).creation_date := hr_transaction_swi.getDateValue(n,'CreationDate',null);
274: gt_doc(j+1).last_update_date := hr_transaction_swi.getDateValue(n,'LastUpdateDate',null);
289: --dbms_output.put_line('PostState: '||gt_doc(j+1).post_State);
290: END LOOP;
291: hr_utility.trace('Number of documents:'||gt_doc.count);
292: -- Process the FndAttachedDocuments rows and populate the pl/sql table
293: nl := xmldom.getElementsByTagName(txnXml, 'FndAttachedDocumentsEORow');
294: len1 := xmldom.getLength(nl);
295: -- loop through elements
296: FOR j in 0..len1-1 LOOP
297: n := xmldom.item(nl, j);
290: END LOOP;
291: hr_utility.trace('Number of documents:'||gt_doc.count);
292: -- Process the FndAttachedDocuments rows and populate the pl/sql table
293: nl := xmldom.getElementsByTagName(txnXml, 'FndAttachedDocumentsEORow');
294: len1 := xmldom.getLength(nl);
295: -- loop through elements
296: FOR j in 0..len1-1 LOOP
297: n := xmldom.item(nl, j);
298: e := xmldom.makeElement(n);
293: nl := xmldom.getElementsByTagName(txnXml, 'FndAttachedDocumentsEORow');
294: len1 := xmldom.getLength(nl);
295: -- loop through elements
296: FOR j in 0..len1-1 LOOP
297: n := xmldom.item(nl, j);
298: e := xmldom.makeElement(n);
299: gt_attachdoc(j+1).post_State := xmldom.getAttribute(e, 'PS');
300: --dbms_output.put_line('PostState: '||gt_attachdoc(j+1).post_State);
301: gt_attachdoc(j+1).attached_document_id := hr_transaction_swi.getNumberValue(n,'AttachedDocumentId',null);
294: len1 := xmldom.getLength(nl);
295: -- loop through elements
296: FOR j in 0..len1-1 LOOP
297: n := xmldom.item(nl, j);
298: e := xmldom.makeElement(n);
299: gt_attachdoc(j+1).post_State := xmldom.getAttribute(e, 'PS');
300: --dbms_output.put_line('PostState: '||gt_attachdoc(j+1).post_State);
301: gt_attachdoc(j+1).attached_document_id := hr_transaction_swi.getNumberValue(n,'AttachedDocumentId',null);
302: gt_attachdoc(j+1).document_id := hr_transaction_swi.getNumberValue(n,'DocumentId',null);
295: -- loop through elements
296: FOR j in 0..len1-1 LOOP
297: n := xmldom.item(nl, j);
298: e := xmldom.makeElement(n);
299: gt_attachdoc(j+1).post_State := xmldom.getAttribute(e, 'PS');
300: --dbms_output.put_line('PostState: '||gt_attachdoc(j+1).post_State);
301: gt_attachdoc(j+1).attached_document_id := hr_transaction_swi.getNumberValue(n,'AttachedDocumentId',null);
302: gt_attachdoc(j+1).document_id := hr_transaction_swi.getNumberValue(n,'DocumentId',null);
303: gt_attachdoc(j+1).Creation_Date := hr_transaction_swi.getdateValue(n,'CreationDate',null);
312: --dbms_output.put_line('DocumentId:'||gt_attachdoc(j+1).attached_document_id);
313: END LOOP;
314: --dbms_output.put_line('Number of attached doc entities:'||gt_attachdoc.count);
315: -- Now process all FndDocumentsShortText rows and populate PL/SQL TABLE
316: nl := xmldom.getElementsByTagName(txnXml, 'FndDocumentsShortTextEORow');
317: len1 := xmldom.getLength(nl);
318: -- loop through elements
319: FOR j in 0..len1-1 LOOP
320: n := xmldom.item(nl, j);
313: END LOOP;
314: --dbms_output.put_line('Number of attached doc entities:'||gt_attachdoc.count);
315: -- Now process all FndDocumentsShortText rows and populate PL/SQL TABLE
316: nl := xmldom.getElementsByTagName(txnXml, 'FndDocumentsShortTextEORow');
317: len1 := xmldom.getLength(nl);
318: -- loop through elements
319: FOR j in 0..len1-1 LOOP
320: n := xmldom.item(nl, j);
321: e := xmldom.makeElement(n);
316: nl := xmldom.getElementsByTagName(txnXml, 'FndDocumentsShortTextEORow');
317: len1 := xmldom.getLength(nl);
318: -- loop through elements
319: FOR j in 0..len1-1 LOOP
320: n := xmldom.item(nl, j);
321: e := xmldom.makeElement(n);
322: gt_shorttext(j+1).post_State := xmldom.getAttribute(e, 'PS');
323: --dbms_output.put_line('PostState: '||gt_shorttext(j+1).post_State);
324: gt_shorttext(j+1).media_id := hr_transaction_swi.getNumberValue(n,'MediaId',null);
317: len1 := xmldom.getLength(nl);
318: -- loop through elements
319: FOR j in 0..len1-1 LOOP
320: n := xmldom.item(nl, j);
321: e := xmldom.makeElement(n);
322: gt_shorttext(j+1).post_State := xmldom.getAttribute(e, 'PS');
323: --dbms_output.put_line('PostState: '||gt_shorttext(j+1).post_State);
324: gt_shorttext(j+1).media_id := hr_transaction_swi.getNumberValue(n,'MediaId',null);
325: gt_shorttext(j+1).short_text := hr_transaction_swi.getVarchar2Value(n,'ShortText',null);
318: -- loop through elements
319: FOR j in 0..len1-1 LOOP
320: n := xmldom.item(nl, j);
321: e := xmldom.makeElement(n);
322: gt_shorttext(j+1).post_State := xmldom.getAttribute(e, 'PS');
323: --dbms_output.put_line('PostState: '||gt_shorttext(j+1).post_State);
324: gt_shorttext(j+1).media_id := hr_transaction_swi.getNumberValue(n,'MediaId',null);
325: gt_shorttext(j+1).short_text := hr_transaction_swi.getVarchar2Value(n,'ShortText',null);
326: gt_shorttext(j+1).app_source_version := hr_transaction_swi.getVarchar2Value(n,'AppSourceVersion',null);
327: --dbms_output.put_line('media_id:'||gt_shorttext(j+1).media_id);
328: END LOOP;
329: --dbms_output.put_line('Number of attached doc entities:'||gt_shorttext.count);
330: -- Now process all the FndLOBs rows and populate the PL/SQL Table
331: nl := xmldom.getElementsByTagName(txnXml, 'FndLobsEORow');
332: len1 := xmldom.getLength(nl);
333: -- loop through elements
334: FOR j in 0..len1-1 LOOP
335: n := xmldom.item(nl, j);
328: END LOOP;
329: --dbms_output.put_line('Number of attached doc entities:'||gt_shorttext.count);
330: -- Now process all the FndLOBs rows and populate the PL/SQL Table
331: nl := xmldom.getElementsByTagName(txnXml, 'FndLobsEORow');
332: len1 := xmldom.getLength(nl);
333: -- loop through elements
334: FOR j in 0..len1-1 LOOP
335: n := xmldom.item(nl, j);
336: e := xmldom.makeElement(n);
331: nl := xmldom.getElementsByTagName(txnXml, 'FndLobsEORow');
332: len1 := xmldom.getLength(nl);
333: -- loop through elements
334: FOR j in 0..len1-1 LOOP
335: n := xmldom.item(nl, j);
336: e := xmldom.makeElement(n);
337: gt_lob(j+1).post_State := xmldom.getAttribute(e, 'PS');
338: --dbms_output.put_line('PostState: '||gt_lob(j+1).post_State);
339: gt_lob(j+1).file_ID := hr_transaction_swi.getNumberValue(n,'FileId',null);
332: len1 := xmldom.getLength(nl);
333: -- loop through elements
334: FOR j in 0..len1-1 LOOP
335: n := xmldom.item(nl, j);
336: e := xmldom.makeElement(n);
337: gt_lob(j+1).post_State := xmldom.getAttribute(e, 'PS');
338: --dbms_output.put_line('PostState: '||gt_lob(j+1).post_State);
339: gt_lob(j+1).file_ID := hr_transaction_swi.getNumberValue(n,'FileId',null);
340: gt_lob(j+1).file_Name := hr_transaction_swi.getVarchar2Value(n,'FileName',null);
333: -- loop through elements
334: FOR j in 0..len1-1 LOOP
335: n := xmldom.item(nl, j);
336: e := xmldom.makeElement(n);
337: gt_lob(j+1).post_State := xmldom.getAttribute(e, 'PS');
338: --dbms_output.put_line('PostState: '||gt_lob(j+1).post_State);
339: gt_lob(j+1).file_ID := hr_transaction_swi.getNumberValue(n,'FileId',null);
340: gt_lob(j+1).file_Name := hr_transaction_swi.getVarchar2Value(n,'FileName',null);
341: gt_lob(j+1).file_content_type := hr_transaction_swi.getVarchar2Value(n,'FileContentType',null);
342: gt_lob(j+1).oracle_charset := hr_transaction_swi.getVarchar2Value(n,'OracleCharset',null);
343: --dbms_output.put_line('file name:'||gt_lob(j+1).file_Name );
344: gt_lob(j+1).file_format := hr_transaction_swi.getVarchar2Value(n,'FileFormat',null);
345: dbms_lob.createtemporary(l_clob,true);
346: IF NOT xmldom.isnull(n) THEN
347: xmldom.writeToClob(n,l_clob);
348: END IF;
349: l_filestart := INSTR(l_clob,'
350: l_fileend := INSTR(l_clob,'
343: --dbms_output.put_line('file name:'||gt_lob(j+1).file_Name );
344: gt_lob(j+1).file_format := hr_transaction_swi.getVarchar2Value(n,'FileFormat',null);
345: dbms_lob.createtemporary(l_clob,true);
346: IF NOT xmldom.isnull(n) THEN
347: xmldom.writeToClob(n,l_clob);
348: END IF;
349: l_filestart := INSTR(l_clob,'
350: l_fileend := INSTR(l_clob,'
351: l_filedata:= SUBSTR(l_clob,l_filestart,(l_fileend-l_filestart)+1);