Jan Büren [Mon, 5 Oct 2015 16:17:54 +0000 (18:17 +0200)]
Optionale Sortierfunktion in Lieferscheinen
Den Commit aus dem Kundenprojekt entsprechend für den
Standard überarbeitet und als optionale Aufruf für ein HTML-Template
zu Verfügung gestellt.Entsprechend kurz im POD beschrieben.
Jan Büren [Tue, 22 Sep 2015 08:22:36 +0000 (10:22 +0200)]
Implementiert FB0017 Position nach Art.Nummer in Lieferschein sortieren
Ab dem Status Verkaufs-Lieferschein können die Positionen nach Artikelnummern sortiert werden,
sodass diese Sortierreihenfolge in die Rechnung übernommen wird.
Implementierung mit Natural Sort, d.h. Buchstaben und Zahlen können gemischt sein.
Aktion kann entweder über einen Knopf ausgelöst werden oder wird standardmässig bei jedem Speichern ausgeführt.
Aktuell heißt der Knopf: Sortieren und Speichern und erscheint sobald, der Lieferschein persisitente
Positionen in der DB hat.
Jan Büren [Mon, 5 Oct 2015 15:30:07 +0000 (17:30 +0200)]
Massendruck weitere Optionen (zweiter Druckbefehl) implementiert
transdate, copy_printer_id (id des zweiten Druckbefehls) als optionale
Parameter beim Aufruf der Konvertierung inkl. Ausdruck in der API
bereitgestellt.
Jan Büren [Mon, 5 Oct 2015 14:46:21 +0000 (16:46 +0200)]
convert_to_invoice params an Invoice::new_from(%params)
DeliveryOrder.pm übergab etwaige Parameter beim Aufruf von new_from
an Invoice->post(%params). Das macht für den Anwendungsfall chart_id
in 42ea98b4 Sinn (Order.pm), allerdings benötigt die convert_to_invoice in
DeliveryOrder.pm die new_from(attributes => {'custom_attr' => value })
(s.a. 20118160).
Moritz Bunkus [Mon, 5 Oct 2015 10:52:40 +0000 (12:52 +0200)]
OpenDocument-Template: Umwandlung von HTML-Feldern gefixt
OpenDocument hat gewisse Probleme mit Verschachtelung von gewissen
Konstrukten, z.B. kein <text:p> innerhalb von <text:p><text:span>. Die
HTML-Felder aber sind immer in ein <p>…</p> eingeschlossen.
Bisheriger Ansatz war, davon auszugehen, dass der aktuell offene Tag im
XML ein <text:p> ist. Dafür wurde im HTML schlicht das erste <p> und das
letzte </p> entfernt. Das funktioniert, wenn das HTML-Feld der einzige
Inhalt in z.B. einer Tabellenzelle ist, z.B. eine Zelle, in der nur
<%longdescription%> steht.
Es geht aber in die Hose, wenn der innerste offene Tag eben nicht
<text:p> ist, was sehr schnell passiert, z.B. wenn man Konstrukte wie
<%description%><%if longdescription%><%longdescription%><%end%>
nutzt.
Lösung ist, die aktuell offenen Tags in einem Stack zu verfolgen. Das
HTML-Formatieren kann dann alle offenen Tags bis zum letzten <text:p>
schließen und am Ende wieder öffnen.
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