Beruflich Dokumente
Kultur Dokumente
wq_hr_element_interface
IS
/* WOQOD copyrights reserved. No part of this code should be copied or translated
direclty or indireclty without
the prior permission of WOQOD IT
END wq_hr_element_interface;
/
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%
CURSOR get_input_values (
b_input_value_name VARCHAR2,
b_element_type_id NUMBER
)
IS
SELECT input_value_id
FROM pay_input_values_f
WHERE NAME = b_input_value_name
AND element_type_id = b_element_type_id;
BEGIN
BEGIN
SELECT element_type_id
INTO ln_element_type_id
FROM pay_element_types_f
WHERE SYSDATE BETWEEN effective_start_date AND effective_end_date
AND element_name = pv_element_name;
EXCEPTION
WHEN OTHERS
THEN
fnd_file.put_line (fnd_file.LOG,
'Invalid Element Name: ' || pv_element_name
);
DBMS_OUTPUT.put_line (SQLERRM);
pn_retcode := 2;
pv_errbuf := 'Check log for Information';
END;
BEGIN
OPEN get_input_values (pv_input_value_name1, ln_element_type_id);
FETCH get_input_values
INTO ln_input_value_id1;
CLOSE get_input_values;
END;
BEGIN
OPEN get_input_values (pv_input_value_name2, ln_element_type_id);
FETCH get_input_values
INTO ln_input_value_id2;
CLOSE get_input_values;
END;
BEGIN
OPEN get_input_values (pv_input_value_name3, ln_element_type_id);
FETCH get_input_values
INTO ln_input_value_id3;
CLOSE get_input_values;
END;
BEGIN
OPEN get_input_values (pv_input_value_name4, ln_element_type_id);
FETCH get_input_values
INTO ln_input_value_id4;
CLOSE get_input_values;
END;
BEGIN
OPEN get_input_values (pv_input_value_name5, ln_element_type_id);
FETCH get_input_values
INTO ln_input_value_id5;
CLOSE get_input_values;
END;
BEGIN
OPEN get_input_values (pv_input_value_name6, ln_element_type_id);
FETCH get_input_values
INTO ln_input_value_id6;
CLOSE get_input_values;
END;
BEGIN
OPEN get_input_values (pv_input_value_name7, ln_element_type_id);
FETCH get_input_values
INTO ln_input_value_id7;
CLOSE get_input_values;
END;
BEGIN
OPEN get_input_values (pv_input_value_name8, ln_element_type_id);
FETCH get_input_values
INTO ln_input_value_id8;
CLOSE get_input_values;
END;
BEGIN
OPEN get_input_values (pv_input_value_name9, ln_element_type_id);
FETCH get_input_values
INTO ln_input_value_id9;
CLOSE get_input_values;
END;
BEGIN
OPEN get_input_values (pv_input_value_name10, ln_element_type_id);
FETCH get_input_values
INTO ln_input_value_id10;
CLOSE get_input_values;
END;
PROCEDURE wq_insert_bussiness_trip (
errbuf OUT VARCHAR2,
retcode OUT NUMBER,
pd_run_date DATE
)
IS
--ld_run_date DATE;
ln_id_flex_num NUMBER;
ln_assignment_id NUMBER;
ln_retcode3 NUMBER;
lv_errbuf3 VARCHAR2 (240);
ln_retcode2 NUMBER;
lv_errbuf2 VARCHAR2 (240);
ln_retcode1 NUMBER;
lv_errbuf1 VARCHAR2 (240);
ln_element_entry_id3 NUMBER;
ln_element_entry_id2 NUMBER;
ln_element_entry_id1 NUMBER;
lv_processed VARCHAR2 (1);
ld_session_date DATE;
lv_element_name1 VARCHAR2 (120);
lv_element_name2 VARCHAR2 (120);
lv_element_name3 VARCHAR2 (120);
CURSOR cur_business_trips
IS
SELECT ppa.person_id, ppa.date_from, ppa.date_to,
ppa.analysis_criteria_id, ppa.last_update_date, segment1,
TO_CHAR (TO_DATE (segment2, 'YYYY/MM/DD HH24:MI:SS'),
'DD-MON-YYYY'
) segment2,
TO_CHAR (TO_DATE (segment3, 'YYYY/MM/DD HH24:MI:SS'),
'DD-MON-YYYY'
) segment3,
segment4, segment5,
TO_CHAR (TO_DATE (segment6, 'YYYY/MM/DD HH24:MI:SS'),
'DD-MON-YYYY'
) segment6,
TO_CHAR (TO_DATE (segment7, 'YYYY/MM/DD HH24:MI:SS'),
'DD-MON-YYYY'
) segment7,
segment8, segment9,
TO_CHAR (TO_DATE (segment10, 'YYYY/MM/DD HH24:MI:SS'),
'DD-MON-YYYY'
) segment10,
TO_CHAR (TO_DATE (segment11, 'YYYY/MM/DD HH24:MI:SS'),
'DD-MON-YYYY'
) segment11,
segment12, segment13, segment14, segment15, segment16,
segment17, segment18, segment19, segment20, segment21,
segment22, segment23, segment24, segment25, segment26,
segment27, segment28, segment29, segment30
FROM per_person_analyses ppa, per_analysis_criteria pac
WHERE ppa.id_flex_num = ln_id_flex_num
AND ppa.id_flex_num = pac.id_flex_num
AND ppa.analysis_criteria_id = pac.analysis_criteria_id
AND TRUNC (ppa.last_update_date) >= pd_run_date
AND segment18 IS NULL;
BEGIN
BEGIN
SELECT id_flex_num
INTO ln_id_flex_num
FROM fnd_id_flex_structures_tl
WHERE id_flex_structure_name = 'Business Trips' AND LANGUAGE = 'US';
EXCEPTION
WHEN OTHERS
THEN
fnd_file.put_line (fnd_file.LOG,
'Invalid Special Info Flex Name');
DBMS_OUTPUT.put_line (SQLERRM);
retcode := 2;
errbuf := 'Error Processing Records';
END;
BEGIN
SELECT assignment_id
INTO ln_assignment_id
FROM per_all_assignments_f
WHERE person_id = rec.person_id
AND SYSDATE BETWEEN effective_start_date AND effective_end_date;
EXCEPTION
WHEN OTHERS
THEN
fnd_file.put_line (fnd_file.LOG, 'Invalid Person Id ');
DBMS_OUTPUT.put_line (SQLERRM);
retcode := 2;
errbuf := 'Error Processing Records';
END;
BEGIN
SELECT pay_paywsmee_pkg.processed (peef.element_entry_id,
peef.original_entry_id,
petf.processing_type,
peef.entry_type,
TRUNC (SYSDATE)
)
INTO lv_processed
FROM pay_element_entries_f peef, pay_element_types_f petf
WHERE peef.assignment_id = ln_assignment_id
AND TRUNC (SYSDATE) BETWEEN peef.effective_start_date
AND peef.effective_end_date
AND TRUNC (SYSDATE) BETWEEN petf.effective_start_date
AND petf.effective_end_date
AND peef.element_type_id = petf.element_type_id
AND peef.element_type_id = 238;
END;
IF lv_processed = 'Y'
THEN
SELECT ADD_MONTHS (TRUNC (SYSDATE), 1)
INTO ld_session_date
FROM DUAL;
ELSE
SELECT TRUNC (SYSDATE)
INTO ld_session_date
FROM DUAL;
END IF;
wq_create_emp_element
(pv_input_value_name1 => 'Start Date',
pv_input_value_name2 => 'End Date',
pv_input_value_name3 => 'Comments',
pv_input_value_name4 => 'Country',
pv_entry_value1 => rec.segment10,
pv_entry_value2 => rec.segment11,
pv_entry_value3 => rec.segment13,
pv_entry_value4 => rec.segment9,
pd_session_date => ld_session_date,
pn_assignment_id => ln_assignment_id,
pv_element_name => lv_element_name3,
pn_element_entry_id =>
ln_element_entry_id3,
pv_errbuf => lv_errbuf3,
pn_retcode => ln_retcode3
);
wq_create_emp_element
(pv_input_value_name1 => 'Start Date',
pv_input_value_name2 => 'End Date',
pv_input_value_name3 => 'Comments',
pv_input_value_name4 => 'Country',
pv_entry_value1 => rec.segment6,
pv_entry_value2 => rec.segment7,
pv_entry_value3 => rec.segment15,
pv_entry_value4 => rec.segment5,
pd_session_date => ld_session_date,
pn_assignment_id => ln_assignment_id,
pv_element_name => lv_element_name2,
pn_element_entry_id =>
ln_element_entry_id2,
pv_errbuf => lv_errbuf2,
pn_retcode => ln_retcode2
);
wq_create_emp_element
(pv_input_value_name1 => 'Start Date',
pv_input_value_name2 => 'End Date',
pv_input_value_name3 => 'Comments',
pv_input_value_name4 => 'Country',
pv_entry_value1 => rec.segment2,
pv_entry_value2 => rec.segment3,
pv_entry_value3 => rec.segment14,
pv_entry_value4 => rec.segment1,
pd_session_date => ld_session_date,
pn_assignment_id => ln_assignment_id,
pv_element_name => lv_element_name1,
pn_element_entry_id =>
ln_element_entry_id1,
pv_errbuf => lv_errbuf1,
pn_retcode => ln_retcode1
);
UPDATE per_analysis_criteria
SET segment18 =
ln_element_entry_id1
|| ','
|| ln_element_entry_id2
|| ','
|| ln_element_entry_id3
WHERE id_flex_num = ln_id_flex_num
AND analysis_criteria_id = rec.analysis_criteria_id;
ELSIF rec.segment5 IS NOT NULL
THEN
BEGIN
SELECT DECODE (rec.segment8,
'FAH', 'Business Trip FAHES',
'WI', 'Business Trip International',
'WOQ', 'Business Trip Woqod',
'WM', 'Business Trip Marine',
'QJET', 'Business Trip QJET',
'','Business Trip Woqod'
)
INTO lv_element_name2
FROM DUAL;
wq_create_emp_element
(pv_input_value_name1 => 'Start Date',
pv_input_value_name2 => 'End Date',
pv_input_value_name3 => 'Comments',
pv_input_value_name4 => 'Country',
pv_entry_value1 => rec.segment6,
pv_entry_value2 => rec.segment7,
pv_entry_value3 => rec.segment15,
pv_entry_value4 => rec.segment5,
pd_session_date => ld_session_date,
pn_assignment_id => ln_assignment_id,
pv_element_name => lv_element_name2,
pn_element_entry_id =>
ln_element_entry_id2,
pv_errbuf => lv_errbuf2,
pn_retcode => ln_retcode2
);
wq_create_emp_element
(pv_input_value_name1 => 'Start Date',
pv_input_value_name2 => 'End Date',
pv_input_value_name3 => 'Comments',
pv_input_value_name4 => 'Country',
pv_entry_value1 => rec.segment2,
pv_entry_value2 => rec.segment3,
pv_entry_value3 => rec.segment14,
pv_entry_value4 => rec.segment1,
pd_session_date => ld_session_date,
pn_assignment_id => ln_assignment_id,
pv_element_name => lv_element_name1,
pn_element_entry_id =>
ln_element_entry_id1,
pv_errbuf => lv_errbuf1,
pn_retcode => ln_retcode1
);
UPDATE per_analysis_criteria
SET segment18 =
ln_element_entry_id1 || ',' || ln_element_entry_id2
WHERE id_flex_num = ln_id_flex_num
AND analysis_criteria_id = rec.analysis_criteria_id;
ELSE
BEGIN
SELECT DECODE (rec.segment4,
'FAH', 'Business Trip FAHES',
'WI', 'Business Trip International',
'WOQ', 'Business Trip Woqod',
'WM', 'Business Trip Marine',
'QJET', 'Business Trip QJET',
'','Business Trip Woqod'
)
INTO lv_element_name1
FROM DUAL;
EXCEPTION
WHEN OTHERS
THEN
fnd_file.put_line (fnd_file.LOG,
'Error Visit For.. in special info '
);
retcode := 2;
errbuf := 'Error Processing Records';
END;
wq_create_emp_element
(pv_input_value_name1 => 'Start Date',
pv_input_value_name2 => 'End Date',
pv_input_value_name3 => 'Comments',
pv_input_value_name4 => 'Country',
pv_entry_value1 => rec.segment2,
pv_entry_value2 => rec.segment3,
pv_entry_value3 => rec.segment14,
pv_entry_value4 => rec.segment1,
pd_session_date => ld_session_date,
pn_assignment_id => ln_assignment_id,
pv_element_name => lv_element_name1,
pn_element_entry_id =>
ln_element_entry_id1,
pv_errbuf => lv_errbuf1,
pn_retcode => ln_retcode1
);
UPDATE per_analysis_criteria
SET segment18 = ln_element_entry_id1
WHERE id_flex_num = ln_id_flex_num
AND analysis_criteria_id = rec.analysis_criteria_id;
END IF;
PROCEDURE wq_advance_salary_deduction (
errbuf OUT VARCHAR2,
retcode OUT NUMBER
)
IS
ln_element_entry_id NUMBER (15);
lv_errbuf VARCHAR2 (120);
ln_retcode NUMBER (1);
ln_element_type_id NUMBER (15);
ln_counter NUMBER := 0;
ln_sum NUMBER := 0;
ln_input_value_id NUMBER (15);
CURSOR cur_salaray_adv (
pn_element_type_id NUMBER,
pn_input_value_id NUMBER
)
IS
SELECT pee.assignment_id, pee.element_entry_id,
pee.effective_start_date, pee.effective_end_date,
pay_paywsmee_pkg.processed
(pee.element_entry_id,
pee.original_entry_id,
petf.processing_type,
pee.entry_type,
ADD_MONTHS (TRUNC (SYSDATE), -1)
) processed, -- Element Processed?
(SELECT prv.result_value
FROM pay_run_results prr,
pay_run_result_values prv
WHERE element_type_id = pn_element_type_id
AND prr.run_result_id = prv.run_result_id
AND prv.input_value_id = pn_input_value_id
AND prr.element_entry_id = pee.element_entry_id)
pay_value,
-- pay value
(SELECT paaf.assignment_number
FROM per_all_assignments_f paaf
WHERE paaf.assignment_id = pee.assignment_id
AND SYSDATE BETWEEN paaf.effective_start_date
AND paaf.effective_end_date) employee_no
FROM pay_element_entries_f pee, pay_element_types_f petf
WHERE pee.element_type_id = pn_element_type_id
AND pee.element_type_id = petf.element_type_id
AND ADD_MONTHS (TRUNC (SYSDATE), -1)
BETWEEN pee.effective_start_date
AND pee.effective_end_date
AND ADD_MONTHS (TRUNC (SYSDATE), -1)
BETWEEN petf.effective_start_date
AND petf.effective_end_date;
BEGIN
BEGIN
SELECT element_type_id
INTO ln_element_type_id
FROM pay_element_types_f
WHERE SYSDATE BETWEEN effective_start_date AND effective_end_date
AND element_name = 'Salary Advance New';
EXCEPTION
WHEN OTHERS
THEN
--fnd_file.put_line(fnd_file.LOG, 'Element Name: Salary Advance New is
not valid' );
retcode := 2;
raise_application_error( -20001, 'Error in element entry' );
errbuf := 'Check log for Information';
END;
BEGIN
SELECT input_value_id
INTO ln_input_value_id
FROM pay_input_values_f
WHERE element_type_id = ln_element_type_id AND NAME = 'Pay Value';
EXCEPTION
WHEN OTHERS
THEN
fnd_file.put_line (fnd_file.LOG,
'Input Value: Pay Value is not valid'
);
retcode := 2;
raise_application_error( -20001, 'Error in element entry' );
errbuf := 'Check log for Information';
END;
IF rec.processed = 'Y'
THEN
ln_counter := ln_counter + 1;
ln_sum := ln_sum + rec.pay_value;
wq_create_emp_element
(pv_input_value_name1 => 'Amount',
pv_entry_value1 => rec.pay_value,
pv_input_value_name2 => 'Element Entry ID',
pv_entry_value2 =>
rec.element_entry_id,
pd_session_date => TRUNC (SYSDATE),
pn_assignment_id => rec.assignment_id,
pv_element_name => 'Auto Salary Advance
Ded',
pn_element_entry_id => ln_element_entry_id,
pv_errbuf => lv_errbuf,
pn_retcode => ln_retcode
);
IF ln_retcode = 2
THEN
retcode := 2;
errbuf := 'Check log for Information';
fnd_file.put_line
(fnd_file.LOG,
'Error Creating Element for Employee No: '
|| rec.employee_no
);
ELSE
fnd_file.put_line (fnd_file.LOG,
'Employee No: '
|| rec.employee_no
|| ', Pay Value: '
|| rec.pay_value
);
END IF;
END IF;
END LOOP;
IF retcode = 2
THEN
ROLLBACK;
fnd_file.put_line
(fnd_file.LOG,
'Process for Salary Advace Deduction Reverted. Please correct & Rerun
again.'
);
ELSE
COMMIT;
fnd_file.put_line (fnd_file.LOG, 'Total Count: ' || ln_counter);
fnd_file.put_line (fnd_file.LOG, 'Total Amount: ' || ln_sum);
END IF;
EXCEPTION
WHEN OTHERS
THEN
retcode := 2;
fnd_file.put_line
(fnd_file.LOG,
'Program Error: Please Check With System Administrator :)'
);
END wq_advance_salary_deduction;
PROCEDURE wq_insert_education_allowance (
errbuf OUT VARCHAR2,
retcode OUT NUMBER,
pd_run_date DATE
)
IS
--ld_run_date DATE;
ln_id_flex_num NUMBER;
ln_assignment_id NUMBER;
ln_retcode NUMBER;
lv_errbuf VARCHAR2 (240);
ln_element_entry_id NUMBER;
lv_processed VARCHAR2 (1);
ld_session_date DATE;
CURSOR cur_edu_allow
IS
SELECT ppa.person_id, ppa.date_from, ppa.date_to,
ppa.analysis_criteria_id, ppa.last_update_date,
pac.segment13, pac.segment14, pac.segment15, pac.segment16
FROM per_person_analyses ppa, per_analysis_criteria pac
WHERE ppa.id_flex_num = 50328
AND ppa.id_flex_num = pac.id_flex_num
AND ppa.analysis_criteria_id = pac.analysis_criteria_id
AND TRUNC (ppa.last_update_date) >= TRUNC (SYSDATE - 1)
AND segment16 IS NULL;
BEGIN
BEGIN
SELECT id_flex_num
INTO ln_id_flex_num
FROM fnd_id_flex_structures_tl
WHERE id_flex_structure_name = 'Education_Assistance'
AND LANGUAGE = 'US';
EXCEPTION
WHEN OTHERS
THEN
fnd_file.put_line (fnd_file.LOG,
'Invalid Special Info Flex Name');
DBMS_OUTPUT.put_line (SQLERRM);
retcode := 2;
errbuf := 'Error Processing Records';
END;
FOR rec IN cur_edu_allow
LOOP
EXIT WHEN cur_edu_allow%NOTFOUND;
BEGIN
SELECT assignment_id
INTO ln_assignment_id
FROM per_all_assignments_f
WHERE person_id = rec.person_id
AND SYSDATE BETWEEN effective_start_date AND effective_end_date;
EXCEPTION
WHEN OTHERS
THEN
fnd_file.put_line (fnd_file.LOG, 'Invalid Person Id ');
DBMS_OUTPUT.put_line (SQLERRM);
retcode := 2;
errbuf := 'Error Processing Records';
END;
BEGIN
-- check if current month payroll has been processed
SELECT pay_paywsmee_pkg.processed (peef.element_entry_id,
peef.original_entry_id,
petf.processing_type,
peef.entry_type,
TRUNC (SYSDATE)
)
INTO lv_processed
FROM pay_element_entries_f peef, pay_element_types_f petf
WHERE peef.assignment_id = ln_assignment_id
AND TRUNC (SYSDATE) BETWEEN peef.effective_start_date
AND peef.effective_end_date
AND TRUNC (SYSDATE) BETWEEN petf.effective_start_date
AND petf.effective_end_date
AND peef.element_type_id = petf.element_type_id
AND peef.element_type_id = 238;
END;
IF lv_processed = 'Y'
THEN
-- if processed add element to next month
SELECT ADD_MONTHS (TRUNC (SYSDATE), 1)
INTO ld_session_date
FROM DUAL;
ELSE
SELECT TRUNC (SYSDATE)
INTO ld_session_date
FROM DUAL;
END IF;
wq_create_emp_element
(pv_input_value_name1 => 'Tution Fee',
pv_input_value_name2 => 'Books and Note Books',
pv_input_value_name3 => 'Transportation',
pv_entry_value1 => rec.segment13,
pv_entry_value2 => rec.segment14,
pv_entry_value3 => rec.segment15,
pd_session_date => ld_session_date,
pn_assignment_id => ln_assignment_id,
pv_element_name => 'Education Assistance
New',
pn_element_entry_id => ln_element_entry_id,
pv_errbuf => lv_errbuf,
pn_retcode => ln_retcode
);
UPDATE per_analysis_criteria
SET segment16 = ln_element_entry_id
WHERE id_flex_num = ln_id_flex_num
AND analysis_criteria_id = rec.analysis_criteria_id;
IF ln_retcode = 2
THEN
retcode := 2;
errbuf := 'Error Processing Records';
ROLLBACK;
ELSE
COMMIT;
END IF;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
fnd_file.put_line (fnd_file.LOG, 'Error Inserting Element ');
END wq_insert_education_allowance;
PROCEDURE wq_delete_element (pd_run_date DATE, pn_element varchar2, pn_employee
NUMBER)
IS
ld_effective_start_date DATE;
ld_effective_end_date DATE;
lb_delete_warning BOOLEAN;
ln_object_version_number PAY_ELEMENT_ENTRIES_F.OBJECT_VERSION_NUMBER
%TYPE := 1;
ln_assignment_id NUMBER;
ln_element_entry_id NUMBER;
ln_element_type_id NUMBER;
BEGIN
SELECT ppa.assignment_id
INTO ln_assignment_id
FROM per_all_people_f ppf, per_all_assignments_f ppa
WHERE ppf.person_id = ppa.person_id
AND SYSDATE BETWEEN ppf.effective_start_date AND ppf.effective_end_date
AND SYSDATE BETWEEN ppa.effective_start_date AND ppa.effective_end_date
AND ppf.employee_number = pn_employee;
SELECT element_type_id
INTO ln_element_type_id
FROM pay_element_types_f
WHERE SYSDATE BETWEEN effective_start_date AND effective_end_date
AND element_name = pn_element;
SELECT pee.element_entry_id
INTO ln_element_entry_id
FROM pay_element_entries_f pee, pay_element_types_f petf
WHERE pee.element_type_id = ln_element_type_id
AND pee.assignment_id=ln_assignment_id
AND pee.element_type_id = petf.element_type_id
AND pd_run_date BETWEEN pee.effective_start_date AND
pee.effective_end_date
AND pd_run_date BETWEEN petf.effective_start_date AND
petf.effective_end_date;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
dbms_output.put_line(SQLERRM);
dbms_output.put_line('Error Deleting Element Entry');
END wq_delete_element;
PROCEDURE wq_send_mail (
p_to IN VARCHAR2,
p_from IN VARCHAR2,
p_subject IN VARCHAR2,
p_text_msg IN VARCHAR2 DEFAULT NULL,
p_cc IN VARCHAR2 DEFAULT NULL,
p_bcc IN VARCHAR2 DEFAULT NULL,
p_html_msg IN VARCHAR2 DEFAULT NULL,
p_smtp_host IN VARCHAR2,
p_smtp_port IN NUMBER DEFAULT 25
)
AS
l_mail_conn UTL_SMTP.connection;
l_boundary VARCHAR2 (50) := '----=*#abc1234321cba#*=';
PROCEDURE process_recipients (
p_mail_conn IN OUT UTL_SMTP.connection,
p_list IN VARCHAR2
)
AS
l_tab t_split_array;
BEGIN
IF TRIM (p_list) IS NOT NULL
THEN
l_tab := split_text (p_list);
FOR i IN 1 .. l_tab.COUNT
LOOP
UTL_SMTP.rcpt (p_mail_conn, TRIM (l_tab (i)));
END LOOP;
END IF;
END;
BEGIN
l_mail_conn := UTL_SMTP.open_connection (p_smtp_host, p_smtp_port);
UTL_SMTP.helo (l_mail_conn, p_smtp_host);
UTL_SMTP.mail (l_mail_conn, p_from);
process_recipients (l_mail_conn, p_to);
process_recipients (l_mail_conn, p_cc);
process_recipients (l_mail_conn, p_bcc);
UTL_SMTP.open_data (l_mail_conn);
UTL_SMTP.write_data (l_mail_conn,
'Date: '
|| TO_CHAR (SYSDATE, 'DD-MON-YYYY HH24:MI:SS')
|| UTL_TCP.crlf
);
UTL_SMTP.write_data (l_mail_conn, 'To: ' || p_to || UTL_TCP.crlf);
UTL_SMTP.write_data (l_mail_conn,
'--' || l_boundary || '--' || UTL_TCP.crlf
);
UTL_SMTP.close_data (l_mail_conn);
UTL_SMTP.quit (l_mail_conn);
END wq_send_mail;
lv_html VARCHAR2(32767);
ln_date_from NUMBER;
BEGIN
BEGIN
EXCEPTION
WHEN OTHERS THEN
ln_date_from:=0;
END;
lv_html := '<html>
<body lang=EN-US>
<p><i> *** This is an automatically generated email, please do not reply
***</i></p>
<p></p>
<div><span>
</span></div>
</div>
</body>
</html>';
lv_html VARCHAR2(32767);
--ln_date_from NUMBER;
CURSOR cur_email_list
IS
SELECT emp_name || ' (' || emp_no || ')' emp_name, emp_no, parent_dept,
element_name, creation_date, email,
'QAR ' || TRIM (TO_CHAR (amount, '999,999,999.99')) amount,
run_result_id
FROM woqod_employees_payments_v1
WHERE run_result_id NOT IN (SELECT run_result_id
FROM wq_employee_payment_temp);
BEGIN
lv_html := '<html>
<body lang=EN-US>
<p><i> *** This is an automatically generated email, please do not reply
***</i></p>
<p></p>
<div><span>
</span></div>
</div>
</body>
</html>';
/
***********************************************************************************
/
-- --------------------------------------------------------------------------
-- Name : Code to send email
-- Author : fdokku
-- Description : A package to hold string utilities. Used in wq_send_mail
procedure above
-- Requirements :
-- Ammedments :
-- --------------------------------------------------------------------------
-- DO NOT CHANGE CODE BELOW
-- ----------------------------------------------------------------------------
FUNCTION split_text (p_text IN CLOB,
p_delimeter IN VARCHAR2 DEFAULT ',')
RETURN t_split_array IS
-- ----------------------------------------------------------------------------
l_array t_split_array := t_split_array();
l_text CLOB := p_text;
l_idx NUMBER;
BEGIN
l_array.delete;
END wq_hr_element_interface;
/