Thursday, October 3, 2013

Date

DATE  :
OAF :

When we are trying to fetch the Date information and planning to compare two dates ,then below is the process to be performed in OAF (JDEV).

1.Take the fields using current row into a oracle.jbo.domain.date
2.Convert the above domain date into String
3.and Using Simpledateformat ,and parse functions compare the dates (java.util.date)

  IDCardHeaderEOVOImpl headervo = getIDCardHeaderEOVO1();
  IDCardHeaderEOVORowImpl headerrow =(IDCardHeaderEOVORowImpl)headervo.first();
  oracle.jbo.domain.Date Date1 =headerrow.getCntIssueDate();
  oracle.jbo.domain.Date Date2 =headerrow.getCntExpiryDate();
  String datesrt =(String)Date1.toString();
  String dateesrt = (String)Date2.toString();
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  java.util.Date udate1 = null ;
  java.util.Date udate2 = null ;
  try 
 {
 udate1 = sdf.parse(datesrt);
 udate2 = sdf.parse(dateesrt);
 }
catch (Exception e )
{
  e.printStackTrace();
}
if(udate1.compareTo(udate2)>0)
{
throw  new OAException("Expiry date cannot be prior to Issue date.",OAException.ERROR);  
}

Monday, September 2, 2013

Creation of Internal Requisition and Move Order 11i


CREATE OR REPLACE PACKAGE BODY APPS.xxey_itsr_po_req_int_pkg1
AS
   PROCEDURE main_proc (errbuf           OUT VARCHAR2,
                        retcode          OUT NUMBER,
                        p_header_id   IN     NUMBER)
   AS
      -------------cursor declaration-------------
      CURSOR c_get_stg_details
      IS
         SELECT xbh.REQ_HEADER_ID,
                xbh.REQUEST_TYPE,
                xbh.REQUEST_SUB_TYPE,
                xbh.NEED_BY_DATE,
                xbh.LAST_UPDATE_DATE,
                xbh.LAST_UPDATED_BY,
                xbh.CREATION_DATE,
                xbh.CREATED_BY,
                xbh.LAST_UPDATE_LOGIN,
                xbh.REQUESTER_ACCNT_ID,
                xbh.PROCESS_FLAG,
                xbh.ORG_ID,
                xbh.REQUESTER_NAME,
                xbh.PREPARER_NAME,
                xbh.PREPARER_ID,
                xbh.REQUEST_STATUS,
                xbh.VENDOR_NAME,
                xbh.VENDOR_ID,
                xbh.VENDOR_SITE_ID,
                xbh.ERROR_MESSAGE,
                xbh.REQUEST_NUMBER,
                xbh.REQUESTER_ID,
                xbh.REQUEST_DATE,
                xbl.REQUEST_LINE_ID,
                xbl.REQUEST_HEADER_ID,
                xbl.LINE_NUM,
                xbl.QUANTITY,
                xbl.UNIT_PRICE,
                xbh.CURRENCY_CODE,
                xbl.UOM_CODE,
                xbl.ITEM_DESCRIPTION,
                xbl.ITEM_ID,
                xbl.ITEM_TYPE
           FROM xxey_itsr_request_header xbh, xxey_itsr_request_lines xbl
          WHERE     1 = 1
                AND xbh.REQ_HEADER_ID = xbl.REQUEST_HEADER_ID
                AND xbh.REQ_HEADER_ID = p_header_id
                AND xbh.REQUEST_SUB_TYPE IN ('STK', 'SPL')
                AND NVL (xbh.PROCESS_FLAG, 'N') IN ('N', 'E');


      lc_req_msg                VARCHAR2 (240);
      lc_dev_phase              VARCHAR2 (15);
      lc_dev_status             VARCHAR2 (15);
      lb_get_req_status         BOOLEAN;
      ln_wait_interval          NUMBER := 10;
      ln_max_wait               NUMBER := 1000;
      lc_err_msg                VARCHAR2 (32766);
      lc_err_msg2               VARCHAR2 (32767);
      lc_phase                  VARCHAR2 (100);
      lc_status                 VARCHAR2 (10);
      ln_lin_count              NUMBER := 0;
      ln_vald_cnt               NUMBER := 0;
      ln_req_id                 NUMBER;
      ln_req_hdr_id             NUMBER;
      ln_inv_item_id            NUMBER;
      ln_vendor_id              NUMBER;
      ln_vendor_site_id         NUMBER;
      ln_org_id                 NUMBER;
      ln_category_id            NUMBER;
      ln_ccid                   NUMBER;
      lc_vendor_name            VARCHAR2 (240);
      ln_vendor_id              NUMBER;
      ln_req_num                NUMBER;
      ln_deliver_to_requester   NUMBER;
      lc_rec_status             VARCHAR2 (1);
      ln_count                  NUMBER;
      lc_service_type           VARCHAR2 (240);
      ln_mo_num                 NUMBER;
      ln_retcode                NUMBER;
      ln_rate                   NUMBER;
      lc_dest_org               VARCHAR2 (30) := 'CMS';
      lc_dest_loc               VARCHAR2 (30) := 'CMS Location';
      lc_dest_code              VARCHAR2 (30) := 'INVENTORY';
      lc_source_org             VARCHAR2 (30) := 'CMS';
      ln_uom_code               VARCHAR2 (30);

      ---Declaring the cursor for item_id---------------

      CURSOR c_get_item_id (
         p_item_id        IN NUMBER,
         p_des_org_code   IN VARCHAR2)
      IS
         SELECT msi.inventory_item_id, INITCAP (PRIMARY_UOM_CODE)
           FROM mtl_system_items_b msi, org_organization_definitions ood
          WHERE     ood.organization_id = msi.organization_id
                AND msi.inventory_item_id = p_item_id
                AND msi.inventory_item_status_code LIKE 'Active'
                AND UPPER (ood.organization_code) = UPPER (p_des_org_code);

      ----Declaring the cursor  for category id with inventory item----------
      CURSOR c_get_item_cat (                   -- p_category_id    IN NUMBER,
         p_inv_item_id    IN NUMBER,
         p_des_org_code   IN VARCHAR2)
      IS
         SELECT mic.category_id
           FROM mtl_item_categories mic, org_organization_definitions ood
          WHERE     mic.organization_id = ood.organization_id
                --     AND mic.category_id = p_category_id                 Commented By Raghu
                AND mic.inventory_item_id = p_inv_item_id
                AND UPPER (ood.organization_code) = UPPER (p_des_org_code)
                AND ROWNUM = 1;

      ---Declaring the cursor  for code_combination id-------------
      CURSOR c_get_ccid (p_ccid IN NUMBER)
      IS
         SELECT code_combination_id
           FROM gl_code_combinations
          WHERE code_combination_id = p_ccid AND enabled_flag = 'Y';

      ---Declaring the cursor for to get the requisition number---
      CURSOR c_get_req_update (
         p_req_id   IN NUMBER,
         p_org_id   IN NUMBER)
      IS
         SELECT segment1
           FROM po_requisition_headers_all
          WHERE     attribute15 IS NOT NULL
                AND attribute15 = TO_CHAR (p_req_id)
                AND interface_source_code = 'ITSR'
                AND org_id = p_org_id;

      --Declaring the Cursor to get  the conversion rate

      CURSOR c_exchange_rate (
         p_currency_code   IN VARCHAR2,
         p_date            IN DATE)
      IS
         SELECT conversion_rate
           FROM gl_daily_rates
          WHERE     from_currency = p_currency_code
                AND conversion_date = p_date
                AND to_currency = 'AED'
                AND conversion_type = 'Corporate';

      ---Decalring the cursor for deliver to location-------------

      CURSOR c_get_locations (
         p_des_loc       IN VARCHAR2,
         p_deliver_loc   IN VARCHAR2)
      IS
         SELECT COUNT (1)
           FROM hr_locations
          WHERE inventory_organization_id IN
                   (SELECT organization_id
                      FROM org_organization_definitions
                     WHERE organization_code = p_des_loc)
                AND location_code = p_deliver_loc;
   BEGIN
      FOR lcu_get_details IN c_get_stg_details
      LOOP
         BEGIN
            lc_err_msg := NULL;
            ln_inv_item_id := NULL;
            ln_category_id := NULL;
            ln_count := NULL;
            ln_ccid := NULL;
            ln_org_id := lcu_get_details.org_id;
            lc_rec_status := 'P';
            ln_req_hdr_id := lcu_get_details.REQ_HEADER_ID;
            ln_lin_count := ln_lin_count + 1;
            ln_rate := NULL;

            IF lcu_get_details.process_flag = 'E'
            THEN
               DELETE FROM po_requisitions_interface_all
                     WHERE header_attribute15 = lcu_get_details.REQ_HEADER_ID
                           AND interface_source_code = 'ITSR';
            END IF;

            OPEN c_get_item_id (lcu_get_details.item_id, lc_dest_org); --lcu_get_details.destination_organization_code);

            FETCH c_get_item_id
            INTO ln_inv_item_id, ln_uom_code;

            CLOSE c_get_item_id;

            IF ln_inv_item_id IS NULL
            THEN
               lc_rec_status := 'E';
               lc_err_msg := lc_err_msg || ' ' || 'Invalid Inventory Item';
            END IF;

            OPEN c_get_item_cat ( ---lcu_get_details.category_id, Commented By Raghu
                                 lcu_get_details.item_id, lc_dest_org); --, lcu_get_details.destination_organization_code);

            FETCH c_get_item_cat INTO ln_category_id;

            CLOSE c_get_item_cat;

            IF ln_category_id IS NULL
            THEN
               lc_rec_status := 'E';
               lc_err_msg := lc_err_msg || ' ' || 'Invalid Item Category';
            END IF;

            OPEN c_get_locations (lc_dest_org --lcu_get_details.destination_organization_code
                                             , lc_dest_loc); --lcu_get_details.deliver_to_location_code);

            FETCH c_get_locations INTO ln_count;

            CLOSE c_get_locations;


            IF ln_count = 0
            THEN
               lc_rec_status := 'E';
               lc_err_msg :=
                  lc_err_msg || ' ' || 'Invalid Deliver to location code';
            END IF;

            OPEN c_get_ccid (lcu_get_details.REQUESTER_ACCNT_ID);

            FETCH c_get_ccid INTO ln_ccid;

            CLOSE c_get_ccid;

            IF ln_ccid IS NULL
            THEN
               lc_rec_status := 'E';
               lc_err_msg := lc_err_msg || ' ' || 'Invalid Code Combination';
            END IF;

            IF lcu_get_details.currency_code <> 'AED'
            THEN
               OPEN c_exchange_rate (lcu_get_details.currency_code,
                                     lcu_get_details.request_date);

               FETCH c_exchange_rate INTO ln_rate;

               CLOSE c_exchange_rate;

               IF ln_rate IS NULL
               THEN
                  lc_rec_status := 'E';
                  lc_err_msg :=
                     lc_err_msg || ' ' || 'Invalid Daily Rate Defined';
               END IF;
            END IF;


            IF (lc_rec_status <> 'E')
            THEN
               ln_vald_cnt := ln_vald_cnt + 1;
               DBMS_OUTPUT.put_line ('Entering to insert into interface');

               BEGIN
                  INSERT
                    INTO po_requisitions_interface_all (
                            created_by,
                            creation_date,
                            last_updated_by,
                            last_update_date,
                            last_update_login,
                            interface_source_code,
                            destination_type_code,
                            authorization_status,
                            preparer_id,
                            item_id,
                            quantity,
                            unit_price,
                            uom_code,
                            category_id,
                            destination_organization_code,
                            deliver_to_location_code,
                            deliver_to_requestor_id,
                            source_type_code,
                            org_id,
                            charge_account_id,
                            budget_account_id,
                            source_organization_code,
                            item_description,
                            header_attribute15,
                            requisition_type,
                            currency_code,
                            gl_date,
                            reference_num,
                            --     request_id,
                            rate_type,
                            rate_date,
                            need_by_date)
                  VALUES (
                            gn_user_id,
                            SYSDATE,
                            gn_user_id,
                            SYSDATE,
                            gn_login_id,
                            'ITSR',
                            lc_dest_code --lcu_get_details.destination_type_code
                                        ,
                            'APPROVED',
                            lcu_get_details.preparer_id,
                            ln_inv_item_id,
                            lcu_get_details.quantity,
                            lcu_get_details.unit_price,
                            TRIM (ln_uom_code),
                            ln_category_id,
                            lc_dest_org --lcu_get_details.destination_organization_code
                                       ,
                            lc_dest_loc --lcu_get_details.deliver_to_location_code
                                       ,
                            NVL (lcu_get_details.requester_id,
                                 lcu_get_details.preparer_id),
                            'INVENTORY',
                            ln_org_id,
                            ln_ccid,
                            ln_ccid,
                            lc_source_org --lcu_get_details.source_organization_code
                                         ,
                            lcu_get_details.item_description,
                            lcu_get_details.REQ_HEADER_ID,
                            'INTERNAL',
                            lcu_get_details.currency_code,
                            lcu_get_details.request_date,
                            lcu_get_details.request_number,
                            --   lcu_get_details.request_id,
                            'Corporate',
                            lcu_get_details.request_date,
                            SYSDATE + 1);

                  DBMS_OUTPUT.put_line (
                     'Entering to after the insert into interface');
                  COMMIT;
               EXCEPTION
                  WHEN OTHERS
                  THEN
                     DBMS_OUTPUT.put_line (
                        'Insert Statement Error' || SQLERRM);
               END;
            END IF;

            UPDATE xxey_itsr_request_lines
               SET process_flag = lc_rec_status,
                   error_message = lc_err_msg,
                   --  request_id = gn_req_id,
                   last_update_date = SYSDATE,
                   last_updated_by = gn_user_id,
                   last_update_login = gn_login_id
             WHERE REQUEST_LINE_ID = lcu_get_details.REQUEST_LINE_ID;

            COMMIT;
         EXCEPTION
            WHEN OTHERS
            THEN
               lc_err_msg := SUBSTR (SQLERRM, 240);

               UPDATE xxey_itsr_request_lines
                  SET process_flag = 'E',
                      error_message = lc_err_msg,
                      --        request_id = gn_req_id,
                      last_update_date = SYSDATE,
                      last_updated_by = gn_user_id,
                      last_update_login = gn_login_id
                WHERE REQUEST_LINE_ID = lcu_get_details.REQUEST_LINE_ID;

               COMMIT;
         END;
      END LOOP;

      IF ln_lin_count = ln_vald_cnt
      THEN
         lc_rec_status := 'P';
         lc_err_msg := NULL;
         ---Calling  the standard concurrent program-------------
         fnd_global.apps_initialize (21879, 20707, 201);     --Added on NOV-20

         BEGIN
            ln_req_id :=
               fnd_request.submit_request (application   => 'PO',
                                           program       => 'REQIMPORT',
                                           description   => NULL,
                                           start_time    => SYSDATE,
                                           sub_request   => FALSE,
                                           argument1     => 'ITSR',
                                           argument2     => NULL,
                                           argument3     => 'ALL',
                                           argument4     => NULL,
                                           --   argument5     => 'No',
                                           argument6     => 'Yes');
            COMMIT;
         EXCEPTION
            WHEN OTHERS
            THEN
               DBMS_OUTPUT.put_line (
                  'Error Message At Caling Submit Request ' || SQLERRM);
         END;

         IF (ln_req_id > 0)
         THEN
            lb_get_req_status :=
               fnd_concurrent.wait_for_request (ln_req_id,
                                                ln_wait_interval,
                                                ln_max_wait,
                                                lc_phase,
                                                lc_status,
                                                lc_dev_phase,
                                                lc_dev_status,
                                                lc_req_msg);


            IF UPPER (lc_dev_phase) = 'COMPLETE'
               AND UPPER (lc_dev_status) = 'NORMAL'
            THEN
               OPEN c_get_req_update (p_header_id, ln_org_id);

               FETCH c_get_req_update INTO ln_req_num;

               CLOSE c_get_req_update;

               -- fnd_file.put_line(fnd_file.output,'requisition number'||ln_req_num);

               IF ln_req_num IS NOT NULL
               THEN
                  ---update the staging table with the RequisitionNumber and Rquest_id----
                  UPDATE xxey_itsr_request_header
                     SET requisition_number = ln_req_num,
                         --    request_id = gn_req_id,
                         last_update_date = SYSDATE,
                         last_updated_by = gn_user_id,
                         last_update_login = gn_login_id
                   WHERE REQ_HEADER_ID = p_header_id;

                  COMMIT;

                  -----calling  procedure for Move Order Issue-----------------
                  create_move_order (lc_err_msg2, ln_req_num, ln_org_id);

                  IF lc_err_msg2 IS NULL
                  THEN
                     SELECT COUNT (DISTINCT header_id)
                       INTO ln_mo_num
                       FROM mtl_txn_request_headers
                      WHERE request_number = ln_req_num
                            AND organization_id = 106;

                     IF (ln_mo_num > 0)
                     THEN
                        ---update the staging table with the RequisitionNumber and Rquest_id----
                        UPDATE xxey_itsr_request_header
                           SET requisition_number = ln_req_num,
                               --        request_id = gn_req_id,
                               process_flag = 'P',
                               request_status = 'PSMI',
                               error_message = NULL,
                               last_update_date = SYSDATE,
                               last_updated_by = gn_user_id,
                               last_update_login = gn_login_id
                         WHERE REQ_HEADER_ID = p_header_id;

                        COMMIT;
                     ELSE
                        lc_rec_status := 'E';
                        lc_err_msg := 'Move order not Created';
                     END IF;
                  ELSE
                     lc_rec_status := 'E';
                     lc_err_msg :=
                        'Error in Move order procedure: ' || lc_err_msg2;
                  END IF;
               ELSE
                  lc_rec_status := 'E';
                  lc_err_msg := 'Requisition not created';
               END IF;
            ELSE
               lc_rec_status := 'E';
               lc_err_msg := 'Requisition Import completed with error';
            END IF;
         ELSE
            lc_rec_status := 'E';
            lc_err_msg := 'Requisition Import Failed to submit';
         END IF;
      ELSE
         lc_rec_status := 'E';
         lc_err_msg := 'Error in lines';
      END IF;

      IF lc_rec_status = 'E'
      THEN
         ---Updating the staging Table---
         UPDATE xxey_itsr_request_header
            SET                                     -- request_id = gn_req_id,
               REQUEST_STATUS_MEANING = 'Error in IR/MO Interface',
                last_update_date = SYSDATE,
                process_flag = lc_rec_status,
                error_message = lc_err_msg,
                last_updated_by = gn_user_id,
                last_update_login = gn_login_id
          WHERE REQ_HEADER_ID = p_header_id;
      END IF;

      EXECUTE IMMEDIATE 'COMMIT';
   EXCEPTION
      WHEN OTHERS
      THEN
         lc_err_msg := SUBSTR (SQLERRM, 1, 100);

         ---Updating the staging Table---
         UPDATE xxey_itsr_request_header
            SET process_flag = 'E',
                error_message = lc_err_msg,
                --         request_id = gn_req_id,
                last_update_date = SYSDATE,
                last_updated_by = gn_user_id,
                last_update_login = gn_login_id
          WHERE REQ_HEADER_ID = p_header_id;

         EXECUTE IMMEDIATE 'COMMIT';
   END main_proc;

   PROCEDURE submit_program (p_err_msg OUT VARCHAR2, p_header_id IN NUMBER)
   AS
      ln_req_id         NUMBER;
      ln_po_req_id      NUMBER;
      lc_service_type   VARCHAR2 (240);
   BEGIN
      fnd_global.apps_initialize (21879, 20707, 201);
      ---submitting the concurrent program in custom application-----
      ln_req_id :=
         fnd_request.submit_request (application   => 'XXCUST',
                                     program       => 'XXEYIRC',
                                     description   => NULL,
                                     start_time    => SYSDATE,
                                     sub_request   => FALSE,
                                     argument1     => p_header_id);
      COMMIT;

      IF ln_req_id <= 0
      THEN
         p_err_msg := 'Requisition Interface Program failed to submit';
      END IF;
   EXCEPTION
      WHEN OTHERS
      THEN
         p_err_msg := SQLERRM;
   END submit_program;

   PROCEDURE create_move_order (p_errbuf               OUT VARCHAR2,
                                p_requisition_num   IN     VARCHAR2,
                                p_org_id            IN     NUMBER)
   IS
      lc_header_status     VARCHAR2 (1) := fnd_api.g_ret_sts_success;
      lc_line_status       VARCHAR2 (1) := fnd_api.g_ret_sts_success;
      ln_msg_count         NUMBER;
      lc_msg_data          VARCHAR2 (4000);
      lc_msg               VARCHAR2 (4000);
      ln_line_num          NUMBER := 0;
      ln_order_count       NUMBER := 1;
      ln_count             NUMBER;
      ln_header_id         NUMBER;
      ln_line_id           NUMBER;
      ln_user_id           NUMBER;
      ln_trx_type_id       NUMBER;
      lcu_trohdr_rec       inv_move_order_pub.trohdr_rec_type;
      lcu_trohdr_val_rec   inv_move_order_pub.trohdr_val_rec_type;
      lcu_trolin_tbl       inv_move_order_pub.trolin_tbl_type;
      lcu_trolin_val_tbl   inv_move_order_pub.trolin_val_tbl_type;
      ln_mo_num            NUMBER;
      lc_rec_status        VARCHAR2 (1);
      lc_err_msg           VARCHAR2 (32766);

      --
      CURSOR cur_req_header (
         p_req_no    VARCHAR2,
         p_org_id    NUMBER)
      IS
         SELECT DISTINCT prh.segment1,
                         prh.org_id,
                         prl.source_organization_id,
                         prl.need_by_date,
                         prh.created_by
           FROM po_requisition_headers_all prh,
                po_requisition_lines_all prl,
                po_req_distributions_all prd
          WHERE     prl.requisition_header_id = prh.requisition_header_id
                AND prh.segment1 = p_req_no
                AND prh.org_id = p_org_id
                AND prl.org_id = prh.org_id
                AND prl.source_type_code = 'INVENTORY'
                AND prh.authorization_status = 'APPROVED'
                AND prd.requisition_line_id(+) = prl.requisition_line_id
                AND NVL (prh.attribute14, 'N') <> 'Y'
                AND NVL (prl.cancel_flag, 'N') <> 'Y';

      ---------Lines Information for Move Orders for End User
      CURSOR cur_req_line (
         p_req_no     VARCHAR2,
         p_org_id     NUMBER,
         p_src_org    NUMBER)
      IS
         SELECT DISTINCT prl.requisition_line_id,
                         prl.item_id,
                         prl.unit_meas_lookup_code,
                         prl.created_by,
                         prl.quantity,
                         prl.source_subinventory,
                         prl.source_organization_id,
                         prd.code_combination_id,
                         prl.need_by_date,
                         prl.destination_subinventory
           FROM po_requisition_headers_all prh,
                po_requisition_lines_all prl,
                po_req_distributions_all prd
          WHERE     prl.requisition_header_id = prh.requisition_header_id
                AND prh.segment1 = p_req_no
                AND prl.source_organization_id = p_src_org
                AND prh.org_id = p_org_id
                AND prl.org_id = prh.org_id
                AND prl.source_type_code = 'INVENTORY'
                AND prh.authorization_status = 'APPROVED'
                AND prd.requisition_line_id(+) = prl.requisition_line_id
                AND NVL (prl.attribute14, 'N') <> 'Y'
                AND NVL (prl.cancel_flag, 'N') <> 'Y';
   BEGIN
      SELECT transaction_type_id
        INTO ln_trx_type_id
        FROM mtl_transaction_types
       WHERE     attribute10 = 'Y'
             AND transaction_type_name LIKE 'EY%'
             AND transaction_action_id = 1;

      FOR var_cur_req_header IN cur_req_header (p_requisition_num, p_org_id)
      LOOP
         BEGIN
            SELECT COUNT (DISTINCT header_id)
              INTO ln_count
              FROM mtl_txn_request_headers
             WHERE request_number = var_cur_req_header.segment1
                   AND organization_id =
                          var_cur_req_header.source_organization_id;
         EXCEPTION
            WHEN OTHERS
            THEN
               ln_count := 0;
         END;

         IF ln_count = 0
         THEN
            -----
            SELECT mtl_txn_request_headers_s.NEXTVAL
              INTO ln_header_id
              FROM DUAL;

            -----
            ln_line_num := 0;
            lcu_trohdr_rec.created_by := var_cur_req_header.created_by;
            lcu_trohdr_rec.creation_date := SYSDATE;
            -- l_trohdr_rec.date_required            := var_cur_req_header.need_by_date;
            --l_trohdr_rec.from_subinventory_code := NULL;
            lcu_trohdr_rec.header_status :=
               inv_globals.g_to_status_preapproved;
            --inv_globals.g_to_status_incomplete;
            lcu_trohdr_rec.last_updated_by := var_cur_req_header.created_by;
            lcu_trohdr_rec.last_update_date := SYSDATE;
            lcu_trohdr_rec.last_update_login := var_cur_req_header.created_by;
            lcu_trohdr_rec.request_number := var_cur_req_header.segment1;
            lcu_trohdr_rec.organization_id :=
               var_cur_req_header.source_organization_id;
            lcu_trohdr_rec.status_date := SYSDATE;
            lcu_trohdr_rec.header_id := ln_header_id;
            lcu_trohdr_rec.to_subinventory_code := NULL;
            lcu_trohdr_rec.move_order_type :=
               inv_globals.g_move_order_requisition;
            lcu_trohdr_rec.transaction_type_id := ln_trx_type_id;
            lcu_trohdr_rec.db_flag := fnd_api.g_true;
            lcu_trohdr_rec.operation := inv_globals.g_opr_create;

            --initialization Parameters.
            fnd_global.apps_initialize (user_id        => gn_user_id,
                                        resp_id        => gn_resp_id,
                                        resp_appl_id   => gn_resp_appl_id);
            inv_move_order_pub.create_move_order_header (
               p_api_version_number   => 1.0,
               p_init_msg_list        => fnd_api.g_false,
               p_return_values        => fnd_api.g_true,
               p_commit               => fnd_api.g_true,
               x_return_status        => lc_header_status,
               x_msg_count            => ln_msg_count,
               x_msg_data             => lc_msg_data,
               p_trohdr_rec           => lcu_trohdr_rec,
               p_trohdr_val_rec       => lcu_trohdr_val_rec,
               x_trohdr_rec           => lcu_trohdr_rec,
               x_trohdr_val_rec       => lcu_trohdr_val_rec);


            IF (lc_header_status != fnd_api.g_ret_sts_success)
            THEN
               IF ln_msg_count IS NOT NULL
               THEN
                  FOR i IN 1 .. ln_msg_count
                  LOOP
                     p_errbuf :=
                        SUBSTR (p_errbuf || fnd_msg_pub.get (i, NULL), 100);
                  END LOOP;
               END IF;
            END IF;

            FOR var_cur_req_line
               IN cur_req_line (var_cur_req_header.segment1,
                                var_cur_req_header.org_id,
                                var_cur_req_header.source_organization_id)
            LOOP
               SELECT mtl_txn_request_lines_s.NEXTVAL
                 INTO ln_line_id
                 FROM DUAL;

               ln_line_num := ln_line_num + 1;

               lcu_trolin_tbl (ln_line_num).created_by :=
                  var_cur_req_line.created_by;

               lcu_trolin_tbl (ln_line_num).creation_date := SYSDATE;

               lcu_trolin_tbl (ln_line_num).date_required :=
                  var_cur_req_line.need_by_date;

               lcu_trolin_tbl (ln_line_num).from_subinventory_code :=
                  var_cur_req_line.source_subinventory;

               lcu_trolin_tbl (ln_line_num).inventory_item_id :=
                  var_cur_req_line.item_id;

               lcu_trolin_tbl (ln_line_num).last_updated_by :=
                  var_cur_req_line.created_by;

               lcu_trolin_tbl (ln_line_num).last_update_date := SYSDATE;

               lcu_trolin_tbl (ln_line_num).last_update_login :=
                  var_cur_req_line.created_by;

               lcu_trolin_tbl (ln_line_num).line_id := ln_line_id;

               lcu_trolin_tbl (ln_line_num).line_number := ln_line_num;

               lcu_trolin_tbl (ln_line_num).header_id := ln_header_id;

               --l_trolin_tbl(l_line_num).MOVE_ORDER_TYPE_NAME        := 'Requisition';
               lcu_trolin_tbl (ln_line_num).line_status :=
                  inv_globals.g_to_status_preapproved;

               --inv_globals.g_to_status_approved;
               lcu_trolin_tbl (ln_line_num).organization_id :=
                  var_cur_req_line.source_organization_id;
               lcu_trolin_tbl (ln_line_num).quantity :=
                  var_cur_req_line.quantity;

               lcu_trolin_tbl (ln_line_num).status_date := SYSDATE;

               --l_trolin_tbl(l_line_num).REQUEST_NUMBER:= VAR_CUR_REQ_LINE.SEGMENT1;
               --l_trolin_tbl (l_line_num).to_subinventory_code := var_cur_req_line.destination_subinventory;
               lcu_trolin_tbl (ln_line_num).to_subinventory_code := NULL;

               SELECT uom_code
                 INTO lcu_trolin_tbl (ln_line_num).uom_code
                 FROM mtl_units_of_measure_vl
                WHERE TRUNC (SYSDATE) <
                         TRUNC (NVL (disable_date, SYSDATE + 1))
                      AND unit_of_measure =
                             var_cur_req_line.unit_meas_lookup_code;

               --lcu_trolin_tbl(ln_line_num).uom_code :=var_cur_req_line.unit_meas_lookup_code;

               lcu_trolin_tbl (ln_line_num).transaction_type_id :=
                  ln_trx_type_id;

               lcu_trolin_tbl (ln_line_num).to_account_id :=
                  var_cur_req_line.code_combination_id;

               lcu_trolin_tbl (ln_line_num).db_flag := fnd_api.g_true;

               lcu_trolin_tbl (ln_line_num).operation :=
                  inv_globals.g_opr_create;
               --initialization Parameters.
               fnd_global.apps_initialize (user_id        => gn_user_id,
                                           resp_id        => gn_resp_id,
                                           resp_appl_id   => gn_resp_appl_id);


               inv_move_order_pub.create_move_order_lines (
                  p_api_version_number   => 1.0,
                  p_init_msg_list        => fnd_api.g_false,
                  p_return_values        => fnd_api.g_true,
                  p_commit               => fnd_api.g_true,
                  x_return_status        => lc_line_status,
                  x_msg_count            => ln_msg_count,
                  x_msg_data             => lc_msg_data,
                  p_trolin_tbl           => lcu_trolin_tbl,     --l_trolin_rec
                  p_trolin_val_tbl       => lcu_trolin_val_tbl,
                  x_trolin_tbl           => lcu_trolin_tbl,
                  x_trolin_val_tbl       => lcu_trolin_val_tbl);

               ---------------

               IF (lc_line_status != fnd_api.g_ret_sts_success)
               THEN
                  IF ln_msg_count IS NOT NULL
                  THEN
                     FOR i IN 1 .. ln_msg_count
                     LOOP
                        p_errbuf :=
                           SUBSTR (p_errbuf || fnd_msg_pub.get (i, NULL),
                                   100);
                     END LOOP;
                  END IF;
               END IF;

               --Update the Requisition Lines .........
               IF lc_line_status = 'S'
               THEN
                  UPDATE po_requisition_lines_all
                     SET attribute14 = 'Y'
                   WHERE requisition_header_id =
                            (SELECT requisition_header_id
                               FROM po_requisition_headers_all
                              WHERE segment1 = var_cur_req_header.segment1
                                    AND source_organization_id =
                                           var_cur_req_header.source_organization_id)
                         AND org_id = var_cur_req_header.org_id;
               END IF;
            END LOOP;

            --Update the Requisition.........
            IF lc_header_status = 'S'
            THEN
               UPDATE po_requisition_headers_all
                  SET attribute14 = 'Y',
                      description =
                         description || ' ' || '(Converted to Move Order)'
                WHERE segment1 = var_cur_req_header.segment1
                      AND org_id = var_cur_req_header.org_id;
            END IF;
         ELSE
            p_errbuf := 'Move order already created';
         END IF;
      END LOOP;

      EXECUTE IMMEDIATE 'COMMIT';
   EXCEPTION
      WHEN OTHERS
      THEN
         p_errbuf := SUBSTR (SQLERRM, 1, 100);
   END;
END xxey_itsr_po_req_int_pkg1;
/