#' Write history of dividends in a csv file
#'
#' @usage write_dividend_history(df_transactions, path)
#' @param df_transactions A data frame containing the history of transactions.
#' @param path A single character string. Path where data are stored.
#'
#' @export
write_dividend_history <- function(df_transactions, path) {
get_user_names(path)
df_dividends <- df_transactions[grepl("Dividend",
df_transactions$transaction_type,
fixed = TRUE), ]
if (nrow(df_dividends) > 0) {
## Make sure values are positive - Why is there a need anyways? Explain!
df_dividends$transaction_value <- abs(df_dividends$transaction_value)
data.table::fwrite(df_dividends,
file.path(path.dividends, file.dividend.history))
}
}
#' Write dividend payments by year to a csv file
#'
#' @usage write_dividend_by_yr(path)
#' @param path A single character string. Path where data are stored.
#'
#' @export
#' @importFrom magrittr %>%
write_dividend_by_yr <- function(path) {
tryCatch({
get_user_names(path)
file_path_dividends <- file.path(path.dividends, file.dividend.history)
if (file.exists(file_path_dividends)) {
df_dividends <- data.table::fread(file_path_dividends)
## Storno needs to be a negative amount (i.e., payment)
is_storno <- df_dividends$transaction_type == "Storno - Dividend"
df_dividends$transaction_value[is_storno] <- -df_dividends$transaction_value[is_storno]
df_dividends$transaction_date <- as.Date(df_dividends$transaction_date,
format = "%d-%m-%Y")
df_dividends$year <- lubridate::year(df_dividends$transaction_date)
df_dividends_sum_yr <- stats::aggregate(transaction_value ~ year,
data = df_dividends, sum)
df_dividends_sum_yr <- df_dividends_sum_yr %>%
dplyr::mutate(year = year) %>%
tidyr::complete(year = seq(min(year), as.numeric(lubridate::year(Sys.Date())),
by = 1))
df_dividends_sum_yr <- as.data.frame(df_dividends_sum_yr)
df_dividends_sum_yr$transaction_value[is.na(df_dividends_sum_yr$transaction_value)] <- 0
data.table::fwrite(df_dividends_sum_yr,
file.path(path.dividends, file.dividend.year))
}
},
error = function(e) {
message(e)
})
}
#' Write dividend payments by month to a csv file
#'
#' @usage write_dividend_by_month(path)
#' @param path A single character string. Path where data are stored.
#'
#' @export
#' @importFrom magrittr %>%
#' @importFrom rlang .data
write_dividend_by_month <- function(path) {
get_user_names(path)
tryCatch({
file_path_dividends <- file.path(path.dividends, file.dividend.history)
if (file.exists(file_path_dividends)) {
df_dividends <- data.table::fread(file_path_dividends)
## Storno needs to be a negative amount (i.e., payment)
is_storno <- df_dividends$transaction_type == "Storno - Dividend"
df_dividends$transaction_value[is_storno] <- -df_dividends$transaction_value[is_storno]
df_dividends$transaction_date <- as.Date(df_dividends$transaction_date,
format = "%d-%m-%Y")
df_dividends$yearmon <- lubridate::floor_date(df_dividends$transaction_date,
unit = "month")
## Get dividends by month
df_dividends_sum_month <- stats::aggregate(transaction_value ~ yearmon,
data = df_dividends, sum)
df_dividends_sum_month <- df_dividends_sum_month %>%
dplyr::mutate(yearmon = as.Date(.data$yearmon)) %>%
tidyr::complete(yearmon = seq.Date(min(.data$yearmon),
lubridate::floor_date(Sys.Date(),
unit = "month"),
by = "month"))
df_dividends_sum_month <- as.data.frame(df_dividends_sum_month)
df_dividends_sum_month$transaction_value[is.na(df_dividends_sum_month$transaction_value)] <- 0
data.table::fwrite(df_dividends_sum_month,
file.path(path.dividends, file.dividend.month))
}
},
error = function(e) {
message(e)
})
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.