понедельник, 23 июля 2012 г.

Purchasing Prev - Procure to Pay (P2P) Cycle

 Information source - http://www.confluentminds.com/Trainings/SCM/Topic1.1_Ch1_Part4.html

1. Procure to Pay Cycle

Create requisition to procure goods and service with supplier information, delivery instructions, multiple accounting distributions, and notes to buyers, approvers, and receivers. A request for quotation (RFQ) is sent to a supplier to request pricing and other information for an item. A quotation is the supplier’s response to that RFQ. Identify requisitions that require supplier quotations and automatically create a RFQ Or create manually and send it thru’ Fax or iSupplier portal. Record supplier quotations from a catalog, telephone conversation, or response from your RFQ. You can also receive quotations electronically and import as Quotations (catalog). Review, analyze, evaluate and approve supplier quotations. Create standard purchase order, BPA and blanket releases. Inform your suppliers of your shipment schedule requirements. Record supplier acceptances of your purchase order’s terms and conditions. Provide a quantity and price for each item you are ordering. Alternatively, you should also be able to create your purchase order simply by providing an amount if you are ordering a service that you cannot break down by price and quantity. Enter goods and service receipt information against the PO using routing controls viz: Direct delivery, standard receipt or standard receipt with inspection. Transfer and deliver goods using the Receiving Transactions window. If you want to perform an inspection transaction, you can open the Inspections window to specify accepted and rejected quantities.

1.1. Requisitions

1.1.1. Create Requisition


Create a requisition, enter Requisition type, which can be Purchase Requisition or Internal Requisition. The Preparer defaults to ur employee name.Enter a line Type ,  the default for this field is from the Purchasing Options window. Line types are handled in three classes: amount–based, quantity–based, and outside processing.
Enter the Quantity you want to request for the item. You can use the Catalog button to get price breaks for different quantities from catalog quotations or blanket purchase agreements.
Enter the Destination Type:
Expense – The goods are delivered to the requestor at an expense location. The destination subinventory is not applicable.
Inventory – The goods are received into inventory upon delivery.
Shop Floor – The goods are delivered to an outside processing operation defined by Work in Process.
Enter the name of the Requestor. The default is the requisition preparer. Enter the Organization, delivery location, Subinventory.
Enter the Source type. Inventory or the Supplier source type. For the Supplier source type, enter the suggested Supplier, Supplier Site, Contact, and Phone. For the Inventory source type, enter the Organization and Subinventory.


Enter the unit Price for the item. If you create a requisition line for an amount based line type, Purchasing sets the price to 1, and you cannot change it. Enter the Need By     date-time for the requested items. This is required only for planned items. It should be greater than or equal to the requisition creation date.
Save  and Approve the document. The status will be changed to approved. Query the requisition and view its details.

1.1.2. PO Requisition Architecture

PO_REQUISITION_HEADERS_ALL

REQUISITION_HEADER_ID         
PREPARER_ID                   
SEGMENT1                      
SUMMARY_FLAG                  
ENABLED_FLAG                  
START_DATE_ACTIVE             
END_DATE_ACTIVE               
DESCRIPTION                   
AUTHORIZATION_STATUS          
NOTE_TO_AUTHORIZER            
TYPE_LOOKUP_CODE              
TRANSFERRED_TO_OE_FLAG        
ON_LINE_FLAG                  
PRELIMINARY_RESEARCH_FLAG     
RESEARCH_COMPLETE_FLAG        
PREPARER_FINISHED_FLAG        
PREPARER_FINISHED_DATE        
AGENT_RETURN_FLAG             
AGENT_RETURN_NOTE             
CANCEL_FLAG                         
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              
ITEM_ID                       
ITEM_REVISION                 
QUANTITY_DELIVERED            
SUGGESTED_BUYER_ID            
ENCUMBERED_FLAG               
RFQ_REQUIRED_FLAG             
NEED_BY_DATE                  
LINE_LOCATION_ID              
            
PO_REQ_DISTRIBUTIONS_ALL

DISTRIBUTION_ID               
REQUISITION_LINE_ID           
SET_OF_BOOKS_ID               
CODE_COMBINATION_ID           
REQ_LINE_AMOUNT               
REQ_LINE_QUANTITY             
ENCUMBERED_FLAG               
GL_ENCUMBERED_DATE            
GL_ENCUMBERED_PERIOD_NAME     
 

Query to find Requisition header info :
set lines 150
set pages 150

execute fnd_client_info.set_org_context('204');

col Description form a40
col Req_type form a26
col type_lookup_code form a16
col PREPARER form a30
col APPROVER form a30
col NOTE_TO_APPROVER form a40

SELECT prh.segment1              Requisition
,      psp.manual_req_num_type        req_num_type
,      ppf.full_name             Preparer
,      prh.creation_date         Creation_Date
,      prh.type_lookup_code
,      ppf1.full_name             Approver
,      t.type_name             Req_type
,      prh.description           Description
,      pah.note                  Note_To_Approver
,      prh.requisition_header_id Req_header
FROM   po_requisition_headers    prh
,      per_people_f              ppf1
,      per_people_f              ppf
,      po_action_history         pah
,      po_system_parameters      psp
, PO_DOCUMENT_TYPES_ALL_TL T
, PO_DOCUMENT_TYPES_ALL_B B
WHERE prh.REQUISITION_HEADER_ID=11675
and  NVL(PRH.contractor_requisition_flag, 'N') <> 'Y'      
AND prh.preparer_id = ppf.person_id
AND nvl(ppf.business_group_id, 0) = (select nvl(max(fsp.business_group_id), 0)
                                                                        from financials_system_parameters fsp)
AND nvl(pah.action_code,'SUBMIT') in ('SUBMIT', 'FORWARD', 'REJECT', 'APPROVE',
                                              'APPROVE AND RESERVE', 'RESERVE', 'ACCEPT','RETURN')   
--AND prh.segment1 = P_req_num_from
AND EXISTS (SELECT null
            FROM   po_requisition_lines        prl
            WHERE  prl.requisition_header_id = prh.requisition_header_id
            AND    nvl(prl.modified_by_agent_flag,'N') = 'N'
            AND    nvl(prl.closed_code,'OPEN') != 'FINALLY CLOSED')
AND pah.object_id              = prh.requisition_header_id
AND pah.employee_id        = ppf1.person_id
AND pah.object_type_code       = 'REQUISITION'
AND pah.object_sub_type_code   = prh.type_lookup_code
AND pah.sequence_num           =
    (SELECT max(sequence_num)
     FROM po_action_history         pah
     WHERE pah.object_id            = prh.requisition_header_id
     AND   pah.object_type_code     = 'REQUISITION'
     AND   pah.object_sub_type_code = prh.type_lookup_code)
and  B.DOCUMENT_TYPE_CODE = T.DOCUMENT_TYPE_CODE
AND B.DOCUMENT_SUBTYPE = T.DOCUMENT_SUBTYPE
AND    b.document_type_code  = 'REQUISITION'
AND    b.document_subtype    = prh.type_lookup_code
AND NVL(B.ORG_ID, -99) = NVL(T.ORG_ID, -99)
AND NVL(B.ORG_ID,NVL(TO_NUMBER(DECODE(SUBSTRB(USERENV('CLIENT_INFO'),1 ,1),' ',
NULL,SUBSTRB(USERENV('CLIENT_INFO'),1,10))),-99))
= NVL(TO_NUMBER(DECODE(SUBSTRB(USERENV('CLIENT_INFO'),1,1),' ', NULL,
SUBSTRB(USERENV('CLIENT_INFO'),1,10))),-99)
AND T.LANGUAGE = USERENV('LANG')
/

Query to find Requisition details :
set lines 150
set pages 150

execute fnd_client_info.set_org_context('204');
col Justification form a24
col Item_Description form a36
col Source form a56
col Source_Type form a12
col Requestor form a20
col Line_Type form a12
col Item form a16

SELECT prl.line_num                                 Line
,      plt.line_type                                Line_Type
,      prl.item_id                            prl_item_id
,      msi.segment1                           Item
,      prl.item_revision                            Rev
,      prl.need_by_date                             Need_By_Date
,      prl.unit_meas_lookup_code                    Unit
,      round(prl.quantity,2)         Quantity_Amount
,      prl.unit_price                               Unit_Price
,      DECODE (PRL.order_type_lookup_code,                              /* <SERVICES FPJ> */
                       'FIXED PRICE', PRL.amount,
                       'RATE', PRL.amount,
                       NVL(PRL.quantity, 1) * PRL.unit_price) C_AMOUNT
,      ppf.full_name                                Requestor
,      plc.displayed_field                         Source_Type
,      decode(prl.source_type_code,'INVENTORY',ood.organization_name||' - '||prl.source_subinventory,'VENDOR',prh.segment1||' - '||prl.suggested_vendor_name||' - '||prl.suggested_vendor_location||' - '||prl.suggested_vendor_contact||' - '||prl.suggested_buyer_id,null)                                  Source
,      prl.item_description                         Item_Description
,      prd.req_line_quantity                        Distributions
,      prl.justification                            Justification
,      prl.requisition_header_id
,      prl.requisition_line_id
FROM   po_requisition_headers         prh
,      po_requisition_lines           prl
,      po_req_distributions           prd
,      po_line_types                  plt
,      per_people_f                   ppf
,      org_organization_definitions   ood
,      po_lookup_codes           plc
,      mtl_system_items               msi
,      mtl_categories                 mca
,      gl_code_combinations           gcc,      financials_system_parameters   fsp
,      po_system_parameters           psp
WHERE  prh.segment1 = '1713'
AND    prl.requisition_line_id      = prd.requisition_line_id
AND    prl.requisition_header_id    = prh.requisition_header_id
AND    prl.line_type_id             = plt.line_type_id
AND    prl.to_person_id             = ppf.person_id (+)
AND    prl.source_organization_id   = ood.organization_id(+)
AND    plc.lookup_type = 'REQUISITION SOURCE TYPE'
AND    plc.lookup_code = prl.source_type_code
AND    nvl(ppf.business_group_id, 0) = (select nvl(max(fsp.business_group_id),0)
                                                                           from financials_system_parameters fsp)
AND    trunc(sysdate)
         BETWEEN nvl(ppf.effective_start_date, trunc(sysdate))
          AND nvl(ppf.effective_end_date, trunc(sysdate))                
AND    prl.item_id                  = msi.inventory_item_id(+)
AND    msi.organization_id = 204
AND    prl.category_id              = mca.category_id
AND    prd.code_combination_id      = gcc.code_combination_id
AND    nvl(prl.modified_by_agent_flag,'N') = 'N'
AND    nvl(prl.cancel_flag,'N') != 'Y'
AND    nvl(prl.closed_code,'OPEN') != 'FINALLY CLOSED'
ORDER BY prl.line_num
/

1.1.3. PO Requisition Open Interface

Insert a single row into PO_REQUISITIONS_INTERFACE_ALL and PO_REQ_ DIST_INTERFACE_ALL table for each requisition line that you import. Then launch Requisition Import program. The Requisition Import program operates in three phases. 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 in the PO_INTERFACE_ERRORS table. In the second phase, the program groups and numbers the validated requisition lines. If you specify a value in the REQ_NUMBER_SEGMENT1 column of the PO_REQUISITIONS_INTERFACE_ALL table, all lines with the same value for this column are grouped together under a requisition header. If you provide a value in the GROUP_CODE column, all lines with the same value in this column are grouped together under a requisition header. In the third phase, the program deletes all the successfully processed rows in the interface tables, and creates a report which lists the number of interface records that were successfully imported and the number that were not imported.
Launch the Requisition Import Exceptions Report to view detailed errors.
Required Data for PO_REQUISITIONS_INTERFACE_ALL:
 INTERFACE_SOURCE_CODE to identify the source of your imported requisitions
 DESTINATION_TYPE_CODE
 AUTHORIZATION_STATUS
 PREPARER_ID or PREPARER_NAME
 QUANTITY
 CHARGE_ACCOUNT_ID
 DESTINATION_ORGANIZATION_ID
 DELIVER_TO_LOCATION_ID
 DELIVER_TO_REQUESTOR_ID
Required columns for PO_REQ_DIST_INTERFACE_ALL:
 CHARGE_ACCOUNT_ID or charge account segment values
 DISTRIBUTION_NUMBER
DESTINATION_ORGANIZATION_ID
 DESTINATION_TYPE_CODE
 INTERFACE_SOURCE_CODE

2 комментария: