69 lines
2.9 KiB
R
Executable File
69 lines
2.9 KiB
R
Executable File
# R/sync_hibiscus.R
|
|
|
|
sync_hibiscus <- function(conn) {
|
|
|
|
ok <- TRUE
|
|
error_f <- NULL
|
|
|
|
# ── Einstellungen ────────────────────────────────────────────────────────────
|
|
SYNC_AB <- as.Date("2024-01-01")
|
|
|
|
if (as.character(Sys.info())[1] == "Darwin") {
|
|
h2jar <- "/Users/cosw/bin/jameica.app/lib/h2/migration-h2/disabled/h2-1.4.199.jar"
|
|
url <- "jdbc:h2:/Users/cosw/insync/Projekte/Gemeindefinanzen/jameica/hibiscus/h2db/hibiscus;IFEXISTS=TRUE;CIPHER=AES"
|
|
}
|
|
if (as.character(Sys.info())[1] == "Linux") {
|
|
h2jar <- "..."
|
|
url <- "jdbc:h2:/home/cosw/.jameica/hibiscus/h2db/hibiscus;IFEXISTS=TRUE;CIPHER=AES"
|
|
}
|
|
|
|
user <- "hibiscus"
|
|
pw <- "FbvGoL+yJlH1GtUojnC8ZajYuTA= FbvGoL+yJlH1GtUojnC8ZajYuTA="
|
|
|
|
# ── Hibiscus H2 lesen ────────────────────────────────────────────────────────
|
|
if (ok) {
|
|
tryCatch({
|
|
drv <- JDBC("org.h2.Driver", h2jar, identifier.quote = "`")
|
|
con_j <- dbConnect(drv, url, user, pw)
|
|
originaldaten <- dbReadTable(con_j, "UMSATZ")
|
|
dbDisconnect(con_j)
|
|
ok <- nrow(originaldaten) > 0
|
|
error_f <- fehler_add(paste("Hibiscus Daten gelesen:", nrow(originaldaten)), ok, error_f)
|
|
}, error = function(e) {
|
|
ok <<- FALSE
|
|
error_f <<- fehler_add(paste("H2 Fehler:", e$message), FALSE, error_f)
|
|
})
|
|
}
|
|
|
|
# ── Bereits vorhandene IDs ────────────────────────────────────────────────────
|
|
if (ok) {
|
|
vh <- dbxSelect(conn, "SELECT id FROM hibiscus_transactions") %>% pull()
|
|
error_f <- fehler_add(paste("Vorhandene IDs:", length(vh)), TRUE, error_f)
|
|
}
|
|
|
|
# ── Neue Datensätze bestimmen ─────────────────────────────────────────────────
|
|
if (ok) {
|
|
neue_daten <- originaldaten %>%
|
|
filter(!ID %in% vh) %>%
|
|
filter(DATUM >= SYNC_AB) %>%
|
|
rename_with(tolower) %>%
|
|
mutate(
|
|
id = as.integer(id),
|
|
datum = as.character(datum),
|
|
valuta = as.character(valuta)
|
|
)
|
|
|
|
ok <- nrow(neue_daten) > 0
|
|
error_f <- fehler_add(paste("Neue Datensätze:", nrow(neue_daten)), ok, error_f)
|
|
}
|
|
|
|
# ── In SQLite schreiben ───────────────────────────────────────────────────────
|
|
if (ok) {
|
|
dbWriteTable(conn, "hibiscus_transactions", neue_daten, append = TRUE)
|
|
error_f <- fehler_add(
|
|
paste(nrow(neue_daten), "Umsätze gespeichert"), TRUE, error_f
|
|
)
|
|
}
|
|
|
|
error_f
|
|
} |