You are on page 1of 2

4/2/2014 Document 1065808.

1
https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=dkcddimqr_4&id=1065808.1 1/2
How is Unit Price Populated on an Internal Requisition for a Process Enabled Org? (Doc ID
1065808.1)
Modified: 07-Mar-2014 Type: HOWTO
In this Document
Goal
Solution
APPLIES TO:
Oracle Process Manufacturing Financials - Version 12.0.6 to 12.1.3 [Release 12 to 12.1]
Information in this document applies to any platform.
GOAL
The goal of this document is to provide some details about how the unit price is populated on an internal requisition
document, when source and/or destination organizations are Process Enabled.
SOLUTION
When source and destination organizations are being updated in Requisitions form (POXRQERQ.fmx), we have a call to
procedure get_price from package po_req_lns_c1, found in library file POXRQLNS.plx.
In procedure po_req_lns_c1.get_price, if destination for internal requisition is INVENTORY, we are calling procedure
get_cost_price, within the same package and library.
(Please note that if you are using iProcurement to create your Internal Requisition, instead of the logic described above
the Java code behind the form makes a direct call to PL/SQL Package POR_UTIL_PKG (PORUTILB.pls). From that point
on, the logic described below also applies to iProcurement)
In procedure po_req_lns_c1.get_cost_price, following logic is applied:
1. If (both source and destination organizations are process enabled and belong to same operating unit) then:
- Unit price is taken as item cost updated for source organization in table GL_ITEM_CST for CURRENT period;
- The item cost is being retrieved with a call to procedure GMF_CMCOMMON.Get_Process_Item_Cost.
- Package body GMF_CMCOMMON is in file gmfcmcob.pls;
- That means we need to run OPM Cost Update process (not in final mode!) for source organization and CURRENT
period;
- If no item cost is found, then unit cost is set to zero;
- From here, we go to point 3 below.
2. If (both source and destination organizations are process enabled but belong to different operating units) or (either
source or destination organization are process enabled) then:
- We are calling procedure GMF_get_transfer_price_PUB.get_transfer_price, using input parameter transfer_type =
INTORD;
- Package body GMF_get_transfer_price_PUB is in file GMFGXFRB.pls;
2.1. Within procedure GMF_get_transfer_price_PUB.get_transfer_price, considering the fact that calling parameter
transfer_type = INTORD, first, we have a call to procedure GMF_get_xfer_price_hook_PUB.Get_xfer_price_user_hook;
- Package GMF_get_xfer_price_hook_PUB is in file GMFXFRUB.pls;
- Procedure Get_xfer_price_user_hook is a custom hook that allows customers to add their own logic/code to get
the transfer price to be used as unit cost in requisition;
- To be noted that, if source organization is process enabled, then procedure Get_xfer_price_user_hook contains a
commented code that would allow customers to call for procedure GMF_PROCESS_COST_PUB.Get_Prior_Period_Cost,
4/2/2014 Document 1065808.1
https://support.oracle.com/epmos/faces/DocumentDisplay?_adf.ctrl-state=dkcddimqr_4&id=1065808.1 2/2
which will return the item cost from PRIOR period, as updated in table GL_ITEM_CST;
- If source organization is not process enabled, then we have a call to procedure
CSTPACHK.Get_xfer_price_user_hook, to get the transfer price from discrete costing side. Procedure
CSTPACHK.Get_xfer_price_user_hook is, also, a custom hook.
- If any of above custom hooks are retuning a transfer price, then we go to point 3 below.
- If call to custom hook is not successful (either returning an error, or custom hook is not implemented), we go to
point 2.2 below.
2.2. If call to custom hook GMF_get_xfer_price_hook_PUB.Get_xfer_price_user_hook is NOT successful, we go
further in procedure GMF_get_transfer_price_PUB.get_transfer_price;
- Here, we have a check against setup for profile option 'INV: Advanced Pricing for Inter-Org Transfers'.

2.2.1. If profile is being set to value NO or has no value set, then we call for procedure
GMF_get_transfer_price_PUB.get_xfer_price_basic;
- This procedure will return the transfer price that is being set on the price list assigned in Shipping Networks
setup between the 2 organizations.

2.2.2. If profile is set to value YES, then we call to procedure GMF_get_transfer_price_PUB.get_xfer_price_qp;
- Within procedure get_xfer_price_qp we have further calls to Advance Pricing procedures.
- Regardless the fact that a transfer price is being returned by either option 2.2.1 or 2.2.2, we still have to go to
point 3 below.
3. The unit price returned by any of above procedures may be, eventually, overridden, by the final call to procedure
PO_CUSTOM_PRICE_PUB.GET_CUST_INTERNAL_REQ_PRICE;
- This call is done at the end of of procedure po_req_lns_c1.get_cost_price.
- Package PO_CUSTOM_PRICE_PUB is in file POXPCPRB.pls;
- procedure GET_CUST_INTERNAL_REQ_PRICE is a custom hook (similar to procedure
GMF_get_xfer_price_hook_PUB.Get_xfer_price_user_hook), that allows customers to add their own logic/code to get
the unit price for internal requisitions.
- If PO_CUSTOM_PRICE_PUB.GET_CUST_INTERNAL_REQ_PRICE procedure does not contain any custom code, then the
unit price returned to internal requisition is the value found by the procedures from above points 1 and 2.