The following lines contain the word 'select', 'insert', 'update' or 'delete':
SELECT revision_num
,start_date
,end_date
, nvl(draft_id, -1) -- Mod Project
FROM po_headers_gt
WHERE po_header_id = p_document_id;
INSERT INTO po_online_report_text_gt
(online_report_id
,last_updated_by
,last_update_date
,created_by
,creation_date
,line_num
,shipment_num
,distribution_num
,sequence
,text_line
,message_name
,message_type
)
VALUES
(p_online_report_id
,p_login_id
,sysdate
,p_user_id
,sysdate
,0 ,0 ,0
,p_sequence+1
,l_qa_result_tbl(l_row_index).problem_details
,l_qa_result_tbl(l_row_index).message_name
,l_qa_result_tbl(l_row_index).error_severity
);
SELECT revision_num
,start_date
,end_date
, nvl(draft_id, -1) -- Mod Project
FROM po_headers_gt
WHERE po_header_id = p_document_id;
SELECT ENABLE_EPLS , Trunc(EPLS_TIMEFRAME)
FROM po_system_parameters_all
WHERE org_id = p_org_id;
SELECT meaning
FROM fnd_lookups
WHERE lookup_type = 'PO_VENDOR_CHECK_STATUS'
AND lookup_code = cp_lookup_code
AND (SYSDATE BETWEEN start_date_active AND Nvl(end_date_active,SYSDATE+1));
SELECT (CASE
WHEN eligibility_status = l_eligible AND Trunc((SYSDATE - received_Date)*24) <= l_epls_timeframe THEN 'ELIGIBLE'
WHEN approved_without_check = 'Y' THEN 'APPROVED'
WHEN eligibility_status = l_ineligible AND Trunc((SYSDATE - received_Date)*24) <= l_epls_timeframe THEN 'INELIGIBLE'
ELSE 'NOTRUN' END)
FROM po_vendor_eligibility
WHERE doc_id = l_document_id
AND Nvl(draft_id,-1) = Nvl(l_draft_id,-1)
AND doc_type = l_doc_type;
INSERT INTO po_online_report_text_gt
(online_report_id
,last_updated_by
,last_update_date
,created_by
,creation_date
,line_num
,shipment_num
,distribution_num
,sequence
,text_line
,message_name
,message_type
)
VALUES
(p_online_report_id
,p_login_id
,sysdate
,p_user_id
,sysdate
,0 ,0 ,0
,p_sequence+1
,l_textline
,'PO_VENDOR_ELIGIBILITY_NOTRUN'
,'E'
);
INSERT INTO po_online_report_text_gt
(online_report_id
,last_updated_by
,last_update_date
,created_by
,creation_date
,line_num
,shipment_num
,distribution_num
,sequence
,text_line
,message_name
,message_type
)
VALUES
(p_online_report_id
,p_login_id
,sysdate
,p_user_id
,sysdate
,0 ,0 ,0
,p_sequence+1
,l_textline
,'PO_VENDOR_ELIGIBILITY_INVALID'
,'W'
);
SELECT revision_num
,start_date
,end_date
, nvl(draft_id, -1) -- Mod Project
FROM po_headers_gt
WHERE po_header_id = p_document_id;
SELECT ENABLE_WDOL
FROM po_system_parameters_all
WHERE org_id = p_org_id;
SELECT 'Y'
FROM fnd_attached_documents attach, fnd_documents_tl doc
WHERE pk1_value = l_attachment_pk1
AND attach.document_id = doc.document_id
AND doc.title = 'Wage Determination Statement'
AND doc.description = 'WD Statement URL'
AND doc.LANGUAGE = 'US'
AND attach.category_id = 33;
SELECT 'Y'
FROM po_drafts
WHERE draft_id = l_draft_id
AND draft_type = 'MOD';
INSERT INTO po_online_report_text_gt
(online_report_id
,last_updated_by
,last_update_date
,created_by
,creation_date
,line_num
,shipment_num
,distribution_num
,sequence
,text_line
,message_name
,message_type
)
VALUES
(p_online_report_id
,p_login_id
,sysdate
,p_user_id
,sysdate
,0 ,0 ,0
,p_sequence+1
,l_textline
,'PO_WDOL_NOTRUN'
,'W'
);
SELECT revision_num
,start_date
,end_date
, nvl(draft_id, -1) -- Mod Project
FROM po_headers_gt
WHERE po_header_id = p_document_id;
SELECT ENABLE_EDA
FROM po_system_parameters_all
WHERE org_id = p_org_id;
SELECT 'Y'
FROM po_electronic_data_access
WHERE doc_id = l_document_id
AND doc_type = l_doc_type
AND Nvl(draft_id,-1) = Nvl(l_draft_id,-1)
AND history_record = 'N'
AND approved_without_check = 'Y'
UNION
SELECT 'Y'
FROM po_electronic_data_access
WHERE doc_id = l_document_id
AND doc_type = l_doc_type
AND Nvl(draft_id,-1) = Nvl(l_draft_id,-1)
AND history_record = 'Y'
AND status = l_complete_lookup
AND request_date = (SELECT Max(request_date) FROM po_electronic_data_access WHERE doc_id = l_document_id AND doc_type = l_doc_type AND Nvl(draft_id,-1) = Nvl(l_draft_id,-1) AND history_record = 'Y');
SELECT meaning
FROM fnd_lookups
WHERE lookup_type = 'PO_EDA_COMPLETION_STATUS'
AND lookup_code = cp_lookup_code
AND (SYSDATE BETWEEN start_date_active AND Nvl(end_date_active,SYSDATE+1));
SELECT 'Y'
FROM po_drafts
WHERE draft_id = l_draft_id
AND draft_type = 'MOD';
INSERT INTO po_online_report_text_gt
(online_report_id
,last_updated_by
,last_update_date
,created_by
,creation_date
,line_num
,shipment_num
,distribution_num
,sequence
,text_line
,message_name
,message_type
)
VALUES
(p_online_report_id
,p_login_id
,sysdate
,p_user_id
,sysdate
,0 ,0 ,0
,p_sequence+1
,l_textline
,'PO_VALIDATE_PDS_NOTRUN'
,'W'
);
* Modifies: Inserts error msgs in online_report_text table, uses global_temp
* tables for processing
* Effects: This procedure runs the document submission checks on passed in
* document.
* Returns:
* x_return_status: FND_API.G_RET_STS_SUCCESS if API succeeds
* FND_API.G_RET_STS_ERROR if API fails
* FND_API.G_RET_STS_UNEXP_ERROR if unexpected error occurs
* x_sub_check_status: FND_API.G_RET_STS_SUCCESS if document passes all
* submission checks, even if warnings are found
* FND_API.G_RET_STS_ERROR if document fails atleast one
* submission check
* x_has_warnings: FND_API.G_TRUE if submission check returns warnings
* FND_API.G_FALSE if no warnings are found
* x_msg_data: Contains error msg in case x_return_status returned
* FND_API.G_RET_STS_ERROR or FND_API.G_RET_STS_UNEXP_ERROR
* x_online_report_id: This id can be used to get all submission check errors
* for given document from online_report_text table
* x_doc_check_error_record: If x_sub_check_status returned G_RET_STS_ERROR
* then this object of tables will contain information about
* all submission check errors for given document including
* message_name and text_line.
* NOTE: This package does no validation of INPUT parameters. That is taken
* care of in Group package PO_DOCUMENT_CHECKS_GRP
*/
PROCEDURE po_submission_check(
p_api_version IN NUMBER
, p_action_requested IN VARCHAR2
, p_document_type IN VARCHAR2
, p_document_subtype IN VARCHAR2
-- Replaced p_document_id with doc_level, doc_level_id
, p_document_level IN VARCHAR2
, p_document_level_id IN NUMBER
-- Renamed the type to PO_CHANGES_REC_TYPE:
, p_requested_changes IN PO_CHANGES_REC_TYPE
, p_check_asl IN BOOLEAN -- bug 2757450
, p_draft_id IN NUMBER := -1
, p_req_chg_initiator IN VARCHAR2 -- bug 4957243
, p_origin_doc_id IN NUMBER := NULL --Bug#5462677
, x_return_status OUT NOCOPY VARCHAR2
, x_sub_check_status OUT NOCOPY VARCHAR2
, x_has_warnings OUT NOCOPY VARCHAR2 -- bug3574165
, x_msg_data OUT NOCOPY VARCHAR2
, x_online_report_id OUT NOCOPY NUMBER
, x_doc_check_error_record OUT NOCOPY doc_check_Return_Type
)
IS
l_api_name CONSTANT varchar2(30) := 'PO_SUBMISSION_CHECK';
l_user_id po_lines.last_updated_by%TYPE := -1;
l_login_id po_lines.last_update_login%TYPE := -1;
|| l_progress,'update requested, calling updating global tables');
update_global_temp_tables(p_document_type,
p_document_subtype,
l_document_id,
p_requested_changes,
l_return_status);
SELECT PO_ONLINE_REPORT_TEXT_S.nextval
INTO l_online_report_id
FROM sys.dual;
SELECT draft_type, draft_sub_type
INTO l_draft_type, l_draft_sub_type
FROM po_drafts
WHERE draft_id = p_draft_id;
SELECT Nvl(Max(SEQUENCE), 0) + 1
INTO p_sequence
FROM po_online_report_text_gt
WHERE online_report_id = x_online_report_id;
SELECT clm_contract_officer
INTO l_contracting_officer
FROM po_drafts
WHERE draft_id = p_draft_id;
SELECT clm_contract_officer
INTO l_contracting_officer
FROM po_headers_all
WHERE po_header_id = l_document_id;
SELECT 'PURCHASING', PH.TYPE_LOOKUP_CODE, PH.STYLE_ID, nvl(PDSH.CLM_FLAG, 'N'), PH.ORG_ID
INTO l_functional_area_code, l_document_type_code, l_document_style_id, l_is_clm_doc, l_org_id
FROM po_headers_all PH, po_doc_style_headers PDSH
WHERE PH.PO_HEADER_ID = l_document_id
AND PH.style_id = PDSH.style_id;
select 'Y'
into l_is_ord_off_idv
from po_headers_all
where po_header_id = l_document_id and clm_award_type in ('BPA_CALL', 'DELIVERY_ORD');
INSERT INTO po_online_report_text_gt
(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type
)
SELECT
l_online_report_id,
l_login_id,
l_user_id,
SYSDATE,
l_user_id,
SYSDATE,
0,
0,
0,
p_sequence +1,
FND_MESSAGE.GET_STRING('PO', 'PO_PRINT_FORM_FORMAT_INVALID'),
'PO_PRINT_FORM_FORMAT_INVALID',
'E'
FROM po_drafts phmv
WHERE phmv.draft_id = p_draft_id
AND NOT EXISTS (
SELECT 1
FROM po_print_form_formats ppff
WHERE ppff.document_type = l_print_doc_type
AND ppff.standard_form = phmv.clm_standard_form
AND ppff.document_format = phmv.clm_document_format
AND trunc(sysdate) <= trunc(nvl(ppff.inactive_date, sysdate +1))
)
AND Nvl(phmv.draft_type, '*') <> 'PAR'; --;
INSERT INTO po_online_report_text_gt
(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type
)
SELECT
l_online_report_id,
l_login_id,
l_user_id,
SYSDATE,
l_user_id,
SYSDATE,
0,
0,
0,
p_sequence +1,
FND_MESSAGE.GET_STRING('PO', 'PO_PRINT_FORM_FORMAT_INVALID'),
'PO_PRINT_FORM_FORMAT_INVALID',
'E'
FROM po_headers_all phmv
WHERE phmv.po_header_id = l_document_id
AND NOT EXISTS (
SELECT 1
FROM po_print_form_formats ppff
WHERE ppff.document_type = l_print_doc_type
AND ppff.standard_form = phmv.clm_standard_form
AND ppff.document_format = phmv.clm_document_format
AND trunc(sysdate) <= trunc(nvl(ppff.inactive_date, sysdate +1))
);
INSERT INTO po_online_report_text_gt
( online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type,
line_num
)
SELECT
l_online_report_id,
l_login_id,
l_user_id,
SYSDATE,
l_user_id,
SYSDATE,
0,
0,
p_sequence+1,
FND_MESSAGE.GET_STRING('PO', 'PO_PRICING_MISMATCH'),
'PO_PRICING_MISMATCH',
'E',
pol.line_num
FROM po_lines_gt pol,
po_lines_all_ext_b ple,
po_uda_ag_template_usages ptu
WHERE ple.po_line_id = pol.po_line_id
AND ple.draft_id = p_draft_id
AND ple.attr_group_id = ptu.attribute_group_id
AND ptu.attribute_category = 'PRICING'
AND ptu.attribute2 = pol.contract_type
AND ptu.attribute1 = pol.clm_idc_type
AND ptu.template_id = ple.uda_template_id
AND Nvl(ple.n_ext_attr20, 0) <>
Decode(pol.matching_basis, 'QUANTITY',
(Nvl(pol.quantity, 0) * Nvl(pol.unit_price, 0)),
'AMOUNT', Nvl(pol.amount, 0))
AND pol.order_type_lookup_code <> 'QUANTITY'
AND pol.clm_undef_flag <> 'Y' -- UCA Project
--Bug 13543817
AND ple.pk1_value IS NULL;
INSERT INTO po_online_report_text_gt
( online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type,
line_num
)
SELECT
l_online_report_id,
l_login_id,
l_user_id,
SYSDATE,
l_user_id,
SYSDATE,
0,
0,
p_sequence+1,
FND_MESSAGE.GET_STRING('PO', 'PO_PRICING_MISMATCH'),
'PO_PRICING_MISMATCH',
'E',
pol.line_num
FROM po_lines_gt pol
WHERE pol.order_type_lookup_code <> 'QUANTITY'
AND NOT EXISTS ( Select 1
FROM po_uda_ag_template_usages ptu,
po_lines_all_ext_b ple
WHERE ptu.attribute_category = 'PRICING'
AND ptu.attribute2 = pol.contract_type
AND ptu.attribute1 = pol.clm_idc_type
AND ptu.template_id = ple.uda_template_id
AND ple.po_line_id = pol.po_line_id
AND ple.draft_id = p_draft_id
AND ple.attr_group_id = ptu.attribute_group_id
)
--Bug 13543817
AND ( EXISTS ( SELECT 1 FROM po_lines_draft_all
WHERE draft_id = p_draft_id
AND po_line_id = pol.po_line_id
)
OR nvl(p_draft_id,-1) = -1
);
SELECT PO_UDA_PUB.GET_SINGLE_ATTR_VALUE(p_template_id => pha.uda_template_id, pk1_value => pha.po_header_id,
pk2_value => -1, p_attr_grp_int_name => 'AWD_CTGR', p_attr_int_name => 'NO_COMP_RSN')
INTO l_no_comp_reason
FROM po_headers_all pha
WHERE pha.po_header_id = l_document_id;
SELECT 'Y' INTO is_ja_notice_posted
FROM pon_fbo_posts
WHERE document_id = l_document_id
AND FORM_CODE = 'FED_JA'
AND fbo_post_status = 'SUCCESS'
AND ROWNUM =1;
INSERT INTO po_online_report_text_gt
(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type
)
VALUES
(
l_online_report_id,
l_login_id,
l_user_id,
SYSDATE,
l_user_id,
SYSDATE,
0,
0,
0,
p_sequence+1,
FND_MESSAGE.GET_STRING('PO', 'PO_FBO_JA_NOT_POSTED'),
'PO_FBO_JA_NOT_POSTED',
'W'
);
INSERT INTO po_online_report_text_gt
(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type
)
VALUES
(
l_online_report_id,
l_login_id,
l_user_id,
SYSDATE,
l_user_id,
SYSDATE,
0,
0,
0,
p_sequence,
FND_MSG_PUB.get (msg_counter, FND_API.g_false),
'UDA Attr Sub Check Failure',
'E'
);
SELECT REPORTING_METHOD, CAR_STATUS, APPROVED_WITHOUT_REPORTING
INTO l_reporting_method, l_car_status, l_approved_without_reporting
FROM PO_CLM_CARS
WHERE PO_HEADER_ID = l_document_id
AND PO_DRAFT_ID = p_draft_id;
INSERT INTO po_online_report_text_gt
(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type
)
VALUES
(
l_online_report_id,
l_login_id,
l_user_id,
SYSDATE,
l_user_id,
SYSDATE,
0,
0,
0,
p_sequence,
FND_MESSAGE.GET_STRING('PO', 'PO_CLM_CAR_NOT_REPORTED'),
'PO_CLM_CAR_NOT_REPORTED',
'W'
);
INSERT INTO po_online_report_text_gt
(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type
)
VALUES
(
l_online_report_id,
l_login_id,
l_user_id,
SYSDATE,
l_user_id,
SYSDATE,
0,
0,
0,
p_sequence,
FND_MESSAGE.GET_STRING('PO', 'PO_CLM_CAR_NOT_AUTHENTICATED'),
'PO_CLM_CAR_NOT_AUTHENTICATED',
'W'
);
SELECT conterms_exist_flag
INTO l_conterms_exist_flag
FROM po_headers_gt
WHERE po_header_id = l_document_id;
SELECT po_header_id
INTO l_po_header_id
FROM PO_RELEASES_ALL
WHERE po_release_id = l_document_id;
SELECT count(text_line),
COUNT(DECODE(message_type, 'W', 'W', NULL))
INTO l_num_messages,
l_num_warnings
FROM po_online_report_text_gt
WHERE online_report_id = l_online_report_id;
INSERT INTO po_online_report_text(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_type) --
SELECT online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_type --
FROM po_online_report_text_gt
WHERE online_report_id = x_online_report_id;
select count(*) into l_num_messages from po_online_report_text_gt where online_report_id = x_online_report_id;
SELECT online_report_id, sequence, text_line,
line_num, shipment_num, distribution_num, message_name, message_type
BULK COLLECT INTO x_doc_check_error_record.online_report_id,
x_doc_check_error_record.sequence_num,
x_doc_check_error_record.text_line,
x_doc_check_error_record.line_num,
x_doc_check_error_record.shipment_num,
x_doc_check_error_record.distribution_num,
x_doc_check_error_record.message_name,
x_doc_check_error_record.message_type --
FROM po_online_report_text_gt
WHERE online_report_id = x_online_report_id;
FOR ship_rec in (select line_location_id from po_line_locations_gt)
LOOP
set_lcm_flag(ship_rec.line_location_id,'AFTER',l_return_status);
l_user_id PO_LINES.last_updated_by%TYPE := -1;
l_login_id PO_LINES.last_update_login%TYPE := -1;
SELECT PO_ONLINE_REPORT_TEXT_S.nextval
INTO l_online_report_id
FROM sys.dual;
SELECT count(text_line)
INTO l_num_errors
FROM po_online_report_text_gt
WHERE online_report_id = l_online_report_id;
INSERT INTO po_online_report_text(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line)
SELECT online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line
FROM po_online_report_text_gt
WHERE online_report_id = x_online_report_id;
* p_online_report_id: Id used to INSERT INTO online_report_text table
* p_user_id: User performing the action
* p_login_id: Last update login_id
* IN OUT PARAMETERS
* p_sequence: Sequence number of last reported error
* Modifies: Updates the PO_REQUISITION_LINES table with RATE information.
* Inserts error msgs in online_report_text_gt table, uses global_temp
* tables for processing
* Effects: This procedure runs the document submission checks for
* REQUISITIONS
* Returns:
* p_sequence: This parameter contains the current count of number of error
* messages inserted
*/
PROCEDURE check_requisitions(p_document_id IN NUMBER,
p_online_report_id IN NUMBER,
p_user_id IN NUMBER,
p_login_id IN NUMBER,
p_sequence IN OUT NOCOPY NUMBER,
x_return_status OUT NOCOPY VARCHAR2) IS
l_textline po_online_report_text.text_line%TYPE := NULL;
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_SUB_REQ_HEADER_NO_LINES'
FROM PO_REQ_HEADERS_GT PRH
WHERE PRH.requisition_header_id = p_document_id
AND NOT EXISTS (SELECT 'Lines Exist'
FROM PO_REQ_LINES_GT PRL
WHERE PRL.requisition_header_id = PRH.requisition_header_id
AND nvl(PRL.cancel_flag,'N') = 'N');
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
PRL.line_num,
0,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||PRL.line_num||g_delim||l_textline,1,240),
'PO_SUB_REQ_LINE_NO_DIST'
FROM PO_REQ_LINES_GT PRL
WHERE PRL.requisition_header_id = p_document_id AND
nvl(PRL.cancel_flag,'N') = 'N' AND
nvl(PRL.closed_code,'OPEN') <> 'FINALLY CLOSED' AND
nvl(PRL.modified_by_agent_flag,'N') = 'N' AND
NOT EXISTS (SELECT 'Dist Exist'
FROM PO_REQ_DISTRIBUTIONS_GT PRD
WHERE PRD.requisition_line_id = PRL.requisition_line_id)
AND Nvl(l_clm_req,'N') = 'N';
SELECT
PRL.line_num
, PLT.order_type_lookup_code --
, PRL.quantity
, PRL.amount --
--Start Bug 13065293
, round(sum(nvl(PRD.req_line_quantity, 0)),15) --
--End Bug 13065293
, sum(nvl(PRD.req_line_amount, 0)) --
BULK COLLECT INTO
l_line_num
, l_value_basis_tbl --
, l_line_qty_tbl --
, l_line_amt_tbl --
, l_dist_qty_tbl --
, l_dist_amt_tbl --
FROM
PO_REQ_DISTRIBUTIONS_GT PRD
, PO_REQ_LINES_GT PRL
, PO_LINE_TYPES_B PLT --
WHERE
PRL.requisition_line_id = PRD.requisition_line_id
AND PRL.requisition_header_id = p_document_id
AND nvl(PRL.cancel_flag,'N') = 'N'
AND nvl(PRL.closed_code,'OPEN') <> 'FINALLY CLOSED'
AND nvl(PRL.modified_by_agent_flag,'N') = 'N'
AND PRL.line_type_id = PLT.line_type_id --
AND --
( ( ( PLT.order_type_lookup_code IN ('QUANTITY','AMOUNT')
--Start Bug 13065293
AND ( round(PRL.quantity,15) <> ( SELECT round(nvl(sum(PRD2.req_line_quantity),0),15)
--End Bug 13065293
FROM PO_REQ_DISTRIBUTIONS_GT PRD2
WHERE PRD2.requisition_line_id = PRL.requisition_line_id ) ) )
OR ( ( PLT.order_type_lookup_code IN ('RATE','FIXED PRICE') )
AND ( PRL.amount <> ( SELECT nvl(sum(PRD2.req_line_amount),0)
FROM PO_REQ_DISTRIBUTIONS_GT PRD2
WHERE PRD2.requisition_line_id = PRL.requisition_line_id ) ) ) )
)
GROUP BY
PRL.line_num
, PLT.order_type_lookup_code --
, PRL.quantity
, PRL.amount; --
INSERT INTO po_online_report_text_gt (online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
VALUES(
p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
l_line_num(i),
NULL, --
NULL, --
p_sequence+l_rowCount(i),
decode ( l_value_basis_tbl(i) --
, 'RATE' , PO_CORE_S.get_translated_text
( 'PO_SUB_REQ_LINE_NE_DIST_AMT'
, 'LINE_NUM', l_line_num(i)
, 'LINE_AMT', l_line_amt_tbl(i)
, 'DIST_AMT', l_dist_amt_tbl(i)
)
, 'FIXED PRICE' , PO_CORE_S.get_translated_text
( 'PO_SUB_REQ_LINE_NE_DIST_AMT'
, 'LINE_NUM', l_line_num(i)
, 'LINE_AMT', l_line_amt_tbl(i)
, 'DIST_AMT', l_dist_amt_tbl(i)
)
, PO_CORE_S.get_translated_text
( 'PO_SUB_REQ_LINE_NE_DIST_QTY'
, 'LINE_NUM', l_line_num(i)
, 'LINE_QTY', l_line_qty_tbl(i)
, 'DIST_QTY', l_dist_qty_tbl(i)
)
),
decode ( l_value_basis_tbl(i) --
, 'RATE' , 'PO_SUB_REQ_LINE_NE_DIST_AMT'
, 'FIXED PRICE' , 'PO_SUB_REQ_LINE_NE_DIST_AMT'
, 'PO_SUB_REQ_LINE_NE_DIST_QTY'
)
);
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
PRL.line_num,
0,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||PRL.line_num||g_delim||l_textline,1,240),
'PO_SUB_REQ_SOURCE_ONE_DIST'
FROM PO_REQ_LINES_GT PRL
WHERE PRL.requisition_header_id = p_document_id AND
PRL.source_type_code = 'INVENTORY' AND
nvl(PRL.cancel_flag,'N') = 'N' AND
nvl(PRL.closed_code, 'OPEN') <> 'FINALLY CLOSED' AND
1 < (SELECT count(PRD.requisition_line_id)
FROM PO_REQ_DISTRIBUTIONS_GT PRD
WHERE PRD.requisition_line_id = PRL.requisition_line_id);
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
PRL.line_num,
0,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||PRL.line_num||g_delim||l_textline,1,240),
'PO_SUB_REQ_RATE_NULL'
FROM PO_REQ_LINES_GT PRL, FINANCIALS_SYSTEM_PARAMETERS FSP,
GL_SETS_OF_BOOKS SOB
WHERE PRL.requisition_header_id = p_document_id AND
nvl(PRL.cancel_flag, 'N') = 'N' AND
nvl(PRL.closed_code, 'OPEN') <> 'FINALLY CLOSED' AND
SOB.set_of_books_id = FSP.set_of_books_id AND
SOB.currency_code <> PRL.currency_code AND
(PRL.rate is NULL OR
PRL.rate_type is NULL OR
(PRL.rate_type <> 'User' AND PRL.rate_date is NULL));
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
PRL.line_num,
0,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||PRL.line_num||g_delim||l_textline,1,240),
'PO_ATO_ITEM_NA'
FROM PO_REQ_LINES_GT PRL, FINANCIALS_SYSTEM_PARAMETERS FSP,
MTL_SYSTEM_ITEMS MSI
WHERE PRL.requisition_header_id = p_document_id AND
nvl(PRL.cancel_flag, 'N') = 'N' AND
nvl(PRL.closed_code, 'OPEN') <> 'FINALLY CLOSED' AND
PRL.item_id is not null AND
PRL.item_id = MSI.inventory_item_id AND
FSP.inventory_organization_id = MSI.organization_id AND
MSI.bom_item_type in (1,2);
INSERT INTO po_online_report_text_gt
(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type
)
VALUES
(
p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
po_tax_interface_pvt.G_TAX_ERRORS_TBL.line_num(i),
po_tax_interface_pvt.G_TAX_ERRORS_TBL.shipment_num(i),
po_tax_interface_pvt.G_TAX_ERRORS_TBL.distribution_num(i),
p_sequence + i, /* 11851142 replaced with rownum */
l_tax_message || po_tax_interface_pvt.G_TAX_ERRORS_TBL.message_text(i),
'PO_TAX_CALCULATION_FAILED',
'E'
);
* p_online_report_id: Id used to INSERT INTO online_report_text table
* p_user_id: User performing the action
* p_login_id: Last update login_id
* IN OUT PARAMETERS
* p_sequence: Sequence number of last reported error
* Modifies: Inserts error msgs in online_report_text_gt table, uses
* global_temp tables for processing
* Effects: This procedure runs the document submission checks for RELEASES
* Returns:
* p_sequence: This parameter contains the current count of number of error
* messages inserted
*/
PROCEDURE check_releases(p_document_id IN NUMBER,
p_online_report_id IN NUMBER,
p_user_id IN NUMBER,
p_login_id IN NUMBER,
p_sequence IN OUT NOCOPY NUMBER,
x_return_status OUT NOCOPY VARCHAR2) IS
l_textline po_online_report_text.text_line%TYPE := NULL;
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,0,0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_SUB_REL_PA_APPROVED'
FROM PO_RELEASES_GT POR,PO_HEADERS_GT POH
WHERE POR.po_header_id = POH.po_header_id
AND POR.po_release_id = p_document_id
AND NVL(POH.approved_flag, 'N') <> 'Y'
AND NVL(POH.user_hold_flag, 'N') <> 'Y'; --< Bug 3422733 >
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_SUB_REL_PA_EXPIRED' -- bug3199869
FROM PO_RELEASES_GT POR,PO_HEADERS_GT POH
WHERE POR.po_header_id = POH.po_header_id
AND POR.po_release_id = p_document_id
AND POR.approved_date IS NULL -- bug3199869
AND TRUNC(SYSDATE) > -- bug3199869
TRUNC(NVL(POH.end_date + nvl(FND_PROFILE.VALUE('PO_REL_CREATE_TOLERANCE'),0), SYSDATE + 1)); -- bug3199869
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_SUB_REL_PA_ON_HOLD'
FROM PO_RELEASES_GT POR,PO_HEADERS_GT POH
WHERE POR.po_header_id = POH.po_header_id
AND POR.po_release_id = p_document_id
AND nvl(POH.user_hold_flag, 'N') = 'Y';
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_SUB_REL_VENDOR_ON_HOLD'
FROM PO_RELEASES_GT POR,PO_HEADERS_GT POH,PO_VENDORS POV,
PO_SYSTEM_PARAMETERS PSP
WHERE POR.po_header_id = POH.po_header_id
AND POV.vendor_id = POH.vendor_id
AND POR.po_release_id = p_document_id
AND nvl(PSP.ENFORCE_VENDOR_HOLD_FLAG,'N') = 'Y'
AND nvl(POV.hold_flag,'N') = 'Y';
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_SUB_REL_NO_SHIP'
FROM PO_RELEASES_GT POR
WHERE POR.po_release_id = p_document_id
AND NOT EXISTS
(SELECT 'Shipment Exist'
FROM PO_LINE_LOCATIONS_GT PLL
WHERE PLL.po_release_id = POR.po_release_id);
SELECT POLG.shipment_num,
HLT.location_code
BULK COLLECT INTO
l_line_num,
l_ship_to_location_tbl
FROM PO_LINE_LOCATIONS_GT POLG,
HR_LOCATIONS_ALL HLA,
HR_LOCATIONS_ALL_TL HLT
WHERE POLG.po_release_id = p_document_id
AND POLG.ship_to_location_id=HLA.location_id
AND nvl(POLG.cancel_flag,'N') = 'N'
AND nvl(POLG.closed_code,'OPEN') <> 'FINALLY CLOSED'
AND NVL (TRUNC (HLA.INACTIVE_DATE), TRUNC (SYSDATE)+1 )<= TRUNC (SYSDATE)
AND HLA.location_id=HLT.location_id
AND HLT.language=USERENV('LANG');
INSERT INTO po_online_report_text_gt (
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
VALUES(
p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0, --
p_sequence+l_rowCount(i),
substr(PO_CORE_S.get_translated_text
( 'PO_SUB_REL_INVALID_SHIP_TO',
'LINE_NUM',
l_line_num(i),
'SHIP_TO_LOC',
l_ship_to_location_tbl(i)
),1,240),
'PO_SUB_REL_INVALID_SHIP_TO'
);
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
PLL.shipment_num,
0,
p_sequence + ROWNUM,
decode ( POL.order_type_lookup_code --
, 'FIXED PRICE' , PO_CORE_S.get_translated_text
( 'PO_SUB_REL_PRICE_GT_LIMIT'
, 'SHIP_NUM' , PLL.shipment_num
, 'SHIP_PRICE' , nvl( PLL.price_override,PLL.amount)
, 'LINE_PRICE' , nvl ( POL.not_to_exceed_price
, PLL.price_override )
)
, PO_CORE_S.get_translated_text
( 'PO_SUB_REL_AMT_GT_LIMIT'
, 'SHIP_NUM' , PLL.shipment_num
, 'SHIP_AMT' , PLL.amount
, 'LINE_AMT' , nvl ( POL.not_to_exceed_price
, PLL.amount )
)
),
decode ( POL.order_type_lookup_code --
, 'FIXED PRICE' , 'PO_SUB_REL_SHIP_PRICE_GT_LIMIT'
, 'PO_SUB_REL_SHIP_AMT_GT_LIMIT'
)
FROM PO_LINE_LOCATIONS_GT PLL,PO_LINES POL
WHERE PLL.po_line_id = POL.po_line_id
AND PLL.po_release_id = p_document_id
AND nvl(PLL.cancel_flag,'N')= 'N'
AND nvl(PLL.closed_code,'OPEN') <> 'FINALLY CLOSED'
AND POL.allow_price_override_flag = 'Y' -- Bug 3177525
AND ( --
( ( POL.order_type_lookup_code IN ('QUANTITY','AMOUNT','RATE'))--
AND ( PLL.price_override > nvl ( POL.not_to_exceed_price
, PLL.price_override ) )
)
OR
( ( POL.order_type_lookup_code IN ('FIXED PRICE') ) --
AND ( PLL.amount > nvl ( POL.not_to_exceed_price, PLL.amount ) ) )
)
;
SELECT
0
, PLL.shipment_num
, 0
, PLL.quantity
, PLL.amount --
, nvl(sum(POD.quantity_ordered),0) --
, nvl(sum(POD.amount_ordered),0) --
BULK COLLECT INTO
l_line_num
, l_shipment_num
, l_dist_num
, l_ship_qty_tbl --
, l_ship_amt_tbl --
, l_dist_qty_tbl --
, l_dist_amt_tbl --
FROM
PO_DISTRIBUTIONS_GT POD --
, PO_LINE_LOCATIONS_GT PLL
WHERE
PLL.line_location_id = POD.line_location_id
AND PLL.po_release_id = p_document_id
AND nvl(PLL.cancel_flag,'N') = 'N'
AND nvl(PLL.closed_code,'OPEN') <> 'FINALLY CLOSED'
AND ( --
( ( PLL.quantity IS NOT NULL )
AND ( PLL.quantity <> ( SELECT sum(POD2.quantity_ordered)
FROM PO_DISTRIBUTIONS_GT POD2
WHERE POD2.line_location_id = PLL.line_location_id ) ) )
OR ( ( PLL.amount IS NOT NULL )
AND ( PLL.amount <> ( SELECT sum(POD2.amount_ordered)
FROM PO_DISTRIBUTIONS_GT POD2
WHERE POD2.line_location_id = PLL.line_location_id ) ) )
)
GROUP BY
PLL.shipment_num
, PLL.quantity
, PLL.amount; --
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
VALUES(
p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
NULL, --
l_shipment_num(i),
NULL, --
p_sequence+l_rowCount(i),
decode ( l_ship_qty_tbl(i) --
, NULL , PO_CORE_S.get_translated_text
( 'PO_SUB_REL_SHIP_NE_DIST_AMT'
, 'SHIP_NUM', l_shipment_num(i)
, 'SHIP_AMT', l_ship_amt_tbl(i)
, 'DIST_AMT', l_dist_amt_tbl(i)
)
, PO_CORE_S.get_translated_text
( 'PO_SUB_REL_SHIP_NE_DIST_QTY'
, 'SHIP_NUM', l_shipment_num(i)
, 'SHIP_QTY', l_ship_qty_tbl(i)
, 'DIST_QTY', l_dist_qty_tbl(i)
)
),
decode ( l_ship_qty_tbl(i) --
, NULL , 'PO_SUB_REL_SHIP_NE_DIST_AMT'
, 'PO_SUB_REL_SHIP_NE_DIST_QTY'
)
);
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
PLL.shipment_num,
0,
p_sequence + ROWNUM,
substr(g_shipmsg||g_delim||PLL.shipment_num||g_delim
||l_textline,1,240),
'PO_SUB_REL_SHIP_NO_DIST'
FROM PO_LINE_LOCATIONS_GT PLL
WHERE PLL.po_release_id = p_document_id
AND nvl(PLL.cancel_flag,'N') = 'N'
AND nvl(PLL.closed_code,'OPEN') <> 'FINALLY CLOSED'
AND NOT EXISTS
(SELECT 'Distribution Exists'
FROM PO_DISTRIBUTIONS_GT POD --
WHERE POD.line_location_id = PLL.line_location_id);
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
POLL.shipment_num,
POD.distribution_num,
p_sequence + ROWNUM,
substr(g_shipmsg||g_delim||POLL.shipment_num||g_delim
||g_distmsg||g_delim||POD.distribution_num||g_delim
||l_textline,1,240),
'PO_SUB_REL_RATE_NULL'
FROM PO_DISTRIBUTIONS_GT POD, --
PO_LINE_LOCATIONS_GT POLL,PO_LINES POL,
PO_RELEASES_GT POR,PO_HEADERS_GT POH,GL_SETS_OF_BOOKS SOB,
FINANCIALS_SYSTEM_PARAMETERS FSP
WHERE POLL.po_release_id = POR.po_release_id
AND POD.line_location_id = POLL.line_location_id
AND POLL.po_line_id = POL.po_line_id
AND POH.po_header_id = POR.po_header_id
AND POR.po_release_id = p_document_id
AND SOB.set_of_books_id = FSP.set_of_books_id
AND nvl(POLL.cancel_flag, 'N') = 'N'
AND nvl(POLL.closed_code, 'OPEN') <> 'FINALLY CLOSED'
AND SOB.currency_code <> POH.currency_code
AND POD.rate is null;
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_SUB_REL_AMT_LESS_MINREL_AMT'
FROM PO_HEADERS_GT POH,PO_RELEASES_GT POR
WHERE POR.po_release_id = p_document_id
AND POH.po_header_id = POR.po_header_id
AND POH.min_release_amount IS NOT NULL
AND POH.min_release_amount > --
( SELECT decode ( sum( decode ( PLL2.quantity
, NULL , ( PLL2.amount - nvl(PLL2.amount_cancelled,0) )
, ( PLL2.quantity - nvl(PLL2.quantity_cancelled,0) )
)
)
, 0 , POH.min_release_amount
, sum ( decode ( PLL2.quantity
, NULL , ( PLL2.amount - nvl(PLL2.amount_cancelled,0) )
, ( ( PLL2.quantity - nvl(PLL2.quantity_cancelled,0) )
* PLL2.price_override )
)
)
)
FROM PO_LINE_LOCATIONS_GT PLL2
WHERE PLL2.po_release_id = POR.po_release_id
AND PLL2.shipment_type IN ('BLANKET', 'SCHEDULED')
);
SELECT --
sum ( decode ( PLL1.quantity
, NULL , ( PLL1.amount
- nvl(PLL1.amount_cancelled,0) )
, ( ( PLL1.quantity
- nvl(PLL1.quantity_cancelled,0) )
* PLL1.price_override ) ) )
INTO l_this_rel_amount
FROM PO_LINE_LOCATIONS_GT PLL1, PO_RELEASES_GT POR1, PO_HEADERS_GT POH
WHERE POR1.po_release_id = p_document_id
AND POR1.po_header_id = POH.po_header_id -- Bug 7188760
AND POH.amount_limit is Not Null -- Bug 7188760
AND PLL1.po_release_id = POR1.po_release_id;
SELECT --
/* FULL(POH)*/
nvl ( sum ( decode ( PLL2.quantity
, NULL , ( PLL2.amount
- nvl(PLL2.amount_cancelled,0) )
, ( ( PLL2.quantity
- nvl(PLL2.quantity_cancelled,0) )
* PLL2.price_override ) ) )
, 0 )
INTO l_previous_rel_amount
FROM PO_LINE_LOCATIONS PLL2, PO_RELEASES POR2, PO_HEADERS_GT POH
WHERE PLL2.po_release_id = POR2.po_release_id
AND POR2.po_header_id = POH.po_header_id
AND nvl(POR2.approved_flag, 'N') = 'Y'
AND POH.amount_limit is Not Null -- Bug 7188760
AND POR2.po_release_id <> p_document_id;
SELECT --
/* FULL(POH)*/
nvl ( sum ( decode ( PLL2.quantity
, NULL , ( PLL2.amount
- nvl(PLL2.amount_cancelled,0) )
, ( ( PLL2.quantity
- nvl(PLL2.quantity_cancelled,0) )
* PLL2.price_override ) ) )
, 0 )
INTO l_previous_rel_archive_amount
FROM po_line_locations_archive_all PLL2, po_releases_all POR2, PO_HEADERS_GT POH
WHERE PLL2.po_release_id = POR2.po_release_id
AND POR2.po_header_id = POH.po_header_id
AND nvl(POR2.approved_flag, 'N') IN ('R','F')
and NVL(PLL2.LATEST_EXTERNAL_FLAG,'N') = 'Y'
AND POH.amount_limit is Not Null
AND POR2.po_release_id <> p_document_id;
INSERT INTO po_online_report_text_gt (online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_SUB_REL_AMT_GRT_LIMIT_AMT'
FROM PO_HEADERS_GT POH,PO_RELEASES_GT POR
WHERE POR.po_release_id = p_document_id
AND POH.po_header_id = POR.po_header_id
AND POH.amount_limit is not null
--
--Compare it to total of current release amount and
--already released amount calculated above the INSERT statement
AND POH.amount_limit < l_total_rel_amount;
SELECT
POL.line_num,
0,
0,
POL.min_release_amount,
0
BULK COLLECT INTO
l_line_num,
l_shipment_num,
l_dist_num,
l_quantity1,
l_quantity2
FROM PO_LINES_ALL POL,PO_RELEASES_GT POR,PO_LINE_LOCATIONS_GT PLL
WHERE PLL.po_release_id = POR.po_release_id
AND PLL.po_release_id = p_document_id
AND POL.po_line_id = PLL.po_line_id
AND POL.min_release_amount is not null
AND POL.min_release_amount >
( SELECT
decode ( sum ( decode ( PLL2.quantity /*Bug 5028960 pol.quantity */
, NULL , PLL2.amount - nvl(PLL2.amount_cancelled,0)
, PLL2.quantity - nvl(PLL2.quantity_cancelled,0)
)
)
, 0 , POL.min_release_amount
, sum ( decode ( PLL2.quantity /*Bug 5028960 pol.quantity */
, NULL , PLL2.amount - nvl(PLL2.amount_cancelled,0)
, ( ( PLL2.quantity - nvl(PLL2.quantity_cancelled,0) )
* PLL2.price_override )
)
)
)
--
--Change the table in from clause from PO_LINE_LOCATIONS to PO_LINE_LOCATIONS_GT
FROM PO_LINE_LOCATIONS_GT PLL2
WHERE PLL2.po_line_id = POL.po_line_id
AND PLL2.po_release_id = POR.po_release_id
AND PLL2.shipment_type in ('BLANKET', 'SCHEDULED')
)
GROUP BY POL.line_num,POL.min_release_amount;
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
VALUES(
p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,0,0,
p_sequence+l_rowCount(i),
substr(l_textline||g_delim||l_quantity1(i),1,240),
'PO_SUB_REL_SHIPAMT_LESS_MINREL');
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
POLL.shipment_num,
0,
p_sequence + ROWNUM,
substr(g_shipmsg||g_delim||POLL.shipment_num||g_delim||l_textline||
MTL1.uom_class||' , '||MTL2.uom_class,1,240),
'PO_SUB_UOM_CLASS_CONVERSION'
FROM MTL_UOM_CLASS_CONVERSIONS MOU, PO_LINE_LOCATIONS_GT POLL,
PO_LINES POL, MTL_UOM_CLASSES_TL MTL1,
MTL_UOM_CLASSES_TL MTL2
WHERE MOU.inventory_item_id = POL.item_id
AND (NVL(MOU.disable_date, TRUNC(SYSDATE)) + 1) < TRUNC(SYSDATE)
AND POL.po_line_id = POLL.po_line_id
AND POLL.po_release_id = p_document_id
AND MOU.from_uom_class = MTL1.uom_class
AND MOU.to_uom_class = MTL2.uom_class
AND EXISTS
(SELECT 'uom conversion exists'
FROM MTL_UNITS_OF_MEASURE MUM
WHERE POL.unit_meas_lookup_code = MUM.unit_of_measure
AND MOU.to_uom_class = MUM.uom_class);
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num, --
PLL.shipment_num, --
0,
p_sequence + ROWNUM,
--
substr(g_linemsg||g_delim||POL.line_num||g_delim
||g_shipmsg||g_delim||PLL.shipment_num||g_delim
||l_textline,1,240),
--
'PO_SUB_ITEM_NOT_APPROVED_REL'
FROM MTL_SYSTEM_ITEMS MSI, PO_LINE_LOCATIONS_GT PLL,
PO_RELEASES_GT POR,PO_LINES POL, PO_HEADERS_GT POH,
FINANCIALS_SYSTEM_PARAMETERS FSP
WHERE POR.po_release_id = p_document_id
AND POR.po_header_id = POH.po_header_id
AND POR.po_header_id = POL.po_header_id
AND POL.po_line_id = PLL.po_line_id
AND POR.po_release_id = PLL.po_release_id
AND MSI.organization_id = PLL.SHIP_TO_ORGANIZATION_id
AND MSI.inventory_item_id = POL.item_id
AND POL.item_id is not null
AND nvl(PLL.closed_code,'OPEN') <> 'FINALLY CLOSED'
AND nvl(POL.cancel_flag,'N') = 'N'
AND nvl(PLL.cancel_flag,'N') = 'N'
AND nvl(MSI.must_use_approved_vendor_flag,'N') = 'Y'
AND not exists
(SELECT 1
FROM PO_APPROVED_SUPPLIER_LIS_VAL_V ASL, PO_ASL_STATUS_RULES ASR
WHERE ASL.using_organization_id in (PLL.ship_to_organization_id, -1)
AND ASL.vendor_id = POH.vendor_id
AND nvl(ASL.vendor_site_id, POH.vendor_site_id) = POH.vendor_site_id
AND ASL.item_id = POL.item_id
AND ASL.asl_status_id = ASR.status_id
AND ASR.business_rule = '1_PO_APPROVAL'
AND ASR.allow_action_flag = 'Y' --Bug5597639
UNION ALL
SELECT 1
FROM PO_APPROVED_SUPPLIER_LIS_VAL_V ASL, PO_ASL_STATUS_RULES ASR
WHERE ASL.using_organization_id in (PLL.ship_to_organization_id , -1)
AND ASL.vendor_id = POH.vendor_id
AND nvl(ASL.vendor_site_id, POH.vendor_site_id) = POH.vendor_site_id
AND ASL.item_id is NULL
AND not exists
(SELECT ASL1.ASL_ID
FROM PO_APPROVED_SUPPLIER_LIS_VAL_V ASL1
WHERE ASL1.ITEM_ID = POL.item_id
AND ASL1.using_organization_id in (PLL.ship_to_organization_id, -1))
AND ASL.category_id in
(SELECT MIC.category_id
FROM MTL_ITEM_CATEGORIES MIC
WHERE MIC.inventory_item_id = POL.item_id
AND MIC.organization_id = PLL.ship_to_organization_id)
AND ASL.asl_status_id = ASR.status_id
AND ASR.business_rule = '1_PO_APPROVAL'
AND ASR.allow_action_flag = 'Y') ; --Bug5597639
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num, --
PLL.shipment_num, --
0,
p_sequence + ROWNUM,
--
substr(g_linemsg||g_delim||POL.line_num||g_delim
||g_shipmsg||g_delim||PLL.shipment_num||g_delim
||l_textline,1,240),
--
'PO_SUB_ITEM_ASL_DEBARRED_REL'
FROM PO_LINE_LOCATIONS_GT PLL,
PO_RELEASES_GT POR,PO_LINES POL, PO_HEADERS_GT POH,
FINANCIALS_SYSTEM_PARAMETERS FSP
WHERE POR.po_release_id = p_document_id
AND POR.po_header_id = POH.po_header_id
AND POR.po_header_id = POL.po_header_id
AND POL.po_line_id = PLL.po_line_id
AND POR.po_release_id = PLL.po_release_id
AND nvl(PLL.closed_code,'OPEN') <> 'FINALLY CLOSED'
AND nvl(POL.cancel_flag,'N') = 'N'
AND nvl(PLL.cancel_flag,'N') = 'N'
AND exists
(SELECT 1
FROM PO_APPROVED_SUPPLIER_LIS_VAL_V ASL, PO_ASL_STATUS_RULES ASR,
MTL_SYSTEM_ITEMS MSI --Bug5597639
WHERE ASL.using_organization_id in (PLL.ship_to_organization_id, -1)
/*Bug5553138 Adding the below three conditions */
AND MSI.organization_id = FSP.inventory_organization_id
AND MSI.inventory_item_id = POL.item_id
AND POL.item_id is not null
AND ASL.vendor_id = POH.vendor_id
AND nvl(ASL.vendor_site_id, POH.vendor_site_id) = POH.vendor_site_id
AND ASL.item_id = POL.item_id
AND ASL.asl_status_id = ASR.status_id
AND ASR.business_rule = '1_PO_APPROVAL'
AND ASR.allow_action_flag <> 'Y' --Bug5597639
UNION ALL
SELECT 1
FROM PO_APPROVED_SUPPLIER_LIS_VAL_V ASL, PO_ASL_STATUS_RULES ASR
WHERE ASL.using_organization_id in (PLL.ship_to_organization_id , -1)
AND ASL.vendor_id = POH.vendor_id
AND nvl(ASL.vendor_site_id, POH.vendor_site_id) = POH.vendor_site_id
AND ASL.item_id is NULL
AND ASL.category_id = POL.category_id --Bug5597639
AND ASL.asl_status_id = ASR.status_id
AND ASR.business_rule = '1_PO_APPROVAL'
AND ASR.allow_action_flag <> 'Y' ); --Bug5597639
INSERT INTO po_online_report_text_gt(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name
)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
PLL.shipment_num,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||POL.line_num||g_delim
||g_shipmsg||g_delim||PLL.shipment_num||g_delim
||l_textline,1,240),
'PO_ATO_ITEM_NA'
FROM po_lines POL,
po_line_locations_gt PLL,
financials_system_parameters FSP,
mtl_system_items MSI
WHERE PLL.po_release_id = p_document_id
AND PLL.po_line_id = POL.po_line_id
AND POL.item_id is not null
AND nvl(POL.cancel_flag, 'N') = 'N' --Bug5353423
AND nvl(POL.closed_code, 'OPEN') <> 'FINALLY CLOSED' --Bug5353423
AND POL.item_id = MSI.inventory_item_id
AND MSI.organization_id = FSP.inventory_organization_id
AND MSI.bom_item_type in (1,2);
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
pll.shipment_num,
0,
p_sequence + ROWNUM,
substr(g_shipmsg||g_delim||pll.shipment_num||g_delim||l_textline,1,240),
'PO_ALL_NO_ITEM'
from po_releases_gt por,po_lines pl,po_line_locations_gt pll,mtl_system_items itm,po_line_types_b plt
where itm.inventory_item_id = pl.item_id
and pl.item_id is not null
and pl.po_line_id = pll.po_line_id
and itm.organization_id = pll.ship_to_organization_id
and itm.purchasing_enabled_flag = 'N'
and pll.po_release_id = por.po_release_id
and por.po_release_id = p_document_id
and pll.po_release_id is not null
and pl.line_type_id = plt.line_type_id
and nvl(plt.outside_operation_flag,'N')=nvl(itm.outside_operation_flag,'N')
and (pll.creation_date >= nvl(por.approved_date,pll.creation_date));
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_ON_HOLD_CANNOT_APPROVE'
FROM PO_RELEASES_GT POR
WHERE POR.po_release_id = p_document_id
AND nvl(POR.HOLD_FLAG,'N') = 'Y';
select poh.po_header_id,poh.vendor_id, poh.vendor_site_id, poh.vendor_contact_id
into l_agreement_id, l_vendor_id,l_vendor_site_id,l_vendor_contact_id
from po_headers_gt poh, po_releases_gt por
where poh.po_header_id = por.po_header_id
and por.po_release_id = p_document_id;
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_PDOI_INVALID_VENDOR'
FROM dual
where not exists (select 'Y'
from PO_HEADERS_GT POH, po_vendors pov
WHERE POH.po_header_id = l_agreement_id
AND pov.vendor_id = poh.vendor_id
AND pov.enabled_flag = 'Y'
AND SYSDATE BETWEEN nvl(pov.start_date_active, SYSDATE-1)
AND nvl(pov.end_date_active, SYSDATE+1));
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_PDOI_INVALID_VENDOR_SITE'
FROM dual
where not exists (select 'Y'
from PO_HEADERS_GT POH, po_vendor_sites povs
WHERE POH.po_header_id = l_agreement_id
AND povs.vendor_site_id = poh.vendor_site_id
AND nvl(povs.rfq_only_site_flag,'N') <> 'Y'
AND povs.purchasing_site_flag = 'Y'
AND SYSDATE < nvl(povs.inactive_date, SYSDATE + 1));
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_PDOI_INVALID_VDR_CNTCT'
FROM dual
--Start of code changes for the bug 16244229
WHERE NOT EXISTS ( SELECT 'Y'
FROM
AP_SUPPLIER_CONTACTS PVC ,
AP_SUPPLIER_SITES_ALL PVS ,
HZ_PARTIES HP ,
HZ_RELATIONSHIPS HPR ,
HZ_PARTY_SITES HPS ,
HZ_ORG_CONTACTS HOC ,
HZ_PARTIES HP2 ,
AP_SUPPLIERS APS,
PO_HEADERS_ALL POH
WHERE PVC.PER_PARTY_ID = HP.PARTY_ID
AND PVC.REL_PARTY_ID = HP2.PARTY_ID
AND PVC.ORG_CONTACT_ID = HOC.ORG_CONTACT_ID(+)
AND PVC.RELATIONSHIP_ID = HPR.RELATIONSHIP_ID
AND HPR.DIRECTIONAL_FLAG ='F'
AND NVL( APS.VENDOR_TYPE_LOOKUP_CODE, 'DUMMY' ) <> 'EMPLOYEE'
AND ( (Pvc.Party_Site_Id = Hps.Party_Site_Id
AND PVS.PARTY_SITE_ID = PVC.ORG_PARTY_SITE_ID
AND PVS.VENDOR_ID = APS.VENDOR_ID
AND SYSDATE < nvl( LEAST(NVL(HPR.END_DATE, TO_DATE('12/31/4712','MM/DD/RRRR')), NVL(PVC.INACTIVE_DATE, TO_DATE('12/31/4712','MM/DD/RRRR'))), SYSDATE+1))
OR (PVC.ORG_PARTY_SITE_ID IS NULL
AND PVC.VENDOR_SITE_ID IS NULL
AND HPR.OBJECT_ID = APS.PARTY_ID
AND HPR.RELATIONSHIP_CODE = 'CONTACT_OF'
And Hpr.Object_Type = 'ORGANIZATION'
AND SYSDATE < NVL(HPR.END_DATE, SYSDATE+1) )
)
AND POH.VENDOR_CONTACT_ID = PVC.VENDOR_CONTACT_ID
AND POH.PO_HEADER_ID=l_agreement_id);
INSERT INTO po_online_report_text_gt
(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type
)
VALUES
(
p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
po_tax_interface_pvt.G_TAX_ERRORS_TBL.line_num(i),
po_tax_interface_pvt.G_TAX_ERRORS_TBL.shipment_num(i),
po_tax_interface_pvt.G_TAX_ERRORS_TBL.distribution_num(i),
p_sequence + i, /* 11851142 Replaced with i from ROWNUM */
l_tax_message || po_tax_interface_pvt.G_TAX_ERRORS_TBL.message_text(i),
'PO_TAX_CALCULATION_FAILED',
'E'
);
INSERT INTO po_online_report_text_gt (online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
PLL.shipment_num,
0,
p_sequence + ROWNUM,
substr (g_shipmsg||g_delim||PLL.shipment_num||g_delim||l_textline,1,240),
'PO_SUB_REL_SHIP_INV_MATCH_NE_R'
FROM PO_RELEASES_GT POR,
PO_LINE_LOCATIONS_GT PLL
WHERE POR.po_release_id = PLL.po_release_id
AND POR.po_release_id = p_document_id
AND Nvl(PLL.LCM_FLAG,'N') = 'Y'
AND Nvl(PLL.match_option,'P') <> 'R'
AND Nvl(PLL.cancel_flag,'N') = 'N'; -- Bug 13809830: Added a condition to skip the submission check for cancelled shipments;
INSERT INTO po_online_report_text_gt (online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
PLL.shipment_num,
POD.distribution_num,
p_sequence + ROWNUM,
substr (g_shipmsg||g_delim||PLL.shipment_num||g_delim||g_distmsg||g_delim||
POD.distribution_num||g_delim||l_textline, 1,240),
'PO_SUB_REL_DIST_DEST_TYPE_NE_I'
FROM PO_RELEASES_GT POR,
PO_LINE_LOCATIONS_GT PLL,
PO_DISTRIBUTIONS_GT POD
WHERE POR.po_release_id = POD.po_release_id
AND POD.line_location_id = PLL.line_location_id
AND POR.po_release_id = p_document_id
AND Nvl(POD.LCM_FLAG,'N') = 'Y'
AND POD.DESTINATION_TYPE_CODE <> 'INVENTORY';
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
l_textline,
'PO_BUYER_INACTIVE'
FROM dual
where not exists (select 'inactive buyer'
from PO_RELEASES_GT POR,
PO_BUYERS_V POB -- Replace PO_BUYERS_VAL_V with PO_BUYERS_V
where por.agent_id = pob.employee_id);
* p_online_report_id: Id used to INSERT INTO online_report_text table
* p_user_id: User performing the action
* p_login_id: Last update login_id
* IN OUT PARAMETERS
* p_sequence: Sequence number of last reported error
* Modifies: Inserts error msgs in online_report_text_gt table, uses
* global_temp tables for processing
* Effects: This procedure runs the document submission checks for PO and
* RELEASES. This procedure compares the price of the PO or Release
* Shipment to the price of the Requisition Line. The Shipment
* Price should be within the tolerance of the Requisition Line
* Returns:
* p_sequence: This parameter contains the current count of number of error
* messages inserted
*/
PROCEDURE check_po_rel_reqprice(p_document_type IN VARCHAR2,
p_document_id IN NUMBER,
p_online_report_id IN NUMBER,
p_user_id IN NUMBER,
p_login_id IN NUMBER,
p_sequence IN OUT NOCOPY NUMBER,
x_return_status OUT NOCOPY VARCHAR2) IS
l_textline po_online_report_text.text_line%TYPE := NULL;
** Setup the PO select cursor
** Select shipment price and convert it to base currency.
** this is done by taking the distribution rate and applying
** it evenly over all distributions. Additionally get the
** shipment unit of measure, quantity, and item_id to be
** passed to the UomC function.
*/
/*Bug4302950 :The shipments were updated with wrong price when supplier submits
change request from ISP to split shipment quantity between two individual shipments.
As the ISP doesnot handle change in distributions,replacing the shipments
quantity with the sum of the distributions quantity in the calculation
of price override so that the shipment price will reflect the correct value.*/
CURSOR po_shipment_cursor (p_document_id NUMBER) IS
SELECT nvl(max(POLL.price_override ) *
sum(decode(plt.order_type_lookup_code,'AMOUNT',1,nvl(POD.rate,1))*
(POD.quantity_ordered -
nvl(POD.quantity_cancelled, 0))) /
/* (max(POLL.quantity) -
nvl(max(POLL.quantity_cancelled),0)), -1) Price, */ --Bug4302950
--Bug16222308 Handling the quantity zero on distribution
decode(
(sum(POD.quantity_ordered -
nvl(POD.quantity_cancelled,0))),0,1,(sum(POD.quantity_ordered -
nvl(POD.quantity_cancelled,0))) )
, -1) Price,
POL.unit_meas_lookup_code uom,
nvl(POLL.shipment_num,0) ship_num,
nvl(POL.line_num,0) line_num,
nvl(POLL.quantity,0) quantity,
nvl(POL.item_id,-1) item_id,
nvl( POLL.line_location_id,0) line_loc_id
FROM PO_LINE_LOCATIONS_GT POLL,
PO_LINE_TYPES_B PLT, -- bug3413891
PO_LINES_GT POL,
PO_DISTRIBUTIONS_GT POD
WHERE POLL.po_line_id = POL.po_line_id
AND POLL.line_location_id = POD.line_location_id
AND POLL.po_header_id = p_document_id
AND POL.line_type_id = PLT.line_type_id
AND nvl(POLL.cancel_flag,'N') <> 'Y'
AND nvl(POLL.closed_code,'OPEN') <> 'FINALLY CLOSED'
AND POLL.shipment_type in ('PLANNED', 'STANDARD')
GROUP BY POL.unit_meas_lookup_code, nvl(POLL.shipment_num,0),
nvl(POL.line_num,0), nvl(POLL.quantity,0),
nvl(POL.item_id,-1), POLL.price_override,
nvl(POLL.line_location_id,0);
/* Setup the Complex Work PO select cursor
** Select Complex Work PO Line information and the
** line loc ID for the first STANDARD pay item for
** that line
*/
CURSOR po_pay_item_cursor (p_document_id NUMBER) IS
SELECT (POL.unit_price
* (sum(POD.rate
* (POD.quantity_ordered - nvl(POD.quantity_cancelled,0)) ))
-- : Avoid divide by zero error
/ Decode(POLL.quantity, 0, 1) - nvl(POLL.quantity_cancelled, 0)
) price,
POL.unit_meas_lookup_code uom,
POLL.shipment_num ship_num,
POL.line_num line_num,
POL.quantity quantity,
nvl(POL.item_id,-1) item_id,
POLL.line_location_id line_loc_id
FROM PO_LINE_LOCATIONS_GT POLL,
PO_LINES_GT POL,
PO_DISTRIBUTIONS_GT POD
WHERE POL.po_header_id = p_document_id
AND POD.line_location_id = POLL.line_location_id
AND POLL.line_location_id =
(SELECT min(POLL2.line_location_id)
FROM PO_LINE_LOCATIONS_GT POLL2
WHERE POLL2.po_line_id = POL.po_line_id
AND POLL2.shipment_type = 'STANDARD'
)
GROUP BY POL.unit_price, POLL.quantity, nvl(POLL.quantity_cancelled, 0),
POL.unit_meas_lookup_code,
POLL.shipment_num,
POL.line_num,
POL.quantity,
nvl(POL.item_id,-1),
POLL.line_location_id;
** Setup the Release select cursor
** Select shipment price and convert it to base currency.
** this is done by taking the distribution rate and applying
** it evenly over all distributions. Additionally get the
** shipment unit of measure, quantity, and item_id to be
** passed to the UomC function. Get the shipment_num and
** line_num to be passed to the pooinsingle function.
*/
CURSOR rel_shipment_cursor (p_document_id NUMBER) IS
SELECT /*+ FULL(POLL) */ -- bug3413891
nvl(max(POLL.price_override) *
sum(decode(plt.order_type_lookup_code,'AMOUNT',1,nvl(POD.rate,1))*
(POD.quantity_ordered -
nvl(POD.quantity_cancelled, 0))) /
/* (max(POLL.quantity) -
nvl(max(POLL.quantity_cancelled),0)), -1) Price, */ --Bug4302950
--Bug16222308 Handling the quantity zero on distribution
decode( (sum(POD.quantity_ordered -
nvl(POD.quantity_cancelled,0))),0,1,(sum(POD.quantity_ordered -
nvl(POD.quantity_cancelled,0))) )
, -1) Price,
POL.unit_meas_lookup_code uom,
nvl(POLL.shipment_num,0) ship_num,
nvl(POL.line_num,0) line_num,
nvl(POLL.quantity,0) quantity,
nvl(POL.item_id,0) item_id,
nvl( POLL.line_location_id,0) line_loc_id
FROM PO_LINE_LOCATIONS_GT POLL,
PO_LINE_TYPES_B PLT, -- bug3413891
PO_LINES POL,
PO_DISTRIBUTIONS_GT POD --
WHERE POLL.po_line_id = POL.po_line_id
AND POLL.line_location_id = POD.line_location_id
AND POLL.po_release_id = p_document_id
AND POL.line_type_id = PLT.line_type_id
AND nvl(POLL.cancel_flag,'N') <> 'Y'
AND nvl(POLL.closed_code,'OPEN') <> 'FINALLY CLOSED'
GROUP BY POL.unit_meas_lookup_code, nvl(POLL.shipment_num,0),
nvl(POL.line_num,0), nvl(POLL.quantity,0),
nvl(POL.item_id,0), POLL.price_override,
nvl(POLL.line_location_id,0);
SELECT min(PRL.unit_price),
PRL.unit_meas_lookup_code,
min(POL.line_num),
min(POLL.shipment_num),
min(PRL.org_id) --
FROM PO_REQUISITION_LINES_ALL PRL, --
PO_LINE_LOCATIONS_GT POLL,
PO_LINES POL
WHERE PRL.line_location_id = POLL.line_location_id
AND POLL.line_location_id = p_line_location_id
AND PRL.unit_price >= 0
AND POLL.po_line_id = POL.po_line_id
GROUP BY PRL.unit_meas_LOOKUP_code;
SELECT MIN(PRL.currency_unit_price),
MIN(PRL.currency_code),
PRL.unit_meas_lookup_code,
MIN(POL.line_num) ,
MIN(POLL.shipment_num) ,
MIN(PRL.org_id) --
FROM PO_REQUISITION_LINES_ALL PRL, --
PO_LINE_LOCATIONS_GT POLL ,
PO_LINES POL
WHERE PRL.line_location_id = POLL.line_location_id
AND POLL.line_location_id = p_line_location_id
AND PRL.unit_price >= 0
AND POLL.po_line_id = POL.po_line_id
GROUP BY PRL.unit_meas_LOOKUP_code;
SELECT min(PRL.unit_price),
PRL.unit_meas_lookup_code,
sum(PD.quantity_ordered),
min(POL.line_num),
min(POLL.shipment_num),
min(PRL.org_id) --
FROM PO_REQUISITION_LINES_ALL PRL, --
PO_LINE_LOCATIONS_GT POLL,
PO_LINES POL,
PO_DISTRIBUTIONS PD,
PO_REQ_DISTRIBUTIONS_ALL PRD --
WHERE POLL.line_location_id = p_line_location_id
AND POLL.po_line_id = POL.po_line_id
AND PRL.unit_price >= 0
AND POLL.line_location_id = PD.line_location_id
AND PD.req_distribution_id = PRD.distribution_id
AND PRD.requisition_line_id = PRL.requisition_line_id
GROUP BY PRL.requisition_line_id, PRL.unit_meas_lookup_code;
SELECT min(PRL.currency_unit_price),
min(PRL.currency_code),
PRL.unit_meas_lookup_code,
sum(PD.quantity_ordered),
min(POL.line_num),
min(POLL.shipment_num),
min(PRL.org_id) --
FROM PO_REQUISITION_LINES_ALL PRL, --
PO_LINE_LOCATIONS_GT POLL,
PO_LINES POL,
PO_DISTRIBUTIONS PD,
PO_REQ_DISTRIBUTIONS_ALL PRD --
WHERE POLL.line_location_id = p_line_location_id
AND POLL.po_line_id = POL.po_line_id
AND PRL.unit_price >= 0
AND POLL.line_location_id = PD.line_location_id
AND PD.req_distribution_id = PRD.distribution_id
AND PRD.requisition_line_id = PRL.requisition_line_id
GROUP BY PRL.requisition_line_id, PRL.unit_meas_lookup_code;
SELECT nvl(enforce_price_change_allowance, 'N'),
nvl(enforce_price_change_amount, 'N'),
nvl(price_change_amount, -1)
INTO l_enforce_price_tolerance,
l_enforce_price_amount,
l_amount_tolerance
FROM po_system_parameters;
SELECT FND.currency_code, nvl(FND.extended_precision,5)
INTO l_pou_func_curr, l_pou_func_curr_ext_precn
FROM fnd_currencies FND, financials_system_parameters FSP,
gl_sets_of_books SOB
WHERE FSP.set_of_books_id = SOB.set_of_books_id
AND SOB.currency_code = FND.currency_code;
SELECT POH.currency_code, nvl(trunc(POH.rate_date), trunc(POLL.creation_date))
INTO l_po_curr, l_rate_date
FROM PO_HEADERS POH, PO_LINE_LOCATIONS_GT POLL
WHERE POLL.line_location_id = l_line_location_id(shipment_line)
AND POLL.po_header_id = POH.po_header_id;
SELECT POL.ORDER_TYPE_LOOKUP_CODE
INTO l_po_line_type
FROM PO_LINE_LOCATIONS_GT POLL,
PO_LINES_GT POL
WHERE POLL.po_line_id = POL.po_line_id
AND POLL.line_location_id = l_line_location_id(shipment_line);
SELECT 'Y'
INTO l_is_same_foreign_currency
FROM DUAL
WHERE NOT EXISTS
(SELECT DISTINCT 1
FROM PO_REQUISITION_LINES_ALL PRL,
FINANCIALS_SYSTEM_PARAMS_ALL FSP,
GL_SETS_OF_BOOKS SOB
WHERE PRL.LINE_LOCATION_ID = l_line_location_id(shipment_line)
AND FSP.SET_OF_BOOKS_ID = SOB.SET_OF_BOOKS_ID
AND FSP.ORG_ID = PRL.ORG_ID
AND NVL(PRL.CURRENCY_CODE,SOB.CURRENCY_CODE) <> l_po_curr)
AND l_po_curr <> l_pou_func_curr
AND l_po_line_type = 'QUANTITY';
SELECT NVL(MSI.price_tolerance_percent/100,
NVL(POSP.price_change_allowance/100,-1))
INTO l_price_tolerance_allowed
FROM MTL_SYSTEM_ITEMS MSI,
PO_SYSTEM_PARAMETERS POSP,
FINANCIALS_SYSTEM_PARAMETERS FSP
WHERE msi.inventory_item_id(+) = l_item_id(shipment_line)
AND MSI.organization_id(+) = FSP.inventory_organization_id;
SELECT NVL(ROUND(MAX(POLL.price_override) ,l_pou_func_curr_ext_precn) ,-1) Price
INTO l_ship_price_ext_precn
FROM PO_LINE_LOCATIONS_ALL POLL
WHERE POLL.line_location_id = l_line_location_id(shipment_line)
AND NVL(POLL.cancel_flag,'N') <> 'Y'
AND NVL(POLL.closed_code,'OPEN') <> 'FINALLY CLOSED';
INSERT
INTO po_online_report_text_gt
(
online_report_id ,
last_update_login,
last_updated_by ,
last_update_date ,
created_by ,
creation_date ,
line_num ,
shipment_num ,
distribution_num ,
sequence ,
text_line ,
message_name
)
VALUES
(
p_online_report_id ,
p_login_id ,
p_user_id ,
sysdate ,
p_user_id ,
sysdate ,
l_po_req_line_num(req_line),
l_po_req_ship_num(req_line),
0 ,
p_sequence +1 ,
SUBSTR(g_linemsg
||g_delim
|| l_po_req_line_num(req_line)
||g_delim
|| g_shipmsg
||g_delim
||l_po_req_ship_num(req_line)
||g_delim
||l_textline,1,240),
'PO_SUB_REQ_PRICE_TOL_EXCEED'
);
SELECT SOB.currency_code
INTO l_req_ou_func_curr
FROM financials_system_params_all FSP, gl_sets_of_books SOB
WHERE FSP.set_of_books_id = SOB.set_of_books_id
AND NVL(FSP.org_id, -99) = NVL(l_requesting_org_id(req_line),-99);
SELECT default_rate_type
INTO l_rate_type
FROM po_system_parameters;
** insert into the Online Report Text Table.
**
** The following formula will cost precision erro when the
** increase equals to the tolerance.
** Patched as part of bug 432746.
**
**if ((((ship_price_in_base_curr * rate) /
** req_line_unit_price[i]) -1) <= tolerance)
*/
/* Bug 638073
the formula for tolerance check should be
ship_price_in_base_curr/ req_line_unit_pric e[i] *rate
since rate is the conversion from shipment uom to req uom
*/
/* svaidyan 09/10/98 726568 Modified the price tolerance
to check against tolerance + 1.000001. This is because,
the reqs sourced to a blanket store the unit price rounded
to 5 decimal places and hence we compare only upto the 5th
decimal place.
*/
/* Bug 3262304, 3266272 mbhargav Using the req price to
the ext_precn of the currency. Also replacing the division
by multiplication on the other side
IF (((l_ship_price_ext_precn) /
(l_req_line_unit_price(req_line) *
l_shipment_to_req_rate ))
> (l_price_tolerance_allowed + 1.000001))
THEN
*/
--
IF (l_ship_price_ext_precn >
( (l_req_line_price_ext_precn * l_shipment_to_req_rate )
* (l_price_tolerance_allowed + 1.000001)
)
) THEN
--
l_progress := '030';
INSERT into po_online_report_text_gt(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
VALUES ( p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
l_po_req_line_num(req_line),
l_po_req_ship_num(req_line),
0,
p_sequence +1,
substr(g_linemsg||g_delim||
l_po_req_line_num(req_line)||g_delim||
g_shipmsg||g_delim||l_po_req_ship_num(req_line)
||g_delim||l_textline,1,240),
'PO_SUB_REQ_PRICE_TOL_EXCEED');
SELECT NVL(ROUND(MAX(POLL.price_override) ,l_pou_func_curr_ext_precn) ,-1) Price
INTO l_ship_price_ext_precn
FROM PO_LINE_LOCATIONS_ALL POLL
WHERE POLL.line_location_id = l_line_location_id(shipment_line)
AND NVL(POLL.cancel_flag,'N') <> 'Y'
AND NVL(POLL.closed_code,'OPEN') <> 'FINALLY CLOSED';
INSERT
INTO po_online_report_text_gt
(
online_report_id ,
last_update_login,
last_updated_by ,
last_update_date ,
created_by ,
creation_date ,
line_num ,
shipment_num ,
distribution_num ,
sequence ,
text_line ,
message_name
)
VALUES
(
p_online_report_id ,
p_login_id ,
p_user_id ,
sysdate ,
p_user_id ,
sysdate ,
l_po_req_line_num(req_line),
l_po_req_ship_num(req_line),
0 ,
p_sequence +1 ,
SUBSTR(g_linemsg
||g_delim
|| l_po_req_line_num(req_line)
||g_delim
|| g_shipmsg
||g_delim
||l_po_req_ship_num(req_line)
||g_delim
||l_textline,1,240),
'PO_SUB_REQ_PRICE_TOL_EXCEED'
);
SELECT SOB.currency_code
INTO l_req_ou_func_curr
FROM financials_system_params_all FSP, gl_sets_of_books SOB
WHERE FSP.set_of_books_id = SOB.set_of_books_id
AND NVL(FSP.org_id, -99) = NVL(l_requesting_org_id(req_line),-99);
SELECT default_rate_type
INTO l_rate_type
FROM po_system_parameters;
INSERT into po_online_report_text_gt(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
VALUES ( p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
l_po_req_line_num(req_line),
l_po_req_ship_num(req_line),
0,
p_sequence +1,
substr(g_linemsg||g_delim||
l_po_req_line_num(req_line)||g_delim||
g_shipmsg||g_delim||l_po_req_ship_num(req_line)
||g_delim||l_textline,1,240),
'PO_SUB_REQ_AMT_TOL_EXCEED');
* p_online_report_id: Id used to INSERT INTO online_report_text table
* p_user_id: User performing the action
* p_login_id: Last update login_id
* IN OUT PARAMETERS
* p_sequence: Sequence number of last reported error
* Modifies: Inserts error msgs in online_report_text_gt table, uses
* global_temp tables for processing
* Effects: This procedure runs the document submission checks for HEADERS
* of POs and PAs
* Returns:
* p_sequence: This parameter contains the current count of number of error
* messages inserted
*/
PROCEDURE check_po_pa_header(p_document_id IN NUMBER,
p_online_report_id IN NUMBER,
p_user_id IN NUMBER,
p_login_id IN NUMBER,
p_sequence IN OUT NOCOPY NUMBER,
x_return_status OUT NOCOPY VARCHAR2) IS
l_textline po_online_report_text.text_line%TYPE := NULL;
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_SUB_VENDOR_ON_HOLD'
FROM PO_HEADERS_GT POH, PO_VENDORS POV, PO_SYSTEM_PARAMETERS PSP
WHERE POV.vendor_id = POH.vendor_id
AND POH.po_header_id = p_document_id
AND nvl(PSP.ENFORCE_VENDOR_HOLD_FLAG,'N') = 'Y'
AND nvl(POV.hold_flag,'N') = 'Y';
SELECT POH.vendor_id,
POH.vendor_site_id,
POH.vendor_contact_id,
POH.ship_to_location_id,
POH.bill_to_location_id,
POH.currency_code,
SOB.currency_code,
POH.rate_type,
POH.rate,
POH.rate_date,
POH.acceptance_required_flag
INTO l_vendor_id,
l_vendor_site_id,
l_vendor_contact_id,
l_ship_to_location_id,
l_bill_to_location_id,
l_currency_code,
l_sob_currency_code,
l_rate_type,
l_rate,
l_rate_date,
l_acceptance_required
FROM PO_HEADERS_GT POH,
GL_SETS_OF_BOOKS SOB,
FINANCIALS_SYSTEM_PARAMETERS FSP
WHERE POH.po_header_id = p_document_id
AND SOB.set_of_books_id = FSP.set_of_books_id;
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
VALUES (p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + 1,
substr(l_textline,1,240),
'PO_SUB_SYSTEM_SETUP');
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
VALUES (p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + 1,
substr(l_textline,1,240),
'PO_SUB_ENTER_VENDOR');
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
VALUES (p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + 1,
substr(l_textline,1,240),
'PO_SUB_ENTER_VENDOR_SITE');
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
VALUES (p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + 1,
substr(l_textline,1,240),
'PO_SUB_NO_SHIP_TO_LOC_ID');
SELECT hlt.location_code
INTO l_invalid_location
FROM hr_locations_all hla,
hr_locations_all_tl hlt
WHERE hla.location_id = l_ship_to_location_id
AND NVL(TRUNC(hla.inactive_date), TRUNC(SYSDATE)+1 ) <= TRUNC(SYSDATE)
AND hlt.location_id=hla.location_id
AND hlt.language=USERENV('LANG');
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
VALUES
(
p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
0,
0,
0,
p_sequence + 1,
substr(PO_CORE_S.get_translated_text
( 'PO_SUB_INVALID_SHIP_TO_LOC',
'SHIP_TO_LOC',
l_invalid_location),1,240),
'PO_SUB_INVALID_SHIP_TO_LOC'
);
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
VALUES (p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + 1,
substr(l_textline,1,240),
'PO_SUB_NO_BILL_TO_LOC_ID');
SELECT hlt.location_code
INTO l_invalid_location
FROM hr_locations_all hla,
hr_locations_all_tl hlt
WHERE hla.location_id = l_bill_to_location_id
AND NVL(TRUNC(hla.inactive_date), TRUNC(SYSDATE)+1 ) <= TRUNC(SYSDATE)
AND hlt.location_id=hla.location_id
AND hlt.language=USERENV('LANG');
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
VALUES
(
p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
0,
0,
0,
p_sequence + 1,
substr(PO_CORE_S.get_translated_text('PO_SUB_INVALID_BILL_TO_LOC','BILL_TO_LOC',l_invalid_location),1,240),
'PO_SUB_INVALID_BILL_TO_LOC'
);
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
VALUES (p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + 1,
substr(l_textline,1,240),
'PO_SUB_NO_CURRENCY_CODE');
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
VALUES (p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + 1,
substr(l_textline,1,240),
'PO_SUB_NO_RATE_TYPE');
INSERT INTO po_online_report_text_gt
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT p_online_report_id
, p_login_id
, p_user_id
, sysdate
, p_user_id
, sysdate
, NULL
, NULL
, NULL
, p_sequence + ROWNUM
, l_textline
, 'PO_SUB_USER_RATE_TYPE'
FROM dual
WHERE exists ( SELECT 'Rate-based lines exist'
FROM po_lines_gt POL
, po_line_types_b PLT
WHERE p_document_id = POL.po_header_id
AND POL.line_type_id = PLT.line_type_id
AND PLT.order_type_lookup_code = 'RATE'
);
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_ON_HOLD_CANNOT_APPROVE'
FROM PO_HEADERS_GT POH
WHERE POH.po_header_id = p_document_id
AND nvl(POH.USER_HOLD_FLAG,'N') = 'Y';
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_PDOI_INVALID_VENDOR'
FROM dual
where not exists (select 'Y'
from PO_HEADERS_GT POH, po_vendors pov
WHERE POH.po_header_id = p_document_id
AND pov.vendor_id = poh.vendor_id
AND pov.enabled_flag = 'Y'
AND SYSDATE BETWEEN nvl(pov.start_date_active, SYSDATE-1)
AND nvl(pov.end_date_active, SYSDATE+1));
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_PDOI_INVALID_VENDOR_SITE'
FROM dual
where not exists (select 'Y'
from PO_HEADERS_GT POH, po_vendor_sites povs
WHERE POH.po_header_id = p_document_id
AND povs.vendor_site_id = poh.vendor_site_id
AND nvl(povs.rfq_only_site_flag,'N') <> 'Y'
AND povs.purchasing_site_flag = 'Y'
AND SYSDATE < nvl(povs.inactive_date, SYSDATE + 1));
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_PDOI_INVALID_VDR_CNTCT'
FROM dual
--Start of code changes for the bug 16244229
WHERE NOT EXISTS ( SELECT 'Y'
FROM
AP_SUPPLIER_CONTACTS PVC ,
AP_SUPPLIER_SITES_ALL PVS ,
HZ_PARTIES HP ,
HZ_RELATIONSHIPS HPR ,
HZ_PARTY_SITES HPS ,
HZ_ORG_CONTACTS HOC ,
HZ_PARTIES HP2 ,
AP_SUPPLIERS APS,
po_headers_gt POH
WHERE PVC.PER_PARTY_ID = HP.PARTY_ID
AND PVC.REL_PARTY_ID = HP2.PARTY_ID
AND PVC.ORG_CONTACT_ID = HOC.ORG_CONTACT_ID(+)
AND PVC.RELATIONSHIP_ID = HPR.RELATIONSHIP_ID
AND HPR.DIRECTIONAL_FLAG ='F'
AND NVL( APS.VENDOR_TYPE_LOOKUP_CODE, 'DUMMY' ) <> 'EMPLOYEE'
AND ( (Pvc.Party_Site_Id = Hps.Party_Site_Id
AND PVS.PARTY_SITE_ID = PVC.ORG_PARTY_SITE_ID
AND PVS.VENDOR_ID = APS.VENDOR_ID
AND SYSDATE < nvl( LEAST(NVL(HPR.END_DATE, TO_DATE('12/31/4712','MM/DD/RRRR')), NVL(PVC.INACTIVE_DATE, TO_DATE('12/31/4712','MM/DD/RRRR'))), SYSDATE+1))
OR (PVC.ORG_PARTY_SITE_ID IS NULL
AND PVC.VENDOR_SITE_ID IS NULL
AND HPR.OBJECT_ID = APS.PARTY_ID
AND HPR.RELATIONSHIP_CODE = 'CONTACT_OF'
And Hpr.Object_Type = 'ORGANIZATION'
AND SYSDATE < NVL(HPR.END_DATE, SYSDATE+1) )
)
AND POH.VENDOR_CONTACT_ID = PVC.VENDOR_CONTACT_ID
AND POH.PO_HEADER_ID=p_document_id);
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
VALUES (p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + 1,
substr(l_textline,1,240),
'PO_SUB_ENTER_VENDOR_CONTACT');
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_CONTACT_WITHOUT_VALID_USER'
FROM dual
WHERE NOT EXISTS (SELECT 'Y'
FROM po_supplier_contacts_val_v pscv,
po_headers_gt poh,
fnd_user fu
WHERE pscv.vendor_contact_id = poh.vendor_contact_id
AND pscv.vendor_site_id = poh.vendor_site_id -- bug 9865162, included the check for vendor_site_id
AND poh.po_header_id = p_document_id
AND fu.user_name = pscv.user_name
AND trunc(sysdate) BETWEEN trunc(fu.start_date)
and trunc(nvl(fu.end_date,SYSDATE+1)));
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_SUB_AWARD_TYPE_NULL'
FROM PO_HEADERS_GT POH
WHERE POH.po_header_id = p_document_id
AND POH.type_lookup_code = 'STANDARD'
AND POH.clm_award_type IS NULL
AND nvl(l_clm_po,'N') = 'Y';
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_SUB_IDV_WITHOUT_SOURCE'
FROM PO_HEADERS_GT POH
WHERE POH.po_header_id = p_document_id
AND POH.type_lookup_code = 'STANDARD'
AND Nvl(POH.clm_award_type,'N') IN (SELECT lookup_code
FROM PO_LOOKUP_CODES
WHERE lookup_type = 'PO_CLM_AWD_TYPE_ORD_OFF_IDV')
AND POH.clm_source_document_id IS NULL
AND POH.clm_external_idv IS NULL
AND nvl(l_clm_po,'N') = 'Y';
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_SUB_AWARD_WITH_SOURCE'
FROM PO_HEADERS_GT POH
WHERE POH.po_header_id = p_document_id
AND POH.type_lookup_code = 'STANDARD'
AND Nvl(POH.clm_award_type,'N') IN (SELECT lookup_code
FROM PO_LOOKUP_CODES
WHERE lookup_type = 'PO_CLM_AWD_TYPE_SPO')
AND (POH.clm_source_document_id IS NOT NULL
OR
POH.clm_external_idv IS NOT NULL )
AND nvl(l_clm_po,'N') = 'Y';
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
l_textline,
'PO_BUYER_INACTIVE'
FROM dual
where not exists (select 'inactive buyer'
from PO_HEADERS_GT POH,
PO_BUYERS_V POB -- Replace PO_BUYERS_VAL_V with PO_BUYERS_V
where poh.agent_id = pob.employee_id);
* p_online_report_id: Id used to INSERT INTO online_report_text table
* p_user_id: User performing the action
* p_login_id: Last update login_id
* p_check_asl: Determines whether to perform ASL checks...
* PO_SUB_ITEM_NOT_APPROVED, PO_SUB_ITEM_ASL_DEBARRED
* IN OUT PARAMETERS
* p_sequence: Sequence number of last reported error
* Modifies: Updates PO_DISTRIBUTIONS table with RATE information.
* Inserts error msgs in online_report_text_gt table, uses
* global_temp tables for processing
* Effects: This procedure runs the document submission checks for POs
* Returns:
* p_sequence: This parameter contains the current count of number of error
* messages inserted
*/
PROCEDURE check_po(p_document_id IN NUMBER,
p_online_report_id IN NUMBER,
p_user_id IN NUMBER,
p_login_id IN NUMBER,
p_sequence IN OUT NOCOPY NUMBER,
x_return_status OUT NOCOPY VARCHAR2) IS
l_textline po_online_report_text.text_line%TYPE := NULL;
SELECT 'Y' into l_clm_document
FROM po_headers_all h,
po_doc_style_headers s
WHERE h.po_header_id = p_document_id
AND h.style_id = s.style_id
AND Nvl(s.clm_flag,'N') = 'Y';
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0, 0, 0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_SUB_HEADER_NO_LINES'
FROM PO_HEADERS_GT POH
WHERE POH.po_header_id = p_document_id AND
NOT EXISTS (SELECT 'Lines Exist'
FROM PO_LINES_GT POL
WHERE POL.po_header_id = POH.po_header_id
--Bug 3289638 Check for any line to exist irrespective of cancel_flag
--AND nvl(POL.cancel_flag,'N') = 'N'
)
AND Nvl(poh.draft_id,-1) = -1 ;-- added this conditions so that this Sql is executed only for awards and is skipped for mods and par.
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
0,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||POL.line_num||g_delim||l_textline,1,240),
'PO_SUB_LINE_NO_SHIP'
FROM PO_LINES_GT POL
WHERE POL.po_header_id = p_document_id AND
nvl(POL.cancel_flag,'N') = 'N' AND
-- CLM Aprvl Info Lines will not be having Shipments
Nvl(POL.CLM_INFO_FLAG,'N')= 'N' AND
-- CLM Aprvl
nvl(POL.closed_code,'OPEN') <> 'FINALLY CLOSED' AND
NOT EXISTS (SELECT 'Shipments Exist'
FROM PO_LINE_LOCATIONS_GT PLL
WHERE PLL.po_line_id = POL.po_line_id AND
PLL.shipment_type in ('STANDARD','PLANNED'));
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
PLL.shipment_num,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||Nvl(POL.line_num_display,POL.line_num)||g_delim||
g_shipmsg||g_delim||PLL.shipment_num||g_delim||l_textline,1,240),
Decode(l_clm_document, 'Y', 'PO_CLM_SUB_SHIP_NO_DIST_WARN', 'PO_SUB_SHIP_NO_DIST'),
Decode(l_clm_document, 'Y', 'W', NULL)
FROM PO_LINE_LOCATIONS_GT PLL,PO_LINES_GT POL
WHERE PLL.po_line_id = POL.po_line_id AND
PLL.po_header_id = p_document_id AND
nvl(PLL.cancel_flag, 'N') = 'N' AND
nvl(POL.cancel_flag, 'N') = 'N' AND
nvl(PLL.closed_code, 'OPEN') <> 'FINALLY CLOSED' AND
PLL.shipment_type in ('STANDARD', 'PLANNED', 'PREPAYMENT') --
AND Nvl(POL.CLM_OPTION_INDICATOR, 'B') <> 'O'
AND Nvl(POL.CLM_INFO_FLAG,'N')= 'N'
AND NOT EXISTS (SELECT 'Distribution Exists'
FROM PO_DISTRIBUTIONS_GT POD
WHERE POD.line_location_id = PLL.line_location_id);
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
PLL.shipment_num,
POD.distribution_num,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||POL.line_num||g_delim
||g_shipmsg||g_delim||PLL.shipment_num||g_delim
||g_distmsg||g_delim||POD.distribution_num||g_delim
||l_textline,1,240),
'PO_SUB_DIST_RATE_NULL'
FROM PO_DISTRIBUTIONS_GT POD,PO_LINE_LOCATIONS_GT PLL,PO_LINES_GT POL,
PO_HEADERS_GT POH,GL_SETS_OF_BOOKS SOB,FINANCIALS_SYSTEM_PARAMETERS FSP
WHERE POD.po_header_id = POH.po_header_id
AND POD.line_location_id = PLL.line_location_id
AND PLL.po_line_id = POL.po_line_id
AND POH.po_header_id = p_document_id
AND nvl(PLL.cancel_flag,'N') = 'N'
AND nvl(POL.cancel_flag,'N') = 'N'
AND nvl(PLL.closed_code,'OPEN') <> 'FINALLY CLOSED'
AND PLL.shipment_type in ('STANDARD', 'PLANNED')
AND SOB.set_of_books_id = FSP.set_of_books_id
AND SOB.currency_code <> POH.currency_code
AND (POD.rate is null
OR (POH.rate_type <> 'User'
AND POD.rate_date is null));
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
PLL.shipment_num,
POD.distribution_num,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||POL.line_num||g_delim
||g_shipmsg||g_delim||PLL.shipment_num||g_delim
||g_distmsg||g_delim||POD.distribution_num||g_delim
||l_textline,1,240),
'PO_SUB_DIST_RATE_NOT_NULL'
FROM PO_DISTRIBUTIONS_GT POD,PO_LINE_LOCATIONS_GT PLL,PO_LINES_GT POL,
PO_HEADERS_GT POH,GL_SETS_OF_BOOKS SOB,FINANCIALS_SYSTEM_PARAMETERS FSP
WHERE POD.po_header_id = POH.po_header_id
AND POD.line_location_id = PLL.line_location_id
AND PLL.po_line_id = POL.po_line_id
AND POH.po_header_id = p_document_id
AND nvl(PLL.cancel_flag,'N') = 'N'
AND nvl(POL.cancel_flag,'N') = 'N'
AND nvl(PLL.closed_code,'OPEN') <> 'FINALLY CLOSED'
AND PLL.shipment_type in ('STANDARD', 'PLANNED')
AND SOB.set_of_books_id = FSP.set_of_books_id
AND SOB.currency_code = POH.currency_code
AND POD.rate is not null;
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_SUB_STD_CONTRACT_AMT_LIMIT'
FROM DUAL;
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
0,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||POL.line_num||g_delim||l_textline,1,240),
'PO_SUB_REF_UNAPPROVED_CONTRACT'
FROM PO_LINES_GT POL,
PO_HEADERS_ALL POC -- : use all table
WHERE POL.po_header_id = p_document_id
AND POL.contract_id = POC.po_header_id --
AND POC.type_lookup_code = 'CONTRACT'
/* R12 GCPA
+ If Profile ALLOW_REFERENCING_CPA_UNDER_AMENDMENT is Y, then we can refer any Contract Which is approved Once
+ Else Contract should be in APPROVED state */
AND ( (NVL(FND_PROFILE.VALUE('ALLOW_REFERENCING_CPA_UNDER_AMENDMENT'),'N') = 'Y'
AND POC.Approved_Date Is Null
)
or ( NVL(FND_PROFILE.VALUE('ALLOW_REFERENCING_CPA_UNDER_AMENDMENT'),'N') = 'N'
and nvl(POC.APPROVED_FLAG,'N') <> 'Y')
)
AND NVL(POC.user_hold_flag, 'N') <> 'Y'; --< Bug 3422733 >
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
0,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||POL.line_num||g_delim||l_textline,1,240),
'PO_SUB_LINE_CONTRACT_MISMATCH',
Decode(is_approved_clm_document(p_document_id), 'Y', 'W', NULL)
FROM PO_LINES_GT POL,
PO_HEADERS_ALL POC, -- : Use _ALL table
PO_HEADERS_GT POH
WHERE POH.po_header_id = p_document_id
AND POL.po_header_id = POH.po_header_id
AND POL.contract_id = POC.po_header_id --
AND POC.type_lookup_code = 'CONTRACT'
AND nvl(POC.cancel_flag , 'N') = 'N'
AND POC.vendor_id <> POH.vendor_id;
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT /*+ FULL(POL) */ -- bug3413891
p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
0,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||POL.line_num||g_delim||l_textline||
MTL1.uom_class||' , '||MTL2.uom_class,1,240),
'PO_SUB_UOM_CLASS_CONVERSION'
FROM MTL_UOM_CLASS_CONVERSIONS MOU, PO_LINES_GT POL,
MTL_UOM_CLASSES_TL MTL1, MTL_UOM_CLASSES_TL MTL2
WHERE POL.item_id = MOU.inventory_item_id
AND (nvl(MOU.disable_date, TRUNC(SYSDATE))+1) < TRUNC(SYSDATE)
AND POL.po_header_id = p_document_id
AND MOU.from_uom_class = MTL1.uom_class
AND MOU.to_uom_class = MTL2.uom_class
AND EXISTS
(SELECT 'uom conversion exists'
FROM MTL_UNITS_OF_MEASURE MUM
WHERE POL.unit_meas_lookup_code = MUM.unit_of_measure
AND MOU.to_uom_class = MUM.uom_class);
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
PLL.shipment_num,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||POL.line_num||g_delim||
g_shipmsg||g_delim||PLL.shipment_num||g_delim
||l_textline,1,240),
'PO_SUB_ITEM_NOT_APPROVED'
FROM MTL_SYSTEM_ITEMS MSI, PO_LINE_LOCATIONS_GT PLL,
PO_LINES_GT POL, PO_HEADERS_GT POH,
FINANCIALS_SYSTEM_PARAMETERS FSP
WHERE POH.po_header_id = p_document_id
AND POH.po_header_id = POL.po_header_id
AND PLL.po_line_id(+) = POL.po_line_id
AND PLL.po_release_id IS NULL
AND MSI.organization_id = PLL.ship_to_organization_id
AND MSI.inventory_item_id = POL.item_id
AND POL.item_id is not null
AND nvl(PLL.closed_code,'OPEN') <> 'FINALLY CLOSED'
AND nvl(POL.cancel_flag,'N') = 'N'
AND nvl(PLL.cancel_flag,'N') = 'N'
AND nvl(MSI.must_use_approved_vendor_flag,'N') = 'Y'
AND NOT exists
(SELECT 1
FROM PO_APPROVED_SUPPLIER_LIS_VAL_V ASL, PO_ASL_STATUS_RULES ASR
WHERE ASL.using_organization_id in (PLL.ship_to_organization_id, -1)
AND ASL.vendor_id = POH.vendor_id
--Bug 16573818: Added the 'OR' clause below to match the vendor site code
--for cases in which the vendor site IDs are different, but code is same.
AND (nvl(ASL.vendor_site_id, POH.vendor_site_id) = POH.vendor_site_id
OR EXISTS ( SELECT 'vendor site code matches ASL'
FROM po_vendor_sites_all pvs1, po_vendor_sites_all pvs2
WHERE pvs1. vendor_site_id = ASL.vendor_site_id
and pvs2.vendor_site_id = POH.vendor_site_id
and pvs1.vendor_site_code = pvs2.vendor_site_code) )
AND ASL.item_id = POL.item_id
AND ASL.asl_status_id = ASR.status_id
AND ASR.business_rule = '1_PO_APPROVAL'
AND ASR.allow_action_flag = 'Y' --Bug5597639
UNION ALL
SELECT 1
FROM PO_APPROVED_SUPPLIER_LIS_VAL_V ASL, PO_ASL_STATUS_RULES ASR
WHERE ASL.using_organization_id in (PLL.ship_to_organization_id, -1)
AND ASL.vendor_id = POH.vendor_id
AND nvl(ASL.vendor_site_id, POH.vendor_site_id) = POH.vendor_site_id
AND ASL.item_id is NULL
AND not exists
(SELECT ASL1.ASL_ID
FROM PO_APPROVED_SUPPLIER_LIS_VAL_V ASL1
WHERE ASL1.ITEM_ID = POL.item_id
AND ASL1.using_organization_id in
(PLL.ship_to_organization_id, -1))
AND ASL.category_id in
(SELECT MIC.category_id
FROM MTL_ITEM_CATEGORIES MIC
WHERE MIC.inventory_item_id = POL.item_id
AND MIC.organization_id = PLL.ship_to_organization_id)
AND ASL.asl_status_id = ASR.status_id
AND ASR.business_rule = '1_PO_APPROVAL'
AND ASR.allow_action_flag = 'Y'); --Bug5597639
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
PLL.shipment_num,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||POL.line_num||g_delim
||g_shipmsg||g_delim||PLL.shipment_num||g_delim
||l_textline,1,240),
'PO_SUB_ITEM_ASL_DEBARRED'
FROM PO_LINE_LOCATIONS_GT PLL,
PO_LINES_GT POL, PO_HEADERS_GT POH,
FINANCIALS_SYSTEM_PARAMETERS FSP
WHERE POH.po_header_id = p_document_id
AND POH.po_header_id = POL.po_header_id
AND PLL.po_line_id(+) = POL.po_line_id
AND PLL.po_release_id IS NULL
AND nvl(PLL.closed_code,'OPEN') <> 'FINALLY CLOSED'
AND nvl(POL.cancel_flag,'N') = 'N'
AND nvl(PLL.cancel_flag,'N') = 'N'
AND exists
(SELECT 1
FROM PO_APPROVED_SUPPLIER_LIS_VAL_V ASL, PO_ASL_STATUS_RULES ASR,
MTL_SYSTEM_ITEMS MSI --Bug5597639
WHERE ASL.using_organization_id in (PLL.ship_to_organization_id, -1)
/*Bug5597639 Adding the below three conditions */
AND MSI.organization_id = FSP.inventory_organization_id
AND MSI.inventory_item_id = POL.item_id
AND POL.item_id is not null
AND ASL.vendor_id = POH.vendor_id
AND nvl(ASL.vendor_site_id, POH.vendor_site_id) = POH.vendor_site_id
AND ASL.item_id = POL.item_id
AND ASL.asl_status_id = ASR.status_id
AND ASR.business_rule = '1_PO_APPROVAL'
AND ASR.allow_action_flag <> 'Y' -- Bug 5724696
UNION ALL
SELECT 1
FROM PO_APPROVED_SUPPLIER_LIS_VAL_V ASL, PO_ASL_STATUS_RULES ASR
WHERE ASL.using_organization_id in (PLL.ship_to_organization_id, -1)
AND ASL.vendor_id = POH.vendor_id
AND nvl(ASL.vendor_site_id, POH.vendor_site_id) = POH.vendor_site_id
AND ASL.item_id is NULL
AND POL.category_id = ASL.category_id --Bug5597639
AND ASL.asl_status_id = ASR.status_id
AND ASR.business_rule = '1_PO_APPROVAL'
AND ASR.allow_action_flag <> 'Y' ); --Bug5597639
INSERT INTO po_online_report_text_gt(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name
)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
0,
0,
p_sequence + ROWNUM,
SUBSTR (g_linemsg || g_delim || POL.line_num ||g_delim ||
l_textline,1,240),
'PO_SUB_LINE_CONTRACT_HOLD'
FROM po_lines_gt POL,
po_headers_gt POH,
po_headers_all POC
WHERE POH.po_header_id = p_document_id
AND NVL(POH.authorization_status, 'INCOMPLETE') = 'INCOMPLETE'
AND POL.po_header_id = POH.po_header_id
AND POC.po_header_id = POL.contract_id
AND POC.user_hold_flag = 'Y';
INSERT INTO po_online_report_text_gt(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name
)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
0,
0,
p_sequence + ROWNUM,
SUBSTR (g_linemsg || g_delim || POL.line_num ||g_delim ||
l_textline,1,240),
'PO_SUB_LINE_CONTRACT_EXP'
FROM po_lines_gt POL,
po_headers_gt POH,
po_headers_all POC
WHERE POH.po_header_id = p_document_id
AND NVL(POH.authorization_status, 'INCOMPLETE') = 'INCOMPLETE'
AND POL.po_header_id = POH.po_header_id
AND POC.po_header_id = POL.contract_id
AND TRUNC(POL.creation_date) NOT BETWEEN NVL(TRUNC(POC.start_date),
POL.creation_date-1)
AND NVL(TRUNC(POC.end_date),
POL.creation_date+1);
INSERT INTO po_online_report_text_gt(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name
)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
0,
0,
p_sequence + ROWNUM,
SUBSTR (g_linemsg || g_delim || POL.line_num ||g_delim ||
l_textline,1,240),
'PO_ATO_ITEM_NA'
FROM po_lines_gt POL,
po_headers_gt POH,
financials_system_params_all FSP,
mtl_system_items MSI
WHERE fsp.org_id = poh.org_id
AND POH.po_header_id = p_document_id
AND POL.po_header_id = POH.po_header_id
AND POL.item_id is not null
AND nvl(POL.cancel_flag, 'N') = 'N' --5353423
AND nvl(POL.closed_code, 'OPEN') <> 'FINALLY CLOSED' --5353423
AND POL.item_id = MSI.inventory_item_id
AND MSI.organization_id = FSP.inventory_organization_id
AND MSI.bom_item_type in (1,2);
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
pl.line_num,
0,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||pl.line_num||g_delim||l_textline,1,240),
'PO_ALL_NO_ITEM'
from po_headers_gt ph, po_lines_gt pl,mtl_system_items itm,financials_system_params_all fsp,po_line_types_b plt
where fsp.org_id = ph.org_id
and itm.inventory_item_id = pl.item_id
and pl.item_id is not null
and itm.organization_id = fsp.inventory_organization_id
and itm.purchasing_enabled_flag = 'N'
and ph.po_header_id = p_document_id
and pl.po_header_id = ph.po_header_id
and pl.line_type_id = plt.line_type_id
and nvl(plt.outside_operation_flag,'N') = nvl(itm.outside_operation_flag,'N')
and (pl.creation_date >= nvl(ph.approved_date ,pl.creation_date));
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
pl.line_num,
pll.shipment_num,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||pl.line_num||g_delim||
g_shipmsg||g_delim||pll.shipment_num||g_delim||l_textline,1,240),
'PO_ALL_NO_ITEM'
from po_headers_gt ph,po_lines_gt pl,po_line_locations_gt pll,mtl_system_items itm,po_line_types_b plt
where itm.inventory_item_id = pl.item_id
and pl.item_id is not null
and itm.organization_id = pll.ship_to_organization_id
and itm.purchasing_enabled_flag = 'N'
and pl.po_line_id = pll.po_line_id
and ph.po_header_id = pll.po_header_id
and ph.po_header_id = p_document_id
and pl.po_header_id = ph.po_header_id
and pl.line_type_id = plt.line_type_id
and nvl(plt.outside_operation_flag,'N') = nvl(itm.outside_operation_flag,'N')
and (pl.creation_date >= nvl(ph.approved_date,pl.creation_date))
and pll.shipment_type <> 'PREPAYMENT' --
and pll.po_release_id is null;
INSERT INTO po_online_report_text_gt(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name
)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
PLL.shipment_num,
0,
p_sequence + ROWNUM,
SUBSTR (g_linemsg || g_delim || POL.line_num ||g_delim ||
g_shipmsg || g_delim || PLL.shipment_num ||g_delim || l_textline,1,240),
'PO_PO_PLANNED_ITEM_DATE_REQ'
FROM po_lines_gt POL,
po_headers_gt POH,
po_line_locations_gt PLL,
financials_system_parameters FSP,
mtl_system_items MSI
WHERE POH.po_header_id = p_document_id
AND POL.po_header_id = POH.po_header_id
AND POL.po_line_id = PLL.po_line_id
AND PLL.po_header_id = POH.po_header_id
AND POL.item_id is not null
AND PLL.need_by_date is null
AND PLL.promised_date is null
AND PLL.shipment_type <> 'PREPAYMENT' --bug 4997671
AND POL.item_id = MSI.inventory_item_id
AND nvl(POL.cancel_flag, 'N') = 'N' --8518511 including the cancel condition for the planned item data check
AND nvl(POL.closed_code, 'OPEN') <> 'FINALLY CLOSED' --8518511
AND MSI.organization_id = FSP.inventory_organization_id
AND (MSI.mrp_planning_code IN (3,4,7,8,9) OR
MSI.inventory_planning_code IN (1,2) );
SELECT pol.line_num,
poll.shipment_num,
hlat.location_code
BULK COLLECT INTO
l_line_num,
l_shipment_num,
l_ship_to_location_tbl
FROM
po_lines_gt pol,
po_line_locations_gt poll,
hr_locations_all hla,
hr_locations_all_tl hlat
WHERE poll.po_header_id=p_document_id
and pol.po_Header_id=p_document_id
and pol.po_line_id = poll.po_line_id
and poll.ship_to_location_id = hla.location_id
and nvl(poll.cancel_flag,'N') = 'N'
--and nvl(poll.closed_code,'OPEN') <> 'FINALLY CLOSED'--Bug#12396691
and (nvl(poll.closed_code,'OPEN') = 'OPEN' OR NVL(poll.APPROVED_FLAG,'N') = 'R')--Bug#12396691
and hla.location_id = hlat.location_id
and nvl (trunc (hla.inactive_date), trunc (sysdate)+1 )<= trunc (sysdate)
and hlat.language=userenv('lang');
INSERT INTO po_online_report_text_gt (online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
VALUES(
p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
l_line_num(i),
l_shipment_num(i),
NULL, --
p_sequence+l_rowCount(i),
PO_CORE_S.get_translated_text
( 'PO_SUB_SHIPTO_LOC_INVALID'
, 'LINE_NUM', l_line_num(i)
, 'SHIPMENT_NUM', l_shipment_num(i)
, 'SHIP_TO_LOC', l_ship_to_location_tbl(i)
),
'PO_SUB_PO_SHIPTO_LOC_INVALID'
);
INSERT INTO po_online_report_text_gt
(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type
)
VALUES
(
p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
po_tax_interface_pvt.G_TAX_ERRORS_TBL.line_num(i),
po_tax_interface_pvt.G_TAX_ERRORS_TBL.shipment_num(i),
po_tax_interface_pvt.G_TAX_ERRORS_TBL.distribution_num(i),
p_sequence + i, /* 11851142 replaced from ROWNUM */
l_tax_message || po_tax_interface_pvt.G_TAX_ERRORS_TBL.message_text(i),
'PO_TAX_CALCULATION_FAILED',
'E'
);
INSERT INTO po_online_report_text_gt(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type
)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
PLL.shipment_num,
0,
p_sequence + ROWNUM,
SUBSTR (g_linemsg || POL.line_num || g_delim ||
g_shipmsg || PLL.shipment_num || g_delim ||
l_textline,
1,240),
'PO_SUB_VMI_ASL_EXISTS',
'W'
FROM PO_LINES_GT POL,
PO_HEADERS_GT POH,
PO_LINE_LOCATIONS_GT PLL,
PO_APPROVED_SUPPLIER_LIS_VAL_V PASL,
PO_ASL_ATTRIBUTES PAA,
PO_ASL_STATUS_RULES_V PASR
WHERE POH.po_header_id = p_document_id
AND POL.po_header_id = POH.po_header_id
AND PLL.po_header_id = POH.po_header_id
AND PLL.po_line_id = POL.po_line_id
-- item is not null
AND POL.item_id IS NOT NULL
-- Document is standard PO
AND POH.type_lookup_code = 'STANDARD'
--VMI is enabled
AND PASL.item_id = POL.item_id
AND PASL.vendor_id = POH.vendor_id
AND nvl(PASL.vendor_site_id,-1) = nvl(POH.vendor_site_id,-1)
AND PASL.using_organization_id IN (PLL.ship_to_organization_id, -1)
AND PASR.status_id = PASL.asl_status_id
AND PASR.business_rule = '2_SOURCING'
AND PASR.allow_action_flag = 'Y'
AND PASL.asl_id = PAA.asl_id
AND PAA.enable_vmi_flag = 'Y'
AND PAA.using_organization_id =
(SELECT max(paa2.using_organization_id)
FROM po_asl_attributes paa2
WHERE paa2.asl_id = pasl.asl_id
AND paa2.using_organization_id IN (-1, PLL.ship_to_organization_id));
INSERT INTO po_online_report_text_gt
(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
SEQUENCE,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
pol.line_num,
0,
0,
p_sequence + ROWNUM,
po_core_s.GET_TRANSLATED_TEXT('PO_INVALID_OKE_CONTRACT_VER_ID',
'LINE_NUM',pol.line_num),
'PO_INVALID_OKE_CONTRACT_VER_ID'
FROM po_lines_gt pol
WHERE pol.oke_contract_version_id IS NOT NULL
AND NVL(pol.cancel_flag,'N') = 'N' ----
AND pol.oke_contract_version_id NOT IN (SELECT major_version
FROM oke_k_vers_numbers_v
WHERE chr_id = pol.oke_contract_header_id
UNION
SELECT major_version
FROM okc_k_vers_numbers_h
WHERE chr_id = pol.oke_contract_header_id);
INSERT INTO po_online_report_text_gt
(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
SEQUENCE,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
pol.line_num,
pos.shipment_num,
pod.distribution_num,
p_sequence + ROWNUM,
po_core_s.GET_TRANSLATED_TEXT('PO_INVALID_OKE_CONTRACT_LNE_ID',
'LINE_NUM',pol.line_num,
'SHIP_NUM',pos.shipment_num,
'DIST_NUM',pod.distribution_num),
'PO_INVALID_OKE_CONTRACT_LNE_ID'
FROM po_distributions_gt pod,
po_line_locations_gt pos,
po_lines_gt pol
WHERE pod.po_line_id = pol.po_line_id
AND pod.line_location_id = pos.line_location_id
AND pod.oke_contract_line_id IS NOT NULL
AND NVL(pol.cancel_flag,'N') = 'N' ----
AND pod.oke_contract_line_id NOT IN (SELECT id
FROM okc_k_lines_b
WHERE dnz_chr_id = pol.oke_contract_header_id
--
-- Look for contract lines in oke_deliverables_b also (DTS flow)
UNION
SELECT deliverable_id
FROM oke_deliverables_b
WHERE source_header_id = pol.oke_contract_header_id);
INSERT INTO po_online_report_text_gt
(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
SEQUENCE,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
pol.line_num,
pos.shipment_num,
pod.distribution_num,
p_sequence + ROWNUM,
po_core_s.GET_TRANSLATED_TEXT('PO_INVALID_OKE_CONTRACT_DLV_ID',
'LINE_NUM',pol.line_num,
'SHIP_NUM',pos.shipment_num,
'DIST_NUM',pod.distribution_num),
'PO_INVALID_OKE_CONTRACT_DLV_ID'
FROM po_distributions_gt pod,
po_line_locations_gt pos,
po_lines_gt pol
WHERE pod.po_line_id = pol.po_line_id
AND pod.line_location_id = pos.line_location_id
AND pod.oke_contract_deliverable_id IS NOT NULL
AND NVL(pol.cancel_flag,'N') = 'N' ----
AND pod.oke_contract_deliverable_id NOT IN (SELECT deliverable_id
FROM oke_k_deliverables_b
WHERE k_line_id = pod.oke_contract_line_id
--
-- Look for contract deliverables in
-- oke_deliverable_actions also (DTS flow)
UNION
SELECT action_id
FROM oke_deliverable_actions
WHERE deliverable_id = pod.oke_contract_line_id);
FOR price_rec in (select pol.line_num,poll.shipment_num,pol.unit_price, poll.price_override,rownum
from po_line_locations_gt poll, po_lines_gt pol
where pol.po_header_id = p_document_id AND
pol.po_line_id = poll.po_line_id AND
pol.unit_price <> poll.price_override AND
nvl(pol.cancel_flag,'N') = 'N' AND
nvl(pol.closed_code,'OPEN') <> 'FINALLY CLOSED' AND
poll.shipment_type in ('STANDARD','PLANNED')
)
LOOP
FND_MESSAGE.SET_NAME('PO','PO_PDOI_SHIP_PRICE_NE_LINE');
INSERT INTO po_online_report_text_gt
(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
SEQUENCE,
text_line,
message_name)
VALUES (p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
price_rec.line_num,
price_rec.shipment_num,
p_sequence + price_rec.rownum,
l_textline,
'PO_PDOI_SHIP_PRICE_NE_LINE');
INSERT INTO po_online_report_text_gt (online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
pol.line_num,
pll.shipment_num, 0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||POL.line_num||g_delim||g_shipmsg||g_delim||
PLL.shipment_num||g_delim||l_textline,1,240),
'PO_SUB_PO_SHIP_INV_MATCH_NE_R'
FROM PO_HEADERS_GT POH,
PO_LINES_GT POL,
PO_LINE_LOCATIONS_GT PLL
WHERE POH.po_header_id = POL.po_header_id
AND POL.po_line_id = PLL.po_line_id
AND POH.po_header_id = p_document_id
AND Nvl(PLL.LCM_FLAG,'N') = 'Y'
AND Nvl(PLL.match_option,'P') <> 'R'
AND Nvl(PLL.cancel_flag,'N') = 'N'; -- Bug 13809830: Added a condition to skip the submission check for cancelled shipments;
INSERT INTO po_online_report_text_gt (online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
pol.line_num,
pll.shipment_num,
pod.distribution_num,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||POL.line_num||g_delim||g_shipmsg||g_delim||PLL.shipment_num||g_delim
||g_distmsg||g_delim||POD.distribution_num||g_delim||l_textline,1,240),
'PO_SUB_PO_DIST_DEST_TYPE_NE_IN'
FROM PO_HEADERS_GT POH,
PO_LINES_GT POL,
PO_LINE_LOCATIONS_GT PLL,
PO_DISTRIBUTIONS_GT POD
WHERE POH.po_header_id = POD.po_header_id
AND POD.line_location_id = PLL.line_location_id
AND PLL.po_line_id = POL.po_line_id
AND POH.po_header_id = p_document_id
AND Nvl(POD.LCM_FLAG,'N') = 'Y'
AND POD.DESTINATION_TYPE_CODE <> 'INVENTORY';
INSERT INTO po_online_report_text_gt
(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
SEQUENCE,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
POL.line_num,
POLL.shipment_num,
POD.distribution_num,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_PDOI_INVALID_FUND_VAL_ENC'
FROM
PO_DISTRIBUTIONS_GT POD
, PO_LINE_LOCATIONS_GT POLL
, PO_LINES_GT POL
WHERE POLL.line_location_id(+) = POD.line_location_id --JOIN
AND POL.po_line_id(+) = POD.po_line_id --JOIN
-- PA distributions don't have associated lines or shipments
AND NVL(POD.encumbered_flag,'N') = 'N'
AND NVL(POLL.cancel_flag,'N') = 'N'
AND NVL(POLL.closed_code,'OPEN') <> 'FINALLY CLOSED'
AND NVL(POLL.approved_flag,'N') <> 'Y'
AND NVL(POD.destination_type_code,'EXPENSE') <> 'SHOP FLOOR'
AND NVL(POD.funded_value,0) > DECODE(POL.matching_basis,'QUANTITY',
((POD.quantity_ordered * NVL(POLL.price_override,0)) +
NVL(POD.nonrecoverable_tax,0)) * NVL(POD.rate,1),
(POD.amount_ordered + NVL(POD.nonrecoverable_tax,0)) * NVL(POD.rate,1)
)
AND NVL(POD.DISTRIBUTION_TYPE, 'STANDARD') = 'STANDARD'
;
SELECT nvl(enforce_funds_change_allowance, 'NONE'),
nvl(funds_change_allowance/100, -1),
nvl(funds_change_amount, -1)
INTO l_enf_funds_change_allowance,
l_funds_change_allowance,
l_funds_change_amount
FROM po_system_parameters;
SELECT POL.line_num
BULK COLLECT INTO
l_line_num
FROM PO_DISTRIBUTIONS_GT POD1,
PO_DISTRIBUTIONS_GT POD2,
PO_LINES_GT POL
WHERE POD1.po_line_id = POL.po_line_id
AND POD2.po_line_id = POL.po_line_id
AND POL.po_header_id = p_document_id
AND NVL(POD1.distribution_type, 'STANDARD') = 'STANDARD'
AND NVL(POD2.distribution_type, 'STANDARD') = 'STANDARD'
AND POD1.req_distribution_id IS NOT NULL -- Linked to PR Dists
AND POD2.req_distribution_id IS NULL -- Not Linked to PR Dists
GROUP BY POL.line_num
HAVING ((l_funds_change_amount BETWEEN 0 AND Sum(Nvl(POD2.funded_value,0)))
OR
(Sum(Nvl(POD1.funded_value,0)) <> 0 AND
l_funds_change_allowance BETWEEN 0 AND
(Sum(Nvl(POD2.funded_value,0))/Sum(Nvl(POD1.funded_value,0)))));
INSERT INTO po_online_report_text_gt(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type)
VALUES(
p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
l_line_num(i),
NULL,
NULL,
p_sequence+l_rowCount(i),
PO_CORE_S.get_translated_text(
'PO_SUB_PO_CLM_FUNDS_VAL_GT_TOL',
'LINE_NUM', l_line_num(i)),
'PO_SUB_PO_CLM_FUNDS_VAL_GT_TOL',
Decode(l_enf_funds_change_allowance, 'ADVISORY', 'W', 'E'));
INSERT INTO po_online_report_text_gt(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT
p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
NULL,
NULL,
NULL,
p_sequence + ROWNUM,
substr(l_textline||g_delim||PRD.requisition_number||g_delim||
g_linemsg||g_delim||PRD.line_number||g_delim||
g_distmsg||g_delim||PRD.distribution_num,1,240),
'PO_SUB_FUNDED_VAL_GT_REQ_FUNDS'
FROM PO_CLMREQ_DIST_DETAILS_V PRD
WHERE PRD.funds_remaining < 0
AND exists(
SELECT NULL
FROM PO_DISTRIBUTIONS_GT POD
WHERE POD.po_header_id = p_document_id
AND NVL(POD.DISTRIBUTION_TYPE, 'STANDARD') = 'STANDARD'
AND POD.req_distribution_id = PRD.distribution_id);
* p_online_report_id: Id used to INSERT INTO online_report_text table
* p_user_id: User performing the action
* p_login_id: Last update login_id
* IN OUT PARAMETERS
* p_sequence: Sequence number of last reported error
* x_result_status Result of validation
* Modifies: Inserts error msgs in online_report_text_gt table, uses
* global_temp tables for processing
* Effects: This procedure runs the document submission checks for clm
* documents
* Returns:
* p_sequence: This parameter contains the current count of number of error
* messages inserted
*/
PROCEDURE po_idv_reference_equal_check(p_document_id IN NUMBER,
p_online_report_id IN NUMBER,
p_user_id IN NUMBER,
p_login_id IN NUMBER,
p_sequence IN OUT NOCOPY NUMBER,
x_return_status OUT NOCOPY VARCHAR2) IS
l_textline po_online_report_text.text_line%TYPE := NULL;
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
0,
0,
p_sequence + ROWNUM,
substr(g_linemsg || g_delim || POL.line_num || g_delim
|| l_textline,1,240),
'PO_IDV_REF_NOT_EQUAL'
FROM PO_HEADERS_GT POH,
PO_LINES_GT POL
WHERE POH.po_header_id = p_document_id
AND POH.po_header_id = POL.po_header_id
AND POH.type_lookup_code = 'STANDARD'
AND Nvl(POH.clm_source_document_id, -1) <> Nvl(Nvl(POL.from_header_id,POL.contract_id), -1)
AND nvl(l_clm_po,'N') = 'Y';
* p_online_report_id: Id used to INSERT INTO online_report_text table
* p_user_id: User performing the action
* p_login_id: Last update login_id
* IN OUT PARAMETERS
* p_sequence: Sequence number of last reported error
* Modifies: Inserts error msgs in online_report_text_gt table, uses
* global_temp tables for processing
* Effects: This procedure runs the document submission checks for PLANNED POs
* and BLANKET PAs
* Returns:
* p_sequence: This parameter contains the current count of number of error
* messages inserted
*/
PROCEDURE check_planned_po_blanket_pa(p_document_id IN NUMBER,
p_online_report_id IN NUMBER,
p_user_id IN NUMBER,
p_login_id IN NUMBER,
p_sequence IN OUT NOCOPY NUMBER,
x_return_status OUT NOCOPY VARCHAR2) IS
l_textline po_online_report_text.text_line%TYPE := NULL;
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_SUB_AGREED_GRT_LIMIT'
FROM PO_HEADERS_GT POH
WHERE POH.po_header_id = p_document_id
AND POH.blanket_total_amount is not null
AND POH.amount_limit is not null
AND POH.blanket_total_amount > POH.amount_limit;
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_SUB_MINREL_GRT_LIMIT'
FROM PO_HEADERS_GT POH
WHERE POH.po_header_id = p_document_id
AND POH.min_release_amount is not null
AND POH.amount_limit is not null
AND POH.min_release_amount > POH.amount_limit;
select poh.currency_code
into l_currency_code
FROM PO_HEADERS_GT POH
WHERE POH.po_header_id = p_document_id;
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_SUB_LIMIT_GRT_REL_AMT'
FROM PO_HEADERS_GT POH
WHERE POH.po_header_id = p_document_id
AND POH.amount_limit is not null
AND ( (NVL(POH.global_agreement_flag, 'N') = 'N'
AND
round(POH.amount_limit, l_precision) <
( SELECT --
sum ( decode ( PLL2.quantity
, NULL , round(( PLL2.amount
- nvl(PLL2.amount_cancelled,0)
),l_precision)
, round( ( PLL2.quantity
- nvl(PLL2.quantity_cancelled,0) )
* PLL2.price_override,l_precision
)
)
)
FROM PO_LINE_LOCATIONS PLL2
WHERE PLL2.po_header_id = POH.po_header_id
AND PLL2.shipment_type in ('BLANKET', 'SCHEDULED')
)
)
OR
--bug2969379
--GA should have amount limit checked in a different way
( POH.global_agreement_flag = 'Y'
AND
round(POH.amount_limit, l_precision) <
( SELECT
sum ( decode ( PLL3.quantity
, NULL , round(( PLL3.amount
- nvl(PLL3.amount_cancelled,0)
),l_precision)
, round( ( PLL3.quantity
- nvl(PLL3.quantity_cancelled,0) )
* PLL3.price_override,l_precision
)
)
)
FROM PO_LINE_LOCATIONS_ALL PLL3
WHERE PLL3.from_header_id = POH.po_header_id
)
)
);
INSERT into po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
0,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||POL.line_num
||g_delim||l_textline,1,240),
'PO_SVC_PRICE_LIMIT_LT_PRICE'
FROM PO_LINES_GT POL
WHERE POL.po_header_id = p_document_id
AND trunc(sysdate) <= trunc(nvl(POL.expiration_date, sysdate + 1)) -- bug 3449694
AND nvl(POL.cancel_flag,'N')= 'N'
AND nvl(POL.closed_code,'OPEN') <> 'FINALLY CLOSED'
AND nvl(POL.allow_price_override_flag, 'N') = 'Y'
AND POL.not_to_exceed_price IS NOT NULL
AND ((POL.unit_price IS NOT NULL and POL.not_to_exceed_price < POL.unit_price)
or
(POL.amount IS NOT NULL and POL.not_to_exceed_price < POL.amount));
* p_online_report_id: Id used to INSERT INTO online_report_text table
* p_user_id: User performing the action
* p_login_id: Last update login_id
* IN OUT PARAMETERS
* p_sequence: Sequence number of last reported error
* Modifies: Inserts error msgs in online_report_text_gt table, uses
* global_temp tables for processing
* Effects: This procedure runs the document submission checks for BLANKETS
* Returns:
* p_sequence: This parameter contains the current count of number of error
* messages inserted
*/
PROCEDURE check_blanket_agreement(p_document_id IN NUMBER,
p_online_report_id IN NUMBER,
p_user_id IN NUMBER,
p_login_id IN NUMBER,
p_check_asl IN BOOLEAN, -- <2757450>
p_sequence IN OUT NOCOPY NUMBER,
x_return_status OUT NOCOPY VARCHAR2) IS
l_textline po_online_report_text.text_line%TYPE := NULL;
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0, 0, 0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_SUB_HEADER_NO_LINES'
FROM PO_HEADERS_GT POH
WHERE POH.po_header_id = p_document_id AND
NOT EXISTS (SELECT 'Lines Exist'
FROM PO_LINES_GT POL
WHERE POL.po_header_id = POH.po_header_id);
INSERT INTO po_online_report_text_gt(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0, 0, 0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_SUB_HEADER_END_DATED'
FROM PO_HEADERS_GT POH
WHERE POH.po_header_id = p_document_id
AND TRUNC(sysdate) > TRUNC(POH.end_date);
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
pl.line_num,
0,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||pl.line_num||g_delim||l_textline,1,240),
'PO_ALL_NO_ITEM'
from po_headers_gt ph,po_lines_gt pl,mtl_system_items itm,financials_system_parameters fsp,po_line_types_b plt
where itm.inventory_item_id = pl.item_id
and pl.item_id is not null
and itm.organization_id = fsp.inventory_organization_id
and itm.purchasing_enabled_flag = 'N'
and ph.po_header_id = p_document_id
and pl.po_header_id = ph.po_header_id
and pl.line_type_id = plt.line_type_id
and nvl(plt.outside_operation_flag,'N') = nvl(itm.outside_operation_flag,'N')
and (pl.creation_date >= nvl(ph.approved_date ,pl.creation_date)) ;
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
pl.line_num,
pll.shipment_num,
0,
p_sequence + ROWNUM,
CASE
WHEN pll.start_date < ph.start_date
THEN substr(g_linemsg||g_delim||pl.line_num||g_delim
||g_price_breakmsg||g_delim||pll.shipment_num||g_delim
||FND_MESSAGE.GET_STRING('PO', PO_MESSAGE_S.POX_EFFECTIVE_DATES1),1,240)
WHEN pll.end_date > ph.end_date
THEN substr(g_linemsg||g_delim||pl.line_num||g_delim
||g_price_breakmsg||g_delim||pll.shipment_num||g_delim
||FND_MESSAGE.GET_STRING('PO', PO_MESSAGE_S.POX_EFFECTIVE_DATES),1,240)
WHEN pll.start_date > ph.end_date
THEN substr(g_linemsg||g_delim||pl.line_num||g_delim
||g_price_breakmsg||g_delim||pll.shipment_num||g_delim
||FND_MESSAGE.GET_STRING('PO', PO_MESSAGE_S.POX_EFFECTIVE_DATES4),1,240)
WHEN pll.end_date < ph.start_date
THEN substr(g_linemsg||g_delim||pl.line_num||g_delim
||g_price_breakmsg||g_delim||pll.shipment_num||g_delim
||FND_MESSAGE.GET_STRING('PO', PO_MESSAGE_S.POX_EFFECTIVE_DATES5),1,240)
WHEN pll.start_date > pl.expiration_date
THEN substr(g_linemsg||g_delim||pl.line_num||g_delim
||g_price_breakmsg||g_delim||pll.shipment_num||g_delim
||FND_MESSAGE.GET_STRING('PO', PO_MESSAGE_S.POX_EFFECTIVE_DATES6),1,240)
WHEN pll.end_date > pl.expiration_date
THEN substr(g_linemsg||g_delim||pl.line_num||g_delim
||g_price_breakmsg||g_delim||pll.shipment_num||g_delim
||FND_MESSAGE.GET_STRING('PO', PO_MESSAGE_S.POX_EFFECTIVE_DATES2),1,240)
END
,
CASE
WHEN pll.start_date < ph.start_date
THEN PO_MESSAGE_S.POX_EFFECTIVE_DATES1
WHEN pll.end_date > ph.end_date
THEN PO_MESSAGE_S.POX_EFFECTIVE_DATES
WHEN pll.start_date > ph.end_date
THEN PO_MESSAGE_S.POX_EFFECTIVE_DATES4
WHEN pll.end_date < ph.start_date
THEN PO_MESSAGE_S.POX_EFFECTIVE_DATES5
WHEN pll.start_date > pl.expiration_date
THEN PO_MESSAGE_S.POX_EFFECTIVE_DATES6
WHEN pll.end_date > pl.expiration_date
THEN PO_MESSAGE_S.POX_EFFECTIVE_DATES2
END
FROM po_headers_gt ph, po_lines_gt pl, po_line_locations_gt pll
WHERE ph.po_header_id = p_document_id
AND pl.po_header_id = ph.po_header_id
AND pll.po_line_id = pl.po_line_id
AND pll.shipment_type = 'PRICE BREAK'
AND (pll.start_date < ph.start_date
or pll.end_date > ph.end_date
or pll.start_date > ph.end_date
or pll.end_date < ph.start_date
or pll.start_date > pl.expiration_date
or pll.end_date > pl.expiration_date);
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
pl.line_num,
0,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||pl.line_num||g_delim||l_textline,1,240),
PO_MESSAGE_S.POX_EXPIRATION_DATES
FROM po_headers_gt ph, po_lines_gt pl
WHERE ph.po_header_id = p_document_id
AND pl.po_header_id = ph.po_header_id
AND (pl.expiration_date < ph.start_date
or pl.expiration_date > ph.end_date)
AND nvl(pl.cancel_flag,'N') = 'N' ; -- bug 9816849
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
PLL.shipment_num,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||POL.line_num||g_delim
||g_shipmsg||g_delim||PLL.shipment_num||g_delim
||l_textline,1,240),
'PO_SUB_ITEM_ASL_DEBARRED'
FROM PO_LINE_LOCATIONS_GT PLL,
PO_LINES_GT POL, PO_HEADERS_GT POH,
FINANCIALS_SYSTEM_PARAMETERS FSP
WHERE POH.po_header_id = p_document_id
AND POH.po_header_id = POL.po_header_id
AND PLL.po_line_id(+) = POL.po_line_id
AND PLL.po_release_id IS NULL
AND nvl(PLL.closed_code,'OPEN') <> 'FINALLY CLOSED'
AND nvl(POL.cancel_flag,'N') = 'N'
AND nvl(PLL.cancel_flag,'N') = 'N'
AND exists
(SELECT 1
FROM PO_APPROVED_SUPPLIER_LIS_VAL_V ASL, PO_ASL_STATUS_RULES ASR,
MTL_SYSTEM_ITEMS MSI --Bug5597639
WHERE ASL.using_organization_id in (PLL.ship_to_organization_id, -1)
/*Bug5597639 Adding the below three conditions */
AND MSI.organization_id = FSP.inventory_organization_id
AND MSI.inventory_item_id = POL.item_id
AND POL.item_id is not null
AND ASL.vendor_id = POH.vendor_id
AND nvl(ASL.vendor_site_id, POH.vendor_site_id) = POH.vendor_site_id
AND ASL.item_id = POL.item_id
AND ASL.asl_status_id = ASR.status_id
AND ASR.business_rule = '1_PO_APPROVAL'
AND ASR.allow_action_flag <> 'Y' -- Bug 5724696
UNION ALL
SELECT 1
FROM PO_APPROVED_SUPPLIER_LIS_VAL_V ASL, PO_ASL_STATUS_RULES ASR
WHERE ASL.using_organization_id in (PLL.ship_to_organization_id, -1)
AND ASL.vendor_id = POH.vendor_id
AND nvl(ASL.vendor_site_id, POH.vendor_site_id) = POH.vendor_site_id
AND ASL.item_id is NULL
AND POL.category_id = ASL.category_id --Bug5597639
AND ASL.asl_status_id = ASR.status_id
AND ASR.business_rule = '1_PO_APPROVAL'
AND ASR.allow_action_flag <> 'Y' ); --Bug5597639
* p_online_report_id: Id used to INSERT INTO online_report_text table
* p_user_id: User performing the action
* p_login_id: Last update login_id
* IN OUT PARAMETERS
* p_sequence: Sequence number of last reported error
* Modifies: Inserts error msgs in online_report_text_gt table, uses
* global_temp tables for processing
* Effects: This procedure runs the document submission checks for Standard
* POs including GLOBAL AGREEMENTS reference checks and Consigned
* Inventory checks
* Returns:
* p_sequence: This parameter contains the current count of number of error
* messages inserted
*/
PROCEDURE check_standard_po(p_document_id IN NUMBER,
p_online_report_id IN NUMBER,
p_user_id IN NUMBER,
p_login_id IN NUMBER,
p_sequence IN OUT NOCOPY NUMBER,
x_return_status OUT NOCOPY VARCHAR2) IS
l_is_ga_referenced VARCHAR2(1) := NULL;
SELECT 'Y'
FROM PO_HEADERS_GT POH, PO_LINES_GT POL, PO_HEADERS_ALL POHA
WHERE POH.po_header_id = p_document_id
AND POH.po_header_id = POL.po_header_id
AND POL.from_header_id = POHA.po_header_id
AND POHA.type_lookup_code = 'BLANKET'
AND POHA.global_agreement_flag = 'Y';
SELECT 'Y'
FROM po_lines_gt POL,
po_headers_all POHA
WHERE POL.po_header_id = p_doc_id
AND POL.contract_id = POHA.po_header_id
AND POHA.global_agreement_flag = 'Y';
* p_online_report_id: Id used to INSERT INTO online_report_text table
* p_user_id: User performing the action
* p_login_id: Last update login_id
* IN OUT PARAMETERS
* p_sequence: Sequence number of last reported error
* Modifies: Inserts error msgs in online_report_text_gt table, uses
* global_temp tables for processing
* Effects: This procedure performs checks for the Consigned from Supplier
* project in order to enforce the following:
* 1) Consigned status on any new or modified shipment that is not
* partially received or partially invoiced should match the
* consigned setting on the corresponding ASL entry.
* 2) Document references cannot exist for PO lines with one or
* more consigned shipments
* Returns:
* p_sequence: This parameter contains the current count of number of error
* messages inserted
* x_return_status: This parameter signifies whether the checks contained in
* this procedure completed successfully.
*/
PROCEDURE check_std_consigned_ref(p_document_id IN NUMBER,
p_online_report_id IN NUMBER,
p_user_id IN NUMBER,
p_login_id IN NUMBER,
p_sequence IN OUT NOCOPY NUMBER,
x_return_status OUT NOCOPY VARCHAR2) IS
l_api_name CONSTANT varchar2(40) := 'CHECK_STD_CONSIGNED_REF';
SELECT POH.vendor_id,
POH.vendor_site_id,
POL.item_id,
PLL.ship_to_organization_id,
PLL.consigned_flag,
POL.line_num,
PLL.shipment_num,
PLL.line_location_id
BULK COLLECT INTO
l_vendor_id,
l_vendor_site_id,
l_item_id,
l_ship_to_org_id,
l_consigned_flag,
l_line_num,
l_shipment_num,
l_line_location_id
FROM PO_HEADERS_GT POH,
PO_LINE_LOCATIONS_GT PLL,
PO_LINES_GT POL
WHERE POH.po_header_id = p_document_id AND
POH.po_header_id = POL.po_header_id AND
-- POH.po_header_id = PLL.po_header_id AND
POL.po_line_id = PLL.po_line_id AND
PLL.shipment_type = 'STANDARD' AND
nvl(PLL.cancel_flag,'N') = 'N' AND
nvl(PLL.closed_code,'OPEN') <> 'FINALLY CLOSED' AND
-- Bug fix for #2733398
-- nvl(PLL.approved_flag, 'N') IN ('N','R') AND
nvl(PLL.approved_flag, 'N') = 'N' AND
PLL.quantity_received <= 0 AND
PLL.quantity_billed <= 0
ORDER BY
POH.vendor_id,
POH.vendor_site_id,
POL.item_id,
PLL.ship_to_organization_id;
SELECT count('Y')
INTO l_count_expense_dist
FROM DUAL
WHERE EXISTS(SELECT 'Y'
FROM PO_DISTRIBUTIONS_GT
WHERE LINE_LOCATION_ID = l_line_location_id(i)
AND DESTINATION_TYPE_CODE = 'EXPENSE');
INSERT INTO
po_online_report_text_gt
(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
VALUES
(p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
l_line_num(i),
l_shipment_num(i),
0,
p_sequence + i,
substr(g_linemsg||g_delim||l_line_num(i)||g_delim||g_shipmsg
||g_delim||l_shipment_num(i)||':'||g_delim||l_textline,1,240),
'PO_SUP_CONS_STATUS_MISMATCH');
* p_online_report_id: Id used to INSERT INTO online_report_text table
* p_user_id: User performing the action
* p_login_id: Last update login_id
* IN OUT PARAMETERS
* p_sequence: Sequence number of last reported error
* Modifies: Inserts error msgs in online_report_text_gt table, uses
* global_temp tables for processing
* Effects: This procedure runs the document submission checks for Standard
* POs which have GLOBAL AGREEMENTS reference
* Returns:
* p_sequence: This parameter contains the current count of number of error
* messages inserted
*/
PROCEDURE check_std_global_ref(p_document_id IN NUMBER,
p_online_report_id IN NUMBER,
p_user_id IN NUMBER,
p_login_id IN NUMBER,
p_sequence IN OUT NOCOPY NUMBER,
x_return_status OUT NOCOPY VARCHAR2) IS
l_textline po_online_report_text.text_line%TYPE := NULL;
INSERT into po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
--
--SQL Querying for PO lines that reference GAs that are not enabled
--SQL for purchasing in this org, to report an error message.
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
0,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||POL.line_num||g_delim
||l_textline,1,240),
'PO_SUB_STD_GA_DISABLED'
FROM PO_HEADERS_GT POH1, PO_LINES_GT POL, PO_HEADERS_ALL POH
WHERE POH1.po_header_id = p_document_id
AND POL.po_header_id = POH1.po_header_id
AND POL.from_header_id = POH.po_header_id --JOIN
AND POH.type_lookup_code = 'BLANKET'
AND POH.global_agreement_flag = 'Y'
--
AND NOT EXISTS --< Bug 3301427 Start >
(SELECT 'previously approved shipment'
FROM po_line_locations_gt pllg
WHERE pllg.po_line_id = pol.po_line_id
AND pllg.approved_date IS NOT NULL) --< Bug 3301427 End >
AND NOT EXISTS
--SQL Query enabled org assignments of this current purchasing org
(SELECT 'Enabled purchasing org'
FROM PO_GA_ORG_ASSIGNMENTS PGOA
WHERE PGOA.po_header_id = POH.po_header_id
AND PGOA.purchasing_org_id = POH1.org_id
AND PGOA.enabled_flag = 'Y');
INSERT into po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
--SQL What: Querying for PO lines that reference GAs that are not approved.
--SQL Why: Add appropriate error message to po_online_report_text_gt
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
0,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||POL.line_num||g_delim
||l_textline,1,240),
'PO_SUB_STD_GA_APPROVED'
FROM PO_HEADERS_GT POH1, PO_LINES_GT POL, PO_HEADERS_ALL POH2
WHERE POH1.po_header_id = p_document_id
AND POL.po_header_id = POH1.po_header_id --JOIN
AND POH2.po_header_id = POL.from_header_id --JOIN
AND POH2.type_lookup_code = 'BLANKET'
AND POH2.global_agreement_flag = 'Y'
AND NVL(POH2.approved_flag, 'N') <> 'Y'
AND NVL(POH2.user_hold_flag, 'N') <> 'Y' --< Bug 3422733 >
AND NOT EXISTS --< Bug 3301427 Start >
(SELECT 'previously approved shipment'
FROM po_line_locations_gt pllg
WHERE pllg.po_line_id = pol.po_line_id
AND pllg.approved_date IS NOT NULL); --< Bug 3301427 End >
INSERT into po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
--SQL What: Querying for PO lines that reference GAs that are on hold
--SQL Why: Add appropriate error message to po_online_report_text_gt
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
0,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||POL.line_num||g_delim
||l_textline,1,240),
'PO_SUB_STD_GA_ON_HOLD'
FROM PO_HEADERS_GT POH1, PO_LINES_GT POL, PO_HEADERS_ALL POH2
WHERE POH1.po_header_id = p_document_id
AND POL.po_header_id = POH1.po_header_id --JOIN
AND POH2.po_header_id = POL.from_header_id --JOIN
AND POH2.type_lookup_code = 'BLANKET'
AND POH2.global_agreement_flag = 'Y'
AND POH2.user_hold_flag = 'Y'
AND NOT EXISTS --< Bug 3301427 Start >
(SELECT 'previously approved shipment'
FROM po_line_locations_gt pllg
WHERE pllg.po_line_id = pol.po_line_id
AND pllg.approved_date IS NOT NULL); --< Bug 3301427 End >
INSERT into po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type)
--SQL What: Querying for PO lines whose vendor does not
--SQL match the vendor of the referenced GA
--SQL Why: Add appropriate error message to po_online_report_text_gt
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
0,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||POL.line_num||g_delim
||l_textline,1,240),
'PO_SUB_STD_GA_VENDOR_MISMATCH',
Decode(is_approved_clm_document(p_document_id), 'Y', 'W', NULL)
FROM PO_LINES_GT POL, PO_HEADERS_GT POH1, PO_HEADERS_ALL POH2
WHERE POL.po_header_id = p_document_id
AND POL.po_header_id = POH1.po_header_id --JOIN
AND POL.from_header_id = POH2.po_header_id --JOIN
AND POH2.type_lookup_code = 'BLANKET'
AND POH2.global_agreement_flag = 'Y'
AND POH1.vendor_id <> POH2.vendor_id;
INSERT into po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type)
--SQL What: Querying for PO lines whose vendor_site_id does not
--SQL match a valid vendor_site_id in the GA's org assignments
--SQL Why: Add appropriate error message to po_online_report_text_gt
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
0,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||POL.line_num||g_delim
||l_textline,1,240),
'PO_SUB_STD_GA_VDR_SITE_MISMT',
Decode(is_approved_clm_document(p_document_id), 'Y', Decode(POH1.vendor_id, POH2.vendor_id, NULL, 'W'), NULL)
FROM PO_LINES_GT POL, PO_HEADERS_GT POH1, PO_HEADERS_ALL POH2
WHERE POL.po_header_id = p_document_id
AND POL.po_header_id = POH1.po_header_id --JOIN
AND POL.from_header_id = POH2.po_header_id --JOIN
AND POH2.type_lookup_code = 'BLANKET'
AND POH2.global_agreement_flag = 'Y'
--
AND NOT EXISTS --< Bug 3301427 Start >
(SELECT 'previously approved shipment'
FROM po_line_locations_gt pllg
WHERE pllg.po_line_id = pol.po_line_id
AND pllg.approved_date IS NOT NULL) --< Bug 3301427 End >
AND NOT EXISTS
(SELECT 'Enabled vendor site'
FROM PO_GA_ORG_ASSIGNMENTS pgoa
WHERE PGOA.po_header_id = POH2.po_header_id
AND PGOA.vendor_site_id = POH1.vendor_site_id
AND PGOA.enabled_flag = 'Y');
INSERT into po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
--SQL What: Querying for PO lines that were not created within
--SQL the effective dates of the referenced GA
--SQL Why: Add appropriate error message to po_online_report_text_gt
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
PLL.shipment_num, -- Bug #5415428 As Need by date also forms part of the checks
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||POL.line_num||g_delim
||l_textline,1,240),
'PO_SUB_STD_AFTER_GA_DATE'
FROM PO_LINES_GT POL, PO_HEADERS_GT POH, PO_HEADERS_ALL POH2, PO_LINES_ALL POL2, PO_LINE_LOCATIONS_GT PLL
WHERE POL.po_header_id = p_document_id
AND POL.po_header_id = POH.po_header_id -- JOIN
AND PLL.po_line_id = POL.po_line_id --JOIN, Bug #5415428 - Get the Need by date
AND POL.from_header_id = POH2.po_header_id --JOIN
AND POL.from_line_id = POL2.po_line_id --JOIN
AND POH2.type_lookup_code = 'BLANKET'
AND POH2.global_agreement_flag = 'Y'
AND Nvl(pol.cancel_flag,'N') = 'N' --Bug8847964
AND Nvl(pol.closed_code,'OPEN') <> 'FINALLY CLOSED' --Bug8847964
--Bug #2699630: Adding trunc on both sides of the check
--Bug #5415428: Start date and need by date also needs to be considered
-- Bug #13550798: Submit Date cannot be later then effective to date of Source Document
/* AND (NVL(TRUNC(POL.start_date), TRUNC(POH.creation_date))
> NVL ( TRUNC(POL2.expiration_date) , TRUNC(POH2.end_date))); */
INSERT into po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
--SQL What: Querying for PO lines that were not created within
--SQL the effective dates of the referenced GA
--SQL Why: Add appropriate error message to po_online_report_text_gt
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
PLL.shipment_num,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||POL.line_num||g_delim||
g_shipmsg||g_delim||PLL.shipment_num||g_delim||l_textline,1,240),
'PO_SUB_STD_BEFORE_GA_DATE'
FROM PO_LINES_GT POL, PO_HEADERS_GT POH, PO_HEADERS_ALL POH2, PO_LINE_LOCATIONS_GT PLL
WHERE POL.po_header_id = p_document_id
AND POL.po_header_id = POH.po_header_id
AND PLL.po_line_id = POL.po_line_id --JOIN
AND POL.from_header_id = POH2.po_header_id --JOIN
AND POH2.type_lookup_code = 'BLANKET'
AND POH2.global_agreement_flag = 'Y'
--Bug #2699630: Adding trunc on both sides of the check
--Bug #5415428: Start date also needs to be considered
AND NVL(TRUNC(PLL.need_by_date), NVL(TRUNC(POL.start_date),TRUNC(POH.creation_date))) < TRUNC(POH2.start_date);
INSERT into po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
--SQL What: Querying for PO lines whose currency code does not
--SQL match the currency code of the referenced GA
--SQL Why: Add appropriate error message to po_online_report_text_gt
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
0,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||POL.line_num||g_delim
||l_textline,1,240),
'PO_SUB_STD_GA_CURR_MISMATCH'
FROM PO_LINES_GT POL, PO_HEADERS_GT POH1, PO_HEADERS_ALL POH2
WHERE POL.po_header_id = p_document_id
AND POL.po_header_id = POH1.po_header_id --JOIN
AND POL.from_header_id = POH2.po_header_id --JOIN
AND POH2.type_lookup_code = 'BLANKET'
AND POH2.global_agreement_flag = 'Y'
AND POH1.currency_code <> POH2.currency_code;
SELECT /*+ FULL(POL) ORDERED */ -- bug3413891
POL.line_num
, nvl ( decode ( POL.quantity --
, NULL , sum ( PLL1.amount
- nvl(PLL1.amount_cancelled,0) )
, sum ( ( PLL1.quantity
- nvl(PLL1.quantity_cancelled,0) )
* PLL1.price_override )
)
, 0 )
, POH1.amount_limit
BULK COLLECT INTO l_curr_doc_line_num,l_po_amount,l_amount_limit
FROM PO_LINES_GT POL, PO_HEADERS_ALL POH1, PO_LINE_LOCATIONS_GT PLL1
WHERE PLL1.from_header_id = POL.from_header_id
AND POL.po_header_id = p_document_id
AND POL.from_header_id = POH1.po_header_id
AND POH1.type_lookup_code = 'BLANKET'
AND POH1.global_agreement_flag = 'Y'
AND POH1.amount_limit IS NOT NULL
AND Nvl(PLL1.consigned_flag,'N') <> 'Y' --bug11802312
GROUP BY
POL.line_num
, POL.quantity --
, POH1.amount_limit;
SELECT /*+ FULL(POL) */
POL.line_num
, nvl ( decode ( POL.quantity --
, NULL , sum ( PLL2.amount
- nvl(PLL2.amount_cancelled,0) )
, sum ( ( PLL2.quantity
- nvl(PLL2.quantity_cancelled,0) )
* PLL2.price_override )
)
, 0 )
BULK COLLECT INTO l_prev_doc_line_num, l_prev_rel_amount
FROM PO_LINE_LOCATIONS_ALL PLL2, PO_HEADERS_ALL POH1,
PO_HEADERS_ALL POH2, PO_LINES_GT POL
WHERE POL.po_header_id = p_document_id
AND POL.from_header_id = POH1.po_header_id --JOIN
AND POH1.type_lookup_code = 'BLANKET'
AND POH1.global_agreement_flag = 'Y'
AND POH1.amount_limit IS NOT NULL
AND PLL2.from_header_id = POL.from_header_id --JOIN
AND POH2.po_header_id = PLL2.po_header_id --JOIN
AND nvl(POH2.approved_flag, 'N') = 'Y'
AND PLL2.po_header_id <> p_document_id
AND Nvl(PLL2.consigned_flag,'N') <> 'Y' --bug11802312
GROUP BY
POL.line_num
, POL.quantity; --
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
VALUES(p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
l_curr_doc_line_num(l_curr_doc_line_index),
0,
0,
p_sequence+ l_rowcount,
substr(g_linemsg||g_delim||l_curr_doc_line_num(l_curr_doc_line_index)||g_delim
||l_textline,1,240),
'PO_SUB_STD_AMT_GRT_GA_AMT_LMT');
INSERT into po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
--SQL What: Querying for PO line unit prices that exceed the
--SQL price tolerance on the GA line
--SQL Why: Add appropriate error message to po_online_report_text_gt
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL1.line_num,
0,
0,
p_sequence + ROWNUM,
decode ( POL1.order_type_lookup_code --
, 'FIXED PRICE' , PO_CORE_S.get_translated_text
( 'PO_SUB_PO_LINE_GT_GA_AMT_TOL'
, 'LINE_NUM', POL1.line_num
, 'LINE_AMT', POL1.amount
, 'AMT_TOL' , nvl ( POL2.not_to_exceed_price
, POL1.amount )
)
, PO_CORE_S.get_translated_text
( 'PO_SUB_PO_LINE_GT_GA_PRICE_TOL'
, 'LINE_NUM' , POL1.line_num
, 'LINE_PRICE', POL1.unit_price
, 'PRICE_TOL' , nvl ( POL2.not_to_exceed_price
, POL1.unit_price )
)
),
decode ( POL1.order_type_lookup_code --
, 'FIXED PRICE' , 'PO_SUB_PO_LINE_GT_GA_AMT_TOL'
, 'PO_SUB_PO_LINE_GT_GA_PRICE_TOL'
)
FROM PO_LINES_GT POL1, PO_LINES_ALL POL2, PO_HEADERS_ALL POH
WHERE POL1.po_header_id = p_document_id
AND POH.po_header_id = POL1.from_header_id --JOIN
AND POH.type_lookup_code = 'BLANKET'
AND POH.global_agreement_flag = 'Y'
AND POL1.from_line_id = POL2.po_line_id --JOIN
AND nvl(POL1.cancel_flag,'N')= 'N'
AND nvl(POL1.closed_code,'OPEN') <> 'FINALLY CLOSED'
AND POL2.allow_price_override_flag = 'Y' -- Bug 3177525
AND ( --
( ( POL1.order_type_lookup_code IN ('QUANTITY','AMOUNT','RATE') ) --
AND ( POL1.unit_price > nvl ( POL2.not_to_exceed_price
, POL1.unit_price )
)
)
OR
( ( POL1.order_type_lookup_code IN ('FIXED PRICE') ) --
AND ( POL1.amount > nvl( POL2.not_to_exceed_price, POL1.amount ) )
)
);
INSERT into po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
--SQL What: Querying for PO shipment totals that fail to meet the
--SQL minimum release amount of the GA line
--SQL Why: Add appropriate error message to po_online_report_text_gt
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL1.line_num,
0,
0,
p_sequence + ROWNUM,
substr(g_linemsg||g_delim||POL1.line_num||g_delim
||l_textline,1,240),
'PO_SUB_STD_GA_LINE_LESS_MINREL' -- <2710030>
FROM PO_LINES_GT POL1, PO_LINES_ALL POL2, PO_HEADERS_ALL POH
WHERE POL1.po_header_id = p_document_id
AND POL1.from_header_id = POL2.po_header_id --JOIN
AND POL1.from_line_id = POL2.po_line_id --JOIN
AND POL1.from_header_id = POH.po_header_id --JOIN
AND POH.type_lookup_code = 'BLANKET'
AND POH.global_agreement_flag = 'Y'
AND POL2.min_release_amount IS NOT NULL
AND POL2.min_release_amount >
--SQL What: Querying PO_LINE_LOCATIONS for the total amount of the
--SQL shipments in this PO that reference the current GA line
--SQL Why: This sum determines whether the minimum release amount
--SQL for the GA line has been met
( SELECT --
decode ( POL1.quantity
, NULL , decode ( sum ( PLL.amount
- nvl(PLL.amount_cancelled,0) )
, 0 , POL2.min_release_amount
, sum ( PLL.amount
- nvl(PLL.amount_cancelled,0) )
)
, decode ( sum ( PLL.quantity
- nvl(PLL.quantity_cancelled,0) )
, 0 , POL2.min_release_amount
, sum ( ( PLL.quantity
- nvl(PLL.quantity_cancelled,0) )
* PLL.price_override )
)
)
--
--Changing the query to go to PO_LINE_LOCATIONS_GT instead of PO_LINE_LOCATIONS
FROM PO_LINE_LOCATIONS_GT PLL
WHERE PLL.po_header_id = p_document_id
AND PLL.from_line_id = POL2.po_line_id);
* p_online_report_id: Id used to INSERT INTO online_report_text table
* p_user_id: User performing the action
* p_login_id: Last update login_id
* IN OUT PARAMETERS
* x_sequence: Sequence number of last reported error
* Modifies: Inserts error msgs in online_report_text_gt table, uses
* global_temp tables for processing
* Effects: This procedure performs checks for the lines referencing global
* contracts to enforce the following:
* 1) Contract is still enabled for purchasing in current OU
* 2) Supplier Site is still enabled on the referenced GC
* 3) Amount released should be less than amount limit on GC
* Returns:
* x_sequence: This parameter contains the current count of number of error
* messages inserted
* x_return_status: This parameter signifies whether the checks contained in
* this procedure completed successfully.
*/
PROCEDURE check_std_gc_ref
( p_document_id IN NUMBER,
p_online_report_id IN NUMBER,
p_user_id IN NUMBER,
p_login_id IN NUMBER,
x_sequence IN OUT NOCOPY NUMBER,
x_return_status OUT NOCOPY VARCHAR2
) IS
l_textline PO_ONLINE_REPORT_TEXT.text_line%TYPE := NULL;
INSERT INTO po_online_report_text_gt (
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name
)
SELECT
p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
POL.line_num,
0,
0,
x_sequence + ROWNUM,
SUBSTR (g_linemsg || g_delim || POL.line_num || g_delim || l_textline,
1,
240),
'PA_SUB_STD_GC_NOT_EN_PUR'
FROM
po_headers_gt POH,
po_lines_gt POL,
po_headers_all POHA
WHERE
POH.po_header_id = p_document_id
AND POL.po_header_id = POH.po_header_id
AND POL.contract_id = POHA.po_header_id
AND POHA.global_agreement_flag = 'Y'
AND NOT EXISTS --< Bug 3301427 Start >
(SELECT 'previously approved shipment'
FROM po_line_locations_gt pllg
WHERE pllg.po_line_id = pol.po_line_id
AND pllg.approved_date IS NOT NULL) --< Bug 3301427 End >
AND NOT EXISTS (SELECT 1
FROM po_ga_org_assignments PGOA,
po_system_parameters PSP
WHERE PGOA.po_header_id = POHA.po_header_id
AND PGOA.purchasing_org_id = PSP.org_id
AND PGOA.enabled_flag = 'Y');
INSERT INTO po_online_report_text_gt (
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type
)
SELECT
p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
POL.line_num,
0,
0,
x_sequence + ROWNUM,
SUBSTR (g_linemsg || g_delim || POL.line_num || g_delim || l_textline,
1,
240),
'PA_SUB_STD_GC_INVALID_SITE',
Decode(is_approved_clm_document(p_document_id), 'Y', Decode(POH.vendor_id, POHA.vendor_id, NULL, 'W'), NULL)
FROM
po_headers_gt POH,
po_lines_gt POL,
po_headers_all POHA
WHERE
POH.po_header_id = p_document_id
AND POL.po_header_id = POH.po_header_id
AND POL.contract_id = POHA.po_header_id
AND POHA.global_agreement_flag = 'Y'
AND NOT EXISTS --< Bug 3301427 Start >
(SELECT 'previously approved shipment'
FROM po_line_locations_gt pllg
WHERE pllg.po_line_id = pol.po_line_id
AND pllg.approved_date IS NOT NULL) --< Bug 3301427 End >
AND NOT EXISTS (SELECT 1
FROM po_ga_org_assignments PGOA
WHERE PGOA.po_header_id = POHA.po_header_id
AND PGOA.vendor_site_id = Decode( Nvl ( poha.Enable_All_Sites,'N'),'N',POH.vendor_site_id,pgoa.Vendor_Site_Id)
AND PGOA.enabled_flag = 'Y');
SELECT /*+ FULL(POL) ORDERED */ -- bug3413891
POL.line_num,
sum(DECODE (POL1.order_type_lookup_code--Bug 12828203
, 'RATE', POL1.amount
, 'FIXED PRICE', POL1.amount
, POL1.quantity * POL1.unit_price)) ,
POHA.amount_limit,
Decode(poha.currency_code,poha1.currency_code,0,1),
Nvl(poha1.rate,1),
Nvl(poha.rate,1)
BULK COLLECT INTO l_curr_doc_line_num,
l_po_amount,
l_amount_limit,
l_current_different,
l_current_rate,
l_contract_rate
FROM po_lines_gt POL, -- target_line
po_headers_all POHA, -- global contract
po_lines_gt POL1, -- all lines in current doc
-- having the same contract ref
po_headers_all POHA1 -- document
WHERE
POL.po_header_id = p_document_id
AND POL.po_header_id = POHA1.po_header_id
AND POL.contract_id = POHA.po_header_id
AND POHA.global_agreement_flag = 'Y'
AND POHA.amount_limit IS NOT NULL
AND POL.contract_id = POL1.contract_id
AND POL.po_header_id=POL1.po_header_id --Bug: 12828203
GROUP BY POL.line_num,POHA.amount_limit,Decode(poha.currency_code,poha1.currency_code,0,1),
Nvl(poha1.rate,1),
Nvl(poha.rate,1);
SELECT /*+ FULL(POL) ORDERED*/ -- bug3413891, 9242146
POL.line_num,
sum(DECODE (POL1.order_type_lookup_code
, 'RATE', POL1.amount
, 'FIXED PRICE', POL1.amount
, POL1.quantity * POL1.unit_price)),
Decode(POHA.currency_code,POH1.currency_code,0,1),
Nvl(POH1.rate,1)
BULK COLLECT INTO l_prev_doc_line_num,
l_prev_rel_amount,
l_prev_different,
l_prev_rate
FROM po_lines_gt POL, -- target line
po_headers_all POHA, -- global contract
--bug 9242146, force tables
--to be joined in the order specified.
po_lines_all POL1, -- all lines from other doc with
-- the same GC ref
po_headers_all POH1 -- headers of lines in POL1
WHERE
POL.po_header_id = p_document_id
AND POL.contract_id = POHA.po_header_id
AND POHA.global_agreement_flag = 'Y'
AND POHA.amount_limit IS NOT NULL
AND POL1.contract_id = POL.contract_id
AND POL1.po_header_id <> POL.po_header_id
AND POH1.po_header_id = POL1.po_header_id
AND POH1.approved_flag = 'Y'
GROUP BY POL.line_num, Decode(POHA.currency_code,POH1.currency_code,0,1),
Nvl(POH1.rate,1);
INSERT INTO po_online_report_text_gt (
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name
) VALUES (
p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
l_curr_doc_line_num(l_curr_doc_line_index),
0,
0,
x_sequence + l_rowcount,
SUBSTR (g_linemsg || g_delim ||
l_curr_doc_line_num(l_curr_doc_line_index) ||
g_delim || l_textline, 1, 240),
'PO_SUB_STD_CONTRACT_AMT_LIMIT'
);
INSERT INTO po_online_report_text_gt (
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name
)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
PLL.shipment_num,
0,
x_sequence + ROWNUM,
substr(g_linemsg||g_delim||POL.line_num||g_delim
||l_textline,1,240),
'PO_SUB_STD_AFTER_GA_DATE'
FROM PO_LINES_GT POL, PO_HEADERS_GT POH, PO_HEADERS_ALL POH2, PO_LINE_LOCATIONS_GT PLL
WHERE POL.po_header_id = p_document_id
AND POL.po_header_id = POH.po_header_id
AND PLL.po_line_id = POL.po_line_id
AND POL.contract_id = POH2.po_header_id
AND POH2.type_lookup_code = 'CONTRACT'
AND POH2.global_agreement_flag = 'Y'
AND Nvl(pol.cancel_flag,'N') = 'N'
AND Nvl(pol.closed_code,'OPEN') <> 'FINALLY CLOSED'
AND TRUNC(sysdate)
> TRUNC(POH2.end_date+ nvl(FND_PROFILE.VALUE('PO_REL_CREATE_TOLERANCE'),0))
AND Nvl(PLL.approved_flag, 'N') <> 'Y';
* p_online_report_id: Id used to INSERT INTO online_report_text table
* p_user_id: User performing the action
* p_login_id: Last update login_id
* IN OUT PARAMETERS
* p_sequence: Sequence number of last reported error
* Modifies: Inserts error msgs in online_report_text_gt table, uses
* global_temp tables for processing
* Effects: This procedure runs the document submission checks for CONTRACT
* PAs
* Returns:
* p_sequence: This parameter contains the current count of number of error
* messages inserted
*/
PROCEDURE check_contract_agreement(p_document_id IN NUMBER,
p_online_report_id IN NUMBER,
p_user_id IN NUMBER,
p_login_id IN NUMBER,
p_sequence IN OUT NOCOPY NUMBER,
x_return_status OUT NOCOPY VARCHAR2) IS
l_textline po_online_report_text.text_line%TYPE := NULL;
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
substr(l_textline,1,240),
'PO_SUB_CONTRACT_AMT_LIMIT'
--
-- For local contract, need to take care of currency conversion
-- since the std PO referencing a contract may be in a different
-- currency
--
--Added a sum function to the sql's select clause
-- bug5138959
-- Added a sum function to the second select clause
-- bug5153099
-- Removed group by clause in subquery.Also removed the checking for
-- global_agreement_flag and the corresponding OR case logic.
FROM PO_HEADERS_GT POH
WHERE POH.po_header_id = p_document_id
AND POH.type_lookup_code = 'CONTRACT'
AND POH.amount_limit IS NOT NULL
AND ((POH.amount_limit * NVL(POH.rate, 1)) -- amt limit in fn currency --
<
(SELECT SUM( --Bug#4619187
DECODE (POL1.order_type_lookup_code
, 'RATE', POL1.amount
, 'FIXED PRICE', POL1.amount
, POL1.quantity * POL1.unit_price)
* NVL(POH1.rate,1)
)
FROM po_headers POH1,
po_lines POL1
WHERE POL1.contract_id = POH.po_header_id
AND POL1.po_header_id = POH1.po_header_id
AND NVL(POL1.cancel_flag, 'N') = 'N'
) -- amt released in fn currency
);
* p_online_report_id: Id used to INSERT INTO online_report_text table
* p_user_id: User performing the action
* p_login_id: Last update login_id
* IN OUT PARAMETERS
* p_sequence: Sequence number of last reported error
* Modifies: Inserts error msgs in online_report_text_gt table, uses
* global_temp tables for processing
* Effects: This procedure runs the document submission checks for HEADER
* level CBC (FPI Project) validations for PO, REQ, REL
* Returns:
* p_sequence: This parameter contains the current count of number of error
* messages inserted
*/
PROCEDURE do_cbc_related_validations(p_document_type IN VARCHAR2,
p_document_subtype IN VARCHAR2,
p_document_id IN NUMBER,
p_online_report_id IN NUMBER,
p_user_id IN NUMBER,
p_login_id IN NUMBER,
p_sequence IN OUT NOCOPY NUMBER,
x_return_status OUT NOCOPY VARCHAR2) IS
l_msg_count NUMBER;
FND_MSG_PUB.Delete_Msg(p_msg_index => FND_MSG_PUB.G_LAST);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT (online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
VALUES (p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + 1,
substr(l_textline,1,240),
'IGC_MULT_FISCAL_YEARS');
DELETE FROM po_headers_gt;
DELETE FROM po_lines_gt;
DELETE FROM po_line_locations_gt;
DELETE FROM po_distributions_gt;
DELETE FROM po_releases_gt;
DELETE FROM po_req_headers_gt;
DELETE FROM po_req_lines_gt;
DELETE FROM po_req_distributions_gt;
DELETE FROM po_online_report_text_gt;
SELECT po_header_id
INTO l_blanket_header_id
FROM po_releases_gt
WHERE po_release_id = l_doc_id;
FOR ship_rec in (select line_location_id from po_line_locations_gt)
LOOP
set_lcm_flag(ship_rec.line_location_id,'BEFORE',l_return_status);
* Private Procedure: UPDATE_GLOBAL_TEMP_TABLES
* Requires:
* IN PARAMETERS:
* p_document_type: Type of submitted document
* p_document_subtype: Subtype of submitted document
* p_document_id: Id of submitted document
* p_requested_changes: This object contains all the requested changes to
* the document. It contains 5 objects. These objects
* are: 1.Header_Changes 2.Release_Changes 3.Line_
* Changes 4.Shipment_Changes 5.Distribution_Changes.
* In FPI, following change requests are allowed:
* 1. HEADER_CHANGES: None
* 2. RELEASE_CHANGES: None
* 3. LINE_CHANGES: unit_price, vendor_product_num
* 4. SHIPMENT_CHANGES: quantity, promised_date,
* price_override
* 5. DISTRIBUTION_CHANGES: quantity_ordered
* Modifies:
* Effects: Updates the global temp tables with the changes in object
* p_requested_changes
* Returns:
*/
PROCEDURE update_global_temp_tables(p_document_type IN VARCHAR2,
p_document_subtype IN VARCHAR2,
p_document_id IN NUMBER,
-- Renamed the type to PO_CHANGES_REC_TYPE:
p_requested_changes IN PO_CHANGES_REC_TYPE,
x_return_status OUT NOCOPY VARCHAR2) IS
l_api_name CONSTANT varchar2(40) := 'UPDATE_GLOBAL_TEMP_TABLES';
UPDATE po_lines_gt
SET unit_price = nvl(p_requested_changes.line_changes.unit_price(i),unit_price),
vendor_product_num = nvl(p_requested_changes.line_changes.vendor_product_num(i),
vendor_product_num),
--
-- Added several changeable fields:
quantity = nvl(p_requested_changes.line_changes.quantity(i),
quantity),
start_date = nvl(p_requested_changes.line_changes.start_date(i),
start_date),
expiration_date =
nvl(p_requested_changes.line_changes.expiration_date(i),
expiration_date),
amount = nvl(p_requested_changes.line_changes.amount(i),
amount)
--
WHERE po_line_id = p_requested_changes.line_changes.po_line_id(i);
UPDATE po_line_locations_gt
SET price_override = nvl(p_requested_changes.line_changes.unit_price(i),price_override)
WHERE po_line_id = p_requested_changes.line_changes.po_line_id(i)
AND nvl(payment_type, 'NULL') NOT IN ('MILESTONE', 'ADVANCE')
-- : do not carry line price down in Qty Milestone case
;
UPDATE po_line_locations_gt
SET quantity = nvl(p_requested_changes.shipment_changes.quantity(i),quantity),
promised_date = nvl(p_requested_changes.shipment_changes.promised_date(i),
promised_date),
price_override = nvl(p_requested_changes.shipment_changes.price_override(i),
price_override),
--
-- Added several changeable fields:
need_by_date =
nvl(p_requested_changes.shipment_changes.need_by_date(i),
need_by_date),
ship_to_location_id =
nvl(p_requested_changes.shipment_changes.ship_to_location_id(i),
ship_to_location_id),
amount = nvl(p_requested_changes.shipment_changes.amount(i),
amount),
--
--
payment_type = nvl(p_requested_changes.shipment_changes.payment_type(i),
payment_type),
description = nvl(p_requested_changes.shipment_changes.description(i),
description),
value_basis = DECODE(p_requested_changes.shipment_changes.payment_type(i)
, NULL, value_basis
, 'RATE', 'QUANTITY'
, 'LUMPSUM', 'FIXED PRICE'
, 'MILESTONE', 'FIXED PRICE'
)
-- Note: the value basis decode assumes Milestone Pay Items are Amount
-- Milestones, since payment type is not changeable on Qty-based lines
--
WHERE line_location_id = p_requested_changes.shipment_changes.po_line_location_id(i)
AND p_requested_changes.shipment_changes.parent_line_location_id(i) IS NULL;
INSERT INTO po_line_locations_gt(
LINE_LOCATION_ID ,
LAST_UPDATE_DATE ,
LAST_UPDATED_BY ,
PO_HEADER_ID ,
PO_LINE_ID ,
LAST_UPDATE_LOGIN ,
CREATION_DATE ,
CREATED_BY ,
QUANTITY ,
QUANTITY_RECEIVED ,
QUANTITY_ACCEPTED ,
QUANTITY_REJECTED ,
QUANTITY_BILLED ,
QUANTITY_CANCELLED ,
UNIT_MEAS_LOOKUP_CODE ,
PO_RELEASE_ID ,
SHIP_TO_LOCATION_ID ,
SHIP_VIA_LOOKUP_CODE ,
NEED_BY_DATE ,
PROMISED_DATE ,
LAST_ACCEPT_DATE ,
PRICE_OVERRIDE ,
ENCUMBERED_FLAG ,
ENCUMBERED_DATE ,
UNENCUMBERED_QUANTITY ,
FOB_LOOKUP_CODE ,
FREIGHT_TERMS_LOOKUP_CODE ,
TAXABLE_FLAG ,
ESTIMATED_TAX_AMOUNT ,
FROM_HEADER_ID ,
FROM_LINE_ID ,
FROM_LINE_LOCATION_ID ,
START_DATE ,
END_DATE ,
LEAD_TIME ,
LEAD_TIME_UNIT ,
PRICE_DISCOUNT ,
TERMS_ID ,
APPROVED_FLAG ,
APPROVED_DATE ,
CLOSED_FLAG ,
CANCEL_FLAG ,
CANCELLED_BY ,
CANCEL_DATE ,
CANCEL_REASON ,
FIRM_STATUS_LOOKUP_CODE ,
FIRM_DATE ,
ATTRIBUTE_CATEGORY ,
ATTRIBUTE1 ,
ATTRIBUTE2 ,
ATTRIBUTE3 ,
ATTRIBUTE4 ,
ATTRIBUTE5 ,
ATTRIBUTE6 ,
ATTRIBUTE7 ,
ATTRIBUTE8 ,
ATTRIBUTE9 ,
ATTRIBUTE10 ,
UNIT_OF_MEASURE_CLASS ,
ENCUMBER_NOW ,
ATTRIBUTE11 ,
ATTRIBUTE12 ,
ATTRIBUTE13 ,
ATTRIBUTE14 ,
ATTRIBUTE15 ,
INSPECTION_REQUIRED_FLAG ,
RECEIPT_REQUIRED_FLAG ,
QTY_RCV_TOLERANCE ,
QTY_RCV_EXCEPTION_CODE ,
ENFORCE_SHIP_TO_LOCATION_CODE ,
ALLOW_SUBSTITUTE_RECEIPTS_FLAG ,
DAYS_EARLY_RECEIPT_ALLOWED ,
DAYS_LATE_RECEIPT_ALLOWED ,
RECEIPT_DAYS_EXCEPTION_CODE ,
INVOICE_CLOSE_TOLERANCE ,
RECEIVE_CLOSE_TOLERANCE ,
SHIP_TO_ORGANIZATION_ID ,
SHIPMENT_NUM ,
SOURCE_SHIPMENT_ID ,
SHIPMENT_TYPE ,
CLOSED_CODE ,
REQUEST_ID ,
PROGRAM_APPLICATION_ID ,
PROGRAM_ID ,
PROGRAM_UPDATE_DATE ,
GOVERNMENT_CONTEXT ,
RECEIVING_ROUTING_ID ,
ACCRUE_ON_RECEIPT_FLAG ,
CLOSED_REASON ,
CLOSED_DATE ,
CLOSED_BY ,
ORG_ID ,
GLOBAL_ATTRIBUTE1 ,
GLOBAL_ATTRIBUTE2 ,
GLOBAL_ATTRIBUTE3 ,
GLOBAL_ATTRIBUTE4 ,
GLOBAL_ATTRIBUTE5 ,
GLOBAL_ATTRIBUTE6 ,
GLOBAL_ATTRIBUTE7 ,
GLOBAL_ATTRIBUTE8 ,
GLOBAL_ATTRIBUTE9 ,
GLOBAL_ATTRIBUTE10 ,
GLOBAL_ATTRIBUTE11 ,
GLOBAL_ATTRIBUTE12 ,
GLOBAL_ATTRIBUTE13 ,
GLOBAL_ATTRIBUTE14 ,
GLOBAL_ATTRIBUTE15 ,
GLOBAL_ATTRIBUTE16 ,
GLOBAL_ATTRIBUTE17 ,
GLOBAL_ATTRIBUTE18 ,
GLOBAL_ATTRIBUTE19 ,
GLOBAL_ATTRIBUTE20 ,
GLOBAL_ATTRIBUTE_CATEGORY ,
QUANTITY_SHIPPED ,
COUNTRY_OF_ORIGIN_CODE ,
TAX_USER_OVERRIDE_FLAG ,
MATCH_OPTION ,
TAX_CODE_ID ,
CALCULATE_TAX_FLAG ,
CHANGE_PROMISED_DATE_REASON ,
NOTE_TO_RECEIVER ,
SECONDARY_QUANTITY ,
SECONDARY_UNIT_OF_MEASURE ,
PREFERRED_GRADE ,
SECONDARY_QUANTITY_RECEIVED ,
SECONDARY_QUANTITY_ACCEPTED ,
SECONDARY_QUANTITY_REJECTED ,
SECONDARY_QUANTITY_CANCELLED ,
VMI_FLAG ,
CONSIGNED_FLAG ,
RETROACTIVE_DATE ,
AMOUNT , --
DESCRIPTION , --
PAYMENT_TYPE , --
VALUE_BASIS --
)
SELECT
-- bug3611217
-- Use a sequence number rather than FND_API.G_MISS_NUM
-- since we have added unique constraint on LINE_LOCATION_ID
PO_LINE_LOCATIONS_S.nextval,
poll.LAST_UPDATE_DATE ,
poll.LAST_UPDATED_BY ,
poll.PO_HEADER_ID ,
poll.PO_LINE_ID ,
poll.LAST_UPDATE_LOGIN ,
poll.CREATION_DATE ,
poll.CREATED_BY ,
nvl(p_requested_changes.shipment_changes.quantity(i),poll.quantity),
-- Bug 3322019 START
-- Quantity received, accepted, cancelled, etc. should be
-- NULL or 0 on the split shipment.
decode(poll.quantity_received,NULL,NULL,0),
decode(poll.quantity_accepted,NULL,NULL,0),
decode(poll.quantity_rejected,NULL,NULL,0),
decode(poll.quantity_billed,NULL,NULL,0),
decode(poll.quantity_cancelled,NULL,NULL,0),
-- Bug 3322019 END
poll.UNIT_MEAS_LOOKUP_CODE ,
poll.PO_RELEASE_ID ,
-- Added as a changeable field:
nvl(p_requested_changes.shipment_changes.ship_to_location_id(i),
poll.ship_to_location_id),
poll.SHIP_VIA_LOOKUP_CODE ,
-- Added as a changeable field:
nvl(p_requested_changes.shipment_changes.need_by_date(i),
poll.need_by_date),
nvl(p_requested_changes.shipment_changes.promised_date(i),
poll.promised_date),
poll.LAST_ACCEPT_DATE ,
nvl(p_requested_changes.shipment_changes.price_override(i),
poll.price_override),
-- Bug 3322019 START
NULL, -- ENCUMBERED_FLAG
NULL, -- ENCUMBERED_DATE
NULL, -- UNENCUMBERED_QUANTITY
-- Bug 3322019 END
poll.FOB_LOOKUP_CODE ,
poll.FREIGHT_TERMS_LOOKUP_CODE ,
poll.TAXABLE_FLAG ,
0, -- ESTIMATED_TAX_AMOUNT (Bug 3322019)
poll.FROM_HEADER_ID ,
poll.FROM_LINE_ID ,
poll.FROM_LINE_LOCATION_ID ,
poll.START_DATE ,
poll.END_DATE ,
poll.LEAD_TIME ,
poll.LEAD_TIME_UNIT ,
poll.PRICE_DISCOUNT ,
poll.TERMS_ID ,
-- Bug 3322019 START
'N', -- APPROVED_FLAG
NULL, -- APPROVED_DATE
NULL, -- CLOSED_FLAG
'N', -- CANCEL_FLAG
NULL, -- CANCELLED_BY
NULL, -- CANCEL_DATE
NULL, -- CANCEL_REASON
-- Bug 3322019 END
poll.FIRM_STATUS_LOOKUP_CODE ,
poll.FIRM_DATE ,
poll.ATTRIBUTE_CATEGORY ,
poll.ATTRIBUTE1 ,
poll.ATTRIBUTE2 ,
poll.ATTRIBUTE3 ,
poll.ATTRIBUTE4 ,
poll.ATTRIBUTE5 ,
poll.ATTRIBUTE6 ,
poll.ATTRIBUTE7 ,
poll.ATTRIBUTE8 ,
poll.ATTRIBUTE9 ,
poll.ATTRIBUTE10 ,
poll.UNIT_OF_MEASURE_CLASS ,
poll.ENCUMBER_NOW ,
poll.ATTRIBUTE11 ,
poll.ATTRIBUTE12 ,
poll.ATTRIBUTE13 ,
poll.ATTRIBUTE14 ,
poll.ATTRIBUTE15 ,
poll.INSPECTION_REQUIRED_FLAG ,
poll.RECEIPT_REQUIRED_FLAG ,
poll.QTY_RCV_TOLERANCE ,
poll.QTY_RCV_EXCEPTION_CODE ,
poll.ENFORCE_SHIP_TO_LOCATION_CODE ,
poll.ALLOW_SUBSTITUTE_RECEIPTS_FLAG ,
poll.DAYS_EARLY_RECEIPT_ALLOWED ,
poll.DAYS_LATE_RECEIPT_ALLOWED ,
poll.RECEIPT_DAYS_EXCEPTION_CODE ,
poll.INVOICE_CLOSE_TOLERANCE ,
poll.RECEIVE_CLOSE_TOLERANCE ,
poll.SHIP_TO_ORGANIZATION_ID ,
--
--iSP is passing shipment_num now
nvl(p_requested_changes.shipment_changes.split_shipment_num(i),
FND_API.G_MISS_NUM),
--SHIPMENT_NUM ,
--
poll.SOURCE_SHIPMENT_ID ,
poll.SHIPMENT_TYPE ,
-- Bug 3322019 START
'OPEN', -- CLOSED_CODE
NULL, -- REQUEST_ID
NULL, -- PROGRAM_APPLICATION_ID
NULL, -- PROGRAM_ID
NULL, -- PROGRAM_UPDATE_DATE
-- Bug 3322019 START
poll.GOVERNMENT_CONTEXT ,
poll.RECEIVING_ROUTING_ID ,
poll.ACCRUE_ON_RECEIPT_FLAG ,
-- Bug 3322019 START
NULL, -- CLOSED_REASON
NULL, -- CLOSED_DATE
NULL, -- CLOSED_BY
-- Bug 3322019 END
poll.ORG_ID ,
poll.GLOBAL_ATTRIBUTE1 ,
poll.GLOBAL_ATTRIBUTE2 ,
poll.GLOBAL_ATTRIBUTE3 ,
poll.GLOBAL_ATTRIBUTE4 ,
poll.GLOBAL_ATTRIBUTE5 ,
poll.GLOBAL_ATTRIBUTE6 ,
poll.GLOBAL_ATTRIBUTE7 ,
poll.GLOBAL_ATTRIBUTE8 ,
poll.GLOBAL_ATTRIBUTE9 ,
poll.GLOBAL_ATTRIBUTE10 ,
poll.GLOBAL_ATTRIBUTE11 ,
poll.GLOBAL_ATTRIBUTE12 ,
poll.GLOBAL_ATTRIBUTE13 ,
poll.GLOBAL_ATTRIBUTE14 ,
poll.GLOBAL_ATTRIBUTE15 ,
poll.GLOBAL_ATTRIBUTE16 ,
poll.GLOBAL_ATTRIBUTE17 ,
poll.GLOBAL_ATTRIBUTE18 ,
poll.GLOBAL_ATTRIBUTE19 ,
poll.GLOBAL_ATTRIBUTE20 ,
poll.GLOBAL_ATTRIBUTE_CATEGORY ,
decode(poll.quantity_shipped,NULL,NULL,0), -- Bug 3322019
poll.COUNTRY_OF_ORIGIN_CODE ,
poll.TAX_USER_OVERRIDE_FLAG ,
poll.MATCH_OPTION ,
poll.TAX_CODE_ID ,
poll.CALCULATE_TAX_FLAG ,
poll.CHANGE_PROMISED_DATE_REASON ,
poll.NOTE_TO_RECEIVER ,
decode(poll.secondary_quantity,NULL,NULL,0), -- Bug 3322019
poll.SECONDARY_UNIT_OF_MEASURE ,
poll.PREFERRED_GRADE ,
-- Bug 3322019 START
decode(poll.secondary_quantity_received,NULL,NULL,0),
decode(poll.secondary_quantity_accepted,NULL,NULL,0),
decode(poll.secondary_quantity_rejected,NULL,NULL,0),
decode(poll.secondary_quantity_cancelled,NULL,NULL,0),
-- Bug 3322019 END
poll.VMI_FLAG ,
poll.CONSIGNED_FLAG ,
poll.RETROACTIVE_DATE ,
-- Added a changeable field:
NVL(p_requested_changes.shipment_changes.amount(i), poll.amount),
--
--
poll.DESCRIPTION,
poll.PAYMENT_TYPE,
DECODE(p_requested_changes.shipment_changes.payment_type(i)
, 'RATE', 'QUANTITY'
, 'LUMPSUM', 'FIXED PRICE'
, POL.order_type_lookup_code
)
-- Note: the value basis decode assumes Milestone Pay Items are Amount
-- Milestones, since payment type is not changeable on Qty-based lines
--
FROM po_line_locations poll
, po_lines_all pol --
WHERE poll.line_location_id =
p_requested_changes.shipment_changes.parent_line_location_id(i)
AND p_requested_changes.shipment_changes.po_line_location_id(i) IS NULL
AND poll.po_line_id = pol.po_line_id; --
UPDATE po_distributions_gt
SET quantity_ordered = nvl(p_requested_changes.distribution_changes.quantity_ordered(i),
quantity_ordered),
--
-- Added amount_ordered as a changeable field:
amount_ordered =
nvl(p_requested_changes.distribution_changes.amount_ordered(i),
amount_ordered)
--
WHERE po_distribution_id = p_requested_changes.distribution_changes.po_distribution_id(i);
END UPDATE_GLOBAL_TEMP_TABLES;
INSERT INTO po_headers_gt(
PO_HEADER_ID,
AGENT_ID,
TYPE_LOOKUP_CODE,
LAST_UPDATE_DATE,
LAST_UPDATED_BY,
SEGMENT1,
SUMMARY_FLAG,
ENABLED_FLAG,
SEGMENT2,
SEGMENT3,
SEGMENT4,
SEGMENT5,
START_DATE_ACTIVE,
END_DATE_ACTIVE,
LAST_UPDATE_LOGIN,
CREATION_DATE ,
CREATED_BY,
VENDOR_ID,
VENDOR_SITE_ID,
VENDOR_CONTACT_ID,
SHIP_TO_LOCATION_ID,
BILL_TO_LOCATION_ID ,
TERMS_ID ,
SHIP_VIA_LOOKUP_CODE ,
FOB_LOOKUP_CODE ,
FREIGHT_TERMS_LOOKUP_CODE,
STATUS_LOOKUP_CODE,
CURRENCY_CODE,
RATE_TYPE,
RATE_DATE,
RATE,
FROM_HEADER_ID,
FROM_TYPE_LOOKUP_CODE,
START_DATE,
END_DATE,
BLANKET_TOTAL_AMOUNT,
AUTHORIZATION_STATUS,
REVISION_NUM,
REVISED_DATE,
APPROVED_FLAG,
APPROVED_DATE,
AMOUNT_LIMIT,
MIN_RELEASE_AMOUNT,
NOTE_TO_AUTHORIZER,
NOTE_TO_VENDOR,
NOTE_TO_RECEIVER,
PRINT_COUNT,
PRINTED_DATE,
VENDOR_ORDER_NUM,
CONFIRMING_ORDER_FLAG,
COMMENTS,
REPLY_DATE,
REPLY_METHOD_LOOKUP_CODE,
RFQ_CLOSE_DATE,
QUOTE_TYPE_LOOKUP_CODE,
QUOTATION_CLASS_CODE,
QUOTE_WARNING_DELAY_UNIT,
QUOTE_WARNING_DELAY,
QUOTE_VENDOR_QUOTE_NUMBER,
ACCEPTANCE_REQUIRED_FLAG,
ACCEPTANCE_DUE_DATE,
CLOSED_DATE,
USER_HOLD_FLAG,
APPROVAL_REQUIRED_FLAG,
CANCEL_FLAG,
FIRM_STATUS_LOOKUP_CODE,
FIRM_DATE,
FROZEN_FLAG,
ATTRIBUTE_CATEGORY,
ATTRIBUTE1,
ATTRIBUTE2,
ATTRIBUTE3,
ATTRIBUTE4,
ATTRIBUTE5,
ATTRIBUTE6,
ATTRIBUTE7,
ATTRIBUTE8,
ATTRIBUTE9,
ATTRIBUTE10,
ATTRIBUTE11,
ATTRIBUTE12,
ATTRIBUTE13,
ATTRIBUTE14,
ATTRIBUTE15,
CLOSED_CODE,
GOVERNMENT_CONTEXT,
REQUEST_ID,
PROGRAM_APPLICATION_ID,
PROGRAM_ID,
PROGRAM_UPDATE_DATE,
ORG_ID,
SUPPLY_AGREEMENT_FLAG,
EDI_PROCESSED_FLAG,
EDI_PROCESSED_STATUS,
GLOBAL_ATTRIBUTE_CATEGORY,
GLOBAL_ATTRIBUTE1,
GLOBAL_ATTRIBUTE2,
GLOBAL_ATTRIBUTE3,
GLOBAL_ATTRIBUTE4,
GLOBAL_ATTRIBUTE5,
GLOBAL_ATTRIBUTE6,
GLOBAL_ATTRIBUTE7,
GLOBAL_ATTRIBUTE8,
GLOBAL_ATTRIBUTE9,
GLOBAL_ATTRIBUTE10,
GLOBAL_ATTRIBUTE11,
GLOBAL_ATTRIBUTE12,
GLOBAL_ATTRIBUTE13,
GLOBAL_ATTRIBUTE14,
GLOBAL_ATTRIBUTE15,
GLOBAL_ATTRIBUTE16,
GLOBAL_ATTRIBUTE17,
GLOBAL_ATTRIBUTE18,
GLOBAL_ATTRIBUTE19,
GLOBAL_ATTRIBUTE20,
INTERFACE_SOURCE_CODE,
REFERENCE_NUM,
WF_ITEM_TYPE,
WF_ITEM_KEY,
MRC_RATE_TYPE,
MRC_RATE_DATE,
MRC_RATE,
PCARD_ID,
PRICE_UPDATE_TOLERANCE,
PAY_ON_CODE,
XML_FLAG,
XML_SEND_DATE,
XML_CHANGE_SEND_DATE,
GLOBAL_AGREEMENT_FLAG,
CONSIGNED_CONSUMPTION_FLAG,
CBC_ACCOUNTING_DATE,
CONTERMS_EXIST_FLAG , --
encumbrance_required_flag, --
enable_all_sites, --
DRAFT_ID , --Mod Project
CLM_EFFECTIVE_DATE ,
CLM_VENDOR_OFFER_NUMBER ,
CLM_AWARD_ADMINISTRATOR ,
CLM_NO_SIGNED_COPIES_TO_RETURN ,
CLM_MIN_GUARANTEE_AWARD_AMT ,
CLM_MIN_GUAR_AWARD_AMT_PERCENT ,
CLM_MIN_ORDER_AMOUNT ,
CLM_MAX_ORDER_AMOUNT ,
CLM_AMT_SYNCED_TO_AGREEMENT ,
CLM_AMOUNT_RELEASED ,
CLM_EXTERNAL_IDV ,
CLM_SUPPLIER_NAME ,
CLM_SUPPLIER_SITE_NAME ,
CLM_DOCUMENT_NUMBER ,
CLM_ISSUING_OFFICE ,
CLM_COTR_OFFICE ,
CLM_COTR_CONTACT ,
CLM_PRIORITY_CODE ,
CLM_MOD_ISSUING_OFFICE ,
CLM_STANDARD_FORM ,
CLM_DOCUMENT_FORMAT ,
AME_TRANSACTION_TYPE ,
CLM_AWARD_TYPE ,
CLM_SOURCE_DOCUMENT_ID ,
CLM_PAYMENT_INSTR_CODE, -- Payment Instruction
SUPPLIER_NOTIF_METHOD -- MIPR
)
SELECT
PO_HEADER_ID,
AGENT_ID,
TYPE_LOOKUP_CODE,
LAST_UPDATE_DATE,
LAST_UPDATED_BY,
SEGMENT1,
SUMMARY_FLAG,
ENABLED_FLAG,
SEGMENT2,
SEGMENT3,
SEGMENT4,
SEGMENT5,
START_DATE_ACTIVE,
END_DATE_ACTIVE,
LAST_UPDATE_LOGIN,
CREATION_DATE ,
CREATED_BY,
VENDOR_ID,
VENDOR_SITE_ID,
VENDOR_CONTACT_ID,
SHIP_TO_LOCATION_ID,
BILL_TO_LOCATION_ID ,
TERMS_ID ,
SHIP_VIA_LOOKUP_CODE ,
FOB_LOOKUP_CODE ,
FREIGHT_TERMS_LOOKUP_CODE,
STATUS_LOOKUP_CODE,
CURRENCY_CODE,
RATE_TYPE,
RATE_DATE,
RATE,
FROM_HEADER_ID,
FROM_TYPE_LOOKUP_CODE,
START_DATE,
END_DATE,
BLANKET_TOTAL_AMOUNT,
AUTHORIZATION_STATUS,
REVISION_NUM,
REVISED_DATE,
APPROVED_FLAG,
APPROVED_DATE,
AMOUNT_LIMIT,
MIN_RELEASE_AMOUNT,
NOTE_TO_AUTHORIZER,
NOTE_TO_VENDOR,
NOTE_TO_RECEIVER,
PRINT_COUNT,
PRINTED_DATE,
VENDOR_ORDER_NUM,
CONFIRMING_ORDER_FLAG,
COMMENTS,
REPLY_DATE,
REPLY_METHOD_LOOKUP_CODE,
RFQ_CLOSE_DATE,
QUOTE_TYPE_LOOKUP_CODE,
QUOTATION_CLASS_CODE,
QUOTE_WARNING_DELAY_UNIT,
QUOTE_WARNING_DELAY,
QUOTE_VENDOR_QUOTE_NUMBER,
ACCEPTANCE_REQUIRED_FLAG,
ACCEPTANCE_DUE_DATE,
CLOSED_DATE,
USER_HOLD_FLAG,
APPROVAL_REQUIRED_FLAG,
CANCEL_FLAG,
FIRM_STATUS_LOOKUP_CODE,
FIRM_DATE,
FROZEN_FLAG,
ATTRIBUTE_CATEGORY,
ATTRIBUTE1,
ATTRIBUTE2,
ATTRIBUTE3,
ATTRIBUTE4,
ATTRIBUTE5,
ATTRIBUTE6,
ATTRIBUTE7,
ATTRIBUTE8,
ATTRIBUTE9,
ATTRIBUTE10,
ATTRIBUTE11,
ATTRIBUTE12,
ATTRIBUTE13,
ATTRIBUTE14,
ATTRIBUTE15,
CLOSED_CODE,
GOVERNMENT_CONTEXT,
REQUEST_ID,
PROGRAM_APPLICATION_ID,
PROGRAM_ID,
PROGRAM_UPDATE_DATE,
ORG_ID,
SUPPLY_AGREEMENT_FLAG,
EDI_PROCESSED_FLAG,
EDI_PROCESSED_STATUS,
GLOBAL_ATTRIBUTE_CATEGORY,
GLOBAL_ATTRIBUTE1,
GLOBAL_ATTRIBUTE2,
GLOBAL_ATTRIBUTE3,
GLOBAL_ATTRIBUTE4,
GLOBAL_ATTRIBUTE5,
GLOBAL_ATTRIBUTE6,
GLOBAL_ATTRIBUTE7,
GLOBAL_ATTRIBUTE8,
GLOBAL_ATTRIBUTE9,
GLOBAL_ATTRIBUTE10,
GLOBAL_ATTRIBUTE11,
GLOBAL_ATTRIBUTE12,
GLOBAL_ATTRIBUTE13,
GLOBAL_ATTRIBUTE14,
GLOBAL_ATTRIBUTE15,
GLOBAL_ATTRIBUTE16,
GLOBAL_ATTRIBUTE17,
GLOBAL_ATTRIBUTE18,
GLOBAL_ATTRIBUTE19,
GLOBAL_ATTRIBUTE20,
INTERFACE_SOURCE_CODE,
REFERENCE_NUM,
WF_ITEM_TYPE,
WF_ITEM_KEY,
MRC_RATE_TYPE,
MRC_RATE_DATE,
MRC_RATE,
PCARD_ID,
PRICE_UPDATE_TOLERANCE,
PAY_ON_CODE,
XML_FLAG,
XML_SEND_DATE,
XML_CHANGE_SEND_DATE,
GLOBAL_AGREEMENT_FLAG,
CONSIGNED_CONSUMPTION_FLAG,
CBC_ACCOUNTING_DATE,
CONTERMS_EXIST_FLAG --
, encumbrance_required_flag --
,NULL --Temp, enable_all_sites --
, DRAFT_ID,
CLM_EFFECTIVE_DATE ,
CLM_VENDOR_OFFER_NUMBER ,
CLM_AWARD_ADMINISTRATOR ,
CLM_NO_SIGNED_COPIES_TO_RETURN ,
CLM_MIN_GUARANTEE_AWARD_AMT ,
CLM_MIN_GUAR_AWARD_AMT_PERCENT ,
CLM_MIN_ORDER_AMOUNT ,
CLM_MAX_ORDER_AMOUNT ,
CLM_AMT_SYNCED_TO_AGREEMENT ,
CLM_AMOUNT_RELEASED ,
CLM_EXTERNAL_IDV ,
CLM_SUPPLIER_NAME ,
CLM_SUPPLIER_SITE_NAME ,
CLM_DOCUMENT_NUMBER ,
CLM_ISSUING_OFFICE ,
CLM_COTR_OFFICE ,
CLM_COTR_CONTACT ,
CLM_PRIORITY_CODE ,
CLM_MOD_ISSUING_OFFICE ,
CLM_STANDARD_FORM ,
CLM_DOCUMENT_FORMAT ,
AME_TRANSACTION_TYPE ,
CLM_AWARD_TYPE ,
CLM_SOURCE_DOCUMENT_ID ,
CLM_PAYMENT_INSTR_CODE, -- Payment Instruction
SUPPLIER_NOTIF_METHOD -- MIPR
--Mod Project
/*-- CLM Aprvl
FROM po_headers
WHERE po_header_id = p_document_id
*/-- CLM Aprvl
FROM po_headers_merge_v
WHERE po_header_id = p_document_id
and draft_id = p_draft_id;
SELECT po_header_id, segment1 into t_po_header_id, t_segment1
from po_headers_gt where po_header_id = p_document_id;
SELECT draft_type
INTO l_draft_type
FROM po_drafts
WHERE draft_id = p_draft_id;
INSERT INTO po_lines_gt(
PO_LINE_ID ,
LAST_UPDATE_DATE ,
LAST_UPDATED_BY ,
PO_HEADER_ID ,
LINE_TYPE_ID ,
LINE_NUM ,
LAST_UPDATE_LOGIN ,
CREATION_DATE ,
CREATED_BY ,
ITEM_ID ,
ITEM_REVISION ,
CATEGORY_ID ,
ITEM_DESCRIPTION ,
UNIT_MEAS_LOOKUP_CODE ,
QUANTITY_COMMITTED ,
COMMITTED_AMOUNT ,
ALLOW_PRICE_OVERRIDE_FLAG ,
NOT_TO_EXCEED_PRICE ,
LIST_PRICE_PER_UNIT ,
UNIT_PRICE ,
QUANTITY ,
UN_NUMBER_ID ,
HAZARD_CLASS_ID ,
NOTE_TO_VENDOR ,
FROM_HEADER_ID ,
FROM_LINE_ID ,
MIN_ORDER_QUANTITY ,
MAX_ORDER_QUANTITY ,
QTY_RCV_TOLERANCE ,
OVER_TOLERANCE_ERROR_FLAG ,
MARKET_PRICE ,
UNORDERED_FLAG ,
CLOSED_FLAG ,
USER_HOLD_FLAG ,
CANCEL_FLAG ,
CANCELLED_BY ,
CANCEL_DATE ,
CANCEL_REASON ,
FIRM_STATUS_LOOKUP_CODE ,
FIRM_DATE ,
VENDOR_PRODUCT_NUM ,
CONTRACT_NUM ,
TAXABLE_FLAG ,
TAX_NAME ,
TYPE_1099 ,
CAPITAL_EXPENSE_FLAG ,
NEGOTIATED_BY_PREPARER_FLAG ,
ATTRIBUTE_CATEGORY ,
ATTRIBUTE1 ,
ATTRIBUTE2 ,
ATTRIBUTE3 ,
ATTRIBUTE4 ,
ATTRIBUTE5 ,
ATTRIBUTE6 ,
ATTRIBUTE7 ,
ATTRIBUTE8 ,
ATTRIBUTE9 ,
ATTRIBUTE10 ,
REFERENCE_NUM ,
ATTRIBUTE11 ,
ATTRIBUTE12 ,
ATTRIBUTE13 ,
ATTRIBUTE14 ,
ATTRIBUTE15 ,
MIN_RELEASE_AMOUNT ,
PRICE_TYPE_LOOKUP_CODE ,
CLOSED_CODE ,
PRICE_BREAK_LOOKUP_CODE ,
GOVERNMENT_CONTEXT ,
REQUEST_ID ,
PROGRAM_APPLICATION_ID ,
PROGRAM_ID ,
PROGRAM_UPDATE_DATE ,
CLOSED_DATE ,
CLOSED_REASON ,
CLOSED_BY ,
TRANSACTION_REASON_CODE ,
ORG_ID ,
QC_GRADE ,
BASE_UOM ,
BASE_QTY ,
SECONDARY_UOM ,
SECONDARY_QTY ,
GLOBAL_ATTRIBUTE_CATEGORY ,
GLOBAL_ATTRIBUTE1 ,
GLOBAL_ATTRIBUTE2 ,
GLOBAL_ATTRIBUTE3 ,
GLOBAL_ATTRIBUTE4 ,
GLOBAL_ATTRIBUTE5 ,
GLOBAL_ATTRIBUTE6 ,
GLOBAL_ATTRIBUTE7 ,
GLOBAL_ATTRIBUTE8 ,
GLOBAL_ATTRIBUTE9 ,
GLOBAL_ATTRIBUTE10 ,
GLOBAL_ATTRIBUTE11 ,
GLOBAL_ATTRIBUTE12 ,
GLOBAL_ATTRIBUTE13 ,
GLOBAL_ATTRIBUTE14 ,
GLOBAL_ATTRIBUTE15 ,
GLOBAL_ATTRIBUTE16 ,
GLOBAL_ATTRIBUTE17 ,
GLOBAL_ATTRIBUTE18 ,
GLOBAL_ATTRIBUTE19 ,
GLOBAL_ATTRIBUTE20 ,
LINE_REFERENCE_NUM ,
PROJECT_ID ,
TASK_ID ,
EXPIRATION_DATE ,
TAX_CODE_ID ,
OKE_CONTRACT_HEADER_ID ,
OKE_CONTRACT_VERSION_ID ,
SECONDARY_QUANTITY ,
SECONDARY_UNIT_OF_MEASURE ,
PREFERRED_GRADE ,
AUCTION_HEADER_ID ,
AUCTION_DISPLAY_NUMBER ,
AUCTION_LINE_NUMBER ,
BID_NUMBER ,
BID_LINE_NUMBER ,
RETROACTIVE_DATE ,
CONTRACT_ID , --
START_DATE , --
AMOUNT , --
ORDER_TYPE_LOOKUP_CODE , --
PURCHASE_BASIS , --
MATCHING_BASIS , --
CLM_INFO_FLAG , --
CLM_OPTION_INDICATOR ,
CLM_MIN_TOTAL_AMOUNT ,
CLM_MAX_TOTAL_AMOUNT ,
CLM_MIN_TOTAL_QUANTITY ,
CLM_MAX_TOTAL_QUANTITY ,
CLM_MIN_ORDER_AMOUNT ,
CLM_MAX_ORDER_AMOUNT ,
CLM_MIN_ORDER_QUANTITY ,
CLM_MAX_ORDER_QUANTITY ,
CLM_TOTAL_AMOUNT_ORDERED ,
CLM_TOTAL_QUANTITY_ORDERED ,
CLM_FSC_PSC ,
CLM_MDAPS_MAIS ,
CLM_NAICS ,
CLM_ORDER_START_DATE ,
CLM_ORDER_END_DATE ,
CLM_EXERCISED_FLAG ,
CLM_EXERCISED_DATE ,
LINE_NUM_DISPLAY ,
CONTRACT_TYPE , -- CLM-PHASE-2 Submission Check
CLM_IDC_TYPE , -- CLM-PHASE-2 Submission Check
CLM_DELIVERY_EVENT_CODE , --
CLM_PAYMENT_INSTR_CODE ,
CLM_POP_EXCEPTION_REASON , --
OLD_AMOUNT ,--UCA Project - CLMR4 Changes Begin
OLD_QUANTITY ,
OLD_UNIT_PRICE ,
CLM_UNDEF_FLAG ,
CLM_UNDEF_ACTION_CODE ,--UCA Project - CLMR4 Changes End
CLM_EXHIBIT_NAME , -- CLM Phase 4 - Elins project
COST_CONSTRAINT -- CLM Phase 4 - Elins project
)
SELECT
pol.PO_LINE_ID ,
pol.LAST_UPDATE_DATE ,
pol.LAST_UPDATED_BY ,
pol.PO_HEADER_ID ,
pol.LINE_TYPE_ID ,
pol.LINE_NUM ,
pol.LAST_UPDATE_LOGIN ,
pol.CREATION_DATE ,
pol.CREATED_BY ,
pol.ITEM_ID ,
pol.ITEM_REVISION ,
pol.CATEGORY_ID ,
pol.ITEM_DESCRIPTION ,
pol.UNIT_MEAS_LOOKUP_CODE ,
pol.QUANTITY_COMMITTED ,
pol.COMMITTED_AMOUNT ,
pol.ALLOW_PRICE_OVERRIDE_FLAG ,
pol.NOT_TO_EXCEED_PRICE ,
pol.LIST_PRICE_PER_UNIT ,
pol.UNIT_PRICE ,
pol.QUANTITY ,
pol.UN_NUMBER_ID ,
pol.HAZARD_CLASS_ID ,
pol.NOTE_TO_VENDOR ,
pol.FROM_HEADER_ID ,
pol.FROM_LINE_ID ,
pol.MIN_ORDER_QUANTITY ,
pol.MAX_ORDER_QUANTITY ,
pol.QTY_RCV_TOLERANCE ,
pol.OVER_TOLERANCE_ERROR_FLAG ,
pol.MARKET_PRICE ,
pol.UNORDERED_FLAG ,
pol.CLOSED_FLAG ,
pol.USER_HOLD_FLAG ,
pol.CANCEL_FLAG ,
pol.CANCELLED_BY ,
pol.CANCEL_DATE ,
pol.CANCEL_REASON ,
pol.FIRM_STATUS_LOOKUP_CODE ,
pol.FIRM_DATE ,
pol.VENDOR_PRODUCT_NUM ,
pol.CONTRACT_NUM ,
pol.TAXABLE_FLAG ,
pol.TAX_NAME ,
pol.TYPE_1099 ,
pol.CAPITAL_EXPENSE_FLAG ,
pol.NEGOTIATED_BY_PREPARER_FLAG ,
pol.ATTRIBUTE_CATEGORY ,
pol.ATTRIBUTE1 ,
pol.ATTRIBUTE2 ,
pol.ATTRIBUTE3 ,
pol.ATTRIBUTE4 ,
pol.ATTRIBUTE5 ,
pol.ATTRIBUTE6 ,
pol.ATTRIBUTE7 ,
pol.ATTRIBUTE8 ,
pol.ATTRIBUTE9 ,
pol.ATTRIBUTE10 ,
pol.REFERENCE_NUM ,
pol.ATTRIBUTE11 ,
pol.ATTRIBUTE12 ,
pol.ATTRIBUTE13 ,
pol.ATTRIBUTE14 ,
pol.ATTRIBUTE15 ,
pol.MIN_RELEASE_AMOUNT ,
pol.PRICE_TYPE_LOOKUP_CODE ,
pol.CLOSED_CODE ,
pol.PRICE_BREAK_LOOKUP_CODE ,
pol.GOVERNMENT_CONTEXT ,
pol.REQUEST_ID ,
pol.PROGRAM_APPLICATION_ID ,
pol.PROGRAM_ID ,
pol.PROGRAM_UPDATE_DATE ,
pol.CLOSED_DATE ,
pol.CLOSED_REASON ,
pol.CLOSED_BY ,
pol.TRANSACTION_REASON_CODE ,
pol.ORG_ID ,
pol.QC_GRADE ,
pol.BASE_UOM ,
pol.BASE_QTY ,
pol.SECONDARY_UOM ,
pol.SECONDARY_QTY ,
pol.GLOBAL_ATTRIBUTE_CATEGORY ,
pol.GLOBAL_ATTRIBUTE1 ,
pol.GLOBAL_ATTRIBUTE2 ,
pol.GLOBAL_ATTRIBUTE3 ,
pol.GLOBAL_ATTRIBUTE4 ,
pol.GLOBAL_ATTRIBUTE5 ,
pol.GLOBAL_ATTRIBUTE6 ,
pol.GLOBAL_ATTRIBUTE7 ,
pol.GLOBAL_ATTRIBUTE8 ,
pol.GLOBAL_ATTRIBUTE9 ,
pol.GLOBAL_ATTRIBUTE10 ,
pol.GLOBAL_ATTRIBUTE11 ,
pol.GLOBAL_ATTRIBUTE12 ,
pol.GLOBAL_ATTRIBUTE13 ,
pol.GLOBAL_ATTRIBUTE14 ,
pol.GLOBAL_ATTRIBUTE15 ,
pol.GLOBAL_ATTRIBUTE16 ,
pol.GLOBAL_ATTRIBUTE17 ,
pol.GLOBAL_ATTRIBUTE18 ,
pol.GLOBAL_ATTRIBUTE19 ,
pol.GLOBAL_ATTRIBUTE20 ,
pol.LINE_REFERENCE_NUM ,
pol.PROJECT_ID ,
pol.TASK_ID ,
pol.EXPIRATION_DATE ,
pol.TAX_CODE_ID ,
pol.OKE_CONTRACT_HEADER_ID ,
pol.OKE_CONTRACT_VERSION_ID ,
pol.SECONDARY_QUANTITY ,
pol.SECONDARY_UNIT_OF_MEASURE ,
pol.PREFERRED_GRADE ,
pol.AUCTION_HEADER_ID ,
pol.AUCTION_DISPLAY_NUMBER ,
pol.AUCTION_LINE_NUMBER ,
pol.BID_NUMBER ,
pol.BID_LINE_NUMBER ,
pol.RETROACTIVE_DATE ,
pol.CONTRACT_ID , --
pol.START_DATE , --
pol.AMOUNT , --
pol.ORDER_TYPE_LOOKUP_CODE , --
pol.PURCHASE_BASIS , --
pol.MATCHING_BASIS , --
pol.CLM_INFO_FLAG , --
pol.CLM_OPTION_INDICATOR ,
pol.CLM_MIN_TOTAL_AMOUNT ,
pol.CLM_MAX_TOTAL_AMOUNT ,
pol.CLM_MIN_TOTAL_QUANTITY ,
pol.CLM_MAX_TOTAL_QUANTITY ,
pol.CLM_MIN_ORDER_AMOUNT ,
pol.CLM_MAX_ORDER_AMOUNT ,
pol.CLM_MIN_ORDER_QUANTITY ,
pol.CLM_MAX_ORDER_QUANTITY ,
pol.CLM_TOTAL_AMOUNT_ORDERED ,
pol.CLM_TOTAL_QUANTITY_ORDERED ,
pol.CLM_FSC_PSC ,
pol.CLM_MDAPS_MAIS ,
pol.CLM_NAICS ,
pol.CLM_ORDER_START_DATE ,
pol.CLM_ORDER_END_DATE ,
pol.CLM_EXERCISED_FLAG ,
pol.CLM_EXERCISED_DATE ,
pol.LINE_NUM_DISPLAY ,
pol.CONTRACT_TYPE , -- CLM-PHASE-2 Submission Check
pol.CLM_IDC_TYPE , -- CLM-PHASE-2 Submission Check
pol.CLM_DELIVERY_EVENT_CODE , --
pol.CLM_PAYMENT_INSTR_CODE ,
pol.CLM_POP_EXCEPTION_REASON , --
pol.OLD_AMOUNT ,--UCA Project - CLMR4 Changes Begin
pol.OLD_QUANTITY ,
pol.OLD_UNIT_PRICE ,
pol.CLM_UNDEF_FLAG ,
pol.CLM_UNDEF_ACTION_CODE , --UCA Project - CLMR4 Changes End
pol.CLM_EXHIBIT_NAME , -- CLM Phase 4 - Elins project
pol.COST_CONSTRAINT -- CLM Phase 4 - Elins project
FROM po_lines_merge_v pol
Where pol.po_line_id = l_line_id_tbl(i)
and pol.draft_id = p_draft_id
/*-- CLM Aprvl
FROM po_lines_all pol
WHERE pol.po_line_id = l_line_id_tbl(i)
-- CLM Aprvl*/
-- need to change the entities which should be validated. Only records in the draft tables should be validated.
AND (l_draft_type <> 'PAR'
OR (l_draft_type = 'PAR' AND pol.change_status IS NOT NULL ));
INSERT INTO po_releases_gt(
PO_RELEASE_ID ,
LAST_UPDATE_DATE ,
LAST_UPDATED_BY ,
PO_HEADER_ID ,
RELEASE_NUM ,
AGENT_ID ,
RELEASE_DATE ,
LAST_UPDATE_LOGIN ,
CREATION_DATE ,
CREATED_BY ,
REVISION_NUM ,
REVISED_DATE ,
APPROVED_FLAG ,
APPROVED_DATE ,
PRINT_COUNT ,
PRINTED_DATE ,
ACCEPTANCE_REQUIRED_FLAG ,
ACCEPTANCE_DUE_DATE ,
HOLD_BY ,
HOLD_DATE ,
HOLD_REASON ,
HOLD_FLAG ,
CANCEL_FLAG ,
CANCELLED_BY ,
CANCEL_DATE ,
CANCEL_REASON ,
FIRM_STATUS_LOOKUP_CODE ,
FIRM_DATE ,
ATTRIBUTE_CATEGORY ,
ATTRIBUTE1 ,
ATTRIBUTE2 ,
ATTRIBUTE3 ,
ATTRIBUTE4 ,
ATTRIBUTE5 ,
ATTRIBUTE6 ,
ATTRIBUTE7 ,
ATTRIBUTE8 ,
ATTRIBUTE9 ,
ATTRIBUTE10 ,
ATTRIBUTE11 ,
ATTRIBUTE12 ,
ATTRIBUTE13 ,
ATTRIBUTE14 ,
ATTRIBUTE15 ,
AUTHORIZATION_STATUS ,
GOVERNMENT_CONTEXT ,
REQUEST_ID ,
PROGRAM_APPLICATION_ID ,
PROGRAM_ID ,
PROGRAM_UPDATE_DATE ,
CLOSED_CODE ,
FROZEN_FLAG ,
RELEASE_TYPE ,
NOTE_TO_VENDOR ,
ORG_ID ,
EDI_PROCESSED_FLAG ,
GLOBAL_ATTRIBUTE_CATEGORY ,
GLOBAL_ATTRIBUTE1 ,
GLOBAL_ATTRIBUTE2 ,
GLOBAL_ATTRIBUTE3 ,
GLOBAL_ATTRIBUTE4 ,
GLOBAL_ATTRIBUTE5 ,
GLOBAL_ATTRIBUTE6 ,
GLOBAL_ATTRIBUTE7 ,
GLOBAL_ATTRIBUTE8 ,
GLOBAL_ATTRIBUTE9 ,
GLOBAL_ATTRIBUTE10 ,
GLOBAL_ATTRIBUTE11 ,
GLOBAL_ATTRIBUTE12 ,
GLOBAL_ATTRIBUTE13 ,
GLOBAL_ATTRIBUTE14 ,
GLOBAL_ATTRIBUTE15 ,
GLOBAL_ATTRIBUTE16 ,
GLOBAL_ATTRIBUTE17 ,
GLOBAL_ATTRIBUTE18 ,
GLOBAL_ATTRIBUTE19 ,
GLOBAL_ATTRIBUTE20 ,
WF_ITEM_TYPE ,
WF_ITEM_KEY ,
PCARD_ID ,
PAY_ON_CODE ,
XML_FLAG ,
XML_SEND_DATE ,
XML_CHANGE_SEND_DATE ,
CONSIGNED_CONSUMPTION_FLAG ,
CBC_ACCOUNTING_DATE)
SELECT
PO_RELEASE_ID ,
LAST_UPDATE_DATE ,
LAST_UPDATED_BY ,
PO_HEADER_ID ,
RELEASE_NUM ,
AGENT_ID ,
RELEASE_DATE ,
LAST_UPDATE_LOGIN ,
CREATION_DATE ,
CREATED_BY ,
REVISION_NUM ,
REVISED_DATE ,
APPROVED_FLAG ,
APPROVED_DATE ,
PRINT_COUNT ,
PRINTED_DATE ,
ACCEPTANCE_REQUIRED_FLAG ,
ACCEPTANCE_DUE_DATE ,
HOLD_BY ,
HOLD_DATE ,
HOLD_REASON ,
HOLD_FLAG ,
CANCEL_FLAG ,
CANCELLED_BY ,
CANCEL_DATE ,
CANCEL_REASON ,
FIRM_STATUS_LOOKUP_CODE ,
FIRM_DATE ,
ATTRIBUTE_CATEGORY ,
ATTRIBUTE1 ,
ATTRIBUTE2 ,
ATTRIBUTE3 ,
ATTRIBUTE4 ,
ATTRIBUTE5 ,
ATTRIBUTE6 ,
ATTRIBUTE7 ,
ATTRIBUTE8 ,
ATTRIBUTE9 ,
ATTRIBUTE10 ,
ATTRIBUTE11 ,
ATTRIBUTE12 ,
ATTRIBUTE13 ,
ATTRIBUTE14 ,
ATTRIBUTE15 ,
AUTHORIZATION_STATUS ,
GOVERNMENT_CONTEXT ,
REQUEST_ID ,
PROGRAM_APPLICATION_ID ,
PROGRAM_ID ,
PROGRAM_UPDATE_DATE ,
CLOSED_CODE ,
FROZEN_FLAG ,
RELEASE_TYPE ,
NOTE_TO_VENDOR ,
ORG_ID ,
EDI_PROCESSED_FLAG ,
GLOBAL_ATTRIBUTE_CATEGORY ,
GLOBAL_ATTRIBUTE1 ,
GLOBAL_ATTRIBUTE2 ,
GLOBAL_ATTRIBUTE3 ,
GLOBAL_ATTRIBUTE4 ,
GLOBAL_ATTRIBUTE5 ,
GLOBAL_ATTRIBUTE6 ,
GLOBAL_ATTRIBUTE7 ,
GLOBAL_ATTRIBUTE8 ,
GLOBAL_ATTRIBUTE9 ,
GLOBAL_ATTRIBUTE10 ,
GLOBAL_ATTRIBUTE11 ,
GLOBAL_ATTRIBUTE12 ,
GLOBAL_ATTRIBUTE13 ,
GLOBAL_ATTRIBUTE14 ,
GLOBAL_ATTRIBUTE15 ,
GLOBAL_ATTRIBUTE16 ,
GLOBAL_ATTRIBUTE17 ,
GLOBAL_ATTRIBUTE18 ,
GLOBAL_ATTRIBUTE19 ,
GLOBAL_ATTRIBUTE20 ,
WF_ITEM_TYPE ,
WF_ITEM_KEY ,
PCARD_ID ,
PAY_ON_CODE ,
XML_FLAG ,
XML_SEND_DATE ,
XML_CHANGE_SEND_DATE ,
CONSIGNED_CONSUMPTION_FLAG ,
CBC_ACCOUNTING_DATE
FROM po_releases
WHERE po_release_id = p_document_id;
INSERT INTO po_req_headers_gt(
PROGRAM_UPDATE_DATE ,
INTERFACE_SOURCE_CODE ,
INTERFACE_SOURCE_LINE_ID ,
CLOSED_CODE ,
ORG_ID ,
DESCRIPTION ,
AUTHORIZATION_STATUS ,
NOTE_TO_AUTHORIZER ,
TYPE_LOOKUP_CODE ,
TRANSFERRED_TO_OE_FLAG ,
ATTRIBUTE_CATEGORY ,
ATTRIBUTE1 ,
ATTRIBUTE2 ,
ATTRIBUTE3 ,
ATTRIBUTE4 ,
ATTRIBUTE5 ,
ON_LINE_FLAG ,
PRELIMINARY_RESEARCH_FLAG ,
RESEARCH_COMPLETE_FLAG ,
PREPARER_FINISHED_FLAG ,
PREPARER_FINISHED_DATE ,
AGENT_RETURN_FLAG ,
AGENT_RETURN_NOTE ,
CANCEL_FLAG ,
ATTRIBUTE6 ,
ATTRIBUTE7 ,
ATTRIBUTE8 ,
ATTRIBUTE9 ,
ATTRIBUTE10 ,
ATTRIBUTE11 ,
ATTRIBUTE12 ,
ATTRIBUTE13 ,
ATTRIBUTE14 ,
ATTRIBUTE15 ,
GOVERNMENT_CONTEXT ,
REQUEST_ID ,
PROGRAM_APPLICATION_ID ,
PROGRAM_ID ,
REQUISITION_HEADER_ID ,
PREPARER_ID ,
LAST_UPDATE_DATE ,
LAST_UPDATED_BY ,
SEGMENT1 ,
SUMMARY_FLAG ,
ENABLED_FLAG ,
SEGMENT2 ,
SEGMENT3 ,
SEGMENT4 ,
SEGMENT5 ,
START_DATE_ACTIVE ,
END_DATE_ACTIVE ,
LAST_UPDATE_LOGIN ,
CREATION_DATE ,
CREATED_BY ,
WF_ITEM_TYPE ,
WF_ITEM_KEY ,
EMERGENCY_PO_NUM ,
PCARD_ID ,
APPS_SOURCE_CODE ,
CBC_ACCOUNTING_DATE)
SELECT
PROGRAM_UPDATE_DATE ,
INTERFACE_SOURCE_CODE ,
INTERFACE_SOURCE_LINE_ID ,
CLOSED_CODE ,
ORG_ID ,
DESCRIPTION ,
AUTHORIZATION_STATUS ,
substrb(NOTE_TO_AUTHORIZER,1,480) , -- Bug4443295(added substr)
TYPE_LOOKUP_CODE ,
TRANSFERRED_TO_OE_FLAG ,
ATTRIBUTE_CATEGORY ,
ATTRIBUTE1 ,
ATTRIBUTE2 ,
ATTRIBUTE3 ,
ATTRIBUTE4 ,
ATTRIBUTE5 ,
ON_LINE_FLAG ,
PRELIMINARY_RESEARCH_FLAG ,
RESEARCH_COMPLETE_FLAG ,
PREPARER_FINISHED_FLAG ,
PREPARER_FINISHED_DATE ,
AGENT_RETURN_FLAG ,
AGENT_RETURN_NOTE ,
CANCEL_FLAG ,
ATTRIBUTE6 ,
ATTRIBUTE7 ,
ATTRIBUTE8 ,
ATTRIBUTE9 ,
ATTRIBUTE10 ,
ATTRIBUTE11 ,
ATTRIBUTE12 ,
ATTRIBUTE13 ,
ATTRIBUTE14 ,
ATTRIBUTE15 ,
GOVERNMENT_CONTEXT ,
REQUEST_ID ,
PROGRAM_APPLICATION_ID ,
PROGRAM_ID ,
REQUISITION_HEADER_ID ,
PREPARER_ID ,
LAST_UPDATE_DATE ,
LAST_UPDATED_BY ,
SEGMENT1 ,
SUMMARY_FLAG ,
ENABLED_FLAG ,
SEGMENT2 ,
SEGMENT3 ,
SEGMENT4 ,
SEGMENT5 ,
START_DATE_ACTIVE ,
END_DATE_ACTIVE ,
LAST_UPDATE_LOGIN ,
CREATION_DATE ,
CREATED_BY ,
WF_ITEM_TYPE ,
WF_ITEM_KEY ,
EMERGENCY_PO_NUM ,
PCARD_ID ,
APPS_SOURCE_CODE ,
CBC_ACCOUNTING_DATE
FROM po_requisition_headers
WHERE requisition_header_id = p_document_id;
INSERT INTO po_req_lines_gt(
REQUEST_ID ,
PROGRAM_APPLICATION_ID ,
PROGRAM_ID ,
PROGRAM_UPDATE_DATE ,
GOVERNMENT_CONTEXT ,
CLOSED_REASON ,
CLOSED_DATE ,
TRANSACTION_REASON_CODE ,
QUANTITY_RECEIVED ,
SOURCE_REQ_LINE_ID ,
ORG_ID ,
CANCEL_REASON ,
CLOSED_CODE ,
AGENT_RETURN_NOTE ,
CHANGED_AFTER_RESEARCH_FLAG ,
VENDOR_ID ,
VENDOR_SITE_ID ,
VENDOR_CONTACT_ID ,
RESEARCH_AGENT_ID ,
ON_LINE_FLAG ,
WIP_ENTITY_ID ,
WIP_LINE_ID ,
WIP_REPETITIVE_SCHEDULE_ID ,
WIP_OPERATION_SEQ_NUM ,
WIP_RESOURCE_SEQ_NUM ,
ATTRIBUTE_CATEGORY ,
DESTINATION_CONTEXT ,
INVENTORY_SOURCE_CONTEXT ,
VENDOR_SOURCE_CONTEXT ,
ATTRIBUTE1 ,
ATTRIBUTE2 ,
ATTRIBUTE3 ,
ATTRIBUTE4 ,
ATTRIBUTE5 ,
ATTRIBUTE6 ,
ATTRIBUTE7 ,
ATTRIBUTE8 ,
ATTRIBUTE9 ,
ATTRIBUTE10 ,
ATTRIBUTE11 ,
ATTRIBUTE12 ,
ATTRIBUTE13 ,
ATTRIBUTE14 ,
ATTRIBUTE15 ,
BOM_RESOURCE_ID ,
PARENT_REQ_LINE_ID ,
JUSTIFICATION ,
NOTE_TO_AGENT ,
NOTE_TO_RECEIVER ,
PURCHASING_AGENT_ID ,
DOCUMENT_TYPE_CODE ,
BLANKET_PO_HEADER_ID ,
BLANKET_PO_LINE_NUM ,
CURRENCY_CODE ,
RATE_TYPE ,
RATE_DATE ,
RATE ,
CURRENCY_UNIT_PRICE ,
SUGGESTED_VENDOR_NAME ,
SUGGESTED_VENDOR_LOCATION ,
SUGGESTED_VENDOR_CONTACT ,
SUGGESTED_VENDOR_PHONE ,
SUGGESTED_VENDOR_PRODUCT_CODE ,
UN_NUMBER_ID ,
HAZARD_CLASS_ID ,
MUST_USE_SUGG_VENDOR_FLAG ,
REFERENCE_NUM ,
ON_RFQ_FLAG ,
URGENT_FLAG ,
CANCEL_FLAG ,
SOURCE_ORGANIZATION_ID ,
SOURCE_SUBINVENTORY ,
DESTINATION_TYPE_CODE ,
DESTINATION_ORGANIZATION_ID ,
DESTINATION_SUBINVENTORY ,
QUANTITY_CANCELLED ,
CANCEL_DATE ,
REQUISITION_LINE_ID ,
REQUISITION_HEADER_ID ,
LINE_NUM ,
LINE_TYPE_ID ,
CATEGORY_ID ,
ITEM_DESCRIPTION ,
UNIT_MEAS_LOOKUP_CODE ,
UNIT_PRICE ,
QUANTITY ,
AMOUNT , --
DELIVER_TO_LOCATION_ID ,
TO_PERSON_ID ,
LAST_UPDATE_DATE ,
LAST_UPDATED_BY ,
SOURCE_TYPE_CODE ,
LAST_UPDATE_LOGIN ,
CREATION_DATE ,
CREATED_BY ,
ITEM_ID ,
ITEM_REVISION ,
QUANTITY_DELIVERED ,
SUGGESTED_BUYER_ID ,
ENCUMBERED_FLAG ,
RFQ_REQUIRED_FLAG ,
NEED_BY_DATE ,
LINE_LOCATION_ID ,
MODIFIED_BY_AGENT_FLAG ,
KANBAN_CARD_ID ,
CATALOG_TYPE ,
CATALOG_SOURCE ,
MANUFACTURER_ID ,
MANUFACTURER_NAME ,
MANUFACTURER_PART_NUMBER ,
REQUESTER_EMAIL ,
REQUESTER_FAX ,
REQUESTER_PHONE ,
UNSPSC_CODE ,
OTHER_CATEGORY_CODE ,
SUPPLIER_DUNS ,
TAX_STATUS_INDICATOR ,
PCARD_FLAG ,
NEW_SUPPLIER_FLAG ,
AUTO_RECEIVE_FLAG ,
TAX_USER_OVERRIDE_FLAG ,
TAX_CODE_ID ,
NOTE_TO_VENDOR ,
OKE_CONTRACT_HEADER_ID ,
OKE_CONTRACT_VERSION_ID ,
ITEM_SOURCE_ID ,
SUPPLIER_REF_NUMBER ,
SECONDARY_UNIT_OF_MEASURE ,
SECONDARY_QUANTITY ,
PREFERRED_GRADE ,
SECONDARY_QUANTITY_RECEIVED ,
SECONDARY_QUANTITY_CANCELLED ,
AUCTION_HEADER_ID ,
AUCTION_DISPLAY_NUMBER ,
AUCTION_LINE_NUMBER ,
REQS_IN_POOL_FLAG ,
VMI_FLAG ,
BID_NUMBER ,
BID_LINE_NUMBER)
SELECT
REQUEST_ID ,
PROGRAM_APPLICATION_ID ,
PROGRAM_ID ,
PROGRAM_UPDATE_DATE ,
GOVERNMENT_CONTEXT ,
CLOSED_REASON ,
CLOSED_DATE ,
TRANSACTION_REASON_CODE ,
QUANTITY_RECEIVED ,
SOURCE_REQ_LINE_ID ,
ORG_ID ,
CANCEL_REASON ,
CLOSED_CODE ,
AGENT_RETURN_NOTE ,
CHANGED_AFTER_RESEARCH_FLAG ,
VENDOR_ID ,
VENDOR_SITE_ID ,
VENDOR_CONTACT_ID ,
RESEARCH_AGENT_ID ,
ON_LINE_FLAG ,
WIP_ENTITY_ID ,
WIP_LINE_ID ,
WIP_REPETITIVE_SCHEDULE_ID ,
WIP_OPERATION_SEQ_NUM ,
WIP_RESOURCE_SEQ_NUM ,
ATTRIBUTE_CATEGORY ,
DESTINATION_CONTEXT ,
INVENTORY_SOURCE_CONTEXT ,
VENDOR_SOURCE_CONTEXT ,
ATTRIBUTE1 ,
ATTRIBUTE2 ,
ATTRIBUTE3 ,
ATTRIBUTE4 ,
ATTRIBUTE5 ,
ATTRIBUTE6 ,
ATTRIBUTE7 ,
ATTRIBUTE8 ,
ATTRIBUTE9 ,
ATTRIBUTE10 ,
ATTRIBUTE11 ,
ATTRIBUTE12 ,
ATTRIBUTE13 ,
ATTRIBUTE14 ,
ATTRIBUTE15 ,
BOM_RESOURCE_ID ,
PARENT_REQ_LINE_ID ,
JUSTIFICATION ,
NOTE_TO_AGENT ,
NOTE_TO_RECEIVER ,
PURCHASING_AGENT_ID ,
DOCUMENT_TYPE_CODE ,
BLANKET_PO_HEADER_ID ,
BLANKET_PO_LINE_NUM ,
CURRENCY_CODE ,
RATE_TYPE ,
RATE_DATE ,
RATE ,
CURRENCY_UNIT_PRICE ,
SUGGESTED_VENDOR_NAME ,
SUGGESTED_VENDOR_LOCATION ,
SUGGESTED_VENDOR_CONTACT ,
SUGGESTED_VENDOR_PHONE ,
SUGGESTED_VENDOR_PRODUCT_CODE ,
UN_NUMBER_ID ,
HAZARD_CLASS_ID ,
MUST_USE_SUGG_VENDOR_FLAG ,
REFERENCE_NUM ,
ON_RFQ_FLAG ,
URGENT_FLAG ,
CANCEL_FLAG ,
SOURCE_ORGANIZATION_ID ,
SOURCE_SUBINVENTORY ,
DESTINATION_TYPE_CODE ,
DESTINATION_ORGANIZATION_ID ,
DESTINATION_SUBINVENTORY ,
QUANTITY_CANCELLED ,
CANCEL_DATE ,
REQUISITION_LINE_ID ,
REQUISITION_HEADER_ID ,
LINE_NUM ,
LINE_TYPE_ID ,
CATEGORY_ID ,
ITEM_DESCRIPTION ,
UNIT_MEAS_LOOKUP_CODE ,
UNIT_PRICE ,
QUANTITY ,
AMOUNT , --
DELIVER_TO_LOCATION_ID ,
TO_PERSON_ID ,
LAST_UPDATE_DATE ,
LAST_UPDATED_BY ,
SOURCE_TYPE_CODE ,
LAST_UPDATE_LOGIN ,
CREATION_DATE ,
CREATED_BY ,
ITEM_ID ,
ITEM_REVISION ,
QUANTITY_DELIVERED ,
SUGGESTED_BUYER_ID ,
ENCUMBERED_FLAG ,
RFQ_REQUIRED_FLAG ,
NEED_BY_DATE ,
LINE_LOCATION_ID ,
MODIFIED_BY_AGENT_FLAG ,
KANBAN_CARD_ID ,
CATALOG_TYPE ,
CATALOG_SOURCE ,
MANUFACTURER_ID ,
MANUFACTURER_NAME ,
MANUFACTURER_PART_NUMBER ,
REQUESTER_EMAIL ,
REQUESTER_FAX ,
REQUESTER_PHONE ,
UNSPSC_CODE ,
OTHER_CATEGORY_CODE ,
SUPPLIER_DUNS ,
TAX_STATUS_INDICATOR ,
PCARD_FLAG ,
NEW_SUPPLIER_FLAG ,
AUTO_RECEIVE_FLAG ,
TAX_USER_OVERRIDE_FLAG ,
TAX_CODE_ID ,
NOTE_TO_VENDOR ,
OKE_CONTRACT_HEADER_ID ,
OKE_CONTRACT_VERSION_ID ,
ITEM_SOURCE_ID ,
SUPPLIER_REF_NUMBER ,
SECONDARY_UNIT_OF_MEASURE ,
SECONDARY_QUANTITY ,
PREFERRED_GRADE ,
SECONDARY_QUANTITY_RECEIVED ,
SECONDARY_QUANTITY_CANCELLED ,
AUCTION_HEADER_ID ,
AUCTION_DISPLAY_NUMBER ,
AUCTION_LINE_NUMBER ,
REQS_IN_POOL_FLAG ,
VMI_FLAG ,
BID_NUMBER ,
BID_LINE_NUMBER
FROM po_requisition_lines
WHERE requisition_header_id = p_document_id;
INSERT INTO po_req_distributions_gt(
DISTRIBUTION_ID ,
LAST_UPDATE_DATE ,
LAST_UPDATED_BY ,
REQUISITION_LINE_ID ,
SET_OF_BOOKS_ID ,
CODE_COMBINATION_ID ,
REQ_LINE_QUANTITY ,
REQ_LINE_AMOUNT , --
LAST_UPDATE_LOGIN ,
CREATION_DATE ,
CREATED_BY ,
ENCUMBERED_FLAG ,
GL_ENCUMBERED_DATE ,
GL_ENCUMBERED_PERIOD_NAME ,
GL_CANCELLED_DATE ,
FAILED_FUNDS_LOOKUP_CODE ,
ENCUMBERED_AMOUNT ,
BUDGET_ACCOUNT_ID ,
ACCRUAL_ACCOUNT_ID ,
ORG_ID ,
VARIANCE_ACCOUNT_ID ,
PREVENT_ENCUMBRANCE_FLAG ,
ATTRIBUTE_CATEGORY ,
ATTRIBUTE1 ,
ATTRIBUTE2 ,
ATTRIBUTE3 ,
ATTRIBUTE4 ,
ATTRIBUTE5 ,
ATTRIBUTE6 ,
ATTRIBUTE7 ,
ATTRIBUTE8 ,
ATTRIBUTE9 ,
ATTRIBUTE10 ,
ATTRIBUTE11 ,
ATTRIBUTE12 ,
ATTRIBUTE13 ,
ATTRIBUTE14 ,
ATTRIBUTE15 ,
GOVERNMENT_CONTEXT ,
REQUEST_ID ,
PROGRAM_APPLICATION_ID ,
PROGRAM_ID ,
PROGRAM_UPDATE_DATE ,
PROJECT_ID ,
TASK_ID ,
EXPENDITURE_TYPE ,
PROJECT_ACCOUNTING_CONTEXT ,
EXPENDITURE_ORGANIZATION_ID ,
GL_CLOSED_DATE ,
SOURCE_REQ_DISTRIBUTION_ID ,
DISTRIBUTION_NUM ,
PROJECT_RELATED_FLAG ,
EXPENDITURE_ITEM_DATE ,
ALLOCATION_TYPE ,
ALLOCATION_VALUE ,
AWARD_ID ,
END_ITEM_UNIT_NUMBER ,
RECOVERABLE_TAX ,
NONRECOVERABLE_TAX ,
RECOVERY_RATE ,
TAX_RECOVERY_OVERRIDE_FLAG ,
OKE_CONTRACT_LINE_ID ,
OKE_CONTRACT_DELIVERABLE_ID)
SELECT
PRD.DISTRIBUTION_ID ,
PRD.LAST_UPDATE_DATE ,
PRD.LAST_UPDATED_BY ,
PRD.REQUISITION_LINE_ID ,
PRD.SET_OF_BOOKS_ID ,
PRD.CODE_COMBINATION_ID ,
PRD.REQ_LINE_QUANTITY ,
PRD.REQ_LINE_AMOUNT , --
PRD.LAST_UPDATE_LOGIN ,
PRD.CREATION_DATE ,
PRD.CREATED_BY ,
PRD.ENCUMBERED_FLAG ,
PRD.GL_ENCUMBERED_DATE ,
PRD.GL_ENCUMBERED_PERIOD_NAME ,
PRD.GL_CANCELLED_DATE ,
PRD.FAILED_FUNDS_LOOKUP_CODE ,
PRD.ENCUMBERED_AMOUNT ,
PRD.BUDGET_ACCOUNT_ID ,
PRD.ACCRUAL_ACCOUNT_ID ,
PRD.ORG_ID ,
PRD.VARIANCE_ACCOUNT_ID ,
PRD.PREVENT_ENCUMBRANCE_FLAG ,
PRD.ATTRIBUTE_CATEGORY ,
PRD.ATTRIBUTE1 ,
PRD.ATTRIBUTE2 ,
PRD.ATTRIBUTE3 ,
PRD.ATTRIBUTE4 ,
PRD.ATTRIBUTE5 ,
PRD.ATTRIBUTE6 ,
PRD.ATTRIBUTE7 ,
PRD.ATTRIBUTE8 ,
PRD.ATTRIBUTE9 ,
PRD.ATTRIBUTE10 ,
PRD.ATTRIBUTE11 ,
PRD.ATTRIBUTE12 ,
PRD.ATTRIBUTE13 ,
PRD.ATTRIBUTE14 ,
PRD.ATTRIBUTE15 ,
PRD.GOVERNMENT_CONTEXT ,
PRD.REQUEST_ID ,
PRD.PROGRAM_APPLICATION_ID ,
PRD.PROGRAM_ID ,
PRD.PROGRAM_UPDATE_DATE ,
PRD.PROJECT_ID ,
PRD.TASK_ID ,
PRD.EXPENDITURE_TYPE ,
PRD.PROJECT_ACCOUNTING_CONTEXT ,
PRD.EXPENDITURE_ORGANIZATION_ID ,
PRD.GL_CLOSED_DATE ,
PRD.SOURCE_REQ_DISTRIBUTION_ID ,
PRD.DISTRIBUTION_NUM ,
PRD.PROJECT_RELATED_FLAG ,
PRD.EXPENDITURE_ITEM_DATE ,
PRD.ALLOCATION_TYPE ,
PRD.ALLOCATION_VALUE ,
PRD.AWARD_ID ,
PRD.END_ITEM_UNIT_NUMBER ,
PRD.RECOVERABLE_TAX ,
PRD.NONRECOVERABLE_TAX ,
PRD.RECOVERY_RATE ,
PRD.TAX_RECOVERY_OVERRIDE_FLAG ,
PRD.OKE_CONTRACT_LINE_ID ,
PRD.OKE_CONTRACT_DELIVERABLE_ID
FROM po_req_distributions PRD, po_requisition_lines PRL
WHERE PRD.requisition_line_id = PRL.requisition_line_id AND
PRL.requisition_header_id = p_document_id;
'EXISTS (SELECT ''Y'' FROM PO_ACTION_HISTORY POAH2 ' ||
'WHERE POAH2.employee_id = ' || p_employee_id ||
' AND POAH2.object_type_code = (DECODE(' || p_query_table || '.type_lookup_code, ''BLANKET'', ''PA'', ''STANDARD'', ''PO'' , ''PLANNED'' , ''PO'' , ''CONTRACT'' , ''PA'', ''RELEASE'' , ''RELEASE'' ) )' ||
' AND POAH2.object_id = ' || p_query_table || '.' || l_id_column || '))))';*/
'EXISTS (SELECT ''Y'' FROM PO_ACTION_HISTORY POAH2 ' ||
'WHERE POAH2.employee_id =' || p_employee_id ||
/* Bug 7229262/7239696
' AND POAH2.object_type_code = (DECODE(' || p_query_table || '.type_lookup_code, ''BLANKET'', ''PA'', ''STANDARD'', ''PO'' , ''PLANNED'' , ''PO'' , ''CONTRACT'' , ''PA'', ''RELEASE'' , ''RELEASE'' ) ) ' ||
*/
' AND POAH2.object_type_code = (DECODE(' || p_query_table || '.'||l_doctype_column||', ''BLANKET'', ''PA'', ''STANDARD'', ''PO'' , ''PLANNED'' , ''PO'' , ''CONTRACT'' , ''PA'', ''RELEASE'' , ''RELEASE'' ) )' ||
/* End Bug 7229262/7239696 */
' AND POAH2.object_id = ' || p_query_table || '.' || l_id_column || ')) OR (' ||
p_employee_id || ' IN (SELECT H.superior_id ' ||
' FROM PO_EMPLOYEE_HIERARCHIES H, PO_SYSTEM_PARAMETERS PSP WHERE H.employee_id = ' ||
p_query_table || '.' || p_owner_id_column ||
' AND H.position_structure_id = NVL(PSP.SECURITY_POSITION_STRUCTURE_ID,-1) '
||'AND PSP.ORG_ID = '||p_query_table || '.ORG_ID '
||'))))';
'EXISTS (SELECT ''Y'' FROM PO_ACTION_HISTORY POAH2 ' ||
'WHERE POAH2.employee_id =' || p_employee_id ||
/* Bug 7229262/7239696
' AND POAH2.object_type_code = (DECODE(' || p_query_table || '.type_lookup_code, ''BLANKET'', ''PA'', ''STANDARD'', ''PO'' , ''PLANNED'' , ''PO'' , ''CONTRACT'' , ''PA'', ''RELEASE'' , ''RELEASE'' ) ) ' ||
*/
' AND POAH2.object_type_code = (DECODE(' || p_query_table || '.'||l_doctype_column||', ''BLANKET'', ''PA'', ''STANDARD'', ''PO'' , ''PLANNED'' , ''PO'' , ''CONTRACT'' , ''PA'', ''RELEASE'' , ''RELEASE'' ) ) ' ||
/* End Bug 7229262/7239696 */
' AND POAH2.object_id = ' || p_query_table || '.' || l_id_column || ')) OR (' ||
'EXISTS(SELECT NULL FROM PO_AGENTS WHERE agent_id= ' ||
p_employee_id || ' AND SYSDATE BETWEEN NVL(start_date_active, ' ||
'SYSDATE) AND NVL(end_date_active, SYSDATE+1))))' ||')'
||')';
l_update_allowed VARCHAR2(1);
INSERT INTO PO_SESSION_GT
( key,
num1
)
SELECT l_procedure_id,
1 -- Dummy Value
FROM DUAL
WHERE (p_release_id(i) IS NOT NULL
--Case 1: No Release is specified, PO Header has to be specified
-- Through any of HeaderId, DocNum-and-SubType, or VendorOrderNum
OR EXISTS (select null from po_headers_all h
WHERE h.po_header_id = l_header_id(i)
AND (h.authorization_status is NULL
OR h.authorization_status NOT IN ('PRE-APPROVED', 'IN PROCESS'))
AND (h.cancel_flag is null or h.cancel_flag <> 'Y')
AND (h.closed_code is NULL or h.closed_code NOT IN ('FINALLY CLOSED'))
AND (h.frozen_flag is NULL or h.frozen_flag <> 'Y')))
AND (p_release_id(i) IS NULL
--Case 2: PO Release is specified
OR EXISTS (select null from po_releases_all h
WHERE h.po_release_id = p_release_id(i)
AND (h.authorization_status is NULL
OR h.authorization_status NOT IN ('PRE-APPROVED', 'IN PROCESS'))
AND (h.cancel_flag is null or h.cancel_flag <> 'Y')
AND (h.closed_code is NULL or h.closed_code NOT IN ('FINALLY CLOSED'))
AND (h.frozen_flag is NULL or h.frozen_flag <> 'Y')))
AND (p_line_id(i) IS NULL
--Case 3: Optionally, Line is specified
OR EXISTS (SELECT null from po_lines_all l
WHERE l.po_line_id = p_line_id(i)
AND (l.cancel_flag is null or l.cancel_flag <> 'Y')
AND (l.closed_code is NULL or l.closed_code NOT IN ('FINALLY CLOSED'))))
AND (p_line_location_id(i) IS NULL
--Case 4: Optionally, Line Location is specified
OR EXISTS (SELECT null from po_line_locations_all l
WHERE l.line_location_id = p_line_location_id(i)
AND (l.cancel_flag is null or l.cancel_flag <> 'Y')
AND (l.closed_code is NULL or l.closed_code NOT IN ('FINALLY CLOSED')))) ;
DELETE FROM po_session_gt
WHERE key = l_procedure_id;
PO_DRAFTS_PVT.update_permission_check
( p_calling_module => p_calling_module,
p_po_header_id => p_header_id(i),
p_role => l_role,
p_skip_cat_upload_chk => l_skip_cat_upload_chk,
x_update_allowed => l_update_allowed,
x_locking_applicable => l_locking_applicable,
x_unlock_required => l_unlock_required,
x_message => l_message
);
IF (l_update_allowed = FND_API.G_FALSE) THEN
x_po_status_rec.updatable_flag(i) := 'N';
INSERT INTO PO_SESSION_GT
( key,
num1
)
SELECT l_procedure_id,
1 -- Dummy Value
FROM DUAL
WHERE (p_release_id(i) IS NOT NULL
--Case 1: No Release is specified, PO Header has to be specified
-- Through any of HeaderId, DocNum-and-SubType, or VendorOrderNum
-- Bug 3407980: Modified closed_code condition so that it only discards 'FINALLY CLOSED'
OR EXISTS (select null from po_headers_all h
WHERE h.po_header_id = l_header_id(i)
AND (h.authorization_status is NULL
OR h.authorization_status NOT IN ('APPROVED')
/* <> */
-- for Mod Reserve Action
OR (po_partial_funding_pkg.is_clm_document('PO',h.po_header_id) = 'Y' )
/* <> */
)
AND (h.closed_code is NULL or h.closed_code <> 'FINALLY CLOSED')
AND (h.frozen_flag is NULL or h.frozen_flag <> 'Y')
AND (h.user_hold_flag is NULL or h.user_hold_flag <> 'Y')))
AND (p_release_id(i) IS NULL
--Case 2: PO Release is specified
-- Bug 3407980: Modified closed_code condition so that it only discards 'FINALLY CLOSED'
OR EXISTS (select null from po_releases_all h
WHERE h.po_release_id = p_release_id(i)
AND (h.authorization_status is NULL
OR h.authorization_status NOT IN ('APPROVED'))
AND (h.closed_code is NULL or h.closed_code <> 'FINALLY CLOSED')
AND (h.frozen_flag is NULL or h.frozen_flag <> 'Y')
AND (h.hold_flag is NULL or h.hold_flag <> 'Y')))
AND (p_line_id(i) IS NULL
--Case 3: Optionally, Line is specified
-- Bug 3407980: Modified closed_code condition so that it only discards 'FINALLY CLOSED'
OR EXISTS (SELECT null from po_lines_all l
WHERE l.po_line_id = p_line_id(i)
AND (l.closed_code is NULL or l.closed_code <> 'FINALLY CLOSED')))
AND (p_line_location_id(i) IS NULL
--Case 4: Optionally, Line Location is specified
-- Bug 3407980: Modified closed_code condition so that it only discards 'FINALLY CLOSED'
OR EXISTS (SELECT null from po_line_locations_all l
WHERE l.line_location_id = p_line_location_id(i)
AND (l.closed_code is NULL or l.closed_code <> 'FINALLY CLOSED')))
;
DELETE FROM po_session_gt
WHERE key = l_procedure_id;
INSERT INTO PO_SESSION_GT
( key,
num1
)
SELECT l_procedure_id,
1 -- Dummy Value
FROM DUAL
WHERE (p_release_id(i) IS NOT NULL
--Case 1: No Release is specified, PO Header has to be specified
-- Through any of HeaderId, DocNum-and-SubType, or VendorOrderNum
-- Bug 3407980: Modified closed_code condition so that it only discards 'FINALLY CLOSED'
OR EXISTS (select null from po_headers_all h
WHERE h.po_header_id = l_header_id(i)
AND (h.closed_code is NULL or h.closed_code <> 'FINALLY CLOSED')
AND (h.frozen_flag is NULL or h.frozen_flag <> 'Y')
AND (h.user_hold_flag is NULL or h.user_hold_flag <> 'Y')))
AND (p_release_id(i) IS NULL
--Case 2: PO Release is specified
-- Bug 3407980: Modified closed_code condition so that it only discards 'FINALLY CLOSED'
OR EXISTS (select null from po_releases_all h
WHERE h.po_release_id = p_release_id(i)
AND (h.closed_code is NULL or h.closed_code <> 'FINALLY CLOSED')
AND (h.frozen_flag is NULL or h.frozen_flag <> 'Y')
AND (h.hold_flag is NULL or h.hold_flag <> 'Y')))
AND (p_line_id(i) IS NULL
--Case 3: Optionally, Line is specified
-- Bug 3407980: Modified closed_code condition so that it only discards 'FINALLY CLOSED'
OR EXISTS (SELECT null from po_lines_all l
WHERE l.po_line_id = p_line_id(i)
AND (l.closed_code is NULL or l.closed_code <> 'FINALLY CLOSED')))
AND (p_line_location_id(i) IS NULL
--Case 4: Optionally, Line Location is specified
-- Bug 3407980: Modified closed_code condition so that it only discards 'FINALLY CLOSED'
OR EXISTS (SELECT null from po_line_locations_all l
WHERE l.line_location_id = p_line_location_id(i)
AND (l.closed_code is NULL or l.closed_code <> 'FINALLY CLOSED')))
;
DELETE FROM po_session_gt
WHERE key = l_procedure_id;
delete from po_headers_gt;
INSERT
INTO po_headers_gt
( AGENT_ID, TYPE_LOOKUP_CODE, LAST_UPDATE_DATE, LAST_UPDATED_BY,
SEGMENT1, SUMMARY_FLAG, ENABLED_FLAG,
authorization_status, approved_flag,
closed_code, cancel_flag,
frozen_flag, user_hold_flag, PO_HEADER_ID)
SELECT
AGENT_ID, TYPE_LOOKUP_CODE, LAST_UPDATE_DATE, LAST_UPDATED_BY,
SEGMENT1, SUMMARY_FLAG, ENABLED_FLAG,
NVL(authorization_status, 'INCOMPLETE'), nvl(approved_flag, 'N'),
nvl(closed_code, 'OPEN'), NVL(cancel_flag, 'N'),
NVL(frozen_flag, 'N'), NVL(user_hold_flag, 'N'), l_sequence(i)
FROM po_headers_all h
WHERE p_release_id(i) is null
AND h.po_header_id = p_header_id(i)
;
INSERT
INTO po_headers_gt
( AGENT_ID, TYPE_LOOKUP_CODE, LAST_UPDATE_DATE, LAST_UPDATED_BY,
SEGMENT1, SUMMARY_FLAG, ENABLED_FLAG,
authorization_status, approved_flag,
closed_code, cancel_flag,
frozen_flag, user_hold_flag, PO_HEADER_ID)
SELECT
0 dummy, ' ' dummy, LAST_UPDATE_DATE, LAST_UPDATED_BY,
' ' dummy, ' ' dummy, ' ' dummy,
NVL(authorization_status, 'INCOMPLETE'), nvl(approved_flag, 'N'),
nvl(closed_code, 'OPEN'), NVL(cancel_flag, 'N'),
NVL(frozen_flag, 'N'), NVL(hold_flag, 'N'), l_sequence(i)
FROM po_releases_all h
WHERE h.po_release_id = p_release_id(i)
;
UPDATE po_headers_gt gt
SET (closed_code, cancel_flag, user_hold_flag)
=
(SELECT nvl(closed_code, 'OPEN'), NVL(cancel_flag, 'N'), NVL(user_hold_flag, 'N')
FROM po_lines_all s
WHERE s.po_line_id = p_line_id(i))
WHERE p_line_id(i) is not null and gt.po_header_id = l_sequence(i)
;
UPDATE po_headers_gt gt
SET (approved_flag, closed_code, cancel_flag)
=
(SELECT nvl(approved_flag, 'N'), nvl(closed_code, 'OPEN'), NVL(cancel_flag, 'N')
FROM po_line_locations_all s
WHERE s.line_location_id = p_line_location_id(i))
WHERE p_line_location_id(i) is not null and gt.po_header_id = l_sequence(i)
;
SELECT
authorization_status, approved_flag, closed_code, cancel_flag, frozen_flag, user_hold_flag
BULK COLLECT INTO
x_po_status_rec.authorization_status, x_po_status_rec.approval_flag, x_po_status_rec.closed_code,
x_po_status_rec.cancel_flag, x_po_status_rec.frozen_flag, x_po_status_rec.hold_flag
FROM po_headers_gt
ORDER BY PO_HEADER_ID;
IF INSTR(p_mode, G_CHECK_UPDATEABLE) > 0 THEN --{
check_updatable (
p_count => l_count,
p_header_id => p_header_id,
p_release_id => p_release_id,
p_document_type => p_document_type,
p_document_subtype => p_document_subtype,
p_document_num => p_document_num,
p_vendor_order_num => p_vendor_order_num,
p_line_id => p_line_id,
p_line_location_id => p_line_location_id,
p_distribution_id => p_distribution_id,
p_lock_flag => p_lock_flag,
p_calling_module => p_calling_module, -- PDOI Rewrite R12
p_role => p_role, -- PDOI Rewrite R12
p_skip_cat_upload_chk => p_skip_cat_upload_chk, -- PDOI Rewrite R12
x_po_status_rec => x_po_status_rec,
x_return_status => x_return_status);
END IF; --}END of IF INSTR(p_mode, G_CHECK_UPDATEABLE) > 0
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, sysdate
, p_user_id
, sysdate
, POL.line_num
, POLL.shipment_num
, 0
, p_sequence + ROWNUM
, decode ( POL.quantity --
, NULL , PO_CORE_S.get_translated_text
( 'PO_SUB_SHIP_BILL_GT_ORD_AMT'
, 'LINE_NUM' , POL.line_num
, 'SHIP_NUM' , POLL.shipment_num
, 'AMT_BILLED' , nvl(POLL.amount_billed, 0)
, 'AMT_ORDERED' , nvl(POLL.amount, 0)
)
, PO_CORE_S.get_translated_text
( 'PO_SUB_SHIP_BILL_GT_ORD_QTY'
, 'LINE_NUM' , POL.line_num
, 'SHIP_NUM' , POLL.shipment_num
, 'QTY_BILLED' , nvl(POLL.quantity_billed, 0)
, 'QTY_ORDERED' , nvl(POLL.quantity, 0)
)
)
, decode ( POL.quantity --
, NULL , 'PO_SUB_SHIP_BILL_GT_ORD_AMT'
, 'PO_SUB_SHIP_BILL_GT_ORD_QTY'
)
FROM
PO_LINE_LOCATIONS_GT POLL
, PO_LINES_ALL POL -- For releases, PO_LINES_GT table isn't populated.
WHERE POLL.po_line_id = POL.po_line_id
AND nvl(POLL.cancel_flag, 'N') = 'N'
AND nvl(POLL.closed_code, 'OPEN') <> 'FINALLY CLOSED'
AND ( --
--: Use POLL value basis
( ( POLL.value_basis IN ('QUANTITY', 'AMOUNT') )
AND (nvl(POLL.quantity_billed,0) > nvl(POLL.quantity,0) ) )
OR ( ( POLL.value_basis IN ('FIXED PRICE', 'RATE') )
AND (nvl(POLL.amount_billed,0) > nvl(POLL.amount,0) ) )
--
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, sysdate
, p_user_id
, sysdate
, POL.line_num
, POLL.shipment_num
, POD.distribution_num
, p_sequence + ROWNUM
, decode ( POL.quantity --
, NULL , PO_CORE_S.get_translated_text
( 'PO_SUB_DIST_BILL_GT_ORD_AMT'
, 'LINE_NUM' , POL.line_num
, 'SHIP_NUM' , POLL.shipment_num
, 'DIST_NUM' , POD.distribution_num
, 'AMT_BILLED' , nvl(POD.amount_billed, 0)
, 'AMT_ORDERED' , nvl(POD.amount_ordered, 0)
)
, PO_CORE_S.get_translated_text
( 'PO_SUB_DIST_BILL_GT_ORD_QTY'
, 'LINE_NUM' , POL.line_num
, 'SHIP_NUM' , POLL.shipment_num
, 'DIST_NUM' , POD.distribution_num
, 'QTY_BILLED' , nvl(POD.quantity_billed, 0)
, 'QTY_ORDERED' , nvl(POD.quantity_ordered, 0)
)
)
, decode ( POL.quantity --
, NULL , 'PO_SUB_DIST_BILL_GT_ORD_AMT'
, 'PO_SUB_DIST_BILL_GT_ORD_QTY'
)
FROM
PO_DISTRIBUTIONS_GT POD
, PO_LINE_LOCATIONS_GT POLL
, PO_LINES_ALL POL -- For releases, PO_LINES_GT table isn't populated.
WHERE POD.line_location_id = POLL.line_location_id
AND POL.po_line_id = POLL.po_line_id
AND nvl(POLL.cancel_flag, 'N') = 'N'
AND nvl(POLL.closed_code, 'OPEN') <> 'FINALLY CLOSED'
AND ( --
( ( POL.quantity IS NOT NULL )
AND ( nvl(POD.quantity_billed,0) > nvl(POD.quantity_ordered,0) ) )
OR ( ( POL.amount IS NOT NULL )
AND ( nvl(POD.amount_billed,0) > nvl(POD.amount_ordered,0) ) )
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, sysdate
, p_user_id
, sysdate
, POL.line_num
, POLL.shipment_num
, POD.distribution_num
, p_sequence + ROWNUM
, decode ( POL.quantity --
, NULL , PO_CORE_S.get_translated_text
( 'PO_SUB_DIST_DLVR_GT_ORD_AMT'
, 'LINE_NUM' , POL.line_num
, 'SHIP_NUM' , POLL.shipment_num
, 'DIST_NUM' , POD.distribution_num
, 'AMT_DELIVERED' , nvl(POD.amount_delivered, 0)
, 'AMT_ORDERED' , nvl(POD.amount_ordered, 0)
)
, PO_CORE_S.get_translated_text
( 'PO_SUB_DIST_DLVR_GT_ORD_QTY'
, 'LINE_NUM' , POL.line_num
, 'SHIP_NUM' , POLL.shipment_num
, 'DIST_NUM' , POD.distribution_num
, 'QTY_DELIVERED' , nvl(POD.quantity_delivered, 0)
, 'QTY_ORDERED' , nvl(POD.quantity_ordered, 0)
)
)
, decode ( POL.quantity --
, NULL , 'PO_SUB_DIST_DLVR_GT_ORD_AMT'
, 'PO_SUB_DIST_DLVR_GT_ORD_QTY'
)
FROM
PO_DISTRIBUTIONS_GT POD
, PO_LINE_LOCATIONS_GT POLL
, PO_LINES_ALL POL -- For releases, PO_LINES_GT table isn't populated.
WHERE POD.line_location_id = POLL.line_location_id
AND POL.po_line_id = POLL.po_line_id
AND nvl(POLL.cancel_flag,'N') = 'N'
AND nvl(POLL.closed_code,'OPEN') <> 'FINALLY CLOSED'
AND ( --
( ( POL.quantity IS NOT NULL )
AND ( nvl(POD.quantity_delivered,0) > nvl(POD.quantity_ordered,0) ) )
OR ( ( POL.amount IS NOT NULL )
AND ( nvl(POD.amount_delivered,0) > nvl(POD.amount_ordered,0) ) )
)
;
SELECT draft_type
INTO l_draft_type
FROM po_drafts
WHERE draft_id = p_draft_id;
INSERT INTO PO_LINE_LOCATIONS_GT (
line_location_id ,
last_update_date ,
last_updated_by ,
po_header_id ,
po_line_id ,
last_update_login ,
creation_date ,
created_by ,
quantity ,
quantity_received ,
quantity_accepted ,
quantity_rejected ,
quantity_billed ,
quantity_cancelled ,
amount, --
amount_received, --
amount_accepted, --
amount_rejected, --
amount_billed, --
amount_cancelled, --
unit_meas_lookup_code ,
po_release_id ,
ship_to_location_id ,
ship_via_lookup_code ,
need_by_date ,
promised_date ,
last_accept_date ,
price_override ,
encumbered_flag ,
encumbered_date ,
unencumbered_quantity ,
fob_lookup_code ,
freight_terms_lookup_code ,
taxable_flag ,
estimated_tax_amount ,
from_header_id ,
from_line_id ,
from_line_location_id ,
start_date ,
end_date ,
lead_time ,
lead_time_unit ,
price_discount ,
terms_id ,
approved_flag ,
approved_date ,
closed_flag ,
cancel_flag ,
cancelled_by ,
cancel_date ,
cancel_reason ,
firm_status_lookup_code ,
firm_date ,
attribute_category ,
attribute1 ,
attribute2 ,
attribute3 ,
attribute4 ,
attribute5 ,
attribute6 ,
attribute7 ,
attribute8 ,
attribute9 ,
attribute10 ,
unit_of_measure_class ,
encumber_now ,
attribute11 ,
attribute12 ,
attribute13 ,
attribute14 ,
attribute15 ,
inspection_required_flag ,
receipt_required_flag ,
qty_rcv_tolerance ,
qty_rcv_exception_code ,
enforce_ship_to_location_code ,
allow_substitute_receipts_flag ,
days_early_receipt_allowed ,
days_late_receipt_allowed ,
receipt_days_exception_code ,
invoice_close_tolerance ,
receive_close_tolerance ,
ship_to_organization_id ,
shipment_num ,
source_shipment_id ,
shipment_type ,
closed_code ,
request_id ,
program_application_id ,
program_id ,
program_update_date ,
government_context ,
receiving_routing_id ,
accrue_on_receipt_flag ,
closed_reason ,
closed_date ,
closed_by ,
org_id ,
global_attribute1 ,
global_attribute2 ,
global_attribute3 ,
global_attribute4 ,
global_attribute5 ,
global_attribute6 ,
global_attribute7 ,
global_attribute8 ,
global_attribute9 ,
global_attribute10 ,
global_attribute11 ,
global_attribute12 ,
global_attribute13 ,
global_attribute14 ,
global_attribute15 ,
global_attribute16 ,
global_attribute17 ,
global_attribute18 ,
global_attribute19 ,
global_attribute20 ,
global_attribute_category ,
quantity_shipped ,
country_of_origin_code ,
tax_user_override_flag ,
match_option ,
tax_code_id ,
calculate_tax_flag ,
change_promised_date_reason ,
note_to_receiver ,
secondary_quantity ,
secondary_unit_of_measure ,
preferred_grade ,
secondary_quantity_received ,
secondary_quantity_accepted ,
secondary_quantity_rejected ,
secondary_quantity_cancelled ,
vmi_flag ,
consigned_flag ,
retroactive_date ,
payment_type , --
description , --
value_basis , --
UDA_TEMPLATE_ID ,
DRAFT_ID ,
CLM_PERIOD_PERF_END_DATE ,
CLM_PERIOD_PERF_START_DATE ,
CLM_DELIVERY_PERIOD , --
CLM_DELIVERY_PERIOD_UOM ,
CLM_PROMISE_PERIOD ,
CLM_PROMISE_PERIOD_UOM ,
CLM_POP_DURATION ,
CLM_POP_DURATION_UOM
)
SELECT
poll.line_location_id ,
poll.last_update_date ,
poll.last_updated_by ,
poll.po_header_id ,
poll.po_line_id ,
poll.last_update_login ,
poll.creation_date ,
poll.created_by ,
poll.quantity ,
poll.quantity_received ,
poll.quantity_accepted ,
poll.quantity_rejected ,
poll.quantity_billed ,
poll.quantity_cancelled ,
poll.amount, --
poll.amount_received, --
poll.amount_accepted, --
poll.amount_rejected, --
poll.amount_billed, --
poll.amount_cancelled, --
poll.unit_meas_lookup_code ,
poll.po_release_id ,
poll.ship_to_location_id ,
poll.ship_via_lookup_code ,
poll.need_by_date ,
poll.promised_date ,
poll.last_accept_date ,
poll.price_override ,
poll.encumbered_flag ,
poll.encumbered_date ,
poll.unencumbered_quantity ,
poll.fob_lookup_code ,
poll.freight_terms_lookup_code ,
poll.taxable_flag ,
poll.estimated_tax_amount ,
poll.from_header_id ,
poll.from_line_id ,
poll.from_line_location_id ,
poll.start_date ,
poll.end_date ,
poll.lead_time ,
poll.lead_time_unit ,
poll.price_discount ,
poll.terms_id ,
poll.approved_flag ,
poll.approved_date ,
poll.closed_flag ,
poll.cancel_flag ,
poll.cancelled_by ,
poll.cancel_date ,
poll.cancel_reason ,
poll.firm_status_lookup_code ,
poll.firm_date ,
poll.attribute_category ,
poll.attribute1 ,
poll.attribute2 ,
poll.attribute3 ,
poll.attribute4 ,
poll.attribute5 ,
poll.attribute6 ,
poll.attribute7 ,
poll.attribute8 ,
poll.attribute9 ,
poll.attribute10 ,
poll.unit_of_measure_class ,
poll.encumber_now ,
poll.attribute11 ,
poll.attribute12 ,
poll.attribute13 ,
poll.attribute14 ,
poll.attribute15 ,
poll.inspection_required_flag ,
poll.receipt_required_flag ,
poll.qty_rcv_tolerance ,
poll.qty_rcv_exception_code ,
poll.enforce_ship_to_location_code ,
poll.allow_substitute_receipts_flag ,
poll.days_early_receipt_allowed ,
poll.days_late_receipt_allowed ,
poll.receipt_days_exception_code ,
poll.invoice_close_tolerance ,
poll.receive_close_tolerance ,
poll.ship_to_organization_id ,
poll.shipment_num ,
poll.source_shipment_id ,
poll.shipment_type ,
poll.closed_code ,
poll.request_id ,
poll.program_application_id ,
poll.program_id ,
poll.program_update_date ,
poll.government_context ,
poll.receiving_routing_id ,
poll.accrue_on_receipt_flag ,
poll.closed_reason ,
poll.closed_date ,
poll.closed_by ,
poll.org_id ,
poll.global_attribute1 ,
poll.global_attribute2 ,
poll.global_attribute3 ,
poll.global_attribute4 ,
poll.global_attribute5 ,
poll.global_attribute6 ,
poll.global_attribute7 ,
poll.global_attribute8 ,
poll.global_attribute9 ,
poll.global_attribute10 ,
poll.global_attribute11 ,
poll.global_attribute12 ,
poll.global_attribute13 ,
poll.global_attribute14 ,
poll.global_attribute15 ,
poll.global_attribute16 ,
poll.global_attribute17 ,
poll.global_attribute18 ,
poll.global_attribute19 ,
poll.global_attribute20 ,
poll.global_attribute_category ,
poll.quantity_shipped ,
poll.country_of_origin_code ,
poll.tax_user_override_flag ,
poll.match_option ,
poll.tax_code_id ,
poll.calculate_tax_flag ,
poll.change_promised_date_reason ,
poll.note_to_receiver ,
poll.secondary_quantity ,
poll.secondary_unit_of_measure ,
poll.preferred_grade ,
poll.secondary_quantity_received ,
poll.secondary_quantity_accepted ,
poll.secondary_quantity_rejected ,
poll.secondary_quantity_cancelled ,
poll.vmi_flag ,
poll.consigned_flag ,
poll.retroactive_date ,
poll.payment_type , --
poll.description , --
poll.value_basis , --
poll.UDA_TEMPLATE_ID ,
poll.DRAFT_ID ,
poll.CLM_PERIOD_PERF_END_DATE ,
poll.CLM_PERIOD_PERF_START_DATE ,
poll.CLM_DELIVERY_PERIOD , --
poll.CLM_DELIVERY_PERIOD_UOM ,
poll.CLM_PROMISE_PERIOD ,
poll.CLM_PROMISE_PERIOD_UOM ,
poll.CLM_POP_DURATION ,
poll.CLM_POP_DURATION_UOM
FROM PO_LINE_LOCATIONS_MERGE_V POLL
WHERE POLL.LINE_LOCATION_ID = l_line_location_id_tbl(i)
AND POLL.DRAFT_ID = p_draft_id
/*-- CLM Aprvl
FROM PO_LINE_LOCATIONS_ALL POLL
WHERE POLL.line_location_id = l_line_location_id_tbl(i)
-- CLM Aprvl*/
-- need to change the entities which should be validated. Only records in the draft tables should be validated.
AND (l_draft_type <> 'PAR'
OR (l_draft_type = 'PAR' AND poll.change_status IS NOT NULL ));
SELECT draft_type
INTO l_draft_type
FROM po_drafts
WHERE draft_id = p_draft_id;
INSERT INTO PO_DISTRIBUTIONS_GT
(
po_distribution_id ,
last_update_date ,
last_updated_by ,
po_header_id ,
po_line_id ,
line_location_id ,
set_of_books_id ,
code_combination_id ,
quantity_ordered ,
amount_ordered, --
last_update_login ,
creation_date ,
created_by ,
po_release_id ,
quantity_delivered ,
quantity_billed ,
quantity_cancelled ,
amount_delivered, --
amount_billed ,
amount_cancelled, --
req_header_reference_num ,
req_line_reference_num ,
req_distribution_id ,
deliver_to_location_id ,
deliver_to_person_id ,
rate_date ,
rate ,
accrued_flag ,
encumbered_flag ,
encumbered_amount ,
unencumbered_quantity ,
unencumbered_amount ,
failed_funds_lookup_code ,
gl_encumbered_date ,
gl_encumbered_period_name ,
gl_cancelled_date ,
destination_type_code ,
destination_organization_id ,
destination_subinventory ,
attribute_category ,
attribute1 ,
attribute2 ,
attribute3 ,
attribute4 ,
attribute5 ,
attribute6 ,
attribute7 ,
attribute8 ,
attribute9 ,
attribute10 ,
attribute11 ,
attribute12 ,
attribute13 ,
attribute14 ,
attribute15 ,
wip_entity_id ,
wip_operation_seq_num ,
wip_resource_seq_num ,
wip_repetitive_schedule_id ,
wip_line_id ,
bom_resource_id ,
budget_account_id ,
accrual_account_id ,
variance_account_id ,
prevent_encumbrance_flag ,
government_context ,
destination_context ,
distribution_num ,
source_distribution_id ,
request_id ,
program_application_id ,
program_id ,
program_update_date ,
project_id ,
task_id ,
expenditure_type ,
project_accounting_context ,
expenditure_organization_id ,
gl_closed_date ,
accrue_on_receipt_flag ,
expenditure_item_date ,
org_id ,
kanban_card_id ,
award_id ,
mrc_rate_date ,
mrc_rate ,
mrc_encumbered_amount ,
mrc_unencumbered_amount ,
end_item_unit_number ,
tax_recovery_override_flag ,
recoverable_tax ,
nonrecoverable_tax ,
recovery_rate ,
oke_contract_line_id ,
oke_contract_deliverable_id
, distribution_type
, amount_to_encumber
, funded_value,
acrn,
clm_payment_sequence_num
)
SELECT
pod.po_distribution_id ,
pod.last_update_date ,
pod.last_updated_by ,
pod.po_header_id ,
pod.po_line_id ,
pod.line_location_id ,
pod.set_of_books_id ,
pod.code_combination_id ,
pod.quantity_ordered ,
pod.amount_ordered, --
pod.last_update_login ,
pod.creation_date ,
pod.created_by ,
pod.po_release_id ,
pod.quantity_delivered ,
pod.quantity_billed ,
pod.quantity_cancelled ,
pod.amount_delivered, --
pod.amount_billed ,
pod.amount_cancelled, --
pod.req_header_reference_num ,
pod.req_line_reference_num ,
pod.req_distribution_id ,
pod.deliver_to_location_id ,
pod.deliver_to_person_id ,
pod.rate_date ,
pod.rate ,
pod.accrued_flag ,
pod.encumbered_flag ,
pod.encumbered_amount ,
pod.unencumbered_quantity ,
pod.unencumbered_amount ,
pod.failed_funds_lookup_code ,
pod.gl_encumbered_date ,
pod.gl_encumbered_period_name ,
pod.gl_cancelled_date ,
pod.destination_type_code ,
pod.destination_organization_id ,
pod.destination_subinventory ,
pod.attribute_category ,
pod.attribute1 ,
pod.attribute2 ,
pod.attribute3 ,
pod.attribute4 ,
pod.attribute5 ,
pod.attribute6 ,
pod.attribute7 ,
pod.attribute8 ,
pod.attribute9 ,
pod.attribute10 ,
pod.attribute11 ,
pod.attribute12 ,
pod.attribute13 ,
pod.attribute14 ,
pod.attribute15 ,
pod.wip_entity_id ,
pod.wip_operation_seq_num ,
pod.wip_resource_seq_num ,
pod.wip_repetitive_schedule_id ,
pod.wip_line_id ,
pod.bom_resource_id ,
pod.budget_account_id ,
pod.accrual_account_id ,
pod.variance_account_id ,
pod.prevent_encumbrance_flag ,
pod.government_context ,
pod.destination_context ,
pod.distribution_num ,
pod.source_distribution_id ,
pod.request_id ,
pod.program_application_id ,
pod.program_id ,
pod.program_update_date ,
pod.project_id ,
pod.task_id ,
pod.expenditure_type ,
pod.project_accounting_context ,
pod.expenditure_organization_id ,
pod.gl_closed_date ,
pod.accrue_on_receipt_flag ,
pod.expenditure_item_date ,
pod.org_id ,
pod.kanban_card_id ,
pod.award_id ,
pod.mrc_rate_date ,
pod.mrc_rate ,
pod.mrc_encumbered_amount ,
pod.mrc_unencumbered_amount ,
pod.end_item_unit_number ,
pod.tax_recovery_override_flag ,
pod.recoverable_tax ,
pod.nonrecoverable_tax ,
pod.recovery_rate ,
pod.oke_contract_line_id ,
pod.oke_contract_deliverable_id
, pod.distribution_type
, pod.amount_to_encumber
, pod.funded_value ,
pod.acrn,
pod.clm_payment_sequence_num
FROM PO_DISTRIBUTIONS_MERGE_V POD
WHERE POD.po_distribution_id = l_dist_id_tbl(i)
and pod.draft_id = p_draft_id
/* -- CLM Aprvl
FROM PO_DISTRIBUTIONS_ALL POD
WHERE POD.po_distribution_id = l_dist_id_tbl(i)
*/-- CLM Aprvl
-- need to change the entities which should be validated. Only records in the draft tables should be validated.
AND (l_draft_type <> 'PAR'
OR (l_draft_type = 'PAR' AND pod.change_status IS NOT NULL ));
SELECT
PRD.gl_encumbered_date
, PRL.line_num
, NULL
, PRD.distribution_num
BULK COLLECT INTO
l_date_tbl
, l_line_num_tbl
, l_shipment_num_tbl
, l_distribution_num_tbl
FROM
PO_REQ_DISTRIBUTIONS_GT PRD
, PO_REQ_LINES_GT PRL
, PO_REQ_HEADERS_GT PRH
WHERE PRL.requisition_line_id = PRD.requisition_line_id --JOIN
AND PRH.requisition_header_id = PRL.requisition_header_id --JOIN
AND PRL.line_location_id IS NULL
AND
( NVL(PRH.transferred_to_oe_flag,'N') <> 'Y'
OR NVL(PRL.source_type_code,'VENDOR') <> 'INVENTORY'
)
AND NVL(PRD.encumbered_flag,'N') = 'N'
AND NVL(PRD.prevent_encumbrance_flag,'N') <> 'Y' -- Bug 10428042
AND NVL(PRL.cancel_flag,'N') = 'N'
AND NVL(PRL.closed_code,'OPEN') <> 'FINALLY CLOSED'
AND Nvl(prl.modified_by_agent_flag,'N') = 'N' /*Bug 4882209*/
;
SELECT
POD.gl_encumbered_date
, POL.line_num
, POLL.shipment_num
, POD.distribution_num
BULK COLLECT INTO
l_date_tbl
, l_line_num_tbl
, l_shipment_num_tbl
, l_distribution_num_tbl
FROM
PO_DISTRIBUTIONS_GT POD
, PO_LINE_LOCATIONS_GT POLL
, PO_LINES_ALL POL -- For Releases, PO_LINES_GT doesn't get populated.
, PO_HEADERS_GT POH
WHERE POLL.line_location_id(+) = POD.line_location_id --JOIN
AND POL.po_line_id(+) = POD.po_line_id --JOIN
-- PA distributions don't have associated lines or shipments
AND POH.po_header_id = POD.po_header_id --JOIN
AND NVL(POD.encumbered_flag,'N') = 'N'
AND NVL(POLL.cancel_flag,'N') = 'N'
AND NVL(POLL.closed_code,'OPEN') <> 'FINALLY CLOSED'
AND NVL(POLL.approved_flag,'N') <> 'Y'
AND NVL(POD.prevent_encumbrance_flag,'N') <> 'Y' -- Bug 10428042
-- Bug 8326256, Bug 8468327, Bug 8468328: For SHOP FLOOR destination type
-- distributions the GL date validation should be skipped.
AND (NVL(POD.destination_type_code,'EXPENSE') <> 'SHOP FLOOR' /* 8326256 */
OR (NVL(POD.destination_type_code,'EXPENSE') = 'SHOP FLOOR'
AND (SELECT entity_type from wip_entities where wip_entity_id = POD.wip_entity_id)= 6)) /* Encumbrance project */
AND ( ( p_doc_type = g_document_type_PA
AND POH.encumbrance_required_flag = 'Y'
)
OR ( p_doc_type <> g_document_type_PA )
)
;
SELECT PO_SESSION_GT_S.nextval
INTO l_dates_key
FROM DUAL
;
INSERT INTO PO_SESSION_GT
( key
, num1 -- line_num
, num2 -- shipment_num
, num3 -- distribution_num
, char1 -- period_name
)
VALUES
( l_dates_key
, l_line_num_tbl(i)
, l_shipment_num_tbl(i)
, l_distribution_num_tbl(i)
, l_period_name_tbl(i)
)
;
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, sysdate
, p_user_id
, sysdate
, NVL(DATES.num1,0) -- line_num
, NVL(DATES.num2,0) -- shipment_num
, NVL(DATES.num3,0) -- distribution_num
, p_sequence + rownum
, substr(
DECODE( DATES.num1 -- line_num
, NULL, ''
, g_linemsg||g_delim||TO_CHAR(DATES.num1)||g_delim
)
||
DECODE( DATES.num2 -- shipment_num
, NULL, ''
, g_shipmsg||g_delim||TO_CHAR(DATES.num2)||g_delim
)
||
DECODE( p_doc_type
, g_document_type_PA, ''
, g_distmsg||g_delim||TO_CHAR(DATES.num3)||g_delim
)
||l_textline
, 1
, 240
)
, l_msg_name
FROM PO_SESSION_GT DATES
WHERE DATES.key = l_dates_key
AND DATES.char1 IS NULL -- period_name not found
;
SELECT NVL(MIN(po_header_id), '-999')
INTO x_header_id(i)
FROM po_headers
WHERE segment1 = p_document_num(i)
AND type_lookup_code = p_type_lookup_code(i)
AND po_header_id = NVL(x_header_id(i), po_header_id);
SELECT NVL(MIN(po_header_id), '-999')
INTO x_header_id(i)
FROM po_headers_all
WHERE vendor_order_num = p_vendor_order_num(i)
AND po_header_id = NVL(x_header_id(i), po_header_id);
SELECT vendor_id, vendor_site_id
INTO l_vendor_id, l_vendor_site_id
FROM po_headers_all
WHERE po_header_id = p_document_id;
INSERT INTO po_online_report_text_gt
(online_report_id
,last_updated_by
,last_update_date
,created_by
,creation_date
,line_num
,shipment_num
,distribution_num
,sequence
,text_line
,message_name)
VALUES
(p_online_report_id
,p_login_id
,sysdate
,p_user_id
,sysdate
,0 ,0 ,0
,p_sequence+1
,substr(l_text_line,1,240)
,'PO_VENDOR_SITE_CCR_INVALID');
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, 0
, 0
, 0
, p_sequence + ROWNUM
, substr(l_textline, 1, 240)
, 'PO_CAN_POH_WITH_RCV_TRX'
FROM po_headers_gt poh
WHERE EXISTS
(
SELECT 'Eligible shipment'
FROM po_line_locations_gt poll
WHERE poll.po_header_id = poh.po_header_id
AND NVL(poll.cancel_flag, 'N') = 'N'
AND NVL(poll.closed_code, 'OPEN') <> 'FINALLY CLOSED'
)
AND EXISTS
(
SELECT 'Transaction to process'
FROM rcv_transactions_interface rti
WHERE rti.processing_status_code = 'PENDING'
AND rti.po_header_id = poh.po_header_id
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, 0
, 0
, 0
, p_sequence + ROWNUM
, substr(l_textline, 1, 240)
, 'PO_CAN_REL_WITH_RCV_TRX'
FROM po_releases_gt por
WHERE EXISTS
(
SELECT 'Eligible shipment'
FROM po_line_locations_gt poll
WHERE poll.po_release_id = por.po_release_id
AND NVL(poll.cancel_flag, 'N') = 'N'
AND NVL(poll.closed_code, 'OPEN') <> 'FINALLY CLOSED'
)
AND EXISTS
(
SELECT 'Transaction to process'
FROM rcv_transactions_interface rti
WHERE rti.processing_status_code = 'PENDING'
AND rti.po_release_id = por.po_release_id
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, pol.line_num
, 0
, 0
, p_sequence + ROWNUM
, substr(g_linemsg || g_delim || pol.line_num || g_delim || l_textline, 1, 240)
, 'PO_CAN_POL_WITH_RCV_TRX'
FROM po_lines_gt pol
WHERE EXISTS
(
SELECT 'Eligible shipment'
FROM po_line_locations_gt poll
WHERE poll.po_line_id = pol.po_line_id
AND NVL(poll.cancel_flag, 'N') = 'N'
AND NVL(poll.closed_code, 'OPEN') <> 'FINALLY CLOSED'
)
AND EXISTS
(
SELECT 'Transaction to process'
FROM rcv_transactions_interface rti
WHERE rti.processing_status_code = 'PENDING'
AND rti.po_line_id = pol.po_line_id
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, DECODE(p_document_type, g_document_type_RELEASE, 0, pol.line_num)
, poll.shipment_num
, 0
, p_sequence + ROWNUM
, DECODE(p_document_type,
g_document_type_RELEASE, substr(g_shipmsg || g_delim || poll.shipment_num
|| g_delim || l_textline, 1, 240),
substr(g_linemsg || g_delim || pol.line_num || g_delim || g_shipmsg || g_delim
|| poll.shipment_num || g_delim || l_textline, 1, 240)
)
, DECODE(p_document_type, g_document_type_RELEASE, 'PO_CAN_RELS_WITH_RCV_TRX',
'PO_CAN_POLL_WITH_RCV_TRX')
FROM po_lines_gt pol, po_line_locations_gt poll
WHERE pol.po_line_id = poll.po_line_id
AND NVL(poll.cancel_flag, 'N') = 'N'
AND NVL(poll.closed_code, 'OPEN') <> 'FINALLY CLOSED'
AND EXISTS
(
SELECT 'Transaction to process'
FROM rcv_transactions_interface rti
WHERE rti.processing_status_code = 'PENDING'
AND rti.po_line_location_id = poll.line_location_id
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, 0
, poll.shipment_num
, 0
, p_sequence + ROWNUM
, substr(g_shipmsg || g_delim || poll.shipment_num || g_delim || l_textline, 1, 240)
, 'PO_CAN_RELS_WITH_RCV_TRX'
FROM po_line_locations_gt poll
WHERE EXISTS
(
SELECT 'Eligible shipment'
FROM po_releases_gt por
WHERE por.po_release_id = poll.po_release_id
AND NVL(por.cancel_flag, 'N') = 'N'
AND NVL(por.closed_code, 'OPEN') <> 'FINALLY CLOSED'
)
AND EXISTS
(
SELECT 'Transaction to process'
FROM rcv_transactions_interface rti
WHERE rti.processing_status_code = 'PENDING'
AND rti.po_line_location_id = poll.line_location_id
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, DECODE(p_document_type, g_document_type_RELEASE, 0, pol.line_num)
, poll.shipment_num
, 0
, p_sequence + ROWNUM
, DECODE(p_document_type, g_document_type_RELEASE,
substr(g_shipmsg || g_delim || poll.shipment_num || g_delim || l_text_normal_po, 1, 240),
substr(g_linemsg || g_delim || pol.line_num || g_delim || g_shipmsg || g_delim
|| poll.shipment_num || g_delim ||
DECODE(poll.payment_type , NULL, l_text_normal_po, l_text_complex_po), 1, 240))
, DECODE(poll.payment_type, NULL, 'PO_CAN_POLL_WITH_ASN', 'PO_CAN_POLL_WITH_PENDING_WCR')
FROM po_lines_gt pol, po_line_locations_gt poll
WHERE NVL(poll.cancel_flag, 'N') = 'N'
AND NVL(poll.closed_code, 'OPEN') <> 'FINALLY CLOSED'
AND EXISTS
(
SELECT 'ASN outstanding'
FROM rcv_shipment_lines rsl
WHERE rsl.po_line_location_id = poll.line_location_id
AND NVL(rsl.quantity_shipped, 0) > NVL(rsl.quantity_received, 0)
AND NVL(rsl.asn_line_flag, 'N') = 'Y'
AND NVL(rsl.shipment_line_status_code, 'EXPECTED') <> 'CANCELLED'
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, 0
, 0
, 0
, p_sequence + ROWNUM
, substr(g_shipmsg || g_delim || poll.shipment_num || g_delim || l_textline, 1, 240)
, 'PO_CAN_POLL_WITH_ASN'
FROM po_releases_gt por, po_line_locations_gt poll
WHERE poll.po_release_id = por.po_release_id
AND NVL(poll.cancel_flag, 'N') = 'N'
AND NVL(poll.closed_code, 'OPEN') <> 'FINALLY CLOSED'
AND EXISTS
(
SELECT 'ASN outstanding'
FROM rcv_shipment_lines rsl
WHERE rsl.po_release_id = por.po_release_id
AND NVL(rsl.quantity_shipped, 0) > NVL(rsl.quantity_received, 0)
AND NVL(rsl.asn_line_flag, 'N') = 'Y'
AND NVL(rsl.shipment_line_status_code, 'EXPECTED') <> 'CANCELLED'
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, pol.line_num
, 0
, 0
, p_sequence + ROWNUM
, substr(g_linemsg || g_delim || pol.line_num || g_delim || g_shipmsg || g_delim
|| poll.shipment_num || g_delim ||
DECODE(poll.payment_type , NULL, l_text_normal_po, l_text_complex_po), 1, 240)
, DECODE(poll.payment_type, NULL, 'PO_CAN_POLL_WITH_ASN', 'PO_CAN_POLL_WITH_PENDING_WCR')
FROM po_lines_gt pol, po_line_locations_gt poll
WHERE poll.po_line_id = pol.po_line_id
AND NVL(poll.cancel_flag, 'N') = 'N'
AND NVL(poll.closed_code, 'OPEN') <> 'FINALLY CLOSED'
AND EXISTS
(
SELECT 'ASN outstanding'
FROM rcv_shipment_lines rsl
WHERE rsl.po_line_id = pol.po_line_id
AND NVL(rsl.quantity_shipped, 0) > NVL(rsl.quantity_received, 0)
AND NVL(rsl.asn_line_flag, 'N') = 'Y'
AND NVL(rsl.shipment_line_status_code, 'EXPECTED') <> 'CANCELLED'
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, pol.line_num
, poll.shipment_num
, 0
, p_sequence + ROWNUM
, substr(g_linemsg || g_delim || pol.line_num || g_delim || g_shipmsg || g_delim
|| poll.shipment_num || g_delim ||
DECODE(poll.payment_type , NULL, l_text_normal_po, l_text_complex_po), 1, 240)
, DECODE(poll.payment_type, NULL, 'PO_CAN_POLL_WITH_ASN', 'PO_CAN_POLL_WITH_PENDING_WCR')
FROM po_lines_gt pol, po_line_locations_gt poll
WHERE poll.po_line_id = pol.po_line_id
AND NVL(poll.cancel_flag, 'N') = 'N'
AND NVL(poll.closed_code, 'OPEN') <> 'FINALLY CLOSED'
AND EXISTS
(
SELECT 'ASN outstanding'
FROM rcv_shipment_lines rsl
WHERE rsl.po_line_location_id = poll.line_location_id
AND NVL(rsl.quantity_shipped, 0) > NVL(rsl.quantity_received, 0)
AND NVL(rsl.asn_line_flag, 'N') = 'Y'
AND NVL(rsl.shipment_line_status_code, 'EXPECTED') <> 'CANCELLED'
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, 0
, poll.shipment_num
, 0
, p_sequence + ROWNUM
, substr(g_shipmsg || g_delim || poll.shipment_num || g_delim || l_textline, 1, 240)
, 'PO_CAN_POLL_WITH_ASN'
FROM po_line_locations_gt poll
WHERE EXISTS
(
SELECT 'Eligible shipment'
FROM po_releases_gt por
WHERE por.po_release_id = poll.po_release_id
AND NVL(por.cancel_flag, 'N') = 'N'
AND NVL(por.closed_code, 'OPEN') <> 'FINALLY CLOSED'
)
AND EXISTS
(
SELECT 'ASN outstanding'
FROM rcv_shipment_lines rsl
WHERE rsl.po_line_location_id = poll.line_location_id
AND NVL(rsl.quantity_shipped, 0) > NVL(rsl.quantity_received, 0)
AND NVL(rsl.asn_line_flag, 'N') = 'Y'
AND NVL(rsl.shipment_line_status_code, 'EXPECTED') <> 'CANCELLED'
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, DECODE(p_document_type, g_document_type_RELEASE, 0, pol.line_num)
, poll.shipment_num
, 0
, p_sequence + ROWNUM
, substr(
DECODE(p_document_type, g_document_type_RELEASE,
g_shipmsg || g_delim || poll.shipment_num || g_delim
|| PO_CORE_S.get_translated_text('PO_CAN_POLL_REC_NOT_DEL'
, 'QTY2', round(NVL(poll.quantity_received, 0),5) /* Bug:13427569 rounded to 5 digits */
, 'QTY1', round(sum(NVL(pod.quantity_delivered, 0)),5) /* Bug:13427569 rounded to 5 digits */
),
g_linemsg || g_delim || pol.line_num || g_delim || g_shipmsg || g_delim
|| poll.shipment_num || g_delim
|| PO_CORE_S.get_translated_text('PO_CAN_POLL_REC_NOT_DEL'
, 'QTY2', round(NVL(poll.quantity_received, 0),5) /* Bug:13427569 rounded to 5 digits */
, 'QTY1', round(sum(NVL(pod.quantity_delivered, 0)),5) /* Bug:13427569 rounded to 5 digits */
)
), 1, 240)
, 'PO_CAN_POLL_REC_NOT_DEL'
FROM po_lines_gt pol, po_line_locations_gt poll, po_distributions_gt pod
WHERE pod.line_location_id = poll.line_location_id
AND pol.po_line_id = poll.po_line_id
AND pol.order_type_lookup_code NOT IN ('RATE', 'FIXED PRICE')
AND NVL(poll.cancel_flag, 'N') = 'N'
AND NVL(poll.closed_code, 'OPEN') <> 'FINALLY CLOSED'
AND round(NVL(poll.quantity_received, 0),5) > /* Bug:13427569 rounded to 5 digits */
(
SELECT round(sum(NVL(pod2.quantity_delivered, 0)),5) /* Bug:13427569 rounded to 5 digits */
FROM po_distributions_gt pod2
WHERE pod2.line_location_id = poll.line_location_id
)
GROUP BY pol.line_num
, poll.shipment_num
, NVL(poll.quantity_received, 0)
, ROWNUM --
;
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, DECODE(p_document_type, g_document_type_RELEASE, 0, pol.line_num)
, poll.shipment_num
, 0
, p_sequence + ROWNUM
, substr(
DECODE(p_document_type, g_document_type_RELEASE,
g_shipmsg || g_delim || poll.shipment_num || g_delim
|| PO_CORE_S.get_translated_text('PO_CAN_POLL_AMT_REC_NOT_DEL'
, 'QTY2', NVL(poll.amount_received, 0)
, 'QTY1', sum(NVL(pod.amount_delivered, 0))
),
g_linemsg || g_delim || pol.line_num || g_delim || g_shipmsg || g_delim
|| poll.shipment_num || g_delim
|| PO_CORE_S.get_translated_text('PO_CAN_POLL_AMT_REC_NOT_DEL'
, 'QTY2', NVL(poll.amount_received, 0)
, 'QTY1', sum(NVL(pod.amount_delivered, 0))
)
), 1, 240)
, 'PO_CAN_POLL_AMT_REC_NOT_DEL'
FROM po_lines_gt pol, po_line_locations_gt poll, po_distributions_gt pod
WHERE pod.line_location_id = poll.line_location_id
AND pol.po_line_id = poll.po_line_id
AND pol.order_type_lookup_code IN ('RATE', 'FIXED PRICE')
AND NVL(poll.cancel_flag, 'N') = 'N'
AND NVL(poll.closed_code, 'OPEN') <> 'FINALLY CLOSED'
AND NVL(poll.amount_received, 0) >
(
SELECT sum(NVL(pod2.amount_delivered, 0))
FROM po_distributions_gt pod2
WHERE pod2.line_location_id = poll.line_location_id
)
GROUP BY pol.line_num
, poll.shipment_num
, NVL(poll.amount_received, 0)
, ROWNUM --
;
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, DECODE(p_document_type, g_document_type_RELEASE, 0, pol.line_num)
, poll.shipment_num
, pod.distribution_num
, p_sequence + ROWNUM
, substr(
DECODE(p_document_type, g_document_type_RELEASE,
g_shipmsg || g_delim || poll.shipment_num || g_delim || g_distmsg || g_delim || l_textline
, g_linemsg || g_delim || pol.line_num || g_delim || g_shipmsg || g_delim
|| poll.shipment_num || g_delim || g_distmsg || g_delim || l_textline
), 1, 240)
, 'PO_CAN_POLL_INVALID_ACCT_FLEX'
FROM po_lines_gt pol, po_line_locations_gt poll
, po_distributions_gt pod, gl_code_combinations gcc
WHERE pod.line_location_id = poll.line_location_id
AND pol.po_line_id = poll.po_line_id
AND poll.shipment_type IN ('STANDARD', 'PLANNED', 'PREPAYMENT') --
AND NVL(poll.closed_code, 'OPEN') <> 'FINALLY CLOSED'
AND ( NVL(poll.cancel_flag, 'N') = 'N' OR p_action_requested = g_action_FINAL_CLOSE_CHECK)
AND gcc.code_combination_id = pod.code_combination_id
AND NVL(p_action_date, trunc(SYSDATE)) NOT BETWEEN
NVL(gcc.start_date_active, NVL(p_action_date, trunc(SYSDATE) - 1))
AND
NVL(gcc.end_date_active, NVL(p_action_date, trunc(SYSDATE) + 1));
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, pol.line_num
, 0
, 0
, p_sequence + ROWNUM
, substr(g_linemsg || g_delim || pol.line_num || g_delim || l_textline,1,240) --Bug5096900
, 'PO_CAN_POL_PLAN_WITH_OPEN_REL'
FROM po_lines_gt pol
WHERE EXISTS
(
SELECT 'Uncancelled Open Releases Exist'
FROM po_line_locations pll
WHERE pll.po_line_id = pol.po_line_id
AND pll.shipment_type = 'BLANKET'
AND NVL(pll.cancel_flag, 'N') = 'N'
AND NVL(pll.closed_code, 'OPEN') <> 'FINALLY CLOSED'
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, pol.line_num
, 0
, 0
, p_sequence + ROWNUM
, substr(g_linemsg || g_delim || pol.line_num || g_delim || l_textline,1,240) --Bug5096900
, 'PO_CAN_GAL_WITH_OPEN_STD_REF'
FROM po_lines_gt pol
WHERE EXISTS
(
SELECT 'Uncancelled Std PO lines referencing this GA line exist'
FROM po_lines_all pol2
WHERE pol2.from_line_id = pol.po_line_id
AND NVL(pol2.cancel_flag, 'N') = 'N'
AND NVL(pol2.closed_code, 'OPEN') <> 'FINALLY CLOSED'
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, 0
, 0
, 0
, p_sequence + ROWNUM
, substr(l_textline,1,240) --Bug5096900
, 'PO_CAN_CGA_WITH_OPEN_STD_REF'
FROM po_headers_gt poh
WHERE EXISTS
(
SELECT 'Open Std PO lines referencing this contract exist'
FROM po_lines_all pol
WHERE pol.contract_id = poh.po_header_id
AND NVL(pol.cancel_flag, 'N') = 'N'
AND NVL(pol.closed_code, 'OPEN') <> 'FINALLY CLOSED'
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, pol.line_num
, poll.shipment_num
, 0
, p_sequence + ROWNUM
, substr(g_linemsg || g_delim || pol.line_num || g_delim || g_shipmsg
|| poll.shipment_num || g_delim || l_textline,1,240) --Bug5096900
, 'PO_CAN_POLL_PLAN_WITH_OPEN_REL'
FROM po_lines_gt pol, po_line_locations_gt poll
WHERE poll.po_line_id = pol.po_line_id
AND NVL(poll.cancel_flag, 'N') = 'N'
AND NVL(poll.closed_code, 'OPEN') <> 'FINALLY CLOSED'
AND EXISTS
(
SELECT 'Uncancelled Open Releases Exist'
FROM po_line_locations poll2
WHERE poll2.source_shipment_id = poll.line_location_id
AND poll2.shipment_type = 'SCHEDULED'
AND NVL(poll2.cancel_flag, 'N') = 'N'
AND NVL(poll2.closed_code, 'OPEN') <> 'FINALLY CLOSED'
);
SELECT
POL.line_num
, POL.quantity
, POL.amount --
, sum( PLL.quantity - nvl(PLL.quantity_cancelled,0) ) --
, sum( PLL.amount - nvl(PLL.amount_cancelled,0) ) --
BULK COLLECT INTO
l_line_num
, l_line_qty_tbl --
, l_line_amt_tbl --
, l_lineloc_qty_tbl --
, l_lineloc_amt_tbl --
FROM
PO_LINE_LOCATIONS_GT PLL
, PO_LINES_GT POL
WHERE
POL.po_line_id = PLL.po_line_id
AND PLL.shipment_type in ('STANDARD', 'PLANNED')
AND POL.po_header_id = p_document_id
AND nvl(POL.cancel_flag,'N') = 'N'
AND nvl(POL.closed_code,'OPEN') <> 'FINALLY CLOSED'
AND (
( ( POL.quantity IS NOT NULL ) --
AND ( round(POL.quantity, 10) <>
(SELECT round(sum(PLL2.quantity) -
sum(nvl(PLL2.quantity_cancelled, 0)), 10)
FROM PO_LINE_LOCATIONS_GT PLL2
WHERE PLL2.po_line_id = POL.po_line_id AND
PLL2.shipment_type in ('STANDARD', 'PLANNED') ) )
)
OR --
( ( POL.amount IS NOT NULL )
AND ( round(POL.amount, 10) <>
( SELECT round ( sum ( PLL3.amount
- nvl(PLL3.amount_cancelled, 0) )
, 10
)
FROM po_line_locations_gt PLL3
WHERE PLL3.po_line_id = POL.po_line_id
AND PLL3.shipment_type IN ('STANDARD','PLANNED')
)
)
)
)
GROUP BY
POL.line_num
, POL.quantity
, POL.amount; --
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
VALUES(p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
l_line_num(i),
NULL, --
NULL, --
x_sequence+ l_rowCount(i),
decode ( l_line_qty_tbl(i) --
, NULL , PO_CORE_S.get_translated_text
( 'PO_SUB_PO_LINE_NE_SHIP_AMT'
, 'LINE_NUM', l_line_num(i)
, 'LINE_AMT', l_line_amt_tbl(i)
, 'SHIP_AMT', l_lineloc_amt_tbl(i)
)
, PO_CORE_S.get_translated_text
( 'PO_SUB_PO_LINE_NE_SHIP_QTY'
, 'LINE_NUM', l_line_num(i)
, 'LINE_QTY', l_line_qty_tbl(i)
, 'SHIP_QTY', l_lineloc_qty_tbl(i)
)
),
decode ( l_line_qty_tbl(i) --
, NULL , 'PO_SUB_PO_LINE_NE_SHIP_AMT'
, 'PO_SUB_PO_LINE_NE_SHIP_QTY'
)
);
SELECT poh.currency_code
INTO l_currency_code
FROM po_headers_all poh
WHERE poh.po_header_id = p_document_id;
SELECT
subtotal.line_num
, subtotal.line_amount
, subtotal.line_loc_amount
, subtotal.financing_advance_amount
BULK COLLECT INTO
l_line_num
, l_line_amt_tbl
, l_lineloc_amt_tbl
, l_fin_adv_amount
FROM
( SELECT
POL.line_num
, CASE
WHEN ( POL.order_type_lookup_code = 'FIXED PRICE'
OR POL.order_type_lookup_code = 'RATE')
THEN
--Revert Bug # 13840480 (FP of 13833174): Rounding amount at line level to make in synch with
--to make in synch with amount at distribution level.
POL.amount
ELSE
CASE
WHEN l_min_acct_unit IS NOT NULL THEN
-- Round to minimum accountable unit.
ROUND(
NVL(POL.quantity * POL.unit_price,0) / l_min_acct_unit
) * l_min_acct_unit
ELSE
-- Round to currency precision.
ROUND(NVL(POL.quantity * POL.unit_price,0), l_precision)
END
END line_amount
--Revert Block Modified for bug 10041694 starts
, SUM (CASE
WHEN ( PLL.value_basis = 'FIXED PRICE'
OR PLL.value_basis = 'RATE')
THEN
PLL.amount - NVL(PLL.amount_cancelled, 0)
ELSE
CASE
WHEN l_min_acct_unit IS NOT NULL THEN
-- Round to minimum accountable unit.
ROUND(
((PLL.quantity-NVL(PLL.quantity_cancelled,0)) * PLL.price_override) / l_min_acct_unit
) * l_min_acct_unit
ELSE
-- Round to currency precision.
ROUND((PLL.quantity-NVL(PLL.quantity_cancelled,0)) * PLL.price_override, l_precision)
END
END ) line_loc_amount
--Revert Block Modified for bug 10041694 ends
, SUM (CASE
WHEN PLL.payment_type = 'ADVANCE' THEN
PLL.amount
END) financing_advance_amount
FROM
PO_LINE_LOCATIONS_GT PLL
, PO_LINES_GT POL
WHERE
POL.po_line_id = PLL.po_line_id
AND ( (l_is_financing_flag = 'N' AND PLL.shipment_type = 'STANDARD')
OR (l_is_financing_flag = 'Y' and PLL.shipment_type = 'PREPAYMENT'))
AND POL.po_header_id = p_document_id
AND nvl(POL.cancel_flag,'N') = 'N'
AND nvl(POL.closed_code,'OPEN') <> 'FINALLY CLOSED'
-- AND nvl(payment_type, 'NULL') <> 'ADVANCE' --Bug 5440038
GROUP BY POL.line_num, POL.order_type_lookup_code, POL.amount, POL.quantity, POL.unit_price
) subtotal
WHERE
( (l_is_financing_flag = 'Y' AND NOT (subtotal.line_amount >= subtotal.line_loc_amount))
OR
(l_is_financing_flag = 'N' AND NOT (subtotal.line_amount = subtotal.line_loc_amount))
);
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name)
VALUES(p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
l_line_num(i),
NULL,
NULL,
x_sequence+ l_rowCount(i),
decode ( l_fin_adv_amount(i),
NULL,
PO_CORE_S.get_translated_text
( 'PO_SUB_PAY_ITEM_NE_LINE_AMT'
, 'LINE_NUM', l_line_num(i)
, 'PAY_ITEM_AMT', l_lineloc_amt_tbl(i)
, 'LINE_AMT', l_line_amt_tbl(i)
),
PO_CORE_S.get_translated_text
( 'PO_SUB_PRE_PAY_GE_LINE_AMT'
, 'LINE_NUM', l_line_num(i)
, 'PAY_ITEM_AMT', (l_lineloc_amt_tbl(i)-l_fin_adv_amount(i) )
, 'ADV_AMT', l_fin_adv_amount(i)
, 'LINE_AMT', l_line_amt_tbl(i)
)
),
decode ( l_fin_adv_amount(i),
NULL, 'PO_SUB_PAY_ITEM_NE_LINE_AMT'
, 'PO_SUB_PRE_PAY_GE_LINE_AMT'
)
);
SELECT draft_id
INTO l_draft_id
FROM po_headers_gt
WHERE po_header_id = p_document_id;
SELECT draft_type
INTO l_draft_type
FROM po_drafts
WHERE draft_id = l_draft_id;
SELECT
POL.line_num
, PLL.shipment_num
, PLL.quantity
, PLL.amount --
, sum( nvl(POD.quantity_ordered,0) - nvl(POD.quantity_cancelled,0) )
, sum( nvl(POD.amount_ordered,0) - nvl(POD.amount_cancelled,0) )
, pol.po_line_id --bug 16474947
BULK COLLECT INTO
l_line_num
, l_shipment_num
, l_lineloc_qty_tbl
, l_lineloc_amt_tbl
, l_dist_qty_tbl
, l_dist_amt_tbl
, l_line_id_tbl -- bug 16474947
FROM PO_DISTRIBUTIONS_GT POD,PO_LINE_LOCATIONS_GT PLL, PO_LINES_GT POL
WHERE PLL.po_line_id = POL.po_line_id
AND POD.line_location_id = PLL.line_location_id
AND PLL.po_header_id = p_document_id
AND nvl(PLL.cancel_flag,'N') = 'N'
AND nvl(PLL.closed_code,'OPEN') <> 'FINALLY CLOSED'
AND PLL.shipment_type in ('STANDARD', 'PLANNED', 'PREPAYMENT') --
GROUP BY
POL.line_num
, PLL.shipment_num
, PLL.quantity
, PLL.amount --
, PLL.amount_cancelled
, PLL.quantity_cancelled
, PLL.shipment_type --
, pol.po_line_id --bug 16474947
HAVING
((p_clm_document <> 'Y' AND
decode ( PLL.quantity --
, NULL , abs ( ( PLL.amount - nvl(PLL.amount_cancelled,0) )
- sum( POD.amount_ordered - nvl(POD.amount_cancelled,0) ) )
, abs ( ( PLL.quantity - nvl(PLL.quantity_cancelled,0) )
- sum( POD.quantity_ordered - nvl(POD.quantity_cancelled,0) ) )
) > .00001)
OR
( p_clm_document = 'Y'
AND l_draft_type = 'PAR'
AND Decode (pll.quantity --
, NULL, Abs (( pll.amount - Nvl(pll.amount_cancelled, 0) ) - SUM(
pod.amount_ordered -
Nvl(pod.amount_cancelled, 0))),
Abs (( pll.quantity - Nvl(pll.quantity_cancelled, 0) ) - SUM(
pod.quantity_ordered - Nvl(pod.quantity_cancelled, 0)))) >
.00001 )-- PAR Project
OR
(p_clm_document = 'Y' AND
decode ( PLL.quantity --
, NULL , ( PLL.amount - nvl(PLL.amount_cancelled,0) )
- sum( POD.amount_ordered - nvl(POD.amount_cancelled,0) )
, ( PLL.quantity - nvl(PLL.quantity_cancelled,0) )
- sum( POD.quantity_ordered - nvl(POD.quantity_cancelled,0) )
) < 0)
);
INSERT INTO po_online_report_text_gt (online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type)
SELECT
p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
l_line_num(i),
l_shipment_num(i),
NULL, --
x_sequence+l_rowCount(i),
decode ( l_lineloc_qty_tbl(i)
, NULL , PO_CORE_S.get_translated_text
( 'PO_SUB_PO_SHIP_NE_DIST_AMT'
, 'LINE_NUM', l_line_num(i)
, 'SHIP_NUM', l_shipment_num(i)
, 'SHIP_AMT', l_lineloc_amt_tbl(i)
, 'DIST_AMT', l_dist_amt_tbl(i)
)
, PO_CORE_S.get_translated_text
( 'PO_SUB_PO_SHIP_NE_DIST_QTY'
, 'LINE_NUM', l_line_num(i)
, 'SHIP_NUM', l_shipment_num(i)
, 'SHIP_QTY', l_lineloc_qty_tbl(i)
, 'DIST_QTY', l_dist_qty_tbl(i)
)
),
decode ( l_lineloc_qty_tbl(i)
, NULL , 'PO_SUB_PO_SHIP_NE_DIST_AMT'
, 'PO_SUB_PO_SHIP_NE_DIST_QTY'
),
Decode(l_draft_type,'PAR','W',NULL) --WARNING FOR PAR and ERROR FOR OTHERS
FROM DUAL --bug 16474947
WHERE
( (l_draft_type <> 'PAR') OR
(l_draft_type = 'PAR' AND NOT EXISTS (SELECT 1 FROM po_lines_draft_all WHERE po_line_id = l_line_id_tbl(i)
AND draft_id = l_draft_id AND change_status = 'NEW'))
);
FUNCTION is_pay_item_price_updateable (
p_line_location_id IN NUMBER
, p_add_reasons_to_msg_list IN VARCHAR2)
RETURN BOOLEAN
IS
d_module VARCHAR(70) :=
'po.plsql.PO_DOCUMENT_CHECKS_PVT.is_pay_item_price_updateable';
l_is_price_updateable BOOLEAN;
l_is_price_updateable := TRUE;
SELECT NVL(pll.quantity_received, 0)
, NVL(pll.quantity_billed, 0)
, NVL(pll.quantity_financed, 0)
INTO l_quantity_received
, l_quantity_billed
, l_quantity_financed
FROM po_line_locations_all pll
WHERE line_location_id = p_line_location_id;
l_is_price_updateable := FALSE;
PO_LOG.proc_return(d_module, l_is_price_updateable);
RETURN(l_is_price_updateable);
END is_pay_item_price_updateable;
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, null -- lines
, null -- shipments
, null -- distribution_num
, p_sequence + ROWNUM
, substr(l_textline, 1, 240)
, l_message_name
FROM po_headers_gt poh
WHERE poh.po_header_id = p_doc_level_id
AND chk_unv_invoices(l_invoice_type, poh.po_header_id, NULL, NULL,NULL, NULL, p_origin_doc_id, l_calling_sequence) = 1;
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, line_num -- lines
, null -- shipments
, null -- distribution_num
, p_sequence + ROWNUM
, substr(l_textline, 1, 240)
, l_message_name
FROM po_lines_gt pol
WHERE pol.po_line_id=p_doc_level_id
AND chk_unv_invoices(l_invoice_type, pol.po_header_id, NULL, pol.po_line_id,NULL, NULL, p_origin_doc_id, 'CHECK_PO_LINE_FINAL_CLOSE') = 1;
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, null -- lines
, null -- shipments
, null -- distribution_num
, p_sequence + ROWNUM
, substr(l_textline, 1, 240)
, l_message_name
FROM po_releases_gt por
WHERE por.po_release_id=p_doc_level_id
AND chk_unv_invoices(l_invoice_type, por.po_header_id, por.po_release_id, NULL,NULL, NULL, p_origin_doc_id, l_calling_sequence) = 1;
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, null -- lines
, shipment_num -- shipments
, null -- distribution_num
, p_sequence + ROWNUM
, substr(l_textline, 1, 240)
, l_message_name
FROM po_line_locations_gt poll
WHERE poll.line_location_id=p_doc_level_id
AND chk_unv_invoices(l_invoice_type, poll.po_header_id, poll.po_release_id, NULL,poll.line_location_id, NULL, p_origin_doc_id, l_calling_sequence) = 1;
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, null -- lines
, null -- shipments
, distribution_num
, p_sequence + ROWNUM
, substr(l_textline, 1, 240)
, l_message_name
FROM po_distributions_gt pod
WHERE pod.po_distribution_id=p_doc_level_id
AND chk_unv_invoices(l_invoice_type, pod.po_header_id, pod.po_release_id, NULL,NULL, pod.po_distribution_id, p_origin_doc_id, l_calling_sequence) = 1;
SELECT po_header_id
INTO l_document_id
FROM po_lines_gt
WHERE po_line_id=p_doc_level_id;
SELECT po_header_id
INTO l_document_id
FROM po_line_locations_gt
WHERE line_location_id=p_doc_level_id;
SELECT po_header_id
INTO l_document_id
FROM po_distributions_gt
WHERE po_distribution_id=p_doc_level_id;
SELECT poh.vendor_id,
poh.vendor_site_id,
pol.item_id,
poll.ship_to_organization_id,
poll.consigned_flag,
poll.outsourced_assembly,
poll.line_location_id
INTO l_vendor_id,
l_vendor_site_id,
l_inventory_item_id,
l_ship_to_organization_id,
l_consigned_flag,
l_outsourced_assembly,
l_line_location_id
FROM po_line_locations_all poll,
po_lines_all pol,
po_headers_all poh
WHERE poh.po_header_id = pol.po_header_id
AND pol.po_line_id = poll.po_line_id
AND poll.line_location_id = p_line_location_id;
UPDATE po_line_locations_gt
SET lcm_flag = 'Y'
WHERE line_location_id = p_line_location_id
and lcm_flag is null;
UPDATE po_distributions_gt
SET lcm_flag = 'Y'
WHERE line_location_id = p_line_location_id
and lcm_flag is null;
UPDATE po_line_locations_all
SET lcm_flag = 'Y'
WHERE line_location_id = p_line_location_id;
UPDATE po_distributions_all
SET lcm_flag = 'Y'
WHERE line_location_id = p_line_location_id;
UPDATE po_line_locations_all
SET lcm_flag = null
WHERE line_location_id = p_line_location_id
AND lcm_flag = 'Y';
UPDATE po_distributions_all
SET lcm_flag = null
WHERE line_location_id = p_line_location_id
AND lcm_flag = 'Y';
SELECT PHA.VENDOR_SITE_ID
INTO l_vendor_site_id
FROM PO_HEADERS_ALL PHA
WHERE PHA.PO_HEADER_ID = p_header_id;
SELECT PHA.VENDOR_SITE_ID
INTO l_vendor_site_id
FROM PO_HEADERS_DRAFT_ALL PHA
WHERE PHA.PO_HEADER_ID = p_header_id AND PHA.draft_id = p_draft_id;
SELECT PVSA.DEBARMENT_START_DATE, PVSA.DEBARMENT_END_DATE
INTO l_debar_start_date, l_debar_end_date
FROM PO_VENDOR_SITES_ALL PVSA
WHERE PVSA.VENDOR_SITE_ID =l_vendor_site_id;
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, sequence
, text_line
, message_name
, message_type
)
VALUES(
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, p_sequence
, FND_MESSAGE.GET_STRING('PO', 'PO_SUPPLIER_DEBAR_WARN')
, 'PO_SUPPLIER_DEBAR_WARN'
, 'W');
PO_DEBUG.debug_var(l_log_head,l_progress,'p_sequence', 'inserted');
PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey, l_log_head);
PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey, l_log_head||'p_draft_id'|| p_draft_id);
PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey, l_log_head||'p_header_id'|| p_header_id);
PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey, l_log_head||'p_contracting_officer'|| p_contracting_officer);
PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey, l_log_head||'p_online_report_id'|| p_online_report_id);
PO_WF_DEBUG_PKG.insert_debug( itemtype, itemkey,l_log_head||'p_sequence'|| p_sequence);
SELECT PO_ONLINE_REPORT_TEXT_S.nextval
INTO p_online_report_id
FROM sys.dual;
SELECT Nvl(Max(SEQUENCE), 0)
INTO p_sequence
FROM po_online_report_text_gt
WHERE online_report_id = p_online_report_id;
select 'Y'
into l_valid_co
from PO_BUYERS_VAL_V POB
where pob.employee_id = p_contracting_officer;
INSERT INTO po_online_report_text_gt(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
sequence,
text_line,
message_name
, message_type
)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
p_sequence,
substr(FND_MESSAGE.GET_STRING('PO', 'PO_CO_INACTIVE'),1,240),
'PO_BUYER_INACTIVE',
'E'
FROM dual;
PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,l_log_head || 'Contracting Officer is not valid');
SELECT ORG_ID
INTO l_org_id
FROM PO_HEADERS_MERGE_V
WHERE PO_HEADER_ID = p_header_id
AND DRAFT_ID = p_draft_id;
PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,l_log_head || 'Contracting Officer signature is not required');
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, sequence
, text_line
, message_name
, message_type
)
VALUES(
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, p_sequence
, FND_MESSAGE.GET_STRING('PO', 'PO_CO_IS_NULL')
, 'PO_CO_IS_NULL'
, 'E');
PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,l_log_head || 'Contracting officer is NULL');
SELECT 'Y'
INTO l_warrant_enabled_flag
FROM po_doc_style_headers pdsh,
po_headers_all pha
WHERE pha.po_header_id = p_header_id
AND pha.style_id = pdsh.style_id
AND pdsh.warrant_type is not NULL;
PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,l_log_head || 'Warrant enabled for the style');
SELECT nvl(pwl.warrant_amount, 0), puw.warrant_currency, phm.currency_code,
phm.type_lookup_code, phm.rate
INTO l_warrant_amount, l_warrant_currency, l_doc_currency,
l_type_lookup_code, l_rate
FROM po_warrant_lines pwl,
po_user_warrants puw,
po_doc_style_headers pdsh,
po_agents pa,
po_headers_all phm
WHERE phm.po_header_id = p_header_id
AND phm.style_id = pdsh.style_id
AND p_contracting_officer = pa.agent_id
AND pa.warrant_id = puw.warrant_id
AND puw.warrant_status = 'A'
AND pwl.warrant_id = pa.warrant_id
AND pwl.type_lookup_code = phm.type_lookup_code
AND pwl.clm_award_type = phm.clm_award_type
AND pwl.warrant_type_code = pdsh.warrant_type;
SELECT nvl(pwl.warrant_amount, 0), puw.warrant_currency, phm.currency_code,
phm.type_lookup_code, phm.rate
INTO l_warrant_amount, l_warrant_currency, l_doc_currency,
l_type_lookup_code, l_rate
FROM po_warrant_lines pwl,
po_user_warrants puw,
po_doc_style_headers pdsh,
po_agents pa,
po_headers_all phm
WHERE phm.po_header_id = p_header_id
AND phm.style_id = pdsh.style_id
AND p_contracting_officer = pa.agent_id
AND pa.warrant_id = puw.warrant_id
AND puw.warrant_status = 'A'
AND pwl.warrant_id = pa.warrant_id
AND pwl.type_lookup_code = phm.type_lookup_code
AND pwl.clm_award_type = 'ALL'
AND pwl.warrant_type_code = pdsh.warrant_type;
PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,l_log_head || 'Warrant found');
PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,l_log_head || 'l_doc_currency '||l_doc_currency);
PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,l_log_head || 'l_warrant_currency '||l_warrant_currency);
PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,l_log_head || 'l_doc_amount '||l_doc_amount);
SELECT nvl(BLANKET_TOTAL_AMOUNT, 0)
INTO l_doc_amount
FROM po_headers_all phm
WHERE phm.po_header_id = p_header_id;
SELECT nvl(BLANKET_TOTAL_AMOUNT, 0)
INTO l_doc_amount
FROM po_headers_draft_all phm
WHERE phm.po_header_id = p_header_id
AND phm.draft_id = p_draft_id;
PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,l_log_head || 'l_doc_currency '||l_doc_currency);
PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,l_log_head || 'l_doc_amount '||l_doc_amount);
PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,l_log_head || 'l_warrant_currency '||l_warrant_currency);
PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,l_log_head || 'l_doc_amount '||l_doc_amount);
PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,l_log_head || 'Warrant not found for the doc currency');
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, sequence
, text_line
, message_name
, message_type
)
VALUES(
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, p_sequence
, FND_MESSAGE.GET_STRING('PO', 'PO_WARRANT_NOT_FOUND_CURR')
, 'PO_WARRANT_NOT_FOUND_CURR'
, 'E');
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, sequence
, text_line
, message_name
, message_type
)
VALUES(
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, p_sequence
, FND_MESSAGE.GET_STRING('PO', 'PO_WARRANT_NOT_ENOUGH')
, 'PO_WARRANT_NOT_ENOUGH'
, 'E');
PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,l_log_head || 'Warrant amount less then document amount');
PO_WF_DEBUG_PKG.insert_debug(itemtype, itemkey,l_log_head || 'Warrant not found');
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, sequence
, text_line
, message_name
, message_type
)
VALUES(
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, p_sequence
, FND_MESSAGE.GET_STRING('PO', 'PO_WARRANT_NOT_FOUND')
, 'PO_WARRANT_NOT_FOUND'
, 'E');
mod_last_update_date PO_DRAFTS.last_update_date%type;
SELECT cd_generated_flag, concurrent_reqid
INTO changedesc_gen_flag, concurrent_request_id
FROM PO_DRAFTS
WHERE DRAFT_ID = p_draft_id;
SELECT cd_generated_date, cd_editbyuser_flag
INTO changedesc_gen_date, changedesc_edit_flag
FROM po_drafts
WHERE draft_id = p_draft_id;
mod_last_update_date := PO_CORE_S.get_last_update_date_for_mod(p_draft_id);
PO_DEBUG.debug_var(l_log_head,l_progress,'mod_last_update_date', mod_last_update_date);
IF( mod_last_update_date > changedesc_gen_date) THEN
msg_type :='W';
SELECT Count(*)
INTO l_isCompletedCount
FROM fnd_concurrent_requests
WHERE request_id = To_Number(concurrent_request_id)
AND phase_code = 'C'
AND status_code = 'C';
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, sequence
, text_line
, message_name
, message_type
)
VALUES(
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, p_sequence
, l_err_msg_txt
, msg_name
, msg_type);
PO_DEBUG.debug_var(l_log_head,l_progress,'p_sequence', 'inserted');
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, sequence
, text_line
, message_name
, message_type
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, p_sequence + ROWNUM
, substr(l_textline,1,240)
, PO_MESSAGE_S.PO_ALL_ENTER_PERCENT
, 'E'
FROM PO_HEADERS_GT POH
WHERE POH.po_header_id = p_header_id
AND (POH.clm_min_guar_award_amt_percent > 100
OR POH.clm_min_guar_award_amt_percent < 0);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, sequence
, text_line
, message_name
, message_type
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, p_sequence + ROWNUM
, substr(l_textline,1,240)
, 'PO_IDV_MX_CL_AMT_GT_MXPM_CLM'
, 'E'
FROM PO_HEADERS_GT POH
WHERE POH.po_header_id = p_header_id
AND POH.amount_limit < POH.clm_max_order_amount;
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, sequence
, text_line
, message_name
, message_type
)
SELECT
p_online_report_id
, p_login_id
, p_user_id
, SYSDATE
, p_user_id
, SYSDATE
, p_sequence + ROWNUM
,
CASE
WHEN (POH.clm_max_order_amount is not null and POL.clm_max_order_amount is not NULL)
THEN substr(FND_MESSAGE.GET_STRING('PO', 'PO_IDV_MX_AMT_H_GT_MX_AMT_L'), 1, 240)
WHEN (POH.clm_max_order_amount is not null and POL.clm_max_order_amount is NULL)
THEN substr(FND_MESSAGE.GET_STRING('PO', 'PO_IDV_MX_AMT_H_GT_MN_AMT_L'), 1, 240)
WHEN (POH.clm_max_order_amount is null and POL.clm_max_order_amount is not NULL)
THEN substr(FND_MESSAGE.GET_STRING('PO', 'PO_IDV_MXPM_H_GT_MX_AMT_L'), 1, 240)
WHEN (POH.clm_max_order_amount is null and POL.clm_max_order_amount is NULL)
THEN substr(FND_MESSAGE.GET_STRING('PO', 'PO_IDV_MXPM_H_GT_MN_AMT_L'), 1, 240)
END,
CASE
WHEN (POH.clm_max_order_amount is not null and POL.clm_max_order_amount is not NULL)
THEN 'PO_IDV_MX_AMT_H_GT_MX_AMT_L'
WHEN (POH.clm_max_order_amount is not null and POL.clm_max_order_amount is NULL)
THEN 'PO_IDV_MX_AMT_H_GT_MN_AMT_L'
WHEN (POH.clm_max_order_amount is null and POL.clm_max_order_amount is not NULL)
THEN 'PO_IDV_MXPM_H_GT_MX_AMT_L'
WHEN (POH.clm_max_order_amount is null and POL.clm_max_order_amount is NULL)
THEN 'PO_IDV_MXPM_H_GT_MN_AMT_L'
END
, 'E'
FROM PO_HEADERS_GT POH, PO_LINES_GT POL
WHERE POH.po_header_id = p_header_id
AND POH.po_header_id = POL.po_header_id
AND nvl(POH.clm_max_order_amount, POH.amount_limit) < nvl(POL.clm_max_order_amount, POL.clm_min_order_amount);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
(ONLINE_REPORT_ID,
LAST_UPDATE_LOGIN,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
CREATED_BY,
CREATION_DATE,
LINE_NUM,
SHIPMENT_NUM,
DISTRIBUTION_NUM,
SEQUENCE,
TEXT_LINE,
MESSAGE_NAME)
SELECT P_ONLINE_REPORT_ID,
P_LOGIN_ID,
P_USER_ID,
SYSDATE,
P_USER_ID,
SYSDATE,
POL.LINE_NUM,
PLL.SHIPMENT_NUM,
POD.DISTRIBUTION_NUM,
P_SEQUENCE + ROWNUM,
SUBSTR(g_linemsg||g_delim||POL.line_num_display||g_delim
||g_shipmsg||g_delim||PLL.shipment_num||g_delim||g_distmsg||g_delim||POD.DISTRIBUTION_NUM||g_delim||L_TEXTLINE,1,240),
'PO_CHARGE_NOT_NULL'
FROM
PO_DISTRIBUTIONS_GT POD,
PO_LINE_LOCATIONS_GT PLL,
PO_LINES_GT POL
WHERE POD.CODE_COMBINATION_ID IS NULL
AND POD.PO_HEADER_ID = P_DOCUMENT_ID
AND NVL(POD.DISTRIBUTION_TYPE, 'STANDARD') <> 'AGREEMENT'
AND POD.LINE_LOCATION_ID = PLL.LINE_LOCATION_ID
AND PLL.PO_LINE_ID = POL.PO_LINE_ID;
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
(ONLINE_REPORT_ID,
LAST_UPDATE_LOGIN,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
CREATED_BY,
CREATION_DATE,
LINE_NUM,
SHIPMENT_NUM,
DISTRIBUTION_NUM,
SEQUENCE,
TEXT_LINE,
MESSAGE_NAME)
SELECT P_ONLINE_REPORT_ID,
P_LOGIN_ID,
P_USER_ID,
SYSDATE,
P_USER_ID,
SYSDATE,
POL.LINE_NUM,
PLL.SHIPMENT_NUM,
POD.DISTRIBUTION_NUM,
P_SEQUENCE + ROWNUM,
SUBSTR(g_linemsg||g_delim||POL.line_num_display||g_delim
||g_shipmsg||g_delim||PLL.shipment_num||g_delim||g_distmsg||g_delim||POD.DISTRIBUTION_NUM||g_delim||L_TEXTLINE,1,240),
'PO_ALL_NO_BUDGET_FLEX'
FROM
PO_DISTRIBUTIONS_GT POD,
PO_LINE_LOCATIONS_GT PLL,
PO_LINES_GT POL
WHERE POD.BUDGET_ACCOUNT_ID IS NULL
AND POD.PO_HEADER_ID = P_DOCUMENT_ID
AND NVL(POD.DISTRIBUTION_TYPE, 'STANDARD') <> 'AGREEMENT'
AND Nvl(PREVENT_ENCUMBRANCE_FLAG,'N') = 'N'
AND POD.LINE_LOCATION_ID = PLL.LINE_LOCATION_ID
AND PLL.PO_LINE_ID = POL.PO_LINE_ID;
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
(ONLINE_REPORT_ID,
LAST_UPDATE_LOGIN,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
CREATED_BY,
CREATION_DATE,
LINE_NUM,
SHIPMENT_NUM,
DISTRIBUTION_NUM,
SEQUENCE,
TEXT_LINE,
MESSAGE_NAME)
SELECT P_ONLINE_REPORT_ID,
P_LOGIN_ID,
P_USER_ID,
SYSDATE,
P_USER_ID,
SYSDATE,
POL.LINE_NUM,
PLL.SHIPMENT_NUM,
0,
P_SEQUENCE + ROWNUM,
PO_CORE_S.get_translated_text
('PO_LINE_SHIP_UOM_MISMATCH'
, 'LINE_NUM', POL.LINE_NUM
, 'SHIP_NUM', PLL.SHIPMENT_NUM
),
'PO_LINE_SHIP_UOM_MISMATCH'
FROM
PO_LINE_LOCATIONS_ALL PLL,
PO_LINES_ALL POL
WHERE POL.PO_LINE_ID=PLL.PO_LINE_ID
AND NVL(PLL.unit_meas_lookup_code,-1) <> NVL(POL.unit_meas_lookup_code,-1)
AND PLL.PO_RELEASE_ID = P_DOCUMENT_ID;
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
(ONLINE_REPORT_ID,
LAST_UPDATE_LOGIN,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
CREATED_BY,
CREATION_DATE,
LINE_NUM,
SHIPMENT_NUM,
DISTRIBUTION_NUM,
SEQUENCE,
TEXT_LINE,
MESSAGE_NAME)
SELECT P_ONLINE_REPORT_ID,
P_LOGIN_ID,
P_USER_ID,
SYSDATE,
P_USER_ID,
SYSDATE,
POL.LINE_NUM,
PLL.SHIPMENT_NUM,
0,
P_SEQUENCE + ROWNUM,
PO_CORE_S.get_translated_text
('PO_LINE_SHIP_UOM_MISMATCH'
, 'LINE_NUM', POL.LINE_NUM
, 'SHIP_NUM', PLL.SHIPMENT_NUM
),
'PO_LINE_SHIP_UOM_MISMATCH'
FROM
PO_LINE_LOCATIONS_ALL PLL,
PO_LINES_ALL POL
WHERE POL.PO_LINE_ID=PLL.PO_LINE_ID
AND NVL(PLL.unit_meas_lookup_code,-1)<>NVL(POL.unit_meas_lookup_code,-1)
-- bug 12597958 : bypassing check for amount based lines.
AND (PLL.VALUE_BASIS not in ('FIXED PRICE','AMOUNT') -- Bug 12332819 # Do not consider Advance and Fixed Priced Shipments
AND (PLL.PAYMENT_TYPE IS NULL -- Consider Non Complex PO shipments with value basis <> fixed price
OR PLL.PAYMENT_TYPE <>'RATE')) --Bug 12332819 # Do not consider the Rate type Pay items
AND POL.PO_HEADER_ID = P_DOCUMENT_ID ;
SELECT 'Y'
INTO l_is_approved_clm_document
FROM po_headers_gt POH1,
po_headers_all POH,
po_doc_style_headers PDSH
WHERE POH1.po_header_id = p_document_id
AND POH1.po_header_id = POH.po_header_id
AND POH.style_id = PDSH.style_id
AND Nvl(PDSH.clm_flag,'N') = 'Y'
AND (Nvl(POH1.draft_id, -1) <> -1 OR -- Modification
POH1.approved_date IS NOT NULL); -- ReApproval
INSERT INTO po_session_gt
(KEY,num1,char1,char2,char3,char5
)
SELECT l_key,
po_distribution_id,
charge_acc,
clm_misc_loa,
NVL(clm_misc_loa,charge_acc) gen_val,
acrn
FROM
(SELECT pda.po_distribution_id,
glcc.concatenated_segments charge_acc,
pda.clm_misc_loa ,
pda.acrn
FROM po_distributions_merge_v pda,
gl_code_combinations_kfv glcc
WHERE pda.po_header_id = P_DOCUMENT_ID
and pda.draft_id = P_DRAFT_ID
AND pda.code_combination_id = glcc.code_combination_id
);
and will insert them into po_online_report_text_gt to display error message.
Logic of the query is as shown below
Data:
CHARGE_ACC | LOA | ACRN
A B AA
A AA
A D AK
B AB
C D AB
E AA
F A AA
Stage 1 of the query gets data in this format
ACRN | CHARGE/LOA | VALUES
AA CHARGE_ACC A,E
AA LOA B,A
Stage 2 of the query gets the data in this format
ACRN | ERROR_MESSAGE
AA CHARGE_ACC A,E and LOA B,A
These two values will be pased to form the message PO_DUPLICATE_ACRN which
will be inserted into the po_online_report_text_gt
*/
--Extracting the names from the
l_loas := PO_CORE_S.get_translated_text('PO_LOA_DISPLAY');
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
(ONLINE_REPORT_ID,
LAST_UPDATE_LOGIN,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
CREATED_BY,
CREATION_DATE,
SEQUENCE,
TEXT_LINE,
MESSAGE_NAME)
SELECT P_ONLINE_REPORT_ID,
P_LOGIN_ID,
P_USER_ID,
SYSDATE,
P_USER_ID,
SYSDATE,
P_SEQUENCE + ROWNUM,
PO_CORE_S.get_translated_text
( 'PO_DUPLICATE_ACRN'
, 'ACRN', acrn
, 'CHARGE_LOA',ERROR_MESSAGE
),
'PO_DUPLICATE_ACRN'
from
(SELECT Acrn,
error_message
FROM
(SELECT acrn,
MAX(ltrim(sys_connect_by_path(gen_vals,' and '),' and ')) error_message
FROM
(SELECT acrn acrn ,
c_l
|| MAX(ltrim(sys_connect_by_path(gen_value,', '),', ')) gen_vals
FROM
(SELECT char5 acrn,
(
CASE
WHEN char2 IS NOT NULL
THEN l_loas
ELSE l_charge_acc
END ) c_l,
CHAR3 Gen_value
FROM po_session_gt
where KEY = l_key
)
CONNECT BY NOCYCLE prior acrn=acrn
AND prior Gen_value <> Gen_value
AND prior c_l = c_l
GROUP BY acrn,
c_l
HAVING acrn IS NOT NULL
)
CONNECT BY NOCYCLE prior acrn=acrn
AND prior gen_vals <> gen_vals
GROUP BY acrn
)
WHERE
(
instr(error_message,',') <> 0
OR
( instr(error_message,',') = 0
and instr(error_message,'and') <> 0
))
);
will be inserted into the po_online_report_text_gt
*/
INSERT
INTO PO_ONLINE_REPORT_TEXT_GT
(
ONLINE_REPORT_ID,
LAST_UPDATE_LOGIN,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
CREATED_BY,
CREATION_DATE,
SEQUENCE,
TEXT_LINE,
MESSAGE_NAME
)
SELECT P_ONLINE_REPORT_ID,
P_LOGIN_ID,
P_USER_ID,
SYSDATE,
P_USER_ID,
SYSDATE,
P_SEQUENCE + ROWNUM,
PO_CORE_S.get_translated_text ( 'PO_ACRN_CHARGE_ACCOUNT' , 'CHARGE_LOA', c_l , 'ACRNS',ERROR_MESSAGE ),
'PO_ACRN_CHARGE_ACCOUNT'
FROM -- This part of the query takes the o/p from below query, inserts into gt
(SELECT c_l
|| ' '
|| gen_val c_l,
acrns error_message
FROM
(SELECT gen_val,
c_l,
MAX(ltrim(sys_connect_by_path(acrn,', '),', ')) acrns
FROM
(SELECT char3 gen_val,
(
CASE -- case statement to identify whether or not it is a loa
WHEN char2 IS NOT NULL
THEN l_loas
ELSE l_charge_acc
END) c_l,
char5 acrn
FROM po_session_gt
WHERE char5 IS NOT NULL
and KEY = l_key
)-- This part of the sql selects the gen value and identifies it as loa/ca
CONNECT BY NOCYCLE prior gen_val=gen_val
AND prior acrn <> acrn
AND prior c_l = c_l
GROUP BY gen_val,
c_l
)-- This part of the sql joins the result with its previous rows and forms
-- comma seperated values.
WHERE instr(acrns,',') <> 0
);
* p_online_report_id: Id used to INSERT INTO online_report_text table
* p_user_id: User performing the action
* p_login_id: Last update login_id
* IN OUT PARAMETERS
* p_sequence: Sequence number of last reported error
* Modifies: Inserts error msgs in online_report_text_gt table, uses
* global_temp tables for processing
* Effects: This procedure runs the document submission checks for all documents
* Returns:
* p_sequence: This parameter contains the current count of number of error
* messages inserted
-- Updated for bug#15939036
-- Details:
-- Instead of checking the WO invalid state from view WIP_OSP_JOBSVAL_V
-- checking the status from WIP_DISCRETE_JOBS table.Whichever WO is not in
-- status 3,4,6 are treated as invalid WO's.As the validation from view is failing for
-- some flows when WO is created from EAM.Please refer bug for further details.
*/
PROCEDURE CHECK_CLOSE_WIP_JOB(p_document_id IN NUMBER,
p_document_type IN VARCHAR2,
p_online_report_id IN NUMBER,
p_user_id IN NUMBER,
p_login_id IN NUMBER,
p_sequence IN OUT NOCOPY NUMBER,
x_return_status OUT NOCOPY VARCHAR2
) IS
l_progress NUMBER := 0;
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
prl.line_num,
0,
0,
p_sequence+ ROWNUM,
l_text_line||
' on line ' ||
prl.line_num,
'PO_CLOSE_WIP_JOB'
FROM po_req_headers_gt prh,
po_req_lines_gt prl
WHERE prh.requisition_header_id = prl.requisition_header_id
AND nvl(prh.authorization_status,'INCOMPLETE') <> 'APPROVED'
AND nvl(prl.cancel_flag,'N') = 'N'
AND nvl(prl.closed_code,'OPEN') NOT IN ('FINALLY CLOSED' , 'CLOSED')
AND prl.requisition_header_id = p_document_id
AND prl.wip_entity_id IS NOT NULL --Bug 14383315
AND NOT EXISTS (SELECT 'JOB IS VALID'
FROM wip_discrete_jobs wdj
WHERE prl.wip_entity_id = wdj.wip_entity_id
AND wdj.status_type IN (3,4,6)
UNION ALL --Bug 16767247
SELECT 'JOB IS VALID'
FROM wip_repetitive_schedules wdj
WHERE prl.wip_entity_id = wdj.wip_entity_id
AND wdj.status_type IN (3,4,6));
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
0,
pll.shipment_num,
pd.distribution_num,
p_sequence+ ROWNUM,
l_text_line||
' on distribution ' ||
pd.distribution_num ||
' of shipment ' ||
pll.shipment_num,
'PO_CLOSE_WIP_JOB'
FROM po_headers_gt ph,
po_line_locations_gt pll,
po_distributions_gt pd,
po_releases_gt pr
WHERE 1=1
AND ph.po_header_id = pll.po_header_id
AND pll.line_location_id = pd.line_location_id
AND pr.po_release_id (+) = pd.po_release_id
AND nvl(pll.approved_flag,'N') <> 'Y'
AND nvl(pll.cancel_flag,'N') <> 'Y'
AND nvl(pll.closed_code,'OPEN') NOT IN ('FINALLY CLOSED' , 'CLOSED')
AND pr.po_release_id = p_document_id
AND pd.wip_entity_id IS NOT NULL --Bug 14383315
AND NOT EXISTS (SELECT 'JOB IS VALID'
FROM wip_discrete_jobs wdj
WHERE pd.wip_entity_id = wdj.wip_entity_id
AND wdj.status_type IN (3,4,6)
UNION ALL --Bug 16767247
SELECT 'JOB IS VALID'
FROM wip_repetitive_schedules wdj
WHERE pd.wip_entity_id = wdj.wip_entity_id
AND wdj.status_type IN (3,4,6));
INSERT INTO PO_ONLINE_REPORT_TEXT_GT
( online_report_id
, last_update_login
, last_updated_by
, last_update_date
, created_by
, creation_date
, line_num
, shipment_num
, distribution_num
, sequence
, text_line
, message_name
)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
pl.line_num,
pll.shipment_num,
pd.distribution_num,
p_sequence+ ROWNUM,
l_text_line||
' on distribution ' ||
pd.distribution_num ||
' of shipment ' ||
pll.shipment_num ||
' of line ' ||
pl.line_num,
'PO_CLOSE_WIP_JOB'
FROM po_headers_gt ph,
po_lines_gt pl,
po_line_locations_gt pll,
po_distributions_gt pd
WHERE 1=1
AND ph.po_header_id = pl.po_header_id
AND pl.po_line_id=pll.po_line_id
AND ph.type_lookup_code = 'STANDARD'
AND pll.line_location_id = pd.line_location_id
AND nvl(pll.approved_flag,'N') <> 'Y'
AND nvl(pll.cancel_flag,'N') <> 'Y'
AND nvl(pll.closed_code,'OPEN') NOT IN ('FINALLY CLOSED' , 'CLOSED')
AND ph.po_header_id = p_document_id
AND pd.wip_entity_id IS NOT NULL --Bug 14383315
AND NOT EXISTS (SELECT 'JOB IS VALID'
FROM wip_discrete_jobs wdj
WHERE pd.wip_entity_id = wdj.wip_entity_id
AND wdj.status_type IN (3,4,6)
UNION ALL --Bug 16767247
SELECT 'JOB IS VALID'
FROM wip_repetitive_schedules wdj
WHERE pd.wip_entity_id = wdj.wip_entity_id
AND wdj.status_type IN (3,4,6));
INSERT INTO PO_ONLINE_REPORT_TEXT_GT(
ONLINE_REPORT_ID,
LAST_UPDATE_LOGIN,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
CREATED_BY,
CREATION_DATE,
LINE_NUM,
SHIPMENT_NUM,
DISTRIBUTION_NUM,
SEQUENCE,
TEXT_LINE,
MESSAGE_NAME
)
SELECT
p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
PRL.line_num,
0,
PRD.distribution_num,
p_sequence + ROWNUM,
SUBSTR( Nvl2( PRD.code_combination_id,
fnd_message.Get_string( 'PO','PO_RI_INVALID_CHARGE_ACC_ID' ),
fnd_message.Get_string( 'PO','PO_CHARGE_NOT_NULL' )
) ||
' on distribution ' ||
PRD.distribution_num ||
' of line ' ||
PRL.line_num, 1, 240
),
Nvl2( PRD.code_combination_id, 'PO_RI_INVALID_CHARGE_ACC_ID','PO_CHARGE_NOT_NULL' )
FROM
po_req_distributions_gt PRD,
po_req_lines_gt PRL,
gl_sets_of_books sob
WHERE
PRD.requisition_line_id = PRL.requisition_line_id
AND PRL.requisition_header_id = p_document_id
AND sob.set_of_books_id = prd.set_of_books_id
AND nvl(PRL.cancel_flag, 'N') <> 'Y'
AND( PRD.code_combination_id IS NULL
OR Validate_account_wrapper(
sob.chart_of_accounts_id,
PRD.code_combination_id,
SYSDATE
) <> 'Y'
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT(
ONLINE_REPORT_ID,
LAST_UPDATE_LOGIN,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
CREATED_BY,
CREATION_DATE,
LINE_NUM,
SHIPMENT_NUM,
DISTRIBUTION_NUM,
SEQUENCE,
TEXT_LINE,
MESSAGE_NAME
)
SELECT
p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
PRL.line_num,
0,
PRD.distribution_num,
p_sequence + ROWNUM,
SUBSTR( Nvl2( prd.budget_account_id,
fnd_message.Get_string( 'PO','PO_RI_INVALID_BUDGET_ACC_ID' ),
fnd_message.Get_string( 'PO','PO_BUDGET_NOT_NULL' )
) ||
' on distribution ' ||
PRD.distribution_num ||
' of line ' ||
PRL.line_num, 1, 240
),
Nvl2( prd.budget_account_id, 'PO_RI_INVALID_BUDGET_ACC_ID', 'PO_BUDGET_NOT_NULL' )
FROM
po_req_distributions_gt PRD,
po_req_lines_gt PRL,
gl_sets_of_books sob
WHERE
PRD.requisition_line_id = PRL.requisition_line_id
AND PRL.requisition_header_id = p_document_id
AND sob.set_of_books_id = prd.set_of_books_id
AND nvl(PRL.cancel_flag, 'N') <> 'Y'
AND( prd.budget_account_id IS NULL
OR Validate_account_wrapper(
sob.chart_of_accounts_id,
prd.budget_account_id,
prd.gl_encumbered_date
) <> 'Y'
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT(
ONLINE_REPORT_ID,
LAST_UPDATE_LOGIN,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
CREATED_BY,
CREATION_DATE,
LINE_NUM,
SHIPMENT_NUM,
DISTRIBUTION_NUM,
SEQUENCE,
TEXT_LINE,
MESSAGE_NAME
)
SELECT
p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
PRL.line_num,
0,
PRD.distribution_num,
p_sequence + ROWNUM,
SUBSTR( Nvl2( prd.variance_account_id,
fnd_message.Get_string( 'PO','PO_RI_INVALID_VARIANCE_ACC_ID' ),
fnd_message.Get_string( 'PO', 'PO_VARIANCE_NOT_NULL' )
) ||
' on distribution ' ||
PRD.distribution_num ||
' of line ' ||
PRL.line_num, 1, 240
),
Nvl2( prd.variance_account_id, 'PO_RI_INVALID_VARIANCE_ACC_ID', 'PO_VARIANCE_NOT_NULL' )
FROM
po_req_distributions_gt PRD,
po_req_lines_gt PRL,
gl_sets_of_books sob
WHERE
PRD.requisition_line_id = PRL.requisition_line_id
AND PRL.requisition_header_id = p_document_id
AND sob.set_of_books_id = prd.set_of_books_id
AND nvl(PRL.cancel_flag, 'N') <> 'Y'
AND( prd.variance_account_id IS NULL
OR Validate_account_wrapper(
sob.chart_of_accounts_id,
prd.variance_account_id,
SYSDATE
) <> 'Y'
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT(
ONLINE_REPORT_ID,
LAST_UPDATE_LOGIN,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
CREATED_BY,
CREATION_DATE,
LINE_NUM,
SHIPMENT_NUM,
DISTRIBUTION_NUM,
SEQUENCE,
TEXT_LINE,
MESSAGE_NAME
)
SELECT
p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
PRL.line_num,
0,
PRD.distribution_num,
p_sequence + ROWNUM,
SUBSTR( Nvl2( prd.accrual_account_id,
fnd_message.Get_string( 'PO', 'PO_RI_INVALID_ACCRUAL_ACC_ID' ),
fnd_message.Get_string( 'PO', 'PO_ACCRUAL_NOT_NULL' )
) ||
' on distribution ' ||
PRD.distribution_num ||
' of line ' ||
PRL.line_num, 1, 240
),
Nvl2( prd.accrual_account_id, 'PO_RI_INVALID_ACCRUAL_ACC_ID', 'PO_ACCRUAL_NOT_NULL' )
FROM
po_req_distributions_gt PRD,
po_req_lines_gt PRL,
gl_sets_of_books sob
WHERE
PRD.requisition_line_id = PRL.requisition_line_id
AND PRL.requisition_header_id = p_document_id
AND sob.set_of_books_id = prd.set_of_books_id
AND nvl(PRL.cancel_flag, 'N') <> 'Y'
AND( prd.accrual_account_id IS NULL
OR Validate_account_wrapper(
sob.chart_of_accounts_id,
prd.accrual_account_id,
SYSDATE
) <> 'Y'
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT(
ONLINE_REPORT_ID,
LAST_UPDATE_LOGIN,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
CREATED_BY,
CREATION_DATE,
LINE_NUM,
SHIPMENT_NUM,
DISTRIBUTION_NUM,
SEQUENCE,
TEXT_LINE,
MESSAGE_NAME
)
SELECT
P_ONLINE_REPORT_ID,
P_LOGIN_ID,
P_USER_ID,
SYSDATE,
P_USER_ID,
SYSDATE,
POD.PO_LINE_ID,
POLL.shipment_num,
POD.DISTRIBUTION_NUM,
P_SEQUENCE + ROWNUM,
SUBSTR( Nvl2( PoD.code_combination_id,
fnd_message.Get_string( 'PO', 'PO_RI_INVALID_CHARGE_ACC_ID' ),
fnd_message.Get_string( 'PO', 'PO_CHARGE_NOT_NULL' )
)||
' on distribution ' ||
POD.DISTRIBUTION_NUM ||
' of shipment ' ||
POLL.shipment_num, 1, 240
),
Nvl2( PoD.code_combination_id, 'PO_RI_INVALID_CHARGE_ACC_ID', 'PO_CHARGE_NOT_NULL' )
FROM
PO_DISTRIBUTIONS_GT POD,
gl_sets_of_books sob,
PO_LINE_LOCATIONS_GT POLL
WHERE
POD.PO_RELEASE_ID = P_DOCUMENT_ID
AND POD.line_location_id = POLL.line_location_id
AND POD.line_location_id IS NOT NULL
AND sob.set_of_books_id = pod.set_of_books_id
AND NVL( POLL.APPROVED_FLAG, 'N' ) <> 'Y'
AND NVL( POLL.CANCEL_FLAG, 'N' ) <> 'Y'
AND NVL( POLL.CLOSED_CODE, 'OPEN' ) <> 'FINALLY CLOSED'
AND( POD.CODE_COMBINATION_ID IS NULL
OR Validate_account_wrapper(
sob.chart_of_accounts_id,
POD.code_combination_id,
SYSDATE
) <> 'Y'
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT(
ONLINE_REPORT_ID,
LAST_UPDATE_LOGIN,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
CREATED_BY,
CREATION_DATE,
LINE_NUM,
SHIPMENT_NUM,
DISTRIBUTION_NUM,
SEQUENCE,
TEXT_LINE,
MESSAGE_NAME
)
SELECT
P_ONLINE_REPORT_ID,
P_LOGIN_ID,
P_USER_ID,
SYSDATE,
P_USER_ID,
SYSDATE,
POD.PO_LINE_ID,
POLL.shipment_num,
POD.DISTRIBUTION_NUM,
P_SEQUENCE + ROWNUM,
SUBSTR( Nvl2( PoD.budget_account_id,
fnd_message.Get_string( 'PO', 'PO_RI_INVALID_BUDGET_ACC_ID' ),
fnd_message.Get_string( 'PO', 'PO_BUDGET_NOT_NULL' )
)||
' on distribution ' ||
POD.DISTRIBUTION_NUM ||
' of shipment ' ||
POLL.shipment_num, 1, 240
),
Nvl2( PoD.budget_account_id, 'PO_RI_INVALID_BUDGET_ACC_ID', 'PO_BUDGET_NOT_NULL' )
FROM
PO_DISTRIBUTIONS_GT POD,
gl_sets_of_books sob,
PO_LINE_LOCATIONS_GT POLL
WHERE
POD.PO_RELEASE_ID = P_DOCUMENT_ID
AND POD.line_location_id = POLL.line_location_id
AND POD.line_location_id IS NOT NULL
AND sob.set_of_books_id = pod.set_of_books_id
AND NVL( POLL.APPROVED_FLAG, 'N' ) <> 'Y'
AND NVL( POLL.CANCEL_FLAG, 'N' ) <> 'Y'
AND NVL( POLL.CLOSED_CODE, 'OPEN' ) <> 'FINALLY CLOSED'
AND( POD.budget_account_id IS NULL
OR Validate_account_wrapper(
sob.chart_of_accounts_id,
POD.budget_account_id,
pod.gl_encumbered_date
) <> 'Y'
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT(
ONLINE_REPORT_ID,
LAST_UPDATE_LOGIN,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
CREATED_BY,
CREATION_DATE,
LINE_NUM,
SHIPMENT_NUM,
DISTRIBUTION_NUM,
SEQUENCE,
TEXT_LINE,
MESSAGE_NAME
)
SELECT
P_ONLINE_REPORT_ID,
P_LOGIN_ID,
P_USER_ID,
SYSDATE,
P_USER_ID,
SYSDATE,
POD.PO_LINE_ID,
POLL.shipment_num,
POD.DISTRIBUTION_NUM,
P_SEQUENCE + ROWNUM,
SUBSTR( Nvl2( PoD.accrual_account_id,
fnd_message.Get_string( 'PO', 'PO_RI_INVALID_ACCRUAL_ACC_ID' ),
fnd_message.Get_string( 'PO', 'PO_ACCRUAL_NOT_NULL' )
)||
' on distribution ' ||
POD.DISTRIBUTION_NUM ||
' of shipment ' ||
POLL.shipment_num, 1, 240
),
Nvl2( PoD.accrual_account_id, 'PO_RI_INVALID_ACCRUAL_ACC_ID', 'PO_ACCRUAL_NOT_NULL' )
FROM
PO_DISTRIBUTIONS_GT POD,
gl_sets_of_books sob,
PO_LINE_LOCATIONS_GT POLL
WHERE
POD.PO_RELEASE_ID = P_DOCUMENT_ID
AND POD.line_location_id = POLL.line_location_id
AND POD.line_location_id IS NOT NULL
AND sob.set_of_books_id = pod.set_of_books_id
AND POLL.APPROVED_DATE IS NULL
AND NVL( POLL.CANCEL_FLAG, 'N' ) <> 'Y'
AND NVL( POLL.CLOSED_CODE, 'OPEN' ) <> 'FINALLY CLOSED'
AND( POD.accrual_account_id IS NULL
OR Validate_account_wrapper(
sob.chart_of_accounts_id,
POD.accrual_account_id,
SYSDATE
) <> 'Y'
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT(
ONLINE_REPORT_ID,
LAST_UPDATE_LOGIN,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
CREATED_BY,
CREATION_DATE,
LINE_NUM,
SHIPMENT_NUM,
DISTRIBUTION_NUM,
SEQUENCE,
TEXT_LINE,
MESSAGE_NAME
)
SELECT
P_ONLINE_REPORT_ID,
P_LOGIN_ID,
P_USER_ID,
SYSDATE,
P_USER_ID,
SYSDATE,
POD.PO_LINE_ID,
POLL.shipment_num,
POD.DISTRIBUTION_NUM,
P_SEQUENCE + ROWNUM,
SUBSTR( Nvl2( PoD.variance_account_id,
fnd_message.Get_string( 'PO', 'PO_RI_INVALID_VARIANCE_ACC_ID' ),
fnd_message.Get_string( 'PO', 'PO_VARIANCE_NOT_NULL' )
)||
' on distribution ' ||
POD.DISTRIBUTION_NUM ||
' of shipment ' ||
POLL.shipment_num, 1, 240
),
Nvl2( PoD.variance_account_id, 'PO_RI_INVALID_VARIANCE_ACC_ID', 'PO_VARIANCE_NOT_NULL' )
FROM
PO_DISTRIBUTIONS_GT POD,
gl_sets_of_books sob,
PO_LINE_LOCATIONS_GT POLL
WHERE
POD.PO_RELEASE_ID = P_DOCUMENT_ID
AND POD.line_location_id = POLL.line_location_id
AND POD.line_location_id IS NOT NULL
AND sob.set_of_books_id = pod.set_of_books_id
AND POLL.APPROVED_DATE IS NULL
AND NVL( POLL.CANCEL_FLAG, 'N' ) <> 'Y'
AND NVL( POLL.CLOSED_CODE, 'OPEN' ) <> 'FINALLY CLOSED'
AND( POD.variance_account_id IS NULL
OR Validate_account_wrapper(
sob.chart_of_accounts_id,
POD.variance_account_id,
SYSDATE
) <> 'Y'
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT(
ONLINE_REPORT_ID,
LAST_UPDATE_LOGIN,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
CREATED_BY,
CREATION_DATE,
LINE_NUM,
SHIPMENT_NUM,
DISTRIBUTION_NUM,
SEQUENCE,
TEXT_LINE,
MESSAGE_NAME
)
SELECT
P_ONLINE_REPORT_ID,
P_LOGIN_ID,
P_USER_ID,
SYSDATE,
P_USER_ID,
SYSDATE,
POL.line_num,
POLL.shipment_num,
POD.DISTRIBUTION_NUM,
P_SEQUENCE + ROWNUM,
SUBSTR( Nvl2( PoD.code_combination_id,
fnd_message.Get_string( 'PO', 'PO_RI_INVALID_CHARGE_ACC_ID' ),
fnd_message.Get_string( 'PO', 'PO_CHARGE_NOT_NULL' )
)||
' on distribution ' ||
POD.DISTRIBUTION_NUM ||
' of shipment ' ||
POLL.shipment_num ||
' of line ' ||
POL.line_num, 1, 240
),
Nvl2( PoD.code_combination_id, 'PO_RI_INVALID_CHARGE_ACC_ID', 'PO_CHARGE_NOT_NULL' )
FROM
PO_DISTRIBUTIONS_GT POD,
gl_sets_of_books sob,
PO_LINE_LOCATIONS_GT POLL,
PO_LINES_GT POL
WHERE
POD.PO_HEADER_ID = P_DOCUMENT_ID
AND POD.line_location_id = POLL.line_location_id
AND POLL.po_line_id = POL.po_line_id
AND sob.set_of_books_id = pod.set_of_books_id
AND NVL( POLL.APPROVED_FLAG, 'N' ) <> 'Y'
AND NVL( POLL.CANCEL_FLAG, 'N' ) <> 'Y'
AND NVL( POLL.CLOSED_CODE, 'OPEN' ) <> 'FINALLY CLOSED'
AND( POD.CODE_COMBINATION_ID IS NULL
OR Validate_account_wrapper(
sob.chart_of_accounts_id,
POD.code_combination_id,
SYSDATE
) <> 'Y'
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT(
ONLINE_REPORT_ID,
LAST_UPDATE_LOGIN,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
CREATED_BY,
CREATION_DATE,
LINE_NUM,
SHIPMENT_NUM,
DISTRIBUTION_NUM,
SEQUENCE,
TEXT_LINE,
MESSAGE_NAME
)
SELECT
P_ONLINE_REPORT_ID,
P_LOGIN_ID,
P_USER_ID,
SYSDATE,
P_USER_ID,
SYSDATE,
POL.line_num,
POLL.shipment_num,
POD.DISTRIBUTION_NUM,
P_SEQUENCE + ROWNUM,
SUBSTR( Nvl2( PoD.budget_account_id,
fnd_message.Get_string( 'PO','PO_RI_INVALID_BUDGET_ACC_ID' ),
fnd_message.Get_string( 'PO', 'PO_BUDGET_NOT_NULL' )
)||
' on distribution ' ||
POD.DISTRIBUTION_NUM ||
' of shipment ' ||
POLL.shipment_num ||
' of line ' ||
POL.line_num, 1, 240
),
Nvl2( PoD.budget_account_id, 'PO_RI_INVALID_BUDGET_ACC_ID', 'PO_BUDGET_NOT_NULL' )
FROM
PO_DISTRIBUTIONS_GT POD,
gl_sets_of_books sob,
PO_LINE_LOCATIONS_GT POLL,
PO_LINES_GT POL
WHERE
POD.PO_HEADER_ID = P_DOCUMENT_ID
AND POD.po_release_id IS NULL
AND POD.line_location_id = POLL.line_location_id(+)
AND POLL.po_line_id = POL.po_line_id(+)
AND sob.set_of_books_id = pod.set_of_books_id
AND NVL( POLL.APPROVED_FLAG, 'N' ) <> 'Y'
AND NVL( POLL.CANCEL_FLAG, 'N' ) <> 'Y'
AND NVL( POLL.CLOSED_CODE, 'OPEN' ) <> 'FINALLY CLOSED'
---
AND POD.distribution_type = 'STANDARD'
---
AND( POD.budget_account_id IS NULL
OR Validate_account_wrapper(
sob.chart_of_accounts_id,
POD.budget_account_id,
pod.gl_encumbered_date
) <> 'Y'
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT(
ONLINE_REPORT_ID,
LAST_UPDATE_LOGIN,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
CREATED_BY,
CREATION_DATE,
LINE_NUM,
SHIPMENT_NUM,
DISTRIBUTION_NUM,
SEQUENCE,
TEXT_LINE,
MESSAGE_NAME
)
SELECT
P_ONLINE_REPORT_ID,
P_LOGIN_ID,
P_USER_ID,
SYSDATE,
P_USER_ID,
SYSDATE,
POL.line_num,
POLL.shipment_num,
POD.DISTRIBUTION_NUM,
P_SEQUENCE + ROWNUM,
SUBSTR( Nvl2( PoD.accrual_account_id,
fnd_message.Get_string( 'PO','PO_RI_INVALID_ACCRUAL_ACC_ID' ),
fnd_message.Get_string( 'PO','PO_ACCRUAL_NOT_NULL' )
)||
' on distribution ' ||
POD.DISTRIBUTION_NUM ||
' of shipment ' ||
POLL.shipment_num ||
' of line ' ||
POL.line_num, 1, 240
),
Nvl2( PoD.accrual_account_id, 'PO_RI_INVALID_ACCRUAL_ACC_ID', 'PO_ACCRUAL_NOT_NULL' )
FROM
PO_DISTRIBUTIONS_GT POD,
gl_sets_of_books sob,
PO_LINE_LOCATIONS_GT POLL,
PO_LINES_GT POL
WHERE
POD.PO_HEADER_ID = P_DOCUMENT_ID
AND POD.line_location_id = POLL.line_location_id
AND POLL.po_line_id = POL.po_line_id
AND sob.set_of_books_id = pod.set_of_books_id
AND POLL.APPROVED_DATE IS NULL
AND NVL( POLL.CANCEL_FLAG, 'N' ) <> 'Y'
AND NVL( POLL.CLOSED_CODE, 'OPEN' ) <> 'FINALLY CLOSED'
AND( POD.accrual_account_id IS NULL
OR Validate_account_wrapper(
sob.chart_of_accounts_id,
POD.accrual_account_id,
SYSDATE
) <> 'Y'
);
INSERT INTO PO_ONLINE_REPORT_TEXT_GT(
ONLINE_REPORT_ID,
LAST_UPDATE_LOGIN,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
CREATED_BY,
CREATION_DATE,
LINE_NUM,
SHIPMENT_NUM,
DISTRIBUTION_NUM,
SEQUENCE,
TEXT_LINE,
MESSAGE_NAME
)
SELECT
P_ONLINE_REPORT_ID,
P_LOGIN_ID,
P_USER_ID,
SYSDATE,
P_USER_ID,
SYSDATE,
POL.line_num,
POLL.shipment_num,
POD.DISTRIBUTION_NUM,
P_SEQUENCE + ROWNUM,
SUBSTR( Nvl2( PoD.variance_account_id,
fnd_message.Get_string( 'PO', 'PO_RI_INVALID_VARIANCE_ACC_ID' ),
fnd_message.Get_string( 'PO', 'PO_VARIANCE_NOT_NULL' )
)||
' on distribution ' ||
POD.DISTRIBUTION_NUM ||
' of shipment ' ||
POLL.shipment_num ||
' of line ' ||
POL.line_num, 1, 240
),
Nvl2( PoD.variance_account_id, 'PO_RI_INVALID_VARIANCE_ACC_ID', 'PO_VARIANCE_NOT_NULL' )
FROM
PO_DISTRIBUTIONS_GT POD,
gl_sets_of_books sob,
PO_LINE_LOCATIONS_GT POLL,
PO_LINES_GT POL
WHERE
POD.PO_HEADER_ID = P_DOCUMENT_ID
AND POD.line_location_id = POLL.line_location_id
AND POLL.po_line_id = POL.po_line_id
AND sob.set_of_books_id = pod.set_of_books_id
AND POLL.APPROVED_DATE IS NULL
AND NVL( POLL.CANCEL_FLAG, 'N' ) <> 'Y'
AND NVL( POLL.CLOSED_CODE, 'OPEN' ) <> 'FINALLY CLOSED'
AND( POD.variance_account_id IS NULL
OR Validate_account_wrapper(
sob.chart_of_accounts_id,
POD.variance_account_id,
SYSDATE
) <> 'Y'
);
* p_online_report_id: Id used to INSERT INTO online_report_text table
* p_user_id: User performing the action
* p_login_id: Last update login_id
* IN OUT PARAMETERS
* p_sequence: Sequence number of last reported error
* Modifies: Inserts error msgs in online_report_text_gt table, uses
* global_temp tables for processing
* Effects: This procedure runs the document submission checks for CLM Awards.
* Check if delivery event is defined and delivery period is not defined.
*
* Returns:
* p_sequence: This parameter contains the current count of number of error
* messages inserted
*/
PROCEDURE DELIVERY_EVENT_CHECKS(p_document_id IN NUMBER,
p_online_report_id IN NUMBER,
p_user_id IN NUMBER,
p_login_id IN NUMBER,
p_sequence IN OUT NOCOPY NUMBER,
x_return_status OUT NOCOPY VARCHAR2) IS
l_api_name CONSTANT varchar2(40) := 'DELIVERY_EVENT_CHECKS';
INSERT INTO po_online_report_text_gt
(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
POL.line_num,
PLL.shipment_num,
0,
p_sequence + ROWNUM,
Substr (g_linemsg
|| g_delim
|| Nvl(POL.line_num_display, POL.line_num)
|| g_delim
|| g_shipmsg
|| g_delim
|| PLL.shipment_num
|| g_delim
|| l_textline, 1, 240),
'CLM_NO_DELIVERY_PERIOD',
'E'
FROM po_lines_gt POL,
po_headers_gt POH,
po_line_locations_gt PLL
WHERE POH.po_header_id = p_document_id
AND POL.po_header_id = POH.po_header_id
AND POL.po_line_id = PLL.po_line_id
AND PLL.po_header_id = POH.po_header_id
AND POL.clm_delivery_event_code IS NOT NULL
AND ( PLL.clm_delivery_period IS NULL
OR PLL.clm_delivery_period_uom IS NULL )
AND NVL(PLL.payment_type,'NULL') NOT IN ('DELIVERY','ADVANCE');
* p_online_report_id: Id used to INSERT INTO online_report_text table
* p_user_id: User performing the action
* p_login_id: Last update login_id
* IN OUT PARAMETERS
* p_sequence: Sequence number of last reported error
* Modifies: Inserts error msgs in online_report_text_gt table, uses
* global_temp tables for processing
* Effects: This procedure runs the document submission checks for CLM Awards.
* Check 1 : Payment instruction Sequence is not specfied in case payment isntruction code is
* KO Specified and FV is not enabled in case of BY Fiscal year and By cancellation date
* Check 2 : Payment instruction is specified as "SINGLE_FUNDING", and there exists multiple
* ACRN'son distributions against same line.
* Check 3 : Warning if Payment isntruction sequence is blank
* Check 4 : For mod doc , check whether at any level instruction was changed to manula type (CO Specified,
or By Fiscal year and By Cancellation Date where FV is not enabled)
* Returns:
* p_sequence: This parameter contains the current count of number of error
* messages inserted
*/
PROCEDURE payment_instruction_checks(p_document_id IN NUMBER,
p_draft_type IN VARCHAR2,
p_online_report_id IN NUMBER,
p_user_id IN NUMBER,
p_login_id IN NUMBER,
p_sequence IN OUT NOCOPY NUMBER,
x_return_status OUT NOCOPY VARCHAR2) IS
l_api_name CONSTANT varchar2(40) := '';
SELECT org_id
INTO l_org_id
FROM po_headers_gt
WHERE po_header_id = p_document_id;
INSERT INTO po_online_report_text_gt(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type
)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
POLL.shipment_num,
POD.distribution_num,
p_sequence + ROWNUM,
SUBSTR (g_linemsg || g_delim || Nvl(POL.line_num_display, POL.line_num) ||g_delim ||
g_shipmsg || g_delim || POLL.shipment_num ||g_delim ||
g_distmsg || g_delim || POD.distribution_num ||g_delim || l_textline,1,240),
'PO_PAY_INSTR_SEQ_NOT_SPECIFIED',
'E'
FROM po_headers_gt POH,
po_lines_gt POL,
po_line_locations_gt POLL,
po_distributions_gt POD
WHERE POH.po_header_id = p_document_id
AND POL.po_header_id = POH.po_header_id
AND POLL.po_header_id = POH.po_header_id
AND POLL.po_line_id = POL.po_line_id
AND POD.po_header_id = POH.po_header_id
AND POD.po_line_id = POL.po_line_id
AND POD.line_location_id = POLL.line_location_id
AND POD.clm_payment_sequence_num is NULL
AND ( POH.clm_payment_instr_code = 'KO_SPECIFIED'
OR (POL.clm_payment_instr_code = 'KO_SPECIFIED'
AND POH.clm_payment_instr_code IS NULL)
OR ( (POH.clm_payment_instr_code = 'BY_CANCELLATION_DATE'
OR ( POL.clm_payment_instr_code = 'BY_CANCELLATION_DATE'
AND POH.clm_payment_instr_code IS NULL))
AND fv_enabled_flag ='N')
OR ( (POH.clm_payment_instr_code = 'BY_FISCAL_YR'
OR ( POL.clm_payment_instr_code = 'BY_FISCAL_YR'
AND POH.clm_payment_instr_code IS NULL))
AND fv_enabled_flag ='N') );
INSERT INTO po_online_report_text_gt(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type
)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
0,
0,
p_sequence + ROWNUM,
SUBSTR (g_linemsg || g_delim || Nvl(POL.line_num_display, POL.line_num) ||g_delim || l_textline,1,240),
'PO_PAYMENT_INSTR_SINGLE_FUND',
'E'
FROM po_lines_gt POL
WHERE POL.po_header_id = p_document_id
AND POL.clm_payment_instr_code = 'SINGLE_FUNDING'
AND EXISTS ( SELECT 1
FROM po_distributions_gt POD, po_distributions_gt POD2
WHERE POD2.po_header_id = POL.po_header_id
AND POD2.po_line_id = POL.po_line_id
AND POD2.po_header_id = POD.po_header_id
AND POD2.po_line_id = POD.po_line_id
AND POD2.po_distribution_id <> POD.po_distribution_id
AND POD2.acrn <> POD.acrn);
INSERT INTO po_online_report_text_gt(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type
)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
0,
0,
p_sequence + ROWNUM,
SUBSTR (g_linemsg || g_delim || Nvl(POL.line_num_display, POL.line_num) || g_delim || l_textline,1,240),
'PO_PAYMENT_INSTR_BLANK',
'W'
FROM po_lines_gt POL,
po_headers_gt POH
WHERE POH.po_header_id = p_document_id
AND POL.po_header_id = POH.po_header_id
AND Nvl(POL.clm_info_flag,'N')= 'N'
AND NVl(POL.cost_constraint,'Priced') NOT IN ('NSP', 'NC')
AND (POL.clm_payment_instr_code is NULL
AND POH.clm_payment_instr_code is NULL )
AND EXISTS ( SELECT 'At least one distribution exists'
FROM po_distributions_gt pd
WHERE pd.po_line_id = POL.po_line_id
AND pd.po_header_id = POL.po_header_id);
INSERT INTO po_online_report_text_gt(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type
)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
0,
0,
0,
p_sequence + ROWNUM,
SUBSTR ( l_textline ||g_delim||plc.displayed_field||'.',1,240),
'PO_PAY_INSTR_CHANGED_TO_MANUAL',
'W'
FROM po_headers_gt POH,
po_headers_all POH1,
po_lookup_codes plc
WHERE POH.po_header_id = p_document_id
AND POH1.po_header_id = POH.po_header_id
AND NVL(POH.clm_payment_instr_code, 'null') <> NVL(POH1.clm_payment_instr_code, 'null')
AND ( NVL(POH.clm_payment_instr_code, 'null') = 'KO_SPECIFIED'
OR ( NVL(POH.clm_payment_instr_code, 'null') IN ('BY_CANCELLATION_DATE', 'BY_FISCAL_YR')
AND fv_enabled_flag ='N') )
AND plc.lookup_type ='CLM_PAYMENT_INST'
AND plc.lookup_code = POH.clm_payment_instr_code;
INSERT INTO po_online_report_text_gt(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type
)
SELECT p_online_report_id,
p_login_id,
p_user_id,
sysdate,
p_user_id,
sysdate,
POL.line_num,
0,
0,
p_sequence + ROWNUM,
SUBSTR ( g_linemsg || g_delim || Nvl(POL.line_num_display, POL.line_num) || g_delim ||
l_textline ||g_delim||plc.displayed_field||'.',1,240),
'PO_PAY_INSTR_CHANGED_TO_MANUAL',
'W'
FROM po_lines_gt POL,
po_lines_all POL1,
po_lookup_codes plc
WHERE POL.po_header_id = p_document_id
AND POL1.po_header_id = POL.po_header_id
AND POL1.po_line_id = POL.po_line_id
AND NVL(POL.clm_payment_instr_code, 'null') <> NVL(POL1.clm_payment_instr_code, 'null')
AND ( NVL(POL.clm_payment_instr_code, 'null') = 'KO_SPECIFIED'
OR ( NVL(POL.clm_payment_instr_code, 'null') IN ('BY_CANCELLATION_DATE', 'BY_FISCAL_YR')
AND fv_enabled_flag ='N') )
AND plc.lookup_type ='CLM_PAYMENT_INST'
AND plc.lookup_code = POL.clm_payment_instr_code;
* p_online_report_id: Id used to INSERT INTO online_report_text table
* p_user_id: User performing the action
* p_login_id: Last update login_id
* IN OUT PARAMETERS
* p_sequence: Sequence number of last reported error
* Modifies: Inserts error msgs in online_report_text_gt table, uses
* global_temp tables for processing
* Effects: This procedure runs the document submission checks for CLM Awards.
* Validate POP for Severable Line Type.
*
* Returns:
* p_sequence: This parameter contains the current count of number of error
* messages inserted
*/
PROCEDURE VALIDATE_POP_FOR_SEVERABLE(p_document_id IN NUMBER,
p_online_report_id IN NUMBER,
p_user_id IN NUMBER,
p_login_id IN NUMBER,
p_sequence IN OUT NOCOPY NUMBER,
x_return_status OUT NOCOPY VARCHAR2)
IS
l_api_name CONSTANT varchar2(40) := 'VALIDATE_POP_FOR_SEVERABLE';
INSERT INTO po_online_report_text_gt
(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
POL.line_num,
0,
0,
p_sequence + ROWNUM,
Substr (g_linemsg
|| g_delim
|| Nvl(POL.line_num_display,POL.line_num)
||g_delim
|| l_textline, 1, 240),
'CLM_POP_BEYOND_12',
'E'
FROM po_lines_gt pol,
po_line_types plt,
po_headers_gt pha
WHERE pha.po_header_id = p_document_id
AND pol.po_header_id = pha.po_header_id
AND pol.line_type_id = plt. line_type_id
AND Nvl(plt.clm_severable_flag, 'N') = 'Y'
AND pol.clm_pop_exception_reason IS NULL
AND pol.clm_delivery_event_code IS NULL
AND 12 < (SELECT Months_between (Max(clm_period_perf_end_date),
Min(clm_period_perf_start_date))
FROM po_line_locations_gt poll
WHERE poll.po_line_id = pol.po_line_id
AND poll.po_header_id = pol.po_header_id);
INSERT INTO po_online_report_text_gt
(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
line_num,
shipment_num,
distribution_num,
p_sequence + ROWNUM,
Substr(g_linemsg
||g_delim
||line_num
||g_delim
||g_shipmsg
||g_delim
||shipment_num
||g_delim
||g_distmsg
||g_delim
||distribution_num
||g_delim
||l_textline, 1, 240),
'CLM_POP_BEYOND_FISCAL_END',
'E'
FROM (SELECT lines.line_num,
pll.shipment_num,
pda.distribution_num,
po_core_s3.Get_fiscal_year(
(SELECT Min(pll.clm_period_perf_start_date)
FROM po_line_locations_gt poll
WHERE poll.po_line_id = pll.po_line_id
AND poll.po_header_id = pll.po_header_id),
pda.set_of_books_id) Min_start_date_fiscal_year,
po_core_s3.Get_fiscal_year(pll.clm_period_perf_end_date,
pda.set_of_books_id) end_date_fiscal_year
FROM po_distributions_gt pda,
po_line_locations_gt pll,
(SELECT pol.po_line_id,
Nvl(POL.line_num_display,POL.line_num) line_num
FROM po_headers_gt pha,
po_lines_gt pol,
po_line_types plt
WHERE pha.po_header_id = p_document_id
AND pol.po_header_id = pha.po_header_id
AND pol.line_type_id = plt. line_type_id
AND Nvl(plt.clm_severable_flag, 'N') = 'Y'
AND pol.clm_pop_exception_reason IS NULL
AND pol.clm_delivery_event_code IS NULL
AND 12 >= (SELECT Months_between (
Max(clm_period_perf_end_date),
Min(clm_period_perf_start_date))
FROM po_line_locations_gt poll
WHERE poll.po_line_id = pol.po_line_id
AND poll.po_header_id = pol.po_header_id))
lines
WHERE pda.po_line_id = lines.po_line_id
AND pll.po_line_id = lines.po_line_id
AND pda.line_location_id = pll.line_location_id
AND pda.po_line_id = pll.po_line_id
AND pda.po_header_id = pll.po_header_id
AND po_core_s3.Is_non_annual_fund(pda.code_combination_id, pda.set_of_books_id) = 'Y'
AND pda.code_combination_id IS NOT NULL)
WHERE min_start_date_fiscal_year <> end_date_fiscal_year ;
INSERT INTO po_online_report_text_gt
(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
sequence,
text_line,
message_name,
message_type)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
POL.line_num,
poll.shipment_num,
0,
p_sequence + ROWNUM,
Substr (g_linemsg
|| g_delim
|| Nvl(POL.line_num_display,POL.line_num)
|| g_delim
|| g_shipmsg
|| g_delim
|| poll.shipment_num
|| g_delim
|| l_textline, 1, 240),
'CLM_POP_DURATION_BEYOND_12',
'E'
FROM po_lines_gt pol,
po_line_types plt,
po_headers_gt pha,
po_line_locations_gt poll
WHERE pha.po_header_id = p_document_id
AND pol.po_header_id = pha.po_header_id
AND poll.po_line_id = pol.po_line_id
AND poll.po_header_id = pol.po_header_id
AND pol.line_type_id = plt. line_type_id
AND Nvl(plt.clm_severable_flag, 'N') = 'Y'
AND pol.clm_pop_exception_reason IS NULL
AND pol.clm_delivery_event_code IS NOT NULL
AND poll.clm_pop_duration IS NOT NULL
AND poll.clm_pop_duration_uom IS NOT NULL
AND Decode(poll.clm_pop_duration_uom, 'MONTHS', poll.clm_pop_duration,
'DAYS',Months_between
(SYSDATE + poll.clm_pop_duration,
SYSDATE),
'WEEKS',Months_between(
SYSDATE + ( poll.clm_pop_duration * 7 ),
SYSDATE)) > 12;
* p_online_report_id: Id used to INSERT INTO online_report_text table
* p_user_id: User performing the action
* p_login_id: Last update login_id
* IN OUT PARAMETERS
* p_sequence: Sequence number of last reported error
* Modifies: Inserts error msgs in online_report_text_gt table, uses
* global_temp tables for processing
* Effects: This procedure runs the document submission checks for CLM Awards.
* for Uca Lines.
*
* Returns:
* p_sequence: This parameter contains the current count of number of error
* messages inserted
*/
PROCEDURE check_line_ucas(p_document_id IN NUMBER,
p_online_report_id IN NUMBER,
p_user_id IN NUMBER,
p_login_id IN NUMBER,
p_sequence IN OUT NOCOPY NUMBER,
x_return_status OUT NOCOPY VARCHAR2)
IS
l_api_name CONSTANT varchar2(40) := 'check_line_ucas';
INSERT INTO po_online_report_text_gt
(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
SEQUENCE,
text_line,
message_name,
message_type)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
POL.line_num,
0,
0,
p_sequence + ROWNUM,
po_core_s.Get_translated_text('PO_UCA_PDD_PAST_DATE',
'LINE_NUM', pol.line_num_display),
'PO_UCA_PDD_PAST_DATE',
'W'
FROM po_line_ucas uc,
po_lines_gt pol,
po_headers_gt poh
WHERE Nvl(pol.clm_undef_flag, 'N') = 'Y'
AND uc.planned_def_date IS NOT NULL
AND uc.planned_def_date < SYSDATE
AND poh.po_header_id = pol.po_header_id
AND poh.draft_id = uc.undef_draft_id
AND pol.po_line_id = uc.po_line_id
AND poh.po_header_id = p_document_id;
INSERT INTO po_online_report_text_gt
(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
SEQUENCE,
text_line,
message_name,
message_type)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
POL.line_num,
0,
0,
p_sequence + ROWNUM,
po_core_s.Get_translated_text('PO_UCA_UNDEF_INCOMPLETE', 'LINE_NUM',
pol.line_num_display),
'PO_UCA_UNDEF_INCOMPLETE',
'E'
FROM po_line_ucas uc,
po_lines_gt pol,
po_headers_gt poh
WHERE Nvl(pol.clm_undef_flag, 'N') = 'Y'
AND ( NOT ( ( uc.planned_def_date IS NOT NULL
AND uc.undef_amount IS NOT NULL
AND uc.limit_gov_liability_amt IS NOT NULL
AND uc.not_to_exceed_amount IS NOT NULL )
OR ( uc.planned_def_date IS NOT NULL
AND uc.undef_description IS NOT NULL
AND uc.undef_amount IS NULL
AND uc.limit_gov_liability_amt IS NULL
AND uc.not_to_exceed_amount IS NULL ) ) )
AND poh.po_header_id = pol.po_header_id
AND poh.draft_id = uc.undef_draft_id
AND pol.po_line_id = uc.po_line_id
AND poh.po_header_id = p_document_id;
INSERT INTO po_online_report_text_gt
(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
SEQUENCE,
text_line,
message_name,
message_type)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
POL.line_num,
0,
0,
p_sequence + ROWNUM,
po_core_s.Get_translated_text('PO_UCA_DEF_DESC_ERR', 'DOC_NUM',
uc.undef_clm_document_number, 'LINE_NUM', pol.line_num_display),
'PO_UCA_DEF_DESC_ERR',
'E'
FROM po_line_ucas uc,
po_lines_gt pol,
po_headers_gt poh
WHERE Nvl(pol.clm_undef_action_code, 'X') = 'DEF'
AND uc.undef_amount IS NULL
AND uc.not_to_exceed_amount IS NULL
AND uc.limit_gov_liability_amt IS NULL
AND uc.def_description IS NULL
AND poh.po_header_id = pol.po_header_id
AND (poh.draft_id = uc.def_draft_id
OR poh.draft_id = uc.def_par_draft_id)
AND pol.po_line_id = uc.po_line_id
AND poh.po_header_id = p_document_id;
INSERT INTO po_online_report_text_gt
(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
SEQUENCE,
text_line,
message_name,
message_type)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
line_num,
0,
0,
p_sequence + ROWNUM,
po_core_s.Get_translated_text('PO_UCA_MAX_CHANGE_ERR', 'CP_LABEL',
cp_label,
'CP_LABEL2', cp_label, 'LINE_NUM', line_num_display),
'PO_UCA_MAX_CHANGE_ERR',
'W'
FROM (SELECT Decode(matching_basis, 'QUANTITY',
( Nvl(unit_price*quantity, 0) -
Nvl(old_unit_price* old_quantity, 0) ),
( Nvl(amount, 0) - Nvl(old_amount, 0) ))
change_in_ext_price,
Nvl((SELECT SUM(Nvl(not_to_exceed_amount, 0)) -
SUM(Nvl(undef_amount, 0))
max_all_change
FROM po_line_ucas uc
WHERE pol.po_line_id = uc.po_line_id
AND ph.po_header_id = uc.po_header_id
AND (uc.def_draft_id = ph.draft_id
OR uc.def_par_draft_id = ph.draft_id)), 0) max_change,
po_clm_cp_label_ext.Getamountlabel(
pol.order_type_lookup_code,
pol.contract_type,
pol.clm_idc_type) cp_label,
line_num_display,
line_num
FROM po_lines_gt pol,
po_headers_gt ph
WHERE pol.po_header_id = ph.po_header_id
AND ph.po_header_id = p_document_id
AND Nvl(pol.clm_undef_action_code, 'X') = 'DEF')
WHERE change_in_ext_price > max_change;
INSERT INTO po_online_report_text_gt
(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
SEQUENCE,
text_line,
message_name,
message_type)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
line_num,
0,
0,
p_sequence + ROWNUM,
po_core_s.Get_translated_text('PO_UCA_LINE_DEF_NO_UCAS', 'LINE_NUM',
line_num_display),
'PO_UCA_LINE_DEF_NO_UCAS',
'E'
FROM po_lines_gt pol,
po_headers_gt ph
WHERE ph.po_header_id = p_document_id
AND ph.po_header_id = pol.po_header_id
AND Nvl(pol.clm_undef_action_code,'X') = 'DEF'
AND NOT EXISTS (SELECT 1
FROM po_line_ucas ucas
WHERE ucas.po_line_id = pol.po_line_id
AND ucas.po_header_id = p_document_id
AND ( ucas.def_draft_id = Ph.draft_id
OR ucas.def_par_draft_id = ph.draft_id ));
* p_online_report_id: Id used to INSERT INTO online_report_text table
* p_user_id: User performing the action
* p_login_id: Last update login_id
* IN OUT PARAMETERS
* p_sequence: Sequence number of last reported error
* Modifies: Inserts error msgs in online_report_text_gt table, uses
* global_temp tables for processing
* Effects: This procedure runs the document submission checks for CLM Awards.
* for Uca Lines.
*
* Returns:
* p_sequence: This parameter contains the current count of number of error
* messages inserted
*/
PROCEDURE validate_exhibits(p_document_id IN NUMBER,
p_draft_id IN NUMBER,
p_online_report_id IN NUMBER,
p_user_id IN NUMBER,
p_login_id IN NUMBER,
p_sequence IN OUT NOCOPY NUMBER,
x_return_status OUT NOCOPY VARCHAR2)
IS
l_api_name CONSTANT varchar2(40) := 'validate_exhibits';
INSERT INTO po_online_report_text_gt
(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
SEQUENCE,
text_line,
message_name,
message_type)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
0,
0,
0,
p_sequence + ROWNUM,
po_core_s.Get_translated_text('PO_CLM_EXHIBIT_ORPHAN', 'EXHIBIT_NAME', poe.exhibit_name),
'PO_CLM_EXHIBIT_ORPHAN',
'E'
FROM
po_exhibit_details_merge_v poe,
po_headers_gt poh
WHERE poh.po_header_id = p_document_id
AND poh.po_header_id = poe.po_header_id
AND poh.draft_id = poe.draft_id
AND poe.reference_line_id IS NULL;
INSERT INTO po_online_report_text_gt
(online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
SEQUENCE,
text_line,
message_name,
message_type)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
0,
0,
0,
p_sequence + ROWNUM,
po_core_s.Get_translated_text('PO_CLM_EXHIBIT_INVALID_REF', 'EXHIBIT_NAME', poed.exhibit_name),
'PO_CLM_EXHIBIT_INVALID_REF',
'E'
FROM po_lines_gt pol,
po_exhibit_details_merge_v poed,
(SELECT exhibit_name,
(SELECT Decode( Count(1), 0, fnd_message.get_string('PO','PO_EXHIBIT_NSP_LABEL'), fnd_message.get_string('PO','PO_EXHIBIT_PRICED_LABEL'))
FROM po_lines_gt pl
WHERE
pl.po_header_id = ped.PO_HEADER_ID AND
pl.clm_exhibit_name = ped.EXHIBIT_NAME AND
Nvl(pl.cost_constraint,'Priced') NOT IN ('NSP','NC')
) pricing
FROM po_exhibit_details_merge_v ped WHERE ped.po_header_id = p_document_id AND ped.draft_id = p_draft_id) exhibit_pricing_cur
WHERE pol.po_header_id = p_document_id
AND pol.po_header_id = poed.po_header_id
AND poed.draft_id = p_draft_id
AND exhibit_pricing_cur.exhibit_name = poed.exhibit_name
AND poed.is_cdrl = 'N' -- Data deliverable (CDRL) exhibit can be linked to any line.
AND pol.po_line_id = poed.reference_line_id
AND (
(exhibit_pricing_cur.pricing = fnd_message.get_string('PO','PO_EXHIBIT_NSP_LABEL')
AND (Nvl(pol.cost_constraint,'Priced') = 'NSP' OR
Nvl(pol.cost_constraint,'Priced') = 'NC'
)
)
OR
(exhibit_pricing_cur.pricing = fnd_message.get_string('PO','PO_EXHIBIT_PRICED_LABEL')
AND Nvl(pol.cost_constraint,'Priced') NOT IN ('NSP','NC')
)
)
ORDER BY poed.exhibit_name;
* p_online_report_id: Id used to INSERT INTO online_report_text table
* p_user_id: User performing the action
* p_login_id: Last update login_id
* IN OUT PARAMETERS
* p_sequence: Sequence number of last reported error
* Modifies: Inserts error msgs in online_report_text_gt table, uses
* global_temp tables for processing
* Effects: This procedure runs the document submission checks for CLM Awards
* referencing MIPR.
*
* Returns:
* p_sequence: This parameter contains the current count of number of error
* messages inserted
*/
PROCEDURE check_po_mipr_reference(p_document_id IN NUMBER,
p_draft_id IN NUMBER,
p_online_report_id IN NUMBER,
p_user_id IN NUMBER,
p_login_id IN NUMBER,
p_sequence IN OUT NOCOPY NUMBER,
x_return_status OUT NOCOPY VARCHAR2)
IS
l_api_name CONSTANT varchar2(40) := 'check_po_mipr_reference';
INSERT INTO po_session_gt(
KEY, -- Unique Key for procedure
num1, -- PO po_distribution_id
num2, -- MIPR distribution_id
num3, -- MIPR requisition_header_id
num4, -- MIPR clm_assist_office
num5, -- MIPR clm_req_office
char1,-- MIPR clm_mipr_type
char2,-- MIPR clm_mipr_obligation_type
char3,-- PO line_num
char4,-- PO line_num_display
char5,-- PO shipment_num
char6)-- PO distribution_num
SELECT l_procedure_id,
POD.po_distribution_id,
PRD.distribution_id,
PRH.requisition_header_id,
PRH.clm_assist_office,
PRH.clm_req_office,
PRH.clm_mipr_type,
PRL.clm_mipr_obligation_type,
POL.line_num,
POL.line_num_display,
POLL.shipment_num,
POD.distribution_num
FROM po_distributions_gt POD,
po_req_distributions_all PRD,
po_requisition_lines_all PRL,
po_requisition_headers_all PRH,
po_line_locations_gt POLL,
po_lines_gt POL
WHERE POD.po_header_id = p_document_id
AND POD.req_distribution_id = PRD.distribution_id
AND PRD.requisition_line_id = PRL.requisition_line_id
AND PRL.requisition_header_id = PRH.requisition_header_id
AND PRH.clm_mipr_type IN ('MIPR_OWN', 'MIPR_OTHERS')
AND POD.line_location_id = POLL.line_location_id
AND POLL.po_line_id = POL.po_line_id
AND nvl(POLL.cancel_flag, 'N') = 'N'
AND nvl(POLL.closed_code, 'OPEN') <> 'FINALLY CLOSED';
SELECT 'Y'
INTO l_mipr_own_ref_exists
FROM po_session_gt
WHERE KEY = l_procedure_id
AND char1 = 'MIPR_OWN'
AND ROWNUM = 1;
SELECT 'Y'
INTO l_mipr_others_ref_exists
FROM po_session_gt
WHERE KEY = l_procedure_id
AND char1 = 'MIPR_OTHERS'
AND ROWNUM = 1;
SELECT 'Y'
INTO l_non_mipr_ref_exists
FROM dual
WHERE EXISTS(
SELECT 1
FROM po_distributions_gt POD
WHERE POD.po_header_id = p_document_id
AND req_distribution_id IS NOT NULL --PO Dist has a req reference
AND NOT EXISTS(
SELECT 1
FROM po_session_gt GT
WHERE GT.key = l_procedure_id
AND GT.num1 = POD.po_distribution_id)); --PO Dist does not have MIPR Ref
INSERT INTO po_online_report_text_gt(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
SEQUENCE,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
p_sequence + ROWNUM,
l_textline,
'PO_MIPR_CAR_EXEMPT'
FROM dual
WHERE EXISTS(
SELECT 1
FROM po_clm_cars
WHERE po_header_id = p_document_id
AND po_draft_id = p_draft_id
AND reporting_method <> 'EXEMPT');
INSERT INTO po_online_report_text_gt(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
SEQUENCE,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
p_sequence + ROWNUM,
l_textline,
'PO_MIPR_COMM_METHOD_NONE'
FROM po_headers_gt
WHERE po_header_id = p_document_id
AND Nvl(supplier_notif_method, 'NONE') <> 'NONE';
INSERT INTO po_online_report_text_gt(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
SEQUENCE,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
p_sequence + ROWNUM,
l_textline,
'PO_MIPR_BILATERAL_IND_NONE'
FROM po_headers_gt
WHERE po_header_id = p_document_id
AND Nvl(Acceptance_Required_Flag, 'N') <> 'N';
INSERT INTO po_online_report_text_gt(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
SEQUENCE,
text_line,
message_name,
message_type)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
p_sequence + ROWNUM,
l_textline,
'PO_MIPR_MULTI_OWN_REF',
'W'
FROM dual
WHERE EXISTS(
SELECT 1
FROM po_session_gt
WHERE key = l_procedure_id
AND char1 = 'MIPR_OWN'
HAVING Count(DISTINCT num3) > 1);--requisition_header_id of referenced MIPR
INSERT INTO po_online_report_text_gt(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
SEQUENCE,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
GT.char3,
GT.char5,
GT.char6,
p_sequence + ROWNUM,
PO_CORE_S.get_translated_text(
'PO_MIPR_MULTI_ASST_OFF_REF',
'LINE_NUM', GT.char4,
'SHIP_NUM', GT.char5,
'DIST_NUM', GT.char6),
'PO_MIPR_MULTI_ASST_OFF_REF'
FROM po_session_gt GT
WHERE key = l_procedure_id
AND char1 = 'MIPR_OWN'
AND EXISTS(
SELECT 1
FROM po_session_gt
WHERE key = l_procedure_id
AND char1 = 'MIPR_OWN'
HAVING Count(DISTINCT num4) > 1);--clm_assist_office of referenced MIPR
INSERT INTO po_online_report_text_gt(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
SEQUENCE,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
GT.char3,
GT.char5,
GT.char6,
p_sequence + ROWNUM,
PO_CORE_S.get_translated_text(
'PO_MIPR_OWN_AND_PR_REF',
'LINE_NUM', GT.char4,
'SHIP_NUM', GT.char5,
'DIST_NUM', GT.char6),
'PO_MIPR_OWN_AND_PR_REF'
FROM po_session_gt GT
WHERE key = l_procedure_id
AND char1 = 'MIPR_OWN'
AND (l_mipr_others_ref_exists = 'Y' OR l_non_mipr_ref_exists = 'Y');
INSERT INTO po_online_report_text_gt(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
line_num,
shipment_num,
distribution_num,
SEQUENCE,
text_line,
message_name)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
GT.char3,
GT.char5,
GT.char6,
p_sequence + ROWNUM,
PO_CORE_S.get_translated_text(
'PO_MIPR_MULTI_OBLIG_REF',
'LINE_NUM', GT.char4,
'SHIP_NUM', GT.char5,
'DIST_NUM', GT.char6),
'PO_MIPR_MULTI_OBLIG_REF'
FROM po_session_gt GT
WHERE key = l_procedure_id
AND char1 = 'MIPR_OWN'
AND char2 = 'DIRECT_CITE' -- Direct Cite clm_mipr_obligation_type of referenced MIPR
AND EXISTS(
SELECT 1
FROM po_session_gt
WHERE key = l_procedure_id
AND char1 = 'MIPR_OWN'
AND char2 = 'REIMBURSEMENT'); -- Reimbursement clm_mipr_obligation_type
INSERT INTO po_online_report_text_gt(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
SEQUENCE,
text_line,
message_name,
message_type)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
p_sequence + ROWNUM,
l_textline,
'PO_MIPR_OTHERS_AND_PR_REF',
'W'
FROM dual
WHERE l_non_mipr_ref_exists = 'Y'; -- Non-Mipr reference exists
INSERT INTO po_online_report_text_gt(
online_report_id,
last_update_login,
last_updated_by,
last_update_date,
created_by,
creation_date,
SEQUENCE,
text_line,
message_name,
message_type)
SELECT p_online_report_id,
p_login_id,
p_user_id,
SYSDATE,
p_user_id,
SYSDATE,
p_sequence + ROWNUM,
l_textline,
'PO_MIPR_MULTI_REQ_OFF_REF',
'W'
FROM dual
WHERE EXISTS(
SELECT 1
FROM po_session_gt
WHERE key = l_procedure_id
AND char1 = 'MIPR_OTHERS'
HAVING Count(DISTINCT num5) > 1);--clm_req_office of the referenced MIPR
DELETE FROM po_session_gt
WHERE key = l_procedure_id;
INSERT INTO PO_ONLINE_REPORT_TEXT_GT(
ONLINE_REPORT_ID,
LAST_UPDATE_LOGIN,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
CREATED_BY,
CREATION_DATE,
LINE_NUM,
SHIPMENT_NUM,
DISTRIBUTION_NUM,
SEQUENCE,
TEXT_LINE,
MESSAGE_NAME
)
SELECT
P_ONLINE_REPORT_ID,
P_LOGIN_ID,
P_USER_ID,
SYSDATE,
P_USER_ID,
SYSDATE,
POL.line_num,
POLL.shipment_num,
POD.DISTRIBUTION_NUM,
P_SEQUENCE + ROWNUM,
'Between Shipment '||POLL.shipment_num||
' and Distribution '||POD.DISTRIBUTION_NUM ||
' of Line '||POL.line_num||' , '|| L_TEXTLINE,
'PO_RI_INVALID_ACCRUE_ON_RCT'
FROM
PO_DISTRIBUTIONS_GT POD,
PO_LINE_LOCATIONS_GT POLL,
PO_LINES_GT POL,
PO_HEADERS_GT POH
WHERE
POH.po_header_id = P_DOCUMENT_ID
AND POL.po_header_id = POH.po_header_id
AND POD.line_location_id = POLL.line_location_id
AND POLL.po_line_id = POL.po_line_id
AND NVL( POLL.CANCEL_FLAG, 'N' ) <> 'Y'
AND NVL( POLL.CLOSED_CODE, 'OPEN' ) <> 'FINALLY CLOSED'
AND POD.destination_type_code in ('INVENTORY', 'SHOP FLOOR')
AND Nvl(POD.accrue_on_receipt_flag, 'N') = 'N'
AND Nvl(POLL.CONSIGNED_FLAG, 'N') = 'N'
AND POLL.shipment_type <> 'PREPAYMENT'
AND POD.award_id IS NULL
AND POH.PCARD_ID IS NULL;
INSERT INTO PO_ONLINE_REPORT_TEXT_GT(
ONLINE_REPORT_ID,
LAST_UPDATE_LOGIN,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
CREATED_BY,
CREATION_DATE,
LINE_NUM,
SHIPMENT_NUM,
DISTRIBUTION_NUM,
SEQUENCE,
TEXT_LINE,
MESSAGE_NAME
)
SELECT
P_ONLINE_REPORT_ID,
P_LOGIN_ID,
P_USER_ID,
SYSDATE,
P_USER_ID,
SYSDATE,
POL.line_num,
POLL.shipment_num,
POD.DISTRIBUTION_NUM,
P_SEQUENCE + ROWNUM,
'Between Shipment '||POLL.shipment_num||
' and Distribution '||POD.DISTRIBUTION_NUM ||
' of Line '||POL.line_num||' , '|| L_TEXTLINE,
'PO_RI_INVALID_ACCRUE_ON_RCT'
FROM
PO_DISTRIBUTIONS_GT POD,
PO_LINE_LOCATIONS_GT POLL,
PO_LINES POL,
PO_RELEASES_GT POR
WHERE
POR.po_release_id = P_DOCUMENT_ID
AND POR.po_header_id = POL.po_header_id
AND POD.line_location_id = POLL.line_location_id
AND POLL.po_line_id = POL.po_line_id
AND NVL( POLL.CANCEL_FLAG, 'N' ) <> 'Y'
AND NVL( POLL.CLOSED_CODE, 'OPEN' ) <> 'FINALLY CLOSED'
AND POD.destination_type_code in ('INVENTORY', 'SHOP FLOOR')
AND Nvl(POD.accrue_on_receipt_flag, 'N') = 'N'
AND Nvl(POLL.CONSIGNED_FLAG, 'N') = 'N'
AND POLL.shipment_type <> 'PREPAYMENT'
AND POD.award_id IS NULL
AND POR.PCARD_ID IS NULL;
SELECT meaning
INTO
x_contract_status
FROM fnd_lookups
WHERE lookup_type = 'OKC_REP_CONTRACT_STATUSES'
AND LOOKUP_CODE = x_contract_rec.contract_status_code; -- bug 16713804
* p_online_report_id: Id used to INSERT INTO online_report_text table
* p_user_id: User performing the action
* p_login_id: Last update login_id
* p_org_id : current org id
* IN OUT PARAMETERS
* p_sequence: Sequence number of last reported error
* Modifies: Inserts error msgs in online_report_text_gt table, uses
* global_temp tables for processing
* Effects: This procedure runs the document submission checks for CLM Awards
* referencing SBCR.
*
* Returns:
* p_sequence: This parameter contains the current count of number of error
* messages inserted
*/
PROCEDURE check_po_sbcr_reference(p_document_id IN NUMBER,
p_draft_id IN NUMBER,
p_online_report_id IN NUMBER,
p_user_id IN NUMBER,
p_login_id IN NUMBER,
p_org_id IN NUMBER,
p_sequence IN OUT NOCOPY NUMBER,
x_return_status OUT NOCOPY VARCHAR2)
IS
l_api_name CONSTANT varchar2(40) := 'check_po_mipr_reference';
SELECT ( CASE
WHEN phda.type_lookup_code = 'BLANKET' THEN 'PA_BLANKET_MOD'
WHEN phda.type_lookup_code = 'CONTRACT' THEN 'PA_CONTRACT_MOD'
ELSE 'PO_STANDARD_MOD'
END ) OKC_DOC_TYPE,
(CASE WHEN phda.type_lookup_code = 'BLANKET' OR phda.type_lookup_code = 'CONTRACT' THEN
Nvl(phda.amount_limit,0) - Nvl(phd.amount_limit,0)
ELSE
Nvl(pod.changed_amt,0)
END) changed_amt -- Bug 16713804
INTO l_okc_doc_type,l_changed_amt
FROM po_headers_draft_all phda, po_headers_all phd,
po_drafts pod
WHERE phda.po_header_id = p_document_id
AND phd.po_header_id = phda.po_header_id
AND phda.draft_id = p_draft_id
AND pod.draft_id = phda.draft_id;
INSERT INTO po_online_report_text_gt
(online_report_id
,last_updated_by
,last_update_date
,created_by
,creation_date
,line_num
,shipment_num
,distribution_num
,sequence
,text_line
,message_name
,message_type
)
VALUES
(p_online_report_id
,p_login_id
,sysdate
,p_user_id
,sysdate
,0 ,0 ,0
,p_sequence+1
,po_core_s.Get_translated_text('PO_OKC_NO_SBCR', 'AMOUNT',l_limit_amount)
,'PO_OKC_NO_SBCR'
,'W'
);
INSERT INTO po_online_report_text_gt
(online_report_id
,last_updated_by
,last_update_date
,created_by
,creation_date
,line_num
,shipment_num
,distribution_num
,sequence
,text_line
,message_name
,message_type
)
VALUES
(p_online_report_id
,p_login_id
,sysdate
,p_user_id
,sysdate
,0 ,0 ,0
,p_sequence+1
,po_core_s.Get_translated_text('PO_OKC_NO_SIGNED_SBCR')
,'PO_OKC_NO_SIGNED_SBCR'
,'W'
);