Der Titel »Kreditlimit« wird nun wie andere Zeilentitel in der linken
Spalte angezeigt, was den Blickfluss stabilisiert.
Weiterhin wurde in der Debitorenbuchungsmaske auch ein negativer
verbleibender Kredit in grün anstelle von rot angezeigt. Grund war ein
Vergleich mit einer falschen Variablen.
Moritz Bunkus [Thu, 1 Oct 2015 12:47:28 +0000 (14:47 +0200)]
SEPA: speichern, in welchen Nachrichten-IDs (MsgId) Exporte verwendet wurden
Manche Banken zeigen in ihren Auszügen nur die MsgId an, und es gibt
keine Möglichkeit, die darin enthaltenen einzelnen Überweisungen
angezeigt zu bekommen.
Diese MsgId muss allerdings bei jeder eingereichten Nachricht eindeutig
sein. Daher wird sie bei jedem Download zufällig erzeugt. Weiterhin kann
jeder Download eine beliebige Kombination von Exporten beinhalten.
Um eine einfacherer Nachverfolgbarkeit für solche Fälle zu ermöglichen,
wird nun bei jedem Download die dort verwendete MsgId bei allen
beteiligten Exporten gespeichert.
Zusätzlich zur höchsten Stufe aktuell noch offenen Rechnungen und dem
gesamten offenen Betrag angemahnter Rechnungen des Kunden wird nun auch
explizit angezeigt, wenn die aktuelle Rechnung selber angemahnt
wurde. Diese Warnung wird nicht nur fett, sondern sogar rot dargestellt.
Moritz Bunkus [Thu, 1 Oct 2015 11:25:06 +0000 (13:25 +0200)]
Mahnungen: Links zu Debitorenrechnungen gefixt
In der ersten Maske, in der die anzumahnenen Rechnungen ausgewählt
werden können, wurden Links immer nur auf is.pl gesetzt, auch für
Debitorenbuchungen.
Martin Helmling [Tue, 29 Sep 2015 10:46:38 +0000 (12:46 +0200)]
Konfigurierbares E-Mail-Journal
In der Mandantenkonfig kann nun das Speichern von gesendeten E-Mails
entweder
- ganz abgeschaltet werden
- ohne Anhänge speichern
- mit Anhängen speichern (default)
konfiguriert werden.
Falls ganz abgeschaltet, erscheint im Journal dazu ein Hinweis
Jan Büren [Wed, 30 Sep 2015 17:29:24 +0000 (19:29 +0200)]
MRCP.pm. Falls Webdav Archivierung auch PDF in Webdav kopieren
Beim Massenwandeln prinizipiell auch den WebDAV Ordner und die
Datei plus Zeitstempel erstellen. Entsprechende Fehlermeldungen
an die Oberfläche zurückgeben, wie allen anderen Meldungen in MRCP auch.
Jan Büren [Wed, 30 Sep 2015 17:03:59 +0000 (19:03 +0200)]
Webdav::File.pm->store um Parameter file erweitert
Falls man ein pdf nicht im Program als Objekt hat, sondern
eine wirkliche Datei im Dateisystem vorliegen hat,
muss diese nicht erst als Objekt geladen werden, sondern kann simpel mit:
$webdav_file->store(file => $path_to_file);
beim Anlegen eines neuen Webdav-Files (übergeben) kopiert werden.
FlattenToForm: sellprice und qty beim Formatieren nicht runden …
Hintergrund: In den Belegmasken (z.B.) Auftrag kann man Menge oder Verkaufspreis
mit mehr als zwei Nachkommastellen angeben und es wird auch damit gerechnet.
Funktionen, die FlattenToForm verwenden (autom. Druck wiederkehrender
Rechnungen / Massendruck) zeigten dann aber in bestimmten Fällen andere Summen
als die Maske bzw. als in der Datenbank steht.
Jan Büren [Mon, 28 Sep 2015 13:06:34 +0000 (15:06 +0200)]
Changelog, Kosmetik und Warenfilter für Lieferwertbericht
Doku und changelog ergänzt. Sinnvoller formatiert und model
um part erweitert, damit der Filter (Erzeugnis, Dienstleistung und
Ware) wie beim Lieferplan funktioniert.
Jan Büren [Mon, 28 Sep 2015 12:53:33 +0000 (14:53 +0200)]
Lieferwertbericht auf eigenen Controller umgestellt und erweitert
Erweiterungen aus einem Kundenprojekt übernommen. Ferner performanter
gemacht, in Anlehnung an calc_qts aus DeliveryPlan. Zusätzlich
das model einfacher umgesetzt und die Auswertung basiert jetzt auf
der Verknüpfung von orderitems(id) -> delivery_order_items(id) und
nicht mehr über die Näherung über die verknüpften Belege.
Moritz Bunkus [Thu, 24 Sep 2015 12:42:12 +0000 (14:42 +0200)]
SL::Mailer: Inhalt von Attachments direkt übergeben können
Bisher wurde ein Attachmentinhalt immer aus einer Datei gelesen. Liegt der
Inhalt schon in einer Variable vor, so kann diese nun im Attachment-Hash
als Key »content« übergeben werden. Der Dateiname (Key »filename«) wird
dann ignoriert.
Moritz Bunkus [Thu, 24 Sep 2015 08:19:23 +0000 (10:19 +0200)]
Rose-Model-Creation: use parent anstelle von use base nutzen
Momentan benutzt die kivitendo-Codebasis beides zu ähnlich großen
Teilen. Allerdings sagt allein schon die Dokumentation zu base(3perl),
dass eigentlich immer das leichtgewichtigere parent(3perl) zu bevorzugen
ist.
CVar-Helper: Beim Parsen darauf achten, ob unparsed_value ein Objekt enthält.
Um Objekte mit der value-Methode einer CVar vom Typ Customer, Vendor oder Part
zuweisen zu können, muss beim Parsen die Id des Objekts ermittelt werden.
Dieses wird z.B. im Helper (SL::DB::Helper::CustomVariables.pm) verwendet, um
bei neuen cvars eines sub-modules den Wert der Basis-CVar zu setzen, denn die
value-Methode der CVar (hier der Basis-CVar) liefert ein Objekt zurück.
Ohne diesen Patch gab es einen Fehler in der Art:
"No such SL::DB::Part where id = 111286144 at SL/DB/Helper/CustomVariables.pm
line 198"
Jan Büren [Tue, 8 Sep 2015 12:05:44 +0000 (14:05 +0200)]
Doku: POD für Invoice.pm erweitert
- Invoice anstatt Delivery Order bei new_from
- Beispiel-Code für Benutzung von new_from mit parameter attributes
- TODO angelegt, Controller sollten einige Datenfelder mit Hilfe
von Backend-Funktionen prüfen können - in diesem Fall transdate
Jan Büren [Fri, 4 Sep 2015 11:14:10 +0000 (13:14 +0200)]
Massenkonvertierung von Lieferscheinen nach Rechnung ink. Druck
Die Konvertierung als auch das Generieren des PDFs erfolgt als
Background-Job. Entsprechend muss der task_server für den.
Mandanten eingestellt sein.
Details und bekannte offene Punkte im POD der beiden Perl-Module.
Folgecommit: changelog und all
Jan Büren [Fri, 4 Sep 2015 09:31:22 +0000 (11:31 +0200)]
DeliveryOrder um convert_invoice erweitert
Diesselbe Idee wie bei SalesOrder->convert_invoice. Der ursprüngliche
Lieferschein wird geschlossen und das neue Objekt mittels record_links
verknüpft.
Entsprechend Testfall mitgeliefert.
Moritz Bunkus [Wed, 26 Aug 2015 13:57:01 +0000 (15:57 +0200)]
SL::DB::CVar::value: mit übergebenen DateTime-Objekten klarkommen
Ruft mal value als getter auf, so wird ein DateTime-Objekt
zurückgegeben. Als setter aufgerufen, erwartete die Funktion bisher
aber, dass ein String übergeben wird. Somit war es nicht möglich, eine
Datums-CVar mit intuitiv zu clonen:
Moritz Bunkus [Mon, 24 Aug 2015 15:45:35 +0000 (17:45 +0200)]
Pflichtenheftartikel mit Pflichtenheft automatisch löschen
Wenn ein Pflichtenheft gelöscht wird, so müssen seine Bestandteile ( =
Einträge in anderen 1:n-Tabellen) mit gelöscht werden. Hier betraf es
die »Zusätzlichen Artikel«, Tabelle requirement_spec_parts. Die anderen
abhängigen Tabellen nutzen bereits FOREIGN KEY … ON DELETE CASCADE, also
das auch für requirement_spec_parts nutzen.
Ansonsten klappt das Löschen schlicht nicht. Entsprechende
Fehlermeldungen:
2015-08-24 17:27:48.632 9734 [26783] : DBD::Pg::st execute failed:
ERROR: update or delete on table "requirement_specs" violates foreign
key constraint "requirement_spec_parts_requirement_spec_id_fkey" on
table "requirement_spec_parts"
DETAIL: Key (id)=(4) is still referenced from table
"requirement_spec_parts". at
/usr/share/perl5/vendor_perl/Rose/DB/Object.pm line 1576.