Compare commits
22 commits
Author | SHA1 | Date | |
---|---|---|---|
berhsi | 82cbf0a4a7 | ||
qbi | 3364cad3ec | ||
qbi | ef70318e30 | ||
berhsi | d15355b689 | ||
qbi | 2095a4cdca | ||
qbi | bdb15c0e0b | ||
qbi | 7813890db6 | ||
qbi | 691f1ff563 | ||
qbi | feb3b49abb | ||
qbi | 72bdf42172 | ||
qbi | ad5ba83adf | ||
qbi | bb884d5e62 | ||
qbi | 09722922b9 | ||
qbi | 7c5c93444c | ||
qbi | f4e187c048 | ||
qbi | df55d17113 | ||
qbi | bf2ca2c96b | ||
qbi | 8654e69a4a | ||
qbi | 074650c9b0 | ||
qbi | 1c4a695cae | ||
qbi | 7bf85fc94b | ||
qbi | c5fb722e40 |
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
[submodule "rechnung_sty"]
|
||||
path = rechnung_sty
|
||||
url = https://git.nr18.space/qbi/rechnung.sty
|
11
rechnung.ini
11
rechnung.ini
|
@ -1,12 +1,13 @@
|
|||
# file: rechnung.ini
|
||||
#
|
||||
# Bei adresse1 muss am Ende ein Semikolon (;) stehen. Dies sorgt dafür, dass im
|
||||
# Bei adresse1 müssen an jedem Zeilenumbruch zwei Semikola (;;) stehen. Dies sorgt dafür, dass im
|
||||
# LaTeX-Code dies durch zwei Backslashes ersetzt wird.
|
||||
|
||||
[start]
|
||||
kunde=Firma A
|
||||
adresse1= Strasse A; 012345 Stadt A;
|
||||
adresse= Strasse A;; 012345 Stadt A;;
|
||||
anrede=Sehr geehrte Damen und Herren,
|
||||
einleitung=anbei die Rechnung
|
||||
anzahl=1
|
||||
position=Dienstleistung A mit etwas mehr Text
|
||||
short=Leistung A
|
||||
|
@ -16,8 +17,9 @@ lfdnr=1
|
|||
|
||||
[start]
|
||||
kunde=Firma B
|
||||
adresse=Personalabteilung; Frau B; Strasse B; 01234 Stadt B;
|
||||
adresse=Personalabteilung;; Frau B;; Strasse B;; 01234 Stadt B;;
|
||||
anrede=Sehr geehrte Frau B,
|
||||
einleitung=Wie in Vertrag 08/15 vereibart berechne ich
|
||||
anzahl=11
|
||||
position=Dienstleistung B mit mehr noch viel Text
|
||||
short=Leistung B
|
||||
|
@ -27,8 +29,9 @@ lfdnr=1
|
|||
|
||||
[start]
|
||||
kunde=Herr C
|
||||
adresse=Strasse C; 12345 Stadt C;
|
||||
adresse=Strasse C;; 12345 Stadt C;;
|
||||
anrede=Sehr geehrter Herr C,
|
||||
einleitung=anbei die Rechnung
|
||||
anzahl=1
|
||||
position=Dienstleistung C mit ganzen vielen Nebenpositionen damit in der Tabelle mehrere Zeilen sind
|
||||
short=Leistung C
|
||||
|
|
46
rechnung.sh
46
rechnung.sh
|
@ -53,12 +53,11 @@ fi
|
|||
# Variablen definieren
|
||||
# --------------------
|
||||
|
||||
PROGRAMM_NAME=$(basename $0)
|
||||
PROGRAMM_NAME=$(basename "$0")
|
||||
PROGRAMM_VERSION="0.0.1"
|
||||
VERBOSITY=1
|
||||
STY_HOME="$HOME/texmf/tex/latex"
|
||||
STY_RECHNUNG="rechnung.sty"
|
||||
STY_URL="https://github.com/tomka/rechnung"
|
||||
RECHNUNGSFILE="rechnung.ini"
|
||||
TEMPLATEFILE="template.ltx"
|
||||
LCOFILE="absender.lco"
|
||||
|
@ -73,6 +72,7 @@ ADRESSE=""
|
|||
ANREDE=""
|
||||
ANZAHL=""
|
||||
POSITION=""
|
||||
EINLEITUNG=""
|
||||
SHORT=""
|
||||
BETRAG=""
|
||||
LFDNR=""
|
||||
|
@ -119,7 +119,7 @@ print_failed() {
|
|||
else
|
||||
printf " Failed\n"
|
||||
fi
|
||||
if [ ! -z "$msg" ]; then
|
||||
if [ -n "$msg" ]; then
|
||||
print_error "$msg"
|
||||
fi
|
||||
fi
|
||||
|
@ -197,7 +197,7 @@ print_error() {
|
|||
failed_and_exit() {
|
||||
|
||||
print_failed
|
||||
exit $*
|
||||
exit "$*"
|
||||
}
|
||||
|
||||
# Diverse Checks
|
||||
|
@ -227,8 +227,8 @@ check_sty() (
|
|||
# false zurück.
|
||||
|
||||
print_start "Suche nach $STY_RECHNUNG ..."
|
||||
kpsewhich "$STY_RECHNUNG" 2>&1 >/dev/null
|
||||
if [ $? -eq 0 ]; then
|
||||
|
||||
if $KPSEWHICH_BIN "$STY_RECHNUNG" > /dev/null 2>&1 ; then
|
||||
print_ok
|
||||
return 0
|
||||
else
|
||||
|
@ -255,9 +255,9 @@ check_binaries() (
|
|||
quit 3
|
||||
else
|
||||
if [ -h "$program" ]; then
|
||||
program=$(get_link_target $program)
|
||||
program=$(get_link_target "$program")
|
||||
fi
|
||||
if ! which "$program" 2>&1 >/dev/null; then
|
||||
if ! which "$program" > /dev/null 2>&1 ; then
|
||||
print_failed "$program ist nicht im Pfad"
|
||||
fi
|
||||
print_ok
|
||||
|
@ -274,7 +274,7 @@ get_link_target() (
|
|||
program=$1
|
||||
|
||||
while [ -h "$program" ]; do
|
||||
program=$(readlink $program)
|
||||
program=$(readlink "$program")
|
||||
done
|
||||
echo "$program"
|
||||
)
|
||||
|
@ -315,6 +315,9 @@ check_rechnunsdaten() (
|
|||
elif test -z "$POSITION"; then
|
||||
print_failed "Das Feld Position ist leer"
|
||||
return 1
|
||||
elif test -z "$EINLEITUNG"; then
|
||||
print_failed "Das Feld Einleitung ist leer"
|
||||
return 1
|
||||
elif test -z "$SHORT"; then
|
||||
print_failed "Das Feld Short ist leer"
|
||||
return 1
|
||||
|
@ -368,7 +371,7 @@ install_sty() (
|
|||
check_binaries "$GIT_BIN $LATEX_BIN"
|
||||
print_start "Hole Repo von $STY_URL ..."
|
||||
|
||||
if $GIT_BIN clone $STY_URL >/dev/null 2>&1; then
|
||||
if $GIT_BIN clone "$STY_URL" >/dev/null 2>&1; then
|
||||
print_ok
|
||||
cd rechnung
|
||||
mkdir -p "$STY_HOME/rechnung/"
|
||||
|
@ -410,6 +413,7 @@ reset_values() {
|
|||
ANREDE=""
|
||||
ANZAHL=""
|
||||
POSITION=""
|
||||
EINLEITUNG=""
|
||||
SHORT=""
|
||||
BETRAG=""
|
||||
LFDNR=""
|
||||
|
@ -430,6 +434,7 @@ set_value() {
|
|||
anrede) ANREDE="$VALUE_BUFFER";;
|
||||
anzahl) ANZAHL="$VALUE_BUFFER";;
|
||||
position) POSITION="$VALUE_BUFFER";;
|
||||
einleitung) EINLEITUNG="$VALUE_BUFFER";;
|
||||
betrag) BETRAG="$VALUE_BUFFER";;
|
||||
lfdnr) LFDNR="$VALUE_BUFFER";;
|
||||
short) SHORT="$VALUE_BUFFER";;
|
||||
|
@ -445,8 +450,8 @@ make_invoice() (
|
|||
# darin befindlichen platzhalter durch die entsprechenden variablen zu
|
||||
# ersetzen und das ganze zu kompilieren.
|
||||
|
||||
check_rechnunsdaten
|
||||
if [ ! "$?" -eq 0 ]; then
|
||||
|
||||
if ! check_rechnunsdaten ; then
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
@ -455,26 +460,29 @@ make_invoice() (
|
|||
dead_days="16"
|
||||
fi
|
||||
|
||||
# Bei der Ersetzung unten wird jedes ';' durch genau ein '\' ersetzt. Daher ist die Anzahl der ';' wichtig.
|
||||
month_ascii=$(date '+%B')
|
||||
inv_date=$(date '+%Y%m%d')
|
||||
inv_dead=$(date -d "+${dead_days}days" '+%d.\\,%m.\\,%Y')
|
||||
inv_dead=$(date -d "+${dead_days}days" '+%d.;,%m.;,%Y')
|
||||
rechnungsnummer="$inv_date--$LFDNR"
|
||||
subject="Rechnung zu $SHORT"
|
||||
filename="$(date '+%Y%m%d')_Rechnung_${month_ascii}_$(echo "$KUNDE" | $TR_BIN " " "_").ltx"
|
||||
buffer="$KUNDE; $ADRESSE"
|
||||
anschrift="$(echo "$buffer" | sed 's/; /\\\\\\\\\\\\\\ /g')"
|
||||
buffer="$KUNDE;; $ADRESSE"
|
||||
#anschrift=$(echo "$buffer" | sed 's/;/\\\\/g')
|
||||
|
||||
|
||||
print_info "Erstelle Rechnung: $filename"
|
||||
{
|
||||
printf "s!#LCOFILE#!%s!\n" "$LCO"
|
||||
printf "s!#SUBJECT#!%s!\n" "$subject"
|
||||
printf "s!#ANREDE#!%s!\n" "$ANREDE"
|
||||
printf "s!#ANSCHRIFT#!%s!\n" "$anschrift"
|
||||
printf "s!#ANSCHRIFT#!%s!\n" "$(echo "$buffer" | sed 's/;/\\\\/g')"
|
||||
printf "s!#RECHNUNGSNUMMER#!%s!\n" "$rechnungsnummer"
|
||||
printf "s!#ANZAHL#!%s!\n" "$ANZAHL"
|
||||
printf "s!#POSITION#!%s!\n" "$POSITION"
|
||||
printf "s!#EINLEITUNG#!%s!\n" "$EINLEITUNG"
|
||||
printf "s!#BETRAG#!%s!\n" "$BETRAG"
|
||||
printf "s!#DEADLINE#!%s!\n" "$inv_dead"
|
||||
printf "s!#DEADLINE#!%s!\n" "$(echo "$inv_dead" | sed 's/;/\\\\/g')"
|
||||
} >$SEDFILE
|
||||
cp "$TEMPLATEFILE" "$filename"
|
||||
$SED_BIN -i -f "$SEDFILE" "$filename"
|
||||
|
@ -482,7 +490,7 @@ make_invoice() (
|
|||
if ! $GENPDF "$filename" 1>&2 >/dev/null; then
|
||||
print_error "Kompilierung von $filename fehlgeschlagen"
|
||||
logfile=$(echo "$filename" | sed -e s/ltx/log/)
|
||||
print_error "$(grep "Error" $logfile)"
|
||||
print_error "$(grep "Error" "$logfile")"
|
||||
else
|
||||
print_info "Rechnung $filename erfolgreich erstellt"
|
||||
fi
|
||||
|
@ -545,7 +553,7 @@ quit() {
|
|||
# --------------------- #
|
||||
|
||||
# CLI Optionen auswerten
|
||||
while getopts f:hl:qv opt
|
||||
while getopts f:hi:l:qv opt
|
||||
do
|
||||
case $opt in
|
||||
f) RECHNUNGSFILE=$OPTARG;;
|
||||
|
|
1
rechnung_sty
Submodule
1
rechnung_sty
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit 6d0d24599de1cf509ccef42a398d06519f890cc4
|
|
@ -17,7 +17,8 @@ parskip=half,%
|
|||
numericaldate=off,%% Datum numerisch ausgeben
|
||||
refline=narrow,%% Geschaeftszeile im Satzspiegel
|
||||
firstfoot=on,%% Footerbereich
|
||||
#LCOFILE#]{scrlttr2}
|
||||
]{scrlttr2}
|
||||
\LoadLetterOption{#LCOFILE#}
|
||||
\usepackage[ngerman]{babel}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage[T1]{fontenc}
|
||||
|
@ -33,7 +34,7 @@ parskip=half,%
|
|||
\begin{document}
|
||||
\LoadLetterOption{DIN}
|
||||
\makeatletter
|
||||
\@addtoplength[-]{firstfootvpos}{.75cm} % Fuß ein Stück nach oben
|
||||
\addtoplength[-]{firstfootvpos}{.75cm} % Fuß ein Stück nach oben
|
||||
\makeatother
|
||||
|
||||
\setkomavar{firstfoot}{\footnotesize%
|
||||
|
@ -55,9 +56,7 @@ parskip=half,%
|
|||
%% Anrede
|
||||
\opening{#ANREDE#}
|
||||
|
||||
wie besprochen, stelle ich für die Durchführung des Seminars
|
||||
folgende Rechnung.
|
||||
|
||||
#EINLEITUNG#
|
||||
|
||||
\begin{Rechnung}[N]
|
||||
\TrennerAus
|
||||
|
|
Loading…
Reference in a new issue