Friday, 27 January 2012

How to Backorder Shipment through API


PROCEDURE xxxx_iso_shipping_bkrd (errbuf OUT VARCHAR2, retcode OUT VARCHAR2)
IS
   x_return_status          VARCHAR2 (3000);
   x_msg_count              NUMBER;
   x_msg_data               VARCHAR2 (3000);
   l_msg_count              NUMBER;
   l_msg_data               VARCHAR2 (2000);
   l_msg_index              NUMBER;
--Standard Parameters.
   p_api_version_number     NUMBER;
   init_msg_list            VARCHAR2 (30);
   x_msg_details            VARCHAR2 (3000);
   x_msg_summary            VARCHAR2 (3000);
   p_validation_level       NUMBER;
   p_commit                 VARCHAR2 (30);
--Parameters for WSH_DELIVERIES_PUB.Delivery_Action.
   p_action_code            VARCHAR2 (15);
   p_delivery_id            NUMBER;
   p_delivery_name          VARCHAR2 (30);
   p_asg_trip_id            NUMBER;
   p_asg_trip_name          VARCHAR2 (30);
   p_asg_pickup_stop_id     NUMBER;
   p_asg_pickup_loc_id      NUMBER;
   p_asg_pickup_loc_code    VARCHAR2 (30);
   p_asg_pickup_arr_date    DATE;
   p_asg_pickup_dep_date    DATE;
   p_asg_dropoff_stop_id    NUMBER;
   p_asg_dropoff_loc_id     NUMBER;
   p_asg_dropoff_loc_code   VARCHAR2 (30);
   p_asg_dropoff_arr_date   DATE;
   p_asg_dropoff_dep_date   DATE;
   p_sc_action_flag         VARCHAR2 (10);
   p_sc_close_trip_flag     VARCHAR2 (10);
   p_sc_create_bol_flag     VARCHAR2 (10);
   p_sc_stage_del_flag      VARCHAR2 (10);
   p_sc_trip_ship_method    VARCHAR2 (30);
   p_sc_actual_dep_date     VARCHAR2 (30);
   p_sc_report_set_id       NUMBER;
   p_sc_report_set_name     VARCHAR2 (60);
   p_wv_override_flag       VARCHAR2 (10);
   x_trip_id                VARCHAR2 (30);
   x_trip_name              VARCHAR2 (30);
/*Handle exceptions*/
   fail_api                 EXCEPTION;

   CURSOR lc_get_iso_ship_data
   IS
      SELECT ooh.header_id, ooh.order_number, wnd.delivery_id,
             wnd.NAME delivery_name,
             SUBSTR (wdd.source_header_type_name, 1, 3) whse
        FROM oe_order_headers_all ooh,
             wsh_delivery_details wdd,
             wsh_new_deliveries wnd,
             wsh_delivery_assignments wda
       WHERE 1 = 1
         AND ooh.header_id = wdd.source_header_id
         AND wdd.delivery_detail_id = wda.delivery_detail_id
         AND wda.delivery_id = wnd.delivery_id
         AND wdd.released_status = 'Y'
         --AND ooh.order_source_id = 10
--And    wda.delivery_id = '776213' --- if required pass delivery id as parameter in concurrent program
         AND TRUNC (SYSDATE) - TO_DATE (ooh.booked_date) = 1;

   ln_user_id               NUMBER;
   ln_resp_id               NUMBER;
   ln_resp_app_id           NUMBER;
   ln_reason_id             NUMBER;
BEGIN
   ln_user_id := apps.fnd_profile.VALUE ('USER_ID');

   IF ln_user_id IS NULL
   THEN
      ln_user_id := -1;
   END IF;

   ln_resp_id := apps.fnd_profile.VALUE ('RESP_ID');
   ln_resp_app_id := apps.fnd_profile.VALUE ('RESP_APPL_ID');

   BEGIN
      fnd_global.apps_initialize (ln_user_id, ln_resp_id, ln_resp_app_id);
   END;

   FOR lc_iso_ship_dt IN lc_get_iso_ship_data
   LOOP
      EXIT WHEN lc_get_iso_ship_data%NOTFOUND;
      p_action_code := 'CONFIRM';         -- The action code for ship confirm
      p_delivery_id := lc_iso_ship_dt.delivery_id;
                         --620600; -- The delivery that needs to be confirmed
      p_delivery_name := lc_iso_ship_dt.delivery_name;
                                            --'620600'; -- The delivery name,
      p_sc_action_flag := 'C';                      -- Ship entered quantity.
      p_sc_stage_del_flag := 'N';                                           --
      --p_sc_trip_ship_method := Null; -- The ship method code
      /*Call to WSH_DELIVERIES_PUB.Delivery_Action. */
      wsh_deliveries_pub.delivery_action
                           (p_api_version_number        => 1.0,
                            p_init_msg_list             => init_msg_list,
                            x_return_status             => x_return_status,
                            x_msg_count                 => x_msg_count,
                            x_msg_data                  => x_msg_data,
                            p_action_code               => p_action_code,
                            p_delivery_id               => p_delivery_id,
                            p_delivery_name             => p_delivery_name,
                            p_asg_trip_id               => p_asg_trip_id,
                            p_asg_trip_name             => p_asg_trip_name,
                            p_asg_pickup_stop_id        => p_asg_pickup_stop_id,
                            p_asg_pickup_loc_id         => p_asg_pickup_loc_id,
                            p_asg_pickup_loc_code       => p_asg_pickup_loc_code,
                            p_asg_pickup_arr_date       => p_asg_pickup_arr_date,
                            p_asg_pickup_dep_date       => p_asg_pickup_dep_date,
                            p_asg_dropoff_stop_id       => p_asg_dropoff_stop_id,
                            p_asg_dropoff_loc_id        => p_asg_dropoff_loc_id,
                            p_asg_dropoff_loc_code      => p_asg_dropoff_loc_code,
                            p_asg_dropoff_arr_date      => p_asg_dropoff_arr_date,
                            p_asg_dropoff_dep_date      => p_asg_dropoff_dep_date,
                            p_sc_action_flag            => p_sc_action_flag,
                            p_sc_close_trip_flag        => p_sc_close_trip_flag,
                            p_sc_create_bol_flag        => p_sc_create_bol_flag,
                            p_sc_stage_del_flag         => p_sc_stage_del_flag,
                            p_sc_trip_ship_method       => p_sc_trip_ship_method,
                            p_sc_actual_dep_date        => p_sc_actual_dep_date,
                            p_sc_report_set_id          => p_sc_report_set_id,
                            p_sc_report_set_name        => p_sc_report_set_name,
                            p_wv_override_flag          => p_wv_override_flag,
                            x_trip_id                   => x_trip_id,
                            x_trip_name                 => x_trip_name
                           );

      IF (x_return_status <> wsh_util_core.g_ret_sts_success)
      THEN
         fnd_file.put_line (fnd_file.LOG,
                               'Successfully BackOrdered for Order Number - '
                            || lc_iso_ship_dt.order_number
                           );
         COMMIT;
      ELSE
         fnd_file.put_line
            (fnd_file.LOG,
                'Could not able to Back Order Line Due to Following Reasons -'
             || x_return_status
             || ' for header id - '
             || lc_iso_ship_dt.header_id
            );
         ROLLBACK;
      /* FOR j IN 1 .. l_msg_count
         LOOP
          fnd_msg_pub.get (p_msg_index => j,
           p_encoded => fnd_api.g_false,
            p_data => l_msg_data,
             p_msg_index_out => l_msg_index);
         fnd_file.put_line(fnd_file.log,'Error Message is=> '|| l_msg_data);
         END LOOP;*/
      END IF;
   END LOOP;

   COMMIT;
END;

No comments:

Post a Comment