Monday, 18 May 2015

ATFL ONT Sale Order Backorder program without delivery

Declare

 p_line_rows            WSH_UTIL_CORE.ID_TAB_TYPE;
      x_del_rows             WSH_UTIL_CORE.ID_TAB_TYPE;
      p_count                NUMBER;
      v_context              VARCHAR2 (100);

      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);

      CURSOR C1
      IS
         SELECT wdd.delivery_Detail_id,
                ooh.order_source_id,
                ooh.header_id,
                NULL Line_id,
                wdd.source_header_id,
                sot.name,
                wdd.source_line_id,
                wdd.subinventory whse_code,
                ooh.order_number,
                ooh.attribute5 po_expire_date,
                DECODE (wdd.released_status, 'Y', 'Staged/Pick Confirmed')
                   Shipping_Status
           FROM oe_order_headers_all ooh,
                oe_transaction_types_v sot,
                wsh_delivery_details wdd
          WHERE     1 = 1
                AND ooh.header_id = wdd.source_header_id
                AND sot.transaction_type_id = ooh.order_type_id
                AND wdd.released_status = 'Y'
                AND TRUNC (SYSDATE) - TO_DATE (ooh.booked_date) >= 3
                AND ooh.flow_status_code = 'BOOKED'
                AND NOT EXISTS
                           (SELECT 1
                              FROM wsh_Delivery_assignments
                             WHERE     delivery_Detail_id =
                                          wdd.delivery_detail_id
                                   AND delivery_id IS NOT NULL);
                                 
 BEGIN
      BEGIN
         FND_GLOBAL.apps_initialize (2438, 50118, 200);
      END;
    IF p_order_num is  NULL THEN
      FOR i IN c1
      LOOP
         EXIT WHEN C1%NOTFOUND;



         FNd_File.put_line (
            fnd_file.LOG,
            'Delivery_detail_id is - ' || i.delivery_detail_id);

         BEGIN
            p_line_rows (1) := i.delivery_detail_id; -- Delivery_detail_id from WSH_DELIVERY_DETAILS

            -- API Call for Auto Create Deliveries
            WSH_DELIVERY_DETAILS_PUB.AUTOCREATE_DELIVERIES (
               p_api_version_number   => 1.0,
               p_init_msg_list        => apps.fnd_api.g_true,
               p_commit               => apps.fnd_api.g_true,
               x_return_status        => x_return_status,
               x_msg_count            => x_msg_count,
               x_msg_data             => x_msg_data,
               p_line_rows            => p_line_rows,
               x_del_rows             => x_del_rows);

            IF x_return_status = 'S'
            THEN
               FNd_File.put_line (
                  fnd_file.LOG,
                     'Delivery Got Sucessfully created and assigned to delivery details '
                  || x_del_rows (1));

               wsh_reg_delivery_bkrdr (x_del_rows (1));
            ELSE
               FNd_File.put_line (fnd_file.LOG,
                                  'Message count ' || x_msg_count);

               IF x_msg_count = 1
               THEN
                  FNd_File.put_line (fnd_file.LOG,
                                     'x_msg_data ' || x_msg_data);
               ELSIF x_msg_count > 1
               THEN
                  LOOP
                     p_count := p_count + 1;
                     x_msg_data :=
                        FND_MSG_PUB.Get (FND_MSG_PUB.G_NEXT, FND_API.G_FALSE);

                     IF x_msg_data IS NULL
                     THEN
                        EXIT;
                     END IF;

                     FNd_File.put_line (
                        fnd_file.LOG,
                        'Message' || p_count || '---' || x_msg_data);
                  END LOOP;
               END IF;
            END IF;
         END;
      END LOOP;
    ELSE
     IF p_order_num is not null and p_orgn_code is null then
     retcode := 2;


      FNd_File.put_line (
                         fnd_file.LOG,'Organization Code cannot be null if order number is provided');
     Return;
     ELSIF p_order_num is null and p_orgn_code is not null then
      retcode := 2;
      FNd_File.put_line (
                         fnd_file.LOG,'Order Number cannot be null if Organization code is provided');
     Return;
     END IF;
   
      FOR j IN c2(p_order_num,p_orgn_code )
      LOOP
         EXIT WHEN C2%NOTFOUND;

       

         FNd_File.put_line (
            fnd_file.LOG,
            'Delivery_detail_id is - ' || j.delivery_detail_id);

         BEGIN
            p_line_rows (1) := j.delivery_detail_id; -- Delivery_detail_id from WSH_DELIVERY_DETAILS

            -- API Call for Auto Create Deliveries
            WSH_DELIVERY_DETAILS_PUB.AUTOCREATE_DELIVERIES (
               p_api_version_number   => 1.0,
               p_init_msg_list        => apps.fnd_api.g_true,
               p_commit               => apps.fnd_api.g_true,
               x_return_status        => x_return_status,
               x_msg_count            => x_msg_count,
               x_msg_data             => x_msg_data,
               p_line_rows            => p_line_rows,
               x_del_rows             => x_del_rows);

            IF x_return_status = 'S'
            THEN
               FNd_File.put_line (
                  fnd_file.LOG,
                     'Delivery Got Sucessfully created and assigned to delivery details '
                  || x_del_rows (1));

               wsh_reg_delivery_bkrdr (x_del_rows (1));
            ELSE
               FNd_File.put_line (fnd_file.LOG,
                                  'Message count ' || x_msg_count);

               IF x_msg_count = 1
               THEN
                  FNd_File.put_line (fnd_file.LOG,
                                     'x_msg_data ' || x_msg_data);
               ELSIF x_msg_count > 1
               THEN
                  LOOP
                     p_count := p_count + 1;
                     x_msg_data :=
                        FND_MSG_PUB.Get (FND_MSG_PUB.G_NEXT, FND_API.G_FALSE);

                     IF x_msg_data IS NULL
                     THEN
                        EXIT;
                     END IF;

                     FNd_File.put_line (
                        fnd_file.LOG,
                        'Message' || p_count || '---' || x_msg_data);
                  END LOOP;
               END IF;
            END IF;
         END;
      END LOOP;
    END IF;
   END;                                  

No comments:

Post a Comment