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