Wednesday, 12 July 2017

Create Requisition (with Project Costing) using interface in Oracle Apps r12

CREATE OR REPLACE PROCEDURE XX_PR_REQUISITION_PROC (
      P_ORGANIZATION_ID            NUMBER,
      P_ITEM_ID           NUMBER,
      P_ITEM_DESC         VARCHAR2,
      P_QTY                   NUMBER,
      P_USER_ID               NUMBER,
      P_ORG_ID                NUMBER,
      P_ITEM_CODE         VARCHAR2,
      P_LOCATION_ID           NUMBER,
      P_NEED_BY_DATE          DATE,
      P_PROJECT_ID     NUMBER,
      P_TASK_ID               NUMBER,
      P_EXPENDITURE_TYPE      VARCHAR2,
      P_EST_BUDGET            NUMBER,
      P_RATE                  NUMBER,
      P_PROJECT               NUMBER,
      P_LINE_NUM              NUMBER,
      P_REQ_NUMBER            VARCHAR2
    )
   IS
      V_CNT                  NUMBER;
      V_EMPLOYEE_ID          NUMBER;
      V_PRIMARY_UOM          VARCHAR2 (20);
      V_PROJECT_START_DATE   DATE;
      V_ITEM_LEAD_DAYS       NUMBER;
      V_NEED_BY_DATE         DATE;
      V_UNIT_PRICE           NUMBER;
      V_RATE                 NUMBER;
      L_REQ_NUMBER           VARCHAR2 (200);
      L_NEW_NUM              NUMBER;
      L_REQ_NUMBER2          VARCHAR2 (200);
      L_NEW_COU              NUMBER;
      L_DOC_SEQ_TYPE         VARCHAR2 (150);
       v_request_id number;
       v_finished BOOLEAN;
       v_phase varchar2(100);
       v_status varchar2(100);
       v_request_phase varchar2(100);
       v_request_status varchar2(100);
       v_message varchar2(4000);
      
   BEGIN
      BEGIN
         SELECT EMPLOYEE_ID
           INTO V_EMPLOYEE_ID
           FROM FND_USER
          WHERE USER_ID = P_USER_ID;
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            V_EMPLOYEE_ID := NULL;
      END;

      BEGIN
         SELECT PRIMARY_UOM_CODE,
                (  NVL (PREPROCESSING_LEAD_TIME, 0)
                 + NVL (FULL_LEAD_TIME, 0)
                 + NVL (POSTPROCESSING_LEAD_TIME, 0)
                ),
                NVL (LIST_PRICE_PER_UNIT, 1)
           INTO V_PRIMARY_UOM,
                V_ITEM_LEAD_DAYS,
                V_UNIT_PRICE
           FROM MTL_SYSTEM_ITEMS_B MIS
          WHERE INVENTORY_ITEM_ID = P_ITEM_ID
            AND ORGANIZATION_ID = P_ORGANIZATION_ID;
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            RAISE_APPLICATION_ERROR (-20000,
                                        'Primary UOM for Item : '
                                     || P_ITEM_CODE
                                     || ' not fouund.'
                                    );
      END;

      V_NEED_BY_DATE := P_NEED_BY_DATE;
      V_RATE := P_RATE;

     
      INSERT INTO PO_REQUISITIONS_INTERFACE_ALL
                  (TRANSACTION_ID, INTERFACE_SOURCE_CODE, SOURCE_TYPE_CODE,
                   REQUISITION_TYPE, DESTINATION_TYPE_CODE, ITEM_ID,
                   ITEM_DESCRIPTION, QUANTITY, AUTHORIZATION_STATUS,
                   PREPARER_ID, AUTOSOURCE_FLAG, UOM_CODE,
                   DESTINATION_ORGANIZATION_ID, DESTINATION_SUBINVENTORY,
                   DELIVER_TO_LOCATION_ID, DELIVER_TO_REQUESTOR_ID,
                   NEED_BY_DATE, GL_DATE, CHARGE_ACCOUNT_ID,
                   ACCRUAL_ACCOUNT_ID, VARIANCE_ACCOUNT_ID, ORG_ID,
                   SUGGESTED_VENDOR_ID, SUGGESTED_VENDOR_SITE_ID, UNIT_PRICE,
                   CREATION_DATE, CREATED_BY, LAST_UPDATE_DATE,
                   LAST_UPDATED_BY,
                   PROJECT_ID, TASK_ID, EXPENDITURE_ITEM_DATE,
                   EXPENDITURE_ORGANIZATION_ID, EXPENDITURE_TYPE,
                   PROJECT_ACCOUNTING_CONTEXT,
                   REQ_NUMBER_SEGMENT1, LINE_NUM
                  )
           VALUES (PO_REQUISITIONS_INTERFACE_S.NEXTVAL, 'INV', 'VENDOR',
                   'PURCHASE', 'EXPENSE', P_ITEM_ID,
                   P_ITEM_DESC, P_QTY, 'INCOMPLETE',
                   V_EMPLOYEE_ID, 'P', V_PRIMARY_UOM,
                   P_ORGANIZATION_ID, NULL,
                   P_LOCATION_ID, V_EMPLOYEE_ID,
                   V_NEED_BY_DATE, V_NEED_BY_DATE, NULL,
                   NULL, NULL, P_ORG_ID,
                   NULL, NULL, V_RATE,
                   SYSDATE, P_USER_ID, SYSDATE,
                   P_USER_ID,
                   P_PROJECT_ID, P_TASK_ID, V_NEED_BY_DATE,
                   P_ORGANIZATION_ID, P_EXPENDITURE_TYPE,
                   'Y',
                   P_REQ_NUMBER, P_LINE_NUM
                  );

      COMMIT;
     
   -------------
   -- Run import program
   ------------  
  
   v_request_id := fnd_request.submit_request (application => 'PO' ,
program => 'REQIMPORT' ,
argument1 => 'INV' ,
argument2 => '' ,
argument3 => 'ALL',
argument4 => '',
argument5 => '',
argument6 => 'Y'
);

COMMIT;


IF v_request_id > 0
   THEN
  
   v_finished :=
         fnd_concurrent.wait_for_request (request_id      => v_request_id,
                                          INTERVAL        => 0,
                                          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_status) = 'NORMAL')
      THEN
     
        dbms_output.put_line('Run Successfully');
               
 
      END IF;

END IF;
  
     
END XX_PR_REQUISITION_PROC;


Note: If not using Project costing then leave the mentioned values blank:
1.PROJECT_ACCOUNTING_CONTEXT
2.PROJECT_ID
3.TASK_ID
4.EXPENDITURE_ITEM_DATE
5.EXPENDITURE_ORGANIZATION_ID
6.EXPENDITURE_TYPE

No comments:

Post a Comment