forked from berhsi/rechnung
Merge branch 'main' of https://git.nr18.space/berhsi/rechnung
This commit is contained in:
commit
bc858aba61
113
rechnung.sh
113
rechnung.sh
|
@ -24,7 +24,7 @@ RUBBER_BIN=$(which rubber 2>/dev/null || echo "rubber")
|
||||||
EXECUTABLES_TO_CHECK="$BC_BIN $TR_BIN $SED_BIN $CUT_BIN $TPUT_BIN $DATE_BIN $PDFLATEX_BIN $RUBBER_BIN"
|
EXECUTABLES_TO_CHECK="$BC_BIN $TR_BIN $SED_BIN $CUT_BIN $TPUT_BIN $DATE_BIN $PDFLATEX_BIN $RUBBER_BIN"
|
||||||
|
|
||||||
GENPDF=""
|
GENPDF=""
|
||||||
if [ -x $RUBBER_BIN ]; then
|
if [ -x "$RUBBER_BIN" ]; then
|
||||||
GENPDF="$RUBBER_BIN -d "
|
GENPDF="$RUBBER_BIN -d "
|
||||||
else
|
else
|
||||||
GENPDF="$PDFLATEX_BIN -halt-on-error "
|
GENPDF="$PDFLATEX_BIN -halt-on-error "
|
||||||
|
@ -58,11 +58,11 @@ LFDNR=""
|
||||||
|
|
||||||
NUMBER_OF_COLORS=$($TPUT_BIN colors)
|
NUMBER_OF_COLORS=$($TPUT_BIN colors)
|
||||||
COLORED_OUTPUT=0
|
COLORED_OUTPUT=0
|
||||||
RED="\\033[1;31m"
|
RED="$(tput bold)$(tput setaf 1)"
|
||||||
GREEN="\\033[1;32m"
|
GREEN="$(tput bold)$(tput setaf 2)"
|
||||||
YELLOW="\\033[1;33m"
|
YELLOW="$(tput bold)$(tput setaf 3)"
|
||||||
BLUE="\\033[1;34m"
|
BLUE="$(tput bold)$(tput setaf 4)"
|
||||||
NORMAL="\\033[0;39m"
|
NORMAL="$(tput bold)$(tput sgr0)"
|
||||||
|
|
||||||
|
|
||||||
# Diverse Checks
|
# Diverse Checks
|
||||||
|
@ -70,7 +70,7 @@ NORMAL="\\033[0;39m"
|
||||||
|
|
||||||
check_readable() {
|
check_readable() {
|
||||||
|
|
||||||
printf "\n[+] Datei \"$1\" ist lesbar ..."
|
printf "\n[+] Datei %s ist lesbar ..." "$1"
|
||||||
if [ -f "$1" ] && [ -r "$1" ]
|
if [ -f "$1" ] && [ -r "$1" ]
|
||||||
then
|
then
|
||||||
print_ok
|
print_ok
|
||||||
|
@ -82,14 +82,14 @@ check_readable() {
|
||||||
|
|
||||||
check_binaries() {
|
check_binaries() {
|
||||||
|
|
||||||
local program=""
|
program=""
|
||||||
local binaries=$*
|
binaries=$*
|
||||||
|
|
||||||
for program in $binaries; do
|
for program in $binaries; do
|
||||||
printf "\n[+] Suche nach Programm $program ..."
|
printf "\n[+] Suche nach Programm %s ..." "$program"
|
||||||
if [ ! -x "$program" ]; then
|
if [ ! -x "$program" ]; then
|
||||||
print_failed
|
print_failed
|
||||||
printf "\n[-] Das Programm \"$program\" wird benötigt, aber nicht gefunden."
|
printf "\n[-] Das Programm \"%s\" wird benötigt, aber nicht gefunden." "$program"
|
||||||
quit 3
|
quit 3
|
||||||
else
|
else
|
||||||
print_ok
|
print_ok
|
||||||
|
@ -99,7 +99,7 @@ check_binaries() {
|
||||||
|
|
||||||
is_option() (
|
is_option() (
|
||||||
|
|
||||||
local line="$*"
|
line="$*"
|
||||||
|
|
||||||
if [ "${line#*=}" != "$line" ]; then
|
if [ "${line#*=}" != "$line" ]; then
|
||||||
return 0
|
return 0
|
||||||
|
@ -114,7 +114,7 @@ is_option() (
|
||||||
print_failed() {
|
print_failed() {
|
||||||
|
|
||||||
if [ "$COLORED_OUTPUT" -eq 1 ]; then
|
if [ "$COLORED_OUTPUT" -eq 1 ]; then
|
||||||
printf "$RED Failed$NORMAL"
|
printf "%s Failed%s" "$RED" "$NORMAL"
|
||||||
else
|
else
|
||||||
printf " Failed"
|
printf " Failed"
|
||||||
fi
|
fi
|
||||||
|
@ -123,7 +123,7 @@ print_failed() {
|
||||||
print_ok() {
|
print_ok() {
|
||||||
|
|
||||||
if [ "$COLORED_OUTPUT" -eq 1 ]; then
|
if [ "$COLORED_OUTPUT" -eq 1 ]; then
|
||||||
printf "$GREEN OK$NORMAL"
|
printf "%s OK%s" "$GREEN" "$NORMAL"
|
||||||
else
|
else
|
||||||
printf " OK"
|
printf " OK"
|
||||||
fi
|
fi
|
||||||
|
@ -131,12 +131,12 @@ print_ok() {
|
||||||
|
|
||||||
print_warn() {
|
print_warn() {
|
||||||
|
|
||||||
local msg=$*
|
msg=$*
|
||||||
|
|
||||||
if [ "$COLORED_OUTPUT" -eq 1 ]; then
|
if [ "$COLORED_OUTPUT" -eq 1 ]; then
|
||||||
echo -e "$YELLOW[-]$NORMAL $msg"
|
echo "$YELLOW[-]$NORMAL $msg"
|
||||||
else
|
else
|
||||||
echo -e "[-] $msg"
|
echo "[-] $msg"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -146,7 +146,7 @@ print_warn() {
|
||||||
trim_line() {
|
trim_line() {
|
||||||
|
|
||||||
set -f
|
set -f
|
||||||
set -- $*
|
set -- "$*"
|
||||||
LINE_BUFFER=$(printf '%s' "$*")
|
LINE_BUFFER=$(printf '%s' "$*")
|
||||||
set +f
|
set +f
|
||||||
}
|
}
|
||||||
|
@ -154,7 +154,7 @@ trim_line() {
|
||||||
trim_key() {
|
trim_key() {
|
||||||
|
|
||||||
set -f
|
set -f
|
||||||
set -- $*
|
set -- "$*"
|
||||||
KEY_BUFFER=$(printf '%s' "$*")
|
KEY_BUFFER=$(printf '%s' "$*")
|
||||||
set +f
|
set +f
|
||||||
}
|
}
|
||||||
|
@ -162,7 +162,7 @@ trim_key() {
|
||||||
trim_value() {
|
trim_value() {
|
||||||
|
|
||||||
set -f
|
set -f
|
||||||
set -- $*
|
set -- "$*"
|
||||||
VALUE_BUFFER=$(printf '%s' "$*")
|
VALUE_BUFFER=$(printf '%s' "$*")
|
||||||
set +f
|
set +f
|
||||||
}
|
}
|
||||||
|
@ -170,7 +170,7 @@ trim_value() {
|
||||||
|
|
||||||
reset_values() {
|
reset_values() {
|
||||||
|
|
||||||
echo -e "\n[+] Initialisiere Felder für Rechnung neu."
|
printf "\n[+] Initialisiere Felder für Rechnung neu."
|
||||||
LINE_BUFFER=""
|
LINE_BUFFER=""
|
||||||
KEY_BUFFER=""
|
KEY_BUFFER=""
|
||||||
VALUE_BUFFER=""
|
VALUE_BUFFER=""
|
||||||
|
@ -187,11 +187,11 @@ reset_values() {
|
||||||
|
|
||||||
set_value() {
|
set_value() {
|
||||||
|
|
||||||
local key=$(echo "$*" | $CUT_BIN -d "=" -f1)
|
key=$(echo "$*" | $CUT_BIN -d "=" -f1)
|
||||||
local value=$(echo "$*" | $CUT_BIN -d "=" -f2)
|
value=$(echo "$*" | $CUT_BIN -d "=" -f2)
|
||||||
|
|
||||||
trim_key $key
|
trim_key "$key"
|
||||||
trim_value $value
|
trim_value "$value"
|
||||||
case $KEY_BUFFER in
|
case $KEY_BUFFER in
|
||||||
kunde) KUNDE="$VALUE_BUFFER";;
|
kunde) KUNDE="$VALUE_BUFFER";;
|
||||||
adresse) ADRESSE="$VALUE_BUFFER";;
|
adresse) ADRESSE="$VALUE_BUFFER";;
|
||||||
|
@ -207,20 +207,20 @@ set_value() {
|
||||||
|
|
||||||
make_invoice() {
|
make_invoice() {
|
||||||
|
|
||||||
local dead_days="14"
|
dead_days="14"
|
||||||
if [ $(date +%u) -gt 5 ]; then
|
if [ "$(date +%u)" -gt 5 ]; then
|
||||||
dead_days="16"
|
dead_days="16"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local month_ascii=$(date '+%B')
|
month_ascii=$(date '+%B')
|
||||||
local inv_day=$(date '+%j')
|
inv_day=$(date '+%j')
|
||||||
local inv_date=$(date '+%Y%m%d')
|
inv_date=$(date '+%Y%m%d')
|
||||||
local inv_dead=$(date -d "+${dead_days}days" '+%d.\\\\,%m.\\\\,%Y')
|
inv_dead=$(date -d "+${dead_days}days" '+%d.\\\\,%m.\\\\,%Y')
|
||||||
local rechnungsnummer="$inv_date--$LFDNR"
|
rechnungsnummer="$inv_date--$LFDNR"
|
||||||
local subject="Rechnung zu $SHORT"
|
subject="Rechnung zu $SHORT"
|
||||||
local filename="$(date '+%Y%m%d')_Rechnung_$(echo "$month_ascii")_$(echo "$KUNDE" | $TR_BIN " " "_").ltx"
|
filename="$(date '+%Y%m%d')_Rechnung_$(echo "$month_ascii")_$(echo "$KUNDE" | $TR_BIN " " "_").ltx"
|
||||||
local buffer="$KUNDE; $ADRESSE"
|
buffer="$KUNDE; $ADRESSE"
|
||||||
local anschrift="$(echo "$buffer" | sed 's/; /\\\\\\\\\\\\\\ /g')"
|
anschrift="$(echo "$buffer" | sed 's/; /\\\\\\\\\\\\\\ /g')"
|
||||||
|
|
||||||
echo "[+] Erstelle Rechnung: $filename"
|
echo "[+] Erstelle Rechnung: $filename"
|
||||||
echo -n "s!#SUBJECT#!" >$SEDFILE; echo "$subject!" >>$SEDFILE
|
echo -n "s!#SUBJECT#!" >$SEDFILE; echo "$subject!" >>$SEDFILE
|
||||||
|
@ -231,11 +231,11 @@ make_invoice() {
|
||||||
echo -n "s!#POSITION#!" >>$SEDFILE; echo "$POSITION!" >>$SEDFILE
|
echo -n "s!#POSITION#!" >>$SEDFILE; echo "$POSITION!" >>$SEDFILE
|
||||||
echo -n "s!#BETRAG#!" >>$SEDFILE; echo "$BETRAG!" >>$SEDFILE
|
echo -n "s!#BETRAG#!" >>$SEDFILE; echo "$BETRAG!" >>$SEDFILE
|
||||||
echo -n "s!#DEADLINE#!" >>$SEDFILE; echo "$inv_dead!" >>$SEDFILE
|
echo -n "s!#DEADLINE#!" >>$SEDFILE; echo "$inv_dead!" >>$SEDFILE
|
||||||
cp $TEMPLATEFILE $filename
|
cp "$TEMPLATEFILE" "$filename"
|
||||||
$SED_BIN -i -f $SEDFILE $filename
|
$SED_BIN -i -f "$SEDFILE" "$filename"
|
||||||
$GENPDF $filename
|
$GENPDF "$filename"
|
||||||
if [ -x $RUBBER_BIN ]; then
|
if [ -x "$RUBBER_BIN" ]; then
|
||||||
$RUBBER_BIN --clean $filename
|
"$RUBBER_BIN" --clean "$filename"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
|
@ -247,8 +247,8 @@ make_invoice() {
|
||||||
|
|
||||||
proced_ini_line() {
|
proced_ini_line() {
|
||||||
|
|
||||||
local line=$*
|
line=$*
|
||||||
local first=$(echo "$line" | cut -c1-1)
|
first=$(echo "$line" | cut -c1-1)
|
||||||
|
|
||||||
# leerzeilen ignorieren
|
# leerzeilen ignorieren
|
||||||
if [ "$line" = "" ]; then
|
if [ "$line" = "" ]; then
|
||||||
|
@ -273,10 +273,10 @@ proced_ini_line() {
|
||||||
|
|
||||||
# alle anderen zeilen
|
# alle anderen zeilen
|
||||||
else
|
else
|
||||||
is_option $line
|
is_option "$line"
|
||||||
if [ $? -eq 0 ]
|
if [ $? -eq 0 ]
|
||||||
then
|
then
|
||||||
set_value $line
|
set_value "$line"
|
||||||
else
|
else
|
||||||
print_warn "Invalid syntax: $line"
|
print_warn "Invalid syntax: $line"
|
||||||
fi
|
fi
|
||||||
|
@ -284,9 +284,10 @@ proced_ini_line() {
|
||||||
}
|
}
|
||||||
|
|
||||||
quit() {
|
quit() {
|
||||||
printf "\n$BLUE"
|
printf "\n"
|
||||||
printf "[-] Exit$NORMAL\n"
|
print "$BLUE"
|
||||||
exit $1
|
printf "[-] Exit%s\n" "$NORMAL"
|
||||||
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -297,24 +298,24 @@ echo "= Rechnung v$PROGRAMM_VERSION ="
|
||||||
echo "==================="
|
echo "==================="
|
||||||
|
|
||||||
# Verschiedene Basic Checks
|
# Verschiedene Basic Checks
|
||||||
if [ -n $NUMBER_OF_COLORS ] && [ "$NUMBER_OF_COLORS" -ge 8 ]; then
|
if [ -n "$NUMBER_OF_COLORS" ] && [ "$NUMBER_OF_COLORS" -ge 8 ]; then
|
||||||
COLORED_OUTPUT=1
|
COLORED_OUTPUT=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $(id -u) -eq 0 ]; then
|
if [ "$(id -u)" -eq 0 ]; then
|
||||||
echo "$0: Das Skript darf nicht als Root ausgeführt werden."
|
echo "$0: Das Skript darf nicht als Root ausgeführt werden."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
check_binaries $EXECUTABLES_TO_CHECK
|
check_binaries "$EXECUTABLES_TO_CHECK"
|
||||||
check_readable $RECHNUNGSFILE
|
check_readable "$RECHNUNGSFILE"
|
||||||
check_readable $TEMPLATEFILE
|
check_readable "$TEMPLATEFILE"
|
||||||
printf "\n"
|
printf "\n"
|
||||||
|
|
||||||
# Kundendatei einlesen und rechnungen erstellen
|
# Kundendatei einlesen und rechnungen erstellen
|
||||||
while IFS= read -r rawline
|
while IFS= read -r rawline
|
||||||
do
|
do
|
||||||
trim_line $rawline
|
trim_line "$rawline"
|
||||||
proced_ini_line $LINE_BUFFER
|
proced_ini_line "$LINE_BUFFER"
|
||||||
done <$RECHNUNGSFILE
|
done < "$RECHNUNGSFILE"
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue