Ja, das geht. Ich gebe dabei den Gesamtpreis als optionales (und deshalb erstes) Argument an und setze quasi als Marker bei den Einträgen in die Datenbank als Anzahl die Zeichenfolge `pauschal`. Diese werte ich dann bei der Erstellung der Tabelle wieder aus:
\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[4][]{%
\DTLnewrow{rechnung}%
\DTLnewdbentry{rechnung}{Bezeichnung}{#2}%
\if\relax\detokenize{#1}\relax
\DTLnewdbentry{rechnung}{Anzahl}{#3}%
\DTLnewdbentry{rechnung}{EP}{#4}%
{\dtlexpandnewvalue
\FPeval\fpresult{round(#3*#4)(2)}%
\DTLnewdbentry{rechnung}{GP}{\fpresult}
}
\else
\DTLnewdbentry{rechnung}{Anzahl}{pauschal}%
\DTLnewdbentry{rechnung}{EP}{#4}%
\DTLnewdbentry{rechnung}{GP}{#1}%
\fi
}
\newcommand\mwst{}
\newenvironment{rechnung}[1]{%
\renewcommand\mwst{#1}%
\DTLcleardb{rechnung}%
}{%
% 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)}%
\xdef\Summe{\Summe}%
\par\centering
\begin{tabularx}{\textwidth}{Xrrr}
\toprule
Bezeichnung&Anzahl&Einzelpreis&Gesamtpreis
\DTLforeach*{rechnung}{\bez=Bezeichnung,\anz=Anzahl,\ep=EP,\gp=GP}{%
\DTLiffirstrow{\\\midrule}{\\}%
\bez&\ifstr{\anz}{pauschal}{\anz}{\npnoround\numprint{\anz}\nprounddigits{2}}&\ifstr{\anz}{pauschal}{\ep}{\numprint{\ep}}&\numprint{\gp}%
}\\
\midrule
\if\mwst0\else
Zwischensumme&&&\numprint{\Zwischensumme}\\
Mehrwertsteuer (\mwst\,\%)&&&\numprint{\MWSt}\\
\midrule
\fi
Summe&&&\numprint{\Summe}\\
\bottomrule
\end{tabularx}
\par
}
\setkomavar{fromname}{Max Mustermann}
\setkomavar{fromaddress}{Musterstraße 1\\12345 Musterstadt}
\newkomavar{bank}
\setkomavar{bank}{Meine Bank\\BLZ 123 456 78\\Kontonummer 123 456 789 00}
\renewcommand\raggedsignature{\raggedright}
\begin{document}
\begin{letter}{Firma Freundlich\\Rechnungstraße 12\\45678 Ortsname}
\setkomavar{invoice}{xxyyzz-2013}
\opening{Sehr geehrte Damen und Herren,}
hiermit berechnen wir
\begin{rechnung}{19}
\Posten{Arbeitsstunden}{10}{100.00}
\Posten[50.00]{Gute Laune}{1}{50.00}
\Posten[50.00]{Know How}{}{unbezahlbar}
\Posten[-50.00]{Kaffeepausen}{}{}
\end{rechnung}
Bitte überweisen Sie den Rechnungsbetrag von \EUR{\numprint{\Summe}} unter Angabe von Rechnungsnummer und -datum auf das folgende Konto:
\usekomavar{bank}
\closing{Mit freundlichen Grüßen}
\end{letter}
\end{document}
![Beispielrechnung mit pauschalen Posten][1]
Alternativ könnte man natürlich auch eine Markerspalte verwenden oder statt einer Fallunterscheidung in `\Posten` weitere Befehle wie `\PostenPauschal` definieren.
[1]: http://texwelt.de/wissen/upfiles/test25.png