ORACLE PURCHASING TABLES
segment1 - is the
system–assigned number you use to identify in forms and reports.
Table Name Columns
PO_REQUISITION_HEADERS_ALL REQUISITION_HEADER_ID,
PREPARER_ID, SEGMENT1,
SUMMARY_FLAG, ENABLED_FLAG
stores information about
requisition headers. You need one row for each requisition header you
create. Each row contains the requisition number, preparer,
status, and description.SEGMENT1 is the number you use to identify the
requisition in forms and reports(unique).
PO_REQUISITION_LINES_ALL REQUISITION_LINE_ID,REQUISITION_HEADER_ID,
LINE_NUM,LINE_TYPE_ID,CATEGORY_ID,
ITEM_DESCRIPTION,UNIT_MEAS_LOOKUP_CODE
,
UNIT_PRICE, QUANTITY, DELIVER_TO_LOCATION_ID,
TO_PERSON_ID,
SOURCE_TYPE_CODE
stores
information about requisition lines.line number, item number, item category,
item description,
need–by date, deliver–to location, item quantities, units,
prices, requestor, notes, and suggested supplier information for the
requisition line.
LINE_LOCATION_ID
- purchase order shipment line on which you placed the requisition. it is null
if you
have not placed the requisition line on a purchase order.
BLANKET_PO_HEADER_ID
and BLANKET_PO_LINE_NUM store the suggested blanket purchase agreement
or catalog quotation line information for the requisition
line.
PARENT_REQ_LINE_ID
contains the REQUISITION_LINE_ID from the original requisition line if you
exploded or multisourced this requisition line.
PO_HEADERS_ALL PO_HEADER_ID, AGENT_ID, TYPE_LOOKUP_CODE,
SEGMENT1,
SUMMARY_FLAG, ENABLED_FLAG
information
for your purchasing documents.There are six types of documents that use
PO_HEADERS_ALL
RFQs, Quotations, Standard purchase orders, Planned purchase
orders, Blanket purchase orders, Contracts
can uniquely identify a row in PO_HEADERS_ALL using SEGMENT1
and TYPE_LOOKUP_CODE or using
PO_HEADER_ID.BLANKET_TOTAL_AMOUNT for blanket purchase
orders or contract purchase orders.
if we use copy document Oracle Purchasing stores the foreign
key to your original RFQ in FROM_HEADER_ID.
PO_LINES_ALL PO_LINE_ID, PO_HEADER_ID, LINE_TYPE_ID,
LINE_NUM
stores
current information about each purchase order line. CONTRACT_NUM reference a contract
purchase order from a standard purchase order line.
PO_VENDORS VENDOR_ID, VENDOR_NAME, SEGMENT1,
SUMMARY_FLAG,
ENABLED_FLAG
information about your
suppliers.purchasing, receiving, payment, accounting, tax, classification, and
general information.
PO_VENDOR_SITES_ALL VENDOR_SITE_ID,
VENDOR_ID, VENDOR_SITE_CODE
information
about your supplier sites.a row for each supplier site you define. Each row
includes the site address, supplier reference, purchasing, payment, bank, and
general information. Oracle Purchasing uses this
information to store supplier address information.
PO_DISTRIBUTIONS_ALL PO_DISTRIBUTION_ID, PO_HEADER_ID,
PO_LINE_ID,LINE_LOCATION_ID, SET_OF_BOOKS_ID,
CODE_COMBINATION_ID,QUANTITY_ORDERED,
DISTRIBUTION_NUM
contains accounting
distribution information fora purchase order shipment line.You need one row for
each distribution line you attach to a purchase order
shipment.
There
are four types of documents using distributions in Oracle Purchasing:
Standard Purchase Orders, Planned
Purchase Orders, Planned Purchase Order Releases, Blanket Purchase Order
Releases
includes
the destination type, requestor ID, quantity ordered and deliver–to location
for the distribution.
PO_RELEASES_ALL PO_RELEASE_ID, PO_HEADER_ID, RELEASE_NUM,
AGENT_ID,
RELEASE_DATE
contains
information about blanket and planned purchase order releases. You need one row
for each release you issue
for a
blanket or planned purchase order. Each row includes the buyer, date, release
status, and release number. Each release must have at least one purchase order
shipment
PO_VENDOR_CONTACTS VENDOR_CONTACT_ID,
VENDOR_SITE_ID
stores information about contacts for a supplier site. You
need one row for each supplier contact you define.
Each row includes the contact name and site.
PO_ACTION_HISTORY OBJECT_ID, OBJECT_TYPE_CODE ,
OBJECT_SUB_TYPE_CODE, SEQUENCE_NUM
information
about the approval and control history of your purchasing documents. There is
one record in
this table for each approval or control action an employee
takes on a purchase order, purchase agreement, release, or requisition.
stores
object_id -- Document header identifier,OBJECT_TYPE_CODE --- Document type, OBJECT_SUB_TYPE_CODE --Document subtype
SEQUENCE_NUM --Sequence of the approval or control action for a document
PO_REQ_DISTRIBUTIONS_ALL DISTRIBUTION_ID,
REQUISITION_LINE_ID, SET_OF_BOOKS_ID,
CODE_COMBINATION_ID,REQ_LINE_QUANTITY,
DISTRIBUTION_NUM
stores
information about the accounting distributions associated with each requisition
line.
PO_LINE_LOCATIONS_ALL LINE_LOCATION_ID, LAST_UPDATE_DATE,
LAST_UPDATED_BY, PO_HEADER_ID,
PO_LINE_ID, SHIPMENT_TYPE
contains
information about purchase order shipment schedules and blanket agreement price
breaks. You need one row for each
schedule or price break you attach to a document line. There are seven
types of documents that use shipment schedules:
RFQs,Quotations,Standard
purchase orders,Planned purchase orders,Planned purchase order releases,Blanket
purchase orders, Blanket purchase order releases
Each
row includes the location, quantity, and dates for each shipment schedule.
Oracle Purchasing uses
this information to record delivery schedule information for
purchase orders, and price break information for
blanket purchase orders, quotations and RFQs.
PO Interfaces
PO_HEADERS_INTERFACE
is the interface table that imports header information
from e– Commerce Gateway for blanket purchase orders and catalog quotations.
INTERFACE_HEADER_ID
BATCH_ID
INTERFACE_SOURCE_CODE
PO_LINES_INTERFACE
is the interface table that imports lines information
from e– commerce Gateway for blanket purchase orders and catalog quotations.
INTERFACE_LINE_ID
INTERFACE_HEADER_ID
ACTION NULL Action to be completed:
New or Add
GROUP_CODE (Null) Indicates the
grouping of the requisition lines
PO_DISTRIBUTIONS_INTERFACE
is the interface table that imports distribution
information from e– Commerce Gateway for blanket purchase orders and catalog
quotations.
INTERFACE_HEADER_ID
INTERFACE_LINE_ID
INTERFACE_DISTRIBUTION_ID
ORG_ID
PO_REQUISITIONS_INTERFACE_ALL
contains requisition information from other applications.
Import feature uses this information to
create new requisition headers, lines and distributions.
TRANSACTION_ID (PK) Transaction unique identifier
PROCESS_FLAG NULL Transaction processing state
PO_REQ_DIST_INTERFACE_ALL
Is the
interface table that creates multiple distributions using Requisition Import.
ACCRUAL_ACCOUNT_ID Unique identifier
for the General Ledger accrual account
ALLOCATION_TYPE Specifies the method
of allocation across distributions. Can be PERCENT.
ALLOCATION_VALUE Allocation split value
BATCH_ID Import batch identifier
BUDGET_ACCOUNT_ID Unique identifier for the General Ledger
budget account
CHARGE_ACCOUNT_ID Unique identifier for the General Ledger charge account
RCV_HEADERS_INTERFACE
is the
interface table that stores receiving header information.
HEADER_INTERFACE_ID Interface EDI header unique identifier
GROUP_ID NULL Interface group for set processing
EDI_CONTROL_NUM EDI transaction control number if data
is sent via EDI
PROCESSING_STATUS_CODE Processing status of the interface
header row
RECEIPT_SOURCE_CODE Source type of
the shipment
ASN_TYPE NULL The document type: values are
ASN, ASBN, or RECEIVE
TRANSACTION_TYPE The
transaction purpose code: values are
NEW, REPLACE, ADD,or CANCEL
RCV_LOTS_INTERFACE
Holds temporary
lot number transaction records for a parent record in the RCV_TRANSACTIONS_INTERFACE
table.
RCV_TRANSACTIONS_INTERFACE
stores
information about receiving transactions that are waiting to be processed by
the receiving transaction processor or were rejected due to an error when the transaction
processor attempted to process the transaction.
TRANSACTION_TYPE
TRANSACTION_DATE
PROCESSING_STATUS_CODE
Interface Table
--PO_REQUISITION_INTERFACE_ALL
Program Name to Launch the PO Import program
-Requisition Import program
In the first phase, the program validates your data and
derives or defaults additional information. The program generates an error message
for every validation that fails and creates a row
PO_REQUISITIONS_INTERFACE_ALL
It
contains requisition information from other applications. Each row includes all the information
necessary to create approved or
unapproved requisitions in Oracle Purchasing.
The
Oracle Purchasing Requisition Import feature uses this information to create
new requisition headers, lines and distributions.
PO_REQUISITIONS_INTERFACE_ALL
table
are identical to the corresponding columns in the
PO_REQUISITIONS_HEADERS_ALL,
PO_REQUISITION_LINES_ALL
and PO_REQ_DISTRIBUTIONS_ALL
tables.
Po_requisition_interface_all
INTERFACE_SOURCE_CODE
--VDP
,SOURCE_TYPE_CODE --INVENTORY
,DESTINATION_TYPE_CODE --EXPENSE
,AUTHORIZATION_STATUS --Status
Always Approved we will get ..
,REQ_NUMBER_SEGMENT1 --Request id
,PREPARER_ID -- ASSOCIATE ID comes from
VDP
,LINE_TYPE_ID
,LINE_TYPE --vArchar Requisition
line type name
,QUANTITY --Quantity
,UNIT_PRICE
,CHARGE_ACCOUNT_ID -- to be hard coded based on the
line type
,DESTINATION_ORGANIZATION_ID --v-org_id
,DELIVER_TO_LOCATION_ID -- location id
,DELIVER_TO_REQUESTOR_ID -- ASSOCIATE ID Same as Prepare_id
,ITEM_ID -- item
code
,ITEM_DESCRIPTION --Based on the item code description
is taken
,CATEGORY_ID
,UOM_CODE
,CURRENCY_CODE --if
this is supplied then next two should be filled
,RATE
,RATE_DATE
,RATE_TYPE
If you use Oracle Master Scheduling/MRP or a non– Oracle
MRP system with Oracle Purchasing, you may find that you need to reschedule
requisitions as your planning requirements change.
Reschedule Interface Table Since you have already loaded your requisitions into Oracle
Purchasing, you simply need to identify for Oracle Purchasing the requisition
lines you want to reschedule. After you identify each line to reschedule, you
can update the quantity and the need– by date for the corresponding requisition
line.
PO_RESCHEDULE_INTERFACE table for each change you want to make to a
requisition. Each row includes the requisition line identifier, the new
quantity, and the new need– by date for the requisition line. You run the
Requisition Reschedule program to implement the changes. Import Requisitions
from the External System to Oracle Purchasing Write a Import Program to load the external data Dump data into the some interface table .Validate the data through some PL/SQL
(Applying Business Logic---
Run Import Program
Requisition is imported and created as many
number
of requisition as successful records .
Others -if error then run exceptional report to see the
reason of failure.
PO Reports
Open
Purchase Orders Report (by Buyer)
The Open Purchase Orders Report (by Buyer) lists all or
specific open purchase orders that relate to buyers.
Overshipments
Report
The
Overshipments Report lists purchase order receipts with a quantity received
greater than the quantity ordered.
Location
Listing
The Location Listing shows internal organizations
locations and addresses. Purchasing lets you specify which locations you want
to review: Ship To, Bill To, Office, Internal, and Receiving.
Buyer
Listing
The Buyer Listing shows the buyer name, default
purchasing category, ship– to location, and effective dates of all buyers or a
selected set of buyers.
Blanket
and Planned PO Status Report
The Blanket and Planned PO Status report can be used to
review purchase order transactions for items you buy, using blanket purchase
agreements and planned purchase orders.
Cancelled
Requisitions Report
Use the Cancelled Requisitions Report to review
information on cancelled requisitions.
Invoice
Price Variance Report
The Invoice Price Variance Report shows the variance
between the invoice price and the purchase price for all inventory and work in process
related invoice distributions. Payables records invoice price variances when
the invoices are matched, approved, and posted.
Po Conversion Package
CREATE OR REPLACE PACKAGE BODY GEPS_PURCHASE_CONV AS
--G_BATCH_ID NUMBER;
--G_POXPOPDOI_REQUEST_ID number;
g_batch_id1 number;
g_batch_id2 number;
g_batch_id3 number;
g_batch_id4 number;
FUNCTION GET_APPLICATION_ID (P_APP_SHORT_NAME IN VARCHAR2)
RETURN NUMBER
IS
V_APP_ID NUMBER;
V_ERR_TEXT VARCHAR2(240);
BEGIN
SELECT APPLICATION_ID INTO V_APP_ID
FROM FND_APPLICATION
WHERE APPLICATION_SHORT_NAME = P_APP_SHORT_NAME;
RETURN(V_APP_ID);
END;
------------------------------------------------------------------------------------------------------
FUNCTION GET_RESP_ID (p_app_id IN NUMBER)
RETURN NUMBER
IS
v_responsibility_id NUMBER;
BEGIN
SELECT responsibility_id INTO v_responsibility_id
FROM FND_RESPONSIBILITY_VL
WHERE responsibility_name = 'Purchasing Super User'
AND application_id=p_app_id;
RETURN(v_responsibility_id);
END;
-------------------------------------------------------------------------------------------------------
PROCEDURE GEPS_PO_PRC (errbuf OUT VARCHAR2
,retcode OUT VARCHAR2
,p_from_po varchar2
,p_to_po varchar2
,p_batch_id number
,p_agent_id number)
AS
TYPE rec_gpd IS RECORD
( po GEPS_PO_DETAILS.po%type
,po_line GEPS_PO_DETAILS.po_line%type
,po_shipment GEPS_PO_DETAILS.po_shipment%type
);
TYPE p_gpd_tbl_type IS TABLE OF rec_gpd INDEX BY BINARY_INTEGER;
v_gpd_array p_gpd_tbl_type;
cursor po_header_cur(p_n01_op_unit number) is
SELECT poh.segment1 po,
poh.po_header_id, poh.ship_via_lookup_code,
poh.vendor_id, poh.vendor_site_id,
pvsa.vendor_site_code,poh.agent_id
FROM PO_HEADERS_ALL POH,
PO_VENDOR_SITES_ALL pvsa
WHERE poh.segment1 in (select distinct po from GEPS_PO_DETAILS where PO_TRANSFER_FLAG IS NULL and po between p_from_po and p_to_po)--and po='424360711')
AND poh.org_id = p_n01_op_unit
And poh.type_lookup_code = 'STANDARD'
AND poh.vendor_site_id = pvsa.vendor_site_id
And poh.org_id = pvsa.org_id;
CURSOR po_det_cur (p_h03_org_id IN NUMBER,p_po_header_id number, p_po_line number, p_po_shipment varchar2,p_n01_op_unit number)
IS
SELECT pol.line_num po_line, pll.shipment_num po_shipment,
pol.po_header_id,
pol.po_line_id, pol.item_id,
pll.line_location_id
FROM
PO_LINES_ALL POL,
PO_LINE_LOCATIONS_ALL PLL,
MTL_SYSTEM_ITEMS_B MSI
WHERE pol.po_header_id=p_po_header_id
AND pol.line_num = p_po_line
AND pol.po_line_id = pll.po_line_id
and pll.shipment_num = p_po_shipment
AND pol.org_id = p_n01_op_unit
AND msi.inventory_item_id = pol.item_id
AND msi.organization_id = p_h03_org_id;
/*AND msi.planner_code IN ('CAP1', 'CAP2', 'CAP3',
'HUNSA2',
'HUNSA1', 'SVCSHOP', 'HUNSA4',
'FSTM', 'FGAS', 'FGEN', 'FSAL', 'HAZ',
'MISC', 'NOR', 'GRE', 'SUPERSEDE1');
*/
v_op_unit_N01 ORG_ORGANIZATION_DEFINITIONS.operating_unit%TYPE;
v_op_unit_H03 ORG_ORGANIZATION_DEFINITIONS.operating_unit%TYPE;
v_org_id_N01 ORG_ORGANIZATION_DEFINITIONS.organization_id%TYPE;
v_org_id_H03 ORG_ORGANIZATION_DEFINITIONS.organization_id%TYPE;
v_vend_site_id_h03 po_vendor_sites_all.vendor_site_id%TYPE;
v_vend_id_h03 po_vendor_sites_all.vendor_id%TYPE;
v_vendor_contact_id po_vendor_contacts.vendor_contact_id%TYPE;
v_freight_H03 org_freight_tl.freight_code%TYPE;
v_ship_to_location_id hr_locations_all.location_id%TYPE;
v_date NUMBER ;--:= TO_CHAR(SYSDATE,'DDMMYYYYHH24MISS');
---vars for compilation status-------
l_request_number NUMBER;
l_phase VARCHAR2(20);
l_status VARCHAR2(20);
l_dev_phase VARCHAR2(20);
l_dev_status VARCHAR2(20);
l_message VARCHAR2(300);
l_retun_flag VARCHAR2(1);
l_bool_return BOOLEAN;
v_request_id NUMBER;
v_batch number;
v_po_header_interface_id number;
v_agent_id po_agents.agent_id%type;
BEGIN
--G_BATCH_ID:=v_date;
v_date:=p_batch_id;
BEGIN
SELECT operating_unit,organization_id
INTO v_op_unit_N01,v_org_id_N01
FROM ORG_ORGANIZATION_DEFINITIONS
WHERE organization_code = 'N01';
EXCEPTION
WHEN NO_DATA_FOUND THEN
FND_FILE.PUT_LINE(FND_FILE.LOG,'2'||SQLERRM );
END;
BEGIN
SELECT operating_unit,organization_id
INTO v_op_unit_H03,v_org_id_H03
FROM ORG_ORGANIZATION_DEFINITIONS
WHERE organization_code = 'H03';
EXCEPTION
WHEN NO_DATA_FOUND THEN
FND_FILE.PUT_LINE(FND_FILE.LOG,'3'||SQLERRM );
END;
BEGIN
SELECT location_id
INTO v_ship_to_location_id
FROM hr_locations_all
WHERE location_code = 'GAUSH03';
EXCEPTION
WHEN NO_DATA_FOUND
THEN v_ship_to_location_id := NULL;
END;
v_batch:=0;
for po_header_rec in po_header_cur(v_op_unit_N01)
loop
begin
select PO_HEADERS_INTERFACE_S.NEXTVAL
into v_po_header_interface_id
from dual ;
BEGIN
SELECT pvsa.vendor_site_id, pvsa.vendor_id
INTO v_vend_site_id_h03, v_vend_id_h03
FROM po_vendor_sites_all pvsa
WHERE pvsa.vendor_site_code = po_header_rec.vendor_site_code
AND pvsa.vendor_id = po_header_rec.vendor_id
AND pvsa.org_id = v_op_unit_H03;
BEGIN
SELECT pvc.vendor_contact_id
INTO v_vendor_contact_id
FROM po_vendor_contacts pvc
WHERE pvc.vendor_site_id = v_vend_site_id_h03
AND ROWNUM=1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_vendor_contact_id := NULL;
END;
BEGIN
SELECT freight_code
INTO v_freight_H03
FROM org_freight_tl
WHERE UPPER(freight_code) = UPPER(po_header_rec.ship_via_lookup_code)
AND organization_id = v_org_id_H03
AND LANGUAGE = 'US';
EXCEPTION WHEN OTHERS THEN
v_freight_H03 := NULL;
-- fnd_file.put_line(fnd_file.LOG,'9'||SQLERRM );
END;
begin
v_agent_id:=null;
SELECT pa.agent_id
into v_agent_id
FROM po_agents pa
,PER_ALL_PEOPLE_F paf
WHERE pa.agent_id=po_header_rec.agent_id
and paf.PERSON_ID=pa.agent_id
AND SYSDATE BETWEEN pa.start_date_active AND nvl(pa.end_date_active,sysdate+1)
and sysdate between paf.effective_start_date and nvl(paf.effective_end_date,sysdate+1);
if v_agent_id=16016 then
v_agent_id:=p_agent_id;
end if;
exception
when no_data_found then
v_agent_id:=p_agent_id;
end;
-- fnd_file.put_line(1,'headers int loop');
/********* Insert into Headers Interface Table ************/
INSERT INTO po_headers_interface(interface_header_id,
action,
org_id,
BATCH_ID,
document_type_code,
vendor_id,
vendor_site_code,
vendor_site_id,
vendor_contact_id,
--effective_date,
--expiration_date,
load_sourcing_rules_flag,
agent_id,
document_subtype,
currency_code,
ship_to_location,
--bill_to_location_id,
document_num,
comments,
reply_date,
approval_required_flag,
terms_id,
process_code,
vendor_doc_num,
from_rfq_num,
freight_terms,
fob,
freight_carrier,
reply_method,
note_to_vendor,
quote_warning_delay,
approval_status,
attribute_category,
attribute1,
attribute2,
attribute3,
attribute15--,
-- LAST_UPDATE_DATE,
-- LAST_UPDATED_BY,
-- CREATION_DATE,
-- CREATED_BY,
-- LAST_UPDATE_LOGIN
)
SELECT v_po_header_interface_id,--PO_HEADERS_INTERFACE_S.NEXTVAL,--interface_header_id,
'ADD',--action,
v_op_unit_H03,--org_id,
v_date,--BATCH_ID,
type_lookup_code,--document_type_code,
vendor_id,
po_header_rec.vendor_site_code,--vendor_site_code,
v_vend_site_id_H03,--vendor_site_id,
v_vendor_contact_id, --vendor_contact_id,
--SYSDATE, --effective_date,
--SYSDATE+365,--expiration_date,
'N',--load_sourcing_rules_flag,
v_agent_id,--agent_id,
NULL,--document_subtype,
currency_code,
'GAUSH03',--ship_to_location,
--bill_to_location_id,
NULL,--document_num,
comments,
reply_date,
approval_required_flag,
terms_id,
'PENDING',--process_code,
quote_vendor_quote_number,--vendor_doc_num,
from_header_id, --from_rfq_num,
freight_terms_lookup_code,--freight_terms,
fob_lookup_code,--fob,
v_freight_H03,--freight_carrier,
reply_method_lookup_code,--reply_method,
note_to_vendor,
quote_warning_delay,
'INCOMPLETE',--approval_status,
v_op_unit_H03,--attribute_category,
null,--attribute1,
null,--attribute2,
null,--attribute3,
po_header_id--, --attribute15,
-- SYSDATE, --LAST_UPDATE_DATE,
-- LAST_UPDATED_BY,
-- SYSDATE, --CREATION_DATE,
-- CREATED_BY,
-- LAST_UPDATE_LOGIN
FROM po_headers_all
WHERE po_header_id = po_header_rec.po_header_id;
begin
select po,po_line, po_shipment
BULK COLLECT INTO v_gpd_array
from GEPS_PO_DETAILS
where PO_TRANSFER_FLAG IS NULL
and po=po_header_rec.po;
exception
when no_data_found then
null;
end;
FOR i IN v_gpd_array.first ..v_gpd_array.last
loop
--fnd_file.put_line(1,'after array loop');
FOR po_det_rec IN po_det_cur (v_org_id_H03,po_header_rec.po_header_id,v_gpd_array(i).po_line,v_gpd_array(i).po_shipment,v_op_unit_N01)
LOOP
-- fnd_file.put_line(1,'In loop');
v_batch:=v_batch+1;
/********* Insert into Headers Interface Table ************/
/********* Insert into Lines Interface Table ************/
INSERT INTO po_lines_interface(interface_line_id,
interface_header_id,
action,
ship_to_organization_id,
ship_to_location_id,
item_id,
unit_price,
unit_of_measure,
document_num,
item_description,
line_num,
min_order_quantity,
max_order_quantity,
vendor_product_num,
note_to_vendor,
un_number_id,
quantity,
price_discount,
hazard_class_id,
item_revision,
line_type_id,
--line_attribute1,
line_attribute15,
shipment_attribute_category,
--effective_date,
-- expiration_date,
------- quantity_billed ,
shipment_num,
promised_date,
need_by_date,
note_to_receiver,
tax_name,
receive_close_tolerance,
invoice_close_tolerance,
days_early_receipt_allowed,
days_late_receipt_allowed,
receipt_days_exception_code,
qty_rcv_tolerance,
qty_rcv_exception_code,
enforce_ship_to_location_code,
shipment_attribute1,
shipment_attribute2,
shipment_attribute3,
shipment_attribute4,
shipment_attribute5,
shipment_attribute6,
SHIPMENT_ATTRIBUTE15--,
-- LAST_UPDATE_DATE,
-- LAST_UPDATED_BY,
-- CREATION_DATE,
-- CREATED_BY,
-- LAST_UPDATE_LOGIN
)
SELECT po_lines_interface_s.NEXTVAL,
v_po_header_interface_id,-- PO_HEADERS_INTERFACE_S.CURRVAL, --1369029
'ADD',
v_org_id_H03,
v_ship_to_location_id,
pol.item_id,
pol.unit_price,
pol.unit_meas_lookup_code,
NULL,-----rec_quot_headers.segment1,
pol.item_description,
pol.line_num,
pol.min_order_quantity,
pol.max_order_quantity,
pol.vendor_product_num,
'Replacement of PO# '||po_header_rec.po||' Line# '||pol.line_num,----pol.note_to_vendor,
-- po_header_rec.po||'.'||pol.line_num ||' '|| 'Replaced',----pol.note_to_vendor,
pol.un_number_id,
pol.quantity,
pll.price_discount,
pol.hazard_class_id,
pol.item_revision,
pol.line_type_id,
--'GEPSQUOTPOLINECONVADD',
pol.po_line_id,
v_op_unit_H03,
-- SYSDATE,
-- SYSDATE+365,
----- pol.quantity_billed ,
pll.shipment_num,
pll.promised_date,
pll.need_by_date,
pll.note_to_receiver,
pll.tax_name,
pll.receive_close_tolerance,
pll.invoice_close_tolerance,
pll.days_early_receipt_allowed,
pll.days_late_receipt_allowed,
pll.receipt_days_exception_code,
pll.qty_rcv_tolerance,
pll.qty_rcv_exception_code,
pll.enforce_ship_to_location_code,
pll.attribute1,
pll.attribute2,
pll.attribute3,
pll.attribute4,
pll.attribute5,
'MANUAL',--pll.attribute6,
pll.LINE_LOCATION_ID--,
-- SYSDATE,
-- pol.last_updated_by,
-- SYSDATE,
-- pol.created_by,
-- pol.last_update_login
FROM po_lines_all pol, po_line_locations_all pll
WHERE pol.po_line_id = pll.po_line_id
AND pll.line_location_id = po_det_rec.line_location_id;
-- fnd_file.put_line(1,'distributions int loop');
/********* Insert into Lines Interface Table ************/
/********* Insert into Distributions Interface Table ************/
INSERT INTO PO_DISTRIBUTIONS_INTERFACE
(INTERFACE_HEADER_ID,
INTERFACE_LINE_ID,
INTERFACE_DISTRIBUTION_ID,
PO_HEADER_ID,
PO_LINE_ID,
DISTRIBUTION_NUM,
ORG_ID,
QUANTITY_ORDERED,
CHARGE_ACCOUNT_ID,
QUANTITY_DELIVERED,
QUANTITY_BILLED,
QUANTITY_CANCELLED,
---- DESTINATION_TYPE_CODE,
----- DESTINATION_SUBINVENTORY,
REQ_HEADER_REFERENCE_NUM,
REQ_LINE_REFERENCE_NUM,
RATE_DATE,
attribute1,
-- LAST_UPDATE_DATE,
-- LAST_UPDATED_BY,
-- CREATION_DATE,
-- CREATED_BY,
-- LAST_UPDATE_LOGIN,
attribute15)
SELECT v_po_header_interface_id,--PO_HEADERS_INTERFACE_S.CURRVAL,
po_lines_interface_s.CURRVAL,
PO_DISTRIBUTIONS_INTERFACE_S.NEXTVAL,
po_header_id,
po_line_id,
DISTRIBUTION_NUM,
v_op_unit_H03,
QUANTITY_ORDERED,
null,--code_combination_id,
QUANTITY_DELIVERED,
QUANTITY_BILLED,
QUANTITY_CANCELLED,
-------- rec_disttribution.DESTINATION_TYPE_CODE,
--------- rec_disttribution.DESTINATION_SUBINVENTORY,
REQ_HEADER_REFERENCE_NUM,
REQ_LINE_REFERENCE_NUM,
RATE_DATE,
attribute1,
-- SYSDATE,
-- last_updated_by,
-- SYSDATE,
-- created_by,
-- last_update_login,
PO_DISTRIBUTION_ID
FROM po_distributions_all
WHERE po_header_id = po_header_rec.po_header_id
AND po_line_id = po_det_rec.po_line_id;
/********* Insert into Distributions Interface Table ************/
begin
UPDATE GEPS_PO_DETAILS
SET po_transfer_flag = 'SUCCESS'
,po_header_id = po_header_rec.po_header_id
, po_line_id = po_det_rec.po_line_id
, line_location_id = po_det_rec.line_location_id
WHERE po = po_header_rec.po
AND po_line = po_det_rec.po_line
AND po_shipment = po_det_rec.po_shipment;
exception
when others then
null;
fnd_file.put_line(fnd_file.LOG, 'when others then PO#'||po_header_rec.po||' Line # '||po_det_rec.po_line||' Shipment '||po_det_rec.po_shipment);
fnd_file.put_line(fnd_file.LOG, 'PO Header ID '||po_header_rec.po_header_id||' Line ID '||po_det_rec.po_line_id||' Line Location ID '||po_det_rec.line_location_id);
end;
if v_batch=1000 then
commit;
v_batch:=0;
end if;
END LOOP;
-- fnd_file.put_line(1,'distributions int loop');
END LOOP;--END OF v_gpd_array LOOP
EXCEPTION
WHEN NO_DATA_FOUND THEN
fnd_file.put_line(fnd_file.LOG, 'Vendor Site Validation Failed for New Org');
UPDATE geps_po_details
SET po_transfer_flag= 'E'
, error_msg = 'Vendor Site : '||po_header_rec.vendor_site_code||' not found'
WHERE po = po_header_rec.po;
END;
exception
WHEN no_data_found THEN
fnd_file.put_line(fnd_file.LOG, 'Error occured for sequence PO_HEADERS_INTERFACE_S.NEXTVAL ');
UPDATE geps_po_details
SET po_transfer_flag= 'E'
, error_msg = 'Error occured for sequence PO_HEADERS_INTERFACE_S.NEXTVAL '
WHERE po = po_header_rec.po;
end;
end loop;--po_header loop
COMMIT;
v_request_id := fnd_request.submit_request( 'PO'
,'POXPOPDOI'
,''
,SYSDATE
,FALSE
,NULL
,'STANDARD'
,''
,'N'
,NULL
,'INCOMPLETE'
,NULL
,V_DATE
,v_op_unit_H03
,NULL);
COMMIT;
-- G_POXPOPDOI_REQUEST_ID:=v_request_id;
l_bool_return := FND_CONCURRENT.WAIT_FOR_REQUEST(v_request_id
,5
,10000
,l_phase
,l_status
,l_dev_phase
,l_dev_status
,l_message);
IF l_bool_return THEN
IF (l_dev_phase = 'COMPLETE') THEN
IF (l_dev_status = 'NORMAL') THEN
FND_FILE.PUT_LINE(FND_FILE.LOG,'Request '||l_request_number||' Completed Normal...');
l_retun_flag :='S';
ELSIF (l_dev_status = 'ERROR') THEN
Fnd_File.PUT_LINE(Fnd_File.LOG,'Request '||l_request_number||' Completed Error...');
l_retun_flag :='E';
ELSIF (l_dev_status = 'WARNING') THEN
Fnd_File.PUT_LINE(Fnd_File.LOG,'Request '||l_request_number||' Completed Warning...');
l_retun_flag :='W';
END IF;
END IF;
END IF;
GEPS_UPDATE_STAGING(p_from_po,p_to_po,v_request_id);
-- GEPS_ERROR_RPT;
exception
when others then
fnd_file.put_line(1,'not working'||sqlerrm);
END GEPS_PO_PRC;
PROCEDURE GEPS_UPDATE_STAGING(p_from_po varchar2,p_to_po varchar2,p_request_id number)
IS
--cursor to pick up rec which are validated
CURSOR cur_po_det
IS SELECT ROWID,po,po_line, po_shipment, po_header_id, po_line_id, line_location_id
FROM geps_po_details
WHERE PO_TRANSFER_FLAG='SUCCESS'
and H03_PO_HEADER_ID is null
and po between p_from_po and p_to_po;
--cursor to tke up n01 PO data
/* CURSOR cur_lines_det(c_po VARCHAR2,c_PO_LINE NUMBER,c_PO_SHIPMENT NUMBER)
IS
SELECT pll.LINE_LOCATION_ID, pll.PO_LINE_ID
FROM
PO_HEADERS_ALL PHA,
PO_LINES_ALL PLA ,
PO_LINE_LOCATIONS_ALL PLL
WHERE pha.segment1=c_po
AND pha.po_header_id=pla.po_header_id
AND pla.LINE_NUM=c_PO_LINE
AND pll.po_header_id= pha.po_header_id
AND pll.PO_LINE_ID=pla.PO_LINE_ID
AND PLL.SHIPMENT_NUM=c_PO_SHIPMENT;*/
v_sql_errm VARCHAR2(128);
v_line_count NUMBER:=0;
sucess_flag NUMBER;
v_h03_line_location_id NUMBER;
v_h03_po_line_id NUMBER;
v_h03_po_header_id NUMBER;
v_h03_po NUMBER;
v_h03_line NUMBER;
V_N01_NOTE_TO_VENDOR VARCHAR2(240);
v_batch number;
v_conc_req_start_time Date;
BEGIN
v_batch:=0;
BEGIN
select ACTUAL_START_DATE
INTO v_conc_req_start_time
from fnd_concurrent_requests
where request_id=p_request_id;
exception
WHEN others THEN
NULL;
END;
FOR rec_cur_po_det IN cur_po_det
LOOP
v_batch:=v_batch+1;
-- FOR rec_cur_lines_det IN cur_lines_det(rec_cur_po_det.PO,rec_cur_po_det.PO_LINE,rec_cur_po_det.PO_SHIPMENT)
-- LOOP
--FND_FILE.PUT_LINE(FND_FILE.LOG,'Error while updating Po:'||rec_cur_po_det.PO||'LINE:'||rec_cur_po_det.PO_LINE||'SHIPment:'||rec_cur_po_det.PO_SHIPMENT);
--check the POLLA table where attribute15 is the N01 PO Line Id.
-- fnd_file.put_line(1,'line location_id :' ||rec_cur_po_det.LINE_LOCATION_ID);
-- fnd_file.put_line(1,'v_conc_req_start_time :'||v_conc_req_start_time);
--fnd_file.put_line(1,'v_conc_req_start_time :'||to_char(v_conc_req_start_time,'DD-MON-YYYY HH24:MI:SS'));
BEGIN
SELECT line_location_id , po_line_id, po_header_id
INTO v_h03_line_location_id,v_h03_po_line_id,v_h03_po_header_id
FROM PO_LINE_LOCATIONS_ALL
WHERE attribute15=rec_cur_po_det.LINE_LOCATION_ID
And last_update_date>v_conc_req_start_time
AND ROWNUM=1;
sucess_flag:=1;
FND_FILE.PUT_LINE(FND_FILE.LOG,v_h03_line_location_id||'.'||v_h03_po_line_id||'.'||v_h03_po_header_id );
EXCEPTION
WHEN NO_DATA_FOUND THEN
-- fnd_file.put_line(1,'no data found');
sucess_flag:=0;
v_h03_line_location_id:=NULL;
v_h03_po_line_id:=NULL;
v_h03_po_header_id:=NULL;
WHEN OTHERS THEN
-- fnd_file.put_line(1,'no others');
sucess_flag:=0;
v_h03_line_location_id:=NULL;
v_h03_po_line_id:=NULL;
v_h03_po_header_id:=NULL;
END;
-- fND_FILE.PUT_LINE(FND_FILE.LOG,'po created ');
IF sucess_flag >0 THEN
--update the N01 PO line with note to vendor as H03 PO# . Line#
-- fND_FILE.PUT_LINE(FND_FILE.LOG,'cancel the po');
BEGIN
SELECT poha.segment1,pola.line_num
INTO v_h03_po, v_h03_line
FROM po_headers_all poha, po_lines_all pola
WHERE poha.po_header_id=v_h03_po_header_id
AND pola.po_line_id=v_h03_po_line_id
AND poha.po_header_id=pola.po_header_id;
EXCEPTION
WHEN OTHERS THEN
v_h03_po:=NULL;
v_h03_line:=NULL;
FND_FILE.PUT_LINE(FND_FILE.LOG,'Error while finding v_h03_po Po:'||SQLERRM);
END;
FND_FILE.PUT_LINE(FND_FILE.LOG,v_h03_po||'.'||v_h03_line );
v_n01_note_to_vendor:='Replaced by PO# '||v_h03_po||' Line# '||v_h03_line;
FND_FILE.PUT_LINE(FND_FILE.LOG,v_n01_note_to_vendor);
BEGIN
FOR po_rec IN(
SELECT po.ROWID, po.*
FROM PO_LINES po
WHERE po.po_line_id = rec_cur_po_det.po_line_id) LOOP
PO_LINES_PKG_SUD.UPDATE_ROW
( X_Rowid => po_rec.ROWID
, X_Po_Line_Id => po_rec.Po_Line_Id
, X_Last_Update_Date => SYSDATE
, X_Last_Updated_By => FND_GLOBAL.USER_ID
, X_Po_Header_Id => po_rec.Po_Header_Id
, X_Line_Type_Id => po_rec.Line_Type_Id
, X_Line_Num => po_rec.Line_Num
, X_Last_Update_Login => FND_GLOBAL.LOGIN_ID
, X_Item_Id => po_rec.Item_Id
, X_Item_Revision => po_rec.Item_Revision
, X_Category_Id => po_rec.Category_Id
, X_Item_Description => po_rec.Item_Description
, X_Unit_Meas_Lookup_Code => po_rec.Unit_Meas_Lookup_Code
, X_Quantity_Committed => po_rec.Quantity_Committed
, X_Committed_Amount => po_rec.Committed_Amount
, X_Allow_Price_Override_Flag => po_rec.Allow_Price_Override_Flag
, X_Not_To_Exceed_Price => po_rec.Not_To_Exceed_Price
, X_List_Price_Per_Unit => po_rec.List_Price_Per_Unit
, X_Unit_Price => po_rec.Unit_Price
, X_Quantity => po_rec.Quantity
, X_Un_Number_Id => po_rec.Un_Number_Id
, X_Hazard_Class_Id => po_rec.Hazard_Class_Id
, X_Note_To_Vendor => v_n01_note_to_vendor-----<<<------
, X_From_Header_Id => po_rec.From_Header_Id
, X_From_Line_Id => po_rec.From_Line_Id
, X_Min_Order_Quantity => po_rec.Min_Order_Quantity
, X_Max_Order_Quantity => po_rec.Max_Order_Quantity
, X_Qty_Rcv_Tolerance => po_rec.Qty_Rcv_Tolerance
, X_Over_Tolerance_Error_Flag => po_rec.Over_Tolerance_Error_Flag
, X_Market_Price => po_rec.Market_Price
, X_Unordered_Flag => po_rec.Unordered_Flag
, X_Closed_Flag => po_rec.Closed_Flag
, X_User_Hold_Flag => po_rec.User_Hold_Flag
, X_Cancel_Flag => po_rec.Cancel_Flag
, X_Cancelled_By => po_rec.Cancelled_By
, X_Cancel_Date => po_rec.Cancel_Date
, X_Cancel_Reason => po_rec.Cancel_Reason
, X_Firm_Status_Lookup_Code => po_rec.Firm_Status_Lookup_Code
, X_Firm_Date => po_rec.Firm_Date
, X_Vendor_Product_Num => po_rec.Vendor_Product_Num
, X_Contract_Num => po_rec.Contract_Num
, X_Taxable_Flag => po_rec.Taxable_Flag
, X_Tax_Code_Id => po_rec.Tax_Code_Id
, X_Type_1099 => po_rec.Type_1099
, X_Capital_Expense_Flag => po_rec.Capital_Expense_Flag
, X_Negotiated_By_Preparer_Flag => po_rec.Negotiated_By_Preparer_Flag
, X_Attribute_Category => po_rec.Attribute_Category
, X_Attribute1 => po_rec.Attribute1
, X_Attribute2 => po_rec.Attribute2
, X_Attribute3 => po_rec.Attribute3
, X_Attribute4 => po_rec.Attribute4
, X_Attribute5 => po_rec.Attribute5
, X_Attribute6 => po_rec.Attribute6
, X_Attribute7 => po_rec.Attribute7
, X_Attribute8 => po_rec.Attribute8
, X_Attribute9 => po_rec.Attribute9
, X_Attribute10 => po_rec.Attribute10
, X_Reference_Num => po_rec.Reference_Num
, X_Attribute11 => po_rec.Attribute11
, X_Attribute12 => po_rec.Attribute12
, X_Attribute13 => po_rec.Attribute13
, X_Attribute14 => po_rec.Attribute14
, X_Attribute15 => po_rec.Attribute15
, X_Min_Release_Amount => po_rec.Min_Release_Amount
, X_Price_Type_Lookup_Code => po_rec.Price_Type_Lookup_Code
, X_Closed_Code => po_rec.Closed_Code
, X_Price_Break_Lookup_Code => po_rec.Price_Break_Lookup_Code
, X_Ussgl_Transaction_Code => po_rec.Ussgl_Transaction_Code
, X_Government_Context => po_rec.Government_Context
, X_Closed_Date => po_rec.Closed_Date
, X_Closed_Reason => po_rec.Closed_Reason
, X_Closed_By => po_rec.Closed_By
, X_Transaction_Reason_Code => po_rec.Transaction_Reason_Code
, X_Global_Attribute_Category => po_rec.Global_Attribute_Category
, X_Global_Attribute1 => po_rec.Global_Attribute1
, X_Global_Attribute2 => po_rec.Global_Attribute2
, X_Global_Attribute3 => po_rec.Global_Attribute3
, X_Global_Attribute4 => po_rec.Global_Attribute4
, X_Global_Attribute5 => po_rec.Global_Attribute5
, X_Global_Attribute6 => po_rec.Global_Attribute6
, X_Global_Attribute7 => po_rec.Global_Attribute7
, X_Global_Attribute8 => po_rec.Global_Attribute8
, X_Global_Attribute9 => po_rec.Global_Attribute9
, X_Global_Attribute10 => po_rec.Global_Attribute10
, X_Global_Attribute11 => po_rec.Global_Attribute11
, X_Global_Attribute12 => po_rec.Global_Attribute12
, X_Global_Attribute13 => po_rec.Global_Attribute13
, X_Global_Attribute14 => po_rec.Global_Attribute14
, X_Global_Attribute15 => po_rec.Global_Attribute15
, X_Global_Attribute16 => po_rec.Global_Attribute16
, X_Global_Attribute17 => po_rec.Global_Attribute17
, X_Global_Attribute18 => po_rec.Global_Attribute18
, X_Global_Attribute19 => po_rec.Global_Attribute19
, X_Global_Attribute20 => po_rec.Global_Attribute20
, X_Expiration_Date => po_rec.Expiration_Date
, X_Base_Uom => po_rec.Base_Uom
, X_Base_Qty => po_rec.Base_Qty
, X_Secondary_Uom => po_rec.Secondary_Uom
, X_Secondary_Qty => po_rec.Secondary_Qty
, X_Qc_Grade => po_rec.Qc_Grade
, P_MANUAL_PRICE_CHANGE_FLAG => po_rec.MANUAL_PRICE_CHANGE_FLAG
);
END LOOP;
-- COMMIT;
--Geps_Po_Approval_Pkg.GEPS_PO_UPDATE_LINE(rec_cur_lines_det.po_line_id, v_n01_note_to_vendor);
EXCEPTION
WHEN OTHERS THEN
FND_FILE.PUT_LINE(FND_FILE.LOG,'Error while updating the n01 po lines:'||SQLERRM);
END;
BEGIN
UPDATE geps_po_details
SET PO_TRANSFER_FLAG='SUCCESS', comments=v_n01_note_to_vendor
,H03_PO_HEADER_ID=v_h03_po_header_id,H03_PO_LINE_ID=v_h03_po_line_id
WHERE ROWID=rec_cur_po_det.ROWID;
COMMIT;
EXCEPTION WHEN OTHERS THEN
v_sql_errm := SQLERRM;
FND_FILE.PUT_LINE(FND_FILE.LOG,'Error while updating Po:'||rec_cur_po_det.PO);
END;
ELSE
BEGIN
UPDATE geps_po_details
SET PO_TRANSFER_FLAG='FAILED'
WHERE ROWID=rec_cur_po_det.ROWID;
COMMIT;
EXCEPTION WHEN OTHERS THEN
v_sql_errm := SQLERRM;
FND_FILE.PUT_LINE(FND_FILE.LOG,'Error while updating Po:'||rec_cur_po_det.PO||'LINE:'||rec_cur_po_det.PO_LINE||'SHIPment:'||rec_cur_po_det.PO_SHIPMENT);
END;
END IF;
-- END LOOP;
if v_batch=1000 then
commit;
v_batch:=0;
end if;
END LOOP;
commit;
END GEPS_UPDATE_STAGING;
--+--------------------------------------------------------------------------------------------------------------------------+--
PROCEDURE GEPS_ERROR_RPT IS
CURSOR cur_header is
select distinct INTERFACE_HEADER_ID
from po_headers_interface
where batch_id in (g_batch_id1,g_batch_id2,g_batch_id3,g_batch_id4)
and process_code<>'ACCEPTED';
CURSOR cur_quot_err(p_interface_header_id number) IS
SELECT segment1
FROM po_headers_all
WHERE po_header_id in
(select po_header_id from po_lines_all where po_line_id in
(select Line_attribute15 from po_lines_interface where INTERFACE_HEADER_ID = p_interface_header_id));
CURSOR cur_header_err(p_interface_header_id number)
IS
SELECT distinct COLUMN_NAME,ERROR_MESSAGE
FROM po_interface_errors
WHERE INTERFACE_HEADER_ID =p_interface_header_id;
cursor cur_custom_error is
select po,error_msg
from geps_po_details
where po_transfer_flag= 'E';
cursor cur_success_po is
select distinct po,po_line,comments
from GEPS_PO_DETAILS
where PO_TRANSFER_FLAG='SUCCESS';
v_total number;
v_success_total number;
v_custom_count number;
v_interface_count number;
BEGIN
select count(1)
into v_total
from GEPS_PO_DETAILS;
fnd_file.put_line(2,'Total Number of records in staging table '||v_total);
fnd_file.put_line(2,' ');
select count(1)
into v_success_total
from GEPS_PO_DETAILS
where PO_TRANSFER_FLAG='SUCCESS';
fnd_file.put_line(2,'Total Number of records successfully processed '||v_success_total);
fnd_file.put_line(2,' ');
fnd_file.put_line(2,'Records successfully processed are'||v_success_total);
for rec_success_po in cur_success_po
loop
fnd_file.put_line(2,'N02 po# ' ||rec_success_po.po||' N02 Line num '||rec_success_po.po_line ||' '||rec_success_po.comments);
end loop;-- end of rec_success_po
select count(1)
into v_custom_count
from GEPS_PO_DETAILS
where PO_TRANSFER_FLAG='E';
fnd_file.put_line(2,' ');
fnd_file.put_line(2,'Number of records failed due to custom validation '||v_custom_count);
fnd_file.put_line(2,' ');
fnd_file.put_line(2,'Records failed due to custom validation are');
for rec_custom_error in cur_custom_error
loop
fnd_file.put_line(2,'PO# '||rec_custom_error.po||'Error '||rec_custom_error.error_msg);
end loop; --end of rec_custom_error
select count(1)
into v_interface_count
from GEPS_PO_DETAILS
where PO_TRANSFER_FLAG='FAILED';
fnd_file.put_line(2,' ');
fnd_file.put_line(2,'Number of records failed in interface table '||v_interface_count);
fnd_file.put_line(2,' ');
fnd_file.put_line(2,'Records failed in interface table are ');
for rec_header in cur_header
loop
for rec_quot_err in cur_quot_err(rec_header.interface_header_id)
loop
for rec_header_err in cur_header_err(rec_header.interface_header_id)
loop
fnd_file.put_line(2,'PO# '||rec_quot_err.segment1||' COLUMN '||rec_header_err.COLUMN_NAME||'Error '||rec_header_err.ERROR_MESSAGE);
end loop;-- end of rec_header_err
end loop;-- end of rec_quot_err
end loop; ---end of rec_header
END GEPS_ERROR_RPT;
procedure geps_process_po(ERRBUF OUT VARCHAR,RETCODE OUT NUMBER,p_agent_id number)
IS
TYPE rec_po IS RECORD
( po GEPS_PO_DETAILS.po%type
);
TYPE p_po_tbl_type IS TABLE OF rec_po INDEX BY BINARY_INTEGER;
v_po_array p_po_tbl_type;
-- v_po_array p_inventory_item_tbl_type;
-- v_gim_id mtl_parameters.organization_id%TYPE;
v_break number;
v_break_first number;
v_break_last number:=0;
from_po GEPS_PO_DETAILS.po%type;
to_po GEPS_PO_DETAILS.po%type;
v_resp_appl_id NUMBER := FND_PROFILE.VALUE('RESP_APPL_ID');
v_resp_id NUMBER := FND_PROFILE.VALUE('RESP_ID');
v_user_id NUMBER := FND_PROFILE.VALUE('USER_ID');
v_request1 number;
v_request2 number;
v_request3 number;
v_request4 number;
V_INTERVAL NUMBER := 3; --seconds
V_PHASE VARCHAR2 (240);
V_STATUS VARCHAR2 (240);
V_REQUEST_PHASE VARCHAR2 (240);
V_REQUEST_STATUS VARCHAR2 (240);
V_FINISHED BOOLEAN;
V_MESSAGE VARCHAR2 (1000);
-- v_number_records number;
v_agent_id number;
BEGIN
v_agent_id:=p_agent_id;
FND_GLOBAL.APPS_INITIALIZE(v_user_id,v_resp_id,v_resp_appl_id);
begin
execute immediate 'analyze table apps.geps_po_details compute statistics';
exception
when others then
null;
end;
g_batch_id1:=to_number(TO_CHAR(SYSDATE,'DDMMYYYYHH24MISS')||1);
g_batch_id2:=to_number(TO_CHAR(SYSDATE,'DDMMYYYYHH24MISS')||2);
g_batch_id3:=to_number(TO_CHAR(SYSDATE,'DDMMYYYYHH24MISS')||3);
g_batch_id4:=to_number(TO_CHAR(SYSDATE,'DDMMYYYYHH24MISS')||4);
begin
select distinct po
BULK COLLECT INTO v_po_array
from GEPS_PO_DETAILS
where PO_TRANSFER_FLAG IS NULL
order by po;
exception
when no_data_found then
null;
end;
--fnd_file.put_line(1,' No of records : '||v_inventory_item_array.last);
if (v_po_array.last)<4 br="br" then="then"> v_break_first:=v_po_array.first;
from_po:=v_po_array(v_break_first).po;
v_break_last:=v_po_array.last;
to_po:=v_po_array(v_break_last).po;
else
v_break :=floor(v_po_array.last/4);
-- fnd_file.put_line(1,' No of v_break records : '||v_break );
v_break_first:=v_break_last+1;
from_po:=v_po_array(v_break_first).po;
v_break_last:=v_break_last+v_break;
to_po:=v_po_array(v_break_last).po;
end if;
--fnd_file.put_line(1,' from_po : '||from_po);
--fnd_file.put_line(1,' to_po : '||to_po);
--to_number(TO_CHAR(SYSDATE,'DDMMYYYYHH24MISS')||1);
v_request1:=FND_REQUEST.SUBMIT_REQUEST('GEPSPO','GEPS_PURCHASE_CONV',
'',
'',
FALSE,
from_po, to_po,g_batch_id1,v_agent_id);
commit;
--fnd_file.put_line(1,' from_po : '||from_po);
--fnd_file.put_line(1,' to_po : '||to_po);
if (v_po_array.last)>4 then
v_break_first:=v_break_last+1;
from_po:=v_po_array(v_break_first).po;
v_break_last:=v_break_last+v_break;
to_po:=v_po_array(v_break_last).po;
v_request2:=FND_REQUEST.SUBMIT_REQUEST('GEPSPO','GEPS_PURCHASE_CONV',
'',
'',
FALSE,
from_po, to_po,g_batch_id2,v_agent_id);
commit;
-- fnd_file.put_line(1,' request id : '||v_request2);
v_break_first:=v_break_last+1;
from_po:=v_po_array(v_break_first).po;
v_break_last:=v_break_last+v_break;
to_po:=v_po_array(v_break_last).po;
v_request3:=FND_REQUEST.SUBMIT_REQUEST('GEPSPO','GEPS_PURCHASE_CONV',
'',
'',
FALSE,
from_po, to_po,g_batch_id3,v_agent_id);
commit;
-- fnd_file.put_line(1,' request id : '||v_request3);
v_break_first:=v_break_last+1;
from_po:=v_po_array(v_break_first).po;
v_break_last:=v_po_array.last;
to_po:=v_po_array(v_break_last).po;
v_request4:=FND_REQUEST.SUBMIT_REQUEST('GEPSPO','GEPS_PURCHASE_CONV',
'',
'',
FALSE,
from_po, to_po,g_batch_id4,v_agent_id);
commit;
-- fnd_file.put_line(1,' request id : '||v_request4);
-- fnd_file.put_line(1,' to_po : '||to_po);
end if;
IF v_request1 =0 THEN
FND_FILE.PUT_LINE(FND_FILE.LOG, 'GEPS PLANNER PROCESS SUBMISSION IS FAILED ');
-- END IF;
ELSE
V_FINISHED :=FND_CONCURRENT.WAIT_FOR_REQUEST
(REQUEST_ID => v_request1,
INTERVAL => V_INTERVAL,
MAX_WAIT => 0,
PHASE => V_PHASE,
STATUS => V_STATUS,
DEV_PHASE => V_REQUEST_PHASE,
DEV_STATUS => V_REQUEST_STATUS,
MESSAGE => V_MESSAGE);
IF (UPPER(V_REQUEST_PHASE) = 'COMPLETE' AND UPPER(V_REQUEST_STATUS) = 'NORMAL') THEN
FND_FILE.PUT_LINE (FND_FILE.LOG, 'SUBMISSION OF GEPS PURCHASE ORDERS CONVERSION CONCURRENT REQUEST COMPLETED SUCCESSFULLY ....' || ' '|| TO_CHAR (v_request1));
-- END;
ELSE
FND_FILE.PUT_LINE (FND_FILE.LOG, 'SUBMISSION OF GEPS PURCHASE ORDERS CONVERSION PROGRAM COMPLETED WITH STATUS ' ||V_REQUEST_STATUS||' '|| V_MESSAGE|| ' '|| TO_CHAR (v_request1));
END IF;
end if;
if (v_po_array.last)>4 then
IF v_request2 =0 THEN
FND_FILE.PUT_LINE(FND_FILE.LOG, 'GEPS PURCHASE ORDERS CONVERSION SUBMISSION IS FAILED ');
-- END IF;
ELSE
V_FINISHED :=FND_CONCURRENT.WAIT_FOR_REQUEST
(REQUEST_ID => v_request2,
INTERVAL => V_INTERVAL,
MAX_WAIT => 0,
PHASE => V_PHASE,
STATUS => V_STATUS,
DEV_PHASE => V_REQUEST_PHASE,
DEV_STATUS => V_REQUEST_STATUS,
MESSAGE => V_MESSAGE);
IF (UPPER(V_REQUEST_PHASE) = 'COMPLETE' AND UPPER(V_REQUEST_STATUS) = 'NORMAL') THEN
FND_FILE.PUT_LINE (FND_FILE.LOG, 'SUBMISSION OF GEPS PURCHASE ORDERS CONVERSION CONCURRENT REQUEST COMPLETED SUCCESSFULLY ....' || ' '|| TO_CHAR (v_request2));
-- END;
ELSE
FND_FILE.PUT_LINE (FND_FILE.LOG, 'SUBMISSION OF GEPS PURCHASE ORDERS CONVERSION PROGRAM COMPLETED WITH STATUS ' ||V_REQUEST_STATUS||' '|| V_MESSAGE|| ' '|| TO_CHAR (v_request2));
END IF;
end if;
IF v_request3 =0 THEN
FND_FILE.PUT_LINE(FND_FILE.LOG, 'GEPS PURCHASE ORDERS CONVERSION SUBMISSION IS FAILED ');
-- END IF;
ELSE
V_FINISHED :=FND_CONCURRENT.WAIT_FOR_REQUEST
(REQUEST_ID => v_request3,
INTERVAL => V_INTERVAL,
MAX_WAIT => 0,
PHASE => V_PHASE,
STATUS => V_STATUS,
DEV_PHASE => V_REQUEST_PHASE,
DEV_STATUS => V_REQUEST_STATUS,
MESSAGE => V_MESSAGE);
IF (UPPER(V_REQUEST_PHASE) = 'COMPLETE' AND UPPER(V_REQUEST_STATUS) = 'NORMAL') THEN
FND_FILE.PUT_LINE (FND_FILE.LOG, 'SUBMISSION OF GEPS PURCHASE ORDERS CONVERSION CONCURRENT REQUEST COMPLETED SUCCESSFULLY ....' || ' '|| TO_CHAR (v_request3));
-- END;
ELSE
FND_FILE.PUT_LINE (FND_FILE.LOG, 'SUBMISSION OF GEPS PURCHASE ORDERS CONVERSION PROGRAM COMPLETED WITH STATUS ' ||V_REQUEST_STATUS||' '|| V_MESSAGE|| ' '|| TO_CHAR (v_request3));
END IF;
end if;
IF v_request4 =0 THEN
FND_FILE.PUT_LINE(FND_FILE.LOG, 'GEPS PURCHASE ORDERS CONVERSION SUBMISSION IS FAILED ');
-- END IF;
ELSE
V_FINISHED :=FND_CONCURRENT.WAIT_FOR_REQUEST
(REQUEST_ID => v_request4,
INTERVAL => V_INTERVAL,
MAX_WAIT => 0,
PHASE => V_PHASE,
STATUS => V_STATUS,
DEV_PHASE => V_REQUEST_PHASE,
DEV_STATUS => V_REQUEST_STATUS,
MESSAGE => V_MESSAGE);
IF (UPPER(V_REQUEST_PHASE) = 'COMPLETE' AND UPPER(V_REQUEST_STATUS) = 'NORMAL') THEN
FND_FILE.PUT_LINE (FND_FILE.LOG, 'SUBMISSION OF GEPS PURCHASE ORDERS CONVERSION CONCURRENT REQUEST COMPLETED SUCCESSFULLY ....' || ' '|| TO_CHAR (v_request4));
-- END;
ELSE
FND_FILE.PUT_LINE (FND_FILE.LOG, 'SUBMISSION OF GEPS PURCHASE ORDERS CONVERSION PROGRAM COMPLETED WITH STATUS ' ||V_REQUEST_STATUS||' '|| V_MESSAGE|| ' '|| TO_CHAR (v_request4));
END IF;
end if;
END IF;
--calling or error or sucess report;
GEPS_ERROR_RPT;
end GEPS_PROCESS_PO;
END GEPS_PURCHASE_CONV;
/4>
--G_BATCH_ID NUMBER;
--G_POXPOPDOI_REQUEST_ID number;
g_batch_id1 number;
g_batch_id2 number;
g_batch_id3 number;
g_batch_id4 number;
FUNCTION GET_APPLICATION_ID (P_APP_SHORT_NAME IN VARCHAR2)
RETURN NUMBER
IS
V_APP_ID NUMBER;
V_ERR_TEXT VARCHAR2(240);
BEGIN
SELECT APPLICATION_ID INTO V_APP_ID
FROM FND_APPLICATION
WHERE APPLICATION_SHORT_NAME = P_APP_SHORT_NAME;
RETURN(V_APP_ID);
END;
------------------------------------------------------------------------------------------------------
FUNCTION GET_RESP_ID (p_app_id IN NUMBER)
RETURN NUMBER
IS
v_responsibility_id NUMBER;
BEGIN
SELECT responsibility_id INTO v_responsibility_id
FROM FND_RESPONSIBILITY_VL
WHERE responsibility_name = 'Purchasing Super User'
AND application_id=p_app_id;
RETURN(v_responsibility_id);
END;
-------------------------------------------------------------------------------------------------------
PROCEDURE GEPS_PO_PRC (errbuf OUT VARCHAR2
,retcode OUT VARCHAR2
,p_from_po varchar2
,p_to_po varchar2
,p_batch_id number
,p_agent_id number)
AS
TYPE rec_gpd IS RECORD
( po GEPS_PO_DETAILS.po%type
,po_line GEPS_PO_DETAILS.po_line%type
,po_shipment GEPS_PO_DETAILS.po_shipment%type
);
TYPE p_gpd_tbl_type IS TABLE OF rec_gpd INDEX BY BINARY_INTEGER;
v_gpd_array p_gpd_tbl_type;
cursor po_header_cur(p_n01_op_unit number) is
SELECT poh.segment1 po,
poh.po_header_id, poh.ship_via_lookup_code,
poh.vendor_id, poh.vendor_site_id,
pvsa.vendor_site_code,poh.agent_id
FROM PO_HEADERS_ALL POH,
PO_VENDOR_SITES_ALL pvsa
WHERE poh.segment1 in (select distinct po from GEPS_PO_DETAILS where PO_TRANSFER_FLAG IS NULL and po between p_from_po and p_to_po)--and po='424360711')
AND poh.org_id = p_n01_op_unit
And poh.type_lookup_code = 'STANDARD'
AND poh.vendor_site_id = pvsa.vendor_site_id
And poh.org_id = pvsa.org_id;
CURSOR po_det_cur (p_h03_org_id IN NUMBER,p_po_header_id number, p_po_line number, p_po_shipment varchar2,p_n01_op_unit number)
IS
SELECT pol.line_num po_line, pll.shipment_num po_shipment,
pol.po_header_id,
pol.po_line_id, pol.item_id,
pll.line_location_id
FROM
PO_LINES_ALL POL,
PO_LINE_LOCATIONS_ALL PLL,
MTL_SYSTEM_ITEMS_B MSI
WHERE pol.po_header_id=p_po_header_id
AND pol.line_num = p_po_line
AND pol.po_line_id = pll.po_line_id
and pll.shipment_num = p_po_shipment
AND pol.org_id = p_n01_op_unit
AND msi.inventory_item_id = pol.item_id
AND msi.organization_id = p_h03_org_id;
/*AND msi.planner_code IN ('CAP1', 'CAP2', 'CAP3',
'HUNSA2',
'HUNSA1', 'SVCSHOP', 'HUNSA4',
'FSTM', 'FGAS', 'FGEN', 'FSAL', 'HAZ',
'MISC', 'NOR', 'GRE', 'SUPERSEDE1');
*/
v_op_unit_N01 ORG_ORGANIZATION_DEFINITIONS.operating_unit%TYPE;
v_op_unit_H03 ORG_ORGANIZATION_DEFINITIONS.operating_unit%TYPE;
v_org_id_N01 ORG_ORGANIZATION_DEFINITIONS.organization_id%TYPE;
v_org_id_H03 ORG_ORGANIZATION_DEFINITIONS.organization_id%TYPE;
v_vend_site_id_h03 po_vendor_sites_all.vendor_site_id%TYPE;
v_vend_id_h03 po_vendor_sites_all.vendor_id%TYPE;
v_vendor_contact_id po_vendor_contacts.vendor_contact_id%TYPE;
v_freight_H03 org_freight_tl.freight_code%TYPE;
v_ship_to_location_id hr_locations_all.location_id%TYPE;
v_date NUMBER ;--:= TO_CHAR(SYSDATE,'DDMMYYYYHH24MISS');
---vars for compilation status-------
l_request_number NUMBER;
l_phase VARCHAR2(20);
l_status VARCHAR2(20);
l_dev_phase VARCHAR2(20);
l_dev_status VARCHAR2(20);
l_message VARCHAR2(300);
l_retun_flag VARCHAR2(1);
l_bool_return BOOLEAN;
v_request_id NUMBER;
v_batch number;
v_po_header_interface_id number;
v_agent_id po_agents.agent_id%type;
BEGIN
--G_BATCH_ID:=v_date;
v_date:=p_batch_id;
BEGIN
SELECT operating_unit,organization_id
INTO v_op_unit_N01,v_org_id_N01
FROM ORG_ORGANIZATION_DEFINITIONS
WHERE organization_code = 'N01';
EXCEPTION
WHEN NO_DATA_FOUND THEN
FND_FILE.PUT_LINE(FND_FILE.LOG,'2'||SQLERRM );
END;
BEGIN
SELECT operating_unit,organization_id
INTO v_op_unit_H03,v_org_id_H03
FROM ORG_ORGANIZATION_DEFINITIONS
WHERE organization_code = 'H03';
EXCEPTION
WHEN NO_DATA_FOUND THEN
FND_FILE.PUT_LINE(FND_FILE.LOG,'3'||SQLERRM );
END;
BEGIN
SELECT location_id
INTO v_ship_to_location_id
FROM hr_locations_all
WHERE location_code = 'GAUSH03';
EXCEPTION
WHEN NO_DATA_FOUND
THEN v_ship_to_location_id := NULL;
END;
v_batch:=0;
for po_header_rec in po_header_cur(v_op_unit_N01)
loop
begin
select PO_HEADERS_INTERFACE_S.NEXTVAL
into v_po_header_interface_id
from dual ;
BEGIN
SELECT pvsa.vendor_site_id, pvsa.vendor_id
INTO v_vend_site_id_h03, v_vend_id_h03
FROM po_vendor_sites_all pvsa
WHERE pvsa.vendor_site_code = po_header_rec.vendor_site_code
AND pvsa.vendor_id = po_header_rec.vendor_id
AND pvsa.org_id = v_op_unit_H03;
BEGIN
SELECT pvc.vendor_contact_id
INTO v_vendor_contact_id
FROM po_vendor_contacts pvc
WHERE pvc.vendor_site_id = v_vend_site_id_h03
AND ROWNUM=1;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_vendor_contact_id := NULL;
END;
BEGIN
SELECT freight_code
INTO v_freight_H03
FROM org_freight_tl
WHERE UPPER(freight_code) = UPPER(po_header_rec.ship_via_lookup_code)
AND organization_id = v_org_id_H03
AND LANGUAGE = 'US';
EXCEPTION WHEN OTHERS THEN
v_freight_H03 := NULL;
-- fnd_file.put_line(fnd_file.LOG,'9'||SQLERRM );
END;
begin
v_agent_id:=null;
SELECT pa.agent_id
into v_agent_id
FROM po_agents pa
,PER_ALL_PEOPLE_F paf
WHERE pa.agent_id=po_header_rec.agent_id
and paf.PERSON_ID=pa.agent_id
AND SYSDATE BETWEEN pa.start_date_active AND nvl(pa.end_date_active,sysdate+1)
and sysdate between paf.effective_start_date and nvl(paf.effective_end_date,sysdate+1);
if v_agent_id=16016 then
v_agent_id:=p_agent_id;
end if;
exception
when no_data_found then
v_agent_id:=p_agent_id;
end;
-- fnd_file.put_line(1,'headers int loop');
/********* Insert into Headers Interface Table ************/
INSERT INTO po_headers_interface(interface_header_id,
action,
org_id,
BATCH_ID,
document_type_code,
vendor_id,
vendor_site_code,
vendor_site_id,
vendor_contact_id,
--effective_date,
--expiration_date,
load_sourcing_rules_flag,
agent_id,
document_subtype,
currency_code,
ship_to_location,
--bill_to_location_id,
document_num,
comments,
reply_date,
approval_required_flag,
terms_id,
process_code,
vendor_doc_num,
from_rfq_num,
freight_terms,
fob,
freight_carrier,
reply_method,
note_to_vendor,
quote_warning_delay,
approval_status,
attribute_category,
attribute1,
attribute2,
attribute3,
attribute15--,
-- LAST_UPDATE_DATE,
-- LAST_UPDATED_BY,
-- CREATION_DATE,
-- CREATED_BY,
-- LAST_UPDATE_LOGIN
)
SELECT v_po_header_interface_id,--PO_HEADERS_INTERFACE_S.NEXTVAL,--interface_header_id,
'ADD',--action,
v_op_unit_H03,--org_id,
v_date,--BATCH_ID,
type_lookup_code,--document_type_code,
vendor_id,
po_header_rec.vendor_site_code,--vendor_site_code,
v_vend_site_id_H03,--vendor_site_id,
v_vendor_contact_id, --vendor_contact_id,
--SYSDATE, --effective_date,
--SYSDATE+365,--expiration_date,
'N',--load_sourcing_rules_flag,
v_agent_id,--agent_id,
NULL,--document_subtype,
currency_code,
'GAUSH03',--ship_to_location,
--bill_to_location_id,
NULL,--document_num,
comments,
reply_date,
approval_required_flag,
terms_id,
'PENDING',--process_code,
quote_vendor_quote_number,--vendor_doc_num,
from_header_id, --from_rfq_num,
freight_terms_lookup_code,--freight_terms,
fob_lookup_code,--fob,
v_freight_H03,--freight_carrier,
reply_method_lookup_code,--reply_method,
note_to_vendor,
quote_warning_delay,
'INCOMPLETE',--approval_status,
v_op_unit_H03,--attribute_category,
null,--attribute1,
null,--attribute2,
null,--attribute3,
po_header_id--, --attribute15,
-- SYSDATE, --LAST_UPDATE_DATE,
-- LAST_UPDATED_BY,
-- SYSDATE, --CREATION_DATE,
-- CREATED_BY,
-- LAST_UPDATE_LOGIN
FROM po_headers_all
WHERE po_header_id = po_header_rec.po_header_id;
begin
select po,po_line, po_shipment
BULK COLLECT INTO v_gpd_array
from GEPS_PO_DETAILS
where PO_TRANSFER_FLAG IS NULL
and po=po_header_rec.po;
exception
when no_data_found then
null;
end;
FOR i IN v_gpd_array.first ..v_gpd_array.last
loop
--fnd_file.put_line(1,'after array loop');
FOR po_det_rec IN po_det_cur (v_org_id_H03,po_header_rec.po_header_id,v_gpd_array(i).po_line,v_gpd_array(i).po_shipment,v_op_unit_N01)
LOOP
-- fnd_file.put_line(1,'In loop');
v_batch:=v_batch+1;
/********* Insert into Headers Interface Table ************/
/********* Insert into Lines Interface Table ************/
INSERT INTO po_lines_interface(interface_line_id,
interface_header_id,
action,
ship_to_organization_id,
ship_to_location_id,
item_id,
unit_price,
unit_of_measure,
document_num,
item_description,
line_num,
min_order_quantity,
max_order_quantity,
vendor_product_num,
note_to_vendor,
un_number_id,
quantity,
price_discount,
hazard_class_id,
item_revision,
line_type_id,
--line_attribute1,
line_attribute15,
shipment_attribute_category,
--effective_date,
-- expiration_date,
------- quantity_billed ,
shipment_num,
promised_date,
need_by_date,
note_to_receiver,
tax_name,
receive_close_tolerance,
invoice_close_tolerance,
days_early_receipt_allowed,
days_late_receipt_allowed,
receipt_days_exception_code,
qty_rcv_tolerance,
qty_rcv_exception_code,
enforce_ship_to_location_code,
shipment_attribute1,
shipment_attribute2,
shipment_attribute3,
shipment_attribute4,
shipment_attribute5,
shipment_attribute6,
SHIPMENT_ATTRIBUTE15--,
-- LAST_UPDATE_DATE,
-- LAST_UPDATED_BY,
-- CREATION_DATE,
-- CREATED_BY,
-- LAST_UPDATE_LOGIN
)
SELECT po_lines_interface_s.NEXTVAL,
v_po_header_interface_id,-- PO_HEADERS_INTERFACE_S.CURRVAL, --1369029
'ADD',
v_org_id_H03,
v_ship_to_location_id,
pol.item_id,
pol.unit_price,
pol.unit_meas_lookup_code,
NULL,-----rec_quot_headers.segment1,
pol.item_description,
pol.line_num,
pol.min_order_quantity,
pol.max_order_quantity,
pol.vendor_product_num,
'Replacement of PO# '||po_header_rec.po||' Line# '||pol.line_num,----pol.note_to_vendor,
-- po_header_rec.po||'.'||pol.line_num ||' '|| 'Replaced',----pol.note_to_vendor,
pol.un_number_id,
pol.quantity,
pll.price_discount,
pol.hazard_class_id,
pol.item_revision,
pol.line_type_id,
--'GEPSQUOTPOLINECONVADD',
pol.po_line_id,
v_op_unit_H03,
-- SYSDATE,
-- SYSDATE+365,
----- pol.quantity_billed ,
pll.shipment_num,
pll.promised_date,
pll.need_by_date,
pll.note_to_receiver,
pll.tax_name,
pll.receive_close_tolerance,
pll.invoice_close_tolerance,
pll.days_early_receipt_allowed,
pll.days_late_receipt_allowed,
pll.receipt_days_exception_code,
pll.qty_rcv_tolerance,
pll.qty_rcv_exception_code,
pll.enforce_ship_to_location_code,
pll.attribute1,
pll.attribute2,
pll.attribute3,
pll.attribute4,
pll.attribute5,
'MANUAL',--pll.attribute6,
pll.LINE_LOCATION_ID--,
-- SYSDATE,
-- pol.last_updated_by,
-- SYSDATE,
-- pol.created_by,
-- pol.last_update_login
FROM po_lines_all pol, po_line_locations_all pll
WHERE pol.po_line_id = pll.po_line_id
AND pll.line_location_id = po_det_rec.line_location_id;
-- fnd_file.put_line(1,'distributions int loop');
/********* Insert into Lines Interface Table ************/
/********* Insert into Distributions Interface Table ************/
INSERT INTO PO_DISTRIBUTIONS_INTERFACE
(INTERFACE_HEADER_ID,
INTERFACE_LINE_ID,
INTERFACE_DISTRIBUTION_ID,
PO_HEADER_ID,
PO_LINE_ID,
DISTRIBUTION_NUM,
ORG_ID,
QUANTITY_ORDERED,
CHARGE_ACCOUNT_ID,
QUANTITY_DELIVERED,
QUANTITY_BILLED,
QUANTITY_CANCELLED,
---- DESTINATION_TYPE_CODE,
----- DESTINATION_SUBINVENTORY,
REQ_HEADER_REFERENCE_NUM,
REQ_LINE_REFERENCE_NUM,
RATE_DATE,
attribute1,
-- LAST_UPDATE_DATE,
-- LAST_UPDATED_BY,
-- CREATION_DATE,
-- CREATED_BY,
-- LAST_UPDATE_LOGIN,
attribute15)
SELECT v_po_header_interface_id,--PO_HEADERS_INTERFACE_S.CURRVAL,
po_lines_interface_s.CURRVAL,
PO_DISTRIBUTIONS_INTERFACE_S.NEXTVAL,
po_header_id,
po_line_id,
DISTRIBUTION_NUM,
v_op_unit_H03,
QUANTITY_ORDERED,
null,--code_combination_id,
QUANTITY_DELIVERED,
QUANTITY_BILLED,
QUANTITY_CANCELLED,
-------- rec_disttribution.DESTINATION_TYPE_CODE,
--------- rec_disttribution.DESTINATION_SUBINVENTORY,
REQ_HEADER_REFERENCE_NUM,
REQ_LINE_REFERENCE_NUM,
RATE_DATE,
attribute1,
-- SYSDATE,
-- last_updated_by,
-- SYSDATE,
-- created_by,
-- last_update_login,
PO_DISTRIBUTION_ID
FROM po_distributions_all
WHERE po_header_id = po_header_rec.po_header_id
AND po_line_id = po_det_rec.po_line_id;
/********* Insert into Distributions Interface Table ************/
begin
UPDATE GEPS_PO_DETAILS
SET po_transfer_flag = 'SUCCESS'
,po_header_id = po_header_rec.po_header_id
, po_line_id = po_det_rec.po_line_id
, line_location_id = po_det_rec.line_location_id
WHERE po = po_header_rec.po
AND po_line = po_det_rec.po_line
AND po_shipment = po_det_rec.po_shipment;
exception
when others then
null;
fnd_file.put_line(fnd_file.LOG, 'when others then PO#'||po_header_rec.po||' Line # '||po_det_rec.po_line||' Shipment '||po_det_rec.po_shipment);
fnd_file.put_line(fnd_file.LOG, 'PO Header ID '||po_header_rec.po_header_id||' Line ID '||po_det_rec.po_line_id||' Line Location ID '||po_det_rec.line_location_id);
end;
if v_batch=1000 then
commit;
v_batch:=0;
end if;
END LOOP;
-- fnd_file.put_line(1,'distributions int loop');
END LOOP;--END OF v_gpd_array LOOP
EXCEPTION
WHEN NO_DATA_FOUND THEN
fnd_file.put_line(fnd_file.LOG, 'Vendor Site Validation Failed for New Org');
UPDATE geps_po_details
SET po_transfer_flag= 'E'
, error_msg = 'Vendor Site : '||po_header_rec.vendor_site_code||' not found'
WHERE po = po_header_rec.po;
END;
exception
WHEN no_data_found THEN
fnd_file.put_line(fnd_file.LOG, 'Error occured for sequence PO_HEADERS_INTERFACE_S.NEXTVAL ');
UPDATE geps_po_details
SET po_transfer_flag= 'E'
, error_msg = 'Error occured for sequence PO_HEADERS_INTERFACE_S.NEXTVAL '
WHERE po = po_header_rec.po;
end;
end loop;--po_header loop
COMMIT;
v_request_id := fnd_request.submit_request( 'PO'
,'POXPOPDOI'
,''
,SYSDATE
,FALSE
,NULL
,'STANDARD'
,''
,'N'
,NULL
,'INCOMPLETE'
,NULL
,V_DATE
,v_op_unit_H03
,NULL);
COMMIT;
-- G_POXPOPDOI_REQUEST_ID:=v_request_id;
l_bool_return := FND_CONCURRENT.WAIT_FOR_REQUEST(v_request_id
,5
,10000
,l_phase
,l_status
,l_dev_phase
,l_dev_status
,l_message);
IF l_bool_return THEN
IF (l_dev_phase = 'COMPLETE') THEN
IF (l_dev_status = 'NORMAL') THEN
FND_FILE.PUT_LINE(FND_FILE.LOG,'Request '||l_request_number||' Completed Normal...');
l_retun_flag :='S';
ELSIF (l_dev_status = 'ERROR') THEN
Fnd_File.PUT_LINE(Fnd_File.LOG,'Request '||l_request_number||' Completed Error...');
l_retun_flag :='E';
ELSIF (l_dev_status = 'WARNING') THEN
Fnd_File.PUT_LINE(Fnd_File.LOG,'Request '||l_request_number||' Completed Warning...');
l_retun_flag :='W';
END IF;
END IF;
END IF;
GEPS_UPDATE_STAGING(p_from_po,p_to_po,v_request_id);
-- GEPS_ERROR_RPT;
exception
when others then
fnd_file.put_line(1,'not working'||sqlerrm);
END GEPS_PO_PRC;
PROCEDURE GEPS_UPDATE_STAGING(p_from_po varchar2,p_to_po varchar2,p_request_id number)
IS
--cursor to pick up rec which are validated
CURSOR cur_po_det
IS SELECT ROWID,po,po_line, po_shipment, po_header_id, po_line_id, line_location_id
FROM geps_po_details
WHERE PO_TRANSFER_FLAG='SUCCESS'
and H03_PO_HEADER_ID is null
and po between p_from_po and p_to_po;
--cursor to tke up n01 PO data
/* CURSOR cur_lines_det(c_po VARCHAR2,c_PO_LINE NUMBER,c_PO_SHIPMENT NUMBER)
IS
SELECT pll.LINE_LOCATION_ID, pll.PO_LINE_ID
FROM
PO_HEADERS_ALL PHA,
PO_LINES_ALL PLA ,
PO_LINE_LOCATIONS_ALL PLL
WHERE pha.segment1=c_po
AND pha.po_header_id=pla.po_header_id
AND pla.LINE_NUM=c_PO_LINE
AND pll.po_header_id= pha.po_header_id
AND pll.PO_LINE_ID=pla.PO_LINE_ID
AND PLL.SHIPMENT_NUM=c_PO_SHIPMENT;*/
v_sql_errm VARCHAR2(128);
v_line_count NUMBER:=0;
sucess_flag NUMBER;
v_h03_line_location_id NUMBER;
v_h03_po_line_id NUMBER;
v_h03_po_header_id NUMBER;
v_h03_po NUMBER;
v_h03_line NUMBER;
V_N01_NOTE_TO_VENDOR VARCHAR2(240);
v_batch number;
v_conc_req_start_time Date;
BEGIN
v_batch:=0;
BEGIN
select ACTUAL_START_DATE
INTO v_conc_req_start_time
from fnd_concurrent_requests
where request_id=p_request_id;
exception
WHEN others THEN
NULL;
END;
FOR rec_cur_po_det IN cur_po_det
LOOP
v_batch:=v_batch+1;
-- FOR rec_cur_lines_det IN cur_lines_det(rec_cur_po_det.PO,rec_cur_po_det.PO_LINE,rec_cur_po_det.PO_SHIPMENT)
-- LOOP
--FND_FILE.PUT_LINE(FND_FILE.LOG,'Error while updating Po:'||rec_cur_po_det.PO||'LINE:'||rec_cur_po_det.PO_LINE||'SHIPment:'||rec_cur_po_det.PO_SHIPMENT);
--check the POLLA table where attribute15 is the N01 PO Line Id.
-- fnd_file.put_line(1,'line location_id :' ||rec_cur_po_det.LINE_LOCATION_ID);
-- fnd_file.put_line(1,'v_conc_req_start_time :'||v_conc_req_start_time);
--fnd_file.put_line(1,'v_conc_req_start_time :'||to_char(v_conc_req_start_time,'DD-MON-YYYY HH24:MI:SS'));
BEGIN
SELECT line_location_id , po_line_id, po_header_id
INTO v_h03_line_location_id,v_h03_po_line_id,v_h03_po_header_id
FROM PO_LINE_LOCATIONS_ALL
WHERE attribute15=rec_cur_po_det.LINE_LOCATION_ID
And last_update_date>v_conc_req_start_time
AND ROWNUM=1;
sucess_flag:=1;
FND_FILE.PUT_LINE(FND_FILE.LOG,v_h03_line_location_id||'.'||v_h03_po_line_id||'.'||v_h03_po_header_id );
EXCEPTION
WHEN NO_DATA_FOUND THEN
-- fnd_file.put_line(1,'no data found');
sucess_flag:=0;
v_h03_line_location_id:=NULL;
v_h03_po_line_id:=NULL;
v_h03_po_header_id:=NULL;
WHEN OTHERS THEN
-- fnd_file.put_line(1,'no others');
sucess_flag:=0;
v_h03_line_location_id:=NULL;
v_h03_po_line_id:=NULL;
v_h03_po_header_id:=NULL;
END;
-- fND_FILE.PUT_LINE(FND_FILE.LOG,'po created ');
IF sucess_flag >0 THEN
--update the N01 PO line with note to vendor as H03 PO# . Line#
-- fND_FILE.PUT_LINE(FND_FILE.LOG,'cancel the po');
BEGIN
SELECT poha.segment1,pola.line_num
INTO v_h03_po, v_h03_line
FROM po_headers_all poha, po_lines_all pola
WHERE poha.po_header_id=v_h03_po_header_id
AND pola.po_line_id=v_h03_po_line_id
AND poha.po_header_id=pola.po_header_id;
EXCEPTION
WHEN OTHERS THEN
v_h03_po:=NULL;
v_h03_line:=NULL;
FND_FILE.PUT_LINE(FND_FILE.LOG,'Error while finding v_h03_po Po:'||SQLERRM);
END;
FND_FILE.PUT_LINE(FND_FILE.LOG,v_h03_po||'.'||v_h03_line );
v_n01_note_to_vendor:='Replaced by PO# '||v_h03_po||' Line# '||v_h03_line;
FND_FILE.PUT_LINE(FND_FILE.LOG,v_n01_note_to_vendor);
BEGIN
FOR po_rec IN(
SELECT po.ROWID, po.*
FROM PO_LINES po
WHERE po.po_line_id = rec_cur_po_det.po_line_id) LOOP
PO_LINES_PKG_SUD.UPDATE_ROW
( X_Rowid => po_rec.ROWID
, X_Po_Line_Id => po_rec.Po_Line_Id
, X_Last_Update_Date => SYSDATE
, X_Last_Updated_By => FND_GLOBAL.USER_ID
, X_Po_Header_Id => po_rec.Po_Header_Id
, X_Line_Type_Id => po_rec.Line_Type_Id
, X_Line_Num => po_rec.Line_Num
, X_Last_Update_Login => FND_GLOBAL.LOGIN_ID
, X_Item_Id => po_rec.Item_Id
, X_Item_Revision => po_rec.Item_Revision
, X_Category_Id => po_rec.Category_Id
, X_Item_Description => po_rec.Item_Description
, X_Unit_Meas_Lookup_Code => po_rec.Unit_Meas_Lookup_Code
, X_Quantity_Committed => po_rec.Quantity_Committed
, X_Committed_Amount => po_rec.Committed_Amount
, X_Allow_Price_Override_Flag => po_rec.Allow_Price_Override_Flag
, X_Not_To_Exceed_Price => po_rec.Not_To_Exceed_Price
, X_List_Price_Per_Unit => po_rec.List_Price_Per_Unit
, X_Unit_Price => po_rec.Unit_Price
, X_Quantity => po_rec.Quantity
, X_Un_Number_Id => po_rec.Un_Number_Id
, X_Hazard_Class_Id => po_rec.Hazard_Class_Id
, X_Note_To_Vendor => v_n01_note_to_vendor-----<<<------
, X_From_Header_Id => po_rec.From_Header_Id
, X_From_Line_Id => po_rec.From_Line_Id
, X_Min_Order_Quantity => po_rec.Min_Order_Quantity
, X_Max_Order_Quantity => po_rec.Max_Order_Quantity
, X_Qty_Rcv_Tolerance => po_rec.Qty_Rcv_Tolerance
, X_Over_Tolerance_Error_Flag => po_rec.Over_Tolerance_Error_Flag
, X_Market_Price => po_rec.Market_Price
, X_Unordered_Flag => po_rec.Unordered_Flag
, X_Closed_Flag => po_rec.Closed_Flag
, X_User_Hold_Flag => po_rec.User_Hold_Flag
, X_Cancel_Flag => po_rec.Cancel_Flag
, X_Cancelled_By => po_rec.Cancelled_By
, X_Cancel_Date => po_rec.Cancel_Date
, X_Cancel_Reason => po_rec.Cancel_Reason
, X_Firm_Status_Lookup_Code => po_rec.Firm_Status_Lookup_Code
, X_Firm_Date => po_rec.Firm_Date
, X_Vendor_Product_Num => po_rec.Vendor_Product_Num
, X_Contract_Num => po_rec.Contract_Num
, X_Taxable_Flag => po_rec.Taxable_Flag
, X_Tax_Code_Id => po_rec.Tax_Code_Id
, X_Type_1099 => po_rec.Type_1099
, X_Capital_Expense_Flag => po_rec.Capital_Expense_Flag
, X_Negotiated_By_Preparer_Flag => po_rec.Negotiated_By_Preparer_Flag
, X_Attribute_Category => po_rec.Attribute_Category
, X_Attribute1 => po_rec.Attribute1
, X_Attribute2 => po_rec.Attribute2
, X_Attribute3 => po_rec.Attribute3
, X_Attribute4 => po_rec.Attribute4
, X_Attribute5 => po_rec.Attribute5
, X_Attribute6 => po_rec.Attribute6
, X_Attribute7 => po_rec.Attribute7
, X_Attribute8 => po_rec.Attribute8
, X_Attribute9 => po_rec.Attribute9
, X_Attribute10 => po_rec.Attribute10
, X_Reference_Num => po_rec.Reference_Num
, X_Attribute11 => po_rec.Attribute11
, X_Attribute12 => po_rec.Attribute12
, X_Attribute13 => po_rec.Attribute13
, X_Attribute14 => po_rec.Attribute14
, X_Attribute15 => po_rec.Attribute15
, X_Min_Release_Amount => po_rec.Min_Release_Amount
, X_Price_Type_Lookup_Code => po_rec.Price_Type_Lookup_Code
, X_Closed_Code => po_rec.Closed_Code
, X_Price_Break_Lookup_Code => po_rec.Price_Break_Lookup_Code
, X_Ussgl_Transaction_Code => po_rec.Ussgl_Transaction_Code
, X_Government_Context => po_rec.Government_Context
, X_Closed_Date => po_rec.Closed_Date
, X_Closed_Reason => po_rec.Closed_Reason
, X_Closed_By => po_rec.Closed_By
, X_Transaction_Reason_Code => po_rec.Transaction_Reason_Code
, X_Global_Attribute_Category => po_rec.Global_Attribute_Category
, X_Global_Attribute1 => po_rec.Global_Attribute1
, X_Global_Attribute2 => po_rec.Global_Attribute2
, X_Global_Attribute3 => po_rec.Global_Attribute3
, X_Global_Attribute4 => po_rec.Global_Attribute4
, X_Global_Attribute5 => po_rec.Global_Attribute5
, X_Global_Attribute6 => po_rec.Global_Attribute6
, X_Global_Attribute7 => po_rec.Global_Attribute7
, X_Global_Attribute8 => po_rec.Global_Attribute8
, X_Global_Attribute9 => po_rec.Global_Attribute9
, X_Global_Attribute10 => po_rec.Global_Attribute10
, X_Global_Attribute11 => po_rec.Global_Attribute11
, X_Global_Attribute12 => po_rec.Global_Attribute12
, X_Global_Attribute13 => po_rec.Global_Attribute13
, X_Global_Attribute14 => po_rec.Global_Attribute14
, X_Global_Attribute15 => po_rec.Global_Attribute15
, X_Global_Attribute16 => po_rec.Global_Attribute16
, X_Global_Attribute17 => po_rec.Global_Attribute17
, X_Global_Attribute18 => po_rec.Global_Attribute18
, X_Global_Attribute19 => po_rec.Global_Attribute19
, X_Global_Attribute20 => po_rec.Global_Attribute20
, X_Expiration_Date => po_rec.Expiration_Date
, X_Base_Uom => po_rec.Base_Uom
, X_Base_Qty => po_rec.Base_Qty
, X_Secondary_Uom => po_rec.Secondary_Uom
, X_Secondary_Qty => po_rec.Secondary_Qty
, X_Qc_Grade => po_rec.Qc_Grade
, P_MANUAL_PRICE_CHANGE_FLAG => po_rec.MANUAL_PRICE_CHANGE_FLAG
);
END LOOP;
-- COMMIT;
--Geps_Po_Approval_Pkg.GEPS_PO_UPDATE_LINE(rec_cur_lines_det.po_line_id, v_n01_note_to_vendor);
EXCEPTION
WHEN OTHERS THEN
FND_FILE.PUT_LINE(FND_FILE.LOG,'Error while updating the n01 po lines:'||SQLERRM);
END;
BEGIN
UPDATE geps_po_details
SET PO_TRANSFER_FLAG='SUCCESS', comments=v_n01_note_to_vendor
,H03_PO_HEADER_ID=v_h03_po_header_id,H03_PO_LINE_ID=v_h03_po_line_id
WHERE ROWID=rec_cur_po_det.ROWID;
COMMIT;
EXCEPTION WHEN OTHERS THEN
v_sql_errm := SQLERRM;
FND_FILE.PUT_LINE(FND_FILE.LOG,'Error while updating Po:'||rec_cur_po_det.PO);
END;
ELSE
BEGIN
UPDATE geps_po_details
SET PO_TRANSFER_FLAG='FAILED'
WHERE ROWID=rec_cur_po_det.ROWID;
COMMIT;
EXCEPTION WHEN OTHERS THEN
v_sql_errm := SQLERRM;
FND_FILE.PUT_LINE(FND_FILE.LOG,'Error while updating Po:'||rec_cur_po_det.PO||'LINE:'||rec_cur_po_det.PO_LINE||'SHIPment:'||rec_cur_po_det.PO_SHIPMENT);
END;
END IF;
-- END LOOP;
if v_batch=1000 then
commit;
v_batch:=0;
end if;
END LOOP;
commit;
END GEPS_UPDATE_STAGING;
--+--------------------------------------------------------------------------------------------------------------------------+--
PROCEDURE GEPS_ERROR_RPT IS
CURSOR cur_header is
select distinct INTERFACE_HEADER_ID
from po_headers_interface
where batch_id in (g_batch_id1,g_batch_id2,g_batch_id3,g_batch_id4)
and process_code<>'ACCEPTED';
CURSOR cur_quot_err(p_interface_header_id number) IS
SELECT segment1
FROM po_headers_all
WHERE po_header_id in
(select po_header_id from po_lines_all where po_line_id in
(select Line_attribute15 from po_lines_interface where INTERFACE_HEADER_ID = p_interface_header_id));
CURSOR cur_header_err(p_interface_header_id number)
IS
SELECT distinct COLUMN_NAME,ERROR_MESSAGE
FROM po_interface_errors
WHERE INTERFACE_HEADER_ID =p_interface_header_id;
cursor cur_custom_error is
select po,error_msg
from geps_po_details
where po_transfer_flag= 'E';
cursor cur_success_po is
select distinct po,po_line,comments
from GEPS_PO_DETAILS
where PO_TRANSFER_FLAG='SUCCESS';
v_total number;
v_success_total number;
v_custom_count number;
v_interface_count number;
BEGIN
select count(1)
into v_total
from GEPS_PO_DETAILS;
fnd_file.put_line(2,'Total Number of records in staging table '||v_total);
fnd_file.put_line(2,' ');
select count(1)
into v_success_total
from GEPS_PO_DETAILS
where PO_TRANSFER_FLAG='SUCCESS';
fnd_file.put_line(2,'Total Number of records successfully processed '||v_success_total);
fnd_file.put_line(2,' ');
fnd_file.put_line(2,'Records successfully processed are'||v_success_total);
for rec_success_po in cur_success_po
loop
fnd_file.put_line(2,'N02 po# ' ||rec_success_po.po||' N02 Line num '||rec_success_po.po_line ||' '||rec_success_po.comments);
end loop;-- end of rec_success_po
select count(1)
into v_custom_count
from GEPS_PO_DETAILS
where PO_TRANSFER_FLAG='E';
fnd_file.put_line(2,' ');
fnd_file.put_line(2,'Number of records failed due to custom validation '||v_custom_count);
fnd_file.put_line(2,' ');
fnd_file.put_line(2,'Records failed due to custom validation are');
for rec_custom_error in cur_custom_error
loop
fnd_file.put_line(2,'PO# '||rec_custom_error.po||'Error '||rec_custom_error.error_msg);
end loop; --end of rec_custom_error
select count(1)
into v_interface_count
from GEPS_PO_DETAILS
where PO_TRANSFER_FLAG='FAILED';
fnd_file.put_line(2,' ');
fnd_file.put_line(2,'Number of records failed in interface table '||v_interface_count);
fnd_file.put_line(2,' ');
fnd_file.put_line(2,'Records failed in interface table are ');
for rec_header in cur_header
loop
for rec_quot_err in cur_quot_err(rec_header.interface_header_id)
loop
for rec_header_err in cur_header_err(rec_header.interface_header_id)
loop
fnd_file.put_line(2,'PO# '||rec_quot_err.segment1||' COLUMN '||rec_header_err.COLUMN_NAME||'Error '||rec_header_err.ERROR_MESSAGE);
end loop;-- end of rec_header_err
end loop;-- end of rec_quot_err
end loop; ---end of rec_header
END GEPS_ERROR_RPT;
procedure geps_process_po(ERRBUF OUT VARCHAR,RETCODE OUT NUMBER,p_agent_id number)
IS
TYPE rec_po IS RECORD
( po GEPS_PO_DETAILS.po%type
);
TYPE p_po_tbl_type IS TABLE OF rec_po INDEX BY BINARY_INTEGER;
v_po_array p_po_tbl_type;
-- v_po_array p_inventory_item_tbl_type;
-- v_gim_id mtl_parameters.organization_id%TYPE;
v_break number;
v_break_first number;
v_break_last number:=0;
from_po GEPS_PO_DETAILS.po%type;
to_po GEPS_PO_DETAILS.po%type;
v_resp_appl_id NUMBER := FND_PROFILE.VALUE('RESP_APPL_ID');
v_resp_id NUMBER := FND_PROFILE.VALUE('RESP_ID');
v_user_id NUMBER := FND_PROFILE.VALUE('USER_ID');
v_request1 number;
v_request2 number;
v_request3 number;
v_request4 number;
V_INTERVAL NUMBER := 3; --seconds
V_PHASE VARCHAR2 (240);
V_STATUS VARCHAR2 (240);
V_REQUEST_PHASE VARCHAR2 (240);
V_REQUEST_STATUS VARCHAR2 (240);
V_FINISHED BOOLEAN;
V_MESSAGE VARCHAR2 (1000);
-- v_number_records number;
v_agent_id number;
BEGIN
v_agent_id:=p_agent_id;
FND_GLOBAL.APPS_INITIALIZE(v_user_id,v_resp_id,v_resp_appl_id);
begin
execute immediate 'analyze table apps.geps_po_details compute statistics';
exception
when others then
null;
end;
g_batch_id1:=to_number(TO_CHAR(SYSDATE,'DDMMYYYYHH24MISS')||1);
g_batch_id2:=to_number(TO_CHAR(SYSDATE,'DDMMYYYYHH24MISS')||2);
g_batch_id3:=to_number(TO_CHAR(SYSDATE,'DDMMYYYYHH24MISS')||3);
g_batch_id4:=to_number(TO_CHAR(SYSDATE,'DDMMYYYYHH24MISS')||4);
begin
select distinct po
BULK COLLECT INTO v_po_array
from GEPS_PO_DETAILS
where PO_TRANSFER_FLAG IS NULL
order by po;
exception
when no_data_found then
null;
end;
--fnd_file.put_line(1,' No of records : '||v_inventory_item_array.last);
if (v_po_array.last)<4 br="br" then="then"> v_break_first:=v_po_array.first;
from_po:=v_po_array(v_break_first).po;
v_break_last:=v_po_array.last;
to_po:=v_po_array(v_break_last).po;
else
v_break :=floor(v_po_array.last/4);
-- fnd_file.put_line(1,' No of v_break records : '||v_break );
v_break_first:=v_break_last+1;
from_po:=v_po_array(v_break_first).po;
v_break_last:=v_break_last+v_break;
to_po:=v_po_array(v_break_last).po;
end if;
--fnd_file.put_line(1,' from_po : '||from_po);
--fnd_file.put_line(1,' to_po : '||to_po);
--to_number(TO_CHAR(SYSDATE,'DDMMYYYYHH24MISS')||1);
v_request1:=FND_REQUEST.SUBMIT_REQUEST('GEPSPO','GEPS_PURCHASE_CONV',
'',
'',
FALSE,
from_po, to_po,g_batch_id1,v_agent_id);
commit;
--fnd_file.put_line(1,' from_po : '||from_po);
--fnd_file.put_line(1,' to_po : '||to_po);
if (v_po_array.last)>4 then
v_break_first:=v_break_last+1;
from_po:=v_po_array(v_break_first).po;
v_break_last:=v_break_last+v_break;
to_po:=v_po_array(v_break_last).po;
v_request2:=FND_REQUEST.SUBMIT_REQUEST('GEPSPO','GEPS_PURCHASE_CONV',
'',
'',
FALSE,
from_po, to_po,g_batch_id2,v_agent_id);
commit;
-- fnd_file.put_line(1,' request id : '||v_request2);
v_break_first:=v_break_last+1;
from_po:=v_po_array(v_break_first).po;
v_break_last:=v_break_last+v_break;
to_po:=v_po_array(v_break_last).po;
v_request3:=FND_REQUEST.SUBMIT_REQUEST('GEPSPO','GEPS_PURCHASE_CONV',
'',
'',
FALSE,
from_po, to_po,g_batch_id3,v_agent_id);
commit;
-- fnd_file.put_line(1,' request id : '||v_request3);
v_break_first:=v_break_last+1;
from_po:=v_po_array(v_break_first).po;
v_break_last:=v_po_array.last;
to_po:=v_po_array(v_break_last).po;
v_request4:=FND_REQUEST.SUBMIT_REQUEST('GEPSPO','GEPS_PURCHASE_CONV',
'',
'',
FALSE,
from_po, to_po,g_batch_id4,v_agent_id);
commit;
-- fnd_file.put_line(1,' request id : '||v_request4);
-- fnd_file.put_line(1,' to_po : '||to_po);
end if;
IF v_request1 =0 THEN
FND_FILE.PUT_LINE(FND_FILE.LOG, 'GEPS PLANNER PROCESS SUBMISSION IS FAILED ');
-- END IF;
ELSE
V_FINISHED :=FND_CONCURRENT.WAIT_FOR_REQUEST
(REQUEST_ID => v_request1,
INTERVAL => V_INTERVAL,
MAX_WAIT => 0,
PHASE => V_PHASE,
STATUS => V_STATUS,
DEV_PHASE => V_REQUEST_PHASE,
DEV_STATUS => V_REQUEST_STATUS,
MESSAGE => V_MESSAGE);
IF (UPPER(V_REQUEST_PHASE) = 'COMPLETE' AND UPPER(V_REQUEST_STATUS) = 'NORMAL') THEN
FND_FILE.PUT_LINE (FND_FILE.LOG, 'SUBMISSION OF GEPS PURCHASE ORDERS CONVERSION CONCURRENT REQUEST COMPLETED SUCCESSFULLY ....' || ' '|| TO_CHAR (v_request1));
-- END;
ELSE
FND_FILE.PUT_LINE (FND_FILE.LOG, 'SUBMISSION OF GEPS PURCHASE ORDERS CONVERSION PROGRAM COMPLETED WITH STATUS ' ||V_REQUEST_STATUS||' '|| V_MESSAGE|| ' '|| TO_CHAR (v_request1));
END IF;
end if;
if (v_po_array.last)>4 then
IF v_request2 =0 THEN
FND_FILE.PUT_LINE(FND_FILE.LOG, 'GEPS PURCHASE ORDERS CONVERSION SUBMISSION IS FAILED ');
-- END IF;
ELSE
V_FINISHED :=FND_CONCURRENT.WAIT_FOR_REQUEST
(REQUEST_ID => v_request2,
INTERVAL => V_INTERVAL,
MAX_WAIT => 0,
PHASE => V_PHASE,
STATUS => V_STATUS,
DEV_PHASE => V_REQUEST_PHASE,
DEV_STATUS => V_REQUEST_STATUS,
MESSAGE => V_MESSAGE);
IF (UPPER(V_REQUEST_PHASE) = 'COMPLETE' AND UPPER(V_REQUEST_STATUS) = 'NORMAL') THEN
FND_FILE.PUT_LINE (FND_FILE.LOG, 'SUBMISSION OF GEPS PURCHASE ORDERS CONVERSION CONCURRENT REQUEST COMPLETED SUCCESSFULLY ....' || ' '|| TO_CHAR (v_request2));
-- END;
ELSE
FND_FILE.PUT_LINE (FND_FILE.LOG, 'SUBMISSION OF GEPS PURCHASE ORDERS CONVERSION PROGRAM COMPLETED WITH STATUS ' ||V_REQUEST_STATUS||' '|| V_MESSAGE|| ' '|| TO_CHAR (v_request2));
END IF;
end if;
IF v_request3 =0 THEN
FND_FILE.PUT_LINE(FND_FILE.LOG, 'GEPS PURCHASE ORDERS CONVERSION SUBMISSION IS FAILED ');
-- END IF;
ELSE
V_FINISHED :=FND_CONCURRENT.WAIT_FOR_REQUEST
(REQUEST_ID => v_request3,
INTERVAL => V_INTERVAL,
MAX_WAIT => 0,
PHASE => V_PHASE,
STATUS => V_STATUS,
DEV_PHASE => V_REQUEST_PHASE,
DEV_STATUS => V_REQUEST_STATUS,
MESSAGE => V_MESSAGE);
IF (UPPER(V_REQUEST_PHASE) = 'COMPLETE' AND UPPER(V_REQUEST_STATUS) = 'NORMAL') THEN
FND_FILE.PUT_LINE (FND_FILE.LOG, 'SUBMISSION OF GEPS PURCHASE ORDERS CONVERSION CONCURRENT REQUEST COMPLETED SUCCESSFULLY ....' || ' '|| TO_CHAR (v_request3));
-- END;
ELSE
FND_FILE.PUT_LINE (FND_FILE.LOG, 'SUBMISSION OF GEPS PURCHASE ORDERS CONVERSION PROGRAM COMPLETED WITH STATUS ' ||V_REQUEST_STATUS||' '|| V_MESSAGE|| ' '|| TO_CHAR (v_request3));
END IF;
end if;
IF v_request4 =0 THEN
FND_FILE.PUT_LINE(FND_FILE.LOG, 'GEPS PURCHASE ORDERS CONVERSION SUBMISSION IS FAILED ');
-- END IF;
ELSE
V_FINISHED :=FND_CONCURRENT.WAIT_FOR_REQUEST
(REQUEST_ID => v_request4,
INTERVAL => V_INTERVAL,
MAX_WAIT => 0,
PHASE => V_PHASE,
STATUS => V_STATUS,
DEV_PHASE => V_REQUEST_PHASE,
DEV_STATUS => V_REQUEST_STATUS,
MESSAGE => V_MESSAGE);
IF (UPPER(V_REQUEST_PHASE) = 'COMPLETE' AND UPPER(V_REQUEST_STATUS) = 'NORMAL') THEN
FND_FILE.PUT_LINE (FND_FILE.LOG, 'SUBMISSION OF GEPS PURCHASE ORDERS CONVERSION CONCURRENT REQUEST COMPLETED SUCCESSFULLY ....' || ' '|| TO_CHAR (v_request4));
-- END;
ELSE
FND_FILE.PUT_LINE (FND_FILE.LOG, 'SUBMISSION OF GEPS PURCHASE ORDERS CONVERSION PROGRAM COMPLETED WITH STATUS ' ||V_REQUEST_STATUS||' '|| V_MESSAGE|| ' '|| TO_CHAR (v_request4));
END IF;
end if;
END IF;
--calling or error or sucess report;
GEPS_ERROR_RPT;
end GEPS_PROCESS_PO;
END GEPS_PURCHASE_CONV;
/4>
No comments:
Post a Comment