summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2019-10-16 23:09:40 +0200
committerErich Eckner <git@eckner.net>2019-10-16 23:09:40 +0200
commit06b34121a64ba2ad889a676458330f0e4a954e35 (patch)
tree2e439af32f10a5dc5f5eb839aa75de0d8105bc45
parent5f92bc1a6f2d7004c88a9f8a4662d3577052ef36 (diff)
downloadSchraubendatenbank-06b34121a64ba2ad889a676458330f0e4a954e35.tar.xz
Inventur: detailliertere Informationen
-rwxr-xr-xInventur94
1 files changed, 78 insertions, 16 deletions
diff --git a/Inventur b/Inventur
index 5598e2b..1864fea 100755
--- a/Inventur
+++ b/Inventur
@@ -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