From 7525426386204abfcc6e49b481de7389ade44dc4 Mon Sep 17 00:00:00 2001
From: "G. Richardson"
Date: Wed, 12 Oct 2011 12:22:08 +0200
Subject: [PATCH] =?utf8?q?Sammelrechnung=20/=20Kundenkonto=20/=20F=C3=A4ll?=
=?utf8?q?igkeitsabrechnung=20/=20Statement?=
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit
Bug 1611
Finanzbuchhaltung -> Berichte -> Offene Forderungen
Jan hatte das ja schon angepasst, daà man die offenen Rechnungen nach einer
Altersstrukturliste filtern kann. Die Ergebnisse stimmten auch, aber wenn man
dann das Ergebnis drucken wollte fehlten die Zahlen.
Die Sammelrechnung soll wohl als Kundenkonto fungieren, damit man dem Kunden
eine Ãbersicht aller noch offenen Rechnungen schicken kann, mit Ãbersicht der
Ãberfälligkeit. Die Druckvorlage ist statement.tex, bzw. statement.html. Bisher
wurden aber nie die Beträge der Rechnungen angezeigt, das funktioniert jetzt
wieder.
* bei der Datenbankabfrage wird für jede Rechnung die Anzahl der Tage über dem
Fälligkeitsdatum (Today - duedate) für jede offene Rechnung berechnet
* der noch offene Betrag wird je nach Anzahl der überfälligen Tage der Rechnung
zur Kategorie c0, c30, c60 oder c90 hinzugefügt
Die angegebenen Zahlen sind die noch offenen Teile der Rechnung, es steht aber
auch die Gesamtsumme der Rechnung unter der Variablen <%amount%> in der
Druckvorlage zur Verfügung (siehe doc/dokumentenvorlagen-und-variablen.html)
Rechnungen, deren Fälligkeit noch nicht erreicht ist, tauchen ebenfalls in der
c0-Gruppe auf.
Nicht mit Währungsumrechnung getestet.
Im Lx-Office Buch steht zu Sammelrechnung, daà beim Drucken nur Rechnungen für
den ersten Kunden angezeigt werden, aber alle Sammelrechnungen an den
konfigurierten Drucker geschickt werden, ich bin mir nicht sicher, ob das
stimmt. Es gibt ja den Knopf "Alle Auswählen", aber bei E-Mail kann auch nur an
den ersten versendet werden.
---
SL/RP.pm | 2 +-
bin/mozilla/rp.pl | 11 +-
doc/dokumentenvorlagen-und-variablen.html | 116 +++++++++++++++++++---
3 files changed, 109 insertions(+), 20 deletions(-)
diff --git a/SL/RP.pm b/SL/RP.pm
index 113e9dd42..49dbff603 100644
--- a/SL/RP.pm
+++ b/SL/RP.pm
@@ -1219,7 +1219,7 @@ sub aging {
phone as customerphone, fax as customerfax, ${ct}number,
"invnumber", "transdate",
(amount - COALESCE((SELECT sum(amount)*$ml FROM acc_trans LEFT JOIN chart ON (acc_trans.chart_id=chart.id) WHERE link ilike '%paid%' AND acc_trans.trans_id=${arap}.id AND acc_trans.transdate <= (date $todate)),0)) as "open", "amount",
- "duedate", invoice, ${arap}.id,
+ "duedate", invoice, ${arap}.id, date_part('days', now() - duedate) as overduedays,
(SELECT $buysell
FROM exchangerate
WHERE (${arap}.curr = exchangerate.curr)
diff --git a/bin/mozilla/rp.pl b/bin/mozilla/rp.pl
index 8d0ec94f2..125d0b916 100644
--- a/bin/mozilla/rp.pl
+++ b/bin/mozilla/rp.pl
@@ -2032,7 +2032,7 @@ sub print_form {
$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} = ();
@@ -2101,11 +2101,16 @@ sub statement_details {
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};
diff --git a/doc/dokumentenvorlagen-und-variablen.html b/doc/dokumentenvorlagen-und-variablen.html
index 978a529bd..4e048dcf0 100644
--- a/doc/dokumentenvorlagen-und-variablen.html
+++ b/doc/dokumentenvorlagen-und-variablen.html
@@ -112,6 +112,7 @@ td {
Angebote und Preisanfragen
Auftragsbestätigungen und Lieferantenaufträge
Lieferscheine (Verkauf und Einkauf)
+ Sammelrechnung
@@ -1228,6 +1229,14 @@ td {
+ 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 foreach
-Schleife ausgegeben werden. Diese
+ Variablen sind:
+
+
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
@@ -1273,6 +1282,81 @@ td {
+
+
+ Variablen für Sammelrechnung:
+
+
+ Variablenname | Bedeutung |
+
+ c0total |
+ Gesamtbetrag aller Rechnungen mit Fälligkeit < 30 Tage |
+
+
+ c30total |
+ Gesamtbetrag aller Rechnungen mit Fälligkeit >= 30 und < 60 Tage |
+
+
+ c60total |
+ Gesamtbetrag aller Rechnungen mit Fälligkeit >= 60 und < 90 Tage |
+
+
+ c90total |
+ Gesamtbetrag aller Rechnungen mit Fälligkeit >= 90 Tage |
+
+
+ total |
+ Gesamtbetrag aller Rechnungen |
+
+
+
+
+ Variablen für jede Rechnungsposition in Sammelrechnung:
+
+
+ Variablenname | Bedeutung |
+
+ invnumber |
+ Rechnungsnummer |
+
+
+ invdate |
+ Rechnungsdatum |
+
+
+ duedate |
+ Fälligkeitsdatum |
+
+
+ amount |
+ Summe der Rechnung |
+
+
+ open |
+ Noch offener Betrag der Rechnung |
+
+
+ c0 |
+ Noch offener Rechnungsbetrag mit Fälligkeit < 30 Tage |
+
+
+ c30 |
+ Noch offener Rechnungsbetrag mit Fälligkeit >= 30 und < 60 Tage |
+
+
+ c60 |
+ Noch offener Rechnungsbetrag mit Fälligkeit >= 60 und < 90 Tage |
+
+
+ c90 |
+ Noch offener Rechnungsbetrag mit Fälligkeit >= 90 Tage |
+
+
+
+
+
+
+
zum Inhaltsverzeichnis
@@ -1286,14 +1370,14 @@ td {
... <%end%>
Anmerkung zum <%end%>
: Der besseren
- Verständlichkeit halber kann man nach dem end
noch
- beliebig weitere Wörter schreiben, um so zu markieren, welche
+ Verständlichkeit halber kann man nach dem end
noch
+ beliebig weitere Wörter schreiben, um so zu markieren, welche
Anweisung (z.B. if
oder foreach
) damit
abgeschlossen wird.
Beispiel: Lautet der Beginn eines Blockes
z.B. <%if type ==
- "sales_quotation"%>
, so könnte er mit
+ "sales_quotation"%>, so könnte er mit
<%end%>
genauso abgeschlossen werden
wie mit
<%end if%>
oder auch
@@ -1316,33 +1400,33 @@ td {
wird. Beispiel: <%if not
cp_greeting%>
- Zusätzlich zu dem einfachen Test, ob eine Variable gesetzt ist
- oder nicht, bietet dieser Block auch die Möglichkeit, den Inhalt
+
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:
<%if var1 == "Wert"%>
- 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.
+ "==" würde auf Ungleichheit getestet.
<%if var1 == var2%>
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.
+ würde auf Ungleichheit getestet.
- 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
+
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.
- Beispiel für einen Test, ob die Variable "intnotes"
- (interne Bemerkungen) das Wort "schwierig" enthält:
+
Beispiel für einen Test, ob die Variable "intnotes"
+ (interne Bemerkungen) das Wort "schwierig" enthält:
<%if intnotes =~
"schwierig"%>
--
2.20.1