file will not be available in build version of software.

This file has data model changes made in the following tracks:

D3MICM52:  All changes made in for 5.2 RO and 3.2 SO
D2TKMI42:  Changes that were made in D2TKMI42 track but were not made in M1MI42 track.
M1MI42:    Changes that were made in M1MI42 track but were not made in D2TKMI42 track
M1TKMI43:  All changes made in M1TKMI43 should also be made in D3MICM52 track. VERSION tag should be as follows
                    :VERSION:        D3MICM52, M1TKMI43
M2MI42:    All changes made in M2MI42 should also be made in D3MICM52 track. VERSION tag should be as follows
                    :VERSION:        D3MICM52, M2MI42


Run this SAS Code:  \sas\dibase\dev_tools\data_model\di_generate_sas_schema_changes.sas
Output:             \sas\dibase\misc\dbmsc\apply_sas_data_model_changes.sas


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      DATA_MODEL_VERSION_MGMT2
   :DESCRIPTION:    Data model versions to enable migration from one version to another
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 24JUL2011
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ALWAYS
   :ASIS:           TRUE

   :DOC:    Create a table consisting of tracks that were used for development.
   :DOC:    Each track will include itself and may include changes in other tracks.
   :DOC:    For example M2TKMI43 track includes changes in M2TKMI42, D2TKMI42, M1TKMI42

    data &m_di_data..DATA_MODEL_VERSION_MANAGEMENT;
        attrib VERSION          length=$10  ;
        attrib VERSION_INCLUDED length=$10  ;

            VERSION='D2TKMI42'; VERSION_INCLUDED='D2TKMI42'; output;

            VERSION='M1MI42';   VERSION_INCLUDED='M1MI42'; output;

            VERSION='F1MI42';   VERSION_INCLUDED='F1MI42'; output;
            VERSION='F1MI42';   VERSION_INCLUDED='M1MI42'; output;

            VERSION='M2MI42';   VERSION_INCLUDED='M1MI42'; output;
            VERSION='M2MI42';   VERSION_INCLUDED='F1MI42'; output;
            VERSION='M2MI42';   VERSION_INCLUDED='M2MI42'; output;

            VERSION='M1TKMI43'; VERSION_INCLUDED='M1TKMI43'; output;
            VERSION='M1TKMI43'; VERSION_INCLUDED='D2TKMI42'; output;

            VERSION='M2TKMI43'; VERSION_INCLUDED='M2TKMI43'; output;
            VERSION='M2TKMI43'; VERSION_INCLUDED='M1TKMI43'; output;
            VERSION='M2TKMI43'; VERSION_INCLUDED='D2TKMI42'; output;

            VERSION='F2TKMI43'; VERSION_INCLUDED='F2TKMI43'; output;
            VERSION='F2TKMI43'; VERSION_INCLUDED='M2TKMI43'; output;
            VERSION='F2TKMI43'; VERSION_INCLUDED='M1TKMI43'; output;
            VERSION='F2TKMI43'; VERSION_INCLUDED='D2TKMI42'; output;
        run;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      GET_DM_VERSIONS_FROM_BASE2
   :DESCRIPTION:    Data model versions to enable migration from one version to another
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 24JUL2011
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ALWAYS
   :ASIS:           TRUE

   :DOC:    Based on the baseline version get tracks that are included in the baseline version.



    proc sql noprint;
       select version_included into :m_baseline_versions
       separated by ","
       from &m_di_data..DATA_MODEL_VERSION_MANAGEMENT
       where version="&m_baseline_dm_spec_value"
       ;

    quit;

    %put NOTE: Baseline Version from global settings table is &m_baseline_dm_spec_value;
    %put NOTE: This baseline version includes changes in tracks: &m_baseline_versions;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      RENAME_RDM_TO_rdm
   :DESCRIPTION:    Rename RDM folder to rdm
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 09SEP2011
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE
   :ASIS:           TRUE

   %let parentdir=%di_util_first_libpath(&m_di_data);

   %let moveFromSubdir=RDM;
   %let moveToSubdir=rdm;

   %if "&sysscp"="WIN" %then
   %do;
       %let m_sepchar=\;
       %let m_movecmd=move;
       options noxwait;
   %end;

   %else
   %do;
       %let m_sepchar=/;
       %let m_movecmd=mv;

       %if %sysfunc(fileexist(%quote(&parentdir&m_sepchar.&moveFromSubdir))) %then
       %do;
           %put NOTE: Moving &parentdir&m_sepchar.&moveFromSubdir to &parentdir&m_sepchar.&moveToSubdir ;
           X "&m_movecmd &parentdir&m_sepchar.&moveFromSubdir &parentdir&m_sepchar.&moveToSubdir" ;
       %end;


   %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      STARTUP_FOLDERS_CREATE
   :DESCRIPTION:    Create required folders in di_data
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 09SEP2011
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ALWAYS
   :ASIS:           TRUE

   :DOC:    Creates required sub folders.

    %create_startup_folders(%di_util_first_libpath(&m_di_data));

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      CHK_DUPS_IN_JOB_PARAM_SYS_PARAM
   :DESCRIPTION:    Change jobname to upcase in job_param and etl_sys_param table
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 01APR2011
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon
   :CHKTABLES:      &m_di_mon..job_param, &m_di_mon..etl_sys_param

   :DOC:    Change jobname to upcase in job_param and etl_sys_param table
   :DOC:    Check for duplicates and list duplicates if they exist

   proc sql;
      update &m_di_mon..job_param     set jobname = upcase(jobname);
   quit;

   %if &syscc >= 5 %then %do;
      %put ERROR: There are duplicate entries in job_param table. Please delete duplicates.;

      proc sql;
        create table work.job_param_dups as
           select upcase(jobname) as jobname, param_name, param_value, default_func
           from di_mon.job_param
           group by upcase(jobname), param_name
           having count(*) > 1;
      quit;

      %put NOTE: Duplicate entries in job_param table. Please remove duplicates.;
      %put NOTE- Duplicate most likely because of mixed case;

      data _null_;
         set work.job_param_dups end=last;
         if _N_=1 then do;
            put "NOTE: The following is a list of duplicate rows.  Delete duplicates.";
            put "NOTE- ---------------------------------------------------------------------";
        end;
         put 'jobname=' jobname  'param_name=' param_name 'param_value=' param_value;
         if last then do;
            put "NOTE- ---------------------------------------------------------------------";
            put ;
         end;
      run;

   %end;

   proc sql;
      update &m_di_mon..etl_sys_param set jobname = upcase(jobname);
   quit;

   %if &syscc >= 5 %then %do;
      %put ERROR: There are duplicate entries in etl_sys_param table. Please delete duplicates.;

      proc sql;
        create table work.etl_sys_param_dups as
           select upcase(jobname) as jobname, param_name, param_value, default_func
           from di_mon.etl_sys_param
           group by upcase(jobname), param_name
           having count(*) > 1;
      quit;

      %put NOTE: Duplicate entries in etl_sys_param table. Please remove duplicates.;
      %put NOTE- Duplicate most likely because of mixed case;

      data _null_;
        set work.etl_sys_param_dups end=last;
        if _N_=1 then do;
            put "NOTE: The following is a list of duplicate rows.  Delete duplicates.";
            put "NOTE- ---------------------------------------------------------------------";
        end;

        put 'jobname=' jobname  'param_name=' param_name 'param_value=' param_value;
        if last then do;
           put "NOTE- ---------------------------------------------------------------------";
           put ;
        end;
      run;

   %end;



:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ADD_MON_TABLES_FOR_M1MI42
   :DESCRIPTION:    Tables that were added in 43
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 29JUL2011
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE
   :DOC: These tables in MON library must be added to 4.2m1
   :DOC: Index to JOBNAME also added

   %macro add_mon_tables_for_m1mi42;

      data &m_di_mon..INV_CONTROL_TEMP;
      attrib DIST_DATE_SK length= 4 label ='Distinct Date sk';
      stop;run;

      data &m_di_mon..SALES_CONTROL_TEMP;
      attrib DIST_DATE_SK length= 4 label ='Distinct Date sk';
      stop;run;

      proc sql;
      alter table &m_di_mon..STG_DIMENSION_LEVELS_X
      modify ETLS_EXCEPTION_COND char(450) ;
      quit;

   %mend;

   %add_mon_tables_for_m1mi42;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID697407_2
   :DESCRIPTION:    Change from the past
   :VERSION:        M1MI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE


   proc sql;

   /* Next two lines are repeated on purpose to take care of some test environments */
   *DELETE from &m_di_data..FA_SPEC where SPEC_NM = 'SEASON_TYPE_PERCENT';
   *INSERT INTO &m_di_data..FA_SPEC (MODEL_GROUP_ID, SPEC_NM, SPEC_VALUE) VALUES (-1,'SEASON_TYPE_PERCENT','75');


   DELETE FROM &m_di_data..GLOBAL_SETTING
   WHERE SPEC_NM ='PACK_INCLUDE_SKU_THRESHOLD' and APP = 'SZPK';

   INSERT INTO &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
   VALUES ('PACK_INCLUDE_SKU_THRESHOLD','SZPK','0.5',
   'Specifies the threshold value to use when deciding whether a SKU can be excluded from a pack.');


   DELETE FROM &m_di_data..GLOBAL_SETTING
   WHERE SPEC_NM ='VENDOR_ATTR' and APP = 'SZPK';

   INSERT INTO &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) VALUES
   ('VENDOR_ATTR','SZPK','SKU_VENDOR',
   'Specifies the name of the custom product attribute for vendor.');


   DELETE FROM &m_di_data..MODEL_SPEC_DEFAULT
   WHERE SPEC_NM ='MULTIPLE_MARKDOWNS' and MODEL_COMP_NM='ALL';

   INSERT INTO &m_di_data..MODEL_SPEC_DEFAULT
   (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
   VALUES
   ('MULTIPLE_MARKDOWNS','ALL','-1','1',NULL);



   /* vehicle_support_map should be populated by an expert from estimation team.  These sample entries from past being removed */
   DELETE FROM &m_di_data..vehicle_support_map where vehicle_support_map_sk=1  and support_nm='PRICE';
   DELETE FROM &m_di_data..vehicle_support_map where vehicle_support_map_sk=2  and support_nm='PS_1';
   DELETE FROM &m_di_data..vehicle_support_map where vehicle_support_map_sk=3  and support_nm='PS_2';
   DELETE FROM &m_di_data..vehicle_support_map where vehicle_support_map_sk=4  and support_nm='PS_3';
   DELETE FROM &m_di_data..vehicle_support_map where vehicle_support_map_sk=19 and support_nm='DISCOUNT';

   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID0000A
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   ***********************************************************************************************;

   data &m_di_data..SALES_FACT;
   attrib GEO_HIER_SK                         length=4                                            ;
   attrib PROD_HIER_SK                        length=6                                            ;
   attrib DATE_SK                             length=4                                            ;
   attrib SALES_UNITS                         length=8      FORMAT=NLNUM12.2   INFORMAT=NLNUM12.2 ;
   attrib SALES_AMT                           length=8      FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3 ;
   stop; run;

   proc sql noprint;
   alter table &m_di_data..SALES_FACT add CONSTRAINT PRIM_KEY PRIMARY KEY (GEO_HIER_SK, PROD_HIER_SK, DATE_SK);
   quit;


   ***********************************************************************************************;

   data &m_di_data..INVENTORY_FACT;
   attrib GEO_HIER_SK                         length=4                                            ;
   attrib PROD_HIER_SK                        length=6                                            ;
   attrib DATE_SK                             length=4                                            ;
   attrib CLOSE_INV_VALUE_AT_RETAIL_AMT       length=8      FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3 ;
   attrib CLOSE_INV_VALUE_AT_COST_AMT         length=8      FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3 ;
   attrib CLOSE_INV_UNITS                     length=8      FORMAT=NLNUM12.2   INFORMAT=NLNUM12.2 ;
   stop; run;

   proc sql noprint;
   alter table &m_di_data..INVENTORY_FACT add CONSTRAINT PRIM_KEY PRIMARY KEY (GEO_HIER_SK, PROD_HIER_SK, DATE_SK);
   quit;


   ***********************************************************************************************;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID0000D
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE
   /*
   28Jan2010 vekada   Added ANALYTICAL_PROD_PARTITION_LVL and PLANNING_PROD_PARTITION_LVL (a2mi52 track)
   28Jan2010 vekada   Added ETL_WEBSERVICE_URL and ETL_WEBSERVICE_AUTHDOMAIN (a2mi52 track)
   */
   proc sql noprint;
   /* ETL  */
   DELETE FROM &m_di_data..global_setting WHERE SPEC_NM IN ('ANALYTICAL_PROD_PARTITION_LVL', 'PLANNING_PROD_PARTITION_LVL');
   DELETE FROM &m_di_data..global_setting WHERE SPEC_NM IN ('ETL_WEBSERVICE_URL', 'ETL_WEBSERVICE_AUTHDOMAIN');

   INSERT INTO &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
   VALUES  ('ANALYTICAL_PROD_PARTITION_LVL','ALL','','Analytical product partition level');

   INSERT INTO &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
   VALUES  ('PLANNING_PROD_PARTITION_LVL','ALL','','Planning product partition level');

   INSERT INTO &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
   VALUES  ('ETL_WEBSERVICE_URL','ALL','http://midtierserver:1444/miserver/services/DataService',
             'URL where a Webservice that ETL needs to call for partitioning resides');

   INSERT INTO &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
   VALUES  ('ETL_WEBSERVICE_AUTHDOMAIN','ALL','DefaultAuth','Authentication domain for calling ETL Webservice');


   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      MHA_CD
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql noprint;
   select spec_value into :geo_hier_type  from &m_di_data..global_setting where spec_nm = "GEO_HIER_TYPE";
   select spec_value into :prod_hier_type from &m_di_data..global_setting where spec_nm = "PROD_HIER_TYPE";
   quit;

   %if (not %symexist(geo_hier_type)) %then
   %let geo_hier_type =1;

   %if %length(&geo_hier_type) = 0 %then
   %let geo_hier_type =1;

   %if (not %symexist(prod_hier_type)) %then
   %let prod_hier_type =1;

   %if %length(&prod_hier_type) = 0 %then
   %let prod_hier_type =1;

   proc sql noprint;
   update &m_di_data..global_setting
   set spec_value = %if %eval(&geo_hier_type) = 2 %then "0"; %else "1";
   where spec_nm = "MODEL_GEO_HIER_ASSOC_CD";
   quit;


   proc sql noprint;
   update &m_di_data..global_setting
   set spec_value = %if %eval(&prod_hier_type) = 2 %then "0"; %else "1";
   where spec_nm = "MODEL_PROD_HIER_ASSOC_CD";
   quit;


:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      P_WS_GS
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql noprint;
   DELETE from &m_di_data..global_setting where
   SPEC_NM in ('ANALYTICAL_PROD_PARTITION_LVL', 'PLANNING_PROD_PARTITION_LVL', 'ETL_WEBSERVICE_URL', 'ETL_WEBSERVICE_AUTHDOMAIN');
   INSERT INTO &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) VALUES
        ('ANALYTICAL_PROD_PARTITION_LVL','ALL',NULL,'Analytical product partition level');
   INSERT INTO &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
         VALUES ('PLANNING_PROD_PARTITION_LVL','ALL',NULL,'Planning product partition level');
   INSERT INTO &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
         VALUES ('ETL_WEBSERVICE_URL','ALL','http://midtierserver:1444/miserver/services/DataService','ETL Webservice URL');
   INSERT INTO &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
         VALUES ('ETL_WEBSERVICE_AUTHDOMAIN','ALL','SOAPAuthDomain','Webservice Authentication Domain');
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      DROP_ALERT
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql noprint;
   drop table &m_di_data..FA_ALERT                     ;
   drop table &m_di_data..FA_ALERT_STATUS              ;
   drop table &m_di_data..FA_MODEL_GROUP               ;
   drop table &m_di_data..FA_MONITORING_FILTER_PROD_GEO;
   drop table &m_di_data..FA_MONITORING_GEO            ;
   drop table &m_di_data..FA_MONITORING_PROD           ;
   drop table &m_di_data..FA_PRESEASON_FILTER_PROD_GEO ;
   drop table &m_di_data..FA_PRESEASON_FILTER_PROD_GEO ;
   drop table &m_di_data..FA_PRESEASON_GEO             ;
   drop table &m_di_data..FA_PRESEASON_PROD            ;
   drop table &m_di_data..FA_SCENARIO                  ;
   drop table &m_di_data..FA_SCENARIO_SPEC             ;
   drop table &m_di_data..FA_SCENARIO_STATUS           ;
   drop table &m_di_data..FA_SCORE                     ;
   drop table &m_di_data..FA_SPEC                      ;
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      GS_PLAN_CS
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql noprint;
   update &m_di_data..GLOBAL_SETTING set SPEC_VALUE = "1000"
   where SPEC_NM = "PARALLEL_PLAN_MEM_CHUNK_SIZE";
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID660016
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE
   /*
   28Jan2010 vekada   Remove ANALYTICAL_PROD_PARTITION_LVL and PLANNING_PROD_PARTITION_LVL
   Make this changes before removing constants
   PROD_PARTITION_LVL=PLANNING_PROD_PARTITION_LVL
   and
   PARALLEL_PROD_LVL=PLANNING_PROD_PARTITION_LVL

   */


   %local  m_planning_ppl  m_analytical_ppl  m_prod_partition_lvl m_parallel_prod_lvl;
   proc sql noprint;

   select spec_value into :m_planning_ppl
   from &m_di_data..global_setting
   where SPEC_NM="PLANNING_PROD_PARTITION_LVL"

   ;

   select spec_value into :m_analytical_ppl
   from &m_di_data..global_setting
   where SPEC_NM="ANALYTICAL_PROD_PARTITION_LVL"

   ;

   select spec_value into :m_prod_partition_lvl
   from &m_di_data..global_setting
   where SPEC_NM="PROD_PARTITION_LVL"

   ;

   select spec_value into :m_parallel_prod_lvl
   from &m_di_data..global_setting
   where SPEC_NM="PARALLEL_PROD_LVL"

   ;

   quit;

   %let m_planning_ppl       = &m_planning_ppl ;
   %let m_analytical_ppl     = &m_analytical_ppl ;
   %let m_prod_partition_lvl = &m_prod_partition_lvl ;
   %let m_parallel_prod_lvl  = &m_parallel_prod_lvl ;

   /* Change prod_partition_lvl to planning_prod_partition_lvl */
   %if ( "&m_planning_ppl"="" ) %then
   %do;
   %put NOTE: There is no value in global setting for PLANNING_PROD_PARTITION_LVL;
   %put NOTE- The global setting for PROD_PARTION_LVL will remain unchanged as "&m_prod_partition_lvl".;
   %end;
   %else
   %do;
   %if ("&m_prod_partition_lvl"="") %then
   %do;
   proc sql noprint;
   update &m_di_data..global_setting
   set spec_value="&m_planning_ppl"
   where spec_nm="PROD_PARTITION_LVL"
   ;

   quit;

   %put NOTE: The global setting for PROD_PARTION_LVL changed from "&m_prod_partition_lvl" to "&m_planning_ppl".;

   %end;
   %else %if (%eval(&m_prod_partition_lvl) < %eval(&m_planning_ppl)) %then
   %do;
   proc sql noprint;
   update &m_di_data..global_setting
   set spec_value="&m_planning_ppl"
   where spec_nm="PROD_PARTITION_LVL"
   ;

   quit;

   %put NOTE: The global setting for PROD_PARTION_LVL changed from "&m_prod_partition_lvl" to "&m_planning_ppl".;

   %end;
   %else %do;
   %put NOTE: The global setting for PROD_PARTION_LVL will remain unchanged as "&m_prod_partition_lvl".;
   %end;
   %end;

   /* Change parallel_prod_lvl to analytical_prod_partition_lvl */
   %if ( "&m_analytical_ppl"="" ) %then
   %do;
   %put NOTE: There is no value in global setting for ANALYTICAL_PROD_PARTITION_LVL;
   %put NOTE- The global setting for PARALLEL_PROD_LVL will remain unchanged as "&m_parallel_prod_lvl".;
   %end;
   %else
   %do;
   %if ("&m_parallel_prod_lvl"="") %then
   %do;
   proc sql noprint;
   update &m_di_data..global_setting
   set spec_value="&m_planning_ppl"
   where spec_nm="PARALLEL_PROD_LVL"
   ;
   quit;
   %put NOTE: The global setting for PARALLEL_PROD_LVL changed from "&m_parallel_prod_lvl" to "&m_planning_ppl".;

   %end;
   /* if m_parallel_prod_lvl has some value then check this condition */
   %else %if (%eval(&m_parallel_prod_lvl) < %eval(&m_planning_ppl)) %then
   %do;
   proc sql noprint;
   update &m_di_data..global_setting
   set spec_value="&m_planning_ppl"
   where spec_nm="PARALLEL_PROD_LVL"
   ;
   quit;
   %put NOTE: The global setting for PARALLEL_PROD_LVL changed from "&m_parallel_prod_lvl" to "&m_planning_ppl".;

   %end;

   %else %do;
   %put NOTE: The global setting for PARALLEL_PROD_LVL will remain unchanged as "&m_parallel_prod_lvl".;
   %end;
   %end;

   /* Delete 2 constants from global setting table */
   proc sql noprint;

   DELETE FROM &m_di_data..global_setting WHERE SPEC_NM IN ('ANALYTICAL_PROD_PARTITION_LVL', 'PLANNING_PROD_PARTITION_LVL');

   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID660016_2
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE



   %local  m_planning_ppl  m_analytical_ppl  m_prod_partition_lvl m_parallel_prod_lvl;
   proc sql noprint;


   select spec_value into :m_prod_partition_lvl
   from &m_di_data..global_setting
   where SPEC_NM="PROD_PARTITION_LVL"

   ;

   select spec_value into :m_parallel_prod_lvl
   from &m_di_data..global_setting
   where SPEC_NM="PARALLEL_PROD_LVL"

   ;

   select count(*) into :m_prod_partition_lvl_cnt
   from &m_di_data..global_setting
   where SPEC_NM="PROD_PARTITION_LVL"

   ;

   select count(*) into :m_parallel_prod_lvl_cnt
   from &m_di_data..global_setting
   where SPEC_NM="PARALLEL_PROD_LVL"

   ;

   quit;

   /* Give a value of 2 to PROD_PARTITION_LVL if there is no value */
   %if ( &m_prod_partition_lvl_cnt<1) %then %do;
   proc sql noprint;
   INSERT INTO &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
   VALUES  ('PROD_PARTITION_LVL','ALL','2','Specifies the level in the product hierarchy that is used to partition data in the data mart.');
   quit;
   %end;


   /* Give a value of 2 to PARALLEL_PROD_LVL if there is no entry */
   %if ( &m_parallel_prod_lvl_cnt<1) %then %do;
   proc sql noprint;
   INSERT INTO &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
   VALUES  ('PARALLEL_PROD_LVL','ALL','2','Specifies the level in the product hierarchy for parallel processing.');
   quit;
   %end;


   %let m_parallel_prod_lvl=&m_parallel_prod_lvl;
   %let m_prod_partition_lvl = &m_prod_partition_lvl ;
   %put m_parallel_prod_lvl=&m_parallel_prod_lvl;
   %put m_prod_partition_lvl = &m_prod_partition_lvl ;

   /* Give a value of 0 to PARALLEL_PROD_LVL if blank */
   %if ( &m_parallel_prod_lvl=) %then %do;
   %let m_parallel_prod_lvl= 0;
   %end;

   /* Give a value of 2 to PROD_PARTITION_LVL if blank */
   %if ( &m_prod_partition_lvl=) %then %do;
   %let m_prod_partition_lvl= 2;
   proc sql noprint;
   update &m_di_data..global_setting
   set spec_value="&m_prod_partition_lvl"
   where spec_nm="PROD_PARTITION_LVL"
   ;

   quit;

   %end;

   %put m_parallel_prod_lvl=&m_parallel_prod_lvl;
   %put m_prod_partition_lvl = &m_prod_partition_lvl ;

   %if (%eval( &m_parallel_prod_lvl) < %eval(&m_prod_partition_lvl) ) %then
   %do;
   proc sql noprint;
   update &m_di_data..global_setting
   set spec_value="&m_prod_partition_lvl"
   where spec_nm="PARALLEL_PROD_LVL"
   ;

   quit;
   %end;


:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      PARTMETA
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   %let transExists = %sysfunc(libref(DI_TRANS));

   %if (&transExists = 0) %then
   %do;
       %let pathToTransLib=%di_util_first_libpath(&m_di_trans);
       %put NOTE: DI_TRANS=&pathToTransLib;
       %if not %sysfunc(exist(DI_TRANS.TABLE_PARTITION_META))
       %then %do;
           option user=di_trans;
           proc sql noprint;
           CREATE TABLE TABLE_PARTITION_META
           (
               TABLE_NM VARCHAR(32),
               FULL_COPY_FLG INTEGER,
               PARTITION_FLG INTEGER,
               ESTIMATION_FLG INTEGER
           )
           ;

           quit;
           option user=work;
       %end;
   %end;
   %else %do;
      %put ERROR:  Please make sure that di_trans libref is assigned.;
   %end;


:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      COMMONLST
   :DESCRIPTION:    Refresh Table Partition Meta
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE
   :CHKLIB:         DI_TRANS
   :CHKTABLES:      DI_TRANS.TABLE_PARTITION_META


   /* Create common files list */

   %if %sysfunc(exist(DI_TRANS.TABLE_PARTITION_META))
   %then %do;
    filename comm "./common-files.lst";
    data _null_;
      file comm lrecl=32000;;
      set di_trans.table_partition_meta (where=(full_copy_flg=1));
     table_nm=lowcase(table_nm);

      indfile=trim(table_nm) || ".sas7bdat" ;
      put comm @1 indfile;

      if (lowcase(table_nm) not in ("attr_spec","model_data_agg","psychological_points","model_exception") ) then do;
         indfile=trim(table_nm) || ".sas7bndx" ;
         put comm @1 indfile;
      end;
    run;
    filename comm clear;

   /* Populate TABLE_PARTITION_META from seed */

   /* RDBMS seed file */
   filename readFrom "%di_util_misc_path()/alterddl/baseline/seed_rdbms.sql" lrecl=400;

   /* Read contents of seed file into work table */
   data work.tpm  ;
   infile readFrom dsd missover lrecl=400 dsd delimiter="~";
   attrib allData length=$400.;
   input allData ;
   run;

   filename TPMETA TEMP;

   /* Keep seed content related to Table_Partition_Meta and remove everything else */
   data _null_ ;
   set work.tpm END=done;
   file TPMETA lrecl=400;
   retain flag 0;

   indVal=index(allData,"delete from TABLE_PARTITION_META");
   if indVal>0 then flag = 1;

   indVal=index(allData,"-- End seed Table_partition_meta");
   if index(allData,"-- End seed Table_partition_meta")>0 then flag = 0;

      if _n_ = 1 then do;

         put TPMETA @1 'option user=di_trans;' ;
         put TPMETA @1 'proc sql noprint;' ;
      end;

      if done then do;
         put TPMETA @1 'quit;' ;
         put TPMETA @1 'option user=work;' ;
      end;

      if flag=0 then return;
      if flag = 1 then do;
         put TPMETA @1 allData;
      end;


   run;

   %include TPMETA;
   filename TPMETA clear;

   %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID738983
   :DESCRIPTION:    Move min_inv_lvl from PRODUCT_DM to GEO_PROD
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 30MAR2011
   :SUPPORT:        Rhuta Kulkarni
   :FREQUENCY:      ONCE

   :DOC:            Drop column MIN_INV_LVL from PRODUCT_DM
   :DOC:            Add column MIN_INV_LVL in GEO_PROD


   proc sql;
      ALTER TABLE &m_didm_stg..STG_GEO_PROD
      ADD MIN_INV_LVL integer format = NLNUM12.2   INFORMAT=NLNUM12.2;
   quit;

   proc sql;
      ALTER TABLE &m_didm_stg..STG_PRODUCT
      DROP MIN_INV_LVL;
   quit;


   %if &syscc > 4 %then %do;
     %put ERROR: Error occurred while processing change_id: ID738983;
     %put ERROR- Description                              : Move min_inv_lvl from PRODUCT_DM to GEO_PROD;
     %put ERROR- Version                                  : D3MICM52;
     %put ERROR- Date of Change                           : 30MAR2011;
     %put ERROR-  ;
     %put ERROR- The value of syscc is &syscc;
     %return;
     %end;
     %else %do;
   proc sql;
      create table Geo_prod_temp as
      select b.*, MIN_INV_LVL
      from &m_di_data..PRODUCT_DM as a, &m_di_data..GEO_PROD as b
      where a.prod_hier_sk = b.prod_hier_sk;
   quit;

   proc sql;
      alter table
      &m_di_data..PRODUCT_DM
      drop column MIN_INV_LVL;
   quit;

   proc copy in = work out = &m_di_data;
      select Geo_prod_temp;
   quit;
     %end;

     %if &syscc > 4 %then %do;
     %put ERROR: Error occurred while processing change_id: ID738983;
     %put ERROR- Description                              : Move min_inv_lvl from PRODUCT_DM to GEO_PROD;
     %put ERROR- Version                                  : D3MICM52;
     %put ERROR- Date of Change                           : 30MAR2011;
     %put ERROR-  ;
     %put ERROR- The value of syscc is &syscc;
     %return;
     %end;
     %else %do;
   proc datasets lib = &m_di_data nolist nowarn;
      delete GEO_PROD;
      change Geo_prod_temp = GEO_PROD;
   quit;
     %end;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      RBLD_GEO_PROD_INDX_CONSTR
   :DESCRIPTION:    Rebuild Constraints and indexes for GEO_PROD
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 01APR2011
   :SUPPORT:        Rhuta Kulkarni
   :FREQUENCY:      ONCE


   proc sql;
      alter table &m_di_data..GEO_PROD add CONSTRAINT PRIM_KEY PRIMARY KEY (GEO_HIER_SK, PROD_HIER_SK);
      alter table &m_di_data..GEO_PROD add NOT NULL (GEO_PROD_STATUS);
      alter table &m_di_data..GEO_PROD add NOT NULL (DATA_LVL_ID);
      alter table &m_di_data..GEO_PROD add NOT NULL (SALES_INTRODUCTION_DT);
      alter table &m_di_data..GEO_PROD add NOT NULL (INITIAL_SEASON_CD);
      alter table &m_di_data..GEO_PROD add NOT NULL (SEASON_CD);
   quit;

   proc sql;
      CREATE INDEX PROD_HIER_SK ON &m_di_data..GEO_PROD(PROD_HIER_SK);
      CREATE INDEX DATA_LVL_ID ON &m_di_data..GEO_PROD(DATA_LVL_ID);
      CREATE INDEX VENDOR_SK ON &m_di_data..GEO_PROD(VENDOR_SK);
   quit;


:END_CHANGE:
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      JOB_STATUS_PARTITION
   :DESCRIPTION:    Create an empty structure of JOB_STATUS_PARTITION
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 07SEP2011
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon.

      Data &m_di_mon..JOB_STATUS_PARTITION ;
      attrib USER length=$32 label='User id' ;
      attrib TABLE length=$32 label='Table name' ;
      attrib LIB length=$32 label='Library' ;
      attrib JOBNAME length=$80 label='Job name' ;
      attrib JOBSTAT length=$80 label='Job status' ;
      attrib JOB_RC length=8 label='Job return code' ;
      attrib RBEFORE length=8 label='No. Records before' ;
      attrib RAFTER length=8 label='No. Records after' ;
      attrib RSOURCE length=8 label='No. Records in source' ;
      attrib RINEXCP length=8 label='No. Records rejected' ;
      attrib STTIME length=8 format=&m_dttmfmt label='Job start time' ;
      attrib ENDTIME length=8 format=&m_dttmfmt label='Job end time' ;
      stop; run;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      SUBSET
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   /* Create subfolder 1 under di_data if it does not exist */
   %di_etl_set_lib (parent_lib=&libref, sub_folder=1, partition_lib=di_part);

   /* Check if &m_di_mon. library exists.  If not create one under di_data and assign it */
   %if %sysfunc(libref(&m_di_mon.)) ne 0 %then %do;
   %di_etl_set_lib (parent_lib=&libref, sub_folder=_mon, partition_lib=&m_di_mon.);
   %end;

   /* Added this check on 06/02/2010.  Test scripts failing.  There cannot be dependency on DI_TRANS */
   %if %sysfunc(exist(DI_TRANS.TABLE_PARTITION_META)) %then %do;

   data work.exclude_tables;
   attrib table_nm length=$40;
   table_nm = 'SALES_FACT'; output;
   table_nm = 'INVENTORY_FACT'; output;
   table_nm = 'PROMOTION_FACT'; output;
   table_nm = 'PROMOTION_FACT_FUTURE'; output;
   run;

   %di_etl_hp_migration( from_lib=&libref,
                         exclude_list=work.exclude_tables,
                         increment_count=8000000,
                         refresh_mapping=1,
                         partition_method=2);
   %end;
   %else %do;
      %put ERROR: Table DI_TRANS.TABLE_PARTITION_META does not exist. ;
      %put ERROR- This table should have been created as part of change in PARTMETA;
      %put ERROR- Please create this table and rerun!;
   %end;


:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID660160_1
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   /* GLOBAL_SETTING_DETAILS */
   data work.GLOBAL_SETTING_DETAILS_TMP;
   set &m_di_data..GLOBAL_SETTING_DETAILS;
   CONFIG_CD = 3;
   run;

   data &m_di_data..GLOBAL_SETTING_DETAILS;
   attrib SPEC_NM                             length=$32                                          ;
   attrib APP                                 length=$40                                          ;
   attrib DEFAULT_SPEC_VALUE                  length=$100                                         ;
   attrib SPEC_DATATYPE                       length=$40                                          ;
   attrib SPEC_DATATYPE_EXT                   length=$40                                          ;
   attrib SPEC_VALUE_MIN                      length=8      FORMAT=NLNUM12.2   INFORMAT=NLNUM12.2 ;
   attrib SPEC_VALUE_MAX                      length=8      FORMAT=NLNUM12.2   INFORMAT=NLNUM12.2 ;
   attrib SPEC_VALUE_INCR                     length=8      FORMAT=NLNUM12.2   INFORMAT=NLNUM12.2 ;
   attrib EDITABLE_FLG                        length=4                                            ;
   attrib ENABLED_FLG                         length=4                                            ;
   attrib REQUIRED_FLG                        length=4                                            ;
   attrib HIDDEN_FLG                          length=4                                            ;
   attrib MISSING_VAL_OK_FLG                  length=4                                            ;
   attrib OVERRIDE_APP_LIST                   length=$100                                         ;
   attrib REF_QUERY                           length=$500                                         ;
   attrib GENERATE_PREFIX_NM                  length=$40                                          ;
   attrib GENERATE_SUFFIX_MAX                 length=$40                                          ;
   attrib SPEC_VALUE_LIST_DELIMITER           length=$3                                           ;
   attrib DESC_KEY                            length=$100                                         ;
   attrib CONFIG_CD                           length=4                                            ;
   stop; run;

   proc sql noprint;
   alter table &m_di_data..GLOBAL_SETTING_DETAILS add CONSTRAINT PRIM_KEY PRIMARY KEY (SPEC_NM, APP, CONFIG_CD);
   quit;

   proc sql noprint;
   DELETE from work.GLOBAL_SETTING_DETAILS_TMP WHERE SPEC_NM='MODEL_GEO_HIER_ASSOC_CD';
   DELETE from work.GLOBAL_SETTING_DETAILS_TMP WHERE SPEC_NM='MODEL_PROD_HIER_ASSOC_CD';
   quit;

   proc append base=&m_di_data..GLOBAL_SETTING_DETAILS data=work.GLOBAL_SETTING_DETAILS_TMP force;
   run;

   proc sql noprint;
   drop table work.GLOBAL_SETTING_DETAILS_TMP;
   quit;


   /* GLOBAL_SETTING_GROUP */
   data work.GLOBAL_SETTING_GROUP_TMP;
   set &m_di_data..GLOBAL_SETTING_GROUP;
   CONFIG_CD = 1;
   run;

   data &m_di_data..GLOBAL_SETTING_GROUP;
   attrib GLOBAL_SETTING_GROUP_NM             length=$40  ;
   attrib GLOBAL_SETTING_GROUP_DESC           length=$100 ;
   attrib GLOBAL_SETTING_GROUP_DESC_KEY       length=$100 ;
   attrib GLOBAL_SETTING_CATEGORY_FLG         length=4    ;
   attrib SETTING_GROUP_PERMISSION_ROLE       length=$100 ;
   attrib CONFIG_CD                    length=4;
   stop; run;

   proc sql noprint;
   alter table &m_di_data..GLOBAL_SETTING_GROUP add CONSTRAINT PRIM_KEY PRIMARY KEY (GLOBAL_SETTING_GROUP_NM);
   quit;

   proc append base=&m_di_data..GLOBAL_SETTING_GROUP data=work.GLOBAL_SETTING_GROUP_TMP force;
   run;

   proc sql noprint;
   drop table work.GLOBAL_SETTING_GROUP_TMP;
   quit;

   proc sql noprint;
   update &m_di_data..GLOBAL_SETTING_GROUP set CONFIG_CD = 2 where GLOBAL_SETTING_GROUP_NM = 'TK';
   update &m_di_data..GLOBAL_SETTING_GROUP set GLOBAL_SETTING_GROUP_DESC = 'HP Markdown Optimization' where GLOBAL_SETTING_GROUP_NM = 'TK';
   update &m_di_data..GLOBAL_SETTING_GROUP set GLOBAL_SETTING_GROUP_DESC_KEY = 'TKMI.txt' where GLOBAL_SETTING_GROUP_NM = 'TK';
   update &m_di_data..GLOBAL_SETTING_GROUP set CONFIG_CD = 3 where GLOBAL_SETTING_GROUP_NM in ('SYS','CPO','ALL-MI','ALL-RO');
   update &m_di_data..GLOBAL_SETTING_GROUP set CONFIG_CD = 3 where GLOBAL_SETTING_CATEGORY_FLG = 0;
   quit;



   /* MODEL_SPEC_DETAILS */
   data work.MODEL_SPEC_DETAILS_TMP;
   set &m_di_data..MODEL_SPEC_DETAILS;
   CONFIG_CD = 1;
   run;

   data &m_di_data..MODEL_SPEC_DETAILS;
   attrib MODEL_COMP_NM                       length=$5                                           ;
   attrib SPEC_NM                             length=$32                                          ;
   attrib SPEC_DATATYPE                       length=$40                                          ;
   attrib SPEC_DATATYPE_EXT                   length=$40                                          ;
   attrib SPEC_VALUE_MIN                      length=8      FORMAT=NLNUM12.2   INFORMAT=NLNUM12.2 ;
   attrib SPEC_VALUE_MAX                      length=8      FORMAT=NLNUM12.2   INFORMAT=NLNUM12.2 ;
   attrib SPEC_VALUE_INCR                     length=8      FORMAT=NLNUM12.2   INFORMAT=NLNUM12.2 ;
   attrib EXPERIMENTAL_FLG                    length=4                                            ;
   attrib KEY_SPEC_FLG                        length=4                                            ;
   attrib HIDDEN_FLG                          length=4                                            ;
   attrib OVERRIDE_MODEL_COMP_NM_LIST         length=$100                                         ;
   attrib REF_QUERY                           length=$500                                         ;
   attrib GENERATE_PREFIX_NM                  length=$40                                          ;
   attrib GENERATE_SUFFIX_MAX                 length=$40                                          ;
   attrib SPEC_VALUE_LIST_DELIMITER           length=$3                                           ;
   attrib SPEC_DESC                           length=$100                                         ;
   attrib DESC_KEY                            length=$100                                 ;
   attrib CONFIG_CD                    length=4                                  ;
   stop; run;

   proc sql noprint;
   alter table &m_di_data..MODEL_SPEC_DETAILS add CONSTRAINT PRIM_KEY PRIMARY KEY (MODEL_COMP_NM, SPEC_NM);
   quit;

   proc append base=&m_di_data..MODEL_SPEC_DETAILS data=work.MODEL_SPEC_DETAILS_TMP force;
   run;

   proc sql noprint;
   drop table work.MODEL_SPEC_DETAILS_TMP;
   quit;

   /* MODEL_SPEC_WORKFLOW */
   data work.MODEL_SPEC_WORKFLOW_TMP;
   set &m_di_data..MODEL_SPEC_WORKFLOW;
   CONFIG_CD = 3;
   run;

   data &m_di_data..MODEL_SPEC_WORKFLOW;
   attrib TASK_NM                             length=$40                                          ;
   attrib PARENT_TASK_NM                      length=$40                                          ;
   attrib TASK_DESC                           length=$100                                         ;
   attrib TASK_DESC_KEY                       length=$100                                         ;
   attrib TASK_LVL                            length=4                                            ;
   attrib SPEC_NM                             length=$32                                          ;
   attrib SPEC_TYPE                           length=$5                                           ;
   attrib MODEL_COMP_NM                       length=$5                                           ;
   attrib CONFIG_CD                           length=4                                            ;
   stop; run;

   proc sql noprint;
   alter table &m_di_data..MODEL_SPEC_WORKFLOW add CONSTRAINT PRIM_KEY PRIMARY KEY (TASK_NM);
   quit;

   proc append base=&m_di_data..MODEL_SPEC_WORKFLOW data=work.MODEL_SPEC_WORKFLOW_TMP force;
   run;

   proc sql noprint;
   drop table work.MODEL_SPEC_WORKFLOW_TMP;
   quit;


:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID665967
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE


   /* Drop FA Tables from DI_TRANS.TABLE_PARTITION_META if these entries still exist */

   %if %sysfunc(exist(DI_TRANS.TABLE_PARTITION_META))
   %then %do;
   proc sql noprint;
   DELETE FROM DI_TRANS.TABLE_PARTITION_META WHERE UPCASE(SUBSTR(TABLE_NM,1,3))='FA_';


   UPDATE DI_TRANS.TABLE_PARTITION_META
   SET FULL_COPY_FLG=1,
   PARTITION_FLG=0,
   ESTIMATION_FLG=0
   WHERE TABLE_NM in ("MODEL_GEO_PROD","MODEL_GEO_PROD_STATUS","MODEL_GEO_PROD_STATUS_RULE",
   "MPLN_PERIOD_EST_MTS","MPLN_STORE_EST_MTS","PSYCHOLOGICAL_POINTS")
   ;

   UPDATE DI_TRANS.TABLE_PARTITION_META
   SET FULL_COPY_FLG=0,
   PARTITION_FLG=0,
   ESTIMATION_FLG=0
   WHERE TABLE_NM in ("MODEL_GEO_PROD_STATUS_INC","")
   ;


   quit;
   %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID666192
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql noprint;
   CREATE INDEX PROD_HIER_SK ON &m_di_data..COST_FACT_FUTURE(PROD_HIER_SK);
   CREATE INDEX PROD_HIER_SK ON &m_di_data..COST_FACT_CURRENT(PROD_HIER_SK);
   CREATE INDEX PROD_HIER_SK ON &m_di_data..COST_FACT_HISTORY(PROD_HIER_SK);

   CREATE INDEX PROD_HIER_SK ON &m_di_data..PRICE_FACT_FUTURE(PROD_HIER_SK);
   CREATE INDEX PROD_HIER_SK ON &m_di_data..PRICE_FACT_HISTORY(PROD_HIER_SK);

   CREATE INDEX PROD_HIER_SK ON &m_di_data..SALES_FACT(PROD_HIER_SK);

   CREATE INDEX PROD_HIER_SK ON &m_di_data..INVENTORY_FACT(PROD_HIER_SK);
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID661123
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql noprint;

   DELETE FROM &m_di_data..MODEL_SPEC_DEFAULT WHERE SPEC_NM = 'CREATE_HOLDOUT_DETAILS' AND MODEL_COMP_NM = 'FA';
   INSERT INTO &m_di_data..MODEL_SPEC_DEFAULT (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
               VALUES ('CREATE_HOLDOUT_DETAILS','FA','-1','1',NULL);
   DELETE FROM &m_di_data..MODEL_SPEC_DEFAULT WHERE SPEC_NM = 'RUN_MDO_ANALYSIS' AND MODEL_COMP_NM = 'FA';
   INSERT INTO &m_di_data..MODEL_SPEC_DEFAULT (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
             VALUES ('RUN_MDO_ANALYSIS','FA','-1','1',NULL);


   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID670036
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID670036_2
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql noprint;

   select count(*)
   into :_cnt_idx_phad
   from sashelp.vindex
   where upcase(libname)="DI_DATA"
   and upcase(memname) = "PRODUCT_HIER_ASSOC_DM"
   and upcase(indxname) = "PROD_HIER_IX7"
   ;
   quit;

   %if &_cnt_idx_phad > 0 %then
   %do;
   proc sql noprint;
   DROP   INDEX PROD_HIER_IX7 FROM &m_di_data..PRODUCT_HIER_ASSOC_DM;
   CREATE INDEX PROD_HIER_IX3 ON &m_di_data..PRODUCT_HIER_ASSOC_DM(PROD_HIER_ASSOC_CD, PARENT_PROD_HIER_SK);
   quit;

   %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID661123_1
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql noprint;
   DELETE FROM &m_di_data..MODEL_SPEC_DEFAULT WHERE SPEC_NM = 'HOLDOUT_DETAILS_PROD_LVL' AND MODEL_COMP_NM = 'FA';
   INSERT INTO &m_di_data..MODEL_SPEC_DEFAULT (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
                         VALUES ('HOLDOUT_DETAILS_PROD_LVL','FA','-1','',NULL);
   DELETE FROM &m_di_data..MODEL_SPEC_DEFAULT WHERE SPEC_NM = 'HOLDOUT_DETAILS_GEO_LVL' AND MODEL_COMP_NM = 'FA';
   INSERT INTO &m_di_data..MODEL_SPEC_DEFAULT (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
                         VALUES ('HOLDOUT_DETAILS_GEO_LVL','FA','-1','',NULL);

   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID674951
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   /* Find if there are entries in hierarchy_assoc_dm */
   proc sql noprint;
   select count(*) into :m_count

   from &m_di_data..Hierarchy_assoc_dm
   ;
   quit;


   /* Insert entries in hierarchy_assoc_dm only if the table is empty */
   %if &m_count=0 %then %do;
   proc sql noprint;

   insert into &m_di_data..Hierarchy_assoc_dm
   (HIER_ASSOC_CD, HIER_TYPE, HIER_ASSOC_NM)
   VALUES (1, 1, "Standard Hierarchy")
   ;

   insert into &m_di_data..Hierarchy_assoc_dm
   (HIER_ASSOC_CD, HIER_TYPE, HIER_ASSOC_NM)
   VALUES (1, 2, "Standard Hierarchy")
   ;

   quit;
   %end;


:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID675274
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   /* As per Arin drop table and recreate with no DATA_CONFIG_SK column and no primary key */
   /* No need to migrate data */

   /* Drop table */
   proc sql noprint;
   drop table &m_di_data..MODEL_EXCEPTION;
   quit;

   /* create table */
   data &m_di_data..MODEL_EXCEPTION;
   attrib GEO_HIER_SK                         length=4                                            ;
   attrib PROD_HIER_SK                        length=6                                            ;
   attrib EXCEPTION_TYPE_ID                   length=4                                            ;
   stop; run;


:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID676674
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql noprint;
      UPDATE &m_di_data..MODEL_SPEC_DETAILS set SPEC_DATATYPE = 'Equation'
            where SPEC_NM = 'FA_SCORE_FUNC' and MODEL_COMP_NM = 'FA';
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID678818
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   data &m_di_data..SCORING_PARAM_UNCAPPED;
   attrib PROD_HIER_SK        length=6                                            ;
   attrib GEO_HIER_SK         length=4                                            ;
   attrib EFFECT_EST          length=8      FORMAT=NLNUM12.4   INFORMAT=NLNUM12.4 ;
   attrib EFFECT_TYPE         length=$40                                          ;
   attrib EFFECT_CATEGORY     length=$40                                          ;
   attrib PROD_ATTR_KEY       length=$40                                          ;
   attrib PROD_ATTR_SK        length=4                                            ;
   stop; run;

   proc sql noprint;
   alter table &m_di_data..SCORING_PARAM_UNCAPPED add NOT NULL (PROD_HIER_SK);
   alter table &m_di_data..SCORING_PARAM_UNCAPPED add NOT NULL (GEO_HIER_SK);
   alter table &m_di_data..SCORING_PARAM_UNCAPPED add NOT NULL (EFFECT_TYPE);
   alter table &m_di_data..SCORING_PARAM_UNCAPPED add NOT NULL (EFFECT_CATEGORY);
   quit;

   proc sql noprint;
   CREATE INDEX scoring_param_ix1 ON
   &m_di_data..SCORING_PARAM_UNCAPPED(GEO_HIER_SK, PROD_HIER_SK);
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID679897
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   %let parentdir=%di_util_first_libpath(&m_di_data);
   %let eraseFromDir=1;
   %let _dir = %sysfunc(dcreate(&eraseFromDir,&parentdir));

   %if "&sysscp"="WIN" %then %do;
   %let m_sepchar=\;
   %let m_erasecmd=erase;
   %let m_options=%bquote(/s);
   options noxwait;
   %end;

   %else %do;
   %let m_sepchar=/;
   %let m_erasecmd=rm;
   %let m_options=%bquote(-rf);
   %end;


   %if "&sysscp"="WIN" %then
   %do;
   %if %sysfunc(fileexist(%quote(&parentdir&m_sepchar.&eraseFromDir))) %then %do;
   X "&m_erasecmd &m_options &parentdir&m_sepchar.&eraseFromDir&m_sepchar.model_group.sas*" ;
   %end;
   %else %do;
   %put NOTE: Directory "&parentdir&m_sepchar.&moveToSubdir" does not exist. ;
   %put NOTE- No subsetting on Model_group table has been done which is correct. ;
   %put NOTE- mig_ID679897 ;
   %end;
   %end;
   %else;
   %do;
   %if %sysfunc(fileexist(%quote(&parentdir&m_sepchar.&eraseFromDir))) %then %do;
   X "&m_erasecmd &m_options &parentdir/&eraseFromDir/*/model_group.sas*" ;
   %end;
   %else %do;
   %put NOTE: Directory "&parentdir&m_sepchar.&moveToSubdir" does not exist. ;
   %put NOTE- No subsetting on Model_group table has been done which is correct. ;
   %put NOTE- mig_ID679897 ;
   %end;
   %end;


:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      SFDTSK_INVFDTSK
   :DESCRIPTION:    Change from the past
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE
   :DOC:  Version should really be D2TKMI42 but there is
   :DOC:  no harm in dropping a table that is already dropped

   proc sql noprint;
      drop table &m_di_data..SALES_FACT_DATE_SK ;
      drop table &m_di_data..INVENTORY_FACT_DATE_SK;
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      GS_MDLSPEC
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      NEVER

   /* RDBMS seed file */
   filename readFrom "%di_util_misc_path()/alterddl/baseline/seed_sas.sas" lrecl=255;

   /* Read contents of seed file into work table */
   data work.model_spec  ;
   infile readFrom dsd missover lrecl=255 dsd delimiter="~";
   attrib allData length=$255.;
   input allData ;
   run;

   filename MDLSPEC TEMP lrecl=255;

   /* Keep seed content related to Model Spec and remove everything else */
   data _null_ ;
   set work.model_spec END=done;
   retain flag;
   file MDLSPEC lrecl=255;

   indVal_1=index(upcase(allData),"BEGIN GLOBAL_SETTING CONFIGURATION TABLES SEED");
   indVal_2=index(upcase(allData),"BEGIN MODEL_SPEC CONFIGURATION TABLES SEED");
   indVal_A=index(upcase(allData),"END GLOBAL_SETTING CONFIGURATION TABLES SEED");
   indVal_B=index(upcase(allData),"END MODEL_SPEC CONFIGURATION TABLES SEED");

   if (indVal_1 > 0 or indVal_2>0) then flag = 1;
   if flag = 1 then do;
      put MDLSPEC @1 allData;
   end;
   if (indVal_A > 0 or indVal_B>0) then flag = 0;



   run;

   %include MDLSPEC;
   filename MDLSPEC clear;


:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID682584
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql;
   delete from &m_di_data..MODEL_GEO_PROD_STATUS_SPEC where SPEC_NM = 'PREV_GP_STATUS_DATE_SK';
   delete from &m_di_data..MODEL_GEO_PROD_STATUS_SPEC where SPEC_NM = 'PAR_BY_WEEK_REFRESH';
   delete from &m_di_data..MODEL_GEO_PROD_STATUS_DETAILS where SPEC_NM = 'PREV_GP_STATUS_DATE_SK';
   delete from &m_di_data..MODEL_GEO_PROD_STATUS_DETAILS where SPEC_NM = 'PAR_BY_WEEK_REFRESH';
   delete from &m_di_data..MODEL_GEO_PROD_STATUS_VALUES where SPEC_NM = 'PAR_BY_WEEK_REFRESH';
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID680319
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql;
       ALTER TABLE &m_di_data..MODEL_GEO_PROD_STATUS_SPEC DROP CONSTRAINT _NM0001_;
       DELETE from &m_di_data..MODEL_GEO_PROD_STATUS_SPEC where SPEC_NM = 'SEASON_INACTIVE_DURATION';
       INSERT INTO &m_di_data..MODEL_GEO_PROD_STATUS_SPEC
       (SPEC_NM,SPEC_VALUE,CREATED_DTTM,CREATED_BY)
       VALUES ('SEASON_INACTIVE_DURATION','',NULL,'SAS');

   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID685961
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql;
   DELETE FROM &m_di_data..MODEL_GEO_PROD_STATUS_SPEC;
   quit;

   proc sql;

   INSERT INTO &m_di_data..MODEL_GEO_PROD_STATUS_SPEC
   (SPEC_NM,SPEC_VALUE,CREATED_DTTM,CREATED_BY)
   VALUES ('GEO_GROUP_LVL','1',NULL,'SAS');

   INSERT INTO &m_di_data..MODEL_GEO_PROD_STATUS_SPEC
   (SPEC_NM,SPEC_VALUE,CREATED_DTTM,CREATED_BY)
   VALUES ('GP_STATUS_HISTORY','104',NULL,'SAS');

   INSERT INTO &m_di_data..MODEL_GEO_PROD_STATUS_SPEC
   (SPEC_NM,SPEC_VALUE,CREATED_DTTM,CREATED_BY)
   VALUES ('SEASON_FLG','1',NULL,'SAS');
   quit;




   proc sql;
   DELETE FROM &m_di_data..MODEL_GEO_PROD_STATUS_RULE;
   ALTER TABLE &m_di_data..MODEL_GEO_PROD_STATUS_RULE DROP CONSTRAINT _NM0001_;
   quit;

   proc sql;
   INSERT INTO &m_di_data..MODEL_GEO_PROD_STATUS_RULE
   (PROD_HIER_SK, RULE_NM, RULE_VALUE, CREATED_DTTM, CREATED_BY)
   VALUES (1,'GP_STATUS_RULE','1', NULL, 'seed');

   INSERT INTO &m_di_data..MODEL_GEO_PROD_STATUS_RULE
   (PROD_HIER_SK, RULE_NM, RULE_VALUE, CREATED_DTTM, CREATED_BY)
   VALUES (1,'GP_STATUS_FACT_DATA','1', NULL, 'seed');

   INSERT INTO &m_di_data..MODEL_GEO_PROD_STATUS_RULE
   (PROD_HIER_SK, RULE_NM, RULE_VALUE, CREATED_DTTM, CREATED_BY)
   VALUES (1,'MIN_INV_UNITS','1', NULL, 'seed');

   INSERT INTO &m_di_data..MODEL_GEO_PROD_STATUS_RULE
   (PROD_HIER_SK, RULE_NM, RULE_VALUE, CREATED_DTTM, CREATED_BY)
   VALUES (1,'MIN_STORE_PCT','0.2', NULL, 'seed');

   INSERT INTO &m_di_data..MODEL_GEO_PROD_STATUS_RULE
   (PROD_HIER_SK, RULE_NM, RULE_VALUE, CREATED_DTTM, CREATED_BY)
   VALUES (1,'MIN_INV_COST_AMT','100', NULL, 'seed');

   INSERT INTO &m_di_data..MODEL_GEO_PROD_STATUS_RULE
   (PROD_HIER_SK, RULE_NM, RULE_VALUE, CREATED_DTTM, CREATED_BY)
   VALUES (1,'MIN_SALES_AMT','100', NULL, 'seed');

   INSERT INTO &m_di_data..MODEL_GEO_PROD_STATUS_RULE
   (PROD_HIER_SK, RULE_NM, RULE_VALUE, CREATED_DTTM, CREATED_BY)
   VALUES (1,'ONE_ACTIVE_PER_SEASON','1', NULL, 'seed');

   INSERT INTO &m_di_data..MODEL_GEO_PROD_STATUS_RULE
   (PROD_HIER_SK, RULE_NM, RULE_VALUE, CREATED_DTTM, CREATED_BY)
   VALUES (1,'SEASON_ACTIVE_COEFF','0.3', NULL, 'seed');

   INSERT INTO &m_di_data..MODEL_GEO_PROD_STATUS_RULE
   (PROD_HIER_SK, RULE_NM, RULE_VALUE, CREATED_DTTM, CREATED_BY)
   VALUES (1,'INACTIVE_CNT_VAL','3', NULL, 'seed');

   INSERT INTO &m_di_data..MODEL_GEO_PROD_STATUS_RULE
   (PROD_HIER_SK, RULE_NM, RULE_VALUE, CREATED_DTTM, CREATED_BY)
   VALUES (1,'EXCLUDE_SEASON_START_WKS','2', NULL, 'seed');

   INSERT INTO &m_di_data..MODEL_GEO_PROD_STATUS_RULE
   (PROD_HIER_SK, RULE_NM, RULE_VALUE, CREATED_DTTM, CREATED_BY)
   VALUES (1,'EXCLUDE_SEASON_END_WKS','2', NULL, 'seed');

   INSERT INTO &m_di_data..MODEL_GEO_PROD_STATUS_RULE
   (PROD_HIER_SK, RULE_NM, RULE_VALUE, CREATED_DTTM, CREATED_BY)
   VALUES (1,'EXCLUDE_CLOSING_STORE_WKS','4', NULL, 'seed');

   INSERT INTO &m_di_data..MODEL_GEO_PROD_STATUS_RULE
   (PROD_HIER_SK, RULE_NM, RULE_VALUE, CREATED_DTTM, CREATED_BY)
   VALUES (1,'SEASON_INACTIVE_DURATION','', NULL, 'seed');

   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID684209
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql noprint;
   drop table &m_di_data..MPLN_GEO_PROD_ACCUM_MTS      ;
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID688960
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql;

       DELETE FROM &m_di_data..MODEL_SPEC_DEFAULT WHERE SPEC_NM = 'PCT_TAIL_CUTOFF' AND MODEL_COMP_NM = 'FA';
       INSERT INTO &m_di_data..MODEL_SPEC_DEFAULT
       (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
       VALUES ('PCT_TAIL_CUTOFF','FA','-1','1',NULL);
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID688967
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql;

   DELETE FROM &m_di_data..MODEL_SPEC_DEFAULT WHERE SPEC_NM = 'MIN_LIFE_FILTER' AND MODEL_COMP_NM = 'FA';
   INSERT INTO &m_di_data..MODEL_SPEC_DEFAULT
   (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
   VALUES ('MIN_LIFE_FILTER','FA','-1','8',NULL);
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID693691
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql;

   DELETE FROM &m_di_data..MODEL_SPEC_DEFAULT WHERE SPEC_NM = 'RUN_FA_MONITORING' AND MODEL_COMP_NM = 'FA';
   INSERT INTO &m_di_data..MODEL_SPEC_DEFAULT
   (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
   VALUES ('RUN_FA_MONITORING','FA','-1','0',NULL);

   DELETE FROM &m_di_data..MODEL_SPEC_VALUES WHERE SPEC_NM = 'RUN_FA_MONITORING' AND MODEL_COMP_NM = 'FA';
   INSERT INTO &m_di_data..MODEL_SPEC_VALUES
   (SPEC_NM,MODEL_COMP_NM,SPEC_VALUE,SPEC_VALUE_DESC,SPEC_VALUE_DESC_KEY)
   VALUES ('RUN_FA_MONITORING','FA','1','Run FA monitoring','faspec.RUN_FA_MONITORING.truemeans.txt');
   INSERT INTO &m_di_data..MODEL_SPEC_VALUES
   (SPEC_NM,MODEL_COMP_NM,SPEC_VALUE,SPEC_VALUE_DESC,SPEC_VALUE_DESC_KEY)
   VALUES ('RUN_FA_MONITORING','FA','0','Do not run FA monitoring','faspec.RUN_FA_MONITORING.falsemeans.txt');

   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID695994
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE
   :CHKLIB:         DI_MON
   :CHKTABLES:      &m_di_mon..job_param


   /* Check if &m_di_mon. library exists.  */
   %let monExists = %sysfunc(libref(&m_di_mon.));

   %if (&monExists = 0) %then
   %do;
   %if %sysfunc(exist(&m_di_mon..job_param))
   %then %do;
   proc sql;
   select count(*) into :m_replicate_attrs
   from &m_di_mon..job_param
   where param_value="geography_attributes"
   ;

   quit;

   /* If these attributes do not exist add them to job_param */
   %if ( &m_replicate_attrs<1) %then %do;
   proc sql noprint;
   insert into &m_di_mon..job_param
   (jobname, param_name, param_value, default_func)
   values("DI_REPLICATE_MULTIPLE_TABLES",        "etlp_src_tab7",             "product_attributes",         '"Y"'                           )
   values("DI_REPLICATE_MULTIPLE_TABLES",        "etlp_src_tab8",             "geography_attributes",       '"Y"'                           )
   ;
   quit;
   %end;
   %end;
   %end;
:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID695068
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   /* SAS seed table */
   proc sql;
   DROP TABLE &m_di_data..MA_SPEC;
   quit;

   data &m_di_data..MA_SPEC;
   attrib MODEL_GROUP_ID                      length=4                                            ;
   attrib SPEC_NM                             length=$32                                          ;
   attrib SPEC_VALUE                          length=$200                                         ;
   attrib USER_NM                             length=$60                                          ;
   stop; run;

   proc sql;
   alter table &m_di_data..MA_SPEC add CONSTRAINT PRIM_KEY PRIMARY KEY (MODEL_GROUP_ID, SPEC_NM, USER_NM);
   quit;

   proc sql;
   INSERT INTO &m_di_data..MA_SPEC (MODEL_GROUP_ID, SPEC_NM, SPEC_VALUE, USER_NM)
   VALUES (-1,'GP_SELECT_METHOD','inventory_cost','SEED');
   INSERT INTO &m_di_data..MA_SPEC (MODEL_GROUP_ID, SPEC_NM, SPEC_VALUE, USER_NM)
   VALUES (-1,'GP_SELECT_MODE','1','SEED');
   INSERT INTO &m_di_data..MA_SPEC (MODEL_GROUP_ID, SPEC_NM, SPEC_VALUE, USER_NM)
   VALUES (-1,'ERROR_PLOT_DISCARD_STD','3','SEED');
   INSERT INTO &m_di_data..MA_SPEC (MODEL_GROUP_ID, SPEC_NM, SPEC_VALUE, USER_NM)
   VALUES (-1,'HOLDOUT_PERIODS','4','SEED');
   INSERT INTO &m_di_data..MA_SPEC (MODEL_GROUP_ID, SPEC_NM, SPEC_VALUE, USER_NM)
   VALUES (-1,'HOLDOUT_DETAILS_PROD_LVL','1','SEED');
   INSERT INTO &m_di_data..MA_SPEC (MODEL_GROUP_ID, SPEC_NM, SPEC_VALUE, USER_NM)
   VALUES (-1,'HOLDOUT_DETAILS_GEO_LVL','1','SEED');
   INSERT INTO &m_di_data..MA_SPEC (MODEL_GROUP_ID, SPEC_NM, SPEC_VALUE, USER_NM)
   VALUES (-1,'PCT_TAIL_CUTOFF','1','SEED');
   INSERT INTO &m_di_data..MA_SPEC (MODEL_GROUP_ID, SPEC_NM, SPEC_VALUE, USER_NM)
   VALUES (-1,'MIN_LIFE_FILTER','8','SEED');
   quit;

   /* configuration tables */

   proc sql;
   DELETE FROM &m_di_data..MODEL_SPEC_DEFAULT WHERE MODEL_COMP_NM = 'MA';
   INSERT INTO &m_di_data..MODEL_SPEC_DEFAULT
   (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
   VALUES ('GP_SELECT_METHOD','MA','-1','inventory_cost',NULL);
   INSERT INTO &m_di_data..MODEL_SPEC_DEFAULT
   (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
   VALUES ('GP_SELECT_MODE','MA','-1','1',NULL);
   INSERT INTO &m_di_data..MODEL_SPEC_DEFAULT
   (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
   VALUES ('ERROR_PLOT_DISCARD_STD','MA','-1','3.0',NULL);
   INSERT INTO &m_di_data..MODEL_SPEC_DEFAULT
   (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
   VALUES ('HOLDOUT_PERIODS','MA','-1','4',NULL);
   INSERT INTO &m_di_data..MODEL_SPEC_DEFAULT
   (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
   VALUES ('HOLDOUT_DETAILS_PROD_LVL','MA','-1','1',NULL);
   INSERT INTO &m_di_data..MODEL_SPEC_DEFAULT
   (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
   VALUES ('HOLDOUT_DETAILS_GEO_LVL','MA','-1','1',NULL);
   INSERT INTO &m_di_data..MODEL_SPEC_DEFAULT
   (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
   VALUES ('PCT_TAIL_CUTOFF','MA','-1','1',NULL);
   INSERT INTO &m_di_data..MODEL_SPEC_DEFAULT
   (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
   VALUES ('MIN_LIFE_FILTER','MA','-1','8',NULL);

   DELETE FROM &m_di_data..MODEL_SPEC_VALUES WHERE MODEL_COMP_NM = 'MA';
   INSERT INTO &m_di_data..MODEL_SPEC_VALUES
   (SPEC_NM,MODEL_COMP_NM,SPEC_VALUE,SPEC_VALUE_DESC,SPEC_VALUE_DESC_KEY)
   VALUES ('GP_SELECT_METHOD','MA','inventory_cost','inventory cost','faspec.GP_SELECT_METHOD.pmeaning.inventory_cost.txt');
   INSERT INTO &m_di_data..MODEL_SPEC_VALUES
   (SPEC_NM,MODEL_COMP_NM,SPEC_VALUE,SPEC_VALUE_DESC,SPEC_VALUE_DESC_KEY)
   VALUES ('GP_SELECT_METHOD','MA','inventory_units','inventory units','faspec.GP_SELECT_METHOD.pmeaning.inventory_units.txt');
   INSERT INTO &m_di_data..MODEL_SPEC_VALUES
   (SPEC_NM,MODEL_COMP_NM,SPEC_VALUE,SPEC_VALUE_DESC,SPEC_VALUE_DESC_KEY)
   VALUES ('GP_SELECT_METHOD','MA','average_sales','average sales','faspec.GP_SELECT_METHOD.pmeaning.average_sales.txt');
   INSERT INTO &m_di_data..MODEL_SPEC_VALUES
   (SPEC_NM,MODEL_COMP_NM,SPEC_VALUE,SPEC_VALUE_DESC,SPEC_VALUE_DESC_KEY)
   VALUES ('GP_SELECT_MODE','MA','1','FA process selects products and locations','faspec.GP_SELECT_MODE.pmeaning.1.txt');
   INSERT INTO &m_di_data..MODEL_SPEC_VALUES
   (SPEC_NM,MODEL_COMP_NM,SPEC_VALUE,SPEC_VALUE_DESC,SPEC_VALUE_DESC_KEY)
   VALUES ('GP_SELECT_MODE','MA','2','all products and locations','faspec.GP_SELECT_MODE.pmeaning.2.txt');
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID655358
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql noprint;

   DELETE FROM &m_di_data..GLOBAL_SETTING where SPEC_NM = 'USE_SALES_FORECAST_MTS';
   DELETE FROM &m_di_data..GLOBAL_SETTING_DETAILS where SPEC_NM = 'USE_SALES_FORECAST_MTS';
   DELETE FROM &m_di_data..GLOBAL_SETTING_VALUES where SPEC_NM = 'USE_SALES_FORECAST_MTS';
   DELETE FROM &m_di_data..GLOBAL_SETTING_GROUP_MEMBER where SPEC_NM = 'USE_SALES_FORECAST_MTS';

   DELETE FROM &m_di_data..GLOBAL_SETTING where SPEC_NM = 'PRE_GP_ACCUM_DATE_SK';
   DELETE FROM &m_di_data..GLOBAL_SETTING_DETAILS where SPEC_NM = 'PRE_GP_ACCUM_DATE_SK';
   DELETE FROM &m_di_data..GLOBAL_SETTING_VALUES where SPEC_NM = 'PRE_GP_ACCUM_DATE_SK';
   DELETE FROM &m_di_data..GLOBAL_SETTING_GROUP_MEMBER where SPEC_NM = 'PRE_GP_ACCUM_DATE_SK';

   DROP TABLE &m_di_data..PROD_DATA_CONFIG;

   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID695068_1
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   /* SAS seed table */
   proc sql;
   INSERT INTO &m_di_data..MA_SPEC (MODEL_GROUP_ID, SPEC_NM, SPEC_VALUE, USER_NM)
   VALUES (-1,'GP_SELECT_PCT_COVERAGE','75','SEED');
   quit;

   /* configuration tables */
   proc sql;
   DELETE FROM &m_di_data..MODEL_SPEC_DEFAULT WHERE SPEC_NM = 'GP_SELECT_PCT_COVERAGE';
   INSERT INTO &m_di_data..MODEL_SPEC_DEFAULT
   (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
   VALUES ('GP_SELECT_PCT_COVERAGE','MA','-1','75',NULL);

   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID696830
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql;
   DELETE FROM &m_di_data..GLOBAL_SETTING where SPEC_NM = 'MAX_INMEM_GPS';
   INSERT INTO &m_di_data..GLOBAL_SETTING
   (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
   VALUES  ('MAX_INMEM_GPS','ALL','0',
 'Specifies the maximum number of product-location pairs in model groups, markdown plans, and sub-partitions (defined by PARALLEL_PROD_LVL).');
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID700983
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql;
   UPDATE &m_di_data..MA_SPEC SET SPEC_VALUE = '8' WHERE SPEC_NM = 'HOLDOUT_PERIODS';
   UPDATE &m_di_data..MODEL_SPEC_DEFAULT SET DEFAULT_SPEC_VALUE = '8'
          WHERE SPEC_NM = 'HOLDOUT_PERIODS' AND MODEL_COMP_NM = 'MA';
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID716071
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql;
   DELETE FROM &m_di_data..MA_SPEC where SPEC_NM = 'LAST_INSAMPLE_WEEK';
   INSERT INTO &m_di_data..MA_SPEC (MODEL_GROUP_ID, SPEC_NM, SPEC_VALUE, USER_NM)
   VALUES (-1,'LAST_INSAMPLE_WEEK','','SEED');

   DELETE FROM &m_di_data..MODEL_SPEC_DEFAULT where SPEC_NM = 'LAST_INSAMPLE_WEEK' AND MODEL_COMP_NM = 'MA';
   INSERT INTO &m_di_data..MODEL_SPEC_DEFAULT
   (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
   VALUES ('LAST_INSAMPLE_WEEK','MA','-1','',NULL);

   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID726837
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql;
   DELETE FROM &m_di_data..GLOBAL_SETTING where SPEC_NM = 'PRE_GP_MPLN_ACCUM_DATE_SK';
    quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID697407_1
   :DESCRIPTION:    Change from the past
   :VERSION:        M1MI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql noprint;
   * select count(*) into :cnt_faspec                  from &m_di_data..fa_spec;
   select count(*) into :cnt_model_gp_status_spec    from &m_di_data..MODEL_GEO_PROD_STATUS_SPEC;
   select count(*) into :cnt_model_gp_status_details from &m_di_data..MODEL_GEO_PROD_STATUS_DETAILS;
   select count(*) into :cnt_model_gp_status_values  from &m_di_data..MODEL_GEO_PROD_STATUS_VALUES;
   select count(*) into :cnt_model_gp_status_rules   from &m_di_data..MODEL_GEO_PROD_STATUS_RULE;
   quit;

   /*
   %if (&cnt_faspec = 0) %then
   %seed_fa_spec(libref=&libref.);
   */
   %if (&cnt_model_gp_status_spec = 0) %then
   %seed_model_gp_status_spec(libref=&libref.);

   %if (&cnt_model_gp_status_details = 0) %then
   %seed_model_gp_status_details(libref=&libref.);

   %if (&cnt_model_gp_status_values = 0) %then
   %seed_model_gp_status_values(libref=&libref.);

   %if (&cnt_model_gp_status_rules = 0) %then
   %seed_model_gp_status_rules(libref=&libref.);

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID662097
   :DESCRIPTION:    Change from the past
   :VERSION:        D2TKMI42,M1MI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE
   ***********************************************************************************************;

   data &m_di_data..PRICING_RULES_COLUMN_META;
   attrib PRICING_RULE_NUMBER                 length=4                                            ;
   attrib TABLE_NAME                          length=$32                                         ;
   attrib COL_NAME                            length=$32                                         ;
   attrib COL_TYPE                            length=$4                                           ;
   attrib CSV_COL_ORDER                       length=4                                            ;
   attrib LENGTH                              length=6                                            ;
   attrib FORMAT                              length=$50                                          ;
   attrib INFORMAT                            length=$50                                          ;
   attrib NOTNULL                             length=$3                                           ;
   attrib CSV_RECORD_NUMBERS                  length=$10                                          ;
   attrib EXPORT_TABLE_NAME                   length=$32                                          ;
   attrib EXPORT_COL_NAME                     length=$32                                          ;
   attrib EXPORT_COL_TYPE                     length=$4                                           ;
   attrib EXPORT_LENGTH                       length=6                                            ;
   attrib EXPORT_FORMAT                       length=$50                                          ;
   attrib EXPORT_INFORMAT                     length=$50                                          ;
   attrib IMPORT_RECORD_NUMBER                length=4                                            ;
   attrib CSV_COL_NAME                        length=$32                                          ;
   attrib COLUMN_CODE                         length=4                                            ;
   attrib IMPORT_TABLE_NAME                   length=$32                                          ;
   attrib IMPORT_COL_NAME                     length=$32                                          ;
   attrib PRIMARY_KEY                         length=4                                            ;
   stop; run;

   proc sql;
   alter table &m_di_data..PRICING_RULES_COLUMN_META add CONSTRAINT PRIM_KEY PRIMARY KEY (PRICING_RULE_NUMBER, TABLE_NAME, COL_NAME);
   quit;

   ***********************************************************************************************;

   data &m_di_data..PRICING_RULES_RULE_META;
   attrib PRICING_RULE_NUMBER                 length=4                                            ;
   attrib SPEC_NM                             length=$32                                          ;
   attrib SPEC_MULTI                          length=6                                            ;
   attrib COL_TYPE                            length=6                                            ;
   attrib SPEC_VALUE                          length=$255                                         ;
   attrib SPEC_DESC                           length=$255                                         ;
   stop; run;

   proc sql;
   alter table &m_di_data..PRICING_RULES_RULE_META add CONSTRAINT PRIM_KEY PRIMARY KEY (PRICING_RULE_NUMBER, SPEC_NM, SPEC_MULTI);
   quit;


   ***********************************************************************************************;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID664962
   :DESCRIPTION:    Change from the past
   :VERSION:        M1MI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql;
   DELETE FROM &m_di_data..field_lookup_values where (table_name='ALL' and field_nm='KPI_SK' and field_value='30');
   INSERT INTO &m_di_data..field_lookup_values (table_name,field_nm,field_value,field_value_nm,field_value_desc,field_datatype)
   VALUES ('ALL','KPI_SK','30','gm_amt_unweighted_min', 'gm_amt_unweighted_min', 'NUMERIC');

   DELETE FROM &m_di_data..field_lookup_values where (table_name='ALL' and field_nm='KPI_SK' and field_value='31');
   INSERT INTO &m_di_data..field_lookup_values (table_name,field_nm,field_value,field_value_nm,field_value_desc,field_datatype)
   VALUES ('ALL','KPI_SK','31','gm_amt_unweighted_max', 'gm_amt_unweighted_max', 'NUMERIC');

   DELETE FROM &m_di_data..field_lookup_values where (table_name='ALL' and field_nm='KPI_SK' and field_value='32');
   INSERT INTO &m_di_data..field_lookup_values (table_name,field_nm,field_value,field_value_nm,field_value_desc,field_datatype)
   VALUES ('ALL','KPI_SK','32','gm_pct_unweighted_min', 'gm_pct_unweighted_min', 'NUMERIC');

   DELETE FROM &m_di_data..field_lookup_values where (table_name='ALL' and field_nm='KPI_SK' and field_value='33');
   INSERT INTO &m_di_data..field_lookup_values (table_name,field_nm,field_value,field_value_nm,field_value_desc,field_datatype)
   VALUES ('ALL','KPI_SK','33','gm_pct_unweighted_max', 'gm_pct_unweighted_max', 'NUMERIC');
   quit;
:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID697407
   :DESCRIPTION:    Change from the past
   :VERSION:        M1MI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql;

   DELETE FROM &m_di_data..field_lookup_values where (table_name='ALL' and field_nm='RELATION_CD' and field_value='1');
   INSERT INTO &m_di_data..field_lookup_values (table_name,field_nm,field_value,field_value_nm,field_value_desc,field_datatype)
   VALUES  ('ALL','RELATION_CD','1','LIKE','LIKE PRODUCT','INTEGER');

   DELETE FROM &m_di_data..field_lookup_values where (table_name='ALL' and field_nm='RELATION_CD' and field_value='2');
   INSERT INTO &m_di_data..field_lookup_values (table_name,field_nm,field_value,field_value_nm,field_value_desc,field_datatype)
   VALUES  ('ALL','RELATION_CD','2','REPLACE','REPLACED PRODUCT','INTEGER');

   DELETE FROM &m_di_data..field_lookup_values where (table_name='ALL' and field_nm='RELATION_CD' and field_value='3');
   INSERT INTO &m_di_data..field_lookup_values (table_name,field_nm,field_value,field_value_nm,field_value_desc,field_datatype)
   VALUES  ('ALL','RELATION_CD','3','SPLIT','SPLITED PRODUCT','INTEGER');

   DELETE FROM &m_di_data..field_lookup_values where (table_name='ALL' and field_nm='RELATION_CD' and field_value='4');
   INSERT INTO &m_di_data..field_lookup_values (table_name,field_nm,field_value,field_value_nm,field_value_desc,field_datatype)
   VALUES  ('ALL','RELATION_CD','4','MERGE','MERGED PRODUCT','INTEGER');





   /* Condition_Type used in conditional promotion */

   DELETE FROM &m_di_data..field_lookup_values
            where (table_name='PROMOTION_FACT' and field_nm='CONDITION_TYPE' and field_value='0');
   DELETE FROM &m_di_data..field_lookup_values
            where (table_name='PROMOTION_FACT' and field_nm='CONDITION_TYPE' and field_value='1');
   DELETE FROM &m_di_data..field_lookup_values
            where (table_name='PROMOTION_FACT' and field_nm='CONDITION_TYPE' and field_value='2');

   INSERT INTO &m_di_data..field_lookup_values (table_name,field_nm,field_value,field_value_nm,field_value_desc,field_datatype)
   VALUES
   ('PROMOTION_FACT','CONDITION_TYPE','0','Unconditional','Unconditional promotions that apply to all products irrespective of whether the product is on regular price, promotion or on clearance.','INTEGER');

   INSERT INTO &m_di_data..field_lookup_values (table_name,field_nm,field_value,field_value_nm,field_value_desc,field_datatype)
   VALUES
   ('PROMOTION_FACT','CONDITION_TYPE','1','Conditional on Regular Price','Promotions conditional on whether the product is on regular price','INTEGER');
   INSERT INTO &m_di_data..field_lookup_values (table_name,field_nm,field_value,field_value_nm,field_value_desc,field_datatype)
   VALUES
   ('PROMOTION_FACT','CONDITION_TYPE','2','Conditional on Clearance Price','Promotions conditional on whether the product is on clearance','INTEGER');
   quit;




:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      etl_seed_1
   :DESCRIPTION:    Change from the past
   :VERSION:        M1MI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   %let monExists = %sysfunc(libref(&m_di_mon.));

   %if (&monExists = 0) %then
   %do;

   %if (%sysfunc(exist(&m_di_mon..job_param)))
   %then %do;

   proc sql noprint ;
   DELETE FROM &m_di_mon..job_param where jobname = 'ALLJOBS' and param_name='etlp_exclude_recs_prev_export';

   Insert into &m_di_mon..job_param
   (jobname, param_name, param_value, default_func)
   values("ALLJOBS",                             "etlp_exclude_recs_prev_export",   "0",                          '"0"'   )
   ;
   quit;
   proc sql noprint ;
   DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_PRICE' and param_name='Status_Cd';
   DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_PRICE' and param_name='Plan_State';
   DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_PRICE' and param_name='etlp_exclude_recs_prev_export';

   Insert into &m_di_mon..job_param
   (jobname, param_name, param_value, default_func)
   values("DI_EXPORT_RPP_PRICE",                 "Status_Cd",                       "",                           '""'    )
   values("DI_EXPORT_RPP_PRICE",                 "Plan_State",                      "",                           '""'    )
   values("DI_EXPORT_RPP_PRICE",                 "etlp_exclude_recs_prev_export",   "",                           '"0"'   )
   ;
   quit;

   proc sql noprint ;
   DELETE FROM &m_di_mon..job_param where jobname = 'LOAD_STG2DM_FUTURE_RECEIPT' and param_name='Full_refresh';
   DELETE FROM &m_di_mon..job_param where jobname = 'LOAD_STG2DM_COST_FACT_FUTURE' and param_name='Full_refresh';
   DELETE FROM &m_di_mon..job_param where jobname = 'LOAD_STG2DM_PACK_FUTURE_RECEIPT' and param_name='Full_refresh';
   DELETE FROM &m_di_mon..job_param where jobname = 'LOAD_STG2DM_PRICE_FACT_FUTURE' and param_name='Full_refresh';
   DELETE FROM &m_di_mon..job_param where jobname = 'LOAD_STG2DM_PRODUCT_ATTRIBUTES' and param_name='etlp_use_hash_lookup';

   Insert into &m_di_mon..job_param
   (jobname, param_name, param_value, default_func)
   values("LOAD_STG2DM_FUTURE_RECEIPT",          "Full_refresh",                    "",                           '"0"'   )
   values("LOAD_STG2DM_COST_FACT_FUTURE",        "Full_refresh",                    "",                           '"0"'   )
   values("LOAD_STG2DM_PACK_FUTURE_RECEIPT",     "Full_refresh",                    "",                           '"0"'   )
   values("LOAD_STG2DM_PRICE_FACT_FUTURE",       "Full_refresh",                    "",                           '"0"'   )
   values("LOAD_STG2DM_PRODUCT_ATTRIBUTES",      "etlp_use_hash_lookup",            "1",                          '"1"'   )
   ;
   quit;

   %end;

   %if (%sysfunc(exist(&m_di_mon..etl_sys_param)))
   %then %do;

   proc sql noprint ;
   Select count(1) into :m_param_cnt
   from &m_di_mon..etl_sys_param
   where upcase(jobname)="DI_ETL_DELETE_HIERARCHY"
   and lowcase(param_name) = "etlp_exception_table"
   ;
   quit;

   %if (&m_param_cnt = 0) %then
   %do;
   proc sql noprint ;
   Insert into &m_di_mon..etl_sys_param
   (jobname, param_name, param_value, default_func)
   values("DI_ETL_DELETE_HIERARCHY",  "etlp_exception_table", "di_mon.STG_HIERARCHY_DELETE_X",  '"di_mon.STG_HIERARCHY_DELETE_X"'  )
   ;
   quit;
   %end;

   proc sql noprint ;
   update &m_di_mon..etl_sys_param set param_value = '"(1,2,3,4,10,11)"'
   where upcase(jobname) = 'LOAD_STG2DM_SCOPE' and lowcase(param_name) = 'etlp_rpp_object_type'
   ;

   update &m_di_mon..etl_sys_param set default_func = '"(1,2,3,4,10,11)"'
   where upcase(jobname) = 'LOAD_STG2DM_SCOPE' and lowcase(param_name) = 'etlp_rpp_object_type'
   ;
   quit;

   %end;

   %if (%sysfunc(exist(&m_di_mon..job_param)))
   %then %do;

   proc sql noprint ;
   update &m_di_mon..job_param set param_value = '!SASROOT/misc/dibase/dbmsc/create_sas_datamart.sas'
   where lowcase(param_name) = 'etlp_ddl_path'
   ;

   update &m_di_mon..job_param set default_func = '"!SASROOT/misc/dibase/dbmsc/create_sas_datamart.sas"'
   where lowcase(param_name) = 'etlp_ddl_path'
   ;

   update &m_di_mon..job_param set default_func = '""'
   where upcase(jobname) = 'DI_EXPORT_RPP_VEHICLE' and  upcase(param_name) = 'ETLP_VEHCAT'
   ;
   quit;

   proc sort data = &m_di_mon..job_param;
   by jobname param_name;
   quit;

   proc sort data = &m_di_mon..etl_sys_param ;
   by jobname param_name;
   quit;


   %end; /* job_param and etl_sys_param exist */
   %end; /* if (&monExists = 0) */

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      etl_stg_1
   :DESCRIPTION:    Change from the past
   :VERSION:        M1MI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   %let stageExists = %sysfunc(libref(DIDM_Stg));

   %if (&stageExists = 0) %then
   %do;


   %if %sysfunc(exist(&m_didm_stg..STG_GEOGRAPHY_PARENT))
   %then %do;
   proc sql noprint ;
   alter table &m_didm_stg..STG_GEOGRAPHY_PARENT drop constraint _NM0002_;
   quit;
   %end;

   %if %sysfunc(exist(&m_didm_stg..STG_PROD_RELATION))
   %then %do;
   proc sql noprint ;
   alter table &m_didm_stg..STG_PROD_RELATION
   add ADJ_FACTOR NUM 8 FORMAT=NLNUM12.2 INFORMAT=NLNUM12.2 ;
   quit;
   %end;

   %if %sysfunc(exist(&m_didm_stg..STG_PROMOTION))
   %then %do;
   proc sql noprint ;
   alter table &m_didm_stg..STG_PROMOTION
   add CONDITION_TYPE NUM 4,
   RANGE_START_DISC_PCT NUM 8 FORMAT=NLNUM12.4 INFORMAT=NLNUM12.4,
   RANGE_END_DISC_PCT NUM 8 FORMAT=NLNUM12.4 INFORMAT=NLNUM12.4 ;
   quit;
   %end;


   %if %sysfunc(exist(&m_didm_stg..STG_RPP_PLAN))
   %then %do;
   proc sql noprint ;
   alter table &m_didm_stg..STG_RPP_PLAN
   add SUBSIDY_SCAN_AMT1 NUM 8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3,
   SUBSIDY_SCAN_TYPE1 NUM 4,
   SUBSIDY_SCAN_AMT2 NUM 8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3,
   SUBSIDY_SCAN_TYPE2 NUM 4,
   SUBSIDY_BILLBACK_AMT1 NUM 8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3,
   SUBSIDY_BILLBACK_AMT2 NUM 8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3 ;
   quit;
   %end;

   %if %sysfunc(exist(&m_didm_stg..STG_RPP_PLAN_PROD_ASGMNT))
   %then %do;
   proc sql noprint ;
   alter table &m_didm_stg..STG_RPP_PLAN_PROD_ASGMNT
   add SUBSIDY_SCAN_AMT1 NUM 8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3,
   SUBSIDY_SCAN_TYPE1 NUM 4,
   SUBSIDY_SCAN_AMT2 NUM 8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3,
   SUBSIDY_SCAN_TYPE2 NUM 4,
   SUBSIDY_BILLBACK_AMT1 NUM 8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3,
   SUBSIDY_BILLBACK_AMT2 NUM 8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3 ;
   quit;
   %end;

   data &m_didm_stg..STG_HIERARCHY_DELETE;
   attrib DIMENSION_TYPE                            length=$40                                    ;
   attrib HIER_ASSOC_CD                             length=4                                      ;
   stop; run;

   proc sql noprint ;
   alter table &m_didm_stg..STG_HIERARCHY_DELETE add NOT NULL (DIMENSION_TYPE);
   alter table &m_didm_stg..STG_HIERARCHY_DELETE add NOT NULL (HIER_ASSOC_CD);
   quit;

   data &m_didm_stg..STG_PRODUCT_REPLACEMENT;
   attrib ORIG_PROD_ID                         length=$32                                          ;
   attrib NEW_PROD_ID                          length=$32                                          ;
   stop; run;

   proc sql noprint ;
   alter table &m_didm_stg..STG_PRODUCT_REPLACEMENT add NOT NULL (ORIG_PROD_ID);
   alter table &m_didm_stg..STG_PRODUCT_REPLACEMENT add NOT NULL (NEW_PROD_ID);
   quit;


   %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ddl_mon_1
   :DESCRIPTION:    Change from the past
   :VERSION:        M1MI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   %let monExists = %sysfunc(libref(&m_di_mon.));

   %if (&monExists = 0) %then
   %do;


   data &m_di_mon..EXPORT_HISTORY ;
   attrib EXPORTNAME length=$80 label='Export name' ;
   attrib USER length=$32 label='User id' ;
   attrib ROWSEXPORTED length=8 label='No. of Records exported' ;
   attrib EXPORTTIME length=8 format=&m_dttmfmt label='Date and time of this export' ;
   stop; run;

   %if %sysfunc(exist(&m_di_mon..STG_PROD_RELATION_X))
   %then %do;
   proc sql noprint ;
   alter table &m_di_mon..STG_PROD_RELATION_X
   add ADJ_FACTOR NUM 8 FORMAT=NLNUM12.2 INFORMAT=NLNUM12.2 ;
   quit;
   %end;

   %if %sysfunc(exist(&m_di_mon..STG_PROMOTION_X))
   %then %do;
   proc sql;
   alter table &m_di_mon..STG_PROMOTION_X
   add CONDITION_TYPE NUM 4,
   RANGE_START_DISC_PCT  NUM 8 FORMAT=NLNUM12.4 INFORMAT=NLNUM12.4,
   RANGE_END_DISC_PCT    NUM 8 FORMAT=NLNUM12.4 INFORMAT=NLNUM12.4
   ;

   alter table &m_di_mon..STG_PROMOTION_X
   modify END_DT FORMAT=&m_DTFMT
   modify ETLS_EXCEPTION_COND char(350) ;
   quit;
   %end;

   %if %sysfunc(exist(&m_di_mon..STG_RPP_PLAN_X))
   %then %do;
   proc sql;
   alter table &m_di_mon..STG_RPP_PLAN_X
   add SCAN_AMT1 NUM 8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3,
   SCAN_TYPE1    NUM 4,
   SCAN_AMT2     NUM 8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3,
   SCAN_TYPE2    NUM 4,
   SUBSIDY_SCAN_AMT1 NUM 8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3,
   SUBSIDY_SCAN_TYPE1 NUM 4,
   SUBSIDY_SCAN_AMT2 NUM 8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3,
   SUBSIDY_SCAN_TYPE2 NUM 4,
   SUBSIDY_BILLBACK_AMT1 NUM 8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3,
   SUBSIDY_BILLBACK_AMT2 NUM 8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3
   ;
   quit;
   %end;


   data &m_di_mon..STG_HIERARCHY_DELETE_X;
   attrib DIMENSION_TYPE length=$40 ;
   attrib HIER_ASSOC_CD length=4 ;
   attrib ETLS_EXCEPTION_COND length = $100 ;
   attrib ETL_ERROR_JOBRUNTIME length = 8 format =&m_dttmfmt ;
   stop; run;

   data &m_di_mon..STG_PRODUCT_REPLACEMENT_X;
   attrib ORIG_PROD_ID length=$32 ;
   attrib NEW_PROD_ID length=$32 ;
   attrib ETLS_EXCEPTION_COND length = $100 ;
   attrib ETL_ERROR_JOBRUNTIME length = 8 format =&m_dttmfmt ;
   stop; run;

   data &m_di_mon..PURGE_RESULT_TABLE;
   attrib TABLE_NM length=$32 ;
   attrib BEFORE_ROWS length = 4;
   attrib AFTER_ROWS length = 4;
   attrib PURGE_DTTM length = 8 format=&m_dttmfmt;
   stop; run;

   %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID703736
   :DESCRIPTION:    Change from the past
   :VERSION:        M1MI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql;
   DELETE FROM &m_di_data..GLOBAL_SETTING where SPEC_NM = 'ALLOW_MULTI_STYLE_PACK_REC';
   INSERT INTO &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
   VALUES  ('ALLOW_MULTI_STYLE_PACK_REC','SZPK','0','Specifies whether recommended packs can include more than one style-color pair');
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID698072
   :DESCRIPTION:    Change from the past
   :VERSION:        M1MI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql;
   DELETE FROM &m_di_data..GLOBAL_SETTING WHERE SPEC_NM = 'PROFILE_AVG_CLUSTER';
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID713209
   :DESCRIPTION:    Change from the past
   :VERSION:        M1MI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE
   proc sql noprint;
   delete from &m_di_data..field_lookup_values
   where table_name='RPO_PLAN_MEMBER'
   and field_nm='APPROVAL_REASON_CD'
   and field_value='0'
   ;

   INSERT INTO &m_di_data..field_lookup_values
   (table_name,field_nm,field_value,field_value_nm,field_value_desc,field_datatype)
   VALUES  ('RPO_PLAN_MEMBER','APPROVAL_REASON_CD','0','None','No approval reason','INTEGER');
   quit;
:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID696903
   :DESCRIPTION:    Change from the past
   :VERSION:        M1MI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql;
   DELETE FROM &m_di_data..GLOBAL_SETTING WHERE SPEC_NM = 'ALLOW_MULTI_STYLE_PACK_REC';
   INSERT INTO &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
   VALUES  ('ALLOW_MULTI_STYLE_PACK_REC','SZPK','0',
   'Specifies whether recommended packs can include more than one style-color pair.');
   UPDATE &m_di_data..GLOBAL_SETTING_DETAILS SET EDITABLE_FLG = 1, REQUIRED_FLG = 1
   WHERE SPEC_NM = 'ALLOW_MULTI_STYLE_PACK_REC';
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID713182
   :DESCRIPTION:    Change from the past
   :VERSION:        M1MI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql;
   DELETE FROM &m_di_data..MODEL_SPEC WHERE SPEC_NM = 'HEDONIC_VOL_TSF';
   INSERT INTO &m_di_data..MODEL_SPEC (MODEL_GROUP_ID,MODEL_COMP_NM,SPEC_NM,SPEC_TYPE,SPEC_VALUE,PRIORITY,CREATED_DTTM,CREATED_BY)
   VALUES  (-1,'ALL','HEDONIC_VOL_TSF','-1','1',NULL,NULL,'SEED');

   DELETE FROM &m_di_data..MODEL_SPEC_DEFAULT WHERE SPEC_NM = 'HEDONIC_VOL_TSF';
   INSERT INTO &m_di_data..MODEL_SPEC_DEFAULT (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
   VALUES ('HEDONIC_VOL_TSF','ALL','-1','1',NULL);

   quit;


:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID718981
   :DESCRIPTION:    Change from the past
   :VERSION:        M1MI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE
   %let monExists = %sysfunc(libref(&m_di_mon.));
   %if (&monExists = 0) %then %do;
   %if (%sysfunc(exist(&m_di_mon..job_param))) %then %do;
   proc sql ;
      DELETE FROM &m_di_mon..job_param  WHERE jobname = 'LOAD_STG2DM_COST_FACT' and param_name="etlp_move_futr_to_curr";
      DELETE FROM &m_di_mon..job_param  WHERE jobname = 'LOAD_STG2DM_PRICE_FACT' and param_name="etlp_move_futr_to_curr";

   Insert into &m_di_mon..job_param
   (jobname, param_name, param_value, default_func)
   values("LOAD_STG2DM_COST_FACT",               "etlp_move_futr_to_curr",          "",                           '"0"'   )
   values("LOAD_STG2DM_PRICE_FACT",              "etlp_move_futr_to_curr",          "",                           '"0"'   )
   ;
   quit;
   %end;
   %end;
:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID679287
   :DESCRIPTION:    Change from the past
   :VERSION:        M1MI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql;
       DELETE FROM &m_di_data..GLOBAL_SETTING WHERE SPEC_NM = 'GENERATED_BULK_PACK_PREFIX';
       INSERT INTO &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
       VALUES  ('GENERATED_BULK_PACK_PREFIX','SZPK','GB',
                'Prefix added to generated bulk packs (limited to 4 alphanumeric characters).');


   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID726328
   :DESCRIPTION:    Change from the past
   :VERSION:        M1MI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql;
   DELETE FROM &m_di_data..MODEL_SPEC_DEFAULT where SPEC_NM = 'EXCLUDE_NP_FROM_SHARE';
   INSERT INTO &m_di_data..MODEL_SPEC_DEFAULT
   (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
   VALUES ('EXCLUDE_NP_FROM_SHARE','FCST','2','0',NULL);


   quit;


:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID719510
   :DESCRIPTION:    Change from the past
   :VERSION:        M1MI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   %if %sysfunc(exist(&m_di_mon..job_param)) %then
   %do;

   proc sql noprint;
   select count(*) into :m_rpp_price_exp_parms
   from &m_di_mon..job_param
   where upcase(jobname)="DI_EXPORT_RPP_PRICE"
   and param_name in ("etlp_export_at_lowest_prod_geo")
   ;
   quit;

   %if (&m_rpp_price_exp_parms <= 0) %then
   %do;
   proc sql noprint;
   insert into &m_di_mon..job_param
   (jobname, param_name, param_value, default_func)
   values("DI_EXPORT_RPP_PRICE",    "etlp_export_at_lowest_prod_geo",    "",    '""'   )
   ;
   quit;
   %end;
   %end;


   %if %sysfunc(exist(&m_di_mon..job_param)) %then
   %do;

   proc sql noprint;
   select count(*) into :m_rpp_veh_exp_parms
   from &m_di_mon..job_param
   where upcase(jobname)="DI_EXPORT_RPP_VEHICLE"
   and param_name in ("etlp_export_at_lowest_prod_geo")
   ;
   quit;

   %if (&m_rpp_veh_exp_parms <= 0) %then
   %do;
   proc sql noprint;
   insert into &m_di_mon..job_param
   (jobname, param_name, param_value, default_func)
   values("DI_EXPORT_RPP_VEHICLE",    "etlp_export_at_lowest_prod_geo",    "",    '""'   )
   ;
   quit;
   %end;
   %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      rem_vndr0
   :DESCRIPTION:    Change from the past
   :VERSION:        M1MI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE
   proc sql;
   DELETE FROM &m_di_data..VENDOR WHERE VENDOR_SK = 0 and VENDOR_ID='0';
   quit;
:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      etl_seed_2
   :DESCRIPTION:    Change from the past
   :VERSION:        M1MI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   %let monExists = %sysfunc(libref(&m_di_mon.));

   %if (&monExists = 0) %then
   %do;

   %if (%sysfunc(exist(&m_di_mon..etl_sys_param)))
   %then %do;

   proc sql noprint ;
   Select count(1) into :m_param_cnt
   from &m_di_mon..etl_sys_param
   where upcase(jobname)="DI_ETL_DELETE_HIERARCHY"
   and lowcase(param_name) = "etlp_exception_table"
   ;
   quit;

   %if (&m_param_cnt = 0) %then
   %do;
   proc sql noprint ;
   Insert into &m_di_mon..etl_sys_param
   (jobname, param_name, param_value, default_func)
   values("DI_ETL_DELETE_HIERARCHY",  "etlp_exception_table", "di_mon.STG_HIERARCHY_DELETE_X",  '"di_mon.STG_HIERARCHY_DELETE_X"'  )
   ;
   quit;
   %end;
   %end;
   %end; /* if (&monExists = 0) */

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      etl_seed_3
   :DESCRIPTION:    Change from the past
   :VERSION:        M1MI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   %let monExists = %sysfunc(libref(&m_di_mon.));

   %if (&monExists = 0) %then
   %do;

   %if (%sysfunc(exist(&m_di_mon..job_param)))
   %then %do;

   proc sql noprint ;
   Select count(1) into :m_param_cnt
   from &m_di_mon..job_param
   where upcase(jobname)="DI_EXPORT_RPP_VEHICLE"
   and lowcase(param_name) = "etlp_exclude_recs_prev_export"
   ;
   quit;

   %if (&m_param_cnt = 0) %then
   %do;
   proc sql noprint ;
   Insert into &m_di_mon..job_param
   (jobname, param_name, param_value, default_func)
   values("DI_EXPORT_RPP_VEHICLE",                 "etlp_exclude_recs_prev_export",   "",                           '"0"'   )
   ;
   quit;
   %end;
   %end;

   %end; /* if (&monExists = 0) */

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID722967
   :DESCRIPTION:    Change from the past
   :VERSION:        M1MI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql;
   DELETE FROM &m_di_data..field_lookup_values where (table_name='ALL' and field_nm='KPI_SK' and field_value='30');
   DELETE FROM &m_di_data..field_lookup_values where (table_name='ALL' and field_nm='KPI_SK' and field_value='31');
   DELETE FROM &m_di_data..field_lookup_values where (table_name='ALL' and field_nm='KPI_SK' and field_value='32');
   DELETE FROM &m_di_data..field_lookup_values where (table_name='ALL' and field_nm='KPI_SK' and field_value='33');
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID727229
   :DESCRIPTION:    Change from the past
   :VERSION:        M1MI42
   :DATE_OF_CHANGE: 31DEC2010
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   %let monExists = %sysfunc(libref(&m_di_mon.));

   %if (&monExists = 0) %then
   %do;

   %if (%sysfunc(exist(&m_di_mon..etl_sys_param)))
   %then %do;

   proc sql noprint ;
   update &m_di_mon..etl_sys_param
   set param_value = '(1,2,3,4,10,11)'
   where      upcase(jobname)    = 'LOAD_STG2DM_SCOPE'
   and lowcase(param_name) = 'etlp_rpp_object_type'
   ;

   quit;

   %end;

   %end; /* if (&monExists = 0) */

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID737056
   :DESCRIPTION:    DOW Profiling Schema Changes
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 11FEB2011
   :SUPPORT:        Fusun Meric
   :FREQUENCY:      ONCE

   :DOC:            Schema changes for day of week (DOW) profiling.
   :DOC:            See defct http://sww.sas.com/cgi-bin/quick_browse?defectid=S0737056
   :DOC:            Add a new column "prod_hier_sk" to Geo_Date table to support product/store based events.
   :DOC:            e.g. "Ge4o-SK for Cary Store", "Prod-SK for Egg Nog", "Type-1", "Start Date-22NOV2010",
   :DOC:                    "End Date-23NOV2010", "GEO_DATE_ID-20", "GEO_DATE_NM-Thanksgiving Special"
   :DOC:            Defaults PROD_HIER_SK to 1 (highest level) for all old data.

   data _geo_date_old;
      set &m_di_data..GEO_DATE;
      PROD_HIER_SK = 1;
   run;
   data &m_di_data..GEO_DATE;
   attrib GEO_HIER_SK                         length=4                                            ;
   attrib PROD_HIER_SK                        length=6                                            ;
   attrib GEO_DATE_TYPE                       length=4                                            ;
   attrib START_DT                            length=8      FORMAT=&m_DTFMT      INFORMAT=&m_DTFMT    ;
   attrib GEO_DATE_ID                         length=4                                            ;
   attrib GEO_DATE_NM                         length=$40                                          ;
   attrib END_DT                              length=8      FORMAT=&m_DTFMT      INFORMAT=&m_DTFMT    ;
   stop; run;

   proc sql;
   alter table &m_di_data..GEO_DATE add CONSTRAINT PRIM_KEY PRIMARY KEY (GEO_HIER_SK, PROD_HIER_SK, GEO_DATE_TYPE, START_DT);
   alter table &m_di_data..GEO_DATE add NOT NULL (END_DT);
   quit;

   proc sql;
      CREATE INDEX GEO_DATE_IX1 ON &m_di_data..GEO_DATE(GEO_HIER_SK, GEO_DATE_TYPE);
   quit;
   proc append base=&m_di_data..GEO_DATE data=_geo_date_old force; quit;
   proc sql; drop table _geo_date_old; quit;


   :DOC:  DOW_SALES_FACT -- contains past six months of daily sales data for non-event
   :DOC:                    weeks which are specified in Geo_Date table.


   data &m_di_data..DOW_SALES_FACT;
   attrib PROD_HIER_SK                        length=6                                            ;
   attrib GEO_HIER_SK                         length=4                                            ;
   attrib DATE_SK                             length=4                                            ;
   attrib DAY_OF_WEEK                         length=4                                            ;
   attrib SALES_UNITS                         length=8      FORMAT=NLNUM12.2   INFORMAT=NLNUM12.2 ;
   attrib SALES_AMT                           length=8      FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3 ;
   stop; run;

   proc sql;
   alter table &m_di_data..DOW_SALES_FACT add CONSTRAINT PRIM_KEY PRIMARY KEY (PROD_HIER_SK, GEO_HIER_SK, DATE_SK, DAY_OF_WEEK);
   alter table &m_di_data..DOW_SALES_FACT add NOT NULL (SALES_UNITS);
   alter table &m_di_data..DOW_SALES_FACT add NOT NULL (SALES_AMT);
   quit;


   :DOC:  DOW_EVENT_SALES_FACT - contains past one year of daily sales of the event
   :DOC:                    weeks specified in Geo_Date table.

   data &m_di_data..DOW_EVENT_SALES_FACT;
   attrib PROD_HIER_SK                        length=6                                            ;
   attrib GEO_HIER_SK                         length=4                                            ;
   attrib DATE_SK                             length=4                                            ;
   attrib DAY_OF_WEEK                         length=4                                            ;
   attrib SALES_UNITS                         length=8      FORMAT=NLNUM12.2   INFORMAT=NLNUM12.2 ;
   attrib SALES_AMT                           length=8      FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3 ;
   stop; run;

   proc sql;
   alter table &m_di_data..DOW_EVENT_SALES_FACT add CONSTRAINT PRIM_KEY PRIMARY KEY (PROD_HIER_SK, GEO_HIER_SK, DATE_SK, DAY_OF_WEEK);
   alter table &m_di_data..DOW_EVENT_SALES_FACT add NOT NULL (SALES_UNITS);
   alter table &m_di_data..DOW_EVENT_SALES_FACT add NOT NULL (SALES_AMT);
   quit;


   data _model_geo_prod;
      set &m_di_data..MODEL_GEO_PROD;
   run;
   data &m_di_data..MODEL_GEO_PROD;
   attrib GEO_HIER_SK                         length=4                                            ;
   attrib PROD_HIER_SK                        length=6                                            ;
   attrib MODEL_GROUP_ID                      length=4                                            ;
   attrib CLASS_CD                            length=4                                            ;
   attrib DOW_GROUP_ID                        length=4                                            ;
   stop; run;
   proc sql;
      CREATE INDEX MODEL_GROUP_ID ON &m_di_data..MODEL_GEO_PROD(MODEL_GROUP_ID);
      CREATE INDEX MODEL_GEO_PROD ON &m_di_data..MODEL_GEO_PROD(GEO_HIER_SK, PROD_HIER_SK);
   quit;
   proc append base=&m_di_data..MODEL_GEO_PROD data=_model_geo_prod force; quit;
   proc sql; drop table _model_geo_prod; quit;


   :DOC:  DOW_PROFILE - contains day-of-week profile distributions created for each group.

   data &m_di_data..DOW_PROFILE;
   attrib MODEL_GROUP_ID                      length=4                                            ;
   attrib DOW_GROUP_ID                        length=4                                            ;
   attrib DAY_OF_WEEK                         length=4                                            ;
   attrib DISTRIBUTION_PCT                    length=8     FORMAT=NLNUM12.4   INFORMAT=NLNUM12.4  ;
   stop; run;

   proc sql;
   alter table &m_di_data..DOW_PROFILE add CONSTRAINT PRIM_KEY PRIMARY KEY (MODEL_GROUP_ID, DOW_GROUP_ID, DAY_OF_WEEK);
   quit;


   :DOC:  DOW_PROD_GEO_GROUP_ATTR -- contains the list of the significant attributes
   :DOC:            used by product-location grouping for each model group.

   data &m_di_data..DOW_PROD_GEO_GROUP_ATTR;
   attrib MODEL_GROUP_ID                      length=4                                            ;
   attrib DOW_GROUP_ID                        length=4                                            ;
   attrib ATTR_SK                             length=4                                            ;
   attrib ATTR_VALUE                          length=$40                                          ;
   attrib STAT_VALUE                          length=8     FORMAT=NLNUM12.4   INFORMAT=NLNUM12.4  ;
   stop; run;

   proc sql;
   alter table &m_di_data..DOW_PROD_GEO_GROUP_ATTR add CONSTRAINT PRIM_KEY PRIMARY KEY (MODEL_GROUP_ID, DOW_GROUP_ID, ATTR_SK);
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID724371
   :DESCRIPTION:    Add new job parameter for MDO Import
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 07MAR2011
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE
   :CHKLIB:         DI_MON

   :DOC: Since Geo_Prod is now kept only in Partitions, there's impact on the way MDO Import
   :DOC: checks for active geo-prods from incoming stage plan member.
   :DOC: New parameter etlp_refresh_mdo_plan_group was added to refresh MDO_PLAN_GROUP table
   :DOC: for any prior member reclassification that has happened outside of MDO Import.
   :DOC: etlp_num_parallel_geo_prods is used for Auto Removal of inactive plan members. This
   :DOC: is the number of parallel sessions for collecting inactive geo_prod from partitions.
   :DOC: invalid_mbr_err_threshold_pct is used as a threshold pct of GEO_PROD record count;
   :DOC: if number of member error (invalid, inactive, duplicate) exceeds this percent then
   :DOC: errorneuos records are not written to exception table because of performance reason.

   %if %sysfunc(exist(&m_di_mon..job_param))
   %then %do;

      data temp_job_param;
         attrib jobname length=$80 param_name length=$32 param_value length=$160 default_func length=$160 ;
         jobname='LOAD_STG2DM_MDO_IMPORT_PLAN'; param_name='etlp_refresh_mdo_plan_group'; param_value='';default_func ='"1"';output;
         jobname='LOAD_STG2DM_MDO_IMPORT_PLAN'; param_name='invalid_mbr_err_threshold_pct'; param_value='';default_func ='"0.15"';output;
         jobname='LOAD_STG2DM_MDO_IMPORT_PLAN'; param_name='etlp_num_parallel_geo_prods'; param_value='';default_func ='"8"';output;
      run;

      data &m_di_mon..job_param;
         set temp_job_param(rename=(param_value=etls_0 default_func=etls_1));

         modify &m_di_mon..job_param key=PRIM_KEY;
         param_value=etls_0 ;
         default_func=etls_1;

         if _iorc_ = 0 then do;
            replace;
         end;
         else do;
            output;
         end;

         _iorc_ = 0; _error_ = 0;
      run;

   %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID681620
   :DESCRIPTION:    Remove validation on levels PROD_RELATION/GEO_PROD_RELATION
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 07MAR2011
   :SUPPORT:        Ashish Sharma
   :FREQUENCY:      ONCE
   :CHKLIB:         DI_MON

   :DOC: For ETL of PROD_GEO_RELATION, constrain on level of GEO_ID and REL_GEO_ID
   :DOC: is removed so removing those columns from error table 'STG_PROD_GEO_RELATION_X'.

   :DOC: Similarly, for ETL of PRODUCT_RELATION, constrain on level of PROD_ID and REL_PROD_ID
   :DOC: is removed so removing those columns from error table 'STG_PROD_RELATION_X'.

   :DOC: For ETL of PRODUCT_RELATION, constrain on level of PROD_ID and REL_PROD_ID
   :DOC: is removed so removing PROD_RELATION_LVL from GLOBAL_SETTING.

   :DOC: Remove dependency of Load_STG2DM_Prod_geo_relation on Load_DM_Data_lvl

   %if %sysfunc(exist(&m_di_mon..STG_PROD_GEO_RELATION_X))
   %then %do;

   Data &m_di_mon..STG_PROD_GEO_RELATION_X;
   set &m_di_mon..STG_PROD_GEO_RELATION_X(keep=PROD_ID GEO_ID
     REL_GEO_ID ADJ_FACTOR ETLS_EXCEPTION_COND ETL_ERROR_JOBRUNTIME);
   run;

   %end;

   %if %sysfunc(exist(&m_di_mon..STG_PROD_RELATION_X))
   %then %do;

   Data &m_di_mon..STG_PROD_RELATION_X ;
   set &m_di_mon..STG_PROD_RELATION_X (keep= PROD_ID RELATED_PROD_ID
   RELATION_CD ADJ_FACTOR ETLS_EXCEPTION_COND ETL_ERROR_JOBRUNTIME);
   run;

   %end;

   proc sql noprint;
      delete from &m_di_data..global_setting
      where spec_nm='PROD_RELATION_LVL';
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID740543
   :DESCRIPTION:    Rearrange size optimization data
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 29APR2013
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE

   %macro di_etl_mig_szpk_data(table_nm = );

      %if %upcase(&m_delete_and_start_fresh) eq TRUE %then %do;
         %put NOTE: New installation --> Skip checking for partition data &table_nm;
         %return;
      %end;

      :DOC:  validating the input parameters
      %if "&table_nm" = "" %then %do;
         %put ERROR: Parameter table_nm is undefined. ;
         %etl_abort;
      %end;

      :DOC: Getting the path of DI_DATA library

       proc sql noprint;
         select path into :data_lib_path
           from sashelp.vlibnam
          where upcase(libname) = upcase("&m_di_data")
            and level in (0,1);
      quit;

      :DOC: getting the  values of all partitions
      :DOC: Setting up path for source library from which partitions will be moved

      %let complete_path = %di_util_create_folder(relative_dir=&table_nm,parent_dir=&data_lib_path);
      libname SRC_LIB "&complete_path";
      %local part_sk;

      proc sql noprint;
         create table prod_sk_part as
         select input(scan(memname,2,'_'),20.) as part_sk
           from dictionary.tables
          where upper(libname) = 'SRC_LIB'
            and upper(memname) like 'PARTITION_%'
            and input(scan(memname,2,'_'),20.) >= 0;
      quit;

      %let number_of_part = %di_util_nobs(prod_sk_part);
      %put number of partitions to move = &number_of_part;

      %if &number_of_part > 0 %then %do;
         %do loop = 1 %to &number_of_part;
            data sel_row;
               point_var = input("&loop",best12.);
               set prod_sk_part point = point_var;
               call symputx('partition_nm',part_sk, 'l');
               output;
               stop;
            run;

            %put Partition_nm = &partition_nm;

            %let partition_value = %sysfunc(cats(Partition_,&partition_nm));
            %put partition value = &partition_value;

            %let trg_path = %di_util_create_folder(relative_dir=1/&partition_nm,parent_dir=&data_lib_path);
            libname trg_lib "&trg_path";

            %if %eval(%sysfunc(exist(src_lib.&partition_value))) %then %do;

               :DOC: indexes and constraints are dropped from source table

               %etl_drop(src_lib.&partition_value,index)
               %etl_drop(src_lib.&partition_value,ic);

               proc copy in = SRC_LIB out = trg_lib move;
                  select &partition_value;
               quit;

               proc datasets lib = trg_lib nolist nowarn;
                  delete &table_nm;
                  change &partition_value = &table_nm;
               quit;


            %end;
            %else %do;

               proc sql;
                  create table trg_lib.&table_nm like &m_di_data..&table_nm;
               quit;

               %etl_drop(trg_lib.&table_nm ,index);
               %etl_drop(trg_lib.&table_nm ,ic);

            %end;

            :DOC: simple index on prod_hier_sk defined

            proc sql;
               create index prod_hier_sk on trg_lib.&table_nm(prod_hier_sk);
            quit;

            libname trg_lib;

         %end; /* End of do loop */

      %end;

      libname SRC_LIB;

   %mend di_etl_mig_szpk_data;

   proc sql noprint;
      select count(*) into :cnt
        from &m_di_data..global_setting
       where spec_nm = "ACTIVE_APP_FLG"
         and APP in ('SZPK', 'SZPF')
         and SPEC_VALUE = '1';
   quit;

  %put count = &cnt;

   %if &cnt > 0 %then %do;
      %di_etl_mig_szpk_data(table_nm = prf_sales_fact);
      %di_etl_mig_szpk_data(table_nm = prf_stockout_fact);
      %di_etl_mig_szpk_data(table_nm = prf_geo_prod_status);
   %end;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID736734
   :DESCRIPTION:    Add new job parameter for Promotion fact
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 10MAR2011
   :SUPPORT:        Gyan Gaurav
   :FREQUENCY:      ONCE
   :CHKLIB:         DI_MON
   :CHKTABLES:      &m_di_mon..job_param

   proc sql;
      DELETE FROM &m_di_mon..job_param WHERE upcase(JOBNAME) = 'LOAD_STG2DM_PROMOTION_FACT'
            and PARAM_NAME = 'etlp_current_record_window';

      DELETE FROM &m_di_mon..job_param WHERE upcase(JOBNAME) = 'LOAD_STG2DM_PROMOTION_FACT'
            and PARAM_NAME = 'etlp_price_hist_weeks_keep';

      DELETE FROM &m_di_mon..job_param WHERE upcase(JOBNAME) = 'LOAD_STG2DM_PROMOTION_FACT'
            and PARAM_NAME = 'etlp_pos_hist_weeks_keep';

      INSERT INTO &m_di_mon..job_param VALUES ('LOAD_STG2DM_PROMOTION_FACT','etlp_price_hist_weeks_keep', "0", '"0"');
      INSERT INTO &m_di_mon..job_param VALUES ('LOAD_STG2DM_PROMOTION_FACT','etlp_pos_hist_weeks_keep',   "0", '"14"');
   quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      DROP_RPP_AGG_FROM_SAS
   :DESCRIPTION:    Drop RPP_CAL_AGG and RPP_CAT_AGG tables from SAS
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 23MAR2011
   :SUPPORT:        Owen Chen
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..rpp_cal_agg, &m_di_data..rpp_cat_agg

   :DOC: move Calendar and Category Aggregation Output tables (RPP_CAL_AGG and RPP_CAT_AGG) from SAS to RDMBS.
   :DOC: Defect S0740583

   proc sql noprint;
    drop table &m_di_data..rpp_cal_agg;
    drop table &m_di_data..rpp_cat_agg;
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID742394
   :DESCRIPTION:    Add column called USAGE to ATTR_SPEC table
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 24MAR2011
   :SUPPORT:        Fusun Meric
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..ATTR_SPEC

   :DOC:  Since ATTR_SPEC has no indexes or primary key we could have gone the easy route but
   :DOC:    column order would be off unless all attrib statements are specified.
   :DOC:
   :DOC:  Refer to: http://sww.sas.com/defects/java/iDefects/WebClient.html?defectid=S0742394
   :DOC:  Possible values for new column:  1->Product 2->Geo
   :DOC:   Usage is always 1 (Product) except when EFFECT_CLASS_NM='DOW'.
   :DOC:   If EFFECT_CLASS_NM='DOW' then user can choose 1 or 2.
   :DOC:

    data work.ATTR_SPEC_OLD;
         attrib USAGE                     length=6   ;
         SET &m_di_data..ATTR_SPEC;
         USAGE=1;
    run;

    data &m_di_data..ATTR_SPEC;
        attrib MODEL_GROUP_ID                      length=4                                            ;
        attrib ATTR_SK                             length=4                                            ;
        attrib EFFECT_CLASS_NM                     length=$40                                          ;
        attrib SELECTION_TYPE                      length=4                                            ;
        attrib USAGE                               length=6                                            ;
        attrib CREATED_DTTM                        length=8      FORMAT=&DTTMFMT    INFORMAT=&DTTMFMT  ;
        attrib CREATED_BY                          length=$20                                          ;
    stop;
    run;

    proc append base=&m_di_data..ATTR_SPEC
                data=work.ATTR_SPEC_OLD force;
    quit;

    proc sql;
        drop table work.ATTR_SPEC_OLD;
    quit;



:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID746640
   :DESCRIPTION:    Rearrange promo_sales_fact data as per TK architecture
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 25MAR2011
   :SUPPORT:        Gyan Gaurav
   :FREQUENCY:      ONCE

   :DOC:  The macro will change the storage location of PROMO_SALES_FACT to TK compliant atchitecture
   :DOC:  It also changes the formats and informats for promo_sales_units, promo_sales_amt and avg_cost
   :DOC:  columns, so that they are consistant in data, mon and stage library
   :DOC:


   %macro get_part_sk;
      data _promo_sales_fact1(drop = PARENT_PROD_HIER_SK rc0);
         attrib PART_SK length=6;
         if _N_ =1 then
        do;
          declare hash h2(dataset: "work.View_prod_hier", hashexp: 16);
           h2.defineKey( "PROD_HIER_SK");
           h2.defineData( "PARENT_PROD_HIER_SK");
           h2.defineDone();
           call missing(PROD_HIER_SK,PART_SK,PARENT_PROD_HIER_SK);

        end;
        set _promo_sales_fact;
        rc0 = h2.find();
        PART_SK=PARENT_PROD_HIER_SK;
        if rc0>0 then PART_SK=0;
     run;
   %mend get_part_sk;

   %macro di_etl_mig_promo_sales_data(table_nm = );

   /* validating the input parameters */
   %if "&table_nm" = "" %then %do;
      %put ERROR: Parameter table_nm is undefined. ;
       %etl_abort;
   %end;

   %local etl_partition_level part_sk;

   %di_etl_create_empty_part_dataset(table = PROMO_SALES_FACT);

   %di_util_global_setting_spec(spec_nm=PROD_PARTITION_LVL,
                                app=ALL,
                               _spec_value=etl_partition_level,
                               optional=1);

   /* Getting the path of DI_DATA library */
   proc sql noprint;
     select path into :data_lib_path
       from sashelp.vlibnam
      where upcase(libname) = upcase("&m_di_data")
        and level in (0,1);
   quit;

   /* Setting up path for source library from which partitions will be moved */
   %let complete_path = %di_util_create_folder(relative_dir=&table_nm,parent_dir=&data_lib_path);
   libname PSF_LIB "&complete_path";

   proc sql noprint;
     create table part_name as
     select distinct(memname) as memname
       from dictionary.columns
      where libname = 'PSF_LIB'
     ;
   quit;

   proc sql;
     create table _promo_sales_fact like &m_di_data..promo_sales_fact;
   quit;

   %let no_of_obs = %di_util_nobs(part_name);
   %if &no_of_obs > 0 %then %do;
      %do loop = 1 %to &no_of_obs;
         data sel_row;
            point_var = input("&loop",best12.);
            set part_name point = point_var;
            call symputx('partition_nm',memname, 'l');
            output;
         stop;
         run;

       proc append data = psf_lib.&partition_nm base = _promo_sales_fact force;
       quit;
     %end;
   %end;

   proc sql;
     create view work.View_prod_hier as
     select PROD_HIER_SK,
            PARENT_PROD_HIER_SK
       from &m_di_data..PRODUCT_HIER_ASSOC_DM
      where PROD_HIER_ASSOC_CD =1
        and PARENT_PROD_LVL = &etl_partition_level;
   quit;



   %get_part_sk;


   proc sort data = _promo_sales_fact1;
      by part_sk prod_hier_sk geo_hier_sk start_dt;
   quit;


   data map (keep = start end_r part_sk);
      set _promo_sales_fact1;
      by part_sk;
      retain start;
      if first.part_sk then do;
        start = _n_;
      end;
      if last.part_sk then do;
       end_r = _n_;
      output;
      end;
   run;

   %local i by_val start end_r;
   %do i = 1 %to %di_util_nobs(map);
      data _null_;
         var = &i;
         set map point=var;
         call symputx('by_val',part_sk,'l');
         call symputx('start',start,'l');
         call symputx('end_r',end_r,'l');
         stop;
      run;

      %let trg_path = %di_util_create_folder(relative_dir=1\&by_val,parent_dir=&data_lib_path);
      libname trg_lib "&trg_path";

      data trg_lib.&table_nm;
         drop part_sk ;
         do i=&start to &end_r;
            set _promo_sales_fact1 point =i;
            output;
         end;
         stop;
      run;

      proc datasets lib = trg_lib nolist nowarn memtype = (data view);
         modify &table_nm;
         format   promo_sales_units NLNUM12.2;
         informat promo_sales_units NLNUM12.2;
         format   promo_sales_amt   NLNUM20.3;
         informat promo_sales_amt   NLNUM20.3;
         format   avg_cost          NLNUM20.3;
         informat avg_cost          NLNUM20.3;;
      quit;

      %etl_drop(trg_lib.&table_nm ,index);
      %etl_drop(trg_lib.&table_nm ,ic);

      /* simple index on prod_hier_sk defined */
      proc sql;
         create index prod_hier_sk on trg_lib.&table_nm(prod_hier_sk);
      quit;

     libname trg_lib;

   %end;

   proc datasets lib = psf_lib nolist nowarn memtype = (data view) kill;
   quit;

   proc datasets lib = work nolist nowarn memtype = (data view);
      delete map sel_row part_name prod_sk_part view_prod_hier _promo_sales_fact _promo_sales_fact1;
   quit;


    %mend di_etl_mig_promo_sales_data;

    %di_etl_mig_promo_sales_data(table_nm = promo_sales_fact);

    proc datasets lib = &m_didm_stg nolist nowarn memtype = (data view);
    modify stg_promotion_sales;
    format promo_sales_units NLNUM12.2;
    format promo_sales_amt   NLNUM20.3;
    quit;

    proc datasets lib = &m_di_mon nolist nowarn memtype = (data view);
    modify stg_promotion_sales_x;
    format   promo_sales_units NLNUM12.2;
    informat promo_sales_units NLNUM12.2;
    format   promo_sales_amt   NLNUM20.3;
    informat promo_sales_amt   NLNUM20.3;
    quit;

    proc datasets lib = &m_di_data nolist nowarn memtype = (data view);
    modify promo_sales_fact;
    format   promo_sales_units NLNUM12.2;
    informat promo_sales_units NLNUM12.2;
    format   promo_sales_amt   NLNUM20.3;
    informat promo_sales_amt   NLNUM20.3;
    quit;

 :END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID737097
   :DESCRIPTION:    Remove model specs not used in 5.2
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 27MAR2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..MODEL_SPEC_DEFAULT

proc sql;
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'BAYESIAN_DISCOUNT_FACTOR';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'BAYESIAN_VARIANCE_FACTOR';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'CHAR_L';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'COMPRESS_SCORE_DATA';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'DEFAULT_TOT_PERIOD';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'FCST_EXT_MODEL_LIB';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'FCST_LONG_TERM';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'FCST_QUICK_UPDATE';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'FCST_SECOND_SMOOTH';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'FCST_SELECT';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'FCST_TRANSFORM';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'FCST_UPDATE_WIN';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'FCST_USE_EXT_MODEL';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'FCST_USE_HPFENGINE';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'FCST_ZSALES';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'FILL_MISSING_GP';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'FULL_MODEL_REFRESH_FREQ';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'HALO_FREQ';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'HALO_GEO_LVL';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'HALO_PROD_LVL';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'HOLDOUT_ANALYSIS_MODE';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'INT_DISAGG';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'INT_DISAGG_BY_PROD';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'INT_DISAGG_REG_PROD';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'INT_FUTURE_WITH_TIME';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'LAG_EFFECT';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'LOAD_DATA_BY_GEO_LVL';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'LOAD_DATA_BY_PROD_LVL';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'LOAD_DATA_SUB_GROUP_SIZE';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'LOAD_DATA_USE_HASH';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'LTF_DATE_LVL_NM';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'LTF_FORECAST_HORIZON';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'LTF_GP_TIME_AGGR_OPT';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'MAX_MODEL_STMT_LENGTH';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'MIN_PARTITION_SIZE';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'MISC_CODING_METHOD';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'MISC_DEC_POWER';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'MISC_MAX_POWER';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'MODEL_DATA_DURATION';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'MULTIPLE_MARKDOWNS';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'NON_COMP_STORE_FCST';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'OUTLIER_RATIO';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'PARTITION_METHOD';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'PARTITION_SEED';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'PERSIST_LOW_MODEL_DATA';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'REG_ENGINE';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'REG_MIX_NAMELEN';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'REPORT_WIN';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'SEED';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'SIM';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'TRAINING_P';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'TS_SEASON_SMOOTH';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'TS_SMOOTH_FACTOR_1';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'TS_SMOOTH_FACTOR_2';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'USE_TS_AS_DEFAULT';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'VALIDATION_P';
DELETE FROM &m_di_data..model_spec_default WHERE spec_nm = 'Z_LSALES';
quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID736133
   :DESCRIPTION:    Add columns HALO_FLG and DOW_FLG to MODEL_SPEC_WORKFLOW table. Remove CONFIG_CD.
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 28MAR2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..MODEL_SPEC_WORKFLOW

data _MODEL_SPEC_WORKFLOW;
   set &m_di_data..MODEL_SPEC_WORKFLOW ;
   drop config_cd;
   DOW_FLG = 0;
   HALO_FLG = 0;
run;

proc sql;
drop table MODEL_SPEC_WORKFLOW;
quit;

data &m_di_data..MODEL_SPEC_WORKFLOW;
attrib TASK_NM                             length=$40                                          ;
attrib PARENT_TASK_NM                      length=$40                                          ;
attrib TASK_DESC                           length=$100                                         ;
attrib TASK_DESC_KEY                       length=$100                                         ;
attrib TASK_LVL                            length=4                                            ;
attrib SPEC_NM                             length=$32                                          ;
attrib SPEC_TYPE                           length=$5                                           ;
attrib MODEL_COMP_NM                       length=$5                                           ;
attrib DOW_FLG                             length=4                                            ;
attrib HALO_FLG                            length=4                                            ;
stop;
run;

proc sql;
alter table &m_di_data..MODEL_SPEC_WORKFLOW add CONSTRAINT PRIM_KEY PRIMARY KEY
(TASK_NM);
quit;

proc append base=&m_di_data..MODEL_SPEC_WORKFLOW data=_MODEL_SPEC_WORKFLOW force;
run;

proc sql;
drop table _MODEL_SPEC_WORKFLOW;
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID739811
   :DESCRIPTION:    New model spec REF_PRICE_TYPE
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 28MAR2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..MODEL_SPEC_DEFAULT


proc sql;
DELETE from &m_di_data..MODEL_SPEC_DEFAULT where SPEC_NM='REF_PRICE_COST_TYPE'
                                                    and MODEL_COMP_NM='ALL'
                                                    and SPEC_TYPE='-1';
INSERT INTO &m_di_data..MODEL_SPEC_DEFAULT
          (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
  VALUES ('REF_PRICE_COST_TYPE','ALL','-1','2',NULL);
quit;



:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID737420
   :DESCRIPTION:    ETL changes for DOW
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 17MAR2011
   :SUPPORT:        Ashish Sharma
   :FREQUENCY:      ONCE

   :DOC:            PROD_ID addition in STG_GEO_PROD
   :DOC:            See defct http://sww.sas.com/cgi-bin/quick_browse?defectid=S0737420

   data &m_didm_stg..STG_GEO_DATE;
      attrib GEO_ID                              length=$32                                          ;
      attrib PROD_ID                             length=$32                                          ;
      attrib GEO_DATE_TYPE                       length=4                                            ;
      attrib START_DT                            length=8      FORMAT=&m_DTFMT      INFORMAT=&m_STG_DTINFMT ;
      attrib GEO_DATE_ID                         length=4                                            ;
      attrib GEO_DATE_NM                         length=$40                                          ;
      attrib END_DT                              length=8      FORMAT=&m_DTFMT      INFORMAT=&m_STG_DTINFMT ;
   stop; run;

   proc sql;
      alter table &m_didm_stg..STG_GEO_DATE add NOT NULL (GEO_ID);
      alter table &m_didm_stg..STG_GEO_DATE add NOT NULL (PROD_ID);
      alter table &m_didm_stg..STG_GEO_DATE add NOT NULL (GEO_DATE_TYPE);
      alter table &m_didm_stg..STG_GEO_DATE add NOT NULL (START_DT);
      alter table &m_didm_stg..STG_GEO_DATE add NOT NULL (END_DT);
   quit;

   :DOC:            PROD_ID addition in STG_GEO_PROD_X

   Data &m_di_mon..STG_GEO_DATE_X ;
      attrib GEO_ID length = $32 ;
      attrib PROD_ID length = $32 ;
      attrib GEO_DATE_TYPE length = 4 ;
      attrib START_DT length = 8 format = &m_DTFMT informat = &m_DTFMT ;
      attrib END_DT length = 8 format = &m_DTFMT informat = &m_DTFMT ;
      attrib ETLS_EXCEPTION_COND length = $200 ;
      attrib ETL_ERROR_JOBRUNTIME length = 8 format =DATETIME16. ;
   stop; run;


   :DOC:            Modify etl job dependency flow
   :DOC:            Add STG_DOW_SALES staging table

   data &m_didm_stg..STG_DOW_SALES;
      attrib PROD_ID  length=$32;
      attrib GEO_ID length=$32;
      attrib SALES_DT length=8 FORMAT=&m_DTFMT INFORMAT=&m_STG_DTINFMT;
      attrib SALES_UNITS length=8 FORMAT=NLNUM12.2  INFORMAT=NLNUM12.2;
      attrib SALES_AMT length=8 FORMAT=NLNUM20.3  INFORMAT=NLNUM20.3;
      attrib CHANGE_FLG length=$1;
   stop;
   run;

   proc sql noprint;
   alter table &m_didm_stg..STG_DOW_SALES add NOT NULL (PROD_ID);
   alter table &m_didm_stg..STG_DOW_SALES add NOT NULL (GEO_ID);
   alter table &m_didm_stg..STG_DOW_SALES add NOT NULL (SALES_DT);
   alter table &m_didm_stg..STG_DOW_SALES add NOT NULL (SALES_UNITS);
   alter table &m_didm_stg..STG_DOW_SALES add NOT NULL (SALES_AMT);
   alter table &m_didm_stg..STG_DOW_SALES add NOT NULL (CHANGE_FLG);
   quit;

   :DOC:            Add STG_DOW_SALES_X error table

   data &m_di_mon..STG_DOW_SALES_X;
   attrib PROD_ID  length=$32;
   attrib GEO_ID length=$32;
   attrib SALES_DT length=8 FORMAT=&m_DTFMT INFORMAT=&m_DTFMT;
   attrib SALES_UNITS length=8 FORMAT=NLNUM12.2  INFORMAT=NLNUM12.2;
   attrib SALES_AMT length=8 FORMAT=NLNUM20.3  INFORMAT=NLNUM20.3;
   attrib CHANGE_FLG length=$1;
   attrib ETLS_EXCEPTION_COND length = $200 ;
   attrib ETL_ERROR_JOBRUNTIME length = 8 format =DATETIME16.;
   stop; run;

   proc sql;
      delete from  &m_di_mon..job_param where jobname="LOAD_SRC2STG_DOW_SALES"
                and param_name="etlp_src_file"
                ;
      Insert into &m_di_mon..job_param
      (jobname, param_name, param_value, default_func)
      values("LOAD_SRC2STG_DOW_SALES","etlp_src_file","/data/stg_dow_sales.csv",'"Y"')
      ;
   quit;

   proc sql;
      delete from  &m_di_mon..etl_sys_param where jobname="LOAD_STG2DM_DOW_SALES_FACT"
                and param_name="etlp_exception_table"
                ;
      Insert into &m_di_mon..etl_sys_param
      (jobname, param_name, param_value, default_func)
      values("LOAD_STG2DM_DOW_SALES_FACT","etlp_exception_table","DI_MON.STG_DOW_SALES_X",'"DI_MON.STG_DOW_SALES_X"')
      ;
   quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID708556
   :DESCRIPTION:    Historical update of Price/Cost fact
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 29MAR2011
   :SUPPORT:        Ashish Sharma
   :FREQUENCY:      ONCE

   :DOC:            Add 2 parameters into di_mon.job_param to allow
   :DOC:            historical update of Price/Cost fact

   proc sql;

      delete from  &m_di_mon..job_param
             where jobname="LOAD_STG2DM_COST_FACT" and param_name="etlp_reload_history_data"        ;
      delete from  &m_di_mon..job_param
             where jobname="LOAD_STG2DM_PRICE_FACT" and param_name="etlp_reload_history_data"        ;
      delete from  &m_di_mon..job_param
             where jobname="LOAD_STG2DM_COST_FACT" and param_name="etlp_reload_history_from_dt"        ;
      delete from  &m_di_mon..job_param
             where jobname="LOAD_STG2DM_PRICE_FACT" and param_name="etlp_reload_history_from_dt"        ;
      Insert into &m_di_mon..job_param
      (jobname, param_name, param_value, default_func)
      values("LOAD_STG2DM_COST_FACT","etlp_reload_history_data","0", '"0"' )
      values("LOAD_STG2DM_PRICE_FACT","etlp_reload_history_data","0",'"0"' )
      values("LOAD_STG2DM_COST_FACT","etlp_reload_history_from_dt","0",'"0"' )
      values("LOAD_STG2DM_PRICE_FACT","etlp_reload_history_from_dt","0",'"0"' );
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID749340
   :DESCRIPTION:    Drop model spec ARP
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 01APR2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..MODEL_SPEC_DEFAULT


proc sql;
DELETE from &m_di_data..MODEL_SPEC_DEFAULT where SPEC_NM = 'ARP';
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID749631
   :DESCRIPTION:    Adding Parametes in Job_param for GEO_PROD_OWNED_INV
   :VERSION:        D3MICM52, M1TKMI43
   :DATE_OF_CHANGE: 01APR2011
   :SUPPORT:        Avinash Khairnar
   :FREQUENCY:      ONCE
   :CHKLIB:         DI_MON


   * Add new parameters to Job_param for Geo_prod_owned_inv;

   data temp_job_param;
      attrib jobname length=$80 param_name length=$32 param_value length=$160 default_func length=$160 ;
      jobname='LOAD_STG2DM_GEO_PROD_OWNED_INV'; param_name='etlp_find_mixed_mode_excp'; param_value='';default_func ='"1"';output;
      jobname='LOAD_STG2DM_GEO_PROD_OWNED_INV'; param_name='mixed_mode_excp_at_prod_lvl'; param_value='';default_func ='""';output;
      jobname='LOAD_STG2DM_GEO_PROD_OWNED_INV'; param_name='etlp_num_wks_hist'; param_value='';default_func ='"26"';output;
   run;

   proc sql;
      update &m_di_mon..job_param set jobname = upcase(jobname);
   quit;

   data &m_di_mon..job_param;
      set temp_job_param(rename=(param_value=etls_0 default_func=etls_1));

      modify &m_di_mon..job_param key=PRIM_KEY;
      param_value=etls_0 ;
      default_func=etls_1;

      if _iorc_ = 0 then do;
         replace;
      end;
      else do;
         output;
      end;

      _iorc_ = 0; _error_ = 0;
   run;

   %if &syscc >= 5 %then %do;
      %put ERROR: Job_param could not be updated. please check log;
   %end;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID749340_1
   :DESCRIPTION:    Drop model spec ARP
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 01APR2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..MODEL_SPEC


proc sql;
DELETE from &m_di_data..MODEL_SPEC where SPEC_NM = 'ARP';
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID749664
   :DESCRIPTION:    Change values for BASELINE_OFFSET global setting
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 01APR2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..GLOBAL_SETTING


proc sql;
UPDATE &m_di_data..GLOBAL_SETTING set SPEC_VALUE = '2' where SPEC_NM = 'BASELINE_OFFSET';
UPDATE &m_di_data..GLOBAL_SETTING set SPEC_DESC = 'Specifies how baseline offset should be computed.' where SPEC_NM = 'BASELINE_OFFSET';
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID737097_1
   :DESCRIPTION:    Remove global settings SALES_AVG_GEO_LVL and SALES_AVG_PROD_LVL
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 01APR2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..GLOBAL_SETTING


proc sql;
DELETE from &m_di_data..GLOBAL_SETTING where SPEC_NM = 'SALES_AVG_GEO_LVL';
DELETE from &m_di_data..GLOBAL_SETTING where SPEC_NM = 'SALES_AVG_PROD_LVL';
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID749665
   :DESCRIPTION:    Add model specs BASELINE_OFFSET_PCTILE and BASELINE_OFFSET_NBINS
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 04APR2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..MODEL_SPEC_DEFAULT


proc sql;
DELETE from &m_di_data..MODEL_SPEC_DEFAULT where SPEC_NM = 'BASELINE_OFFSET_PCTILE';
INSERT into &m_di_data..MODEL_SPEC_DEFAULT
          (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
  VALUES ('BASELINE_OFFSET_PCTILE','ALL','1','0.9',NULL);
INSERT into &m_di_data..MODEL_SPEC_DEFAULT
          (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
  VALUES ('BASELINE_OFFSET_PCTILE','ALL','2','0.9',NULL);
DELETE from &m_di_data..MODEL_SPEC_DEFAULT where SPEC_NM = 'BASELINE_OFFSET_NBINS';
INSERT into &m_di_data..MODEL_SPEC_DEFAULT
          (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
  VALUES ('BASELINE_OFFSET_NBINS','ALL','1','10000',NULL);
INSERT into &m_di_data..MODEL_SPEC_DEFAULT
          (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
  VALUES ('BASELINE_OFFSET_NBINS','ALL','2','10000',NULL);
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID739353
   :DESCRIPTION:    Add first 6 DOW model specs
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 04APR2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..MODEL_SPEC_DEFAULT

proc sql;
DELETE from &m_di_data..MODEL_SPEC_DEFAULT where SPEC_NM = 'DOW_SIGNIFICANCE_LVL';
INSERT into &m_di_data..MODEL_SPEC_DEFAULT
  (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
  VALUES ('DOW_SIGNIFICANCE_LVL','DOW','-1','0.05',NULL);

DELETE from &m_di_data..MODEL_SPEC_DEFAULT where SPEC_NM = 'DOW_NUM_WEEK_SAMPLE';
INSERT into &m_di_data..MODEL_SPEC_DEFAULT
  (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
  VALUES ('DOW_NUM_WEEK_SAMPLE','DOW','-1','3',NULL);

DELETE from &m_di_data..MODEL_SPEC_DEFAULT where SPEC_NM = 'DOW_NUM_WEEK_SAMPLE_EXT';
INSERT into &m_di_data..MODEL_SPEC_DEFAULT
  (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
  VALUES ('DOW_NUM_WEEK_SAMPLE_EXT','DOW','-1','8',NULL);

DELETE from &m_di_data..MODEL_SPEC_DEFAULT where SPEC_NM = 'DOW_LIKELIHOOD_SIG_LVL';
INSERT into &m_di_data..MODEL_SPEC_DEFAULT
  (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
  VALUES ('DOW_LIKELIHOOD_SIG_LVL','DOW','-1','0.05',NULL);

DELETE from &m_di_data..MODEL_SPEC_DEFAULT where SPEC_NM = 'DOW_MAX_ATTR_LVL';
INSERT into &m_di_data..MODEL_SPEC_DEFAULT
  (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
  VALUES ('DOW_MAX_ATTR_LVL','DOW','-1','5',NULL);

DELETE from &m_di_data..MODEL_SPEC_DEFAULT where SPEC_NM = 'DOW_MIN_SPLIT_PCT';
INSERT into &m_di_data..MODEL_SPEC_DEFAULT
  (SPEC_NM,MODEL_COMP_NM,SPEC_TYPE,DEFAULT_SPEC_VALUE,PRIORITY)
  VALUES ('DOW_MIN_SPLIT_PCT','DOW','-1','0.10',NULL);
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ADD_PRICE_POINT_CORRECTION
   :DESCRIPTION:    Add PRICE_POINT_CORRECTION table to support price ending effect
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 04APR2011
   :SUPPORT:        Arin Chaudhuri
   :FREQUENCY:      ONCE

   ***********************************************************************************************;

    data &m_di_data..PRICE_POINT_CORRECTION;
       attrib PROD_HIER_SK         length=6                                      ;
       attrib PRICE_POINT_LOWER    length=8 FORMAT=NLNUM20.3  INFORMAT=NLNUM20.3 ;
       attrib PRICE_POINT_UPPER    length=8 FORMAT=NLNUM20.3  INFORMAT=NLNUM20.3 ;
       attrib PRICE_INCREMENT      length=8 FORMAT=NLNUM20.3  INFORMAT=NLNUM20.3 ;
       attrib ADJUST_PRICE_RANGE   length=8 FORMAT=NLNUM20.3  INFORMAT=NLNUM20.3 ;
    stop; run;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      GLOBAL_CONSTANTS
   :DESCRIPTION:    Refresh Global Constants
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 15FEB2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      NEVER

   :DOC:  These tables are now moved over to di_TRANS library.

   :DOC: Changed it to NEVER when these tables are moved to RDBMS.

   :DOC: This change will be run every time apply_sas_data_model_changes.sas is run.
   :DOC: It refreshes the following tables:
   :DOC: GLOBAL_SETTING_DETAILS
   :DOC: GLOBAL_SETTING_GROUP
   :DOC: GLOBAL_SETTING_GROUP_MEMBER
   :DOC: GLOBAL_SETTING_VALUES
   :DOC:
   :DOC: MA_SPEC
   :DOC:
   :DOC: MODEL_GEO_PROD_STATUS_DETAILS
   :DOC: MODEL_GEO_PROD_STATUS_VALUES
   :DOC:
   :DOC: MODEL_SPEC_DETAILS
   :DOC: MODEL_SPEC_VALUES
   :DOC: MODEL_SPEC_WORKFLOW
   :DOC: SCORING_PARAM_CONFIG
   :DOC:
   :DOC: Jerry Haden will be responsible for keeping latest version of these tables in CVS.
   :DOC: Tables will be maintained at this location: \sas\dibase\misc\alterddl::d3micm52
   :DOC: Jerry may choose to not maintain the tables and only maintain the cport file.
   :DOC: The cport file for all these tables will be visible to customers and located here:
   :DOC:                    \sas\dibase\misc\dbmsc::d3micm52
   :DOC:        The file is named GLOBAL_CONSTANTS.CPORT
   :DOC:
   :DOC: This CPORT file will be imported to work library.  Data in these tables will be
   :DOC:   transferred to existing tables in di_data library.  There are no checks performed.
   :DOC:
   :DOC:

    filename importin "%di_util_misc_path()/dbmsc/GLOBAL_CONSTANTS.CPORT";
    proc cimport infile=importin library=WORK memtype=DATA;
    run;

    %let m_refresh=%nrstr(proc sql; delete * from &m_di_data..&m_tn;
    create table z as select * from &m_di_data..&m_tn outer union corr select * from work.&m_tn;
    insert into &m_di_data..&m_tn select * from z; quit;);


    %let m_tn=global_setting_details;
    %unquote(&m_refresh);

    %let m_tn=global_setting_group;
    %unquote(&m_refresh);
    ;

    %let m_tn=global_setting_group_member;
    %unquote(&m_refresh);

    %let m_tn=global_setting_values;
    %unquote(&m_refresh);

    %let m_tn=ma_spec;
    %unquote(&m_refresh);

    %let m_tn=model_geo_prod_status_details;
    %unquote(&m_refresh);

    %let m_tn=model_geo_prod_status_values;
    %unquote(&m_refresh);

    %let m_tn=model_spec_details;
    %unquote(&m_refresh);

    %let m_tn=model_spec_values;
    %unquote(&m_refresh);

    %let m_tn=model_spec_workflow;
    %unquote(&m_refresh);

    %let m_tn=scoring_param_config;
    %unquote(&m_refresh);

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID750328
   :DESCRIPTION:    SIZE PROFILING 3.2 SCHEMA CHANGES
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 04APR2011
   :SUPPORT:        Fusun Meric
   :FREQUENCY:      ONCE

   data &m_di_data..SIZESET_MBR;
   attrib STD_SIZE_CD                         length=6                                            ;
   attrib PROFILING_PROJECT_SK                length=6                                            ;
   attrib SIZESET_ID                          length=8                                            ;
   stop; run;

   proc sql;
      alter table &m_di_data..SIZESET_MBR add NOT NULL (STD_SIZE_CD);
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID719792
   :DESCRIPTION:    Schema and ETL enhancement for uniform timing (mdo_plan and stg_mdo_import_plan)
   :VERSION:        D3MICM52,M2TKMI43
   :DATE_OF_CHANGE: 30MAR2011
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE

   :DOC:            Add 3 columns to stg_mdo_import_plan and DI_MON table
   :DOC:            Add relevant reference values for Geo_prod_setting for CPO application

   proc sql;
      alter table &m_didm_stg..STG_MDO_IMPORT_PLAN
      add UNIFORM_TIMING_NUM_MARKDN num 4,
          UNIFORM_TIMING_PROD_LVL num 4,
          UNIFORM_TIMING_GEO_LVL num 4
      ;
   quit;

   proc sql;
      alter table &m_di_mon..STG_MDO_IMPORT_PLAN_X
      add UNIFORM_TIMING_NUM_MARKDN num 4,
          UNIFORM_TIMING_PROD_LVL num 4,
          UNIFORM_TIMING_GEO_LVL num 4
      ;
   quit;

   proc sql;
      insert into &m_di_data..reference_values
          (field_nm,field_value,field_short_desc)
      values ('SETTING_TYPE','50','UNIFORM_TIMING_NUM_MARKDN')
      values ('SETTING_TYPE','51','UNIFORM_TIMING_PROD_LVL')
      values ('SETTING_TYPE','52','UNIFORM_TIMING_GEO_LVL');
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID738983_1
   :DESCRIPTION:    Re-Partitioning of product_dm and GEO_PROD with change of MIN_INV_LVL column.
   :VERSION:        D3MICM52, M1MI42
   :DATE_OF_CHANGE: 07APR2011
   :SUPPORT:        Avinash Khairnar, Rhuta Kulkarni
   :FREQUENCY:      ONCE

/* Create subfolder 1 under di_data if it does not exist */
%di_etl_set_lib (parent_lib=&m_di_data , sub_folder=1, partition_lib=di_part);

proc sql noprint;
   select spec_value into :num_parallel_executions
   from &m_di_data..global_setting
   where upcase(spec_nm)='NUM_PARALLEL_EXECUTIONS';
quit;
%let num_parallel_executions = &num_parallel_executions;

%if %sysfunc(exist(&m_di_data..GEO_PROD)) %then %do;

   data work.exclude_tables;
      attrib table_nm length=$40;
      table_nm = 'SALES_FACT'; output;
   run;

   %di_etl_partition_data(
                      from_lib=&m_di_data,
                      table_nm=%quote(GEO_PROD),
                      increment_count=8000000,
                      exclude_list=work.exclude_tables,
                      num_parallel_jobs=&num_parallel_executions,
                      refresh_mapping=1);


%end;

%macro di_etl_del_col(table_nm = );

   /* validating the input parameters*/

   %if "&table_nm" = "" %then %do;
      %put ERROR: Parameter table_nm is undefined. ;
      %etl_abort;
   %end;

   /* Getting the path of DI_DATA library */

   proc sql noprint;
      select path into :data_lib_path
        from sashelp.vlibnam
       where upcase(libname) = upcase("&m_di_data")
         and level in (0,1);
   quit;

   %put data lib path = &data_lib_path;

   /* getting the  values of all partitions */

   %local etl_partition_level part_sk;

   %di_util_global_setting_spec(spec_nm=PROD_PARTITION_LVL,
                         app=ALL,
                         _spec_value=etl_partition_level,
                         optional=1);

   proc sql;
      create table work.prod_sk_part as
      select distinct(PROD_HIER_SK) as part_sk
        from &m_di_data..PRODUCT_HIER_ASSOC_DM
       where PROD_HIER_ASSOC_CD =1
         and PROD_LVL = &etl_partition_level;
   quit;

   proc sql;
      insert into work.prod_sk_part values (0);
   quit;

   /* Setting up path for source library from which column MIN_INV_LVL to be deleted */

   %let number_of_part = %di_util_nobs(prod_sk_part);
   %put number of partitions to move = &number_of_part;

   %do i = 1 %to &number_of_part;
      data sel_row;
         point_var = input("&i",best12.);
         set prod_sk_part point = point_var;
         call symputx('partition_nm',part_sk, 'l');
         output;
         stop;
      run;

      %put Partition_nm = &partition_nm;

      %let trg_path = %di_util_create_folder(relative_dir=1\&partition_nm,parent_dir=&data_lib_path);
      libname trg_lib "&trg_path";

      %if (%sysfunc(exist(trg_lib.&table_nm)) eq 1) %then %do; /* if table exists under \1\part_sk\... */
         proc sql;
            alter table trg_lib.&table_nm
            drop column MIN_INV_LVL;
         quit;
      %end;

   %end;

%mend;

%di_etl_del_col(table_nm = PRODUCT_DM);

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID727110
   :DESCRIPTION:    Move PURGE_RESULT_TABLE from MON to DATA lib and replace date columns with datetime columns in DI_DATA.GEO_PROD_PURGE_LIST
   :VERSION:        D3MICM52,M2MI42
   :DATE_OF_CHANGE: 12APR2011
   :SUPPORT:        Sangeeta Rokde
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_mon..PURGE_RESULT_TABLE


    %if (%di_util_varexist(dsname=&m_di_data..GEO_PROD_PURGE_LIST, varname=PURGED_DTTM)=0) %then
    %do;
   /* Delete any pre existing version of PURGE_RESULT_TABLE from DI_DATA */

   proc datasets lib = &m_di_data nolist nowarn memtype = (data view);
      delete PURGE_RESULT_TABLE;
   quit;

  /* Move PURGE_RESULT_TABLE from DI_MON to DI_DM and add PURGED_FLG column */

   data &m_di_data..PURGE_RESULT_TABLE;
      set &m_di_mon..PURGE_RESULT_TABLE;
      attrib PURGED_FLG length=$1;
      PURGED_FLG='Y';
   run;

   /* Delete existing version of PURGE_RESULT_TABLE from DI_MON */

   proc datasets lib = &m_di_mon nolist nowarn memtype = (data view);
      delete PURGE_RESULT_TABLE;
   quit;


   /* Drop columns PURGED_DT, CREATED_DT and add columns PURGED_DTTM and CREATED_DTTM */

    proc sql;
       alter table &m_di_data..GEO_PROD_PURGE_LIST
          add PURGED_DTTM  NUM FORMAT=NLDATM21. INFORMAT=NLDATM21.,
              CREATED_DTTM NUM FORMAT=NLDATM21. INFORMAT=NLDATM21.;
    quit;

    proc sql;
       update &m_di_data..GEO_PROD_PURGE_LIST set PURGED_DTTM=PURGED_DT*24*60*60;
       update &m_di_data..GEO_PROD_PURGE_LIST set CREATED_DTTM=CREATED_DT*24*60*60;
    quit;

    proc sql;
       alter table &m_di_data..GEO_PROD_PURGE_LIST
          drop PURGED_DT, CREATED_DT;
     quit;

    %end;

 :END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID734856
   :DESCRIPTION:    Add Classified_flg to Profile_cluster stage table
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 11APR2011
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_didm_stg..STG_PROFILE_CLUSTER, &m_di_mon..STG_PROFILE_CLUSTER_X

   proc sql;
      alter table &m_didm_stg..STG_PROFILE_CLUSTER
      add CLASSIFIED_FLG num 3
      ;
   quit;

   proc sql;
      alter table &m_di_mon..STG_PROFILE_CLUSTER_X
      add CLASSIFIED_FLG num 3
      ;
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID725829
   :DESCRIPTION:    Revert changes that is add validation where it checks for product to be at size_translation_prod_lvl
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 14APR2011
   :SUPPORT:        Rhuta Kulkarni
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon.
   :CHKTABLES:      &m_di_mon..STG_STD_SIZE_X


   proc sql;
      ALTER TABLE &m_di_mon..STG_STD_SIZE_X
      DROP PROD_LVL;
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID672986
   :DESCRIPTION:    Modify length of LVL_DESC columns in stg.dimension_lvl and geography_lvl
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 15APR2011
   :SUPPORT:        Gyan Gaurav
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_didm_stg.
   :CHKTABLES:      &m_didm_stg..STG_DIMENSION_LEVELS,&m_di_data..GEOGRAPHY_LVL

     /* Modify LEVEL_DESC length in STAGE to 100 */

      proc sql;
         alter table &m_didm_stg..STG_DIMENSION_LEVELS
         modify LEVEL_DESC char(100);
      quit;

     /* Modify GEO_LVL_DESC length in DI_DATA.GEOGRAPHY_LVL to 100 */

      proc sql;
         alter table &m_di_data..GEOGRAPHY_LVL
         modify GEO_LVL_DESC char(100);
      quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID752806
   :DESCRIPTION:    Modify DI_MON.JOB_STATUS table
   :VERSION:        D3MICM52,D2TKMI42
   :DATE_OF_CHANGE: 25APR2011
   :SUPPORT:        Ashish Sharma
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon.
   :CHKTABLES:      &m_di_mon..job_status

      data &m_di_mon..job_status_bkp;
     set &m_di_mon..job_status;
     run;

     proc sql noprint;
        drop table &m_di_mon..job_status;
     quit;

      Data &m_di_mon..JOB_STATUS ;
      attrib USER length=$32 label='User id' ;
      attrib TABLE length=$32 label='Table name' ;
      attrib LIB length=$32 label='Library' ;
      attrib JOBNAME length=$80 label='Job name' ;
      attrib JOBSTAT length=$80 label='Job status' ;
      attrib JOB_RC length=8 label='Job return code' ;
      attrib RBEFORE length=8 label='No. Records before' ;
      attrib RAFTER length=8 label='No. Records after' ;
      attrib RSOURCE length=8 label='No. Records in source' ;
      attrib RINEXCP length=8 label='No. Records rejected' ;
      attrib STTIME length=8 format=&m_dttmfmt label='Job start time' ;
      attrib ENDTIME length=8 format=&m_dttmfmt label='Job end time' ;
      stop; run;

      proc sql;
         create index JOBNAME on &m_di_mon..JOB_STATUS (JOBNAME);
      quit;

     proc sql noprint;
      insert into &m_di_mon..job_status
        (USER,
         TABLE,
         LIB,
         JOBNAME,
         JOBSTAT,
         JOB_RC,
         RBEFORE,
         RAFTER,
         STTIME,
         ENDTIME)
      select
         USER,
         TABLE,
         LIB,
         JOBNAME,
         JOBSTAT,
         JOB_RC,
         RBEFORE,
         RAFTER,
         STTIME,
         ENDTIME
      from &m_di_mon..job_status_bkp;
      quit;

     proc sql noprint;
     drop table &m_di_mon..job_status_bkp;
      quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ADD_PARM
   :DESCRIPTION:    Add parameter 'FULL_REFRESH' in DI_MON.JOB_PARAM for LOAD_STG2DM_BUDGET job
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 25APR2011
   :SUPPORT:        Yogesh Dhuri
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon.
   :CHKTABLES:      &m_di_mon..JOB_PARAM

      proc sql;
        delete from &m_di_mon..JOB_PARAM
         where upcase(jobname) = "LOAD_STG2DM_BUDGET" and upcase(PARAM_NAME)="FULL_REFRESH";

   insert into &m_di_mon..JOB_PARAM values("LOAD_STG2DM_BUDGET", "Full_refresh",'','"0"');
      quit;



:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID745889
   :DESCRIPTION:    Set '2' as the only possible value for ETLP_BUDGET_TYPE parameter in DI_MON.ETL_SYS_PARAM table
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 25APR2011
   :SUPPORT:        Yogesh Dhuri
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon.
   :CHKTABLES:      &m_di_mon..ETL_SYS_PARAM

      proc sql;
        delete from &m_di_mon..ETL_SYS_PARAM
         where upcase(jobname) = "ALLJOBS" and upcase(PARAM_NAME)="ETLP_BUDGET_TYPE";

   insert into &m_di_mon..ETL_SYS_PARAM values("ALLJOBS", "etlp_budget_type", "2", '"2"');
      quit;



:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID741891
   :DESCRIPTION:    Setting up parameter for DI_PURGE_EXCEPTION_TABLES job
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 27APR2011
   :SUPPORT:        Gyan Gaurav
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon.
   :CHKTABLES:      &m_di_mon..JOB_PARAM

     proc sql;
     delete from &m_di_mon..job_param where upcase(jobname) = "DI_PURGE_EXCEPTION_TABLES" and lowcase(param_name) = "etlp_excp_rec_retain_wks";
     delete from &m_di_mon..job_param where upcase(jobname) = "DI_PURGE_EXCEPTION_TABLES" and lowcase(param_name) = "etlp_excp_archive_loc";
     delete from &m_di_mon..job_param where upcase(jobname) = "DI_PURGE_EXCEPTION_TABLES" and lowcase(param_name) = "etlp_excp_table_list";
     delete from &m_di_mon..job_param where upcase(jobname) = "DI_PURGE_EXCEPTION_TABLES" and lowcase(param_name) = "etlp_archive_cmd";
     quit;

     proc sql;
     insert into &m_di_mon..job_param values ("DI_PURGE_EXCEPTION_TABLES", "etlp_excp_rec_retain_wks", '1', '"1"');
     insert into &m_di_mon..job_param values ("DI_PURGE_EXCEPTION_TABLES", "etlp_excp_archive_loc", '', '" "');
          insert into &m_di_mon..job_param values ("DI_PURGE_EXCEPTION_TABLES", "etlp_excp_table_list", '', '" "');
     insert into &m_di_mon..job_param values ("DI_PURGE_EXCEPTION_TABLES", "etlp_archive_cmd", '', '" "');
     quit;



:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID756442
   :DESCRIPTION:    New global setting NEW_PROFILE_ATTRS_TOP_PRIORITY
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 03MAY2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE


   proc sql;

   DELETE FROM &m_di_data..GLOBAL_SETTING
   WHERE SPEC_NM ='NEW_PROFILE_ATTRS_TOP_PRIORITY' and APP = 'ALL';

   INSERT INTO &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) VALUES
   ('NEW_PROFILE_ATTRS_TOP_PRIORITY','ALL','1',
   'Specifies whether attributes of newly added profiles should have top priority for a product.');

   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID749298
   :DESCRIPTION:    NF:Manage competitor data when locations are reclassed
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 02MAY2011
   :SUPPORT:        Rhuta Kulkarni
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_data
   :CHKTABLES:      &m_di_data..GLOBAL_SETTING

      proc sql noprint ;
        DELETE FROM &m_di_data..GLOBAL_SETTING where upcase(SPEC_NM) = 'UPDATE_COMP_PRICES_AFTER_RECLASS'
                                                 and upcase(APP) = 'RPO';

        Insert into &m_di_data..GLOBAL_SETTING
        (SPEC_NM, APP, SPEC_VALUE, SPEC_DESC)
        values ("UPDATE_COMP_PRICES_AFTER_RECLASS","RPO", "0", "End competitor price when location is reclassed")
        ;
     quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID626118
   :DESCRIPTION:    New global setting MAX_CLIENT_ALERT_COUNT
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 03MAY2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..global_setting


   proc sql;

   DELETE FROM &m_di_data..GLOBAL_SETTING
   WHERE SPEC_NM ='MAX_CLIENT_ALERT_COUNT' and APP = 'RPO';

   INSERT INTO &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) VALUES
   ('MAX_CLIENT_ALERT_COUNT','RPO','10000',
   'Specifies the maximum number of alerts that can be displayed in the SAS Regular Price Optimization UI.');

   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID742950A
   :DESCRIPTION:    Add parameter 'FULL_REFRESH' in DI_MON.JOB_PARAM for LOAD_STG2DM_GEO_DATE job
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 05MAY2011
   :SUPPORT:        Yogesh Dhuri
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon.
   :CHKTABLES:      &m_di_mon..JOB_PARAM

      proc sql;
         delete from &m_di_mon..JOB_PARAM
         where upcase(jobname) = "LOAD_STG2DM_GEO_DATE" and upcase(PARAM_NAME)="FULL_REFRESH";

        insert into &m_di_mon..JOB_PARAM values("LOAD_STG2DM_GEO_DATE", "full_refresh",'','"0"');
      quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID742950B
   :DESCRIPTION:    Add change flag to DI_MON.STG_GEO_SEASON_X and DIDM_STG.STG_GEO_SEASON
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 05MAY2011
   :SUPPORT:        Yogesh Dhuri
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon.
   :CHKTABLES:      &m_di_mon..JOB_PARAM

   proc sql;
     alter table &m_di_mon..stg_geo_season_x
        add CHANGE_FLG char(1);

   quit;



   proc sql;
      alter table &m_didm_stg..stg_geo_season
        add CHANGE_FLG char(1);
      update &m_didm_stg..stg_geo_season
         set CHANGE_FLG='I';

   quit;



   proc datasets nolist library=&m_didm_stg.; modify stg_geo_season;
      ic create Not Null (change_flg);
   run;quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID742950C
   :DESCRIPTION:    Adding change flag to GEO_PROD_OWN_INV
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 02May2011
   :SUPPORT:        Sarita Kannarath
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_didm_stg., &m_di_mon
   :CHKTABLES:      &m_didm_stg..Stg_geo_prod_owned_inv, &m_di_mon..Stg_geo_prod_owned_inv_x

   proc sql;
     alter table &m_di_mon..STG_GEO_PROD_OWNED_INV_X
        add CHANGE_FLG char(1);

   quit;

   proc sql;
      alter table &m_didm_stg..STG_GEO_PROD_OWNED_INV
        add CHANGE_FLG char(1);
      update &m_didm_stg..STG_GEO_PROD_OWNED_INV
         set CHANGE_FLG='I';

   quit;


   proc datasets nolist library=&m_didm_stg.; modify STG_GEO_PROD_OWNED_INV;
      ic create Not Null (change_flg);
   run;quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID742950D
   :DESCRIPTION:    Adding change flag to SALES_MIX_DAY_OF_WEEK
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 05May2011
   :SUPPORT:        Sarita Kannarath
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_didm_stg.
   :CHKTABLES:      &m_didm_stg..Stg_sales_mix_day_of_week

   proc sql;
         alter table &m_didm_stg..Stg_sales_mix_day_of_week
           add CHANGE_FLG char(1);
         update &m_didm_stg..Stg_sales_mix_day_of_week
            set CHANGE_FLG='I';
   quit;



   proc datasets nolist library=&m_didm_stg.; modify Stg_sales_mix_day_of_week;
      ic create Not Null (change_flg);
   run;quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID757659
   :DESCRIPTION:    Adding change flag to PRF_SALES_FACT
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 06May2011
   :SUPPORT:        Gyan Gaurav
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_didm_stg., &m_di_mon.
   :CHKTABLES:      &m_didm_stg..Stg_prf_sales, &m_di_mon..stg_prf_sales_x

proc sql;
alter table &m_didm_stg..stg_prf_sales
add CHANGE_FLG char(1);
quit;

data &m_didm_stg..stg_prf_sales;
   set &m_didm_stg..stg_prf_Sales;
   CHANGE_FLG = 'I';
run;

proc sql;
   alter table &m_didm_stg..stg_prf_Sales add NOT NULL(CHANGE_FLG);
quit;

proc sql;
   alter table &m_di_mon..stg_prf_sales_x
     add CHANGE_FLG char(1);
quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      STG_PRF_SALES_FACT_CONSTR
   :DESCRIPTION:    Adding dropped constraints back to STG_PRF_SALES_FACT
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 15JUL2011
   :SUPPORT:        Gyan Gaurav
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_didm_stg.
   :CHKTABLES:      &m_didm_stg..Stg_prf_sales, &m_di_mon..stg_prf_sales_x

   :DOC:  Defect S0757659
   :DOC:  http://sww.sas.com/defects/java/iDefects/WebClient.html?defectid=S0757659
    :DOC:  This data step simply drops all the constraints.

    data &m_didm_stg..stg_prf_sales;
       set &m_didm_stg..stg_prf_Sales;
    run;

    proc sql;
        alter table &m_didm_stg..STG_PRF_SALES add NOT NULL (PROD_ID);
        alter table &m_didm_stg..STG_PRF_SALES add NOT NULL (GEO_ID);
        alter table &m_didm_stg..STG_PRF_SALES add NOT NULL (START_DT);
        alter table &m_didm_stg..STG_PRF_SALES add NOT NULL (SALES_UNITS);
        alter table &m_didm_stg..STG_PRF_SALES add NOT NULL (SALES_AMT);
        alter table &m_didm_stg..STG_PRF_SALES add NOT NULL (CHANGE_FLG);
    quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID757660
   :DESCRIPTION:    Adding change flag to PRF_STOCKOUT_FACT
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 06May2011
   :SUPPORT:        Gyan Gaurav
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_didm_stg., &m_di_mon.
   :CHKTABLES:      &m_didm_stg..Stg_prf_stockout, &m_di_mon..stg_prf_stockout_x

proc sql;
alter table &m_didm_stg..stg_prf_stockout
add CHANGE_FLG char(1);
quit;

data &m_didm_stg..stg_prf_stockout;
   set &m_didm_stg..stg_prf_stockout;
   CHANGE_FLG = 'I';
run;

proc sql;
   alter table &m_didm_stg..stg_prf_stockout add NOT NULL(CHANGE_FLG);
quit;

proc sql;
   alter table &m_di_mon..stg_prf_stockout_x
     add CHANGE_FLG char(1);
quit;


:END_CHANGE:
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      STG_PRF_STOCKOUT_FACT_CONSTR
   :DESCRIPTION:    Adding dropped constraints back to PRF_STOCKOUT_FACT
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 15JUL2011
   :SUPPORT:        Gyan Gaurav
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_didm_stg.
   :CHKTABLES:      &m_didm_stg..Stg_prf_stockout, &m_di_mon..stg_prf_stockout_x

   :DOC:  Defect S0757660
   :DOC:  http://sww.sas.com/defects/java/iDefects/WebClient.html?defectid=S0757660
   :DOC:  This data step simply drops all the constraints.
    data &m_didm_stg..stg_prf_stockout;
       set &m_didm_stg..stg_prf_stockout;
    run;

    proc sql;
        alter table &m_didm_stg..STG_PRF_STOCKOUT add NOT NULL (PROD_ID);
        alter table &m_didm_stg..STG_PRF_STOCKOUT add NOT NULL (GEO_ID);
        alter table &m_didm_stg..STG_PRF_STOCKOUT add NOT NULL (START_DT);
        alter table &m_didm_stg..STG_PRF_STOCKOUT add NOT NULL (END_DT);
        alter table &m_didm_stg..stg_prf_stockout add NOT NULL (CHANGE_FLG);
    quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID758581
   :DESCRIPTION:    SIZE PROFILING 3.2 SCHEMA CHANGES PART III
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 13MAY2011
   :SUPPORT:        Fusun Meric
   :FREQUENCY:      ONCE


   proc sql noprint;
      drop table &m_di_data..PRF_SSD_SRC;
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID722108
   :DESCRIPTION:    Remove global setting GEO_HIER_TYPE and PROD_HIER_TYPE
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 12May2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..global_setting

proc sql;
delete from &m_di_data..global_setting where spec_nm = 'GEO_HIER_TYPE';
delete from &m_di_data..global_setting where spec_nm = 'PROD_HIER_TYPE';
quit;


:END_CHANGE:
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      ID758332
   :DESCRIPTION:    Adding revised_budget_amt column to STG_BUDGET table
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 13May2011
   :SUPPORT:        Yogesh Dhuri
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_didm_stg.
   :CHKTABLES:      &m_didm_stg..Stg_budget



proc sql;
ALTER TABLE &m_didm_stg..STG_BUDGET
      ADD REVISED_BUDGET_AMT integer format = NLNUM20.3   INFORMAT=NLNUM20.3;
quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      ID758332_2
   :DESCRIPTION:    Adding revised_budget_amt column to BUDGET table
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 10Aug2011
   :SUPPORT:        Yogesh Dhuri
   :FREQUENCY:      ONCE

   proc sql noprint;
      drop table &m_di_data..BUDGET;
   quit;


:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      SET_IX6_IX7
   :DESCRIPTION:    Set indexes IX6 and IX7 on  PRODUCT_HIER_ASSOC_DM
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 20MAY2011
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   :DOC: Check to see if PROD_HIER_IX7 exists.  If this index exists then all is well.
   :DOC: If IX7 does not exist then check to see if IX6 exists.  Drop if it does.
   :DOC: Recreate PROD_HIER_IX6 and PROD_HIER_IX7 if PROD_HIER_IX7 does not exist.

   proc sql noprint;
       select count(*)
       into :_cnt_idx_ix6
       from sashelp.vindex
       where upcase(libname)=upcase("&m_di_data.")
       and upcase(memname) = "PRODUCT_HIER_ASSOC_DM"
       and upcase(indxname) = "PROD_HIER_IX6"
       ;

       select count(*)
       into :_cnt_idx_ix7
       from sashelp.vindex
       where upcase(libname)=upcase("&m_di_data.")
       and upcase(memname) = "PRODUCT_HIER_ASSOC_DM"
       and upcase(indxname) = "PROD_HIER_IX7"
       ;
   quit;

   %if &_cnt_idx_ix7 = 0 %then
   %do;

       %if &_cnt_idx_ix6 >0 %then
       %do;

           proc sql noprint;

               DROP INDEX PROD_HIER_IX6 FROM &m_di_data..PRODUCT_HIER_ASSOC_DM;

           quit;

       %end;

        proc sql noprint;


           CREATE INDEX PROD_HIER_IX6 ON &m_di_data..PRODUCT_HIER_ASSOC_DM
           (
               PROD_HIER_SK,
               PARENT_PROD_LVL
           )
           ;

           CREATE INDEX PROD_HIER_IX7 ON &m_di_data..PRODUCT_HIER_ASSOC_DM
           (
                PROD_HIER_ASSOC_CD,
                PARENT_PROD_HIER_SK,
                PROD_LVL
           )
           ;
       quit;

   %end;



:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID757468
   :DESCRIPTION:    Add global setting UPDATE_COMP_PRICES_AFTER_RECLASS
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 20May2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..global_setting

proc sql;
DELETE FROM &m_di_data..global_setting WHERE SPEC_NM = 'UPDATE_COMP_PRICES_AFTER_RECLASS';
INSERT INTO &m_di_data..global_setting(SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
   VALUES  ('UPDATE_COMP_PRICES_AFTER_RECLASS','RPO','0',
   'Specifies whether to adjust competitor prices after store reclassification.');
quit;


:END_CHANGE:
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID761590
   :DESCRIPTION:    Add notifications to field_lookup_values
   :VERSION:        D3MICM52,M2MI42
   :DATE_OF_CHANGE: 24May2011
   :SUPPORT:        Jeff Shaughnessy
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..field_lookup_values

proc sql;

    DELETE FROM &m_di_data..FIELD_LOOKUP_VALUES
    WHERE  TABLE_NAME="NOTIFICATION"
    and    FIELD_NM="MESSAGE_SK"
    and    FIELD_VALUE in ("-1","-2","-3","-4","99991","99992","99993","3","4","5","6","7","8","9","10","11","12","13","14","15")
    ;

insert into &m_di_data..FIELD_LOOKUP_VALUES (TABLE_NAME,     FIELD_NM,     FIELD_VALUE, FIELD_VALUE_NM, FIELD_VALUE_DESC, FIELD_DATATYPE)
         values ("NOTIFICATION", "MESSAGE_SK", "6",           "Promotion Recommended By The System", "", "STRING");
insert into &m_di_data..FIELD_LOOKUP_VALUES (TABLE_NAME,     FIELD_NM,     FIELD_VALUE, FIELD_VALUE_NM, FIELD_VALUE_DESC, FIELD_DATATYPE)
         values ("NOTIFICATION", "MESSAGE_SK", "5",           "Promotion Imported", "", "STRING");
insert into &m_di_data..FIELD_LOOKUP_VALUES (TABLE_NAME,     FIELD_NM,     FIELD_VALUE, FIELD_VALUE_NM, FIELD_VALUE_DESC, FIELD_DATATYPE)
         values ("NOTIFICATION", "MESSAGE_SK", "15",          "Promotion Updated", "", "STRING");
insert into &m_di_data..FIELD_LOOKUP_VALUES (TABLE_NAME,     FIELD_NM,     FIELD_VALUE, FIELD_VALUE_NM, FIELD_VALUE_DESC, FIELD_DATATYPE)
         values ("NOTIFICATION", "MESSAGE_SK", "3",           "Promotion With Vendor Deal Imported", "", "STRING");
insert into &m_di_data..FIELD_LOOKUP_VALUES (TABLE_NAME,     FIELD_NM,     FIELD_VALUE, FIELD_VALUE_NM, FIELD_VALUE_DESC, FIELD_DATATYPE)
         values ("NOTIFICATION", "MESSAGE_SK", "4",           "Promotion With Vendor Deal Updated", "", "STRING");
insert into &m_di_data..FIELD_LOOKUP_VALUES (TABLE_NAME,     FIELD_NM,     FIELD_VALUE, FIELD_VALUE_NM, FIELD_VALUE_DESC, FIELD_DATATYPE)
         values ("NOTIFICATION", "MESSAGE_SK", "11",          "Calendar Imported", "", "STRING");
insert into &m_di_data..FIELD_LOOKUP_VALUES (TABLE_NAME,     FIELD_NM,     FIELD_VALUE, FIELD_VALUE_NM, FIELD_VALUE_DESC, FIELD_DATATYPE)
         values ("NOTIFICATION", "MESSAGE_SK", "7",           "Calendar Updated", "", "STRING");
insert into &m_di_data..FIELD_LOOKUP_VALUES (TABLE_NAME,     FIELD_NM,     FIELD_VALUE, FIELD_VALUE_NM, FIELD_VALUE_DESC, FIELD_DATATYPE)
         values ("NOTIFICATION", "MESSAGE_SK", "12",           "Campaign Imported", "", "STRING");
insert into &m_di_data..FIELD_LOOKUP_VALUES (TABLE_NAME,     FIELD_NM,     FIELD_VALUE, FIELD_VALUE_NM, FIELD_VALUE_DESC, FIELD_DATATYPE)
         values ("NOTIFICATION", "MESSAGE_SK", "8",           "Campaign Updated", "", "STRING");
insert into &m_di_data..FIELD_LOOKUP_VALUES (TABLE_NAME,     FIELD_NM,     FIELD_VALUE, FIELD_VALUE_NM, FIELD_VALUE_DESC, FIELD_DATATYPE)
         values ("NOTIFICATION", "MESSAGE_SK", "13",           "Theme Imported", "", "STRING");
insert into &m_di_data..FIELD_LOOKUP_VALUES (TABLE_NAME,     FIELD_NM,     FIELD_VALUE, FIELD_VALUE_NM, FIELD_VALUE_DESC, FIELD_DATATYPE)
         values ("NOTIFICATION", "MESSAGE_SK", "9",           "Theme Updated", "", "STRING");
insert into &m_di_data..FIELD_LOOKUP_VALUES (TABLE_NAME,     FIELD_NM,     FIELD_VALUE, FIELD_VALUE_NM, FIELD_VALUE_DESC, FIELD_DATATYPE)
         values ("NOTIFICATION", "MESSAGE_SK", "14",           "Event Imported", "", "STRING");
insert into &m_di_data..FIELD_LOOKUP_VALUES (TABLE_NAME,     FIELD_NM,     FIELD_VALUE, FIELD_VALUE_NM, FIELD_VALUE_DESC, FIELD_DATATYPE)
         values ("NOTIFICATION", "MESSAGE_SK", "10",           "Event Updated", "", "STRING");
insert into &m_di_data..FIELD_LOOKUP_VALUES (TABLE_NAME,     FIELD_NM,     FIELD_VALUE, FIELD_VALUE_NM, FIELD_VALUE_DESC, FIELD_DATATYPE)
         values ("NOTIFICATION", "MESSAGE_SK", "99991",       "Price Changed", "", "STRING");
insert into &m_di_data..FIELD_LOOKUP_VALUES (TABLE_NAME,     FIELD_NM,     FIELD_VALUE, FIELD_VALUE_NM, FIELD_VALUE_DESC, FIELD_DATATYPE)
         values ("NOTIFICATION", "MESSAGE_SK", "99992",       "Cost Changed", "", "STRING");
insert into &m_di_data..FIELD_LOOKUP_VALUES (TABLE_NAME,     FIELD_NM,     FIELD_VALUE, FIELD_VALUE_NM, FIELD_VALUE_DESC, FIELD_DATATYPE)
         values ("NOTIFICATION", "MESSAGE_SK", "99993",       "Product Changed", "", "STRING");
insert into &m_di_data..FIELD_LOOKUP_VALUES (TABLE_NAME,     FIELD_NM,     FIELD_VALUE, FIELD_VALUE_NM, FIELD_VALUE_DESC, FIELD_DATATYPE)
         values ("NOTIFICATION", "MESSAGE_SK", "-1",          "Spots Assigned", "", "STRING");
insert into &m_di_data..FIELD_LOOKUP_VALUES (TABLE_NAME,     FIELD_NM,     FIELD_VALUE, FIELD_VALUE_NM, FIELD_VALUE_DESC, FIELD_DATATYPE)
         values ("NOTIFICATION", "MESSAGE_SK", "-2",          "Spots Unassigned", "", "STRING");
insert into &m_di_data..FIELD_LOOKUP_VALUES (TABLE_NAME,     FIELD_NM,     FIELD_VALUE, FIELD_VALUE_NM, FIELD_VALUE_DESC, FIELD_DATATYPE)
         values ("NOTIFICATION", "MESSAGE_SK", "-3",          "Status Changed", "", "STRING");
insert into &m_di_data..FIELD_LOOKUP_VALUES (TABLE_NAME,     FIELD_NM,     FIELD_VALUE, FIELD_VALUE_NM, FIELD_VALUE_DESC, FIELD_DATATYPE)
         values ("NOTIFICATION", "MESSAGE_SK", "-4",          "Promotion Unapproved", "", "STRING");
quit;

:END_CHANGE:
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID757661
   :DESCRIPTION:    NF : Reload hiostory feature in PRF_GEO_PROD_STATUS
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 25MAY2011
   :SUPPORT:        Rhuta Kulkarni
   :FREQUENCY:      ONCE

   proc sql noprint;
       DELETE FROM &m_di_mon..job_param where jobname = 'LOAD_STG2DM_PRF_GEO_PROD_STATUS'
                                          and param_name='etlp_prf_gps_reload_data';

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("LOAD_STG2DM_PRF_GEO_PROD_STATUS", "etlp_prf_gps_reload_data", "0", '"0"')
       ;

       DELETE FROM &m_di_mon..job_param where jobname = 'LOAD_STG2DM_PRF_GEO_PROD_STATUS'
                                          and param_name = 'etlp_prf_gps_reload_hist_frm_dt';

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("LOAD_STG2DM_PRF_GEO_PROD_STATUS", "etlp_prf_gps_reload_hist_frm_dt", "0", '"0"')
       ;
    quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID758332_1
   :DESCRIPTION:    Adding revised_budget_amt column to STG_BUDGET_X table
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 25May2011
   :SUPPORT:        Yogesh Dhuri
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon.
   :CHKTABLES:      &m_di_mon..STG_BUDGET_X


proc sql;
ALTER TABLE &m_di_mon..STG_BUDGET_X
      ADD REVISED_BUDGET_AMT integer format = NLNUM12.2   INFORMAT=NLNUM12.2;
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      PARAM_PROMO_EXPORT
   :DESCRIPTION:    Add parameter for length of custom attributes for Vehicle Export
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 01JUN2011
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_mon..job_param
   :DOC: Add parameter for length of custom attributes for Vehicle Export
   :DOC: Add parameters to specify level for prod and geo
   :DOC: Prod and geo at the level specified are exported

   proc sql noprint;
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_VEHICLE' and param_name='etlp_custom_attr_length';
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_VEHICLE' and param_name='etlp_get_prod_at_level';
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_VEHICLE' and param_name='etlp_get_geo_at_level';
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_PRICE'   and param_name='etlp_get_prod_at_level';
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_PRICE'   and param_name='etlp_get_geo_at_level';

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_RPP_VEHICLE", "etlp_custom_attr_length","2000",'"2000"')
       ;

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_RPP_VEHICLE", "etlp_get_prod_at_level","",'""')
       ;

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_RPP_VEHICLE", "etlp_get_geo_at_level","",'""')
       ;

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_RPP_PRICE", "etlp_get_prod_at_level","",'""')
       ;

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_RPP_PRICE", "etlp_get_geo_at_level","",'""')
       ;

   quit;



:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID747674
   :DESCRIPTION:    Add global setting UNIFORM_COST_METHOD
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 02JUN2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..global_setting

proc sql;
DELETE FROM &m_di_data..global_setting WHERE SPEC_NM = 'UNIFORM_COST_METHOD';
INSERT INTO &m_di_data..global_setting(SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
   VALUES  ('UNIFORM_COST_METHOD','RPO','FREQUENCY',
   'Specifies the method to select a common cost when costs vary below the uniform pricing level.');
quit;


:END_CHANGE:
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID765727
   :DESCRIPTION:    New global setting AUTO_RECOMMEND_ALERT_PRICES
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 08JUN2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE


   proc sql;

   DELETE FROM &m_di_data..GLOBAL_SETTING
   WHERE SPEC_NM ='AUTO_RECOMMEND_ALERT_PRICES' and APP = 'RPO';

   INSERT INTO &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) VALUES
   ('AUTO_RECOMMEND_ALERT_PRICES','RPO','0',
   'Specifies whether the system automatically recommends new prices for incoming cost and competitive price alerts.');

   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ADD_WEEKDAY_CORRECT_FACT
   :DESCRIPTION:    Add WEEKDAY_CORRECT_FACT table to support DOW profiles
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 13JUN2011
   :SUPPORT:        Yue Li
   :FREQUENCY:      ONCE

   ***********************************************************************************************;

    data &m_di_data..WEEKDAY_CORRECT_FACT;
       attrib GEO_HIER_SK          length=4                                      ;
       attrib DAY_OF_WEEK          length=4                                      ;
       attrib CORRECTION_FACTOR    length=8 FORMAT=NLNUM12.2  INFORMAT=NLNUM12.2 ;
    stop; run;

    proc sql;
    alter table &m_di_data..WEEKDAY_CORRECT_FACT add CONSTRAINT PRIM_KEY PRIMARY KEY (GEO_HIER_SK, DAY_OF_WEEK);
    quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID739120
   :DESCRIPTION:    Check the sort order for all promotion_fact and promotion_fact_future partitions
   :VERSION:        D3MICM52, M1TKMI43
   :DATE_OF_CHANGE: 15JUN2011
   :SUPPORT:        Gyan Gaurav
   :FREQUENCY:      ONCE

   ***********************************************************************************************;

 %macro di_etl_chk_promo_fact_part;

   /* get the path for di_data library. */

   proc sql noprint;
   select path into :data_lib_path
     from sashelp.vlibnam
    where upcase(libname) = upcase("&m_di_data")
      and level in (0,1);
   quit;

   /* getting the  values of all partitions */

   %local etl_partition_level part_sk;

   %di_util_global_setting_spec(spec_nm=PROD_PARTITION_LVL,
                      app=ALL,
                      _spec_value=etl_partition_level,
                      optional=1);

   proc sql;
     create table work.prod_sk_part as
     select distinct(PROD_HIER_SK) as part_sk
       from &m_di_data..PRODUCT_HIER_ASSOC_DM
      where PROD_HIER_ASSOC_CD =1
        and PROD_LVL = &etl_partition_level;
   quit;

   proc sql;
      insert into work.prod_sk_part values (0);
   quit;

   /* Setting up library from which partitions will be moved*/

   %let number_of_part = %di_util_nobs(prod_sk_part);
   %put number of partitions  = &number_of_part;

   %if &number_of_part > 0 %then %do;

      %do loop = 1 %to &number_of_part;
         data sel_row;
            point_var = input("&loop",best12.);
            set prod_sk_part point = point_var;
            call symputx('partition_nm',part_sk, 'l');
            output;
            stop;
         run;

         %put Partition_nm = &partition_nm;

         %let trg_path = %di_util_create_folder(relative_dir=1/&partition_nm,parent_dir=&data_lib_path);
         libname trg_lib "&trg_path";

         proc datasets lib = work nolist nowarn memtype = (data view);
            delete etl_cons1 temp etl_cons2;
         quit;

         %if %sysfunc(exist(trg_lib.promotion_fact)) and %di_util_nobs(trg_lib.promotion_fact) > 0 %then %do;

            proc contents nodetails noprint data=trg_lib.promotion_fact
               out=work.etl_cons1 out2=etl_cons2;
            run;

            %let const_flg = 0;
            %if %di_util_nobs(etl_cons2) = 0 %then %do;
               %let const_flg = 1;
            %end;

            data temp(keep = name sorted sortedby);
               set work.etl_cons1;
               retain cnt 0;
               if      (name = 'PROD_HIER_SK' and sorted = 1 and sortedby = 1) then flg = 1;
               else if (name = 'GEO_HIER_SK' and sorted = 1 and sortedby = 2)then flg = 1;
               else if (name = 'VEHICLE_SK' and sorted = 1 and sortedby = 3)then flg = 1;
               else if (name = 'CONDITION_TYPE' and sorted = 1 and sortedby = 4)then flg = 1;
               else if (name = 'RANGE_START_DISC_PCT' and sorted = 1 and sortedby = 5)then flg = 1;
               else if (name = 'RANGE_END_DISC_PCT' and sorted = 1 and sortedby = 6)then flg = 1;
               else if (name = 'START_DT' and sorted = 1 and sortedby = 7)then flg = 1;
               else if (name = 'END_DT' and sorted = 1 and sortedby = .)then flg = 1;
               else if (name = 'VEHICLE_CATEGORY_SK' and sorted = 1 and sortedby = .)then flg = 1;
               else if (name = 'PRICE_VALUE' and sorted = 1 and sortedby = .) then flg = 1;

               cnt = cnt+flg;
            if cnt = . then cnt = 0;
               call symputx('sort_flg1',cnt,'l');

            run;

            %put sort_flg1 = &sort_flg1;

            %if &sort_flg1 = 10 %then %do;
               %put Data for partition &partition_nm already sorted. No need to resort.;
            %end;

            %else %do;/*&sort_flg1 = 10*/
            %if &const_flg = 0 %then %do;
               %etl_drop(trg_lib.promotion_fact,ic);
               %etl_drop(trg_lib.promotion_fact,index);
               %end;

               proc sort data = trg_lib.promotion_fact;
                  by prod_hier_sk geo_hier_sk vehicle_sk condition_type range_start_disc_pct range_end_disc_pct start_dt ;
               quit;
               %if &const_flg = 0 %then %do;
               data _null_;
                  set work.etl_cons2 end=eof;
                  if _n_ eq 1 then do;
                     call execute("proc datasets lib = trg_lib nolist; modify promotion_fact;");
                  end;
                  call execute("      " || recreate);
                  if eof then call execute("quit;");
               run;
            %end;
            %end;/*&sort_flg1 = 10*/
         %end;/*%sysfunc(exist(trg_lib.promotion_fact)) and %di_util_nobs(trg_lib.promotion_fact) > 0*/
         %else %do;
            %put Either Promotion Fact in Partition &partition_nm does not exist or have no data;
         %end;

         /*promotion_fact_future*/

         proc datasets lib = work nolist nowarn memtype = (data view);
            delete etl_cons1 temp2 etl_cons2;
         quit;

         %if %sysfunc( exist(trg_lib.promotion_fact_future)) and %di_util_nobs(trg_lib.promotion_fact_future) > 0 %then %do;

            proc contents nodetails noprint data=trg_lib.promotion_fact_future
               out=work.etl_cons1 out2=work.etl_cons2;
            run;

            %let const_flg = 0;
            %if %di_util_nobs(etl_cons2) = 0 %then %do;
               %let const_flg = 1;
            %end;

            data temp2(keep = name sorted sortedby);
               set etl_cons1;
               retain cnt 0;
               if      (name = 'PROD_HIER_SK' and sorted = 1 and sortedby = 1) then flg = 1;
               else if (name = 'GEO_HIER_SK' and sorted = 1 and sortedby = 2)then flg = 1;
               else if (name = 'VEHICLE_SK' and sorted = 1 and sortedby = 3)then flg = 1;
               else if (name = 'CONDITION_TYPE' and sorted = 1 and sortedby = 4)then flg = 1;
               else if (name = 'RANGE_START_DISC_PCT' and sorted = 1 and sortedby = 5)then flg = 1;
               else if (name = 'RANGE_END_DISC_PCT' and sorted = 1 and sortedby = 6)then flg = 1;
               else if (name = 'START_DT' and sorted = 1 and sortedby = 7)then flg = 1;
               else if (name = 'END_DT' and sorted = 1 and sortedby = .)then flg = 1;
               else if (name = 'VEHICLE_CATEGORY_SK' and sorted = 1 and sortedby = .)then flg = 1;
               else if (name = 'PRICE_VALUE' and sorted = 1 and sortedby = .) then flg = 1;

               cnt = cnt+flg;
            if cnt = . then cnt = 0;
               call symputx('sort_flg2',cnt,'l');
             run;

            %put sort_flg = &sort_flg2;

            %if &sort_flg2 = 10 %then %do;
               %put Data for partition &partition_nm already sorted. No need to resort.;
            %end;

            %else %do;
            %if &const_flg = 0 %then %do;
               %etl_drop(trg_lib.promotion_fact_future,ic);
               %etl_drop(trg_lib.promotion_fact_future,index);
            %end;

               proc sort data = trg_lib.promotion_fact_future;
                  by prod_hier_sk geo_hier_sk vehicle_sk condition_type range_start_disc_pct range_end_disc_pct start_dt ;
               quit;

            %if &const_flg = 0 %then %do;
               data _null_;
                  set work.etl_cons2 end=eof;
                  if _n_ eq 1 then do;
                     call execute("proc datasets lib = trg_lib nolist; modify promotion_fact_future;");
                  end;
                  call execute("      " || recreate);
                  if eof then call execute("quit;");
               run;
            %end;

               %end;/*&sort_flg2 = 10*/
            %end;/*%sysfunc( exist(trg_lib.promotion_fact_future)) and %di_util_nobs(trg_lib.promotion_fact_future) > 0*/
         %else %do;
            %put Either Promotion Fact Future in Partition &partition_nm does not exist or have no data;
         %end;
      %end;/*%do loop = 1 %to &number_of_part*/
   %end;/*if &number_of_part > 0*/

%mend ;

%di_etl_chk_promo_fact_part;


:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID761590_2
   :DESCRIPTION:    Target metrics enhancements
   :VERSION:        D3MICM52,M2MI42
   :DATE_OF_CHANGE: 15JUN2011
   :SUPPORT:        Ken Sizer
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..target_metrics, &m_di_data..field_lookup_values, &m_di_data..reference_values

   :DOC:  The insert statements should be done for the seed as well as the alter

   :DOC: 1) Add KPI_TYPE rows to FIELD_LOOKUP_VALUES
   :DOC: 2) Add PERCENT data type to REFERENCE_VALUES
   :DOC: 3) Remove deprecated KPI definitions from REFERENCE_VALUES
   :DOC:      (for consistency, we will use one set of KPI definitions (in FIELD_LOOKUP_VALUES)
   :DOC: 4) TARGET_METRICS table
   :DOC: 4.1) Add TARGET_METRICS_KPI column
   :DOC: 4.2) Move values from TARGET_METRICS_TYPE to TARGET_METRICS_KPI
   :DOC: 4.3) For all rows, populate the TARGET_METRICS_TYPE column with 6 (KPI Type "Target")
   :DOC: 4.4) Expand primary key to include TARGET_METRICS_KPI

proc sql;
   DELETE FROM &m_di_data..field_lookup_values WHERE (table_name='ALL' AND field_nm='KPI_TYPE');
   INSERT INTO &m_di_data..field_lookup_values (table_name,field_nm,field_value,field_value_nm,field_value_desc,field_datatype)
   VALUES ('ALL','KPI_TYPE','1','actual', 'current year actual', 'INTEGER');
   INSERT INTO &m_di_data..field_lookup_values (table_name,field_nm,field_value,field_value_nm,field_value_desc,field_datatype)
   VALUES ('ALL','KPI_TYPE','2','actual_ly', 'last year actual', 'INTEGER');
   INSERT INTO &m_di_data..field_lookup_values (table_name,field_nm,field_value,field_value_nm,field_value_desc,field_datatype)
   VALUES ('ALL','KPI_TYPE','3','baseline', 'baseline', 'INTEGER');
   INSERT INTO &m_di_data..field_lookup_values (table_name,field_nm,field_value,field_value_nm,field_value_desc,field_datatype)
   VALUES ('ALL','KPI_TYPE','4','forecast', 'forecast considering approved plans only', 'INTEGER');
   INSERT INTO &m_di_data..field_lookup_values (table_name,field_nm,field_value,field_value_nm,field_value_desc,field_datatype)
   VALUES ('ALL','KPI_TYPE','5','forecast_ta', 'forecast considering tentatively approved plans', 'INTEGER');
   INSERT INTO &m_di_data..field_lookup_values (table_name,field_nm,field_value,field_value_nm,field_value_desc,field_datatype)
   VALUES ('ALL','KPI_TYPE','6','target', 'budget (provided by customer)', 'INTEGER');
quit;

proc sql;
   DELETE FROM &m_di_data..reference_values WHERE field_nm='ATTR_TYPE';
   INSERT INTO &m_di_data..reference_values (field_nm,field_value,field_short_desc)
   VALUES ('ATTR_TYPE','1','Attribute is DECIMAL');
   INSERT INTO &m_di_data..reference_values (field_nm,field_value,field_short_desc)
   VALUES ('ATTR_TYPE','2','Attribute is STRING');
   INSERT INTO &m_di_data..reference_values (field_nm,field_value,field_short_desc)
   VALUES ('ATTR_TYPE','3','Attribute is INTEGER');
   INSERT INTO &m_di_data..reference_values (field_nm,field_value,field_short_desc)
   VALUES ('ATTR_TYPE','4','Attribute is BOOLEAN (0 or 1)');
   INSERT INTO &m_di_data..reference_values (field_nm,field_value,field_short_desc)
   VALUES ('ATTR_TYPE','5','Attribute is DATE as ddMMMyyyy');
   INSERT INTO &m_di_data..reference_values (field_nm,field_value,field_short_desc)
   VALUES ('ATTR_TYPE','6','Attribute is DATETIME as ddMMMyyyy:HH:mm:ss');
   INSERT INTO &m_di_data..reference_values (field_nm,field_value,field_short_desc)
   VALUES ('ATTR_TYPE','7','Attribute is PERCENT');
quit;

proc sql;
   DELETE FROM &m_di_data..reference_values WHERE field_nm='TARGET_METRICS_TYPE';
quit;

data &m_di_data..target_metrics;
   set &m_di_data..target_metrics;
   attrib TARGET_METRICS_KPI length=4;
   target_metrics_kpi = target_metrics_type;
   target_metrics_type = 6;
run;

proc sql;
   ALTER TABLE &m_di_data..target_metrics ADD CONSTRAINT PRIM_KEY PRIMARY KEY
      (geo_hier_sk, prod_hier_sk, start_dt, end_dt, target_metrics_kpi, target_metrics_type);
quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID749250
   :DESCRIPTION:    NF : Reload hiostory feature in GEO_PROD
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 16JUN2011
   :SUPPORT:        Rhuta Kulkarni
   :FREQUENCY:      ONCE

   proc sql noprint;
       DELETE FROM &m_di_mon..job_param where upcase(jobname) = 'LOAD_STG2DM_GEO_PROD'
                                          and upcase(param_name) = 'ETLP_RELOAD_HISTORY_DATA';

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("LOAD_STG2DM_GEO_PROD", "etlp_reload_history_data", "0", '"0"')
       ;

       DELETE FROM &m_di_mon..job_param where upcase(jobname) = 'LOAD_STG2DM_GEO_PROD'
                                          and upcase(param_name) = 'ETLP_RELOAD_HISTORY_FROM_DT';

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("LOAD_STG2DM_GEO_PROD", "etlp_reload_history_from_dt", "0", '"0"')
       ;
    quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID768005
   :DESCRIPTION:    Addition of custom attributes for RPP_Plan_Prod_Assgmnt
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 16JUN2011
   :SUPPORT:        Yogesh Dhuri
   :CHKLIB:         &m_didm_stg.
   :CHKTABLES:      &m_didm_stg..STG_CUSTOM_ATTR
   :FREQUENCY:      ONCE

   proc sql noprint;
       alter table &m_didm_stg..STG_CUSTOM_ATTR ADD PROD_ID CHAR(32);
   quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID763584
   :DESCRIPTION:    Adding a Parameter in DI_MON.ETL_SYS_PARAM - RPO_ALERTS_RUN_DATE_TIME
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 17JUN2011
   :SUPPORT:        Avinash Khairnar
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_mon..etl_sys_param
   :DOC:            Storing Alert run date to use it during alert chk violation

   proc sql noprint;
       delete from &m_di_mon..etl_sys_param
              where jobname="RPO_ALERTS"
              and   param_name="RPO_ALERTS_RUN_DATE_TIME"
              ;
       Insert into &m_di_mon..etl_sys_param
              (jobname, param_name, param_value, default_func)
       values("RPO_ALERTS", "RPO_ALERTS_RUN_DATE_TIME"," ", '" "');
   quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID768006
   :DESCRIPTION:    Add plan setting allow markdown during promo to stage
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 17JUN2011
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_didm_stg..STG_MDO_IMPORT_PLAN

   proc sql;
      ALTER TABLE &m_didm_stg..STG_MDO_IMPORT_PLAN ADD ALLOW_MARKDN_DURING_PROMO_CD num 4;
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID768006_1
   :DESCRIPTION:    Add plan setting allow markdown during promo to MON
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 17JUN2011
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_mon..STG_MDO_IMPORT_PLAN_X

   proc sql;
      ALTER TABLE &m_di_mon..STG_MDO_IMPORT_PLAN_X ADD ALLOW_MARKDN_DURING_PROMO_CD num 4;
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      ID768005_1
   :DESCRIPTION:    Addition of custom attributes for RPP_Plan_Prod_Assgmnt
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 20JUN2011
   :SUPPORT:        Yogesh Dhuri
   :CHKLIB:         &m_di_mon.
   :CHKTABLES:      &m_di_mon..STG_CUSTOM_ATTR_X
   :FREQUENCY:      ONCE

   proc sql noprint;
       alter table &m_di_mon..STG_CUSTOM_ATTR_X ADD PROD_ID CHAR(32);
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID763610
   :DESCRIPTION:    Add active_plan_id column in stg_rpp_plan
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 22JUN2011
   :SUPPORT:        Sangeeta Rokde
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_didm_stg
   :DOC:            add a new column viz. active_plan_id in didm_stg.stg_rpp_plan table

   %let stageExists = %sysfunc(libref(DIDM_Stg));

      %if (&stageExists = 0) %then
      %do;

         %if %sysfunc(exist(&m_didm_stg..STG_RPP_PLAN)) %then %do;
            proc sql noprint ;
               alter table &m_didm_stg..STG_RPP_PLAN
               add ACTIVE_PLAN_ID char(32);
            quit;
         %end;

      %end;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID725863
   :DESCRIPTION:    Add parameter 'FULL_REFRESH' in DI_MON.JOB_PARAM for Load_STG2DM_Rpp_plan_vehicle
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 22JUN2011
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon.
   :CHKTABLES:      &m_di_mon..JOB_PARAM
   :DOC:            This feature is provided to reload plan-vehicles via ETL, in case there is
   :DOC:            a need to delete some existing mapping add new ones for existing plans.
   :DOC:            This option will delete all records with matching plan_sk or vehicle_sk
   :DOC:            from stage and Insert valid association in Rpp_plan_vehicle that are present in stage.


      proc sql;
        delete from &m_di_mon..JOB_PARAM
         where upcase(jobname) = "LOAD_STG2DM_RPP_PLAN_VEHICLE" and upcase(PARAM_NAME)="FULL_REFRESH";

        insert into &m_di_mon..JOB_PARAM values("LOAD_STG2DM_RPP_PLAN_VEHICLE", "Full_refresh",'','"0"');
      quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID769767
   :DESCRIPTION:    Add TARGET_METRICS_KPI to DIDM_STG.STG_TARGET_METRICS
   :VERSION:        D3MICM52,M2MI42
   :DATE_OF_CHANGE: 24JUN2011
   :SUPPORT:        Ashish Sharma
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon.
   :CHKTABLES:      &m_didm_stg..stg_target_metrics

   Data &m_di_mon..STG_TARGET_METRICS_X ;
      attrib GEO_ID length=$32;
      attrib PROD_ID length=$32;
      attrib START_DT length=8 format=&m_DTFMT ;
      attrib END_DT length=8 format=&m_DTFMT ;
      attrib TARGET_METRICS_TYPE length=4;
      attrib TARGET_METRICS_VALUE length=8 format=NLNUM12.2 ;
      attrib TARGET_METRICS_KPI length=4;
      attrib ETLS_EXCEPTION_COND length=$170 ;
      attrib ETL_ERROR_JOBRUNTIME length=8 format=DATETIME16. ;
   stop;run;

   data &m_didm_stg..stg_target_metrics;
      set &m_didm_stg..stg_target_metrics;
      attrib TARGET_METRICS_KPI length=4;
   run;

   proc sql;
      alter table &m_didm_stg..STG_TARGET_METRICS add NOT NULL (GEO_ID);
      alter table &m_didm_stg..STG_TARGET_METRICS add NOT NULL (PROD_ID);
      alter table &m_didm_stg..STG_TARGET_METRICS add NOT NULL (START_DT);
      alter table &m_didm_stg..STG_TARGET_METRICS add NOT NULL (END_DT);
      alter table &m_didm_stg..STG_TARGET_METRICS add NOT NULL (TARGET_METRICS_KPI);
      alter table &m_didm_stg..STG_TARGET_METRICS add NOT NULL (TARGET_METRICS_VALUE);
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID769191
   :DESCRIPTION:    New global settings ADJUST_ORDER_QTY_MAX_FLG and ADJUST_ORDER_QTY_MIN_FLG
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 28JUN2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE


   proc sql;

   DELETE FROM &m_di_data..GLOBAL_SETTING
   WHERE SPEC_NM ='ADJUST_ORDER_QTY_MAX_FLG' and APP = 'SZPK';

   INSERT INTO &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) VALUES
   ('ADJUST_ORDER_QTY_MAX_FLG','SZPK','1',
   'Specifies whether to increase the maximum order quantity for the company due to mismatches across deliveries.');

   DELETE FROM &m_di_data..GLOBAL_SETTING
   WHERE SPEC_NM ='ADJUST_ORDER_QTY_MIN_FLG' and APP = 'SZPK';

   INSERT INTO &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) VALUES
   ('ADJUST_ORDER_QTY_MIN_FLG','SZPK','0',
   'Specifies whether to reduce the minimum order quantity for the company due to mismatches across deliveries.');

   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID742102
   :DESCRIPTION:    Adding Not Null constraint to SHOP_DT column in STG_COMP_PRICE table.
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 29JUN2011
   :SUPPORT:        Yogesh Dhuri
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_didm_stg..
   :CHKTABLES:      &m_didm_stg..stg_comp_price

   %di_util_drop_constraint(m_lib=&m_didm_stg., m_table=STG_COMP_PRICE, m_column=%str(SHOP_DT), m_constraint=%str(not null));

   proc sql;
      update &m_didm_stg..STG_COMP_PRICE set SHOP_DT = START_DT
       where SHOP_DT is Null;

      alter table &m_didm_stg..STG_COMP_PRICE add NOT NULL (SHOP_DT);
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID769779
   :DESCRIPTION:    NF:New column START_DT introduced in DEMAND_DISAGG_FACTOR.
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 30JUN2011
   :SUPPORT:        Rhuta Kulkarni
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_data., &m_didm_stg., &m_di_mon.
   :CHKTABLES:      &m_di_data..Demand_disagg_factor, &m_didm_stg..stg_Demand_disagg_factor, &m_di_mon..Stg_demand_disagg_x

   %macro find_start_dt;
      %global apln_dt app_dt;
      %let apln_dt = 0;
      %let app_dt = 0;

      /* Select APP_DATE from GLOBAL_SETTING table */
      proc sql noprint;
        select SPEC_VALUE into : apln_dt
        from &m_di_data..global_setting
        where upcase(SPEC_NM) = "APP_DATE";
      quit;

      %if &apln_dt = %str() %then %do;
        %let app_dt = %sysfunc(today());
      %end;
      %else %do;
        data _null_;
          app_date = input(symget('apln_dt'), mmddyy10.);
          call symputx('app_dt', app_date);
        run;
      %end;
   %mend find_start_dt;

   %find_start_dt;

   %macro di_etl_add_start_dt;
      data Demand_disagg_factor_old;
        set &m_di_data..Demand_disagg_factor;
        attrib START_DT length = 8 FORMAT = &m_DTFMT INFORMAT = &m_DTFMT;
      run;

      data Demand_disagg_factor_old;
        set Demand_disagg_factor_old;
        if START_DT eq . then do;
           START_DT =  "&App_dt";
        end;
      run;

      data &m_di_data..Demand_disagg_factor;
        attrib GEO_HIER_SK      length=4 ;
        attrib PROD_HIER_SK     length=6 ;
        attrib START_DT         length=8      FORMAT=&m_DTFMT      INFORMAT = &m_DTFMT;
        attrib DISAGG_FACTOR    length=8      FORMAT=NLNUM12.4   INFORMAT=NLNUM12.4;
        stop;
      run;

      proc sql;
        alter table &m_di_data..DEMAND_DISAGG_FACTOR add CONSTRAINT PRIM_KEY PRIMARY KEY (GEO_HIER_SK, PROD_HIER_SK, START_DT);
      quit;

      proc append base=&m_di_data..DEMAND_DISAGG_FACTOR
                  data=Demand_disagg_factor_old force;
      quit;

      proc sql;
        drop table Demand_disagg_factor_old;
      quit;

      /* Add START_DT in stg: stg_Demand_disagg_factor */

      proc sql;
        alter table &m_didm_stg..stg_Demand_disagg_factor
        add START_DT num 8 FORMAT= &m_DTFMT INFORMAT = &m_STG_DTINFMT.;
      quit;

      /* Add START_DT in mon: Stg_demand_disagg_x */
      data STG_DEMAND_DISAGG_X_old;
        set &m_di_mon..STG_DEMAND_DISAGG_X;
        attrib START_DT length = 8 format= &m_DTFMT INFORMAT = &m_DTFMT;
      run;

      Data &m_di_mon..STG_DEMAND_DISAGG_X;
        attrib PROD_ID length = $32 ;
        attrib GEO_ID length = $32 ;
        attrib START_DT length = 8 format= &m_DTFMT INFORMAT = &m_DTFMT;
        attrib DISAGG_FACTOR length = 8 format=NLNUM12.2 informat=NLNUM12.2 ;
        attrib ETLS_EXCEPTION_COND length = $125 ;
        attrib ETL_ERROR_JOBRUNTIME length = 8 format = DATETIME16. ;
        stop;
      run;

      /*
      proc sql;
        alter table &m_di_mon..Stg_demand_disagg_x
       add START_DT num 8 FORMAT= &m_DTFMT INFORMAT = &m_DTFMT;
      quit;
      */
      
      proc append base=&m_di_mon..STG_DEMAND_DISAGG_X
                  data=STG_DEMAND_DISAGG_X_old force;
      quit;

      proc sql;
        drop table STG_DEMAND_DISAGG_X_old;
      quit;

   %mend di_etl_add_start_dt;

   %di_etl_add_start_dt;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
:CHANGE_ID:      ID766720_1
:DESCRIPTION:    Dropping tables and settings related to LOAD_STG2DM_HALO_PRODUCTS.
:VERSION:        D3MICM52
:DATE_OF_CHANGE: 05JUL2011
:SUPPORT:        Yogesh Dhuri
:FREQUENCY:      ONCE
:CHKLIB:         &m_di_data., &m_didm_stg., &m_di_mon.
:CHKTABLES:      &m_di_data..HALO_PRODUCTS, &m_didm_stg..STG_HALO_PRODUCTS, &m_di_mon..stg_halo_products_x


   proc sql;
      drop table &m_didm_stg..STG_HALO_PRODUCTS;
   quit;

   proc sql;
      drop table &m_di_mon..stg_halo_products_x;
   quit;

   proc sql;
      delete from &m_di_mon..job_param
      where upcase(trim(left(jobname))) = "LOAD_STG2DM_HALO_PRODUCTS";
   quit;

   proc sql;
      delete from &m_di_mon..etl_sys_param
      where upcase(trim(left(jobname))) = "LOAD_STG2DM_HALO_PRODUCTS";
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID738983_2
   :DESCRIPTION:    Move min_inv_lvl from PRODUCT_DM to GEO_PROD
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 05July2011
   :SUPPORT:        Rhuta Kulkarni
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_didm_stg.
   :CHKTABLES:      &m_didm_stg..STG_PRODUCT_PARENT

   :DOC:            Drop column MIN_INV_LVL from stg_product_parent


   proc sql;
      ALTER TABLE &m_didm_stg..STG_PRODUCT_PARENT
      DROP MIN_INV_LVL;
   quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      ID769767_1
   :DESCRIPTION:    Add TARGET_METRICS_KPI to DIDM_STG.STG_TARGET_METRICS
   :VERSION:        D3MICM52,M2MI42
   :DATE_OF_CHANGE: 5JUL2011
   :SUPPORT:        Ashish Sharma
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_didm_stg.
   :CHKTABLES:      &m_didm_stg..stg_target_metrics


   proc sql;
      alter table &m_didm_stg..STG_TARGET_METRICS add NOT NULL (TARGET_METRICS_TYPE);
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID769780
   :DESCRIPTION:    Table definitions for Price_point_correction
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 6JUL2011
   :SUPPORT:        Gyan Gaurav
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_didm_stg., &m_di_mon.



   data &m_didm_stg..STG_PRICE_POINT_CORRECTION;
      attrib PROD_ID                             length=$32                                          ;
      attrib PRICE_POINT_LOWER                   length=8      FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3 ;
      attrib PRICE_POINT_UPPER                   length=8      FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3 ;
      attrib PRICE_INCREMENT                     length=8      FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3 ;
      attrib ADJUST_PRICE_RANGE                  length=8      FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3 ;
   stop; run;

   proc sql;
      alter table &m_didm_stg..STG_PRICE_POINT_CORRECTION add NOT NULL (PROD_ID);
      alter table &m_didm_stg..STG_PRICE_POINT_CORRECTION add NOT NULL (PRICE_POINT_LOWER);
      alter table &m_didm_stg..STG_PRICE_POINT_CORRECTION add NOT NULL (PRICE_POINT_UPPER);
      alter table &m_didm_stg..STG_PRICE_POINT_CORRECTION add NOT NULL (PRICE_INCREMENT);
      alter table &m_didm_stg..STG_PRICE_POINT_CORRECTION add NOT NULL (ADJUST_PRICE_RANGE);
   quit;



   data &m_di_mon..STG_PRICE_POINT_CORRECTION_X;
      attrib PROD_ID                             length=$32                                          ;
      attrib PROD_HIER_SK                        length=6                                            ;
      attrib PRICE_POINT_LOWER                   length=8      FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3 ;
      attrib PRICE_POINT_UPPER                   length=8      FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3 ;
      attrib PRICE_INCREMENT                     length=8      FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3 ;
      attrib ADJUST_PRICE_RANGE                  length=8      FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3 ;
      attrib ETLS_EXCEPTION_COND length=$250 ;
      attrib ETL_ERROR_JOBRUNTIME length=8 format=&DTTMFMT ;
   stop; run;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      ID740928
   :DESCRIPTION:    PRICE column in STG_COMP_PRICE should be NOT NULL
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 06JUL2011
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_didm_stg.
   :CHKTABLES:      &m_didm_stg..stg_comp_price


   proc sql;
      alter table &m_didm_stg..STG_COMP_PRICE add NOT NULL (PRICE);
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID767063
   :DESCRIPTION:    Add new jobs to tkmi_job_ro for RPO and RPP apps
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 6JUL2011
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE


   proc sql;
   delete from &m_di_data..job where job_id in (13,26,34,35,36,37);
   insert into &m_di_data..job(job_id,job_nm,parent_job_id) values (13,'rpo_alert',-1);
   insert into &m_di_data..job(job_id,job_nm,parent_job_id) values (26,'rpp_alert',-1);
   insert into &m_di_data..job(job_id,job_nm,parent_job_id) values (34,'rpo_price_export',-1);
   insert into &m_di_data..job(job_id,job_nm,parent_job_id) values (35,'rpp_price_export',-1);
   insert into &m_di_data..job(job_id,job_nm,parent_job_id) values (36,'rpp_vehicle_export',-1);
   insert into &m_di_data..job(job_id,job_nm,parent_job_id) values (37,'export_rdm',-1);
   quit;

   proc sort data=&m_di_data..job force;
      by job_id;
   run;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID773648
   :DESCRIPTION:    New global setting REC_PACKS_CONTAIN_ALL_SKUS
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 12JUL2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE


   proc sql;

   DELETE FROM &m_di_data..GLOBAL_SETTING
   WHERE SPEC_NM ='REC_PACKS_CONTAIN_ALL_SKUS' and APP = 'SZPK';

   INSERT INTO &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) VALUES
   ('REC_PACKS_CONTAIN_ALL_SKUS','SZPK','0',
   'Specifies whether recommended packs must include all SKUs in a size set.');

   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      DROP_MODEL_DATA
   :DESCRIPTION:    Drop table MODEL_DATA if it exists
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 02MAY2011
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..model_data

   :DOC:  Defect http://sww.sas.com/defects/java/iDefects/WebClient.html?defectid=S0775178

     proc sql noprint ;
        drop table &m_di_data..model_data;
     quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ADD_COL_COPIED_FLG
   :DESCRIPTION:    SIZE PROFILING 3.2 SCHEMA CHANGES PART IV
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 13JUL2011
   :SUPPORT:        Yu-wang Wang
   :FREQUENCY:      ONCE

   :DOC:   S0761840

   proc sql noprint;
      alter table &m_di_data..SIZESET add COPIED_FLG NUM 4;
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      CREATE_DECOMP_TABLES_2
   :DESCRIPTION:    Create tables for benefit tracking report
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 13SEP2011
   :SUPPORT:        Arin Chaudhuri
   :FREQUENCY:      ONCE

   :DOC:   http://rnd.sas.com/rsd/revopt52/rpo/Shared%20Documents/Benefit%20tracking%20report%20example%20032511.xls
   :DOC:   http://sww.sas.com/defects/java/iDefects/WebClient.html?defectid=S0769807

   data &m_di_data..REPORT_DECOMP;
       attrib GEO_HIER_SK                         length=4                                            ;
       attrib PROD_HIER_SK                        length=6                                            ;
       attrib DATE_SK                             length=4                                            ;
       attrib SALES_PREV_PRICE                    length=8      FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3 ;
       attrib ACTUAL_SALES                        length=8      FORMAT=NLNUM12.2   INFORMAT=NLNUM12.2 ;
       attrib BASE_UNITS                          length=8      FORMAT=NLNUM12.2   INFORMAT=NLNUM12.2 ;
       attrib PREV_PRICE_BASE_UNITS               length=8      FORMAT=NLNUM12.2   INFORMAT=NLNUM12.2 ;
       attrib OTHER_UNITS                         length=8      FORMAT=NLNUM12.2   INFORMAT=NLNUM12.2 ;
       attrib PRICE_UNITS                         length=8      FORMAT=NLNUM12.2   INFORMAT=NLNUM12.2 ;
       attrib INV_UNITS                           length=8      FORMAT=NLNUM12.2   INFORMAT=NLNUM12.2 ;
   stop; run;

   proc sql;
      CREATE INDEX PROD_HIER_SK ON &m_di_data..REPORT_DECOMP(PROD_HIER_SK);
   quit;


   data &m_di_data..REPORT_DECOMP_PS;
       attrib GEO_HIER_SK                         length=4                                            ;
       attrib PROD_HIER_SK                        length=6                                            ;
       attrib DATE_SK                             length=4                                            ;
       attrib PS_NUM                              length=8      FORMAT=NLNUM12.2   INFORMAT=NLNUM12.2 ;
       attrib PS_UNITS                            length=8      FORMAT=NLNUM12.2   INFORMAT=NLNUM12.2 ;
   stop; run;

   proc sql;
      CREATE INDEX PROD_HIER_SK ON &m_di_data..REPORT_DECOMP_PS(PROD_HIER_SK);
   quit;



:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID771864
   :DESCRIPTION:    Create stage and mon tables for RPP_PLAN_COST_FACT
   :VERSION:        D3MICM52,M2MI42
   :DATE_OF_CHANGE: 19JUL2011
   :SUPPORT:        Gyan Gaurav
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon, &m_didm_stg
   :CHKTABLES:      &m_di_mon..job_param

   :DOC:   http://sww.sas.com/defects/java/iDefects/WebClient.html?defectid=S0771864

   data &m_didm_stg..STG_RPP_PLAN_COST;
      attrib PROD_ID        length=$32                                         ;
      attrib GEO_ID         length=$32                                         ;
      attrib PLAN_ID        length=$32                                         ;
      attrib COST_TYPE      length=8                                           ;
      attrib COST           length=8     FORMAT=NLNUM12.2   INFORMAT=NLNUM12.2 ;
      stop; run;

   proc sql;
      alter table &m_didm_stg..STG_RPP_PLAN_COST add NOT NULL (PROD_ID);
      alter table &m_didm_stg..STG_RPP_PLAN_COST add NOT NULL (GEO_ID);
      alter table &m_didm_stg..STG_RPP_PLAN_COST add NOT NULL (PLAN_ID);
      alter table &m_didm_stg..STG_RPP_PLAN_COST add NOT NULL (COST_TYPE);
      alter table &m_didm_stg..STG_RPP_PLAN_COST add NOT NULL (COST);
   quit;


   data &m_di_mon..STG_RPP_PLAN_COST_X;
      attrib PROD_ID        length=$32                                         ;
      attrib GEO_ID         length=$32                                         ;
      attrib PLAN_ID        length=$32                                         ;
      attrib COST_TYPE      length=8                                           ;
      attrib COST           length=8     FORMAT=NLNUM12.2   INFORMAT=NLNUM12.2 ;
      attrib ETLS_EXCEPTION_COND length=$250 ;
      attrib ETL_ERROR_JOBRUNTIME length=8 format=DATETIME16. ;
   stop; run;

   /*Update DI_MON.JOB_PARAM table*/

   proc sql;
   delete from &m_di_mon..job_param
   where  upcase(trim(left(jobname))) = 'LOAD_STG2DM_RPP_PLAN_COST_FACT'
     and  lowcase(trim(left(param_name))) = 'full_refresh';

   insert into &m_di_mon..job_param values
   ('LOAD_STG2DM_RPP_PLAN_COST_FACT','Full_refresh','','"0"');
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID761590_3
   :DESCRIPTION:    Add Cost type to be used with RPP_PLAN_COST_FACT
   :VERSION:        D3MICM52,M2MI42
   :DATE_OF_CHANGE: 19JUL2011
   :SUPPORT:        Jeff Shaughnessy
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..field_lookup_values

proc sql;
insert into &m_di_data..FIELD_LOOKUP_VALUES (TABLE_NAME,     FIELD_NM,     FIELD_VALUE, FIELD_VALUE_NM, FIELD_VALUE_DESC, FIELD_DATATYPE)
         values ("RPP_PLAN_COST_FACT", "COST_TYPE", "1",           "Invoice", "", "INTEGER");
insert into &m_di_data..FIELD_LOOKUP_VALUES (TABLE_NAME,     FIELD_NM,     FIELD_VALUE, FIELD_VALUE_NM, FIELD_VALUE_DESC, FIELD_DATATYPE)
         values ("RPP_PLAN_COST_FACT", "COST_TYPE", "2",           "Landed", "", "INTEGER");
insert into &m_di_data..FIELD_LOOKUP_VALUES (TABLE_NAME,     FIELD_NM,     FIELD_VALUE, FIELD_VALUE_NM, FIELD_VALUE_DESC, FIELD_DATATYPE)
         values ("RPP_PLAN_COST_FACT", "COST_TYPE", "3",           "Off-Invoice1", "", "INTEGER");
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID771864_2
   :DESCRIPTION:    exception table entry in ETL_SYS_PARAM for RPP_PLAN_COST_FACT
   :VERSION:        D3MICM52,M2MI42
   :DATE_OF_CHANGE: 21JUL2011
   :SUPPORT:        Gyan Gaurav
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon
   :CHKTABLES:      &m_di_mon..etl_sys_param

   proc sql;
     delete from &m_di_mon..etl_sys_param
      where upcase(jobname) = 'LOAD_STG2DM_RPP_PLAN_COST_FACT'
        and lowcase(param_name) = 'etlp_exception_table';

      insert into &m_di_mon..etl_sys_param values
          ('LOAD_STG2DM_RPP_PLAN_COST_FACT','etlp_exception_table','DI_MON.STG_RPP_PLAN_COST_X','"DI_MON.STG_RPP_PLAN_COST_X"');
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID769780_2
   :DESCRIPTION:    exception table entry in ETL_SYS_PARAM for Price_point_correction
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 21JUL2011
   :SUPPORT:        Gyan Gaurav
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon
   :CHKTABLES:      &m_di_mon..etl_sys_param

   proc sql;
     delete from &m_di_mon..etl_sys_param
      where upcase(jobname) = 'LOAD_STG2DM_PRICE_POINT_CORRECTION'
        and lowcase(param_name) = 'etlp_exception_table';

     insert into &m_di_mon..etl_sys_param values
          ('LOAD_STG2DM_PRICE_POINT_CORRECTION','etlp_exception_table','DI_MON.STG_PRICE_POINT_CORRECTION_X','"DI_MON.STG_PRICE_POINT_CORRECTION_X"');
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID773092
   :DESCRIPTION:    Add job parameters to check scope/objective scope and plan products
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 21JUL2011
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon
   :CHKTABLES:      &m_di_mon..job_param

   data temp_job_param;
      attrib jobname length=$80 param_name length=$32 param_value length=$160 default_func length=$160 ;
      jobname='LOAD_STG2DM_RPP_PLAN'; param_name='etlp_find_scope_exception'; param_value='';default_func ='"0"';output;
      jobname='LOAD_STG2DM_RPP_PLAN_PROD_ASGMNT'; param_name='etlp_find_scope_exception'; param_value='';default_func ='"0"';output;
   run;

   data &m_di_mon..job_param;
      set temp_job_param(rename=(param_value=etls_0 default_func=etls_1));

      modify &m_di_mon..job_param key=PRIM_KEY;
      param_value=etls_0 ;
      default_func=etls_1;

      if _iorc_ = 0 then do;
         /* do nothing */
      end;
      else do;
         output;
      end;

      _iorc_ = 0; _error_ = 0;
   run;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID777793
   :DESCRIPTION:    New global setting ALLOW_RPO_PRICE_DURING_PROMO
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 25JUL2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE


   proc sql;

   DELETE FROM &m_di_data..GLOBAL_SETTING
   WHERE SPEC_NM ='ALLOW_RPO_PRICE_DURING_PROMO' and APP = 'RPO';

   INSERT INTO &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) VALUES
   ('ALLOW_RPO_PRICE_DURING_PROMO','RPO','1',
   'Specifies whether to allow a new regular price to take effect during a promotion.');

   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID679163
   :DESCRIPTION:    Delete AUTO_EVAL_OPT_FLG column from DIDM_STG.STG_MDO_IMPORT_PLAN
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 26JUL2011
   :SUPPORT:        Gyan Gaurav
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_didm_stg
   :CHKTABLES:      &m_didm_stg..stg_mdo_import_plan



   proc sql noprint;
      alter table  &m_didm_stg..stg_mdo_import_plan
       drop auto_eval_opt_flg;
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID679163_2
   :DESCRIPTION:    Delete AUTO_EVAL_OPT_FLG column from DI_MON.STG_MDO_IMPORT_PLAN_X
   :VERSION:        D3MICM52, M1TKMI43, D2TKMI42
   :DATE_OF_CHANGE: 26JUL2011
   :SUPPORT:        Gyan Gaurav
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon
   :CHKTABLES:      &m_di_mon..stg_mdo_import_plan_x



   proc sql noprint;
      alter table  &m_di_mon..stg_mdo_import_plan_x
       drop auto_eval_opt_flg;
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID777227
   :DESCRIPTION:    New global settings MAX_INNER_PACK_SIZE and INNER_PACK_LIMIT
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 27JUL2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE


   proc sql;

   DELETE FROM &m_di_data..GLOBAL_SETTING
   WHERE SPEC_NM ='MAX_INNER_PACK_SIZE' and APP = 'SZPK';

   INSERT INTO &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) VALUES
   ('MAX_INNER_PACK_SIZE','SZPK','100',
   'Specifies the maximum number of units that can be included in an inner pack.');

   DELETE FROM &m_di_data..GLOBAL_SETTING
   WHERE SPEC_NM ='INNER_PACK_LIMIT' and APP = 'SZPK';

   INSERT INTO &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) VALUES
   ('INNER_PACK_LIMIT','SZPK','10',
   'Specifies the maximum number of inner packs of a particular size that can be defined in the pack recommendation settings.');

   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID779426
   :DESCRIPTION:    Remove USE_REFERENCE_PRICE and BASELINE_OFFSET global settings
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 31JUL2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE


   proc sql;

   DELETE FROM &m_di_data..GLOBAL_SETTING WHERE SPEC_NM ='BASELINE_OFFSET';
   DELETE FROM &m_di_data..GLOBAL_SETTING WHERE SPEC_NM ='USE_REFERENCE_PRICE';

   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID742165
   :DESCRIPTION:    Replicate ATTRIBUTE table from SAS to RDBMS
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 01AUG2011
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon
   :CHKTABLES:      &m_di_mon..job_param

   proc sql;

      delete from &m_di_mon..job_param
       where jobname ='DI_REPLICATE_MULTIPLE_TABLES' and param_name = 'etlp_src_tab9';

      insert into &m_di_mon..job_param (jobname, param_name, param_value, default_func)
      values ("DI_REPLICATE_MULTIPLE_TABLES", "etlp_src_tab9", "attribute", '"Y"' );

   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID775361
   :DESCRIPTION:    Alter the length of ETLS_EXCEPTION_COND in STG_DIMENSION_LEVELS_X table
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 04AUG2011
   :SUPPORT:        Gyan Gaurav
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon
   :CHKTABLES:      &m_di_mon..stg_dimension_levels_x


   proc sql noprint;
      alter table  &m_di_mon..stg_dimension_levels_x
      modify ETLS_EXCEPTION_COND char(450);
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID770137
   :DESCRIPTION:    Increase PRICE_VALUE_LIST in didm_stg.stg_mdo_import_plan to char(1000)
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 08AUG2011
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_didm_stg
   :CHKTABLES:      &m_didm_stg..stg_mdo_import_plan

   proc sql;
      alter table &m_didm_stg..stg_mdo_import_plan modify PRICE_VALUE_LIST CHAR(1000);
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID770137_1
   :DESCRIPTION:    Increase PRICE_VALUE_LIST in DI_MON.stg_mdo_import_plan_x to char(1000)
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 08AUG2011
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon
   :CHKTABLES:      &m_di_mon..stg_mdo_import_plan_x

   proc sql;
      alter table &m_di_mon..stg_mdo_import_plan_x modify PRICE_VALUE_LIST CHAR(1000);
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      PARAM_FCST_EXPORT3
   :DESCRIPTION:    Add parameter for Forecast Export
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 01JUN2011
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_mon..job_param

   :DOC: Add parameter for length of formats
   :DOC: Add parameters to specify geo-prod table
   :DOC: See defect http://sww.sas.com/defects/java/iDefects/WebClient.html?defectid=S0780102

   proc sql noprint;
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_SALES_FORECAST' and param_name='etlp_geo_id';
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_SALES_FORECAST' and param_name='etlp_prod_id';
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_SALES_FORECAST' and param_name='etlp_units_fmt';
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_SALES_FORECAST' and param_name='etlp_price_fmt';
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_SALES_FORECAST' and param_name='etlp_pct_fmt';
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_SALES_FORECAST' and param_name='etlp_geo_prod_ids_table';
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_SALES_FORECAST' and param_name='etlp_geo_prod_sks_table';
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_SALES_FORECAST' and param_name='etlp_model_group_ids_table';
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_SALES_FORECAST' and param_name='etlp_daily_model';
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_SALES_FORECAST' and param_name='etlp_daily_output';

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_SALES_FORECAST", "etlp_geo_id","",'""')
       ;

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_SALES_FORECAST", "etlp_prod_id","",'""')
       ;

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_SALES_FORECAST", "etlp_units_fmt","FORMAT=NLNUM12.0 INFORMAT=NLNUM12.0",'"FORMAT=NLNUM12.0 INFORMAT=NLNUM12.0"')
       ;

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_SALES_FORECAST", "etlp_price_fmt","FORMAT=NLNUM12.2 INFORMAT=NLNUM12.2",'"FORMAT=NLNUM12.2 INFORMAT=NLNUM12.2"')
       ;

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_SALES_FORECAST", "etlp_pct_fmt","FORMAT=NLNUM12.4 INFORMAT=NLNUM12.4",'"FORMAT=NLNUM12.4 INFORMAT=NLNUM12.4"')
       ;

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_SALES_FORECAST", "etlp_geo_prod_ids_table","",'""')
       ;

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_SALES_FORECAST", "etlp_geo_prod_sks_table","",'""')
       ;

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_SALES_FORECAST", "etlp_daily_model","1",'"1-daily, 0-weekly"')
       ;

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_SALES_FORECAST", "etlp_daily_output","0",'"1-daily, 0-weekly"')
       ;

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_SALES_FORECAST", "etlp_model_group_ids_table","",'""')
       ;

   quit;

       proc sort data=&m_di_mon..job_param;
          by jobname param_name;
       run;



:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      PARAM_FCST_EXPORT2
   :DESCRIPTION:    Add parameter for Forecast Export
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 04MAY2012
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_mon..job_param

   proc sql noprint;

       select count(*) into :m_etlp_model_group_param_cnt
       from &m_di_mon..job_param
       where jobname="DI_EXPORT_SALES_FORECAST"
       AND param_name='etlp_model_group_ids_table'

       ;

   quit;

   /* If no parameter exists for etlp_model_group_ids_table */
   %if ( &m_etlp_model_group_param_cnt<1) %then
   %do;
   %end;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ADD_GEO_PROD_BENEFITS_04
   :DESCRIPTION:    Add GEO_PROD_BENEFITS to support benefits tracking view
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 09AUG2011
   :SUPPORT:        Jason Fox
   :FREQUENCY:      ONCE

   :DOC: http://sww.sas.com/defects/java/iDefects/WebClient.html?defectid=S0749290

   data &m_di_data..GEO_PROD_BENEFITS;
       attrib PROD_HIER_SK                        length=6 ;
       attrib GEO_HIER_SK                         length=4 ;
       attrib DATE_SK                             length=4 ;

       attrib PLANNED_NON_CLRNC_ACT_UNITS         length=8      FORMAT=NLNUM12.2  INFORMAT=NLNUM12.2 ;
       attrib NON_PLANNED_ACT_UNITS               length=8      FORMAT=NLNUM12.2  INFORMAT=NLNUM12.2 ;
       attrib CLEARANCE_ACT_UNITS                 length=8      FORMAT=NLNUM12.2  INFORMAT=NLNUM12.2 ;
       attrib PRICE_PROMO_UNITS                   length=8      FORMAT=NLNUM12.2  INFORMAT=NLNUM12.2 ;
       attrib BASE_UNITS_NEW_REG_PRICE            length=8      FORMAT=NLNUM12.2  INFORMAT=NLNUM12.2 ;
       attrib BASE_UNITS_PREV_REG_PRICE           length=8      FORMAT=NLNUM12.2  INFORMAT=NLNUM12.2 ;

       attrib NON_PLANNED_ACT_AMT                 length=8      FORMAT=NLNUM20.3  INFORMAT=NLNUM20.3 ;
       attrib CLEARANCE_ACT_AMT                   length=8      FORMAT=NLNUM20.3  INFORMAT=NLNUM20.3 ;
       attrib PRICE_PROMO_AMT                     length=8      FORMAT=NLNUM20.3  INFORMAT=NLNUM20.3 ;
       attrib BASE_AMT_NEW_REG_PRICE              length=8      FORMAT=NLNUM20.3  INFORMAT=NLNUM20.3 ;
       attrib TOTAL_AMT_NEW_REG_PRICE             length=8      FORMAT=NLNUM20.3  INFORMAT=NLNUM20.3 ;
       attrib TOTAL_AMT_PREV_REG_PRICE            length=8      FORMAT=NLNUM20.3  INFORMAT=NLNUM20.3 ;

       attrib NON_PLANNED_ACT_MARGIN              length=8      FORMAT=NLNUM20.3  INFORMAT=NLNUM20.3 ;
       attrib CLEARANCE_ACT_MARGIN                length=8      FORMAT=NLNUM20.3  INFORMAT=NLNUM20.3 ;
       attrib PRICE_PROMO_MARGIN                  length=8      FORMAT=NLNUM20.3  INFORMAT=NLNUM20.3 ;
       attrib BASE_MARGIN_NEW_REG_PRICE           length=8      FORMAT=NLNUM20.3  INFORMAT=NLNUM20.3 ;
       attrib TOTAL_MARGIN_NEW_REG_PRICE          length=8      FORMAT=NLNUM20.3  INFORMAT=NLNUM20.3 ;
       attrib TOTAL_MARGIN_PREV_REG_PRICE         length=8      FORMAT=NLNUM20.3  INFORMAT=NLNUM20.3 ;
   stop; run;

   proc sql noprint;
       alter table &m_di_data..GEO_PROD_BENEFITS add CONSTRAINT PRIM_KEY PRIMARY KEY
      (PROD_HIER_SK, GEO_HIER_SK, DATE_SK);
   quit;



   data &m_di_data..GEO_PROD_BENEFITS_PS;
       attrib PROD_HIER_SK                        length=6   ;
       attrib GEO_HIER_SK                         length=4   ;
       attrib DATE_SK                             length=4   ;

       attrib PS_NM                               length=$10 ;
       attrib PS_UNITS                            length=8      FORMAT=NLNUM12.2 INFORMAT=NLNUM12.2 ;
       attrib PS_AMT                              length=8      FORMAT=NLNUM20.3 INFORMAT=NLNUM20.3 ;
       attrib PS_MARGIN                           length=8      FORMAT=NLNUM20.3 INFORMAT=NLNUM20.3 ;

   stop; run;

    proc sql noprint;
        CREATE INDEX GPB_PS_IX1 ON &m_di_data..GEO_PROD_BENEFITS_PS
        (PROD_HIER_SK,GEO_HIER_SK, DATE_SK);
    quit;
:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      RENAME_COL_COPIED_FLG
   :DESCRIPTION:    Rename COPIED_FLG
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 09AUG2011
   :SUPPORT:        Yu-wang Wang
   :FREQUENCY:      ONCE

   :DOC:   http://sww.sas.com/defects/java/iDefects/WebClient.html?defectid=S0782127

    proc datasets lib=&m_di_data. nolist;

        modify  SIZESET;
        rename copied_flg=custom_flg;
    quit;
    run;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID761590_4
   :DESCRIPTION:    Minor correction to Target metrics enhancements
   :VERSION:        D3MICM52,M2MI42
   :DATE_OF_CHANGE: 11AUG2011
   :SUPPORT:        Ken Sizer
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..target_metrics

proc sql;
   ALTER TABLE &m_di_data..target_metrics ADD NOT NULL (TARGET_METRICS_VALUE);
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID782275
   :DESCRIPTION:    Update jobname from ALLJOBS to LOAD_STG2DM_BUDGET for ETLP_BUDGET_TYPE parameter in ETL_SYS_PARAM table
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 12AUG2011
   :SUPPORT:        Yogesh Dhuri
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon.
   :CHKTABLES:      &m_di_mon..ETL_SYS_PARAM

   proc sql;
      delete from &m_di_mon..ETL_SYS_PARAM
      where upcase(jobname) = "ALLJOBS" and upcase(PARAM_NAME)="ETLP_BUDGET_TYPE";

      delete from &m_di_mon..ETL_SYS_PARAM
      where upcase(jobname) = "LOAD_STG2DM_BUDGET" and upcase(PARAM_NAME)="ETLP_BUDGET_TYPE";

      insert into &m_di_mon..ETL_SYS_PARAM values("LOAD_STG2DM_BUDGET", "etlp_budget_type", "2", '"2"');
   quit;

   proc sql noprint;
      alter table  &m_di_mon..STG_BUDGET_X
      modify ETLS_EXCEPTION_COND char(450);
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID785334
   :DESCRIPTION:    Remove option dipcl_mark from MDO Import.
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 19AUG2011
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon.
   :CHKTABLES:      &m_di_mon..ETL_SYS_PARAM

   :DOC: Auto completion of plans is now a post process in batch_opt

   proc sql;
      delete from &m_di_mon..job_param
       where jobname = 'LOAD_STG2DM_MDO_IMPORT_PLAN'
         and param_name = 'etlp_dipcl_mark';
   quit;

   %di_util_purge_deleted_records (&m_di_mon..job_param);

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID785414
   :DESCRIPTION:    New global setting NUM_DAYS_VALID
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 21AUG2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE


   proc sql;

   DELETE FROM &m_di_data..GLOBAL_SETTING
   WHERE SPEC_NM ='NUM_DAYS_VALID' and APP = 'RPP';

   INSERT INTO &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) VALUES
   ('NUM_DAYS_VALID','RPP','7',
   'Defines the number of days in the past the system should consider when populating actual metrics for Promotion Optimization plans.');

   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID785339
   :DESCRIPTION:    DOW Event Profile
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 22AUG2011
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE


    data &m_di_data..DOW_ADJ_FACTOR;
       attrib GEO_HIER_SK           length=4;
       attrib DAY_OF_WEEK           length=4;
       attrib CORRECTION_FACTOR     length=8      FORMAT=NLNUM12.4     INFORMAT=NLNUM12.4 ;
    stop; run;

    data &m_didm_stg..STG_DOW_ADJ_FACTOR;
       attrib GEO_ID                length=$32      ;
       attrib DAY_OF_WEEK           length=4;
       attrib CORRECTION_FACTOR     length=8      FORMAT=NLNUM12.4     INFORMAT=NLNUM12.4 ;
    stop; run;

    proc sql;
       alter table &m_didm_stg..STG_DOW_ADJ_FACTOR add NOT NULL (GEO_ID);
       alter table &m_didm_stg..STG_DOW_ADJ_FACTOR add NOT NULL (DAY_OF_WEEK);
       alter table &m_didm_stg..STG_DOW_ADJ_FACTOR add NOT NULL (CORRECTION_FACTOR);
    quit;


    data &m_di_mon..STG_DOW_ADJ_FACTOR_X ;
       attrib GEO_ID                length=$32      ;
       attrib GEO_HIER_SK           length=4;
       attrib DAY_OF_WEEK           length=4;
       attrib CORRECTION_FACTOR     length=8      FORMAT=NLNUM12.4     INFORMAT=NLNUM12.4 ;
       attrib ETLS_EXCEPTION_COND   length=$170 ;
       attrib ETL_ERROR_JOBRUNTIME length=8 format=DATETIME16. ;
    stop;run;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID785339_1
   :DESCRIPTION:    DOW Event Profile
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 08SEP2011
   :SUPPORT:        Rhuta Kulkarni
   :FREQUENCY:      ONCE


    proc sql;
       alter table &m_di_data..DOW_ADJ_FACTOR add CONSTRAINT PRIM_KEY PRIMARY KEY(GEO_HIER_SK);

       alter table &m_di_data..DOW_ADJ_FACTOR add NOT NULL (DAY_OF_WEEK);
       alter table &m_di_data..DOW_ADJ_FACTOR add NOT NULL (CORRECTION_FACTOR);

    quit;

    proc sql;
       ALTER TABLE &m_di_mon..STG_DOW_ADJ_FACTOR_X
       DROP GEO_HIER_SK;
    quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID785339_2
   :DESCRIPTION:    DOW Event Profile
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 12SEP2011
   :SUPPORT:        Rhuta Kulkarni
   :FREQUENCY:      ONCE


    proc sql;
       ALTER TABLE &m_di_data..DOW_ADJ_FACTOR
       DROP CONSTRAINT _NM0001_, _NM0002_, PRIM_KEY;
    quit;

    proc sql;
       alter table &m_di_data..DOW_ADJ_FACTOR add CONSTRAINT PRIM_KEY PRIMARY KEY(GEO_HIER_SK, DAY_OF_WEEK);

       alter table &m_di_data..DOW_ADJ_FACTOR add NOT NULL (CORRECTION_FACTOR);
    quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID785339_3
   :DESCRIPTION:    DOW Event Profile
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 27SEP2011
   :SUPPORT:        Rhuta Kulkarni
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon
   :CHKTABLES:      &m_di_mon..job_param, &m_di_mon..etl_sys_param



    proc sql noprint ;
      DELETE FROM &m_di_mon..job_param where jobname = 'LOAD_SRC2STG_DOW_ADJ_FACTOR' and param_name='etlp_src_file';

      Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
      values("LOAD_SRC2STG_DOW_ADJ_FACTOR",         "etlp_src_file",             "/data/stg_dow_adj_factor.csv",             '"Y"'   );
    quit;

    proc sql;
       Delete from &m_di_mon..etl_sys_param where jobname = 'LOAD_STG2DM_DOW_ADJ_FACTOR' and param_name='etlp_exception_table';

       Insert into &m_di_mon..Etl_sys_param
         (jobname, param_name, param_value, default_func)
       values("LOAD_STG2DM_DOW_ADJ_FACTOR",          "etlp_exception_table",      "DI_MON.STG_DOW_ADJ_FACTOR_X",                 '"DI_MON.STG_DOW_ADJ_FACTOR_X"'          )
       ;
    quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID786675
   :DESCRIPTION:    Remove PROD_RELATION_LVL global setting
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 24AUG2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE


   proc sql;

   DELETE FROM &m_di_data..GLOBAL_SETTING WHERE SPEC_NM ='PROD_RELATION_LVL';

   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID768268
   :DESCRIPTION:    Slim down PRICE_PROMO_ELASTICITY schema
   :DATE_OF_CHANGE: 24AUG2011
   :VERSION:        D3MICM52
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..PRICE_PROMO_ELASTICITY

   :DOC:  Drop columns data_config_sk, tsf_type and cross_prod_hier_sk
   :DOC: Change column width of effect_category from 40 to 20

   %di_util_drop_constraint(m_lib=&m_di_data., m_table=PRICE_PROMO_ELASTICITY, m_column=%str(data_config_sk), m_constraint=%str(not null));
   %di_util_drop_constraint(m_lib=&m_di_data., m_table=PRICE_PROMO_ELASTICITY, m_column=%str(tsf_type), m_constraint=%str(not null));
   %di_util_drop_constraint(m_lib=&m_di_data., m_table=PRICE_PROMO_ELASTICITY, m_column=%str(cross_prod_hier_sk), m_constraint=%str(not null));

   proc sql noprint;
      alter table  &m_di_data..PRICE_PROMO_ELASTICITY
           drop data_config_sk, tsf_type, cross_prod_hier_sk;
      alter table  &m_di_data..PRICE_PROMO_ELASTICITY
           modify effect_category char(20);
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID786756
   :DESCRIPTION:    Add Prod and Store close flags to Geo_prod_exception and change datatype
   :DATE_OF_CHANGE: 26AUG2011
   :VERSION:        D3MICM52
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE

   data &m_di_data..GEO_PROD_EXCEPTION;
      set &m_di_data..GEO_PROD_EXCEPTION
         (rename=(Inventory_flg=Inventory_flg_num
                  Current_cost_flg=Current_Cost_flg_num
                  Current_price_flg=Current_price_flg_num));
      attrib INVENTORY_FLG LENGTH=$1 CURRENT_PRICE_FLG LENGTH=$1
             CURRENT_COST_FLG LENGTH = $1 PROD_DISCONTINUED_FLG LENGTH = $1
             GEO_CLOSE_FLG LENGTH = $1;

      INVENTORY_FLG = LEFT(PUT(INVENTORY_FLG_NUM,BEST.));
      CURRENT_PRICE_FLG = LEFT(PUT(CURRENT_PRICE_FLG_NUM,BEST.));
      CURRENT_COST_FLG = LEFT(PUT(CURRENT_COST_FLG_NUM,BEST.));

      drop Inventory_flg_num current_price_flg_num current_cost_flg_num;
   run;

   proc sql;
      alter table &m_di_data..GEO_PROD_EXCEPTION add CONSTRAINT PRIM_KEY PRIMARY KEY (GEO_HIER_SK, PROD_HIER_SK);
   quit;

   proc sql;
      CREATE INDEX INVENTORY_FLG ON &m_di_data..GEO_PROD_EXCEPTION(INVENTORY_FLG);
      CREATE INDEX CURRENT_PRICE_FLG ON &m_di_data..GEO_PROD_EXCEPTION(CURRENT_PRICE_FLG);
      CREATE INDEX CURRENT_COST_FLG ON &m_di_data..GEO_PROD_EXCEPTION(CURRENT_COST_FLG);
   quit;

:END_CHANGE:


:BEGIN_CHANGE:
   :CHANGE_ID:      DI_MON_FMTS_A
   :DESCRIPTION:    Updating formats of MON tables to avoid format mismatch.
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 01SEP2011
   :SUPPORT:        Yogesh Dhuri
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon.
   :CHKTABLES:      &m_di_mon..DUP_SALES_FACT,&m_di_mon..DUP_INVENTORY_FACT,&m_di_mon..STG_SALES_X

    proc datasets library=di_mon nolist;
       modify DUP_SALES_FACT;
          informat TOTAL_SALES_AMT NLNUM20.3 ;
          format TOTAL_SALES_AMT NLNUM20.3 ;

       modify  DUP_INVENTORY_FACT;
          informat CLOSE_INV_AMT_AT_RETAIL NLNUM20.3 ;
          format CLOSE_INV_AMT_AT_RETAIL NLNUM20.3 ;

          informat CLOSE_INV_AMT_AT_COST NLNUM20.3 ;
          format CLOSE_INV_AMT_AT_COST NLNUM20.3 ;

       modify STG_SALES_X;
          informat TOTAL_SALES_QTY NLNUM12.2 ;
          format TOTAL_SALES_QTY NLNUM12.2 ;

          informat TOTAL_SALES_AMT NLNUM20.3 ;
          format TOTAL_SALES_AMT NLNUM20.3 ;

    quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      DI_MON_FMTS_B
   :DESCRIPTION:    Updating formats of MON tables to avoid format mismatch.
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 01SEP2011
   :SUPPORT:        Yogesh Dhuri
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon.
   :CHKTABLES:      &m_di_mon..STG_INVENTORY_X,&m_di_mon..STG_SALES_MIX_DAY_OF_WEEK_X,&m_di_mon..STG_CUSTOMER_RETURNS_X

    proc datasets library=di_mon nolist;

       modify  STG_INVENTORY_X;
          informat CLOSE_INV_AMT_AT_RETAIL NLNUM20.3 ;
          format CLOSE_INV_AMT_AT_RETAIL NLNUM20.3 ;

          informat CLOSE_INV_AMT_AT_COST NLNUM20.3 ;
          format CLOSE_INV_AMT_AT_COST NLNUM20.3 ;

       modify  STG_SALES_MIX_DAY_OF_WEEK_X;
          informat DOW_MIX_INDEX NLNUM12.4 ;
          format DOW_MIX_INDEX NLNUM12.4 ;

       modify  STG_CUSTOMER_RETURNS_X;
          informat RETURNED_AMT NLNUM20.3 ;
          format RETURNED_AMT NLNUM20.3 ;


    quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      DI_MON_FMTS_C
   :DESCRIPTION:    Updating formats of MON tables to avoid format mismatch.
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 01SEP2011
   :SUPPORT:        Yogesh Dhuri
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon.
   :CHKTABLES:      &m_di_mon..DUP_SALES_FACT,&m_di_mon..DUP_INVENTORY_FACT,&m_di_mon..STG_SALES_X

    proc datasets library=di_mon nolist;
       modify DUP_SALES_FACT;
          informat TOTAL_SALES_AMT NLNUM20.3 ;
          format TOTAL_SALES_AMT NLNUM20.3 ;

       modify  DUP_INVENTORY_FACT;
          informat CLOSE_INV_AMT_AT_RETAIL NLNUM20.3 ;
          format CLOSE_INV_AMT_AT_RETAIL NLNUM20.3 ;

          informat CLOSE_INV_AMT_AT_COST NLNUM20.3 ;
          format CLOSE_INV_AMT_AT_COST NLNUM20.3 ;

       modify STG_SALES_X;
          informat TOTAL_SALES_QTY NLNUM12.2 ;
          format TOTAL_SALES_QTY NLNUM12.2 ;

          informat TOTAL_SALES_AMT NLNUM20.3 ;
          format TOTAL_SALES_AMT NLNUM20.3 ;

    quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      DI_MON_FMTS_D
   :DESCRIPTION:    Updating formats of MON tables to avoid format mismatch.
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 01SEP2011
   :SUPPORT:        Yogesh Dhuri
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon.
   :CHKTABLES:      &m_di_mon..STG_INVENTORY_X,&m_di_mon..STG_SALES_MIX_DAY_OF_WEEK_X,&m_di_mon..STG_CUSTOMER_RETURNS_X

    proc datasets library=di_mon nolist;

       modify  STG_INVENTORY_X;
          informat CLOSE_INV_AMT_AT_RETAIL NLNUM20.3 ;
          format CLOSE_INV_AMT_AT_RETAIL NLNUM20.3 ;

          informat CLOSE_INV_AMT_AT_COST NLNUM20.3 ;
          format CLOSE_INV_AMT_AT_COST NLNUM20.3 ;

       modify  STG_SALES_MIX_DAY_OF_WEEK_X;
          informat DOW_MIX_INDEX NLNUM12.4 ;
          format DOW_MIX_INDEX NLNUM12.4 ;

       modify  STG_CUSTOMER_RETURNS_X;
          informat RETURNED_AMT NLNUM20.3 ;
          format RETURNED_AMT NLNUM20.3 ;


    quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      DI_MON_FMTS_E
   :DESCRIPTION:    Updating formats of MON tables to avoid format mismatch.
   :VERSION:        D3MICM52,M2MI42
   :DATE_OF_CHANGE: 01SEP2011
   :SUPPORT:        Yogesh Dhuri
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon.
   :CHKTABLES:      &m_di_mon..STG_PROMOTION_SALES_X,&m_di_mon..STG_DEMAND_DISAGG_X,&m_di_mon..STG_PACK_GROUP_GEO_SETTINGS_X

    proc datasets library=di_mon nolist;


       modify  STG_PROMOTION_SALES_X;
          informat PROMO_SALES_UNITS NLNUM12.4 ;
          format PROMO_SALES_UNITS NLNUM12.4 ;

       modify  STG_DEMAND_DISAGG_X;
          informat DISAGG_FACTOR NLNUM12.4 ;
          format DISAGG_FACTOR NLNUM12.4 ;

       modify  STG_PACK_GROUP_GEO_SETTINGS_X;
          informat OPENING_COST NLNUM20.3 ;
          format OPENING_COST NLNUM20.3 ;

          informat HANDLING_COST NLNUM20.3 ;
          format HANDLING_COST NLNUM20.3 ;

       modify  STG_INVENTORY_PACK_X;
          informat CLOSE_INV_UNITS NLNUM12.2 ;
          format CLOSE_INV_UNITS NLNUM12.2 ;

          informat CLOSE_INV_AMT_AT_RETAIL NLNUM20.3 ;
          format CLOSE_INV_AMT_AT_RETAIL NLNUM20.3 ;

          informat CLOSE_INV_AMT_AT_COST NLNUM20.3 ;
          format CLOSE_INV_AMT_AT_COST NLNUM20.3 ;

       modify  STG_BUDGET_X;
          informat TOTAL_BUDGET_AMT NLNUM20.3;
          format TOTAL_BUDGET_AMT NLNUM20.3 ;

          informat USED_BUDGET_AMT NLNUM20.3 ;
          format USED_BUDGET_AMT NLNUM20.3 ;

          informat REVISED_BUDGET_AMT NLNUM20.3;
          format REVISED_BUDGET_AMT NLNUM20.3 ;


       modify  STG_TARGET_METRICS_X ;
          informat TARGET_METRICS_VALUE NLNUM20.3 ;
          format TARGET_METRICS_VALUE NLNUM20.3 ;

       modify  STG_COMP_PRICE_X ;
          informat PRICE NLNUM20.3 ;
          format PRICE NLNUM20.3 ;

    quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      DI_MON_FMTS_F
   :DESCRIPTION:    Updating formats of MON tables to avoid format mismatch.
   :VERSION:        D3MICM52,M2MI42
   :DATE_OF_CHANGE: 01SEP2011
   :SUPPORT:        Yogesh Dhuri
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon.
   :CHKTABLES:      &m_di_mon..STG_INVENTORY_PACK_X,&m_di_mon..STG_BUDGET_X,&m_di_mon..STG_TARGET_METRICS_X,&m_di_mon..STG_COMP_PRICE_X

    proc datasets library=di_mon nolist;



       modify  STG_INVENTORY_PACK_X;
          informat CLOSE_INV_UNITS NLNUM12.2 ;
          format CLOSE_INV_UNITS NLNUM12.2 ;

          informat CLOSE_INV_AMT_AT_RETAIL NLNUM20.3 ;
          format CLOSE_INV_AMT_AT_RETAIL NLNUM20.3 ;

          informat CLOSE_INV_AMT_AT_COST NLNUM20.3 ;
          format CLOSE_INV_AMT_AT_COST NLNUM20.3 ;

       modify  STG_BUDGET_X;
          informat TOTAL_BUDGET_AMT NLNUM20.3;
          format TOTAL_BUDGET_AMT NLNUM20.3 ;

          informat USED_BUDGET_AMT NLNUM20.3 ;
          format USED_BUDGET_AMT NLNUM20.3 ;

          informat REVISED_BUDGET_AMT NLNUM20.3;
          format REVISED_BUDGET_AMT NLNUM20.3 ;


       modify  STG_TARGET_METRICS_X ;
          informat TARGET_METRICS_VALUE NLNUM20.3 ;
          format TARGET_METRICS_VALUE NLNUM20.3 ;

       modify  STG_COMP_PRICE_X ;
          informat PRICE NLNUM20.3 ;
          format PRICE NLNUM20.3 ;

    quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      MDL_GP_PARTS
   :DESCRIPTION:    Update partitioned MODEL_GEO_PROD tables
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 01SEP2011
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..MODEL_GEO_PROD
   :ASIS:           TRUE

   :DOC:  Update structure of MODEL_GEO_PROD tables in subfolder MODEL_GEO_PROD
   :DOC:  A column DOW_GROUP_ID needs to be added. Defect S0789530.


   %let m_subdir=MODEL_GEO_PROD;
   %let m_partlib=ZMGP_LIB;


   %di_etl_set_lib (parent_lib=&m_di_data., sub_folder=&m_subdir.,partition_lib=&m_partlib. );

   %local all_tabs num_tabs tab_name i;

   proc sql noprint;
       select memname into :all_tabs
       separated by " "
       from dictionary.tables
       where libname = "&m_partlib";
   quit;

   proc sql noprint;
   select count(*) into :num_tabs
   from dictionary.tables
   where libname = "&m_partlib";
   quit;

   %put &m_subdir. (&num_tabs): &all_tabs;

   proc contents nodetails noprint data=&m_di_data..&m_subdir.
     out2=work.etl_cons1;
   run;

   %if &num_tabs gt 0 %then
   %do;

       %do i=1 %to &num_tabs;

           %let tab_name = %scan(&all_tabs, &i);
           data &m_partlib..&tab_name;
           set &m_partlib..&tab_name;
           attrib DOW_GROUP_ID length=4;
           DOW_GROUP_ID=0;
           run;

           data _null_;
               set work.etl_cons1 end=eof;
               if _n_ eq 1 then do;
               call execute("proc datasets lib = &m_partlib. nolist; modify &tab_name;");
               end;
               call execute("      " || recreate);
               if eof then call execute("quit;");
           run;

       %end;

   %end;

   libname &m_partlib clear;
:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      DROP_WKDY_CORR_FCTR
   :DESCRIPTION:    Drop WEEKDAY_CORRECT_FACT Table
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 02SEP2011
   :SUPPORT:        Yue Li
   :FREQUENCY:      ONCE
    :CHKTABLES:     &m_di_data..WEEKDAY_CORRECT_FACT

   :DOC: Drop WEEKDAY_CORRECT_FACT Table since it is no longer used

   proc sql noprint;
      drop table &m_di_data..WEEKDAY_CORRECT_FACT;
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID756451
   :DESCRIPTION:    Returned_Units and Returned_Amt in Return_fact should be not null
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 27SEP2011
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   :DOC:  RETURNED_UNITS and RETURNED_AMT should be NOT NULL.
   :DOC:  This is enforced in the ETL.  Not needed in STG table.
   :DOC:  Needed in datamart just in case some adds rows.

   %di_util_drop_constraint(m_lib=&m_di_data., m_table=RETURN_FACT, m_column=%str(RETURNED_UNITS), m_constraint=%str(not null));
   %di_util_drop_constraint(m_lib=&m_di_data., m_table=RETURN_FACT, m_column=%str(RETURNED_AMT), m_constraint=%str(not null));
    proc sql;

       alter table &m_di_data..RETURN_FACT add NOT NULL (RETURNED_UNITS);
       alter table &m_di_data..RETURN_FACT add NOT NULL (RETURNED_AMT);
    quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID796478
   :DESCRIPTION:    Changing formats for STG_BUDGET_X to avoid format warnings
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 28SEP2011
   :SUPPORT:        Yogesh Dhuri
   :FREQUENCY:      ONCE


   Data &m_di_mon..STG_BUDGET_X ;
   attrib GEO_ID length=$32 ;
   attrib PROD_ID length=$32 ;
   attrib START_DT length=8 format=DATE. ;
   attrib END_DT length=8 format=DATE. ;
   attrib BUDGET_TYPE length=8 ;
   attrib BUDGET_NM length=$100 ;
   attrib TOTAL_BUDGET_AMT length=8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3;
   attrib USED_BUDGET_AMT length=8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3;
   attrib REVISED_BUDGET_AMT length=8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3;
   attrib ETLS_EXCEPTION_COND length=$450 ;
   attrib ETL_ERROR_JOBRUNTIME length=8 format=DATETIME16. ;
   stop;run;


:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      DROP_IDX_GEO_HIER_SK
   :DESCRIPTION:    Drop index GEO_HIER_SK since it is first column of the primary key.
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 03OCT2011
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   %di_util_drop_constraint(m_lib=&m_di_data., m_table=GEOGRAPHY_ATTRIBUTES, m_column=%str(GEO_HIER_SK), m_constraint=%str(index));

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID802112
   :DESCRIPTION:    Add multiple etlp_exception_table parameters to etl_sys_param as array
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 03OCT2011
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon
   :CHKTABLES:      &m_di_mon..etl_sys_param

   proc sql;
      delete
        from &m_di_mon..etl_sys_param
       where jobname = 'LOAD_STG2DM_MDO_IMPORT_PLAN'
         and param_name eq 'etlp_exception_table2';

      update &m_di_mon..etl_sys_param
         set param_name = 'etlp_exception_table1'
       where jobname = 'LOAD_STG2DM_MDO_IMPORT_PLAN'
         and param_name eq 'etlp_exception_table';

      insert into &m_di_mon..etl_sys_param (jobname, param_name, param_value, default_func)
      values ('LOAD_STG2DM_MDO_IMPORT_PLAN',
              'etlp_exception_table2',
              'DI_MON.STG_MDO_IMPORT_PLAN_MEMBER_X',
              '"DI_MON.STG_MDO_IMPORT_PLAN_MEMBER_X"');
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID802430
   :DESCRIPTION:    Add description about setting_type 53 - 55 (MDO) to Reference values
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 18OCT2011
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE

   proc sql;
      delete
        from &m_di_data..reference_values
       where field_nm = 'SETTING_TYPE'
         and field_value in ('53','54','55');

      insert
        into &m_di_data..reference_values
        (
             field_nm,
             field_value,
             field_short_desc
        )
      values ('SETTING_TYPE','53','ALLOW_MARKDN_DURING_PROMO_CD')
      values ('SETTING_TYPE','54','FORCE_MARKDN_PRICE_POINT_VALUE')
      values ('SETTING_TYPE','55','LOW_DEMAND_DISCOUNT_PRICE_POINT_VALUE');
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID801481
   :DESCRIPTION:    Adding parameter to check valid vehicle_category_sk for conditional promotions
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 20OCT2011
   :SUPPORT:        Yogesh Dhuri
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon
   :CHKTABLES:      &m_di_mon..JOB_PARAM

proc sql noprint;
   delete from &m_di_mon..JOB_PARAM
   where jobname = "LOAD_STG2DM_PROMOTION_FACT"
         and
         param_name = "etlp_condtn_promo_veh_ctgrs";

   insert into &m_di_mon..JOB_PARAM
   (jobname, param_name, param_value, default_func)
   values("LOAD_STG2DM_PROMOTION_FACT", "etlp_condtn_promo_veh_ctgrs", "1,2,3", '"1,2,3"');
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID806199
   :DESCRIPTION:    New global settings BULK_HANDLE_COST and BULD_OPEN_COST
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 31OCT2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE


   proc sql;

   DELETE FROM &m_di_data..GLOBAL_SETTING
   WHERE SPEC_NM ='BULK_HANDLE_COST' and APP = 'SZPK';

   INSERT INTO &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) VALUES
   ('BULK_HANDLE_COST','SZPK','1.00',
   'Specifies the default handling cost for bulk packs.');

   DELETE FROM &m_di_data..GLOBAL_SETTING
   WHERE SPEC_NM ='BULK_OPEN_COST' and APP = 'SZPK';

   INSERT INTO &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) VALUES
   ('BULK_OPEN_COST','SZPK','0.00',
   'Specifies the default opening cost for bulk packs.');

   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID799889
   :DESCRIPTION:    Length of DATA_LVL_NM should be enlarged to assort with customized analytical hierarchy
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 02NOV2011
   :SUPPORT:        Sangeeta Rokde
   :FREQUENCY:      ONCE

   :DOC:  Changed the length of DATA_LVL_NM TO 255 and DATA_LVL_DESC to 500.

    proc sql;
       alter table &m_di_data..DATA_LVL modify DATA_LVL_NM char(255);
       alter table &m_di_data..DATA_LVL modify DATA_LVL_DESC char(500);
    quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      LENGTH_TO_5
   :DESCRIPTION:    Length of COL_TYPE and EXPORT_COL_TYPE in PRICING_RULES_COLUMN_META should be 5
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 02NOV2011
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

    proc sql;
       alter table &m_di_data..PRICING_RULES_COLUMN_META modify COL_TYPE char(5);
       alter table &m_di_data..PRICING_RULES_COLUMN_META modify EXPORT_COL_TYPE char(5);
    quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID810483
   :DESCRIPTION:    Remove global setting MPLN_MTS_CONFIG
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 14NOV2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE


    proc sql;
       DELETE FROM &m_di_data..GLOBAL_SETTING WHERE SPEC_NM ='MPLN_MTS_CONFIG';
    quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID805225
   :DESCRIPTION:    New global settings MAX_FIND_PRODUCT_DETAILS
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 14NOV2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE


   proc sql;

   DELETE FROM &m_di_data..GLOBAL_SETTING
   WHERE SPEC_NM ='MAX_FIND_PRODUCT_DETAILS' and APP = 'ALL';

   INSERT INTO &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) VALUES
   ('MAX_FIND_PRODUCT_DETAILS','ALL','6000',
   'Specifies the maximum size of query results when searching for products by attribute in an Oracle RDBMS.');

   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID811022
   :DESCRIPTION:    Add global setting ACTIVE_PROD_STATUS_EST
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 15NOV2011
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE


   proc sql;

   DELETE FROM &m_di_data..GLOBAL_SETTING
   WHERE SPEC_NM ='ACTIVE_PROD_STATUS_EST' and APP = 'ALL';

   INSERT INTO &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) VALUES
   ('ACTIVE_PROD_STATUS_EST','ALL','1,3,5,6,7,8',
   'Specifies a list of status values that indicate an active product (SKU) for estimation process.');

   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID816268
   :DESCRIPTION:    Adding NOT NULL constraint to PACK_TYPE_NM of STG_PACK_TYPE table
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 06DEC2011
   :SUPPORT:        Yogesh Dhuri
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_didm_stg
   :CHKTABLES:      &m_didm_stg..STG_PACK_TYPE

   proc sql;
      alter table &m_didm_stg..STG_PACK_TYPE add NOT NULL (PACK_TYPE_NM);
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID814313
   :DESCRIPTION:    Adding parameters viz. etlp_parallel_execution and etlp_threshold_value to Job_Param
   :VERSION:        D3MICM52, M2MI42
   :DATE_OF_CHANGE: 08DEC2011
   :SUPPORT:        Sangeeta Rokde
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon
   :CHKTABLES:      &m_di_mon..JOB_PARAM

proc sql;

  delete from &m_di_mon..job_param where upcase(jobname) = 'DI_ETL_GEO_PROD_PURGE_JOB'
  and lowcase(param_name) = 'etlp_parallel_execution';

  delete from &m_di_mon..job_param where upcase(jobname) = 'DI_ETL_GEO_PROD_PURGE_JOB'
  and lowcase(param_name) = 'etlp_threshold_value';

  Insert into &m_di_mon..job_param
  (jobname, param_name, param_value, default_func)
  values("DI_ETL_GEO_PROD_PURGE_JOB", "etlp_parallel_execution",  "1",  '"1"')
  values("DI_ETL_GEO_PROD_PURGE_JOB", "etlp_threshold_value",  "0",  '"0"');
 quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID810405
   :DESCRIPTION:    New stage and mon tables for Rpp_plan_metrics and Rpp_plan_prod_metrics
   :VERSION:        D3MICM52, M2MI42
   :DATE_OF_CHANGE: 08DEC2011
   :SUPPORT:        Avinash Khairnar
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_didm_stg

data &m_didm_stg..STG_RPP_PLAN_METRIC;
   attrib  PLAN_ID length=$32;
   attrib  KPI_SK length=4 ;
   attrib  FCST_KPI_VALUE length=8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3;
   attrib  BASE_KPI_VALUE length=8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3;
   attrib  ACTUAL_KPI_VALUE length=8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3;
   STOP;
run;

proc sql;
alter table &m_didm_stg..STG_RPP_PLAN_METRIC add NOT NULL (PLAN_ID);
alter table &m_didm_stg..STG_RPP_PLAN_METRIC add NOT NULL (KPI_SK);
quit;


data &m_didm_stg..STG_RPP_PLAN_PROD_METRICS;
   attrib  PLAN_ID length=$32;
   attrib  PROD_ID length=$32;
   attrib  KPI_SK length=4 ;
   attrib  FCST_KPI_VALUE length=8  FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3;
   attrib  BASE_KPI_VALUE length=8  FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3;
   attrib  ACTUAL_KPI_VALUE length=8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3;
   STOP;
run;

proc sql;
alter table &m_didm_stg..STG_RPP_PLAN_PROD_METRICS add NOT NULL (PLAN_ID);
alter table &m_didm_stg..STG_RPP_PLAN_PROD_METRICS add NOT NULL (PROD_ID);
alter table &m_didm_stg..STG_RPP_PLAN_PROD_METRICS add NOT NULL (KPI_SK);
quit;

/***** MON tables *****/

data &m_di_mon..STG_RPP_PLAN_METRIC_X;
   attrib  PLAN_ID length=$32;
   attrib  KPI_SK length=4 ;
   attrib  FCST_KPI_VALUE length=8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3;
   attrib  BASE_KPI_VALUE length=8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3;
   attrib  ACTUAL_KPI_VALUE length=8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3;
   attrib ETLS_EXCEPTION_COND length=$150 ;
   attrib ETL_ERROR_JOBRUNTIME length=8 format = datetime16. ;
   STOP;
run;

data &m_di_mon..STG_RPP_PLAN_PROD_METRICS_X;
   attrib  PLAN_ID length=$32;
   attrib  PROD_ID length=$32;
   attrib  KPI_SK length=4 ;
   attrib  FCST_KPI_VALUE length=8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3;
   attrib  BASE_KPI_VALUE length=8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3;
   attrib  ACTUAL_KPI_VALUE length=8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3;
   attrib ETLS_EXCEPTION_COND length=$150 ;
   attrib ETL_ERROR_JOBRUNTIME length=8 format = datetime16. ;
   STOP;
run;


proc sql noprint;

delete from &m_di_mon..job_param
where upcase(jobname) = 'LOAD_SRC2STG_RPP_PLAN_METRIC' and lowcase(param_name) = 'etlp_src_file';

delete from &m_di_mon..job_param
where upcase(jobname) = 'LOAD_SRC2STG_RPP_PLAN_PROD_METRICS' and lowcase(param_name) = 'etlp_src_file';

Insert into &m_di_mon..job_param
(jobname, param_name, param_value, default_func)
values("LOAD_SRC2STG_RPP_PLAN_METRIC","etlp_src_file","/data/stg_rpp_plan_metric.csv",'"Y"')
values("LOAD_SRC2STG_RPP_PLAN_PROD_METRICS","etlp_src_file","/data/stg_rpp_plan_prod_metrics.csv",'"Y"')
;

delete from &m_di_mon..job_param
where upcase(jobname) = 'LOAD_STG2DM_RPP_PLAN_METRIC' and lowcase(param_name) = 'etlp_custom_kpi_start_sk';
delete from &m_di_mon..job_param
where upcase(jobname) = 'LOAD_STG2DM_RPP_PLAN_PROD_METRICS' and lowcase(param_name) = 'etlp_custom_kpi_start_sk';
delete from &m_di_mon..job_param
where upcase(jobname) = 'LOAD_STG2DM_RPP_PLAN_PROD_ASGMNT' and lowcase(param_name) = 'etlp_custom_kpi_start_sk';

Insert into &m_di_mon..job_param
(jobname, param_name, param_value, default_func)
values ('LOAD_STG2DM_RPP_PLAN_METRIC','etlp_custom_kpi_start_sk','1000','"1000"')
values ('LOAD_STG2DM_RPP_PLAN_PROD_METRICS','etlp_custom_kpi_start_sk','1000','"1000"')
values ('LOAD_STG2DM_RPP_PLAN_PROD_ASGMNT','etlp_custom_kpi_start_sk','1000','"1000"')
;

delete from &m_di_mon..etl_sys_param
where upcase(jobname) = 'LOAD_STG2DM_RPP_PLAN_METRIC' and lowcase(param_name) = 'etlp_exception_table';

delete from &m_di_mon..etl_sys_param
where upcase(jobname) = 'LOAD_STG2DM_RPP_PLAN_PROD_METRICS' and lowcase(param_name) = 'etlp_exception_table';

Insert into &m_di_mon..etl_sys_param
(jobname, param_name, param_value, default_func)
values("LOAD_STG2DM_RPP_PLAN_METRIC", "etlp_exception_table",  "DI_MON.STG_RPP_PLAN_METRIC_X",  '"DI_MON.STG_RPP_PLAN_METRIC_X"')
values("LOAD_STG2DM_RPP_PLAN_PROD_METRICS", "etlp_exception_table",  "DI_MON.STG_RPP_PLAN_PROD_METRICS_X",  '"DI_MON.STG_RPP_PLAN_PROD_METRICS_X"')
;


quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID815119
   :DESCRIPTION:    Removing etlp_restartopt parameter from JOB_PARAM table
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 09DEC2011
   :SUPPORT:        Yogesh Dhuri
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon
   :CHKTABLES:      &m_di_mon..job_param

   proc sql;
      delete from &m_di_mon..JOB_PARAM
      where UPCASE(jobname) in ("LOAD_STG2DM_INVENTORY_FACT", "LOAD_STG2DM_SALES_FACT")
            and UPCASE(param_name) ="ETLP_RESTARTOPT";
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID819669
   :DESCRIPTION:    Increase PRICE_VALUE_LIST and PRICE_ENDING_LIST to char(4000) in Stage and mon MDO
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 19DEC2011
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_didm_stg
   :CHKTABLES:      &m_didm_stg..stg_mdo_import_plan

   proc sql;
      alter table &m_didm_stg..stg_mdo_import_plan modify PRICE_VALUE_LIST CHAR(4000);
      alter table &m_didm_stg..stg_mdo_import_plan modify PRICE_ENDING_LIST CHAR(4000);
   quit;

   proc sql;
      alter table &m_di_mon..stg_mdo_import_plan_x modify PRICE_VALUE_LIST CHAR(4000);
      alter table &m_di_mon..stg_mdo_import_plan_x modify PRICE_ENDING_LIST CHAR(4000);
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID823398
   :DESCRIPTION:    Add NOT NULL constraint for DISPLAY_ORDER and NUMBER_OF_UNITS
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 06JAN2012
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_didm_stg.
   :CHKTABLES:      &m_didm_stg..stg_std_size,&m_didm_stg..stg_pack_prod


   %di_util_drop_constraint(m_lib=&m_didm_stg., m_table=STG_STD_SIZE, m_column=%str(DISPLAY_ORDER), m_constraint=%str(not null));
   %di_util_drop_constraint(m_lib=&m_didm_stg., m_table=STG_PACK_PROD, m_column=%str(NUMBER_OF_UNITS), m_constraint=%str(not null));

   proc sql;
      alter table &m_didm_stg..STG_STD_SIZE   add NOT NULL (DISPLAY_ORDER);
      alter table &m_didm_stg..STG_PACK_PROD  add NOT NULL (NUMBER_OF_UNITS);
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      DROP_PROMOTION_FACT_FUTURE
   :DESCRIPTION:    Drop PROMOTION_FACT_FUTURE as it is no longer needed
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 09JAN2012
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE
   :ASIS:           TRUE


   :DOC:  Table PROMOTION_FACT_FUTURE from partitions and di_data. Defect S0719381.

   proc sql noprint;
      drop table &m_di_data..PROMOTION_FACT_FUTURE ;
   quit;


   %let m_subdir=PROMOTION_FACT_FUTURE;
   %let m_partlib=ZPFF_LIB;

   %let parentdir=%di_util_first_libpath(&m_di_data);



   %di_etl_set_lib (parent_lib=&m_di_data., sub_folder=&m_subdir.,partition_lib=&m_partlib. );

   %local all_tabs num_tabs tab_name i;

   proc sql noprint;
       select memname into :all_tabs
       separated by " "
       from dictionary.tables
       where libname = "&m_partlib";
   quit;

   proc sql noprint;
   select count(*) into :num_tabs
   from dictionary.tables
   where libname = "&m_partlib";
   quit;

   %put &m_subdir. (&num_tabs): &all_tabs;

   %if &num_tabs gt 0 %then
   %do;

       %do i=1 %to &num_tabs;

           %let tab_name = %scan(&all_tabs, &i);


           proc sql noprint;
              drop table &m_partlib..&tab_name;
           quit;


       %end;

   %end;

   %let _removeDirectory = %sysfunc(pathname(&m_partlib.));
   libname &m_partlib clear;

   x "rmdir &_removeDirectory";

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID824127
   :DESCRIPTION:    Remove global setting CAL_PRICE_ELAS_IDX_PERF
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 10JAN2012
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..GLOBAL_SETTING


proc sql;
DELETE from &m_di_data..GLOBAL_SETTING where SPEC_NM = 'CAL_PRICE_ELAS_IDX_PERF';
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID824171
   :DESCRIPTION:    Remove global setting DEMAND_DISAGG_DEF_PROD_LVL
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 10JAN2012
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..GLOBAL_SETTING


proc sql;
DELETE from &m_di_data..GLOBAL_SETTING where SPEC_NM = 'DEMAND_DISAGG_DEF_PROD_LVL';
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID813171
   :DESCRIPTION:    Add benefits_track_highlvl_agg job to tkmi_job_ro (RPO)
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 12JAN2012
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE


   proc sql;
   delete from &m_di_data..job where job_id in (38);
   insert into &m_di_data..job(job_id,job_nm,parent_job_id) values (38,'benefits_track_highlvl_agg',-1);
   quit;

   proc sort data=&m_di_data..job force;
      by job_id;
   run;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID0826411
   :DESCRIPTION:    Drop STG_GEO_STORE, GEO_STORE, STG_GEO_STORE_X Tables
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 18JAN2012
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE


   proc sql noprint;
      drop table &m_di_data..GEO_STORE;
      drop table &m_didm_stg..STG_GEO_STORE;
      drop table &m_di_mon..STG_GEO_STORE_X;

      delete from &m_di_mon..etl_sys_param where upcase(jobname)="LOAD_STG2DM_GEO_STORE";
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID828113
   :DESCRIPTION:    Adding entry for Field lookup value for OBJECT TYPE 16
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 25JAN2012
   :SUPPORT:        Yogesh Dhuri
   :FREQUENCY:      ONCE

   proc sql;

   DELETE FROM &m_di_data..field_lookup_values where (table_name='ALL' and field_nm='OBJECT_TYPE' and field_value='16');
   INSERT INTO &m_di_data..field_lookup_values (table_name,field_nm,field_value,field_value_nm,field_value_desc,field_datatype)
   VALUES ('ALL','OBJECT_TYPE','16','PlanProdAssignment', 'PlanProdAssignment', 'INTEGER');

   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      ID831366
   :DESCRIPTION:    Removing etlp_src_ref_dt for PRF_GEO_PROD_STATUS from Job_param table
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 06FEB2012
   :SUPPORT:        Yogesh Dhuri
   :FREQUENCY:      ONCE

   proc sql;
      delete from &m_di_mon..JOB_PARAM
      where UPCASE(jobname) = "LOAD_STG2DM_PRF_GEO_PROD_STATUS"
            and UPCASE(param_name) ="ETLP_SRC_REF_DT";
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID811022_1
   :DESCRIPTION:    Remove global setting ACTIVE_PROD_STATUS_EST
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 13FEB2012
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..GLOBAL_SETTING


proc sql;
DELETE from &m_di_data..GLOBAL_SETTING where SPEC_NM = 'ACTIVE_PROD_STATUS_EST';
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      P_SUBSET
   :DESCRIPTION:    Move datasets partitioned to archive subfolder 1 of 2
   :VERSION:        D2TKMI42
   :DATE_OF_CHANGE: 14FEB2011
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   %let parentdir=%di_util_first_libpath(&m_di_data);


   %let moveToSubdir=archive;
   %let _dir = %sysfunc(dcreate(&moveToSubdir,&parentdir));

   %if "&sysscp"="WIN" %then
   %do;
       %let m_sepchar=\;
       %let m_movecmd=move;
       %let m_copycmd=copy;
       options noxwait;
   %end;

   %else
   %do;
       %let m_sepchar=/;
       %let m_movecmd=mv;
       %let m_copycmd=cp;
   %end;

   %if %sysfunc(fileexist(%quote(&parentdir&m_sepchar.&moveToSubdir))) %then
   %do;
       X "&m_movecmd &parentdir&m_sepchar.inventory_fact_?????.* &parentdir&m_sepchar.&moveToSubdir&m_sepchar." ;
       X "&m_movecmd &parentdir&m_sepchar.sales_fact_?????.* &parentdir&m_sepchar.&moveToSubdir&m_sepchar." ;


       /* Truncate these two tables - Instead of truncating move and copy the structure */
       libname tmp9876 "&parentdir&m_sepchar.&moveToSubdir&m_sepchar.";

       %if %di_util_nobs(&m_di_data..price_fact_history) > 0 %then %do;
           X "&m_movecmd &parentdir&m_sepchar.price_fact_history.* &parentdir&m_sepchar.&moveToSubdir&m_sepchar." ;
           %DI_UTIL_CREATE_LIKE_TABLE( orig_table=tmp9876.price_fact_history, new_table=&m_di_data..price_fact_history  ) ;
       %end;

       %if %di_util_nobs(&m_di_data..cost_fact_history) > 0 %then %do;
           X "&m_movecmd &parentdir&m_sepchar.cost_fact_history.* &parentdir&m_sepchar.&moveToSubdir&m_sepchar." ;
           %DI_UTIL_CREATE_LIKE_TABLE( orig_table=tmp9876.cost_fact_history, new_table=&m_di_data..cost_fact_history  ) ;
       %end;

       libname tmp9876 clear;

   %end;
   %else %do;
       %put WARNING: Directory "&parentdir&m_sepchar.&moveToSubdir" does not exist. Partitioned data not moved;
   %end;

   /* Get Current Date SK - Reduce by 1 and copy inventory file corresponding to that */
   %let m_last_week=0;
   proc sql noprint;
       select spec_value
       into :m_last_week
       from &m_di_data..global_setting
       where spec_nm="CURRENT_DATE_SK"
       and app="ALL"
       ;
   quit;

   %let m_last_week=%trim(%eval(&m_last_week-1));

   /* Keep a copy of last week inventory */
   %if %sysfunc(fileexist(%quote(&parentdir&m_sepchar.&moveToSubdir))) %then
   %do;
       X "&m_copycmd &parentdir&m_sepchar.&moveToSubdir&m_sepchar.inventory_fact_&m_last_week..* &parentdir&m_sepchar.";
   %end;




:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      MOVE_SUBSET_DATASETS2
   :DESCRIPTION:    Move datasets partitioned to archive subfolder 2 of 2
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 14FEB2011
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   %let parentdir=%di_util_first_libpath(&m_di_data);
   %let moveToSubdir=archive;
   %let _dir = %sysfunc(dcreate(&moveToSubdir,&parentdir));

   %if "&sysscp"="WIN" %then %do;
       %let m_sepchar=\;
       %let m_movecmd=move;
       %let m_copycmd=copy;
       options noxwait;
   %end;

   %else %do;
       %let m_sepchar=/;
       %let m_movecmd=mv;
       %let m_copycmd=cp;
   %end;

   %if %sysfunc(fileexist(%quote(&parentdir&m_sepchar.&moveToSubdir))) %then
   %do;

       libname tmp9876 "&parentdir&m_sepchar.&moveToSubdir&m_sepchar.";

       %if %di_util_nobs(&m_di_data..cost_fact_current) > 0 %then %do;
           X "&m_movecmd &parentdir&m_sepchar.cost_fact_current.* &parentdir&m_sepchar.&moveToSubdir&m_sepchar." ;
           %DI_UTIL_CREATE_LIKE_TABLE( orig_table=tmp9876.cost_fact_current, new_table=&m_di_data..cost_fact_current  ) ;
       %end;


       %if %di_util_nobs(&m_di_data..cost_fact_future) > 0 %then %do;
           X "&m_movecmd &parentdir&m_sepchar.cost_fact_future.* &parentdir&m_sepchar.&moveToSubdir&m_sepchar." ;
           %DI_UTIL_CREATE_LIKE_TABLE( orig_table=tmp9876.cost_fact_future, new_table=&m_di_data..cost_fact_future  ) ;
       %end;

       %if %di_util_nobs(&m_di_data..dow_event_sales_fact) > 0 %then %do;
           X "&m_movecmd &parentdir&m_sepchar.dow_event_sales_fact.* &parentdir&m_sepchar.&moveToSubdir&m_sepchar." ;
           %DI_UTIL_CREATE_LIKE_TABLE( orig_table=tmp9876.dow_event_sales_fact, new_table=&m_di_data..dow_event_sales_fact  ) ;
       %end;


       %if %di_util_nobs(&m_di_data..dow_sales_fact) > 0 %then %do;
           X "&m_movecmd &parentdir&m_sepchar.dow_sales_fact.* &parentdir&m_sepchar.&moveToSubdir&m_sepchar." ;
           %DI_UTIL_CREATE_LIKE_TABLE( orig_table=tmp9876.dow_sales_fact, new_table=&m_di_data..dow_sales_fact  ) ;
       %end;

       %if %di_util_nobs(&m_di_data..future_receipt) > 0 %then %do;
           X "&m_movecmd &parentdir&m_sepchar.future_receipt.* &parentdir&m_sepchar.&moveToSubdir&m_sepchar." ;
           %DI_UTIL_CREATE_LIKE_TABLE( orig_table=tmp9876.future_receipt, new_table=&m_di_data..future_receipt  ) ;
       %end;

       %if %di_util_nobs(&m_di_data..geo_prod) > 0 %then %do;
           X "&m_movecmd &parentdir&m_sepchar.geo_prod.* &parentdir&m_sepchar.&moveToSubdir&m_sepchar." ;
           %DI_UTIL_CREATE_LIKE_TABLE( orig_table=tmp9876.geo_prod, new_table=&m_di_data..geo_prod  ) ;
       %end;

       %if %di_util_nobs(&m_di_data..geo_prod_owned_inv) > 0 %then %do;
           X "&m_movecmd &parentdir&m_sepchar.geo_prod_owned_inv.* &parentdir&m_sepchar.&moveToSubdir&m_sepchar." ;
           %DI_UTIL_CREATE_LIKE_TABLE( orig_table=tmp9876.geo_prod_owned_inv, new_table=&m_di_data..geo_prod_owned_inv  ) ;
       %end;

       %if %di_util_nobs(&m_di_data..geo_prod_status) > 0 %then %do;
           X "&m_movecmd &parentdir&m_sepchar.geo_prod_status.* &parentdir&m_sepchar.&moveToSubdir&m_sepchar." ;
           %DI_UTIL_CREATE_LIKE_TABLE( orig_table=tmp9876.geo_prod_status, new_table=&m_di_data..geo_prod_status  ) ;
       %end;

       %if %di_util_nobs(&m_di_data..price_fact_current) > 0 %then %do;
           X "&m_movecmd &parentdir&m_sepchar.price_fact_current.* &parentdir&m_sepchar.&moveToSubdir&m_sepchar." ;
           %DI_UTIL_CREATE_LIKE_TABLE( orig_table=tmp9876.price_fact_current, new_table=&m_di_data..price_fact_current  ) ;
       %end;

       %if %di_util_nobs(&m_di_data..price_fact_future) > 0 %then %do;
           X "&m_movecmd &parentdir&m_sepchar.price_fact_future.* &parentdir&m_sepchar.&moveToSubdir&m_sepchar." ;
           %DI_UTIL_CREATE_LIKE_TABLE( orig_table=tmp9876.price_fact_future, new_table=&m_di_data..price_fact_future  ) ;
       %end;

       %if %di_util_nobs(&m_di_data..promotion_fact) > 0 %then %do;
           X "&m_movecmd &parentdir&m_sepchar.promotion_fact.* &parentdir&m_sepchar.&moveToSubdir&m_sepchar." ;
           %DI_UTIL_CREATE_LIKE_TABLE( orig_table=tmp9876.promotion_fact, new_table=&m_di_data..promotion_fact  ) ;
       %end;

       %if %di_util_nobs(&m_di_data..return_fact) > 0 %then %do;
           X "&m_movecmd &parentdir&m_sepchar.return_fact.* &parentdir&m_sepchar.&moveToSubdir&m_sepchar." ;
           %DI_UTIL_CREATE_LIKE_TABLE( orig_table=tmp9876.return_fact, new_table=&m_di_data..return_fact  ) ;
       %end;

      libname tmp9876 clear;
   %end;
   %else
   %do;
       %put WARNING: Directory "&parentdir&m_sepchar.&moveToSubdir" does not exist. Partitioned data not moved;
   %end;





:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID823117
   :DESCRIPTION:    Adding column VG_MASTER_TYPE to stg_vehicle.
   :VERSION:        D3MICM52,M2MI42
   :DATE_OF_CHANGE: 15FEB2012
   :SUPPORT:        Avinash Khairnar
   :FREQUENCY:      ONCE

   :DOC:            Add column VG_MASTER_TYPE in stg_vehicle


   proc sql;
      ALTER TABLE &m_didm_stg..stg_vehicle
      ADD VG_MASTER_TYPE integer length=4;
   quit;

   proc sql;
         ALTER TABLE &m_di_mon..stg_vehicle_x
         ADD VG_MASTER_TYPE integer length=4;
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID834648
   :DESCRIPTION:    Add separate ACTIVE_PROD_STATUS global setting for RPO
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 16FEB2012
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..GLOBAL_SETTING


proc sql;
DELETE from &m_di_data..GLOBAL_SETTING where SPEC_NM = 'ACTIVE_PROD_STATUS' and APP = 'RPO';
   INSERT INTO &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
   VALUES  ('ACTIVE_PROD_STATUS','RPO','1,3,5,6,7,8',
      'Specifies a list of status values that indicate an active product (SKU) for SAS Regular Price Optimization.');
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID840135
   :DESCRIPTION:    Add exception_table STG_PRODUCT_REPLACEMENT_X into di_mon.etls_sys_param
   :VERSION:        D3MICM52,M2MI42
   :DATE_OF_CHANGE: 12MAR2012
   :SUPPORT:        Priyalal
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_mon..etl_sys_param


proc sql;
DELETE from &m_di_mon..etl_sys_param where jobname = 'LOAD_STG2DM_PROD_REPLACEMENT' and param_name = 'etlp_exception_table';
   INSERT INTO &m_di_mon..etl_sys_param (jobname, param_name, param_value, default_func)
   values("LOAD_STG2DM_PROD_REPLACEMENT", "etlp_exception_table","DI_MON.STG_PRODUCT_REPLACEMENT_X",'"DI_MON.STG_PRODUCT_REPLACEMENT_X"');
quit;

proc sql;
DELETE from &m_di_mon..Job_param where jobname = 'LOAD_SRC2STG_PROD_REPLACEMENT' and param_name = 'etlp_src_file';
   INSERT INTO &m_di_mon..Job_param (jobname, param_name, param_value, default_func)
   values("LOAD_SRC2STG_PROD_REPLACEMENT",  "etlp_src_file",             "/data/stg_prod_replacement.csv",      '"Y"'   );
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID845508
   :DESCRIPTION:    Update description for global setting MAX_SUBPLAN_ILCNT
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 21MAR2012
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..GLOBAL_SETTING


proc sql;
UPDATE &m_di_data..GLOBAL_SETTING
set SPEC_DESC = 'Specifies the number of product-location pairs at or above which a price plan is divided into subplans for optimization or evaluation.'
  where SPEC_NM = 'MAX_SUBPLAN_ILCNT';
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID848290
   :DESCRIPTION:    Add global setting GENERATED_BULK_PACK_PREFIX for Pack Opt
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 30MAR2012
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..GLOBAL_SETTING


proc sql;
   DELETE from &m_di_data..GLOBAL_SETTING where SPEC_NM = 'GENERATED_BULK_PACK_PREFIX';
   INSERT INTO &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
   VALUES  ('GENERATED_BULK_PACK_PREFIX','SZPK','GB',
      'Specifies the prefix to add to the names of generated bulk packs. This value should contain no more than 4 characters.');
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID848133
   :DESCRIPTION:    Remove global setting MIN_BASELINE_DEMAND
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 30MAR2012
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..GLOBAL_SETTING


proc sql;
DELETE from &m_di_data..GLOBAL_SETTING where SPEC_NM = 'MIN_BASELINE_DEMAND';
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID848290_1
   :DESCRIPTION:    Modify description for global setting GENERATED_BULK_PACK_PREFIX
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 02APR2012
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..GLOBAL_SETTING


proc sql;
   UPDATE &m_di_data..GLOBAL_SETTING
     SET SPEC_DESC = 'Specifies the prefix to add to the IDs of generated bulk packs. This value should contain no more than 4 characters.'
     WHERE SPEC_NM = 'GENERATED_BULK_PACK_PREFIX';
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID850539
   :DESCRIPTION:    Add global setting CASE_PACK_ATTR
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 05APR2012
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..GLOBAL_SETTING


proc sql;
   DELETE from &m_di_data..GLOBAL_SETTING where SPEC_NM = 'CASE_PACK_ATTR';
   INSERT INTO &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
   VALUES  ('CASE_PACK_ATTR','ALL','CASE_PACK', 'Specifies the attribute name for the case pack size.');
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID853574
   :DESCRIPTION:    Insert PLAN_LOW_DATA_LVL in global_setting
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 18APR2012
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   :DOC:  Check to see if a spec exists for spec_nm=PLAN_LOW_DATA_LVL
   :DOC:        and APP=RPP in di_data.global_setting.
   :DOC:  If it does not then insert a row

   %local  m_plan_low_data_lvl_value m_plan_low_data_lvl_cnt;
   proc sql noprint;


        select spec_value into :m_plan_low_data_lvl_value
         from &m_di_data..global_setting
        where SPEC_NM="GEO_PROD_LOW_DATA_LVL"
        and APP="ALL"

         ;

       select count(*) into :m_plan_low_data_lvl_cnt
       from &m_di_data..global_setting
       where SPEC_NM="PLAN_LOW_DATA_LVL"
       AND APP='RPP'

       ;

   quit;

   /* If no setting exists for PLAN_LOW_DATA_LVL then seed it with the value of GEO_PROD_LOW_DATA_LVL */
   %if ( &m_plan_low_data_lvl_cnt<1) %then
   %do;
      proc sql noprint;
         INSERT INTO &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
         VALUES  ('PLAN_LOW_DATA_LVL','RPP',"&m_plan_low_data_lvl_value",
         'Specifies the lowest location level and lowest product level for plan members.');
      quit;
   %end;


:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID853326
   :DESCRIPTION:    Drop tables that are no longer used
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 18APR2012
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE



    proc sql;

        drop table &m_di_data..CLR_DC_INV_REPORT;
        drop table &m_di_data..CLR_EFF_REPORT;
        drop table &m_di_data..CLR_INV_AGING_REPORT;
        drop table &m_di_data..CLR_ITEM_SEL_REPORT;
        drop table &m_di_data..CLR_MD_PROJECTION_REPORT;
        drop table &m_di_data..CLR_MD_PROJECTION_REPORT_WEEKLY;
        drop table &m_di_data..MKDN_APPR_REPORT;
        drop table &m_di_data..REG_COST_CHG_REPORT;
        drop table &m_di_data..REG_COST_HIST_REPORT;
        drop table &m_di_data..REG_GM_CHG_REPORT;
        drop table &m_di_data..REG_SKU_COST_CHG_REPORT;
        drop table &m_di_data..REG_SKU_RETAIL_CHG_REPORT;
        drop table &m_di_data..RPP_PGSPOT;
        drop table &m_di_data..RPP_PROMOEFF;
        drop table &m_di_data..RPP_PROMOPLAN;
        drop table &m_di_data..RPP_PROMOSUMM;
        drop table &m_di_data..RPP_VENDOR_FUND;
        drop table &m_di_data..RPP_VG_SUMMARY;

        drop table &m_di_data..REPORT_DEMAND_DECOM_DATE_SK;
        drop table &m_di_data..REPORT_MEASURES_DATE_SK;

    quit;


:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID854785
   :DESCRIPTION:    Move folders in di_data that are no longer valid to archive folder
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 20APR2011
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   %let parentdir=%di_util_first_libpath(&m_di_data);


   %let moveToSubdir=archive;
   %let _dir = %sysfunc(dcreate(&moveToSubdir,&parentdir));

   %if "&sysscp"="WIN" %then
   %do;
       %let m_sepchar=\;
       %let m_movecmd=move;
       options noxwait;
   %end;

   %else
   %do;
       %let m_sepchar=/;
       %let m_movecmd=mv;
   %end;

   %if %sysfunc(fileexist(%quote(&parentdir&m_sepchar.&moveToSubdir))) %then
   %do;

      %let sourceDir=promotion_fact;
      %if %sysfunc(fileexist(%quote(&parentdir&m_sepchar.&sourceDir))) %then
      %do;
         X "&m_movecmd &parentdir&m_sepchar.&sourceDir &parentdir&m_sepchar.&moveToSubdir" ;
      %end;

      %let sourceDir=promotion_fact_future;
      %if %sysfunc(fileexist(%quote(&parentdir&m_sepchar.&sourceDir))) %then
      %do;
         X "&m_movecmd &parentdir&m_sepchar.&sourceDir &parentdir&m_sepchar.&moveToSubdir" ;
      %end;

      %let sourceDir=promo_sales_fact;
      %if %sysfunc(fileexist(%quote(&parentdir&m_sepchar.&sourceDir))) %then
      %do;
         X "&m_movecmd &parentdir&m_sepchar.&sourceDir &parentdir&m_sepchar.&moveToSubdir" ;
      %end;


   %end;
   %else %do;
       %put NOTE: Directory "&parentdir&m_sepchar.&moveToSubdir" does not exist.;
   %end;



:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID854785B
   :DESCRIPTION:    Move folders prf_sales_fact, prf_stockout_fact and prf_geo_prod_status to archive
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 20APR2011
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   %let parentdir=%di_util_first_libpath(&m_di_data);


   %let moveToSubdir=archive;
   %let _dir = %sysfunc(dcreate(&moveToSubdir,&parentdir));

   %if "&sysscp"="WIN" %then
   %do;
       %let m_sepchar=\;
       %let m_movecmd=move;
       options noxwait;
   %end;

   %else
   %do;
       %let m_sepchar=/;
       %let m_movecmd=mv;
   %end;

   %if %sysfunc(fileexist(%quote(&parentdir&m_sepchar.&moveToSubdir))) %then
   %do;

      %let sourceDir=prf_sales_fact;
      %if %sysfunc(fileexist(%quote(&parentdir&m_sepchar.&sourceDir))) %then
      %do;
         X "&m_movecmd &parentdir&m_sepchar.&sourceDir &parentdir&m_sepchar.&moveToSubdir" ;
      %end;

      %let sourceDir=prf_stockout_fact;
      %if %sysfunc(fileexist(%quote(&parentdir&m_sepchar.&sourceDir))) %then
      %do;
         X "&m_movecmd &parentdir&m_sepchar.&sourceDir &parentdir&m_sepchar.&moveToSubdir" ;
      %end;

      %let sourceDir=prf_geo_prod_status;
      %if %sysfunc(fileexist(%quote(&parentdir&m_sepchar.&sourceDir))) %then
      %do;
         X "&m_movecmd &parentdir&m_sepchar.&sourceDir &parentdir&m_sepchar.&moveToSubdir" ;
      %end;


   %end;
   %else %do;
       %put NOTE: Directory "&parentdir&m_sepchar.&moveToSubdir" does not exist.;
   %end;



:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID846366
   :DESCRIPTION:    Retain 52 weeks of historical simple price promotions in Promotion fact
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 24APR2012
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_mon..job_param

   proc sql;
      update &m_di_mon..job_param
         set param_value = '52',
             default_func = '"52"'
       WHERE upcase(JOBNAME) = 'LOAD_STG2DM_PROMOTION_FACT'
         and PARAM_NAME = 'etlp_price_hist_weeks_keep';
   quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID856810
   :DESCRIPTION:    Always check for scope violation of PROD_PARTITION_LVL among imported promotion plans
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 25APR2012
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_mon..job_param

   proc sql;
      update &m_di_mon..job_param
         set param_value = '',
             default_func = '"1"'
       WHERE upcase(JOBNAME) in ('LOAD_STG2DM_RPP_PLAN','LOAD_STG2DM_RPP_PLAN_PROD_ASGMNT')
         and PARAM_NAME = 'etlp_find_scope_exception';
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      ID861308
   :DESCRIPTION:    Drop PRIM_KEY on GEO_PROD_EXCEPTION
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 10MAY2012
   :SUPPORT:        Ashish Sharma
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..GEO_PROD_EXCEPTION

   proc sql;
      create table _index as
      select indxname, indxpos, upcase(name) as name
      from dictionary.indexes
      where libname = upcase("&m_di_data")
      and   memname = upcase("GEO_PROD_EXCEPTION")
      ;
   quit;

   proc sql noprint;
      select count(*) into :l_count_prim_key from _index
      where indxname='PRIM_KEY';
   quit;

   %if &l_count_prim_key > 0 %then
   %do;
   proc sql;
      alter table &m_di_data..GEO_PROD_EXCEPTION drop CONSTRAINT PRIM_KEY;
   quit;
   %end;

   proc sql noprint;
      select count(*) into :l_count_cp_idx from _index
      where indxname='GP_IDX_GPE';
   quit;

   %if &l_count_cp_idx = 0 %then
   %do;
   proc sql;
      CREATE INDEX GP_IDX_GPE ON &m_di_data..GEO_PROD_EXCEPTION(PROD_HIER_SK, GEO_HIER_SK);
   quit;
   %end;

   %di_util_drop_table(_index)

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID863106
   :DESCRIPTION:    Remove global setting CONSLDT_PRICE_GEO_LVL
   :VERSION:        D3MICM521
   :DATE_OF_CHANGE: 15MAY2012
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..GLOBAL_SETTING


proc sql;
DELETE from &m_di_data..GLOBAL_SETTING where SPEC_NM = 'CONSLDT_PRICE_GEO_LVL';
quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID864476
   :DESCRIPTION:    Add Full Refresh parameter for LOAD_DM_RPP_APPROVED_ASGMNT
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 30MAY2012
   :SUPPORT:        Krishan Sahu
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_mon..job_param


proc sql;
DELETE from &m_di_mon..job_param WHERE upcase(JOBNAME) = "LOAD_DM_RPP_APPROVED_ASGMNT"
         and upcase(PARAM_NAME) = 'FULL_REFRESH';

   Insert into &m_di_mon..job_param (jobname, param_name, param_value, default_func)
   values("LOAD_DM_RPP_APPROVED_ASGMNT","Full_refresh","",'"1"' );
quit;



:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID866948
   :DESCRIPTION:    Add parameter etlp_use_hash_lookup for LOAD_STG2DM_CUSTOM_ATTR
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 31MAY2012
   :SUPPORT:        Priyalal
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_mon..job_param


Proc sql;
delete from &m_di_mon..job_param
where PARAM_NAME='etlp_use_hash_lookup'
      and JOBNAME='LOAD_STG2DM_CUSTOM_ATTR';

insert into &m_di_mon..job_param
(JOBNAME ,PARAM_NAME ,PARAM_VALUE, DEFAULT_FUNC)
values('LOAD_STG2DM_CUSTOM_ATTR','etlp_use_hash_lookup','1','"1"');
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID895694
   :DESCRIPTION:    Add VENDOR_SUPPORT Long Term Vendor Funding (LTVF) support within the RO system
   :VERSION:        M1MICM521
   :DATE_OF_CHANGE: 07SEP2012
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE

   data &m_di_data..VENDOR_SUPPORT;
   attrib VENDOR_DEAL_ID    length = $32                                                            ;
   attrib PROD_HIER_SK      length = 6                                                              ;
   attrib GEO_HIER_SK       length = 4                                                              ;
   attrib SUPPORT_NAME      length = $32                                                            ;
   attrib START_DT          length = 8 FORMAT = &m_DTFMT. INFORMAT = &m_DTFMT.                      ;
   attrib END_DT            length = 8 FORMAT = &m_DTFMT. INFORMAT = &m_DTFMT.                      ;
   attrib SUPPORT_TYPE      length = 4                                                              ;
   attrib SUPPORT_AMT       length = 8 FORMAT = NLNUM20.3 INFORMAT = NLNUM20.3                      ;
   attrib APPLY_TO_BASE_FLG length = 4                                                              ;
   stop; run;

   proc sql;
   alter table &m_di_data..VENDOR_SUPPORT add CONSTRAINT PRIM_KEY PRIMARY KEY (VENDOR_DEAL_ID, PROD_HIER_SK, GEO_HIER_SK, SUPPORT_NAME);
   alter table &m_di_data..VENDOR_SUPPORT add NOT NULL (START_DT);
   alter table &m_di_data..VENDOR_SUPPORT add NOT NULL (END_DT);
   alter table &m_di_data..VENDOR_SUPPORT add NOT NULL (SUPPORT_TYPE);
   alter table &m_di_data..VENDOR_SUPPORT add NOT NULL (SUPPORT_AMT);
   alter table &m_di_data..VENDOR_SUPPORT add NOT NULL (APPLY_TO_BASE_FLG);
   quit;

   proc sql;
      CREATE INDEX VENDOR_SUPPORT_IX1 ON &m_di_data..VENDOR_SUPPORT
      (
              PROD_HIER_SK,
              GEO_HIER_SK,
              START_DT,
              END_DT
      );
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      ID895694_STG
   :DESCRIPTION:    Add stg and mon for VENDOR_SUPPORT Long Term Vendor Funding (LTVF)
   :VERSION:        M1MICM521
   :DATE_OF_CHANGE: 07SEP2012
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE


   data &m_didm_stg..STG_VENDOR_SUPPORT;
      attrib VENDOR_DEAL_ID                      length = $32                                       ;
      attrib PROD_ID                             length = $32                                       ;
      attrib GEO_ID                              length = $32                                       ;
      attrib SUPPORT_NAME                        length = $32                                       ;
      attrib START_DT                            length = 8   FORMAT=&m_DTFMT INFORMAT=&m_STG_DTINFMT;
      attrib END_DT                              length = 8   FORMAT=&m_DTFMT INFORMAT=&m_STG_DTINFMT;
      attrib SUPPORT_TYPE                        length = 4                                         ;
      attrib SUPPORT_AMT                         length = 8    FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3;
      attrib APPLY_TO_BASE_FLG                   length = 4                                         ;
      attrib CHANGE_FLG                          length = $1                                        ;
   stop; run;

   proc sql;
      alter table &m_didm_stg..STG_VENDOR_SUPPORT add NOT NULL (VENDOR_DEAL_ID);
      alter table &m_didm_stg..STG_VENDOR_SUPPORT add NOT NULL (PROD_ID);
      alter table &m_didm_stg..STG_VENDOR_SUPPORT add NOT NULL (GEO_ID);
      alter table &m_didm_stg..STG_VENDOR_SUPPORT add NOT NULL (SUPPORT_NAME);
      alter table &m_didm_stg..STG_VENDOR_SUPPORT add NOT NULL (CHANGE_FLG);
   quit;


   data &m_di_mon..STG_VENDOR_SUPPORT_X;
   attrib VENDOR_DEAL_ID length = $32
          PROD_ID        length = $32
          GEO_ID         length = $32
          SUPPORT_NAME   length = $32
          START_DT       length = 8 format=&m_DTFMT
          END_DT         length = 8 format=&m_DTFMT
          SUPPORT_TYPE   length = 4
          SUPPORT_AMT    length = 8 FORMAT=NLNUM20.3
          APPLY_TO_BASE_FLG length = 4
          CHANGE_FLG     length = $1
          ETLS_EXCEPTION_COND length = $100
          ETL_ERROR_JOBRUNTIME length = 8 format=DATETIME16. ;
   stop; run;

   proc sql noprint ;
      delete from &m_di_mon..etl_sys_param where jobname="LOAD_STG2DM_VENDOR_SUPPORT"
      and param_name="etlp_exception_table"
      ;
      Insert into &m_di_mon..etl_sys_param
      (jobname, param_name, param_value, default_func)
      values("LOAD_STG2DM_VENDOR_SUPPORT",  "etlp_exception_table", "DI_MON.STG_VENDOR_SUPPORT_X",  '"DI_MON.STG_VENDOR_SUPPORT_X"'  )
      ;
      delete from &m_di_mon..job_param where jobname="LOAD_SRC2STG_VENDOR_SUPPORT"
      and param_name="etlp_src_file"
      ;
      Insert into &m_di_mon..job_param
      (jobname, param_name, param_value, default_func)
      values("LOAD_SRC2STG_VENDOR_SUPPORT",  "etlp_src_file", "/data/stg_vendor_support.csv",  '"Y"'  )
      ;
   quit;

   proc sort data=&m_di_mon..job_param force;
      by jobname param_name;
   run;

   proc sort data = &m_di_mon..etl_sys_param force;
      by jobname param_name;
   run;
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      LOOKUP_VALUES_FOR_VENDOR_SUPPORT
   :DESCRIPTION:    Add lookup values for VENDOR_SUPPORT
   :VERSION:        M1MICM521
   :DATE_OF_CHANGE: 10SEP2012
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE

   proc sql;

   DELETE FROM &m_di_data..FIELD_LOOKUP_VALUES
    WHERE upcase(FIELD_NM) = 'SUPPORT_TYPE'
      AND upcase(TABLE_NAME) = 'VENDOR_SUPPORT';

   INSERT INTO &m_di_data..FIELD_LOOKUP_VALUES (FIELD_NM, TABLE_NAME, FIELD_VALUE, FIELD_VALUE_NM,
      FIELD_VALUE_DESC, FIELD_DATATYPE)
   VALUES ('SUPPORT_TYPE', 'VENDOR_SUPPORT', '1', 'AMOUNT_OFF_CASE', 'amount off per case pack', 'INTEGER');
   INSERT INTO &m_di_data..FIELD_LOOKUP_VALUES (FIELD_NM, TABLE_NAME, FIELD_VALUE, FIELD_VALUE_NM,
      FIELD_VALUE_DESC, FIELD_DATATYPE)
   VALUES ('SUPPORT_TYPE', 'VENDOR_SUPPORT', '2', 'AMOUNT_OFF_UNIT', 'amount off per unit', 'INTEGER');
   INSERT INTO &m_di_data..FIELD_LOOKUP_VALUES (FIELD_NM, TABLE_NAME, FIELD_VALUE, FIELD_VALUE_NM,
      FIELD_VALUE_DESC, FIELD_DATATYPE)
   VALUES ('SUPPORT_TYPE', 'VENDOR_SUPPORT', '3', 'PERCENT_OFF_UNIT', 'percent off amount per unit', 'INTEGER');

   DELETE FROM &m_di_data..FIELD_LOOKUP_VALUES
    WHERE upcase(FIELD_NM) = 'APPLY_TO_BASE_FLG'
      AND upcase(TABLE_NAME) = 'VENDOR_SUPPORT';

   INSERT INTO &m_di_data..FIELD_LOOKUP_VALUES (FIELD_NM, TABLE_NAME, FIELD_VALUE, FIELD_VALUE_NM,
      FIELD_VALUE_DESC, FIELD_DATATYPE)
   VALUES ('APPLY_TO_BASE_FLG', 'VENDOR_SUPPORT', '0', 'NOT_APPLIED_TO_BASE',
           'Values are for display only and not applied to base cost', 'INTEGER');
   INSERT INTO &m_di_data..FIELD_LOOKUP_VALUES (FIELD_NM, TABLE_NAME, FIELD_VALUE, FIELD_VALUE_NM,
      FIELD_VALUE_DESC, FIELD_DATATYPE)
   VALUES ('APPLY_TO_BASE_FLG', 'VENDOR_SUPPORT', '1', 'APPLIED_TO_BASE',
           'Values are applied to base cost when determining metrics such as margins, etc', 'INTEGER');
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID905746
   :DESCRIPTION:    Add PRICE_OVERRIDE_AMT in STG_RPP_PLAN_PROD_ASGMNT
   :VERSION:        M1MICM521
   :DATE_OF_CHANGE: 11OCT2012
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE

   proc sql;
      alter table &m_didm_stg..STG_RPP_PLAN_PROD_ASGMNT
      add PRICE_OVERRIDE_AMT NUM 8 format = NLNUM20.3 INFORMAT=NLNUM20.3;
   quit;

   proc sql;
      alter table &m_di_mon..STG_RPP_PLAN_PROD_ASGMNT_X
      add PRICE_OVERRIDE_AMT NUM 8 format = NLNUM20.3 INFORMAT=NLNUM20.3;
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      ID935955
   :DESCRIPTION:    Add new global setting for Pack Opt
   :VERSION:        F1MICM521
   :DATE_OF_CHANGE: 04FEB2013
   :SUPPORT:        Teresa McMains
   :FREQUENCY:      ONCE



   %let l_count_enforce_fair_sharing=0;

   proc sql noprint;
      select count(*) into :l_count_enforce_fair_sharing from &m_di_data..global_setting
      where SPEC_NM='ENFORCE_FAIR_SHARING';
   quit;


   %if &l_count_enforce_fair_sharing = 0 %then
  %do;

              proc sql;
                insert into &m_di_data..GLOBAL_SETTING (spec_nm, app, spec_value, spec_desc)
                values ('ENFORCE_FAIR_SHARING', 'SZPK', '0',
                         'Set to 0 to allow pack swaps among stores to improve cost');
              quit;
   %end;
   %else
   %do;
      %put NOTE:Global_setting for spec_nm of ENFORCE_FAIR_SHARING already exists.;
   %end;




   %let l_count_force_allocation_qty=0;

   proc sql noprint;
      select count(*) into :l_count_force_allocation_qty from &m_di_data..global_setting
      where SPEC_NM='FORCE_ALLOCATION_QTY';
   quit;


   %if &l_count_force_allocation_qty = 0 %then
   %do;

              proc sql;
                insert into  &m_di_data..GLOBAL_SETTING (spec_nm, app, spec_value, spec_desc)
                values ('FORCE_ALLOCATION_QTY', 'SZPK', '0',
                          'Set to 1 to allocate at least the sum of the stores allocation qty');
              quit;
   %end;
   %else
   %do;
      %put NOTE:Global_setting for spec_nm of FORCE_ALLOCATION_QTY already exists.;
   %end;


quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID938326_attribute_consolidation
   :DESCRIPTION:    Consolidation of product and geography Attribute stage tables.
   :VERSION:        M2MICM521
   :DATE_OF_CHANGE: 28JAN2013
   :SUPPORT:        Avinash Khairnar
   :FREQUENCY:      ONCE


data &m_didm_stg..STG_ATTRIBUTE_VALUES;
attrib ATTR_NM       length=$40;
attrib OBJECT_TYPE   length=$1 ;
attrib OBJECT_ID     length=$32;
attrib ATTR_VALUE    length=$40;
attrib CHANGE_FLG    length=$1 ;
stop; run;

proc sql noprint;

alter table &m_didm_stg..STG_ATTRIBUTE_VALUES add NOT NULL (ATTR_NM);
alter table &m_didm_stg..STG_ATTRIBUTE_VALUES add NOT NULL (OBJECT_TYPE);
alter table &m_didm_stg..STG_ATTRIBUTE_VALUES add NOT NULL (OBJECT_ID);
alter table &m_didm_stg..STG_ATTRIBUTE_VALUES add NOT NULL (ATTR_VALUE);

delete * from &m_di_mon..job_param
 where jobname ='LOAD_SRC2STG_ATTRIBUTE_VALUES' and  param_name = 'etlp_src_file';

Insert into &m_di_mon..job_param
(jobname, param_name, param_value, default_func)
values("LOAD_SRC2STG_ATTRIBUTE_VALUES",  "etlp_src_file", "/data/stg_attribute_values.csv",  '"Y"'  );


delete * from &m_di_mon..job_param
where jobname in ('LOAD_STG2DM_PROD_ATTRIBUTE_VALUES', 'LOAD_STG2DM_GEO_ATTRIBUTE_VALUES') ;

Insert into &m_di_mon..job_param
(jobname, param_name, param_value, default_func)
values("LOAD_STG2DM_PROD_ATTRIBUTE_VALUES","etlp_date_format","DATE9.",'"DATE9."')
values("LOAD_STG2DM_PROD_ATTRIBUTE_VALUES","etlp_datetime_format","NLDATM21.",'"NLDATM21."')
values("LOAD_STG2DM_PROD_ATTRIBUTE_VALUES","etlp_use_hash_lookup","1",'"1"')
values("LOAD_STG2DM_GEO_ATTRIBUTE_VALUES","etlp_date_format","DATE9.",'"DATE9."')
values("LOAD_STG2DM_GEO_ATTRIBUTE_VALUES","etlp_datetime_format","NLDATM21.",'"NLDATM21."')
;

delete from &m_di_mon..etl_sys_param where jobname in ("LOAD_STG2DM_PROD_ATTRIBUTE_VALUES","LOAD_STG2DM_GEO_ATTRIBUTE_VALUES")
and param_name="etlp_exception_table"
;
Insert into &m_di_mon..etl_sys_param
(jobname, param_name, param_value, default_func)
values("LOAD_STG2DM_PROD_ATTRIBUTE_VALUES","etlp_exception_table", "DI_MON.STG_PRODUCT_ATTRIBUTES_X",'"DI_MON.STG_PRODUCT_ATTRIBUTES_X"' )
values("LOAD_STG2DM_GEO_ATTRIBUTE_VALUES","etlp_exception_table", "DI_MON.STG_GEOGRAPHY_ATTRIBUTES_X",'"DI_MON.STG_GEOGRAPHY_ATTRIBUTES_X"' )
;

quit;

/*New Exception tables for DQ*/
data &m_di_mon..DQ_PRODUCT_ATTRIBUTE_X;
attrib PROD_HIER_SK length=6;
attrib PROD_LVL length=4;
attrib PROD_ATTR_SK length=4;
attrib PROD_ATTR_VALUE length=$40;
attrib DQ_EXCEPTION_COND length=$100;
attrib DQ_ERROR_JOBRUNTIME length=8 format=NLDATM21. ;
stop;
run;

data &m_di_mon..DQ_GEOGRAPHY_ATTRIBUTE_X;
attrib GEO_HIER_SK length=4;
attrib GEO_LVL length=4;
attrib GEO_ATTR_SK length=4;
attrib GEO_ATTR_VALUE length=$40;
attrib DQ_EXCEPTION_COND length=$100;
attrib DQ_ERROR_JOBRUNTIME length=8 format=NLDATM21. ;
stop;
run;

:END_CHANGE:
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      NEW_STAGE_52M
   :DESCRIPTION:    Determine if Customer is using 5.2M1 or prior Stage or Reduced stg for 5.2M2 and future
   :VERSION:        M2MICM521
   :DATE_OF_CHANGE: 11FEB2013
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_mon..etl_sys_param

   %local exist_new_stg_52m_setting;

   proc sql noprint;
      select count(1)
        into :exist_new_stg_52m_setting
        from &m_di_mon..etl_sys_param
       where jobname='ETJOBFLOW'
         and param_name = 'new_stage_52m';
   quit;

   %if %eval(&exist_new_stg_52m_setting eq 0) %then %do;
      proc sql;
         Insert into &m_di_mon..ETL_SYS_PARAM
         (jobname, param_name, param_value, default_func)
         values("ETJOBFLOW", "new_stage_52m", "1", '"1"');
      quit;
   %end;

   %if %symexist(m_delete_and_start_fresh) %then %do;
      %if %upcase(&m_delete_and_start_fresh) eq TRUE %then %do;
         *New Flow and New stage tables;
         proc sql;
            update &m_di_mon..ETL_SYS_PARAM
               set param_value = "1",
                   default_func = '"1"'
             where jobname='ETJOBFLOW'
               and param_name = 'new_stage_52m';
         quit;
      %end;
      %else %do;
         *Old Flow and old stage tables;
         proc sql;
            update &m_di_mon..ETL_SYS_PARAM
               set param_value = "0",
                   default_func = '"0"'
             where jobname='ETJOBFLOW'
               and param_name = 'new_stage_52m';
         quit;
      %end;
   %end;
   %else %do;
      %local geo_prod_etl;
      *if customer is loading GEO_PROD then it must be old stg model;
      proc sql noprint;
         select count(1)
           into :geo_prod_etl
           from &m_di_mon..job_status
          where jobname='Load_STG2DM_Geo_prod'
            and job_rc le 4;
      quit;

      %if %eval(&geo_prod_etl gt 0) %then %do;
         proc sql;
            update &m_di_mon..ETL_SYS_PARAM
               set param_value = "0",
                   default_func = '"0"'
             where jobname='ETJOBFLOW'
               and param_name = 'new_stage_52m';
         quit;
      %end;
   %end;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID848163
   :DESCRIPTION:    Populating ETL Job Schedule
   :VERSION:        D3MICM52
   :DATE_OF_CHANGE: 28MAR2012
   :SUPPORT:        Yogesh Dhuri
   :FREQUENCY:      ALWAYS



   %if %symexist(FORCE_ETLJOBFLOW) %then
   %do;
      %if "&FORCE_ETLJOBFLOW"="NEW_STAGE_52M" %then
      %do;
         proc sql;
            update &m_di_mon..ETL_SYS_PARAM
               set param_value = "1",
                   default_func = '"1"'
             where jobname='ETJOBFLOW'
               and param_name = 'new_stage_52m';
         quit;
      %end;
      %else %if "&FORCE_ETLJOBFLOW"="CLASSIC" %then
      %do;
         proc sql;
            update &m_di_mon..ETL_SYS_PARAM
               set param_value = "0",
                   default_func = '"0"'
             where jobname='ETJOBFLOW'
               and param_name = 'new_stage_52m';
         quit;
      %end;

   %end;

      %local exist_new_stg_52m_setting;

      proc sql noprint;
         select param_value
         into :etljobflow_setting
         from &m_di_mon..etl_sys_param
         where jobname='ETJOBFLOW'
            and param_name = 'new_stage_52m';
      quit;

      %let etljobflow_setting=&etljobflow_setting;

      %put etljobflow_setting=&etljobflow_setting;

      %if "&etljobflow_setting"="1" %then %do;
         %put NOTE: ETL job flows are setup to run with staging tables for new customers.;
         %put NOTE: This is typically valid for customers installing RO 5.2 m2 and and SO 3.2 m2 releases and beyond.;
         %put NOTE: Customers migrating from releases prior to RO 5.2 m2 and SO 3.2 m2 should typically not use this setup.;
      %end;
      %else
      %do;
         %put NOTE: ETL job flows are setup to run with staging tables for customers migrating from pre RO 5.2 m2 and and SO 3.2 m2 releases.;
      %end;


   %macro populate_etl_job_schedule;

      %if %sysfunc(fileexist(%quote(%di_util_misc_path()/seed/di_etl_seed.sas))) %then %do;

         %if (%sysfunc(libref(&m_di_mon.)) = 0) %then %do;

            %include "%di_util_misc_path()/seed/di_etl_seed.sas";
            %mi_etl_job_schedule(di_data=&m_di_data, di_mon_lib=&m_di_mon, adhoc=0);

         %end;

     %end;
     %else %do;
        %put ERROR- File "%di_util_misc_path()/seed/di_etl_seed.sas" must exist. ;
        %RETURN;
     %end;

   %mend;

   %populate_etl_job_schedule;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID940403
   :DESCRIPTION:    Add global setting FORCE_ALLOCATION_QTY
   :VERSION:        M2MICM521
   :DATE_OF_CHANGE: 12FEB2013
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..global_setting

proc sql;
select count (*) into :_exists from &m_di_data..global_setting
   where spec_nm = 'FORCE_ALLOCATION_QTY';
quit;
%if &_exists = 0 %then
%do;
proc sql;
 insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
   ('FORCE_ALLOCATION_QTY','SZPK','0',
   'Specifies whether SAS Pack Optimization always ships an amount greater than or equal to your Allocation Quantity (which is the total of all Store-SKU needs).');
quit;
%end;
%else
%do;
proc sql;
select spec_value into :_current_val from &m_di_data..global_setting
   where spec_nm = 'FORCE_ALLOCATION_QTY';
quit;
%if &_current_val NE 0 and &_current_val NE 1 %then
%do;
proc sql;
   update &m_di_data..global_setting set spec_value = '0' where spec_nm = 'FORCE_ALLOCATION_QTY';
quit;
%end;
proc sql;
   update &m_di_data..global_setting set spec_desc = 'Specifies whether SAS Pack Optimization always ships an amount greater than or equal to your Allocation Quantity (which is the total of all Store-SKU needs).'
     where spec_nm = 'FORCE_ALLOCATION_QTY';
quit;
%end;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID940412
   :DESCRIPTION:    Add global setting ENFORCE_FAIR_SHARING
   :VERSION:        M2MICM521
   :DATE_OF_CHANGE: 12FEB2013
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..global_setting

proc sql;
select count (*) into :_exists from &m_di_data..global_setting
   where spec_nm = 'ENFORCE_FAIR_SHARING';
quit;
%if &_exists = 0 %then
%do;
proc sql;
 insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
   ('ENFORCE_FAIR_SHARING','SZPK','0',
   'Specifies whether to adjust the distribution of packs more evenly among stores when the quantity of a pack desired at the stores is much higher or lower than the available quantity of that pack.');
quit;
%end;
%else
%do;
proc sql;
select spec_value into :_current_val from &m_di_data..global_setting
   where spec_nm = 'ENFORCE_FAIR_SHARING';
quit;
%if &_current_val NE 0 and &_current_val NE 1 %then
%do;
proc sql;
   update &m_di_data..global_setting set spec_value = '0' where spec_nm = 'ENFORCE_FAIR_SHARING';
quit;
%end;
proc sql;
   update &m_di_data..global_setting set spec_desc = 'Specifies whether to adjust the distribution of packs more evenly among stores when the quantity of a pack desired at the stores is much higher or lower than the available quantity of that pack.'
     where spec_nm = 'ENFORCE_FAIR_SHARING';
quit;
%end;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID896624
   :DESCRIPTION:    Uniquely identify products by adding orig_prod_active_dt to stg_product_replacement
   :VERSION:        M2MICM521
   :DATE_OF_CHANGE: 12FEB2013
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE

   proc sql;
      alter table &m_didm_stg..stg_product_replacement
      add ORIG_PROD_ACTIVE_DT num 8 informat=&m_STG_DTINFMT format=&m_DTFMT;
      ;
   quit;

   proc sql;
      alter table &m_di_mon..stg_product_replacement_x
      add ORIG_PROD_ACTIVE_DT num 8 informat=&m_DTFMT format=&m_DTFMT;
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID938326_check_partitioning
   :DESCRIPTION:    Create an exception table to consider exceptions related to partitioning
   :VERSION:        M2MICM521
   :DATE_OF_CHANGE: 09JAN2013
   :SUPPORT:        Sarita Kannarath
   :FREQUENCY:      ONCE


data &m_di_mon..DQ_PARTITION_EXCEPTION;
   attrib part_sk length=8.;
   attrib table_nm length=$50.;
   attrib prod_hier_sk length=8.;
   attrib DQ_EXCEPTION_COND length=$100;
        attrib DQ_ERROR_JOBRUNTIME length=8 format=NLDATM21. ;
   stop;
run;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID938326_Sales_inv_return_fact
   :DESCRIPTION:    Consolidation of sales, Inventory and return fact stage tables
   :VERSION:        M2MICM521
   :DATE_OF_CHANGE: 22FEB2013
   :SUPPORT:        Avinash Khairnar
   :FREQUENCY:      ONCE


data &m_didm_stg..STG_SALES_INVENTORY_RETURNS;
attrib PROD_ID    length = $32;
attrib GEO_ID     length = $32;
attrib WK_START_DT      length = 8 format=&m_DTFMT informat=&m_STG_DTINFMT;
attrib TOTAL_SALES_QTY  length = 8 format=NLNUM12.2 informat=NLNUM12.2;
attrib TOTAL_SALES_AMT  length = 8 format=NLNUM20.3 informat=NLNUM20.3;
attrib CLOSING_INV_UNIT length = 8 format=NLNUM12.2 informat=NLNUM12.2;
attrib RETURNED_UNITS   length = 8 format=NLNUM12.2 informat=NLNUM12.2;
attrib RETURNED_AMT     length = 8 format=NLNUM20.3 informat=NLNUM20.3;
stop;
run;

proc sql noprint;
alter table &m_didm_stg..STG_SALES_INVENTORY_RETURNS add NOT NULL (PROD_ID);
alter table &m_didm_stg..STG_SALES_INVENTORY_RETURNS add NOT NULL (GEO_ID);
alter table &m_didm_stg..STG_SALES_INVENTORY_RETURNS add NOT NULL (WK_START_DT);
quit;

data &m_di_mon..STG_SALES_INVENTORY_RETURNS_X;
attrib PROD_ID    length = $32;
attrib GEO_ID     length = $32;
attrib WK_START_DT      length = 8 format=&m_DTFMT ;
attrib TOTAL_SALES_QTY  length = 8 format=NLNUM12.2 ;
attrib TOTAL_SALES_AMT  length = 8 format=NLNUM20.3 ;
attrib CLOSING_INV_UNIT length = 8 format=NLNUM12.2 ;
attrib RETURNED_UNITS   length = 8 format=NLNUM12.2 ;
attrib RETURNED_AMT     length = 8 format=NLNUM20.3 ;
attrib ETLS_EXCEPTION_COND    length = $200;
attrib ETL_ERROR_JOBRUNTIME   length = 8 format = NLDATM21.;
stop;
run;

proc sql noprint;
   delete from &m_di_mon..etl_sys_param
   where jobname = "LOAD_STG2DM_SALES_INV_RETURN_FACT" and param_name="etlp_exception_table" ;

   Insert into &m_di_mon..etl_sys_param
      (jobname, param_name, param_value, default_func)
      values("LOAD_STG2DM_SALES_INV_RETURN_FACT","etlp_exception_table", "di_mon.STG_SALES_INVENTORY_RETURNS_X",'"di_mon.STG_SALES_INVENTORY_RETURNS_X"' )
      ;

   delete from &m_di_mon..job_param where jobname = "LOAD_SRC2STG_SALES_INVENTORY_RETURNS" ;
   Insert into &m_di_mon..job_param
        (jobname, param_name, param_value, default_func)
        values("LOAD_SRC2STG_SALES_INVENTORY_RETURNS","etlp_src_file", "/data/stg_sales_inventory_returns.csv",'"Y"' )
        values("LOAD_SRC2STG_SALES_INVENTORY_RETURNS","loadview", "",'"1"' )
        ;
   delete from &m_di_mon..job_param where jobname = "LOAD_STG2DM_SALES_INV_RETURN_FACT" ;
   Insert into &m_di_mon..job_param
      (jobname, param_name, param_value, default_func)
      values("LOAD_STG2DM_SALES_INV_RETURN_FACT","etlp_run_only_facts", " ",'"SALES_FACT INVENTORY_FACT RETURN_FACT"' )
      ;

quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID938326_GEO_PROD_PRICE
   :DESCRIPTION:    Consolidation of price_fact and price_fact_future stage tables
   :VERSION:        M2MICM521
   :DATE_OF_CHANGE: 25FEB2013
   :SUPPORT:        Sangeeta Rokde
   :FREQUENCY:      ONCE


data &m_di_mon..stg_geo_prod_price_x;
attrib PROD_ID        length = $32;
attrib GEO_ID         length = $32;
attrib EFFECTIVE_DT   length = 8 format=&m_DTFMT;
attrib REGULAR_PRICE   length = 8 format = NLNUM20.3;;
attrib ACTUAL_PERM_PRICE    length = 8 format = NLNUM20.3;;
attrib ETLS_EXCEPTION_COND length = $230 ;
attrib ETL_ERROR_JOBRUNTIME length = 8 format =datetime16. ;
stop;
run;

data &m_didm_stg..stg_geo_prod_price;
attrib PROD_ID        length = $32;
attrib GEO_ID         length = $32;
attrib EFFECTIVE_DT   length = 8 format=&m_DTFMT informat=&m_STG_DTINFMT;
attrib REGULAR_PRICE   length = 8 format = NLNUM20.3;
attrib ACTUAL_PERM_PRICE    length = 8 format = NLNUM20.3;
stop;
run;

proc sql;
alter table &m_didm_stg..STG_GEO_PROD_PRICE add NOT NULL (GEO_ID);
alter table &m_didm_stg..STG_GEO_PROD_PRICE add NOT NULL (PROD_ID);
alter table &m_didm_stg..STG_GEO_PROD_PRICE add NOT NULL (EFFECTIVE_DT);
alter table &m_didm_stg..STG_GEO_PROD_PRICE add NOT NULL (REGULAR_PRICE);
alter table &m_didm_stg..STG_GEO_PROD_PRICE add NOT NULL (ACTUAL_PERM_PRICE);
quit;


proc sql;
   delete from &m_di_mon..etl_sys_param
   where upper(jobname) ="LOAD_STG2DM_GEO_PROD_PRICE_FACT" and
   param_name="etlp_exception_table";

   Insert into &m_di_mon..etl_sys_param(jobname, param_name, param_value, default_func)
   values("LOAD_STG2DM_GEO_PROD_PRICE_FACT","etlp_exception_table","di_mon.STG_GEO_PROD_PRICE_X",'"di_mon.STG_GEO_PROD_PRICE_X"');

   delete from &m_di_mon..job_param
   where upper(jobname) ="LOAD_STG2DM_GEO_PROD_PRICE_FACT" and
   param_name="Full_refresh";

   Insert into &m_di_mon..job_param(jobname, param_name, param_value, default_func)
   values("LOAD_STG2DM_GEO_PROD_PRICE_FACT","Full_refresh","",'"0"');

   delete from &m_di_mon..job_param
   where upper(PARAM_NAME) = "STG_DATA_OVERRIDE"
   and upper(jobname) = "LOAD_STG2DM_GEO_PROD_PRICE_FACT";

   insert into &m_di_mon..job_param(JOBNAME,PARAM_NAME,PARAM_VALUE,DEFAULT_FUNC)
   values("LOAD_STG2DM_GEO_PROD_PRICE_FACT","stg_data_override","1",'"1"');

   delete from &m_di_mon..job_param
   where jobname = "LOAD_STG2DM_GEO_PROD_PRICE_FACT" and param_name="etlp_move_futr_to_curr";

   Insert into &m_di_mon..job_param(jobname, param_name, param_value, default_func)
   values("LOAD_STG2DM_GEO_PROD_PRICE_FACT","etlp_move_futr_to_curr","",'"0"'   )
   ;

   delete from  &m_di_mon..job_param
   where jobname="LOAD_STG2DM_GEO_PROD_PRICE_FACT" and param_name="etlp_reload_history_data" ;

   Insert into &m_di_mon..job_param(jobname, param_name, param_value, default_func)
   values("LOAD_STG2DM_GEO_PROD_PRICE_FACT","etlp_reload_history_data","0",'"0"' )
   ;

   delete from &m_di_mon..job_param where jobname = "LOAD_SRC2STG_GEO_PROD_PRICE" ;
   Insert into &m_di_mon..job_param(jobname, param_name, param_value, default_func)
   values("LOAD_SRC2STG_GEO_PROD_PRICE","etlp_src_file", "/data/stg_geo_prod_price.csv",'"Y"' )
   values("LOAD_SRC2STG_GEO_PROD_PRICE","loadview", "",'"1"' )
   ;
quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      GEO_PROD_OVERRIDE
   :DESCRIPTION:    Create table GEO_PROD_OVERRIDE and STG_GEO_PROD_OVERRIDE
   :VERSION:        M2MICM521
   :DATE_OF_CHANGE: 26FEB2013
   :SUPPORT:        Priyalal
   :FREQUENCY:      ONCE

   data &m_didm_stg..STG_GEO_PROD_OVERRIDE;
        attrib PROD_ID               length=$32;
        attrib GEO_ID                length=$32;
        attrib STATUS_VALID_FROM_DT  length=8  FORMAT=&m_DTFMT INFORMAT=&m_STG_DTINFMT;
        attrib STATUS                length=$20;
        attrib SEASON_CD             length=4;
        attrib SALES_DISCONTINUED_DT length=8 FORMAT=&m_DTFMT INFORMAT=&m_STG_DTINFMT;
        attrib VENDOR_ID             length=$32 ;
        attrib MIN_INV_LVL           length=8 FORMAT=NLNUM12.2 INFORMAT=NLNUM12.2;
        attrib CHANGE_FLG            length=$1;
  Stop;
  Run;


  proc sql;
  alter table &m_didm_stg..STG_GEO_PROD_OVERRIDE add NOT NULL (PROD_ID);
  alter table &m_didm_stg..STG_GEO_PROD_OVERRIDE add NOT NULL (GEO_ID);
  quit;


  data &m_di_mon..STG_GEO_PROD_OVERRIDE_X;
     attrib PROD_ID               length=$32;
     attrib GEO_ID                length=$32;
     attrib STATUS_VALID_FROM_DT  length=8  FORMAT=&m_DTFMT ;
     attrib STATUS                length=$20;
     attrib SEASON_CD             length=4;
     attrib SALES_DISCONTINUED_DT length=8 FORMAT=&m_DTFMT  ;
     attrib VENDOR_ID             length=$32 ;
     attrib MIN_INV_LVL           length=8;
     attrib CHANGE_FLG            length=$1;
     attrib ETLS_EXCEPTION_COND length=$200;
     attrib ETL_ERROR_JOBRUNTIME length=8 format=&m_DTTMFMT  ;
  stop;
  run;



  data &m_di_data..GEO_PROD_OVERRIDE;
     attrib PROD_HIER_SK          length=6;
     attrib GEO_HIER_SK           length=4;
     attrib SALES_DISCONTINUED_DT length=8 FORMAT=&m_DTFMT ;
     attrib INITIAL_SEASON_CD     length=4;
     attrib SEASON_CD             length=4;
     attrib VENDOR_SK             length=4;
     attrib MIN_INV_LVL           length=8 FORMAT=NLNUM12.2;
     attrib UPDATED_DTTM          length=8 FORMAT=&m_DTTMFMT;
  stop;
  run;

  proc sql;
  alter table &m_di_data..GEO_PROD_OVERRIDE add CONSTRAINT PRIM_KEY PRIMARY KEY (PROD_HIER_SK ,GEO_HIER_SK);
  alter table &m_di_data..GEO_PROD_OVERRIDE add NOT NULL (UPDATED_DTTM);
  quit;


  data &m_di_data..GEO_PROD_STATUS_OVERRIDE;
     attrib PROD_HIER_SK          length=6;
     attrib GEO_HIER_SK           length=4;
     attrib VALID_FROM_DT         length=8 FORMAT=&m_DTFMT ;
     attrib VALID_TO_DT           length=8 FORMAT=&m_DTFMT ;
     attrib GEO_PROD_STATUS       length=4;
     attrib UPDATED_DTTM          length=8 FORMAT=&m_DTTMFMT;
  stop;
  run;

  proc sql;
  alter table &m_di_data..GEO_PROD_STATUS_OVERRIDE add CONSTRAINT PRIM_KEY PRIMARY KEY (PROD_HIER_SK ,GEO_HIER_SK,  VALID_FROM_DT);
  alter table &m_di_data..GEO_PROD_STATUS_OVERRIDE add NOT NULL (VALID_TO_DT);
  alter table &m_di_data..GEO_PROD_STATUS_OVERRIDE add NOT NULL (GEO_PROD_STATUS);
  alter table &m_di_data..GEO_PROD_STATUS_OVERRIDE add NOT NULL (UPDATED_DTTM);
  quit;



  proc sql;
     delete from  &m_di_mon..job_param
     Where upcase(jobname) eq 'LOAD_SRC2STG_GEO_PROD_OVERRIDE' and
     param_name = 'etlp_src_file';

     insert into &m_di_mon..job_param
     (jobname,                     param_name,       param_value,                 default_func)
      values("LOAD_SRC2STG_GEO_PROD_OVERRIDE", "etlp_src_file", "/data/stg_geo_prod_override.csv", '"Y"' ) ;
  quit;


  proc sql noprint ;
      delete from &m_di_mon..etl_sys_param where upcase(jobname)="LOAD_STG2DM_GEO_PROD_OVERRIDE"
      and param_name="etlp_exception_table"
      ;

      Insert into &m_di_mon..etl_sys_param
      (jobname, param_name, param_value, default_func)
      values("LOAD_STG2DM_GEO_PROD_OVERRIDE",  "etlp_exception_table", "DI_MON.STG_GEO_PROD_OVERRIDE_X",  '"DI_MON.STG_GEO_PROD_OVERRIDE_X"'  )
      ;

  quit;

  proc sql;
      delete from &m_di_data..job where job_id in (96);
      insert into &m_di_data..job(job_id,job_nm,parent_job_id) values (96,'generate_geo_prod_status',-1);
  quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID938326_GEO_PROD_COST
   :DESCRIPTION:    Consolidation of cost_fact and cost_fact_future stage tables
   :VERSION:        M2MICM521
   :DATE_OF_CHANGE: 26FEB2013
   :SUPPORT:        Rhuta Kulkarni
   :FREQUENCY:      ONCE


data &m_di_mon..stg_geo_prod_cost_x;
attrib PROD_ID length = $32 ;
attrib GEO_ID length = $32 ;
attrib EFFECTIVE_DT length = 8 format = &m_DTFMT informat = &m_DTFMT ;
attrib INVOICE_COST length = 8 format = NLNUM20.3 informat = NLNUM20.3;
attrib LANDED_COST length = 8 format = NLNUM20.3 informat = NLNUM20.3;
attrib ETLS_EXCEPTION_COND length = $200 ;
attrib ETL_ERROR_JOBRUNTIME length = 8 format = DATETIME16. ;
stop;
run;


data &m_didm_stg..stg_geo_prod_cost;
attrib PROD_ID        length = $32;
attrib GEO_ID         length = $32;
attrib EFFECTIVE_DT   length = 8 format=&m_DTFMT. INFORMAT=&m_STG_DTINFMT.;
attrib INVOICE_COST   length = 8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3;
attrib LANDED_COST    length = 8 FORMAT=NLNUM20.3   INFORMAT=NLNUM20.3;
stop;
run;

proc sql;
  alter table &m_didm_stg..STG_GEO_PROD_COST add NOT NULL (GEO_ID);
  alter table &m_didm_stg..STG_GEO_PROD_COST add NOT NULL (PROD_ID);
  alter table &m_didm_stg..STG_GEO_PROD_COST add NOT NULL (EFFECTIVE_DT);
quit;


proc sql;
   delete from &m_di_mon..etl_sys_param
   where upper(jobname) ="LOAD_STG2DM_GEO_PROD_COST_FACT" and
   param_name="etlp_exception_table";

   Insert into &m_di_mon..etl_sys_param(jobname, param_name, param_value, default_func)
   values("LOAD_STG2DM_GEO_PROD_COST_FACT","etlp_exception_table","di_mon.STG_GEO_PROD_COST_X",'"di_mon.STG_GEO_PROD_COST_X"');

   delete from DI_MON.ETL_SYS_PARAM
   where  upcase(JOBNAME) = "LOAD_STG2DM_GEO_PROD_COST_FACT"
     and lowcase(PARAM_NAME) = "etlp_cost_types";

   insert into DI_MON.ETL_SYS_PARAM values
   ("LOAD_STG2DM_GEO_PROD_COST_FACT","etlp_cost_types","(1,2)",'"(1,2)"'  );

   delete from &m_di_mon..job_param
   where upper(jobname) ="LOAD_STG2DM_GEO_PROD_COST_FACT" and
   param_name="Full_refresh";

   Insert into &m_di_mon..job_param(jobname, param_name, param_value, default_func)
   values("LOAD_STG2DM_GEO_PROD_COST_FACT","Full_refresh","",'"0"');

   delete from &m_di_mon..job_param
   where upper(PARAM_NAME) = "STG_DATA_OVERRIDE"
   and upper(jobname) = "LOAD_STG2DM_GEO_PROD_COST_FACT";

   insert into &m_di_mon..job_param(JOBNAME,PARAM_NAME,PARAM_VALUE,DEFAULT_FUNC)
   values("LOAD_STG2DM_GEO_PROD_COST_FACT","stg_data_override","",'"1"');

   delete from &m_di_mon..job_param
   where jobname = "LOAD_STG2DM_GEO_PROD_COST_FACT" and param_name="etlp_move_futr_to_curr";

   Insert into &m_di_mon..job_param(jobname, param_name, param_value, default_func)
   values("LOAD_STG2DM_GEO_PROD_COST_FACT","etlp_move_futr_to_curr","",'"0"'   ) ;

   delete from  &m_di_mon..job_param
   where jobname="LOAD_STG2DM_GEO_PROD_COST_FACT" and param_name="etlp_reload_history_data" ;

   Insert into &m_di_mon..job_param(jobname, param_name, param_value, default_func)
   values("LOAD_STG2DM_GEO_PROD_COST_FACT","etlp_reload_history_data","0",'"0"' );

   delete from &m_di_mon..job_param where jobname = "LOAD_SRC2STG_GEO_PROD_COST" ;

   Insert into &m_di_mon..job_param(jobname, param_name, param_value, default_func)
   values("LOAD_SRC2STG_GEO_PROD_COST","etlp_src_file", "/data/stg_geo_prod_COST.csv",'"Y"' )
   values("LOAD_SRC2STG_GEO_PROD_COST","loadview", "",'"1"' )
   ;
quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID932230
   :DESCRIPTION:    Add new jobs to tkmi_job_ro for model_group_validation
   :VERSION:        M2MICM521
   :DATE_OF_CHANGE: 1MAR2013
   :SUPPORT:        Owen Chen
   :FREQUENCY:      ONCE


   proc sql;
   delete from &m_di_data..job where job_id in (40);
   insert into &m_di_data..job(job_id,job_nm,parent_job_id) values (40,'model_group_validation',-1);
   quit;

   proc sort data=&m_di_data..job force;
      by job_id;
   run;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID938326_RPP_PLAN_COST
   :DESCRIPTION:    Add etlp_src_file for job LOAD_SRC2STG_RPP_PLAN_COST
   :VERSION:        M2MICM521
   :DATE_OF_CHANGE: 06MAR2013
   :SUPPORT:        Priyalal
   :FREQUENCY:      ONCE


   proc sql;
      delete from &m_di_mon..job_param where
          upcase(jobname) = "LOAD_SRC2STG_RPP_PLAN_COST" and
          param_name = 'etlp_src_file'
          ;
      Insert into &m_di_mon..job_param(jobname, param_name, param_value, default_func)
      values("LOAD_SRC2STG_RPP_PLAN_COST","etlp_src_file", "/data/stg_rpp_plan_cost.csv",'"Y"' );
  quit;

:END_CHANGE:



***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID945908_2
   :DESCRIPTION:    Multiple Vendors Per Promotion
   :VERSION:        M2MICM521
   :DATE_OF_CHANGE: 06MAR2013
   :SUPPORT:        Jeff Shaughnessy
   :FREQUENCY:      ONCE

   proc sql;

      delete from &m_di_data..VENDOR where VENDOR_SK = -1 ;

     insert into &m_di_data..VENDOR (VENDOR_SK, VENDOR_ID, VENDOR_NM)
      values (-1,'MULTIPLE_VENDORS', 'Multiple Vendors');


   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID949482
   :DESCRIPTION:    New global setting MAX_NUM_PROD_REL_RULE_INSTANCES
   :VERSION:        M2MICM521
   :DATE_OF_CHANGE: 07MAR2013
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE


   proc sql;

   DELETE FROM &m_di_data..GLOBAL_SETTING
   WHERE SPEC_NM ='MAX_NUM_PROD_REL_RULE_INSTANCES' and APP = 'RPO';

   INSERT INTO &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) VALUES
   ('MAX_NUM_PROD_REL_RULE_INSTANCES','RPO','10000',
   'Indicates the maximum number of product relationship rules that can be defined between two sets of products.');

   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID938326_GEO_PROD_COST_1
   :DESCRIPTION:    Consolidation of cost_fact and cost_fact_future stage tables
   :VERSION:        M2MICM521
   :DATE_OF_CHANGE: 08MAR2013
   :SUPPORT:        Rhuta Kulkarni
   :FREQUENCY:      ONCE


proc sql;
  alter table &m_didm_stg..STG_GEO_PROD_COST add NOT NULL (INVOICE_COST);
quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      FIX_PARAM_DIFFS
   :DESCRIPTION:    Fix differences found in parameter values
   :VERSION:        M2MICM521
   :DATE_OF_CHANGE: 07MAR2013
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE


   proc sql noprint;

      delete from &m_di_mon..job_param where param_name='etlp_exclude_recs_prev_export'
                and jobname='ALLJOBS';

      delete from &m_di_mon..job_param
                where jobname='LOAD_SRC2STG_PROD_REPLACEMENT';

      delete from &m_di_mon..job_param
       where jobname= "LOAD_SRC2STG_PRODUCT_REPLACEMENT" and param_name="etlp_src_file" ;

      insert into &m_di_mon..job_param(jobname, param_name, param_value, default_func)
      values("LOAD_SRC2STG_PRODUCT_REPLACEMENT","etlp_src_file", "/data/stg_product_replacement.csv",'"Y"' );

      delete from &m_di_mon..job_param
       where jobname= "LOAD_SRC2STG_PRICE_POINT_CORRECTION" and param_name="etlp_src_file" ;


      insert into &m_di_mon..job_param(jobname, param_name, param_value, default_func)
      values("LOAD_SRC2STG_PRICE_POINT_CORRECTION","etlp_src_file", "/data/stg_price_point_correction.csv",'"Y"' );


      delete from &m_di_mon..job_param
       where jobname= "LOAD_SRC2STG_PLAN_EXPORT" and param_name="etlp_src_file" ;

      insert into &m_di_mon..job_param(jobname, param_name, param_value, default_func)
      values("LOAD_SRC2STG_PLAN_EXPORT","etlp_src_file", "/data/stg_plan_export.csv",'"Y"' );

      delete from &m_di_mon..job_param
       where jobname= "LOAD_SRC2STG_HIERARCHY_DELETE" and param_name="etlp_src_file" ;

      insert into &m_di_mon..job_param(jobname, param_name, param_value, default_func)
      values("LOAD_SRC2STG_HIERARCHY_DELETE","etlp_src_file", "/data/stg_hierarchy_delete.csv",'"Y"' );

       delete from &m_di_mon..job_param
                where jobname in ('LOAD_SRC2STG_HALO_PRODUCTS', 'LOAD_SRC2STG_GEO_STORE');

      delete from &m_di_mon..job_param
       where jobname= "LOAD_SRC2STG_GEO_PROD_PURGE_LIST" and param_name="etlp_src_file" ;

      insert into &m_di_mon..job_param(jobname, param_name, param_value, default_func)
      values("LOAD_SRC2STG_GEO_PROD_PURGE_LIST","etlp_src_file", "/data/stg_geo_prod_purge_list.csv",'"Y"' );

        update &m_di_mon..job_param
          set default_func='"1"'
          where jobname='DI_EXPORT_SALES_FORECAST'
            and param_name='etlp_geo_hier_assoc_cd'
        ;


   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID938326_PLAN_TYPE
   :DESCRIPTION:    Add plan type=3 (excluded plans) and set plan type=2 for Regional plans
   :VERSION:        M2MICM521
   :DATE_OF_CHANGE: 11MAR2013
   :SUPPORT:        Sarita Kannarath
   :FREQUENCY:      ONCE

proc sql;
   delete from &m_di_data..Reference_values
   where upcase(field_nm)="PLAN_TYPE";

   insert into &m_di_data..Reference_values (FIELD_NM, FIELD_VALUE, FIELD_SHORT_DESC) values ('PLAN_TYPE','0','Active Plan');
   insert into &m_di_data..Reference_values (FIELD_NM, FIELD_VALUE, FIELD_SHORT_DESC) values ('PLAN_TYPE','1','Alternate Plan');
   insert into &m_di_data..Reference_values (FIELD_NM, FIELD_VALUE, FIELD_SHORT_DESC) values ('PLAN_TYPE','2','Include Versioned Plan');
   insert into &m_di_data..Reference_values (FIELD_NM, FIELD_VALUE, FIELD_SHORT_DESC) values ('PLAN_TYPE','3','Excluded Versioned Plan');
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID938326_GEO_PROD_COST_2
   :DESCRIPTION:    Changing the job parameter name from FULL_REFRESH to FUTURE_FULL_REFRESH
   :VERSION:        M2MICM521
   :DATE_OF_CHANGE: 14MAR2013
   :SUPPORT:        Rhuta Kulkarni
   :FREQUENCY:      ONCE


proc sql;

   delete from &m_di_mon..job_param
   where upper(jobname) ="LOAD_STG2DM_GEO_PROD_COST_FACT" and
   upper(param_name)="FULL_REFRESH";

   delete from &m_di_mon..job_param
   where upper(jobname) ="LOAD_STG2DM_GEO_PROD_COST_FACT" and
   upper(param_name)="FUTURE_FULL_REFRESH";

   Insert into &m_di_mon..job_param(jobname, param_name, param_value, default_func)
   values("LOAD_STG2DM_GEO_PROD_COST_FACT","Future_full_refresh","",'"0"');
   ;
quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID938326_GEO_PROD_PRICE_1
   :DESCRIPTION:    Changing the job parameter name from FULL_REFRESH to FUTURE_FULL_REFRESH
   :VERSION:        M2MICM521
   :DATE_OF_CHANGE: 14MAR2013
   :SUPPORT:        Sangeeta Rokde
   :FREQUENCY:      ONCE


proc sql;

   delete from &m_di_mon..job_param
   where upper(jobname) ="LOAD_STG2DM_GEO_PROD_PRICE_FACT" and
   upper(param_name)="FULL_REFRESH";

   delete from &m_di_mon..job_param
   where upper(jobname) ="LOAD_STG2DM_GEO_PROD_PRICE_FACT" and
   upper(param_name)="FUTURE_FULL_REFRESH";

   Insert into &m_di_mon..job_param(jobname, param_name, param_value, default_func)
   values("LOAD_STG2DM_GEO_PROD_PRICE_FACT","Future_full_refresh","",'"0"');

quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID953719
   :DESCRIPTION:    Default value for cost-to-price-ratio for derivation of Inv-cost and Inv-retail
   :VERSION:        M2MICM521
   :DATE_OF_CHANGE: 15MAR2013
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE


   proc sql;

      delete from &m_di_mon..job_param
      where upper(jobname) ="DI_ETL_SET_INVENTORY_PRICE_COST";

      Insert into &m_di_mon..job_param(jobname, param_name, param_value, default_func)
      values("DI_ETL_SET_INVENTORY_PRICE_COST","etlp_cost_as_pct_of_price","",'"0.5"');

   quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID953719_JOBPARAM
   :DESCRIPTION:    Added a job param to use either invoice or landed cost for Inv_cost calculation
   :VERSION:        M2MICM521
   :DATE_OF_CHANGE: 20MAR2013
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE


   proc sql;
      delete from &m_di_mon..job_param
       where upper(jobname) ="DI_ETL_SET_INVENTORY_PRICE_COST"
         and param_name = "etlp_use_cost_type";

      Insert into &m_di_mon..job_param(jobname, param_name, param_value,default_func)
      values("DI_ETL_SET_INVENTORY_PRICE_COST","etlp_use_cost_type","1",'"1"');

   quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID938326_GEO_PROD_COST_3
   :DESCRIPTION:    Drop constraints on column INVOICE_COST
   :VERSION:        M2MICM521
   :DATE_OF_CHANGE: 25MAR2013
   :SUPPORT:        Rhuta Kulkarni
   :FREQUENCY:      ONCE

 %di_util_drop_constraint(m_lib=&m_didm_stg., m_table=STG_GEO_PROD_COST, m_column=%str(INVOICE_COST), m_constraint=%str(not null));

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID881597
   :DESCRIPTION:    Create staging tables for Currency dimension
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 30APR2013
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   :DOC:  GEO_ID field can be NULL.  User can provide just the currency and rate in staging table



    data &m_didm_stg..STG_CURRENCY;
       attrib GEO_ID                              length=$32                                           ;
       attrib CURRENCY_ID                         length=$3                                            ;
       attrib LOCAL_TO_GLOBAL_CONV_RATE           length=8      FORMAT=NLNUM12.4   INFORMAT=NLNUM12.4  ;
    stop; run;

    proc sql;
        alter table &m_didm_stg..STG_CURRENCY add NOT NULL (CURRENCY_ID);
        alter table &m_didm_stg..STG_CURRENCY add NOT NULL (LOCAL_TO_GLOBAL_CONV_RATE);
    quit;


    data &m_di_mon..STG_CURRENCY_X;
       attrib GEO_ID                              length=$32                                           ;
       attrib CURRENCY_ID                         length=$3                                            ;
       attrib LOCAL_TO_GLOBAL_CONV_RATE           length=8      FORMAT=NLNUM12.4   INFORMAT=NLNUM12.4  ;
       attrib ETLS_EXCEPTION_COND length=$150 ;
       attrib ETL_ERROR_JOBRUNTIME length=8 format = datetime16. ;
       STOP;
    run;

:END_CHANGE:



***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID881597_2
   :DESCRIPTION:    Drop currency dimension from SAS side if it exists
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 09MAY2013
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..CURRENCY_DM

   :DOC:  CURRENCY_DM table is only needed on the RDBMS side



    proc sql;

        drop table &m_di_data..CURRENCY_DM;

    quit;


:END_CHANGE:



***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      S0930467
   :DESCRIPTION:    Add parameter create_prf_meta to job_param for the DI_ETL_CREATE_PRF_META job to recreate _meta table
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 03MAY2013
   :SUPPORT:        Sarita Kannarath
   :FREQUENCY:      ONCE

proc sql;
   delete from &m_di_mon..job_param
   where upcase(jobname) in ("DI_ETL_CREATE_PRF_META");

   insert into &m_di_mon..job_param (jobname, param_name, param_value, default_func)
   values("DI_ETL_CREATE_PRF_META","create_prf_meta","",'"ALL"');
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID918617
   :DESCRIPTION:    Remove global settings DEMAND_MULTIPLIER_CUTOFFS, OUTLIER_GEO_LVL, PRICE_ZONE_LVL
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 03MAY2013
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..GLOBAL_SETTING


proc sql;
DELETE from &m_di_data..GLOBAL_SETTING where SPEC_NM = 'DEMAND_MULTIPLIER_CUTOFFS';
DELETE from &m_di_data..GLOBAL_SETTING where SPEC_NM = 'OUTLIER_GEO_LVL';
DELETE from &m_di_data..GLOBAL_SETTING where SPEC_NM = 'PRICE_ZONE_LVL';
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID867499
   :DESCRIPTION:    Remove global settings ALLOW_AUTO_REEVALUATE, DUE_DATE_LEAD_TIME, TPC_START_LEAD_TIME
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 03MAY2013
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..GLOBAL_SETTING


proc sql;
DELETE from &m_di_data..GLOBAL_SETTING where SPEC_NM = 'ALLOW_AUTO_REEVALUATE';
DELETE from &m_di_data..GLOBAL_SETTING where SPEC_NM = 'DUE_DATE_LEAD_TIME';
DELETE from &m_di_data..GLOBAL_SETTING where SPEC_NM = 'TPC_START_LEAD_TIME';
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID962898
   :DESCRIPTION:    Remove global setting USE_MILP
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 06MAY2013
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE
   :CHKTABLES:      &m_di_data..GLOBAL_SETTING


proc sql;
DELETE from &m_di_data..GLOBAL_SETTING where SPEC_NM = 'USE_MILP';
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID40866
   :DESCRIPTION:    New global setting UPDATE_PROFILE_LOOKUP_STATS
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 07MAY2013
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE


proc sql;
select count (*) into :_exists from &m_di_data..global_setting
   where spec_nm = 'UPDATE_PROFILE_LOOKUP_STATS';
quit;

%if &_exists = 0 %then %do;
proc sql;
 insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
   ('UPDATE_PROFILE_LOOKUP_STATS','SZPK','1',
   'Indicates whether the PROFILE_LOOKUP_STAT table is updated when a profile is returned.');
quit;
%end;
%else %do;
proc sql;
select spec_value into :_current_val from &m_di_data..global_setting
   where spec_nm = 'UPDATE_PROFILE_LOOKUP_STATS';
quit;
%if &_current_val NE '0' or &_current_val NE '1' %then %do;
proc sql;
   update &m_di_data..global_setting set spec_value = '1' where spec_nm = 'UPDATE_PROFILE_LOOKUP_STATS';
quit;
%end;
proc sql;
   update &m_di_data..global_setting set spec_desc =
     'Indicates whether the PROFILE_LOOKUP_STAT table is updated when a profile is returned.' where
     spec_nm = 'UPDATE_PROFILE_LOOKUP_STATS';
quit;
%end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID905766
   :DESCRIPTION:    Need to be able to specify workflow states when importing promotions
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 9MAY2013
   :SUPPORT:        Ashish Sharma
   :FREQUENCY:      ONCE

   proc sql;
      alter table &m_di_mon..stg_rpp_plan_x
          add ACTIVE_PLAN_ID char(32)
      add WORKFLOW_NM char(40);
   quit;

   proc sql;
      alter table &m_didm_stg..stg_rpp_plan
      add WORKFLOW_NM char(40);
   quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      S0953266
   :DESCRIPTION:    Adding a job parameter for Attribute jobs to exclude char list
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 17MAY2013
   :SUPPORT:        Avinash Khairnar
   :FREQUENCY:      ONCE

/* This parameter will provide list of character which are not allowed in ATTR_VALUE when ATTR_TYPE=2 */
proc sql noprint;

   delete from &m_di_mon..job_param
   where jobname in ("LOAD_STG2DM_GEO_ATTRIBUTE_VALUES","LOAD_STG2DM_PROD_ATTRIBUTE_VALUES",
                     "LOAD_STG2DM_PRODUCT_ATTRIBUTES","LOAD_STG2DM_GEOGRAPHY_ATTRIBUTES") and
   param_name="etlp_exclude_char_list";

   Insert into &m_di_mon..job_param(jobname, param_name, param_value, default_func)
   values("LOAD_STG2DM_GEO_ATTRIBUTE_VALUES","etlp_exclude_char_list","",'"|"')
   values("LOAD_STG2DM_PROD_ATTRIBUTE_VALUES","etlp_exclude_char_list","",'"|"')
   values("LOAD_STG2DM_PRODUCT_ATTRIBUTES","etlp_exclude_char_list","",'"|"')
   values("LOAD_STG2DM_GEOGRAPHY_ATTRIBUTES","etlp_exclude_char_list","",'"|"')
   ;

quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID918433
   :DESCRIPTION:    Add global setting SCHEMA_LOCALES
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 24MAY2013
   :SUPPORT:        Jerry Haden
   :FREQUENCY:      ONCE


proc sql;
select count (*) into :_exists from &m_di_data..global_setting
   where spec_nm = 'SCHEMA_LOCALES';
quit;

%if &_exists = 0 %then %do;
proc sql;
 insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
   ('SCHEMA_LOCALES','ALL','', 'Specifies additional languages that are supported.');
quit;
%end;
%else %do;
proc sql;
   update &m_di_data..global_setting set spec_desc =
     'Specifies additional languages that are supported.' where
      spec_nm = 'SCHEMA_LOCALES';
quit;
%end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ISO_CURR_TABLE_2
   :DESCRIPTION:    Standard ISO Currency codes
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 29MAY2013
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE
   :DOC: XML file is a copy from http://www.currency-iso.org/dam/downloads/dl_iso_table_a1.xml



   libname curr_xml xml "%di_util_misc_path()/dbmsc/dl_iso_tble_a1.xml";


   data di_data.iso_currency;
      set curr_xml.iso_currency;
      if length(alphabetic_code)=3;
      if (anyalpha(minor_unit)=0) ;
   run;


   libname curr_xml clear;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID975860_2

   :DESCRIPTION:    Product cross relation
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 30MAY2013
   :SUPPORT:        Yue Li
   :FREQUENCY:      ONCE


  data &m_di_data..PROD_CROSS_RELATION;
     attrib GEO_HIER_SK           length=4;
     attrib PROD_HIER_SK          length=6;
     attrib CROSS_PROD_HIER_SK    length=6;
     attrib CROSS_TYPE            length=$1;
  stop;
  run;


:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID881597_3
   :DESCRIPTION:    Add parameters in job_param and etl_sys_param
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 31MAY2013
   :SUPPORT:        Rhuta Kulkarni
   :FREQUENCY:      ONCE
   :CHKLIB:         &m_di_mon.
   :CHKTABLES:      &m_di_mon..etl_sys_param, &m_di_mon..job_param

   proc sql;

   delete from &m_di_mon..job_param
     where upcase(JOBNAME) = "LOAD_STG2DM_CURRENCY_DM"
     and upcase(PARAM_NAME) = "FULL_REFRESH";

   insert into &m_di_mon..job_param(JOBNAME, PARAM_NAME, PARAM_VALUE, DEFAULT_FUNC)
     values ("LOAD_STG2DM_CURRENCY_DM","Full_refresh", "", '"0"');

   delete
     from   &m_di_mon..ETL_SYS_PARAM
     where  upcase(JOBNAME) = "LOAD_STG2DM_CURRENCY_DM"
       and  lowcase(PARAM_NAME) = "etlp_exception_table";

   insert into &m_di_mon..ETL_SYS_PARAM values
     ("LOAD_STG2DM_CURRENCY_DM","etlp_exception_table","DI_MON.STG_CURRENCY_X",'"DI_MON.STG_CURRENCY_X"'  );

   delete
     from  &m_di_mon..job_param
     where upcase(jobname) = "LOAD_SRC2STG_CURRENCY"
       and lowcase(param_name) = "etlp_src_file"
   ;

   insert into &m_di_mon..job_param (jobname, param_name, param_value, default_func)
     values("LOAD_SRC2STG_CURRENCY","etlp_src_file","/data/stg_currency.csv",'"Y"')
   ;

  quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID918433_STG_TABLES
   :DESCRIPTION:    MULTI LANGUAGE ETL
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 31MAY2013
   :SUPPORT:        Priyalal R
   :FREQUENCY:      ONCE



data &m_didm_stg..STG_PRODUCT_LANG;
attrib PROD_ID                             length=$32                                          ;
attrib LANG_CD                             length=$11                                          ;
attrib PROD_NM                             length=$160                                         ;
attrib PROD_DESC                           length=$400                                         ;
attrib VOLUME_BASE_UOM                     length=$80                                          ;
attrib BRAND_NM                            length=$160                                         ;
stop; run;


proc sql;
  alter table &m_didm_stg..STG_PRODUCT_LANG add NOT NULL (PROD_ID);
  alter table &m_didm_stg..STG_PRODUCT_LANG add NOT NULL (LANG_CD);
quit;




data &m_didm_stg..STG_GEOGRAPHY_LANG;
attrib GEO_ID                              length=$32                                         ;
attrib LANG_CD                             length=$11                                          ;
attrib GEO_NM                              length=$160                                         ;
attrib STREET_ADDRESS                      length=$400                                         ;
attrib CITY                                length=$80                                          ;
attrib STATE                               length=$80                                          ;
attrib ZIP_CODE                            length=$80                                          ;
attrib COUNTRY                             length=$80                                          ;
stop; run;


proc sql;
  alter table &m_didm_stg..STG_GEOGRAPHY_LANG add NOT NULL (GEO_ID);
  alter table &m_didm_stg..STG_GEOGRAPHY_LANG add NOT NULL (LANG_CD);
quit;




data &m_didm_stg..STG_ATTRIBUTE_LANG;
attrib ATTR_NM                             length=$40                                          ;
attrib LANG_CD                             length=$11                                          ;
attrib ATTR_NM_LANG                        length=$160                                         ;
stop; run;


proc sql;
  alter table &m_didm_stg..STG_ATTRIBUTE_LANG add NOT NULL (ATTR_NM);
  alter table &m_didm_stg..STG_ATTRIBUTE_LANG add NOT NULL (LANG_CD);
  alter table &m_didm_stg..STG_ATTRIBUTE_LANG add NOT NULL (ATTR_NM_LANG);
quit;


data &m_didm_stg..STG_ATTRIBUTE_VALUES_LANG;
attrib ATTR_NM                             length=$40                                          ;
attrib LANG_CD                             length=$11                                          ;
attrib OBJECT_TYPE                         length=$1                                           ;
attrib OBJECT_ID                           length=$32                                         ;
attrib ATTR_VALUE                          length=$160                                         ;
stop; run;


proc sql;
  alter table &m_didm_stg..STG_ATTRIBUTE_VALUES_LANG add NOT NULL (ATTR_NM);
  alter table &m_didm_stg..STG_ATTRIBUTE_VALUES_LANG add NOT NULL (LANG_CD);
  alter table &m_didm_stg..STG_ATTRIBUTE_VALUES_LANG add NOT NULL (OBJECT_TYPE);
  alter table &m_didm_stg..STG_ATTRIBUTE_VALUES_LANG add NOT NULL (OBJECT_ID);
  alter table &m_didm_stg..STG_ATTRIBUTE_VALUES_LANG add NOT NULL (ATTR_VALUE);
quit;



data &m_didm_stg..STG_FIELD_LOOKUP_LANG;
attrib FIELD_NM                            length=$32                                        ;
attrib TABLE_NAME                          length=$32                                        ;
attrib FIELD_VALUE                         length=$100                                       ;
attrib LANG_CD                             length=$11                                        ;
attrib FIELD_VALUE_NM                      length=$400                                       ;
attrib FIELD_VALUE_DESC                    length=$400                                       ;
stop; run;


proc sql;
  alter table &m_didm_stg..STG_FIELD_LOOKUP_LANG add NOT NULL (FIELD_NM);
  alter table &m_didm_stg..STG_FIELD_LOOKUP_LANG add NOT NULL (TABLE_NAME);
  alter table &m_didm_stg..STG_FIELD_LOOKUP_LANG add NOT NULL (FIELD_VALUE);
  alter table &m_didm_stg..STG_FIELD_LOOKUP_LANG add NOT NULL (LANG_CD);
quit;


data &m_didm_stg..STG_PRICE_CHANGE_PRIORITY_LANG;
attrib PRICE_CHG_PRIORITY                  length=4                                          ;
attrib LANG_CD                             length=$11                                        ;
attrib PRICE_CHG_PRIORITY_NM               length=$160                                       ;
stop; run;


proc sql;
  alter table &m_didm_stg..STG_PRICE_CHANGE_PRIORITY_LANG add NOT NULL (PRICE_CHG_PRIORITY);
  alter table &m_didm_stg..STG_PRICE_CHANGE_PRIORITY_LANG add NOT NULL (LANG_CD);
  alter table &m_didm_stg..STG_PRICE_CHANGE_PRIORITY_LANG add NOT NULL (PRICE_CHG_PRIORITY_NM);
quit;



data &m_di_mon..STG_PRODUCT_LANG_X;
attrib PROD_ID                             length=$32                                          ;
attrib LANG_CD                             length=$11                                          ;
attrib PROD_NM                             length=$160                                         ;
attrib PROD_DESC                           length=$400                                         ;
attrib VOLUME_BASE_UOM                     length=$80                                          ;
attrib BRAND_NM                            length=$160                                         ;
attrib ETLS_EXCEPTION_COND                 length=$300                                         ;
attrib ETL_ERROR_JOBRUNTIME               length=8      format=&DTTMFMT                       ;
stop; run;



data &m_di_mon..STG_GEOGRAPHY_LANG_x;
attrib GEO_ID                              length=$32                                          ;
attrib LANG_CD                             length=$11                                          ;
attrib GEO_NM                              length=$160                                         ;
attrib STREET_ADDRESS                      length=$400                                         ;
attrib CITY                                length=$80                                          ;
attrib STATE                               length=$80                                          ;
attrib ZIP_CODE                            length=$80                                          ;
attrib COUNTRY                             length=$80                                          ;
attrib ETLS_EXCEPTION_COND                 length=$300                                         ;
attrib ETL_ERROR_JOBRUNTIME               length=8      format=&DTTMFMT                       ;
stop; run;

data &m_di_mon..STG_ATTRIBUTE_LANG_x;
attrib ATTR_NM                             length=$40                                          ;
attrib LANG_CD                             length=$11                                          ;
attrib ATTR_NM_LANG                        length=$160                                         ;
attrib ETLS_EXCEPTION_COND                 length=$300                                         ;
attrib ETL_ERROR_JOBRUNTIME               length=8      format=&DTTMFMT                       ;
stop; run;



data &m_di_mon..STG_ATTRIBUTE_VALUES_LANG_x;
attrib ATTR_NM                             length=$40                                          ;
attrib LANG_CD                             length=$11                                          ;
attrib OBJECT_TYPE                         length=$1                                           ;
attrib OBJECT_ID                           length=$32                                          ;
attrib ATTR_VALUE                          length=$160                                         ;
attrib ETLS_EXCEPTION_COND                 length=$300                                         ;
attrib ETL_ERROR_JOBRUNTIME               length=8      format=&DTTMFMT                       ;
stop; run;


data &m_di_mon..STG_FIELD_LOOKUP_LANG_X;
attrib FIELD_NM                            length=$32                                        ;
attrib TABLE_NAME                          length=$32                                        ;
attrib FIELD_VALUE                         length=$100                                       ;
attrib LANG_CD                             length=$11                                        ;
attrib FIELD_VALUE_NM                      length=$400                                       ;
attrib FIELD_VALUE_DESC                    length=$400                                       ;
attrib ETLS_EXCEPTION_COND                 length=$300                                       ;
attrib ETL_ERROR_JOBRUNTIME               length=8      format=&DTTMFMT                     ;
stop; run;


data &m_di_mon..STG_PRICE_CHANGE_PRIORITY_LANG_X;
attrib PRICE_CHG_PRIORITY                  length=4                                          ;
attrib LANG_CD                             length=$11                                        ;
attrib PRICE_CHG_PRIORITY_NM               length=$160                                       ;
attrib ETLS_EXCEPTION_COND                 length=$300                                       ;
attrib ETL_ERROR_JOBRUNTIME          length=8      format=&DTTMFMT                     ;
stop; run;

  proc sql;
     delete from  &m_di_mon..job_param Where upcase(jobname) eq 'LOAD_SRC2STG_PRODUCT_LANG' and param_name = 'etlp_src_file';
   delete from  &m_di_mon..job_param Where upcase(jobname) eq 'LOAD_SRC2STG_GEOGRAPHY_LANG' and param_name = 'etlp_src_file';
      delete from  &m_di_mon..job_param Where upcase(jobname) eq 'LOAD_SRC2STG_ATTRIBUTE_LANG' and param_name = 'etlp_src_file';
   delete from  &m_di_mon..job_param Where upcase(jobname) eq 'LOAD_SRC2STG_ATTRIBUTE_VALUES_LANG' and param_name = 'etlp_src_file';
   delete from  &m_di_mon..job_param Where upcase(jobname) eq 'LOAD_SRC2STG_FIELD_LOOKUP_LANG' and param_name = 'etlp_src_file';
   delete from  &m_di_mon..job_param Where upcase(jobname) eq 'LOAD_SRC2STG_PRICE_CHANGE_PRIORITY_LANG' and param_name = 'etlp_src_file';

     insert into &m_di_mon..job_param
     (jobname,                     param_name,       param_value,                 default_func)
      values("LOAD_SRC2STG_PRODUCT_LANG", "etlp_src_file", "/data/stg_product_lang.csv", '"Y"' );
   insert into &m_di_mon..job_param
     (jobname,                     param_name,       param_value,                 default_func)
      values("LOAD_SRC2STG_GEOGRAPHY_LANG", "etlp_src_file", "/data/stg_geography_lang.csv", '"Y"' );
   insert into &m_di_mon..job_param
     (jobname,                     param_name,       param_value,                 default_func)
      values("LOAD_SRC2STG_ATTRIBUTE_LANG", "etlp_src_file", "/data/stg_attribute_lang.csv", '"Y"' );
   insert into &m_di_mon..job_param
     (jobname,                     param_name,       param_value,                 default_func)
      values("LOAD_SRC2STG_ATTRIBUTE_VALUES_LANG", "etlp_src_file", "/data/stg_attribute_values_lang.csv", '"Y"' );
   insert into &m_di_mon..job_param
     (jobname,                     param_name,       param_value,                 default_func)
      values("LOAD_SRC2STG_FIELD_LOOKUP_LANG", "etlp_src_file", "/data/stg_field_lookup_lang.csv", '"Y"' );
   insert into &m_di_mon..job_param
     (jobname,                     param_name,       param_value,                 default_func)
      values("LOAD_SRC2STG_PRICE_CHANGE_PRIORITY_LANG", "etlp_src_file", "/data/stg_price_change_priority_lang.csv", '"Y"' );
  quit;


  proc sql noprint ;
      delete from &m_di_mon..etl_sys_param where upcase(jobname)="LOAD_STG2DM_PRODUCT_DM_LANG" and param_name="etlp_exception_table";
      delete from &m_di_mon..etl_sys_param where upcase(jobname)="LOAD_STG2DM_GEOGRAPHY_DM_LANG" and param_name="etlp_exception_table";
      delete from &m_di_mon..etl_sys_param where upcase(jobname)="LOAD_STG2DM_ATTRIBUTES_LANG" and param_name="etlp_exception_table";
      delete from &m_di_mon..etl_sys_param where upcase(jobname)="LOAD_STG2DM_FIELD_LOOKUP_VALUES_LANG" and param_name="etlp_exception_table";
      delete from &m_di_mon..etl_sys_param where upcase(jobname)="LOAD_STG2DM_PRICE_CHANGE_PRIORITY_LANG" and param_name="etlp_exception_table";
      delete from &m_di_mon..etl_sys_param where upcase(jobname)="LOAD_STG2DM_GEO_ATTRIBUTE_VALUES_LANG" and param_name="etlp_exception_table";
      delete from &m_di_mon..etl_sys_param where upcase(jobname)="LOAD_STG2DM_PROD_ATTRIBUTE_VALUES_LANG" and param_name="etlp_exception_table";

      Insert into &m_di_mon..etl_sys_param
      (jobname, param_name, param_value, default_func)
      values("LOAD_STG2DM_PRODUCT_DM_LANG",  "etlp_exception_table", "DI_MON.STG_PRODUCT_LANG_X",  '"DI_MON.STG_PRODUCT_LANG_X"'  )
      ;
      Insert into &m_di_mon..etl_sys_param
      (jobname, param_name, param_value, default_func)
      values("LOAD_STG2DM_GEOGRAPHY_DM_LANG",  "etlp_exception_table", "DI_MON.STG_GEOGRAPHY_LANG_x",  '"DI_MON.STG_GEOGRAPHY_LANG_x"'  )
      ;


      Insert into &m_di_mon..etl_sys_param
      (jobname, param_name, param_value, default_func)
      values("LOAD_STG2DM_ATTRIBUTES_LANG",  "etlp_exception_table", "DI_MON.STG_ATTRIBUTE_LANG_x",  '"DI_MON.STG_ATTRIBUTE_LANG_x"'  )
      ;
      Insert into &m_di_mon..etl_sys_param
      (jobname, param_name, param_value, default_func)
      values("LOAD_STG2DM_FIELD_LOOKUP_VALUES_LANG",  "etlp_exception_table", "DI_MON.STG_FIELD_LOOKUP_LANG_X",  '"DI_MON.STG_FIELD_LOOKUP_LANG_X"'  )
      ;


      Insert into &m_di_mon..etl_sys_param
      (jobname, param_name, param_value, default_func)
      values("LOAD_STG2DM_PRICE_CHANGE_PRIORITY_LANG",  "etlp_exception_table", "DI_MON.STG_PRICE_CHANGE_PRIORITY_LANG_X",  '"DI_MON.STG_PRICE_CHANGE_PRIORITY_LANG_X"'  )
      ;
      Insert into &m_di_mon..etl_sys_param
      (jobname, param_name, param_value, default_func)
      values("LOAD_STG2DM_GEO_ATTRIBUTE_VALUES_LANG",  "etlp_exception_table", "DI_MON.STG_ATTRIBUTE_VALUES_LANG_x",  '"DI_MON.STG_ATTRIBUTE_VALUES_LANG_x"'  )
      ;

   Insert into &m_di_mon..etl_sys_param
      (jobname, param_name, param_value, default_func)
      values("LOAD_STG2DM_PROD_ATTRIBUTE_VALUES_LANG",  "etlp_exception_table", "DI_MON.STG_ATTRIBUTE_VALUES_LANG_x",  '"DI_MON.STG_ATTRIBUTE_VALUES_LANG_x"'  )
      ;

  quit;

  proc sql noprint ;
      delete from &m_di_mon..job_param where upcase(jobname)="DI_REPLICATE_MULTIPLE_TABLES" and param_name="etlp_src_tab10";

   insert into &m_di_mon..job_param
      (jobname,                     param_name,       param_value,                 default_func)
      values("DI_REPLICATE_MULTIPLE_TABLES", "etlp_src_tab10", "field_lookup_values", '"Y"' );
  quit;

  proc sql noprint;
    delete from &m_di_data..global_setting WHERE spec_nm ='SCHEMA_LOCALES' and app = 'ALL';

    insert INTO &m_di_data..global_setting
                (spec_nm,          app, spec_value,spec_desc) values
                ('SCHEMA_LOCALES','ALL',  '',      'Multilanguage Supported by the Solution .Run the Job DI_ETL_set_schema_locale to Set this GLOBAL Setting.');
  quit;


:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID900227_REF_VALUES
   :DESCRIPTION:    Add reference values for MDO PLan setting 57-59
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 10JUN2013
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE

   proc sql;
      delete from &m_di_data..reference_values
       where (field_nm = 'SETTING_TYPE'
          and field_value in ('57','58','59'))
          ;

      insert into &m_di_data..reference_values
          (field_nm,field_value,field_short_desc)
      values ('SETTING_TYPE','57','POST_PLAN_MARKDN_VALUE_TYPE')
      values ('SETTING_TYPE','58','POST_PLAN_MARKDN_PRICE_POINT_VALUE')
      values ('SETTING_TYPE','59','POST_PLAN_MARKDN_DISCOUNT_PCT_VALUE')
      ;

   quit;

:END_CHANGE:



***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID940506
   :DESCRIPTION:    Delete PROMOTION_FACT_FUTURE table from partitions
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 17JUN2013
   :SUPPORT:        Priyalal
   :FREQUENCY:      ONCE

%macro delete_promotion_future;
   proc sql noprint;
      select path into :path
      from sashelp.vlibnam
      where lowcase(libname)="&m_di_data";
   quit;

   %let g_partitions=;
   %let no_of_partition=0;
   %di_util_dir(path=&path, pattern=, _res=list);

   data _null_;
      if _n_ eq 1 then do;
         pattern = prxparse("/1(\\|\/)/");
         delim='';
      no_of_partition=0;
         retain pattern delim no_of_partition;
     end;
     set list end=eof;
     rt=prxmatch(pattern,entry);
     if rt ne 0 then do;
       part_sk=compress(substr(entry,rt+2));
     end;
     if not missing(part_sk) then
     do;
        call symput('g_partitions',cats(symget('g_partitions'),delim,part_sk));
      no_of_partition=no_of_partition+1;
      delim='|';
     end;
     if eof then call symput('no_of_partition',left(cats(no_of_partition)));
   run;

   %if &no_of_partition %then %do;
      %do partition = 1 %to &no_of_partition;
         %let part_sk=%qsysfunc(scan(&g_partitions,&partition,'|'));
      %di_etl_set_lib(parent_lib=&m_di_data, sub_folder=1/&part_sk, partition_lib=part)
      %if %sysfunc(exist(part.PROMOTION_FACT_FUTURE)) %then %do;
         %di_util_drop_table(part.PROMOTION_FACT_FUTURE)
      %end;
      %end;
   %end;

%mend delete_promotion_future;

%delete_promotion_future;


:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID871409
   :DESCRIPTION:    Drop table RETURN_RATE_AVG - no longer used
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 08JUN2013
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE



    proc sql;

        drop table &m_di_data..RETURN_RATE_AVG;
    quit;


:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID943681_A
   :DESCRIPTION:    Drop STG_GEO_PROD_ATTRIBUTES and STG_GEO_PROD_ATTR_LOOKUP
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 18JUN2013
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE



    proc sql;

        drop table &m_di_data..GEO_PROD_ATTRIBUTES;
        drop table &m_di_data..GEO_PROD_ATTR_LOOKUP;

        drop table &m_didm_stg..STG_GEO_PROD_ATTRIBUTES;
        drop table &m_didm_stg..STG_GEO_PROD_ATTR_LOOKUP;

        drop table &m_di_mon..STG_GEO_PROD_ATTRIBUTES_X;
        drop table &m_di_mon..STG_GEO_PROD_ATTR_LOOKUP_X;

    quit;


:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID943681_B
   :DESCRIPTION:    Drop STG_GEO_PROD_ATTRIBUTES and STG_GEO_PROD_ATTR_LOOKUP (job_param, etl_sys_param)
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 18JUN2013
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE



    proc sql noprint ;

      delete from  &m_di_mon..job_param where upcase(jobname) eq 'LOAD_SRC2STG_GEO_PROD_ATTRIBUTES';
      delete from  &m_di_mon..job_param where upcase(jobname) eq 'LOAD_SRC2STG_GEO_PROD_ATTR_LOOKUP';
      delete from  &m_di_mon..job_param where upcase(jobname) eq 'LOAD_STG2DM_GEO_PROD_ATTRIBUTES';
      delete from  &m_di_mon..etl_sys_param where upcase(jobname) eq 'LOAD_STG2DM_GEO_PROD_ATTRIBUTES';
      delete from  &m_di_mon..job_param where upcase(jobname) eq 'LOAD_STG2DM_GEO_PROD_ATTR_LOOKUP';
      delete from  &m_di_mon..etl_sys_param where upcase(jobname) eq 'LOAD_STG2DM_GEO_PROD_ATTR_LOOKUP';
    quit;


:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID741747_2
   :DESCRIPTION:    Change index from geo_prod to prod_geo
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 05JUL2013
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE


    proc sql;


        alter table &m_di_data..cost_fact_current   drop primary key ;
        alter table &m_di_data..cost_fact_future    drop primary key ;
        alter table &m_di_data..cost_fact_history   drop primary key ;

        alter table &m_di_data..future_receipt      drop primary key ;
        alter table &m_di_data..geo_prod            drop primary key ;

        alter table &m_di_data..geo_prod_owned_inv  drop primary key ;
        alter table &m_di_data..geo_prod_status     drop primary key ;

        alter table &m_di_data..inventory_fact      drop primary key ;

        alter table &m_di_data..price_fact_current  drop primary key ;
        alter table &m_di_data..price_fact_future   drop primary key ;
        alter table &m_di_data..price_fact_history  drop primary key ;

        alter table &m_di_data..promotion_fact      drop primary key ;

        alter table &m_di_data..promo_sales_fact    drop primary key ;

        alter table &m_di_data..return_fact         drop primary key ;

        alter table &m_di_data..sales_fact          drop primary key ;


    quit;


   proc sql noprint;

        alter table &m_di_data..cost_fact_current add constraint PRIM_KEY primary key (prod_hier_sk, geo_hier_sk, cost_type);
        alter table &m_di_data..cost_fact_future add constraint PRIM_KEY primary key (prod_hier_sk, geo_hier_sk, cost_type, valid_from_dt);
        alter table &m_di_data..cost_fact_history add constraint PRIM_KEY primary key (prod_hier_sk, geo_hier_sk, cost_type, valid_from_dt);

        alter table &m_di_data..future_receipt add constraint PRIM_KEY primary key (prod_hier_sk, geo_hier_sk, receipt_dt);
        alter table &m_di_data..geo_prod add constraint PRIM_KEY primary key (prod_hier_sk, geo_hier_sk);
        alter table &m_di_data..geo_prod_owned_inv add constraint PRIM_KEY primary key (prod_hier_sk, geo_hier_sk, date_sk);
        alter table &m_di_data..geo_prod_status add constraint PRIM_KEY primary key (prod_hier_sk, geo_hier_sk, valid_from_dt);

        alter table &m_di_data..inventory_fact add constraint PRIM_KEY primary key (prod_hier_sk, geo_hier_sk, date_sk);

        alter table &m_di_data..price_fact_current add constraint PRIM_KEY primary key (prod_hier_sk, geo_hier_sk);
        alter table &m_di_data..price_fact_future add constraint PRIM_KEY primary key (prod_hier_sk, geo_hier_sk, valid_from_dt);
        alter table &m_di_data..price_fact_history add constraint PRIM_KEY primary key (prod_hier_sk, geo_hier_sk, valid_from_dt);

        alter table &m_di_data..promotion_fact add constraint PRIM_KEY primary key (prod_hier_sk, geo_hier_sk, vehicle_sk, condition_type, range_start_disc_pct, range_end_disc_pct, start_dt);

        alter table &m_di_data..promo_sales_fact add constraint PRIM_KEY primary key (prod_hier_sk, geo_hier_sk, start_dt, end_dt);
        alter table &m_di_data..return_fact add constraint PRIM_KEY primary key (prod_hier_sk, geo_hier_sk, date_sk);
        alter table &m_di_data..sales_fact add constraint PRIM_KEY primary key (prod_hier_sk, geo_hier_sk, date_sk);

   quit;



:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID883824
   :DESCRIPTION:    Adding column MULTI_OBJ_INV_WEIGHT to stg_mdo_import_plan.
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 05JUL2013
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE

   proc sql;
      ALTER TABLE &m_didm_stg..stg_mdo_import_plan
      ADD MULTI_OBJ_INV_WEIGHT num(8) FORMAT=NLNUM12.2 INFORMAT=NLNUM12.2;
   quit;

   proc sql;
      ALTER TABLE &m_di_mon..stg_mdo_import_plan_x
      ADD MULTI_OBJ_INV_WEIGHT num(8) FORMAT=NLNUM12.2 INFORMAT=NLNUM12.2;

      alter table &m_di_mon..STG_MDO_IMPORT_PLAN_X
      drop SCHEDULING_TAG;
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID888392
   :DESCRIPTION:    Add multi-obj-inv-weight Markdown setting to Reference_values
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 05JUL2013
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE

   proc sql;
      delete from &m_di_data..reference_values
       where field_nm = 'SETTING_TYPE'
         and field_value = '56';

      insert into &m_di_data..reference_values
          (field_nm,field_value,field_short_desc)
      values ('SETTING_TYPE','56','MULTI_OBJ_INV_WEIGHT');
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID738613
   :DESCRIPTION:    Vehicle export - Add suffix for object names to avoid collission
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 09JUL2013
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   %let monExists = %sysfunc(libref(&m_di_mon.));

   %if (&monExists = 0) %then
   %do;

   %if (%sysfunc(exist(&m_di_mon..job_param)))
   %then %do;

   proc sql noprint ;
   Select count(1) into :m_param_cnt
   from &m_di_mon..job_param
   where upcase(jobname)="DI_EXPORT_RPP_VEHICLE"
   and lowcase(param_name) = "etlp_suffix_attr_nm"
   ;
   quit;

   %if (&m_param_cnt = 0) %then
   %do;
     proc sql noprint;
        insert into &m_di_mon..job_param (jobname, param_name, param_value, default_func)
        values ("DI_EXPORT_RPP_VEHICLE","etlp_suffix_attr_nm","N",'"N"');
     quit;
   %end;

   proc sort data=&m_di_mon..job_param;
      by jobname param_name;
   run;

   %end;

   %end; /* if (&monExists = 0) */

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID917127_REF_VALUES
   :DESCRIPTION:    Add reference values for MDO PLan setting 63
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 22JUL2013
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE

   proc sql;
      delete from &m_di_data..reference_values
       where (field_nm = 'SETTING_TYPE' and field_value in ('63'))
          OR (field_nm in ('ALLOW_MARKDN_BELOW_COST_CD'))
          ;

      insert into &m_di_data..reference_values
          (field_nm,field_value,field_short_desc)
      values ('SETTING_TYPE','63','ALLOW_MARKDN_BELOW_COST_CD')
      values ('ALLOW_MARKDN_BELOW_COST_CD','1','Allowed')
      values ('ALLOW_MARKDN_BELOW_COST_CD','2','Disallowed')
      ;

   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID917127_STG
   :DESCRIPTION:    Add plan setting ALLOW_MARKDN_BELOW_COST_CD to MDO Import
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 22JUL2013
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE

   proc sql;
      alter table &m_didm_stg..stg_mdo_import_plan
      add ALLOW_MARKDN_BELOW_COST_CD num 4
      ;
   quit;

   proc sql;
      alter table &m_di_mon..STG_MDO_IMPORT_PLAN_X
      add ALLOW_MARKDN_BELOW_COST_CD num 4
      ;
   quit;

 :END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID918433_TWO

   :DESCRIPTION:    Multi Language Replicate tables GEOGRAPHY_ATTR_LOOKUP and PRODUCT_ATTR_LOOKUP
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 24JUL2013
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE




  proc sql noprint ;
      delete from &m_di_mon..job_param where upcase(jobname)="DI_REPLICATE_MULTIPLE_TABLES"
                              and param_name="etlp_src_tab11" and param_value="product_attr_lookup";

      delete from &m_di_mon..job_param where upcase(jobname)="DI_REPLICATE_MULTIPLE_TABLES"
                              and param_name="etlp_src_tab12" and param_value="geography_attr_lookup";

   insert into &m_di_mon..job_param
      (jobname,                     param_name,       param_value,                 default_func)
      values("DI_REPLICATE_MULTIPLE_TABLES", "etlp_src_tab11", "product_attr_lookup", '"Y"' );

   insert into &m_di_mon..job_param
      (jobname,                     param_name,       param_value,                 default_func)
      values("DI_REPLICATE_MULTIPLE_TABLES", "etlp_src_tab12", "geography_attr_lookup", '"Y"' );
  quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID956329
   :DESCRIPTION:    Adding-Deleting job parameters for the job DI_ETL_GEO_PROD_PURGE_JOB
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 29JUL2013
   :SUPPORT:        Sangeeta Rokde
   :FREQUENCY:      ONCE

proc sql;

   delete from &m_di_mon..job_param where upcase(jobname) = 'DI_ETL_GEO_PROD_PURGE_JOB'
    and lowcase(param_name) = 'etlp_ignore_tbl_keyword';


   Insert into &m_di_mon..job_param
    (jobname, param_name, param_value, default_func)
    values("DI_ETL_GEO_PROD_PURGE_JOB", "etlp_ignore_tbl_keyword", "", '"REPORT RESULT"');


   delete from &m_di_mon..job_param where upcase(jobname) = 'DI_ETL_GEO_PROD_PURGE_JOB'
   and lowcase(param_name) = 'etlp_ignore_view_purging';

   Insert into &m_di_mon..job_param
    (jobname, param_name, param_value, default_func)
    values("DI_ETL_GEO_PROD_PURGE_JOB", "etlp_ignore_view_purging",  "",  '"PKO_PRODUCT_DM_ALL PKO_PRODUCT_HIER_ASSOC_DM_ALL"');

   delete from &m_di_mon..job_param where upcase(jobname) = 'DI_ETL_GEO_PROD_PURGE_JOB'
    and lowcase(param_name) = 'etlp_incl_partition';

   Insert into &m_di_mon..job_param
    (jobname, param_name, param_value, default_func)
   values("DI_ETL_GEO_PROD_PURGE_JOB", "etlp_incl_partition",  "",  '""');

   delete from &m_di_mon..job_param where upcase(jobname) = 'DI_ETL_GEO_PROD_PURGE_JOB'
   and lowcase(param_name) = 'etlp_parallel_execution';

   delete from &m_di_mon..job_param where upcase(jobname) = 'DI_ETL_GEO_PROD_PURGE_JOB'
   and lowcase(param_name) = 'etlp_threshold_value';

   alter table &m_di_data..PURGE_RESULT_TABLE
      modify TABLE_NM char(100) ;


quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID958790
   :DESCRIPTION:    Allow promotion plans to span multiple partitions during import
   :VERSION:        F2MICM521
   :DATE_OF_CHANGE: 29JUL2013
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE

   proc sql;
      update &m_di_mon..job_param
         set param_value = '0',
             default_func = '"0"'
       WHERE upcase(JOBNAME) in ('LOAD_STG2DM_RPP_PLAN','LOAD_STG2DM_RPP_PLAN_PROD_ASGMNT')
         and PARAM_NAME = 'etlp_find_scope_exception';
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID917127_STG_PERIODS
   :DESCRIPTION:    Add plan setting ALLOW_MARKDN_BELOW_COST_PRDS to MDO Import
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 29JUL2013
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE

   proc sql;
      alter table &m_didm_stg..stg_mdo_import_plan
      add ALLOW_MARKDN_BELOW_COST_PRDS char(255)
      ;
   quit;

   proc sql;
      alter table &m_di_mon..STG_MDO_IMPORT_PLAN_X
      add ALLOW_MARKDN_BELOW_COST_PRDS char(255)
      ;
   quit;

 :END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      JOB_PARAM_0816
   :DESCRIPTION:    Add currency ID field to regular price and forecast Export
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 28JUL2013
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE

   proc sql ;
      delete from &m_di_mon..job_param  WHERE jobname = 'DI_EXPORT_MDO_PRICE' and param_name="etlp_get_currency_id";
      delete from &m_di_mon..job_param  WHERE jobname = 'DI_EXPORT_RPO_PRICE' and param_name="etlp_get_currency_id";
      delete from &m_di_mon..job_param  WHERE jobname = 'DI_EXPORT_SALES_FORECAST' and param_name="etlp_get_currency_id";
      delete from &m_di_mon..job_param  WHERE jobname = 'DI_EXPORT_RPP_PRICE' and param_name="etlp_suffix_attr_nm";
      delete from &m_di_mon..job_param  WHERE jobname = 'DI_EXPORT_RPP_VEHICLE' and param_name="etlp_suffix_attr_nm";
      delete from &m_di_mon..job_param  WHERE jobname = 'DI_EXPORT_RPP_PRICE' and param_name="etlp_exclude_non_price_vehicle";

      insert into &m_di_mon..job_param
        (jobname, param_name, param_value, default_func)
        values("DI_EXPORT_MDO_PRICE",               "etlp_get_currency_id",          "0",    '"0"'   )
        ;

      insert into &m_di_mon..job_param
        (jobname, param_name, param_value, default_func)
        values("DI_EXPORT_RPO_PRICE",               "etlp_get_currency_id",          "0",    '"0"'   )
        ;
      insert into &m_di_mon..job_param
        (jobname, param_name, param_value, default_func)
        values("DI_EXPORT_SALES_FORECAST",          "etlp_get_currency_id",          "0",    '"0"'   )
        ;

      insert into &m_di_mon..job_param
        (jobname, param_name, param_value, default_func)
        values("DI_EXPORT_RPP_PRICE",          "etlp_suffix_attr_nm",          "N",    '"N"'   )
        ;

      insert into &m_di_mon..job_param
        (jobname, param_name, param_value, default_func)
        values("DI_EXPORT_RPP_VEHICLE",          "etlp_suffix_attr_nm",          "N",    '"N"'   )
        ;

      insert into &m_di_mon..job_param
        (jobname, param_name, param_value, default_func)
        values("DI_EXPORT_RPP_PRICE",          "etlp_exclude_non_price_vehicle",          "N",    '"N"'   )
        ;


   quit;

   proc sort data=&m_di_mon..job_param;
     by jobname param_name;
   run;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      MODIFY_DEFAULT_VALUES
   :DESCRIPTION:    Modify default values of file names in job_param
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 13AUG2013
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      NEVER

   proc sql ;
      update &m_di_mon..job_param  set param_value = '%sysfunc(pathname(di_data))/exports_csv/mdo_price_export.csv' WHERE param_value='/mdo_planned_price.csv';
      update &m_di_mon..job_param  set param_value = '%sysfunc(pathname(di_data))/exports_csv/mdo_price_export.csv' WHERE param_value='/rpo_planned_price.csv';
      update &m_di_mon..job_param  set param_value = '%sysfunc(pathname(di_data))/exports_csv/rpp_price_export.csv' WHERE param_value='/rpp_price_export.csv';
      update &m_di_mon..job_param  set param_value = '%sysfunc(pathname(di_data))/exports_csv/export_vehicle.csv'   WHERE param_value='/export_vehicle.csv';
      update &m_di_mon..job_param  set param_value = '%sysfunc(pathname(di_data))/exports_csv/sales_forecast_export.csv'   WHERE param_value='/sales_forecast_export.csv';

   quit;



:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID999835
   :DESCRIPTION:    New global setting GEO_SYNCH_REMOVE_CLOSED_STORES
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 16AUG2013
   :SUPPORT:        Pankaj Shinde
   :FREQUENCY:      ONCE

    proc sql;
        select count (*) into :_exists from &m_di_data..global_setting
           where spec_nm = 'GEO_SYNCH_REMOVE_CLOSED_STORES';
    quit;

    %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('GEO_SYNCH_REMOVE_CLOSED_STORES','SZPF','0','Specifies whether to remove closed stores from published profiles and internal profiling data');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'Specifies whether to remove closed stores from published profiles and internal profiling data' where
              spec_nm = 'GEO_SYNCH_REMOVE_CLOSED_STORES';
        quit;
    %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID999833
   :DESCRIPTION:    New global setting ALLOW_ADDITIONAL_REPAIR_STEP
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 19AUG2013
   :SUPPORT:        Pankaj Shinde
   :FREQUENCY:      ONCE

    proc sql;
        select count (*) into :_exists from &m_di_data..global_setting
           where spec_nm = 'ALLOW_ADDITIONAL_REPAIR_STEP';
    quit;

    %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('ALLOW_ADDITIONAL_REPAIR_STEP','SZPK','1','Specifies whether to perform additional processing to improve the final result');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'Specifies whether to perform additional processing to improve the final result' where
              spec_nm = 'ALLOW_ADDITIONAL_REPAIR_STEP';
        quit;
    %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID999830
   :DESCRIPTION:    New global setting ENFORCE_ORDER_CONSTR_BY_COST
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 20AUG2013
   :SUPPORT:        Pankaj Shinde
   :FREQUENCY:      ONCE

    proc sql;
        select count (*) into :_exists from &m_di_data..global_setting
           where spec_nm = 'ENFORCE_ORDER_CONSTR_BY_COST';
    quit;

    %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('ENFORCE_ORDER_CONSTR_BY_COST','SZPK','1','Specifies whether to look only at cost when meeting pack allocation quantities');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'Specifies whether to look only at cost when meeting pack allocation quantities' where
              spec_nm = 'ENFORCE_ORDER_CONSTR_BY_COST';
        quit;
    %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID994360
   :DESCRIPTION:    New global setting PROMO_HIGH_OBJ_SCOPE_LVL
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 20AUG2013
   :SUPPORT:        Pankaj Shinde
   :FREQUENCY:      ONCE

    proc sql;
        select count (*) into :_exists from &m_di_data..global_setting
           where spec_nm = 'PROMO_HIGH_OBJ_SCOPE_LVL';
    quit;

    %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('PROMO_HIGH_OBJ_SCOPE_LVL','RPP','1','Specifies the maximum product level at which the default objective scope will be generated');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'Specifies the maximum product level at which the default objective scope will be generated' where
              spec_nm = 'PROMO_HIGH_OBJ_SCOPE_LVL';
        quit;
    %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID0998290
   :DESCRIPTION:    Collect statistics after di_replicate job
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 22AUG2013
   :SUPPORT:        Sangeeta Rokde
   :FREQUENCY:      ONCE

   proc sql ;
      DELETE FROM &m_di_mon..job_param  WHERE jobname = 'DI_REPLICATE_MULTIPLE_TABLES' and param_name="etlp_gather_stats";


      Insert into &m_di_mon..job_param
      (jobname, param_name, param_value, default_func)
      values("DI_REPLICATE_MULTIPLE_TABLES", "etlp_gather_stats", "", '"1"' );

      DELETE FROM &m_di_mon..job_param  WHERE jobname = 'DI_REPLICATE_MULTIPLE_TABLES' and param_name="etlp_num_parallel_exec";


            Insert into &m_di_mon..job_param
            (jobname, param_name, param_value, default_func)
            values("DI_REPLICATE_MULTIPLE_TABLES", "etlp_num_parallel_exec", "", '"12"' );

   quit;


:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID994367
   :DESCRIPTION:    New global setting PROD_PRICE_COST_HIGH_LVL
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 22AUG2013
   :SUPPORT:        Pankaj Shinde
   :FREQUENCY:      ONCE

    proc sql;
        select count (*) into :_exists from &m_di_data..global_setting
           where spec_nm = 'PROD_PRICE_COST_HIGH_LVL';
    quit;

    %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('PROD_PRICE_COST_HIGH_LVL','RPP','','Specifies the highest product level at which the product selection dialog will display price and costs');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'Specifies the highest product level at which the product selection dialog will display price and costs' where
              spec_nm = 'PROD_PRICE_COST_HIGH_LVL';
        quit;
    %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID999825
   :DESCRIPTION:    New global setting ALLOW_UNREQUESTED_SKUS
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 22AUG2013
   :SUPPORT:        Pankaj Shinde
   :FREQUENCY:      ONCE

    proc sql;
        select count (*) into :_exists from &m_di_data..global_setting
           where spec_nm = 'ALLOW_UNREQUESTED_SKUS';
    quit;

    %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('ALLOW_UNREQUESTED_SKUS','SZPK','1','Specifies whether packs with SKUs that were unrequested at a store may still be used at that store');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'Specifies whether packs with SKUs that were unrequested at a store may still be used at that store' where
              spec_nm = 'ALLOW_UNREQUESTED_SKUS';
        quit;
    %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID990800
   :DESCRIPTION:    New global setting VALID_OPTIMIZATION_GOALS
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 22AUG2013
   :SUPPORT:        Pankaj Shinde
   :FREQUENCY:      ONCE

    proc sql;
        select count (*) into :_exists from &m_di_data..global_setting
           where spec_nm = 'VALID_OPTIMIZATION_GOALS';
    quit;

    %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('VALID_OPTIMIZATION_GOALS','RPO','1,2,3,4,5,6','Specifies the optimization goals for rule-based pricing');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'Specifies the optimization goals for rule-based pricing' where
              spec_nm = 'VALID_OPTIMIZATION_GOALS';
        quit;
    %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      RPO_PRICE_EXPORT_MISSING_PARAM
   :DESCRIPTION:    Add parameter to export prices at price zone level
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 30SEP2013
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE



   proc sql noprint;
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_PRICE' and param_name='etlp_export_level';
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPO_PRICE' and param_name='etlp_export_level';
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPO_PRICE' and param_name='etlp_exclude_recs_prev_export';

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_RPO_PRICE", "etlp_export_level","2",'"2"')
       ;



       insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_RPO_PRICE", "etlp_exclude_recs_prev_export","0",'"0"')
       ;
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1021337
   :DESCRIPTION:    New global setting CAT_CAL_AGG_LVL
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 23OCT2013
   :SUPPORT:        Pankaj Shinde
   :FREQUENCY:      ONCE

    proc sql;
        select count (*) into :_exists from &m_di_data..global_setting
           where spec_nm = 'CAT_CAL_AGG_LVL';
    quit;

    %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('CAT_CAL_AGG_LVL','ALL','1','Specifies the level at which the aggregation results generated by the backend');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'Specifies the level at which the aggregation results generated by the backend' where
              spec_nm = 'CAT_CAL_AGG_LVL';
        quit;
    %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1038606
   :DESCRIPTION:    Create table STG_PRF_INVENTORY, STG_PRF_INVENTORY_X and PRF_INVENTORY_FACT
   :VERSION:        M4MICM521
   :DATE_OF_CHANGE: 04Dec2013
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE


      data &m_didm_stg..STG_PRF_INVENTORY;
      attrib PROD_ID                          LENGTH=$32                                                    ;
      attrib GEO_ID                           LENGTH=$32                                                    ;
      attrib INVENTORY_DT                     LENGTH=8       FORMAT=&m_DTFMT       INFORMAT=&m_STG_DTINFMT       ;
      attrib CLOSE_INV_UNITS                  LENGTH=8       FORMAT=NLNUM12.2      INFORMAT=NLNUM12.2       ;
      attrib DISPLAY_UNITS                    LENGTH=8       FORMAT=NLNUM12.2      INFORMAT=NLNUM12.2       ;
      stop; run;

      proc sql;
      alter table &m_didm_stg..STG_PRF_INVENTORY add NOT NULL (GEO_ID);
      alter table &m_didm_stg..STG_PRF_INVENTORY add NOT NULL (PROD_ID);
      alter table &m_didm_stg..STG_PRF_INVENTORY add NOT NULL (INVENTORY_DT);
      quit;

      data &m_di_data..PRF_INVENTORY_FACT_META;
      attrib PROD_HIER_SK                     LENGTH=6     ;
      attrib PART_SK                          LENGTH=6     ;
      attrib START_ROW                        LENGTH=6     ;
      attrib END_ROW                          LENGTH=6     ;
      stop; run;

      proc sql;
      alter table &m_di_data..PRF_INVENTORY_FACT_META add CONSTRAINT PRIM_KEY PRIMARY KEY (PROD_HIER_SK);
      quit;


      data &m_di_data..PRF_INVENTORY_FACT;
      attrib GEO_HIER_SK                      LENGTH=4                                                  ;
      attrib PROD_HIER_SK                     LENGTH=6                                                  ;
      attrib DATE_SK                          LENGTH=4                                                  ;
      attrib CLOSE_INV_UNITS                  LENGTH=8       FORMAT=NLNUM12.2      INFORMAT=NLNUM12.2   ;
      attrib DISPLAY_UNITS                    LENGTH=8       FORMAT=NLNUM12.2      INFORMAT=NLNUM12.2   ;
      attrib UPDATED_DTTM                     LENGTH=8       FORMAT=&m_DTTMFMT     INFORMAT=&m_DTTMFMT  ;
      stop; run;

      proc sql;
      alter table &m_di_data..PRF_INVENTORY_FACT add CONSTRAINT PRIM_KEY PRIMARY KEY (PROD_HIER_SK, GEO_HIER_SK, DATE_SK);
      quit;

      data &m_di_mon..STG_PRF_INVENTORY_X;
      attrib PROD_ID                          LENGTH=$32                                                   ;
      attrib GEO_ID                           LENGTH=$32                                                   ;
      attrib INVENTORY_DT                     LENGTH=8       FORMAT=&m_DTFMT      INFORMAT=&m_DTFMT        ;
      attrib CLOSE_INV_UNITS                  LENGTH=8       FORMAT=NLNUM12.2     INFORMAT=NLNUM12.2       ;
      attrib DISPLAY_UNITS                    LENGTH=8       FORMAT=NLNUM12.2     INFORMAT=NLNUM12.2       ;
      attrib ETLS_EXCEPTION_COND              LENGTH=$180                                                  ;
      attrib ETL_ERROR_JOBRUNTIME             LENGTH=8       FORMAT=&m_DTTMFMT    INFORMAT=&m_DTTMFMT      ;
      stop; run;

      proc sql noprint;
          DELETE FROM &m_di_mon..job_param where jobname = 'LOAD_SRC2STG_PRF_INVENTORY_FACT' and param_name='etlp_src_file';

          Insert into &m_di_mon..job_param
          (jobname, param_name, param_value, default_func)
          values("LOAD_SRC2STG_PRF_INVENTORY_FACT", "etlp_src_file","/data/stg_prf_inventory.csv",'"Y"');

          delete from  &m_di_mon..etl_sys_param where jobname="LOAD_STG2DM_PRF_INVENTORY_FACT"
                   and param_name="etlp_exception_table"
                   ;
         Insert into &m_di_mon..etl_sys_param
         (jobname, param_name, param_value, default_func)
         values("LOAD_STG2DM_PRF_INVENTORY_FACT","etlp_exception_table","DI_MON.STG_PRF_INVENTORY_X",'"DI_MON.STG_PRF_INVENTORY_X"')    ;
      quit;


:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1043621
   :DESCRIPTION:    Add jobnames that could be missing in migration from 4.2
   :VERSION:        M4MICM521
   :DATE_OF_CHANGE: 13JAN2014
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE


   proc sql noprint ;
     Select count(1) into :m_id_29 from &m_di_data..job where job_id=29;
     Select count(1) into :m_id_31 from &m_di_data..job where job_id=31;
     Select count(1) into :m_id_32 from &m_di_data..job where job_id=32;
     Select count(1) into :m_id_33 from &m_di_data..job where job_id=33;
     Select count(1) into :m_id_91 from &m_di_data..job where job_id=91;
     Select count(1) into :m_id_92 from &m_di_data..job where job_id=92;
     Select count(1) into :m_id_93 from &m_di_data..job where job_id=93;
     Select count(1) into :m_id_94 from &m_di_data..job where job_id=94;
     Select count(1) into :m_id_95 from &m_di_data..job where job_id=95;
   quit;



   %if (&m_id_29=0) %then %do;
      proc sql;
      insert into &m_di_data..job(job_id,job_nm,parent_job_id) values (29,'etl_stg2dm',-1);
      quit;
   %end;

   %if (&m_id_31=0) %then %do;
      proc sql;
        insert into &m_di_data..job(job_id,job_nm,parent_job_id) values (31,'partition_dm_hier_1',-1);
      quit;
   %end;

   %if (&m_id_32=0) %then %do;
      proc sql;
        insert into &m_di_data..job(job_id,job_nm,parent_job_id) values (32,'fcst_export',-1);
      quit;
   %end;

   %if (&m_id_33=0) %then %do;
      proc sql;
        insert into &m_di_data..job(job_id,job_nm,parent_job_id) values (33,'mdo_price_export',-1);
      quit;
   %end;


   %if (&m_id_91=0) %then %do;
      proc sql;
          insert into &m_di_data..job(job_id,job_nm,parent_job_id) values (91,'etl_start_service',-1);
      quit;
   %end;


   %if (&m_id_92=0) %then %do;
      proc sql;
        insert into &m_di_data..job(job_id,job_nm,parent_job_id) values (92,'est_start_service',-1);
      quit;
   %end;

  %if (&m_id_93=0) %then %do;
      proc sql;
        insert into &m_di_data..job(job_id,job_nm,parent_job_id) values (93,'waitfor_est_service',-1);
      quit;
   %end;


  %if (&m_id_94=0) %then %do;
      proc sql;
        insert into &m_di_data..job(job_id,job_nm,parent_job_id) values (94,'etl_end_service',-1);
      quit;
   %end;


  %if (&m_id_95=0) %then %do;
      proc sql;
        insert into &m_di_data..job(job_id,job_nm,parent_job_id) values (95,'copyDataToCaptains_service',-1);
      quit;
   %end;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1044472_1
   :DESCRIPTION:    Global setting FUTURE_PRICE_CHG_EXE_SOURCE for promotion
   :VERSION:        M4MICM521
   :DATE_OF_CHANGE: 14JAN2014
   :SUPPORT:        Richard Burgess, Pankaj Shinde
   :FREQUENCY:      ONCE

        proc sql;
        select count (*) into :_exists from &m_di_data..global_setting
           where spec_nm = 'FUTURE_PRICE_CHG_EXE_SOURCE' and app = 'RPP';
    quit;

    %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('FUTURE_PRICE_CHG_EXE_SOURCE','RPP','0','Indicates the data source for permanent prices that are used during the frozen period of a plan (the non-actionable period that is based on lead time requirements)');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'Indicates the data source for permanent prices that are used during the frozen period of a plan (the non-actionable period that is based on lead time requirements)' where
              spec_nm = 'FUTURE_PRICE_CHG_EXE_SOURCE' and app = 'RPP';
        quit;
    %end;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1044472_2
   :DESCRIPTION:    Global setting PRICE_CHANGE_APPROVAL_LEAD_TIME for promotion
   :VERSION:        M4MICM521
   :DATE_OF_CHANGE: 14JAN2014
   :SUPPORT:        Richard Burgess, Pankaj Shinde
   :FREQUENCY:      ONCE

        proc sql;
        select count (*) into :_exists from &m_di_data..global_setting
           where spec_nm = 'PRICE_CHANGE_APPROVAL_LEAD_TIME' and app = 'RPP';
    quit;

    %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('PRICE_CHANGE_APPROVAL_LEAD_TIME','RPP','0','The number of days between (but not including) the approval date and the effective date for a price change');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'The number of days between (but not including) the approval date and the effective date for a price change' where
              spec_nm = 'PRICE_CHANGE_APPROVAL_LEAD_TIME' and app = 'RPP';
        quit;
    %end;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;



:BEGIN_CHANGE:
   :CHANGE_ID:      ID1043886_ETL
   :DESCRIPTION:    Remove RPP_APPROVED_ASGMNT table
   :VERSION:        M4MICM521
   :DATE_OF_CHANGE: 14JAN2014
   :SUPPORT:        Priyalal
   :FREQUENCY:      ONCE


      proc sql noprint;
          delete from  &m_di_mon..job_param where upcase(jobname)='LOAD_DM_RPP_APPROVED_ASGMNT';
          delete from  &m_di_mon..etl_sys_param where upcase(jobname)='LOAD_DM_RPP_APPROVED_ASGMNT';
      quit;

     %if %sysfunc(exist(&m_di_mon..RPP_APPROVED_ASGMNT_X)) %then %do;

     Proc sql;
       drop table &m_di_mon..RPP_APPROVED_ASGMNT_X;
     quit;


    %end;


:END_CHANGE:



***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID1045338
   :DESCRIPTION:    ETL changes to support Multi-Byte character set language as the base language
   :VERSION:        M4MICM521
   :DATE_OF_CHANGE: 24JAN2014
   :SUPPORT:        Sangeeta
   :FREQUENCY:      ONCE


    proc sql noprint;
       delete from &m_di_mon..job_param where jobname = "LOAD_SRC2STG_MAIN" and param_name="src_date_informat";
       Insert into &m_di_mon..job_param
        (jobname, param_name, param_value, default_func)
        values("LOAD_SRC2STG_MAIN","src_date_informat", "",'"anydtdte21."' )

        ;

    quit;


:END_CHANGE:



***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      ID1049105_1
   :DESCRIPTION:    Derive Prf_stockout_fact and Prf_geo_prod_status from Prf_inventory_fact
   :VERSION:        M4MICM521
   :DATE_OF_CHANGE: 20JAN2014
   :SUPPORT:        Avinash Khairnar
   :FREQUENCY:      ONCE

   proc sql;

   delete from &m_di_mon..etl_sys_param where jobname = "PRF_STATUS_DERIVATION" and param_name="PRF_STATUS_DERIVATION_RUN_DTTM" ;

   Insert into &m_di_mon..etl_sys_param
      (jobname, param_name, param_value, default_func)
   values("PRF_STATUS_DERIVATION","PRF_STATUS_DERIVATION_RUN_DTTM", "01JAN1960:00:00:00",'"01JAN1960:00:00:00"' );

   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      ID0969403
   :DESCRIPTION:    Generate DATE_DM
   :VERSION:        M4MICM521
   :DATE_OF_CHANGE: 04FEB2014
   :SUPPORT:        Priyalal
   :FREQUENCY:      ONCE

  proc sql;

   delete from &m_di_mon..job_param where upcase(jobname) = "DI_ETL_GENERATE_STG_DATE" and param_name="etlp_year_start_dt" ;
   delete from &m_di_mon..job_param where upcase(jobname) = "DI_ETL_GENERATE_STG_DATE" and param_name="etlp_no_of_years" ;
   delete from &m_di_mon..job_param where upcase(jobname) = "DI_ETL_GENERATE_STG_DATE" and param_name="etlp_start_day_of_week" ;

   Insert into &m_di_mon..job_param
      (jobname, param_name, param_value, default_func)
   values("DI_ETL_GENERATE_STG_DATE","etlp_year_start_dt", " ",'""' );


   Insert into &m_di_mon..job_param
      (jobname, param_name, param_value, default_func)
   values("DI_ETL_GENERATE_STG_DATE","etlp_no_of_years", " ",'""' );

   Insert into &m_di_mon..job_param
      (jobname, param_name, param_value, default_func)
   values("DI_ETL_GENERATE_STG_DATE","etlp_start_day_of_week", " ",'""' );

  quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1055971
   :DESCRIPTION:    Add parameter to optionally export currency_id in Promotion Price Export
   :VERSION:        M3MICM521
   :DATE_OF_CHANGE: 11FEB2014
   :SUPPORT:        Venu Kadari
   :FREQUENCY:      ONCE



   proc sql noprint;
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_PRICE' and param_name='etlp_get_currency_id';

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_RPP_PRICE", "etlp_get_currency_id","0",'"0"')
       ;

   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1057755
   :DESCRIPTION:    Remove redundant parameter PRF_STATUS_DERIVATION from ETL_SYS_PARAM
   :VERSION:        M4MICM521
   :DATE_OF_CHANGE: 13FEB2014
   :SUPPORT:        Avinash Khairnar
   :FREQUENCY:      ONCE
   /* modified derivation macros does not required this parameter , hence deleting */
   proc sql;
      delete from &m_di_mon..etl_sys_param where jobname = "PRF_STATUS_DERIVATION" and param_name="PRF_STATUS_DERIVATION_RUN_DTTM" ;
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1048204
   :DESCRIPTION:    Add parameter for szpf_prod_purge_reclass
   :VERSION:        M4MICM521
   :DATE_OF_CHANGE: 20FEB2014
   :SUPPORT:        Pradeep Swain
   :FREQUENCY:      ONCE


   proc sql noprint;
       DELETE FROM &m_di_mon..job_param where jobname = 'SZPF_PROD_PURGE_RECLASS';

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("SZPF_PROD_PURGE_RECLASS", "GP_PURGE_RECLASS_UNPUBLISH",  "", '"0"' )
       values("SZPF_PROD_PURGE_RECLASS", "GP_RECLASS_IGNORE_PROD_MOVE", "", '"1"' )
       ;
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1056176
   :DESCRIPTION:    Adding new global setting ALLOW_UNITS_FOR_ZERO_NEED
   :VERSION:        M4MICM521
   :DATE_OF_CHANGE: 27FEB2014
   :SUPPORT:        Pankaj Shinde
   :FREQUENCY:      ONCE


   proc sql;
      select count (*) into :_exists from &m_di_data..global_setting
         where spec_nm = 'ALLOW_UNITS_FOR_ZERO_NEED';
   quit;

   %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('ALLOW_UNITS_FOR_ZERO_NEED','SZPK','1','Specifies whether units may be given to stores with 0 need');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'Specifies whether units may be given to stores with 0 need' where
              spec_nm = 'ALLOW_UNITS_FOR_ZERO_NEED' and app = 'SZPK';
        quit;
    %end;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1062893_1
   :DESCRIPTION:    Adding global setting DEMAND_MULTIPLIER_CUTOFFS for MDO
   :VERSION:        M4MICM521
   :DATE_OF_CHANGE: 04MAR2014
   :SUPPORT:        Pankaj Shinde
   :FREQUENCY:      ONCE

    proc sql;
      select count (*) into :_exists from &m_di_data..global_setting
         where spec_nm = 'DEMAND_MULTIPLIER_CUTOFFS' and app = 'CPO';
   quit;

   %if &_exists = 0 %then %do;
      proc sql;
         insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
            ('DEMAND_MULTIPLIER_CUTOFFS','CPO','2,4','Determines low, medium, and high price sensitivity ranges');
      quit;
   %end;
   %else %do;
      proc sql;
         update &m_di_data..global_setting set spec_desc =
          'Determines low, medium, and high price sensitivity ranges' where
           spec_nm = 'DEMAND_MULTIPLIER_CUTOFFS' and app = 'CPO';
      quit;
   %end;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1062893_2
   :DESCRIPTION:    Adding global setting DEMAND_MULTIPLIER_CUTOFFS for RPO
   :VERSION:        M4MICM521
   :DATE_OF_CHANGE: 04MAR2014
   :SUPPORT:        Pankaj Shinde
   :FREQUENCY:      ONCE

   proc sql;
      select count (*) into :_exists from &m_di_data..global_setting
         where spec_nm = 'DEMAND_MULTIPLIER_CUTOFFS' and app = 'RPO';
   quit;

   %if &_exists = 0 %then %do;
      proc sql;
         insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
            ('DEMAND_MULTIPLIER_CUTOFFS','RPO','2,4','Determines low, medium, and high price sensitivity ranges');
      quit;
   %end;
   %else %do;
      proc sql;
         update &m_di_data..global_setting set spec_desc =
          'Determines low, medium, and high price sensitivity ranges' where
           spec_nm = 'DEMAND_MULTIPLIER_CUTOFFS' and app = 'RPO';
      quit;
   %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1048204_2
   :DESCRIPTION:    Add parameter for szpf_prod_purge_reclass
   :VERSION:        M4MICM521
   :DATE_OF_CHANGE: 17MAR2014
   :SUPPORT:        Teresa McMains
   :FREQUENCY:      ONCE


   proc sql noprint;
       DELETE FROM &m_di_mon..job_param where jobname = 'SZPF_PROD_PURGE_RECLASS';

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("SZPF_PROD_PURGE_RECLASS", "GP_PURGE_RECLASS_UNPUBLISH",  "", '"0"' )
       values("SZPF_PROD_PURGE_RECLASS", "GP_PURGE_RECLASS_KEEP_RESULTS", "", '"0"' )
       values("SZPF_PROD_PURGE_RECLASS", "GP_PURGE_RECLASS_AUDIT_ONLY", "", '"0"' )
       ;
   quit;

:END_CHANGE:
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID1048204_3
   :DESCRIPTION:    Add parameter for szpf_prod_purge_reclass
   :VERSION:        M4MICM521
   :DATE_OF_CHANGE: 19MAR2014
   :SUPPORT:        Teresa McMains
   :FREQUENCY:      ONCE


   proc sql noprint;
       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("SZPF_PROD_PURGE_RECLASS", "GP_PURGE_RECLASS_SINCE_DATE",  "", '"0"' )
       ;
   quit;

:END_CHANGE:
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      RPP_FEATURE_LEVEL_DEFAULT
   :DESCRIPTION:    New global setting RPP_FEATURE_LEVEL
   :VERSION:        M4MICM521
   :DATE_OF_CHANGE: 21MAR2014
   :SUPPORT:        Andriy Rysin
   :FREQUENCY:      ONCE

    proc sql;
        select count (*) into :_exists from &m_di_data..global_setting
           where spec_nm = 'RPP_FEATURE_LEVEL';
    quit;

    %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('RPP_FEATURE_LEVEL','RPP','cal,cat,opt','Specifies the RPP solution feature support');
        quit;
    %end;

:END_CHANGE:
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID0956557
   :DESCRIPTION:    Adding column STATE_CD to STG_RPP_PLAN.
   :VERSION:        D4MICM54
   :DATE_OF_CHANGE: 30MAY2014
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE

   :DOC:            Add column STATE_CD in STG_RPP_PLAN


   proc sql;
      ALTER TABLE &m_didm_stg..STG_RPP_PLAN
      ADD STATE_CD integer length=4;
   quit;
   
   proc sql;
      ALTER TABLE &m_di_mon..STG_RPP_PLAN_x
      ADD STATE_CD integer length=4;
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID1113783
   :DESCRIPTION:    Create table RO_VAAR_REPORTS
   :VERSION:        D4MICM54
   :DATE_OF_CHANGE: 12Sep2014
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE


data &m_di_data..ro_vaar_reports;
      attrib TABLE_NM                                    LENGTH=$32     ;
      attrib EXTRACT_QUERY_TXT                           LENGTH=$255    ; 
      attrib APP_NM                                      LENGTH=$40     ;
      attrib RUN_EXTRACT_FLG                             LENGTH=$1     ;
      stop; run;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1111746
   :DESCRIPTION:    Global setting DISPLAY_ALL_WARNING_MSGS for Pack
   :VERSION:        D4MICM54
   :DATE_OF_CHANGE: 15SEP2014
   :SUPPORT:        Pankaj Shinde
   :FREQUENCY:      ONCE

    proc sql;
        select count (*) into :_exists from &m_di_data..global_setting
           where spec_nm = 'DISPLAY_ALL_WARNING_MSGS' and app = 'SZPK';
    quit;

    %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('DISPLAY_ALL_WARNING_MSGS','SZPK','1','Specifies whether all informational and warning messages should be surfaced in the UI');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'Specifies whether all informational and warning messages should be surfaced in the UI' where
              spec_nm = 'DISPLAY_ALL_WARNING_MSGS' and app = 'SZPK';
        quit;
    %end;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1113783_2
   :DESCRIPTION:    Insert data into seed table ro_vaar_repors
   :VERSION:        D4MICM54
   :DATE_OF_CHANGE: 08OCT2014
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE


        proc sql;
            insert into &m_di_data..ro_vaar_reports (TABLE_NM,EXTRACT_QUERY_TXT,APP_NM,RUN_EXTRACT_FLG) values
               ('mdo_budget_report','%di_rdm_lasr_mdo_budget_report(start_dt=,end_dt=)','CPO','Y');
               
            insert into &m_di_data..ro_vaar_reports (TABLE_NM,EXTRACT_QUERY_TXT,APP_NM,RUN_EXTRACT_FLG) values
               ('rpo_plan_report','%di_rdm_lasr_rpo_plan_report(start_dt=,end_dt=)','RPO','Y');
               
            insert into &m_di_data..ro_vaar_reports (TABLE_NM,EXTRACT_QUERY_TXT,APP_NM,RUN_EXTRACT_FLG) values
               ('mdo_plan_report','%di_rdm_lasr_mdo_plan_report(start_dt=,end_dt=)','CPO','Y');
               
            insert into &m_di_data..ro_vaar_reports (TABLE_NM,EXTRACT_QUERY_TXT,APP_NM,RUN_EXTRACT_FLG) values
               ('sales_forcast_report','%di_rdm_lasr_sales_forcast_report','ALL','Y');
               
            insert into &m_di_data..ro_vaar_reports (TABLE_NM,EXTRACT_QUERY_TXT,APP_NM,RUN_EXTRACT_FLG) values
               ('sales_performance_report','%di_rdm_lasr_sales_performance','ALL','Y');
               
            insert into &m_di_data..ro_vaar_reports (TABLE_NM,EXTRACT_QUERY_TXT,APP_NM,RUN_EXTRACT_FLG) values
               ('competitive_pricing_report','%di_rdm_lasr_competitive_pricing(start_dt=,end_dt=)','ALL','N');
               
            insert into &m_di_data..ro_vaar_reports (TABLE_NM,EXTRACT_QUERY_TXT,APP_NM,RUN_EXTRACT_FLG) values
               ('price_and_promotion_report','%di_rdm_lasr_price_and_promotion','RPP','N');
               
            insert into &m_di_data..ro_vaar_reports (TABLE_NM,EXTRACT_QUERY_TXT,APP_NM,RUN_EXTRACT_FLG) values
               ('promotion_efficiency','%di_rdm_lasr_promotion_report(start_dt= , end_dt= , plan_status= %str(0,1,2))','RPP','N');
               
        quit;
        

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1119123
   :DESCRIPTION:    Global setting ALLOW_ADDITIONAL_CONFIGS for Pack
   :VERSION:        D4MICM54
   :DATE_OF_CHANGE: 10OCT2014
   :SUPPORT:        Pankaj Shinde
   :FREQUENCY:      ONCE

    proc sql;
        select count (*) into :_exists from &m_di_data..global_setting
           where spec_nm = 'ALLOW_ADDITIONAL_CONFIGS' and app = 'SZPK';
    quit;

    %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('ALLOW_ADDITIONAL_CONFIGS','SZPK','0','Specifies whether the system may override the specified number of pack recommendations, if necessary.');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'Specifies whether the system may override the specified number of pack recommendations, if necessary.' where
              spec_nm = 'ALLOW_ADDITIONAL_CONFIGS' and app = 'SZPK';
        quit;
    %end;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1065350
   :DESCRIPTION:    Adding new global setting MUST_MEET_SKU_MIN
   :VERSION:        D4MICM54
   :DATE_OF_CHANGE: 10OCT2014
   :SUPPORT:        Pankaj Shinde
   :FREQUENCY:      ONCE


   proc sql;
      select count (*) into :_exists from &m_di_data..global_setting
         where spec_nm = 'MUST_MEET_SKU_MIN';
   quit;
   
   %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('MUST_MEET_SKU_MIN','SZPK','0','Specifies whether violations of store-SKU min should be considered a fatal error and stop processing');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'Specifies whether violations of store-SKU min should be considered a fatal error and stop processing' where
              spec_nm = 'MUST_MEET_SKU_MIN' and app = 'SZPK'; 
        quit;
    %end;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1113783_3
   :DESCRIPTION:    Insert data into seed table di_dm.job
   :VERSION:        D4MICM54
   :DATE_OF_CHANGE: 08OCT2014
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE


   proc sql;
   delete from &m_di_data..job where job_id = 41;
   insert into &m_di_data..job(job_id,job_nm,parent_job_id) values (41,'rdm_lasr_extract',-1);
   quit;

   proc sort data=&m_di_data..job force;
      by job_id;
   run;
        

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      S1127002
   :DESCRIPTION:    Parametrize POS feature in Promotion fact job
   :VERSION:        D4MICM54, F4MICM521
   :DATE_OF_CHANGE: 29OCT2014
   :SUPPORT:        Rhuta Kulkarni
   :FREQUENCY:      ONCE

   :DOC:            Add parameter into di_mon.job_param to improve the performance

   proc sql noprint ;
   DELETE FROM &m_di_mon..job_param where upcase(jobname) = 'LOAD_STG2DM_PROMOTION_FACT' and param_name='etlp_pos_enable';

   Insert into &m_di_mon..job_param
   (jobname, param_name, param_value, default_func)
   values("LOAD_STG2DM_PROMOTION_FACT",     "etlp_pos_enable",   "0",                          '"0"'   )
   ;
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1080395
   :DESCRIPTION:    Global setting DEDUPE_MULTIPLE_BULK_PACKS for Pack
   :VERSION:        D4MICM54
   :DATE_OF_CHANGE: 18NOV2014
   :SUPPORT:        Pankaj Shinde
   :FREQUENCY:      ONCE

    proc sql;
        select count (*) into :_exists from &m_di_data..global_setting
           where spec_nm = 'DEDUPE_MULTIPLE_BULK_PACKS' and app = 'SZPK';
    quit;

    %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('DEDUPE_MULTIPLE_BULK_PACKS','SZPK','0','Specifies whether bulk packs with identical sizes should be deduped to use only one of each size.');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'Specifies whether bulk packs with identical sizes should be deduped to use only one of each size.' where
              spec_nm = 'DEDUPE_MULTIPLE_BULK_PACKS' and app = 'SZPK';
        quit;
    %end;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1099417
   :DESCRIPTION:    Remove SHARE_FACT_TABLES global setting
   :VERSION:        D4MICM54
   :DATE_OF_CHANGE: 18NOV2014
   :SUPPORT:        Pankaj Shinde
   :FREQUENCY:      ONCE


   proc sql;

   DELETE FROM &m_di_data..GLOBAL_SETTING WHERE SPEC_NM ='SHARE_FACT_TABLES';

   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1144116
   :DESCRIPTION:    Job name for prf_inventory fact incorrectly named resulting in errors in src2stg
   :VERSION:        D4MICM54
   :DATE_OF_CHANGE: 07JAN2015
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE


      proc sql noprint;
          DELETE FROM &m_di_mon..job_param where jobname = 'LOAD_SRC2STG_PRF_INVENTORY_FACT' and param_name='etlp_src_file';
          DELETE FROM &m_di_mon..job_param where jobname = 'LOAD_SRC2STG_PRF_INVENTORY' and param_name='etlp_src_file';

          Insert into &m_di_mon..job_param
          (jobname, param_name, param_value, default_func)
          values("LOAD_SRC2STG_PRF_INVENTORY", "etlp_src_file","/data/stg_prf_inventory.csv",'"Y"');
     quit;
        

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      S1127002_1
   :DESCRIPTION:    Parametrize POS feature in Promotion fact job
   :VERSION:        D4MICM54, F4MICM521
   :DATE_OF_CHANGE: 12JAN2015
   :SUPPORT:        Rhuta Kulkarni
   :FREQUENCY:      ONCE

   :DOC:            Add parameter into di_mon.job_param to improve the performance

   proc sql noprint ;
   DELETE FROM &m_di_mon..job_param where upcase(jobname) = 'LOAD_STG2DM_PROMOTION_FACT' and param_name='etlp_pos_enable';

   Insert into &m_di_mon..job_param
   (jobname, param_name, param_value, default_func)
   values("LOAD_STG2DM_PROMOTION_FACT",     "etlp_pos_enable",   "1",                          '"1"'   )
   ;
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      S1187264
   :DESCRIPTION:    schema change for data to support Size Profiling VA extract 
   :VERSION:        D4MICM54
   :DATE_OF_CHANGE: 13JAN2015
   :SUPPORT:        Avinash Khairnar
   :FREQUENCY:      ONCE

   PROC SQL NOPRINT;
   
   create table &m_di_data..prf_sales_sum
     (
      PROFILING_PROJECT_SK integer length=6,
      SIZESET_ID integer length=8 ,
      PROD_HIER_SK integer length=6,
      GEO_HIER_SK integer length=4,
      STD_SIZE_CD integer length=6,
      POST_IMPUTATION_SALES_UNITS numeric length=8 format=nlnum12.2,
      IMPUTATION_ADDED_SALES_UNITS numeric length=8 format=nlnum12.2,
      ORIG_SALES_UNITS numeric length=8 format=nlnum12.2,
      ORIG_SALES_AMT numeric length=8 format=nlnum12.2
     );
     
     
   create unique index prim_key on 
   &m_di_data..prf_sales_sum(PROFILING_PROJECT_SK,SIZESET_ID,PROD_HIER_SK,GEO_HIER_SK,STD_SIZE_CD);
   QUIT;
   
   %if %di_util_varexist(dsname=&m_di_data..prf_ssd_sset, varname=sales_amt) %then %do;
         proc sql noprint;
            alter table &m_di_data..prf_ssd_sset drop sales_amt ;
         quit;
   %end;
   
   proc sql noprint;
      alter table &m_di_data..prf_ssd_sset add SALES_AMT numeric format=nlnum12.2 ;
   quit;

   

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;



:BEGIN_CHANGE:
   :CHANGE_ID:      ID1129252
   :DESCRIPTION:    Insert data into seed table so_vaar_reports and global_settings
   :VERSION:        D4MICM54
   :DATE_OF_CHANGE: 20JAN2015
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE
   
   
        data &m_di_data..so_vaar_reports;
            attrib TABLE_NM                                    LENGTH=$32     ;
            attrib EXTRACT_QUERY_TXT                           LENGTH=$255    ; 
            attrib RUN_EXTRACT_FLG                             LENGTH=$1     ;
            stop; run;


        proc sql;
            delete * from &m_di_data..so_vaar_reports;
            
            insert into &m_di_data..so_vaar_reports (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG) values
               ('SO_fact_data_report','%szpf_fact_analysis_report(no_of_weeks=)','N');
               
            insert into &m_di_data..so_vaar_reports (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG) values
               ('Size_profiling_report','%szpf_data_analysis_report','N');
               
            insert into &m_di_data..so_vaar_reports (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG) values
               ('Pack_optimization_report','%szpk_data_analysis_report','N');
               
               
            delete from &m_di_data..GLOBAL_SETTING
               where upcase(SPEC_NM) ='LASR_LIB' and upcase(APP) = 'ALL';
            
               insert into &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
               values ('LASR_LIB','ALL','Visual Analytics LASR',
               'Specifies the LASR library used');
               
        quit;
        

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      S1187264_2
   :DESCRIPTION:    Add SALES_AMT in partition dataset to support Size Profiling VA extract 
   :VERSION:        D4MICM54
   :DATE_OF_CHANGE: 20JAN2015
   :SUPPORT:        Avinash Khairnar
   :FREQUENCY:      ONCE

   proc sql noprint;
        select path into :path
          from sashelp.vlibnam
         where lowcase(libname)="di_dm" and level in (0,1);
   quit;
    
   %let path=%trim(&path)/prf_ssd_sset;
   libname partlib "&path";
   proc sql;
            create table work.prf_ssd_list as
            select memname as table_name
            from sashelp.vtable
            where upcase(LIBNAME) = 'PARTLIB'
            and   upcase(MEMTYPE) = 'DATA'
            and upcase(MEMNAME) like 'PRF_SSD_SSET%';     
   quit;
   %let prf_ssd_cnt = %di_util_nobs(work.prf_ssd_list);
   %if &prf_ssd_cnt > 0 %then %do;
      %do i=1 %to &prf_ssd_cnt;
         data _null_;
         ptr = &i;
         set work.prf_ssd_list point=ptr;
         call symput("table_name",table_name);
         stop;
         run;
         %let table_name = &table_name;
         %if not %di_util_varexist(dsname=partlib.&table_name, varname=sales_amt) %then %do;
         proc sql noprint;
         alter table partlib.&table_name add SALES_AMT numeric format=nlnum12.2 ;
         quit;
         %end;
      %end; 
   %end;
   proc datasets lib=work nolist;
   delete prf_ssd_list;
   quit;
   libname partlib clear;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1129252_2
   :DESCRIPTION:    insert data into seed table so_vaar_repors
   :VERSION:        D4MICM54
   :DATE_OF_CHANGE: 09FEB2015
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE
   
   
         proc sql noprint;
         
         
            delete * from &m_di_data..so_vaar_reports;
            insert into &m_di_data..so_vaar_reports (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG) values
               ('so_fact_data_report','%di_szpf_fact_analysis_report(no_of_weeks=, date_sk=)','N');
            insert into &m_di_data..so_vaar_reports (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG) values
               ('pack_optimization_report','%di_szpk_data_analysis_report','N');
            insert into &m_di_data..so_vaar_reports (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG) values
               ('size_profiling_report','%di_szpf_analysis_report','N');
               
                                
            delete from &m_di_mon..etl_sys_param 
               where upcase(jobname) = 'DI_SZPF_FACT_ANALYSIS_REPORT' 
                  and lowcase(param_name) = 'last_date_sk';
            insert into &m_di_mon..etl_sys_param
               (jobname, param_name, param_value, default_func)
            values("DI_SZPF_FACT_ANALYSIS_REPORT",  "last_date_sk", "0",  "0"  )
            ;
            
            
            delete from &m_di_mon..etl_sys_param
               where upcase(jobname)="DI_SZPK_DATA_ANALYSIS_REPORT"
                  and lowcase(param_name)="szpk_report_run_dttm";
            insert into &m_di_mon..etl_sys_param
               (jobname, param_name, param_value, default_func)
            values("DI_SZPK_DATA_ANALYSIS_REPORT", "szpk_report_run_dttm"," ", '" "');
            
            
            delete from &m_di_mon..etl_sys_param
               where upcase(jobname)="DI_SZPF_ANALYSIS_REPORT"
                  and lowcase(param_name)="szpf_report_run_dttm";
            insert into &m_di_mon..etl_sys_param         
               (jobname, param_name, param_value, default_func)
            values ("DI_SZPF_ANALYSIS_REPORT", "szpf_report_run_dttm" , "" , "");
            
         quit;
        

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;



:BEGIN_CHANGE:
   :CHANGE_ID:      ID1153861
   :DESCRIPTION:    JOB_PARAM entry for DI_ETL_PURGE_TEMP_LASR_DIR
   :VERSION:        D4MICM54
   :DATE_OF_CHANGE: 12Feb2015
   :SUPPORT:        Priyalal
   :FREQUENCY:      ONCE

   proc sql;
      delete from &m_di_mon..job_param where UPCASE(JOBNAME) eq 'DI_ETL_PURGE_TEMP_LASR_DIR' and UPCASE(PARAM_NAME) eq 'ETLP_ARCHIVE_TEMP_LASR_TABLE';
      delete from &m_di_mon..job_param where UPCASE(JOBNAME) eq 'DI_ETL_PURGE_TEMP_LASR_DIR' and UPCASE(PARAM_NAME) eq 'ETLP_ARCHIVE_PATH';
      delete from &m_di_mon..job_param where UPCASE(JOBNAME) eq 'DI_ETL_PURGE_TEMP_LASR_DIR' and UPCASE(PARAM_NAME) eq 'ETLP_NO_OF_DAYS_TO_PRESERVE';

      insert into &m_di_mon..job_param(JOBNAME,PARAM_NAME,PARAM_VALUE,DEFAULT_FUNC)
      values('DI_ETL_PURGE_TEMP_LASR_DIR','etlp_archive_temp_lasr_table','','"N"')
      values('DI_ETL_PURGE_TEMP_LASR_DIR','etlp_archive_path','','""')
      values('DI_ETL_PURGE_TEMP_LASR_DIR','etlp_no_of_days_to_preserve','','"120"')
     ;
  quit;


:END_CHANGE:



***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;



:BEGIN_CHANGE:
   :CHANGE_ID:      ID1129252_3
   :DESCRIPTION:    Update the data in global_settings table
   :VERSION:        D4MICM54
   :DATE_OF_CHANGE: 05MAR2015
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE
   
   
         proc sql noprint;
         
         
            delete from &m_di_data..GLOBAL_SETTING
               where upcase(SPEC_NM) ='LASR_LIB' and upcase(APP) = 'ALL';
               
            delete from &m_di_data..GLOBAL_SETTING
               where upcase(SPEC_NM) ='LASR_LIB_SO' and upcase(APP) = 'SO';
            
               insert into &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
               values ('LASR_LIB_SO','SO','Size Optimization RDM',
               'Specifies the SO LASR library used');
               
            delete from &m_di_data..GLOBAL_SETTING
               where upcase(SPEC_NM) ='LASR_LIB_RO' and upcase(APP) = 'MDO';
            
               insert into &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
               values ('LASR_LIB_RO','MDO','Revenue Optimization RDM',
               'Specifies the RO LASR library used');
            
         quit;
        

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1113783_4
   :DESCRIPTION:    Update data into seed table ro_vaar_repors
   :VERSION:        D4MICM54
   :DATE_OF_CHANGE: 06MAR2014
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE


        proc sql;
            
            delete * from &m_di_data..ro_vaar_reports;

            insert into &m_di_data..ro_vaar_reports (TABLE_NM,EXTRACT_QUERY_TXT,APP_NM,RUN_EXTRACT_FLG) values
               ('mdo_budget_report','%di_rdm_lasr_mdo_budget_report(start_dt=,end_dt=)','CPO','Y');
               
            insert into &m_di_data..ro_vaar_reports (TABLE_NM,EXTRACT_QUERY_TXT,APP_NM,RUN_EXTRACT_FLG) values
               ('mdo_plan_report','%di_rdm_lasr_mdo_plan_report(start_dt=,end_dt=)','CPO','Y');
               
            insert into &m_di_data..ro_vaar_reports (TABLE_NM,EXTRACT_QUERY_TXT,APP_NM,RUN_EXTRACT_FLG) values
               ('sales_forcast_report','%di_rdm_lasr_sales_forcast_report','CPO','Y');
               
            insert into &m_di_data..ro_vaar_reports (TABLE_NM,EXTRACT_QUERY_TXT,APP_NM,RUN_EXTRACT_FLG) values
               ('sales_performance_report','%di_rdm_lasr_sales_performance','CPO','Y');
               
            insert into &m_di_data..ro_vaar_reports (TABLE_NM,EXTRACT_QUERY_TXT,APP_NM,RUN_EXTRACT_FLG) values
               ('price_and_promotion_report','%di_rdm_lasr_price_and_promotion','CPO','Y');
               
        quit;
        

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID1129252_5
   :DESCRIPTION:    Update the data in global_settings table
   :VERSION:        D4MICM54
   :DATE_OF_CHANGE: 09APR2015
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE
   
   
         proc sql noprint;
         
            delete from &m_di_data..GLOBAL_SETTING
               where upcase(SPEC_NM) in ('LASR_LIB','LASR_LIB_SO','LASR_LIB_RO') and upcase(APP) in('ALL','SO','MDO','CPO');
         
            insert into &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
               values ('LASR_LIB_SO','ALL','Size Optimization LASR',
                  'Specifies the SO LASR library used');
         
            insert into &m_di_data..GLOBAL_SETTING (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
               values ('LASR_LIB_RO','ALL','Revenue Optimization LASR',
                  'Specifies the RO LASR library used');
            
         quit;
        

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1172889
   :DESCRIPTION:    Global setting GENERATED_BULK_PACK_INNER_COUNT for Pack Optimization
   :VERSION:        D4MICM54
   :DATE_OF_CHANGE: 08MAY2015
   :SUPPORT:        Pankaj Shinde
   :FREQUENCY:      ONCE

        proc sql;
        select count (*) into :_exists from &m_di_data..global_setting
           where spec_nm = 'GENERATED_BULK_PACK_INNER_COUNT' and app = 'SZPK';
    quit;

    %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('GENERATED_BULK_PACK_INNER_COUNT','SZPK','1','Specifies whether the size of the bulk pack that is entered in the UI is the number of units in one pack.');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'Specifies whether the size of the bulk pack that is entered in the UI is the number of units in one pack.' where
              spec_nm = 'GENERATED_BULK_PACK_INNER_COUNT' and app = 'SZPK';
        quit;
    %end;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      IDS1154342_1
   :DESCRIPTION:    Global setting MINIMUM_ORDER_THRESHOLD for Pack Optimization
   :VERSION:        D4MICM54
   :DATE_OF_CHANGE: 13MAY2015
   :SUPPORT:        Pankaj Shinde
   :FREQUENCY:      ONCE

        proc sql;
        select count (*) into :_exists from &m_di_data..global_setting
           where spec_nm = 'MINIMUM_ORDER_THRESHOLD' and app = 'SZPK';
    quit;

    %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('MINIMUM_ORDER_THRESHOLD','SZPK','5.0','Specifies the percentage of the disaggregated quantity that determines the minimum value of the optimized quantity across all stores.');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'Specifies the percentage of the disaggregated quantity that determines the minimum value of the optimized quantity across all stores.' where
              spec_nm = 'MINIMUM_ORDER_THRESHOLD' and app = 'SZPK';
        quit;
    %end;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      IDS1154342_2
   :DESCRIPTION:    Global setting MAXIMUM_ORDER_THRESHOLD for Pack Optimization
   :VERSION:        D4MICM54
   :DATE_OF_CHANGE: 13MAY2015
   :SUPPORT:        Pankaj Shinde
   :FREQUENCY:      ONCE

        proc sql;
        select count (*) into :_exists from &m_di_data..global_setting
           where spec_nm = 'MAXIMUM_ORDER_THRESHOLD' and app = 'SZPK';
    quit;

    %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('MAXIMUM_ORDER_THRESHOLD','SZPK','5.0','Specifies the percentage of the disaggregated quantity that determines the maximum value of the optimized quantity across all stores.');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'Specifies the percentage of the disaggregated quantity that determines the maximum value of the optimized quantity across all stores.' where
              spec_nm = 'MAXIMUM_ORDER_THRESHOLD' and app = 'SZPK';
        quit;
    %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1180428_3
   :DESCRIPTION:    SO VAAR performance Story
   :VERSION:        D4MICM54
   :DATE_OF_CHANGE: 20MAY2015
   :SUPPORT:        Priyalal
   :FREQUENCY:      ONCE


   data &m_di_data..so_vaar_reports;
      attrib TABLE_NM                                    LENGTH=$32;
      attrib EXTRACT_QUERY_TXT                           LENGTH=$255;
      attrib RUN_EXTRACT_FLG                             LENGTH=$1;
      attrib LOAD_LASR_FLG                               LENGTH=$1;
      attrib ALL_COLUMNS                                 LENGTH=$6400;
      attrib MANDATORY_COLUMNS                           LENGTH=$6400;
      attrib INCLUDE_COLUMNS                             LENGTH=$6400;
      attrib PARTITION_FLG                               LENGTH=$1;
      attrib PROD_PARTITION_LEVEL                        LENGTH=8;
      attrib SUB_START_DT                                LENGTH=8 FORMAT=&m_DTFMT       INFORMAT=&m_DTFMT       ;
      attrib NO_OF_WEEKS_FRM_SUB_START_DT                LENGTH=8;
      stop; 
   run;


   proc sql;
      delete * from &m_di_data..so_vaar_reports;
      
      insert into &m_di_data..so_vaar_reports 
         (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG,LOAD_LASR_FLG,PARTITION_FLG,ALL_COLUMNS,MANDATORY_COLUMNS) values
         ('so_fact_data_report',
         '%di_szpf_fact_analysis_report(no_of_weeks=, date_sk=)',
         'N',
         'N',
         'N',
         "%sysfunc(compress(%str(DATE_SK,PROD_ID,GEO_ID,FISCAL_START_DT,FISCAL_END_DT,STD_SIZE_CD,STD_SIZE_NM,DISPLAY_ORDER,
         SALES_AMT,SALES_UNITS,CLOSE_INV_UNITS,RECEIPTS,GEO_PROD_STATUS,IN_STOCK_STATUS,APP_USER_NMS)))",
         "%sysfunc(compress(%str(PROD_ID,GEO_ID,FISCAL_START_DT,STD_SIZE_NM,SALES_AMT,SALES_UNITS,CLOSE_INV_UNITS)))")
      ;
      insert into &m_di_data..so_vaar_reports 
         (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG,LOAD_LASR_FLG,PARTITION_FLG,ALL_COLUMNS,MANDATORY_COLUMNS) values
         ('pack_optimization_report',
         '%di_szpk_data_analysis_report',
         'Y',
         'Y',
         'N',
         "%sysfunc(compress(%str(PURCHASE_ORDER_PLAN_SK,PURCHASE_ORDER_PLAN_NM,PLAN_STATUS_CD,START_DT,END_DT,TAG,HAS_NEED,
         PLAN_SEASON_SK,SEASON_NM,PLAN_NOTES,CREATED_BY_USER_SK,APP_USER_NM,CREATED_DT,
         UPDATED_DTTM,PURCHASE_ORDER_PLAN_DESC,TOTAL_QTY_PERCENT_MIN,TOTAL_QTY_PERCENT_MAX,
         MISMATCH_THRESHOLD_PCT,MISMATCH_OVER_PCT,MISMATCH_UNDER_PCT,BUY_SK,BUY_NM,
         DELIVERY_SK,DELIVERY_TYPE_ID,DELIVERY_SEQUENCE_ID,DELIVERY_DT,
         DELIVERY_NM,DELIVERY_DESC,MODEL_PROD_FLG,PROD_DESC,GEO_ID,GEO_NM,
         OPEN_DT,CLOSING_DT,STREET_ADDRESS,CITY,STATE,ZIP_CODE,COUNTRY,DC_GEO_HIER_SK,
         DC_GEO_ID,DC_GEO_NAME,SIZESET_NM,SIZESET_DESC,INNER_PACK_ID,INNER_PACK_NAME,
         INNER_PACK_COUNT,OUTER_PACK_ID,OUTER_PACK_NAME,OUTER_PACK_COUNT,STD_SIZE_CD,
         STD_SIZE_NM,DISPLAY_ORDER,PROFILE_ID,CLUSTER_ID,CONTRIB_PCT,
         MISMATCH,MISMATCH_PER,
         STORE_MIN,STORE_MAX,SKU_MIN,REC_MULTICOLOR,INNER_PACK_HANDLE_COST,
         OVER_START,BREAK_PACKS,SUBSETTING_ATTR_SK,SUBSETTING_ATTR_NM,COLOR_PACK_SETTING,
         REC_PACK_ORDER_MIN,UNDER_START,USE_SHARED_PACK_CONFIGS,OUTER_HANDLE_DSCT_RATE,
         SIZE_OF_INNER,APP_USER_NMS,TARGET_QTY)))"
         "%sysfunc(compress(%str(PURCHASE_ORDER_PLAN_NM,BUY_NM,DELIVERY_DT,DELIVERY_NM,DC_GEO_NAME,INNER_PACK_ID,GEO_NM,MISMATCH,
         OPTIMIZED_UNITS_PCK,OUTER_PACK_ID,PROD_DESC,STD_SIZE_NM,TARGET_QTY)))")
      ;
      insert into &m_di_data..so_vaar_reports 
         (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG,LOAD_LASR_FLG,PARTITION_FLG,ALL_COLUMNS,MANDATORY_COLUMNS) values
         ('size_profiling_report',
         '%di_szpf_analysis_report',
         'Y',
         'Y',
         'N',
         "%sysfunc(compress(%str(PROFILING_PROJECT_SK,PROJECT_NM,START_DT,END_DT,UPDATED_DTTM,APP_USER_ID,SEASON_NM,
         PRF_SCENARIO_SK,SCENARIO_NM,STORE_CATEGORY_NM,PRODUCT_ROOT_NM,PROJECT_ATTRIBUTE_FILTER,
         SCENARIO_STATUS,PROD_PARTITION_NM,SIZESET_ID,SIZESET_NMS,SIZESET_CDS,SIZE_SET_TYPE,PROFILE_SK,
         PROFILE_NM,MANUAL_FLG,PROFILE_PROD_SK,PRODUCT,PROD_HIER_SK,PROD_ID,PROD_NM,STORE_GROUP_ID,
         STORE_GROUP_NM,GEO_HIER_SK,GEO_ID,GEO_NM,STREET_ADDRESS,CITY,STATE,ZIP_CODE,COUNTRY,ASSIGNMENT_TYPE,
         STD_SIZE_CD,STD_SIZE_NM,DISPLAY_ORDER,REVENUE,SALES_UNITS,INVENTORY_EOP_UNITS,IMPUTATION_ADDED_SALES_UNITS,
         POST_IMPUTATION_SALES_UNITS,IN_STOCK_OPPORTUNITY,PERIOD_IN_STOCK,PROFILE_PCT,APP_USER_NMS,PRELIM_PROFILE_RMSD)))",
         "%sysfunc(compress(%str(POST_IMPUTATION_SALES_UNITS,INVENTORY_EOP_UNITS,IN_STOCK_OPPORTUNITY,PERIOD_IN_STOCK,PRODUCT,PROD_PARTITION_NM,
         PROFILE_NM,PROFILE_PCT,PROJECT_NM,REVENUE,SALES_UNITS,SCENARIO_STATUS,SIZESET_NMS,STD_SIZE_NM,ASSIGNMENT_TYPE,STORE_GROUP_NM,
         GEO_ID,GEO_NM,SEASON_NM,ZIP_CODE,PRELIM_PROFILE_RMSD)))")
      ;
   quit;

:END_CHANGE:
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1175633
   :DESCRIPTION:    Global setting PROMO_MIX_BLEND_CALC_TYPE for Promotion Optimization
   :VERSION:        D4MICM54
   :DATE_OF_CHANGE: 22MAY2015
   :SUPPORT:        Pankaj Shinde
   :FREQUENCY:      ONCE

        proc sql;
        select count (*) into :_exists from &m_di_data..global_setting
           where spec_nm = 'PROMO_MIX_BLEND_CALC_TYPE' and app = 'RPP';
    quit;

    %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('PROMO_MIX_BLEND_CALC_TYPE','RPP','0','Specifies whether product/geography pairs in promotion plans without a price discount should be considered as promoted items.');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'Specifies whether product/geography pairs in promotion plans without a price discount should be considered as promoted items.' where
              spec_nm = 'PROMO_MIX_BLEND_CALC_TYPE' and app = 'RPP';
        quit;
    %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1137516_1
   :DESCRIPTION:    CRP Poor Performance during UI Population at Buy and Delivery level
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 22SEP2015
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE


   proc sql noprint;
       select count(*)
       into :_cnt_idx8_phad
       from sashelp.vindex
       where upcase(libname)="DI_DATA"
       and upcase(memname) = "PRODUCT_HIER_ASSOC_DM"
       and upcase(indxname) = "PROD_HIER_IX8"
       ;
    quit;

   %if &_cnt_idx8_phad > 0 %then
   %do;
      proc sql noprint;
         DROP INDEX PROD_HIER_IX8 FROM &m_di_data..PRODUCT_HIER_ASSOC_DM;
      quit;
   %end; 	  
      proc sql noprint;
         CREATE UNIQUE INDEX PROD_HIER_IX8 ON &m_di_data..PRODUCT_HIER_ASSOC_DM
		 (
		  PROD_HIER_ASSOC_CD,
		  PARENT_PROD_LVL, 
		  PROD_HIER_SK
		  )
	  ;
      quit;
   
   proc sql noprint;
       select count(*)
       into :_cnt_idx1_phad
       from sashelp.vindex
       where upcase(libname)="DI_DATA"
       and upcase(memname) = "PRODUCT_HIER_ASSOC_DM"
       and upcase(indxname) = "PROD_HIER_IX10"
       ;
   quit;

   %if &_cnt_idx1_phad > 0 %then
   %do;
      proc sql noprint;
         DROP INDEX PROD_HIER_IX10 FROM &m_di_data..PRODUCT_HIER_ASSOC_DM;
      quit;
   %end;	  
      proc sql noprint;
        CREATE UNIQUE INDEX PROD_HIER_IX10 ON &m_di_data..PRODUCT_HIER_ASSOC_DM
		(
		   PROD_HIER_ASSOC_CD,
		   PARENT_PROD_HIER_SK,
		   PROD_LVL, 
		   PROD_HIER_SK
		)
	  ;
      quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1200550
   :DESCRIPTION:    Removing 8 from global setting ACTIVE_PROD_STATUS default value
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 24SEP2015
   :SUPPORT:        Pankaj Shinde
   :FREQUENCY:      ONCE

    proc sql;
        select count (*) into :_exists from &m_di_data..global_setting
           where spec_nm = 'ACTIVE_PROD_STATUS' and spec_value = '1,3,5,6,7,8';
    quit;

    %if &_exists > 0 %then %do;
        proc sql;
           update &m_di_data..global_setting set spec_value = '1,3,5,6,7' where
              spec_nm = 'ACTIVE_PROD_STATUS' and spec_value = '1,3,5,6,7,8';
        quit;
    %end;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1113783_5
   :DESCRIPTION:    Update data into seed table ro_vaar_repors
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 16OCT2015
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE


   data &m_di_data..ro_vaar_reports;
      attrib TABLE_NM                                    LENGTH=$32;
      attrib EXTRACT_QUERY_TXT                           LENGTH=$255;
      attrib RUN_EXTRACT_FLG                             LENGTH=$1;
      attrib LOAD_LASR_FLG                               LENGTH=$1;
      attrib ALL_COLUMNS                                 LENGTH=$6400;
      attrib MANDATORY_COLUMNS                           LENGTH=$6400;
      attrib INCLUDE_COLUMNS                             LENGTH=$6400;
      attrib PARTITION_FLG                               LENGTH=$1;
      attrib PROD_PARTITION_LEVEL                        LENGTH=8;
      attrib SUB_START_DT                                LENGTH=8 FORMAT=&m_DTFMT       INFORMAT=&m_STG_DTINFMT;
      attrib NO_OF_WEEKS_FRM_SUB_START_DT                LENGTH=8;
      attrib PREFIX                                      LENGTH=$4;
   stop;
   run;

   proc sql;
   
   delete * from &m_di_data..ro_vaar_reports;
   insert into &m_di_data..ro_vaar_reports 
      (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG,LOAD_LASR_FLG,PARTITION_FLG,ALL_COLUMNS,MANDATORY_COLUMNS,PREFIX) values
      ('sales_performance_report',
      '%di_rdm_sales_performance',
      'N',
      'N',
      'N',
      "%sysfunc(compress(%str(PROD_ID,PROD_NM,PROD_DESC,VOLUME,VOLUME_BASE_UOM,BRAND_NM,GEO_ID,GEO_NM
      ,STREET_ADDRESS,CITY,ZIP_CODE,STATE,COUNTRY,APP_USER_NMS,WEEK_START_DATE,ACTUAL_PERMANENT_PRICE,REGULAR_PRICE,
      INVENTORY_POSITION,ACTIVATION_STATUS,UNIT_SALES,DOLLAR_SALES,CURRENT_YTD_UNIT_SALES,CURRENT_YTD_DOLLAR_SALES,PREVIOUS_YTD_UNIT_SALES,PREVIOUS_Y
      TD_DOLLAR_SALES,SAME_QTR_PREV_YEAR_UNIT_SALES,SAME_QTR_PREV_YEAR_DOLLAR_SALES,CURRENT_QUARTER_UNIT_SALES,CURRENT_QUARTER_DOLLAR_SALES)))",
      "%sysfunc(compress(%str(PROD_ID,PROD_NM,VOLUME,VOLUME_BASE_UOM,BRAND_NM,GEO_ID,GEO_NM
      ,ZIP_CODE,APP_USER_NMS,WEEK_START_DATE,ACTUAL_PERMANENT_PRICE,REGULAR_PRICE,
      INVENTORY_POSITION,ACTIVATION_STATUS,UNIT_SALES,DOLLAR_SALES,CURRENT_YTD_UNIT_SALES,CURRENT_YTD_DOLLAR_SALES,PREVIOUS_YTD_UNIT_SALES,PREVIOUS_Y
      TD_DOLLAR_SALES,SAME_QTR_PREV_YEAR_UNIT_SALES,SAME_QTR_PREV_YEAR_DOLLAR_SALES,CURRENT_QUARTER_UNIT_SALES,CURRENT_QUARTER_DOLLAR_SALES)))",
      "SALE")
   ;
   insert into &m_di_data..ro_vaar_reports 
      (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG,LOAD_LASR_FLG,PARTITION_FLG,ALL_COLUMNS,MANDATORY_COLUMNS,PREFIX) values
      ('sales_forecast_report',
      '%di_rdm_sales_forecast',
      'N',
      'N',
      'N',
      "%sysfunc(compress(%str(PROD_ID,PROD_NM,PROD_DESC,VOLUME,VOLUME_BASE_UOM,BRAND_NM,GEO_ID,GEO_NM,STREET_ADDRESS,CITY,ZIP_CODE,STATE,COUNTRY,WEEK_ENDING,EFFECTIVE_PRICE,
      REGULAR_PRICE,EFFECTIVE_PRICE_DISCOUNT,BASELINE_UNIT_DEMAND)))",
      "%sysfunc(compress(%str(PROD_ID,PROD_NM,VOLUME,VOLUME_BASE_UOM,BRAND_NM,GEO_ID,GEO_NM,ZIP_CODE,WEEK_ENDING,EFFECTIVE_PRICE,
      REGULAR_PRICE,EFFECTIVE_PRICE_DISCOUNT,BASELINE_UNIT_DEMAND)))",
      "FCST")
   ;
   insert into &m_di_data..ro_vaar_reports 
      (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG,LOAD_LASR_FLG,PARTITION_FLG,ALL_COLUMNS,MANDATORY_COLUMNS,PREFIX) values
      ('price_and_promotion_report',
      '%di_rdm_price_and_promotion',
      'N',
      'N',
      'N',
      "%sysfunc(compress(%str(PROD_ID,PROD_NM,PROD_DESC,VOLUME,VOLUME_BASE_UOM,BRAND_NM,GEO_ID,GEO_NM,STREET_ADDRESS,CITY,ZIP_CODE,STATE,COUNTRY,PS1_ESTIMATE,PS2_ESTIMATE,PS3_ESTIMATE,
      PS4_ESTIMATE,PS5_ESTIMATE,PS6_ESTIMATE,PS1_LIFT,PS2_LIFT,PS3_LIFT,PS4_LIFT,PS5_LIFT,PS6_LIFT,PRICE_ELASTICITY,PRICE_LIFT_25_PER,PRICE_LIFT_30_PER,
      PRICE_LIFT_40_PER,PRICE_LIFT_50_PER,PRICE_LIFT_60_PER,APP_USER_NMS)))",
      "%sysfunc(compress(%str(PROD_ID,PROD_NM,VOLUME,VOLUME_BASE_UOM,BRAND_NM,GEO_ID,GEO_NM,ZIP_CODE,PS1_ESTIMATE,PS2_ESTIMATE,PS3_ESTIMATE,
      PS4_ESTIMATE,PS5_ESTIMATE,PS6_ESTIMATE,PS1_LIFT,PS2_LIFT,PS3_LIFT,PS4_LIFT,PS5_LIFT,PS6_LIFT,PRICE_ELASTICITY,PRICE_LIFT_25_PER,PRICE_LIFT_30_PER,
      PRICE_LIFT_40_PER,PRICE_LIFT_50_PER,PRICE_LIFT_60_PER,APP_USER_NMS)))",
      "PPE")
   ;
   insert into &m_di_data..ro_vaar_reports 
      (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG,LOAD_LASR_FLG,PARTITION_FLG,ALL_COLUMNS,MANDATORY_COLUMNS,PREFIX) values
      ('mdo_plan_report',
      '%di_rdm_mdo_plan(start_dt=,end_dt=)',
      'N',
      'N',
      'N',
      "%sysfunc(compress(%str(PROD_HIER_SK,PROD_ID,PROD_NM,PROD_DESC,VOLUME,VOLUME_BASE_UOM,BRAND_NM,GEO_ID,GEO_HIER_SK,GEO_NM,STREET_ADDRESS,CITY,ZIP_CODE,STATE,COUNTRY,PLAN_NM,
      PLAN_OBJECTIVE,PLAN_START_DATE,PLAN_END_DATE,WEEKENDINGDATE,PERM_PRICE_MIN,TARGETSELLTHROUGHPERCENT,END_SELL_THROUGH_PCT,MARKDOWNS_PLANNED_MIN,MARKDOWNS_PLANNED_MAX,
      BASE_PERCENT_OFF_MIN,BASE_PERCENT_OFF_MAX,BASE_PRICE_MIN,BASE_PRICE_MAX,INV_UNITS_ON_HAND,BASE_PRICE,PLAN_PRICE,PLAN_AVG_PRICE_FIRST_WEEK,PLAN_AVG_LAST_FIRST_WEEK,
      END_INV_UNITS,END_INV_VAL_AT_COST,FW_INV_UNITS,SPEND,REVENUE_DELAY_COST,REVENUE_DELAY_COST_PER_SPEND,INV_DELAY_COST,REVENUE_LIFT,INV_AT_RISK,FW_INV_AT_BASE_PRICE,
      INV_AT_RISK_UNITS,NUM_INV_AT_RISK_PRODS,NUM_INV_AT_RISK_GEOS,INV_AT_RISK_NUM_MEMBERS,WEEK_MD_SPEND,WEEK_REVENUE,WEEK_SALESUNITS,WEEK_SALESUNITSBASE,WEEK_INVUNITS,
      WEEK_INVUNITSBASE,INV_UNITS_ON_ORDER,PLAN_PERCENTAGE_OFF_MAX,PLAN_PERCENTAGE_OFF_MIN,WEEK_MD_DISCOUNT_PCT,WEEK_MD_PRICE,BASE_REVENUE_AMT,PRICE_SENSITIVITY)))",
      "%sysfunc(compress(%str(PROD_HIER_SK,PROD_ID,PROD_NM,PROD_DESC,VOLUME,VOLUME_BASE_UOM,BRAND_NM,GEO_ID,GEO_HIER_SK,GEO_NM,STREET_ADDRESS,CITY,ZIP_CODE,STATE,COUNTRY,PLAN_NM,
      PLAN_OBJECTIVE,PLAN_START_DATE,PLAN_END_DATE,WEEKENDINGDATE,PERM_PRICE_MIN,TARGETSELLTHROUGHPERCENT,END_SELL_THROUGH_PCT,MARKDOWNS_PLANNED_MIN,MARKDOWNS_PLANNED_MAX,
      BASE_PERCENT_OFF_MIN,BASE_PERCENT_OFF_MAX,BASE_PRICE_MIN,BASE_PRICE_MAX,INV_UNITS_ON_HAND,BASE_PRICE,PLAN_PRICE,PLAN_AVG_PRICE_FIRST_WEEK,PLAN_AVG_LAST_FIRST_WEEK,
      END_INV_UNITS,END_INV_VAL_AT_COST,FW_INV_UNITS,SPEND,REVENUE_DELAY_COST,REVENUE_DELAY_COST_PER_SPEND,INV_DELAY_COST,REVENUE_LIFT,INV_AT_RISK,FW_INV_AT_BASE_PRICE,
      INV_AT_RISK_UNITS,NUM_INV_AT_RISK_PRODS,NUM_INV_AT_RISK_GEOS,INV_AT_RISK_NUM_MEMBERS,WEEK_MD_SPEND,WEEK_REVENUE,WEEK_SALESUNITS,WEEK_SALESUNITSBASE,WEEK_INVUNITS,
      WEEK_INVUNITSBASE,INV_UNITS_ON_ORDER,PLAN_PERCENTAGE_OFF_MAX,PLAN_PERCENTAGE_OFF_MIN,WEEK_MD_DISCOUNT_PCT,WEEK_MD_PRICE,BASE_REVENUE_AMT,PRICE_SENSITIVITY)))",
      "MDO")
   ;
quit;

        

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1206713 
   :DESCRIPTION:    Adding new global setting INDEPENDENT_BATCH_PREP
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 05NOV2015
   :SUPPORT:        Pankaj Shinde
   :FREQUENCY:      ONCE


   proc sql;
      select count (*) into :_exists from &m_di_data..global_setting
         where spec_nm = 'INDEPENDENT_BATCH_PREP';
   quit;

   %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('INDEPENDENT_BATCH_PREP','ALL','0','Enable this option to allow the batch_prep process to continue even if there is an exception (error) in the batch_opt process.');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'Enable this option to allow the batch_prep process to continue even if there is an exception (error) in the batch_opt process.' where
              spec_nm = 'INDEPENDENT_BATCH_PREP' and app = 'ALL';
        quit;
    %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1113783_6
   :DESCRIPTION:    Update EXTRACT_QUERY_TXT for sales performance in seed table ro_vaar_reports
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 9NOV2015
   :SUPPORT:        Sangeeta
   :FREQUENCY:      ONCE

proc sql noprint;
         
            delete from &m_di_data..ro_vaar_reports
               where upcase(TABLE_NM) in ('SALES_PERFORMANCE_REPORT');
         
           insert into &m_di_data..ro_vaar_reports 
                 (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG,LOAD_LASR_FLG,PARTITION_FLG,ALL_COLUMNS,MANDATORY_COLUMNS,PREFIX) values
                 ('sales_performance_report',
                 '%di_rdm_sales_performance(sales_his_yrs=1)',
                 'N',
                 'N',
                 'N',
                 "%sysfunc(compress(%str(PROD_ID,PROD_NM,PROD_DESC,VOLUME,VOLUME_BASE_UOM,BRAND_NM,GEO_ID,GEO_NM
                 ,STREET_ADDRESS,CITY,ZIP_CODE,STATE,COUNTRY,APP_USER_NMS,WEEK_START_DATE,ACTUAL_PERMANENT_PRICE,REGULAR_PRICE,
                 INVENTORY_POSITION,ACTIVATION_STATUS,UNIT_SALES,DOLLAR_SALES,CURRENT_YTD_UNIT_SALES,CURRENT_YTD_DOLLAR_SALES,PREVIOUS_YTD_UNIT_SALES,PREVIOUS_Y
                 TD_DOLLAR_SALES,SAME_QTR_PREV_YEAR_UNIT_SALES,SAME_QTR_PREV_YEAR_DOLLAR_SALES,CURRENT_QUARTER_UNIT_SALES,CURRENT_QUARTER_DOLLAR_SALES)))",
                 "%sysfunc(compress(%str(PROD_ID,PROD_NM,VOLUME,VOLUME_BASE_UOM,BRAND_NM,GEO_ID,GEO_NM
                 ,ZIP_CODE,APP_USER_NMS,WEEK_START_DATE,ACTUAL_PERMANENT_PRICE,REGULAR_PRICE,
                 INVENTORY_POSITION,ACTIVATION_STATUS,UNIT_SALES,DOLLAR_SALES,CURRENT_YTD_UNIT_SALES,CURRENT_YTD_DOLLAR_SALES,PREVIOUS_YTD_UNIT_SALES,PREVIOUS_Y
                 TD_DOLLAR_SALES,SAME_QTR_PREV_YEAR_UNIT_SALES,SAME_QTR_PREV_YEAR_DOLLAR_SALES,CURRENT_QUARTER_UNIT_SALES,CURRENT_QUARTER_DOLLAR_SALES)))",
                 "SALE")
                 
;

            delete from &m_di_mon..etl_sys_param where upcase(jobname) = 'DI_RDM_SALES_PERFORMANCE';
            
            insert into &m_di_mon..etl_sys_param                                                                                                                          
               (jobname, param_name, param_value, default_func)                                                                                                              
            values("DI_RDM_SALES_PERFORMANCE",  "last_date_sk", " ",  "0"  )                                                                                             
            
 ;
quit;   

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1216446_1
   :DESCRIPTION:    stg_demand_disagg_FACTOR_x error table incorrectly created as table name stg_demand_disagg_x
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 22DEC2015
   :SUPPORT:        Sangeeta
   :FREQUENCY:      ONCE

    %if (%sysfunc(exist(&m_di_mon..STG_DEMAND_DISAGG_X)))
    %then %do;

    data &m_di_mon..STG_DEMAND_DISAGG_FACTOR_X;
         attrib PROD_ID                          LENGTH=$32                                                                                        ;
         attrib GEO_ID                           LENGTH=$32                                                                                        ;
         attrib START_DT                         LENGTH=8       FORMAT=&m_DTFMT       INFORMAT=&m_STG_DTINFMT                                            ;
         attrib DISAGG_FACTOR                    LENGTH=8       FORMAT=NLNUM12.4      INFORMAT=NLNUM12.4                                           ;
         attrib ETLS_EXCEPTION_COND              LENGTH=$125                                                                                       ;
         attrib ETL_ERROR_JOBRUNTIME             LENGTH=8       FORMAT=&m_DTTMFMT                                                                    ;
         stop;
    run;

    proc append data= &m_di_mon..STG_DEMAND_DISAGG_X
            base=&m_di_mon..STG_DEMAND_DISAGG_FACTOR_X;
    run;

         
    proc sql noprint;
       drop table &m_di_mon..STG_DEMAND_DISAGG_X;
    quit; 

    %end; 

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1113783_7
   :DESCRIPTION:    Create the seed table RO_VAAR_REPORTS with the new star schema approach. 
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 5JAN2016
   :SUPPORT:        Sourav
   :FREQUENCY:      ONCE

   data &m_di_data..ro_vaar_reports;
      attrib TABLE_NM                                    LENGTH=$32;
      attrib EXTRACT_QUERY_TXT                           LENGTH=$255;
      attrib RUN_EXTRACT_FLG                             LENGTH=$1;
      attrib LOAD_LASR_FLG                               LENGTH=$1;
      attrib STAR_SCHEMA_FLG                             LENGTH=$1;
      attrib ALL_COLUMNS                                 LENGTH=$6400;
      attrib MANDATORY_COLUMNS                           LENGTH=$6400;
      attrib INCLUDE_COLUMNS                             LENGTH=$6400;
      attrib PARTITION_FLG                               LENGTH=$1;
      attrib PROD_PARTITION_LEVEL                        LENGTH=8;
      attrib SUB_START_DT                                LENGTH=8 FORMAT=&m_DTFMT. INFORMAT=&m_DTFMT.;
      attrib NO_OF_WEEKS_FRM_SUB_START_DT                LENGTH=8;
      attrib PREFIX                                      LENGTH=$4;
   stop;
   run;

   proc sql;
   
   delete * from &m_di_data..ro_vaar_reports;
   insert into &m_di_data..ro_vaar_reports 
      (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG,LOAD_LASR_FLG,STAR_SCHEMA_FLG,PARTITION_FLG,ALL_COLUMNS,MANDATORY_COLUMNS,PREFIX) values
      ('sales_performance_report',
      '%di_rdm_sales_performance(sales_his_yrs=2)',
      'N',
      'N',
      'N',
      'N',
      "%sysfunc(compress(%str(PROD_ID,PROD_NM,PROD_DESC,VOLUME,VOLUME_BASE_UOM,BRAND_NM,GEO_ID,GEO_NM
      ,STREET_ADDRESS,CITY,ZIP_CODE,STATE,COUNTRY,APP_USER_NMS,WEEK_START_DATE,ACTUAL_PERMANENT_PRICE,REGULAR_PRICE,
      INVENTORY_POSITION,ACTIVATION_STATUS,UNIT_SALES,DOLLAR_SALES,CURRENT_YTD_UNIT_SALES,CURRENT_YTD_DOLLAR_SALES,PREVIOUS_YTD_UNIT_SALES,PREVIOUS_Y
      TD_DOLLAR_SALES,SAME_QTR_PREV_YEAR_UNIT_SALES,SAME_QTR_PREV_YEAR_DOLLAR_SALES,CURRENT_QUARTER_UNIT_SALES,CURRENT_QUARTER_DOLLAR_SALES)))",
      "%sysfunc(compress(%str(PROD_ID,PROD_NM,VOLUME,VOLUME_BASE_UOM,BRAND_NM,GEO_ID,GEO_NM
      ,ZIP_CODE,APP_USER_NMS,WEEK_START_DATE,ACTUAL_PERMANENT_PRICE,REGULAR_PRICE,
      INVENTORY_POSITION,ACTIVATION_STATUS,UNIT_SALES,DOLLAR_SALES,CURRENT_YTD_UNIT_SALES,CURRENT_YTD_DOLLAR_SALES,PREVIOUS_YTD_UNIT_SALES,PREVIOUS_Y
      TD_DOLLAR_SALES,SAME_QTR_PREV_YEAR_UNIT_SALES,SAME_QTR_PREV_YEAR_DOLLAR_SALES,CURRENT_QUARTER_UNIT_SALES,CURRENT_QUARTER_DOLLAR_SALES)))",
      "SALE")
   ;
   insert into &m_di_data..ro_vaar_reports 
      (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG,LOAD_LASR_FLG,STAR_SCHEMA_FLG,PARTITION_FLG,ALL_COLUMNS,MANDATORY_COLUMNS,PREFIX) values
      ('sales_forecast_report',
      '%di_rdm_sales_forecast',
      'N',
      'N',
      'N',
      'N',
      "%sysfunc(compress(%str(PROD_ID,PROD_NM,PROD_DESC,VOLUME,VOLUME_BASE_UOM,BRAND_NM,GEO_ID,GEO_NM,STREET_ADDRESS,CITY,ZIP_CODE,STATE,COUNTRY,WEEK_ENDING,EFFECTIVE_PRICE,
      REGULAR_PRICE,EFFECTIVE_PRICE_DISCOUNT,BASELINE_UNIT_DEMAND)))",
      "%sysfunc(compress(%str(PROD_ID,PROD_NM,VOLUME,VOLUME_BASE_UOM,BRAND_NM,GEO_ID,GEO_NM,ZIP_CODE,WEEK_ENDING,EFFECTIVE_PRICE,
      REGULAR_PRICE,EFFECTIVE_PRICE_DISCOUNT,BASELINE_UNIT_DEMAND)))",
      "FCST")
   ;
   insert into &m_di_data..ro_vaar_reports 
      (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG,LOAD_LASR_FLG,STAR_SCHEMA_FLG,PARTITION_FLG,ALL_COLUMNS,MANDATORY_COLUMNS,PREFIX) values
      ('price_and_promotion_report',
      '%di_rdm_price_and_promotion',
      'N',
      'N',
      'N',
      'N',
      "%sysfunc(compress(%str(PROD_ID,PROD_NM,PROD_DESC,VOLUME,VOLUME_BASE_UOM,BRAND_NM,GEO_ID,GEO_NM,STREET_ADDRESS,CITY,ZIP_CODE,STATE,COUNTRY,PS1_ESTIMATE,PS2_ESTIMATE,PS3_ESTIMATE,
      PS4_ESTIMATE,PS5_ESTIMATE,PS6_ESTIMATE,PS1_LIFT,PS2_LIFT,PS3_LIFT,PS4_LIFT,PS5_LIFT,PS6_LIFT,PRICE_ELASTICITY,PRICE_LIFT_25_PER,PRICE_LIFT_30_PER,
      PRICE_LIFT_40_PER,PRICE_LIFT_50_PER,PRICE_LIFT_60_PER,APP_USER_NMS)))",
      "%sysfunc(compress(%str(PROD_ID,PROD_NM,VOLUME,VOLUME_BASE_UOM,BRAND_NM,GEO_ID,GEO_NM,ZIP_CODE,PS1_ESTIMATE,PS2_ESTIMATE,PS3_ESTIMATE,
      PS4_ESTIMATE,PS5_ESTIMATE,PS6_ESTIMATE,PS1_LIFT,PS2_LIFT,PS3_LIFT,PS4_LIFT,PS5_LIFT,PS6_LIFT,PRICE_ELASTICITY,PRICE_LIFT_25_PER,PRICE_LIFT_30_PER,
      PRICE_LIFT_40_PER,PRICE_LIFT_50_PER,PRICE_LIFT_60_PER,APP_USER_NMS)))",
      "PPE")
   ;
   insert into &m_di_data..ro_vaar_reports 
      (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG,LOAD_LASR_FLG,STAR_SCHEMA_FLG,PARTITION_FLG,ALL_COLUMNS,MANDATORY_COLUMNS,PREFIX) values
      ('mdo_plan_report',
      '%di_rdm_mdo_plan(start_dt=,end_dt=)',
      'N',
      'N',
      'N',
      'N',
      "%sysfunc(compress(%str(PROD_HIER_SK,PROD_ID,PROD_NM,PROD_DESC,VOLUME,VOLUME_BASE_UOM,BRAND_NM,GEO_ID,GEO_HIER_SK,GEO_NM,STREET_ADDRESS,CITY,ZIP_CODE,STATE,COUNTRY,PLAN_NM,
      PLAN_OBJECTIVE,PLAN_START_DATE,PLAN_END_DATE,WEEKENDINGDATE,PERM_PRICE_MIN,TARGETSELLTHROUGHPERCENT,END_SELL_THROUGH_PCT,MARKDOWNS_PLANNED_MIN,MARKDOWNS_PLANNED_MAX,
      BASE_PERCENT_OFF_MIN,BASE_PERCENT_OFF_MAX,BASE_PRICE_MIN,BASE_PRICE_MAX,INV_UNITS_ON_HAND,BASE_PRICE,PLAN_PRICE,PLAN_AVG_PRICE_FIRST_WEEK,PLAN_AVG_LAST_FIRST_WEEK,
      END_INV_UNITS,END_INV_VAL_AT_COST,FW_INV_UNITS,SPEND,REVENUE_DELAY_COST,REVENUE_DELAY_COST_PER_SPEND,INV_DELAY_COST,REVENUE_LIFT,INV_AT_RISK,FW_INV_AT_BASE_PRICE,
      INV_AT_RISK_UNITS,NUM_INV_AT_RISK_PRODS,NUM_INV_AT_RISK_GEOS,INV_AT_RISK_NUM_MEMBERS,WEEK_MD_SPEND,WEEK_REVENUE,WEEK_SALESUNITS,WEEK_SALESUNITSBASE,WEEK_INVUNITS,
      WEEK_INVUNITSBASE,INV_UNITS_ON_ORDER,PLAN_PERCENTAGE_OFF_MAX,PLAN_PERCENTAGE_OFF_MIN,WEEK_MD_DISCOUNT_PCT,WEEK_MD_PRICE,BASE_REVENUE_AMT,PRICE_SENSITIVITY)))",
      "%sysfunc(compress(%str(PROD_HIER_SK,PROD_ID,PROD_NM,PROD_DESC,VOLUME,VOLUME_BASE_UOM,BRAND_NM,GEO_ID,GEO_HIER_SK,GEO_NM,STREET_ADDRESS,CITY,ZIP_CODE,STATE,COUNTRY,PLAN_NM,
      PLAN_OBJECTIVE,PLAN_START_DATE,PLAN_END_DATE,WEEKENDINGDATE,PERM_PRICE_MIN,TARGETSELLTHROUGHPERCENT,END_SELL_THROUGH_PCT,MARKDOWNS_PLANNED_MIN,MARKDOWNS_PLANNED_MAX,
      BASE_PERCENT_OFF_MIN,BASE_PERCENT_OFF_MAX,BASE_PRICE_MIN,BASE_PRICE_MAX,INV_UNITS_ON_HAND,BASE_PRICE,PLAN_PRICE,PLAN_AVG_PRICE_FIRST_WEEK,PLAN_AVG_LAST_FIRST_WEEK,
      END_INV_UNITS,END_INV_VAL_AT_COST,FW_INV_UNITS,SPEND,REVENUE_DELAY_COST,REVENUE_DELAY_COST_PER_SPEND,INV_DELAY_COST,REVENUE_LIFT,INV_AT_RISK,FW_INV_AT_BASE_PRICE,
      INV_AT_RISK_UNITS,NUM_INV_AT_RISK_PRODS,NUM_INV_AT_RISK_GEOS,INV_AT_RISK_NUM_MEMBERS,WEEK_MD_SPEND,WEEK_REVENUE,WEEK_SALESUNITS,WEEK_SALESUNITSBASE,WEEK_INVUNITS,
      WEEK_INVUNITSBASE,INV_UNITS_ON_ORDER,PLAN_PERCENTAGE_OFF_MAX,PLAN_PERCENTAGE_OFF_MIN,WEEK_MD_DISCOUNT_PCT,WEEK_MD_PRICE,BASE_REVENUE_AMT,PRICE_SENSITIVITY)))",
      "MDO")
   ;
quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      ID1246892
   :DESCRIPTION:    Data is not getting displayed in VA if we run the extract twice with Star schema flag Y and then N
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 24MAR2016
   :SUPPORT:        Sourav
   :FREQUENCY:      ONCE

   data &m_di_data..ro_vaar_reports;
   attrib TABLE_NM                                    LENGTH=$32;
   attrib EXTRACT_QUERY_TXT                           LENGTH=$255;
   attrib RUN_EXTRACT_FLG                             LENGTH=$1;
   attrib LOAD_LASR_FLG                               LENGTH=$1;
   attrib STAR_SCHEMA_FLG                             LENGTH=$1;
   attrib ALL_COLUMNS                                 LENGTH=$6400;
   attrib MANDATORY_COLUMNS                           LENGTH=$6400;
   attrib INCLUDE_COLUMNS                             LENGTH=$6400;
   attrib PARTITION_FLG                               LENGTH=$1;
   attrib PROD_PARTITION_LEVEL                        LENGTH=8;
   attrib SUB_START_DT                                LENGTH=8 FORMAT=&m_DTFMT. INFORMAT=&m_DTFMT.;
   attrib NO_OF_WEEKS_FRM_SUB_START_DT                LENGTH=8;
   attrib PREFIX                                      LENGTH=$4;
   attrib SCHEMA_TYPE                                 LENGTH=$5;
   stop;
run;

proc sql;
   delete * from &m_di_data..ro_vaar_reports;
   insert into &m_di_data..ro_vaar_reports 
      (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG,LOAD_LASR_FLG,STAR_SCHEMA_FLG,PARTITION_FLG,ALL_COLUMNS,MANDATORY_COLUMNS,PREFIX,SCHEMA_TYPE) values
      ('sales_performance_report',
      '%di_rdm_sales_performance(sales_his_yrs=2)',
      'N',
      'N',
      'N',
      'N',
      "%sysfunc(compress(%str(PROD_ID,PROD_NM,PROD_DESC,VOLUME,VOLUME_BASE_UOM,BRAND_NM,GEO_ID,GEO_NM
      ,STREET_ADDRESS,CITY,ZIP_CODE,STATE,COUNTRY,P_PRFX_APP_USER_NMS,WEEK_START_DATE,ACTUAL_PERMANENT_PRICE,REGULAR_PRICE,
      INVENTORY_POSITION,ACTIVATION_STATUS,UNIT_SALES,DOLLAR_SALES,CURRENT_YTD_UNIT_SALES,CURRENT_YTD_DOLLAR_SALES,PREVIOUS_YTD_UNIT_SALES,PREVIOUS_Y
      TD_DOLLAR_SALES,SAME_QTR_PREV_YEAR_UNIT_SALES,SAME_QTR_PREV_YEAR_DOLLAR_SALES,CURRENT_QUARTER_UNIT_SALES,CURRENT_QUARTER_DOLLAR_SALES)))",
      "%sysfunc(compress(%str(PROD_ID,PROD_NM,VOLUME,VOLUME_BASE_UOM,BRAND_NM,GEO_ID,GEO_NM
      ,ZIP_CODE,P_PRFX_APP_USER_NMS,WEEK_START_DATE,ACTUAL_PERMANENT_PRICE,REGULAR_PRICE,
      INVENTORY_POSITION,ACTIVATION_STATUS,UNIT_SALES,DOLLAR_SALES,CURRENT_YTD_UNIT_SALES,CURRENT_YTD_DOLLAR_SALES,PREVIOUS_YTD_UNIT_SALES,PREVIOUS_Y
      TD_DOLLAR_SALES,SAME_QTR_PREV_YEAR_UNIT_SALES,SAME_QTR_PREV_YEAR_DOLLAR_SALES,CURRENT_QUARTER_UNIT_SALES,CURRENT_QUARTER_DOLLAR_SALES)))",
      "SALE","TABLE")
   ;
   insert into &m_di_data..ro_vaar_reports 
      (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG,LOAD_LASR_FLG,STAR_SCHEMA_FLG,PARTITION_FLG,ALL_COLUMNS,MANDATORY_COLUMNS,PREFIX,SCHEMA_TYPE) values
      ('sales_forecast_report',
      '%di_rdm_sales_forecast',
      'N',
      'N',
      'N',
      'N',
      "%sysfunc(compress(%str(PROD_ID,PROD_NM,PROD_DESC,VOLUME,P_PRFX_APP_USER_NMS,VOLUME_BASE_UOM,BRAND_NM,GEO_ID,GEO_NM,STREET_ADDRESS,CITY,ZIP_CODE,STATE,COUNTRY,WEEK_ENDING,EFFECTIVE_PRICE,
      REGULAR_PRICE,EFFECTIVE_PRICE_DISCOUNT,BASELINE_UNIT_DEMAND)))",
      "%sysfunc(compress(%str(PROD_ID,PROD_NM,VOLUME,VOLUME_BASE_UOM,P_PRFX_APP_USER_NMS,BRAND_NM,GEO_ID,GEO_NM,ZIP_CODE,WEEK_ENDING,EFFECTIVE_PRICE,
      REGULAR_PRICE,EFFECTIVE_PRICE_DISCOUNT,BASELINE_UNIT_DEMAND)))",
      "FCST","TABLE")
   ;
   insert into &m_di_data..ro_vaar_reports 
      (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG,LOAD_LASR_FLG,STAR_SCHEMA_FLG,PARTITION_FLG,ALL_COLUMNS,MANDATORY_COLUMNS,PREFIX,SCHEMA_TYPE) values
      ('price_and_promotion_report',
      '%di_rdm_price_and_promotion',
      'N',
      'N',
      'N',
      'N',
      "%sysfunc(compress(%str(P_PRFX_PROD_ID,P_PRFX_PROD_NM,P_PRFX_APP_USER_NMS,P_PRFX_PROD_DESC,P_PRFX_VOLUME,P_PRFX_VOLUME_BASE_UOM,P_PRFX_BRAND_NM,G_PRFX_GEO_ID,G_PRFX_GEO_NM,G_PRFX_STREET_ADDRESS,G_PRFX_CITY,
      G_PRFX_ZIP_CODE,G_PRFX_STATE,G_PRFX_COUNTRY,PS1_ESTIMATE,PS2_ESTIMATE,PS3_ESTIMATE,
      PS4_ESTIMATE,PS5_ESTIMATE,PS6_ESTIMATE,PS1_LIFT,PS2_LIFT,PS3_LIFT,PS4_LIFT,PS5_LIFT,PS6_LIFT,PRICE_ELASTICITY,PRICE_LIFT_25_PER,PRICE_LIFT_30_PER,
      PRICE_LIFT_40_PER,PRICE_LIFT_50_PER,PRICE_LIFT_60_PER,P_PRFX_APP_USER_NMS)))",
      "%sysfunc(compress(%str(P_PRFX_PROD_ID,P_PRFX_PROD_NM,P_PRFX_VOLUME,P_PRFX_APP_USER_NMS,P_PRFX_VOLUME_BASE_UOM,P_PRFX_BRAND_NM,G_PRFX_GEO_ID,G_PRFX_GEO_NM,G_PRFX_ZIP_CODE,PS1_ESTIMATE,PS2_ESTIMATE,PS3_ESTIMATE,
      PS4_ESTIMATE,PS5_ESTIMATE,PS6_ESTIMATE,PS1_LIFT,PS2_LIFT,PS3_LIFT,PS4_LIFT,PS5_LIFT,PS6_LIFT,PRICE_ELASTICITY,PRICE_LIFT_25_PER,PRICE_LIFT_30_PER,
      PRICE_LIFT_40_PER,PRICE_LIFT_50_PER,PRICE_LIFT_60_PER,P_PRFX_APP_USER_NMS)))",
      "PPE","TABLE")
   ;
   insert into &m_di_data..ro_vaar_reports 
      (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG,LOAD_LASR_FLG,STAR_SCHEMA_FLG,PARTITION_FLG,ALL_COLUMNS,MANDATORY_COLUMNS,PREFIX,SCHEMA_TYPE) values
      ('mdo_plan_report',
      '%di_rdm_mdo_plan(start_dt=,end_dt=)',
      'N',
      'N',
      'N',
      'N',
      "%sysfunc(compress(%str(PROD_HIER_SK,P_PRFX_PROD_ID,P_PRFX_PROD_NM,P_PRFX_PROD_DESC,P_PRFX_VOLUME,P_PRFX_VOLUME_BASE_UOM,P_PRFX_BRAND_NM,G_PRFX_GEO_ID,GEO_HIER_SK,G_PRFX_GEO_NM,G_PRFX_STREET_ADDRESS,G_PRFX_CITY,G_PRFX_ZIP_CODE,
      G_PRFX_STATE,G_PRFX_COUNTRY,PLAN_NM,
      PLAN_OBJECTIVE,PLAN_START_DATE,PLAN_END_DATE,TARGETSELLTHROUGHPERCENT,END_SELL_THROUGH_PCT,
      INV_UNITS_ON_HAND,BASE_PRICE,PLAN_PRICE,PLAN_AVG_PRICE_FIRST_WEEK,P_PRFX_APP_USER_NMS,PLAN_AVG_LAST_FIRST_WEEK,
      END_INV_UNITS,END_INV_VAL_AT_COST,FW_INV_UNITS,SPEND,REVENUE_DELAY_COST,REVENUE_DELAY_COST_PER_SPEND,INV_DELAY_COST,INV_DELAY_COST_PER_SECOND,REVENUE_LIFT,INV_AT_RISK,FW_INV_AT_BASE_PRICE,
      INV_AT_RISK_UNITS,NUM_INV_AT_RISK_PRODS,NUM_INV_AT_RISK_GEOS,INV_AT_RISK_NUM_MEMBERS,WEEK_MD_SPEND,WEEK_REVENUE,WEEK_SALESUNITS,WEEK_SALESUNITSBASE,WEEK_INVUNITS,
      WEEK_INVUNITSBASE,INV_UNITS_ON_ORDER,PLAN_PERCENTAGE_OFF_MIN,WEEK_MD_DISCOUNT_PCT,WEEK_START_DT,LY_FACT_ACTUAL_PRICE,LY_FACT_SALES_UNIT,LY_FACT_SALES_AMT,LY_FACT_MARGIN,
      LY_FACT_MARGIN_PERCENTAGE,WEEK_MD_PRICE,BASE_REVENUE_AMT,PRICE_SENSITIVITY)))",
      "%sysfunc(compress(%str(PROD_HIER_SK,P_PRFX_PROD_ID,P_PRFX_PROD_NM,P_PRFX_PROD_DESC,P_PRFX_VOLUME,P_PRFX_VOLUME_BASE_UOM,MARKDOWNS_PLANNED,P_PRFX_BRAND_NM,G_PRFX_GEO_ID,GEO_HIER_SK,
      G_PRFX_GEO_NM,G_PRFX_STREET_ADDRESS,G_PRFX_CITY,G_PRFX_ZIP_CODE,G_PRFX_STATE,G_PRFX_COUNTRY,PLAN_NM,PLAN_OBJECTIVE,PLAN_START_DATE,PLAN_END_DATE,TARGETSELLTHROUGHPERCENT,
      END_SELL_THROUGH_PCT,INV_DELAY_COST_PER_SPEND,INV_UNITS_ON_HAND,BASE_PRICE,PLAN_PRICE,PLAN_AVG_PRICE_FIRST_WEEK,PLAN_AVG_LAST_FIRST_WEEK,
      END_INV_UNITS,END_INV_VAL_AT_COST,FW_INV_UNITS,SPEND,REVENUE_DELAY_COST,P_PRFX_APP_USER_NMS,WEEK_START_DT,LY_FACT_COST,LY_FACT_ACTUAL_PRICE,LY_FACT_SALES_UNITS,LY_FACT_SALES_AMT,LY_FACT_MARGIN,
      LY_FACT_MARGIN_PERCENTAGE,REVENUE_DELAY_COST_PER_SPEND,INV_DELAY_COST,REVENUE_LIFT,INV_AT_RISK,FW_INV_AT_BASE_PRICE,INV_AT_RISK_UNITS,NUM_INV_AT_RISK_PRODS,NUM_INV_AT_RISK_GEOS,
      INV_AT_RISK_NUM_MEMBERS,WEEK_MD_SPEND,WEEK_REVENUE,MARKDOWNS_PLANNED,WEEK_SALESUNITS,WEEK_SALESUNITSBASE,WEEK_INVUNITS,
      WEEK_INVUNITSBASE,INV_UNITS_ON_ORDER,PLAN_PERCENTAGE_OFF_MIN,WEEK_MD_DISCOUNT_PCT,WEEK_MD_PRICE,BASE_REVENUE_AMT,PRICE_SENSITIVITY)))",
      "MDO","TABLE")
   ;
quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1247187
   :DESCRIPTION:    Create Independent Profile functionality fails for projects migrated from 2.2 M1 to 3.2 M4. 
   :VERSION:        F4MICM521,F0MICM54,D4MICM541
   :DATE_OF_CHANGE: 04APR2016
   :SUPPORT:        Priyalal
   :FREQUENCY:      ONCE

   proc sql noprint;
        select path into :path
          from sashelp.vlibnam
         where lowcase(libname)="di_dm" and level in (0,1);
   quit;
    
   %let path=%trim(&path)/sizeset;
   libname partlib "&path";
   proc sql;
            create table work.prf_ss as
            select memname as table_name
            from sashelp.vtable
            where upcase(LIBNAME) = 'PARTLIB'
            and   upcase(MEMTYPE) = 'DATA'
            and upcase(MEMNAME) like 'SIZESET%';     
   quit;
   %let prf_cnt = %di_util_nobs(work.prf_ss);
   %if &prf_cnt > 0 %then %do;
      %do i=1 %to &prf_cnt;
         data _null_;
         ptr = &i;
         set work.prf_ss point=ptr;
         call symput("table_name",table_name);
         stop;
         run;
         %let table_name = &table_name;
         %if not %di_util_varexist(dsname=partlib.&table_name, varname=CUSTOM_FLG) %then %do;
         proc sql noprint;
         alter table partlib.&table_name add CUSTOM_FLG NUM 4 ;
         quit;
         %end;
      %end; 
   %end;
   
   proc datasets lib=work nolist;
      delete prf_ss;
   quit;
   
   libname partlib clear;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1215417
   :DESCRIPTION:    Create the seed table SO_VAAR_REPORTS. 
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 18APR2016
   :SUPPORT:        Sourav
   :FREQUENCY:      ONCE

data &m_di_data..SO_VAAR_REPORTS;
      attrib TABLE_NM                                    LENGTH=$32;
      attrib EXTRACT_QUERY_TXT                           LENGTH=$255;
      attrib RUN_EXTRACT_FLG                             LENGTH=$1;
      attrib LOAD_LASR_FLG                               LENGTH=$1;
      attrib PROJECT_SKS                                 LENGTH=$400;
      attrib ALL_COLUMNS                                 LENGTH=$1600;
      attrib MANDATORY_COLUMNS                           LENGTH=$400;
      attrib INCLUDE_COLUMNS                             LENGTH=$1000;
      stop; 
   run;


   proc sql;
      delete * from &m_di_data..SO_VAAR_REPORTS;
      
      insert into &m_di_data..SO_VAAR_REPORTS 
         (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG,LOAD_LASR_FLG,ALL_COLUMNS,MANDATORY_COLUMNS) values
         ('pack_optimization_report',
         '%di_szpk_data_analysis_report',
         'Y',
         'Y',
        "%sysfunc(compress(%str(PROD_HIER_SK,PROD_ID,PROD_NM,PROD_DESC,GEO_ID,GEO_NM,GEO_HIER_SK,
         STREET_ADDRESS,CITY,ZIP_CODE,STATE,COUNTRY,PURCHASE_ORDER_PLAN_SK, PLAN_STATUS_CD,
         START_DT,END_DT,TAG,HAS_NEED,CREATED_DT,UPDATED_DTTM,TOTAL_QTY_PERCENT_MIN,TOTAL_QTY_PERCENT_MAX,
         MISMATCH_THRESHOLD_PCT,MISMATCH_OVER_PCT,MISMATCH_UNDER_PCT,DC_GEO_ID,DC_GEO_NAME,DELIVERY_TYPE_ID,
         DELIVERY_SEQUENCE_ID,DELIVERY_DT,MODEL_PROD_FLG,OPEN_DT,CLOSING_DT,DC_GEO_HIER_SK,
         INNER_PACK_ID,INNER_PACK_NAME,INNER_PACK_COUNT,OUTER_PACK_ID,OUTER_PACK_NAME,OUTER_PACK_COUNT,
         STD_SIZE_CD,DISPLAY_ORDER,PROFILE_ID,CLUSTER_ID,CONTRIB_PCT,TARGET_QTY,OPTIMIZED_UNITS_PCK,
         MISMATCH,MISMATCH_PER,STORE_MIN,STORE_MAX,SKU_MIN,REC_MULTICOLOR,INNER_PACK_HANDLE_COST,OVER_START,
         BREAK_PACKS,SUBSETTING_ATTR_NM,COLOR_PACK_SETTING,REC_PACK_ORDER_MIN,UNDER_START,
         USE_SHARED_PACK_CONFIGS,OUTER_HANDLE_DSCT_RATE,SIZE_OF_INNER,PURCHASE_ORDER_PLAN_NM,PURCHASE_ORDER_PLAN_DESC,
         BUY_NM,DELIVERY_NM,DELIVERY_DESC,SEASON_NM,APP_USER_NM,SIZESET_NM,SIZESET_DESC,STD_SIZE_NM)))"
         "%sysfunc(compress(%str(PURCHASE_ORDER_PLAN_NM,BUY_NM,DELIVERY_DT,DELIVERY_NM,GEO_NM,
         INNER_PACK_ID,GEO_NM,MISMATCH,OPTIMIZED_UNITS_PCK,OUTER_PACK_ID,PROD_DESC,STD_SIZE_NM,TARGET_QTY)))")
      ;
      insert into &m_di_data..SO_VAAR_REPORTS 
         (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG,LOAD_LASR_FLG,ALL_COLUMNS,MANDATORY_COLUMNS) values
         ('size_profiling_report',
         '%di_szpf_analysis_report',
         'Y',
         'Y',
         "%sysfunc(compress(%str(PROFILING_PROJECT_SK,PROJECT_NM,START_DT,END_DT,UPDATED_DTTM,APP_USER_ID,SEASON_NM,
         PRF_SCENARIO_SK,SCENARIO_NM,STORE_CATEGORY_NM,PRODUCT_ROOT_NM,PROJECT_ATTRIBUTE_FILTER,
         SCENARIO_STATUS,PROD_PARTITION_NM,SIZESET_ID,SIZESET_NMS,SIZESET_CDS,SIZE_SET_TYPE,PROFILE_SK,
         PROFILE_NM,MANUAL_FLG,PROFILE_PROD_SK,PRODUCT,PROD_HIER_SK,PROD_ID,PROD_NM,STORE_GROUP_ID,
         STORE_GROUP_NM,GEO_HIER_SK,GEO_ID,GEO_NM,STREET_ADDRESS,CITY,STATE,ZIP_CODE,COUNTRY,ASSIGNMENT_TYPE,
         STD_SIZE_CD,STD_SIZE_NM,DISPLAY_ORDER,REVENUE,SALES_UNITS,INVENTORY_EOP_UNITS,IMPUTATION_ADDED_SALES_UNITS,
         POST_IMPUTATION_SALES_UNITS,IN_STOCK_OPPORTUNITY,PERIOD_IN_STOCK,PROFILE_PCT,APP_USER_NMS,PRELIM_PROFILE_RMSD)))",
         "%sysfunc(compress(%str(POST_IMPUTATION_SALES_UNITS,INVENTORY_EOP_UNITS,IN_STOCK_OPPORTUNITY,PERIOD_IN_STOCK,PRODUCT,PROD_PARTITION_NM,
         PROFILE_NM,PROFILE_PCT,PROJECT_NM,REVENUE,SALES_UNITS,SCENARIO_NM,SCENARIO_STATUS,SIZESET_NMS,STD_SIZE_NM,ASSIGNMENT_TYPE,STORE_GROUP_NM,
         GEO_ID,GEO_NM,SEASON_NM,ZIP_CODE,PRELIM_PROFILE_RMSD)))")
      ;
   quit;


:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1236249 
   :DESCRIPTION:    Adding new global setting PURCHASE_ORDER_LIMIT
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 21APR2016
   :SUPPORT:        Pankaj Shinde
   :FREQUENCY:      ONCE


   proc sql;
      select count (*) into :_exists from &m_di_data..global_setting
         where spec_nm = 'PURCHASE_ORDER_LIMIT';
   quit;

   %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('PURCHASE_ORDER_LIMIT','SZPK','1000','Specifies the maximum number of purchase order plans that can be viewed in the SAS Pack Optimization interface.');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'Specifies the maximum number of purchase order plans that can be viewed in the SAS Pack Optimization interface.' where
              spec_nm = 'PURCHASE_ORDER_LIMIT' and app = 'SZPK';
        quit;
    %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID1245300 
   :DESCRIPTION:    Adding new global setting MAX_ALERT_BATCH_SIZE
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 21APR2016
   :SUPPORT:        Priyalal
   :FREQUENCY:      ONCE


proc sql NOPRINT;
   DELETE FROM &m_di_data..global_setting where upcase(SPEC_NM) = 'MAX_ALERT_BATCH_SIZE';
   
   INSERT INTO &m_di_data..global_setting
           (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
   VALUES  ('MAX_ALERT_BATCH_SIZE','ALL','5000','Specifies the Maximum size of the alert table partition for running in parallel for margin rule or competitor-pricing rule violations.');
quit;



:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      ID1148145_2
   :DESCRIPTION:    Set ACTIVE_APP_FLG for the Product.
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 26APR2016
   :SUPPORT:        Priyalal
   :FREQUENCY:      ALWAYS

%if %di_util_license_validate(RPP,0) ne 1 %then %do;
  proc sql noprint;
      update &m_di_data..global_setting set SPEC_VALUE='0' where SPEC_NM='ACTIVE_APP_FLG' and APP eq 'RPP';
  quit;
%end;
%else %do;
  proc sql noprint;
      update &m_di_data..global_setting set SPEC_VALUE='1' where SPEC_NM='ACTIVE_APP_FLG' and APP eq 'RPP';
  quit;
%end;

%if %di_util_license_validate(CPO,0) ne 1 %then %do;
  proc sql noprint;
      update &m_di_data..global_setting set SPEC_VALUE='0' where SPEC_NM='ACTIVE_APP_FLG' and APP eq 'CPO';
  quit;
%end;
%else %do;
  proc sql noprint;
      update &m_di_data..global_setting set SPEC_VALUE='1' where SPEC_NM='ACTIVE_APP_FLG' and APP eq 'CPO';
  quit;
%end;

%if %di_util_license_validate(RPO,0) ne 1 %then %do;
  proc sql noprint;
      update &m_di_data..global_setting set SPEC_VALUE='0' where SPEC_NM='ACTIVE_APP_FLG' and APP eq 'RPO';
  quit;
%end;
%else %do;
  proc sql noprint;
      update &m_di_data..global_setting set SPEC_VALUE='1' where SPEC_NM='ACTIVE_APP_FLG' and APP eq 'RPO';
  quit;
%end;


%if %di_util_license_validate(SZPK,0) ne 1 %then %do;
  proc sql noprint;
      update &m_di_data..global_setting set SPEC_VALUE='0' where SPEC_NM='ACTIVE_APP_FLG' and APP eq 'SZPK';
  quit;
%end;
%else %do;
  proc sql noprint;
      update &m_di_data..global_setting set SPEC_VALUE='1' where SPEC_NM='ACTIVE_APP_FLG' and APP eq 'SZPK';
  quit;
%end;

%if %di_util_license_validate(SZPF,0) ne 1 %then %do;
  proc sql noprint;
      update &m_di_data..global_setting set SPEC_VALUE='0' where SPEC_NM='ACTIVE_APP_FLG' and APP eq 'SZPF';
  quit;
%end;
%else %do;
  proc sql noprint;
      update &m_di_data..global_setting set SPEC_VALUE='1' where SPEC_NM='ACTIVE_APP_FLG' and APP eq 'SZPF';
  quit;
%end;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1265101 
   :DESCRIPTION:    Adding new global settings LOW_PROD_METRIC_LVL and LOW_GEO_METRIC_LVL
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 24MAY2016
   :SUPPORT:        Pankaj Shinde
   :FREQUENCY:      ONCE


   proc sql;
      select count (*) into :_exists from &m_di_data..global_setting
         where spec_nm = 'LOW_PROD_METRIC_LVL';
   quit;

   %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('LOW_PROD_METRIC_LVL','ALL','0','Specifies the lowest product level at which the aggregation metrics values in SAS Promotion Optimization will be reported.');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'Specifies the lowest product level at which the aggregation metrics values in SAS Promotion Optimization will be reported.' where
              spec_nm = 'LOW_PROD_METRIC_LVL' and app = 'ALL';
        quit;
    %end;



   proc sql;
      select count (*) into :_exists from &m_di_data..global_setting
         where spec_nm = 'LOW_GEO_METRIC_LVL';
   quit;

   %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('LOW_GEO_METRIC_LVL','ALL','0','Specifies the lowest geography level at which the aggregation metrics values in SAS Promotion Optimization will be reported.');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'Specifies the lowest geography level at which the aggregation metrics values in SAS Promotion Optimization will be reported.' where
              spec_nm = 'LOW_GEO_METRIC_LVL' and app = 'ALL';
        quit;
    %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1260888 
   :DESCRIPTION:    CRP: PUBLISHED_DT in PROFILE need DATETIME stamp, need publish date and status in PRF_PROFILE
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 27MAY2016
   :SUPPORT:        Sangeeta Rokde
   :FREQUENCY:      ONCE

   data _stg_profile_tmp (drop=PUBLISHED_DT rename=(Pubs_dttm=PUBLISHED_DT));
        set didm_stg.STG_PROFILE;
        attrib Pubs_dttm LENGTH=8 FORMAT=&m_DTTMFMT  INFORMAT=&m_DTTMFMT     ;
        Pubs_dttm=input(put( published_dt,date10.) || ':00:00:00', datetime.);
   run;

   proc sql noprint;
      drop table didm_stg.STG_PROFILE;
   quit;

   data didm_stg.STG_PROFILE;
   attrib PROFILE_ID                       LENGTH=8                                                                                          ;
   attrib PROD_ID                          LENGTH=$32                                                                                        ;
   attrib PROFILE_NM                       LENGTH=$100                                                                                       ;
   attrib PROFILE_DESC                     LENGTH=$100                                                                                       ;
   attrib START_DT                         LENGTH=8       FORMAT=&m_DTFMT         INFORMAT=&m_STG_DTINFMT                                    ;
   attrib END_DT                           LENGTH=8       FORMAT=&m_DTFMT         INFORMAT=&m_STG_DTINFMT                                    ;
   attrib PUBLISHED_DT                     LENGTH=8       FORMAT=&m_DTTMFMT       INFORMAT=&m_DTTMFMT                                        ;
   attrib STORE_CATEGORY_NM                LENGTH=$40                                                                                        ;
   stop; 
   run;   

   proc append data= work._stg_profile_tmp base=didm_stg.STG_PROFILE;
   run;
 

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1275297 
   :DESCRIPTION:    NF:ETL Changes - Update the status of RPP_PLAN_RESULTS 
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 30AUG2016
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE

   proc sql noprint;
         
      delete from &m_di_mon..etl_sys_param where upcase(jobname) = 'DI_ETL_UPDATE_RPP_PLAN_RESULT' and param_name = 'last_rpp_price_cost_chng_dttm';
            
      insert into &m_di_mon..etl_sys_param                                                                                                                          
          (jobname, param_name, param_value, default_func)                                                                                                              
      values("DI_ETL_UPDATE_RPP_PLAN_RESULT",  "last_rpp_price_cost_chng_dttm", " ",  "0"  );                                                                                  
          
		delete from &m_di_mon..etl_sys_param where upcase(jobname) = 'DI_ETL_UPDATE_RPP_PLAN_RESULT' and param_name = 'last_rpp_vendr_grp_chng_dttm';

      insert into &m_di_mon..etl_sys_param                                                                                                                          
          (jobname, param_name, param_value, default_func)                                                                                                              
      values("DI_ETL_UPDATE_RPP_PLAN_RESULT",  "last_rpp_vendr_grp_chng_dttm", " ",  "0"  );
   quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1295260
   :DESCRIPTION:    Adding two new global settings GENERATE_CM_SFE and WEEKLY_SFE_RESULTS
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 28SEP2016
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE

   proc sql;
      select count (*) into :_exists from &m_di_data..global_setting
         where spec_nm = 'GENERATE_CM_SFE';
   quit;

   %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('GENERATE_CM_SFE','RPP','0','Specifies whether to extract Sales Forecast Export or not');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'Specifies whether to extract Sales Forecast Export or not' where
              spec_nm = 'GENERATE_CM_SFE' and app = 'RPP';
        quit;
    %end;



   proc sql;
      select count (*) into :_exists from &m_di_data..global_setting
         where spec_nm = 'WEEKLY_SFE_RESULTS';
   quit;

   %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('WEEKLY_SFE_RESULTS','RPP','0','Specifies whether to extract Sales Forecast Export weekly or daily');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'Specifies whether to extract Sales Forecast Export weekly or daily' where
              spec_nm = 'WEEKLY_SFE_RESULTS' and app = 'RPP';
        quit;
    %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      ID1247383
   :DESCRIPTION:    Allow ETL to null out a Store Closing Date
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 26OCT2016
   :SUPPORT:        Sangeeta
   :FREQUENCY:      ONCE
   :CHKLIB:         DI_MON

   :DOC: Current ETL job does not allow replacing Non-null value in geogarphy_dm.closing_dt with Null values
   :DOC: If this new parameter etlp_update_closing_dt_with_null is set to 1 then ETL job
   :DOC: will allow updating non-null values in closing_dt with null values. Default value is 0.
  
   proc sql;
      delete from &m_di_mon..job_param where UPCASE(JOBNAME) eq 'LOAD_STG2DM_GEOGRAPHY_DM' and UPCASE(PARAM_NAME) eq 'ETLP_UPDATE_CLOSING_DT_WITH_NULL';
      
      insert into &m_di_mon..job_param(JOBNAME,PARAM_NAME,PARAM_VALUE,DEFAULT_FUNC)
      values('LOAD_STG2DM_GEOGRAPHY_DM','etlp_update_closing_dt_with_null','0','"0"')
      ;
   quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:

   :CHANGE_ID:      ID1286333
   :DESCRIPTION:    CRP:Size Profiling 3.4 VAAR intedgrated reports must be self-service
   :VERSION:        F0MICM54
   :DATE_OF_CHANGE: 23NOV2016
   :SUPPORT:        Sourav Das
   :FREQUENCY:      ONCE

   proc sql noprint;
      delete from &m_di_mon..job_param where param_name = "include_inv_calc" ;
      insert into &m_di_mon..job_param
      (jobname, param_name, param_value, default_func)
      values("DI_SZPF_ANALYSIS_REPORT",    "include_inv_calc",    "0",    '"0"'   )
      ;
      
      delete from &m_di_mon..etl_sys_param where param_name = "last_prod_upd_dttm" ;
      insert into &m_di_mon..etl_sys_param
      (jobname, param_name, param_value, default_func)
      values("DI_ETL_EXTRACT_LOAD",    "last_prod_upd_dttm",    "",    '""'   )
      ;
      
      
   quit;
   
:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1314067
   :DESCRIPTION:    Update the default value of WEEKLY_SFE_RESULTS
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 17JAN2017
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE

   proc sql noprint;
      select count (*) into :_exists from &m_di_data..global_setting
         where spec_nm = 'WEEKLY_SFE_RESULTS';
   quit;

   %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('WEEKLY_SFE_RESULTS','RPP','1','Specifies whether to extract Sales Forecast Export weekly or daily');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set SPEC_VALUE = '1'
              where
              spec_nm = 'WEEKLY_SFE_RESULTS' and app = 'RPP';
        quit;
    %end;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:

   :CHANGE_ID:      ID1314635
   :DESCRIPTION:    VA custom sort does is limited to 25 members, which is not enough to support the number of sizes
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 18JAN2017
   :SUPPORT:        Sourav Das
   :FREQUENCY:      ONCE

   proc sql noprint;
      delete from &m_di_mon..job_param where param_name = "FORMAT_LOCATION" ;
      insert into &m_di_mon..job_param
      (jobname, param_name, param_value, default_func)
      values("DI_UTIL_CUSTOM_SORT_FORMAT",    "FORMAT_LOCATION",    "",    '""'   )
      ;
   quit;
   
:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1268178
   :DESCRIPTION:    Adding new global settings RPP_MAX_PLAN_PROD_LVL 
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 25JAN2016
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE

   proc sql;
      select count (*) into :_exists from &m_di_data..global_setting
         where spec_nm = 'RPP_MAX_PLAN_PROD_LVL';
   quit;

   %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('RPP_MAX_PLAN_PROD_LVL','RPP','1','Specifies the maximum product scope level for evaluation in backend');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'Specifies the maximum product level in a plan' where
              spec_nm = 'RPP_MAX_PLAN_PROD_LVL' and app = 'RPP';
        quit;
    %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      ID1298174 
   :DESCRIPTION:    Remove parameter GP_PURGE_RECLASS_KEEP_RESULTS for szpf_prod_purge_reclass
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 20FEB2017
   :SUPPORT:        Sangeeta
   :FREQUENCY:      ONCE


   proc sql noprint;
       DELETE FROM &m_di_mon..job_param where jobname = 'SZPF_PROD_PURGE_RECLASS' and param_name='GP_PURGE_RECLASS_KEEP_RESULTS';
   quit;

:END_CHANGE:
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1323905
   :DESCRIPTION:    Removing two global settings 
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 21FEB2017
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE


	proc sql;
        delete * from &m_di_data..global_setting 
			where spec_nm in ('RPP_MAX_PLAN_PROD_LVL','CAT_CAL_AGG_LVL');
    quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1327091
   :DESCRIPTION:    Adding new global settings ENABLE_REALTIME_SFE_UPDATE
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 28JAN2016
   :SUPPORT:        Priyalal
   :FREQUENCY:      ONCE

    proc sql noprint;
      select count (*) into :_exists from &m_di_data..global_setting
         where spec_nm = 'ENABLE_REALTIME_SFE_UPDATE';
   quit;

   %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('ENABLE_REALTIME_SFE_UPDATE','RPP','0','Specifies whether to merge promotion forecast in real time');
        quit;
    %end;
    %else %do;
        proc sql noprint;
           update &m_di_data..global_setting set spec_desc =
             'Specifies whether to merge promotion forecast in real time' where
              spec_nm = 'ENABLE_REALTIME_SFE_UPDATE' and app = 'RPP';
        quit;
    %end;


  proc sql;
      delete from &m_di_data..job where job_id in (99);
      insert into &m_di_data..job(job_id,job_nm,parent_job_id) values (99,'rpp_fcst_merge',-1);
  quit;



:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1328148
   :DESCRIPTION:    Export RPP forecast from table RPP_FORECAST_DAILY and RPP_FORECAST_WEEKLY
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 06MAR2016
   :SUPPORT:        Priyalal
   :FREQUENCY:      ONCE


proc sql noprint;
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_SALES_FORECAST' and param_name='etlp_geo_id';
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_SALES_FORECAST' and param_name='etlp_prod_id';
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_SALES_FORECAST' and param_name='etlp_units_fmt';
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_SALES_FORECAST' and param_name='etlp_price_fmt';
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_SALES_FORECAST' and param_name='etlp_pct_fmt';
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_SALES_FORECAST' and param_name='etlp_geo_prod_ids_table';
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_SALES_FORECAST' and param_name='etlp_geo_prod_sks_table';
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_SALES_FORECAST' and param_name='etlp_model_group_ids_table';
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_SALES_FORECAST' and param_name='etlp_delimiter';
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_SALES_FORECAST' and param_name='etlp_extract_file';
       DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_SALES_FORECAST' and param_name='etlp_geo_hier_assoc_cd';
	   DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_SALES_FORECAST' and param_name='etlp_get_currency_id';
   

   
       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_RPP_SALES_FORECAST", "etlp_geo_id","",'""')
       ;

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_RPP_SALES_FORECAST", "etlp_prod_id","",'""')
       ;

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_RPP_SALES_FORECAST", "etlp_units_fmt","",'"FORMAT=NLNUM12.0 INFORMAT=NLNUM12.0"')
       ;

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_RPP_SALES_FORECAST", "etlp_price_fmt","",'"FORMAT=NLNUM12.2 INFORMAT=NLNUM12.2"')
       ;

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_RPP_SALES_FORECAST", "etlp_pct_fmt","",'"FORMAT=NLNUM12.4 INFORMAT=NLNUM12.4"')
       ;

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_RPP_SALES_FORECAST", "etlp_geo_prod_ids_table","",'""')
       ;

       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_RPP_SALES_FORECAST", "etlp_geo_prod_sks_table","",'""')
       ;


       Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
       values("DI_EXPORT_RPP_SALES_FORECAST", "etlp_model_group_ids_table","",'""')
       ;

	    Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
         values("DI_EXPORT_RPP_SALES_FORECAST","etlp_delimiter",",",'","')     
		;
       
	 	Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
	   values("DI_EXPORT_RPP_SALES_FORECAST","etlp_extract_file","",'"/sales_forecast_export.csv"')
       ;

	 	Insert into &m_di_mon..job_param
       (jobname, param_name, param_value, default_func)
		values("DI_EXPORT_RPP_SALES_FORECAST","etlp_geo_hier_assoc_cd","",'"1"')
		;

		     ;
      insert into &m_di_mon..job_param
        (jobname, param_name, param_value, default_func)
        values("DI_EXPORT_RPP_SALES_FORECAST",          "etlp_get_currency_id","", '"0"')
        ;


quit;


 proc sql;
      delete from &m_di_data..job where job_id in (81);
      insert into &m_di_data..job(job_id,job_nm,parent_job_id) values (81,'rpp_forecast_export',-1);
 quit;


proc sort data=&m_di_data..job force;
by job_id;
run;
 



:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1329226
   :DESCRIPTION:    Adding two new global settings RPP_PLAN_PAGING_DAYS_COUNT MAX_REGIONAL_PLANS_LIMIT
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 14MAR2017
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE

    proc sql noprint;
      select count (*) into :_exists from &m_di_data..global_setting
         where spec_nm = 'RPP_PLAN_PAGING_DAYS_COUNT';
   quit;

   %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('RPP_PLAN_PAGING_DAYS_COUNT','RPP','0','The number of days filter in Promotion Plan List View Screen');
        quit;
    %end;
    %else %do;
        proc sql noprint;
           update &m_di_data..global_setting set spec_desc =
             'The number of days filter in Promotion Plan List View Screen' where
              spec_nm = 'RPP_PLAN_PAGING_DAYS_COUNT' and app = 'RPP';
        quit;
    %end;


    proc sql noprint;
      select count (*) into :_exists from &m_di_data..global_setting
         where spec_nm = 'MAX_REGIONAL_PLANS_LIMIT';
   quit;

   %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('MAX_REGIONAL_PLANS_LIMIT','RPP','10','The number of maximum regional plans system should allow for a particular promotion plan');
        quit;
    %end;
    %else %do;
        proc sql noprint;
           update &m_di_data..global_setting set spec_desc =
             'The number of maximum regional plans system should allow for a particular promotion plan' where
              spec_nm = 'MAX_REGIONAL_PLANS_LIMIT' and app = 'RPP';
        quit;
    %end;



:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1331164
   :DESCRIPTION:    Adding two new global settings PLAN_MAXIMUM_ORDER_THRESHOLD and PLAN_MINIMUM_ORDER_THRESHOLD
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 03APR2017
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE

    proc sql noprint;
    select count (*) into :_exists from &m_di_data..global_setting
       where spec_nm = 'PLAN_MAXIMUM_ORDER_THRESHOLD';
    quit;

   %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('PLAN_MAXIMUM_ORDER_THRESHOLD','SZPK','5.0','Specifies the percentage of disaggregation quantity that determines the maximum value of the optimized quantity across all stores for a plan');
        quit;
    %end;
    %else %do;
        proc sql noprint;
           update &m_di_data..global_setting set spec_desc =
             'Specifies the percentage of disaggregation quantity that determines the maximum value of the optimized quantity across all stores for a plan' where
              spec_nm = 'PLAN_MAXIMUM_ORDER_THRESHOLD' and app = 'SZPK';
        quit;
    %end;


    proc sql noprint;
      select count (*) into :_exists from &m_di_data..global_setting
         where spec_nm = 'PLAN_MINIMUM_ORDER_THRESHOLD';
   quit;

   %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('PLAN_MINIMUM_ORDER_THRESHOLD','SZPK','5.0','Specifies the percentage of disaggregation quantity that determines the minimum value of the optimized quantity across all stores for a plan');
        quit;
    %end;
    %else %do;
        proc sql noprint;
           update &m_di_data..global_setting set spec_desc =
             'Specifies the percentage of disaggregation quantity that determines the minimum value of the optimized quantity across all stores for a plan' where
              spec_nm = 'PLAN_MINIMUM_ORDER_THRESHOLD' and app = 'SZPK';
        quit;
    %end;



:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID1338582
   :DESCRIPTION:    Update the RO_VAAR_REPORTS table
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 20APR2017
   :SUPPORT:        Sourav
   :FREQUENCY:      ONCE

data &m_di_data..ro_vaar_reports;
   attrib TABLE_NM                                    LENGTH=$32;
   attrib EXTRACT_QUERY_TXT                           LENGTH=$255;
   attrib RUN_EXTRACT_FLG                             LENGTH=$1;
   attrib LOAD_LASR_FLG                               LENGTH=$1;
   attrib STAR_SCHEMA_FLG                             LENGTH=$1;
   attrib ALL_COLUMNS                                 LENGTH=$6400;
   attrib MANDATORY_COLUMNS                           LENGTH=$6400;
   attrib INCLUDE_COLUMNS                             LENGTH=$6400;
   attrib PARTITION_FLG                               LENGTH=$1;
   attrib PROD_PARTITION_LEVEL                        LENGTH=8;
   attrib SUB_START_DT                                LENGTH=8 FORMAT=&m_DTFMT. INFORMAT=&m_DTFMT.;
   attrib NO_OF_WEEKS_FRM_SUB_START_DT                LENGTH=8;
   attrib PREFIX                                      LENGTH=$4;
   attrib SCHEMA_TYPE                                 LENGTH=$5;
   stop;
run;

proc sql;
   delete * from &m_di_data..ro_vaar_reports;
   insert into &m_di_data..ro_vaar_reports 
      (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG,LOAD_LASR_FLG,STAR_SCHEMA_FLG,PARTITION_FLG,ALL_COLUMNS,MANDATORY_COLUMNS,PREFIX,SCHEMA_TYPE) values
      ('sales_performance_report',
      '%di_rdm_sales_performance(sales_his_yrs=2)',
      'N',
      'N',
      'N',
      'N',
      "%sysfunc(compress(%str(PROD_HIER_SK,P_PRFX_PROD_ID,P_PRFX_PROD_NM,P_PRFX_APP_USER_NMS,P_PRFX_PROD_DESC,P_PRFX_VOLUME,P_PRFX_VOLUME_BASE_UOM,P_PRFX_BRAND_NM,G_PRFX_GEO_ID,GEO_HIER_SK,G_PRFX_GEO_NM
      ,G_PRFX_STREET_ADDRESS,G_PRFX_CITY,G_PRFX_ZIP_CODE,G_PRFX_STATE,G_PRFX_COUNTRY,WEEK_START_DATE,ACTUAL_PERMANENT_PRICE,REGULAR_PRICE,
      INVENTORY_POSITION,ACTIVATION_STATUS,UNIT_SALES,DOLLAR_SALES,CURRENT_YTD_UNIT_SALES,CURRENT_YTD_DOLLAR_SALES,PREVIOUS_YTD_UNIT_SALES,PREVIOUS_Y
      TD_DOLLAR_SALES,SAME_QTR_PREV_YEAR_UNIT_SALES,SAME_QTR_PREV_YEAR_DOLLAR_SALES,CURRENT_QUARTER_UNIT_SALES,CURRENT_QUARTER_DOLLAR_SALES)))",
      "%sysfunc(compress(%str(PROD_HIER_SK,P_PRFX_PROD_ID,P_PRFX_PROD_NM,P_PRFX_APP_USER_NMS,P_PRFX_PROD_DESC,P_PRFX_VOLUME,P_PRFX_VOLUME_BASE_UOM,P_PRFX_BRAND_NM,G_PRFX_GEO_ID,GEO_HIER_SK,G_PRFX_GEO_NM
      ,G_PRFX_ZIP_CODE,WEEK_START_DATE,ACTUAL_PERMANENT_PRICE,REGULAR_PRICE,
      INVENTORY_POSITION,ACTIVATION_STATUS,UNIT_SALES,DOLLAR_SALES,CURRENT_YTD_UNIT_SALES,CURRENT_YTD_DOLLAR_SALES,PREVIOUS_YTD_UNIT_SALES,PREVIOUS_Y
      TD_DOLLAR_SALES,SAME_QTR_PREV_YEAR_UNIT_SALES,SAME_QTR_PREV_YEAR_DOLLAR_SALES,CURRENT_QUARTER_UNIT_SALES,CURRENT_QUARTER_DOLLAR_SALES)))",
      "SALE","TABLE")
   ;
   insert into &m_di_data..ro_vaar_reports 
      (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG,LOAD_LASR_FLG,STAR_SCHEMA_FLG,PARTITION_FLG,ALL_COLUMNS,MANDATORY_COLUMNS,PREFIX,SCHEMA_TYPE) values
      ('sales_forecast_report',
      '%di_rdm_sales_forecast',
      'N',
      'N',
      'N',
      'N',
      "%sysfunc(compress(%str(PROD_HIER_SK,P_PRFX_PROD_ID,P_PRFX_PROD_NM,P_PRFX_APP_USER_NMS,P_PRFX_PROD_DESC,P_PRFX_VOLUME,P_PRFX_VOLUME_BASE_UOM,P_PRFX_BRAND_NM,G_PRFX_GEO_ID,GEO_HIER_SK,G_PRFX_GEO_NM,G_PRFX_STREET_ADDRESS,G_PRFX_CITY,G_PRFX_ZIP_CODE,G_PRFX_STATE,G_PRFX_COUNTRY,WEEK_ENDING,EFFECTIVE_PRICE,
      REGULAR_PRICE,EFFECTIVE_PRICE_DISCOUNT,BASELINE_UNIT_DEMAND)))",
      "%sysfunc(compress(%str(PROD_HIER_SK,P_PRFX_PROD_ID,P_PRFX_PROD_NM,P_PRFX_APP_USER_NMS,P_PRFX_PROD_DESC,P_PRFX_VOLUME,P_PRFX_VOLUME_BASE_UOM,P_PRFX_BRAND_NM,G_PRFX_GEO_ID,GEO_HIER_SK,G_PRFX_GEO_NM,G_PRFX_ZIP_CODE,WEEK_ENDING,EFFECTIVE_PRICE,
      REGULAR_PRICE,EFFECTIVE_PRICE_DISCOUNT,BASELINE_UNIT_DEMAND)))",
      "FCST","TABLE")
   ;
   insert into &m_di_data..ro_vaar_reports 
      (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG,LOAD_LASR_FLG,STAR_SCHEMA_FLG,PARTITION_FLG,ALL_COLUMNS,MANDATORY_COLUMNS,PREFIX,SCHEMA_TYPE) values
      ('price_and_promotion_report',
      '%di_rdm_price_and_promotion',
      'N',
      'N',
      'N',
      'N',
      "%sysfunc(compress(%str(PROD_HIER_SK,P_PRFX_PROD_ID,P_PRFX_PROD_NM,P_PRFX_APP_USER_NMS,P_PRFX_PROD_DESC,P_PRFX_VOLUME,P_PRFX_VOLUME_BASE_UOM,P_PRFX_BRAND_NM,G_PRFX_GEO_ID,GEO_HIER_SK,G_PRFX_GEO_NM,G_PRFX_STREET_ADDRESS,G_PRFX_CITY,
      G_PRFX_ZIP_CODE,G_PRFX_STATE,G_PRFX_COUNTRY,PS1_ESTIMATE,PS2_ESTIMATE,PS3_ESTIMATE,
      PS4_ESTIMATE,PS5_ESTIMATE,PS6_ESTIMATE,PS1_LIFT,PS2_LIFT,PS3_LIFT,PS4_LIFT,PS5_LIFT,PS6_LIFT,PRICE_ELASTICITY,PRICE_LIFT_25_PER,PRICE_LIFT_30_PER,
      PRICE_LIFT_40_PER,PRICE_LIFT_50_PER,PRICE_LIFT_60_PER,)))",
      "%sysfunc(compress(%str(PROD_HIER_SK,P_PRFX_PROD_ID,P_PRFX_PROD_NM,P_PRFX_APP_USER_NMS,P_PRFX_PROD_DESC,P_PRFX_VOLUME,P_PRFX_VOLUME_BASE_UOM,P_PRFX_BRAND_NM,G_PRFX_GEO_ID,GEO_HIER_SK,G_PRFX_GEO_NM,G_PRFX_ZIP_CODE,PS1_ESTIMATE,PS2_ESTIMATE,PS3_ESTIMATE,
      PS4_ESTIMATE,PS5_ESTIMATE,PS6_ESTIMATE,PS1_LIFT,PS2_LIFT,PS3_LIFT,PS4_LIFT,PS5_LIFT,PS6_LIFT,PRICE_ELASTICITY,PRICE_LIFT_25_PER,PRICE_LIFT_30_PER,
      PRICE_LIFT_40_PER,PRICE_LIFT_50_PER,PRICE_LIFT_60_PER,)))",
      "PPE","TABLE")
   ;
   insert into &m_di_data..ro_vaar_reports 
      (TABLE_NM,EXTRACT_QUERY_TXT,RUN_EXTRACT_FLG,LOAD_LASR_FLG,STAR_SCHEMA_FLG,PARTITION_FLG,ALL_COLUMNS,MANDATORY_COLUMNS,PREFIX,SCHEMA_TYPE) values
      ('mdo_plan_report',
      '%di_rdm_mdo_plan(start_dt=,end_dt=)',
      'N',
      'N',
      'N',
      'N',
      "%sysfunc(compress(%str(PROD_HIER_SK,P_PRFX_PROD_ID,P_PRFX_PROD_NM,P_PRFX_APP_USER_NMS,P_PRFX_PROD_DESC,P_PRFX_VOLUME,P_PRFX_VOLUME_BASE_UOM,P_PRFX_BRAND_NM,G_PRFX_GEO_ID,GEO_HIER_SK,G_PRFX_GEO_NM,G_PRFX_STREET_ADDRESS,G_PRFX_CITY,G_PRFX_ZIP_CODE,
      G_PRFX_STATE,G_PRFX_COUNTRY,PLAN_NM,
      PLAN_OBJECTIVE,PLAN_START_DATE,PLAN_END_DATE,TARGETSELLTHROUGHPERCENT,END_SELL_THROUGH_PCT,
      INV_UNITS_ON_HAND,BASE_PRICE,PLAN_PRICE,PLAN_AVG_PRICE_FIRST_WEEK,PLAN_AVG_LAST_FIRST_WEEK,
      END_INV_UNITS,END_INV_VAL_AT_COST,FW_INV_UNITS,SPEND,REVENUE_DELAY_COST,REVENUE_DELAY_COST_PER_SPEND,INV_DELAY_COST,INV_DELAY_COST_PER_SECOND,REVENUE_LIFT,INV_AT_RISK,FW_INV_AT_BASE_PRICE,
      INV_AT_RISK_UNITS,NUM_INV_AT_RISK_PRODS,NUM_INV_AT_RISK_GEOS,INV_AT_RISK_NUM_MEMBERS,WEEK_MD_SPEND,WEEK_REVENUE,WEEK_SALESUNITS,WEEK_SALESUNITSBASE,WEEK_INVUNITS,
      WEEK_INVUNITSBASE,INV_UNITS_ON_ORDER,PLAN_PERCENTAGE_OFF_MIN,WEEK_MD_DISCOUNT_PCT,WEEK_START_DT,LY_FACT_ACTUAL_PRICE,LY_FACT_SALES_UNIT,LY_FACT_SALES_AMT,LY_FACT_MARGIN,
      LY_FACT_MARGIN_PERCENTAGE,WEEK_MD_PRICE,BASE_REVENUE_AMT,PRICE_SENSITIVITY)))",
      "%sysfunc(compress(%str(PROD_HIER_SK,P_PRFX_PROD_ID,P_PRFX_PROD_NM,P_PRFX_APP_USER_NMS,P_PRFX_PROD_DESC,P_PRFX_VOLUME,P_PRFX_VOLUME_BASE_UOM,MARKDOWNS_PLANNED,P_PRFX_BRAND_NM,G_PRFX_GEO_ID,GEO_HIER_SK,
      G_PRFX_GEO_NM,G_PRFX_STREET_ADDRESS,G_PRFX_CITY,G_PRFX_ZIP_CODE,G_PRFX_STATE,G_PRFX_COUNTRY,PLAN_NM,PLAN_OBJECTIVE,PLAN_START_DATE,PLAN_END_DATE,TARGETSELLTHROUGHPERCENT,
      END_SELL_THROUGH_PCT,INV_DELAY_COST_PER_SPEND,INV_UNITS_ON_HAND,BASE_PRICE,PLAN_PRICE,PLAN_AVG_PRICE_FIRST_WEEK,PLAN_AVG_LAST_FIRST_WEEK,
      END_INV_UNITS,END_INV_VAL_AT_COST,FW_INV_UNITS,SPEND,REVENUE_DELAY_COST,WEEK_START_DT,LY_FACT_COST,LY_FACT_ACTUAL_PRICE,LY_FACT_SALES_UNITS,LY_FACT_SALES_AMT,LY_FACT_MARGIN,
      LY_FACT_MARGIN_PERCENTAGE,REVENUE_DELAY_COST_PER_SPEND,INV_DELAY_COST,REVENUE_LIFT,INV_AT_RISK,FW_INV_AT_BASE_PRICE,INV_AT_RISK_UNITS,NUM_INV_AT_RISK_PRODS,NUM_INV_AT_RISK_GEOS,
      INV_AT_RISK_NUM_MEMBERS,WEEK_MD_SPEND,WEEK_REVENUE,MARKDOWNS_PLANNED,WEEK_SALESUNITS,WEEK_SALESUNITSBASE,WEEK_INVUNITS,
      WEEK_INVUNITSBASE,INV_UNITS_ON_ORDER,PLAN_PERCENTAGE_OFF_MIN,WEEK_MD_DISCOUNT_PCT,WEEK_MD_PRICE,BASE_REVENUE_AMT,PRICE_SENSITIVITY)))",
      "MDO","TABLE")
   ;
quit;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      ID1338313
   :DESCRIPTION:    Add indexes to enhance the performance of Common Metrics tasks
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 10MAY2017
   :SUPPORT:        Sangeeta Rokde
   :FREQUENCY:      ONCE

   proc sql noprint;


    select count(*)
       into :_cnt_idx_ix9
       from sashelp.vindex
       where upcase(libname)=upcase("&m_di_data.")
       and upcase(memname) = "PRODUCT_HIER_ASSOC_DM"
       and upcase(indxname) = "PROD_HIER_IX9"
       ;


       select count(*)
       into :_cnt_idx_ix12
       from sashelp.vindex
       where upcase(libname)=upcase("&m_di_data.")
       and upcase(memname) = "PRODUCT_HIER_ASSOC_DM"
       and upcase(indxname) = "PROD_HIER_IX12"
       ;

       select count(*)
       into :_cnt_idx_ix11
       from sashelp.vindex
       where upcase(libname)=upcase("&m_di_data.")
       and upcase(memname) = "PRODUCT_HIER_ASSOC_DM"
       and upcase(indxname) = "PROD_HIER_IX11"
       ;
   quit;

   %if &_cnt_idx_ix9 > 0 %then
   %do;
      proc sql noprint;
         DROP INDEX PROD_HIER_IX9 FROM &m_di_data..PRODUCT_HIER_ASSOC_DM;
      quit;
   %end;

   
   %if &_cnt_idx_ix11 > 0 %then
   %do;
      proc sql noprint;
         DROP INDEX PROD_HIER_IX11 FROM &m_di_data..PRODUCT_HIER_ASSOC_DM;
      quit;
   %end;
   %if &_cnt_idx_ix12 > 0 %then
   %do;
      proc sql noprint;
         DROP INDEX PROD_HIER_IX12 FROM &m_di_data..PRODUCT_HIER_ASSOC_DM;
      quit;
   %end;
   
    proc sql noprint;
          CREATE INDEX PROD_HIER_IX12 ON &m_di_data..PRODUCT_HIER_ASSOC_DM
          (
             PARENT_PROD_LVL, 
             PROD_LVL, 
             PROD_HIER_ASSOC_CD
          )
          ;
          CREATE INDEX PROD_HIER_IX11 ON &m_di_data..PRODUCT_HIER_ASSOC_DM
          (
             PROD_HIER_ASSOC_CD, 
             PROD_LVL, 
             PARENT_PROD_HIER_SK
          )
          ;
    quit;
 
   proc sql noprint;
       select count(*)
       into :_cnt_geo_hier_ix5
       from sashelp.vindex
       where upcase(libname)=upcase("&m_di_data.")
       and upcase(memname) = "GEOGRAPHY_HIER_ASSOC_DM"
       and upcase(indxname) = "GEO_HIER_IX5"
       ;
   quit;  
   
   %if &_cnt_geo_hier_ix5 > 0 %then
      %do;
         proc sql noprint;
              DROP INDEX GEO_HIER_IX5 FROM &m_di_data..GEOGRAPHY_HIER_ASSOC_DM;
         quit;
      %end;
      proc sql noprint;
         CREATE INDEX GEO_HIER_IX5 ON &m_di_data..GEOGRAPHY_HIER_ASSOC_DM
         (
            GEO_HIER_ASSOC_CD, 
            GEO_HIER_SK, 
            GEO_LVL
         )
         ;
      quit;

 :END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      ID1342637
   :DESCRIPTION:    SFE JOB_PARAM
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 23MAY2017
   :SUPPORT:        Priyalal
   :FREQUENCY:      ONCE
   
proc sql noprint;
   DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_SALES_FORECAST' and param_name='etlp_extract_file';
   DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_SALES_FORECAST' and param_name='etlp_extract_path';
   DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_SALES_FORECAST' and param_name='etlp_file_name_prefix';
   DELETE FROM &m_di_mon..job_param where jobname = 'DI_EXPORT_RPP_SALES_FORECAST' and param_name='etlp_extension';
   DELETE FROM &m_di_mon..job_param where jobname = 'DI_ETL_CM_FORECAST_MERGE' and param_name='historical_week_to_keep'; 
   DELETE FROM &m_di_mon..job_param where jobname = 'DI_ETL_CM_FORECAST_MERGE' and param_name='refresh_sfe_merge';

   
   Insert into &m_di_mon..job_param
   (jobname, param_name, param_value, default_func)
   values("DI_EXPORT_RPP_SALES_FORECAST", "etlp_extract_path","",'""')
   ;

   Insert into &m_di_mon..job_param
   (jobname, param_name, param_value, default_func)
   values("DI_EXPORT_RPP_SALES_FORECAST", "etlp_file_name_prefix","",'"fcst_export"')
   ;

   Insert into &m_di_mon..job_param
   (jobname, param_name, param_value, default_func)
   values("DI_EXPORT_RPP_SALES_FORECAST", "etlp_extension","",'"csv"')
   ;

   Insert into &m_di_mon..job_param 
   (jobname, param_name, param_value, default_func)
   values("DI_ETL_CM_FORECAST_MERGE", "historical_week_to_keep","",'"0"')
   ;

   Insert into &m_di_mon..job_param 
   (jobname, param_name, param_value, default_func)
   values("DI_ETL_CM_FORECAST_MERGE", "refresh_sfe_merge","",'"1"')
   ;

quit;


:END_CHANGE:
   
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      ID0903916
   :DESCRIPTION:    Add GEO_DATE_ID to primary key in DI_DM.GEO_DATE
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 31MAY2017
   :SUPPORT:        Sangeeta
   :FREQUENCY:      ONCE
   
   proc sql noprint;
      select count(*) into: cnt_geo_id from &m_di_data..geo_date
         where geo_date_id is null;
   quit;
   %let cnt_geo_id=&cnt_geo_id;
   %put cnt_geo_id=&cnt_geo_id;

   %if &cnt_geo_id > 0 %then %do;
       %put WARNING: &m_di_data..GEO_DATE has NULL VALUES IN GEO_DATE_ID COLUMN, PLEASE CORRECT THE DATA TO REMOVE NULL VALUES AND RUN THE SCRIPT FOR ALTERING ITS PRIMARY KEY TO ADD GEO_DATE_ID. REFER TO UPGRADE GUIDE FOR THE SCRIPT TO RUN. NOTE THAT PRIMARY KEY MODIFICATION IS REQUIRED;
   %end;
   %else %do;
      %etl_drop(&m_di_data..GEO_DATE ,ic);
      proc sql noprint;
         alter table &m_di_data..GEO_DATE add CONSTRAINT PRIM_KEY PRIMARY KEY (GEO_HIER_SK, PROD_HIER_SK, GEO_DATE_TYPE, START_DT,GEO_DATE_ID);
         alter table &m_di_data..GEO_DATE add NOT NULL (END_DT);
      quit;   
   %end;

   proc sql noprint ;
      alter table &m_di_mon..STG_GEO_DATE_X
      add GEO_DATE_ID NUM 4 ;
   quit;

:END_CHANGE:
   
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID1343883 
   :DESCRIPTION:    Load_SRC2STG_Main job doesnt handle data coming in datetime column
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 27MAY2017
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE

   data didm_stg.STG_PROFILE (rename=(PUBLISHED_DT=PUBLISHED_DTTM));
        set didm_stg.STG_PROFILE;
   run; 
   
   proc sql noprint;
      delete from &m_di_mon..job_param where jobname = "LOAD_SRC2STG_MAIN" and upcase(param_name) = "SRC_DATETIME_INFORMAT" ;
      insert into &m_di_mon..job_param
      (jobname, param_name, param_value, default_func)
      values("LOAD_SRC2STG_MAIN",    "src_datetime_informat",    "",    '"ANYDTDTM21."'   )
      ;
   quit;
   

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID0903916_1
   :DESCRIPTION:    Add GEO_DATE_ID to primary key in DI_DM.GEO_DATE
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 01JUN2017
   :SUPPORT:        Sangeeta
   :FREQUENCY:      ONCE
   
   proc sql noprint;
      update &m_didm_stg..STG_GEO_DATE
        set GEO_DATE_ID=9999
          where GEO_DATE_ID is null;
   quit;
   proc datasets nolist library=&m_didm_stg.; 
      modify STG_GEO_DATE;
      ic create Not Null (GEO_DATE_ID);
   run;quit;

:END_CHANGE:



***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID1352314
   :DESCRIPTION:    CRP: Add config option on old-style SFE to use gross cost for app forecast (backwards compatibility)
   :VERSION:        D4MICM541
   :DATE_OF_CHANGE: 21JUNE2017
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE

    proc sql noprint;
      select count (*) into :_exists from &m_di_data..global_setting
         where spec_nm = 'SFE_USE_GROSS_COST';
   quit;

   %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('SFE_USE_GROSS_COST','ALL','0','N/A');
        quit;
    %end;
    %else %do;
        proc sql noprint;
           update &m_di_data..global_setting set spec_desc =
             'N/A' where
              spec_nm = 'SFE_USE_GROSS_COST' and app = 'ALL';
        quit;
    %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;


:BEGIN_CHANGE:
   :CHANGE_ID:      ID1361139
   :DESCRIPTION:    CM : System is submitting a partition-wide request for a plan with only 64 products
   :VERSION:        F0MICM541
   :DATE_OF_CHANGE: 24JULY2017
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE

    proc sql noprint;
      select count (*) into :_exists from &m_di_data..global_setting
         where spec_nm = 'PROD_COUNT_THRESHOLD';
   quit;

   %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('PROD_COUNT_THRESHOLD','RPP','0','Minimum number of products from a partition to be processed in common metric request');
        quit;
    %end;
    %else %do;
        proc sql noprint;
           update &m_di_data..global_setting set spec_desc =
             'N/A' where
              spec_nm = 'PROD_COUNT_THRESHOLD' and app = 'RPP';
        quit;
    %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1388241
   :DESCRIPTION:    Tables with CREATED_BY columns generate errors if APP_USER_ID is greater than 20 char
   :VERSION:        F0MICM541
   :DATE_OF_CHANGE: 21AUG2018
   :SUPPORT:        Sangeeta Rokde
   :FREQUENCY:      ONCE
   
   proc sql; 
      alter table &m_di_data..PRODUCT_CROSS_EFFECT_SPEC modify CREATED_BY CHAR(40);
      alter table &m_di_data..VEHICLE_SUPPORT_MAP modify CREATED_BY CHAR(40);
      alter table &m_di_data..VEHICLE_SUPPORT_MAP_PREV modify CREATED_BY CHAR(40);
      alter table &m_di_data..ATTR_SPEC_PREV modify CREATED_BY CHAR(40);
      alter table &m_di_data..MODEL_SPEC_PREV modify CREATED_BY CHAR(40);
   quit;
  

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;



:BEGIN_CHANGE:
   :CHANGE_ID:      ID1394013
   :DESCRIPTION:    Adding one new global settings IGNORE_DC_IN_REPAIR
   :VERSION:        F0MICM541
   :DATE_OF_CHANGE: 05SEP2018
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE

    proc sql noprint;
    select count (*) into :_exists from &m_di_data..global_setting
       where spec_nm = 'IGNORE_DC_IN_REPAIR';
    quit;

   %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('IGNORE_DC_IN_REPAIR','ALL','0','Ignore DC in Repair');
        quit;
    %end;
    %else %do;
        proc sql noprint;
           update &m_di_data..global_setting set spec_desc =
             'Ignore DC in Repair' where
              spec_nm = 'IGNORE_DC_IN_REPAIR' and app = 'ALL';
        quit;
    %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1476342
   :DESCRIPTION:    Adding one new global settings ENABLE_HIERARCHY_FILTER
   :VERSION:        F0MICM541
   :DATE_OF_CHANGE: 14JAN2019
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE

    proc sql noprint;
    select count (*) into :_exists from &m_di_data..global_setting
       where spec_nm = 'ENABLE_HIERARCHY_FILTER';
    quit;

   %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('ENABLE_HIERARCHY_FILTER','SZPF','0','Enable hierarchy filter');
        quit;
    %end;
    %else %do;
        proc sql noprint;
           update &m_di_data..global_setting set spec_desc =
             'Enable hierarchy filter' where
              spec_nm = 'ENABLE_HIERARCHY_FILTER' and app = 'SZPF';
        quit;
    %end;

:END_CHANGE:


***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1416121
   :DESCRIPTION:    Adding new global setting MDO_ACTUALS_USE_END_WEEK
   :VERSION:        F0MICM541
   :DATE_OF_CHANGE: 21NOV2019
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE


proc sql NOPRINT;
   DELETE FROM &m_di_data..global_setting where upcase(SPEC_NM) = 'MDO_ACTUALS_USE_END_WEEK';
   
   INSERT INTO &m_di_data..global_setting
           (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
   VALUES  ('MDO_ACTUALS_USE_END_WEEK','CPO','0','Specifies whether Regular Price and Spend be  measured from first/last day of the week');
quit;

:END_CHANGE:

***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1565326
   :DESCRIPTION:    Adding new global setting GEO_SYNCH_PUBLISH_PROFILE_RUN
   :VERSION:        F0MICM541
   :DATE_OF_CHANGE: 17APR2020
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE


proc sql NOPRINT;
   DELETE FROM &m_di_data..global_setting where upcase(SPEC_NM) = 'GEO_SYNCH_PUBLISH_PROFILE_RUN';
   
   INSERT INTO &m_di_data..global_setting
           (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC)
   VALUES  ('GEO_SYNCH_PUBLISH_PROFILE_RUN','SZPF',' ','Specifies whether geo synch (closed stores) will execute in Publish profile or not');
quit;

:END_CHANGE:
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;

:BEGIN_CHANGE:
   :CHANGE_ID:      ID1504268
   :DESCRIPTION:    Adding four new global settings
   :VERSION:        F0MICM541
   :DATE_OF_CHANGE: 20APR2022
   :SUPPORT:        Sourav Kumar Das
   :FREQUENCY:      ONCE

    proc sql noprint;
    select count (*) into :_exists from &m_di_data..global_setting
       where spec_nm = 'PARENTDIFFSALES';
    quit;

   %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('PARENTDIFFSALES','ALL','2','Cut-off value for % sales difference between the parent and child penetrations over which user want to keep the lower (child) level profile');
        quit;
    %end;
    %else %do;
        proc sql noprint;
           update &m_di_data..global_setting set spec_desc =
             'Enable hierarchy filter' where
              spec_nm = 'PARENTDIFFSALES' and app = 'ALL';
        quit;
    %end;
	
	
	proc sql noprint;
    select count (*) into :_exists from &m_di_data..global_setting
       where spec_nm = 'PROFILE_SELECTION_FLG';
    quit;

   %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('PROFILE_SELECTION_FLG','ALL','0','If the profile selection results of existing solution are not desirable then the user can override those results using this flag');
        quit;
    %end;
    %else %do;
        proc sql noprint;
           update &m_di_data..global_setting set spec_desc =
             'Enable hierarchy filter' where
              spec_nm = 'PROFILE_SELECTION_FLG' and app = 'ALL';
        quit;
    %end;
	
	
	proc sql noprint;
    select count (*) into :_exists from &m_di_data..global_setting
       where spec_nm = 'PERSIZESATISFYFSTTHR';
    quit;

   %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('PERSIZESATISFYFSTTHR','ALL','50','Cut-off value for percentage of sizes which are flagged to consider lower (child) level profile');
        quit;
    %end;
    %else %do;
        proc sql noprint;
           update &m_di_data..global_setting set spec_desc =
             'Enable hierarchy filter' where
              spec_nm = 'PERSIZESATISFYFSTTHR' and app = 'ALL';
        quit;
    %end;
	
	
	
	proc sql noprint;
    select count (*) into :_exists from &m_di_data..global_setting
       where spec_nm = 'CHILD_PREFERENCE';
    quit;

   %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('CHILD_PREFERENCE','ALL','0','When parent profile level is selected as best profile level over child profile level then the user can override those results using this flag');
        quit;
    %end;
    %else %do;
        proc sql noprint;
           update &m_di_data..global_setting set spec_desc =
             'Enable hierarchy filter' where
              spec_nm = 'CHILD_PREFERENCE' and app = 'ALL';
        quit;
    %end;

:END_CHANGE:
***********************************************************************************************;
***********************************************************************************************;
***********************************************************************************************;
:BEGIN_CHANGE:
   :CHANGE_ID:      FULFILLMNT_8424
   :DESCRIPTION:    Adding  new global settings Prefer_bulk_packs
   :VERSION:        F4MICM541
   :DATE_OF_CHANGE: 11JUN2024
   :SUPPORT:        Avinash Khairnar
   :FREQUENCY:      ONCE

   proc sql;
      select count (*) into :_exists from &m_di_data..global_setting
         where spec_nm = 'PREFER_BULK_PACKS';
   quit;

   %if &_exists = 0 %then %do;
        proc sql;
            insert into &m_di_data..global_setting (SPEC_NM,APP,SPEC_VALUE,SPEC_DESC) values
               ('PREFER_BULK_PACKS','SZPK','0','In Pack recommendation, allow optimization to allocate bulk pack over pre-packs, when bulk pack units can satisfy the store need quantity better than prepack units.');
        quit;
    %end;
    %else %do;
        proc sql;
           update &m_di_data..global_setting set spec_desc =
             'In Pack recommendation, allow optimization to allocate bulk pack over pre-packs, when bulk pack units can satisfy the store need quantity better than prepack units.' where
              spec_nm = 'PREFER_BULK_PACKS' and app = 'SZPK';
        quit;
    %end;
:END_CHANGE: