Compare commits

...

22 commits

Author SHA1 Message Date
berhsi 82cbf0a4a7 Merge pull request 'Backslash-Korrektur' (#10) from qbi/rechnung:sed-backslash into main
Reviewed-on: #10
2024-02-05 18:33:11 +01:00
qbi 3364cad3ec Überflüssige Semikola im Kommentar gelöscht 2024-02-05 18:29:45 +01:00
qbi ef70318e30 Je ein ';' wird durch einen '\' ersetzt
Neben den Backslashes am Zeilenende gab es Backslashes innerhalb des
Textes.
Beispiel:
- Datum: 05.\,02.\,2024
- Straße: Gitstr.\,42

Mit diesen Backslashes kam die Ersetzung nicht gut zurecht.

Daher habe ich das so geändert, dass jedes Semikolon (';') durch einen
Backslash ersetzt wird. Im Datum und Straßen muss nun auch ein Semikolon
stehen. Damit klappt die Ersetzung besser.
2024-02-05 18:28:42 +01:00
berhsi d15355b689 Merge pull request 'template.ltx angepasst' (#9) from qbi/rechnung:main into main
Reviewed-on: #9
2024-02-04 18:53:37 +01:00
qbi 2095a4cdca Datei gehört nicht hier hin 2024-02-04 18:15:07 +01:00
qbi bdb15c0e0b Letter-Class-Option über eigenen Befehl geladen 2024-02-04 18:06:38 +01:00
qbi 7813890db6 @ entfernt
Das @ zu verwenden ist veraltet. Daher entfernt.
2024-02-04 18:03:00 +01:00
qbi 691f1ff563 Ersetzung der Anschrift geändert
Bisher war die Ersetzung der Anschrift nicht perfekt. Hier wurde teils zuviel
gefressen. Mit der Änderung klappt bei meinen Tests alles. Eventuell muss das
aber nochmal angepasst werden.
2021-10-10 13:40:30 +02:00
qbi feb3b49abb Einleitung eingebaut
Im Text der Rechnung muss es zu Anfang eine Einleitung geben. Dort kann
man auf Verträge, Absprachen, Beauftragungen etc. Bezug nehmen. Ich habe
das gemäß dem Muster der POSITION eingebaut.
2021-10-10 12:15:59 +02:00
qbi 72bdf42172 Quoting korrigiert 2021-07-28 19:29:12 +02:00
qbi ad5ba83adf Variable benutzt 2021-07-28 19:28:07 +02:00
qbi bb884d5e62 Merge branch 'main' of gitea:berhsi/rechnung 2021-07-28 19:26:24 +02:00
qbi 09722922b9 Option i ergänzt 2021-06-06 10:29:38 +02:00
qbi 7c5c93444c Zuerst muss /dev/null kommen 2021-06-06 10:21:54 +02:00
qbi f4e187c048 Doppelte Verneinung entfernt 2021-06-06 10:06:37 +02:00
qbi df55d17113 Variablen quoten 2021-06-06 10:04:24 +02:00
qbi bf2ca2c96b 1 gelöscht
Die einzelnen Felder sind nicht nummeriert. Die "1" war vermutlich ein Artefakt des früheren Formats.
2021-06-06 10:01:01 +02:00
qbi 8654e69a4a Merge branch 'submo-merge' 2021-05-28 23:13:11 +02:00
qbi 074650c9b0 Zu viele Backslashes 2021-05-28 23:02:45 +02:00
qbi 1c4a695cae SEDFILE soll nicht angehangen werden 2021-05-28 23:01:32 +02:00
qbi 7bf85fc94b Installation von rechnung.sty entfernt 2021-05-28 22:55:05 +02:00
qbi c5fb722e40 Submodul rechnung.sty hinzugefügt 2021-05-05 23:18:59 +02:00
5 changed files with 42 additions and 28 deletions

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "rechnung_sty"]
path = rechnung_sty
url = https://git.nr18.space/qbi/rechnung.sty

View file

@ -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

View file

@ -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

@ -0,0 +1 @@
Subproject commit 6d0d24599de1cf509ccef42a398d06519f890cc4

View file

@ -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