Bei Positionsbeträgen ab 1.000,00 erhält man die im Titel genannte Fehlermeldung des fp-Pakets. Als deren Folge funktioniert die USt-Berechnung nicht mehr korrekt. Hat jemand eine Lösung?

Open in Online-Editor
Code, hier editierbar zum Übersetzen:
\documentclass[parskip=full-,enlargefirstpage=true]{scrlttr2}
\usepackage[T1]{fontenc}
\usepackage{selinput}
\SelectInputMappings{adieresis={ä},germandbls={ß}}
\usepackage[ngerman]{babel}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{numprint}
\nprounddigits{2}
\usepackage[right]{eurosym}
\usepackage{datatool}
\DTLnewdb{rechnung}
\newcommand\Posten[3]{%
\DTLnewrow{rechnung}
\DTLnewdbentry{rechnung}{Bezeichnung}{#1}
\DTLnewdbentry{rechnung}{Anzahl}{#2}
\DTLnewdbentry{rechnung}{EP}{#3}
{\dtlexpandnewvalue
\FPeval\fpresult{round(#2*#3)(2)}
\DTLnewdbentry{rechnung}{GP}{\fpresult}
}
}
\newcommand\mwst{}
\newenvironment{rechnung}[1]{%
\renewcommand\mwst{#1}%
\DTLcleardb{rechnung}%
}{%
\DTLsumforkeys{rechnung}{GP}{\Zwischensumme}%
\FPeval\MWSt{round(\mwst*\Zwischensumme/100)(2)}%
\FPeval\Summe{round(\Zwischensumme+\MWSt)(2)}%
\xdef\Summe{\Summe}%
\par\centering
\begin{tabularx}{\textwidth}{Xrrr}
\toprule
 
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

gefragt 02 Jun '15, 13:21

TeX-Newb's gravatar image

TeX-Newb
88137
Akzeptiert-Rate: 0%

bearbeitet 04 Jun '15, 15:52

esdd's gravatar image

esdd
17.8k304257


Da scheint irgendetwas bei \DTLsumforkeys schief zu laufen. Ersetze die die Berechnung der Zwischensumme durch

Open in Online-Editor
Code, hier editierbar zum Übersetzen:
\def\Zwischensumme{0}%
\DTLforeach*{rechnung}{\gp=GP}{\FPeval\Zwischensumme{\Zwischensumme+\gp}}%
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

alt text

Code:

Open in Online-Editor
Code, hier editierbar zum Übersetzen:
\documentclass[parskip=full-,enlargefirstpage=true]{scrlttr2}
\usepackage[T1]{fontenc}
\usepackage{selinput}
\SelectInputMappings{adieresis={ä},germandbls={ß}}
\usepackage[ngerman]{babel}
\usepackage{tabularx}
\usepackage{booktabs}
\usepackage{numprint}
\nprounddigits{2}
\usepackage[right]{eurosym}
\usepackage{datatool}
\DTLnewdb{rechnung}
\newcommand\Posten[3]{%
\DTLnewrow{rechnung}
\DTLnewdbentry{rechnung}{Bezeichnung}{#1}
\DTLnewdbentry{rechnung}{Anzahl}{#2}
\DTLnewdbentry{rechnung}{EP}{#3}
{\dtlexpandnewvalue
\FPeval\fpresult{round(#2*#3)(2)}
\DTLnewdbentry{rechnung}{GP}{\fpresult}
}
}
\newcommand\mwst{}
\newenvironment{rechnung}[1]{%
\renewcommand\mwst{#1}%
\DTLcleardb{rechnung}%
}{%
%\DTLsumforkeys{rechnung}{GP}{\Zwischensumme}% liefert Fehler bei Zwischensummen ab 1000
% Alternative
\def\Zwischensumme{0}%
\DTLforeach*{rechnung}{\gp=GP}{\FPeval\Zwischensumme{\Zwischensumme+\gp}}
%
\FPeval\MWSt{round(\mwst*\Zwischensumme/100)(2)}%
\FPeval\Summe{round(\Zwischensumme+\MWSt)(2)}%
 
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Permanenter link

beantwortet 02 Jun '15, 16:11

esdd's gravatar image

esdd
17.8k304257
Akzeptiert-Rate: 62%

bearbeitet 04 Jun '15, 15:50

Da ich ungern einen neuen Thread wegen desselben Themas beginnen möchte, schließe ich nun noch eine Folgefrage an. Wie kommt es, dass im nachfolgenden Beispiel die Zahlenausrichtung nach der Zweiten Position nicht mehr mit den nachfolgenden Zahlen aus der Spalte GP funktioniert und dies scheinbar nur deshalb, weil zusätzlich noch das hyperref Paket geladen wurde?

(04 Jun '15, 02:01) TeX-Newb
1

@TeX-Newb Ich habe Deine "Antwort" in einen Kommentar umgewandelt. Das ist hier etwas anders als in Foren: als Antworten werden hier nur Beiträge betrachtet, die die eigentliche Frage beantworten. Alles andere sind Kommentare zu Fragen oder Antworten.

In dem Fall fehlte nur einfach ein % nach \numprint{\gp}. Ich habe das oben eingefügt.

(04 Jun '15, 15:57) esdd

@esdd ich bin nun im Laufe der Arbeit mit Deiner tollen Lösung noch auf folgendes/n Problem bzw. Erweiterungswunsch gestoßen: Könnte man den Posten Befehl noch um ein optionales viertes Argument ergänzen, um damit in gewissen Fällen manuell die Summe der jeweiligen Zeile setzen zu können, beispielsweise in Fällen, in denen keine Anzahl bzw. kein EP angegeben werden sollen? Ich habe schon etwas mit ifthenelse-Konstrukten herumexperimentiert, bin bislang leider erfolglos geblieben. Ich hoffe, dass meine Frage als Kommentar i.O. ist; wollte kein neues Tonic deswegen aufmachen. Vielen Dank!

(15 Aug '15, 20:26) TeX-Newb

@TeX-Newb: Das ist eigentlich eine neue Frage und sollte auch als solche gestellt werden, was ich hiermit getan habe.

(15 Aug '15, 21:03) saputello

datatool benutzt in Zahlen ein Komma, um tausender Gruppen abzutrennen. D.h. deine Zwischensumme ist 1,000.00. fp mag das verständlicherweise nicht. Du musst also entweder das Komma grundsätzlich unterdrücken:

Open in Online-Editor
\DTLsetnumberchars{}{.}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

oder deine Zwischensumme erstmal in ein für fp verdauliches Format konvertieren:

Open in Online-Editor
Code, hier editierbar zum Übersetzen:
\DTLsumforkeys{rechnung}{GP}{\Zwischensumme}%
\DTLconverttodecimal\Zwischensumme\fpZwischensumme
\FPeval\MWSt{round(\mwst*\fpZwischensumme/100)(2)}%
\FPeval\Summe{round(\fpZwischensumme+\MWSt)(2)}%
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Grundsätzlich habe ich aber Zweifel, ob du die Sache richtig angehst. Drei Argumenten (oder vier wenn man das optionale bei der anderen Antwort hinzunimmt) finde ich schon viel. Und was machst du, wenn du Beträge mit anderem Mehrwertsteuersatz aufführen musst? Oder die Einheit bei der Anzahl?

Außerdem würde ich empfehlen, das fp-Modul von expl3 zu verwenden. Es ist besser dokumentiert und wird auch gewartet.

Permanenter link

beantwortet 16 Aug '15, 18:56

Ulrike%20Fischer's gravatar image

Ulrike Fischer
3.6k23
Akzeptiert-Rate: 52%

Deine Antwort
[Vorschau ausblenden]

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Frage-Themen:

×17
×16
×3

gestellte Frage: 02 Jun '15, 13:21

Frage wurde gesehen: 11,174 Mal

zuletzt geändert: 16 Aug '15, 18:56