$form->{ $form->{ct} } = $form->{name};
$form->{"$form->{ct}_id"} = $ref->{ctid};
- map { $form->{$_} = () } qw(invnumber invdate duedate);
+ map { $form->{$_} = () } qw(invnumber invdate duedate amount open);
$form->{total} = 0;
foreach my $item (qw(c0 c30 c60 c90)) {
$form->{$item} = ();
push @{ $form->{invnumber} }, $ref->{invnumber};
push @{ $form->{invdate} }, $ref->{transdate};
push @{ $form->{duedate} }, $ref->{duedate};
+ push @{ $form->{amount} }, $form->format_amount(\%myconfig, $ref->{amount} / $ref->{exchangerate}, 2);
+ push @{ $form->{open} }, $form->format_amount(\%myconfig, $ref->{open} / $ref->{exchangerate}, 2);
foreach my $item (qw(c0 c30 c60 c90)) {
if ($ref->{exchangerate} * 1) {
- $ref->{$item} =
- $form->round_amount($ref->{$item} / $ref->{exchangerate}, 2);
+ # add only the open amount of the invoice to the aging, not the total amount
+ $ref->{"${item}"} = $form->round_amount($ref->{open} / $ref->{exchangerate}, 2) if $ref->{overduedays} < 30 and $item eq 'c0';
+ $ref->{"${item}"} = $form->round_amount($ref->{open} / $ref->{exchangerate}, 2) if $ref->{overduedays} >= 30 and $ref->{overduedays} < 60 and $item eq 'c30';
+ $ref->{"${item}"} = $form->round_amount($ref->{open} / $ref->{exchangerate}, 2) if $ref->{overduedays} >= 60 and $ref->{overduedays} < 90 and $item eq 'c60';
+ $ref->{"${item}"} = $form->round_amount($ref->{open} / $ref->{exchangerate}, 2) if $ref->{overduedays} >= 90 and $item eq 'c90';
}
$form->{"${item}total"} += $ref->{$item};
$form->{total} += $ref->{$item};
<li><a href="dokumentenvorlagen-und-variablen.html#anderevorlagen_quotations">Angebote und Preisanfragen</a></li>
<li><a href="dokumentenvorlagen-und-variablen.html#anderevorlagen_orders">Auftragsbestätigungen und Lieferantenaufträge</a></li>
<li><a href="dokumentenvorlagen-und-variablen.html#anderevorlagen_delivery_orders">Lieferscheine (Verkauf und Einkauf)</a></li>
+ <li><a href="dokumentenvorlagen-und-variablen.html#anderevorlagen_statement">Sammelrechnung</a></li>
</ol>
</li>
</table>
</p>
+ <p>Für jede Position eines Lieferscheines gibt es ein Unterarray mit
+ den Informationen darüber, von welchem Lager und Lagerplatz aus die
+ Waren verschickt wurden (Verkaufslieferscheine) bzw. auf welchen
+ Lagerplatz sie eingelagert wurden. Diese müssen mittels
+ einer <code>foreach</code>-Schleife ausgegeben werden. Diese
+ Variablen sind:</p>
+
+
<p>Für jede Position eines Lieferscheines gibt es ein Unterarray mit
den Informationen darüber, von welchem Lager und Lagerplatz aus die
Waren verschickt wurden (Verkaufslieferscheine) bzw. auf welchen
</table>
</p>
+ <h3><a name="anderevorlagen_statement">Sammelrechnung</a></h3>
+
+ <h3> Variablen für Sammelrechnung:</h3>
+ <p>
+ <table border="1">
+ <tr><th>Variablenname</th><th>Bedeutung</th></tr>
+ <tr>
+ <td><code>c0total</code></td>
+ <td>Gesamtbetrag aller Rechnungen mit Fälligkeit < 30 Tage</td>
+ </tr>
+ <tr>
+ <td><code>c30total</code></td>
+ <td>Gesamtbetrag aller Rechnungen mit Fälligkeit >= 30 und < 60 Tage</td>
+ </tr>
+ <tr>
+ <td><code>c60total</code></td>
+ <td>Gesamtbetrag aller Rechnungen mit Fälligkeit >= 60 und < 90 Tage</td>
+ </tr>
+ <tr>
+ <td><code>c90total</code></td>
+ <td>Gesamtbetrag aller Rechnungen mit Fälligkeit >= 90 Tage</td>
+ </tr>
+ <tr>
+ <td><code>total</code></td>
+ <td>Gesamtbetrag aller Rechnungen</td>
+ </tr>
+ </table>
+ </p>
+
+ <h3> Variablen für jede Rechnungsposition in Sammelrechnung:</h3>
+ <p>
+ <table border="1">
+ <tr><th>Variablenname</th><th>Bedeutung</th></tr>
+ <tr>
+ <td><code>invnumber</code></td>
+ <td>Rechnungsnummer</td>
+ </tr>
+ <tr>
+ <td><code>invdate</code></td>
+ <td>Rechnungsdatum</td>
+ </tr>
+ <tr>
+ <td><code>duedate</code></td>
+ <td>Fälligkeitsdatum</td>
+ </tr>
+ <tr>
+ <td><code>amount</code></td>
+ <td>Summe der Rechnung</td>
+ </tr>
+ <tr>
+ <td><code>open</code></td>
+ <td>Noch offener Betrag der Rechnung</td>
+ </tr>
+ <tr>
+ <td><code>c0</code></td>
+ <td>Noch offener Rechnungsbetrag mit Fälligkeit < 30 Tage</td>
+ </tr>
+ <tr>
+ <td><code>c30</code></td>
+ <td>Noch offener Rechnungsbetrag mit Fälligkeit >= 30 und < 60 Tage</td>
+ </tr>
+ <tr>
+ <td><code>c60</code></td>
+ <td>Noch offener Rechnungsbetrag mit Fälligkeit >= 60 und < 90 Tage</td>
+ </tr>
+ <tr>
+ <td><code>c90</code></td>
+ <td>Noch offener Rechnungsbetrag mit Fälligkeit >= 90 Tage</td>
+ </tr>
+ </table>
+ </p>
+
+
+
+
<small><a href="dokumentenvorlagen-und-variablen.html#inhaltsverzeichnis">
zum Inhaltsverzeichnis</a></small><br>
<hr>
... <%end%></code></p>
<p>Anmerkung zum <code><%end%></code>: Der besseren
- Verständlichkeit halber kann man nach dem <code>end</code> noch
- beliebig weitere Wörter schreiben, um so zu markieren, welche
+ Verständlichkeit halber kann man nach dem <code>end</code> noch
+ beliebig weitere Wörter schreiben, um so zu markieren, welche
Anweisung (z.B. <code>if</code> oder <code>foreach</code>) damit
abgeschlossen wird.</p>
<p>Beispiel: Lautet der Beginn eines Blockes
z.B. <code class="blue"><%if type ==
- "sales_quotation"%></code>, so könnte er mit
+ "sales_quotation"%></code>, so könnte er mit
<code class="blue"><%end%></code> genauso abgeschlossen werden
wie mit
<code class="blue"><%end if%></code> oder auch
wird. Beispiel: <code class="blue"><%if not
cp_greeting%></code></p>
- <p>Zusätzlich zu dem einfachen Test, ob eine Variable gesetzt ist
- oder nicht, bietet dieser Block auch die Möglichkeit, den Inhalt
+ <p>Zusätzlich zu dem einfachen Test, ob eine Variable gesetzt ist
+ oder nicht, bietet dieser Block auch die Möglichkeit, den Inhalt
einer Variablen mit einer festen Zeichenkette oder einer anderen
Variablen zu vergleichen. Ob der Vergleich mit einer Zeichenkette
- oder einer anderen Variablen vorgenommen wird, hängt davon ab, ob
- die rechte Seite des Vergleichsoperators in Anführungszeichen
+ oder einer anderen Variablen vorgenommen wird, hängt davon ab, ob
+ die rechte Seite des Vergleichsoperators in Anführungszeichen
gesetzt wird (Vergleich mit Zeichenkette) oder nicht (Vergleich mit
anderer Variablen). Zwei Beispiele, die beide Vergleiche zeigen:</p>
<p><code class="blue"><%if var1 == "Wert"%></code>
- testet die Variable "var1" auf Übereinstimmung mit der
+ testet die Variable "var1" auf Übereinstimmung mit der
Zeichenkette "Wert". Mittels "!=" anstelle von
- "==" würde auf Ungleichheit getestet.</p>
+ "==" würde auf Ungleichheit getestet.</p>
<p><code class="blue"><%if var1 == var2%></code> testet die
- Variable "var1" auf Übereinstimmung mit der Variablen
+ Variable "var1" auf Übereinstimmung mit der Variablen
"var2". Mittels "!=" anstelle von "=="
- würde auf Ungleichheit getestet.</p>
+ würde auf Ungleichheit getestet.</p>
- <p>Erfahrere Benutzer können neben der Tests auf (Un-)Gleichheit auch
- Tests auf Übereinstimmung mit regulären Ausdrücken ohne
- Berücksichtung der Groß- und Kleinschreibung durchführen. Dazu dient
+ <p>Erfahrere Benutzer können neben der Tests auf (Un-)Gleichheit auch
+ Tests auf Übereinstimmung mit regulären Ausdrücken ohne
+ Berücksichtung der Groß- und Kleinschreibung durchführen. Dazu dient
dieselbe Syntax wie oben nur mit "=~" und "!~"
als Vergleichsoperatoren.</p>
- <p>Beispiel für einen Test, ob die Variable "intnotes"
- (interne Bemerkungen) das Wort "schwierig" enthält:
+ <p>Beispiel für einen Test, ob die Variable "intnotes"
+ (interne Bemerkungen) das Wort "schwierig" enthält:
<code class="blue"><%if intnotes =~
"schwierig"%></code></p>