Item Workflow
Item Workflow
xxdnl_item_creation_pkg
IS
cursor c_getcreator is
select user_name from fnd_user where user_id in
(select created_by from xxdnl_item_req_hdr where item_req_id =
p_item_request_id);
CURSOR c_Get_type
is
select operating_unit,ITEM_CLASS from xxdnl_item_req_hdr where item_req_id =
p_item_request_id;
ln_count_openwf number;
BEGIN
OPEN c_Get_type;
FETCH c_Get_type INTO lv_ou_name,lv_type;
CLOSE c_Get_type;
OPEN c_getapprovers(lv_ou_name,lv_type);
FETCH c_getapprovers
INTO lv_approver1, lv_approver2, lv_approver3;
CLOSE c_getapprovers;
OPEN c_getcreator;
FETCH c_getcreator INTO lv_creator ;
CLOSE c_getcreator;
end if;
end if;
end if;
OPEN c_get_open_notification;
fetch c_get_open_notification into ln_count_openwf ;
close c_get_open_notification;
IF ln_count_openwf = 0 THEN
SELECT XXDNL_ITEM_WORKFLOW_SEQ.NEXTVAL
INTO ln_seq
FROM DUAL;
BEGIN
UPDATE xxdnl_item_req_hdr cp
SET cp.item_key = l_itemkey,
cp.item_type = l_itemtype
WHERE cp.item_req_id = p_item_request_id;
COMMIT;
END;
BEGIN
UPDATE xxdnl_item_req_hdr cp
SET APPROVER1_STATUS = NULL,
APPROVER1_DATE = NULL,
APPROVER1_COMMENTS = NULL,
APPROVER2_STATUS = NULL,
APPROVER2_DATE = NULL,
APPROVER2_COMMENTS = NULL,
APPROVER3_STATUS = NULL,
APPROVER3_DATE = NULL,
APPROVER3_COMMENTS = NULL
WHERE cp.item_req_id = p_item_request_id;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
NULL;
END ;
/*
select count(1) into
ln_role_count
from apps.wf_local_roles
where name = lv_file_note;
IF ln_role_count = 0 THEN
wf_directory.adduserstoadhocrole(role_name=> lv_file_note,
role_users=> lv_role_users );
*/
wf_engine.setitemattrtext
(itemtype => l_itemtype,
itemkey => l_itemkey,
aname => 'FS_NOTIF',
avalue =>
'PLSQL:xxdnl_item_creation_pkg.get_notif/'
|| p_item_request_id
|| ':'
|| l_itemkey
|| ':'
|| '&'
|| '#NID'
);
---Start attachment
END launch_workflow;
PROCEDURE approver1_approve (
itemtype IN VARCHAR2,
itemkey IN VARCHAR2,
actid IN NUMBER,
funcmode IN VARCHAR2,
RESULT IN OUT VARCHAR2
)
IS
/*V_CPXID atl_capex_hdr_all.CAPEX_ID%TYPE;
V_MGR_APP atl_capex_hdr_all.PROJECT_LEADER_NAME%TYPE;
V_MGR_WF_NOTE atl_capex_hdr_all.PROJECT_LEADER_MSG%TYPE;*/
CURSOR mgr_wf_note (p_filenote_id NUMBER)
IS
SELECT SUBSTR (b.text_value, 1, 1000) --21460
FROM wf_notifications a,
wf_notification_attributes b,
xxdnl_item_req_hdr c
WHERE a.notification_id = b.notification_id
AND a.item_key = c.item_key
AND a.MESSAGE_TYPE = 'DNLITMAP'
AND b.NAME = 'WF_NOTE'
AND a.status IN ('CLOSED', 'OPEN')
AND a.message_name = 'MSG_APPROVER1'
AND c.item_req_id = p_filenote_id;
---Start
----End
ln_filenote_id NUMBER;
lv_mgr_name VARCHAR2 (240);
v_mgr_wf_note VARCHAR2 (4000);
ln_status_cnt NUMBER;
BEGIN
ln_filenote_id :=
wf_engine.getitemattrnumber (itemtype => itemtype,
itemkey => itemkey,
aname => 'ITEM_REQ_ID'
);
BEGIN
OPEN c_get_status(ln_filenote_id);
FETCH c_get_status INTO ln_status_cnt;
CLOSE c_get_status;
END;
BEGIN
OPEN mgr_wf_note (ln_filenote_id);
FETCH mgr_wf_note
INTO v_mgr_wf_note;
CLOSE mgr_wf_note;
COMMIT;
END;
IF ln_status_cnt = 0 THEN
UPDATE xxdnl_item_req_hdr h
SET STATUS = 'APPROVED'
WHERE h.item_req_id = ln_filenote_id;
COMMIT;
END IF;
RESULT := 'COMPLETED:Y';
ELSE
RESULT := 'COMPLETED:N';
END IF;
--RESULT := 'COMPLETED:Y';
END;
END;
PROCEDURE approver1_reject (
itemtype IN VARCHAR2,
itemkey IN VARCHAR2,
actid IN NUMBER,
funcmode IN VARCHAR2,
RESULT IN OUT VARCHAR2
)
IS
/*V_CPXID atl_capex_hdr_all.CAPEX_ID%TYPE;
V_MGR_APP atl_capex_hdr_all.PROJECT_LEADER_NAME%TYPE;
V_MGR_WF_NOTE atl_capex_hdr_all.PROJECT_LEADER_MSG%TYPE;*/
CURSOR mgr_wf_note (p_filenote_id NUMBER)
IS
SELECT SUBSTR (b.text_value, 1, 1000) --21460
FROM wf_notifications a,
wf_notification_attributes b,
xxdnl_item_req_hdr c
WHERE a.notification_id = b.notification_id
AND a.item_key = c.item_key
AND a.MESSAGE_TYPE = 'DNLITMAP'
AND b.NAME = 'WF_NOTE'
AND a.status IN ('CLOSED', 'OPEN')
AND a.message_name = 'MSG_APPROVER1'
AND c.item_req_id = p_filenote_id;
---Start
---End
ln_filenote_id NUMBER;
lv_mgr_name VARCHAR2 (240);
v_mgr_wf_note VARCHAR2 (4000);
BEGIN
ln_filenote_id :=
wf_engine.getitemattrnumber (itemtype => itemtype,
itemkey => itemkey,
aname => 'ITEM_REQ_ID'
);
BEGIN
OPEN mgr_wf_note (ln_filenote_id);
FETCH mgr_wf_note
INTO v_mgr_wf_note;
CLOSE mgr_wf_note;
COMMIT;
END;
RESULT := 'COMPLETED:Y';
ELSE
RESULT := 'COMPLETED:N';
END IF;
--RESULT := 'COMPLETED:Y';
END;
END;
PROCEDURE approver2_approve (
itemtype IN VARCHAR2,
itemkey IN VARCHAR2,
actid IN NUMBER,
funcmode IN VARCHAR2,
RESULT IN OUT VARCHAR2
)
IS
/*V_CPXID atl_capex_hdr_all.CAPEX_ID%TYPE;
V_MGR_APP atl_capex_hdr_all.PROJECT_LEADER_NAME%TYPE;
V_MGR_WF_NOTE atl_capex_hdr_all.PROJECT_LEADER_MSG%TYPE;*/
CURSOR mgr_wf_note (p_filenote_id NUMBER)
IS
SELECT SUBSTR (b.text_value, 1, 1000) --21460
FROM wf_notifications a,
wf_notification_attributes b,
xxdnl_item_req_hdr c
WHERE a.notification_id = b.notification_id
AND a.item_key = c.item_key
AND a.MESSAGE_TYPE = 'DNLITMAP'
AND b.NAME = 'WF_NOTE'
AND a.status IN ('CLOSED', 'OPEN')
AND a.message_name = 'MSG_APPROVER2'
AND c.item_req_id = p_filenote_id;
---Start
----End
ln_filenote_id NUMBER;
lv_mgr_name VARCHAR2 (240);
v_mgr_wf_note VARCHAR2 (4000);
ln_status_cnt NUMBER;
BEGIN
ln_filenote_id :=
wf_engine.getitemattrnumber (itemtype => itemtype,
itemkey => itemkey,
aname => 'ITEM_REQ_ID'
);
BEGIN
OPEN c_get_status(ln_filenote_id);
FETCH c_get_status INTO ln_status_cnt;
CLOSE c_get_status;
END;
BEGIN
OPEN mgr_wf_note (ln_filenote_id);
FETCH mgr_wf_note
INTO v_mgr_wf_note;
CLOSE mgr_wf_note;
COMMIT;
END;
IF ln_status_cnt = 0 THEN
UPDATE xxdnl_item_req_hdr h
SET STATUS = 'APPROVED'
WHERE h.item_req_id = ln_filenote_id;
COMMIT;
END IF;
RESULT := 'COMPLETED:Y';
ELSE
RESULT := 'COMPLETED:N';
END IF;
--RESULT := 'COMPLETED:Y';
END;
END;
PROCEDURE approver2_reject (
itemtype IN VARCHAR2,
itemkey IN VARCHAR2,
actid IN NUMBER,
funcmode IN VARCHAR2,
RESULT IN OUT VARCHAR2
)
IS
/*V_CPXID atl_capex_hdr_all.CAPEX_ID%TYPE;
V_MGR_APP atl_capex_hdr_all.PROJECT_LEADER_NAME%TYPE;
V_MGR_WF_NOTE atl_capex_hdr_all.PROJECT_LEADER_MSG%TYPE;*/
CURSOR mgr_wf_note (p_filenote_id NUMBER)
IS
SELECT SUBSTR (b.text_value, 1, 1000) --21460
FROM wf_notifications a,
wf_notification_attributes b,
xxdnl_item_req_hdr c
WHERE a.notification_id = b.notification_id
AND a.item_key = c.item_key
AND a.MESSAGE_TYPE = 'DNLITMAP'
AND b.NAME = 'WF_NOTE'
AND a.status IN ('CLOSED', 'OPEN')
AND a.message_name = 'MSG_APPROVER2'
AND c.item_req_id = p_filenote_id;
---Start
---End
ln_filenote_id NUMBER;
lv_mgr_name VARCHAR2 (240);
v_mgr_wf_note VARCHAR2 (4000);
BEGIN
ln_filenote_id :=
wf_engine.getitemattrnumber (itemtype => itemtype,
itemkey => itemkey,
aname => 'ITEM_REQ_ID'
);
BEGIN
OPEN mgr_wf_note (ln_filenote_id);
FETCH mgr_wf_note
INTO v_mgr_wf_note;
CLOSE mgr_wf_note;
COMMIT;
END;
RESULT := 'COMPLETED:Y';
ELSE
RESULT := 'COMPLETED:N';
END IF;
--RESULT := 'COMPLETED:Y';
END;
END;
-----------------------------------------------------------------------------------
-------------------------------------------
PROCEDURE approver3_approve (
itemtype IN VARCHAR2,
itemkey IN VARCHAR2,
actid IN NUMBER,
funcmode IN VARCHAR2,
RESULT IN OUT VARCHAR2
)
IS
/*V_CPXID atl_capex_hdr_all.CAPEX_ID%TYPE;
V_MGR_APP atl_capex_hdr_all.PROJECT_LEADER_NAME%TYPE;
V_MGR_WF_NOTE atl_capex_hdr_all.PROJECT_LEADER_MSG%TYPE;*/
CURSOR mgr_wf_note (p_filenote_id NUMBER)
IS
SELECT SUBSTR (b.text_value, 1, 1000) --21460
FROM wf_notifications a,
wf_notification_attributes b,
xxdnl_item_req_hdr c
WHERE a.notification_id = b.notification_id
AND a.item_key = c.item_key
AND a.MESSAGE_TYPE = 'DNLITMAP'
AND b.NAME = 'WF_NOTE'
AND a.status IN ('CLOSED', 'OPEN')
AND a.message_name = 'MSG_APPROVER3'
AND c.item_req_id = p_filenote_id;
---Start
----End
ln_filenote_id NUMBER;
lv_mgr_name VARCHAR2 (240);
v_mgr_wf_note VARCHAR2 (4000);
ln_status_cnt NUMBER;
BEGIN
ln_filenote_id :=
wf_engine.getitemattrnumber (itemtype => itemtype,
itemkey => itemkey,
aname => 'ITEM_REQ_ID'
);
BEGIN
OPEN c_get_status(ln_filenote_id);
FETCH c_get_status INTO ln_status_cnt;
CLOSE c_get_status;
END;
BEGIN
OPEN mgr_wf_note (ln_filenote_id);
FETCH mgr_wf_note
INTO v_mgr_wf_note;
CLOSE mgr_wf_note;
COMMIT;
END;
IF ln_status_cnt = 0 THEN
UPDATE xxdnl_item_req_hdr h
SET STATUS = 'APPROVED'
WHERE h.item_req_id = ln_filenote_id;
COMMIT;
END IF;
RESULT := 'COMPLETED:Y';
ELSE
RESULT := 'COMPLETED:N';
END IF;
--RESULT := 'COMPLETED:Y';
END;
END;
PROCEDURE approver3_reject (
itemtype IN VARCHAR2,
itemkey IN VARCHAR2,
actid IN NUMBER,
funcmode IN VARCHAR2,
RESULT IN OUT VARCHAR2
)
IS
/*V_CPXID atl_capex_hdr_all.CAPEX_ID%TYPE;
V_MGR_APP atl_capex_hdr_all.PROJECT_LEADER_NAME%TYPE;
V_MGR_WF_NOTE atl_capex_hdr_all.PROJECT_LEADER_MSG%TYPE;*/
CURSOR mgr_wf_note (p_filenote_id NUMBER)
IS
SELECT SUBSTR (b.text_value, 1, 1000) --21460
FROM wf_notifications a,
wf_notification_attributes b,
xxdnl_item_req_hdr c
WHERE a.notification_id = b.notification_id
AND a.item_key = c.item_key
AND a.MESSAGE_TYPE = 'DNLITMAP'
AND b.NAME = 'WF_NOTE'
AND a.status IN ('CLOSED', 'OPEN')
AND a.message_name = 'MSG_APPROVER3'
AND c.item_req_id = p_filenote_id;
---Start
---End
ln_filenote_id NUMBER;
lv_mgr_name VARCHAR2 (240);
v_mgr_wf_note VARCHAR2 (4000);
BEGIN
ln_filenote_id :=
wf_engine.getitemattrnumber (itemtype => itemtype,
itemkey => itemkey,
aname => 'ITEM_REQ_ID'
);
BEGIN
OPEN mgr_wf_note (ln_filenote_id);
FETCH mgr_wf_note
INTO v_mgr_wf_note;
CLOSE mgr_wf_note;
COMMIT;
END;
RESULT := 'COMPLETED:Y';
ELSE
RESULT := 'COMPLETED:N';
END IF;
--RESULT := 'COMPLETED:Y';
END;
END;
PROCEDURE approver1_exists (
itemtype IN VARCHAR2,
itemkey IN VARCHAR2,
actid IN NUMBER,
funcmode IN VARCHAR2,
RESULT IN OUT VARCHAR2
)
IS
CURSOR c_mgr_exists (p_filenote_id NUMBER)
IS
SELECT approver3_name
FROM xxdpl_file_note_hdr
WHERE filenote_hdr_id = p_filenote_id;
ln_filenote_id NUMBER;
lv_mgr VARCHAR2 (240);
lv_approver1 varchar2(240);
BEGIN
lv_approver1 :=
wf_engine.getitemattrtext (itemtype => itemtype,
itemkey => itemkey,
aname => 'APPROVER1'
);
BEGIN
OPEN c_mgr_exists (ln_filenote_id);
FETCH c_mgr_exists
INTO lv_mgr;
CLOSE c_mgr_exists;
PROCEDURE approver2_exists (
itemtype IN VARCHAR2,
itemkey IN VARCHAR2,
actid IN NUMBER,
funcmode IN VARCHAR2,
RESULT IN OUT VARCHAR2
)
IS
CURSOR c_mgr_exists (p_filenote_id NUMBER)
IS
SELECT approver3_name
FROM xxdpl_file_note_hdr
WHERE filenote_hdr_id = p_filenote_id;
ln_filenote_id NUMBER;
lv_mgr VARCHAR2 (240);
lv_approver2 varchar2(240);
BEGIN
lv_approver2 :=
wf_engine.getitemattrtext (itemtype => itemtype,
itemkey => itemkey,
aname => 'APPROVER2'
);
BEGIN
OPEN c_mgr_exists (ln_filenote_id);
FETCH c_mgr_exists
INTO lv_mgr;
CLOSE c_mgr_exists;
IF lv_approver2 IS NOT NULL
THEN
RESULT := wf_engine.eng_completed || ':' || 'Y';
ELSE
RESULT := wf_engine.eng_completed || ':' || 'N';
END IF;
END;
END;
PROCEDURE approver3_exists (
itemtype IN VARCHAR2,
itemkey IN VARCHAR2,
actid IN NUMBER,
funcmode IN VARCHAR2,
RESULT IN OUT VARCHAR2
)
IS
CURSOR c_mgr_exists (p_filenote_id NUMBER)
IS
SELECT approver3_name
FROM xxdpl_file_note_hdr
WHERE filenote_hdr_id = p_filenote_id;
ln_filenote_id NUMBER;
lv_mgr VARCHAR2 (240);
lv_approver3 varchar2(240);
BEGIN
lv_approver3 :=
wf_engine.getitemattrtext (itemtype => itemtype,
itemkey => itemkey,
aname => 'APPROVER3'
);
BEGIN
OPEN c_mgr_exists (ln_filenote_id);
FETCH c_mgr_exists
INTO lv_mgr;
CLOSE c_mgr_exists;
--Notification start
PROCEDURE get_notif (
p_item_req_id IN VARCHAR2,
display_type IN VARCHAR2,
document IN OUT NOCOPY VARCHAR2,
document_type IN OUT NOCOPY VARCHAR2
)
IS
l_document VARCHAR2 (32000) := '';
nl VARCHAR2 (1) := fnd_global.NEWLINE;
CURSOR c_getdetails
IS
SELECT b.item_code, b.description,b.long_description, c.organization_code,
b.primary_uom_code, b.template_name,
b.creation_date,b.PROJECT_NO,b.task_no,operating_unit,item_class,b.asset_category,
(select user_name from fnd_user where user_id = b.created_by) created_by
FROM xxdnl_item_req_hdr a,
xxdnl_item_req_lines b,
xxdnl_item_org_assignment c
WHERE a.item_req_id = b.item_req_id
AND a.item_req_id = c.item_req_id
and c.organization_id not in (0,4814)
and rownum <=40
AND a.item_req_id =
SUBSTR (p_item_req_id,
1,
INSTR (p_item_req_id, ':') - 1
);
CURSOR C_getapprovers is
select * from xxdnl_item_req_hdr where item_req_id =
SUBSTR (p_item_req_id,
1,
INSTR (p_item_req_id, ':') - 1
);
lc_details C_getapprovers%ROWTYPE;
lv_particulars varchar2(4000);
lv_agreement varchar2(4000);
lv_approver1 varchar2(240);
lv_approver2 varchar2(240);
lv_approver3 varchar2(240);
BEGIN
open C_getapprovers;
fetch C_getapprovers into lc_details;
close C_getapprovers;
open c_approvername(lc_details.operating_unit,lc_details.item_class);
fetch c_approvername into lv_approver1,lv_approver2,lv_approver3;
close c_approvername;
END LOOP;
--Approval start
lc_details.APPROVER1_COMMENTS|| '</td>' ||
'</tr>';
END IF;
lc_details.APPROVER2_COMMENTS|| '</td>' ||
'</tr>';
END IF;
lc_details.APPROVER3_COMMENTS|| '</td>' ||
'</tr>';
END IF;
--end
'</tr>';
document := l_document;
--approval end
END;
--Notification end
PROCEDURE create_item (
itemtype IN VARCHAR2,
itemkey IN VARCHAR2,
actid IN NUMBER,
funcmode IN VARCHAR2,
RESULT IN OUT VARCHAR2
)
IS
ln_item_Req_id NUMBER;
lv_mgr VARCHAR2 (240);
lv_approver3 varchar2(240);
ln_user_id number;
ln_resp_id number;
-------------start
v_organization_id NUMBER := 0;
v_request_id NUMBER := 0;
v_phase VARCHAR2(240);
v_status VARCHAR2(240);
v_request_phase VARCHAR2(240);
v_request_status VARCHAR2(240);
v_finished BOOLEAN;
v_message VARCHAR2(240);
-------------end
BEGIN
ln_item_req_id :=
wf_engine.getitemattrnumber (itemtype => itemtype,
itemkey => itemkey,
aname => 'ITEM_REQ_ID'
);
BEGIN
open c_getuser(ln_item_req_id);
fetch c_getuser into ln_user_id, ln_Resp_id ;
close c_getuser;
FOR i IN c_get(ln_item_req_id)
LOOP
INSERT INTO mtl_system_items_interface
(process_flag, allow_item_desc_update_flag,
transaction_type, item_number, segment1, description,
organization_id, organization_code,
primary_uom_code, set_process_id, attribute_category,
attribute1, attribute2, attribute3, template_id,
template_name, creation_date, created_by,
long_description,expense_account,ATTRIBUTE12,ATTRIBUTE13,asset_category_id,LOCATION
_CONTROL_CODE
)
VALUES (1, 'Y',
'CREATE', i.item_code, i.item_code, i.description,
i.organization_id, i.organization_code,
i.primary_uom_code, 1, i.attribute_category,
i.attribute1, i.attribute2, i.attribute3, i.template_id,
i.template_name, TO_DATE(i.creation_date, 'DD-MON-YYYY
HH24:MI:SS'), i.created_by,
i.long_description,i.expense_account,i.project_id,i.task_id,i.asset_category_id,
decode(i.LOCATOR_CONTROL,'Y',2,1)
);
END LOOP;
COMMIT;
--Submit the item import program in Create Mode to Create New Item
BEGIN
fnd_global.APPS_INITIALIZE(ln_user_id,ln_resp_id,401);
dbms_output.put_line('--Submitting Item Import Program for Item--');
v_request_id := Fnd_Request.submit_request (
application => 'INV',
program => 'INCOIN',
description => NULL,
start_time => SYSDATE,
sub_request => FALSE,
argument1 => 1,
argument2 => 1,
argument3 => 1, --Group ID option (All)
argument4 => 1, -- Group ID Dummy
argument5 => 1, -- Delete processed Record
argument6 => 1, -- Set Process id
argument7 => 1 -- Create item
);
COMMIT;
dbms_output.put_line('Item Import Program submitted');
IF ( v_request_id = 0 ) THEN
dbms_output.put_line( 'Item Import Program Not Submitted');
END IF;
UPDATE xxdnl_item_req_hdr
SET ITEM_STATUS = 'NORMAL'
WHERE ITEM_REQ_ID = ln_item_req_id;
COMMIT;
ELSE
dbms_output.put_line( 'Item Import Program completed with error. Check
Mtl_interface_error table for the transaction_id');
UPDATE xxdnl_item_req_hdr
SET ITEM_STATUS = 'ERROR',
ITEM_MSG = v_message
WHERE ITEM_REQ_ID = ln_item_req_id;
COMMIT;
END IF;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('Error in Submitting Item Import Program and error is '||
SUBSTR(SQLERRM,1,200));
END;
END xxdnl_item_creation_pkg;
/