DBA Data[Home] [Help]

APPS.MTL_SAFETY_STOCKS_PKG SQL Statements

The following lines contain the word 'select', 'insert', 'update' or 'delete':

Line: 20

  SELECT 1
  INTO l_num
  FROM dual
  WHERE EXISTS (SELECT 1
		FROM mtl_safety_stocks
		WHERE organization_id = p_organization_id
		AND inventory_item_id = p_inventory_item_id
		AND effectivity_date >= p_effect_date
		AND (project_id IS NOT NULL OR task_id IS NOT NULL)
		);
Line: 56

                      X_SELECTION NUMBER,
                      X_INVENTORY_ITEM_ID NUMBER,
		      X_SAFETY_STOCK_CODE NUMBER,
                      X_FORECAST_NAME VARCHAR2,
                      X_CATEGORY_SET_ID NUMBER,
                      X_CATEGORY_ID NUMBER,
                      X_PERCENT NUMBER,
                      X_SERVICE_LEVEL NUMBER,
                      X_START_DATE DATE,
		      login_id NUMBER,
		      user_id NUMBER) IS

    cursor ITEM1_cur IS
   --Bug#2713829, also selected MRP_SAFETY_STOCK_PERCENT from MSI.
	SELECT DISTINCT F.INVENTORY_ITEM_ID, MSI.MRP_SAFETY_STOCK_PERCENT
	FROM MRP_FORECAST_DESIGNATORS D, MRP_FORECAST_DATES F, MTL_SYSTEM_ITEMS MSI
	WHERE D.ORGANIZATION_ID = X_ORGANIZATION_ID AND
	      D.FORECAST_DESIGNATOR = X_FORECAST_NAME AND
	      D.ORGANIZATION_ID = F.ORGANIZATION_ID AND
	      D.FORECAST_DESIGNATOR = F.FORECAST_DESIGNATOR AND
         MSI.ORGANIZATION_ID = F.ORGANIZATION_ID AND
         MSI.INVENTORY_ITEM_ID = F.INVENTORY_ITEM_ID;
Line: 80

	SELECT DISTINCT F.INVENTORY_ITEM_ID
	FROM MRP_FORECAST_DESIGNATORS D, MRP_FORECAST_DATES F,
             MTL_ITEM_CATEGORIES C
	WHERE D.ORGANIZATION_ID = X_ORGANIZATION_ID AND
	      D.FORECAST_DESIGNATOR = X_FORECAST_NAME AND
	      D.ORGANIZATION_ID = F.ORGANIZATION_ID AND
	      D.FORECAST_DESIGNATOR = F.FORECAST_DESIGNATOR AND
              C.CATEGORY_SET_ID = X_CATEGORY_SET_ID AND
              C.CATEGORY_ID = X_CATEGORY_ID AND
              C.ORGANIZATION_ID = X_ORGANIZATION_ID AND
              C.INVENTORY_ITEM_ID = F.INVENTORY_ITEM_ID;
Line: 93

        SELECT 'X' FROM MRP_FORECAST_DESIGNATORS
        WHERE FORECAST_DESIGNATOR = X_FORECAST_NAME AND
              FORECAST_DESIGNATOR
              IN (SELECT d.FORECAST_DESIGNATOR
                  FROM MRP_FORECAST_DESIGNATORS d
                  WHERE d.ORGANIZATION_ID = X_ORGANIZATION_ID AND
                        EXISTS (SELECT 'X' FROM MRP_FORECAST_DATES f
                                WHERE f.INVENTORY_ITEM_ID = X_INVENTORY_ITEM_ID AND
                                      d.FORECAST_DESIGNATOR = f.FORECAST_DESIGNATOR AND
                                      ORGANIZATION_ID = X_ORGANIZATION_ID));
Line: 135

      IF (X_SELECTION = 1) THEN
        DELETE FROM MTL_SAFETY_STOCKS M
        WHERE ORGANIZATION_ID = X_ORGANIZATION_ID
        AND FORECAST_DESIGNATOR = X_FORECAST_NAME
        AND INVENTORY_ITEM_ID NOT IN ( SELECT DISTINCT F.INVENTORY_ITEM_ID
                                       FROM MRP_FORECAST_DESIGNATORS D, MRP_FORECAST_DATES F
                                       WHERE D.ORGANIZATION_ID = X_ORGANIZATION_ID
                                       AND D.FORECAST_DESIGNATOR = X_FORECAST_NAME
                                       AND D.ORGANIZATION_ID = F.ORGANIZATION_ID
                                       AND D.FORECAST_DESIGNATOR = F.FORECAST_DESIGNATOR )
        AND NOT EXISTS ( SELECT 1 FROM MTL_SAFETY_STOCKS
                      	 WHERE ORGANIZATION_ID = M.ORGANIZATION_ID
                         AND INVENTORY_ITEM_ID = M.INVENTORY_ITEM_ID
                         AND EFFECTIVITY_DATE >= X_START_DATE
		         AND (PROJECT_ID IS NOT NULL OR TASK_ID IS NOT NULL))
        AND EFFECTIVITY_DATE >= X_START_DATE ;
Line: 151

     ELSIF ( X_SELECTION = 2 ) THEN
        DELETE FROM MTL_SAFETY_STOCKS M
        WHERE ORGANIZATION_ID = X_ORGANIZATION_ID
        AND FORECAST_DESIGNATOR = X_FORECAST_NAME
        AND INVENTORY_ITEM_ID = X_INVENTORY_ITEM_ID
        AND NOT EXISTS ( SELECT 1 FROM MRP_FORECAST_DESIGNATORS D, MRP_FORECAST_DATES F
                         WHERE D.ORGANIZATION_ID = X_ORGANIZATION_ID
                         AND D.FORECAST_DESIGNATOR = X_FORECAST_NAME
                         AND D.ORGANIZATION_ID = F.ORGANIZATION_ID
                         AND D.FORECAST_DESIGNATOR = F.FORECAST_DESIGNATOR
                         AND F.INVENTORY_ITEM_ID = X_INVENTORY_ITEM_ID )
        AND NOT EXISTS ( SELECT 1 FROM MTL_SAFETY_STOCKS
                      	 WHERE ORGANIZATION_ID = M.ORGANIZATION_ID
                         AND INVENTORY_ITEM_ID = M.INVENTORY_ITEM_ID
                         AND EFFECTIVITY_DATE >= X_START_DATE
		         AND (PROJECT_ID IS NOT NULL OR TASK_ID IS NOT NULL))
        AND EFFECTIVITY_DATE >= X_START_DATE ;
Line: 169

        DELETE FROM MTL_SAFETY_STOCKS M
        WHERE ORGANIZATION_ID = X_ORGANIZATION_ID
        AND FORECAST_DESIGNATOR = X_FORECAST_NAME
	AND EXISTS  ( SELECT 1 FROM  MTL_ITEM_CATEGORIES C
                      WHERE C.ORGANIZATION_ID = M.ORGANIZATION_ID
                      AND C.INVENTORY_ITEM_ID = M.INVENTORY_ITEM_ID
                      AND C.CATEGORY_SET_ID = X_CATEGORY_SET_ID
                      AND C.CATEGORY_ID = X_CATEGORY_ID
                      AND C.ORGANIZATION_ID = X_ORGANIZATION_ID )
        AND INVENTORY_ITEM_ID NOT IN ( SELECT DISTINCT F.INVENTORY_ITEM_ID
                                       FROM MRP_FORECAST_DESIGNATORS D, MRP_FORECAST_DATES F,
                                            MTL_ITEM_CATEGORIES C
                                       WHERE D.ORGANIZATION_ID = X_ORGANIZATION_ID
                                       AND D.FORECAST_DESIGNATOR = X_FORECAST_NAME
                                       AND D.ORGANIZATION_ID = F.ORGANIZATION_ID
                                       AND D.FORECAST_DESIGNATOR = F.FORECAST_DESIGNATOR
                                       AND C.CATEGORY_SET_ID = X_CATEGORY_SET_ID
                                       AND C.CATEGORY_ID = X_CATEGORY_ID
                                       AND C.ORGANIZATION_ID = X_ORGANIZATION_ID
                                       AND C.INVENTORY_ITEM_ID = F.INVENTORY_ITEM_ID )
        AND NOT EXISTS ( SELECT 1 FROM MTL_SAFETY_STOCKS
                      	 WHERE ORGANIZATION_ID = M.ORGANIZATION_ID
                         AND INVENTORY_ITEM_ID = M.INVENTORY_ITEM_ID
                         AND EFFECTIVITY_DATE >= X_START_DATE
		         AND (PROJECT_ID IS NOT NULL OR TASK_ID IS NOT NULL))
        AND EFFECTIVITY_DATE >= X_START_DATE ;
Line: 199

      IF X_SELECTION = 1 THEN
         OPEN ITEM1_cur;
Line: 223

	    println('X_SELECTION = 1 ');
Line: 240

      ELSIF X_SELECTION = 2 THEN
      /******************************************************************/
      /* Enhancement Bug #2231655  . Changed the logic to check for     */
      /* project and task entry for the combination of item,Organization*/
      /* and effectivity date. If an entry exists for a project and task*/
      /* then the processing of that item is skipped and a log message  */
      /* is written.                                                    */
      /******************************************************************/

      l_return_sts := check_project_task(p_inventory_item_id => x_inventory_item_id
					 ,p_organization_id => x_organization_id
					 ,p_effect_date => x_start_date
					 );
Line: 255

	    println('X_SELECTION = 2 ');
Line: 296

	       println('X_SELECTION <> 1 or 2 ');
Line: 323

    /* Select calendar Code and Exception Set Id for future */
    /* use so that the SQL statements do not have to join   */
    /* with MTL_PARAMETERS table.                           */
    /********************************************************/

       SELECT CALENDAR_CODE, CALENDAR_EXCEPTION_SET_ID
       INTO   cal_code, except_id
       FROM   MTL_PARAMETERS
       WHERE  ORGANIZATION_ID = org_id;
Line: 350

    /* Select the the forecast quantity for each date.      */
    /********************************************************/

    /* Bug# 5855934
     * Modified the below cursor to prevent checks on Forecast Set as
     * this value will never be passed through the 'forc_name' parameter.
     * Removed the Nvl function as FORECAST_SET will never be 'NULL'.
     * Removed the Decode function as FORECAST_DESIGNATOR will always refer
     * to the Forecast Name and not the Forecast Set.
     */
    CURSOR SelForecast_mad IS							-- 6797274  changes
       SELECT 1,
              TO_NUMBER(TO_CHAR(C1.CALENDAR_DATE,'J')),
              ROUND(SUM(NVL(F.FORECAST_MAD, 0)) * srv_factor, 5)		-- 6797274  changes
       FROM
              BOM_CALENDAR_DATES        C1,
              MRP_FORECAST_DESIGNATORS  D1,
              MRP_FORECAST_DATES        F
       WHERE  D1.ORGANIZATION_ID = org_id
       AND    D1.FORECAST_DESIGNATOR = forc_name
       AND    F.ORGANIZATION_ID = org_id
       AND    F.INVENTORY_ITEM_ID = item_id
       AND    F.FORECAST_DESIGNATOR = D1.FORECAST_DESIGNATOR
       AND    F.BUCKET_TYPE = 1
       AND    NVL(F.ORIGINATION_TYPE, -1) = 5					-- 6797274  changes
       AND    C1.CALENDAR_CODE = cal_code
       AND    C1.EXCEPTION_SET_ID = except_id
       AND    (C1.CALENDAR_DATE >= F.FORECAST_DATE
       AND    C1.CALENDAR_DATE >= effect_date
       AND    C1.CALENDAR_DATE <= NVL(F.RATE_END_DATE, F.FORECAST_DATE))
       GROUP BY C1.CALENDAR_DATE
       UNION
       SELECT 2,
              TO_NUMBER(TO_CHAR(C3.CALENDAR_DATE,'J')),
              ROUND(SUM(NVL(F.FORECAST_MAD, 0)/(C2.NEXT_SEQ_NUM -		-- 6797274  changes
                              C3.NEXT_SEQ_NUM)) * srv_factor, 5)
       FROM   BOM_CALENDAR_DATES C1, BOM_CALENDAR_DATES C2,
              BOM_CALENDAR_DATES C3,
              BOM_CAL_WEEK_START_DATES W1, MRP_FORECAST_DATES F,
              MRP_FORECAST_DESIGNATORS D1
       WHERE  D1.ORGANIZATION_ID = org_id
       AND    D1.FORECAST_DESIGNATOR = forc_name
       AND    F.ORGANIZATION_ID = org_id
       AND    F.INVENTORY_ITEM_ID = item_id
       AND    F.FORECAST_DESIGNATOR = D1.FORECAST_DESIGNATOR
       AND    F.BUCKET_TYPE = 2
       AND    NVL(F.ORIGINATION_TYPE, -1) = 5					-- 6797274  changes
       AND    W1.CALENDAR_CODE = cal_code
       AND    W1.EXCEPTION_SET_ID = except_id
       AND    (W1.WEEK_START_DATE >= F.FORECAST_DATE
       AND    W1.WEEK_START_DATE <= NVL(F.RATE_END_DATE, F.FORECAST_DATE))
       AND    W1.NEXT_DATE > effect_date
       AND    C1.CALENDAR_CODE = cal_code
       AND    C2.CALENDAR_CODE = cal_code
       AND    C3.CALENDAR_CODE = cal_code
       AND    C1.EXCEPTION_SET_ID = except_id
       AND    C2.EXCEPTION_SET_ID = except_id
       AND    C3.EXCEPTION_SET_ID = except_id
       AND    C3.CALENDAR_DATE= W1.WEEK_START_DATE
       AND    C2.CALENDAR_DATE = W1.NEXT_DATE
       AND    (C1.CALENDAR_DATE >= C3.CALENDAR_DATE
       AND    C1.CALENDAR_DATE >= effect_date
       AND    C1.CALENDAR_DATE < C2.CALENDAR_DATE)
       GROUP BY C3.CALENDAR_DATE
       UNION
       SELECT 3,
              TO_NUMBER(TO_CHAR(C3.CALENDAR_DATE,'J')),
              ROUND(SUM(NVL(F.FORECAST_MAD, 0)/(C2.NEXT_SEQ_NUM -		-- 6797274  changes
                              C3.NEXT_SEQ_NUM)) * srv_factor, 5)
       FROM   BOM_CALENDAR_DATES C1, BOM_CALENDAR_DATES C2,
              BOM_CALENDAR_DATES C3,
              BOM_PERIOD_START_DATES W1, MRP_FORECAST_DATES F,
              MRP_FORECAST_DESIGNATORS D1
       WHERE  D1.ORGANIZATION_ID = org_id
       AND    D1.FORECAST_DESIGNATOR = forc_name
       AND    F.ORGANIZATION_ID = org_id
       AND    F.INVENTORY_ITEM_ID = item_id
       AND    F.FORECAST_DESIGNATOR = D1.FORECAST_DESIGNATOR
       AND    F.BUCKET_TYPE = 3
       AND    NVL(F.ORIGINATION_TYPE, -1) = 5					-- 6797274  changes
       AND    W1.CALENDAR_CODE = cal_code
       AND    W1.EXCEPTION_SET_ID = except_id
       AND    (W1.PERIOD_START_DATE >= F.FORECAST_DATE
       AND    W1.PERIOD_START_DATE <= NVL(F.RATE_END_DATE, F.FORECAST_DATE))
       AND    W1.NEXT_DATE > effect_date
       AND    C1.CALENDAR_CODE = cal_code
       AND    C2.CALENDAR_CODE = cal_code
       AND    C3.CALENDAR_CODE = cal_code
       AND    C1.EXCEPTION_SET_ID = except_id
       AND    C2.EXCEPTION_SET_ID = except_id
       AND    C3.EXCEPTION_SET_ID = except_id
       AND    C3.CALENDAR_DATE= W1.PERIOD_START_DATE
       AND    C2.CALENDAR_DATE = W1.NEXT_DATE
       AND    (C1.CALENDAR_DATE >= C3.CALENDAR_DATE
       AND    C1.CALENDAR_DATE >= effect_date
       AND    C1.CALENDAR_DATE < C2.CALENDAR_DATE)
       GROUP BY C3.CALENDAR_DATE
       ORDER BY 2;
Line: 450

       SELECT 1,
              TO_NUMBER(TO_CHAR(C1.CALENDAR_DATE,'J')),
              ROUND(SUM(F.ORIGINAL_FORECAST_QUANTITY)* ss_percent/100 , 5)
       FROM
              BOM_CALENDAR_DATES        C1,
              MRP_FORECAST_DESIGNATORS  D1,
              MRP_FORECAST_DATES        F
       WHERE  D1.ORGANIZATION_ID = org_id
       AND    D1.FORECAST_DESIGNATOR = forc_name
       AND    F.ORGANIZATION_ID = org_id
       AND    F.INVENTORY_ITEM_ID = item_id
       AND    F.FORECAST_DESIGNATOR = D1.FORECAST_DESIGNATOR
       AND    F.BUCKET_TYPE = 1
       AND    C1.CALENDAR_CODE = cal_code
       AND    C1.EXCEPTION_SET_ID = except_id
       AND    (C1.CALENDAR_DATE >= F.FORECAST_DATE
       AND    C1.CALENDAR_DATE >= effect_date
       AND    C1.CALENDAR_DATE <= NVL(F.RATE_END_DATE, F.FORECAST_DATE))
       GROUP BY C1.CALENDAR_DATE
       UNION
       SELECT 2,
              TO_NUMBER(TO_CHAR(C1.CALENDAR_DATE,'J')),
              ROUND(SUM(ORIGINAL_FORECAST_QUANTITY/
                     (C2.NEXT_SEQ_NUM - C3.NEXT_SEQ_NUM))* ss_percent/100 ,5)
       FROM   BOM_CALENDAR_DATES C1, BOM_CALENDAR_DATES C2,
              BOM_CALENDAR_DATES C3,
              BOM_CAL_WEEK_START_DATES W1, MRP_FORECAST_DATES F,
              MRP_FORECAST_DESIGNATORS D1
       WHERE  D1.ORGANIZATION_ID = org_id
       AND    D1.FORECAST_DESIGNATOR = forc_name
       AND    F.ORGANIZATION_ID = org_id
       AND    F.INVENTORY_ITEM_ID = item_id
       AND    F.FORECAST_DESIGNATOR = D1.FORECAST_DESIGNATOR
       AND    F.BUCKET_TYPE = 2
       AND    W1.CALENDAR_CODE = cal_code
       AND    W1.EXCEPTION_SET_ID = except_id
       AND    (W1.WEEK_START_DATE >= F.FORECAST_DATE
       AND    W1.WEEK_START_DATE <= NVL(F.RATE_END_DATE, F.FORECAST_DATE))
       AND    W1.NEXT_DATE > effect_date
       AND    C1.CALENDAR_CODE = cal_code
       AND    C2.CALENDAR_CODE = cal_code
       AND    C3.CALENDAR_CODE = cal_code
       AND    C1.EXCEPTION_SET_ID = except_id
       AND    C2.EXCEPTION_SET_ID = except_id
       AND    C3.EXCEPTION_SET_ID = except_id
       AND    C3.CALENDAR_DATE= W1.WEEK_START_DATE
       AND    C2.CALENDAR_DATE = W1.NEXT_DATE
       AND    (C1.CALENDAR_DATE >= C3.CALENDAR_DATE
       AND    C1.CALENDAR_DATE >= effect_date
       AND    C1.CALENDAR_DATE < C2.CALENDAR_DATE)
       GROUP BY C1.CALENDAR_DATE
       UNION
       SELECT 3,
              TO_NUMBER(TO_CHAR(C1.CALENDAR_DATE,'J')),
              ROUND(SUM(ORIGINAL_FORECAST_QUANTITY/
                     (C2.NEXT_SEQ_NUM - C3.NEXT_SEQ_NUM))* ss_percent/100 ,5)
       FROM   BOM_CALENDAR_DATES C1, BOM_CALENDAR_DATES C2,
              BOM_CALENDAR_DATES C3,
              BOM_PERIOD_START_DATES W1, MRP_FORECAST_DATES F,
              MRP_FORECAST_DESIGNATORS D1
       WHERE  D1.ORGANIZATION_ID = org_id
       AND    D1.FORECAST_DESIGNATOR = forc_name
       AND    F.ORGANIZATION_ID = org_id
       AND    F.INVENTORY_ITEM_ID = item_id
       AND    F.FORECAST_DESIGNATOR = D1.FORECAST_DESIGNATOR
       AND    F.BUCKET_TYPE = 3
       AND    W1.CALENDAR_CODE = cal_code
       AND    W1.EXCEPTION_SET_ID = except_id
       AND    (W1.PERIOD_START_DATE >= F.FORECAST_DATE
       AND    W1.PERIOD_START_DATE <= NVL(F.RATE_END_DATE, F.FORECAST_DATE))
       AND    W1.NEXT_DATE > effect_date
       AND    C1.CALENDAR_CODE = cal_code
       AND    C2.CALENDAR_CODE = cal_code
       AND    C3.CALENDAR_CODE = cal_code
       AND    C1.EXCEPTION_SET_ID = except_id
       AND    C2.EXCEPTION_SET_ID = except_id
       AND    C3.EXCEPTION_SET_ID = except_id
       AND    C3.CALENDAR_DATE= W1.PERIOD_START_DATE
       AND    C2.CALENDAR_DATE = W1.NEXT_DATE
       AND    (C1.CALENDAR_DATE >= C3.CALENDAR_DATE
       AND    C1.CALENDAR_DATE >= effect_date
       AND    C1.CALENDAR_DATE < C2.CALENDAR_DATE)
       GROUP BY C1.CALENDAR_DATE
       ORDER BY 2;										-- 6797274  Changes End
Line: 537

         SELECT BUCKET_TYPE
         FROM   MRP_FORECAST_DESIGNATORS
         WHERE  FORECAST_DESIGNATOR = cp_forecast;
Line: 542

		SELECT SAFETY_STOCK_QUANTITY
	       	FROM   MTL_SAFETY_STOCKS
       		WHERE  ORGANIZATION_ID = org_id
       		AND    INVENTORY_ITEM_ID = item_id
       		AND    EFFECTIVITY_DATE = (
       		SELECT MAX(EFFECTIVITY_DATE)
       		FROM   MTL_SAFETY_STOCKS
       		WHERE  ORGANIZATION_ID = org_id
       		AND    INVENTORY_ITEM_ID = item_id
       		AND    EFFECTIVITY_DATE < effect_date);
Line: 571

    /* Select calendar Code and Exception Set Id for future */
    /* use so that the SQL statements do not have to join   */
    /* with MTL_PARAMETERS table.                           */
    /********************************************************/

       SELECT TO_NUMBER(TO_CHAR(effect_date, 'J'))
       INTO   j_effect_date
       FROM   DUAL;
Line: 601

    /* Delete all the records since the effect_date, and    */
    /* prepare to reload them.                              */
    /********************************************************/

       DELETE FROM MTL_SAFETY_STOCKS
       WHERE  ORGANIZATION_ID = org_id
       AND    INVENTORY_ITEM_ID = item_id
       AND    EFFECTIVITY_DATE >= effect_date;
Line: 612

    /* The following opens the cursor and select the        */
    /* forecast results into the variables.                 */
    /* If there is no row selected, it implies that there   */
    /* is no forecast qty.  In this case, the user          */
    /* exit will insert one row into the MTL_SAFETY_STOCKS  */
    /* table (ie, qty = 0 and effectivety_date).            */
    /********************************************************/
    /********************************************************/
    /* In contrast to the pro_sdate and pro_sqty, pro_fdate */
    /* and pro_fqty are defined as the processing forecast  */
    /* qty and date respetively.  The forecast qty and date */
    /* are selected from the MRP_FORECAST_DATES.            */
    /* Initialize the pro_fdate and pro_fqty.               */
    /* pro_fdate <- effect_date                             */
    /* pro_fqty <- 0                                        */
    /*                                                      */
    /* The following variables are notable.                 */
    /* ss_date: safety stock dates.                         */
    /* ss_qty:  safety stock qty.                           */
    /********************************************************/

     -- start Bug # 5718937
       l_mad_calc := FALSE;
Line: 664

		DELETE FROM MTL_SAFETY_STOCKS
                 WHERE  ORGANIZATION_ID = org_id
                   AND    INVENTORY_ITEM_ID = item_id
                   AND    EFFECTIVITY_DATE >=  to_date(forc_date,'J');
Line: 670

            Insert_Safety_Stocks(org_id, item_id, ss_code, forc_name,
                                 ss_percent, srv_level, to_date(forc_date,'J'), forc_qty,
                                 login_id, user_id);
Line: 687

                  Insert_Safety_Stocks(org_id, item_id, ss_code, forc_name,
                       		       ss_percent, srv_level, to_date(ss_date,'J'), ss_qty,
                                       login_id, user_id);
Line: 698

            Insert_Safety_Stocks(org_id, item_id, ss_code, forc_name,
                    		 ss_percent, srv_level, to_date(ss_date,'J'), ss_qty,
                                 login_id, user_id);
Line: 710

    /* Test and insert the last one which has the forecast  */
    /* qty and date, if necessary.                          */
    /********************************************************/

				-- 6797274  changes for below if condition
       if (ss_code <> 3 and SelForecast_userper%ROWCOUNT > 0) or (ss_code = 3 and SelForecast_mad%ROWCOUNT > 0 AND (NOT l_mad_calc )) then /* at least one row selected */ -- Modified for Bug # 5718937
         if(pro_fdate <> pro_sdate or
            pro_fqty <> pro_sqty) then
           if pro_fdate <> pro_sdate then
              ss_date := pro_sdate;
Line: 724

                 Insert_Safety_Stocks(org_id, item_id, ss_code, forc_name,
                  		      ss_percent, srv_level, to_date(ss_date,'J'), ss_qty,
                                      login_id, user_id);
Line: 733

           Insert_Safety_Stocks(org_id, item_id, ss_code, forc_name,
                  		ss_percent, srv_level, to_date(ss_date,'J'), ss_qty,
                                login_id, user_id);
Line: 747

    /* Insert the very last one whose qty is 0 and date is  */
    /* the next day of the last day which has forecast qty. */
    /********************************************************/
       ss_date := pro_sdate;
Line: 757

       Insert_Safety_Stocks(org_id, item_id, ss_code, forc_name,
                            ss_percent, srv_level, to_date(ss_date,'J'), ss_qty,
                            login_id, user_id);
Line: 765

    /* Build a dynamic SQL to insert into the MTL_SAFETY_   */
    /* STOCKS table.                                        */
    /* ss_code = 1 :User-defined quantity                   */
    /*         = 2 :User-defined percentage                 */
    /*         = 3 :Mean absolute deviation (MAD)           */
    /********************************************************/

    procedure Insert_Safety_Stocks (org_id NUMBER,
				    item_id NUMBER,
				    ss_code NUMBER,
				    forc_name VARCHAR2,
                      		    ss_percent NUMBER,
                      		    srv_level NUMBER,
                      		    ss_date DATE,
                                    ss_qty NUMBER,
				    login_id NUMBER,
				    user_id NUMBER) IS



    BEGIN
      INSERT INTO MTL_SAFETY_STOCKS(
       			EFFECTIVITY_DATE,SAFETY_STOCK_QUANTITY,
       			SAFETY_STOCK_PERCENT, LAST_UPDATE_DATE,
       			SERVICE_LEVEL, CREATION_DATE, LAST_UPDATED_BY,
      			CREATED_BY, LAST_UPDATE_LOGIN, ORGANIZATION_ID,
      			INVENTORY_ITEM_ID, SAFETY_STOCK_CODE,
       			FORECAST_DESIGNATOR)
      VALUES(
       		ss_date, ss_qty,
                ss_percent, SYSDATE,
		srv_level, SYSDATE, user_id,
		user_id, login_id,
  		org_id, item_id, ss_code, forc_name);
Line: 799

   END Insert_Safety_Stocks;