#' Implement a "Simple" Slowly Changing Dimension Type 2.
#' 
#' This function implements a Simplified version of Slowly Changing Dimension
#' Type 2 to merge new and current data while maintaining historical records.
#' The function deactivates all the old records and activates new ones, ensuring
#' a history-preserving update strategy. The difference between a standard SCD2
#' is that this simplified version applies no checks on the data, deactivating
#' all the old records and activating the new ones, even if some of the old
#' records are still active.
#' 
#' @param newData `data.frame`. The data frame containing new records.
#' 
#' @param currentData `data.frame`. The data frame containing existing records.
#' 
#' @return A combined data frame with all old data marked as not active and new
#'   data marked as active.
#' 
#' @importFrom checkmate assert_data_frame
#' @importFrom dplyr bind_rows
#' 
#' @examples
#' currentData_ <- tibble::tribble(
#'   ~id, ~colA, ~colB, ~colC, ~IS_ACTIVE, ~START_DATE, ~END_DATE,
#'   1, "a1", "b1", "c1", TRUE, Sys.time(), as.Date(NA),
#'   2, "a2", "b2", "c2", TRUE, Sys.time(), as.Date(NA),
#'   3, "a3", "b3", "c3", TRUE, Sys.time(), as.Date(NA))
#' 
#' newData_ <- tibble::tribble(
#'   ~id, ~colA, ~colB, ~colC,
#'   1, "a1", "b1", "c1",
#'   2, "a2", "b2", "c20",
#'   3, "a4", "b4", "c4")
#' 
#' mergedData <- SSCD2(newData = newData_, currentData = currentData_)
#' 
#' @export
#' 
SSCD2 <- function(newData, currentData) {

  assert_data_frame(newData)
  assert_data_frame(currentData)

  mergedData_ <- bind_rows(
    .deactivate(currentData),
    .activate(newData))

  return(mergedData_)
}
