diff --git a/R/postings/buchungen_mod.R b/R/postings/buchungen_mod.R index 72e4ba7..0dca1f5 100755 --- a/R/postings/buchungen_mod.R +++ b/R/postings/buchungen_mod.R @@ -193,11 +193,10 @@ buchungenServer <- function(id, conn, r_global) { ## *** Anhänge anzeigen ---- tagList(lapply(seq_len(nrow(att)), function(i) { ext <- tools::file_ext(att$original_name[i]) - filename <- paste0("www/documents/", att$id[i], ".", ext) + filename <- paste0("documents/", att$id[i], ".", ext) ## *** Anhang öffnen ---- observeEvent(input[[paste0("open_att_", att$id[i])]], { - browser() showModal(modalDialog( tags$iframe(src = filename, width = "100%", height = "600px", style = "border:none;"), diff --git a/db/data_transfer.R b/db/data_transfer.R index 0f310c3..cbad19f 100755 --- a/db/data_transfer.R +++ b/db/data_transfer.R @@ -3,11 +3,12 @@ ## Keeps Hibiscus payload fields unchanged ## -library(tidyverse) -library(dbx) -library(RJDBC) -library(DBI) -library(RSQLite) +library("tidyverse") +library("dbx") +library("tools") +library("RJDBC") +library("DBI") +library("RSQLite") source("~/R/rfunc/fehler_add.R") @@ -71,8 +72,8 @@ if (ok) { # Schema creation ---- -if (ok) { - +## * Accounts ---- +if(ok){ exec_sql("CREATE TABLE accounts ( id INTEGER PRIMARY KEY, account_name TEXT NOT NULL, @@ -86,7 +87,32 @@ if (ok) { created_at TEXT, updated_at TEXT );") - + accounts <- dbxSelect(con_f, " + SELECT id, konto, budget_id, bankname, updated_at, created_at, + konto_hibiscus, konto_wiso, kontonummer_bank, notizen, ist_spende + FROM Konten + ") %>% + transmute( + id = as.integer(id), + account_name = konto, + bank_name = bankname, + hibiscus_account_id = as.integer(konto_hibiscus), + budget_id = as.integer(budget_id), + wiso_account = konto_wiso, + bank_account_no = kontonummer_bank, + is_donations = as.integer(ist_spende), + notes = notizen, + created_at = created_at, + updated_at = updated_at + ) + dbWriteTable(con_s, "accounts", accounts, append = TRUE) + ok <- "accounts" %in% dbListTables(con_s) + error_f <- fehler_add("Die Accounts Tabelle wurde erstellt", ok, error_f) +} ## ------------------------------------------------------- 2026-05-12 16:54 + + +## * Budgets Tabelle ---- +if(ok){ exec_sql("CREATE TABLE budgets ( id INTEGER PRIMARY KEY, row_no INTEGER, @@ -96,7 +122,26 @@ if (ok) { created_at TEXT, updated_at TEXT );") - + budgets <- dbxSelect(con_f, " + SELECT id, richtung, bereich, bezeichnung, reihe + FROM Budgets + ") %>% + transmute( + id = as.integer(id), + row_no = as.integer(reihe), + area = bereich, + label = bezeichnung, + direction = richtung, + created_at = format(Sys.time(), ""), + updated_at = format(Sys.time(), "") + ) + dbWriteTable(con_s, "budgets", budgets, append = TRUE) + ok <- "budgets" %in% dbListTables(con_s) + error_f <- fehler_add("Die Budgets Tabelle wurde erstellt", ok, error_f) +} ## ------------------------------------------------------- 2026-05-12 16:57 + +## * Contacts Tabelle ---- +if(ok){ exec_sql("CREATE TABLE contacts ( id INTEGER PRIMARY KEY, first_name TEXT, @@ -122,185 +167,6 @@ if (ok) { created_at TEXT, updated_at TEXT );") - - exec_sql("CREATE TABLE bank_connections ( - id INTEGER PRIMARY KEY, - contact_id INTEGER, - contact_text TEXT, - iban TEXT, - bic TEXT, - bank_name TEXT, - remote_name TEXT, - created_at TEXT, - updated_at TEXT - );") - - exec_sql("CREATE TABLE entries ( - id INTEGER PRIMARY KEY, - contact_id INTEGER, - purpose TEXT, - note TEXT, - remote_name TEXT, - created_at TEXT, - updated_at TEXT - );") - - if (!USE_CENTS) { - exec_sql("CREATE TABLE postings ( - id INTEGER PRIMARY KEY, - entry_id INTEGER NOT NULL, - account_id INTEGER NOT NULL, - valuta TEXT NOT NULL, - booking_date TEXT, - amount NUMERIC NOT NULL, - invoice_no TEXT, - note TEXT, - status TEXT, - waived INTEGER, - bank_transaction_id INTEGER, - wiso_id INTEGER, - receipt_id INTEGER, - project_id INTEGER, - coin_share_amount NUMERIC, - created_at TEXT, - updated_at TEXT - );") - } else { - exec_sql("CREATE TABLE postings ( - id INTEGER PRIMARY KEY, - entry_id INTEGER NOT NULL, - account_id INTEGER NOT NULL, - valuta TEXT NOT NULL, - booking_date TEXT, - amount_cents INTEGER NOT NULL, - invoice_no TEXT, - note TEXT, - status TEXT, - waived INTEGER, - bank_transaction_id INTEGER, - wiso_id INTEGER, - receipt_id INTEGER, - project_id INTEGER, - coin_share_cents INTEGER, - created_at TEXT, - updated_at TEXT - );") - } - - # Hibiscus payload unchanged ---- - exec_sql("CREATE TABLE hibiscus_transactions ( - id INTEGER PRIMARY KEY, - konto_id INTEGER, - empfaenger_konto TEXT, - empfaenger_blz TEXT, - empfaenger_name TEXT, - betrag REAL, - zweck TEXT, - zweck2 TEXT, - zweck3 TEXT, - datum TEXT, - valuta TEXT, - saldo REAL, - primanota INTEGER, - art TEXT, - customerref TEXT, - kommentar TEXT, - checksum REAL, - umsatztyp_id INTEGER, - flags REAL, - gvcode INTEGER, - addkey INTEGER, - txid TEXT, - purposecode TEXT, - endtoendid TEXT, - mandateid TEXT, - empfaenger_name2 TEXT, - creditorid TEXT - );") - - # Attachments ---- - exec_sql("CREATE TABLE attachments ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - entry_id INTEGER, - quittung_id INTEGER, - adress_id INTEGER, - wiso_id INTEGER, - btisch_id TEXT, - original_name TEXT, - kategorie TEXT, - path TEXT NOT NULL, - note TEXT, - created_at TEXT DEFAULT (datetime('now')), - updated_at TEXT DEFAULT (datetime('now')) -);") - - error_f <- fehler_add("Schema created", TRUE, error_f) -} - -# Transfer Accounts ---- - -if (ok) { - accounts <- dbxSelect(con_f, " - SELECT id, konto, budget_id, bankname, updated_at, created_at, - konto_hibiscus, konto_wiso, kontonummer_bank, notizen, ist_spende - FROM Konten - ") %>% - transmute( - id = as.integer(id), - account_name = konto, - bank_name = bankname, - hibiscus_account_id = as.integer(konto_hibiscus), - budget_id = as.integer(budget_id), - wiso_account = konto_wiso, - bank_account_no = kontonummer_bank, - is_donations = as.integer(ist_spende), - notes = notizen, - created_at = created_at, - updated_at = updated_at - ) - - dbWriteTable(con_s, "accounts", accounts, append = TRUE) -} - -if (ok) { - projects <- dbxSelect(con_f, " - SELECT id, projektname, bereich, notiz, jahr, created_at, updated_at from Projekte") %>% - transmute( - id = as.integer(id), - projektname = projektname, - bereich = bereich, - notiz = notiz, - jahr = as.integer(jahr), - created_at = created_at, - updated_at = updated_at - ) - - dbWriteTable(con_s, "projects", projects, append = TRUE) -} - -# Transfer Budgets ---- - -if (ok) { - budgets <- dbxSelect(con_f, " - SELECT id, richtung, bereich, bezeichnung, reihe - FROM Budgets - ") %>% - transmute( - id = as.integer(id), - row_no = as.integer(reihe), - area = bereich, - label = bezeichnung, - direction = richtung, - created_at = format(Sys.time(), ""), - updated_at = format(Sys.time(), "") - ) - - dbWriteTable(con_s, "budgets", budgets, append = TRUE) -} - -# Transfer Contacts - -if (ok) { contacts <- dbxSelect(con_f, " SELECT id, vorname, nachname, strasse, plz, ort, Land, telefon, mobil, email, anrede, geschlecht, spender, mitglied, notiz, @@ -335,11 +201,59 @@ if (ok) { ) dbWriteTable(con_s, "contacts", contacts, append = TRUE) -} + ok <- "contacts" %in% dbListTables(con_s) + error_f <- fehler_add("Die contacts Tabelle wurde erstellt", ok, error_f) +} ## ------------------------------------------------------- 2026-05-12 16:58 -# Transfer Entries ---- +## * Bankverbindungen ---- +if(ok){ + exec_sql("CREATE TABLE bank_connections ( + id INTEGER PRIMARY KEY, + contact_id INTEGER, + contact_text TEXT, + iban TEXT, + bic TEXT, + bank_name TEXT, + remote_name TEXT, + created_at TEXT, + updated_at TEXT + );") + bank_connections <- dbxSelect(con_f, " + SELECT id, adress_id, kontakt, iban, bic, kreditinstitut, + remote_name, created_at, updated_at + FROM Bankverbindungen + ") %>% + transmute( + id = as.integer(id), + contact_id = as.integer(adress_id), + contact_text = kontakt, + iban = iban, + bic = bic, + bank_name = kreditinstitut, + remote_name = remote_name, + created_at = as.character(created_at), + updated_at = as.character(updated_at) + ) + sum(duplicated(bank_connections$id)) + dbWriteTable(con_s, "bank_connections", bank_connections, append = TRUE) + ok <- "bank_connections" %in% dbListTables(con_s) + error_f <- fehler_add( + paste(nrow(bank_connections), "Bankverbindungen übertragen"), TRUE, error_f + ) +} ## ------------------------------------------------------- 2026-05-12 17:00 -if (ok) { + +## * Entries Tabelle ---- +if(ok){ + exec_sql("CREATE TABLE entries ( + id INTEGER PRIMARY KEY, + contact_id INTEGER, + purpose TEXT, + note TEXT, + remote_name TEXT, + created_at TEXT, + updated_at TEXT + );") entries <- dbxSelect(con_f, " SELECT id, adress_id, verwendungszweck, notiz, kontakt, created_at, updated_at FROM trans @@ -354,13 +268,33 @@ if (ok) { created_at = created_at, updated_at = updated_at ) - dbWriteTable(con_s, "entries", entries, append = TRUE) -} + ok <- "entries" %in% dbListTables(con_s) + error_f <- fehler_add("Die entries Tabelle wurde erstellt", ok, error_f) +} ## ------------------------------------------------------- 2026-05-12 17:02 -# Transfer Postings ---- -if (ok) { +## * Postings Tabelle ---- +if(ok){ + exec_sql("CREATE TABLE postings ( + id INTEGER PRIMARY KEY, + entry_id INTEGER NOT NULL, + account_id INTEGER NOT NULL, + valuta TEXT NOT NULL, + booking_date TEXT, + amount NUMERIC NOT NULL, + invoice_no TEXT, + note TEXT, + status TEXT, + waived INTEGER, + bank_transaction_id INTEGER, + wiso_id INTEGER, + receipt_id INTEGER, + project_id INTEGER, + coin_share_amount NUMERIC, + created_at TEXT, + updated_at TEXT + );") postings <- dbxSelect(con_f, " SELECT id, trans_id, konto_id, wertstellung, buchungsdatum, betrag, rechnungsnummer, notiz, status, b_verzicht, umsatz_id, wiso_id, @@ -368,58 +302,86 @@ if (ok) { FROM buchungen ") %>% as_tibble() - - if (!USE_CENTS) { - postings <- postings %>% - transmute( - id = as.integer(id), - entry_id = as.integer(trans_id), - account_id = as.integer(konto_id), - valuta = as.character(wertstellung), - booking_date = as.character(buchungsdatum), - amount = betrag, - invoice_no = rechnungsnummer, - note = notiz, - status = status, - waived = as.integer(b_verzicht), - bank_transaction_id = as.integer(umsatz_id), - wiso_id = as.integer(wiso_id), - receipt_id = as.integer(quittung_id), - project_id = as.integer(projekt_id), - coin_share_amount = betrag_muenzen, - created_at = created_at, - updated_at = updated_at - ) - } else { - postings <- postings %>% - transmute( - id = as.integer(id), - entry_id = as.integer(trans_id), - account_id = as.integer(konto_id), - valuta = as.character(wertstellung), - booking_date = as.character(buchungsdatum), - amount_cents = to_cents(betrag), - invoice_no = rechnungsnummer, - note = notiz, - status = status, - waived = as.integer(b_verzicht), - bank_transaction_id = as.integer(umsatz_id), - wiso_id = as.integer(wiso_id), - receipt_id = as.integer(quittung_id), - project_id = as.integer(projekt_id), - coin_share_cents = to_cents(betrag_muenzen), - created_at = created_at, - updated_at = updated_at - ) - } - + postings <- postings %>% + transmute( + id = as.integer(id), + entry_id = as.integer(trans_id), + account_id = as.integer(konto_id), + valuta = as.character(wertstellung), + booking_date = as.character(buchungsdatum), + amount = betrag, + invoice_no = rechnungsnummer, + note = notiz, + status = status, + waived = as.integer(b_verzicht), + bank_transaction_id = as.integer(umsatz_id), + wiso_id = as.integer(wiso_id), + receipt_id = as.integer(quittung_id), + project_id = as.integer(projekt_id), + coin_share_amount = betrag_muenzen, + created_at = created_at, + updated_at = updated_at + ) dbWriteTable(con_s, "postings", postings, append = TRUE) -} + ok <- "postings" %in% dbListTables(con_s) + error_f <- fehler_add("Die Postings Tabelle wurde erstellt", ok, error_f) +} ## ------------------------------------------------------- 2026-05-12 17:03 -# Daten aus Attachments Tabelle übertragen ---- + +## * Umsatz-Tabelle ---- +if(F){ + exec_sql("CREATE TABLE hibiscus_transactions ( + id INTEGER PRIMARY KEY, + konto_id INTEGER, + empfaenger_konto TEXT, + empfaenger_blz TEXT, + empfaenger_name TEXT, + betrag REAL, + zweck TEXT, + zweck2 TEXT, + zweck3 TEXT, + datum TEXT, + valuta TEXT, + saldo REAL, + primanota INTEGER, + art TEXT, + customerref TEXT, + kommentar TEXT, + checksum REAL, + umsatztyp_id INTEGER, + flags REAL, + gvcode INTEGER, + addkey INTEGER, + txid TEXT, + purposecode TEXT, + endtoendid TEXT, + mandateid TEXT, + empfaenger_name2 TEXT, + creditorid TEXT + );") + + ok <- NA + error_f <- fehler_add("Die Tabelle der Umsätze (Hibiscus) wurde erstellt", ok, error_f) +} ## ------------------------------------------------------- 2026-05-12 17:05 + +## * Attachments Tabelle ---- if(ok){ + exec_sql("CREATE TABLE attachments ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + entry_id INTEGER, + quittung_id INTEGER, + adress_id INTEGER, + wiso_id INTEGER, + btisch_id TEXT, + original_name TEXT, + kategorie TEXT, + path TEXT NOT NULL, + note TEXT, + created_at TEXT DEFAULT (datetime('now')), + updated_at TEXT DEFAULT (datetime('now')) +);") att <- dbxSelect(con_f, "SELECT id, trans_id, quittung_id, wiso_id, btisch_id, - adress_id, ft_dateiname, beschreibung, created_at, updated_at, ft_extension FROM Attachments") %>% + adress_id, ft_dateiname, beschreibung, created_at, updated_at, ft_extension FROM Dokumente") %>% mutate( id = as.integer(id), trans_id = as.integer(trans_id), @@ -437,59 +399,76 @@ if(ok){ original_name = ft_dateiname ) %>% select(-ft_extension) - dbWriteTable(con_s, "Attachments", att, append = T) -} ## ------------------------------------------------------- 2026-03-19 16:38 + dbWriteTable(con_s, "attachments", att, append = T) + ok <- "attachments" %in% dbListTables(con_s) + error_f <- fehler_add("Die Attachments Tabelle wurder erstellt", ok, error_f) +} ## ------------------------------------------------------- 2026-05-12 17:07 -## * Daeien übertragen ---- +## * Projekct - Tabelle ---- if(ok){ - pfad <- "~/Insync/Projekte/Gemeindefinanzen/gemfin-fm/gemfin04/Dokumente/datei/" + exec_sql("CREATE TABLE projects ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + projektname TEXT, + bereich TEXT, + notiz TEXT, + jahr INTEGER, + created_at TEXT DEFAULT (datetime('now')), + updated_at TEXT DEFAULT (datetime('now')) +);") + projects <- dbxSelect(con_f, " + SELECT id, projektname, bereich, notiz, jahr, created_at, updated_at from Projekte") %>% + transmute( + id = as.integer(id), + projektname = projektname, + bereich = bereich, + notiz = notiz, + jahr = as.integer(jahr), + created_at = created_at, + updated_at = updated_at + ) + dbWriteTable(con_s, "projects", projects, append = TRUE) + ok <- "projects" %in% dbListTables(con_s) + error_f <- fehler_add("Die Projekte - Tabelle wurde erstellt", ok, error_f) +} ## ------------------------------------------------------- 2026-05-12 17:08 + + + +## * Dateien übertragen ---- +if(ok){ + pfad <- "~/Documents/workspace/gemfin-fm/gemfin04/Dokumente/datei/" zielpfad <- "~/Documents/workspace/gemfin-shiny/www/documents/" vorhanden <- list.files(pfad, pattern = "pdf") - eintraege <- att$original_name - anz <- length(eintraege) - for(ind in 1:length(eintraege)){ - if( exists(paste0(zielpfad, eintraege[ind])) ){ + eintraege <- att %>% + filter(!is.na(original_name)) %>% + mutate( + ext = file_ext(original_name), + zielname = paste0(zielpfad, id, ".", ext) + ) + anz <- nrow(eintraege) + for(ind in 1:nrow(eintraege)){ + herkunft <- paste0(pfad, eintraege$original_name[ind]) + zielname <- eintraege$zielname[ind] + + if( file.exists(herkunft) ){ cat(ind, " von ", anz, "\n") file.copy( - from = paste0(pfad, vorhanden[ind]), - to = "~/Documents/workspace/gemfin-shiny/www/documents/") + from = herkunft, + to = zielname, + overwrite = F) } } + # Check neue_dateien <- list.files("~/Documents/workspace/gemfin-shiny/www/documents/") length(neue_dateien) - eintraege <- att$original_name + length(eintraege) nv <- att[-which(eintraege %in% neue_dateien),] error_f <- fehler_add("Alle Dateien übertragen", nrow(nv) == 0, error_f) } ## ------------------------------------------------------- 2026-04-28 18:40 -# Transfer Bankverbindungen ---- -if (ok) { - bank_connections <- dbxSelect(con_f, " - SELECT id, adress_id, kontakt, iban, bic, kreditinstitut, - remote_name, created_at, updated_at - FROM Bankverbindungen - ") %>% - transmute( - id = as.integer(id), - contact_id = as.integer(adress_id), - contact_text = kontakt, - iban = iban, - bic = bic, - bank_name = kreditinstitut, - remote_name = remote_name, - created_at = as.character(created_at), - updated_at = as.character(updated_at) - ) - - sum(duplicated(bank_connections$id)) - dbWriteTable(con_s, "bank_connections", bank_connections, append = TRUE) - error_f <- fehler_add( - paste(nrow(bank_connections), "Bankverbindungen übertragen"), TRUE, error_f - ) -} + # Close ---- @@ -498,27 +477,3 @@ dbDisconnect(con_f) print("Migration finished.") - -## * Dateien umbenennen ---- -library("tools") -atts <- dbReadTable(conn, "attachments") -sum(duplicated(atts$id)) == 0 -pfad <- "www/attachments/" -for( ind in 1:nrow(atts)){ - datei <- atts$original_name[ind] - if( file.exists(paste0(pfad, datei)) ){ - # print(ind) - ext <- file_ext(datei) - idwert <- atts$id[ind] - if(is.na(idwert)) break - name_neu <- paste0(idwert,".",ext) - print(name_neu) - file.copy(from = paste0(pfad, datei), to=paste0("www/documents/", name_neu), overwrite = T) - } -} -atts %>% - filter(id == 1379) - -which( "1379.pdf" %in% atts$original_name) - - diff --git a/db/development.sqlite b/db/development.sqlite old mode 100755 new mode 100644 index 75446ae..abb6a35 Binary files a/db/development.sqlite and b/db/development.sqlite differ diff --git a/www/documents/1028.jpg b/www/documents/1028.jpg new file mode 100755 index 0000000..ab78a78 Binary files /dev/null and b/www/documents/1028.jpg differ diff --git a/www/documents/1069.PDF b/www/documents/1069.PDF new file mode 100755 index 0000000..871d5dd Binary files /dev/null and b/www/documents/1069.PDF differ diff --git a/www/documents/1381.pdf b/www/documents/1381.pdf new file mode 100644 index 0000000..5f58350 Binary files /dev/null and b/www/documents/1381.pdf differ diff --git a/www/documents/1382.pdf b/www/documents/1382.pdf new file mode 100644 index 0000000..58c465d Binary files /dev/null and b/www/documents/1382.pdf differ diff --git a/www/documents/1383.pdf b/www/documents/1383.pdf new file mode 100644 index 0000000..54ed82d Binary files /dev/null and b/www/documents/1383.pdf differ diff --git a/www/documents/1384.pdf b/www/documents/1384.pdf new file mode 100644 index 0000000..b2d752a Binary files /dev/null and b/www/documents/1384.pdf differ diff --git a/www/documents/1386.pdf b/www/documents/1386.pdf new file mode 100644 index 0000000..b00afd1 Binary files /dev/null and b/www/documents/1386.pdf differ diff --git a/www/documents/1387.pdf b/www/documents/1387.pdf new file mode 100644 index 0000000..b44dfb0 Binary files /dev/null and b/www/documents/1387.pdf differ diff --git a/www/documents/1388.pdf b/www/documents/1388.pdf new file mode 100644 index 0000000..26dcf4a Binary files /dev/null and b/www/documents/1388.pdf differ diff --git a/www/documents/1389.pdf b/www/documents/1389.pdf new file mode 100644 index 0000000..e22de69 Binary files /dev/null and b/www/documents/1389.pdf differ diff --git a/www/documents/1390.pdf b/www/documents/1390.pdf new file mode 100644 index 0000000..d1d0634 Binary files /dev/null and b/www/documents/1390.pdf differ diff --git a/www/documents/1391.pdf b/www/documents/1391.pdf new file mode 100644 index 0000000..137548a Binary files /dev/null and b/www/documents/1391.pdf differ diff --git a/www/documents/1392.pdf b/www/documents/1392.pdf new file mode 100644 index 0000000..a3d96cf Binary files /dev/null and b/www/documents/1392.pdf differ diff --git a/www/documents/1393.pdf b/www/documents/1393.pdf new file mode 100644 index 0000000..1d0881f Binary files /dev/null and b/www/documents/1393.pdf differ diff --git a/www/documents/1394.pdf b/www/documents/1394.pdf new file mode 100644 index 0000000..3ee3ff3 Binary files /dev/null and b/www/documents/1394.pdf differ diff --git a/www/documents/1395.pdf b/www/documents/1395.pdf new file mode 100644 index 0000000..3d96fa8 Binary files /dev/null and b/www/documents/1395.pdf differ diff --git a/www/documents/1396.pdf b/www/documents/1396.pdf new file mode 100644 index 0000000..39aef11 Binary files /dev/null and b/www/documents/1396.pdf differ diff --git a/www/documents/1397.pdf b/www/documents/1397.pdf new file mode 100644 index 0000000..a82d6f2 Binary files /dev/null and b/www/documents/1397.pdf differ diff --git a/www/documents/1398.pdf b/www/documents/1398.pdf new file mode 100644 index 0000000..a97a2f8 Binary files /dev/null and b/www/documents/1398.pdf differ diff --git a/www/documents/1399.pdf b/www/documents/1399.pdf new file mode 100644 index 0000000..f458441 Binary files /dev/null and b/www/documents/1399.pdf differ diff --git a/www/documents/1400.pdf b/www/documents/1400.pdf new file mode 100644 index 0000000..cb7766e Binary files /dev/null and b/www/documents/1400.pdf differ diff --git a/www/documents/1401.pdf b/www/documents/1401.pdf new file mode 100644 index 0000000..7098529 Binary files /dev/null and b/www/documents/1401.pdf differ diff --git a/www/documents/1402.pdf b/www/documents/1402.pdf new file mode 100644 index 0000000..ab6df35 Binary files /dev/null and b/www/documents/1402.pdf differ diff --git a/www/documents/1403.pdf b/www/documents/1403.pdf new file mode 100644 index 0000000..e0932dc Binary files /dev/null and b/www/documents/1403.pdf differ diff --git a/www/documents/1404.pdf b/www/documents/1404.pdf new file mode 100644 index 0000000..231ae1a Binary files /dev/null and b/www/documents/1404.pdf differ diff --git a/www/documents/1405.pdf b/www/documents/1405.pdf new file mode 100644 index 0000000..5f9b9b1 Binary files /dev/null and b/www/documents/1405.pdf differ diff --git a/www/documents/1406.pdf b/www/documents/1406.pdf new file mode 100644 index 0000000..67a40ec Binary files /dev/null and b/www/documents/1406.pdf differ diff --git a/www/documents/1407.pdf b/www/documents/1407.pdf new file mode 100644 index 0000000..eb36929 Binary files /dev/null and b/www/documents/1407.pdf differ diff --git a/www/documents/1408.pdf b/www/documents/1408.pdf new file mode 100644 index 0000000..774c4b4 Binary files /dev/null and b/www/documents/1408.pdf differ diff --git a/www/documents/1409.pdf b/www/documents/1409.pdf new file mode 100644 index 0000000..0b1c82b Binary files /dev/null and b/www/documents/1409.pdf differ