## TODO:  

## ADD FIELD:  Have  Transaction Data for month? 
## Add field:  Join Columns,  All splitgroup combinations

## --------------------------------------------------------------------------- ##
## 2015-02-01 -- Also export  Mike B's sheets
try(source.p("GL_pt6_a Export DT.supplychain_percentages to DB.r"))

## --------------------------------------------------------------------------- ##


## Create DT.MgmtReport
{
    DT.MgmtReport <- copy(DT.cleaned.aggd)

    colsNotImporting <- c("GL_gross_forDSOM", "OA_gross_forDSOM", "GL_gross_forDSOM.yago", "OA_gross_forDSOM.yago")
    suppressWarnings(DT.MgmtReport[, (colsNotImporting) := NULL])

    setnames(DT.MgmtReport, gsub("GL_net_forDSOM", "gross", names(DT.MgmtReport)))
}


## Add in DT.stores meta info
{
    setkeyIfNot(DT.MgmtReport, storeid)
    DT.MgmtReport[DT.stores, `:=`(
                              store_name_short=i.store_name_short
                            , store_group=i.store_group
                            ## 2015-01-25 removing store_group_less
                            # , store_group_less=i.store_group_less
                            )
                 ]

    ## Clean NAs
    DT.MgmtReport[is.na(store_name_short), store_name_short := store_name]
    DT.MgmtReport[is.na(store_group),      store_group      := "zOTHER STORESz"]
    ## 2015-01-25 removing store_group_less
    # DT.MgmtReport[is.na(store_group_less), store_group_less := "zOTHER STORESz"]
}

## ADD JOIN-COLS
{
    join_col_groupings <- {
      list (
          c("date", "store_name_short")
        , c("date", "store_musicbucket")
        , c("date", "store_videobucket")
        , c("date", "music_vs_video")
        , c("date", "music_vs_video", "label_sc_group")
        , c("date", "music_vs_video", "store_musicbucket")
        , c("date", "music_vs_video", "store_videobucket")
        , c("date", "store_musicbucket", "release_is_compilation")
        , c("date", "store_videobucket")
        , c("date", "label_sc_group", "store_musicbucket")
        , c("date", "label_sc_group", "store_musicbucket", "release_is_compilation")
        , c("date", "label_sc_group", "store_videobucket")
        , c("date", "store_name_short", "store_musicbucket")
        , c("date", "store_name_short", "store_videobucket")
        , c("date", "store_name_short", "store_musicbucket", "label_sc_group")
        , c("date", "store_name_short", "store_musicbucket", "label_sc_group", "release_is_compilation")
        , c("date", "store_name_short", "store_videobucket", "label_sc_group")
        , c("date", "store_name_short", "store_musicbucket", "label_sc_group", "music_vs_video")
        , c("date", "store_name_short", "store_videobucket", "label_sc_group", "music_vs_video")
        , c("date", "store_name_short", "store_musicbucket", "label_sc_group", "music_vs_video", "release_is_compilation")
        , c("store_name_short", "store_musicbucket", "label_sc_group", "music_vs_video", "release_is_compilation")
        , c("store_name_short", "store_videobucket", "label_sc_group", "music_vs_video", "release_is_compilation")
        )
    }

    s.t(msg="Adding in join columns", expr={
      for (joinCols in join_col_groupings) {
        jcol.nm <- pasteC(c("zzzjoincol", joinCols) ,C="X")
        if (verbose.joinColsProcessing)
            cat("processing ", jcol.nm, "\n")
        DT.MgmtReport[, (jcol.nm) := apply(.SD, 1, pasteC, C="_"), .SDcols=joinCols, by=joinCols]
        rm(joinCols, jcol.nm)
      }
      DT.MgmtReport[, "zzzjoincol__FULL" := apply(.SD, 1, pasteC, C="_"), .SDcols=c(setdiff(kCols.smry, "ancillaryline")), by=kCols.splitgroup]
    }) ## // end s.t()


    ## ADD CHARTIO FILLER COLUMNS
    DT.MgmtReport[, `:=`(zblank_ztotal="zTOTAL", zblank_total="TOTAL", zblank="")]

    invisible()
}


## Save image before ingesting, since an error in the RS-DBI driver can cause a seg fault and a total crash
lastImage <- saveImageTo(verbose=FALSE)


cat("  --  Running query to insert DT.MgmtReport  --  \n")

confirmed <- 
  {
    setkeyIfNot(DT.MgmtReport, kCols.smry, verbose=FALSE)

    ## If debugging is needed, use: 
    ## debugOn("SQL");  ## OR    debugOn("sqlconfirm")
    ## debugOff("SQL");  ## OR    debugOff("sqlconfirm")

    ## CREATE  bi.MgmtReport
    ## Insert the table into SQL
    ingestIntoSQL(DT.MgmtReport
                , nmsToChange = c()
                , tbl = "MgmtReport"
                , schema = "bi"
                , drop = TRUE
                , truncInsteadOfDrop = TRUE
                , numericDecimals=c(22, 9)
                , showStatusUpdate = TRUE
                , permissions.update = TRUE
                , permissions.groups.to.update = c("dw_queriers", "biapps")
                , verbose.qry = FALSE
                )
  }


## ------ ------ ------ ------ ------ ------ ------ ##
## CREATE MgmtReport_months_reported
## ------ ------ ------ ------ ------ ------ ------ ##
DT.MgmtReport_months_reported <- 
    create_and_ingest_DT.MgmtReport_months_reported ( 
                        DT.reported   = DT.rev_summary.molt, grossCol.reported="reported_gross"
                      , DT.calculated = DT.cleaned.aggd, grossCol.calculated="GL_net_forDSOM"
                      , schema="bi"
                      )
## ------ ------ ------ ------ ------ ------ ------ ##



# For dev'ing
if (FALSE)
    qRowCount(tbl="MgmtReport", schema="bi")

if (confirmed) {
    message(pasteR("=~", 40), "\n     !!!!!!   DONE IMPORTING GOAL  bi.MgmtReport   !!!!!\n", pasteR("=~", 40))
} else {
    warning("CONFIRMATION OF IMPORT FAILED")
}

message(sprintf("image file saved here: \n\t\"%s\"\n", lastImage))
# jesusForData()






