Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # 22dec14abu
- # (c) 7fach GmbH
- (must "Import" Sensitive)
- (de impSum (S)
- (format
- (or (sub? *Sep0 S) (pack S *Sep0))
- 2
- *Sep0
- *Sep3 ) )
- (de *ImpRel
- ("Datum" impDat bulk)
- ("Buchungstext" impVg bulk)
- ("Empfänger / Zahlungspflichtiger" impEz bulk)
- ("Betrag" impSum bulk)
- ("Separater negativer Betrag" impNeg bulk)
- ("Kennzeichen \"H\" und \"S\"" impSH bulk) )
- (de *ImpCs
- "UTF-8"
- "ISO-8859-1"
- "ISO-8859-14"
- "ISO-8859-15"
- "WINDOWS-1252" )
- (de *ImpTxt
- ("{Keine}")
- ("Doppeltes Anführungszeichen (\")" . "\"")
- ("Einfaches Anführungszeichen (')" . "'") )
- (de *ImpFld
- ("{Tab}" . "^I")
- ("{Leer}" . " ")
- ("Komma (,)" . ",")
- ("Semikolon (;)" . ";")
- ("Doppelpunkt (:)" . ":") )
- (menu "Import"
- (form NIL
- (unless *PRG
- (=: gj *GJahr)
- (off *ImpList) )
- (<h3> NIL
- (<id> "Datenimport ")
- (<$> (: obj nm) (: obj))
- " "
- (ht:Prin (gjStr (: gj))) )
- (editButton T)
- (<p> NIL "Hier können sog. CSV-Dateien importiert werden.")
- (<p> NIL "Bitte Daten vor dem Inport in einer Tabellenkalkulation bereinigen. \
- Dabei auf korrekten Zeichensatz und Spaltenzuordnung achten. \
- Die Daten werden von der ersten bis zur letzten Zeile eingelesen." )
- (<p> NIL "Bitte entweder"
- (<ul> NIL
- (<li> NIL "die Datei manuell eintragen bzw. suchen und auswählen,")
- (<li> NIL "oder direkt auf den \"Anzeigen\"-Button ziehen (Drag & Drop).") )
- "Wenn alles in Ordnung ist, anschließend auf \"Importieren\" klicken." )
- (<grid> 3
- (<table> NIL "Spaltenzuordung" '((NIL "Wert") (align "Spalte"))
- (for R *ImpRel
- (<row> NIL
- (ht:Prin (car R))
- (gui '(+E/R +NumField) (cdr R) 2) ) ) )
- (<nbsp> 7)
- (<grid> 2
- "Zeichensatz"
- (gui '(+E/R +TextField) '(impCs bulk) *ImpCs)
- "Text-Trennzeichen"
- (gui '(+E/R +Map +TextField) '(impTxt bulk)
- *ImpTxt
- (mapcar car *ImpTxt) )
- "Feld-Trennzeichen"
- (gui '(+E/R +Map +TextField) '(impFld bulk)
- *ImpFld
- (mapcar car *ImpFld) )
- "Einlesen in umgekehrter Reihenfolge"
- (gui '(+E/R +Checkbox) '(impRev bulk)) ) )
- (----)
- (<grid> 5
- "Aufstellung"
- (gui '(+UpField) 30)
- (=: show (tmp "import.l="))
- (gui 'imp '(+Drop +Button) '(field -1) "Anzeigen"
- '(when (: drop)
- (setq *ImpList
- (in (list "/usr/bin/iconv" "-f" (bulk 'impCs) "-t" "UTF-8" @)
- (make
- (let (Delim (pack (bulk 'impFld) "^J^M") Cnt 0)
- (until (eof)
- (let? Lst
- (make
- (loop
- (and (= "^M" (peek)) (char))
- (T (eol) (char))
- (ifn (= (bulk 'impTxt) (peek))
- (link (till Delim T))
- (char)
- (let S (till (bulk 'impTxt) T)
- (char)
- (while (= (bulk 'impTxt) (peek))
- (setq S (pack S (char) (till (bulk 'impTxt) T)))
- (char) )
- (link S) ) )
- (and (= (bulk 'impFld) (peek)) (char)) ) )
- (let? Dat (and (bulk 'impDat) (expDat (get Lst @)))
- (let
- (Vg (and (bulk 'impVg) (get Lst @))
- Ez (and (bulk 'impEz) (get Lst @))
- Sum (and (bulk 'impSum) (impSum (get Lst @))) )
- (and
- (bulk 'impNeg)
- (impSum (get Lst @))
- (setq Sum (- @)) )
- (and
- (bulk 'impSH)
- (= "S" (get Lst @))
- (setq Sum (- Sum)) )
- (link (list (inc 'Cnt) Dat Vg Ez Sum)) ) ) ) ) ) ) ) )
- (setq *ImpBadSum
- (find '((L) (not (get L 5))) *ImpList) )
- (setq *ImpBadDat
- (find
- '((L) (or (> (cadr L) (gjEnd *GJahr)) (> *GJahr (cadr L))))
- *ImpList ) )
- (when (bulk 'impRev)
- (setq *ImpList (flip *ImpList)) )
- (out (tmp "import.l=")
- (when (or *ImpBadSum *ImpBadDat)
- (<p> "red"
- (<br> "Fehlerhafte Datensätze:")
- (when *ImpBadSum
- (<br> "- Fehlerhafte Beträge vorhanden") )
- (when *ImpBadDat
- (<br> "- Datumswerte außerhalb des Geschäftsjahres") )
- "Bitte zuerst bereinigen.") )
- (<table> 'chart NIL
- (quote
- (align)
- (NIL "Datum")
- (NIL "Buchungstext")
- (NIL "Empfänger / Zahlungspflichtiger")
- (align "Betrag") )
- (for L *ImpList
- (<row>
- (if
- (nand
- (get L 5)
- (>= (gjEnd *GJahr) (cadr L) *GJahr) )
- "red"
- (alternating) )
- (ht:Prin (car L))
- (ht:Prin (datStr (cadr L)))
- (mapc <br> (split (chop (caddr L)) "^J"))
- (ht:Prin (cadddr L))
- (ht:Prin (money (get L 5))) ) ) ) ) ) )
- (<nbsp> 7)
- (gui '(+Able +Button) '(and *ImpList (nor *ImpBadSum *ImpBadDat)) "Importieren"
- '(when *ImpList
- (ask "Die angezeigten Daten importieren?"
- (newUrl '(+BuCo) (: home top 1 obj) (: home top 1 gj)
- 'nm (pack "Neuimport " (datStr (date)) " " (tim$ (time)))
- 'bu (mapcar
- '((L)
- (new (db: +Buch) '(+Buch)
- 'dat (cadr L)
- 'vg (caddr L)
- 'ez (cadddr L)
- 'sum (get L 5)
- 'stg (list NIL (get L 5)) ) )
- *ImpList ) ) ) ) ) ) ) )
- # vi:et:ts=3:sw=3
Add Comment
Please, Sign In to add comment