Professional Documents
Culture Documents
Here in this post, I tried to explain the steps involved in Procure to Pay
Cycle. This is a pure functional Stuff and helps you to understand the
navigation steps.
I tried to keep as simple as Possible for clear understanding. The
screenshots given below are taken from R12.1.1 apps instance
Stage 1: Choosing an Item
Now note down the Requisition number and open the “Requisition
Summary Form” to view the status of it. For our Example, Requisition
number is: 14855
Below screen will show that our inventory has been increased by 5
quantities.
Stage 7: Check the Material Transactions
Below screen shows you the Serial Numbers of the items received.
---------- o ---------
P 2 P Cycle ( PO-INV-AP )
purchase requisition
|
request for quotation
|
quote analysis
|
purchase order
|
receipt to purchase order
|
invoice to purchase order
|
payment to purchase order
|
transfer to GL and then post
---------------------------------------------
Procure To Pay Cycle(p2p)
|requisition
po | |
| RFQ's
| |
| quotation
| |
| PO (purchasing order)
--- |
| receipt
| |
AP-| invoice
| |
| payments
---
==============================
1. Define Item( in INV module)
2. Define Employee(in HRMS module)
3. Define Buyer(in PO module)
4. Attach buyer to your fnd user
5. Define Requisition
6. Define RFQ(Request for Quotation)
7. Define Quotation
8. Define PO
9. Define Receipt
10.Define Invoice(Primarly create term,bank account and
supplier)
11.Define Payments
12. Run the Paybles transfer to general leadger
As we know the efficient Procure to pay process have these sub processes;
Contract Management
Purchase Requisitions
Purchase Orders
Accounts Payable - Managing invoice
Supplier Payment
In real business world, many time when system is running external/internal auditor are
more interested in scrutiny of:
It was brought by ISD team , as part year end audit for a ERP system which went live 3
month back. It was a one of requirement to display data for a particular PO which covers
data from there all 5 five phases, means a particular PO line consist of:
1. Requisition Detail
2. Purchase Order Details
3. Receiving Details
4. Invoicing Detail
5. Payment Details
Therefore thought to share this query, hope this would be great help who have such kind
of adhoc requirement from daily life.
Here is query:
SELECT
A.ORG_ID "ORG ID",
E.VENDOR_NAME "VENDOR NAME",
UPPER(E.VENDOR_TYPE_LOOKUP_CODE) "VENDOR TYPE",
F.VENDOR_SITE_CODE "VENDOR SITE",
F.ADDRESS_LINE1 "ADDRESS",
F.CITY "CITY",
F.COUNTRY "COUNTRY",
TO_CHAR(TRUNC(D.CREATION_DATE)) "PO DATE",
D.SEGMENT1 "PO NUMBER",
D.TYPE_LOOKUP_CODE "PO TYPE",
C.QUANTITY_ORDERED "QTY ORDERED",
C.QUANTITY_CANCELLED "QTY CANCALLED",
G.ITEM_DESCRIPTION "ITEM DESCRIPTION",
G.UNIT_PRICE "UNIT PRICE",
(NVL(C.QUANTITY_ORDERED,0)-
NVL(C.QUANTITY_CANCELLED,0))*NVL(G.UNIT_PRICE,0) "PO Line Amount",
(SELECT
DECODE(PH.APPROVED_FLAG, 'Y', 'Approved')
FROM PO.PO_HEADERS_ALL PH
WHERE PH.PO_HEADER_ID = D.PO_HEADER_ID) "PO STATUS",
A.INVOICE_TYPE_LOOKUP_CODE "INVOICE TYPE",
A.INVOICE_AMOUNT "INVOICE AMOUNT",
TO_CHAR(TRUNC(A.INVOICE_DATE)) "INVOICE DATE",
A.INVOICE_NUM "INVOICE NUMBER",
(SELECT
DECODE ( X.MATCH_STATUS_FLAG, 'A', 'Approved')
FROM AP.AP_INVOICE_DISTRIBUTIONS_ALL X
WHERE X.INVOICE_DISTRIBUTION_ID = B.INVOICE_DISTRIBUTION_ID)"Invoice
Approved?",
A.AMOUNT_PAID,
H.AMOUNT,
I.CHECK_NUMBER "CHEQUE NUMBER",
TO_CHAR(TRUNC(I.CHECK_DATE)) "PAYMENT DATE"
FROM AP.AP_INVOICES_ALL A,
AP.AP_INVOICE_DISTRIBUTIONS_ALL B,
PO.PO_DISTRIBUTIONS_ALL C,
PO.PO_HEADERS_ALL D,
PO.PO_VENDORS E,
PO.PO_VENDOR_SITES_ALL F,
PO.PO_LINES_ALL G,
AP.AP_INVOICE_PAYMENTS_ALL H,
AP.AP_CHECKS_ALL I
WHERE A.INVOICE_ID = B.INVOICE_ID
AND B.PO_DISTRIBUTION_ID = C. PO_DISTRIBUTION_ID (+)
AND C.PO_HEADER_ID = D.PO_HEADER_ID (+)
AND E.VENDOR_ID (+) = D.VENDOR_ID
AND F.VENDOR_SITE_ID (+) = D.VENDOR_SITE_ID
AND .PO_HEADER_ID = G.PO_HEADER_ID
AND C.PO_LINE_ID = G.PO_LINE_ID
AND A.INVOICE_ID = H.INVOICE_ID
AND H.CHECK_ID = I.CHECK_ID
AND F.VENDOR_SITE_ID = I.VENDOR_SITE_ID
AND C.PO_HEADER_ID IS NOT NULL
AND A.PAYMENT_STATUS_FLAG = 'Y'
AND D.TYPE_LOOKUP_CODE != 'BLANKET';