Guest User

Untitled

a guest
May 13th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.16 KB | None | 0 0
  1. # 22dec14abu
  2. # (c) 7fach GmbH
  3.  
  4. (must "Import" Sensitive)
  5.  
  6. (de impSum (S)
  7. (format
  8. (or (sub? *Sep0 S) (pack S *Sep0))
  9. 2
  10. *Sep0
  11. *Sep3 ) )
  12.  
  13. (de *ImpRel
  14. ("Datum" impDat bulk)
  15. ("Buchungstext" impVg bulk)
  16. ("Empfänger / Zahlungspflichtiger" impEz bulk)
  17. ("Betrag" impSum bulk)
  18. ("Separater negativer Betrag" impNeg bulk)
  19. ("Kennzeichen \"H\" und \"S\"" impSH bulk) )
  20.  
  21. (de *ImpCs
  22. "UTF-8"
  23. "ISO-8859-1"
  24. "ISO-8859-14"
  25. "ISO-8859-15"
  26. "WINDOWS-1252" )
  27.  
  28. (de *ImpTxt
  29. ("{Keine}")
  30. ("Doppeltes Anführungszeichen (\")" . "\"")
  31. ("Einfaches Anführungszeichen (')" . "'") )
  32.  
  33. (de *ImpFld
  34. ("{Tab}" . "^I")
  35. ("{Leer}" . " ")
  36. ("Komma (,)" . ",")
  37. ("Semikolon (;)" . ";")
  38. ("Doppelpunkt (:)" . ":") )
  39.  
  40. (menu "Import"
  41. (form NIL
  42. (unless *PRG
  43. (=: gj *GJahr)
  44. (off *ImpList) )
  45. (<h3> NIL
  46. (<id> "Datenimport ")
  47. (<$> (: obj nm) (: obj))
  48. " "
  49. (ht:Prin (gjStr (: gj))) )
  50. (editButton T)
  51. (<p> NIL "Hier können sog. CSV-Dateien importiert werden.")
  52. (<p> NIL "Bitte Daten vor dem Inport in einer Tabellenkalkulation bereinigen. \
  53. Dabei auf korrekten Zeichensatz und Spaltenzuordnung achten. \
  54. Die Daten werden von der ersten bis zur letzten Zeile eingelesen." )
  55. (<p> NIL "Bitte entweder"
  56. (<ul> NIL
  57. (<li> NIL "die Datei manuell eintragen bzw. suchen und auswählen,")
  58. (<li> NIL "oder direkt auf den \"Anzeigen\"-Button ziehen (Drag & Drop).") )
  59. "Wenn alles in Ordnung ist, anschließend auf \"Importieren\" klicken." )
  60. (<grid> 3
  61. (<table> NIL "Spaltenzuordung" '((NIL "Wert") (align "Spalte"))
  62. (for R *ImpRel
  63. (<row> NIL
  64. (ht:Prin (car R))
  65. (gui '(+E/R +NumField) (cdr R) 2) ) ) )
  66. (<nbsp> 7)
  67. (<grid> 2
  68. "Zeichensatz"
  69. (gui '(+E/R +TextField) '(impCs bulk) *ImpCs)
  70. "Text-Trennzeichen"
  71. (gui '(+E/R +Map +TextField) '(impTxt bulk)
  72. *ImpTxt
  73. (mapcar car *ImpTxt) )
  74. "Feld-Trennzeichen"
  75. (gui '(+E/R +Map +TextField) '(impFld bulk)
  76. *ImpFld
  77. (mapcar car *ImpFld) )
  78. "Einlesen in umgekehrter Reihenfolge"
  79. (gui '(+E/R +Checkbox) '(impRev bulk)) ) )
  80. (----)
  81. (<grid> 5
  82. "Aufstellung"
  83. (gui '(+UpField) 30)
  84. (=: show (tmp "import.l="))
  85. (gui 'imp '(+Drop +Button) '(field -1) "Anzeigen"
  86. '(when (: drop)
  87. (setq *ImpList
  88. (in (list "/usr/bin/iconv" "-f" (bulk 'impCs) "-t" "UTF-8" @)
  89. (make
  90. (let (Delim (pack (bulk 'impFld) "^J^M") Cnt 0)
  91. (until (eof)
  92. (let? Lst
  93. (make
  94. (loop
  95. (and (= "^M" (peek)) (char))
  96. (T (eol) (char))
  97. (ifn (= (bulk 'impTxt) (peek))
  98. (link (till Delim T))
  99. (char)
  100. (let S (till (bulk 'impTxt) T)
  101. (char)
  102. (while (= (bulk 'impTxt) (peek))
  103. (setq S (pack S (char) (till (bulk 'impTxt) T)))
  104. (char) )
  105. (link S) ) )
  106. (and (= (bulk 'impFld) (peek)) (char)) ) )
  107. (let? Dat (and (bulk 'impDat) (expDat (get Lst @)))
  108. (let
  109. (Vg (and (bulk 'impVg) (get Lst @))
  110. Ez (and (bulk 'impEz) (get Lst @))
  111. Sum (and (bulk 'impSum) (impSum (get Lst @))) )
  112. (and
  113. (bulk 'impNeg)
  114. (impSum (get Lst @))
  115. (setq Sum (- @)) )
  116. (and
  117. (bulk 'impSH)
  118. (= "S" (get Lst @))
  119. (setq Sum (- Sum)) )
  120. (link (list (inc 'Cnt) Dat Vg Ez Sum)) ) ) ) ) ) ) ) )
  121. (setq *ImpBadSum
  122. (find '((L) (not (get L 5))) *ImpList) )
  123. (setq *ImpBadDat
  124. (find
  125. '((L) (or (> (cadr L) (gjEnd *GJahr)) (> *GJahr (cadr L))))
  126. *ImpList ) )
  127. (when (bulk 'impRev)
  128. (setq *ImpList (flip *ImpList)) )
  129. (out (tmp "import.l=")
  130. (when (or *ImpBadSum *ImpBadDat)
  131. (<p> "red"
  132. (<br> "Fehlerhafte Datensätze:")
  133. (when *ImpBadSum
  134. (<br> "- Fehlerhafte Beträge vorhanden") )
  135. (when *ImpBadDat
  136. (<br> "- Datumswerte außerhalb des Geschäftsjahres") )
  137. "Bitte zuerst bereinigen.") )
  138. (<table> 'chart NIL
  139. (quote
  140. (align)
  141. (NIL "Datum")
  142. (NIL "Buchungstext")
  143. (NIL "Empfänger / Zahlungspflichtiger")
  144. (align "Betrag") )
  145. (for L *ImpList
  146. (<row>
  147. (if
  148. (nand
  149. (get L 5)
  150. (>= (gjEnd *GJahr) (cadr L) *GJahr) )
  151. "red"
  152. (alternating) )
  153. (ht:Prin (car L))
  154. (ht:Prin (datStr (cadr L)))
  155. (mapc <br> (split (chop (caddr L)) "^J"))
  156. (ht:Prin (cadddr L))
  157. (ht:Prin (money (get L 5))) ) ) ) ) ) )
  158. (<nbsp> 7)
  159. (gui '(+Able +Button) '(and *ImpList (nor *ImpBadSum *ImpBadDat)) "Importieren"
  160. '(when *ImpList
  161. (ask "Die angezeigten Daten importieren?"
  162. (newUrl '(+BuCo) (: home top 1 obj) (: home top 1 gj)
  163. 'nm (pack "Neuimport " (datStr (date)) " " (tim$ (time)))
  164. 'bu (mapcar
  165. '((L)
  166. (new (db: +Buch) '(+Buch)
  167. 'dat (cadr L)
  168. 'vg (caddr L)
  169. 'ez (cadddr L)
  170. 'sum (get L 5)
  171. 'stg (list NIL (get L 5)) ) )
  172. *ImpList ) ) ) ) ) ) ) )
  173.  
  174. # vi:et:ts=3:sw=3
Add Comment
Please, Sign In to add comment