Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 3d229eb9

Von Marei Peischl vor mehr als 3 Jahren hinzugefügt

  • ID 3d229eb932520febe9d8147cf3413c7b13a23b4b
  • Vorgänger 4ec81d44
  • Nachfolger 424ee46d

marei: adjust indentation using latexindent according to kivitendo regulations 2 spaces instead of 1 tab

Unterschiede anzeigen:

templates/print/marei/bin_list.tex
\setkomavar{title}{\lagerliste}
\setkomavar{firsthead}{
\normalsize
\noindent\begin{tabular}[t]{@{}l@{}}
<%company%>\strut\\
<%address%>
\end{tabular}
\hfill
\begin{tabular}[t]{rr@{}}
Tel & <%tel%>\\
Fax & <%fax%>%
\end{tabular}
\rule{\linewidth}{\heavyrulewidth}
\normalsize
\noindent\begin{tabular}[t]{@{}l@{}}
<%company%>\strut\\
<%address%>
\end{tabular}
\hfill
\begin{tabular}[t]{rr@{}}
Tel & < %tel%>\\
Fax & < %fax%>%
\end{tabular}
\rule{\linewidth}{\heavyrulewidth}
}
\makeatletter
\setkomavar{location}{
\backaddr@format{\scriptsize\usekomafont{backaddress}%
\strut\lieferanschrift
}
\par\medskip\setlength{\parskip}{\z@}
\normalsize
<%shiptoname%>\par
<%if shiptocontact%> <%shiptocontact%><%end if%>\par
<%shiptodepartment_1%>\par
<%shiptodepartment_2%>\par
<%shiptostreet%>\par
<%shiptozipcode%> <%shiptocity%>%
}
\backaddr@format{\scriptsize\usekomafont{backaddress}%
\strut\lieferanschrift
}
\par\medskip\setlength{\parskip}{\z@}
\normalsize
<%shiptoname%>\par
<%if shiptocontact%> <%shiptocontact%><%end if%>\par
<%shiptodepartment_1%>\par
<%shiptodepartment_2%>\par
<%shiptostreet%>\par
<%shiptozipcode%> <%shiptocity%>%
}
\makeatother
\begin{letter}{
<%name%>\ifhmode\\\fi
<%street%>\ifhmode\\\fi
<%zipcode%> <%city%>\ifhmode\\\fi
<%country%>
}
<%name%>\ifhmode\\\fi
<%street%>\ifhmode\\\fi
<%zipcode%> <%city%>\ifhmode\\\fi
<%country%>
}
\opening{}
\begin{SimpleTabular}[colspec=*6X,headline={\bfseries\bestellnummer&\bfseries\datum&\bfseries\kontakt
<%if warehouse%>%
&\bfseries\lager%
<%end warehouse%>%
&\bfseries\lagerplatz&\bfseries\lieferungMit}]
<%if warehouse%>%
&\bfseries\lager%
<%end warehouse%>%
&\bfseries\lagerplatz&\bfseries\lieferungMit}]
<%ordnumber%>%
&%
<%if shippingdate%>%
<%shippingdate%>%
<%shippingdate%>%
<%end shippingdate%>%
<%if not shippingdate%>%
<%orddate%>%
<%orddate%>%
<%end shippingdate%>%
& <%employee%>%
<%if warehouse%>%
......
\bigskip
\begin{SimpleTabular}[colspec=rlXllrrll,headline={\bfseries\position&\bfseries\nummer&\bfseries\beschreibung&\bfseries\seriennummer & &\bfseries\menge&\bfseries\erh&&\bfseries\lagerplatz}]
<%foreach number%>%
<%foreach number%>%
<%runningnumber%> & <%number%> & <%description%> & <%serialnumber%> &
<%deliverydate%> & <%qty%> & <%ship%> & <%unit%> & <%bin%> \\
<%end number%>%
<%end number%>%
\end{SimpleTabular}
\end{letter}
templates/print/marei/check.tex
\begin{document}
\begin{letter}{
<%name%>\ifhmode\\\fi
<%street%>\ifhmode\\\fi
<%zipcode%> <%city%>\ifhmode\\\fi
<%country%>%
}
<%name%>\ifhmode\\\fi
<%street%>\ifhmode\\\fi
<%zipcode%> <%city%>\ifhmode\\\fi
<%country%>%
}
\opening{<%company%>}
\pagestyle{empty}
......
<%name%> \hfill <%datepaid%> \hfill <%source%>%
\begin{SimpleTabular}[colspec=lXrr,headline={\bfseries\rechnung&\bfseries\ausgestellt&\bfseries\faellig&\bfseries\verrechnet}]
<%foreach invnumber%>%
<%invnumber%> & <%invdate%> & <%due%> & <%paid%> \\
<%end invnumber%>%
<%foreach invnumber%>%
<%invnumber%> & <%invdate%> & <%due%> & <%paid%> \\
<%end invnumber%>%
\end{SimpleTabular}
\end{letter}
templates/print/marei/credit_note.tex
\begin{document}
\begin{letter}{
<%name%>\strut\\
<%if department_1%><%department_1%>\\<%end if%>%
<%if department_2%><%department_2%>\\<%end if%>%
<%cp_givenname%> <%cp_name%>\strut\\
<%street%>\strut\\
<%zipcode%> <%city%>\strut\\
<%country%> \strut
}
<%name%>\strut\\
<%if department_1%><%department_1%>\\<%end if%>%
<%if department_2%><%department_2%>\\<%end if%>%
<%cp_givenname%> <%cp_name%>\strut\\
<%street%>\strut\\
<%zipcode%> <%city%>\strut\\
<%country%> \strut
}
% Bei Kontaktperson Anrede nach Geschlecht unterscheiden.
% Bei natürlichen Personen persönliche Anrede, sonst allgemeine Anrede.
\opening{
\Ifstr{<%cp_name%>}{}
{<%if natural_person%><%greeting%> <%name%>,<%else%>\anrede<%end if%>}
{
\Ifstr{<%cp_gender%>}{f}
{\anredefrau}
{\anredeherr}
<%cp_title%> <%cp_name%>,
}
}
\Ifstr{<%cp_name%>}{}
{<%if natural_person%><%greeting%> <%name%>,<%else%>\anrede<%end if%>}
{
\Ifstr{<%cp_gender%>}{f}
{\anredefrau}
{\anredeherr}
<%cp_title%> <%cp_name%>,
}
}
\thispagestyle{kivitendo.letter.first}
\gutschriftformel
\begin{PricingTabular*}%
% eigentliche Tabelle%
\FakeTable{%
<%foreach number%>%
<%runningnumber%> &%
<%number%> &%
\textbf{<%description%>}%
<%if longdescription%>\ExtraDescription{<%longdescription%>}<%end longdescription%>%
<%if serialnumber%>\ExtraDescription{\seriennummer: <%serialnumber%>}<%end serialnumber%>%
<%if ean%>\ExtraDescription{\ean: <%ean%>}<%end ean%>%
<%if projectnumber%>\ExtraDescription{\projektnummer: <%projectnumber%>}<%end projectnumber%>%
&%
<%qty%> <%unit%> &%
<%sellprice%>&%
\Ifstr{<%p_discount%>}{0}{}{\sffamily\scriptsize{(-<%p_discount%>\,\%)}}%
<%linetotal%>\tabularnewline%
<%end number%>%
}%
\begin{PricingTotal}%
% Tabellenende letzte Seite
\nettobetrag & <%subtotal%>\\%
<%foreach tax%>%
<%taxdescription%> & <%tax%>\\%
<%end tax%>%
\bfseries\schlussbetrag & \bfseries <%ordtotal%>\\%
\end{PricingTotal}%
% eigentliche Tabelle%
\FakeTable{%
<%foreach number%>%
<%runningnumber%> &%
<%number%> &%
\textbf{<%description%>}%
<%if longdescription%>\ExtraDescription{<%longdescription%>}<%end longdescription%>%
<%if serialnumber%>\ExtraDescription{\seriennummer: <%serialnumber%>}<%end serialnumber%>%
<%if ean%>\ExtraDescription{\ean: <%ean%>}<%end ean%>%
<%if projectnumber%>\ExtraDescription{\projektnummer: <%projectnumber%>}<%end projectnumber%>%
&%
<%qty%> <%unit%> &%
<%sellprice%>&%
\Ifstr{<%p_discount%>}{0}{}{\sffamily\scriptsize{(-<%p_discount%>\,\%)}}%
<%linetotal%>\tabularnewline%
<%end number%>%
}%
\begin{PricingTotal}%
% Tabellenende letzte Seite
\nettobetrag & <%subtotal%>\\%
<%foreach tax%>%
<%taxdescription%> & <%tax%>\\%
<%end tax%>%
\bfseries\schlussbetrag & \bfseries <%ordtotal%>\\%
\end{PricingTotal}%
\end{PricingTabular*}
<%if notes%>%
templates/print/marei/ic_supply.tex
\vspace{0.4cm}
{\color{purple} Bitte unterschreiben und faxen/mailen an:
\begin{center} <%employee_fax%> / <%employee_email%> \end{center}}
\begin{center} <%employee_fax%> / <%employee_email%> \end{center}}
\normalsize
\vspace{0.4cm}
<%name%>, <%street%>, <%zipcode%> <%city%>, <%country%>\hspace*{\fill}\\
......
im\\
\uline{ \StrGobbleLeft{<%reqdate%>}{3} \hspace*{\fill}}\\
{\color{gray}(Monat und Jahr des Erhalts des Liefergegenstands im Mitgliedstaat, in den der Liefergegenstand gelangt ist, wenn der liefernde Unternehmer den Liefergegenstand befördert oder versendet hat oder wenn der Abnehmer den Liefergegenstand versendet hat)}\\
{\color{gray}(Monat und Jahr des Erhalts des Liefergegenstands im Mitgliedstaat, in den der Liefergegenstand gelangt ist, wenn der liefernde Unternehmer den Liefergegenstand befördert oder versendet hat oder wenn der Abnehmer den Liefergegenstand versendet hat)}\\
\TextField[name=delivery, bordercolor=gray, width=\linewidth]{}\\
......
\uline{<%country%>\hspace*{\fill}}\\
{\color{gray}(Mitgliedstaat und Ort, wohin der Liefergegenstand im Rahmen einer Beförderung oder Versendung gelangt ist)}\\
{\color{gray}(Mitgliedstaat und Ort, wohin der Liefergegenstand im Rahmen einer Beförderung oder Versendung gelangt ist)}\\
erhalten habe / gelangt ist.
templates/print/marei/ic_supply_EN.tex
\vspace{0.4cm}
{\color{purple} Please sign below and send back to fax-number/mail-address:
\begin{center} <%employee_fax%> / <%employee_email%> \end{center}}
\begin{center} <%employee_fax%> / <%employee_email%> \end{center}}
\normalsize
\vspace{0.4cm}
......
in\\
\uline{ \StrGobbleLeft{<%reqdate%>}{3} \hspace*{\fill}}\\
{\color{gray}(Month and year the object of the supply was received in the Member State of entry if the supplying trader transported or dispatched the object of the supply or if the customer dispatched the object of the supply)}\\
{\color{gray}(Month and year the object of the supply was received in the Member State of entry if the supplying trader transported or dispatched the object of the supply or if the customer dispatched the object of the supply)}\\
\TextField[name=delivery, bordercolor=gray, width=\linewidth]{}\\
{\color{gray}(Month and year the transportation ended if the customer transported the object of the supply himself or herself)}\\
......
in / at \textsuperscript{1)}\\
\uline{<%country%>\hspace*{\fill}}\\
{\color{gray}(Member State and place of entry as part of the transport or dispatch of the object)}\\
{\color{gray}(Member State and place of entry as part of the transport or dispatch of the object)}\\
% X\TextField[name=delivery, bordercolor=gray, width=\linewidth]{}\\
templates/print/marei/insettings.tex
\makeatletter
\Ifstr{\lxlangcode}{EN}{
\main@language{english}
\input{english.tex}}{
\Ifstr{\lxlangcode}{DE}{
\main@language{ngerman}
\input{deutsch.tex}}{\input{deutsch.tex}}
\main@language{english}
\input{english.tex}}{
\Ifstr{\lxlangcode}{DE}{
\main@language{ngerman}
\input{deutsch.tex}}{\input{deutsch.tex}}
} % Ende EN
% Mandanten-/Firmenabhängigkeiten
......
% \identpath/<euro/chf/usd/default>_account.tex
\@ifundefined{lxcurrency}{}{
\setupCurrencyConfig{\identpath}{\lxcurrency}
\setupCurrencyConfig{\identpath}{\lxcurrency}
}
% Befehl f. normale Schriftart und -größe
\KOMAoptions{
fontsize=10pt,
parskip=half-,% Absatzkennzeichnung durch Abstand statt Einzug
fontsize=10pt,
parskip=half-,% Absatzkennzeichnung durch Abstand statt Einzug
}
% Hier ist es auch möglich zusätzliche Schriftarten zu laden.
%
......
% % \ifoot{<inhalt innen/links>}\cfoot{<inhalt zentriert>}\ofoot{<inhalt außen/rechts>}
% dann sollte jedoch darauf geachtet werden, dass das Makro in den einzelnen Vorlagen aufgerufen wird und daher definiert sein sollte.
\newcommand{\ourhead}[5] {
\chead{
\makebox[\textwidth]{
\Ifstr{#1}{}{}{#1: #2 \hspace{0.7cm}}
#3
\Ifstr{#4}{}{}{~\nr: #4}
\Ifstr{#5}{}{}{\vom ~ #5}
\hspace{0.7cm} - \seite ~ \thepage/\letterlastpage ~-%
}
}
\chead{
\makebox[\textwidth]{
\Ifstr{#1}{}{}{#1: #2 \hspace{0.7cm}}
#3
\Ifstr{#4}{}{}{~\nr: #4}
\Ifstr{#5}{}{}{\vom ~ #5}
\hspace{0.7cm} - \seite ~ \thepage/\letterlastpage ~-%
}
}
}
%Ende Anpassungen der Kopfzeile
......
%Box generieren, um die Höhe des Fußes zu kennen, damit ist eine automatische Anpassung des unteren Randes möglich
\if@kivi@footer
\newsavebox\footerbox
\begin{lrbox}\footerbox
\usekomafont{pagefoot}%
% Anfang des eigentlichen Inhaltes der Fußzeile
\begin{tabular*}{\textwidth}[t]{@{\extracolsep{\fill}}p{.25\linewidth}p{.25\linewidth}r@{\extracolsep{0pt}\hspace{2\tabcolsep}}l@{}}%
\firma & \email & \textKontonummer & \kontonummer \\
\strasse & \homepage & \textBank & \bank \\
\ort & \textUstid\ \ustid & \textIban & \iban \\
\textTelefon~\telefon & \finanzamt & \textBic & \bic \\
\Ifstr{\fax}{}{}{\textFax~\fax} & &\textBankleitzahl & \bankleitzahl
\end{tabular*}
% Ende des Fußzeileninhaltes.
\end{lrbox}
%Box in den Fuß eintragen, durch die zusätzliche Angabe in der eckigen Klammer, wird die Fußzeile auch auf der ersten Seite verwendet, falls für die erste Seite eine unterschiedliche Fußzeile verwendet werden soll, ist es möglich den obigen Mechanismus mit einem anderen Makronamen als footerbox zu kopieren
\cfoot[\usebox\footerbox]{\usebox\footerbox}
%Fußhöhe auf Höhe der Box
%Automatische Anpassung des unteren Randes
\setlength{\footheight}{\dimexpr\ht\footerbox+\dp\footerbox}
\setlength{\footskip}{\dimexpr\footheight+\baselineskip}
\geometry{
includefoot,
% bottom=1cm,% Falls der untere Rand kleiner sein soll, als die Seitenränder.
% Weitere Anpassungen der Ränder sind hier ebenfalls möglich
}
\newsavebox\footerbox
\begin{lrbox}\footerbox
\usekomafont{pagefoot}%
% Anfang des eigentlichen Inhaltes der Fußzeile
\begin{tabular*}{\textwidth}[t]{@{\extracolsep{\fill}}p{.25\linewidth}p{.25\linewidth}r@{\extracolsep{0pt}\hspace{2\tabcolsep}}l@{}}%
\firma & \email & \textKontonummer & \kontonummer \\
\strasse & \homepage & \textBank & \bank \\
\ort & \textUstid\ \ustid & \textIban & \iban \\
\textTelefon~\telefon & \finanzamt & \textBic & \bic \\
\Ifstr{\fax}{}{}{\textFax~\fax} & &\textBankleitzahl & \bankleitzahl
\end{tabular*}
% Ende des Fußzeileninhaltes.
\end{lrbox}
%Box in den Fuß eintragen, durch die zusätzliche Angabe in der eckigen Klammer, wird die Fußzeile auch auf der ersten Seite verwendet, falls für die erste Seite eine unterschiedliche Fußzeile verwendet werden soll, ist es möglich den obigen Mechanismus mit einem anderen Makronamen als footerbox zu kopieren
\cfoot[\usebox\footerbox]{\usebox\footerbox}
%Fußhöhe auf Höhe der Box
%Automatische Anpassung des unteren Randes
\setlength{\footheight}{\dimexpr\ht\footerbox+\dp\footerbox}
\setlength{\footskip}{\dimexpr\footheight+\baselineskip}
\geometry{
includefoot,
% bottom=1cm,% Falls der untere Rand kleiner sein soll, als die Seitenränder.
% Weitere Anpassungen der Ränder sind hier ebenfalls möglich
}
\fi
% Ende Anpassungen der Fußzeile
templates/print/marei/invoice.tex
\begin{document}
\begin{letter}{
<%name%>\strut\\
<%if department_1%><%department_1%>\\<%end if%>%
<%if department_2%><%department_2%>\\<%end if%>%
<%cp_givenname%> <%cp_name%>\strut\\
<%street%>\strut\\
<%zipcode%> <%city%>\strut\\
<%country%> \strut
}
<%name%>\strut\\
<%if department_1%><%department_1%>\\<%end if%>%
<%if department_2%><%department_2%>\\<%end if%>%
<%cp_givenname%> <%cp_name%>\strut\\
<%street%>\strut\\
<%zipcode%> <%city%>\strut\\
<%country%> \strut
}
% Bei Kontaktperson Anrede nach Geschlecht unterscheiden.
% Bei natürlichen Personen persönliche Anrede, sonst allgemeine Anrede.
\opening{
\Ifstr{<%cp_name%>}{}
{<%if natural_person%><%greeting%> <%name%>,<%else%>\anrede<%end if%>}
{
\Ifstr{<%cp_gender%>}{f}
{\anredefrau}
{\anredeherr}
<%cp_title%> <%cp_name%>,
}
}
\Ifstr{<%cp_name%>}{}
{<%if natural_person%><%greeting%> <%name%>,<%else%>\anrede<%end if%>}
{
\Ifstr{<%cp_gender%>}{f}
{\anredefrau}
{\anredeherr}
<%cp_title%> <%cp_name%>,
}
}
\thispagestyle{kivitendo.letter.first}
<%if notes%>%
<%notes%>%
\vspace{0.5cm}
<%notes%>%
\vspace{0.5cm}
<%end if%>%
......
% amount = 1cm, % Setzt die Breite der Mengenspalte auf 1cm
% desc/header = Artikelbeschreibung, %Ändert die Überschrift der Bezeichnunsspalte in „Artikelbeschreibung”
\begin{PricingTabular*}%
% eigentliche Tabelle
\FakeTable{%
<%foreach number%>%
<%runningnumber%> &%
<%number%> &%
\textbf{<%description%>}%
<%if longdescription%>\ExtraDescription{<%longdescription%>}<%end longdescription%>%
<%if serialnumber%>\ExtraDescription{\seriennummer: <%serialnumber%>}<%end serialnumber%>%
<%if ean%>\ExtraDescription{\ean: <%ean%>}<%end ean%>%
<%if projectnumber%>\ExtraDescription{\projektnummer: <%projectnumber%>}<%end projectnumber%>%
&%
<%qty%> <%unit%> &%
<%sellprice%>&%
\Ifstr{<%p_discount%>}{0}{}{\sffamily\scriptsize{(-<%p_discount%>\,\%)}}%
<%linetotal%>\tabularnewline%
<%end number%>%
}%
\begin{PricingTotal}%
% Tabellenende letzte Seite
\nettobetrag & <%subtotal%>\\%
<%foreach tax%>%
<%taxdescription%> & <%tax%>\\%
<%end tax%>%
\bfseries\schlussbetrag & \bfseries <%invtotal%>\\%
\end{PricingTotal}%
% eigentliche Tabelle
\FakeTable{%
<%foreach number%>%
<%runningnumber%> &%
<%number%> &%
\textbf{<%description%>}%
<%if longdescription%>\ExtraDescription{<%longdescription%>}<%end longdescription%>%
<%if serialnumber%>\ExtraDescription{\seriennummer: <%serialnumber%>}<%end serialnumber%>%
<%if ean%>\ExtraDescription{\ean: <%ean%>}<%end ean%>%
<%if projectnumber%>\ExtraDescription{\projektnummer: <%projectnumber%>}<%end projectnumber%>%
&%
<%qty%> <%unit%> &%
<%sellprice%>&%
\Ifstr{<%p_discount%>}{0}{}{\sffamily\scriptsize{(-<%p_discount%>\,\%)}}%
<%linetotal%>\tabularnewline%
<%end number%>%
}%
\begin{PricingTotal}%
% Tabellenende letzte Seite
\nettobetrag & <%subtotal%>\\%
<%foreach tax%>%
<%taxdescription%> & <%tax%>\\%
<%end tax%>%
\bfseries\schlussbetrag & \bfseries <%invtotal%>\\%
\end{PricingTotal}%
\end{PricingTabular*}
\vspace{0.2cm}
\Ifstr{<%deliverydate%>}{}{}{%
\leistungsdatumGleichRechnungsdatum%
\leistungsdatumGleichRechnungsdatum%
}{
\lieferungErfolgtAm ~<%deliverydate%>.
\lieferungErfolgtAm ~<%deliverydate%>.
}\\
<%if payment_terms%>%
\zahlung ~<%payment_terms%>\\
\zahlung ~<%payment_terms%>\\
<%end payment_terms%>%
<%if delivery_term%>%
\lieferung ~<%delivery_term.description_long%>\\
\lieferung ~<%delivery_term.description_long%>\\
<%end delivery_term%>%
<%if ustid%>\ihreustid ~<%ustid%>.\\<%end if%>%
\ifnum<%taxzone_id%>=1
\steuerfreiEU\\ % EU mit USt-ID Nummer
\steuerfreiEU\\ % EU mit USt-ID Nummer
\else
\ifnum<%taxzone_id%>=3
\steuerfreiAUS\\ % Außerhalb EU
\fi
\ifnum<%taxzone_id%>=3
\steuerfreiAUS\\ % Außerhalb EU
\fi
\fi
\closing{\gruesse}
templates/print/marei/kiviletter.sty
\KOMAoptions{fontsize=12pt}
% Schriftart, Eingabelayout der Tastatur
\ifPDFTeX
\RequirePackage[utf8]{inputenc}% Nur notwendig, wenn Basis älter als TL2018
\RequirePackage[T1]{fontenc}
\RequirePackage{lmodern}
\RequirePackage[utf8]{inputenc}% Nur notwendig, wenn Basis älter als TL2018
\RequirePackage[T1]{fontenc}
\RequirePackage{lmodern}
\RequirePackage{eurosym}
\DeclareUnicodeCharacter{20AC}{\euro}
\RequirePackage{eurosym}
\DeclareUnicodeCharacter{20AC}{\euro}
\else
\RequirePackage{fontspec}
\RequirePackage{fontspec}
\fi
\RequirePackage{xltabular}
......
\RequirePackage[fromlogo,fromalign=right,
firstfoot=false,%Für einheitliche Randeinstellungen
refline=nodate,
]{scrletter}
]{scrletter}
\LoadLetterOption{DIN}
\newkomavar{transaction}
......
\DeclareNewLayer[
foreground,
hoffset=\useplength{toaddrhpos},
voffset=\dimexpr\useplength{toaddrvpos}+\useplength{toaddrheight}+4\baselineskip,%sep to shippingaddressbox
contents={\usebox\shippingAddressBox}
foreground,
hoffset=\useplength{toaddrhpos},
voffset=\dimexpr\useplength{toaddrvpos}+\useplength{toaddrheight}+4\baselineskip,%sep to shippingaddressbox
contents={\usebox\shippingAddressBox}
]{kivitendo.shippingaddress}
\newpairofpagestyles{kivitendo.letter}{}
......
\renewcommand*{\letterpagestyle}{kivitendo.letter}
\DeclareNewPageStyleByLayers{kivitendo.letter.first}{
kivitendo.shippingaddress,
plain.kivitendo.letter.head.odd,plain.kivitendo.letter.head.even,plain.kivitendo.letter.head.oneside,%
plain.kivitendo.letter.foot.odd,plain.kivitendo.letter.foot.even,plain.kivitendo.letter.foot.oneside,%
kivitendo.shippingaddress,
plain.kivitendo.letter.head.odd,plain.kivitendo.letter.head.even,plain.kivitendo.letter.head.oneside,%
plain.kivitendo.letter.foot.odd,plain.kivitendo.letter.foot.even,plain.kivitendo.letter.foot.oneside,%
}
\setkomavar{backaddress}{\firma\ $\cdot$ \strasse\ $\cdot$ \ort}
\setkomavar{firsthead}{
\if@logo
\rlap{\usekomavar{fromlogo}}%
\fi
\if@logo
\rlap{\usekomavar{fromlogo}}%
\fi
}
\@setplength{locwidth}{6cm}
......
\cs_new:Nn \__kivi_set_colwidth:nn {
\dim_set:cn {l_kivi_tab_#1_dim} {#2}
\dim_set:cn {l_kivi_tab_#1_dim} {#2}
}
\cs_new:Nn \__kivi_initialize_columns: {
\clist_map_inline:Nn \g_kivi_pricingtable_col_clist {
\bool_if_exist:cF {l_kivi_col_##1_bool}
{
\bool_new:c {l_kivi_col_##1_bool}
\dim_new:c {l_kivi_tab_##1_dim}
\keys_define:nn {kivi/PricingTable} {
##1 .choice:,
##1 / true .code:n = \bool_set_true:c {l_kivi_col_##1_bool},
##1 / false .code:n = \bool_set_false:c {l_kivi_col_##1_bool},
##1 / unknown .code:n = {
\bool_set_true:c {l_kivi_col_##1_bool}
\dim_set:cn {l_kivi_tab_##1_dim} {####1}
},
##1 .default:n = true,
##1 .initial:n = true,
##1 / header .prop_put:c = {l_kivi_col_##1_prop},
##1 / colspec .prop_put:c = {l_kivi_col_##1_prop},
}
}
}
\clist_map_inline:Nn \g_kivi_pricingtable_col_clist {
\bool_if_exist:cF {l_kivi_col_##1_bool}
{
\bool_new:c {l_kivi_col_##1_bool}
\dim_new:c {l_kivi_tab_##1_dim}
\keys_define:nn {kivi/PricingTable} {
##1 .choice:,
##1 / true .code:n = \bool_set_true:c {l_kivi_col_##1_bool},
##1 / false .code:n = \bool_set_false:c {l_kivi_col_##1_bool},
##1 / unknown .code:n = {
\bool_set_true:c {l_kivi_col_##1_bool}
\dim_set:cn {l_kivi_tab_##1_dim} {####1}
},
##1 .default:n = true,
##1 .initial:n = true,
##1 / header .prop_put:c = {l_kivi_col_##1_prop},
##1 / colspec .prop_put:c = {l_kivi_col_##1_prop},
}
}
}
}
\clist_new:N \g_kivi_pricingtable_col_clist
\keys_define:nn {kivi/PricingTable} {
columns .code:n =
\clist_gset:Nn \g_kivi_pricingtable_col_clist {#1}
\__kivi_initialize_columns:,
columns .initial:n = {pos, id, desc, amount, price, pricetotal},
unknown .code:n = \keys_set:no {kivi/Tabular} {\l_keys_key_str=#1}
columns .code:n =
\clist_gset:Nn \g_kivi_pricingtable_col_clist {#1}
\__kivi_initialize_columns:,
columns .initial:n = {pos, id, desc, amount, price, pricetotal},
unknown .code:n = \keys_set:no {kivi/Tabular} {\l_keys_key_str=#1}
}
% set default values for colwidth
\keys_set:nn {kivi/PricingTable} {
pos=5ex,
id=4em,
amount=5em,
price=7em,
pricetotal=7em,
% desc=auto,
pos/header=\position,
id/header=\artikelnummer,
desc/header=\bezeichnung,
amount/header=\menge,
price/header=\einzelpreis,
pricetotal/header=\gesamtpreis,
price / colspec = Price,
pricetotal / colspec = Price ,
pos=5ex,
id=4em,
amount=5em,
price=7em,
pricetotal=7em,
% desc=auto,
pos/header=\position,
id/header=\artikelnummer,
desc/header=\bezeichnung,
amount/header=\menge,
price/header=\einzelpreis,
pricetotal/header=\gesamtpreis,
price / colspec = Price,
pricetotal / colspec = Price ,
}
\dim_new:N \g_kivi_tabcolsep_dim
......
\setlength\tabcolsep{.5\tabcolsep}
\prg_new_conditional:Nnn \kivi_if_Price_col:n {T} {
\prop_get:cnN {l_kivi_col_#1_prop} {colspec} \l_tmpa_tl
\exp_args:NV \tl_if_eq:nnTF \l_tmpa_tl {Price}
{\prg_return_true:}
{\prg_return_false:}
\prop_get:cnN {l_kivi_col_#1_prop} {colspec} \l_tmpa_tl
\exp_args:NV \tl_if_eq:nnTF \l_tmpa_tl {Price}
{\prg_return_true:}
{\prg_return_false:}
}
\cs_new:Nn \__kivi_calc_desc_column: {
\bool_if:NTF \g__kivi_Tabular_rowcolor_bool
{\dim_set:Nn \l_kivi_tab_desc_leftskip_dim {2\g_kivi_tabcolsep_dim}}
{\dim_zero:N \l_kivi_tab_desc_leftskip_dim}
\dim_zero:N \l_kivi_tab_desc_dim
\bool_set_false:N \l_tmpa_bool
\tl_gclear:N \g_kivi_Pricing_colspec_tl
\clist_map_inline:Nn \g_kivi_pricingtable_col_clist {
\tl_if_eq:nnTF {##1} {desc} {
\dim_set:Nn \l_kivi_tab_desc_dim {
\textwidth-\l_kivi_tab_desc_leftskip_dim
}
\bool_set_true:N \l_tmpa_bool
\tl_gput_right:Nn \g_kivi_Pricing_colspec_tl {p{\l_kivi_tab_desc_dim}}
}{
\bool_if:cT {l_kivi_col_##1_bool} {
\bool_if:NTF \l_tmpa_bool {
\dim_sub:Nn \l_kivi_tab_desc_dim {
\dim_use:c {l_kivi_tab_##1_dim}+2\g_kivi_tabcolsep_dim
}
}{
\dim_add:Nn \l_kivi_tab_desc_leftskip_dim {
\dim_use:c {l_kivi_tab_##1_dim}+2\g_kivi_tabcolsep_dim
}
}
\tl_gput_right:Nn \g_kivi_Pricing_colspec_tl {K{\dim_use:c {l_kivi_tab_##1_dim}}}
\kivi_if_Price_col:nT {##1} {\tl_gput_right:Nn \g_kivi_Pricing_colspec_tl {<{\__kivi_tab_column_currency:}}}
}
}
}
\bool_if:NF \g__kivi_Tabular_rowcolor_bool {
\tl_gput_left:Nn \g_kivi_Pricing_colspec_tl {@{}}
\tl_gput_right:Nn \g_kivi_Pricing_colspec_tl {@{}}
}
\bool_if:NTF \g__kivi_Tabular_rowcolor_bool
{\dim_set:Nn \l_kivi_tab_desc_leftskip_dim {2\g_kivi_tabcolsep_dim}}
{\dim_zero:N \l_kivi_tab_desc_leftskip_dim}
\dim_zero:N \l_kivi_tab_desc_dim
\bool_set_false:N \l_tmpa_bool
\tl_gclear:N \g_kivi_Pricing_colspec_tl
\clist_map_inline:Nn \g_kivi_pricingtable_col_clist {
\tl_if_eq:nnTF {##1} {desc} {
\dim_set:Nn \l_kivi_tab_desc_dim {
\textwidth-\l_kivi_tab_desc_leftskip_dim
}
\bool_set_true:N \l_tmpa_bool
\tl_gput_right:Nn \g_kivi_Pricing_colspec_tl {p{\l_kivi_tab_desc_dim}}
}{
\bool_if:cT {l_kivi_col_##1_bool} {
\bool_if:NTF \l_tmpa_bool {
\dim_sub:Nn \l_kivi_tab_desc_dim {
\dim_use:c {l_kivi_tab_##1_dim}+2\g_kivi_tabcolsep_dim
}
}{
\dim_add:Nn \l_kivi_tab_desc_leftskip_dim {
\dim_use:c {l_kivi_tab_##1_dim}+2\g_kivi_tabcolsep_dim
}
}
\tl_gput_right:Nn \g_kivi_Pricing_colspec_tl {K{\dim_use:c {l_kivi_tab_##1_dim}}}
\kivi_if_Price_col:nT {##1} {\tl_gput_right:Nn \g_kivi_Pricing_colspec_tl {<{\__kivi_tab_column_currency:}}}
}
}
}
\bool_if:NF \g__kivi_Tabular_rowcolor_bool {
\tl_gput_left:Nn \g_kivi_Pricing_colspec_tl {@{}}
\tl_gput_right:Nn \g_kivi_Pricing_colspec_tl {@{}}
}
}
\newcolumntype{K}[1]{>{\raggedleft\arraybackslash}p{#1}}
......
\tcbuselibrary{breakable, skins}
\tcb@new@skin{kivi@LT}{base@unbroken,%
frame~engine=empty,interior~titled~engine=empty,interior~engine=empty,segmentation~engine=empty,title~engine=empty,%
skin~first=kivi@LT@first,skin~middle=kivi@LT@middle,skin~last=kivi@LT@last,
underlay~first~and~middle={
\node[anchor=north] at (interior.north) {\csname box_use:c\endcsname {g_kivi_LT@head_box}};
\node[anchor=south] at (interior.south) {\csname box_use:c\endcsname {g_kivi_LT@foot_box}};
},
underlay~unbroken~and~last={
\node[anchor=north] at (interior.north) {\csname box_use:c\endcsname {g_kivi_LT@head_box}};
\node[anchor=south] at (interior.south) {\csname box_use:c\endcsname {g_kivi_LT@lastfoot_box}};
},
boxsep=0pt,
boxrule=0pt,
left=0pt,
right=0pt,
bottom=\box_ht:N \g_kivi_LT@foot_box+\box_dp:N \g_kivi_LT@foot_box + \aboverulesep,
top=\box_ht:N \g_kivi_LT@head_box+\box_dp:N \g_kivi_LT@head_box +\belowrulesep,
parbox=false,
frame~engine=empty,interior~titled~engine=empty,interior~engine=empty,segmentation~engine=empty,title~engine=empty,%
skin~first=kivi@LT@first,skin~middle=kivi@LT@middle,skin~last=kivi@LT@last,
underlay~first~and~middle={
\node[anchor=north] at (interior.north) {\csname box_use:c\endcsname {g_kivi_LT@head_box}};
\node[anchor=south] at (interior.south) {\csname box_use:c\endcsname {g_kivi_LT@foot_box}};
},
underlay~unbroken~and~last={
\node[anchor=north] at (interior.north) {\csname box_use:c\endcsname {g_kivi_LT@head_box}};
\node[anchor=south] at (interior.south) {\csname box_use:c\endcsname {g_kivi_LT@lastfoot_box}};
},
boxsep=0pt,
boxrule=0pt,
left=0pt,
right=0pt,
bottom=\box_ht:N \g_kivi_LT@foot_box+\box_dp:N \g_kivi_LT@foot_box + \aboverulesep,
top=\box_ht:N \g_kivi_LT@head_box+\box_dp:N \g_kivi_LT@head_box +\belowrulesep,
parbox=false,
}
\tcb@new@skin{kivi@LT@first}{base@first,%
frame~engine=empty,interior~titled~engine=empty,interior~engine=empty,segmentation~engine=empty,title~engine=empty,%
skin~first=kivi@LT@first,skin~middle=kivi@LT@middle,skin~last=kivi@LT@middle,
frame~engine=empty,interior~titled~engine=empty,interior~engine=empty,segmentation~engine=empty,title~engine=empty,%
skin~first=kivi@LT@first,skin~middle=kivi@LT@middle,skin~last=kivi@LT@middle,
}
\tcb@new@skin{kivi@LT@middle}{base@middle,%
frame~engine=empty,interior~titled~engine=empty,interior~engine=empty,segmentation~engine=empty,title~engine=empty,%
skin~first=kivi@LT@middle,skin~middle=kivi@LT@middle,skin~last=kivi@LT@middle,
frame~engine=empty,interior~titled~engine=empty,interior~engine=empty,segmentation~engine=empty,title~engine=empty,%
skin~first=kivi@LT@middle,skin~middle=kivi@LT@middle,skin~last=kivi@LT@middle,
}
\tcb@new@skin{kivi@LT@last}{base@last,%
frame~engine=empty,interior~titled~engine=empty,interior~engine=empty,segmentation~engine=empty,title~engine=empty,%
skin~first=kivi@LT@middle,skin~middle=kivi@LT@middle,skin~last=kivi@LT@last,
frame~engine=empty,interior~titled~engine=empty,interior~engine=empty,segmentation~engine=empty,title~engine=empty,%
skin~first=kivi@LT@middle,skin~middle=kivi@LT@middle,skin~last=kivi@LT@last,
}
\tcbset{kivi@LT/.style={skin=kivi@LT}}%
......
\seq_new:N \g_kivi_extraDescription_seq
\int_new:N \l__kivi_PricingTable_rowcolor_int
\dim_new:N \l__kivi_fboxsep_dim
\dim_new:N \l__kivi_fboxsep_dim
\dim_set:Nn \l__kivi_fboxsep_dim {\g_kivi_tabcolsep_dim}
%colorbox variant to only add vertical spacing
......
\def\kivi@tabcolorbox#1#{\protect\kivi@tabcolor@box{#1}}
\def\kivi@tabcolor@box#1#2{
\tl_if_empty:oTF {#2}
\kivi@nocolor@b@x
\kivi@color@b@x
\relax{\color#1{#2}}
\tl_if_empty:oTF {#2}
\kivi@nocolor@b@x
\kivi@color@b@x
\relax{\color#1{#2}}
}
\long\def\kivi@color@b@x#1#2#3%
{\leavevmode
\setbox\z@\hbox{{\set@color#3}}%
\dimen@\ht\z@\advance\dimen@\l__kivi_fboxsep_dim\ht\z@\dimen@
\dimen@\dp\z@\advance\dimen@\l__kivi_fboxsep_dim\dp\z@\dimen@
{#1{#2\color@block{\wd\z@}{\ht\z@}{\dp\z@}\box\z@}}}
\setbox\z@\hbox{{\set@color#3}}%
\dimen@\ht\z@\advance\dimen@\l__kivi_fboxsep_dim\ht\z@\dimen@
\dimen@\dp\z@\advance\dimen@\l__kivi_fboxsep_dim\dp\z@\dimen@
{#1{#2\color@block{\wd\z@}{\ht\z@}{\dp\z@}\box\z@}}}
\long\def\kivi@nocolor@b@x#1#2#3%
{\leavevmode
\setbox\z@\hbox{#3}%
\dimen@\ht\z@\advance\dimen@\l__kivi_fboxsep_dim\ht\z@\dimen@
\dimen@\dp\z@\advance\dimen@\l__kivi_fboxsep_dim\dp\z@\dimen@
{\box\z@}}
\setbox\z@\hbox{#3}%
\dimen@\ht\z@\advance\dimen@\l__kivi_fboxsep_dim\ht\z@\dimen@
\dimen@\dp\z@\advance\dimen@\l__kivi_fboxsep_dim\dp\z@\dimen@
{\box\z@}}
%%%
\newcommand{\FakeTable}[1]{
\par
\seq_set_split:Nnn \l_kivi_PricingTable_seq {\tabularnewline} {#1}
\seq_remove_all:Nn \l_kivi_PricingTable_seq {}
\begingroup
\setlength{\parskip}{\c_zero_dim}
\let\ExtraDescription\__kivi_addExtraDescription:n
\setlength{\tabcolsep}{\g_kivi_tabcolsep_dim}
\seq_map_inline:Nn \l_kivi_PricingTable_seq {
\bool_if:NT \g__kivi_Tabular_rowcolor_bool {
\int_gincr:N \g__kivi_PricingTable_rowcolor_int
\int_if_odd:nTF {\g__kivi_PricingTable_rowcolor_int}
{\nointerlineskip\kivi@tabcolorbox{\g__kivi_Tabular_rowcolor_odd_tl}}
{\nointerlineskip\kivi@tabcolorbox{\g__kivi_Tabular_rowcolor_even_tl}}
}
{\parbox{\linewidth}{
\seq_set_split:Nnn \l_kivi_columns_seq {&} {##1}
\seq_gclear:N \g_kivi_extraDescription_seq
\exp_args:Nnx \use:n {\tabular[t]}\g_kivi_Pricing_colspec_tl
\seq_pop_left:NN \__l_FakeTable_columns_seq \l_tmpa_tl
\seq_item:Nn \l_kivi_columns_seq {\l_tmpa_tl}
\seq_map_inline:Nn \__l_FakeTable_columns_seq {
&\seq_item:Nn \l_kivi_columns_seq {####1}
}
\endtabular
\seq_if_empty:NTF \g_kivi_extraDescription_seq
{\par}
{\par\nopagebreak
\begingroup
\setlength{\leftskip}{\dim_eval:n {\bool_if:NT \g__kivi_Tabular_rowcolor_bool {-\tabcolsep} +\l_kivi_tab_desc_leftskip_dim}}
\setlength{\hsize}{\dim_eval:n {\l_kivi_tab_desc_dim+\leftskip}}
\usekomafont{extraDescription}
\seq_use:Nn \g_kivi_extraDescription_seq {\\}
\par
\endgroup
}
}}
}
\endgroup\par
\par
\seq_set_split:Nnn \l_kivi_PricingTable_seq {\tabularnewline} {#1}
\seq_remove_all:Nn \l_kivi_PricingTable_seq {}
\begingroup
\setlength{\parskip}{\c_zero_dim}
\let\ExtraDescription\__kivi_addExtraDescription:n
\setlength{\tabcolsep}{\g_kivi_tabcolsep_dim}
\seq_map_inline:Nn \l_kivi_PricingTable_seq {
\bool_if:NT \g__kivi_Tabular_rowcolor_bool {
\int_gincr:N \g__kivi_PricingTable_rowcolor_int
\int_if_odd:nTF {\g__kivi_PricingTable_rowcolor_int}
{\nointerlineskip\kivi@tabcolorbox{\g__kivi_Tabular_rowcolor_odd_tl}}
{\nointerlineskip\kivi@tabcolorbox{\g__kivi_Tabular_rowcolor_even_tl}}
}
{\parbox{\linewidth}{
\seq_set_split:Nnn \l_kivi_columns_seq {&} {##1}
\seq_gclear:N \g_kivi_extraDescription_seq
\exp_args:Nnx \use:n {\tabular[t]}\g_kivi_Pricing_colspec_tl
\seq_pop_left:NN \__l_FakeTable_columns_seq \l_tmpa_tl
\seq_item:Nn \l_kivi_columns_seq {\l_tmpa_tl}
\seq_map_inline:Nn \__l_FakeTable_columns_seq {
&\seq_item:Nn \l_kivi_columns_seq {####1}
}
\endtabular
\seq_if_empty:NTF \g_kivi_extraDescription_seq
{\par}
{\par\nopagebreak
\begingroup
\setlength{\leftskip}{\dim_eval:n {\bool_if:NT \g__kivi_Tabular_rowcolor_bool {-\tabcolsep} +\l_kivi_tab_desc_leftskip_dim}}
\setlength{\hsize}{\dim_eval:n {\l_kivi_tab_desc_dim+\leftskip}}
\usekomafont{extraDescription}
\seq_use:Nn \g_kivi_extraDescription_seq {\\}
\par
\endgroup
}
}}
}
\endgroup\par
}
\seq_new:N \__l_FakeTable_columns_seq
\cs_new:Nn \__kivi_setup_FakeTable: {
\seq_clear:N \__l_FakeTable_columns_seq
\int_zero:N \l_tmpa_int
\clist_map_inline:Nn \g_kivi_pricingtable_col_clist {
\int_incr:N \l_tmpa_int
\bool_if:cT {l_kivi_col_##1_bool} {\seq_put_right:Nx \__l_FakeTable_columns_seq {\int_use:N \l_tmpa_int}}
}
\seq_clear:N \__l_FakeTable_columns_seq
\int_zero:N \l_tmpa_int
\clist_map_inline:Nn \g_kivi_pricingtable_col_clist {
\int_incr:N \l_tmpa_int
\bool_if:cT {l_kivi_col_##1_bool} {\seq_put_right:Nx \__l_FakeTable_columns_seq {\int_use:N \l_tmpa_int}}
}
}
\tl_new:N \g_kivi_Pricing_colspec_tl
\tl_gset:Nn \g_kivi_Pricing_colspec_tl {
\bool_if:NF \g__kivi_Tabular_rowcolor_bool {@{}}
\bool_if:NT \l_kivi_col_pos_bool {p{\l_kivi_tab_pos_dim}}
\bool_if:NT \l_kivi_col_id_bool {p{\l_kivi_tab_id_dim}}
p{\l_kivi_tab_desc_dim}
\bool_if:NT \l_kivi_col_amount_bool {\exp_not:n {>{\raggedleft\arraybackslash}p{\l_kivi_tab_amount_dim}}}
\bool_if:NT \l_kivi_col_price_bool {\exp_not:n {>{\raggedleft\arraybackslash}p{\l_kivi_tab_price_dim}<{\__kivi_tab_column_currency:}}}
\bool_if:NT \l_kivi_col_pricetotal_bool {\exp_not:n {>{\raggedleft\arraybackslash}p{\l_kivi_tab_pricetotal_dim}<{\__kivi_tab_column_currency:}}}
\bool_if:NF \g__kivi_Tabular_rowcolor_bool {@{}}
\bool_if:NF \g__kivi_Tabular_rowcolor_bool {@{}}
\bool_if:NT \l_kivi_col_pos_bool {p{\l_kivi_tab_pos_dim}}
\bool_if:NT \l_kivi_col_id_bool {p{\l_kivi_tab_id_dim}}
p{\l_kivi_tab_desc_dim}
\bool_if:NT \l_kivi_col_amount_bool {\exp_not:n {>{\raggedleft\arraybackslash}p{\l_kivi_tab_amount_dim}}}
\bool_if:NT \l_kivi_col_price_bool {\exp_not:n {>{\raggedleft\arraybackslash}p{\l_kivi_tab_price_dim}<{\__kivi_tab_column_currency:}}}
\bool_if:NT \l_kivi_col_pricetotal_bool {\exp_not:n {>{\raggedleft\arraybackslash}p{\l_kivi_tab_pricetotal_dim}<{\__kivi_tab_column_currency:}}}
\bool_if:NF \g__kivi_Tabular_rowcolor_bool {@{}}
}
\cs_new_protected:Nn \__kivi_tab_column_currency: {\,\currency}
......
\cs_set_eq:NN \__kivi_tab_column_body_currency: \__kivi_tab_column_currency:
\clist_map_inline:nn {head, foot, firsthead, lastfoot} {%TODO reduce
\box_new:c {g_kivi_LT@#1_box}
\box_new:c {g_kivi_LT@#1_box}
}
\newkomafont{PricingTableHeader}{\bfseries}
\cs_new:Nn \__kivi_setup_LT_boxes: {
% \bool_show:N \g__kivi_Tabular_rowcolor_bool
\__kivi_calc_desc_column:
\hbox_gset:Nn \g_kivi_LT@head_box {
\setlength{\tabcolsep}{\g_kivi_tabcolsep_dim}
\bool_if:NT \g__kivi_Tabular_rowcolor_bool {\kivi@tabcolorbox{\g__kivi_Tabular_rowcolor_header_tl}}%
{
\exp_args:Nnx \use:n {\tabular[b]}\g_kivi_Pricing_colspec_tl
\__kivi_PricingTabular_header:
\endtabular
}
}
\hbox_gset:Nn \g_kivi_LT@foot_box {
% \parbox{\linewidth}{
% \leavevmode\color{red}\rule{\linewidth}{1pt}\par\nointerlineskip
% \leavevmode\color{blue}\rule{\linewidth}{1cm}
% }
% \raisebox{\depth}{
\begin{tabular*}{\textwidth}[t]{@{\extracolsep{\fill}}r@{\bool_if:NT \g__kivi_Tabular_rowcolor_bool {\hskip\tabcolsep}}}
\bool_if:NTF \g__kivi_Tabular_rowcolor_bool
{\hline\noalign{\vskip1pt}}%\noalign{\nointerlineskip\vskip\z@}\noalign{\nointerlineskip\rule{\linewidth}{\arrayrulewidth}}}%\leavevmode\rule{\linewidth}{\arrayrulewidth}}}
\midrule
\strut\weiteraufnaechsterseite
\end{tabular*}
% }
}
\hbox_gset:Nn \g_kivi_LT@lastfoot_box {
\raisebox{\dimexpr\depth+\baselineskip}[0pt][0pt]{
\begin{tabular*}{\textwidth}{@{\bool_if:NT \g__kivi_Tabular_rowcolor_bool {\hskip\tabcolsep}\extracolsep{\fill}}r@{\bool_if:NT \g__kivi_Tabular_rowcolor_bool {\hskip\tabcolsep}}}
\bool_if:NF \g__kivi_Tabular_rowcolor_bool \bottomrule
\end{tabular*}
}
}
% \bool_show:N \g__kivi_Tabular_rowcolor_bool
\__kivi_calc_desc_column:
\hbox_gset:Nn \g_kivi_LT@head_box {
\setlength{\tabcolsep}{\g_kivi_tabcolsep_dim}
\bool_if:NT \g__kivi_Tabular_rowcolor_bool {\kivi@tabcolorbox{\g__kivi_Tabular_rowcolor_header_tl}}%
{
\exp_args:Nnx \use:n {\tabular[b]}\g_kivi_Pricing_colspec_tl
\__kivi_PricingTabular_header:
\endtabular
}
}
\hbox_gset:Nn \g_kivi_LT@foot_box {
% \parbox{\linewidth}{
% \leavevmode\color{red}\rule{\linewidth}{1pt}\par\nointerlineskip
% \leavevmode\color{blue}\rule{\linewidth}{1cm}
% }
% \raisebox{\depth}{
\begin{tabular*}{\textwidth}[t]{@{\extracolsep{\fill}}r@{\bool_if:NT \g__kivi_Tabular_rowcolor_bool {\hskip\tabcolsep}}}
\bool_if:NTF \g__kivi_Tabular_rowcolor_bool
{\hline\noalign{\vskip1pt}}%\noalign{\nointerlineskip\vskip\z@}\noalign{\nointerlineskip\rule{\linewidth}{\arrayrulewidth}}}%\leavevmode\rule{\linewidth}{\arrayrulewidth}}}
\midrule
\strut\weiteraufnaechsterseite
\end{tabular*}
% }
}
\hbox_gset:Nn \g_kivi_LT@lastfoot_box {
\raisebox{\dimexpr\depth+\baselineskip}[0pt][0pt]{
\begin{tabular*}{\textwidth}{@{\bool_if:NT \g__kivi_Tabular_rowcolor_bool {\hskip\tabcolsep}\extracolsep{\fill}}r@{\bool_if:NT \g__kivi_Tabular_rowcolor_bool {\hskip\tabcolsep}}}
\bool_if:NF \g__kivi_Tabular_rowcolor_bool \bottomrule
\end{tabular*}
}
}
}
%Macht es sinn hier eine Variante zu machen, in der alle Spalten Belegbar sind?
\NewDocumentEnvironment{PricingTotal}{+b}{
\par\nointerlineskip
\par\nointerlineskip
% \unskip
}{
\bool_if:NT \g__kivi_Tabular_rowcolor_bool {\nointerlineskip\kivi@tabcolorbox{\g__kivi_Tabular_rowcolor_PricingTotal_tl}}
{
\tabular[t]{@{\bool_if:NT \g__kivi_Tabular_rowcolor_bool {\hskip\tabcolsep}}
p{\dim_eval:n {\linewidth-\l_kivi_tab_pricetotal_dim-\bool_if:NTF \g__kivi_Tabular_rowcolor_bool {4}{2}\tabcolsep}}P{\l_kivi_tab_pricetotal_dim}@{\bool_if:NT \g__kivi_Tabular_rowcolor_bool {\hskip\tabcolsep}}}
\l__kivi_Tabular_PricingTotal_topsep_tl
#1
\endtabular
}
\bool_if:NT \g__kivi_Tabular_rowcolor_bool {\nointerlineskip\kivi@tabcolorbox{\g__kivi_Tabular_rowcolor_PricingTotal_tl}}
{
\tabular[t]{@{\bool_if:NT \g__kivi_Tabular_rowcolor_bool {\hskip\tabcolsep}}
p{\dim_eval:n {\linewidth-\l_kivi_tab_pricetotal_dim-\bool_if:NTF \g__kivi_Tabular_rowcolor_bool {4}{2}\tabcolsep}}P{\l_kivi_tab_pricetotal_dim}@{\bool_if:NT \g__kivi_Tabular_rowcolor_bool {\hskip\tabcolsep}}}
\l__kivi_Tabular_PricingTotal_topsep_tl
#1
\endtabular
}
}
\tl_new:N \l__kivi_Tabular_PricingTotal_topsep_tl
......
\tl_set:Nn \l__kivi_Tabular_PricingTotal_topsep_tl {\bool_if:NF \g__kivi_Tabular_rowcolor_bool \midrule}
\newcommand*\ExtraDescription{
\PackageError{kiviletter}{The~command~\string\ExtraDescription\space~may~be~only~used~inside~the~\string\FakeTable\space~environment.}{See~documentation~for~details}
\PackageError{kiviletter}{The~command~\string\ExtraDescription\space~may~be~only~used~inside~the~\string\FakeTable\space~environment.}{See~documentation~for~details}
}
\cs_new:Nn \__kivi_addExtraDescription:n {\seq_gput_right:Nn \g_kivi_extraDescription_seq {#1}}
\newenvironment{PricingTabular}[1][]{
\begingroup
\dim_set:Nn \parskip {\c_zero_dim}
\tl_if_empty:nF {#1} {\keys_set:nn {kivi/PricingTable} {#1}}
\setlength{\tabcolsep}{\g_kivi_tabcolsep_dim}
\__kivi_calc_desc_column:
\exp_args:Nx \longtable \g_kivi_Pricing_colspec_tl
% Tabellenkopf
\__kivi_PricingTabular_header:
\endhead
\midrule
\rlap{\makebox[\textwidth][r]{\weiteraufnaechsterseite}}\\
\endfoot
\bool_if:NF \g__kivi_Tabular_rowcolor_bool \bottomrule
\endlastfoot
\begingroup
\dim_set:Nn \parskip {\c_zero_dim}
\tl_if_empty:nF {#1} {\keys_set:nn {kivi/PricingTable} {#1}}
\setlength{\tabcolsep}{\g_kivi_tabcolsep_dim}
\__kivi_calc_desc_column:
\exp_args:Nx \longtable \g_kivi_Pricing_colspec_tl
% Tabellenkopf
\__kivi_PricingTabular_header:
\endhead
\midrule
\rlap{\makebox[\textwidth][r]{\weiteraufnaechsterseite}}\\
\endfoot
\bool_if:NF \g__kivi_Tabular_rowcolor_bool \bottomrule
\endlastfoot
}{
\endlongtable
\endgroup
\endlongtable
\endgroup
}
\cs_set:Nn \__kivi_PricingTabular_header: {
\bool_if:NTF \g__kivi_Tabular_rowcolor_bool {\noalign{\skip_vertical:n {\dp\strutbox}}}\toprule
\cs_gset_eq:NN \__kivi_tab_column_currency: \__kivi_tab_column_header_currency:
\bool_set_false:N \l_tmpa_bool
\clist_map_inline:Nn \g_kivi_pricingtable_col_clist {
\bool_if:cT {l_kivi_col_##1_bool} {
\bool_if:NT \l_tmpa_bool {&}
\bool_set_true:N \l_tmpa_bool
\usekomafont{PricingTableHeader}
\prop_item:cn {l_kivi_col_##1_prop} {header}
}
}
\cs_gset_eq:NN \__kivi_tab_column_currency: \__kivi_tab_column_body_currency:
\\
\bool_if:NF \g__kivi_Tabular_rowcolor_bool \midrule
\bool_if:NTF \g__kivi_Tabular_rowcolor_bool {\noalign{\skip_vertical:n {\dp\strutbox}}}\toprule
\cs_gset_eq:NN \__kivi_tab_column_currency: \__kivi_tab_column_header_currency:
\bool_set_false:N \l_tmpa_bool
\clist_map_inline:Nn \g_kivi_pricingtable_col_clist {
\bool_if:cT {l_kivi_col_##1_bool} {
\bool_if:NT \l_tmpa_bool {&}
\bool_set_true:N \l_tmpa_bool
\usekomafont{PricingTableHeader}
\prop_item:cn {l_kivi_col_##1_prop} {header}
}
}
\cs_gset_eq:NN \__kivi_tab_column_currency: \__kivi_tab_column_body_currency:
\\
\bool_if:NF \g__kivi_Tabular_rowcolor_bool \midrule
}
\newkomafont{tablehead}{\bfseries}
\keys_define:nn {kivi/SimpleTabular} {
colspec .tl_set:N =\l_kivi_SimpleTabular_colspec_tl,
colspec .initial:n = {rrX},
headline .tl_set:N = \l_kivi_SimpleTabular_headline_tl,
headline .initial:n = {\usekomafont{tablehead}\position & \usekomafont{tablehead}\menge & \usekomafont{tablehead}\bezeichnung},
colspec .tl_set:N =\l_kivi_SimpleTabular_colspec_tl,
colspec .initial:n = {rrX},
headline .tl_set:N = \l_kivi_SimpleTabular_headline_tl,
headline .initial:n = {\usekomafont{tablehead}\position & \usekomafont{tablehead}\menge & \usekomafont{tablehead}\bezeichnung},
}
\keys_define:nn {kivi/Tabular} {
color-rows .bool_gset:N = \g__kivi_Tabular_rowcolor_bool ,
color-rows .initial:n = false,
color-rows .default:n = true,
rowcolor-odd .tl_gset:N = \g__kivi_Tabular_rowcolor_odd_tl,
rowcolor-odd .initial:n = black!10,
rowcolor-even .tl_gset:N = \g__kivi_Tabular_rowcolor_even_tl,
rowcolor-even .initial:n =,
rowcolor-header .tl_gset:N = \g__kivi_Tabular_rowcolor_header_tl,
rowcolor-header .initial:n = black!35,
rowcolor-total .tl_gset:N = \g__kivi_Tabular_rowcolor_PricingTotal_tl,
rowcolor-total .initial:n = black!35,
rowsep .tl_set:N =\g__kivi_Tabular_rowsep_tl,
hrule .meta:n = {rowsep=\midrule}
color-rows .bool_gset:N = \g__kivi_Tabular_rowcolor_bool ,
color-rows .initial:n = false,
color-rows .default:n = true,
rowcolor-odd .tl_gset:N = \g__kivi_Tabular_rowcolor_odd_tl,
rowcolor-odd .initial:n = black!10,
rowcolor-even .tl_gset:N = \g__kivi_Tabular_rowcolor_even_tl,
rowcolor-even .initial:n =,
rowcolor-header .tl_gset:N = \g__kivi_Tabular_rowcolor_header_tl,
rowcolor-header .initial:n = black!35,
rowcolor-total .tl_gset:N = \g__kivi_Tabular_rowcolor_PricingTotal_tl,
rowcolor-total .initial:n = black!35,
rowsep .tl_set:N =\g__kivi_Tabular_rowsep_tl,
hrule .meta:n = {rowsep=\midrule}
}
\newcommand*{\SetupSimpleTabular}[1]{\keys_set:nn {kivi/SimpleTabular} {#1}}
......
\newenvironment{SimpleTabular}[1][]
{
\tl_if_in:nnTF {#1} {=} {\keys_set:nn {kivi/SimpleTabular} {#1}} {\tl_if_empty:nF {#1} {\tl_set:Nn \l_kivi_SimpleTabular_headline_tl {#1}}}
\setlength{\tabcolsep}{\g_kivi_tabcolsep_dim}
\dim_set:Nn \parskip {\c_zero_dim}
\bool_if:NF \g__kivi_Tabular_rowcolor_bool {
\tl_put_right:Nn \l_kivi_SimpleTabular_colspec_tl {@{}}
\tl_put_left:Nn \l_kivi_SimpleTabular_colspec_tl {@{}}
}
\exp_args:NnV \xltabular{\linewidth}\l_kivi_SimpleTabular_colspec_tl
\toprule
\cs_gset_eq:NN \__kivi_tab_column_currency: \__kivi_tab_column_header_currency:
\l_kivi_SimpleTabular_headline_tl
\\
\noalign{\cs_gset_eq:NN \__kivi_tab_column_currency: \__kivi_tab_column_body_currency:}
\midrule
\endhead
\midrule
\rlap{\makebox[\textwidth][r]{\weiteraufnaechsterseite}}\\
\endfoot
\bool_if:NF \g__kivi_Tabular_rowcolor_bool \bottomrule
\endlastfoot
\ignorespaces
\tl_if_in:nnTF {#1} {=} {\keys_set:nn {kivi/SimpleTabular} {#1}} {\tl_if_empty:nF {#1} {\tl_set:Nn \l_kivi_SimpleTabular_headline_tl {#1}}}
\setlength{\tabcolsep}{\g_kivi_tabcolsep_dim}
\dim_set:Nn \parskip {\c_zero_dim}
\bool_if:NF \g__kivi_Tabular_rowcolor_bool {
\tl_put_right:Nn \l_kivi_SimpleTabular_colspec_tl {@{}}
\tl_put_left:Nn \l_kivi_SimpleTabular_colspec_tl {@{}}
}
\exp_args:NnV \xltabular{\linewidth}\l_kivi_SimpleTabular_colspec_tl
\toprule
\cs_gset_eq:NN \__kivi_tab_column_currency: \__kivi_tab_column_header_currency:
\l_kivi_SimpleTabular_headline_tl
\\
\noalign{\cs_gset_eq:NN \__kivi_tab_column_currency: \__kivi_tab_column_body_currency:}
\midrule
\endhead
\midrule
\rlap{\makebox[\textwidth][r]{\weiteraufnaechsterseite}}\\
\endfoot
\bool_if:NF \g__kivi_Tabular_rowcolor_bool \bottomrule
\endlastfoot
\ignorespaces
}{
\def\@currenvir{tabularx}
\endxltabular
\def\@currenvir{tabularx}
\endxltabular
}
%PricingTabular* kann automatisch spalten ignorieren
......
% analog ist dies für pos, amount, price, pricetotal möglich.
% Die Spalte der Bezeichnung ist nicht deaktivierbar
\newenvironment{PricingTabular*}[1][]{
\int_gzero:N \g__kivi_PricingTable_rowcolor_int
\tl_if_empty:nF {#1} {\keys_set:nn {kivi/PricingTable} {#1}}
\__kivi_setup_LT_boxes:
\__kivi_setup_FakeTable:
\dim_set:Nn \parskip {\c_zero_dim}
\PricingTabularBox\ignorespaces
\int_gzero:N \g__kivi_PricingTable_rowcolor_int
\tl_if_empty:nF {#1} {\keys_set:nn {kivi/PricingTable} {#1}}
\__kivi_setup_LT_boxes:
\__kivi_setup_FakeTable:
\dim_set:Nn \parskip {\c_zero_dim}
\PricingTabularBox\ignorespaces
}{\endPricingTabularBox
%compensate footer spacing
\skip_vertical:n {-\box_ht:N \g_kivi_LT@foot_box-\box_dp:N \g_kivi_LT@foot_box}
%compensate footer spacing
\skip_vertical:n {-\box_ht:N \g_kivi_LT@foot_box-\box_dp:N \g_kivi_LT@foot_box}
}
\newtcolorbox{PricingTabularBox}{breakable,skin=kivi@LT}
\if@kivi@infobox
\def\locationsep{:}
\NewDocumentCommand{\locationentry}{som}{
\Ifkomavarempty{#3}{}{
\IfBooleanTF {#1} {
\strut
\IfNoValueTF {#2}
{\usekomavar*{#3}}
{#2}
\locationsep
\hfill\strut\space
\hbox_set:Nn \l_tmpa_box {\usekomavar{#3}}
\dim_compare:nTF {\box_wd:N \l_tmpa_box>\linewidth}
{\newline\hspace*{\fill}\llap}
{\hspace*{\fill}}
{\box_use:N \l_tmpa_box\strut}
}{
\@hangfrom{\strut
\IfNoValueTF {#2}
{\usekomavar*{#3}}
{#2}\locationsep~
}{
\parbox[t]{\dimexpr\linewidth-\hangindent}{
\raggedleft
\usekomavar{#3}\strut
}
}
}
}
\par
}
\newkomafont{transaction}{\bfseries}
\setkomavar{location}{
\Ifkomavarempty{transaction}{}{{
\usekomafont{transaction}
\usekomavar{transaction}
}
}
\par
\medskip
\parbox{\useplength{locwidth}}{
\locationentry{date}
\locationentry{myref}
\locationentry{customer}
\locationentry{yourref}
\locationentry{delivery}
\locationentry{quote}
\locationentry{orderID}
\locationentry{projectID}
\locationentry[\ansprechpartner]{fromname}
\locationentry{fromphone}
\locationentry*{fromemail}
}
}
\removereffields
\AtBeginLetter{
\ifdim\ht\shippingAddressBox>\z@
\@addtoplength{refvpos}{\dimexpr\ht\shippingAddressBox+\dp\shippingAddressBox}
\@addtoplength{refvpos}{4\baselineskip}%sep between address boxes
\fi
}
\def\locationsep{:}
\NewDocumentCommand{\locationentry}{som}{
\Ifkomavarempty{#3}{}{
\IfBooleanTF {#1} {
\strut
\IfNoValueTF {#2}
{\usekomavar*{#3}}
{#2}
\locationsep
\hfill\strut\space
\hbox_set:Nn \l_tmpa_box {\usekomavar{#3}}
\dim_compare:nTF {\box_wd:N \l_tmpa_box>\linewidth}
{\newline\hspace*{\fill}\llap}
{\hspace*{\fill}}
{\box_use:N \l_tmpa_box\strut}
}{
\@hangfrom{\strut
\IfNoValueTF {#2}
{\usekomavar*{#3}}
{#2}\locationsep~
}{
\parbox[t]{\dimexpr\linewidth-\hangindent}{
\raggedleft
\usekomavar{#3}\strut
}
}
}
}
\par
}
\newkomafont{transaction}{\bfseries}
\setkomavar{location}{
\Ifkomavarempty{transaction}{}{{
\usekomafont{transaction}
\usekomavar{transaction}
}
}
\par
\medskip
\parbox{\useplength{locwidth}}{
\locationentry{date}
\locationentry{myref}
\locationentry{customer}
\locationentry{yourref}
\locationentry{delivery}
\locationentry{quote}
\locationentry{orderID}
\locationentry{projectID}
\locationentry[\ansprechpartner]{fromname}
\locationentry{fromphone}
\locationentry*{fromemail}
}
}
\removereffields
\AtBeginLetter{
\ifdim\ht\shippingAddressBox>\z@
\@addtoplength{refvpos}{\dimexpr\ht\shippingAddressBox+\dp\shippingAddressBox}
\@addtoplength{refvpos}{4\baselineskip}%sep between address boxes
\fi
... Dieser Diff wurde abgeschnitten, weil er die maximale Anzahl anzuzeigender Zeilen überschreitet.

Auch abrufbar als: Unified diff