]> git.plutz.net Git - confetti/blobdiff - ledgers/index.cgi
auto complete in attendant fields
[confetti] / ledgers / index.cgi
index 1313ef843ad720a743f93e64a7965ed184963d0b..87af8b155435e09425c6c25e0004fce8a14593ed 100755 (executable)
@@ -1,5 +1,13 @@
 #!/bin/sh
 
+. "$_EXEC/cgilite/storage.sh"
+. "$_EXEC/pdiread.sh"
+
+credit() {
+  printf '%03i\n' "$1" \
+  | sed -E 's;[0-9]{2}$;d&;; :0 s;([0-9])([0-9]{3}[dm]);\1m\2;; t0; y;dm;,.;'
+}
+
 { printf '
   [form .upload action="%s/ledgers/csv_upload.sh" method="POST" enctype="multipart/form-data"
     [label for=ledger_upload . %s:]
@@ -8,4 +16,58 @@
     [button type="submit" %s]
   ]' \
   "${_BASE}" "$(l10n "Postbank CSV")" "$SESSION_ID" "$(l10n Upload)"
+  printf '
+  [form .ledgers action="%s/ledgers/delete.sh" method=POST
+    [input type=hidden name=session_id value="%s"]
+    [h3 . %s]
+  ' "${_BASE}" "$SESSION_ID" "$(l10n Ledgers)"
+  for ledger in "$_DATA"/ledgers/????-??-??\ -\ ????-??-??\ -\ ????.tbl; do
+    ledger="${ledger##*/}"
+    [ "$ledger" = "????-??-?? - ????-??-?? - ????.tbl" ] && continue
+    printf '[p .ledger . %s [button type=submit name=delete value="%s" . %s]]' \
+           "$(HTML "${ledger% - ????.tbl}")" "$(HTML "$ledger")" "$(l10n delete)"
+  done
+  printf '  ]'
+  printf '
+  [form .ibanassign action="%s/ledgers/iban_assign.sh" method=POST
+    [input type=hidden name=session_id value="%s"]
+    [h3 . %s]
+  ' "${_BASE}" "$SESSION_ID" "$(l10n "IBAN Assignments")"
+  printf '[datalist id=lattendants .'
+  pdi_load "${_DATA}"/vcard/*.vcf |sed -n '/^FN\;:/!b; s;^FN\;:;;; p;' \
+  | while read name; do
+    printf '[option value="%s"]' "$(HTML "$name")"
+  done
+  printf ']'
+  { pdi_load "${_DATA}"/vcard/*.vcf
+    cat "${_DATA}"/ledgers/????-??-??\ -\ ????-??-??\ -\ ????.tbl
+  } | "${_EXEC}"/ledgers/iban_assign.awk \
+  | while read -r state iban data; do
+    printf '[fieldset .iban .%s [legend . %s ]' \
+           "$state" "$iban"
+      if [ $state = sure ]; then
+      :
+    elif [ $state = guess ]; then
+      record="$(UNSTRING "${data%%     *}")"
+      cards="${data#*  }"
+      principal="${record#*    *       *       }" principal="${principal%%     *}"
+      subject="${record#*      *       *       *       }" subject="${subject%% *}"
+      amount="${record#*       *       *       *       *       }" amount="${amount%%   *}"
+      printf '[p .principal . %s][p .amount %s][p .subject . %s]' \
+             "$(UNSTRING "$principal" |HTML)" "$(credit "$amount")" "$(UNSTRING "$subject" |HTML)"
+      printf '[h4 . %s]' "$(l10n Guesses)"
+      for card in $cards; do
+        uid="${card%%/*}" name="$(UNSTRING "${card#*/}")"
+        printf '[input .card key="cardfn" value="%s" placeholder="%s" list=lattendants]' "$(HTML "${name}")" "$(l10n attendent)"
+      done
+    elif [ $state = unknown ]; then
+      principal="${data#*      *       *       }" principal="${principal%%     *}"
+      subject="${data#*        *       *       *       }" subject="${subject%% *}"
+      amount="${data#* *       *       *       *       }" amount="${amount%%   *}"
+      printf '[p .principal . %s][p .amount %s][p .subject . %s]' \
+             "$(UNSTRING "$principal" |HTML)" "$(credit "$amount")" "$(UNSTRING "$subject" |HTML)"
+    fi
+  printf ']'
+  done
+  printf '  ]'
 } | yield_page ledgers