Umsatz-modul eingebaut, buchen noch nicht getestet
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
# 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
|
||||
}
|
||||
Reference in New Issue
Block a user