CREATE OR REPLACE PROCEDURE xxmto_oe_pick_confirm_prc (
p_out_chr_errbuf OUT NOCOPY VARCHAR2,
p_out_num_retcode OUT NOCOPY VARCHAR2,
p_in_chr_ou IN VARCHAR2,
p_in_num_ordernum IN NUMBER,
p_in_num_linenum IN NUMBER,
p_in_chr_errorflag IN VARCHAR2
)
IS
/*******************************************************************************
* Filename : XXMTO_OE_PICK_CONFIRM_PRC.prc *
* *
* Type : PACKAGE SPEC *
* *
* Author : XXXX *
* *
* NAME : XXMTO_OE_PICK_CONFIRM_PRC *
* *
* PURPOSE : This procedure will call pick confirm api *
* *
* PARAMETERS : p_out_chr_errbuf OUT -- Standard SRS *
* p_out_num_retcode OUT -- Standard SRS *
* p_in_chr_ou IN *
* p_in_num_ordernum IN *
* p_in_num_linenum IN *
* p_in_chr_errorflag IN *
* *
* AUTHOR DATE VERSION SC# DESCRIPTION *
********************************************************************************
* XXXX XX-XXX-XXXX 1.0 Initial Version *
*******************************************************************************/
-- Local Variables
l_num_organization_id hr_all_organization_units.organization_id%TYPE
:= NULL;
l_num_header_id oe_order_headers_all.header_id%TYPE := NULL;
l_num_line_number oe_order_lines_all.line_number%TYPE := NULL;
x_return_status VARCHAR2 (10);
x_msg_count NUMBER;
x_msg_data VARCHAR2 (2000);
l_trohdr_rec inv_move_order_pub.trohdr_rec_type;
l_trohdr_val_rec inv_move_order_pub.trohdr_val_rec_type;
l_trolin_tbl inv_move_order_pub.trolin_tbl_type;
l_trolin_val_tbl inv_move_order_pub.trolin_val_tbl_type;
x_trolin_tbl inv_move_order_pub.trolin_tbl_type;
x_trolin_val_tbl inv_move_order_pub.trolin_val_tbl_type;
x_trohdr_rec inv_move_order_pub.trohdr_rec_type;
x_trohdr_val_rec inv_move_order_pub.trohdr_val_rec_type;
l_mold_tbl inv_mo_line_detail_util.g_mmtt_tbl_type;
l_chr_error_flag VARCHAR2 (2) := 'N';
l_chr_error_msg VARCHAR2 (2000) := NULL;
l_chr_errbuf VARCHAR2 (3000) := NULL;
l_num_retcode NUMBER := NULL;
l_num_user_id NUMBER;
l_num_resp_id NUMBER;
l_num_resp_appl_id NUMBER;
l_num_record_count NUMBER;
l_num_global_user_id NUMBER := fnd_global.user_id;
l_num_last_updated NUMBER;
-- Cursor to fetch Staging table details
CURSOR cur_pick_confirm_details (
c_num_ord_num NUMBER,
c_num_line_num NUMBER,
c_chr_operating_unit VARCHAR2,
c_chr_error_flag VARCHAR2
)
IS
SELECT operating_unit, order_num, line_number, error_flag, ROWID
FROM xxmto.xxmto_oe_pick_confirm_stg
WHERE ( operating_unit = NVL (c_chr_operating_unit, operating_unit)
OR operating_unit IS NULL
)
AND order_num = NVL (c_num_ord_num, order_num)
AND ( line_number = NVL (c_num_line_num, line_number)
OR line_number IS NULL
)
AND error_flag = NVL (c_chr_error_flag, error_flag)
AND process_flag <> 'PS';
-- Cursor to fetch move order details
CURSOR cur_sales_order_details (
c_num_ord_num NUMBER,
c_num_line_num NUMBER,
c_num_org_id NUMBER
)
IS
SELECT ooha.order_number order_number, ooha.orig_sys_document_ref,
ooha.header_id order_header_id, oola.line_id order_line_id,
oola.line_number line_number, mtrlv.request_number mo_number,
mtrlv.header_id mo_header_id, mtrlv.line_id mo_line_id,
mtrlv.move_order_type, mtrlv.quantity
FROM apps.oe_order_headers_all ooha,
apps.oe_order_lines_all oola,
apps.mtl_txn_request_lines_v mtrlv
WHERE 1 = 1
AND ooha.header_id = oola.header_id
AND mtrlv.txn_source_line_id = oola.line_id
AND mtrlv.line_status IN (3, 7)
AND ooha.order_number = c_num_ord_num
AND oola.line_number = NVL (c_num_line_num, oola.line_number)
AND ooha.org_id = NVL (c_num_org_id, ooha.org_id);
/*******************************************************************************
* NAME : xxmto_email_prc *
* *
* PURPOSE : This procedure will pass subject, body and send email *
* *
* PARAMETERS : p_out_chr_errbuf OUT -- Standard SRS *
* p_out_num_retcode OUT -- Standard SRS *
* p_in_chr_subject IN *
* p_in_lon_bodytext IN *
* *
*******************************************************************************/
PROCEDURE xxmto_email_prc (
p_out_chr_errbuf OUT NOCOPY VARCHAR2,
p_out_num_retcode OUT NOCOPY VARCHAR2,
p_in_chr_subject IN VARCHAR2,
p_in_chr_bodytext IN VARCHAR2
)
IS
--Local Variables
l_chr_error_mesasge VARCHAR2 (2000);
l_num_retcode NUMBER;
l_chr_from_email VARCHAR2 (200);
l_chr_to_email VARCHAR2 (200);
l_chr_cc_email VARCHAR2 (200);
l_chr_bcc_email VARCHAR2 (200);
BEGIN
-- Fetching the email id's to send email when program failed
BEGIN
SELECT attribute1, attribute2, attribute3,
attribute4
INTO l_chr_from_email, l_chr_to_email, l_chr_cc_email,
l_chr_bcc_email
FROM fnd_lookup_values
WHERE lookup_type = 'XXMTO_ALL_INTERFACE_DETAILS'
AND meaning = 'Order Pick Confirm Interface'
AND LANGUAGE = 'US'
AND enabled_flag = 'Y'
AND attribute_category = 'Email';
EXCEPTION
WHEN OTHERS
THEN
fnd_file.put_line (fnd_file.LOG, 'Error in Email Lookup Setup');
p_out_num_retcode := 1;
p_out_chr_errbuf := 'Error in Email Lookup Setup';
END;
BEGIN
xxmto_utl_smtp_email_pkg.xxmto_send_email_prc
(p_out_chr_errbuf => l_chr_error_mesasge,
p_out_num_retcode => l_num_retcode,
p_in_chr_sender => l_chr_from_email,
p_in_chr_recipients => l_chr_to_email,
p_in_chr_subject => p_in_chr_subject,
p_in_chr_cc => l_chr_cc_email,
p_in_chr_bcc => l_chr_bcc_email,
p_in_clb_message => p_in_chr_bodytext
);
IF l_num_retcode != 0 OR l_num_retcode IS NOT NULL
THEN
fnd_file.put_line
(fnd_file.LOG,
'Error in Sending Mail Program Completion : '
|| l_chr_error_mesasge
);
p_out_chr_errbuf :=
'Error in Sending Mail Program Completion : '
|| l_chr_error_mesasge;
p_out_num_retcode := l_num_retcode;
END IF;
EXCEPTION
WHEN OTHERS
THEN
fnd_file.put_line (fnd_file.LOG,
'Unexpected Error in Sending Email : '
|| SQLERRM
);
p_out_chr_errbuf :=
'Unexpected Error in Sending Email : ' || SQLERRM;
p_out_num_retcode := 1;
END;
EXCEPTION
WHEN OTHERS
THEN
fnd_file.put_line (fnd_file.LOG,
'Unexpected Error in xxmto_email_prc: ' || SQLERRM
);
p_out_num_retcode := 1;
p_out_chr_errbuf := 'WARNING';
END xxmto_email_prc;
BEGIN
/*BEGIN
l_num_user_id:= NULL;
SELECT user_id
INTO l_num_user_id
FROM fnd_user
WHERE user_id = fnd_global.user_id;
EXCEPTION
WHEN OTHERS
THEN
fnd_file.put_line (fnd_file.LOG,
'Unexpected Error in fetching user id: '
|| SQLERRM
);
END;
IF (l_num_user_id < 0 OR l_num_user_id IS NULL)
THEN
BEGIN
l_num_user_id:= NULL;
SELECT user_id
INTO l_num_user_id
FROM fnd_user
WHERE user_name = 'XXMTO_INTERFACE_USER';
EXCEPTION
WHEN OTHERS
THEN
fnd_file.put_line (fnd_file.LOG,
'Unexpected Error in fetching user id: '
|| SQLERRM
);
END;
END IF;*/
BEGIN
SELECT TO_NUMBER (attribute1),
TO_NUMBER (attribute2),
TO_NUMBER (attribute3)
INTO l_num_user_id,
l_num_resp_id,
l_num_resp_appl_id
FROM fnd_lookup_values
WHERE enabled_flag = 'Y'
AND lookup_type = 'XXMTO_ALL_INTF_APPS_DETAILS'
AND attribute_category = 'Apps'
AND meaning = 'Order Pick Confirm Interface';
EXCEPTION
WHEN OTHERS
THEN
fnd_file.put_line (fnd_file.LOG,'Apps Initialize is not defined');
xxmto_email_prc
(l_chr_errbuf,
l_num_retcode,
'ATTENTION: Action Required for Error in Order Pick Confirm Interface for Order Number - '
|| p_in_num_ordernum,
'Hello,'
|| '<br>'
|| '<br>'
|| 'Error occured for Order Number : '
|| p_in_num_ordernum
|| '<br>'
|| 'Error Message :'
|| CHR (9)
|| 'Apps Initialize is not defined'
|| '<br>'
|| '<br>'
|| '<br>'
|| '<br>'
|| '<br>'
|| '**This is system generated mail. Please do not reply to the mail.'
);
p_out_chr_errbuf := 'Warning';
p_out_num_retcode := 1;
END;
IF l_num_global_user_id < 0
THEN
l_num_last_updated := l_num_user_id;
ELSE
l_num_last_updated := l_num_global_user_id;
END IF;
-- INITIALIZATION REQUIRED FOR R12
BEGIN
IF fnd_global.session_id = 0 OR fnd_global.session_id = -1
THEN
fnd_global.apps_initialize (l_num_last_updated,
l_num_resp_id,
l_num_resp_appl_id);
END IF;
END;
FOR rec_pick_confirm_details IN
cur_pick_confirm_details (p_in_num_ordernum,
p_in_num_linenum,
p_in_chr_ou,
p_in_chr_errorflag
)
LOOP
--fnd_file.put_line(fnd_file.log,'In cursor') ;
-- Validation of Operating Unit
IF rec_pick_confirm_details.operating_unit IS NOT NULL
THEN
BEGIN
SELECT organization_id
INTO l_num_organization_id
FROM hr_all_organization_units
WHERE UPPER (NAME) =
UPPER (rec_pick_confirm_details.operating_unit)
AND TRUNC (SYSDATE) BETWEEN TRUNC (date_from)
AND TRUNC (NVL (date_to, SYSDATE));
EXCEPTION
WHEN NO_DATA_FOUND
THEN
l_chr_error_flag := 'E';
l_chr_error_msg :=
'Validation failed at Operating unit, '
|| 'Operating doesnot exist: '
|| '-'
|| rec_pick_confirm_details.operating_unit;
fnd_file.put_line (fnd_file.LOG, l_chr_error_msg);
WHEN OTHERS
THEN
l_chr_error_flag := 'E';
l_chr_error_msg :=
'Unexpected Error in Validation of Operating unit : '
|| rec_pick_confirm_details.operating_unit
|| SQLERRM;
fnd_file.put_line (fnd_file.LOG, l_chr_error_msg);
END;
END IF;
--fnd_file.put_line(fnd_file.log,'In l_num_organization_id') ;
-- IF l_num_organization_id IS NOT NULL
-- THEN
-- Validation of Order Number
BEGIN
SELECT header_id
INTO l_num_header_id
FROM oe_order_headers_all
WHERE order_number = rec_pick_confirm_details.order_num
AND org_id = NVL (l_num_organization_id, org_id);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
l_chr_error_flag := 'E';
l_chr_error_msg :=
'Validation failed at Order Number,'
|| 'Order Number doesnot exist: '
|| rec_pick_confirm_details.operating_unit
|| ' - '
|| rec_pick_confirm_details.order_num;
fnd_file.put_line (fnd_file.LOG, l_chr_error_msg);
WHEN OTHERS
THEN
l_chr_error_flag := 'E';
l_chr_error_msg :=
'Unexpected Error in Validation of Order Number: '
|| rec_pick_confirm_details.order_num
|| SQLERRM;
fnd_file.put_line (fnd_file.LOG, l_chr_error_msg);
END;
IF l_num_header_id IS NOT NULL
THEN
IF rec_pick_confirm_details.line_number IS NOT NULL
THEN
-- Validation of Order Line Number
BEGIN
SELECT line_number
INTO l_num_line_number
FROM oe_order_lines_all
WHERE header_id = l_num_header_id
AND org_id = NVL (l_num_organization_id, org_id)
AND line_number = rec_pick_confirm_details.line_number;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
l_chr_error_flag := 'E';
l_chr_error_msg :=
'Validation failed at Order line Number, '
|| 'Order line Number doesnot exist :'
|| rec_pick_confirm_details.operating_unit
|| ' - '
|| rec_pick_confirm_details.order_num
|| ' - '
|| rec_pick_confirm_details.line_number;
fnd_file.put_line (fnd_file.LOG, l_chr_error_msg);
WHEN OTHERS
THEN
l_chr_error_flag := 'E';
l_chr_error_msg :=
'Validation failed at Order line Number:'
|| rec_pick_confirm_details.line_number
|| SQLERRM;
END;
END IF;
END IF;
-- END IF;
IF l_chr_error_flag = 'E'
THEN
fnd_file.put_line (fnd_file.LOG,
'Paramter Validation failed '
|| l_chr_error_flag
|| l_chr_error_msg
);
UPDATE xxmto.xxmto_oe_pick_confirm_stg
SET process_flag = 'VE',
error_flag = 'Y',
error_msg = l_chr_error_msg,
last_updated_by = l_num_last_updated,
last_update_date = SYSDATE,
last_updated_login = fnd_global.login_id,
request_id = fnd_global.conc_request_id
WHERE ROWID = rec_pick_confirm_details.ROWID;
fnd_file.put_line (fnd_file.LOG, 'Calling xxmto_email_prc');
xxmto_email_prc
(l_chr_errbuf,
l_num_retcode,
'ATTENTION: Action Required for Error in Order Pick Confirm Interface for Ebs Order Number - '
|| rec_pick_confirm_details.order_num,
'Hello,'
|| '<br>'
|| '<br>'
|| 'Error occured for Order Number : '
|| rec_pick_confirm_details.order_num
|| '<br>'
|| 'Error Message :'
|| CHR (9)
|| l_chr_error_msg
|| '<br>'
|| '<br>'
|| '<br>'
|| '<br>'
|| '<br>'
|| '**This is system generated mail. Please do not reply to the mail.'
);
fnd_file.put_line (fnd_file.LOG,
'xxmto_email_prc completed'
|| l_num_retcode
|| '-'
|| l_chr_errbuf
);
p_out_chr_errbuf := 'ERROR';
p_out_num_retcode := 2;
END IF;
IF l_chr_error_flag <> 'E'
THEN
l_num_record_count := 0;
FOR rec_sales_order_details IN
cur_sales_order_details (rec_pick_confirm_details.order_num,
rec_pick_confirm_details.line_number,
l_num_organization_id
)
LOOP
l_num_record_count := l_num_record_count + 1;
l_trolin_tbl (1).header_id :=
rec_sales_order_details.mo_header_id;
l_trolin_tbl (1).line_id := rec_sales_order_details.mo_line_id;
l_trolin_tbl (1).created_by := l_num_user_id;
l_trolin_tbl (1).creation_date := SYSDATE;
l_trolin_tbl (1).last_updated_by := l_num_user_id;
l_trolin_tbl (1).last_update_date := SYSDATE;
l_trolin_tbl (1).last_update_login := fnd_global.login_id;
inv_pick_wave_pick_confirm_pub.pick_confirm
(p_api_version_number => 1.0,
p_init_msg_list => fnd_api.g_true,
p_commit => fnd_api.g_true,
x_return_status => x_return_status,
x_msg_count => x_msg_count,
x_msg_data => x_msg_data,
p_move_order_type => 3,
p_transaction_mode => 2,
p_trolin_tbl => l_trolin_tbl,
p_mold_tbl => l_mold_tbl,
x_mmtt_tbl => l_mold_tbl,
x_trolin_tbl => l_trolin_tbl
);
IF (x_return_status <> fnd_api.g_ret_sts_success)
THEN
fnd_file.put_line
(fnd_file.LOG,
'Pick Confirm API return status and log:'
|| x_return_status
|| ':'
|| x_msg_data
);
UPDATE xxmto.xxmto_oe_pick_confirm_stg
SET process_flag = 'PE',
error_flag = 'Y',
error_msg = x_msg_data,
last_updated_by = l_num_last_updated,
last_update_date = SYSDATE,
last_updated_login = fnd_global.login_id,
request_id = fnd_global.conc_request_id
WHERE ROWID = rec_pick_confirm_details.ROWID;
fnd_file.put_line (fnd_file.LOG, 'Calling xxmto_email_prc');
xxmto_email_prc
(l_chr_errbuf,
l_num_retcode,
'ATTENTION: Action Required for Error in Order Pick Confirm Interface for Order Number - '
|| rec_sales_order_details.order_number,
'Hello,'
|| '<br>'
|| '<br>'
|| 'Error occured for Order Number : '
|| rec_sales_order_details.order_number
|| '<br>'
|| 'Error Message :'
|| CHR (9)
|| x_msg_data
|| '<br>'
|| '<br>'
|| '<br>'
|| '<br>'
|| '<br>'
|| '**This is system generated mail. Please do not reply to the mail.'
);
fnd_file.put_line (fnd_file.LOG,
'xxmto_email_prc completed'
|| l_num_retcode
|| '-'
|| l_chr_errbuf
);
p_out_chr_errbuf := 'ERROR';
p_out_num_retcode := 2;
ELSE
fnd_file.put_line
(fnd_file.LOG,
'Pick Confirm API return status and log:'
|| x_return_status
|| ':'
|| x_msg_data
);
UPDATE xxmto.xxmto_oe_pick_confirm_stg
SET process_flag = 'PS',
error_flag = 'N',
error_msg = NULL,
last_updated_by = l_num_last_updated,
last_update_date = SYSDATE,
last_updated_login = fnd_global.login_id,
request_id = fnd_global.conc_request_id
WHERE ROWID = rec_pick_confirm_details.ROWID;
p_out_chr_errbuf := 'SUCCESS';
p_out_num_retcode := 0;
END IF;
END LOOP;
IF l_num_record_count = 0
THEN
UPDATE xxmto.xxmto_oe_pick_confirm_stg
SET process_flag = 'PE',
error_flag = 'Y',
error_msg =
'Move order details not found for this order number',
last_updated_by = l_num_last_updated,
last_update_date = SYSDATE,
last_updated_login = fnd_global.login_id,
request_id = fnd_global.conc_request_id
WHERE ROWID = rec_pick_confirm_details.ROWID;
fnd_file.put_line
(fnd_file.LOG,
'Move order details not found for this order number'
|| rec_pick_confirm_details.order_num
);
xxmto_email_prc
(l_chr_errbuf,
l_num_retcode,
'ATTENTION: Action Required for Error in Order Pick Confirm Interface for Order Number - '
|| rec_pick_confirm_details.order_num,
'Hello,'
|| '<br>'
|| '<br>'
|| 'Move order details not found for this order number'
|| rec_pick_confirm_details.order_num
|| '<br>'
|| 'Error Message :'
|| 'Move order details not found'
|| '<br>'
|| '<br>'
|| '<br>'
|| '<br>'
|| '<br>'
|| '**This is system generated mail. Please do not reply to the mail.'
);
fnd_file.put_line (fnd_file.LOG,
'xxmto_email_prc completed'
|| l_num_retcode
|| '-'
|| l_chr_errbuf
);
p_out_chr_errbuf := 'WARNING';
p_out_num_retcode := 1;
END IF;
END IF;
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
fnd_file.put_line
(fnd_file.LOG,
'Unexpected Error in Order Pick Confirm Interface: '
|| SQLERRM
);
l_chr_error_msg := SQLERRM;
UPDATE xxmto.xxmto_oe_pick_confirm_stg
SET process_flag = 'VE',
error_flag = 'Y',
error_msg =
'Unexpected Error in Order Pick Confirm Interface: '
|| l_chr_error_msg,
last_updated_by = l_num_last_updated,
last_update_date = SYSDATE,
last_updated_login = fnd_global.login_id,
request_id = fnd_global.conc_request_id
WHERE order_num = NVL (p_in_num_ordernum, order_num)
AND UPPER (operating_unit) =
UPPER (NVL (p_in_chr_ou, operating_unit))
AND NVL (line_number, 1) = NVL (p_in_num_linenum, 1)
AND process_flag <> 'PS'
AND error_flag = NVL (p_in_chr_errorflag, error_flag);
fnd_file.put_line (fnd_file.LOG, 'Calling xxmto_email_prc');
xxmto_email_prc
(l_chr_errbuf,
l_num_retcode,
'ATTENTION: Action Required for Error in Order Pick Confirm Interface- ',
'Hello,'
|| '<br>'
|| '<br>'
|| 'Unexpected Error in Order Pick Confirm Interface: '
|| '<br>'
|| 'Error Message :'
|| CHR (9)
|| l_chr_error_msg
|| '<br>'
|| '<br>'
|| '<br>'
|| '<br>'
|| '<br>'
|| '**This is system generated mail. Please do not reply to the mail.'
);
fnd_file.put_line (fnd_file.LOG,
'xxmto_email_prc completed'
|| l_num_retcode
|| '-'
|| l_chr_errbuf
);
p_out_chr_errbuf := 'ERROR';
p_out_num_retcode := 2;
COMMIT;
END xxmto_oe_pick_confirm_prc;
/
SHOW ERRORS;
GRANT EXECUTE ON xxmto_oe_pick_confirm_prc TO xxmtowsp;
http://masteroracleapps.blogspot.in/2015/04/email-sending-program-by-using-utlsmtp.html