diff options
-rwxr-xr-x | Inventur | 94 |
1 files changed, 78 insertions, 16 deletions
@@ -83,6 +83,77 @@ frag_aus_Tabelle_ab() { | cut -d' ' -f1 } +zeige_Infos() { + local Barcodes + Barcodes=$( + while read -r bc; do + printf '%s' "${bc}" \ + | base64 -w0 + printf '\n' + done \ + | sed ' + s/^.*$/FROM_BASE64("\0")/ + $! s/$/,/ + ' \ + | tr -d '\n' + ) + { + printf 'SELECT CONCAT(' + printf '`Schrauben`.`Anzahl`,' + printf '"x Schrauben ",' + printf '`Materialien`.`name`,' + printf '" ",' + printf '`Gewindetypen`.`name`,' + printf '" ",' + printf '`Koepfe`.`name`,' + printf '" ",' + printf '`Schrauben`.`Gewindemasz`,' + printf '"x",' + printf '`Schrauben`.`Laenge`' + printf ')' + printf ' FROM `Schrauben`' + printf ' JOIN `Materialien`' + printf ' ON `Schrauben`.`Material`=`Materialien`.`id`' + printf ' JOIN `Koepfe`' + printf ' ON `Schrauben`.`Kopf`=`Koepfe`.`id`' + printf ' JOIN `Gewindetypen`' + printf ' ON `Schrauben`.`Gewindetyp`=`Gewindetypen`.`id`' + printf ' WHERE `Schrauben`.`Barcode` IN (%s);\n' \ + "${Barcodes}" + printf 'SELECT CONCAT(' + printf '`Muttern`.`Anzahl`,' + printf '"x Muttern ",' + printf '`Materialien`.`name`,' + printf '" ",' + printf '`Muttern`.`Gewindemasz`,' + printf '"x",' + printf '`Muttern`.`Dicke`' + printf ')' + printf ' FROM `Muttern`' + printf ' JOIN `Materialien`' + printf ' ON `Muttern`.`Material`=`Materialien`.`id`' + printf ' WHERE `Muttern`.`Barcode` IN (%s);\n' \ + "${Barcodes}" + printf 'SELECT CONCAT(' + printf '`Unterlegscheiben`.`Anzahl`,' + printf '"x Unterlegscheiben ",' + printf '`Materialien`.`name`,' + printf '" ",' + printf '`Unterlegscheiben`.`Gewindemasz`,' + printf '"-",' + printf '`Unterlegscheiben`.`Auszendurchmesser`,' + printf '"x",' + printf '`Unterlegscheiben`.`Dicke`' + printf ')' + printf ' FROM `Unterlegscheiben`' + printf ' JOIN `Materialien`' + printf ' ON `Unterlegscheiben`.`Material`=`Materialien`.`id`' + printf ' WHERE `Unterlegscheiben`.`Barcode` IN (%s);\n' \ + "${Barcodes}" + } \ + | mysql -N +} + tmp_dir=$(mktemp -d) trap 'rm -rf --one-file-system "${tmp_dir}"' EXIT @@ -105,7 +176,10 @@ while { ) if printf '%s\n' "${bekannte_Barcodes}" \ | grep -qxF "${Barcode}"; then - >&2 printf 'ist bekannt\n\n' + >&2 printf 'ist bekannt:\n' + printf '%s\n' "${Barcode}" \ + | zeige_Infos >&2 + >&2 printf '\n' continue fi bekannte_Barcodes=$( @@ -155,22 +229,10 @@ done \ fehlende_Barcodes=$( printf '%s\n' "${bekannte_Barcodes}" "${vorhandene_Barcodes}" "${vorhandene_Barcodes}" \ | sort \ - | uniq -u \ - | while read -r bc; do - printf '%s' "${bc}" \ - | base64 -w0 - printf '\n' - done + | uniq -u ) if [ -n "${fehlende_Barcodes}" ]; then >&2 printf 'Ich vermisse:\n' - for Typ in "${!Spalten[@]}"; do - printf 'SELECT "%s",`%sn`.*' "${Typ}" "${Typ}" - printf ' FROM `%sn`' "${Typ}" - printf ' WHERE `%sn`.`Barcode` IN (' "${Typ}" - printf 'FROM_BASE64("%s"),' ${fehlende_Barcodes} \ - | sed 's@,$@@' - printf ');\n' - done \ - | mysql >&2 + printf '%s\n' ${fehlende_Barcodes} \ + | zeige_Infos >&2 fi |