X-Git-Url: http://git.plutz.net/?a=blobdiff_plain;f=ledgers%2Fiban_assign.sh;fp=ledgers%2Fiban_assign.sh;h=778d279aebe83152f08bc33b80296189b1677a18;hb=207eb8177406ef0cc1f7629337a2c328394ba752;hp=8d9ae99d0ec52585965f64baa7b679b2d0af2c42;hpb=efd5370cddd0cfc4a0e94e7f4ec1792abb7259c6;p=confetti diff --git a/ledgers/iban_assign.sh b/ledgers/iban_assign.sh index 8d9ae99..778d279 100755 --- a/ledgers/iban_assign.sh +++ b/ledgers/iban_assign.sh @@ -1,51 +1,81 @@ #!/bin/sh -. "$_EXEC/pdiread.sh" -. "$_EXEC/session_lock.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;,.;' +} -UIDLIST="$( - pdi_load "$_DATA/vcard/"*.vcf \ - | sed -Ez ' - s/\nBEGIN;:VCARD\n([^\n]+\n)*FN;:([^\n]+)\n([^\n]+\n)*UID;:([^\n]+)\n([^\n]+\n)*END;:VCARD\n/UID:\4 FN:\2/g - ' - echo -)" - -# printf '%s\r\n' "Content-Type: text/plain" "" - -for key in $(POST_KEYS); do case $key in - use_*) - use_iban="${use_iban} ${key#use_} " - ;; -esac; done - -[ "$use_iban" ] && for key in $(POST_KEYS); do case $key in - check_*_*) - iban="${key#check_}" iban="${iban%_*}" - [ ! "${use_iban##* "${iban}" *}" ] && check="${check} ${key#check_} " - ;; -esac; done - -{ printf '[ul .results' - for use in $check; do - iban="${use%_*}" - fn="$(POST "fn_${use}")" - uid="${UIDLIST%% FN:"$fn"${BR}*}" uid="${uid##*${BR}UID:}" - - # cfile="${_DATA}/vcard/${uid}.vcf" - cfile="$(grep -lxF "UID;:${uid}" "${_DATA}/vcard/"*.vcf || grep -lxF "UID:${uid}" "${_DATA}/vcard/"*.vcf)" - if SLOCK "$cfile" >/dev/null; then - card="$(pdi_load "$cfile")" - cnum="$(pdi_count "$card" X-IBAN)" - pdi_update_value "$card" X-IBAN "$((cnum + 1))" "$iban" >"$cfile" - printf '[li .success . [span .name . %s] [span .uid . (UID: %s)] assigned IBAN [span .iban . %s]]' \ - "$(HTML "$fn")" "$(HTML "$uid")" "$(HTML "$iban")" - RELEASE_SLOCK "$cfile" - else - printf '[li .error . [span .name . %s] [span .uid . (UID: %s)] is being edited elsewhere]' - "$(HTML "$fn")" "$(HTML "$uid")" - fi +{ printf ' + [h1 . %s] + [form .ibanassign action="%s/ledgers/set_iban.sh" method=POST + [input type=hidden name=session_id value="%s"] + ' "$(l10n "IBAN Assignments")" "${_BASE}" "$SESSION_ID" + 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 ']' - printf '[a .button href=/ledgers/ . %s]' "$(l10n Back)" -} | yield_page ledgers_assign + l10n_attendant="$(l10n attendant)" + printf %s\\n "$IBAN_ASSIGN" \ + | while read -r state iban data; do + iban="$(UNSTRING "$iban")" + [ ! "$iban" ] && iban="??????????" + printf '[input type=checkbox id="use_%s" name="use_%s" value=true]' "$iban" "$iban" + printf '[fieldset .iban .%s [legend . %s ]' \ + "$state" "$iban" + if [ $state = sure ]; then + for card in $data; do + uid="${card%%/*}" name="$(UNSTRING "${card#*/}")" + printf '[span .card . %s]' "$(HTML "${name}")" + done + : + elif [ $state = guess ]; then + record="$(UNSTRING "${data%% *}")" + cards="${data#* }" + date="${record%% *}" + principal="${record#* * * }" principal="${principal%% *}" + subject="${record#* * * * }" subject="${subject%% *}" + amount="${record#* * * * * }" amount="${amount%% *}" + printf '[p .principal . %s][p .date %s][p .amount %s][p .subject . %s]' \ + "$(UNSTRING "$principal" |HTML)" "$date" "$(credit "$amount")" "$(UNSTRING "$subject" |HTML)" + n=0; for card in $cards; do + n=$((n+1)); uid="${card%%/*}" name="$(UNSTRING "${card#*/}")" + cat <<-EOF + [input type=checkbox id="check_${iban}_$n" name="check_${iban}_$n" value=true checked=checked] + [input .card name="fn_${iban}_$n" value="$(HTML "$name")" .disabled tabindex="-1"] + [label .del for="check_${iban}_$n" . -] + EOF + done + for m in 1 2 3 4 5 6 7 8; do + cat <<-EOF + [input type=checkbox id="check_${iban}_$((n+m))" name="check_${iban}_$((n+m))" value=true] + [input .card name="fn_${iban}_$((n+m))" value="" placeholder="${l10n_attendant}" list="lattendants"] + [label .add for="check_${iban}_$((n+m))" . +] + EOF + done + printf '[label .button for="use_%s" . %s]' "$iban" "$(l10n Accept Suggestions)" + printf '[label .button for="use_%s" . %s]' "$iban" "$(l10n Ignore Suggestions)" + elif [ $state = unknown ]; then + date="${data%% *}" + principal="${data#* * * }" principal="${principal%% *}" + subject="${data#* * * * }" subject="${subject%% *}" + amount="${data#* * * * * }" amount="${amount%% *}" + printf '[p .principal . %s][p .date %s][p .amount %s][p .subject . %s]' \ + "$(UNSTRING "$principal" |HTML)" "$date" "$(credit "$amount")" "$(UNSTRING "$subject" |HTML)" + printf '[input name="check_" type=hidden][input type=hidden][label .del]' + n=0; for m in 1 2 3 4 5 6 7 8; do + cat <<-EOF + [input type=checkbox id="check_${iban}_$((n+m))" name="check_${iban}_$((n+m))" value=false] + [input .card name="fn_${iban}_$((n+m))" value="" placeholder="${l10n_attendant}" list="lattendants"] + [label .add for="check_${iban}_$((n+m))" . +] + EOF + done + printf '[label .button for="use_%s" . %s]' "$iban" "$(l10n Accept Suggestions)" + printf '[label .button for="use_%s" . %s]' "$iban" "$(l10n Ignore Suggestions)" + fi + printf ']' + done + printf '[button type=submit . %s]' "$(l10n Submit Changes)" + printf ' ]' +} | yield_page ledgers