Eltzam Backage
Eltzam Backage
XXX_HR_ELTEZAM_WS_PKG
AS
PROCEDURE COLLECT_WS_INFO (P_TRX_NAME VARCHAR2)
IS
BEGIN
FOR REC1 IN (SELECT *
FROM APPSPRO_WS
WHERE TRANSACTION_NAME = P_TRX_NAME)
LOOP
G_USER_NAME := REC1.USER_NAME;
G_PASSWORD := REC1.PASSWORD;
G_DOMAIN_NAME := REC1.DOMAIN_NAME;
G_SERVICE_NAME := REC1.SERVICE_NAME;
G_WALLET_PATH := REC1.WALLET_PATH;
G_WALLET_PASSWORD := REC1.WALLET_PASSWORD;
G_ACTION_NAME := REC1.ACTION_NAME;
G_REPORTS_PATH := REC1.REPORTS_PATH;
G_PARAM_REPORT_NAME1 := REC1.PARAM_REPORT1;
G_PARAM_REPORT_NAME2 := REC1.PARAM_REPORT2;
G_PARAM_REPORT_NAME3 := REC1.PARAM_REPORT3;
G_PARAM_REPORT_NAME4 := REC1.PARAM_REPORT4;
G_PARAM_REPORT_NAME5 := REC1.PARAM_REPORT5;
G_PARAM_REPORT_NAME6 := REC1.PARAM_REPORT6;
G_PARAM_REPORT_NAME7 := REC1.PARAM_REPORT7;
G_PARAM_REPORT_NAME8 := REC1.PARAM_REPORT8;
G_PARAM_REPORT_NAME9 := REC1.PARAM_REPORT9;
END LOOP;
END COLLECT_WS_INFO;
X_CLOB CLOB;
L_BUFFER VARCHAR2 (32767);
X NUMBER;
V_CHECK_LENGTH NUMBER;
L_OFFSET NUMBER := 1;
L_AMOUNT NUMBER := 2000;
L_BUFFER2 VARCHAR2 (32767);
L_REQUEST_NUMBER VARCHAR2 (400);
L_FAULTSTRING VARCHAR2 (4000);
L_ERROR VARCHAR2 (4000);
V_ALTER_TXT VARCHAR2 (120)
:= 'alter session set nls_language = ''ARABIC''';
BEGIN
EXECUTE IMMEDIATE V_ALTER_TXT;
COLLECT_WS_INFO ('ELTEZAM_JOB_INFO');
BEGIN
BEGIN
DELETE FROM XXX_HR_ELTEZAM_JOBINFO_TB
WHERE (PERSON_ID = P_PERSON_ID OR P_PERSON_ID IS NULL);
COMMIT;
END;
COMMIT;
END;
IF P_CONNECTION_TYPE = 'WEB_SERVICE'
THEN
DBMS_OUTPUT.put_line ('T_URL ' || T_URL);
FOR I
IN (SELECT EMPLOYEE_NUMBER,
JOB_NO,
JOB_CLASS_CODE,
JOB_NAME_CODE,
JOB_POSITION_CODE,
START_DATE,
END_DATE,
POS_ORG_ID,
ORG_NAME,
POSITION_STATUS,
SUBSTR (EMPLOYMENT_TYPE_CODE, 1, 7)
EMPLOYMENT_TYPE_CODE,
RANK_CODE,
LOCATION_CODE,
TRANSACTION_CODE,
VACANT_DATE,
LAST_UPDATE_DATE,
PERSON_ID
FROM XXX_HR_ELTEZAM_JOBINFO_TB
WHERE (PERSON_ID = P_PERSON_ID OR P_PERSON_ID IS NULL))
LOOP
SOAP_REQUEST :=
'<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tem="http://tempuri.org/">
<soapenv:Header/>
<soapenv:Body>
<tem:SubmitJobInfo>
<!--Optional:-->
<tem:jobInfo>
<!--Optional:-->
<EmployeeID>'
|| I.EMPLOYEE_NUMBER
|| '</EmployeeID>
<!--Optional:-->
<JobNumber>'
|| I.JOB_NO
|| '</JobNumber>
<!--Optional:-->
<JobClassCode>'
|| I.JOB_CLASS_CODE
|| '</JobClassCode>
<!--Optional:-->
<JobNameCode>'
|| I.JOB_NAME_CODE
|| '</JobNameCode>
<!--Optional:-->
<JobPositionCode>'
|| I.JOB_POSITION_CODE
|| '</JobPositionCode>
<!--Optional:-->
<StartDate>'
|| I.START_DATE
|| '</StartDate>
<!--Optional:-->
<EndDate>'
|| I.VACANT_DATE
|| '</EndDate>
<!--Optional:-->
<PositionOrganizationID>'
|| I.POS_ORG_ID
|| '</PositionOrganizationID>
<!--Optional:-->
<PositionOrganizationName>'
|| I.ORG_NAME
|| '</PositionOrganizationName>
<PositionStatus>'
|| I.POSITION_STATUS
|| '</PositionStatus>
<!--Optional:-->
<EmploymentTypeCode>'
|| I.EMPLOYMENT_TYPE_CODE
|| '</EmploymentTypeCode>
<!--Optional:-->
<RankCode>'
|| I.RANK_CODE
|| '</RankCode>
<!--Optional:-->
<LocationCode>'
|| I.LOCATION_CODE
|| '</LocationCode>
<!--Optional:-->
<JobTransactionCode>'
|| I.TRANSACTION_CODE
|| '</JobTransactionCode>
<!--Optional:-->
<VacantDate>'
|| I.VACANT_DATE
|| '</VacantDate>
<!--Optional:-->
<LastUpdateDate>'
|| I.LAST_UPDATE_DATE
|| '</LastUpdateDate>
</tem:jobInfo>
</tem:SubmitJobInfo>
</soapenv:Body>
</soapenv:Envelope>';
L_DEST_OFFSET := 1;
L_SRC_OFFSET := 1;
L_LANG_CONTEXT := 0;
L_WARNING := NULL;
DBMS_OUTPUT.put_line (TO_CHAR (SYSDATE, 'DD/MM/YYYY HH24:MI:SS'));
DBMS_OUTPUT.put_line (
L_DEST_OFFSET
|| ','
|| L_SRC_OFFSET
|| ','
|| L_LANG_CONTEXT
|| ','
|| L_WARNING);
DBMS_OUTPUT.put_line ('Envelope');
UTL_HTTP.SET_TRANSFER_TIMEOUT (999);
----- Wallet Information -------
V_REQ_CONTEXT :=
UTL_HTTP.CREATE_REQUEST_CONTEXT (
WALLET_PATH => G_WALLET_PATH,
WALLET_PASSWORD => G_WALLET_PASSWORD);
DBMS_LOB.CREATETEMPORARY (L_BLOB, FALSE, DBMS_LOB.CALL);
DBMS_LOB.CONVERTTOBLOB (
DEST_LOB => L_BLOB,
SRC_CLOB => SOAP_REQUEST,
AMOUNT => DBMS_LOB.LOBMAXSIZE,
DEST_OFFSET => L_DEST_OFFSET,
SRC_OFFSET => L_SRC_OFFSET,
BLOB_CSID => NLS_CHARSET_ID ('AL32UTF8'), --AR8ISO8859P6
AL32UTF8 AL16UTF16
LANG_CONTEXT => L_LANG_CONTEXT,
WARNING => L_WARNING);
DBMS_OUTPUT.put_line ('SET_TRANSFER_TIMEOUT');
HTTP_REQ :=
UTL_HTTP.BEGIN_REQUEST (URL => T_URL,
REQUEST_CONTEXT => V_REQ_CONTEXT,
METHOD => 'POST',
HTTP_VERSION => 'HTTP/1.1');
UTL_HTTP.set_header (
http_req,
'SOAPAction',
'"http://tempuri.org/IEltezamDataService/SubmitJobInfo"');
-------------------- arabic------------------------------
IF V_CHECK_LENGTH > 32767
THEN
UTL_HTTP.SET_TRANSFER_TIMEOUT (999);
UTL_HTTP.SET_HEADER (HTTP_REQ, 'Trasfer-Encoding', 'chunked');
DBMS_LOB.OPEN (L_BLOB, DBMS_LOB.LOB_READWRITE);
BEGIN
WHILE L_OFFSET < V_CHECK_LENGTH
LOOP
DBMS_LOB.READ (L_BLOB,
L_AMOUNT,
L_OFFSET,
L_BUFFER2);
UTL_HTTP.WRITE_RAW (HTTP_REQ, L_BUFFER2);
L_OFFSET := L_OFFSET + L_AMOUNT;
END LOOP;
END;
DBMS_LOB.CLOSE (L_BLOB);
ELSE
UTL_HTTP.WRITE_TEXT (R => HTTP_REQ, DATA => SOAP_REQUEST);
END IF;
------------------end arabic--------------------------
BEGIN
LOOP
UTL_HTTP.READ_TEXT (HTTP_RESP, L_BUFFER);
DBMS_LOB.WRITEAPPEND (X_CLOB, LENGTH (L_BUFFER), L_BUFFER);
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
IF SQLCODE <> -29266
THEN
RAISE;
END IF;
END;
DBMS_OUTPUT.PUT_LINE (
'Response Status: '
|| HTTP_RESP.STATUS_CODE
|| ' '
|| HTTP_RESP.REASON_PHRASE);
IF (HTTP_RESP.STATUS_CODE = 200)
THEN
BEGIN
SELECT REQUESTNUMBER
INTO L_REQUEST_NUMBER
FROM (SELECT XMLTYPE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
(X_CLOB),
'http://schemas.xmlsoap.org/soap/envelope/',
''),
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"',
''),
'xmlns:xsd="http://www.w3.org/2001/XMLSchema"',
''),
'xmlns="http://tempuri.org/"',
''),
'xmlns="http://yefi.gov.sa/MCS/EltezamDataSchema/xml/schemas/version1.0"',
''),
'xmlns=""',
''),
's:',
''),
'xmlns=""',
''))
XMLT
FROM DUAL) XX,
XMLTABLE (
'Envelope/Body
/SubmitJobInfoResponse/SubmitJobInfoResult/submitJobInfoResponseDetailObject'
PASSING XX.XMLT
COLUMNS REQUESTNUMBER VARCHAR2 (400)
PATH
'RequestNumber');
INSERT
INTO XXCUSTOM.XXX_HR_ELTEZAM_STATUS_TB (WS_NAME,
SUBMITION_DATE,
SOURCEAGENCY,
RESPONSE_BODY,
REQUEST_BODY,
REQUESTNO,
RAISEDBY,
ERRORTYPE,
ERRORTEXT,
ERRORCODE,
EMPLOYEE_NO,
PERSON_ID)
VALUES ('JOBINFO_WS',
SYSDATE,
NULL,
X_CLOB,
SOAP_REQUEST,
L_REQUEST_NUMBER,
NULL,
NULL,
NULL,
HTTP_RESP.STATUS_CODE,
I.EMPLOYEE_NUMBER,
I.PERSON_ID);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
L_REQUEST_NUMBER := NULL;
REGEXP_REPLACE (
(X_CLOB),
'http://schemas.xmlsoap.org/soap/envelope/',
''),
'xmlns="http://tempuri.org/"',
''),
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"',
''),
'xmlns:xsd="http://www.w3.org/2001/XMLSchema"',
''),
'
xmlns="http://yefi.gov.sa/YEFIErrorStructure/xml/schemas/version2.3"',
''),
'xmlns=""',
''),
's:',
''),
'xmlns=""',
''),
'xmlns="http://yefi.gov.sa/YEFIErrorStructure/xml/schemas/version2.3"',
''))
XMLT
FROM DUAL) XX,
XMLTABLE (
'Envelope/Body
/SubmitJobInfoResponse/SubmitJobInfoResult/ServiceError'
PASSING XX.XMLT
COLUMNS FAULTSTRING VARCHAR2 (4000)
PATH 'ErrorText',
Code VARCHAR2 (4000)
PATH 'Code');
L_ERROR := SQLERRM;
INSERT
INTO XXCUSTOM.XXX_HR_ELTEZAM_STATUS_TB (WS_NAME,
SUBMITION_DATE,
SOURCEAGENCY,
RESPONSE_BODY,
REQUEST_BODY,
REQUESTNO,
RAISEDBY,
ERRORTYPE,
ERRORTEXT,
ERRORCODE,
EMPLOYEE_NO,
PERSON_ID)
VALUES ('JOBINFO_WS',
SYSDATE,
NULL,
X_CLOB,
SOAP_REQUEST,
L_REQUEST_NUMBER,
NULL,
L_FAULTSTRING, --ERRORTYPE
L_FAULTSTRING, --ERRORTEXT
HTTP_RESP.STATUS_CODE,
I.EMPLOYEE_NUMBER,
I.PERSON_ID);
END;
ELSE ----- In case of failure
BEGIN
L_REQUEST_NUMBER := NULL;
SELECT FAULTSTRING
INTO L_FAULTSTRING
FROM (SELECT XMLTYPE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
(X_CLOB),
'http://schemas.xmlsoap.org/soap/envelope/',
''),
'xmlns="http://tempuri.org/"',
''),
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"',
''),
'xmlns:xsd="http://www.w3.org/2001/XMLSchema"',
''),
'
xmlns="http://yefi.gov.sa/YEFIErrorStructure/xml/schemas/version2.3"',
''),
'xmlns=""',
''),
's:',
''),
'xmlns=""',
''))
XMLT
FROM DUAL) XX,
XMLTABLE (
'Envelope/Body /Fault'
PASSING XX.XMLT
COLUMNS FAULTSTRING VARCHAR2 (1000)
PATH 'faultstring');
INSERT
INTO XXCUSTOM.XXX_HR_ELTEZAM_STATUS_TB (WS_NAME,
SUBMITION_DATE,
SOURCEAGENCY,
RESPONSE_BODY,
REQUEST_BODY,
REQUESTNO,
RAISEDBY,
ERRORTYPE,
ERRORTEXT,
ERRORCODE,
EMPLOYEE_NO,
PERSON_ID)
VALUES ('JOBINFO_WS',
SYSDATE,
NULL,
X_CLOB,
SOAP_REQUEST,
L_REQUEST_NUMBER,
NULL,
L_FAULTSTRING, --ERRORTYPE
L_FAULTSTRING, --ERRORTEXT
HTTP_RESP.STATUS_CODE,
I.EMPLOYEE_NUMBER,
I.PERSON_ID);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
L_ERROR := SQLERRM;
INSERT INTO XXX_HR_ELTEZAM_STATUS_TB (WS_NAME,
SUBMITION_DATE,
SOURCEAGENCY,
RESPONSE_BODY,
REQUEST_BODY,
REQUESTNO,
RAISEDBY,
ERRORTYPE,
ERRORTEXT,
ERRORCODE,
EMPLOYEE_NO,
PERSON_ID)
VALUES (
'JOBINFO_WS',
SYSDATE,
NULL,
X_CLOB,
SOAP_REQUEST,
L_REQUEST_NUMBER,
NULL,
'Internal Error in Failure Response Query
XML', --ERRORTYPE
L_ERROR, --ERRORTEXT
HTTP_RESP.STATUS_CODE,
I.EMPLOYEE_NUMBER,
I.PERSON_ID);
COMMIT;
END;
END IF;
BEGIN
SELECT REQUESTNO, ERRORTEXT
INTO V_STAUTS, V_ERROR_MSG
FROM XXX_HR_ELTEZAM_STATUS_TB
WHERE EMPLOYEE_NO = I.EMPLOYEE_NUMBER
AND WS_NAME = 'JOBINFO_WS'
AND ROWNUM = 1
AND SUBMITION_DATE =
(SELECT MAX (SUBMITION_DATE)
FROM XXX_HR_ELTEZAM_STATUS_TB
WHERE EMPLOYEE_NO = I.EMPLOYEE_NUMBER
AND WS_NAME = 'JOBINFO_WS');
EXCEPTION
WHEN NO_DATA_FOUND
THEN
V_STAUTS := NULL;
V_ERROR_MSG := NULL;
END;
DBMS_OUTPUT.PUT_LINE (
'EMPLOYEE_NO'
|| I.EMPLOYEE_NUMBER
|| ' v_stauts :'
|| V_STAUTS
|| ' v_error_msg : '
|| V_ERROR_MSG);
BEGIN
UPDATE XXX_HR_ELTEZAM_JOBINFO_TB
SET RequestNo = V_STAUTS, ERROR_MSG = V_ERROR_MSG
WHERE EMPLOYEE_NUMBER = I.EMPLOYEE_NUMBER
AND SUBMITION_DATE =
(SELECT MAX (SUBMITION_DATE)
FROM XXX_HR_ELTEZAM_JOBINFO_TB
WHERE EMPLOYEE_NUMBER = I.EMPLOYEE_NUMBER);
COMMIT;
END;
UTL_HTTP.END_RESPONSE (HTTP_RESP);
UTL_HTTP.DESTROY_REQUEST_CONTEXT (V_REQ_CONTEXT);
END LOOP;
END IF;
COMMIT;
EXCEPTION
WHEN UTL_HTTP.END_OF_BODY
THEN
UTL_HTTP.END_RESPONSE (HTTP_RESP);
UTL_HTTP.DESTROY_REQUEST_CONTEXT (V_REQ_CONTEXT);
WHEN UTL_HTTP.TOO_MANY_REQUESTS
THEN
RAISE_APPLICATION_ERROR (
-20001,
'Request failed exception:' || UTL_HTTP.GET_DETAILED_SQLERRM);
WHEN OTHERS
THEN
NULL;
-- RAISE_APPLICATION_ERROR (
-- -20002,
-- 'Request failed exception:' || UTL_HTTP.GET_DETAILED_SQLERRM);
END XXX_HR_SUBMIT_JOB_INFO;
X_CLOB CLOB;
L_BUFFER VARCHAR2 (32767);
X NUMBER;
L_REQUEST_NUMBER VARCHAR2 (400);
L_FAULTSTRING VARCHAR2 (4000);
L_ERROR VARCHAR2 (4000);
V_ALTER_TXT VARCHAR2 (120)
:= 'alter session set nls_language = ''ARABIC''';
TRANS_END_DATE_TEXT VARCHAR2 (4000);
TRANS_OUT_DATE_TEXT VARCHAR2 (4000);
GRADE_DATE_TEXT VARCHAR2 (4000);
CURSOR MAIN_DATA
IS
SELECT EMPLOYEE_NUMBER,
NATIONAL_ID,
JOB_NO,
JOB_CLASS_CODE,
JOB_NAME_CODE,
EMPLOYMENT_TYPE_CODE,
RANK_CODE,
STEP_ID,
XXX_HR_PACKAGE1.XXX_GREGORIAN_TO_HIJRAH (STEP_DATE,
'DD-MM-RRRR')
STEP_DATE,
BASIC_SALARY,
DECISTION_NO,
XXX_HR_PACKAGE1.XXX_GREGORIAN_TO_HIJRAH (DECISION_DATE,
'DD-MM-RRRR')
DECISION_DATE,
XXX_HR_PACKAGE1.XXX_GREGORIAN_TO_HIJRAH (GRADE_DATE,
'DD-MM-RRRR')
GRADE_DATE,
LOCATION_CODE,
TRANSACTION_CODE,
XXX_HR_PACKAGE1.XXX_GREGORIAN_TO_HIJRAH (
TRANSACTION_START_DATE,
'DD-MM-RRRR')
TRANSACTION_START_DATE,
TRANSACTION_END_DATE,
XXX_HR_PACKAGE1.XXX_GREGORIAN_TO_HIJRAH (LAST_UPDATE_DATE,
'DD-MM-RRRR')
LAST_UPDATE_DATE,
REQUESTNO,
SUBMITION_DATE,
PERSON_ID,
TRANSACTION_ID,
INFORMATION_TYPE,
TRANSACTIONTYPE
FROM XXX_HR_ELTEZAM_HISTORICAL_TB
WHERE 1 = 1
AND TRANSACTIONTYPE IN ('Updated', 'Added')
AND (PERSON_ID = P_PERSON_ID OR P_PERSON_ID IS NULL);
L_MAIN_DATA_VALIDATION NUMBER;
L_ERROR_TEXT VARCHAR2 (4000);
BEGIN
EXECUTE IMMEDIATE V_ALTER_TXT;
COLLECT_WS_INFO ('ELTEZAM_EMPLOYEE_HISTORY');
COMMIT;
IF P_CONNECTION_TYPE = 'WEB_SERVICE'
THEN
FOR L_HR_ELTEZAM_EMPINFO_TB IN MAIN_DATA
LOOP
BEGIN
L_ERROR_TEXT := NULL;
IF L_HR_ELTEZAM_EMPINFO_TB.JOB_NAME_CODE IS NULL
THEN
L_ERROR_TEXT :=
'JOB_NAME_CODE is Missing' || '/' || L_ERROR_TEXT;
END IF;
IF L_HR_ELTEZAM_EMPINFO_TB.EMPLOYMENT_TYPE_CODE IS NULL
THEN
L_ERROR_TEXT :=
'EMPLOYMENT_TYPE_CODE is Missing' || '/' || L_ERROR_TEXT;
END IF;
IF L_HR_ELTEZAM_EMPINFO_TB.RANK_CODE IS NULL
THEN
L_ERROR_TEXT :=
'RANK_CODE is Missing' || '/' || L_ERROR_TEXT;
END IF;
IF L_HR_ELTEZAM_EMPINFO_TB.STEP_ID IS NULL
THEN
L_ERROR_TEXT := 'STEP_ID is Missing' || '/' || L_ERROR_TEXT;
END IF;
IF L_HR_ELTEZAM_EMPINFO_TB.STEP_DATE IS NULL
THEN
L_ERROR_TEXT :=
'STEP_DATE is Missing' || '/' || L_ERROR_TEXT;
END IF;
IF L_HR_ELTEZAM_EMPINFO_TB.BASIC_SALARY IS NULL
THEN
L_ERROR_TEXT :=
'BASIC_SALARY is Missing' || '/' || L_ERROR_TEXT;
END IF;
IF L_HR_ELTEZAM_EMPINFO_TB.DECISTION_NO IS NULL
THEN
L_ERROR_TEXT :=
'DECISTION_NO is Missing' || '/' || L_ERROR_TEXT;
END IF;
IF L_HR_ELTEZAM_EMPINFO_TB.LOCATION_CODE IS NULL
THEN
L_ERROR_TEXT :=
'LOCATION_CODE is Missing' || '/' || L_ERROR_TEXT;
END IF;
IF L_HR_ELTEZAM_EMPINFO_TB.TRANSACTION_CODE IS NULL
THEN
L_ERROR_TEXT :=
'TRANSACTION_CODE is Missing' || '/' || L_ERROR_TEXT;
END IF;
IF L_HR_ELTEZAM_EMPINFO_TB.TRANSACTION_START_DATE IS NULL
THEN
L_ERROR_TEXT :=
'TRANSACTION_START_DATE is Missing'
|| '/'
|| L_ERROR_TEXT;
END IF;
L_MAIN_DATA_VALIDATION := -1;
ELSE
L_MAIN_DATA_VALIDATION := 1;
END IF;
IF L_MAIN_DATA_VALIDATION = 1
THEN
IF L_HR_ELTEZAM_EMPINFO_TB.TRANSACTION_END_DATE IS NOT NULL
THEN
TRANS_END_DATE_TEXT :=
'<TransactionEndDate>'
|| L_HR_ELTEZAM_EMPINFO_TB.TRANSACTION_END_DATE
|| '</TransactionEndDate>';
ELSE
TRANS_END_DATE_TEXT := NULL;
END IF;
SOAP_REQUEST :=
'<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tem="http://tempuri.org/"
xmlns:ver="http://yefi.gov.sa/PersonProfileCommonTypes/xml/schemas/version2.0">
<soapenv:Header/>
<soapenv:Body>
<tem:SubmitEmployeeHistoricalInfo>
<!--Optional:-->
<tem:employeeHistoricalInfo>
<!--Optional:-->
<EmployeeID>'
|| L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_NUMBER
|| '</EmployeeID>
<!--Optional:-->
<PersonIdentifier>
<!--You have a CHOICE of the next 2 items at this level-->
<!--Optional:-->
<ver:IqamaNumber>'
|| L_HR_ELTEZAM_EMPINFO_TB.NATIONAL_ID
|| '</ver:IqamaNumber>
<!--Optional:-->
<ver:NationalID>'
|| L_HR_ELTEZAM_EMPINFO_TB.NATIONAL_ID
|| '</ver:NationalID>
</PersonIdentifier>
<!--Optional:-->
<JobNumber>'
|| L_HR_ELTEZAM_EMPINFO_TB.JOB_NO
|| '</JobNumber>
<!--Optional:-->
<JobClassCode>'
|| L_HR_ELTEZAM_EMPINFO_TB.JOB_CLASS_CODE
|| '</JobClassCode>
<!--Optional:-->
<JobNameCode>'
|| L_HR_ELTEZAM_EMPINFO_TB.JOB_NAME_CODE
|| '</JobNameCode>
<!--Optional:-->
<EmploymentTypeCode>'
|| L_HR_ELTEZAM_EMPINFO_TB.EMPLOYMENT_TYPE_CODE
|| '</EmploymentTypeCode>
<!--Optional:-->
<RankCode>'
|| L_HR_ELTEZAM_EMPINFO_TB.RANK_CODE
|| '</RankCode>
<StepID>'
|| L_HR_ELTEZAM_EMPINFO_TB.STEP_ID
|| '</StepID>
<!--Optional:-->
<StepDate>'
|| L_HR_ELTEZAM_EMPINFO_TB.STEP_DATE
|| '</StepDate>
<BasicSalary>'
|| L_HR_ELTEZAM_EMPINFO_TB.BASIC_SALARY
|| '</BasicSalary>
<!--Optional:-->
<DecisionNumber>'
|| L_HR_ELTEZAM_EMPINFO_TB.DECISTION_NO
|| '</DecisionNumber>
<!--Optional:-->'
|| TRANS_OUT_DATE_TEXT
|| '
<!--Optional:-->'
|| GRADE_DATE_TEXT
|| '
<!--Optional:-->
<LocationCode>'
|| L_HR_ELTEZAM_EMPINFO_TB.LOCATION_CODE
|| '</LocationCode>
<!--Optional:-->
<TransactionCode>'
|| L_HR_ELTEZAM_EMPINFO_TB.TRANSACTION_CODE
|| '</TransactionCode>
<!--Optional:-->
<TransactionStartDate>'
|| L_HR_ELTEZAM_EMPINFO_TB.TRANSACTION_START_DATE
|| '</TransactionStartDate>
'
|| TRANS_END_DATE_TEXT
|| '
<LastUpdateDate>'
|| L_HR_ELTEZAM_EMPINFO_TB.LAST_UPDATE_DATE
|| '</LastUpdateDate>
</tem:employeeHistoricalInfo>
</tem:SubmitEmployeeHistoricalInfo>
</soapenv:Body>
</soapenv:Envelope>';
UTL_HTTP.SET_TRANSFER_TIMEOUT (999);
----- Wallet Information -------
V_REQ_CONTEXT :=
UTL_HTTP.CREATE_REQUEST_CONTEXT (
WALLET_PATH => G_WALLET_PATH,
WALLET_PASSWORD => G_WALLET_PASSWORD);
HTTP_REQ :=
UTL_HTTP.BEGIN_REQUEST (
URL => T_URL,
REQUEST_CONTEXT => V_REQ_CONTEXT,
METHOD => 'POST',
HTTP_VERSION => 'HTTP/1.1');
/*UTL_HTTP.SET_HEADER (http_req,
'Content-Length',
DBMS_LOB.GETLENGTH (L_BLOB));*/
UTL_HTTP.set_header (http_req,
'Content-Length',
LENGTH (soap_request));
UTL_HTTP.set_header (
http_req,
'SOAPAction',
'"http://tempuri.org/IEltezamDataService/SubmitEmployeeHistoricalInfo"');
UTL_HTTP.WRITE_TEXT (HTTP_REQ, SOAP_REQUEST);
BEGIN
LOOP
UTL_HTTP.READ_TEXT (HTTP_RESP, L_BUFFER);
DBMS_LOB.WRITEAPPEND (X_CLOB,
LENGTH (L_BUFFER),
L_BUFFER);
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
IF SQLCODE <> -29266
THEN
RAISE;
END IF;
END;
DBMS_OUTPUT.PUT_LINE (
'Response Status: '
|| HTTP_RESP.STATUS_CODE
|| ' '
|| HTTP_RESP.REASON_PHRASE);
IF (HTTP_RESP.STATUS_CODE = 200)
THEN
BEGIN
SELECT REQUESTNUMBER
INTO L_REQUEST_NUMBER
FROM (SELECT XMLTYPE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
(X_CLOB),
'http://schemas.xmlsoap.org/soap/envelope/',
''),
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"',
''),
'xmlns:xsd="http://www.w3.org/2001/XMLSchema"',
''),
'xmlns="http://tempuri.org/"',
''),
'xmlns="http://yefi.gov.sa/MCS/EltezamDataSchema/xml/schemas/version1.0"',
''),
'xmlns=""',
''),
's:',
''),
'xmlns=""',
''))
XMLT
FROM DUAL) XX,
XMLTABLE (
'Envelope/Body
/SubmitEmployeeHistoricalInfoResponse/SubmitEmployeeHistoricalInfoResult/
submitEmployeeHistoricalInfoResponseDetailObject'
PASSING XX.XMLT
COLUMNS REQUESTNUMBER VARCHAR2 (400)
PATH
'RequestNumber');
INSERT
INTO XXCUSTOM.XXX_HR_ELTEZAM_STATUS_TB (
WS_NAME,
SUBMITION_DATE,
SOURCEAGENCY,
RESPONSE_BODY,
REQUEST_BODY,
REQUESTNO,
RAISEDBY,
ERRORTYPE,
ERRORTEXT,
ERRORCODE,
EMPLOYEE_NO,
PERSON_ID)
VALUES ('EMP_HISTORY_WS',
SYSDATE,
NULL,
X_CLOB,
SOAP_REQUEST,
L_REQUEST_NUMBER,
NULL,
NULL,
NULL,
HTTP_RESP.STATUS_CODE,
L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_NUMBER,
L_HR_ELTEZAM_EMPINFO_TB.PERSON_ID);
UPDATE XXX_HR_ELTEZAM_HISTORICAL_TB
SET TRANSACTIONTYPE = 'Transferred'
WHERE 1 = 1
AND EMPLOYEE_NUMBER =
L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_NUMBER;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
BEGIN
L_REQUEST_NUMBER := NULL;
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
(X_CLOB),
'http://schemas.xmlsoap.org/soap/envelope/',
''),
'xmlns="http://tempuri.org/"',
''),
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"',
''),
'xmlns:xsd="http://www.w3.org/2001/XMLSchema"',
''),
'
xmlns="http://yefi.gov.sa/YEFIErrorStructure/xml/schemas/version2.3"',
''),
'xmlns=""',
''),
's:',
''),
'xmlns=""',
''),
'xmlns="http://yefi.gov.sa/YEFIErrorStructure/xml/schemas/version2.3"',
''))
XMLT
FROM DUAL) XX,
XMLTABLE (
'Envelope/Body
/SubmitEmployeeHistoricalInfoResponse/SubmitEmployeeHistoricalInfoResult/
ServiceError'
PASSING XX.XMLT
COLUMNS FAULTSTRING VARCHAR2
(4000)
PATH
'ErrorText',
Code VARCHAR2
(4000)
PATH
'Code');
EXCEPTION
WHEN OTHERS
THEN
NULL;
END;
INSERT
INTO XXX_HR_ELTEZAM_STATUS_TB (WS_NAME,
SUBMITION_DATE,
SOURCEAGENCY,
RESPONSE_BODY,
REQUEST_BODY,
REQUESTNO,
RAISEDBY,
ERRORTYPE,
ERRORTEXT,
ERRORCODE,
EMPLOYEE_NO,
PERSON_ID)
VALUES ('EMP_HISTORY_WS',
SYSDATE,
NULL,
X_CLOB,
SOAP_REQUEST,
L_REQUEST_NUMBER,
NULL,
L_FAULTSTRING, --ERRORTYPE
L_FAULTSTRING, --ERRORTEXT
HTTP_RESP.STATUS_CODE,
L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_NUMBER,
L_HR_ELTEZAM_EMPINFO_TB.PERSON_ID);
END;
ELSE
L_REQUEST_NUMBER := NULL; ----- In case of failure
BEGIN
SELECT FAULTSTRING
INTO L_FAULTSTRING
FROM (SELECT XMLTYPE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE
(
REGEXP_REPLACE (
(X_CLOB),
'http://schemas.xmlsoap.org/soap/envelope/',
''),
'xmlns="http://tempuri.org/"',
''),
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"',
''),
'xmlns:xsd="http://www.w3.org/2001/XMLSchema"',
''),
'
xmlns="http://yefi.gov.sa/YEFIErrorStructure/xml/schemas/version2.3"',
''),
'xmlns=""',
''),
's:',
''),
'xmlns=""',
''))
XMLT
FROM DUAL) XX,
XMLTABLE (
'Envelope/Body /Fault'
PASSING XX.XMLT
COLUMNS FAULTSTRING VARCHAR2 (1000)
PATH
'faultstring');
INSERT
INTO XXCUSTOM.XXX_HR_ELTEZAM_STATUS_TB (
WS_NAME,
SUBMITION_DATE,
SOURCEAGENCY,
RESPONSE_BODY,
REQUEST_BODY,
REQUESTNO,
RAISEDBY,
ERRORTYPE,
ERRORTEXT,
ERRORCODE,
EMPLOYEE_NO,
PERSON_ID)
VALUES ('EMP_HISTORY_WS',
SYSDATE,
NULL,
X_CLOB,
SOAP_REQUEST,
L_REQUEST_NUMBER,
NULL,
L_FAULTSTRING, --ERRORTYPE
L_FAULTSTRING, --ERRORTEXT
HTTP_RESP.STATUS_CODE,
L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_NUMBER,
L_HR_ELTEZAM_EMPINFO_TB.PERSON_ID);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
L_ERROR :=
SQLERRM
|| ' '
|| 'Internal Error in Failure Response Query XML';
INSERT
INTO XXX_HR_ELTEZAM_STATUS_TB (WS_NAME,
SUBMITION_DATE,
SOURCEAGENCY,
RESPONSE_BODY,
REQUEST_BODY,
REQUESTNO,
RAISEDBY,
ERRORTYPE,
ERRORTEXT,
ERRORCODE,
EMPLOYEE_NO,
PERSON_ID)
VALUES (
'EMP_HISTORY_WS',
SYSDATE,
NULL,
X_CLOB,
SOAP_REQUEST,
L_REQUEST_NUMBER,
NULL,
'Internal Error in Failure Response Query
XML', --ERRORTYPE
L_ERROR, --ERRORTEXT
HTTP_RESP.STATUS_CODE,
L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_NUMBER,
L_HR_ELTEZAM_EMPINFO_TB.PERSON_ID);
COMMIT;
END;
END IF;
UTL_HTTP.END_RESPONSE (HTTP_RESP);
UTL_HTTP.DESTROY_REQUEST_CONTEXT (V_REQ_CONTEXT);
END IF;
COMMIT;
EXCEPTION
WHEN UTL_HTTP.END_OF_BODY
THEN
UTL_HTTP.END_RESPONSE (HTTP_RESP);
UTL_HTTP.DESTROY_REQUEST_CONTEXT (V_REQ_CONTEXT);
WHEN UTL_HTTP.TOO_MANY_REQUESTS
THEN
RAISE_APPLICATION_ERROR (
-20001,
'Request failed exception:'
|| UTL_HTTP.GET_DETAILED_SQLERRM);
WHEN OTHERS
THEN
NULL;
RAISE_APPLICATION_ERROR (
-20002,
'Request failed exception:'
|| UTL_HTTP.GET_DETAILED_SQLERRM);
END;
END LOOP;
END IF;
END XXX_HR_SUBMIT_EMP_HISTORY;
ELSE
JOB_NAME
END ) JOB_NAME,
JOB_CLASS_CODE,
ISACTIVE,
GOV_HIRE_DATE,
FIRST_GRADE_DT,
EMP_STATUS_CODE,
EMPLOYMENT_TYPE_ID,
EMPLOYEE_NUMBER,
EMPLOYEE_GRAND_NAME_AR,
EMPLOYEE_FIRST_NAME_AR,
EMPLOYEE_FATHER_NAME_AR,
EMPLOYEE_FAMILY_NAME_AR,
EMPLOYEE_FIRST_NAME_EN,
EMPLOYEE_FATHER_NAME_EN,
EMPLOYEE_GRAND_NAME_EN,
EMPLOYEE_FAMILY_NAME_EN,
EMAIL,
BLOOD_TYPE,
BIRTH_DATE,
BASIC_SALARY,
ACTUAL_ORG_NAME,
ACTUAL_ORG_ID,
ACTUAL_JOB_CODE,
EMP_HEALTH_STAUTS
FROM XXX_HR_INT_EMPLOYEE_VIEW
WHERE 1 = 1
AND (PERSON_ID = P_PERSON_ID OR P_PERSON_ID IS NULL))
V
ON (D.PERSON_ID = V.PERSON_ID)
WHEN MATCHED
THEN
UPDATE SET
D.TRANSACTION_CODE = V.TRANSACTION_CODE,
D.TERMINATION_REASON_CODE = V.TERMINATION_REASON_CODE,
D.TERMINATION_DATE = V.TERMINATION_DATE,
D.SYS_DATE = V.SYS_DATE,
D.STEP_ID = V.STEP_ID,
D.STEP_DATE = V.STEP_DATE,
D.SEX = V.SEX,
D.SDTE = V.SDTE,
D.REMAINING_BUS_BALANCE = V.REMAINING_BUS_BALANCE,
D.REMAINING_ANNUAL_BALANCE = V.REMAINING_ANNUAL_BALANCE,
D.RELIGION = V.RELIGION,
D.RANK_ID = V.RANK_ID,
D.NEXT_PROM_DATE = V.NEXT_PROM_DATE,
D.NATIONAL_NO = V.NATIONAL_NO,
D.NATIONALITY_ID = V.NATIONALITY_ID,
D.MINISTRY_HIRE_DATE = V.MINISTRY_HIRE_DATE,
D.LOCATION_ID = V.LOCATION_ID,
D.JOB_ORG_NAME = V.JOB_ORG_NAME,
D.JOB_ORG_ID = V.JOB_ORG_ID,
D.JOB_NO = V.JOB_NO,
D.JOB_NAME = V.JOB_NAME,
D.JOB_CLASS_CODE = V.JOB_CLASS_CODE,
D.ISACTIVE = V.ISACTIVE,
D.GOV_HIRE_DATE = V.GOV_HIRE_DATE,
D.FIRST_GRADE_DT = V.FIRST_GRADE_DT,
D.EMP_STATUS_CODE = V.EMP_STATUS_CODE,
D.EMPLOYMENT_TYPE_ID = V.EMPLOYMENT_TYPE_ID,
D.EMPLOYEE_NUMBER = V.EMPLOYEE_NUMBER,
D.EMPLOYEE_GRAND_NAME_AR = V.EMPLOYEE_GRAND_NAME_AR,
D.EMPLOYEE_FIRST_NAME_AR = V.EMPLOYEE_FIRST_NAME_AR,
D.EMPLOYEE_FATHER_NAME_AR = V.EMPLOYEE_FATHER_NAME_AR,
D.EMPLOYEE_FAMILY_NAME_AR = V.EMPLOYEE_FAMILY_NAME_AR,
D.EMPLOYEE_GRAND_NAME_EN = V.EMPLOYEE_GRAND_NAME_EN,
D.EMPLOYEE_FIRST_NAME_EN = V.EMPLOYEE_FIRST_NAME_EN,
D.EMPLOYEE_FATHER_NAME_EN = V.EMPLOYEE_FATHER_NAME_EN,
D.EMPLOYEE_FAMILY_NAME_EN = V.EMPLOYEE_FAMILY_NAME_EN,
D.EMAIL = V.EMAIL,
D.RECORD_STATUS = 'Updated',
D.BLOOD_TYPE = V.BLOOD_TYPE,
D.BIRTH_DATE = V.BIRTH_DATE,
D.BASIC_SALARY = V.BASIC_SALARY,
D.ACTUAL_ORG_NAME = V.ACTUAL_ORG_NAME,
D.ACTUAL_ORG_ID = V.ACTUAL_ORG_ID,
D.ACTUAL_JOB_CODE = V.ACTUAL_JOB_CODE,
D.EMP_HEALTH_STAUTS = V.EMP_HEALTH_STAUTS
WHERE 1 = 1
AND ( ( D.TERMINATION_REASON_CODE <>
V.TERMINATION_REASON_CODE
OR ( D.TERMINATION_REASON_CODE IS NULL
AND V.TERMINATION_REASON_CODE IS NOT NULL)
OR ( V.TERMINATION_REASON_CODE IS NULL
AND D.TERMINATION_REASON_CODE IS NOT NULL))
OR ( D.TERMINATION_DATE <> V.TERMINATION_DATE
OR ( D.TERMINATION_DATE IS NULL
AND V.TERMINATION_DATE IS NOT NULL)
OR ( V.TERMINATION_DATE IS NULL
AND D.TERMINATION_DATE IS NOT NULL))
OR ( D.STEP_ID <> V.STEP_ID
OR ( D.STEP_ID IS NULL
AND V.STEP_ID IS NOT NULL)
OR ( V.STEP_ID IS NULL
AND D.STEP_ID IS NOT NULL))
OR ( D.STEP_DATE <> V.STEP_DATE
OR ( D.STEP_DATE IS NULL
AND V.STEP_DATE IS NOT NULL)
OR ( V.STEP_DATE IS NULL
AND D.STEP_DATE IS NOT NULL))
OR ( D.SEX <> V.SEX
OR (D.SEX IS NULL AND V.SEX IS NOT NULL)
OR (V.SEX IS NULL AND D.SEX IS NOT NULL))
OR ( D.REMAINING_BUS_BALANCE <>
V.REMAINING_BUS_BALANCE
OR ( D.REMAINING_BUS_BALANCE IS NULL
AND V.REMAINING_BUS_BALANCE IS NOT NULL)
OR ( V.REMAINING_BUS_BALANCE IS NULL
AND D.REMAINING_BUS_BALANCE IS NOT NULL))
OR ( D.REMAINING_ANNUAL_BALANCE <>
V.REMAINING_ANNUAL_BALANCE
OR ( D.REMAINING_ANNUAL_BALANCE IS NULL
AND V.REMAINING_ANNUAL_BALANCE
IS NOT NULL)
OR ( V.REMAINING_ANNUAL_BALANCE IS NULL
AND D.REMAINING_ANNUAL_BALANCE
IS NOT NULL))
OR ( D.RELIGION <> V.RELIGION
OR ( D.RELIGION IS NULL
AND V.RELIGION IS NOT NULL)
OR ( V.RELIGION IS NULL
AND D.RELIGION IS NOT NULL))
OR ( D.RANK_ID <> V.RANK_ID
OR ( D.RANK_ID IS NULL
AND V.RANK_ID IS NOT NULL)
OR ( V.RANK_ID IS NULL
AND D.RANK_ID IS NOT NULL))
OR ( D.NEXT_PROM_DATE <> V.NEXT_PROM_DATE
OR ( D.NEXT_PROM_DATE IS NULL
AND V.NEXT_PROM_DATE IS NOT NULL)
OR ( V.NEXT_PROM_DATE IS NULL
AND D.NEXT_PROM_DATE IS NOT NULL))
OR ( D.NATIONAL_NO <> V.NATIONAL_NO
OR ( D.NATIONAL_NO IS NULL
AND V.NATIONAL_NO IS NOT NULL)
OR ( V.NATIONAL_NO IS NULL
AND D.NATIONAL_NO IS NOT NULL))
OR ( D.NATIONALITY_ID <> V.NATIONALITY_ID
OR ( D.NATIONALITY_ID IS NULL
AND V.NATIONALITY_ID IS NOT NULL)
OR ( V.NATIONALITY_ID IS NULL
AND D.NATIONALITY_ID IS NOT NULL))
OR ( D.MINISTRY_HIRE_DATE <>
V.MINISTRY_HIRE_DATE
OR ( D.MINISTRY_HIRE_DATE IS NULL
AND V.MINISTRY_HIRE_DATE IS NOT NULL)
OR ( V.MINISTRY_HIRE_DATE IS NULL
AND D.MINISTRY_HIRE_DATE IS NOT NULL))
OR ( D.LOCATION_ID <> V.LOCATION_ID
OR ( D.LOCATION_ID IS NULL
AND V.LOCATION_ID IS NOT NULL)
OR ( V.LOCATION_ID IS NULL
AND D.LOCATION_ID IS NOT NULL))
OR ( D.JOB_ORG_NAME <> V.JOB_ORG_NAME
OR ( D.JOB_ORG_NAME IS NULL
AND V.JOB_ORG_NAME IS NOT NULL)
OR ( V.JOB_ORG_NAME IS NULL
AND D.JOB_ORG_NAME IS NOT NULL))
OR ( D.JOB_ORG_ID <> V.JOB_ORG_ID
OR ( D.JOB_ORG_ID IS NULL
AND V.JOB_ORG_ID IS NOT NULL)
OR ( V.JOB_ORG_ID IS NULL
AND D.JOB_ORG_ID IS NOT NULL))
OR ( D.JOB_NO <> V.JOB_NO
OR (D.JOB_NO IS NULL AND V.JOB_NO IS NOT NULL)
OR (V.JOB_NO IS NULL AND D.JOB_NO IS NOT NULL))
OR ( D.JOB_NAME <> V.JOB_NAME
OR ( D.JOB_NAME IS NULL
AND V.JOB_NAME IS NOT NULL)
OR ( V.JOB_NAME IS NULL
AND D.JOB_NAME IS NOT NULL))
OR ( D.JOB_CLASS_CODE <> V.JOB_CLASS_CODE
OR ( D.JOB_CLASS_CODE IS NULL
AND V.JOB_CLASS_CODE IS NOT NULL)
OR ( V.JOB_CLASS_CODE IS NULL
AND D.JOB_CLASS_CODE IS NOT NULL))
OR ( D.ISACTIVE <> V.ISACTIVE
OR ( D.ISACTIVE IS NULL
AND V.ISACTIVE IS NOT NULL)
OR ( V.ISACTIVE IS NULL
AND D.ISACTIVE IS NOT NULL))
OR ( D.GOV_HIRE_DATE <> V.GOV_HIRE_DATE
OR ( D.GOV_HIRE_DATE IS NULL
AND V.GOV_HIRE_DATE IS NOT NULL)
OR ( V.GOV_HIRE_DATE IS NULL
AND D.GOV_HIRE_DATE IS NOT NULL))
OR ( D.FIRST_GRADE_DT <> V.FIRST_GRADE_DT
OR ( D.FIRST_GRADE_DT IS NULL
AND V.FIRST_GRADE_DT IS NOT NULL)
OR ( V.FIRST_GRADE_DT IS NULL
AND D.FIRST_GRADE_DT IS NOT NULL))
OR ( D.EMP_STATUS_CODE <> V.EMP_STATUS_CODE
OR ( D.EMP_STATUS_CODE IS NULL
AND V.EMP_STATUS_CODE IS NOT NULL)
OR ( V.EMP_STATUS_CODE IS NULL
AND D.EMP_STATUS_CODE IS NOT NULL))
OR ( D.EMPLOYMENT_TYPE_ID <>
V.EMPLOYMENT_TYPE_ID
OR ( D.EMPLOYMENT_TYPE_ID IS NULL
AND V.EMPLOYMENT_TYPE_ID IS NOT NULL)
OR ( V.EMPLOYMENT_TYPE_ID IS NULL
AND D.EMPLOYMENT_TYPE_ID IS NOT NULL))
OR ( D.EMPLOYEE_NUMBER <> V.EMPLOYEE_NUMBER
OR ( D.EMPLOYEE_NUMBER IS NULL
AND V.EMPLOYEE_NUMBER IS NOT NULL)
OR ( V.EMPLOYEE_NUMBER IS NULL
AND D.EMPLOYEE_NUMBER IS NOT NULL))
OR ( D.EMPLOYEE_GRAND_NAME_AR <>
V.EMPLOYEE_GRAND_NAME_AR
OR ( D.EMPLOYEE_GRAND_NAME_AR IS NULL
AND V.EMPLOYEE_GRAND_NAME_AR IS NOT NULL)
OR ( V.EMPLOYEE_GRAND_NAME_AR IS NULL
AND D.EMPLOYEE_GRAND_NAME_AR IS NOT NULL))
OR ( D.EMPLOYEE_FIRST_NAME_AR <>
V.EMPLOYEE_FIRST_NAME_AR
OR ( D.EMPLOYEE_FIRST_NAME_AR IS NULL
AND V.EMPLOYEE_FIRST_NAME_AR IS NOT NULL)
OR ( V.EMPLOYEE_FIRST_NAME_AR IS NULL
AND D.EMPLOYEE_FIRST_NAME_AR IS NOT NULL))
OR ( D.EMPLOYEE_FATHER_NAME_AR <>
V.EMPLOYEE_FATHER_NAME_AR
OR ( D.EMPLOYEE_FATHER_NAME_AR IS NULL
AND V.EMPLOYEE_FATHER_NAME_AR IS NOT NULL)
OR ( V.EMPLOYEE_FATHER_NAME_AR IS NULL
AND D.EMPLOYEE_FATHER_NAME_AR IS NOT NULL))
OR ( D.EMPLOYEE_FAMILY_NAME_AR <>
V.EMPLOYEE_FAMILY_NAME_AR
OR ( D.EMPLOYEE_FAMILY_NAME_AR IS NULL
AND V.EMPLOYEE_FAMILY_NAME_AR IS NOT NULL)
OR ( V.EMPLOYEE_FAMILY_NAME_AR IS NULL
AND D.EMPLOYEE_FAMILY_NAME_AR IS NOT NULL))
OR ( D.EMPLOYEE_GRAND_NAME_EN <>
V.EMPLOYEE_GRAND_NAME_EN
OR ( D.EMPLOYEE_GRAND_NAME_EN IS NULL
AND V.EMPLOYEE_GRAND_NAME_EN IS NOT NULL)
OR ( V.EMPLOYEE_GRAND_NAME_EN IS NULL
AND D.EMPLOYEE_GRAND_NAME_EN IS NOT NULL))
OR ( D.EMPLOYEE_FIRST_NAME_EN <>
V.EMPLOYEE_FIRST_NAME_EN
OR ( D.EMPLOYEE_FIRST_NAME_EN IS NULL
AND V.EMPLOYEE_FIRST_NAME_EN IS NOT NULL)
OR ( V.EMPLOYEE_FIRST_NAME_EN IS NULL
AND D.EMPLOYEE_FIRST_NAME_EN IS NOT NULL))
OR ( D.EMPLOYEE_FATHER_NAME_EN <>
V.EMPLOYEE_FATHER_NAME_EN
OR ( D.EMPLOYEE_FATHER_NAME_EN IS NULL
AND V.EMPLOYEE_FATHER_NAME_EN IS NOT NULL)
OR ( V.EMPLOYEE_FATHER_NAME_EN IS NULL
AND D.EMPLOYEE_FATHER_NAME_EN IS NOT NULL))
OR ( D.EMPLOYEE_FAMILY_NAME_EN <>
V.EMPLOYEE_FAMILY_NAME_EN
OR ( D.EMPLOYEE_FAMILY_NAME_EN IS NULL
AND V.EMPLOYEE_FAMILY_NAME_EN IS NOT NULL)
OR ( V.EMPLOYEE_FAMILY_NAME_EN IS NULL
AND D.EMPLOYEE_FAMILY_NAME_EN IS NOT NULL))
OR ( D.EMAIL <> V.EMAIL
OR (D.EMAIL IS NULL AND V.EMAIL IS NOT NULL)
OR (V.EMAIL IS NULL AND D.EMAIL IS NOT NULL))
OR ( D.BLOOD_TYPE <> V.BLOOD_TYPE
OR ( D.BLOOD_TYPE IS NULL
AND V.BLOOD_TYPE IS NOT NULL)
OR ( V.BLOOD_TYPE IS NULL
AND D.BLOOD_TYPE IS NOT NULL))
OR ( D.BIRTH_DATE <> V.BIRTH_DATE
OR ( D.BIRTH_DATE IS NULL
AND V.BIRTH_DATE IS NOT NULL)
OR ( V.BIRTH_DATE IS NULL
AND D.BIRTH_DATE IS NOT NULL))
OR ( D.BASIC_SALARY <> V.BASIC_SALARY
OR ( D.BASIC_SALARY IS NULL
AND V.BASIC_SALARY IS NOT NULL)
OR ( V.BASIC_SALARY IS NULL
AND D.BASIC_SALARY IS NOT NULL))
OR ( D.ACTUAL_ORG_NAME <> V.ACTUAL_ORG_NAME
OR ( D.ACTUAL_ORG_NAME IS NULL
AND V.ACTUAL_ORG_NAME IS NOT NULL)
OR ( V.ACTUAL_ORG_NAME IS NULL
AND D.ACTUAL_ORG_NAME IS NOT NULL))
OR ( D.ACTUAL_ORG_ID <> V.ACTUAL_ORG_ID
OR ( D.ACTUAL_ORG_ID IS NULL
AND V.ACTUAL_ORG_ID IS NOT NULL)
OR ( V.ACTUAL_ORG_ID IS NULL
AND D.ACTUAL_ORG_ID IS NOT NULL))
OR ( D.ACTUAL_JOB_CODE <> V.ACTUAL_JOB_CODE
OR ( D.ACTUAL_JOB_CODE IS NULL
AND V.ACTUAL_JOB_CODE IS NOT NULL)
OR ( V.ACTUAL_JOB_CODE IS NULL
AND D.ACTUAL_JOB_CODE IS NOT NULL))
OR ( D.TRANSACTION_CODE <> V.TRANSACTION_CODE
OR ( D.TRANSACTION_CODE IS NULL
AND V.TRANSACTION_CODE IS NOT NULL)
OR ( V.TRANSACTION_CODE IS NULL
AND D.TRANSACTION_CODE IS NOT NULL)))
COMMIT;
END;
CURSOR MAIN_DATA
IS
SELECT P_HR_ELTEZAM_EMP_INFO.EMPLOYEE_NUMBER,
P_HR_ELTEZAM_EMP_INFO.NATIONAL_NO,
P_HR_ELTEZAM_EMP_INFO.EMPLOYEE_FIRST_NAME_AR,
P_HR_ELTEZAM_EMP_INFO.EMPLOYEE_FATHER_NAME_AR,
P_HR_ELTEZAM_EMP_INFO.EMPLOYEE_GRAND_NAME_AR,
P_HR_ELTEZAM_EMP_INFO.EMPLOYEE_FAMILY_NAME_AR,
P_HR_ELTEZAM_EMP_INFO.EMPLOYEE_FIRST_NAME_EN,
P_HR_ELTEZAM_EMP_INFO.EMPLOYEE_FATHER_NAME_EN,
P_HR_ELTEZAM_EMP_INFO.EMPLOYEE_GRAND_NAME_EN,
P_HR_ELTEZAM_EMP_INFO.EMPLOYEE_FAMILY_NAME_EN,
/*TO_CHAR (P_HR_ELTEZAM_EMP_INFO.BIRTH_DATE,
'DD-MM-RRRR',
'NLS_CALENDAR=''Arabic Hijrah''')*/
P_HR_ELTEZAM_EMP_INFO.BIRTH_DATE BIRTH_DATE,
P_HR_ELTEZAM_EMP_INFO.SEX,
P_HR_ELTEZAM_EMP_INFO.NATIONALITY_ID,
P_HR_ELTEZAM_EMP_INFO.RELIGION,
P_HR_ELTEZAM_EMP_INFO.BLOOD_TYPE,
P_HR_ELTEZAM_EMP_INFO.EMAIL,
P_HR_ELTEZAM_EMP_INFO.EMP_STATUS_CODE,
P_HR_ELTEZAM_EMP_INFO.JOB_NO,
NVL (P_HR_ELTEZAM_EMP_INFO.JOB_CLASS_CODE, '99999')
JOB_CLASS_CODE,
NVL (P_HR_ELTEZAM_EMP_INFO.JOB_NAME, '000000000') JOB_NAME,
SUBSTR (P_HR_ELTEZAM_EMP_INFO.EMPLOYMENT_TYPE_ID, 1, 7)
EMPLOYMENT_TYPE_ID,
P_HR_ELTEZAM_EMP_INFO.RANK_ID,
P_HR_ELTEZAM_EMP_INFO.STEP_ID,
/*TO_CHAR (P_HR_ELTEZAM_EMP_INFO.STEP_DATE,
'DD-MM-RRRR',
'NLS_CALENDAR=''Arabic Hijrah''')*/
P_HR_ELTEZAM_EMP_INFO.STEP_DATE STEP_DATE,
/*TO_CHAR (P_HR_ELTEZAM_EMP_INFO.FIRST_GRADE_DT,
'DD-MM-RRRR',
'NLS_CALENDAR=''Arabic Hijrah''')*/
P_HR_ELTEZAM_EMP_INFO.FIRST_GRADE_DT FIRST_GRADE_DT,
P_HR_ELTEZAM_EMP_INFO.JOB_ORG_ID,
P_HR_ELTEZAM_EMP_INFO.JOB_ORG_NAME,
NVL (P_HR_ELTEZAM_EMP_INFO.BASIC_SALARY, 0) BASIC_SALARY,
P_HR_ELTEZAM_EMP_INFO.ACTUAL_ORG_ID,
P_HR_ELTEZAM_EMP_INFO.ACTUAL_ORG_NAME,
REPLACE (
REPLACE (P_HR_ELTEZAM_EMP_INFO.NEXT_PROM_DATE, '//', NULL),
'/',
'-')
NEXT_PROM_DATE,
/*TO_CHAR (P_HR_ELTEZAM_EMP_INFO.GOV_HIRE_DATE,
'DD-MM-RRRR',
'NLS_CALENDAR=''Arabic Hijrah''')*/
P_HR_ELTEZAM_EMP_INFO.GOV_HIRE_DATE GOV_HIRE_DATE,
P_HR_ELTEZAM_EMP_INFO.LOCATION_ID, --- location code
/*TO_CHAR (P_HR_ELTEZAM_EMP_INFO.MINISTRY_HIRE_DATE,
'DD-MM-RRRR',
'NLS_CALENDAR=''Arabic Hijrah''')*/
P_HR_ELTEZAM_EMP_INFO.MINISTRY_HIRE_DATE MINISTRY_HIRE_DATE,
TRUNC (P_HR_ELTEZAM_EMP_INFO.REMAINING_ANNUAL_BALANCE)
REMAINING_ANNUAL_BALANCE,
TRUNC (P_HR_ELTEZAM_EMP_INFO.REMAINING_BUS_BALANCE)
REMAINING_BUS_BALANCE,
P_HR_ELTEZAM_EMP_INFO.TRANSACTION_CODE,
DECODE (P_HR_ELTEZAM_EMP_INFO.ISACTIVE, 1, 'No', 'Yes')
ISACTIVE,
P_HR_ELTEZAM_EMP_INFO.TERMINATION_REASON_CODE,
/*TO_CHAR (P_HR_ELTEZAM_EMP_INFO.TERMINATION_DATE,
'DD-MM-RRRR',
'NLS_CALENDAR=''Arabic Hijrah''')*/
SUBSTR (P_HR_ELTEZAM_EMP_INFO.TERMINATION_DATE, 1, 8)
TERMINATION_DATE,
/*TO_CHAR (P_HR_ELTEZAM_EMP_INFO.SYS_DATE,
'DD-MM-RRRR',
'NLS_CALENDAR=''Arabic Hijrah''')*/
P_HR_ELTEZAM_EMP_INFO.SYS_DATE SYS_DATE,
P_HR_ELTEZAM_EMP_INFO.SDTE
FROM XXX_HR_ELTEZAM_EMP_INFO_V P_HR_ELTEZAM_EMP_INFO
WHERE 1 = 1
AND RECORD_STATUS IN ('Updated', 'Added')
AND (PERSON_ID = P_PERSON_ID OR P_PERSON_ID IS NULL);
BEGIN
COLLECT_WS_INFO ('ELTEZAM_EMPLOYEE_INFO');
T_URL := G_DOMAIN_NAME || G_SERVICE_NAME;
COMMIT;
END;
L_ERROR_TEXT := NULL;
IF L_HR_ELTEZAM_EMPINFO_TB.STEP_DATE IS NULL
THEN
L_ERROR_TEXT := 'Step Date is Missing';
END IF;
IF L_HR_ELTEZAM_EMPINFO_TB.FIRST_GRADE_DT IS NULL
THEN
L_ERROR_TEXT := 'First Grade Date is Missing';
END IF;
IF L_HR_ELTEZAM_EMPINFO_TB.EMPLOYMENT_TYPE_ID IS NULL
THEN
L_ERROR_TEXT := 'Employment Type is Missing';
END IF;
IF L_HR_ELTEZAM_EMPINFO_TB.JOB_CLASS_CODE IS NULL
THEN
L_ERROR_TEXT := 'Job Class Code is Missing';
END IF;
IF L_HR_ELTEZAM_EMPINFO_TB.JOB_NO IS NULL
THEN
L_ERROR_TEXT := 'Job Number is Missing';
END IF;
IF L_HR_ELTEZAM_EMPINFO_TB.LOCATION_ID IS NULL
THEN
L_ERROR_TEXT := 'Location is Missing';
END IF;
IF L_HR_ELTEZAM_EMPINFO_TB.TRANSACTION_CODE IS NULL
THEN
L_ERROR_TEXT := 'Transaction Code is Missing';
END IF;
IF L_HR_ELTEZAM_EMPINFO_TB.EMP_STATUS_CODE IS NULL
THEN
L_ERROR_TEXT := 'Employee Status Code is Missing';
END IF;
L_MAIN_DATA_VALIDATION := -1;
ELSE
L_MAIN_DATA_VALIDATION := 1;
END IF;
IF L_MAIN_DATA_VALIDATION = 1
THEN
IF L_HR_ELTEZAM_EMPINFO_TB.TERMINATION_REASON_CODE IS NOT NULL
THEN
L_TERMINATION_TEXT :=
'<ver:TerminationInfo>
<ver:TerminationReasonCode>'
|| L_HR_ELTEZAM_EMPINFO_TB.TERMINATION_REASON_CODE
|| '</ver:TerminationReasonCode>
<ver:TerminationDate>'
|| L_HR_ELTEZAM_EMPINFO_TB.TERMINATION_DATE
|| '</ver:TerminationDate></ver:TerminationInfo>';
ELSE
L_TERMINATION_TEXT := NULL;
END IF;
IF L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_FIRST_NAME_EN IS NULL
OR L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_FATHER_NAME_EN IS NULL
OR L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_GRAND_NAME_EN IS NULL
OR L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_FAMILY_NAME_EN IS NULL
THEN
L_ENG_NAME := NULL;
ELSIF L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_FIRST_NAME_EN
IS NOT NULL
AND L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_FATHER_NAME_EN
IS NOT NULL
AND L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_GRAND_NAME_EN
IS NOT NULL
AND L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_FAMILY_NAME_EN
IS NOT NULL
THEN
L_ENG_NAME :=
'<ver:PersonNameEn>'
|| '<ver:FirstName>'
|| L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_FIRST_NAME_EN
|| '</ver:FirstName>
<ver:SecondName>'
|| L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_FATHER_NAME_EN
|| '</ver:SecondName>
<ver:ThirdName>'
|| L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_GRAND_NAME_EN
|| '</ver:ThirdName>
<ver:LastName>'
|| L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_FAMILY_NAME_EN
|| '</ver:LastName>
</ver:PersonNameEn>';
END IF;
IF ( L_HR_ELTEZAM_EMPINFO_TB.EMAIL IS NULL
OR L_HR_ELTEZAM_EMPINFO_TB.EMAIL NOT LIKE '@')
THEN
L_EMAIL_TEXT := NULL;
ELSE
L_EMAIL_TEXT :=
'<ver:EmailAddress>'
|| L_HR_ELTEZAM_EMPINFO_TB.EMAIL
|| '</ver:EmailAddress>';
END IF;
SOAP_REQUEST :=
'<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tem="http://tempuri.org/"
xmlns:ver="http://yefi.gov.sa/MCS/EltezamDataSchema/xml/schemas/version1.0"
xmlns:ver1="http://yefi.gov.sa/PersonProfileCommonTypes/xml/schemas/version2.0">
<soapenv:Header/>
<soapenv:Body>
<tem:SubmitEmployeeInfo>
<tem:employeeInfo>
<EmployeeInfo>
<ver:EmployeeID>'
|| L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_NUMBER
|| '</ver:EmployeeID>
<ver:PersonalInfo>
<ver:PersonIdentifier>
<ver1:IqamaNumber>'
|| L_HR_ELTEZAM_EMPINFO_TB.NATIONAL_NO
|| '</ver1:IqamaNumber>
<ver1:NationalID>'
|| L_HR_ELTEZAM_EMPINFO_TB.NATIONAL_NO
|| '</ver1:NationalID>
</ver:PersonIdentifier>
<ver:PersonNameAr>
<ver:FirstName>'
|| L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_FIRST_NAME_AR
|| '</ver:FirstName>
<ver:SecondName>'
|| L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_FATHER_NAME_AR
|| '</ver:SecondName>
<ver:ThirdName>'
|| L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_GRAND_NAME_AR
|| '</ver:ThirdName>
<ver:LastName>'
|| L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_FAMILY_NAME_AR
|| '</ver:LastName>
</ver:PersonNameAr>
'
|| L_ENG_NAME
|| '
<ver:BirthDate>'
|| L_HR_ELTEZAM_EMPINFO_TB.BIRTH_DATE
|| '</ver:BirthDate>
<ver:Gender>'
|| L_HR_ELTEZAM_EMPINFO_TB.SEX
|| '</ver:Gender>
<ver:NationalityCode>'
|| L_HR_ELTEZAM_EMPINFO_TB.NATIONALITY_ID
|| '</ver:NationalityCode>
<ver:Religion>'
|| L_HR_ELTEZAM_EMPINFO_TB.RELIGION
|| '</ver:Religion>
<!--<ver:BloodType>?</ver:BloodType>
-->'
|| L_EMAIL_TEXT
|| '
<ver:MaritalStatus>Single</ver:MaritalStatus>
<ver:Healthstatus>Healthy</ver:Healthstatus>
</ver:PersonalInfo>
<!--Optional:-->
<ver:EmployeeStatusCode>'
|| L_HR_ELTEZAM_EMPINFO_TB.EMP_STATUS_CODE
|| '</ver:EmployeeStatusCode>
<ver:JobInfo>
<ver:JobNumber>'
|| L_HR_ELTEZAM_EMPINFO_TB.JOB_NO
|| '</ver:JobNumber>
<ver:JobClassCode>'
|| L_HR_ELTEZAM_EMPINFO_TB.JOB_CLASS_CODE
|| '</ver:JobClassCode>
<!--Optional:-->
<ver:JobNameCode>'
|| L_HR_ELTEZAM_EMPINFO_TB.JOB_NAME
|| '</ver:JobNameCode>
<!--Optional:-->
<ver:EmploymentTypeCode>'
|| L_HR_ELTEZAM_EMPINFO_TB.EMPLOYMENT_TYPE_ID
|| '</ver:EmploymentTypeCode>
<!--Optional:-->
<ver:RankCode>'
|| L_HR_ELTEZAM_EMPINFO_TB.RANK_ID
|| '</ver:RankCode>
<ver:StepID>'
|| L_HR_ELTEZAM_EMPINFO_TB.STEP_ID
|| '</ver:StepID>
<!--Optional:-->
<ver:StepDate>'
|| L_HR_ELTEZAM_EMPINFO_TB.STEP_DATE
|| '</ver:StepDate>
<!--Optional:-->
<ver:FirstGradeDate>'
|| L_HR_ELTEZAM_EMPINFO_TB.FIRST_GRADE_DT
|| '</ver:FirstGradeDate>
<!--Optional:-->
<ver:ActualJobNameCode>'
|| L_HR_ELTEZAM_EMPINFO_TB.JOB_NAME
|| '</ver:ActualJobNameCode>
<!--Optional:-->
<ver:JobOrganizationID>'
|| L_HR_ELTEZAM_EMPINFO_TB.JOB_ORG_ID
|| '</ver:JobOrganizationID>
<!--Optional:-->
<ver:JobOrganizationName>'
|| L_HR_ELTEZAM_EMPINFO_TB.JOB_ORG_NAME
|| '</ver:JobOrganizationName>
<ver:BasicSalary>'
|| L_HR_ELTEZAM_EMPINFO_TB.BASIC_SALARY
|| '</ver:BasicSalary>
</ver:JobInfo>
<!--Optional:-->
<ver:ActualOrganizationID>'
|| L_HR_ELTEZAM_EMPINFO_TB.ACTUAL_ORG_ID
|| '</ver:ActualOrganizationID>
<!--Optional:-->
<ver:ActualOrganizationName>'
|| L_HR_ELTEZAM_EMPINFO_TB.ACTUAL_ORG_NAME
|| '</ver:ActualOrganizationName>'
|| L_PROMOTION_DATE
|| '
<ver:GovernmentHireDate>'
|| L_HR_ELTEZAM_EMPINFO_TB.GOV_HIRE_DATE
|| '</ver:GovernmentHireDate>
<!--Optional:-->
<ver:LocationCode>'
|| L_HR_ELTEZAM_EMPINFO_TB.LOCATION_ID
|| '</ver:LocationCode>
<!--Optional:-->
<ver:MinistryHireDate>'
|| L_HR_ELTEZAM_EMPINFO_TB.MINISTRY_HIRE_DATE
|| '</ver:MinistryHireDate>
<ver:RemainingAnnualBalance>'
|| L_HR_ELTEZAM_EMPINFO_TB.REMAINING_ANNUAL_BALANCE
|| '</ver:RemainingAnnualBalance>
<ver:RemainingBusinessBalance>'
|| L_HR_ELTEZAM_EMPINFO_TB.REMAINING_BUS_BALANCE
|| '</ver:RemainingBusinessBalance>
<ver:TransactionCode>'
|| L_HR_ELTEZAM_EMPINFO_TB.TRANSACTION_CODE
|| '</ver:TransactionCode>
<ver:IsActive>'
|| L_HR_ELTEZAM_EMPINFO_TB.ISACTIVE
|| '</ver:IsActive>'
|| L_TERMINATION_TEXT
|| '
</EmployeeInfo>
<!--Optional:-->
<LastUpdateDate>'
|| L_HR_ELTEZAM_EMPINFO_TB.SYS_DATE
|| '</LastUpdateDate>
</tem:employeeInfo>
</tem:SubmitEmployeeInfo>
</soapenv:Body>
</soapenv:Envelope>';
L_DEST_OFFSET := 1;
L_SRC_OFFSET := 1;
L_LANG_CONTEXT := 0;
L_WARNING := NULL;
UTL_HTTP.SET_TRANSFER_TIMEOUT (60);
----- Wallet Information -------
V_REQ_CONTEXT :=
UTL_HTTP.CREATE_REQUEST_CONTEXT (
WALLET_PATH => G_WALLET_PATH,
WALLET_PASSWORD => G_WALLET_PASSWORD);
DBMS_OUTPUT.put_line ('WALLET_PATH ' || G_WALLET_PATH);
-- to handel arabic content
DBMS_LOB.CREATETEMPORARY (L_BLOB, FALSE, DBMS_LOB.CALL);
DBMS_LOB.CONVERTTOBLOB (
DEST_LOB => L_BLOB,
SRC_CLOB => soap_request,
AMOUNT => DBMS_LOB.LOBMAXSIZE,
DEST_OFFSET => L_DEST_OFFSET,
SRC_OFFSET => L_SRC_OFFSET,
BLOB_CSID => NLS_CHARSET_ID ('AL32UTF8'), --AR8ISO8859P6
AL32UTF8 AL16UTF16
LANG_CONTEXT => L_LANG_CONTEXT,
WARNING => L_WARNING);
HTTP_REQ :=
UTL_HTTP.BEGIN_REQUEST (URL => T_URL,
REQUEST_CONTEXT => V_REQ_CONTEXT,
METHOD => 'POST',
HTTP_VERSION => 'HTTP/1.1');
UTL_HTTP.SET_HEADER (http_req,
'Content-Length',
DBMS_LOB.GETLENGTH (L_BLOB));
UTL_HTTP.set_header (
http_req,
'SOAPAction',
'"http://tempuri.org/IEltezamDataService/SubmitEmployeeInfo"');
--- CHANGE
BEGIN
WHILE l_offset < V_CHECK_LENGTH
LOOP
DBMS_LOB.READ (L_BLOB,
l_amount,
l_offset,
l_buffer2);
UTL_HTTP.WRITE_RAW (HTTP_REQ, l_buffer2);
l_offset := l_offset + l_amount;
END LOOP;
END;
DBMS_LOB.CLOSE (L_BLOB);
ELSE
DBMS_OUTPUT.PUT_LINE ('ELSE LENGTH');
UTL_HTTP.WRITE_TEXT (R => HTTP_REQ, DATA => SOAP_REQUEST);
END IF;
BEGIN
LOOP
UTL_HTTP.READ_TEXT (HTTP_RESP, L_BUFFER);
DBMS_LOB.WRITEAPPEND (X_CLOB,
LENGTH (L_BUFFER),
L_BUFFER);
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
IF SQLCODE <> -29266
THEN
RAISE;
END IF;
END;
DBMS_OUTPUT.PUT_LINE (
'Response Status: '
|| HTTP_RESP.STATUS_CODE
|| ' '
|| HTTP_RESP.REASON_PHRASE);
IF (HTTP_RESP.STATUS_CODE = 200)
THEN
BEGIN
SELECT REQUESTNUMBER
INTO L_REQUEST_NUMBER
FROM (SELECT XMLTYPE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
(X_CLOB),
'http://schemas.xmlsoap.org/soap/envelope/',
''),
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"',
''),
'xmlns:xsd="http://www.w3.org/2001/XMLSchema"',
''),
'xmlns="http://tempuri.org/"',
''),
'xmlns="http://yefi.gov.sa/MCS/EltezamDataSchema/xml/schemas/version1.0"',
''),
'xmlns=""',
''),
's:',
''),
'xmlns=""',
''))
XMLT
FROM DUAL) XX,
XMLTABLE (
'Envelope/Body
/SubmitEmployeeInfoResponse/SubmitEmployeeInfoResult/submitEmployeeInfoResponseDeta
ilObject'
PASSING XX.XMLT
COLUMNS REQUESTNUMBER VARCHAR2 (400)
PATH
'RequestNumber');
INSERT
INTO XXCUSTOM.XXX_HR_ELTEZAM_STATUS_TB (WS_NAME,
SUBMITION_DATE,
SOURCEAGENCY,
RESPONSE_BODY,
REQUEST_BODY,
REQUESTNO,
RAISEDBY,
ERRORTYPE,
ERRORTEXT,
ERRORCODE,
EMPLOYEE_NO)
VALUES ('EMP_INFO_WS',
SYSDATE,
NULL,
X_CLOB,
SOAP_REQUEST,
L_REQUEST_NUMBER,
NULL,
NULL,
NULL,
HTTP_RESP.STATUS_CODE,
L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_NUMBER);
UPDATE XXX_HR_INT_EMPLOYEE_TB
SET RECORD_STATUS = 'Transferred'
WHERE 1 = 1
AND EMPLOYEE_NUMBER =
L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_NUMBER;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
BEGIN
L_REQUEST_NUMBER := NULL;
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
(X_CLOB),
'http://schemas.xmlsoap.org/soap/envelope/',
''),
'xmlns="http://tempuri.org/"',
''),
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"',
''),
'xmlns:xsd="http://www.w3.org/2001/XMLSchema"',
''),
'
xmlns="http://yefi.gov.sa/YEFIErrorStructure/xml/schemas/version2.3"',
''),
'xmlns=""',
''),
's:',
''),
'xmlns=""',
''),
'xmlns="http://yefi.gov.sa/YEFIErrorStructure/xml/schemas/version2.3"',
''))
XMLT
FROM DUAL) XX,
XMLTABLE (
'Envelope/Body
/SubmitEmployeeInfoResponse/SubmitEmployeeInfoResult/ServiceError'
PASSING XX.XMLT
COLUMNS FAULTSTRING VARCHAR2 (4000)
PATH
'ErrorText',
Code VARCHAR2 (4000)
PATH 'Code');
EXCEPTION
WHEN OTHERS
THEN
NULL;
END;
L_ERROR := SQLERRM;
BEGIN
INSERT
INTO XXCUSTOM.XXX_HR_ELTEZAM_STATUS_TB (
WS_NAME,
SUBMITION_DATE,
SOURCEAGENCY,
RESPONSE_BODY,
REQUEST_BODY,
REQUESTNO,
RAISEDBY,
ERRORTYPE,
ERRORTEXT,
ERRORCODE,
EMPLOYEE_NO)
VALUES ('EMP_INFO_WS',
SYSDATE,
NULL,
X_CLOB,
SOAP_REQUEST,
L_REQUEST_NUMBER,
NULL,
L_FAULTSTRING, --ERRORTYPE
L_FAULTSTRING, --ERRORTEXT
HTTP_RESP.STATUS_CODE,
L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_NUMBER);
EXCEPTION
WHEN OTHERS
THEN
NULL;
END;
END;
ELSE ----- In case of failure
BEGIN
L_REQUEST_NUMBER := NULL;
BEGIN
SELECT FAULTSTRING
INTO L_FAULTSTRING
FROM (SELECT XMLTYPE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE
(
REGEXP_REPLACE (
(X_CLOB),
'http://schemas.xmlsoap.org/soap/envelope/',
''),
'xmlns="http://tempuri.org/"',
''),
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"',
''),
'xmlns:xsd="http://www.w3.org/2001/XMLSchema"',
''),
'
xmlns="http://yefi.gov.sa/YEFIErrorStructure/xml/schemas/version2.3"',
''),
'xmlns=""',
''),
's:',
''),
'xmlns=""',
''))
XMLT
FROM DUAL) XX,
XMLTABLE (
'Envelope/Body /Fault'
PASSING XX.XMLT
COLUMNS FAULTSTRING VARCHAR2 (1000)
PATH
'faultstring');
EXCEPTION
WHEN OTHERS
THEN
NULL;
END;
INSERT
INTO XXCUSTOM.XXX_HR_ELTEZAM_STATUS_TB (WS_NAME,
SUBMITION_DATE,
SOURCEAGENCY,
RESPONSE_BODY,
REQUEST_BODY,
REQUESTNO,
RAISEDBY,
ERRORTYPE,
ERRORTEXT,
ERRORCODE,
EMPLOYEE_NO)
VALUES ('EMP_INFO_WS',
SYSDATE,
NULL,
X_CLOB,
SOAP_REQUEST,
L_REQUEST_NUMBER,
NULL,
L_FAULTSTRING, --ERRORTYPE
L_FAULTSTRING, --ERRORTEXT
HTTP_RESP.STATUS_CODE,
L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_NUMBER);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
L_ERROR := SQLERRM;
BEGIN
INSERT
INTO XXX_HR_ELTEZAM_STATUS_TB (WS_NAME,
SUBMITION_DATE,
SOURCEAGENCY,
RESPONSE_BODY,
REQUEST_BODY,
REQUESTNO,
RAISEDBY,
ERRORTYPE,
ERRORTEXT,
ERRORCODE,
EMPLOYEE_NO)
VALUES (
'EMP_INFO_WS',
SYSDATE,
NULL,
X_CLOB,
SOAP_REQUEST,
L_REQUEST_NUMBER,
NULL,
'Internal Error in Failure Response Query
XML', --ERRORTYPE
L_ERROR, --ERRORTEXT
HTTP_RESP.STATUS_CODE,
L_HR_ELTEZAM_EMPINFO_TB.EMPLOYEE_NUMBER);
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
NULL;
END;
END;
END IF;
UTL_HTTP.END_RESPONSE (HTTP_RESP);
UTL_HTTP.DESTROY_REQUEST_CONTEXT (V_REQ_CONTEXT);
END IF;
COMMIT;
EXCEPTION
WHEN UTL_HTTP.END_OF_BODY
THEN
UTL_HTTP.END_RESPONSE (HTTP_RESP);
UTL_HTTP.DESTROY_REQUEST_CONTEXT (V_REQ_CONTEXT);
WHEN UTL_HTTP.TOO_MANY_REQUESTS
THEN
RAISE_APPLICATION_ERROR (
-20001,
'Request failed exception:'
|| UTL_HTTP.GET_DETAILED_SQLERRM);
WHEN OTHERS
THEN
NULL;
RAISE_APPLICATION_ERROR (
-20002,
'Request failed exception:'
|| UTL_HTTP.GET_DETAILED_SQLERRM);
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
NULL;
END XXX_HR_SUBMIT_EMP_INFO_M;
PROCEDURE XXX_HR_PAYSLIP (
ERRBUF OUT NOCOPY VARCHAR2,
RETCODE OUT NOCOPY NUMBER,
P_PERSON_ID XXX_HR_ELTEZAM_PAYSLIP_TB.PERSON_ID%TYPE,
P_RUN_RESULT_ID XXX_HR_ELTEZAM_PAYSLIP_TB.RUN_RESULT_ID
%TYPE,
P_CONNECTION_TYPE VARCHAR2)
IS
V_REQ_CONTEXT UTL_HTTP.REQUEST_CONTEXT_KEY;
SOAP_REQUEST VARCHAR2 (32767);
HTTP_REQ UTL_HTTP.REQ;
HTTP_RESP UTL_HTTP.RESP;
L_BLOB BLOB;
L_DEST_OFFSET NUMBER := 1;
L_SRC_OFFSET NUMBER := 1;
L_LANG_CONTEXT NUMBER := 0;
L_WARNING NUMBER;
T_HTTP_VERSION VARCHAR2 (10) := 'HTTP/1.1';
T_CONTENT_TYPE VARCHAR2 (50) := 'text/xml; charset=utf-8';
T_URL VARCHAR2 (100);
X_CLOB CLOB;
L_BUFFER VARCHAR2 (32767);
HTTP_RESP_REQ_NUMBER VARCHAR2 (400);
HTTP_RESP_RAISEDBY VARCHAR2 (400);
HTTP_RESP_SOURCE VARCHAR2 (400);
HTTP_RESP_CODE VARCHAR2 (400);
HTTP_ERRORTYPE VARCHAR2 (400);
TTP_ERRORTEXT VARCHAR2 (4000);
L_ERROR VARCHAR2 (4000);
L_RUN NUMBER;
V_CHECK_LENGTH NUMBER;
L_OFFSET NUMBER := 1;
L_AMOUNT NUMBER := 2000;
L_BUFFER2 VARCHAR2 (32767);
CURSOR MAIN_DATA
IS
SELECT *
FROM XXX_HR_ELTEZAM_PAYSLIP_TB
WHERE 1 = 1
AND REQUEST_NUMBER IS NULL
AND (PERSON_ID = P_PERSON_ID OR P_PERSON_ID IS NULL)
AND ( RUN_RESULT_ID = P_RUN_RESULT_ID
OR P_RUN_RESULT_ID IS NULL);
BEGIN
COLLECT_WS_INFO ('ELTEZAM_PAYSLIP_INFO');
COMMIT;
IF P_CONNECTION_TYPE = 'WEB_SERVICE'
THEN
FOR I IN MAIN_DATA
LOOP
SOAP_REQUEST :=
'<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tem="http://tempuri.org/"
xmlns:ver="http://yefi.gov.sa/PersonProfileCommonTypes/xml/schemas/version2.0"
xmlns:ver1="http://yefi.gov.sa/MCS/EltezamDataSchema/xml/schemas/version1.0">
<soapenv:Header/>
<soapenv:Body>
<tem:SubmitEmployeePayslipInfo>
<!--Optional:-->
<tem:employeePayslipInfo>
<!--Optional:-->
<EmployeeID>'
|| I.EMPLOYEEID
|| '</EmployeeID>
<!--Optional:-->
<PersonIdentifier>
<!--You have a CHOICE of the next 2 items at this level-->
<!--Optional:-->
<ver:IqamaNumber>'
|| I.PERSONIDENTIFIER
|| '</ver:IqamaNumber>
<!--Optional:-->
<ver:NationalID>'
|| I.PERSONIDENTIFIER
|| '</ver:NationalID>
</PersonIdentifier>
<!--Optional:-->
<EmployeeName>'
|| I.EMPLOYEENAME
|| '</EmployeeName>
<!--Optional:-->
<EmployeeJobInfo>
<!--Optional:-->
<ver1:EmploymentTypeCode>'
|| I.EMPLOYMENTTYPECODE
|| '</ver1:EmploymentTypeCode>
<!--Optional:-->
<ver1:RankCode>'
|| I.RANKCODE
|| '</ver1:RankCode>
<ver1:StepID>'
|| I.StepID
|| '</ver1:StepID>
</EmployeeJobInfo>
<!--Optional:-->
<PayslipList>
<!--Zero or more repetitions:-->
<ver1:Payslip>
<!--Optional:-->
<ver1:ConsolidationSetID>'
|| I.CONSOLIDATIONSETID
|| '</ver1:ConsolidationSetID>
<!--Optional:-->
<ver1:ElementCode>'
|| I.ELEMENTCODE
|| '</ver1:ElementCode>
<ver1:Amount>'
|| I.AMOUNT
|| '</ver1:Amount>
<ver1:ElementClassification>'
|| I.ELEMENTCLASSIFICATION
|| '</ver1:ElementClassification>
</ver1:Payslip>
</PayslipList>
<NetPay>'
|| I.NETPAY
|| '</NetPay>
<!--Optional:-->
<HijriMonth>'
|| I.HIJRIMONTH
|| '</HijriMonth>
<!--Optional:-->
<GregorianMonth>'
|| I.GREGORIANMONTH
|| '</GregorianMonth>
<!--Optional:-->
<HijriYear>'
|| I.HIJRIYEAR
|| '</HijriYear>
<!--Optional:-->
<GregorianYear>'
|| I.GREGORIANYEAR
|| '</GregorianYear>
<!--Optional:-->
<PaidDate>'
|| I.PAIDDATE
|| '</PaidDate>
</tem:employeePayslipInfo>
</tem:SubmitEmployeePayslipInfo>
</soapenv:Body>
</soapenv:Envelope>';
L_DEST_OFFSET := 1;
L_SRC_OFFSET := 1;
L_LANG_CONTEXT := 0;
L_WARNING := NULL;
DBMS_OUTPUT.put_line (TO_CHAR (SYSDATE, 'DD/MM/YYYY HH24:MI:SS'));
DBMS_OUTPUT.put_line (
L_DEST_OFFSET
|| ','
|| L_SRC_OFFSET
|| ','
|| L_LANG_CONTEXT
|| ','
|| L_WARNING);
UTL_HTTP.SET_TRANSFER_TIMEOUT (60);
----- Wallet Information -------
V_REQ_CONTEXT :=
UTL_HTTP.CREATE_REQUEST_CONTEXT (
WALLET_PATH => G_WALLET_PATH,
WALLET_PASSWORD => G_WALLET_PASSWORD);
---------------------- arabic------------------------------
DBMS_LOB.CREATETEMPORARY (L_BLOB, FALSE, DBMS_LOB.CALL);
DBMS_LOB.CONVERTTOBLOB (
DEST_LOB => L_BLOB,
SRC_CLOB => SOAP_REQUEST,
AMOUNT => DBMS_LOB.LOBMAXSIZE,
DEST_OFFSET => L_DEST_OFFSET,
SRC_OFFSET => L_SRC_OFFSET,
BLOB_CSID => NLS_CHARSET_ID ('AL32UTF8'), --AR8ISO8859P6
AL32UTF8 AL16UTF16
LANG_CONTEXT => L_LANG_CONTEXT,
WARNING => L_WARNING);
----------------------end arabic--------------------------
HTTP_REQ :=
UTL_HTTP.BEGIN_REQUEST (URL => T_URL,
REQUEST_CONTEXT => V_REQ_CONTEXT,
METHOD => 'POST',
HTTP_VERSION => 'HTTP/1.1');
UTL_HTTP.SET_HEADER (http_req,
'Content-Length',
DBMS_LOB.GETLENGTH (L_BLOB));
------------------end arabic--------------------------
UTL_HTTP.SET_HEADER (
HTTP_REQ,
'SOAPAction',
'"http://tempuri.org/IEltezamDataService/SubmitEmployeePayslipInfo"');
-------------------- arabic------------------------------
IF V_CHECK_LENGTH > 32767
THEN
UTL_HTTP.SET_TRANSFER_TIMEOUT (999);
UTL_HTTP.SET_HEADER (HTTP_REQ, 'Trasfer-Encoding', 'chunked');
DBMS_LOB.OPEN (L_BLOB, DBMS_LOB.LOB_READWRITE);
BEGIN
WHILE L_OFFSET < V_CHECK_LENGTH
LOOP
DBMS_LOB.READ (L_BLOB,
L_AMOUNT,
L_OFFSET,
L_BUFFER2);
UTL_HTTP.WRITE_RAW (HTTP_REQ, L_BUFFER2);
L_OFFSET := L_OFFSET + L_AMOUNT;
END LOOP;
END;
DBMS_LOB.CLOSE (L_BLOB);
ELSE
UTL_HTTP.WRITE_TEXT (R => HTTP_REQ, DATA => SOAP_REQUEST);
END IF;
------------------end arabic--------------------------
BEGIN
LOOP
UTL_HTTP.READ_TEXT (HTTP_RESP, L_BUFFER);
DBMS_LOB.WRITEAPPEND (X_CLOB, LENGTH (L_BUFFER), L_BUFFER);
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
IF SQLCODE <> -29266
THEN
RAISE;
END IF;
END;
L_RUN := I.RUN_RESULT_ID;
DBMS_OUTPUT.put_line (L_RUN);
IF (HTTP_RESP.STATUS_CODE = 200)
THEN
BEGIN
SELECT REQUESTNUMBER
INTO HTTP_RESP_REQ_NUMBER
FROM (SELECT XMLTYPE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
(X_CLOB),
'http://schemas.xmlsoap.org/soap/envelope/',
''),
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"',
''),
'xmlns:xsd="http://www.w3.org/2001/XMLSchema"',
''),
'xmlns="http://tempuri.org/"',
''),
'xmlns="http://yefi.gov.sa/MCS/EltezamDataSchema/xml/schemas/version1.0"',
''),
'xmlns=""',
''),
's:',
''),
'xmlns=""',
''))
XMLT
FROM DUAL) XX,
XMLTABLE (
'Envelope/Body
/SubmitEmployeePayslipInfoResponse/SubmitEmployeePayslipInfoResult/
submitEmployeePayslipInfoResponseDetailObject'
PASSING XX.XMLT
COLUMNS REQUESTNUMBER VARCHAR2 (400)
PATH
'RequestNumber');
UPDATE XXX_HR_ELTEZAM_PAYSLIP_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE = NULL,
ERRORTEXT = NULL,
ERRORCODE = HTTP_RESP.STATUS_CODE,
REQUEST_NUMBER = HTTP_RESP_REQ_NUMBER,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND RUN_RESULT_ID = I.RUN_RESULT_ID;
EXCEPTION
WHEN OTHERS
THEN
SELECT FAULTSTRING || ' - ' || Code
INTO TTP_ERRORTEXT
FROM (SELECT XMLTYPE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE
(
REGEXP_REPLACE (
(X_CLOB),
'http://schemas.xmlsoap.org/soap/envelope/',
''),
'xmlns="http://tempuri.org/"',
''),
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"',
''),
'xmlns:xsd="http://www.w3.org/2001/XMLSchema"',
''),
'
xmlns="http://yefi.gov.sa/YEFIErrorStructure/xml/schemas/version2.3"',
''),
'xmlns=""',
''),
's:',
''),
'xmlns=""',
''),
'xmlns="http://yefi.gov.sa/YEFIErrorStructure/xml/schemas/version2.3"',
''))
XMLT
FROM DUAL) XX,
XMLTABLE (
'Envelope/Body
/SubmitEmployeePayslipInfoResponse/SubmitEmployeePayslipInfoResult/ServiceError'
PASSING XX.XMLT
COLUMNS FAULTSTRING VARCHAR2 (4000)
PATH 'ErrorText',
Code VARCHAR2 (4000)
PATH 'Code');
L_ERROR := SQLERRM;
UPDATE XXX_HR_ELTEZAM_PAYSLIP_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE = NULL,
ERRORTEXT = TTP_ERRORTEXT,
ERRORCODE = HTTP_RESP.STATUS_CODE,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND RUN_RESULT_ID = I.RUN_RESULT_ID;
END;
ELSE
BEGIN
SELECT FAULTSTRING
INTO TTP_ERRORTEXT
FROM (SELECT XMLTYPE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
(X_CLOB),
'http://schemas.xmlsoap.org/soap/envelope/',
''),
'xmlns="http://tempuri.org/"',
''),
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"',
''),
'xmlns:xsd="http://www.w3.org/2001/XMLSchema"',
''),
'
xmlns="http://yefi.gov.sa/YEFIErrorStructure/xml/schemas/version2.3"',
''),
'xmlns=""',
''),
's:',
''),
'xmlns=""',
''))
XMLT
FROM DUAL) XX,
XMLTABLE (
'Envelope/Body /Fault'
PASSING XX.XMLT
COLUMNS FAULTSTRING VARCHAR2 (1000)
PATH 'faultstring');
UPDATE XXX_HR_ELTEZAM_PAYSLIP_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE = NULL,
ERRORTEXT = TTP_ERRORTEXT,
ERRORCODE = HTTP_RESP.STATUS_CODE,
REQUEST_NUMBER = NULL,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND RUN_RESULT_ID = I.RUN_RESULT_ID;
EXCEPTION
WHEN OTHERS
THEN
L_ERROR := SQLERRM;
UPDATE XXX_HR_ELTEZAM_PAYSLIP_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE =
'Internal Error in Failure Response Query XML',
ERRORTEXT = L_ERROR,
ERRORCODE = HTTP_RESP.STATUS_CODE,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND RUN_RESULT_ID = I.RUN_RESULT_ID;
END;
END IF;
UTL_HTTP.END_RESPONSE (HTTP_RESP);
UTL_HTTP.DESTROY_REQUEST_CONTEXT (V_REQ_CONTEXT);
DBMS_OUTPUT.put_line (TO_CHAR (SYSDATE, 'DD/MM/YYYY HH24:MI:SS'));
COMMIT;
END LOOP;
END IF;
EXCEPTION
WHEN UTL_HTTP.END_OF_BODY
THEN
L_ERROR := SQLERRM;
UPDATE XXX_HR_ELTEZAM_PAYSLIP_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE = HTTP_ERRORTYPE || 'END_OF_BODY',
ERRORTEXT = L_ERROR || ' / ' || TTP_ERRORTEXT,
ERRORCODE = HTTP_RESP.STATUS_CODE,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND RUN_RESULT_ID = L_RUN;
COMMIT;
UTL_HTTP.END_RESPONSE (HTTP_RESP);
UTL_HTTP.DESTROY_REQUEST_CONTEXT (V_REQ_CONTEXT);
WHEN UTL_HTTP.TOO_MANY_REQUESTS
THEN
L_ERROR := SQLERRM;
UPDATE XXX_HR_ELTEZAM_PAYSLIP_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE = HTTP_ERRORTYPE || 'TOO_MANY_REQUESTS',
ERRORTEXT = L_ERROR || ' / ' || TTP_ERRORTEXT,
ERRORCODE = HTTP_RESP.STATUS_CODE,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND RUN_RESULT_ID = L_RUN;
COMMIT;
RAISE_APPLICATION_ERROR (
-20001,
'Request failed exception:' || UTL_HTTP.GET_DETAILED_SQLERRM);
WHEN OTHERS
THEN
L_ERROR := SQLERRM;
DBMS_OUTPUT.put_line ('OTHERS' || L_ERROR);
UPDATE XXX_HR_ELTEZAM_PAYSLIP_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE = HTTP_ERRORTYPE || 'OTHERS',
ERRORTEXT = L_ERROR || ' / ' || TTP_ERRORTEXT,
ERRORCODE = HTTP_RESP.STATUS_CODE,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND RUN_RESULT_ID = L_RUN;
COMMIT;
RAISE_APPLICATION_ERROR (
-20002,
'Request failed exception:' || UTL_HTTP.GET_DETAILED_SQLERRM);
END XXX_HR_PAYSLIP;
PROCEDURE XXX_HR_QUALIFICATION (
ERRBUF OUT NOCOPY VARCHAR2,
RETCODE OUT NOCOPY NUMBER,
P_PERSON_ID NUMBER,
P_QUALIFICATIONID XXX_HR_ELTEZAM_QUALIFIC_TB.QUALIFICATIONID
%TYPE,
P_CONNECTION_TYPE VARCHAR2)
IS
V_REQ_CONTEXT UTL_HTTP.REQUEST_CONTEXT_KEY;
SOAP_REQUEST VARCHAR2 (32767);
HTTP_REQ UTL_HTTP.REQ;
HTTP_RESP UTL_HTTP.RESP;
L_BLOB BLOB;
L_DEST_OFFSET NUMBER := 1;
L_SRC_OFFSET NUMBER := 1;
L_LANG_CONTEXT NUMBER := 0;
L_WARNING NUMBER;
T_HTTP_VERSION VARCHAR2 (10) := 'HTTP/1.1';
T_CONTENT_TYPE VARCHAR2 (50) := 'text/xml; charset=utf-8';
T_URL VARCHAR2 (100);
X_CLOB CLOB;
L_BUFFER VARCHAR2 (32767);
HTTP_RESP_REQ_NUMBER VARCHAR2 (400);
HTTP_RESP_RAISEDBY VARCHAR2 (400);
HTTP_RESP_SOURCE VARCHAR2 (400);
HTTP_RESP_CODE VARCHAR2 (400);
HTTP_ERRORTYPE VARCHAR2 (400);
TTP_ERRORTEXT VARCHAR2 (4000);
L_ERROR VARCHAR2 (4000);
L_RUN NUMBER;
V_CHECK_LENGTH NUMBER;
L_OFFSET NUMBER := 1;
L_AMOUNT NUMBER := 2000;
L_BUFFER2 VARCHAR2 (32767);
CURSOR MAIN_DATA
IS
SELECT *
FROM XXX_HR_ELTEZAM_QUALIFIC_TB
WHERE 1 = 1
AND REQUEST_NUMBER IS NULL
AND ( QUALIFICATIONID = P_QUALIFICATIONID
OR P_QUALIFICATIONID IS NULL)
AND (PERSON_ID = P_PERSON_ID OR P_PERSON_ID IS NULL);
BEGIN
COLLECT_WS_INFO ('ELTEZAM_QUALIFICATION_INFO');
COMMIT;
UPDATE XXX_HR_ELTEZAM_QUALIFIC_TB
SET TRANSACTIONTYPE = 'Delete', REQUEST_NUMBER = NULL
WHERE 1 = 1
AND QUALIFICATIONID NOT IN (SELECT QUALIFICATIONID
FROM XXX_HR_INT_QUALIFICATIONS
WHERE 1 = 1)
AND ( QUALIFICATIONID = P_QUALIFICATIONID
OR P_QUALIFICATIONID IS NULL)
AND (PERSON_ID = P_PERSON_ID OR P_PERSON_ID IS NULL);
COMMIT;
IF P_CONNECTION_TYPE = 'WEB_SERVICE'
THEN
FOR I IN MAIN_DATA
LOOP
SOAP_REQUEST :=
'<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tem="http://tempuri.org/"
xmlns:ver="http://yefi.gov.sa/PersonProfileCommonTypes/xml/schemas/version2.0"
xmlns:ver1="http://yefi.gov.sa/MCS/EltezamDataSchema/xml/schemas/version1.0">
<soapenv:Header/>
<soapenv:Body>
<tem:SubmitEmployeeQualificationInfo>
<!--Optional:-->
<tem:employeeQualificationInfo>
<!--Optional:-->
<PersonIdentifier>
<!--You have a CHOICE of the next 2 items at this level-->
<!--Optional:-->
<ver:IqamaNumber>'
|| I.NATIONALID
|| '</ver:IqamaNumber>
<!--Optional:-->
<ver:NationalID>'
|| I.NATIONALID
|| '</ver:NationalID>
</PersonIdentifier>
<!--Optional:-->
<QualificationList>
<!--Zero or more repetitions:-->
<ver1:Qualification>
<!--Optional:-->
<ver1:QualificationID>'
|| I.QUALIFICATIONID
|| '</ver1:QualificationID>
<!--Optional:-->
<ver1:QualificationCode>'
|| I.QUALIFICATIONCODE
|| '</ver1:QualificationCode>
<!--Optional:-->
<ver1:MajorCode>'
|| I.MAJORCODE
|| '</ver1:MajorCode>
<!--Optional:-->
<ver1:UniversityCode>'
|| I.UNIVERSITYCODE
|| '</ver1:UniversityCode>
<!--Optional:-->
<ver1:UniversityName>'
|| I.UNIVERSITYNAME
|| '</ver1:UniversityName>
<!--Optional:-->
<ver1:CityName>?</ver1:CityName>
<!--Optional:-->
<ver1:CountryCode>'
|| I.COUNTRYCODE
|| '</ver1:CountryCode>
<!--Optional:-->
<ver1:Grade>'
|| I.GRADE
|| '</ver1:Grade>
<!--Optional:-->
<ver1:Score>'
|| I.SCORE
|| '</ver1:Score>
<!--Optional:-->
<ver1:ScoreOutOf>'
|| I.SCOREOUTOF
|| '</ver1:ScoreOutOf>
<ver1:TransactionType>'
|| I.TRANSACTIONTYPE
|| '</ver1:TransactionType>
<!--Optional:-->
<ver1:GraduationDate>'
|| TO_CHAR (I.GRADUATIONDATE,
'DD-MM-RRRR',
'NLS_CALENDAR=''Arabic Hijrah''')
|| '</ver1:GraduationDate>
<ver1:QualificationStatus>'
|| I.QUALIFICATIONSTATUS
|| '</ver1:QualificationStatus>
</ver1:Qualification>
</QualificationList>
</tem:employeeQualificationInfo>
</tem:SubmitEmployeeQualificationInfo>
</soapenv:Body>
</soapenv:Envelope>';
DBMS_OUTPUT.put_line (SOAP_REQUEST);
L_DEST_OFFSET := 1;
L_SRC_OFFSET := 1;
L_LANG_CONTEXT := 0;
L_WARNING := NULL;
DBMS_OUTPUT.put_line (TO_CHAR (SYSDATE, 'DD/MM/YYYY HH24:MI:SS'));
DBMS_OUTPUT.put_line (
L_DEST_OFFSET
|| ','
|| L_SRC_OFFSET
|| ','
|| L_LANG_CONTEXT
|| ','
|| L_WARNING);
UTL_HTTP.SET_TRANSFER_TIMEOUT (60);
----- Wallet Information -------
V_REQ_CONTEXT :=
UTL_HTTP.CREATE_REQUEST_CONTEXT (
WALLET_PATH => G_WALLET_PATH,
WALLET_PASSWORD => G_WALLET_PASSWORD);
---------------------- arabic------------------------------
DBMS_LOB.CREATETEMPORARY (L_BLOB, FALSE, DBMS_LOB.CALL);
DBMS_LOB.CONVERTTOBLOB (
DEST_LOB => L_BLOB,
SRC_CLOB => SOAP_REQUEST,
AMOUNT => DBMS_LOB.LOBMAXSIZE,
DEST_OFFSET => L_DEST_OFFSET,
SRC_OFFSET => L_SRC_OFFSET,
BLOB_CSID => NLS_CHARSET_ID ('AL32UTF8'), --AR8ISO8859P6
AL32UTF8 AL16UTF16
LANG_CONTEXT => L_LANG_CONTEXT,
WARNING => L_WARNING);
----------------------end arabic--------------------------
HTTP_REQ :=
UTL_HTTP.BEGIN_REQUEST (URL => T_URL,
REQUEST_CONTEXT => V_REQ_CONTEXT,
METHOD => 'POST',
HTTP_VERSION => 'HTTP/1.1');
-------------------- arabic------------------------------
UTL_HTTP.SET_HEADER (HTTP_REQ,
'Content-Type',
'text/xml;charset=UTF-8');
UTL_HTTP.SET_HEADER (http_req,
'Content-Length',
DBMS_LOB.GETLENGTH (L_BLOB));
------------------end arabic--------------------------
UTL_HTTP.SET_HEADER (
HTTP_REQ,
'SOAPAction',
'"http://tempuri.org/IEltezamDataService/SubmitEmployeeQualificationInfo"');
-------------------- arabic------------------------------
IF V_CHECK_LENGTH > 32767
THEN
UTL_HTTP.SET_TRANSFER_TIMEOUT (999);
UTL_HTTP.SET_HEADER (HTTP_REQ, 'Trasfer-Encoding', 'chunked');
DBMS_LOB.OPEN (L_BLOB, DBMS_LOB.LOB_READWRITE);
BEGIN
WHILE L_OFFSET < V_CHECK_LENGTH
LOOP
DBMS_LOB.READ (L_BLOB,
L_AMOUNT,
L_OFFSET,
L_BUFFER2);
UTL_HTTP.WRITE_RAW (HTTP_REQ, L_BUFFER2);
L_OFFSET := L_OFFSET + L_AMOUNT;
END LOOP;
END;
DBMS_LOB.CLOSE (L_BLOB);
ELSE
UTL_HTTP.WRITE_TEXT (R => HTTP_REQ, DATA => SOAP_REQUEST);
END IF;
------------------end arabic--------------------------
BEGIN
LOOP
UTL_HTTP.READ_TEXT (HTTP_RESP, L_BUFFER);
DBMS_LOB.WRITEAPPEND (X_CLOB, LENGTH (L_BUFFER), L_BUFFER);
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
IF SQLCODE <> -29266
THEN
RAISE;
END IF;
END;
L_RUN := I.QUALIFICATIONID;
DBMS_OUTPUT.put_line (L_RUN);
DBMS_OUTPUT.put_line (HTTP_RESP.STATUS_CODE);
IF (HTTP_RESP.STATUS_CODE = 200)
THEN
BEGIN
SELECT REQUESTNUMBER
INTO HTTP_RESP_REQ_NUMBER
FROM (SELECT XMLTYPE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
(X_CLOB),
'http://schemas.xmlsoap.org/soap/envelope/',
''),
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"',
''),
'xmlns:xsd="http://www.w3.org/2001/XMLSchema"',
''),
'xmlns="http://tempuri.org/"',
''),
'xmlns="http://yefi.gov.sa/MCS/EltezamDataSchema/xml/schemas/version1.0"',
''),
'xmlns=""',
''),
's:',
''),
'xmlns=""',
''))
XMLT
FROM DUAL) XX,
XMLTABLE (
'Envelope/Body
/SubmitEmployeeQualificationInfoResponse/SubmitEmployeeQualificationInfoResult/
submitEmployeeQualificationInfoResponseDetailObject'
PASSING XX.XMLT
COLUMNS REQUESTNUMBER VARCHAR2 (400)
PATH
'RequestNumber');
UPDATE XXX_HR_ELTEZAM_QUALIFIC_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE = NULL,
ERRORTEXT = NULL,
ERRORCODE = HTTP_RESP.STATUS_CODE,
REQUEST_NUMBER = HTTP_RESP_REQ_NUMBER,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND QUALIFICATIONID = I.QUALIFICATIONID;
EXCEPTION
WHEN OTHERS
THEN
SELECT FAULTSTRING || ' - ' || Code
INTO TTP_ERRORTEXT
FROM (SELECT XMLTYPE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE
(
REGEXP_REPLACE (
(X_CLOB),
'http://schemas.xmlsoap.org/soap/envelope/',
''),
'xmlns="http://tempuri.org/"',
''),
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"',
''),
'xmlns:xsd="http://www.w3.org/2001/XMLSchema"',
''),
'
xmlns="http://yefi.gov.sa/YEFIErrorStructure/xml/schemas/version2.3"',
''),
'xmlns=""',
''),
's:',
''),
'xmlns=""',
''),
'xmlns="http://yefi.gov.sa/YEFIErrorStructure/xml/schemas/version2.3"',
''))
XMLT
FROM DUAL) XX,
XMLTABLE (
'Envelope/Body
/SubmitEmployeeQualificationInfoResponse/SubmitEmployeeQualificationInfoResult/
ServiceError'
PASSING XX.XMLT
COLUMNS FAULTSTRING VARCHAR2 (4000)
PATH 'ErrorText',
Code VARCHAR2 (4000)
PATH 'Code');
L_ERROR := SQLERRM;
UPDATE XXX_HR_ELTEZAM_QUALIFIC_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE = NULL,
ERRORTEXT = TTP_ERRORTEXT,
ERRORCODE = HTTP_RESP.STATUS_CODE,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND QUALIFICATIONID = I.QUALIFICATIONID;
END;
ELSE
BEGIN
SELECT FAULTSTRING
INTO TTP_ERRORTEXT
FROM (SELECT XMLTYPE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
(X_CLOB),
'http://schemas.xmlsoap.org/soap/envelope/',
''),
'xmlns="http://tempuri.org/"',
''),
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"',
''),
'xmlns:xsd="http://www.w3.org/2001/XMLSchema"',
''),
'
xmlns="http://yefi.gov.sa/YEFIErrorStructure/xml/schemas/version2.3"',
''),
'xmlns=""',
''),
's:',
''),
'xmlns=""',
''))
XMLT
FROM DUAL) XX,
XMLTABLE (
'Envelope/Body /Fault'
PASSING XX.XMLT
COLUMNS FAULTSTRING VARCHAR2 (1000)
PATH 'faultstring');
UPDATE XXX_HR_ELTEZAM_QUALIFIC_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE = NULL,
ERRORTEXT = TTP_ERRORTEXT,
ERRORCODE = HTTP_RESP.STATUS_CODE,
REQUEST_NUMBER = NULL,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND QUALIFICATIONID = I.QUALIFICATIONID;
EXCEPTION
WHEN OTHERS
THEN
L_ERROR := SQLERRM;
UPDATE XXX_HR_ELTEZAM_QUALIFIC_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE =
'Internal Error in Failure Response Query XML',
ERRORTEXT = L_ERROR,
ERRORCODE = HTTP_RESP.STATUS_CODE,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND QUALIFICATIONID = I.QUALIFICATIONID;
END;
END IF;
UTL_HTTP.END_RESPONSE (HTTP_RESP);
UTL_HTTP.DESTROY_REQUEST_CONTEXT (V_REQ_CONTEXT);
DBMS_OUTPUT.put_line (TO_CHAR (SYSDATE, 'DD/MM/YYYY HH24:MI:SS'));
COMMIT;
END LOOP;
END IF;
EXCEPTION
WHEN UTL_HTTP.END_OF_BODY
THEN
L_ERROR := SQLERRM;
UPDATE XXX_HR_ELTEZAM_QUALIFIC_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE = HTTP_ERRORTYPE || 'END_OF_BODY',
ERRORTEXT = L_ERROR || ' / ' || TTP_ERRORTEXT,
ERRORCODE = HTTP_RESP.STATUS_CODE,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND QUALIFICATIONID = L_RUN;
COMMIT;
UTL_HTTP.END_RESPONSE (HTTP_RESP);
UTL_HTTP.DESTROY_REQUEST_CONTEXT (V_REQ_CONTEXT);
WHEN UTL_HTTP.TOO_MANY_REQUESTS
THEN
L_ERROR := SQLERRM;
UPDATE XXX_HR_ELTEZAM_QUALIFIC_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE = HTTP_ERRORTYPE || 'TOO_MANY_REQUESTS',
ERRORTEXT = L_ERROR || ' / ' || TTP_ERRORTEXT,
ERRORCODE = HTTP_RESP.STATUS_CODE,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND QUALIFICATIONID = L_RUN;
COMMIT;
RAISE_APPLICATION_ERROR (
-20001,
'Request failed exception:' || UTL_HTTP.GET_DETAILED_SQLERRM);
WHEN OTHERS
THEN
L_ERROR := SQLERRM;
DBMS_OUTPUT.put_line ('OTHERS' || L_ERROR);
UPDATE XXX_HR_ELTEZAM_QUALIFIC_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE = HTTP_ERRORTYPE || 'OTHERS',
ERRORTEXT = L_ERROR || ' / ' || TTP_ERRORTEXT,
ERRORCODE = HTTP_RESP.STATUS_CODE,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND QUALIFICATIONID = L_RUN;
COMMIT;
RAISE_APPLICATION_ERROR (
-20002,
'Request failed exception:' || UTL_HTTP.GET_DETAILED_SQLERRM);
END XXX_HR_QUALIFICATION;
-------------- CREATED BY AMR EL KELANY XXX_HR_VACATION --------UPDATED BY
OMAR FAYYAD--------------
PROCEDURE XXX_HR_VACATION (
ERRBUF OUT NOCOPY VARCHAR2,
RETCODE OUT NOCOPY NUMBER,
P_PERSON_ID NUMBER,
P_VACATIONID XXX_HR_ELTEZAM_VACATION_TB.VACATIONID%TYPE,
P_CONNECTION_TYPE VARCHAR2)
IS
V_REQ_CONTEXT UTL_HTTP.REQUEST_CONTEXT_KEY;
SOAP_REQUEST VARCHAR2 (32767);
HTTP_REQ UTL_HTTP.REQ;
HTTP_RESP UTL_HTTP.RESP;
L_BLOB BLOB;
L_DEST_OFFSET NUMBER := 1;
L_SRC_OFFSET NUMBER := 1;
L_LANG_CONTEXT NUMBER := 0;
L_WARNING NUMBER;
T_HTTP_VERSION VARCHAR2 (10) := 'HTTP/1.1';
T_CONTENT_TYPE VARCHAR2 (50) := 'text/xml; charset=utf-8';
T_URL VARCHAR2 (100);
X_CLOB CLOB;
L_BUFFER VARCHAR2 (32767);
HTTP_RESP_REQ_NUMBER VARCHAR2 (400);
HTTP_RESP_RAISEDBY VARCHAR2 (400);
HTTP_RESP_SOURCE VARCHAR2 (400);
HTTP_RESP_CODE VARCHAR2 (400);
HTTP_ERRORTYPE VARCHAR2 (400);
TTP_ERRORTEXT VARCHAR2 (4000);
L_ERROR VARCHAR2 (4000);
L_RUN NUMBER;
V_CHECK_LENGTH NUMBER;
L_OFFSET NUMBER := 1;
L_AMOUNT NUMBER := 2000;
L_BUFFER2 VARCHAR2 (32767);
CURSOR MAIN_DATA
IS
SELECT VACATIONID,
(SELECT LX.ELTEZAM_ID
FROM XXX_MAWARED_ELTEZAM_MAP_TB LX
WHERE 1 = 1
AND MAP_TYPE = 'VAC_CODE'
AND LX.EBS_ID = VACATIONCODE)
VACATIONCODE,
TRANSACTIONTYPE,
TO_CHAR (STARTDATE,
'DD-MM-RRRR',
'NLS_CALENDAR=''Arabic Hijrah''')
STARTDATE,
RESPONSE_BODY,
REQUEST_NUMBER,
REQUEST_BODY,
RAISEDBY,
PERIODDAYS,
NATIONALID,
ERRORTYPE,
ERRORTEXT,
ERRORCODE,
TO_CHAR (ENDDATE,
'DD-MM-RRRR',
'NLS_CALENDAR=''Arabic Hijrah''')
ENDDATE,
DECISIONNUMBER,
TO_CHAR (DECISIONDATE,
'DD-MM-RRRR',
'NLS_CALENDAR=''Arabic Hijrah''')
DECISIONDATE,
CREATION_DATE
FROM XXX_HR_ELTEZAM_VACATION_TB
WHERE 1 = 1
AND REQUEST_NUMBER IS NULL
AND (VACATIONID = P_VACATIONID OR P_VACATIONID IS NULL)
AND (PERSON_ID = P_PERSON_ID OR P_PERSON_ID IS NULL)
AND DECISIONDATE IS NOT NULL;
BEGIN
COLLECT_WS_INFO ('ELTEZAM_VACATION_INFO');
COMMIT;
UPDATE XXX_HR_ELTEZAM_VACATION_TB
SET TRANSACTIONTYPE = 'Delete', REQUEST_NUMBER = NULL
WHERE 1 = 1
AND VACATIONID NOT IN (SELECT VACATIONID
FROM XXX_HR_INT_ABSENCES_WS)
AND (VACATIONID = P_VACATIONID OR P_VACATIONID IS NULL)
AND (PERSON_ID = P_PERSON_ID OR P_PERSON_ID IS NULL);
COMMIT;
IF P_CONNECTION_TYPE = 'WEB_SERVICE'
THEN
FOR I IN MAIN_DATA
LOOP
SOAP_REQUEST :=
'<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tem="http://tempuri.org/"
xmlns:ver="http://yefi.gov.sa/PersonProfileCommonTypes/xml/schemas/version2.0"
xmlns:ver1="http://yefi.gov.sa/MCS/EltezamDataSchema/xml/schemas/version1.0">
<soapenv:Header/>
<soapenv:Body>
<tem:SubmitEmployeeVacationInfo>
<!--Optional:-->
<tem:employeeVacationInfo>
<!--Optional:-->
<PersonIdentifier>
<!--You have a CHOICE of the next 2 items at this level-->
<!--Optional:-->
<ver:IqamaNumber>'
|| I.NATIONALID
|| '</ver:IqamaNumber>
<!--Optional:-->
<ver:NationalID>'
|| I.NATIONALID
|| '</ver:NationalID>
</PersonIdentifier>
<!--Optional:-->
<VacationList>
<!--Zero or more repetitions:-->
<ver1:Vacation>
<!--Optional:-->
<ver1:VacationID>'
|| I.VACATIONID
|| '</ver1:VacationID>
<!--Optional:-->
<ver1:StartDate>'
|| I.STARTDATE
|| '</ver1:StartDate>
<!--Optional:-->
<ver1:EndDate>'
|| I.ENDDATE
|| '</ver1:EndDate>
<!--Optional:-->
<ver1:Period>'
|| I.PERIODDAYS
|| '</ver1:Period>
<!--Optional:-->
<ver1:VacationCode>'
|| I.VACATIONCODE
|| '</ver1:VacationCode>
<ver1:TransactionType>'
|| I.TRANSACTIONTYPE
|| '</ver1:TransactionType>
<!--Optional:-->
<ver1:DecisionNumber>'
|| I.DECISIONNUMBER
|| '</ver1:DecisionNumber>
<!--Optional:-->
<ver1:DecisionDate>'
|| I.DECISIONDATE
|| '</ver1:DecisionDate>
</ver1:Vacation>
</VacationList>
</tem:employeeVacationInfo>
</tem:SubmitEmployeeVacationInfo>
</soapenv:Body>
</soapenv:Envelope>';
DBMS_OUTPUT.put_line (SOAP_REQUEST);
L_DEST_OFFSET := 1;
L_SRC_OFFSET := 1;
L_LANG_CONTEXT := 0;
L_WARNING := NULL;
DBMS_OUTPUT.put_line (TO_CHAR (SYSDATE, 'DD/MM/YYYY HH24:MI:SS'));
DBMS_OUTPUT.put_line (
L_DEST_OFFSET
|| ','
|| L_SRC_OFFSET
|| ','
|| L_LANG_CONTEXT
|| ','
|| L_WARNING);
UTL_HTTP.SET_TRANSFER_TIMEOUT (60);
----- Wallet Information -------
V_REQ_CONTEXT :=
UTL_HTTP.CREATE_REQUEST_CONTEXT (
WALLET_PATH => G_WALLET_PATH,
WALLET_PASSWORD => G_WALLET_PASSWORD);
---------------------- arabic------------------------------
DBMS_LOB.CREATETEMPORARY (L_BLOB, FALSE, DBMS_LOB.CALL);
DBMS_LOB.CONVERTTOBLOB (
DEST_LOB => L_BLOB,
SRC_CLOB => SOAP_REQUEST,
AMOUNT => DBMS_LOB.LOBMAXSIZE,
DEST_OFFSET => L_DEST_OFFSET,
SRC_OFFSET => L_SRC_OFFSET,
BLOB_CSID => NLS_CHARSET_ID ('AL32UTF8'), --AR8ISO8859P6
AL32UTF8 AL16UTF16
LANG_CONTEXT => L_LANG_CONTEXT,
WARNING => L_WARNING);
----------------------end arabic--------------------------
HTTP_REQ :=
UTL_HTTP.BEGIN_REQUEST (URL => T_URL,
REQUEST_CONTEXT => V_REQ_CONTEXT,
METHOD => 'POST',
HTTP_VERSION => 'HTTP/1.1');
UTL_HTTP.SET_HEADER (http_req,
'Content-Length',
DBMS_LOB.GETLENGTH (L_BLOB));
------------------end arabic--------------------------
UTL_HTTP.SET_HEADER (
HTTP_REQ,
'SOAPAction',
'"http://tempuri.org/IEltezamDataService/SubmitEmployeeVacationInfo"');
-------------------- arabic------------------------------
IF V_CHECK_LENGTH > 32767
THEN
UTL_HTTP.SET_TRANSFER_TIMEOUT (999);
UTL_HTTP.SET_HEADER (HTTP_REQ, 'Trasfer-Encoding', 'chunked');
DBMS_LOB.OPEN (L_BLOB, DBMS_LOB.LOB_READWRITE);
BEGIN
WHILE L_OFFSET < V_CHECK_LENGTH
LOOP
DBMS_LOB.READ (L_BLOB,
L_AMOUNT,
L_OFFSET,
L_BUFFER2);
UTL_HTTP.WRITE_RAW (HTTP_REQ, L_BUFFER2);
L_OFFSET := L_OFFSET + L_AMOUNT;
END LOOP;
END;
DBMS_LOB.CLOSE (L_BLOB);
ELSE
UTL_HTTP.WRITE_TEXT (R => HTTP_REQ, DATA => SOAP_REQUEST);
END IF;
------------------end arabic--------------------------
BEGIN
LOOP
UTL_HTTP.READ_TEXT (HTTP_RESP, L_BUFFER);
DBMS_LOB.WRITEAPPEND (X_CLOB, LENGTH (L_BUFFER), L_BUFFER);
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
IF SQLCODE <> -29266
THEN
RAISE;
END IF;
END;
L_RUN := I.VACATIONID;
DBMS_OUTPUT.put_line (L_RUN);
DBMS_OUTPUT.put_line (HTTP_RESP.STATUS_CODE);
IF (HTTP_RESP.STATUS_CODE = 200)
THEN
BEGIN
SELECT REQUESTNUMBER
INTO HTTP_RESP_REQ_NUMBER
FROM (SELECT XMLTYPE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
(X_CLOB),
'http://schemas.xmlsoap.org/soap/envelope/',
''),
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"',
''),
'xmlns:xsd="http://www.w3.org/2001/XMLSchema"',
''),
'xmlns="http://tempuri.org/"',
''),
'xmlns="http://yefi.gov.sa/MCS/EltezamDataSchema/xml/schemas/version1.0"',
''),
'xmlns=""',
''),
's:',
''),
'xmlns=""',
''))
XMLT
FROM DUAL) XX,
XMLTABLE (
'Envelope/Body
/SubmitEmployeeVacationInfoResponse/SubmitEmployeeVacationInfoResult/
submitEmployeeVacationInfoResponseDetailObject'
PASSING XX.XMLT
COLUMNS REQUESTNUMBER VARCHAR2 (400)
PATH
'RequestNumber');
UPDATE XXX_HR_ELTEZAM_VACATION_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE = NULL,
ERRORTEXT = NULL,
ERRORCODE = HTTP_RESP.STATUS_CODE,
REQUEST_NUMBER = HTTP_RESP_REQ_NUMBER,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND VACATIONID = I.VACATIONID;
EXCEPTION
WHEN OTHERS
THEN
SELECT FAULTSTRING || ' - ' || Code
INTO TTP_ERRORTEXT
FROM (SELECT XMLTYPE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE
(
REGEXP_REPLACE (
(X_CLOB),
'http://schemas.xmlsoap.org/soap/envelope/',
''),
'xmlns="http://tempuri.org/"',
''),
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"',
''),
'xmlns:xsd="http://www.w3.org/2001/XMLSchema"',
''),
'
xmlns="http://yefi.gov.sa/YEFIErrorStructure/xml/schemas/version2.3"',
''),
'xmlns=""',
''),
's:',
''),
'xmlns=""',
''),
'xmlns="http://yefi.gov.sa/YEFIErrorStructure/xml/schemas/version2.3"',
''))
XMLT
FROM DUAL) XX,
XMLTABLE (
'Envelope/Body
/SubmitEmployeeVacationInfoResponse/SubmitEmployeeVacationInfoResult/ServiceError'
PASSING XX.XMLT
COLUMNS FAULTSTRING VARCHAR2 (4000)
PATH 'ErrorText',
Code VARCHAR2 (4000)
PATH 'Code');
L_ERROR := SQLERRM;
UPDATE XXX_HR_ELTEZAM_VACATION_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE = NULL,
ERRORTEXT = TTP_ERRORTEXT,
ERRORCODE = HTTP_RESP.STATUS_CODE,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND VACATIONID = I.VACATIONID;
L_ERROR := SQLERRM;
END;
ELSE
BEGIN
SELECT FAULTSTRING
INTO TTP_ERRORTEXT
FROM (SELECT XMLTYPE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
(X_CLOB),
'http://schemas.xmlsoap.org/soap/envelope/',
''),
'xmlns="http://tempuri.org/"',
''),
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"',
''),
'xmlns:xsd="http://www.w3.org/2001/XMLSchema"',
''),
'
xmlns="http://yefi.gov.sa/YEFIErrorStructure/xml/schemas/version2.3"',
''),
'xmlns=""',
''),
's:',
''),
'xmlns=""',
''))
XMLT
FROM DUAL) XX,
XMLTABLE (
'Envelope/Body /Fault'
PASSING XX.XMLT
COLUMNS FAULTSTRING VARCHAR2 (1000)
PATH 'faultstring');
UPDATE XXX_HR_ELTEZAM_VACATION_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE = NULL,
ERRORTEXT = TTP_ERRORTEXT,
ERRORCODE = HTTP_RESP.STATUS_CODE,
REQUEST_NUMBER = NULL,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND VACATIONID = I.VACATIONID;
EXCEPTION
WHEN OTHERS
THEN
L_ERROR := SQLERRM;
UPDATE XXX_HR_ELTEZAM_VACATION_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE =
'Internal Error in Failure Response Query XML',
ERRORTEXT = L_ERROR,
ERRORCODE = HTTP_RESP.STATUS_CODE,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND VACATIONID = I.VACATIONID;
END;
END IF;
UTL_HTTP.END_RESPONSE (HTTP_RESP);
UTL_HTTP.DESTROY_REQUEST_CONTEXT (V_REQ_CONTEXT);
DBMS_OUTPUT.put_line (TO_CHAR (SYSDATE, 'DD/MM/YYYY HH24:MI:SS'));
COMMIT;
END LOOP;
END IF;
EXCEPTION
WHEN UTL_HTTP.END_OF_BODY
THEN
L_ERROR := SQLERRM;
UPDATE XXX_HR_ELTEZAM_VACATION_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE = HTTP_ERRORTYPE || 'END_OF_BODY',
ERRORTEXT = L_ERROR || ' / ' || TTP_ERRORTEXT,
ERRORCODE = HTTP_RESP.STATUS_CODE,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND VACATIONID = L_RUN;
COMMIT;
UTL_HTTP.END_RESPONSE (HTTP_RESP);
UTL_HTTP.DESTROY_REQUEST_CONTEXT (V_REQ_CONTEXT);
WHEN UTL_HTTP.TOO_MANY_REQUESTS
THEN
L_ERROR := SQLERRM;
UPDATE XXX_HR_ELTEZAM_VACATION_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE = HTTP_ERRORTYPE || 'TOO_MANY_REQUESTS',
ERRORTEXT = L_ERROR || ' / ' || TTP_ERRORTEXT,
ERRORCODE = HTTP_RESP.STATUS_CODE,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND VACATIONID = L_RUN;
COMMIT;
RAISE_APPLICATION_ERROR (
-20001,
'Request failed exception:' || UTL_HTTP.GET_DETAILED_SQLERRM);
WHEN OTHERS
THEN
L_ERROR := SQLERRM;
DBMS_OUTPUT.put_line ('OTHERS' || L_ERROR);
UPDATE XXX_HR_ELTEZAM_VACATION_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE = HTTP_ERRORTYPE || 'OTHERS',
ERRORTEXT = L_ERROR || ' / ' || TTP_ERRORTEXT,
ERRORCODE = HTTP_RESP.STATUS_CODE,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND VACATIONID = L_RUN;
COMMIT;
RAISE_APPLICATION_ERROR (
-20002,
'Request failed exception:' || UTL_HTTP.GET_DETAILED_SQLERRM);
END XXX_HR_VACATION;
PROCEDURE XXX_APPRAISAL (
ERRBUF OUT NOCOPY VARCHAR2,
RETCODE OUT NOCOPY NUMBER,
P_PERSON_ID NUMBER,
P_APPRAISALID XXX_HR_ELTEZAM_APPRAISAL_TB.APPRAISALID
%TYPE,
P_CONNECTION_TYPE VARCHAR2)
IS
V_REQ_CONTEXT UTL_HTTP.REQUEST_CONTEXT_KEY;
SOAP_REQUEST VARCHAR2 (32767);
HTTP_REQ UTL_HTTP.REQ;
HTTP_RESP UTL_HTTP.RESP;
L_BLOB BLOB;
L_DEST_OFFSET NUMBER := 1;
L_SRC_OFFSET NUMBER := 1;
L_LANG_CONTEXT NUMBER := 0;
L_WARNING NUMBER;
T_HTTP_VERSION VARCHAR2 (10) := 'HTTP/1.1';
T_CONTENT_TYPE VARCHAR2 (50) := 'text/xml; charset=utf-8';
T_URL VARCHAR2 (100);
X_CLOB CLOB;
L_BUFFER VARCHAR2 (32767);
HTTP_RESP_REQ_NUMBER VARCHAR2 (400);
HTTP_RESP_RAISEDBY VARCHAR2 (400);
HTTP_RESP_SOURCE VARCHAR2 (400);
HTTP_RESP_CODE VARCHAR2 (400);
HTTP_ERRORTYPE VARCHAR2 (400);
TTP_ERRORTEXT VARCHAR2 (4000);
L_ERROR VARCHAR2 (4000);
L_RUN NUMBER;
V_CHECK_LENGTH NUMBER;
L_OFFSET NUMBER := 1;
L_AMOUNT NUMBER := 2000;
L_BUFFER2 VARCHAR2 (32767);
CURSOR MAIN_DATA
IS
SELECT TRANSACTIONTYPE,
TO_CHAR (STARTDATE,
'DD-MM-RRRR',
'NLS_CALENDAR=''Arabic Hijrah''')
STARTDATE,
RESULT,
RESPONSE_BODY,
REQUEST_NUMBER,
REQUEST_BODY,
RATINGCODE,
RAISEDBY,
PERSON_ID,
NATIONALID,
ERRORTYPE,
ERRORTEXT,
ERRORCODE,
TO_CHAR (ENDDATE,
'DD-MM-RRRR',
'NLS_CALENDAR=''Arabic Hijrah''')
ENDDATE,
EMPLOYEEID,
CREATION_DATE,
APPRAISALTYPECODE,
APPRAISALID
FROM XXCUSTOM.XXX_HR_ELTEZAM_APPRAISAL_TB
WHERE 1 = 1
AND REQUEST_NUMBER IS NULL
AND (APPRAISALID = P_APPRAISALID OR P_APPRAISALID IS NULL)
AND (PERSON_ID = P_PERSON_ID OR P_PERSON_ID IS NULL);
BEGIN
COLLECT_WS_INFO ('ELTEZAM_APPRAISAL_INFO');
COMMIT;
UPDATE XXX_HR_ELTEZAM_APPRAISAL_TB
SET TRANSACTIONTYPE = 'Delete', REQUEST_NUMBER = NULL
WHERE 1 = 1
AND APPRAISALID NOT IN (SELECT APPRAISALID
FROM XXX_HR_INT_APPRAISAL_WS
WHERE 1 = 1)
AND (APPRAISALID = P_APPRAISALID OR P_APPRAISALID IS NULL)
AND (PERSON_ID = P_PERSON_ID OR P_PERSON_ID IS NULL);
COMMIT;
IF P_CONNECTION_TYPE = 'WEB_SERVICE'
THEN
FOR I IN MAIN_DATA
LOOP
SOAP_REQUEST :=
'<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:tem="http://tempuri.org/"
xmlns:ver="http://yefi.gov.sa/PersonProfileCommonTypes/xml/schemas/version2.0"
xmlns:ver1="http://yefi.gov.sa/MCS/EltezamDataSchema/xml/schemas/version1.0">
<soapenv:Header/>
<soapenv:Body>
<tem:SubmitEmployeeAppraisalInfo>
<!--Optional:-->
<tem:employeeAppraisalInfo>
<!--Optional:-->
<PersonIdentifier>
<!--You have a CHOICE of the next 2 items at this level-->
<!--Optional:-->
<ver:IqamaNumber>'
|| I.NATIONALID
|| '</ver:IqamaNumber>
<!--Optional:-->
<ver:NationalID>'
|| I.NATIONALID
|| '</ver:NationalID>
</PersonIdentifier>
<!--Optional:-->
<EmployeeID>'
|| I.EMPLOYEEID
|| '</EmployeeID>
<!--Optional:-->
<AppraisalInfo>
<!--Optional:-->
<ver1:AppraisalID>'
|| I.APPRAISALID
|| '</ver1:AppraisalID>
<!--Optional:-->
<ver1:StartDate>'
|| I.STARTDATE
|| '</ver1:StartDate>
<!--Optional:-->
<ver1:EndDate>'
|| I.ENDDATE
|| '</ver1:EndDate>
<ver1:AppraisalTypeCode>'
|| I.APPRAISALTYPECODE
|| '</ver1:AppraisalTypeCode>
<ver1:TransactionType>'
|| I.TRANSACTIONTYPE
|| '</ver1:TransactionType>
<!--Optional:-->
<ver1:Result>'
|| I.RESULT
|| '</ver1:Result>
<ver1:RatingCode>'
|| I.RATINGCODE
|| '</ver1:RatingCode>
</AppraisalInfo>
</tem:employeeAppraisalInfo>
</tem:SubmitEmployeeAppraisalInfo>
</soapenv:Body>
</soapenv:Envelope>';
DBMS_OUTPUT.put_line (SOAP_REQUEST);
L_DEST_OFFSET := 1;
L_SRC_OFFSET := 1;
L_LANG_CONTEXT := 0;
L_WARNING := NULL;
DBMS_OUTPUT.put_line (TO_CHAR (SYSDATE, 'DD/MM/YYYY HH24:MI:SS'));
DBMS_OUTPUT.put_line (
L_DEST_OFFSET
|| ','
|| L_SRC_OFFSET
|| ','
|| L_LANG_CONTEXT
|| ','
|| L_WARNING);
UTL_HTTP.SET_TRANSFER_TIMEOUT (60);
----- Wallet Information -------
V_REQ_CONTEXT :=
UTL_HTTP.CREATE_REQUEST_CONTEXT (
WALLET_PATH => G_WALLET_PATH,
WALLET_PASSWORD => G_WALLET_PASSWORD);
---------------------- arabic------------------------------
DBMS_LOB.CREATETEMPORARY (L_BLOB, FALSE, DBMS_LOB.CALL);
DBMS_LOB.CONVERTTOBLOB (
DEST_LOB => L_BLOB,
SRC_CLOB => SOAP_REQUEST,
AMOUNT => DBMS_LOB.LOBMAXSIZE,
DEST_OFFSET => L_DEST_OFFSET,
SRC_OFFSET => L_SRC_OFFSET,
BLOB_CSID => NLS_CHARSET_ID ('AL32UTF8'), --AR8ISO8859P6
AL32UTF8 AL16UTF16
LANG_CONTEXT => L_LANG_CONTEXT,
WARNING => L_WARNING);
----------------------end arabic--------------------------
HTTP_REQ :=
UTL_HTTP.BEGIN_REQUEST (URL => T_URL,
REQUEST_CONTEXT => V_REQ_CONTEXT,
METHOD => 'POST',
HTTP_VERSION => 'HTTP/1.1');
-------------------- arabic------------------------------
UTL_HTTP.SET_HEADER (HTTP_REQ,
'Content-Type',
'text/xml;charset=UTF-8');
UTL_HTTP.SET_HEADER (http_req,
'Content-Length',
DBMS_LOB.GETLENGTH (L_BLOB));
------------------end arabic--------------------------
UTL_HTTP.SET_HEADER (
HTTP_REQ,
'SOAPAction',
'"http://tempuri.org/IEltezamDataService/SubmitEmployeeAppraisalInfo"');
-------------------- arabic------------------------------
IF V_CHECK_LENGTH > 32767
THEN
UTL_HTTP.SET_TRANSFER_TIMEOUT (999);
UTL_HTTP.SET_HEADER (HTTP_REQ, 'Trasfer-Encoding', 'chunked');
DBMS_LOB.OPEN (L_BLOB, DBMS_LOB.LOB_READWRITE);
BEGIN
WHILE L_OFFSET < V_CHECK_LENGTH
LOOP
DBMS_LOB.READ (L_BLOB,
L_AMOUNT,
L_OFFSET,
L_BUFFER2);
UTL_HTTP.WRITE_RAW (HTTP_REQ, L_BUFFER2);
L_OFFSET := L_OFFSET + L_AMOUNT;
END LOOP;
END;
DBMS_LOB.CLOSE (L_BLOB);
ELSE
UTL_HTTP.WRITE_TEXT (R => HTTP_REQ, DATA => SOAP_REQUEST);
END IF;
------------------end arabic--------------------------
HTTP_RESP := UTL_HTTP.GET_RESPONSE (HTTP_REQ);
BEGIN
LOOP
UTL_HTTP.READ_TEXT (HTTP_RESP, L_BUFFER);
DBMS_LOB.WRITEAPPEND (X_CLOB, LENGTH (L_BUFFER), L_BUFFER);
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
IF SQLCODE <> -29266
THEN
RAISE;
END IF;
END;
L_RUN := I.APPRAISALID;
DBMS_OUTPUT.put_line (L_RUN);
DBMS_OUTPUT.put_line (HTTP_RESP.STATUS_CODE);
IF (HTTP_RESP.STATUS_CODE = 200)
THEN
BEGIN
SELECT REQUESTNUMBER
INTO HTTP_RESP_REQ_NUMBER
FROM (SELECT XMLTYPE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
(X_CLOB),
'http://schemas.xmlsoap.org/soap/envelope/',
''),
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"',
''),
'xmlns:xsd="http://www.w3.org/2001/XMLSchema"',
''),
'xmlns="http://tempuri.org/"',
''),
'xmlns="http://yefi.gov.sa/MCS/EltezamDataSchema/xml/schemas/version1.0"',
''),
'xmlns=""',
''),
's:',
''),
'xmlns=""',
''))
XMLT
FROM DUAL) XX,
XMLTABLE (
'Envelope/Body
/SubmitEmployeeAppraisalInfoResponse/SubmitEmployeeAppraisalInfoResult/
submitEmployeeAppraisalInfoResponseDetailObject'
PASSING XX.XMLT
COLUMNS REQUESTNUMBER VARCHAR2 (400)
PATH
'RequestNumber');
UPDATE XXX_HR_ELTEZAM_APPRAISAL_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE = NULL,
ERRORTEXT = NULL,
ERRORCODE = HTTP_RESP.STATUS_CODE,
REQUEST_NUMBER = HTTP_RESP_REQ_NUMBER,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND APPRAISALID = I.APPRAISALID;
EXCEPTION
WHEN OTHERS
THEN
SELECT FAULTSTRING || ' - ' || Code
INTO TTP_ERRORTEXT
FROM (SELECT XMLTYPE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE
(
REGEXP_REPLACE (
(X_CLOB),
'http://schemas.xmlsoap.org/soap/envelope/',
''),
'xmlns="http://tempuri.org/"',
''),
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"',
''),
'xmlns:xsd="http://www.w3.org/2001/XMLSchema"',
''),
'
xmlns="http://yefi.gov.sa/YEFIErrorStructure/xml/schemas/version2.3"',
''),
'xmlns=""',
''),
's:',
''),
'xmlns=""',
''),
'xmlns="http://yefi.gov.sa/YEFIErrorStructure/xml/schemas/version2.3"',
''))
XMLT
FROM DUAL) XX,
XMLTABLE (
'Envelope/Body
/SubmitEmployeeAppraisalInfoResponse/SubmitEmployeeAppraisalInfoResult/
ServiceError'
PASSING XX.XMLT
COLUMNS FAULTSTRING VARCHAR2 (4000)
PATH 'ErrorText',
Code VARCHAR2 (4000)
PATH 'Code');
L_ERROR := SQLERRM;
UPDATE XXX_HR_ELTEZAM_APPRAISAL_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE = NULL,
ERRORTEXT = TTP_ERRORTEXT,
ERRORCODE = HTTP_RESP.STATUS_CODE,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND APPRAISALID = I.APPRAISALID;
END;
ELSE
BEGIN
SELECT FAULTSTRING
INTO TTP_ERRORTEXT
FROM (SELECT XMLTYPE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
REGEXP_REPLACE (
(X_CLOB),
'http://schemas.xmlsoap.org/soap/envelope/',
''),
'xmlns="http://tempuri.org/"',
''),
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"',
''),
'xmlns:xsd="http://www.w3.org/2001/XMLSchema"',
''),
'
xmlns="http://yefi.gov.sa/YEFIErrorStructure/xml/schemas/version2.3"',
''),
'xmlns=""',
''),
's:',
''),
'xmlns=""',
''))
XMLT
FROM DUAL) XX,
XMLTABLE (
'Envelope/Body /Fault'
PASSING XX.XMLT
COLUMNS FAULTSTRING VARCHAR2 (1000)
PATH 'faultstring');
UPDATE XXX_HR_ELTEZAM_APPRAISAL_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE = NULL,
ERRORTEXT = TTP_ERRORTEXT,
ERRORCODE = HTTP_RESP.STATUS_CODE,
REQUEST_NUMBER = NULL,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND APPRAISALID = I.APPRAISALID;
EXCEPTION
WHEN OTHERS
THEN
L_ERROR := SQLERRM;
UPDATE XXX_HR_ELTEZAM_APPRAISAL_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE =
'Internal Error in Failure Response Query XML',
ERRORTEXT = L_ERROR,
ERRORCODE = HTTP_RESP.STATUS_CODE,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND APPRAISALID = I.APPRAISALID;
END;
END IF;
UTL_HTTP.END_RESPONSE (HTTP_RESP);
UTL_HTTP.DESTROY_REQUEST_CONTEXT (V_REQ_CONTEXT);
DBMS_OUTPUT.put_line (TO_CHAR (SYSDATE, 'DD/MM/YYYY HH24:MI:SS'));
COMMIT;
END LOOP;
END IF;
EXCEPTION
WHEN UTL_HTTP.END_OF_BODY
THEN
L_ERROR := SQLERRM;
UPDATE XXX_HR_ELTEZAM_APPRAISAL_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE = HTTP_ERRORTYPE || 'END_OF_BODY',
ERRORTEXT = L_ERROR || ' / ' || TTP_ERRORTEXT,
ERRORCODE = HTTP_RESP.STATUS_CODE,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND APPRAISALID = L_RUN;
COMMIT;
UTL_HTTP.END_RESPONSE (HTTP_RESP);
UTL_HTTP.DESTROY_REQUEST_CONTEXT (V_REQ_CONTEXT);
WHEN UTL_HTTP.TOO_MANY_REQUESTS
THEN
L_ERROR := SQLERRM;
UPDATE XXX_HR_ELTEZAM_APPRAISAL_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE = HTTP_ERRORTYPE || 'TOO_MANY_REQUESTS',
ERRORTEXT = L_ERROR || ' / ' || TTP_ERRORTEXT,
ERRORCODE = HTTP_RESP.STATUS_CODE,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND APPRAISALID = L_RUN;
COMMIT;
RAISE_APPLICATION_ERROR (
-20001,
'Request failed exception:' || UTL_HTTP.GET_DETAILED_SQLERRM);
WHEN OTHERS
THEN
L_ERROR := SQLERRM;
DBMS_OUTPUT.put_line ('OTHERS' || L_ERROR);
UPDATE XXX_HR_ELTEZAM_APPRAISAL_TB
SET REQUEST_BODY = SOAP_REQUEST,
RESPONSE_BODY = X_CLOB,
ERRORTYPE = HTTP_ERRORTYPE || 'OTHERS',
ERRORTEXT = L_ERROR || ' / ' || TTP_ERRORTEXT,
ERRORCODE = HTTP_RESP.STATUS_CODE,
CREATION_DATE = SYSDATE
WHERE 1 = 1 AND APPRAISALID = L_RUN;
COMMIT;
RAISE_APPLICATION_ERROR (
-20002,
'Request failed exception:' || UTL_HTTP.GET_DETAILED_SQLERRM);
END XXX_APPRAISAL;
END XXX_HR_ELTEZAM_WS_PKG;
/